Import

import-grid.tsx
import { NuiGrid, type NuiGridColumn, type NuiGridHandle } from '@needless-ui/react/grid';

NuiGrid

ตารางข้อมูลที่สร้างบน table แบบเนทีฟ

NuiGrid: พร็อพเพอร์ตี
ชื่อชนิดค่าเริ่มต้นคำอธิบาย
rowsPropreadonly T[]ข้อมูล การแก้ไขจะแทนที่แถวนั้นและเรียก onRowsChange ส่วน rows ชุดถัดไปที่คุณส่งเข้ามาจะแทนที่การแก้ไขเหล่านั้น
onRowsChangeCallback(rows: readonly T[]) => voidถูกเรียกพร้อมแถวทั้งหมดหลังการแก้ไขแต่ละครั้งที่ยืนยันแล้ว
columnsPropNuiGridColumn<T>[]คอลัมน์ต่าง ๆ ในรูปออบเจกต์ NuiGridColumn
rowIdProp(row: T) => unknownrow.id ?? rowคีย์ของแถว สำหรับการเลือกและการติดตาม
labelPropstringชื่อที่เข้าถึงได้ของตาราง
selectionProp'none' | 'single' | 'multiple''none'เลือกแถวได้หรือไม่ และได้กี่แถว
selected
defaultSelected
onSelectedChangeสถานะ
unknown[][]คีย์ของแถวที่เลือก
sort
defaultSort
onSortChangeสถานะ
NuiGridSort[][]การเรียงลำดับในรูปออบเจกต์ { column, direction } โดยรายการแรกจะเรียงก่อน
filters
defaultFilters
onFiltersChangeสถานะ
Record<string, NuiGridFilter>{}ตัวกรองต่อ id ของคอลัมน์ ประกอบด้วยตัวดำเนินการและค่า
search
defaultSearch
onSearchChangeสถานะ
string''คำที่ต้องปรากฏครบทุกคำในแถว
pageSize
defaultPageSize
onPageSizeChangeสถานะ
number0จำนวนแถวต่อหน้า หรือ 0 เพื่อแสดงเป็นรายการเดียวที่เลื่อนได้
page
defaultPage
onPageChangeสถานะ
number0หน้าที่แสดง เริ่มนับจาก 0
pageSizesPropnumber[][10, 25, 50, 100]ตัวเลือกในตัวแบ่งหน้า
virtualPropboolean | 'auto''auto'เรนเดอร์เฉพาะแถวที่มองเห็น: ทุกครั้ง ไม่เลย หรือ auto เมื่อเกิน 100 แถวและไม่แบ่งหน้า
heightPropstringความยาว CSS ที่จำกัดขนาดของตาราง โดยเนื้อหาจะเลื่อนอยู่ภายใน
columnState
defaultColumnState
onColumnStateChangeสถานะ
NuiGridColumnState[][]ความกว้าง ลำดับ การตรึง และการแสดงผลของแต่ละคอลัมน์ สำหรับบันทึกและกู้คืน
modeProp'client' | 'server''client'server แสดงแถวตามที่ได้รับ และปล่อยให้คุณจัดการการเรียงลำดับ การกรอง และการแบ่งหน้าเอง
totalPropnumberจำนวนแถวบนเซิร์ฟเวอร์
loadingPropbooleanfalseแสดงแถบความคืบหน้า และแสดงแถวตัวยึดตำแหน่งระหว่างที่ยังไม่มีแถว
localePropstring'en-US'ใช้จัดรูปแบบตัวเลขและวันที่ และอ่านตัวเลขที่พิมพ์
labelsPropPartial<NuiGridLabels>ข้อความทุกส่วนที่ตารางแสดงหรือประกาศ สำหรับการแปล
cornersPropNuiCornersรูปทรงของมุม: round squircle bevel scoop notch หรือ square
radiusPropNuiRadiusขนาดของมุม: none small medium large หรือ full
densityPropNuiDensityพื้นที่ที่ใช้: compact regular หรือ roomy
groupByPropstring[][]คอลัมน์ที่ใช้จัดกลุ่มแถว เริ่มจากชั้นนอกสุด
collapsed
defaultCollapsed
onCollapsedChangeสถานะ
string[][]คีย์ของกลุ่มที่ยุบอยู่ โดยกลุ่มจะเริ่มต้นแบบขยาย
getChildrenProp(row: T) => T[] | undefinedแถวลูกของแถว ตารางจะแสดงเป็นข้อมูลแบบต้นไม้
expanded
defaultExpanded
onExpandedChangeสถานะ
unknown[][]คีย์ของแถวที่ขยายอยู่ในข้อมูลแบบต้นไม้ โดยแถวจะเริ่มต้นแบบยุบ
details
defaultDetails
onDetailsChangeสถานะ
unknown[][]คีย์ของแถวที่เปิดรายละเอียดอยู่
totals, flashPropbooleanfalseแถวค่าสรุปจากทุกแถวที่ผ่านการกรอง และเซลล์ที่กะพริบเมื่อข้อความเปลี่ยน ซึ่งใช้ได้ในแถวที่มี rowId คงที่
layoutProp'table' | 'list' | 'auto''table'list แสดงแถวเป็นการ์ด และ auto แสดงเช่นนั้นเฉพาะบนหน้าจอแคบ
toolbarPropboolean | 'auto''auto'แถบที่ใช้เรียงลำดับ กรอง และเลือกทุกแถว: ทุกครั้ง ไม่เลย หรือ auto เมื่อแสดงเป็นการ์ด
renderEmptyRender prop(filtered: boolean) => ReactNodeสิ่งที่แสดงเมื่อไม่มีแถว โดยจะได้รับแจ้งว่าตัวกรองซ่อนแถวไว้หรือไม่
renderDetailRender prop(row: T) => ReactNodeรายละเอียดของแถว ซึ่งแสดงอยู่ใต้แถวเมื่อเปิด ตารางจะเพิ่มคอลัมน์ของปุ่มสลับให้
onRowActivateCallback(row: T) => voidถูกเรียกพร้อมแถวที่ถูกเปิดด้วย Enter หรือการดับเบิลคลิก
onCellEditCallback(edit: NuiGridEdit<T>) => voidถูกเรียกพร้อมการแก้ไขแต่ละครั้งที่ยืนยันแล้ว
onQueryChangeCallback(query: NuiGridQuery) => voidถูกเรียกพร้อมการเรียงลำดับ ตัวกรอง คำค้นหา และหน้า ทุกครั้งที่มีการเปลี่ยนแปลง และอีกครั้งตอนเริ่มต้น
refPropRef<NuiGridHandle>สิ่งที่เข้าถึงได้ผ่าน ref ของตาราง ได้แก่การส่งออก การสั่งพิมพ์ และโฟกัส
exportXlsx, printเมธอด(options?) => Blob, () => voidแถวที่กรองและเรียงลำดับแล้วในรูปสเปรดชีต และการสั่งพิมพ์ทุกแถว
exportCsvเมธอด(options?) => stringแถวที่กรองและเรียงลำดับแล้ว เฉพาะคอลัมน์ที่มองเห็น ในรูปแบบ CSV
expandAllเมธอด(open?: boolean) => voidขยายทุกกลุ่มและทุกแถวที่มีแถวลูก หรือยุบทั้งหมด
focusCellเมธอด(row: number, col: number) => voidโฟกัสที่เซลล์ แถว -1 คือหัวตาราง
clearFiltersเมธอด() => voidล้างตัวกรองทั้งหมดและคำค้นหา
fitเมธอด(id: string) => voidปรับความกว้างคอลัมน์ให้พอดีกับเซลล์ที่กว้างที่สุดในบรรดาเซลล์ที่เรนเดอร์แล้ว

สถานะทำงานเหมือน input ของ React เอง คือส่งค่าเข้าไปแล้วอัปเดตจาก callback on…Change ของค่านั้น หรือส่งค่า default… แล้วปล่อยให้คอมโพเนนต์เก็บค่าไว้เอง

Prop สำหรับการปรับแต่งที่ไม่ได้กำหนดค่าไว้ จะใช้ค่าตาม attribute data-nui-* ที่อยู่ใกล้ที่สุด ดูคู่มือการปรับแต่ง

NuiGridColumn

คอลัมน์หนึ่งคอลัมน์ รับพร็อพเพอร์ตีทุกตัวของคอลัมน์ Angular (ต้องระบุเพียง id และ header) และสองตัวนี้ที่ใช้วาดคอลัมน์

NuiGridColumn: พร็อพเพอร์ตี
ชื่อชนิดค่าเริ่มต้นคำอธิบาย
renderCellRender prop({ row, value, text, column }) => ReactNodeวาดเซลล์ของคอลัมน์เอง จากแถว ค่า และข้อความของเซลล์
renderHeaderRender prop(column) => ReactNodeวาดหัวคอลัมน์เอง โดย header ยังคงเป็นชื่อของคอลัมน์