@multiplatform.one/table 7.4.1 → 7.6.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
|
@@ -10,7 +10,11 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { EmptyState } from "@multiplatform.one/components";
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
ensureFocusVisibleRing,
|
|
15
|
+
useResolvedKnobs,
|
|
16
|
+
type DisabledRecipe,
|
|
17
|
+
} from "@multiplatform.one/theme";
|
|
14
18
|
import { useCallback, useState, type ReactNode } from "react";
|
|
15
19
|
import { useTranslation } from "react-i18next";
|
|
16
20
|
import type { FontSizeTokens, ViewProps } from "tamagui";
|
|
@@ -106,27 +110,45 @@ type KnobBody = {
|
|
|
106
110
|
color?: string;
|
|
107
111
|
};
|
|
108
112
|
|
|
113
|
+
/** Inner grid rules follow the borderWidth knob (LC-18). Zero means zero. */
|
|
114
|
+
function gridRule(borderWidth: number, on: boolean) {
|
|
115
|
+
if (!on || borderWidth === 0) return {};
|
|
116
|
+
return {
|
|
117
|
+
borderBottomWidth: borderWidth,
|
|
118
|
+
borderBottomColor: "$borderColor" as const,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/** Cell inset rides `space` (SP-EDGE: padding/height, never an outer row inset). */
|
|
123
|
+
function cellPad(gap: string) {
|
|
124
|
+
return { paddingHorizontal: gap, paddingVertical: gap };
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/** LC-40: disabled rows wash chrome (keepLabel) or dim the assembly (dimWhole). */
|
|
128
|
+
function disabledChrome(disabled: boolean, disabledState: DisabledRecipe) {
|
|
129
|
+
if (!disabled) return {};
|
|
130
|
+
if (disabledState.style === "dimWhole") {
|
|
131
|
+
return { ...disabledState.assemblyKnobProps, "aria-disabled": true as const };
|
|
132
|
+
}
|
|
133
|
+
return { ...disabledState.surfaceKnobProps, "aria-disabled": true as const };
|
|
134
|
+
}
|
|
135
|
+
|
|
109
136
|
function AlignedCellText({
|
|
110
137
|
children,
|
|
111
138
|
align,
|
|
112
139
|
body,
|
|
113
|
-
|
|
114
|
-
emphasized,
|
|
115
|
-
muted,
|
|
140
|
+
fontSize,
|
|
116
141
|
}: {
|
|
117
142
|
children: string | number;
|
|
118
143
|
align?: "left" | "center" | "right";
|
|
119
144
|
body: KnobBody;
|
|
120
|
-
|
|
121
|
-
emphasized?: boolean;
|
|
122
|
-
muted?: boolean;
|
|
145
|
+
fontSize: FontSizeTokens;
|
|
123
146
|
}) {
|
|
124
147
|
return (
|
|
125
148
|
<Text
|
|
126
149
|
{...body}
|
|
127
|
-
fontSize={
|
|
128
|
-
color=
|
|
129
|
-
fontWeight={emphasized ? "600" : body.fontWeight}
|
|
150
|
+
fontSize={fontSize}
|
|
151
|
+
color="$color12"
|
|
130
152
|
display="block"
|
|
131
153
|
width="100%"
|
|
132
154
|
textAlign={align ?? "left"}
|
|
@@ -144,20 +166,14 @@ function renderCellContent(
|
|
|
144
166
|
col: SimpleTableColumn,
|
|
145
167
|
row: Record<string, any>,
|
|
146
168
|
rowIndex: number,
|
|
147
|
-
colIndex: number,
|
|
148
169
|
body: KnobBody,
|
|
149
|
-
|
|
170
|
+
fontSize: FontSizeTokens,
|
|
150
171
|
): ReactNode {
|
|
151
172
|
const raw = row[col.accessorKey];
|
|
152
173
|
const rendered = col.cell ? col.cell(raw, row, rowIndex) : raw;
|
|
153
174
|
if (rendered == null || typeof rendered === "string" || typeof rendered === "number") {
|
|
154
175
|
return (
|
|
155
|
-
<AlignedCellText
|
|
156
|
-
align={col.align}
|
|
157
|
-
body={body}
|
|
158
|
-
sizeToken={sizeToken}
|
|
159
|
-
emphasized={colIndex === 0}
|
|
160
|
-
>
|
|
176
|
+
<AlignedCellText align={col.align} body={body} fontSize={fontSize}>
|
|
161
177
|
{rendered ?? ""}
|
|
162
178
|
</AlignedCellText>
|
|
163
179
|
);
|
|
@@ -304,7 +320,7 @@ function SimpleTableMobileCards({
|
|
|
304
320
|
disabled,
|
|
305
321
|
}: SimpleTableMobileCardsProps) {
|
|
306
322
|
const { t } = useTranslation();
|
|
307
|
-
const { knobProps } = useResolvedKnobs({ component: "SimpleTable" });
|
|
323
|
+
const { knobProps, disabledState } = useResolvedKnobs({ component: "SimpleTable" });
|
|
308
324
|
const { rowPressActive, getRowPressProps } = useSimpleTableRowPress({
|
|
309
325
|
data,
|
|
310
326
|
columns,
|
|
@@ -314,12 +330,18 @@ function SimpleTableMobileCards({
|
|
|
314
330
|
});
|
|
315
331
|
const tableZebraOn = knobProps.tableZebra === "on";
|
|
316
332
|
const [titleCol, ...detailCols] = columns;
|
|
333
|
+
const typeSize = knobProps.label.fontSize;
|
|
334
|
+
const motion = knobProps.transition ? { transition: knobProps.transition } : {};
|
|
317
335
|
|
|
318
336
|
if (data.length === 0) {
|
|
319
337
|
return (
|
|
320
|
-
<View
|
|
338
|
+
<View
|
|
339
|
+
flexDirection="column"
|
|
340
|
+
{...knobProps.gap}
|
|
341
|
+
{...disabledChrome(Boolean(disabled), disabledState)}
|
|
342
|
+
>
|
|
321
343
|
{caption ? (
|
|
322
|
-
<Text {...knobProps.label} color=
|
|
344
|
+
<Text {...knobProps.label} color={knobProps.textAccentColor}>
|
|
323
345
|
{caption}
|
|
324
346
|
</Text>
|
|
325
347
|
) : null}
|
|
@@ -335,7 +357,7 @@ function SimpleTableMobileCards({
|
|
|
335
357
|
{...(rowPressActive ? ({ "data-row-press-scope": "true" } as any) : {})}
|
|
336
358
|
>
|
|
337
359
|
{caption ? (
|
|
338
|
-
<Text {...knobProps.label} color=
|
|
360
|
+
<Text {...knobProps.label} color={knobProps.textAccentColor}>
|
|
339
361
|
{caption}
|
|
340
362
|
</Text>
|
|
341
363
|
) : null}
|
|
@@ -355,8 +377,9 @@ function SimpleTableMobileCards({
|
|
|
355
377
|
elevation={knobProps.elevation}
|
|
356
378
|
{...(tableZebraOn && rowIndex % 2 === 1 ? { backgroundColor: "$color2" } : {})}
|
|
357
379
|
{...(intent ? { theme: intent, backgroundColor: "$color3" as const } : {})}
|
|
358
|
-
|
|
359
|
-
{...
|
|
380
|
+
{...(disabled ? {} : { hoverStyle: { backgroundColor: "$backgroundHover" } })}
|
|
381
|
+
{...motion}
|
|
382
|
+
{...disabledChrome(Boolean(disabled), disabledState)}
|
|
360
383
|
{...({
|
|
361
384
|
"data-table-zebra": tableZebraOn ? (rowIndex % 2 === 0 ? "even" : "odd") : "off",
|
|
362
385
|
} as any)}
|
|
@@ -366,22 +389,16 @@ function SimpleTableMobileCards({
|
|
|
366
389
|
<View
|
|
367
390
|
{...(detailCols.length > 0
|
|
368
391
|
? {
|
|
369
|
-
paddingBottom:
|
|
370
|
-
marginBottom:
|
|
371
|
-
...
|
|
372
|
-
borderBottomColor: "$color6",
|
|
392
|
+
paddingBottom: knobProps.gap.gap,
|
|
393
|
+
marginBottom: knobProps.gap.gap,
|
|
394
|
+
...gridRule(knobProps.surface.borderWidth, true),
|
|
373
395
|
}
|
|
374
396
|
: {})}
|
|
375
397
|
>
|
|
376
398
|
{typeof titleRendered === "string" ||
|
|
377
399
|
typeof titleRendered === "number" ||
|
|
378
400
|
titleRendered == null ? (
|
|
379
|
-
<AlignedCellText
|
|
380
|
-
align={titleCol.align}
|
|
381
|
-
body={knobProps.body}
|
|
382
|
-
sizeToken={knobProps.sizeToken}
|
|
383
|
-
emphasized
|
|
384
|
-
>
|
|
401
|
+
<AlignedCellText align={titleCol.align} body={knobProps.body} fontSize={typeSize}>
|
|
385
402
|
{titleRendered ?? ""}
|
|
386
403
|
</AlignedCellText>
|
|
387
404
|
) : (
|
|
@@ -394,15 +411,13 @@ function SimpleTableMobileCards({
|
|
|
394
411
|
key={col.accessorKey}
|
|
395
412
|
flexDirection="row"
|
|
396
413
|
alignItems="center"
|
|
397
|
-
|
|
398
|
-
gap
|
|
399
|
-
{...(detailIndex < detailCols.length - 1
|
|
400
|
-
? { ...hairline.bottom, borderBottomColor: "$color6" }
|
|
401
|
-
: {})}
|
|
414
|
+
{...cellPad(knobProps.gap.gap)}
|
|
415
|
+
{...knobProps.gap}
|
|
416
|
+
{...gridRule(knobProps.surface.borderWidth, detailIndex < detailCols.length - 1)}
|
|
402
417
|
>
|
|
403
418
|
<Text
|
|
404
419
|
{...knobProps.label}
|
|
405
|
-
color=
|
|
420
|
+
color={knobProps.textAccentColor}
|
|
406
421
|
width="40%"
|
|
407
422
|
flexShrink={0}
|
|
408
423
|
numberOfLines={1}
|
|
@@ -411,14 +426,7 @@ function SimpleTableMobileCards({
|
|
|
411
426
|
{col.header}
|
|
412
427
|
</Text>
|
|
413
428
|
<View flex={1} minWidth={0}>
|
|
414
|
-
{renderCellContent(
|
|
415
|
-
col,
|
|
416
|
-
row,
|
|
417
|
-
rowIndex,
|
|
418
|
-
detailIndex + 1,
|
|
419
|
-
knobProps.body,
|
|
420
|
-
knobProps.sizeToken,
|
|
421
|
-
)}
|
|
429
|
+
{renderCellContent(col, row, rowIndex, knobProps.body, typeSize)}
|
|
422
430
|
</View>
|
|
423
431
|
</View>
|
|
424
432
|
))}
|
|
@@ -458,7 +466,7 @@ export function SimpleTableDesktop({
|
|
|
458
466
|
disabled,
|
|
459
467
|
...props
|
|
460
468
|
}: SimpleTableDesktopProps) {
|
|
461
|
-
const { knobProps } = useResolvedKnobs({ component: "SimpleTable" });
|
|
469
|
+
const { knobProps, disabledState } = useResolvedKnobs({ component: "SimpleTable" });
|
|
462
470
|
const { t } = useTranslation();
|
|
463
471
|
const { rowPressActive, getRowPressProps } = useSimpleTableRowPress({
|
|
464
472
|
data,
|
|
@@ -469,112 +477,117 @@ export function SimpleTableDesktop({
|
|
|
469
477
|
});
|
|
470
478
|
const tableZebraOn = knobProps.tableZebra === "on";
|
|
471
479
|
const ariaLabel = caption ? undefined : props["aria-label"];
|
|
480
|
+
const typeSize = knobProps.label.fontSize;
|
|
481
|
+
const motion = knobProps.transition ? { transition: knobProps.transition } : {};
|
|
482
|
+
const pad = cellPad(knobProps.gap.gap);
|
|
483
|
+
const frameBorder = knobProps.surface.borderWidth;
|
|
472
484
|
|
|
473
485
|
return (
|
|
474
|
-
<
|
|
486
|
+
<Table
|
|
475
487
|
{...props}
|
|
476
488
|
minWidth={0}
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
489
|
+
{...({
|
|
490
|
+
overflow: "auto",
|
|
491
|
+
"data-simple-table-frame": "true",
|
|
492
|
+
"data-border-width": String(frameBorder),
|
|
493
|
+
"data-animation": knobProps.transition ? "on" : "none",
|
|
494
|
+
} as Record<string, unknown>)}
|
|
495
|
+
{...disabledChrome(Boolean(disabled), disabledState)}
|
|
496
|
+
aria-label={ariaLabel}
|
|
497
|
+
{...({ "aria-rowcount": data.length + 1 } as any)}
|
|
480
498
|
>
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
<
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
<Table.
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
499
|
+
{caption ? (
|
|
500
|
+
<Table.Caption>
|
|
501
|
+
<Text {...knobProps.label} color={knobProps.textAccentColor}>
|
|
502
|
+
{caption}
|
|
503
|
+
</Text>
|
|
504
|
+
</Table.Caption>
|
|
505
|
+
) : null}
|
|
506
|
+
<Table.Head borderBottomWidth={frameBorder} borderBottomColor="$borderColor">
|
|
507
|
+
<Table.Row>
|
|
508
|
+
{columns.map((col, colIndex) => (
|
|
509
|
+
<Table.HeaderCell
|
|
510
|
+
key={col.accessorKey}
|
|
511
|
+
justifyContent={alignToFlex(col.align)}
|
|
512
|
+
cellLocation={cellLocationFor(colIndex, columns.length)}
|
|
513
|
+
data-align={col.align ?? "left"}
|
|
514
|
+
data-cell-pad={knobProps.gap.gap}
|
|
515
|
+
borderRadius={0}
|
|
516
|
+
{...pad}
|
|
517
|
+
>
|
|
518
|
+
{/* Block text filling the cell + textAlign: alignment that
|
|
519
|
+
works in the real <th> (display:table-cell — flex props
|
|
520
|
+
are inert there) and in the flex displayMode alike. */}
|
|
521
|
+
<Text
|
|
522
|
+
{...knobProps.label}
|
|
523
|
+
color={knobProps.textAccentColor}
|
|
524
|
+
display="block"
|
|
525
|
+
width="100%"
|
|
526
|
+
textAlign={col.align ?? "left"}
|
|
527
|
+
numberOfLines={1}
|
|
528
|
+
ellipsizeMode="tail"
|
|
529
|
+
{...(col.align === "right" ? ({ fontVariant: ["tabular-nums"] } as any) : {})}
|
|
497
530
|
>
|
|
498
|
-
{
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
</Text>
|
|
515
|
-
</Table.HeaderCell>
|
|
516
|
-
))}
|
|
531
|
+
{col.header}
|
|
532
|
+
</Text>
|
|
533
|
+
</Table.HeaderCell>
|
|
534
|
+
))}
|
|
535
|
+
</Table.Row>
|
|
536
|
+
</Table.Head>
|
|
537
|
+
<Table.Body {...(rowPressActive ? ({ "data-row-press-scope": "true" } as any) : {})}>
|
|
538
|
+
{data.length === 0 ? (
|
|
539
|
+
<Table.Row>
|
|
540
|
+
<Table.Cell
|
|
541
|
+
cellWidth="auto"
|
|
542
|
+
borderRadius={0}
|
|
543
|
+
{...({ colSpan: Math.max(columns.length, 1) } as any)}
|
|
544
|
+
>
|
|
545
|
+
<EmptyState compact aria-live="polite" title={t("No data available")} />
|
|
546
|
+
</Table.Cell>
|
|
517
547
|
</Table.Row>
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
{renderCellContent(
|
|
562
|
-
col,
|
|
563
|
-
row,
|
|
564
|
-
rowIndex,
|
|
565
|
-
colIndex,
|
|
566
|
-
knobProps.body,
|
|
567
|
-
knobProps.sizeToken,
|
|
568
|
-
)}
|
|
569
|
-
</Table.Cell>
|
|
570
|
-
))}
|
|
571
|
-
</Table.Row>
|
|
572
|
-
);
|
|
573
|
-
})
|
|
574
|
-
)}
|
|
575
|
-
</Table.Body>
|
|
576
|
-
</Table>
|
|
577
|
-
</View>
|
|
548
|
+
) : (
|
|
549
|
+
data.map((row, rowIndex) => {
|
|
550
|
+
const intent = row._intent as IntentName | undefined;
|
|
551
|
+
const intentProps = intent ? { [intent]: true } : {};
|
|
552
|
+
const isLast = rowIndex === data.length - 1;
|
|
553
|
+
const zebraFill =
|
|
554
|
+
!intent && tableZebraOn && rowIndex % 2 === 1
|
|
555
|
+
? { backgroundColor: "$color2" as const }
|
|
556
|
+
: {};
|
|
557
|
+
|
|
558
|
+
return (
|
|
559
|
+
<Table.Row
|
|
560
|
+
key={resolveRowId(row, rowIndex, getRowId)}
|
|
561
|
+
rowLocation={rowLocationFor(rowIndex, data.length)}
|
|
562
|
+
{...(disabled ? {} : { hoverStyle: { backgroundColor: "$backgroundHover" } })}
|
|
563
|
+
{...motion}
|
|
564
|
+
{...zebraFill}
|
|
565
|
+
{...intentProps}
|
|
566
|
+
{...({
|
|
567
|
+
"data-table-zebra": tableZebraOn ? (rowIndex % 2 === 0 ? "even" : "odd") : "off",
|
|
568
|
+
} as any)}
|
|
569
|
+
{...(getRowPressProps(row, rowIndex) as any)}
|
|
570
|
+
>
|
|
571
|
+
{columns.map((col, colIndex) => (
|
|
572
|
+
<Table.Cell
|
|
573
|
+
key={col.accessorKey}
|
|
574
|
+
justifyContent={alignToFlex(col.align)}
|
|
575
|
+
cellLocation={cellLocationFor(colIndex, columns.length)}
|
|
576
|
+
data-align={col.align ?? "left"}
|
|
577
|
+
data-cell-pad={knobProps.gap.gap}
|
|
578
|
+
borderRadius={0}
|
|
579
|
+
{...pad}
|
|
580
|
+
{...gridRule(frameBorder, !isLast)}
|
|
581
|
+
>
|
|
582
|
+
{renderCellContent(col, row, rowIndex, knobProps.body, typeSize)}
|
|
583
|
+
</Table.Cell>
|
|
584
|
+
))}
|
|
585
|
+
</Table.Row>
|
|
586
|
+
);
|
|
587
|
+
})
|
|
588
|
+
)}
|
|
589
|
+
</Table.Body>
|
|
590
|
+
</Table>
|
|
578
591
|
);
|
|
579
592
|
}
|
|
580
593
|
|
|
@@ -599,7 +612,16 @@ export function SimpleTable({
|
|
|
599
612
|
// Card layout below `$sm` (layout="auto") or when pinned via layout="cards"
|
|
600
613
|
if (layout === "cards" || (layout === "auto" && sm === false)) {
|
|
601
614
|
return (
|
|
602
|
-
<View
|
|
615
|
+
<View
|
|
616
|
+
{...knobProps.containerRadius}
|
|
617
|
+
{...props}
|
|
618
|
+
testID="simple-table-cards"
|
|
619
|
+
{...({
|
|
620
|
+
"data-simple-table-frame": "true",
|
|
621
|
+
"data-border-width": String(knobProps.surface.borderWidth),
|
|
622
|
+
"data-animation": knobProps.transition ? "on" : "none",
|
|
623
|
+
} as Record<string, unknown>)}
|
|
624
|
+
>
|
|
603
625
|
<SimpleTableMobileCards
|
|
604
626
|
data={data}
|
|
605
627
|
columns={columns}
|
|
@@ -297,4 +297,124 @@ describe("SimpleTable", () => {
|
|
|
297
297
|
fireEvent.click(cards[1]);
|
|
298
298
|
expect(onRowPress).toHaveBeenCalledWith(expect.objectContaining({ name: "Item 2" }), 1);
|
|
299
299
|
});
|
|
300
|
+
|
|
301
|
+
it("owns grid rules from the borderWidth knob (LC-18) and keeps cells square", () => {
|
|
302
|
+
const columns: SimpleTableColumn[] = [
|
|
303
|
+
{ accessorKey: "name", header: "Name" },
|
|
304
|
+
{ accessorKey: "age", header: "Age" },
|
|
305
|
+
];
|
|
306
|
+
const data = [
|
|
307
|
+
{ name: "A", age: 1 },
|
|
308
|
+
{ name: "B", age: 2 },
|
|
309
|
+
];
|
|
310
|
+
|
|
311
|
+
const { container: none } = renderWithProviders(
|
|
312
|
+
<Preset overrides={{ borderWidth: "none", borderRadius: "none" }}>
|
|
313
|
+
<SimpleTableDesktop data={data} columns={columns} />
|
|
314
|
+
</Preset>,
|
|
315
|
+
);
|
|
316
|
+
expect(none.querySelector("[data-simple-table-frame]")?.getAttribute("data-border-width")).toBe(
|
|
317
|
+
"0",
|
|
318
|
+
);
|
|
319
|
+
const noneCells = none.querySelectorAll("td, [role='cell']");
|
|
320
|
+
expect(noneCells.length).toBeGreaterThan(0);
|
|
321
|
+
for (const cell of noneCells) {
|
|
322
|
+
const border = getComputedStyle(cell).borderBottomWidth;
|
|
323
|
+
expect(border === "0px" || border === "").toBe(true);
|
|
324
|
+
const radius = getComputedStyle(cell).borderRadius;
|
|
325
|
+
expect(radius === "0px" || radius === "").toBe(true);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
const { container: large } = renderWithProviders(
|
|
329
|
+
<Preset overrides={{ borderWidth: "large" }}>
|
|
330
|
+
<SimpleTableDesktop data={data} columns={columns} />
|
|
331
|
+
</Preset>,
|
|
332
|
+
);
|
|
333
|
+
expect(
|
|
334
|
+
large.querySelector("[data-simple-table-frame]")?.getAttribute("data-border-width"),
|
|
335
|
+
).toBe("2");
|
|
336
|
+
const bodyCells = large.querySelectorAll("tbody td, tbody [role='cell']");
|
|
337
|
+
const firstRowCell = bodyCells[0];
|
|
338
|
+
expect(firstRowCell).toBeTruthy();
|
|
339
|
+
expect(
|
|
340
|
+
Number.parseFloat(getComputedStyle(firstRowCell as Element).borderBottomWidth),
|
|
341
|
+
).toBeGreaterThan(0);
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
it("uses label type and the fontWeight knob, never weight 600", () => {
|
|
345
|
+
const columns: SimpleTableColumn[] = [
|
|
346
|
+
{ accessorKey: "name", header: "Name" },
|
|
347
|
+
{ accessorKey: "age", header: "Age" },
|
|
348
|
+
];
|
|
349
|
+
const { container } = renderWithProviders(
|
|
350
|
+
<Preset overrides={{ fontWeight: "regular" }}>
|
|
351
|
+
<SimpleTableDesktop data={[{ name: "Ada", age: 36 }]} columns={columns} />
|
|
352
|
+
</Preset>,
|
|
353
|
+
);
|
|
354
|
+
const texts = Array.from(container.querySelectorAll("span")).filter((node) =>
|
|
355
|
+
/Name|Ada/.test(node.textContent ?? ""),
|
|
356
|
+
);
|
|
357
|
+
expect(texts.length).toBeGreaterThan(0);
|
|
358
|
+
for (const node of texts) {
|
|
359
|
+
const weight = getComputedStyle(node).fontWeight;
|
|
360
|
+
expect(["400", "700", "normal", "bold"]).toContain(weight);
|
|
361
|
+
expect(weight).not.toBe("600");
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
|
|
365
|
+
it("drops motion when animation is none and steps cell pad with space", () => {
|
|
366
|
+
const columns: SimpleTableColumn[] = [
|
|
367
|
+
{ accessorKey: "name", header: "Name" },
|
|
368
|
+
{ accessorKey: "age", header: "Age" },
|
|
369
|
+
];
|
|
370
|
+
const data = [{ name: "Ada", age: 36 }];
|
|
371
|
+
|
|
372
|
+
const { container: still } = renderWithProviders(
|
|
373
|
+
<Preset overrides={{ animation: "none" }}>
|
|
374
|
+
<SimpleTableDesktop data={data} columns={columns} />
|
|
375
|
+
</Preset>,
|
|
376
|
+
);
|
|
377
|
+
expect(still.querySelector("[data-simple-table-frame]")?.getAttribute("data-animation")).toBe(
|
|
378
|
+
"none",
|
|
379
|
+
);
|
|
380
|
+
|
|
381
|
+
const { container: small } = renderWithProviders(
|
|
382
|
+
<Preset overrides={{ space: "small" }}>
|
|
383
|
+
<SimpleTableDesktop data={data} columns={columns} />
|
|
384
|
+
</Preset>,
|
|
385
|
+
);
|
|
386
|
+
const { container: large } = renderWithProviders(
|
|
387
|
+
<Preset overrides={{ space: "large" }}>
|
|
388
|
+
<SimpleTableDesktop data={data} columns={columns} />
|
|
389
|
+
</Preset>,
|
|
390
|
+
);
|
|
391
|
+
const smallPad = small.querySelector("[data-cell-pad]")?.getAttribute("data-cell-pad");
|
|
392
|
+
const largePad = large.querySelector("[data-cell-pad]")?.getAttribute("data-cell-pad");
|
|
393
|
+
expect(smallPad).toBeTruthy();
|
|
394
|
+
expect(largePad).toBeTruthy();
|
|
395
|
+
expect(smallPad).not.toBe(largePad);
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
it("disabled rows stay visible, inert, and visually distinct (LC-40)", () => {
|
|
399
|
+
const columns: SimpleTableColumn[] = [
|
|
400
|
+
{ accessorKey: "name", header: "Name" },
|
|
401
|
+
{ accessorKey: "city", header: "City" },
|
|
402
|
+
];
|
|
403
|
+
const onRowPress = vi.fn();
|
|
404
|
+
const { container } = renderWithProviders(
|
|
405
|
+
<SimpleTableDesktop
|
|
406
|
+
disabled
|
|
407
|
+
data={[{ name: "Ada", city: "Portland" }]}
|
|
408
|
+
columns={columns}
|
|
409
|
+
onRowPress={onRowPress}
|
|
410
|
+
/>,
|
|
411
|
+
);
|
|
412
|
+
const frame = container.querySelector("[data-simple-table-frame]");
|
|
413
|
+
expect(frame?.getAttribute("aria-disabled")).toBe("true");
|
|
414
|
+
expect(container.textContent).toContain("Ada");
|
|
415
|
+
const row = container.querySelector('[data-row-press="true"]');
|
|
416
|
+
expect(row).toBeNull();
|
|
417
|
+
fireEvent.click(container.querySelector("tbody tr, [role='row']") as Element);
|
|
418
|
+
expect(onRowPress).not.toHaveBeenCalled();
|
|
419
|
+
});
|
|
300
420
|
});
|
|
@@ -78,6 +78,8 @@ export interface TableInputProps<TData extends DataTableData = DataTableData> {
|
|
|
78
78
|
* is the default — Frappe's grid is a dense in-list editor, not a page table.
|
|
79
79
|
*/
|
|
80
80
|
compact?: boolean;
|
|
81
|
+
/** Leading grab handle + keyboard reorder via kanbanDnd (web implements). */
|
|
82
|
+
enableReorder?: boolean;
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
export function TableInput<TData extends DataTableData = DataTableData>({
|
|
@@ -262,14 +264,14 @@ function TableInputInner<TData extends DataTableData>({
|
|
|
262
264
|
<XStack backgroundColor="$color2" {...hairline.bottom} {...cellPad}>
|
|
263
265
|
{showRowNumbers && (
|
|
264
266
|
<View width={indexWidth} paddingHorizontal="$1">
|
|
265
|
-
<Text fontWeight="
|
|
267
|
+
<Text fontWeight="400" color="$color10" fontSize={knobProps.label.fontSize}>
|
|
266
268
|
#
|
|
267
269
|
</Text>
|
|
268
270
|
</View>
|
|
269
271
|
)}
|
|
270
272
|
{columns.map((col, index) => (
|
|
271
273
|
<View key={columnIds[index]} flex={1} paddingHorizontal="$1">
|
|
272
|
-
<Text fontWeight="
|
|
274
|
+
<Text fontWeight="400" color="$color12" fontSize={knobProps.label.fontSize}>
|
|
273
275
|
{typeof col.header === "string" ? col.header : columnIds[index]}
|
|
274
276
|
</Text>
|
|
275
277
|
</View>
|
|
@@ -367,7 +369,7 @@ function TableInputInner<TData extends DataTableData>({
|
|
|
367
369
|
return (
|
|
368
370
|
<YStack
|
|
369
371
|
{...knobProps.surface}
|
|
370
|
-
{...knobProps.
|
|
372
|
+
{...knobProps.borderRadiusNested}
|
|
371
373
|
elevation={knobProps.elevation}
|
|
372
374
|
overflow="hidden"
|
|
373
375
|
accessibilityLabel={ariaLabel}
|