@multiplatform.one/table 7.4.1 → 7.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/ChildTable/index.cjs +12 -3
- package/dist/cjs/components/ChildTable/index.native.js +14 -3
- package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
- package/dist/cjs/components/ColumnHeaderFilter/index.cjs +11 -13
- package/dist/cjs/components/ColumnHeaderFilter/index.native.js +11 -16
- package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableCardControls.cjs +7 -4
- package/dist/cjs/components/DataTable/DataTableCardControls.native.js +7 -4
- package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableDocumentList.cjs +10 -4
- package/dist/cjs/components/DataTable/DataTableDocumentList.native.js +10 -4
- package/dist/cjs/components/DataTable/DataTableDocumentList.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +6 -1
- package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +6 -1
- package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableRoot.cjs +55 -42
- package/dist/cjs/components/DataTable/DataTableRoot.native.js +55 -42
- package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +5 -2
- package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +5 -2
- package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
- package/dist/cjs/components/DataTable/dataTableChrome.cjs +59 -0
- package/dist/cjs/components/DataTable/dataTableChrome.native.js +62 -0
- package/dist/cjs/components/DataTable/dataTableChrome.native.js.map +1 -0
- package/dist/cjs/components/DataTable/index.native.js +34 -20
- package/dist/cjs/components/DataTable/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableBulkActions/index.cjs +6 -4
- package/dist/cjs/components/DataTableBulkActions/index.native.js +6 -4
- package/dist/cjs/components/DataTableBulkActions/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +9 -31
- package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +2 -5
- package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -1
- package/dist/cjs/components/DataTableCell/CellOptionsEditor.cjs +0 -1
- package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js +0 -1
- package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
- package/dist/cjs/components/DataTableColumnPinning/index.cjs +7 -4
- package/dist/cjs/components/DataTableColumnPinning/index.native.js +7 -4
- package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableDateFilter/index.cjs +24 -22
- package/dist/cjs/components/DataTableDateFilter/index.native.js +24 -22
- package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableExport/index.cjs +42 -28
- package/dist/cjs/components/DataTableExport/index.native.js +42 -28
- package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableFacetMenu/index.cjs +10 -4
- package/dist/cjs/components/DataTableFacetMenu/index.native.js +10 -4
- package/dist/cjs/components/DataTableFacetMenu/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableFilters/index.cjs +3 -3
- package/dist/cjs/components/DataTableFilters/index.native.js +3 -3
- package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableGrouping/index.cjs +46 -41
- package/dist/cjs/components/DataTableGrouping/index.native.js +46 -41
- package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/cjs/components/DataTablePagination/index.cjs +4 -2
- package/dist/cjs/components/DataTablePagination/index.native.js +4 -2
- package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableSearch/index.cjs +3 -3
- package/dist/cjs/components/DataTableSearch/index.native.js +3 -3
- package/dist/cjs/components/DataTableToolbar/index.cjs +19 -13
- package/dist/cjs/components/DataTableToolbar/index.native.js +19 -15
- package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableViewOptions/index.cjs +36 -35
- package/dist/cjs/components/DataTableViewOptions/index.native.js +36 -35
- package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/cjs/components/KnobDialog.cjs +1 -3
- package/dist/cjs/components/KnobDialog.native.js +1 -3
- package/dist/cjs/components/KnobDialog.native.js.map +1 -1
- package/dist/cjs/components/SimpleTable/index.cjs +159 -117
- package/dist/cjs/components/SimpleTable/index.native.js +168 -128
- package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
- package/dist/cjs/components/TableInput/index.cjs +159 -90
- package/dist/cjs/components/TableInput/index.native.js +3 -3
- package/dist/cjs/components/TableInput/index.native.js.map +1 -1
- package/dist/cjs/utils/chromeIcons.cjs +31 -0
- package/dist/cjs/utils/chromeIcons.native.js +34 -0
- package/dist/cjs/utils/chromeIcons.native.js.map +1 -0
- package/dist/esm/components/ChildTable/index.mjs +12 -3
- package/dist/esm/components/ChildTable/index.mjs.map +1 -1
- package/dist/esm/components/ChildTable/index.native.js +14 -3
- package/dist/esm/components/ChildTable/index.native.js.map +1 -1
- package/dist/esm/components/ColumnHeaderFilter/index.mjs +11 -13
- package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
- package/dist/esm/components/ColumnHeaderFilter/index.native.js +11 -16
- package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableCardControls.mjs +7 -4
- package/dist/esm/components/DataTable/DataTableCardControls.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableCardControls.native.js +7 -4
- package/dist/esm/components/DataTable/DataTableCardControls.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableDocumentList.mjs +10 -4
- package/dist/esm/components/DataTable/DataTableDocumentList.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableDocumentList.native.js +10 -4
- package/dist/esm/components/DataTable/DataTableDocumentList.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableMobileCards.mjs +6 -1
- package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableMobileCards.native.js +6 -1
- package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableRoot.mjs +55 -42
- package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableRoot.native.js +55 -42
- package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableVirtualized.mjs +5 -2
- package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableVirtualized.native.js +5 -2
- package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
- package/dist/esm/components/DataTable/dataTableChrome.mjs +32 -0
- package/dist/esm/components/DataTable/dataTableChrome.mjs.map +1 -0
- package/dist/esm/components/DataTable/dataTableChrome.native.js +32 -0
- package/dist/esm/components/DataTable/dataTableChrome.native.js.map +1 -0
- package/dist/esm/components/DataTable/index.native.js +34 -20
- package/dist/esm/components/DataTable/index.native.js.map +1 -1
- package/dist/esm/components/DataTableBulkActions/index.mjs +6 -4
- package/dist/esm/components/DataTableBulkActions/index.mjs.map +1 -1
- package/dist/esm/components/DataTableBulkActions/index.native.js +6 -4
- package/dist/esm/components/DataTableBulkActions/index.native.js.map +1 -1
- package/dist/esm/components/DataTableCell/CellModalEditor.mjs +11 -33
- package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
- package/dist/esm/components/DataTableCell/CellModalEditor.native.js +2 -5
- package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -1
- package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs +0 -1
- package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
- package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js +0 -1
- package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
- package/dist/esm/components/DataTableColumnPinning/index.mjs +7 -4
- package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
- package/dist/esm/components/DataTableColumnPinning/index.native.js +7 -4
- package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
- package/dist/esm/components/DataTableDateFilter/index.mjs +24 -22
- package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
- package/dist/esm/components/DataTableDateFilter/index.native.js +24 -22
- package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/esm/components/DataTableExport/index.mjs +43 -29
- package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
- package/dist/esm/components/DataTableExport/index.native.js +43 -29
- package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
- package/dist/esm/components/DataTableFacetMenu/index.mjs +10 -4
- package/dist/esm/components/DataTableFacetMenu/index.mjs.map +1 -1
- package/dist/esm/components/DataTableFacetMenu/index.native.js +10 -4
- package/dist/esm/components/DataTableFacetMenu/index.native.js.map +1 -1
- package/dist/esm/components/DataTableFilters/index.mjs +3 -3
- package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
- package/dist/esm/components/DataTableFilters/index.native.js +3 -3
- package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
- package/dist/esm/components/DataTableGrouping/index.mjs +47 -42
- package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
- package/dist/esm/components/DataTableGrouping/index.native.js +47 -42
- package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/esm/components/DataTablePagination/index.mjs +4 -2
- package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
- package/dist/esm/components/DataTablePagination/index.native.js +4 -2
- package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
- package/dist/esm/components/DataTableSearch/index.mjs +3 -3
- package/dist/esm/components/DataTableSearch/index.native.js +3 -3
- package/dist/esm/components/DataTableToolbar/index.mjs +19 -13
- package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
- package/dist/esm/components/DataTableToolbar/index.native.js +19 -15
- package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/esm/components/DataTableViewOptions/index.mjs +36 -35
- package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
- package/dist/esm/components/DataTableViewOptions/index.native.js +36 -35
- package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/esm/components/KnobDialog.mjs +1 -3
- package/dist/esm/components/KnobDialog.mjs.map +1 -1
- package/dist/esm/components/KnobDialog.native.js +1 -3
- package/dist/esm/components/KnobDialog.native.js.map +1 -1
- package/dist/esm/components/SimpleTable/index.mjs +160 -118
- package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
- package/dist/esm/components/SimpleTable/index.native.js +169 -129
- package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
- package/dist/esm/components/TableInput/index.mjs +160 -91
- package/dist/esm/components/TableInput/index.mjs.map +1 -1
- package/dist/esm/components/TableInput/index.native.js +3 -3
- package/dist/esm/components/TableInput/index.native.js.map +1 -1
- package/dist/esm/utils/chromeIcons.mjs +6 -0
- package/dist/esm/utils/chromeIcons.mjs.map +1 -0
- package/dist/esm/utils/chromeIcons.native.js +6 -0
- package/dist/esm/utils/chromeIcons.native.js.map +1 -0
- package/dist/jsx/components/ChildTable/index.mjs +12 -3
- package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
- package/dist/jsx/components/ChildTable/index.native.js +14 -3
- package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
- package/dist/jsx/components/ColumnHeaderFilter/index.mjs +11 -13
- package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
- package/dist/jsx/components/ColumnHeaderFilter/index.native.js +11 -16
- package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableCardControls.mjs +7 -4
- package/dist/jsx/components/DataTable/DataTableCardControls.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableCardControls.native.js +7 -4
- package/dist/jsx/components/DataTable/DataTableCardControls.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableDocumentList.mjs +10 -4
- package/dist/jsx/components/DataTable/DataTableDocumentList.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableDocumentList.native.js +10 -4
- package/dist/jsx/components/DataTable/DataTableDocumentList.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +6 -1
- package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +6 -1
- package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableRoot.mjs +55 -42
- package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableRoot.native.js +55 -42
- package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +5 -2
- package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +5 -2
- package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
- package/dist/jsx/components/DataTable/dataTableChrome.mjs +32 -0
- package/dist/jsx/components/DataTable/dataTableChrome.mjs.map +1 -0
- package/dist/jsx/components/DataTable/dataTableChrome.native.js +62 -0
- package/dist/jsx/components/DataTable/dataTableChrome.native.js.map +1 -0
- package/dist/jsx/components/DataTable/index.native.js +34 -20
- package/dist/jsx/components/DataTable/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableBulkActions/index.mjs +6 -4
- package/dist/jsx/components/DataTableBulkActions/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableBulkActions/index.native.js +6 -4
- package/dist/jsx/components/DataTableBulkActions/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +11 -33
- package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
- package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +2 -5
- package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -1
- package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs +0 -1
- package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
- package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js +0 -1
- package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
- package/dist/jsx/components/DataTableColumnPinning/index.mjs +7 -4
- package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableColumnPinning/index.native.js +7 -4
- package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableDateFilter/index.mjs +24 -22
- package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableDateFilter/index.native.js +24 -22
- package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableExport/index.mjs +43 -29
- package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableExport/index.native.js +42 -28
- package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableFacetMenu/index.mjs +10 -4
- package/dist/jsx/components/DataTableFacetMenu/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableFacetMenu/index.native.js +10 -4
- package/dist/jsx/components/DataTableFacetMenu/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableFilters/index.mjs +3 -3
- package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableFilters/index.native.js +3 -3
- package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableGrouping/index.mjs +47 -42
- package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableGrouping/index.native.js +46 -41
- package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/jsx/components/DataTablePagination/index.mjs +4 -2
- package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
- package/dist/jsx/components/DataTablePagination/index.native.js +4 -2
- package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableSearch/index.mjs +3 -3
- package/dist/jsx/components/DataTableSearch/index.native.js +3 -3
- package/dist/jsx/components/DataTableToolbar/index.mjs +19 -13
- package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableToolbar/index.native.js +19 -15
- package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableViewOptions/index.mjs +36 -35
- package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableViewOptions/index.native.js +36 -35
- package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/jsx/components/KnobDialog.mjs +1 -3
- package/dist/jsx/components/KnobDialog.mjs.map +1 -1
- package/dist/jsx/components/KnobDialog.native.js +1 -3
- package/dist/jsx/components/KnobDialog.native.js.map +1 -1
- package/dist/jsx/components/SimpleTable/index.mjs +160 -118
- package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
- package/dist/jsx/components/SimpleTable/index.native.js +168 -128
- package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
- package/dist/jsx/components/TableInput/index.mjs +160 -91
- package/dist/jsx/components/TableInput/index.mjs.map +1 -1
- package/dist/jsx/components/TableInput/index.native.js +3 -3
- package/dist/jsx/components/TableInput/index.native.js.map +1 -1
- package/dist/jsx/utils/chromeIcons.mjs +6 -0
- package/dist/jsx/utils/chromeIcons.mjs.map +1 -0
- package/dist/jsx/utils/chromeIcons.native.js +34 -0
- package/dist/jsx/utils/chromeIcons.native.js.map +1 -0
- package/package.json +12 -12
- package/src/components/ChildTable/ChildTable.stories.tsx +144 -0
- package/src/components/ChildTable/childTable.reorder.spec.tsx +65 -0
- package/src/components/ChildTable/childTable.spec.tsx +108 -0
- package/src/components/ChildTable/index.tsx +21 -2
- package/src/components/ColumnHeaderFilter/index.tsx +9 -14
- package/src/components/DataTable/DataTableCardControls.tsx +19 -16
- package/src/components/DataTable/DataTableDocumentList.tsx +7 -4
- package/src/components/DataTable/DataTableMobileCards.tsx +3 -1
- package/src/components/DataTable/DataTableRoot.tsx +52 -41
- package/src/components/DataTable/DataTableVirtualized.tsx +6 -2
- package/src/components/DataTable/FieldsInCells.stories.tsx +10 -5
- package/src/components/DataTable/dataTableChrome.ts +48 -0
- package/src/components/DataTable/designLaw.spec.tsx +114 -0
- package/src/components/DataTable/index.native.tsx +46 -20
- package/src/components/DataTableBulkActions/index.tsx +5 -3
- package/src/components/DataTableCell/CellModalEditor.native.tsx +3 -6
- package/src/components/DataTableCell/CellModalEditor.tsx +11 -22
- package/src/components/DataTableCell/CellOptionsEditor.tsx +0 -1
- package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +8 -1
- package/src/components/DataTableCell/cellModalEditor.spec.tsx +82 -0
- package/src/components/DataTableCell/dataTableCell.spec.tsx +8 -1
- package/src/components/DataTableColumnPinning/index.tsx +6 -4
- package/src/components/DataTableDateFilter/index.tsx +19 -17
- package/src/components/DataTableExport/DataTableExport.spec.tsx +29 -0
- package/src/components/DataTableExport/index.tsx +47 -23
- package/src/components/DataTableFacetMenu/index.tsx +13 -4
- package/src/components/DataTableFilters/index.tsx +3 -3
- package/src/components/DataTableGrouping/index.tsx +42 -35
- package/src/components/DataTablePagination/index.tsx +2 -2
- package/src/components/DataTableSearch/index.tsx +3 -3
- package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +20 -0
- package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +1 -9
- package/src/components/DataTableToolbar/index.tsx +19 -14
- package/src/components/DataTableViewOptions/index.tsx +30 -30
- package/src/components/KnobDialog.tsx +1 -3
- package/src/components/SimpleTable/SimpleTable.stories.tsx +13 -0
- package/src/components/SimpleTable/index.tsx +171 -149
- package/src/components/SimpleTable/simpleTable.spec.tsx +120 -0
- package/src/components/TableInput/index.native.tsx +5 -3
- package/src/components/TableInput/index.tsx +207 -113
- package/src/components/chromeDesignLaw.spec.tsx +97 -0
- package/src/utils/chromeIcons.ts +6 -0
- package/types/components/ChildTable/index.d.ts +6 -1
- package/types/components/ChildTable/index.d.ts.map +1 -1
- package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
- package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -1
- package/types/components/DataTable/DataTableDocumentList.d.ts.map +1 -1
- package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -1
- package/types/components/DataTable/DataTableRoot.d.ts +6 -1
- package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
- package/types/components/DataTable/DataTableVirtualized.d.ts +3 -1
- package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -1
- package/types/components/DataTable/dataTableChrome.d.ts +27 -0
- package/types/components/DataTable/dataTableChrome.d.ts.map +1 -0
- package/types/components/DataTable/index.native.d.ts +1 -1
- package/types/components/DataTable/index.native.d.ts.map +1 -1
- package/types/components/DataTableBulkActions/index.d.ts.map +1 -1
- package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
- package/types/components/DataTableCell/CellModalEditor.native.d.ts.map +1 -1
- package/types/components/DataTableCell/CellOptionsEditor.d.ts.map +1 -1
- package/types/components/DataTableColumnPinning/index.d.ts.map +1 -1
- package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
- package/types/components/DataTableExport/index.d.ts.map +1 -1
- package/types/components/DataTableFacetMenu/index.d.ts.map +1 -1
- package/types/components/DataTableGrouping/index.d.ts.map +1 -1
- package/types/components/DataTableToolbar/index.d.ts +2 -0
- package/types/components/DataTableToolbar/index.d.ts.map +1 -1
- package/types/components/DataTableViewOptions/index.d.ts.map +1 -1
- package/types/components/KnobDialog.d.ts.map +1 -1
- package/types/components/SimpleTable/index.d.ts.map +1 -1
- package/types/components/TableInput/index.d.ts +8 -4
- package/types/components/TableInput/index.d.ts.map +1 -1
- package/types/components/TableInput/index.native.d.ts +2 -0
- package/types/components/TableInput/index.native.d.ts.map +1 -1
- package/types/utils/chromeIcons.d.ts +3 -0
- package/types/utils/chromeIcons.d.ts.map +1 -0
|
@@ -60,6 +60,7 @@ import { DataTableCardControls } from "./DataTableCardControls";
|
|
|
60
60
|
import { DataTableMobileCards } from "./DataTableMobileCards";
|
|
61
61
|
import { DataTableDocumentList } from "./DataTableDocumentList";
|
|
62
62
|
import { DataTableVirtualized } from "./DataTableVirtualized";
|
|
63
|
+
import { dataTableChrome, resolveDataTableIntent, rowIntentProps } from "./dataTableChrome";
|
|
63
64
|
import { tableCellKeyboardProps, tableRowStateProps } from "./rowStateChrome";
|
|
64
65
|
import { alignToFlex, getDefaultColumnAlign } from "../../utils/columnAlign";
|
|
65
66
|
import { mapFieldToFilterType } from "../../utils/filterFields";
|
|
@@ -67,8 +68,6 @@ import { INFINITE_TRIGGER_ROWS } from "../../utils/paginationDefaults";
|
|
|
67
68
|
import { isInteractiveInnerTarget } from "../../utils/rowPress";
|
|
68
69
|
import { bidiIsolate, withInterp } from "../../utils/withInterp";
|
|
69
70
|
|
|
70
|
-
const SELECTION_COL_WIDTH = 40;
|
|
71
|
-
|
|
72
71
|
/** Returns the field type for a column, defaulting to "input" */
|
|
73
72
|
function getColumnField(column: DataTableColumn): DataTableField {
|
|
74
73
|
return column.field ?? "input";
|
|
@@ -88,8 +87,6 @@ function resolveColumnAlign(column: DataTableColumn) {
|
|
|
88
87
|
// mapFieldToFilterType moved to utils/filterFields (shared with the filter
|
|
89
88
|
// model — LC-16, one mapping).
|
|
90
89
|
|
|
91
|
-
const rowHeightPx = 40;
|
|
92
|
-
|
|
93
90
|
export interface DataTableRootProps<
|
|
94
91
|
TData extends Record<string, any> = Record<string, any>,
|
|
95
92
|
> extends DataTableProps<TData> {
|
|
@@ -99,6 +96,11 @@ export interface DataTableRootProps<
|
|
|
99
96
|
compact?: boolean;
|
|
100
97
|
/** Structural modifier: disabled state */
|
|
101
98
|
disabled?: boolean;
|
|
99
|
+
/** Structural intent — joins the resolver path (audit 16). */
|
|
100
|
+
accent?: boolean;
|
|
101
|
+
error?: boolean;
|
|
102
|
+
warning?: boolean;
|
|
103
|
+
success?: boolean;
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
export function DataTableRoot<TData extends Record<string, any> = Record<string, any>>({
|
|
@@ -165,6 +167,10 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
165
167
|
size,
|
|
166
168
|
compact = false,
|
|
167
169
|
disabled = false,
|
|
170
|
+
accent,
|
|
171
|
+
error,
|
|
172
|
+
warning,
|
|
173
|
+
success,
|
|
168
174
|
children,
|
|
169
175
|
"aria-label": ariaLabel,
|
|
170
176
|
"aria-describedby": ariaDescribedBy,
|
|
@@ -176,11 +182,15 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
176
182
|
// pinned via the `layout` prop. Same table state drives both layouts.
|
|
177
183
|
const showList = layout === "list";
|
|
178
184
|
const showCards = !showList && (layout === "cards" || (layout === "auto" && sm === false));
|
|
185
|
+
const intent = resolveDataTableIntent({ accent, error, warning, success });
|
|
179
186
|
const { knobProps, disabledState } = useResolvedKnobs({
|
|
180
|
-
intent
|
|
187
|
+
intent,
|
|
181
188
|
component: "DataTable",
|
|
182
189
|
compact,
|
|
183
190
|
});
|
|
191
|
+
const chrome = dataTableChrome(String(knobProps.sizeToken));
|
|
192
|
+
const rowHeightPx = chrome.rowPx;
|
|
193
|
+
const selectionColWidth = chrome.selectionCol;
|
|
184
194
|
// Collapsed expand-caret points toward inline-end, so it mirrors in RTL via
|
|
185
195
|
// glyph swap (useDirection, Axiom 15); rotation sign flips so expanded
|
|
186
196
|
// still points down.
|
|
@@ -815,9 +825,9 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
815
825
|
const col = table.getColumn(leftPinned[i]);
|
|
816
826
|
if (col) leftOffset += col.getSize();
|
|
817
827
|
}
|
|
818
|
-
if (enableRowSelection) leftOffset +=
|
|
819
|
-
if (enableRowExpansion) leftOffset +=
|
|
820
|
-
if (showRowNumbers) leftOffset +=
|
|
828
|
+
if (enableRowSelection) leftOffset += selectionColWidth;
|
|
829
|
+
if (enableRowExpansion) leftOffset += chrome.expandCol;
|
|
830
|
+
if (showRowNumbers) leftOffset += chrome.rowNumberCol;
|
|
821
831
|
// Logical inset (RTL backlog #2): TanStack's "left" bucket is the
|
|
822
832
|
// reading-start side, so the sticky offset must flip with direction.
|
|
823
833
|
return {
|
|
@@ -834,7 +844,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
834
844
|
const col = table.getColumn(rightPinned[i]);
|
|
835
845
|
if (col) rightOffset += col.getSize();
|
|
836
846
|
}
|
|
837
|
-
if (showDeleteRow && !readOnly) rightOffset +=
|
|
847
|
+
if (showDeleteRow && !readOnly) rightOffset += chrome.deleteCol;
|
|
838
848
|
return {
|
|
839
849
|
position: "sticky" as const,
|
|
840
850
|
insetInlineEnd: rightOffset,
|
|
@@ -881,7 +891,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
881
891
|
<Table.Cell
|
|
882
892
|
{...cellRenderProps}
|
|
883
893
|
{...cellNavProps()}
|
|
884
|
-
cellWidth={
|
|
894
|
+
cellWidth={selectionColWidth}
|
|
885
895
|
cellHeight={cellHeight as any}
|
|
886
896
|
cellLocation="first"
|
|
887
897
|
justifyContent="center"
|
|
@@ -908,7 +918,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
908
918
|
<Table.Cell
|
|
909
919
|
{...cellRenderProps}
|
|
910
920
|
{...cellNavProps()}
|
|
911
|
-
cellWidth={
|
|
921
|
+
cellWidth={chrome.rowNumberCol}
|
|
912
922
|
cellHeight={cellHeight as any}
|
|
913
923
|
cellLocation={enableRowSelection ? "middle" : "first"}
|
|
914
924
|
>
|
|
@@ -922,7 +932,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
922
932
|
<Table.Cell
|
|
923
933
|
{...cellRenderProps}
|
|
924
934
|
{...cellNavProps()}
|
|
925
|
-
cellWidth={
|
|
935
|
+
cellWidth={chrome.expandCol + row.depth * chrome.indent}
|
|
926
936
|
cellHeight={cellHeight as any}
|
|
927
937
|
cellLocation={enableRowSelection || showRowNumbers ? "middle" : "first"}
|
|
928
938
|
paddingLeft={0}
|
|
@@ -934,12 +944,12 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
934
944
|
flexDirection="row"
|
|
935
945
|
alignItems="center"
|
|
936
946
|
height="100%"
|
|
937
|
-
width={row.depth *
|
|
947
|
+
width={row.depth * chrome.indent}
|
|
938
948
|
>
|
|
939
949
|
{Array.from({ length: row.depth }).map((_, i) => (
|
|
940
950
|
<View
|
|
941
951
|
key={i}
|
|
942
|
-
width={
|
|
952
|
+
width={chrome.indent}
|
|
943
953
|
height="100%"
|
|
944
954
|
alignItems="center"
|
|
945
955
|
justifyContent="center"
|
|
@@ -949,15 +959,15 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
949
959
|
width={1}
|
|
950
960
|
height="100%"
|
|
951
961
|
backgroundColor="$color6"
|
|
952
|
-
left={
|
|
962
|
+
left={chrome.indent / 2}
|
|
953
963
|
/>
|
|
954
964
|
{i === row.depth - 1 && (
|
|
955
965
|
<View
|
|
956
966
|
position="absolute"
|
|
957
967
|
height={1}
|
|
958
|
-
width={
|
|
968
|
+
width={chrome.indent / 2}
|
|
959
969
|
backgroundColor="$color6"
|
|
960
|
-
left={
|
|
970
|
+
left={chrome.indent / 2}
|
|
961
971
|
/>
|
|
962
972
|
)}
|
|
963
973
|
</View>
|
|
@@ -987,15 +997,14 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
987
997
|
borderRadius="$2"
|
|
988
998
|
>
|
|
989
999
|
<ExpandCaretIcon
|
|
990
|
-
size={
|
|
1000
|
+
size={chrome.iconPx}
|
|
991
1001
|
style={{
|
|
992
1002
|
transform: row.getIsExpanded() ? expandedCaretRotation : "none",
|
|
993
|
-
transition: "transform 0.15s ease",
|
|
994
1003
|
}}
|
|
995
1004
|
/>
|
|
996
1005
|
</View>
|
|
997
1006
|
) : (
|
|
998
|
-
<View width={
|
|
1007
|
+
<View width={chrome.expandCol} />
|
|
999
1008
|
)}
|
|
1000
1009
|
</View>
|
|
1001
1010
|
</Table.Cell>
|
|
@@ -1049,7 +1058,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1049
1058
|
<Table.Cell
|
|
1050
1059
|
{...cellRenderProps}
|
|
1051
1060
|
{...cellNavProps()}
|
|
1052
|
-
cellWidth={
|
|
1061
|
+
cellWidth={chrome.deleteCol}
|
|
1053
1062
|
cellHeight={cellHeight as any}
|
|
1054
1063
|
cellLocation="last"
|
|
1055
1064
|
justifyContent="center"
|
|
@@ -1409,10 +1418,10 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1409
1418
|
alignCells={{ x: "start", y: "center" }}
|
|
1410
1419
|
alignHeaderCells={{ x: "start", y: "center" }}
|
|
1411
1420
|
cellHeight={cellHeight}
|
|
1412
|
-
borderTopLeftRadius={hasToolbar ? 0 : knobProps.
|
|
1413
|
-
borderTopRightRadius={hasToolbar ? 0 : knobProps.
|
|
1414
|
-
borderBottomLeftRadius={knobProps.
|
|
1415
|
-
borderBottomRightRadius={knobProps.
|
|
1421
|
+
borderTopLeftRadius={hasToolbar ? 0 : knobProps.borderRadiusOuter.borderRadius}
|
|
1422
|
+
borderTopRightRadius={hasToolbar ? 0 : knobProps.borderRadiusOuter.borderRadius}
|
|
1423
|
+
borderBottomLeftRadius={knobProps.borderRadiusOuter.borderRadius}
|
|
1424
|
+
borderBottomRightRadius={knobProps.borderRadiusOuter.borderRadius}
|
|
1416
1425
|
marginBottom={0}
|
|
1417
1426
|
aria-label={resolvedAriaLabel}
|
|
1418
1427
|
aria-rowcount={computed.totalPages * state.pagination.pageSize}
|
|
@@ -1447,10 +1456,10 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1447
1456
|
: "middle",
|
|
1448
1457
|
borderTopRightRadius: hasToolbar
|
|
1449
1458
|
? "$0"
|
|
1450
|
-
: knobProps.
|
|
1459
|
+
: knobProps.borderRadiusOuter.borderRadius,
|
|
1451
1460
|
borderTopLeftRadius: hasToolbar
|
|
1452
1461
|
? "$0"
|
|
1453
|
-
: knobProps.
|
|
1462
|
+
: knobProps.borderRadiusOuter.borderRadius,
|
|
1454
1463
|
borderBottomLeftRadius: "$0",
|
|
1455
1464
|
borderBottomRightRadius: "$0",
|
|
1456
1465
|
"aria-rowindex": rowCounter.current,
|
|
@@ -1458,7 +1467,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1458
1467
|
>
|
|
1459
1468
|
{enableRowSelection && (
|
|
1460
1469
|
<Table.HeaderCell
|
|
1461
|
-
cellWidth={
|
|
1470
|
+
cellWidth={selectionColWidth}
|
|
1462
1471
|
cellHeight={cellHeight as any}
|
|
1463
1472
|
cellLocation="first"
|
|
1464
1473
|
justifyContent="center"
|
|
@@ -1490,11 +1499,11 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1490
1499
|
|
|
1491
1500
|
{showRowNumbers && (
|
|
1492
1501
|
<Table.HeaderCell
|
|
1493
|
-
cellWidth={
|
|
1502
|
+
cellWidth={chrome.rowNumberCol}
|
|
1494
1503
|
cellHeight={cellHeight as any}
|
|
1495
1504
|
cellLocation={enableRowSelection ? "middle" : "first"}
|
|
1496
1505
|
>
|
|
1497
|
-
<Text fontSize=
|
|
1506
|
+
<Text fontSize={knobProps.sizeToken} fontWeight="600">
|
|
1498
1507
|
#
|
|
1499
1508
|
</Text>
|
|
1500
1509
|
</Table.HeaderCell>
|
|
@@ -1502,7 +1511,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1502
1511
|
|
|
1503
1512
|
{enableRowExpansion && (
|
|
1504
1513
|
<Table.HeaderCell
|
|
1505
|
-
cellWidth={
|
|
1514
|
+
cellWidth={chrome.expandCol}
|
|
1506
1515
|
cellHeight={cellHeight as any}
|
|
1507
1516
|
cellLocation={
|
|
1508
1517
|
enableRowSelection || showRowNumbers ? "middle" : "first"
|
|
@@ -1639,7 +1648,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1639
1648
|
flex={isRightAligned ? undefined : 1}
|
|
1640
1649
|
justifyContent={isRightAligned ? "flex-end" : undefined}
|
|
1641
1650
|
>
|
|
1642
|
-
<Text fontSize=
|
|
1651
|
+
<Text fontSize={knobProps.sizeToken} userSelect="none">
|
|
1643
1652
|
{header.isPlaceholder
|
|
1644
1653
|
? null
|
|
1645
1654
|
: flexRender(
|
|
@@ -1660,7 +1669,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1660
1669
|
<View aria-hidden={true} role="presentation">
|
|
1661
1670
|
{sortDirection === "asc" && (
|
|
1662
1671
|
<CaretDownIcon
|
|
1663
|
-
size={
|
|
1672
|
+
size={chrome.iconPx}
|
|
1664
1673
|
color={
|
|
1665
1674
|
sortDirection ? "var(--color10)" : "var(--color8)"
|
|
1666
1675
|
}
|
|
@@ -1668,7 +1677,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1668
1677
|
)}
|
|
1669
1678
|
{sortDirection === "desc" && (
|
|
1670
1679
|
<CaretDownIcon
|
|
1671
|
-
size={
|
|
1680
|
+
size={chrome.iconPx}
|
|
1672
1681
|
color={
|
|
1673
1682
|
sortDirection ? "var(--color10)" : "var(--color8)"
|
|
1674
1683
|
}
|
|
@@ -1676,7 +1685,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1676
1685
|
/>
|
|
1677
1686
|
)}
|
|
1678
1687
|
{sortDirection === false && (
|
|
1679
|
-
<CaretUpDownIcon size={
|
|
1688
|
+
<CaretUpDownIcon size={chrome.iconPx} color="$color8" />
|
|
1680
1689
|
)}
|
|
1681
1690
|
</View>
|
|
1682
1691
|
</Tooltip>
|
|
@@ -1746,7 +1755,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1746
1755
|
|
|
1747
1756
|
{showDeleteRow && !readOnly && (
|
|
1748
1757
|
<Table.HeaderCell
|
|
1749
|
-
cellWidth={
|
|
1758
|
+
cellWidth={chrome.deleteCol}
|
|
1750
1759
|
cellHeight={cellHeight as any}
|
|
1751
1760
|
cellLocation="last"
|
|
1752
1761
|
/>
|
|
@@ -1839,6 +1848,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1839
1848
|
extraColumnsAfter={extraColumnsAfter}
|
|
1840
1849
|
table={table}
|
|
1841
1850
|
hasInfiniteTail={hasInfiniteTail}
|
|
1851
|
+
rowHeightPx={rowHeightPx}
|
|
1842
1852
|
{...(rowPressActive ? { getRowPressProps } : {})}
|
|
1843
1853
|
/>
|
|
1844
1854
|
</Table.Cell>
|
|
@@ -1856,7 +1866,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1856
1866
|
table.getVisibleLeafColumns().length +
|
|
1857
1867
|
extraColumnsBefore +
|
|
1858
1868
|
extraColumnsAfter;
|
|
1859
|
-
const indent = (row.depth ?? 0) *
|
|
1869
|
+
const indent = (row.depth ?? 0) * chrome.indent;
|
|
1860
1870
|
return (
|
|
1861
1871
|
<Table.Row
|
|
1862
1872
|
key={row.id}
|
|
@@ -1930,6 +1940,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1930
1940
|
: "off",
|
|
1931
1941
|
} as any)}
|
|
1932
1942
|
{...(getRowPressProps(row, index) as any)}
|
|
1943
|
+
{...(rowIntentProps(row.original) as any)}
|
|
1933
1944
|
>
|
|
1934
1945
|
{renderRowContent(row, index, isLastRow)}
|
|
1935
1946
|
</Table.Row>
|
|
@@ -1975,7 +1986,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1975
1986
|
>
|
|
1976
1987
|
{enableRowSelection && (
|
|
1977
1988
|
<Table.Cell
|
|
1978
|
-
cellWidth={
|
|
1989
|
+
cellWidth={selectionColWidth}
|
|
1979
1990
|
cellLocation="first"
|
|
1980
1991
|
padding={0}
|
|
1981
1992
|
minHeight={0}
|
|
@@ -1983,7 +1994,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1983
1994
|
)}
|
|
1984
1995
|
{showRowNumbers && (
|
|
1985
1996
|
<Table.Cell
|
|
1986
|
-
cellWidth={
|
|
1997
|
+
cellWidth={chrome.rowNumberCol}
|
|
1987
1998
|
cellLocation={enableRowSelection ? "middle" : "first"}
|
|
1988
1999
|
padding={0}
|
|
1989
2000
|
minHeight={0}
|
|
@@ -1991,7 +2002,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
1991
2002
|
)}
|
|
1992
2003
|
{enableRowExpansion && (
|
|
1993
2004
|
<Table.Cell
|
|
1994
|
-
cellWidth={
|
|
2005
|
+
cellWidth={chrome.expandCol}
|
|
1995
2006
|
cellLocation={
|
|
1996
2007
|
enableRowSelection || showRowNumbers ? "middle" : "first"
|
|
1997
2008
|
}
|
|
@@ -2026,7 +2037,7 @@ export function DataTableRoot<TData extends Record<string, any> = Record<string,
|
|
|
2026
2037
|
})}
|
|
2027
2038
|
{showDeleteRow && !readOnly && (
|
|
2028
2039
|
<Table.Cell
|
|
2029
|
-
cellWidth={
|
|
2040
|
+
cellWidth={chrome.deleteCol}
|
|
2030
2041
|
cellLocation="last"
|
|
2031
2042
|
padding={0}
|
|
2032
2043
|
minHeight={0}
|
|
@@ -7,12 +7,11 @@
|
|
|
7
7
|
* column border extension.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
+
import { dataTableChrome, rowIntentProps } from "./dataTableChrome";
|
|
10
11
|
import { tableRowStateProps } from "./rowStateChrome";
|
|
11
12
|
import { Skeleton } from "@multiplatform.one/components";
|
|
12
13
|
import { Text, View } from "tamagui";
|
|
13
14
|
|
|
14
|
-
const rowHeightPx = 40;
|
|
15
|
-
|
|
16
15
|
export interface DataTableVirtualizedProps {
|
|
17
16
|
virtualItems: any[];
|
|
18
17
|
totalSize: number;
|
|
@@ -48,6 +47,8 @@ export interface DataTableVirtualizedProps {
|
|
|
48
47
|
* the same activation + roving-focus contract as grid rows).
|
|
49
48
|
*/
|
|
50
49
|
getRowPressProps?: (row: any, rowIndex: number, variant?: "row" | "card") => Record<string, any>;
|
|
50
|
+
/** LC-65 row estimate — caller passes size-recipe height. */
|
|
51
|
+
rowHeightPx?: number;
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
export function DataTableVirtualized({
|
|
@@ -67,7 +68,9 @@ export function DataTableVirtualized({
|
|
|
67
68
|
renderRowContent,
|
|
68
69
|
hasInfiniteTail = false,
|
|
69
70
|
getRowPressProps,
|
|
71
|
+
rowHeightPx: rowHeightPxProp,
|
|
70
72
|
}: DataTableVirtualizedProps) {
|
|
73
|
+
const rowHeightPx = rowHeightPxProp ?? dataTableChrome("$4").rowPx;
|
|
71
74
|
return (
|
|
72
75
|
<div
|
|
73
76
|
style={{
|
|
@@ -193,6 +196,7 @@ export function DataTableVirtualized({
|
|
|
193
196
|
role="row"
|
|
194
197
|
aria-rowindex={virtualRow.index + 1}
|
|
195
198
|
{...(getRowPressProps ? (getRowPressProps(row, virtualRow.index) as any) : {})}
|
|
199
|
+
{...(rowIntentProps(row.original) as any)}
|
|
196
200
|
>
|
|
197
201
|
{/* div cells (role="cell" via the primitive): a real <td> is
|
|
198
202
|
not a valid child of the absolutely-positioned div rows */}
|
|
@@ -189,6 +189,7 @@ const meta: Meta<typeof DataTable> = {
|
|
|
189
189
|
readOnly: { control: "boolean" },
|
|
190
190
|
compact: { control: "boolean" },
|
|
191
191
|
disabled: { control: "boolean" },
|
|
192
|
+
// compact is not pinned — density rides the Preset / Storybook control.
|
|
192
193
|
},
|
|
193
194
|
decorators: [
|
|
194
195
|
(Story) => (
|
|
@@ -251,7 +252,7 @@ export const ReadOnly: Story = {
|
|
|
251
252
|
render: (args) => (
|
|
252
253
|
<YStack gap="$4" flex={1} minHeight={0}>
|
|
253
254
|
<YStack gap="$2">
|
|
254
|
-
<H3>Read-only — every cell routes through FieldDisplay</H3>
|
|
255
|
+
<H3 fontWeight="400">Read-only — every cell routes through FieldDisplay</H3>
|
|
255
256
|
<Text color="$placeholderColor">
|
|
256
257
|
Lightweight view-only render per field type. No edit UI mounted.
|
|
257
258
|
</Text>
|
|
@@ -273,7 +274,7 @@ export const Editable: Story = {
|
|
|
273
274
|
render: (args) => (
|
|
274
275
|
<YStack gap="$4" flex={1} minHeight={0}>
|
|
275
276
|
<YStack gap="$2">
|
|
276
|
-
<H3>Editable — cells mount the full Edit field component</H3>
|
|
277
|
+
<H3 fontWeight="400">Editable — cells mount the full Edit field component</H3>
|
|
277
278
|
<Text color="$placeholderColor">
|
|
278
279
|
Same column set, edit mode, wired: onDataChange commits edits to story state. Use this
|
|
279
280
|
view to compare field heights and spot popover-clipping issues against the read-only
|
|
@@ -389,7 +390,9 @@ export const EditableExtended: Story = {
|
|
|
389
390
|
render: (args) => (
|
|
390
391
|
<YStack gap="$4" flex={1} minHeight={0}>
|
|
391
392
|
<YStack gap="$2">
|
|
392
|
-
<H3
|
|
393
|
+
<H3 fontWeight="400">
|
|
394
|
+
Extended field types — textarea, slider, radio, toggle, time, ranges, otp
|
|
395
|
+
</H3>
|
|
393
396
|
<Text color="$placeholderColor">
|
|
394
397
|
The field types the core harness omits: textarea, slider, radiogroup, togglegroup,
|
|
395
398
|
timepicker, daterangepicker, multidatepicker, duration, phoneinput, otp. All wired through
|
|
@@ -410,7 +413,7 @@ export const ReadOnlyExtended: Story = {
|
|
|
410
413
|
render: (args) => (
|
|
411
414
|
<YStack gap="$4" flex={1} minHeight={0}>
|
|
412
415
|
<YStack gap="$2">
|
|
413
|
-
<H3>Extended field types — read-only</H3>
|
|
416
|
+
<H3 fontWeight="400">Extended field types — read-only</H3>
|
|
414
417
|
</YStack>
|
|
415
418
|
<YStack flex={1} minHeight={0}>
|
|
416
419
|
<DataTable<ExtendedRow>
|
|
@@ -493,7 +496,9 @@ export const EditableHeavy: Story = {
|
|
|
493
496
|
render: (args) => (
|
|
494
497
|
<YStack gap="$4" flex={1} minHeight={0}>
|
|
495
498
|
<YStack gap="$2">
|
|
496
|
-
<H3
|
|
499
|
+
<H3 fontWeight="400">
|
|
500
|
+
Heavy editors — mention, barcode, file, image, signature, geo, rich text, code
|
|
501
|
+
</H3>
|
|
497
502
|
<Text color="$placeholderColor">
|
|
498
503
|
Edits too big for the cell: the cell shows a compact FieldDisplay summary and clicking
|
|
499
504
|
opens the modal editor (CellModalEditor). All wired through onDataChange.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DataTable chrome geometry and intent helpers.
|
|
3
|
+
*
|
|
4
|
+
* Size numbers come from LC-65 `sizeRecipeForToken` (no handwritten 14/40).
|
|
5
|
+
* Row `_intent` rides Tamagui boolean theme props on the real row host —
|
|
6
|
+
* never a Theme wrapper inside <table> (invalid HTML).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { sizeRecipeForToken } from "@multiplatform.one/theme";
|
|
10
|
+
|
|
11
|
+
export type DataTableIntentName = "accent" | "error" | "warning" | "success";
|
|
12
|
+
|
|
13
|
+
export function resolveDataTableIntent(flags: {
|
|
14
|
+
accent?: boolean;
|
|
15
|
+
error?: boolean;
|
|
16
|
+
warning?: boolean;
|
|
17
|
+
success?: boolean;
|
|
18
|
+
}): DataTableIntentName | undefined {
|
|
19
|
+
if (flags.accent) return "accent";
|
|
20
|
+
if (flags.error) return "error";
|
|
21
|
+
if (flags.warning) return "warning";
|
|
22
|
+
if (flags.success) return "success";
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function rowIntentProps(rowData: Record<string, unknown> | undefined): Record<string, true> {
|
|
27
|
+
const intent = rowData?._intent;
|
|
28
|
+
if (intent === "accent" || intent === "error" || intent === "warning" || intent === "success") {
|
|
29
|
+
return { [intent]: true };
|
|
30
|
+
}
|
|
31
|
+
return {};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function dataTableChrome(sizeToken: string) {
|
|
35
|
+
const recipe = sizeRecipeForToken(sizeToken);
|
|
36
|
+
return {
|
|
37
|
+
recipe,
|
|
38
|
+
iconPx: recipe.iconSize,
|
|
39
|
+
rowPx: recipe.height,
|
|
40
|
+
selectionCol: recipe.height,
|
|
41
|
+
expandCol: recipe.iconSize * 2,
|
|
42
|
+
rowNumberCol: Math.round(recipe.height * 1.25),
|
|
43
|
+
deleteCol: Math.round(recipe.height * 1.5),
|
|
44
|
+
indent: recipe.gap,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export type DataTableChrome = ReturnType<typeof dataTableChrome>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPO-60 / living rulebook: DataTable design-law 100%.
|
|
3
|
+
*
|
|
4
|
+
* Pins the Part 3 DataTable contract that was still open on origin/main:
|
|
5
|
+
* intent joins the resolver path (not `intent: undefined`), row `_intent`
|
|
6
|
+
* rides the same `tr.t_*` theme class SimpleTable already uses (no Theme
|
|
7
|
+
* wrapper inside <table>), chrome glyphs follow LC-65 size recipes, and
|
|
8
|
+
* the frame spreads R-OUTER instead of cherry-picking R-SCALE.
|
|
9
|
+
*
|
|
10
|
+
* Rulings: /tmp/cursor-mpo-lanes/RULINGS-2026-08-28.md (campaign file).
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { createColumnHelper } from "@tanstack/react-table";
|
|
14
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
15
|
+
import { sizeRecipeForToken } from "@multiplatform.one/theme";
|
|
16
|
+
import { readFileSync } from "node:fs";
|
|
17
|
+
import { dirname, join } from "node:path";
|
|
18
|
+
import { fileURLToPath } from "node:url";
|
|
19
|
+
import { describe, expect, it, vi } from "vitest";
|
|
20
|
+
import type { DataTableColumn } from "../../types";
|
|
21
|
+
import { DataTable } from "./index";
|
|
22
|
+
|
|
23
|
+
type Person = {
|
|
24
|
+
id: number;
|
|
25
|
+
firstName: string;
|
|
26
|
+
status: string;
|
|
27
|
+
_intent?: "accent" | "error" | "warning" | "success";
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const columnHelper = createColumnHelper<Person>();
|
|
31
|
+
const columns: DataTableColumn<Person>[] = [
|
|
32
|
+
columnHelper.accessor("firstName", { header: "First Name" }) as DataTableColumn<Person>,
|
|
33
|
+
columnHelper.accessor("status", { header: "Status" }) as DataTableColumn<Person>,
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
37
|
+
|
|
38
|
+
function source(name: string): string {
|
|
39
|
+
return readFileSync(join(here, name), "utf8");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
describe("DataTable design-law (intent + recipes)", () => {
|
|
43
|
+
it("paints row _intent on the real tr (SimpleTable dialect, no Theme wrapper)", () => {
|
|
44
|
+
const data: Person[] = [
|
|
45
|
+
{ id: 1, firstName: "Ok", status: "Active" },
|
|
46
|
+
{ id: 2, firstName: "Bad", status: "Failed", _intent: "error" },
|
|
47
|
+
{ id: 3, firstName: "Warn", status: "Degraded", _intent: "warning" },
|
|
48
|
+
{ id: 4, firstName: "Good", status: "Complete", _intent: "success" },
|
|
49
|
+
];
|
|
50
|
+
const { container } = renderWithProviders(
|
|
51
|
+
<DataTable data={data} columns={columns} layout="table" onStateChange={vi.fn()} />,
|
|
52
|
+
);
|
|
53
|
+
expect(container.textContent).toContain("Bad");
|
|
54
|
+
expect(container.querySelector("tr.t_error")).not.toBeNull();
|
|
55
|
+
expect(container.querySelector("tr.t_warning")).not.toBeNull();
|
|
56
|
+
expect(container.querySelector("tr.t_success")).not.toBeNull();
|
|
57
|
+
for (const row of container.querySelectorAll("tr")) {
|
|
58
|
+
expect(row.parentElement?.tagName).toMatch(/THEAD|TBODY|TFOOT/);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it("expand-caret glyphs use the size recipe icon channel, not a handwritten 14", () => {
|
|
63
|
+
const data: Person[] = [
|
|
64
|
+
{
|
|
65
|
+
id: 1,
|
|
66
|
+
firstName: "John",
|
|
67
|
+
status: "Active",
|
|
68
|
+
subRows: [{ id: 11, firstName: "Kid", status: "Active" }],
|
|
69
|
+
} as Person,
|
|
70
|
+
];
|
|
71
|
+
const { getAllByLabelText } = renderWithProviders(
|
|
72
|
+
<DataTable
|
|
73
|
+
data={data}
|
|
74
|
+
columns={columns}
|
|
75
|
+
enableRowExpansion
|
|
76
|
+
layout="table"
|
|
77
|
+
onStateChange={vi.fn()}
|
|
78
|
+
/>,
|
|
79
|
+
);
|
|
80
|
+
const expand = getAllByLabelText(/^Expand row \d+$/)[0];
|
|
81
|
+
const svg = expand.querySelector("svg");
|
|
82
|
+
expect(svg).not.toBeNull();
|
|
83
|
+
const expected = sizeRecipeForToken("$4").iconSize;
|
|
84
|
+
expect(Number(svg?.getAttribute("width"))).toBe(expected);
|
|
85
|
+
expect(Number(svg?.getAttribute("width"))).not.toBe(14);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it("does not force intent: undefined — resolver is opt-in by component key", () => {
|
|
89
|
+
expect(source("DataTableRoot.tsx")).not.toMatch(/intent:\s*undefined/);
|
|
90
|
+
expect(source("index.native.tsx")).not.toMatch(/intent:\s*undefined/);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("does not cherry-pick R-SCALE radius onto the R-OUTER frame", () => {
|
|
94
|
+
expect(source("DataTableRoot.tsx")).not.toMatch(/knobProps\.borderRadius\.borderRadius/);
|
|
95
|
+
expect(source("DataTableDocumentList.tsx")).not.toMatch(
|
|
96
|
+
/knobProps\.borderRadius\.borderRadius/,
|
|
97
|
+
);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
it("does not hardcode caret size 14 or a raw 0.15s transform transition", () => {
|
|
101
|
+
const files = [
|
|
102
|
+
"DataTableRoot.tsx",
|
|
103
|
+
"index.native.tsx",
|
|
104
|
+
"DataTableCardControls.tsx",
|
|
105
|
+
"DataTableVirtualized.tsx",
|
|
106
|
+
];
|
|
107
|
+
for (const file of files) {
|
|
108
|
+
const src = source(file);
|
|
109
|
+
expect(src, file).not.toMatch(/size=\{14\}/);
|
|
110
|
+
expect(src, file).not.toMatch(/transform 0\.15s ease/);
|
|
111
|
+
expect(src, file).not.toMatch(/const rowHeightPx = 40/);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|