@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
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChildTable — FieldLayout wrapper around TableInput (Frappe child-table field).
|
|
3
|
+
*
|
|
4
|
+
* Stories cover the forms field contract D/R/E/Q/S/C: disabled, read-only,
|
|
5
|
+
* error, required, skeleton, compact — plus standalone onChange and form bind.
|
|
6
|
+
* Table chrome and cell editors belong to TableInput / DataTableCell.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
10
|
+
import { fn } from "storybook/test";
|
|
11
|
+
import { useForm } from "@tanstack/react-form";
|
|
12
|
+
import React from "react";
|
|
13
|
+
import { Text, View, YStack } from "tamagui";
|
|
14
|
+
import type { DataTableColumn, DataTableData } from "../../types";
|
|
15
|
+
import { ChildTable } from "./index";
|
|
16
|
+
|
|
17
|
+
interface LineItem extends DataTableData {
|
|
18
|
+
id: string;
|
|
19
|
+
item: string;
|
|
20
|
+
qty: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const initialRows: LineItem[] = [
|
|
24
|
+
{ id: "row-1", item: "Steel bracket", qty: 12 },
|
|
25
|
+
{ id: "row-2", item: "M6 bolts (100pk)", qty: 3 },
|
|
26
|
+
];
|
|
27
|
+
|
|
28
|
+
const columns: DataTableColumn<LineItem>[] = [
|
|
29
|
+
{ accessorKey: "item", header: "Item", field: "input" },
|
|
30
|
+
{ accessorKey: "qty", header: "Qty", field: "stepper", fieldProps: { min: 0 } },
|
|
31
|
+
];
|
|
32
|
+
|
|
33
|
+
const meta: Meta<typeof ChildTable> = {
|
|
34
|
+
title: "Table/ChildTable",
|
|
35
|
+
component: ChildTable,
|
|
36
|
+
parameters: {
|
|
37
|
+
status: { type: "stable" },
|
|
38
|
+
layout: "fullscreen",
|
|
39
|
+
},
|
|
40
|
+
args: {
|
|
41
|
+
onChange: fn(),
|
|
42
|
+
columns,
|
|
43
|
+
label: "Line items",
|
|
44
|
+
helperText: "Child table field — every cell is a form field.",
|
|
45
|
+
},
|
|
46
|
+
argTypes: {
|
|
47
|
+
disabled: { control: "boolean" },
|
|
48
|
+
readOnly: { control: "boolean" },
|
|
49
|
+
skeleton: { control: "boolean" },
|
|
50
|
+
compact: { control: "boolean" },
|
|
51
|
+
required: { control: "boolean" },
|
|
52
|
+
},
|
|
53
|
+
decorators: [
|
|
54
|
+
(Story) => (
|
|
55
|
+
<View flex={1} padding="$4" width="100%">
|
|
56
|
+
<Story />
|
|
57
|
+
</View>
|
|
58
|
+
),
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export default meta;
|
|
63
|
+
type Story = StoryObj<typeof ChildTable>;
|
|
64
|
+
|
|
65
|
+
interface HarnessProps {
|
|
66
|
+
rows?: LineItem[];
|
|
67
|
+
onChange?: (rows: LineItem[]) => void;
|
|
68
|
+
[key: string]: unknown;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const ControlledChildTable = ({ rows = initialRows, onChange, ...rest }: HarnessProps) => {
|
|
72
|
+
const [data, setData] = React.useState<LineItem[]>(rows);
|
|
73
|
+
return (
|
|
74
|
+
<YStack gap="$3">
|
|
75
|
+
<ChildTable<LineItem>
|
|
76
|
+
value={data}
|
|
77
|
+
columns={columns}
|
|
78
|
+
onChange={(next) => {
|
|
79
|
+
setData(next);
|
|
80
|
+
onChange?.(next);
|
|
81
|
+
}}
|
|
82
|
+
{...rest}
|
|
83
|
+
/>
|
|
84
|
+
<Text testID="childtable-data" fontSize="$2" color="$color10" fontFamily="$mono">
|
|
85
|
+
rows: {data.length}
|
|
86
|
+
</Text>
|
|
87
|
+
</YStack>
|
|
88
|
+
);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export const Default: Story = {
|
|
92
|
+
name: "Main",
|
|
93
|
+
render: (args) => <ControlledChildTable {...args} />,
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export const SkeletonLoading: Story = {
|
|
97
|
+
args: { skeleton: true },
|
|
98
|
+
render: (args) => <ControlledChildTable {...args} rows={[]} />,
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
export const Compact: Story = {
|
|
102
|
+
args: { compact: true },
|
|
103
|
+
render: (args) => <ControlledChildTable {...args} />,
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export const Disabled: Story = {
|
|
107
|
+
args: { disabled: true },
|
|
108
|
+
render: (args) => <ControlledChildTable {...args} />,
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export const ReadOnly: Story = {
|
|
112
|
+
args: { readOnly: true },
|
|
113
|
+
render: (args) => <ControlledChildTable {...args} />,
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export const ErrorState: Story = {
|
|
117
|
+
args: { error: "At least one line item is required", required: true },
|
|
118
|
+
render: (args) => <ControlledChildTable {...args} rows={[]} />,
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const InsideFormStory = () => {
|
|
122
|
+
const form = useForm({
|
|
123
|
+
defaultValues: { lineItems: initialRows },
|
|
124
|
+
});
|
|
125
|
+
return (
|
|
126
|
+
<YStack gap="$4" maxWidth={900}>
|
|
127
|
+
<ChildTable<LineItem>
|
|
128
|
+
form={form as any}
|
|
129
|
+
name="lineItems"
|
|
130
|
+
columns={columns}
|
|
131
|
+
label="Line items"
|
|
132
|
+
required
|
|
133
|
+
helperText="Rows bind through the form field; validators surface in the error slot."
|
|
134
|
+
/>
|
|
135
|
+
<Text testID="form-value" fontSize="$2" color="$color10" fontFamily="$mono">
|
|
136
|
+
form.lineItems: {JSON.stringify(form.state.values.lineItems?.map((row) => row.item))}
|
|
137
|
+
</Text>
|
|
138
|
+
</YStack>
|
|
139
|
+
);
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
export const InsideForm: Story = {
|
|
143
|
+
render: () => <InsideFormStory />,
|
|
144
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { fireEvent, screen } from "@testing-library/react";
|
|
3
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
4
|
+
import { describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { ChildTable } from "./index";
|
|
6
|
+
import type { DataTableColumn, DataTableData } from "../../types";
|
|
7
|
+
|
|
8
|
+
interface TaskRow extends DataTableData {
|
|
9
|
+
id: string;
|
|
10
|
+
task: string;
|
|
11
|
+
idx: number;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const columns: DataTableColumn<TaskRow>[] = [
|
|
15
|
+
{ accessorKey: "task", header: "Task", field: "input" },
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
const initial: TaskRow[] = [
|
|
19
|
+
{ id: "a", task: "Provision runner", idx: 1 },
|
|
20
|
+
{ id: "b", task: "Rotate signing key", idx: 2 },
|
|
21
|
+
{ id: "c", task: "Update mirrors", idx: 3 },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
function Harness({ onChange }: { onChange: (rows: TaskRow[]) => void }) {
|
|
25
|
+
const [value, setValue] = React.useState(initial);
|
|
26
|
+
return (
|
|
27
|
+
<ChildTable<TaskRow>
|
|
28
|
+
value={value}
|
|
29
|
+
columns={columns}
|
|
30
|
+
onChange={(rows) => {
|
|
31
|
+
setValue(rows);
|
|
32
|
+
onChange(rows);
|
|
33
|
+
}}
|
|
34
|
+
/>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
describe("ChildTable idx reorder (MPO-22)", () => {
|
|
39
|
+
it("keyboard-reorders a row and writes idx 1..n on the change payload", () => {
|
|
40
|
+
const onChange = vi.fn();
|
|
41
|
+
renderWithProviders(<Harness onChange={onChange} />);
|
|
42
|
+
|
|
43
|
+
const handle = () => screen.getByRole("button", { name: /Rotate signing key/i });
|
|
44
|
+
handle().focus();
|
|
45
|
+
fireEvent.keyDown(handle(), { key: " " });
|
|
46
|
+
fireEvent.keyDown(handle(), { key: "ArrowDown" });
|
|
47
|
+
fireEvent.keyDown(handle(), { key: " " });
|
|
48
|
+
|
|
49
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
50
|
+
const next = onChange.mock.calls[0][0] as TaskRow[];
|
|
51
|
+
expect(next.map((r) => ({ id: r.id, idx: r.idx, task: r.task }))).toEqual([
|
|
52
|
+
{ id: "a", idx: 1, task: "Provision runner" },
|
|
53
|
+
{ id: "c", idx: 2, task: "Update mirrors" },
|
|
54
|
+
{ id: "b", idx: 3, task: "Rotate signing key" },
|
|
55
|
+
]);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("hides reorder handles when readOnly", () => {
|
|
59
|
+
renderWithProviders(
|
|
60
|
+
<ChildTable<TaskRow> value={initial} columns={columns} onChange={vi.fn()} readOnly />,
|
|
61
|
+
);
|
|
62
|
+
expect(screen.queryByRole("button", { name: /Reorder/i })).toBeNull();
|
|
63
|
+
expect(screen.queryByRole("button", { name: /Rotate signing key/i })).toBeNull();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChildTable field-contract tests (D/R/E/Q/S/C).
|
|
3
|
+
*
|
|
4
|
+
* ChildTable is the FieldLayout wrapper around TableInput. Label / helper /
|
|
5
|
+
* error / required / form-bind coverage lives in TableInput's spec; this file
|
|
6
|
+
* locks the remaining field-contract knobs the edge-cases ledger called a GAP:
|
|
7
|
+
* skeleton, compact, disabled, and readOnly.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import React from "react";
|
|
11
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
12
|
+
import { Form, useForm } from "@multiplatform.one/forms";
|
|
13
|
+
|
|
14
|
+
vi.mock("@multiplatform.one/router", async (importOriginal) => {
|
|
15
|
+
const actual = await importOriginal<Record<string, unknown>>();
|
|
16
|
+
return { ...actual, useUrlState: () => [{}, () => {}] };
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
import { screen } from "@testing-library/react";
|
|
20
|
+
import { describe, expect, it, vi } from "vitest";
|
|
21
|
+
import type { DataTableColumn, DataTableData } from "../../types";
|
|
22
|
+
import { ChildTable } from "./index";
|
|
23
|
+
|
|
24
|
+
interface Row extends DataTableData {
|
|
25
|
+
id: string;
|
|
26
|
+
item: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const rows: Row[] = [
|
|
30
|
+
{ id: "row-a", item: "Bracket" },
|
|
31
|
+
{ id: "row-b", item: "Bolts" },
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const columns: DataTableColumn<Row>[] = [{ accessorKey: "item", header: "Item", field: "input" }];
|
|
35
|
+
|
|
36
|
+
describe("ChildTable — D/R/E/Q/S/C", () => {
|
|
37
|
+
it("skeleton branch: TableInput placeholders, no add/delete, aria-busy", () => {
|
|
38
|
+
const { container } = renderWithProviders(
|
|
39
|
+
<ChildTable<Row>
|
|
40
|
+
label="Line items"
|
|
41
|
+
skeleton
|
|
42
|
+
value={rows}
|
|
43
|
+
onChange={vi.fn()}
|
|
44
|
+
columns={columns}
|
|
45
|
+
/>,
|
|
46
|
+
);
|
|
47
|
+
expect(container.querySelectorAll("input").length).toBe(0);
|
|
48
|
+
expect(screen.queryByRole("button", { name: "Add Row" })).toBeNull();
|
|
49
|
+
expect(screen.queryByRole("button", { name: /Delete row/ })).toBeNull();
|
|
50
|
+
expect(container.querySelector('[aria-busy="true"]')).toBeTruthy();
|
|
51
|
+
expect(screen.getByText("Line items")).toBeTruthy();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("compact forwards into the field (useFormField + TableInput)", () => {
|
|
55
|
+
renderWithProviders(
|
|
56
|
+
<ChildTable<Row>
|
|
57
|
+
label="Line items"
|
|
58
|
+
compact
|
|
59
|
+
value={rows}
|
|
60
|
+
onChange={vi.fn()}
|
|
61
|
+
columns={columns}
|
|
62
|
+
/>,
|
|
63
|
+
);
|
|
64
|
+
expect(screen.getByRole("group", { name: /Line items/ })).toBeTruthy();
|
|
65
|
+
expect(screen.getByRole("button", { name: "Add Row" })).toBeTruthy();
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("disabled hides add/delete and does not expose editors", () => {
|
|
69
|
+
renderWithProviders(
|
|
70
|
+
<ChildTable<Row>
|
|
71
|
+
label="Line items"
|
|
72
|
+
disabled
|
|
73
|
+
value={rows}
|
|
74
|
+
onChange={vi.fn()}
|
|
75
|
+
columns={columns}
|
|
76
|
+
/>,
|
|
77
|
+
);
|
|
78
|
+
expect(screen.queryByRole("button", { name: "Add Row" })).toBeNull();
|
|
79
|
+
expect(screen.queryByRole("button", { name: /Delete row/ })).toBeNull();
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("readOnly hides add/delete", () => {
|
|
83
|
+
renderWithProviders(
|
|
84
|
+
<ChildTable<Row>
|
|
85
|
+
label="Line items"
|
|
86
|
+
readOnly
|
|
87
|
+
value={rows}
|
|
88
|
+
onChange={vi.fn()}
|
|
89
|
+
columns={columns}
|
|
90
|
+
/>,
|
|
91
|
+
);
|
|
92
|
+
expect(screen.queryByRole("button", { name: "Add Row" })).toBeNull();
|
|
93
|
+
expect(screen.queryByRole("button", { name: /Delete row/ })).toBeNull();
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it("required + form context still associates the label with the named group", () => {
|
|
97
|
+
function Harness() {
|
|
98
|
+
const form = useForm({ defaultValues: { items: rows } });
|
|
99
|
+
return (
|
|
100
|
+
<Form form={form as any}>
|
|
101
|
+
<ChildTable<Row> name="items" label="Line items" required columns={columns} />
|
|
102
|
+
</Form>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
renderWithProviders(<Harness />);
|
|
106
|
+
expect(screen.getByRole("group", { name: /Line items/ })).toBeTruthy();
|
|
107
|
+
});
|
|
108
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { useCallback, type ReactNode } from "react";
|
|
2
|
+
import { renumberIdx } from "@multiplatform.one/components";
|
|
2
3
|
import { FieldLayout, useFormField, type AnyFormApi } from "@multiplatform.one/forms";
|
|
3
4
|
import { useProps, YStack } from "tamagui";
|
|
4
5
|
import { TableInput } from "../TableInput";
|
|
@@ -26,6 +27,11 @@ export type ChildTableProps<TRow extends DataTableData = DataTableData> = {
|
|
|
26
27
|
helperText?: string;
|
|
27
28
|
required?: boolean;
|
|
28
29
|
id?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Leading grab handle + keyboard reorder. Default on unless the field is
|
|
32
|
+
* read-only or disabled. A committed drop rewrites `idx` 1..n (MPO-22).
|
|
33
|
+
*/
|
|
34
|
+
enableReorder?: boolean;
|
|
29
35
|
};
|
|
30
36
|
|
|
31
37
|
/**
|
|
@@ -77,11 +83,23 @@ export function ChildTable<TRow extends DataTableData = DataTableData>(
|
|
|
77
83
|
helperText,
|
|
78
84
|
required,
|
|
79
85
|
id: idProp,
|
|
86
|
+
enableReorder: enableReorderProp,
|
|
80
87
|
} = useProps(props);
|
|
81
88
|
|
|
82
89
|
const { knobProps, id, resolvedForm } = useFormField({ form, id: idProp, compact });
|
|
83
90
|
const formBound = !!resolvedForm && !!name;
|
|
84
91
|
const hasLayout = label || error || helperText || required;
|
|
92
|
+
const enableReorder = enableReorderProp ?? !(readOnly || disabled);
|
|
93
|
+
|
|
94
|
+
const emitChange = useCallback(
|
|
95
|
+
(rows: TRow[]) => {
|
|
96
|
+
const next = rows.some((row) => typeof (row as { idx?: number }).idx === "number")
|
|
97
|
+
? renumberIdx(rows)
|
|
98
|
+
: rows;
|
|
99
|
+
onChange?.(next);
|
|
100
|
+
},
|
|
101
|
+
[onChange],
|
|
102
|
+
);
|
|
85
103
|
|
|
86
104
|
// Generic JSX (`<TableInput<TRow> …/>`) breaks one-dev's source annotation
|
|
87
105
|
// transform; instantiate the type argument outside JSX instead.
|
|
@@ -95,7 +113,7 @@ export function ChildTable<TRow extends DataTableData = DataTableData>(
|
|
|
95
113
|
required={required}
|
|
96
114
|
skeleton={skeleton}
|
|
97
115
|
data={value ?? []}
|
|
98
|
-
onChange={
|
|
116
|
+
onChange={emitChange}
|
|
99
117
|
columns={columns ?? []}
|
|
100
118
|
defaultRow={defaultRow}
|
|
101
119
|
readOnly={readOnly || disabled}
|
|
@@ -105,6 +123,7 @@ export function ChildTable<TRow extends DataTableData = DataTableData>(
|
|
|
105
123
|
showAddRow={showAddRow && !readOnly && !disabled}
|
|
106
124
|
showDeleteRow={showDeleteRow && !readOnly && !disabled}
|
|
107
125
|
compact={compact}
|
|
126
|
+
enableReorder={enableReorder && !readOnly && !disabled}
|
|
108
127
|
/>
|
|
109
128
|
);
|
|
110
129
|
|
|
@@ -16,6 +16,7 @@ import { Tooltip } from "@multiplatform.one/components";
|
|
|
16
16
|
import { Popover, Text, View, XStack, YStack } from "tamagui";
|
|
17
17
|
import { t } from "../../shared/t";
|
|
18
18
|
import type { FilterOperator } from "../../types";
|
|
19
|
+
import { iconSizeForToken } from "../../utils/chromeIcons";
|
|
19
20
|
import { operatorNeedsNoValue } from "../../utils/filterFields";
|
|
20
21
|
import { FilterOperatorValueEditor } from "../FilterOperatorValueEditor";
|
|
21
22
|
|
|
@@ -54,6 +55,7 @@ export function ColumnHeaderFilter({
|
|
|
54
55
|
isFiltered,
|
|
55
56
|
}: ColumnHeaderFilterProps) {
|
|
56
57
|
const { knobProps } = useResolvedKnobs();
|
|
58
|
+
const iconPx = iconSizeForToken(String(knobProps.sizeToken));
|
|
57
59
|
const [open, setOpen] = useState(false);
|
|
58
60
|
const [operator, setOperator] = useState<FilterOperator>("contains");
|
|
59
61
|
const [value, setValue] = useState<string>("");
|
|
@@ -116,7 +118,7 @@ export function ColumnHeaderFilter({
|
|
|
116
118
|
hoverStyle={{ backgroundColor: "$color4" }}
|
|
117
119
|
>
|
|
118
120
|
<FunnelIcon
|
|
119
|
-
size={
|
|
121
|
+
size={iconPx}
|
|
120
122
|
color={isFiltered ? "var(--accentColor)" : "var(--color10)"}
|
|
121
123
|
weight={isFiltered ? "fill" : "regular"}
|
|
122
124
|
/>
|
|
@@ -126,24 +128,17 @@ export function ColumnHeaderFilter({
|
|
|
126
128
|
</Tooltip>
|
|
127
129
|
|
|
128
130
|
<Popover.Content
|
|
129
|
-
{...knobProps.
|
|
130
|
-
borderWidth={1}
|
|
131
|
-
borderColor="$color6"
|
|
132
|
-
backgroundColor="$background"
|
|
131
|
+
{...knobProps.elevatedSurface}
|
|
133
132
|
{...knobProps.panelPadding}
|
|
134
133
|
minWidth={240}
|
|
135
134
|
transition={knobProps.transition}
|
|
136
135
|
enterStyle={{ y: -5, opacity: 0 }}
|
|
137
136
|
exitStyle={{ y: -5, opacity: 0 }}
|
|
138
|
-
// Knob elevation channel, not `elevate`: Popover.Content has no such
|
|
139
|
-
// variant in tamagui 2.0, so the bare boolean leaked to the DOM
|
|
140
|
-
// (LC-46 class) and painted no shadow.
|
|
141
|
-
elevation={knobProps.elevation}
|
|
142
137
|
>
|
|
143
|
-
<Popover.Arrow
|
|
138
|
+
<Popover.Arrow borderColor="$borderColor" backgroundColor="$color1" />
|
|
144
139
|
|
|
145
140
|
<YStack {...knobProps.gap}>
|
|
146
|
-
<Text
|
|
141
|
+
<Text {...knobProps.label} fontWeight="400" color="$color11">
|
|
147
142
|
{t("Filter: {{column}}", { column: columnLabel })}
|
|
148
143
|
</Text>
|
|
149
144
|
|
|
@@ -158,13 +153,13 @@ export function ColumnHeaderFilter({
|
|
|
158
153
|
/>
|
|
159
154
|
|
|
160
155
|
{/* Actions */}
|
|
161
|
-
<XStack gap
|
|
156
|
+
<XStack {...knobProps.gap} justifyContent="flex-end">
|
|
162
157
|
{isFiltered && (
|
|
163
|
-
<Button size=
|
|
158
|
+
<Button size={knobProps.sizeToken} variant="outlined" onPress={handleClear}>
|
|
164
159
|
{t("Clear")}
|
|
165
160
|
</Button>
|
|
166
161
|
)}
|
|
167
|
-
<Button size=
|
|
162
|
+
<Button size={knobProps.sizeToken} onPress={handleApply}>
|
|
168
163
|
{t("Apply")}
|
|
169
164
|
</Button>
|
|
170
165
|
</XStack>
|
|
@@ -20,6 +20,7 @@ import { useTranslation } from "react-i18next";
|
|
|
20
20
|
import type { DataTableColumnType, FacetedFilterOption } from "../../types";
|
|
21
21
|
import { withInterp } from "../../utils/withInterp";
|
|
22
22
|
import { DataTableFilters } from "../DataTableFilters";
|
|
23
|
+
import { dataTableChrome } from "./dataTableChrome";
|
|
23
24
|
|
|
24
25
|
export interface DataTableCardControlsProps {
|
|
25
26
|
/** TanStack table instance (from useDataTable). */
|
|
@@ -52,7 +53,8 @@ export function DataTableCardControls({
|
|
|
52
53
|
disabled = false,
|
|
53
54
|
}: DataTableCardControlsProps) {
|
|
54
55
|
const { t } = useTranslation();
|
|
55
|
-
const { knobProps, disabledState } = useResolvedKnobs({ compact });
|
|
56
|
+
const { knobProps, disabledState } = useResolvedKnobs({ component: "DataTable", compact });
|
|
57
|
+
const chrome = dataTableChrome(String(knobProps.sizeToken));
|
|
56
58
|
const [sortMenuOpen, setSortMenuOpen] = useState(false);
|
|
57
59
|
|
|
58
60
|
const sortableColumns = enableSorting
|
|
@@ -88,7 +90,7 @@ export function DataTableCardControls({
|
|
|
88
90
|
<Button
|
|
89
91
|
size={knobProps.sizeToken}
|
|
90
92
|
variant="outlined"
|
|
91
|
-
icon={<CaretUpDownIcon size={
|
|
93
|
+
icon={<CaretUpDownIcon size={chrome.iconPx} />}
|
|
92
94
|
aria-label={t("Sort rows")}
|
|
93
95
|
disabled={disabled}
|
|
94
96
|
>
|
|
@@ -105,11 +107,11 @@ export function DataTableCardControls({
|
|
|
105
107
|
closeOnSelect={false}
|
|
106
108
|
icon={
|
|
107
109
|
sorted === "asc" ? (
|
|
108
|
-
<CaretDownIcon size={
|
|
110
|
+
<CaretDownIcon size={chrome.iconPx} />
|
|
109
111
|
) : sorted === "desc" ? (
|
|
110
|
-
<CaretDownIcon size={
|
|
112
|
+
<CaretDownIcon size={chrome.iconPx} style={{ transform: "rotate(180deg)" }} />
|
|
111
113
|
) : (
|
|
112
|
-
<CaretUpDownIcon size={
|
|
114
|
+
<CaretUpDownIcon size={chrome.iconPx} />
|
|
113
115
|
)
|
|
114
116
|
}
|
|
115
117
|
aria-label={withInterp(
|
|
@@ -132,17 +134,18 @@ export function DataTableCardControls({
|
|
|
132
134
|
</DropdownMenu.Content>
|
|
133
135
|
</DropdownMenu>
|
|
134
136
|
)}
|
|
135
|
-
{enableFiltering &&
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
137
|
+
{enableFiltering &&
|
|
138
|
+
availableColumns.length > 0 && (
|
|
139
|
+
// DataTableFilters (chrome) has no disabled API — the wrapper is the
|
|
140
|
+
// LC-40 carrier and interaction gate for the disabled table.
|
|
141
|
+
<View
|
|
142
|
+
{...(disabled
|
|
143
|
+
? { ...disabledState.chromeKnobProps, pointerEvents: "none" as const }
|
|
144
|
+
: {})}
|
|
145
|
+
>
|
|
146
|
+
<DataTableFilters compact availableColumns={availableColumns} />
|
|
147
|
+
</View>
|
|
148
|
+
)}
|
|
146
149
|
</XStack>
|
|
147
150
|
);
|
|
148
151
|
}
|
|
@@ -24,6 +24,7 @@ import { View, XStack, YStack } from "tamagui";
|
|
|
24
24
|
import type { DataTableColumn } from "../../types";
|
|
25
25
|
import { withInterp } from "../../utils/withInterp";
|
|
26
26
|
import { partitionDocumentListCells } from "./documentListSlots";
|
|
27
|
+
import { dataTableChrome, rowIntentProps } from "./dataTableChrome";
|
|
27
28
|
import { tableRowStateProps } from "./rowStateChrome";
|
|
28
29
|
|
|
29
30
|
/** Subject cell: explicit title role, else first non-action / non-`_` column. */
|
|
@@ -68,7 +69,8 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
|
|
|
68
69
|
queryInFlight = false,
|
|
69
70
|
}: DataTableDocumentListProps<TData>) {
|
|
70
71
|
const { t } = useTranslation();
|
|
71
|
-
const { knobProps } = useResolvedKnobs();
|
|
72
|
+
const { knobProps } = useResolvedKnobs({ component: "DataTable", compact });
|
|
73
|
+
const chrome = dataTableChrome(String(knobProps.sizeToken));
|
|
72
74
|
const tableZebraOn = knobProps.tableZebra === "on";
|
|
73
75
|
const rowPad = knobProps.panelPadding.padding;
|
|
74
76
|
|
|
@@ -79,7 +81,7 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
|
|
|
79
81
|
const titleCell = pickDocumentListTitleCell(visibleCells);
|
|
80
82
|
const { indicators, metas, actions } = partitionDocumentListCells(visibleCells, titleCell);
|
|
81
83
|
const position = getGroupPosition(index, tableRows.length);
|
|
82
|
-
const corners = stackRadiusProps(position, knobProps.
|
|
84
|
+
const corners = stackRadiusProps(position, knobProps.borderRadiusOuter.borderRadius);
|
|
83
85
|
const selected = Boolean(enableRowSelection && row.getIsSelected?.());
|
|
84
86
|
const rowState = tableRowStateProps({
|
|
85
87
|
selected,
|
|
@@ -96,7 +98,7 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
|
|
|
96
98
|
gap="$3"
|
|
97
99
|
paddingHorizontal={rowPad}
|
|
98
100
|
paddingVertical="$2"
|
|
99
|
-
minHeight={
|
|
101
|
+
minHeight={chrome.rowPx}
|
|
100
102
|
overflow="hidden"
|
|
101
103
|
display="flex"
|
|
102
104
|
flexDirection="row"
|
|
@@ -110,6 +112,7 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
|
|
|
110
112
|
...corners,
|
|
111
113
|
}}
|
|
112
114
|
{...(getRowPressProps ? (getRowPressProps(row, index, "row") as any) : {})}
|
|
115
|
+
{...(rowIntentProps(rowData) as any)}
|
|
113
116
|
>
|
|
114
117
|
{enableRowSelection && (
|
|
115
118
|
<Checkbox
|
|
@@ -188,7 +191,7 @@ export function DataTableDocumentList<TData extends Record<string, any>>({
|
|
|
188
191
|
disabled,
|
|
189
192
|
enableRowSelection,
|
|
190
193
|
getRowPressProps,
|
|
191
|
-
knobProps.
|
|
194
|
+
knobProps.borderRadiusOuter.borderRadius,
|
|
192
195
|
renderCellContent,
|
|
193
196
|
rowPad,
|
|
194
197
|
selectRowLabel,
|
|
@@ -26,6 +26,7 @@ import { useTranslation } from "react-i18next";
|
|
|
26
26
|
import { TableCellContext } from "@multiplatform.one/table-primitives";
|
|
27
27
|
import type { DataTableColumn } from "../../types";
|
|
28
28
|
import { withInterp } from "../../utils/withInterp";
|
|
29
|
+
import { rowIntentProps } from "./dataTableChrome";
|
|
29
30
|
|
|
30
31
|
/**
|
|
31
32
|
* Resolve the human label for a column: `meta.label` → string header →
|
|
@@ -94,7 +95,7 @@ export function DataTableMobileCards<TData extends Record<string, any>>({
|
|
|
94
95
|
queryInFlight = false,
|
|
95
96
|
}: DataTableMobileCardsProps<TData>) {
|
|
96
97
|
const { t } = useTranslation();
|
|
97
|
-
const { knobProps } = useResolvedKnobs();
|
|
98
|
+
const { knobProps } = useResolvedKnobs({ component: "DataTable", compact });
|
|
98
99
|
const tableZebraOn = knobProps.tableZebra === "on";
|
|
99
100
|
|
|
100
101
|
const renderMobileCard = useCallback(
|
|
@@ -117,6 +118,7 @@ export function DataTableMobileCards<TData extends Record<string, any>>({
|
|
|
117
118
|
"data-table-zebra": tableZebraOn ? (index % 2 === 0 ? "even" : "odd") : "off",
|
|
118
119
|
} as any)}
|
|
119
120
|
{...(getRowPressProps ? (getRowPressProps(row, index, "card") as any) : {})}
|
|
121
|
+
{...(rowIntentProps(rowData) as any)}
|
|
120
122
|
>
|
|
121
123
|
{/* Card header: selection + primary-column title + row number + delete */}
|
|
122
124
|
<XStack
|