@multiplatform.one/table 7.4.0 → 7.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/ChildTable/index.cjs +12 -3
- package/dist/cjs/components/ChildTable/index.native.js +14 -3
- package/dist/cjs/components/ChildTable/index.native.js.map +1 -1
- package/dist/cjs/components/ColumnHeaderFilter/index.cjs +11 -13
- package/dist/cjs/components/ColumnHeaderFilter/index.native.js +11 -16
- package/dist/cjs/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableCardControls.cjs +7 -4
- package/dist/cjs/components/DataTable/DataTableCardControls.native.js +7 -4
- package/dist/cjs/components/DataTable/DataTableCardControls.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableDocumentList.cjs +10 -4
- package/dist/cjs/components/DataTable/DataTableDocumentList.native.js +10 -4
- package/dist/cjs/components/DataTable/DataTableDocumentList.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableMobileCards.cjs +6 -1
- package/dist/cjs/components/DataTable/DataTableMobileCards.native.js +6 -1
- package/dist/cjs/components/DataTable/DataTableMobileCards.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableRoot.cjs +55 -42
- package/dist/cjs/components/DataTable/DataTableRoot.native.js +55 -42
- package/dist/cjs/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/cjs/components/DataTable/DataTableVirtualized.cjs +5 -2
- package/dist/cjs/components/DataTable/DataTableVirtualized.native.js +5 -2
- package/dist/cjs/components/DataTable/DataTableVirtualized.native.js.map +1 -1
- package/dist/cjs/components/DataTable/dataTableChrome.cjs +59 -0
- package/dist/cjs/components/DataTable/dataTableChrome.native.js +62 -0
- package/dist/cjs/components/DataTable/dataTableChrome.native.js.map +1 -0
- package/dist/cjs/components/DataTable/index.native.js +34 -20
- package/dist/cjs/components/DataTable/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableBulkActions/index.cjs +6 -4
- package/dist/cjs/components/DataTableBulkActions/index.native.js +6 -4
- package/dist/cjs/components/DataTableBulkActions/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableCell/CellModalEditor.cjs +9 -31
- package/dist/cjs/components/DataTableCell/CellModalEditor.native.js +2 -5
- package/dist/cjs/components/DataTableCell/CellModalEditor.native.js.map +1 -1
- package/dist/cjs/components/DataTableCell/CellOptionsEditor.cjs +0 -1
- package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js +0 -1
- package/dist/cjs/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
- package/dist/cjs/components/DataTableColumnPinning/index.cjs +7 -4
- package/dist/cjs/components/DataTableColumnPinning/index.native.js +7 -4
- package/dist/cjs/components/DataTableColumnPinning/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableDateFilter/index.cjs +24 -22
- package/dist/cjs/components/DataTableDateFilter/index.native.js +24 -22
- package/dist/cjs/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableExport/index.cjs +42 -28
- package/dist/cjs/components/DataTableExport/index.native.js +42 -28
- package/dist/cjs/components/DataTableExport/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableFacetMenu/index.cjs +10 -4
- package/dist/cjs/components/DataTableFacetMenu/index.native.js +10 -4
- package/dist/cjs/components/DataTableFacetMenu/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableFilters/index.cjs +3 -3
- package/dist/cjs/components/DataTableFilters/index.native.js +3 -3
- package/dist/cjs/components/DataTableFilters/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableGrouping/index.cjs +46 -41
- package/dist/cjs/components/DataTableGrouping/index.native.js +46 -41
- package/dist/cjs/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/cjs/components/DataTablePagination/index.cjs +4 -2
- package/dist/cjs/components/DataTablePagination/index.native.js +4 -2
- package/dist/cjs/components/DataTablePagination/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableSearch/index.cjs +3 -3
- package/dist/cjs/components/DataTableSearch/index.native.js +3 -3
- package/dist/cjs/components/DataTableToolbar/index.cjs +19 -13
- package/dist/cjs/components/DataTableToolbar/index.native.js +19 -15
- package/dist/cjs/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/cjs/components/DataTableViewOptions/index.cjs +36 -35
- package/dist/cjs/components/DataTableViewOptions/index.native.js +36 -35
- package/dist/cjs/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/cjs/components/KnobDialog.cjs +1 -3
- package/dist/cjs/components/KnobDialog.native.js +1 -3
- package/dist/cjs/components/KnobDialog.native.js.map +1 -1
- package/dist/cjs/components/SimpleTable/index.cjs +159 -117
- package/dist/cjs/components/SimpleTable/index.native.js +168 -128
- package/dist/cjs/components/SimpleTable/index.native.js.map +1 -1
- package/dist/cjs/components/TableInput/index.cjs +159 -90
- package/dist/cjs/components/TableInput/index.native.js +3 -3
- package/dist/cjs/components/TableInput/index.native.js.map +1 -1
- package/dist/cjs/utils/chromeIcons.cjs +31 -0
- package/dist/cjs/utils/chromeIcons.native.js +34 -0
- package/dist/cjs/utils/chromeIcons.native.js.map +1 -0
- package/dist/esm/components/ChildTable/index.mjs +12 -3
- package/dist/esm/components/ChildTable/index.mjs.map +1 -1
- package/dist/esm/components/ChildTable/index.native.js +14 -3
- package/dist/esm/components/ChildTable/index.native.js.map +1 -1
- package/dist/esm/components/ColumnHeaderFilter/index.mjs +11 -13
- package/dist/esm/components/ColumnHeaderFilter/index.mjs.map +1 -1
- package/dist/esm/components/ColumnHeaderFilter/index.native.js +11 -16
- package/dist/esm/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableCardControls.mjs +7 -4
- package/dist/esm/components/DataTable/DataTableCardControls.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableCardControls.native.js +7 -4
- package/dist/esm/components/DataTable/DataTableCardControls.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableDocumentList.mjs +10 -4
- package/dist/esm/components/DataTable/DataTableDocumentList.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableDocumentList.native.js +10 -4
- package/dist/esm/components/DataTable/DataTableDocumentList.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableMobileCards.mjs +6 -1
- package/dist/esm/components/DataTable/DataTableMobileCards.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableMobileCards.native.js +6 -1
- package/dist/esm/components/DataTable/DataTableMobileCards.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableRoot.mjs +55 -42
- package/dist/esm/components/DataTable/DataTableRoot.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableRoot.native.js +55 -42
- package/dist/esm/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/esm/components/DataTable/DataTableVirtualized.mjs +5 -2
- package/dist/esm/components/DataTable/DataTableVirtualized.mjs.map +1 -1
- package/dist/esm/components/DataTable/DataTableVirtualized.native.js +5 -2
- package/dist/esm/components/DataTable/DataTableVirtualized.native.js.map +1 -1
- package/dist/esm/components/DataTable/dataTableChrome.mjs +32 -0
- package/dist/esm/components/DataTable/dataTableChrome.mjs.map +1 -0
- package/dist/esm/components/DataTable/dataTableChrome.native.js +32 -0
- package/dist/esm/components/DataTable/dataTableChrome.native.js.map +1 -0
- package/dist/esm/components/DataTable/index.native.js +34 -20
- package/dist/esm/components/DataTable/index.native.js.map +1 -1
- package/dist/esm/components/DataTableBulkActions/index.mjs +6 -4
- package/dist/esm/components/DataTableBulkActions/index.mjs.map +1 -1
- package/dist/esm/components/DataTableBulkActions/index.native.js +6 -4
- package/dist/esm/components/DataTableBulkActions/index.native.js.map +1 -1
- package/dist/esm/components/DataTableCell/CellModalEditor.mjs +11 -33
- package/dist/esm/components/DataTableCell/CellModalEditor.mjs.map +1 -1
- package/dist/esm/components/DataTableCell/CellModalEditor.native.js +2 -5
- package/dist/esm/components/DataTableCell/CellModalEditor.native.js.map +1 -1
- package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs +0 -1
- package/dist/esm/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
- package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js +0 -1
- package/dist/esm/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
- package/dist/esm/components/DataTableColumnPinning/index.mjs +7 -4
- package/dist/esm/components/DataTableColumnPinning/index.mjs.map +1 -1
- package/dist/esm/components/DataTableColumnPinning/index.native.js +7 -4
- package/dist/esm/components/DataTableColumnPinning/index.native.js.map +1 -1
- package/dist/esm/components/DataTableDateFilter/index.mjs +24 -22
- package/dist/esm/components/DataTableDateFilter/index.mjs.map +1 -1
- package/dist/esm/components/DataTableDateFilter/index.native.js +24 -22
- package/dist/esm/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/esm/components/DataTableExport/index.mjs +43 -29
- package/dist/esm/components/DataTableExport/index.mjs.map +1 -1
- package/dist/esm/components/DataTableExport/index.native.js +43 -29
- package/dist/esm/components/DataTableExport/index.native.js.map +1 -1
- package/dist/esm/components/DataTableFacetMenu/index.mjs +10 -4
- package/dist/esm/components/DataTableFacetMenu/index.mjs.map +1 -1
- package/dist/esm/components/DataTableFacetMenu/index.native.js +10 -4
- package/dist/esm/components/DataTableFacetMenu/index.native.js.map +1 -1
- package/dist/esm/components/DataTableFilters/index.mjs +3 -3
- package/dist/esm/components/DataTableFilters/index.mjs.map +1 -1
- package/dist/esm/components/DataTableFilters/index.native.js +3 -3
- package/dist/esm/components/DataTableFilters/index.native.js.map +1 -1
- package/dist/esm/components/DataTableGrouping/index.mjs +47 -42
- package/dist/esm/components/DataTableGrouping/index.mjs.map +1 -1
- package/dist/esm/components/DataTableGrouping/index.native.js +47 -42
- package/dist/esm/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/esm/components/DataTablePagination/index.mjs +4 -2
- package/dist/esm/components/DataTablePagination/index.mjs.map +1 -1
- package/dist/esm/components/DataTablePagination/index.native.js +4 -2
- package/dist/esm/components/DataTablePagination/index.native.js.map +1 -1
- package/dist/esm/components/DataTableSearch/index.mjs +3 -3
- package/dist/esm/components/DataTableSearch/index.native.js +3 -3
- package/dist/esm/components/DataTableToolbar/index.mjs +19 -13
- package/dist/esm/components/DataTableToolbar/index.mjs.map +1 -1
- package/dist/esm/components/DataTableToolbar/index.native.js +19 -15
- package/dist/esm/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/esm/components/DataTableViewOptions/index.mjs +36 -35
- package/dist/esm/components/DataTableViewOptions/index.mjs.map +1 -1
- package/dist/esm/components/DataTableViewOptions/index.native.js +36 -35
- package/dist/esm/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/esm/components/KnobDialog.mjs +1 -3
- package/dist/esm/components/KnobDialog.mjs.map +1 -1
- package/dist/esm/components/KnobDialog.native.js +1 -3
- package/dist/esm/components/KnobDialog.native.js.map +1 -1
- package/dist/esm/components/SimpleTable/index.mjs +160 -118
- package/dist/esm/components/SimpleTable/index.mjs.map +1 -1
- package/dist/esm/components/SimpleTable/index.native.js +169 -129
- package/dist/esm/components/SimpleTable/index.native.js.map +1 -1
- package/dist/esm/components/TableInput/index.mjs +160 -91
- package/dist/esm/components/TableInput/index.mjs.map +1 -1
- package/dist/esm/components/TableInput/index.native.js +3 -3
- package/dist/esm/components/TableInput/index.native.js.map +1 -1
- package/dist/esm/utils/chromeIcons.mjs +6 -0
- package/dist/esm/utils/chromeIcons.mjs.map +1 -0
- package/dist/esm/utils/chromeIcons.native.js +6 -0
- package/dist/esm/utils/chromeIcons.native.js.map +1 -0
- package/dist/jsx/components/ChildTable/index.mjs +12 -3
- package/dist/jsx/components/ChildTable/index.mjs.map +1 -1
- package/dist/jsx/components/ChildTable/index.native.js +14 -3
- package/dist/jsx/components/ChildTable/index.native.js.map +1 -1
- package/dist/jsx/components/ColumnHeaderFilter/index.mjs +11 -13
- package/dist/jsx/components/ColumnHeaderFilter/index.mjs.map +1 -1
- package/dist/jsx/components/ColumnHeaderFilter/index.native.js +11 -16
- package/dist/jsx/components/ColumnHeaderFilter/index.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableCardControls.mjs +7 -4
- package/dist/jsx/components/DataTable/DataTableCardControls.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableCardControls.native.js +7 -4
- package/dist/jsx/components/DataTable/DataTableCardControls.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableDocumentList.mjs +10 -4
- package/dist/jsx/components/DataTable/DataTableDocumentList.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableDocumentList.native.js +10 -4
- package/dist/jsx/components/DataTable/DataTableDocumentList.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableMobileCards.mjs +6 -1
- package/dist/jsx/components/DataTable/DataTableMobileCards.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableMobileCards.native.js +6 -1
- package/dist/jsx/components/DataTable/DataTableMobileCards.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableRoot.mjs +55 -42
- package/dist/jsx/components/DataTable/DataTableRoot.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableRoot.native.js +55 -42
- package/dist/jsx/components/DataTable/DataTableRoot.native.js.map +1 -1
- package/dist/jsx/components/DataTable/DataTableVirtualized.mjs +5 -2
- package/dist/jsx/components/DataTable/DataTableVirtualized.mjs.map +1 -1
- package/dist/jsx/components/DataTable/DataTableVirtualized.native.js +5 -2
- package/dist/jsx/components/DataTable/DataTableVirtualized.native.js.map +1 -1
- package/dist/jsx/components/DataTable/dataTableChrome.mjs +32 -0
- package/dist/jsx/components/DataTable/dataTableChrome.mjs.map +1 -0
- package/dist/jsx/components/DataTable/dataTableChrome.native.js +62 -0
- package/dist/jsx/components/DataTable/dataTableChrome.native.js.map +1 -0
- package/dist/jsx/components/DataTable/index.native.js +34 -20
- package/dist/jsx/components/DataTable/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableBulkActions/index.mjs +6 -4
- package/dist/jsx/components/DataTableBulkActions/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableBulkActions/index.native.js +6 -4
- package/dist/jsx/components/DataTableBulkActions/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableCell/CellModalEditor.mjs +11 -33
- package/dist/jsx/components/DataTableCell/CellModalEditor.mjs.map +1 -1
- package/dist/jsx/components/DataTableCell/CellModalEditor.native.js +2 -5
- package/dist/jsx/components/DataTableCell/CellModalEditor.native.js.map +1 -1
- package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs +0 -1
- package/dist/jsx/components/DataTableCell/CellOptionsEditor.mjs.map +1 -1
- package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js +0 -1
- package/dist/jsx/components/DataTableCell/CellOptionsEditor.native.js.map +1 -1
- package/dist/jsx/components/DataTableColumnPinning/index.mjs +7 -4
- package/dist/jsx/components/DataTableColumnPinning/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableColumnPinning/index.native.js +7 -4
- package/dist/jsx/components/DataTableColumnPinning/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableDateFilter/index.mjs +24 -22
- package/dist/jsx/components/DataTableDateFilter/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableDateFilter/index.native.js +24 -22
- package/dist/jsx/components/DataTableDateFilter/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableExport/index.mjs +43 -29
- package/dist/jsx/components/DataTableExport/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableExport/index.native.js +42 -28
- package/dist/jsx/components/DataTableExport/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableFacetMenu/index.mjs +10 -4
- package/dist/jsx/components/DataTableFacetMenu/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableFacetMenu/index.native.js +10 -4
- package/dist/jsx/components/DataTableFacetMenu/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableFilters/index.mjs +3 -3
- package/dist/jsx/components/DataTableFilters/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableFilters/index.native.js +3 -3
- package/dist/jsx/components/DataTableFilters/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableGrouping/index.mjs +47 -42
- package/dist/jsx/components/DataTableGrouping/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableGrouping/index.native.js +46 -41
- package/dist/jsx/components/DataTableGrouping/index.native.js.map +1 -1
- package/dist/jsx/components/DataTablePagination/index.mjs +4 -2
- package/dist/jsx/components/DataTablePagination/index.mjs.map +1 -1
- package/dist/jsx/components/DataTablePagination/index.native.js +4 -2
- package/dist/jsx/components/DataTablePagination/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableSearch/index.mjs +3 -3
- package/dist/jsx/components/DataTableSearch/index.native.js +3 -3
- package/dist/jsx/components/DataTableToolbar/index.mjs +19 -13
- package/dist/jsx/components/DataTableToolbar/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableToolbar/index.native.js +19 -15
- package/dist/jsx/components/DataTableToolbar/index.native.js.map +1 -1
- package/dist/jsx/components/DataTableViewOptions/index.mjs +36 -35
- package/dist/jsx/components/DataTableViewOptions/index.mjs.map +1 -1
- package/dist/jsx/components/DataTableViewOptions/index.native.js +36 -35
- package/dist/jsx/components/DataTableViewOptions/index.native.js.map +1 -1
- package/dist/jsx/components/KnobDialog.mjs +1 -3
- package/dist/jsx/components/KnobDialog.mjs.map +1 -1
- package/dist/jsx/components/KnobDialog.native.js +1 -3
- package/dist/jsx/components/KnobDialog.native.js.map +1 -1
- package/dist/jsx/components/SimpleTable/index.mjs +160 -118
- package/dist/jsx/components/SimpleTable/index.mjs.map +1 -1
- package/dist/jsx/components/SimpleTable/index.native.js +168 -128
- package/dist/jsx/components/SimpleTable/index.native.js.map +1 -1
- package/dist/jsx/components/TableInput/index.mjs +160 -91
- package/dist/jsx/components/TableInput/index.mjs.map +1 -1
- package/dist/jsx/components/TableInput/index.native.js +3 -3
- package/dist/jsx/components/TableInput/index.native.js.map +1 -1
- package/dist/jsx/utils/chromeIcons.mjs +6 -0
- package/dist/jsx/utils/chromeIcons.mjs.map +1 -0
- package/dist/jsx/utils/chromeIcons.native.js +34 -0
- package/dist/jsx/utils/chromeIcons.native.js.map +1 -0
- package/package.json +12 -12
- package/src/components/ChildTable/ChildTable.stories.tsx +144 -0
- package/src/components/ChildTable/childTable.reorder.spec.tsx +65 -0
- package/src/components/ChildTable/childTable.spec.tsx +108 -0
- package/src/components/ChildTable/index.tsx +21 -2
- package/src/components/ColumnHeaderFilter/index.tsx +9 -14
- package/src/components/DataTable/DataTableCardControls.tsx +19 -16
- package/src/components/DataTable/DataTableDocumentList.tsx +7 -4
- package/src/components/DataTable/DataTableMobileCards.tsx +3 -1
- package/src/components/DataTable/DataTableRoot.tsx +52 -41
- package/src/components/DataTable/DataTableVirtualized.tsx +6 -2
- package/src/components/DataTable/FieldsInCells.stories.tsx +10 -5
- package/src/components/DataTable/dataTableChrome.ts +48 -0
- package/src/components/DataTable/designLaw.spec.tsx +114 -0
- package/src/components/DataTable/index.native.tsx +46 -20
- package/src/components/DataTableBulkActions/index.tsx +5 -3
- package/src/components/DataTableCell/CellModalEditor.native.tsx +3 -6
- package/src/components/DataTableCell/CellModalEditor.tsx +11 -22
- package/src/components/DataTableCell/CellOptionsEditor.tsx +0 -1
- package/src/components/DataTableCell/cellDraftPolicy.spec.tsx +8 -1
- package/src/components/DataTableCell/cellModalEditor.spec.tsx +82 -0
- package/src/components/DataTableCell/dataTableCell.spec.tsx +8 -1
- package/src/components/DataTableColumnPinning/index.tsx +6 -4
- package/src/components/DataTableDateFilter/index.tsx +19 -17
- package/src/components/DataTableExport/DataTableExport.spec.tsx +29 -0
- package/src/components/DataTableExport/index.tsx +47 -23
- package/src/components/DataTableFacetMenu/index.tsx +13 -4
- package/src/components/DataTableFilters/index.tsx +3 -3
- package/src/components/DataTableGrouping/index.tsx +42 -35
- package/src/components/DataTablePagination/index.tsx +2 -2
- package/src/components/DataTableSearch/index.tsx +3 -3
- package/src/components/DataTableToolbar/DataTableToolbar.spec.tsx +20 -0
- package/src/components/DataTableToolbar/DataTableToolbar.stories.tsx +1 -9
- package/src/components/DataTableToolbar/index.tsx +19 -14
- package/src/components/DataTableViewOptions/index.tsx +30 -30
- package/src/components/KnobDialog.tsx +1 -3
- package/src/components/SimpleTable/SimpleTable.stories.tsx +13 -0
- package/src/components/SimpleTable/index.tsx +171 -149
- package/src/components/SimpleTable/simpleTable.spec.tsx +120 -0
- package/src/components/TableInput/index.native.tsx +5 -3
- package/src/components/TableInput/index.tsx +207 -113
- package/src/components/chromeDesignLaw.spec.tsx +97 -0
- package/src/utils/chromeIcons.ts +6 -0
- package/types/components/ChildTable/index.d.ts +6 -1
- package/types/components/ChildTable/index.d.ts.map +1 -1
- package/types/components/ColumnHeaderFilter/index.d.ts.map +1 -1
- package/types/components/DataTable/DataTableCardControls.d.ts.map +1 -1
- package/types/components/DataTable/DataTableDocumentList.d.ts.map +1 -1
- package/types/components/DataTable/DataTableMobileCards.d.ts.map +1 -1
- package/types/components/DataTable/DataTableRoot.d.ts +6 -1
- package/types/components/DataTable/DataTableRoot.d.ts.map +1 -1
- package/types/components/DataTable/DataTableVirtualized.d.ts +3 -1
- package/types/components/DataTable/DataTableVirtualized.d.ts.map +1 -1
- package/types/components/DataTable/dataTableChrome.d.ts +27 -0
- package/types/components/DataTable/dataTableChrome.d.ts.map +1 -0
- package/types/components/DataTable/index.native.d.ts +1 -1
- package/types/components/DataTable/index.native.d.ts.map +1 -1
- package/types/components/DataTableBulkActions/index.d.ts.map +1 -1
- package/types/components/DataTableCell/CellModalEditor.d.ts.map +1 -1
- package/types/components/DataTableCell/CellModalEditor.native.d.ts.map +1 -1
- package/types/components/DataTableCell/CellOptionsEditor.d.ts.map +1 -1
- package/types/components/DataTableColumnPinning/index.d.ts.map +1 -1
- package/types/components/DataTableDateFilter/index.d.ts.map +1 -1
- package/types/components/DataTableExport/index.d.ts.map +1 -1
- package/types/components/DataTableFacetMenu/index.d.ts.map +1 -1
- package/types/components/DataTableGrouping/index.d.ts.map +1 -1
- package/types/components/DataTableToolbar/index.d.ts +2 -0
- package/types/components/DataTableToolbar/index.d.ts.map +1 -1
- package/types/components/DataTableViewOptions/index.d.ts.map +1 -1
- package/types/components/KnobDialog.d.ts.map +1 -1
- package/types/components/SimpleTable/index.d.ts.map +1 -1
- package/types/components/TableInput/index.d.ts +8 -4
- package/types/components/TableInput/index.d.ts.map +1 -1
- package/types/components/TableInput/index.native.d.ts +2 -0
- package/types/components/TableInput/index.native.d.ts.map +1 -1
- package/types/utils/chromeIcons.d.ts +3 -0
- package/types/utils/chromeIcons.d.ts.map +1 -0
|
@@ -38,6 +38,7 @@ import { DataTableCell } from "../DataTableCell";
|
|
|
38
38
|
import { Table } from "@multiplatform.one/table-primitives";
|
|
39
39
|
import { DataTableContext } from "./DataTableContext";
|
|
40
40
|
import { DataTableDocumentList } from "./DataTableDocumentList";
|
|
41
|
+
import { dataTableChrome, resolveDataTableIntent, rowIntentProps } from "./dataTableChrome";
|
|
41
42
|
import { tableRowStateProps } from "./rowStateChrome";
|
|
42
43
|
import { DataTableStateContext } from "./DataTableStateContext";
|
|
43
44
|
import type { DataTableStateContextValue } from "./DataTableStateContext";
|
|
@@ -104,8 +105,6 @@ function mapFieldToFilterType(
|
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
const rowHeightPx = 40;
|
|
108
|
-
|
|
109
108
|
function DataTableRoot<TData extends Record<string, any> = Record<string, any>>({
|
|
110
109
|
data,
|
|
111
110
|
columns,
|
|
@@ -160,6 +159,10 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
160
159
|
size,
|
|
161
160
|
compact = false,
|
|
162
161
|
disabled = false,
|
|
162
|
+
accent,
|
|
163
|
+
error,
|
|
164
|
+
warning,
|
|
165
|
+
success,
|
|
163
166
|
children,
|
|
164
167
|
"aria-label": ariaLabel,
|
|
165
168
|
"aria-describedby": ariaDescribedBy,
|
|
@@ -171,11 +174,14 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
171
174
|
// the certified compact pattern; `table` pins the grid.
|
|
172
175
|
const showList = layout === "list";
|
|
173
176
|
const showCards = !showList && (layout === "cards" || (layout === "auto" && !sm));
|
|
177
|
+
const intent = resolveDataTableIntent({ accent, error, warning, success });
|
|
174
178
|
const { knobProps, disabledState } = useResolvedKnobs({
|
|
175
|
-
intent
|
|
179
|
+
intent,
|
|
176
180
|
component: "DataTable",
|
|
177
181
|
compact,
|
|
178
182
|
});
|
|
183
|
+
const chrome = dataTableChrome(String(knobProps.sizeToken));
|
|
184
|
+
const rowHeightPx = chrome.rowPx;
|
|
179
185
|
// Collapsed expand-caret points toward inline-end, so it mirrors in RTL via
|
|
180
186
|
// glyph swap (useDirection, Axiom 15); rotation sign flips so expanded
|
|
181
187
|
// still points down.
|
|
@@ -375,7 +381,11 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
375
381
|
return (
|
|
376
382
|
<>
|
|
377
383
|
{showRowNumbers && (
|
|
378
|
-
<Table.Cell
|
|
384
|
+
<Table.Cell
|
|
385
|
+
cellWidth={chrome.rowNumberCol}
|
|
386
|
+
cellHeight={cellHeight as any}
|
|
387
|
+
cellLocation="first"
|
|
388
|
+
>
|
|
379
389
|
<Text fontSize={knobProps.sizeToken} color="$color10">
|
|
380
390
|
{rowIndex + 1}
|
|
381
391
|
</Text>
|
|
@@ -383,7 +393,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
383
393
|
)}
|
|
384
394
|
{enableRowExpansion && (
|
|
385
395
|
<Table.Cell
|
|
386
|
-
cellWidth={
|
|
396
|
+
cellWidth={chrome.expandCol}
|
|
387
397
|
cellHeight={cellHeight as any}
|
|
388
398
|
cellLocation={showRowNumbers ? "middle" : "first"}
|
|
389
399
|
>
|
|
@@ -408,12 +418,12 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
408
418
|
}
|
|
409
419
|
>
|
|
410
420
|
<ExpandCaretIcon
|
|
411
|
-
size={
|
|
421
|
+
size={chrome.iconPx}
|
|
412
422
|
style={{ transform: row.getIsExpanded() ? expandedCaretRotation : "none" }}
|
|
413
423
|
/>
|
|
414
424
|
</View>
|
|
415
425
|
) : (
|
|
416
|
-
<View width={
|
|
426
|
+
<View width={chrome.iconPx} />
|
|
417
427
|
)}
|
|
418
428
|
</Table.Cell>
|
|
419
429
|
)}
|
|
@@ -435,7 +445,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
435
445
|
})}
|
|
436
446
|
{showDeleteRow && !readOnly && (
|
|
437
447
|
<Table.Cell
|
|
438
|
-
cellWidth={
|
|
448
|
+
cellWidth={chrome.deleteCol}
|
|
439
449
|
cellHeight={cellHeight as any}
|
|
440
450
|
cellLocation="last"
|
|
441
451
|
justifyContent="center"
|
|
@@ -533,6 +543,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
533
543
|
"data-table-zebra": tableZebraOn ? (index % 2 === 0 ? "even" : "odd") : "off",
|
|
534
544
|
} as any)}
|
|
535
545
|
{...(getRowPressProps(row, index) as any)}
|
|
546
|
+
{...(rowIntentProps(row.original) as any)}
|
|
536
547
|
>
|
|
537
548
|
{renderRowContent(row, index)}
|
|
538
549
|
</Table.Row>
|
|
@@ -554,6 +565,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
554
565
|
padding="$3"
|
|
555
566
|
marginBottom="$2"
|
|
556
567
|
{...(getRowPressProps(row, index) as any)}
|
|
568
|
+
{...(rowIntentProps(rowData) as any)}
|
|
557
569
|
>
|
|
558
570
|
{showRowNumbers && (
|
|
559
571
|
<View
|
|
@@ -813,7 +825,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
813
825
|
alignCells={{ x: "start", y: "center" }}
|
|
814
826
|
alignHeaderCells={{ x: "start", y: "center" }}
|
|
815
827
|
cellHeight={cellHeight}
|
|
816
|
-
{...knobProps.
|
|
828
|
+
{...knobProps.borderRadiusOuter}
|
|
817
829
|
width="100%"
|
|
818
830
|
marginBottom={enablePagination ? "$10" : undefined}
|
|
819
831
|
aria-label={ariaLabel || "Data table"}
|
|
@@ -830,22 +842,28 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
830
842
|
key={headerGroup.id}
|
|
831
843
|
backgroundColor="$color2"
|
|
832
844
|
rowLocation={groupIndex === 0 ? "first" : "middle"}
|
|
833
|
-
borderTopRightRadius=
|
|
834
|
-
borderTopLeftRadius=
|
|
845
|
+
borderTopRightRadius={knobProps.borderRadiusOuter.borderRadius}
|
|
846
|
+
borderTopLeftRadius={knobProps.borderRadiusOuter.borderRadius}
|
|
835
847
|
borderBottomLeftRadius="$0"
|
|
836
848
|
borderBottomRightRadius="$0"
|
|
837
849
|
aria-rowindex={groupIndex}
|
|
838
850
|
>
|
|
839
851
|
{showRowNumbers && (
|
|
840
|
-
<Table.HeaderCell
|
|
841
|
-
|
|
852
|
+
<Table.HeaderCell
|
|
853
|
+
cellWidth={chrome.rowNumberCol}
|
|
854
|
+
cellHeight={cellHeight as any}
|
|
855
|
+
>
|
|
856
|
+
<Text fontSize={knobProps.sizeToken} fontWeight="600">
|
|
842
857
|
#
|
|
843
858
|
</Text>
|
|
844
859
|
</Table.HeaderCell>
|
|
845
860
|
)}
|
|
846
861
|
{enableRowExpansion && (
|
|
847
|
-
<Table.HeaderCell
|
|
848
|
-
|
|
862
|
+
<Table.HeaderCell
|
|
863
|
+
cellWidth={chrome.expandCol}
|
|
864
|
+
cellHeight={cellHeight as any}
|
|
865
|
+
>
|
|
866
|
+
<View width={chrome.iconPx} />
|
|
849
867
|
</Table.HeaderCell>
|
|
850
868
|
)}
|
|
851
869
|
{headerGroup.headers.map((header, headerIndex) => {
|
|
@@ -888,7 +906,11 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
888
906
|
justifyContent="flex-start"
|
|
889
907
|
flex={1}
|
|
890
908
|
>
|
|
891
|
-
<Text
|
|
909
|
+
<Text
|
|
910
|
+
fontSize={knobProps.sizeToken}
|
|
911
|
+
selectable={false}
|
|
912
|
+
userSelect="none"
|
|
913
|
+
>
|
|
892
914
|
{header.isPlaceholder
|
|
893
915
|
? null
|
|
894
916
|
: flexRender(
|
|
@@ -902,14 +924,18 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
902
924
|
role="presentation"
|
|
903
925
|
color={sortDirection ? "$color10" : "$color8"}
|
|
904
926
|
>
|
|
905
|
-
{sortDirection === "asc" &&
|
|
927
|
+
{sortDirection === "asc" && (
|
|
928
|
+
<CaretDownIcon size={chrome.iconPx} />
|
|
929
|
+
)}
|
|
906
930
|
{sortDirection === "desc" && (
|
|
907
931
|
<CaretDownIcon
|
|
908
|
-
size={
|
|
932
|
+
size={chrome.iconPx}
|
|
909
933
|
style={{ transform: "rotate(180deg)" }}
|
|
910
934
|
/>
|
|
911
935
|
)}
|
|
912
|
-
{sortDirection === false &&
|
|
936
|
+
{sortDirection === false && (
|
|
937
|
+
<CaretUpDownIcon size={chrome.iconPx} />
|
|
938
|
+
)}
|
|
913
939
|
</Text>
|
|
914
940
|
)}
|
|
915
941
|
{pinning && (
|
|
@@ -925,7 +951,7 @@ function DataTableRoot<TData extends Record<string, any> = Record<string, any>>(
|
|
|
925
951
|
})}
|
|
926
952
|
{showDeleteRow && !readOnly && (
|
|
927
953
|
<Table.HeaderCell
|
|
928
|
-
cellWidth={
|
|
954
|
+
cellWidth={chrome.deleteCol}
|
|
929
955
|
cellHeight={cellHeight as any}
|
|
930
956
|
cellLocation="last"
|
|
931
957
|
/>
|
|
@@ -6,6 +6,7 @@ import { Button, zIndex } from "@multiplatform.one/forms";
|
|
|
6
6
|
import { ConfirmDialog, DropdownMenu } from "@multiplatform.one/components";
|
|
7
7
|
import { Text, View, XStack } from "tamagui";
|
|
8
8
|
import type { BulkAction } from "../../types";
|
|
9
|
+
import { iconSizeForToken } from "../../utils/chromeIcons";
|
|
9
10
|
import { withInterp } from "../../utils/withInterp";
|
|
10
11
|
import { useDataTableState } from "../DataTable/DataTableStateContext";
|
|
11
12
|
|
|
@@ -137,7 +138,7 @@ export function DataTableBulkActions<T = any>(props: DataTableBulkActionsProps<T
|
|
|
137
138
|
data-bulk-bar-placement={placement}
|
|
138
139
|
>
|
|
139
140
|
{showSelectionCount && (
|
|
140
|
-
<Text
|
|
141
|
+
<Text {...knobProps.label} fontWeight="400" color={countColor}>
|
|
141
142
|
{/* D-15: one whole-sentence key per variant (never concatenated
|
|
142
143
|
fragments — word order is locale-owned); withInterp fills the
|
|
143
144
|
params when no i18n instance is mounted (house table pattern). */}
|
|
@@ -167,7 +168,7 @@ export function DataTableBulkActions<T = any>(props: DataTableBulkActionsProps<T
|
|
|
167
168
|
</Button>
|
|
168
169
|
)}
|
|
169
170
|
|
|
170
|
-
<XStack gap
|
|
171
|
+
<XStack {...knobProps.gap} flex={1}>
|
|
171
172
|
{visibleActions.map((action) => (
|
|
172
173
|
<Button
|
|
173
174
|
key={action.id}
|
|
@@ -246,6 +247,7 @@ function BulkActionsOverflowMenu<T = any>({
|
|
|
246
247
|
isExecuting,
|
|
247
248
|
}: BulkActionsOverflowMenuProps<T>) {
|
|
248
249
|
const { knobProps } = useResolvedKnobs();
|
|
250
|
+
const iconPx = iconSizeForToken(String(knobProps.sizeToken));
|
|
249
251
|
return (
|
|
250
252
|
<DropdownMenu
|
|
251
253
|
items={actions.map((action) => ({
|
|
@@ -264,7 +266,7 @@ function BulkActionsOverflowMenu<T = any>({
|
|
|
264
266
|
<Button
|
|
265
267
|
size={knobProps.sizeToken}
|
|
266
268
|
variant="outlined"
|
|
267
|
-
icon={<DotsThreeIcon size={
|
|
269
|
+
icon={<DotsThreeIcon size={iconPx} />}
|
|
268
270
|
aria-label="More bulk actions"
|
|
269
271
|
{...knobProps.borderRadius}
|
|
270
272
|
/>
|
|
@@ -95,7 +95,6 @@ export function CellModalEditor({
|
|
|
95
95
|
width="100%"
|
|
96
96
|
paddingHorizontal="$1"
|
|
97
97
|
paddingVertical="$1"
|
|
98
|
-
borderRadius="$2"
|
|
99
98
|
{...(label
|
|
100
99
|
? { accessibilityLabel: label, accessibilityRole: "button" as const }
|
|
101
100
|
: undefined)}
|
|
@@ -104,12 +103,10 @@ export function CellModalEditor({
|
|
|
104
103
|
</View>
|
|
105
104
|
}
|
|
106
105
|
>
|
|
107
|
-
<YStack gap
|
|
108
|
-
<Text {...knobProps.heading}
|
|
109
|
-
{title ?? t("Edit")}
|
|
110
|
-
</Text>
|
|
106
|
+
<YStack {...knobProps.gap}>
|
|
107
|
+
<Text {...knobProps.heading}>{title ?? t("Edit")}</Text>
|
|
111
108
|
<YStack minHeight={0}>{children(draft ? draft.value : value, handleDraftChange)}</YStack>
|
|
112
|
-
<XStack gap
|
|
109
|
+
<XStack {...knobProps.gap} justifyContent="flex-end">
|
|
113
110
|
{/* LC-30 CANCEL-ALWAYS-LIVE: the discard exit never disables. */}
|
|
114
111
|
<Button onPress={handleCancel}>{t("Cancel")}</Button>
|
|
115
112
|
<Button onPress={() => handleOpenChange(false)}>{t("Done")}</Button>
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
* footer stays within the two-action dialog budget (LC-31).
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
-
import { DialogOverlay } from "@multiplatform.one/components";
|
|
16
|
-
import { FieldDisplay, type FieldDisplayType } from "@multiplatform.one/forms";
|
|
15
|
+
import { DialogContent, DialogOverlay } from "@multiplatform.one/components";
|
|
16
|
+
import { Button, FieldDisplay, type FieldDisplayType } from "@multiplatform.one/forms";
|
|
17
17
|
import { TableCellContext } from "@multiplatform.one/table-primitives";
|
|
18
18
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
19
19
|
import { useCallback, useRef, useState, type ReactNode } from "react";
|
|
20
|
-
import {
|
|
20
|
+
import { Dialog, View, XStack, YStack, isWeb } from "tamagui";
|
|
21
21
|
import { t } from "../../shared/t";
|
|
22
22
|
|
|
23
23
|
export interface CellModalEditorProps {
|
|
@@ -127,7 +127,6 @@ export function CellModalEditor({
|
|
|
127
127
|
width="100%"
|
|
128
128
|
paddingHorizontal="$1"
|
|
129
129
|
paddingVertical="$1"
|
|
130
|
-
borderRadius="$2"
|
|
131
130
|
hoverStyle={!triggerLocked ? { backgroundColor: "$backgroundHover" } : undefined}
|
|
132
131
|
// LC-71: parent CellWrapper paints the one ring on the cell boundary.
|
|
133
132
|
outlineWidth={0}
|
|
@@ -148,13 +147,7 @@ export function CellModalEditor({
|
|
|
148
147
|
<Dialog open={open} onOpenChange={handleOpenChange} modal>
|
|
149
148
|
<Dialog.Portal>
|
|
150
149
|
<DialogOverlay opacity={0.5} />
|
|
151
|
-
<
|
|
152
|
-
borderWidth={1}
|
|
153
|
-
borderColor="$borderColor"
|
|
154
|
-
elevation={knobProps.elevation}
|
|
155
|
-
transition={knobProps.transition}
|
|
156
|
-
enterStyle={{ y: -10, opacity: 0, scale: 0.96 }}
|
|
157
|
-
exitStyle={{ y: 10, opacity: 0, scale: 0.96 }}
|
|
150
|
+
<DialogContent
|
|
158
151
|
maxWidth={720}
|
|
159
152
|
maxHeight="80vh"
|
|
160
153
|
width="90vw"
|
|
@@ -164,29 +157,25 @@ export function CellModalEditor({
|
|
|
164
157
|
discardRef.current = true;
|
|
165
158
|
}}
|
|
166
159
|
>
|
|
167
|
-
<Dialog.Title>
|
|
168
|
-
<Text fontSize="$5" fontWeight="600">
|
|
169
|
-
{title ?? t("Edit")}
|
|
170
|
-
</Text>
|
|
171
|
-
</Dialog.Title>
|
|
160
|
+
<Dialog.Title {...knobProps.heading}>{title ?? t("Edit")}</Dialog.Title>
|
|
172
161
|
{/* flexShrink (not flex-basis 0): in the auto-height dialog a
|
|
173
162
|
basis-0 wrapper collapses and its children paint over the
|
|
174
163
|
footer / past the dialog frame (LC-10). The context reset
|
|
175
164
|
restores full field chrome — the modal is not a table cell,
|
|
176
165
|
but React context flows through the Dialog portal. */}
|
|
177
|
-
<YStack flexShrink={1} minHeight={0}
|
|
166
|
+
<YStack flexShrink={1} minHeight={0}>
|
|
178
167
|
<TableCellContext.Provider value={{ inTableCell: false }}>
|
|
179
168
|
{children(draft ? draft.value : value, handleDraftChange)}
|
|
180
169
|
</TableCellContext.Provider>
|
|
181
170
|
</YStack>
|
|
182
|
-
<XStack gap
|
|
171
|
+
<XStack {...knobProps.gap} justifyContent="flex-end">
|
|
183
172
|
{/* LC-30 CANCEL-ALWAYS-LIVE: the discard exit never disables. */}
|
|
184
173
|
<Button onPress={handleCancel}>{t("Cancel")}</Button>
|
|
185
|
-
<
|
|
186
|
-
|
|
187
|
-
</
|
|
174
|
+
<Button theme="accent" onPress={() => handleOpenChange(false)}>
|
|
175
|
+
{t("Done")}
|
|
176
|
+
</Button>
|
|
188
177
|
</XStack>
|
|
189
|
-
</
|
|
178
|
+
</DialogContent>
|
|
190
179
|
</Dialog.Portal>
|
|
191
180
|
</Dialog>
|
|
192
181
|
</>
|
|
@@ -57,7 +57,6 @@ export function CellOptionsEditor({
|
|
|
57
57
|
width="100%"
|
|
58
58
|
paddingHorizontal="$1"
|
|
59
59
|
paddingVertical="$1"
|
|
60
|
-
borderRadius="$2"
|
|
61
60
|
opacity={disabled ? 0.5 : 1}
|
|
62
61
|
// LC-71: the parent CellWrapper paints the one ring; this face must
|
|
63
62
|
// not add a second outline on keyboard focus.
|
|
@@ -255,7 +255,14 @@ vi.mock("@multiplatform.one/forms", async (importOriginal) => ({
|
|
|
255
255
|
Signature: createMock("Signature"),
|
|
256
256
|
Geolocation: createMock("Geolocation"),
|
|
257
257
|
ColorPicker: createMock("ColorPicker"),
|
|
258
|
-
Button:
|
|
258
|
+
Button: ({
|
|
259
|
+
children,
|
|
260
|
+
onPress,
|
|
261
|
+
...props
|
|
262
|
+
}: {
|
|
263
|
+
children?: React.ReactNode;
|
|
264
|
+
onPress?: (event: unknown) => void;
|
|
265
|
+
}) => React.createElement("button", { type: "button", ...props, onClick: onPress }, children),
|
|
259
266
|
FieldDisplay: (props: any) =>
|
|
260
267
|
React.createElement("div", {
|
|
261
268
|
"data-testid": "mock-FieldDisplay",
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CellModalEditor design-law tests — the modal is SF-OVERLAY / E-OVERLAY.
|
|
3
|
+
*
|
|
4
|
+
* The house DialogContent owns elevatedSurface + containerRadius + transition
|
|
5
|
+
* (LC-18). A fixed 1px border on Dialog.Content was the recorded GAP; this
|
|
6
|
+
* spec locks the recipe path so it cannot regress to a handwritten frame.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import React from "react";
|
|
10
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
11
|
+
import { fireEvent, screen, waitFor } from "@testing-library/react";
|
|
12
|
+
import { describe, expect, it, vi } from "vitest";
|
|
13
|
+
|
|
14
|
+
const dialogContentProps: Record<string, unknown>[] = [];
|
|
15
|
+
|
|
16
|
+
vi.mock("@multiplatform.one/components", async (importOriginal) => {
|
|
17
|
+
const actual = await importOriginal<typeof import("@multiplatform.one/components")>();
|
|
18
|
+
return {
|
|
19
|
+
...actual,
|
|
20
|
+
DialogContent: (props: Record<string, unknown>) => {
|
|
21
|
+
dialogContentProps.push(props);
|
|
22
|
+
return React.createElement(
|
|
23
|
+
"div",
|
|
24
|
+
{ "data-testid": "cell-modal-dialog-content" },
|
|
25
|
+
props.children as React.ReactNode,
|
|
26
|
+
);
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
vi.mock("@multiplatform.one/forms", async (importOriginal) => ({
|
|
32
|
+
...(await importOriginal<typeof import("@multiplatform.one/forms")>()),
|
|
33
|
+
FieldDisplay: (props: { field?: string }) =>
|
|
34
|
+
React.createElement("div", {
|
|
35
|
+
"data-testid": "mock-FieldDisplay",
|
|
36
|
+
"data-field": props.field,
|
|
37
|
+
}),
|
|
38
|
+
Button: ({
|
|
39
|
+
children,
|
|
40
|
+
onPress,
|
|
41
|
+
...props
|
|
42
|
+
}: {
|
|
43
|
+
children?: React.ReactNode;
|
|
44
|
+
onPress?: (event: unknown) => void;
|
|
45
|
+
}) => React.createElement("button", { type: "button", ...props, onClick: onPress }, children),
|
|
46
|
+
}));
|
|
47
|
+
|
|
48
|
+
import { CellModalEditor } from "./CellModalEditor";
|
|
49
|
+
|
|
50
|
+
describe("CellModalEditor — overlay recipes", () => {
|
|
51
|
+
it("opens DialogContent without a fixed 1px border (SF-OVERLAY recipe path)", async () => {
|
|
52
|
+
dialogContentProps.length = 0;
|
|
53
|
+
renderWithProviders(
|
|
54
|
+
<CellModalEditor
|
|
55
|
+
field="textarea"
|
|
56
|
+
value="hello"
|
|
57
|
+
onCommit={vi.fn()}
|
|
58
|
+
title="Edit text"
|
|
59
|
+
label="Notes"
|
|
60
|
+
>
|
|
61
|
+
{(draft, onDraftChange) =>
|
|
62
|
+
React.createElement("textarea", {
|
|
63
|
+
"data-testid": "draft-editor",
|
|
64
|
+
value: draft,
|
|
65
|
+
onChange: (event: React.ChangeEvent<HTMLTextAreaElement>) =>
|
|
66
|
+
onDraftChange(event.target.value),
|
|
67
|
+
})
|
|
68
|
+
}
|
|
69
|
+
</CellModalEditor>,
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
fireEvent.click(screen.getByTestId("mock-FieldDisplay"));
|
|
73
|
+
await waitFor(() => expect(screen.getByTestId("cell-modal-dialog-content")).toBeTruthy());
|
|
74
|
+
|
|
75
|
+
const frame = dialogContentProps.at(-1);
|
|
76
|
+
expect(frame).toBeTruthy();
|
|
77
|
+
expect(frame?.borderWidth).toBeUndefined();
|
|
78
|
+
expect(frame?.borderColor).toBeUndefined();
|
|
79
|
+
expect(screen.getByRole("button", { name: "Cancel" })).not.toBeDisabled();
|
|
80
|
+
expect(screen.getByRole("button", { name: "Done" })).toBeTruthy();
|
|
81
|
+
});
|
|
82
|
+
});
|
|
@@ -83,7 +83,14 @@ vi.mock("@multiplatform.one/forms", async (importOriginal) => ({
|
|
|
83
83
|
Signature: createMock("Signature"),
|
|
84
84
|
Geolocation: createMock("Geolocation"),
|
|
85
85
|
ColorPicker: createMock("ColorPicker"),
|
|
86
|
-
Button:
|
|
86
|
+
Button: ({
|
|
87
|
+
children,
|
|
88
|
+
onPress,
|
|
89
|
+
...props
|
|
90
|
+
}: {
|
|
91
|
+
children?: React.ReactNode;
|
|
92
|
+
onPress?: (event: unknown) => void;
|
|
93
|
+
}) => React.createElement("button", { type: "button", ...props, onClick: onPress }, children),
|
|
87
94
|
// Compact in-cell summary used by CellModalEditor; expose the routed field
|
|
88
95
|
// type so tests can assert which field the cell delegates to.
|
|
89
96
|
FieldDisplay: (props: any) =>
|
|
@@ -10,6 +10,7 @@ import { useCallback, useMemo, useState } from "react";
|
|
|
10
10
|
import { Text, View, isWeb, styled } from "tamagui";
|
|
11
11
|
import { useDataTableState } from "../DataTable/DataTableStateContext";
|
|
12
12
|
import { t } from "../../shared/t";
|
|
13
|
+
import { iconSizeForToken } from "../../utils/chromeIcons";
|
|
13
14
|
|
|
14
15
|
// DG-LAY-04 / SP-FIXED: the pin glyph stays small (~22px incl. padding) but the
|
|
15
16
|
// press target is floored at 44×44 via hitSlop; negative margins keep header
|
|
@@ -85,6 +86,7 @@ export function DataTableColumnPinning<TData>(props: DataTableColumnPinningProps
|
|
|
85
86
|
const { onPinChange, maxPinnedColumns = 3, allowPinning = true, disabled = false } = props;
|
|
86
87
|
|
|
87
88
|
const { knobProps } = useResolvedKnobs();
|
|
89
|
+
const iconPx = iconSizeForToken(String(knobProps.sizeToken));
|
|
88
90
|
|
|
89
91
|
// Get fresh table state on each render
|
|
90
92
|
const pinnedColumns = table.getState().columnPinning || {
|
|
@@ -271,16 +273,16 @@ export function DataTableColumnPinning<TData>(props: DataTableColumnPinningProps
|
|
|
271
273
|
flexDirection="row"
|
|
272
274
|
alignItems="center"
|
|
273
275
|
justifyContent="center"
|
|
274
|
-
gap={
|
|
276
|
+
gap={knobProps.gap.gap}
|
|
275
277
|
{...(next === "none" ? undefined : { hoverStyle: { backgroundColor: "$color4" } })}
|
|
276
278
|
>
|
|
277
279
|
<PushPinIcon
|
|
278
|
-
size={
|
|
280
|
+
size={iconPx}
|
|
279
281
|
color={pinned ? "var(--accentColor)" : "var(--color10)"}
|
|
280
282
|
weight={pinned ? "fill" : "regular"}
|
|
281
283
|
/>
|
|
282
284
|
{pinned && currentPosition ? (
|
|
283
|
-
<Text
|
|
285
|
+
<Text {...knobProps.label} fontWeight="400" color="$color10">
|
|
284
286
|
{currentPosition === "left" ? "L" : "R"}
|
|
285
287
|
</Text>
|
|
286
288
|
) : null}
|
|
@@ -288,7 +290,7 @@ export function DataTableColumnPinning<TData>(props: DataTableColumnPinningProps
|
|
|
288
290
|
</View>
|
|
289
291
|
);
|
|
290
292
|
},
|
|
291
|
-
[allowPinning, disabled, getPinPosition, canPin, cyclePin, table],
|
|
293
|
+
[allowPinning, disabled, getPinPosition, canPin, cyclePin, table, iconPx, knobProps],
|
|
292
294
|
);
|
|
293
295
|
|
|
294
296
|
const pinnedLeftColumns = useMemo(() => {
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
getVariableValue,
|
|
22
22
|
} from "tamagui";
|
|
23
23
|
import { t } from "../../shared/t";
|
|
24
|
+
import { iconSizeForToken } from "../../utils/chromeIcons";
|
|
24
25
|
|
|
25
26
|
export type DateFilterOperator =
|
|
26
27
|
| "is"
|
|
@@ -91,6 +92,7 @@ export function DataTableDateFilter({
|
|
|
91
92
|
}: DataTableDateFilterProps) {
|
|
92
93
|
const { knobProps } = useResolvedKnobs();
|
|
93
94
|
const sz = knobProps.sizeToken;
|
|
95
|
+
const iconPx = iconSizeForToken(String(sz));
|
|
94
96
|
const triggerMinWidth = sz === "$3" ? 160 : sz === "$5" ? 240 : 200;
|
|
95
97
|
const popoverMinWidth = sz === "$3" ? 280 : sz === "$5" ? 360 : 320;
|
|
96
98
|
// Row height derives from the same size token the preset Buttons render
|
|
@@ -114,25 +116,25 @@ export function DataTableDateFilter({
|
|
|
114
116
|
id: "today",
|
|
115
117
|
label: t("Today"),
|
|
116
118
|
operator: "isToday",
|
|
117
|
-
icon: <CalendarIcon size={
|
|
119
|
+
icon: <CalendarIcon size={iconPx} />,
|
|
118
120
|
},
|
|
119
121
|
{
|
|
120
122
|
id: "yesterday",
|
|
121
123
|
label: t("Yesterday"),
|
|
122
124
|
operator: "isYesterday",
|
|
123
|
-
icon: <CalendarIcon size={
|
|
125
|
+
icon: <CalendarIcon size={iconPx} />,
|
|
124
126
|
},
|
|
125
127
|
{
|
|
126
128
|
id: "thisWeek",
|
|
127
129
|
label: t("This Week"),
|
|
128
130
|
operator: "isThisWeek",
|
|
129
|
-
icon: <CalendarDotsIcon size={
|
|
131
|
+
icon: <CalendarDotsIcon size={iconPx} />,
|
|
130
132
|
},
|
|
131
133
|
{
|
|
132
134
|
id: "thisMonth",
|
|
133
135
|
label: t("This Month"),
|
|
134
136
|
operator: "isThisMonth",
|
|
135
|
-
icon: <CalendarDotsIcon size={
|
|
137
|
+
icon: <CalendarDotsIcon size={iconPx} />,
|
|
136
138
|
},
|
|
137
139
|
{
|
|
138
140
|
id: "last7days",
|
|
@@ -142,7 +144,7 @@ export function DataTableDateFilter({
|
|
|
142
144
|
new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),
|
|
143
145
|
new Date().toISOString(),
|
|
144
146
|
],
|
|
145
|
-
icon: <CalendarBlankIcon size={
|
|
147
|
+
icon: <CalendarBlankIcon size={iconPx} />,
|
|
146
148
|
},
|
|
147
149
|
{
|
|
148
150
|
id: "last30days",
|
|
@@ -152,19 +154,19 @@ export function DataTableDateFilter({
|
|
|
152
154
|
new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString(),
|
|
153
155
|
new Date().toISOString(),
|
|
154
156
|
],
|
|
155
|
-
icon: <CalendarBlankIcon size={
|
|
157
|
+
icon: <CalendarBlankIcon size={iconPx} />,
|
|
156
158
|
},
|
|
157
159
|
{
|
|
158
160
|
id: "empty",
|
|
159
161
|
label: t("Is Empty"),
|
|
160
162
|
operator: "isEmpty",
|
|
161
|
-
icon: <XIcon size={
|
|
163
|
+
icon: <XIcon size={iconPx} />,
|
|
162
164
|
},
|
|
163
165
|
{
|
|
164
166
|
id: "notEmpty",
|
|
165
167
|
label: t("Is Not Empty"),
|
|
166
168
|
operator: "isNotEmpty",
|
|
167
|
-
icon: <ClockIcon size={
|
|
169
|
+
icon: <ClockIcon size={iconPx} />,
|
|
168
170
|
},
|
|
169
171
|
];
|
|
170
172
|
|
|
@@ -326,7 +328,7 @@ export function DataTableDateFilter({
|
|
|
326
328
|
size={knobProps.sizeToken}
|
|
327
329
|
variant="outlined"
|
|
328
330
|
disabled={disabled}
|
|
329
|
-
icon={<CalendarIcon size={
|
|
331
|
+
icon={<CalendarIcon size={iconPx} />}
|
|
330
332
|
justifyContent="flex-start"
|
|
331
333
|
minWidth={triggerMinWidth}
|
|
332
334
|
>
|
|
@@ -341,7 +343,7 @@ export function DataTableDateFilter({
|
|
|
341
343
|
>
|
|
342
344
|
{getDisplayValue()}
|
|
343
345
|
</Text>
|
|
344
|
-
<CaretDownIcon size={
|
|
346
|
+
<CaretDownIcon size={iconPx} />
|
|
345
347
|
</Button>
|
|
346
348
|
</Popover.Trigger>
|
|
347
349
|
|
|
@@ -362,15 +364,15 @@ export function DataTableDateFilter({
|
|
|
362
364
|
<Popover.ScrollView minHeight={0}>
|
|
363
365
|
<YStack {...knobProps.panelPadding} {...knobProps.gapLg}>
|
|
364
366
|
<XStack justifyContent="space-between" alignItems="center">
|
|
365
|
-
<Text
|
|
367
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
366
368
|
{t("Date Filter")}
|
|
367
369
|
</Text>
|
|
368
370
|
{value && (
|
|
369
371
|
<Button
|
|
370
|
-
size=
|
|
372
|
+
size={knobProps.sizeToken}
|
|
371
373
|
variant="outlined"
|
|
372
374
|
onPress={handleClear}
|
|
373
|
-
icon={<XIcon size={
|
|
375
|
+
icon={<XIcon size={iconPx} />}
|
|
374
376
|
>
|
|
375
377
|
{t("Clear")}
|
|
376
378
|
</Button>
|
|
@@ -380,7 +382,7 @@ export function DataTableDateFilter({
|
|
|
380
382
|
{/* Quick Presets */}
|
|
381
383
|
{showPresets && (
|
|
382
384
|
<YStack gap="$2">
|
|
383
|
-
<Text
|
|
385
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
384
386
|
{t("Quick Filters")}
|
|
385
387
|
</Text>
|
|
386
388
|
<ScrollView maxHeight={presetListMaxHeight}>
|
|
@@ -408,7 +410,7 @@ export function DataTableDateFilter({
|
|
|
408
410
|
|
|
409
411
|
{/* Custom Date Selection */}
|
|
410
412
|
<YStack {...knobProps.gap}>
|
|
411
|
-
<Text
|
|
413
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
412
414
|
{t("Custom Date")}
|
|
413
415
|
</Text>
|
|
414
416
|
|
|
@@ -438,7 +440,7 @@ export function DataTableDateFilter({
|
|
|
438
440
|
|
|
439
441
|
{/* Date Range */}
|
|
440
442
|
<YStack gap="$2">
|
|
441
|
-
<Text
|
|
443
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
442
444
|
{t("Date Range")}
|
|
443
445
|
</Text>
|
|
444
446
|
<XStack gap="$2">
|
|
@@ -473,7 +475,7 @@ export function DataTableDateFilter({
|
|
|
473
475
|
|
|
474
476
|
{/* DatePicker-based Custom Range Selection */}
|
|
475
477
|
<YStack gap="$2">
|
|
476
|
-
<Text
|
|
478
|
+
<Text {...knobProps.label} fontWeight="400">
|
|
477
479
|
{t("Custom Range")}
|
|
478
480
|
</Text>
|
|
479
481
|
<XStack gap="$2">
|