@12-apps/ui 6.42.0 → 6.43.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/_internal/components/data-display/Alert/Alert.js +3 -3
- package/dist/_internal/components/data-display/Alert/Alert.metrics.js +3 -3
- package/dist/_internal/components/data-display/Alert/Alert.styles.js +3 -3
- package/dist/_internal/components/data-display/Badge/Badge.js +4 -4
- package/dist/_internal/components/data-display/Badge/Badge.styles.js +4 -4
- package/dist/_internal/components/data-display/Badge/BadgeContent.js +4 -4
- package/dist/_internal/components/data-display/Banner/Banner.js +3 -3
- package/dist/_internal/components/data-display/Banner/Banner.styles.js +3 -3
- package/dist/_internal/components/data-display/CardKit/CardKebab.js +3 -3
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +3 -3
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +3 -3
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +3 -3
- package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +4 -4
- package/dist/_internal/components/data-display/Carousel/Carousel.js +4 -4
- package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +4 -4
- package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +4 -4
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +4 -4
- package/dist/_internal/components/data-display/Chart/chart-context.js +4 -4
- package/dist/_internal/components/data-display/Chart/chart-internals.js +4 -4
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +4 -4
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +11 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.model.js +12 -1
- package/dist/_internal/components/data-display/DataViews/DataViewsBoard.js +6 -6
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +28 -27
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +34 -33
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +6 -6
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +6 -6
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-card.js +6 -6
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +15 -10
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +14 -9
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +16 -11
- package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-columns-tab.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-columns.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +11 -10
- package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +12 -7
- package/dist/_internal/components/data-display/DataViews/data-views-empty.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-export.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +13 -12
- package/dist/_internal/components/data-display/DataViews/data-views-grid-helpers.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +27 -26
- package/dist/_internal/components/data-display/DataViews/data-views-header-row.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +11 -1
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-pagination.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +10 -2
- package/dist/_internal/components/data-display/DataViews/data-views-search.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-select-all-strip.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +14 -13
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +13 -12
- package/dist/_internal/components/data-display/DataViews/data-views-view-nav.js +6 -6
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +10 -2
- package/dist/_internal/components/data-display/DataViews/save-view-preview.js +6 -6
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +3 -3
- package/dist/_internal/components/data-display/DescriptionItem/DescriptionItem.js +6 -6
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +1 -1
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +1 -1
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +4 -4
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +1 -1
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +1 -1
- package/dist/_internal/components/data-display/MapPreview/MapSearchBar.js +1 -1
- package/dist/_internal/components/data-display/Progress/Progress.js +6 -6
- package/dist/_internal/components/data-display/Progress/Progress.metrics.js +4 -4
- package/dist/_internal/components/data-display/Progress/Progress.styles.js +5 -5
- package/dist/_internal/components/data-display/Sheet/Sheet.body.js +4 -4
- package/dist/_internal/components/data-display/Sheet/Sheet.js +4 -4
- package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +4 -4
- package/dist/_internal/components/data-display/Table/Table.helpers.js +3 -1
- package/dist/_internal/components/data-display/Table/Table.js +11 -3
- package/dist/_internal/components/data-display/Table/TableParts.hooks.js +2 -2
- package/dist/_internal/components/data-display/Table/TableParts.js +2 -2
- package/dist/_internal/components/data-display/index.js +15 -15
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +3 -3
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +3 -3
- package/dist/_internal/components/feedback/index.js +3 -3
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +1 -1
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocompleteField.js +1 -1
- package/dist/_internal/components/form/AddressAutocomplete/AddressFallbackField.js +1 -1
- package/dist/_internal/components/form/AddressAutocomplete/AddressInputField.js +1 -1
- package/dist/_internal/components/form/AddressAutocomplete/AddressTextField.js +1 -1
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +1 -1
- package/dist/_internal/components/form/Autocomplete/Autocomplete.parts.js +1 -1
- package/dist/_internal/components/form/Button/Button.js +3 -3
- package/dist/_internal/components/form/Button/Button.styles.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +1 -1
- package/dist/_internal/components/form/CategorySelect/CategoryPanelFoot.js +1 -1
- package/dist/_internal/components/form/CategorySelect/CategoryPanelHead.js +1 -1
- package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +1 -1
- package/dist/_internal/components/form/CategorySelect/CategoryRows.js +1 -1
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +1 -1
- package/dist/_internal/components/form/CategorySelect/CategorySelect.styles.js +1 -1
- package/dist/_internal/components/form/CategorySelect/CategoryTrigger.js +1 -1
- package/dist/_internal/components/form/CepField/CepField.js +1 -1
- package/dist/_internal/components/form/Command/Command.js +4 -4
- package/dist/_internal/components/form/Command/Command.styles.js +4 -4
- package/dist/_internal/components/form/CreatableSelect/CreatableSelect.js +1 -1
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +1 -1
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +1 -1
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +1 -1
- package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +1 -1
- package/dist/_internal/components/form/Input/Input.js +1 -1
- package/dist/_internal/components/form/Input/Input.styles.js +1 -1
- package/dist/_internal/components/form/InputOTP/InputOTP.js +1 -1
- package/dist/_internal/components/form/InputOTP/InputOTP.styles.js +1 -1
- package/dist/_internal/components/form/Label/Label.js +4 -4
- package/dist/_internal/components/form/Label/Label.styles.js +4 -4
- package/dist/_internal/components/form/Menubar/Menubar.item.js +4 -4
- package/dist/_internal/components/form/Menubar/Menubar.js +4 -4
- package/dist/_internal/components/form/Menubar/Menubar.styles.js +4 -4
- package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +4 -4
- package/dist/_internal/components/form/NumberField/NumberField.js +1 -1
- package/dist/_internal/components/form/PhoneInput/PhoneInput.js +1 -1
- package/dist/_internal/components/form/RadioGroup/RadioGroup.js +1 -1
- package/dist/_internal/components/form/RadioGroup/RadioGroup.styles.js +1 -1
- package/dist/_internal/components/form/RadioGroup/RadioGroup.variants.js +1 -1
- package/dist/_internal/components/form/Select/Select.js +1 -1
- package/dist/_internal/components/form/Switch/Switch.js +3 -3
- package/dist/_internal/components/form/Switch/Switch.parts.js +3 -3
- package/dist/_internal/components/form/Switch/Switch.styles.js +3 -3
- package/dist/_internal/components/form/Textarea/Textarea.js +2 -2
- package/dist/_internal/components/form/Textarea/TextareaRichEditor.js +1 -1
- package/dist/_internal/components/form/Toggle/Toggle.js +1 -1
- package/dist/_internal/components/form/Toggle/Toggle.styles.js +1 -1
- package/dist/_internal/components/form/ToggleGroup/ToggleGroup.js +1 -1
- package/dist/_internal/components/form/index.js +5 -5
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +1 -1
- package/dist/_internal/components/form/total-form/Fields/CepField.js +1 -1
- package/dist/_internal/components/form/total-form/Fields/SelectField.js +1 -1
- package/dist/_internal/components/form/total-form/Fields/TextField.js +1 -1
- package/dist/_internal/components/form/total-form/Fields/ToggleField.js +1 -1
- package/dist/_internal/components/form/total-form/Fields/index.js +1 -1
- package/dist/_internal/components/form/total-form/SubmitButton.js +3 -3
- package/dist/_internal/components/index.js +28 -28
- package/dist/_internal/components/layout/Box/Box.js +7 -7
- package/dist/_internal/components/layout/ContentToolbar/ColumnsMenu.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/FilterTrigger.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/MultiSelectDropdown.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/MultiSelectTriggers.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/SavedViewsMenu.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/SortByDropdown.js +1 -1
- package/dist/_internal/components/layout/ContentToolbar/ViewSelector.js +1 -1
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +9 -9
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +8 -8
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js +9 -9
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +10 -10
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +9 -9
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +10 -10
- package/dist/_internal/components/layout/Stack/Stack.js +8 -8
- package/dist/_internal/components/layout/TableFilter/TableFilter.js +1 -1
- package/dist/_internal/components/layout/index.js +13 -13
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
- package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +4 -4
- package/dist/_internal/components/navigation/Pagination/Pagination.js +1 -1
- package/dist/_internal/components/navigation/Pagination/PaginationParts.js +1 -1
- package/dist/_internal/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/_internal/components/navigation/Tabs/Tabs.styles.js +1 -1
- package/dist/_internal/components/navigation/index.js +4 -4
- package/dist/_internal/components/typography/Heading/Heading.js +6 -6
- package/dist/_internal/components/typography/Heading/Heading.metrics.js +4 -4
- package/dist/_internal/components/typography/Heading/Heading.styles.js +5 -5
- package/dist/_internal/components/typography/Text/Text.js +5 -5
- package/dist/_internal/components/typography/Text/Text.metrics.js +4 -4
- package/dist/_internal/components/typography/index.js +8 -8
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +4 -4
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +4 -4
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +4 -4
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +4 -4
- package/dist/_internal/components/utility/index.js +4 -4
- package/dist/_internal/icons/Icon.js +7 -7
- package/dist/_internal/provider/UiProvider.js +6 -6
- package/dist/_internal/provider/mui-bridge.js +5 -5
- package/dist/_internal/provider/use-ui-theme.js +6 -6
- package/dist/_internal/social-login-button/social-login-button.js +9 -9
- package/dist/_internal/tokens/density.js +1 -1
- package/dist/_internal/tokens/field-height.js +1 -1
- package/dist/_internal/tokens/theme.js +3 -3
- package/dist/_internal/user-avatar/user-avatar.js +6 -6
- package/dist/charts.js +4 -4
- package/dist/{chunk-YPIVLPXF.js → chunk-33NBMNTB.js} +2 -2
- package/dist/{chunk-JE6GQB5J.js → chunk-4Z2HIHA5.js} +4 -4
- package/dist/{chunk-FHW3ATT7.js → chunk-53HQNN3C.js} +2 -2
- package/dist/{chunk-53O2TNSR.js → chunk-5DAVXZPY.js} +3 -3
- package/dist/{chunk-DH5UJD2I.js → chunk-5FHPZOYK.js} +2 -2
- package/dist/{chunk-NSVSC6ZC.js → chunk-5PJM772Y.js} +4 -4
- package/dist/{chunk-VYM2GPR6.js → chunk-5PTCT3LF.js} +2 -2
- package/dist/{chunk-ZH2SZ6B3.js → chunk-652PYSML.js} +6 -6
- package/dist/{chunk-PEOOCQ2T.js → chunk-6IRJAIS4.js} +2 -2
- package/dist/{chunk-PAT2BQOQ.js → chunk-6IWO7CM2.js} +2 -2
- package/dist/{chunk-YFODI4KT.js → chunk-6WZUZHJM.js} +8 -8
- package/dist/{chunk-KCDNOMMT.js → chunk-6Z6PUG4C.js} +9 -3
- package/dist/chunk-6Z6PUG4C.js.map +1 -0
- package/dist/{chunk-QEI5DC6S.js → chunk-7KJOODQB.js} +1 -1
- package/dist/{chunk-6ZD3FI5P.js → chunk-AOFI3GDS.js} +4 -4
- package/dist/{chunk-H72YKEGD.js → chunk-AOKLEE64.js} +2 -2
- package/dist/{chunk-RDFPM2AQ.js → chunk-BJGUDLWZ.js} +4 -4
- package/dist/{chunk-X66E5WSX.js → chunk-C4QKXFZN.js} +3 -3
- package/dist/{chunk-OJUORFGO.js → chunk-C6JUGWAU.js} +4 -4
- package/dist/{chunk-DLWLIPCP.js → chunk-CKFZQQ6T.js} +2 -2
- package/dist/{chunk-Z2NN53E5.js → chunk-DCT2PKMQ.js} +2 -2
- package/dist/{chunk-G6ZPQHBL.js → chunk-DSHM7VN6.js} +2 -2
- package/dist/{chunk-WV62BSWA.js → chunk-F5BYZNXY.js} +2 -2
- package/dist/{chunk-RDZGXJOD.js → chunk-F5GXWK6B.js} +2 -2
- package/dist/{chunk-4Z7GEO2R.js → chunk-G7RYAWPZ.js} +2 -2
- package/dist/{chunk-4S2LWZ7L.js → chunk-GO6XDMBB.js} +2 -2
- package/dist/{chunk-KHOAXZW2.js → chunk-H3GYVR7S.js} +3 -3
- package/dist/{chunk-XZJM6EPC.js → chunk-HUAQQ5ZL.js} +12 -2
- package/dist/chunk-HUAQQ5ZL.js.map +1 -0
- package/dist/{chunk-C6OVO6AT.js → chunk-I6MVJWUO.js} +2 -2
- package/dist/{chunk-4XHVGUOM.js → chunk-J2SFOLGZ.js} +2 -2
- package/dist/{chunk-7TE4TMS3.js → chunk-JSOJKHEI.js} +3 -3
- package/dist/{chunk-ZNBLGS66.js → chunk-K62RHTFB.js} +3 -3
- package/dist/{chunk-6N2EDWMG.js → chunk-KWU62UPM.js} +2 -2
- package/dist/{chunk-NHEWST3N.js → chunk-L3MRRAZM.js} +3 -2
- package/dist/chunk-L3MRRAZM.js.map +1 -0
- package/dist/{chunk-CJ45OL7L.js → chunk-M2GVHVE4.js} +2 -2
- package/dist/{chunk-BX7QWHKC.js → chunk-MBNXCCRG.js} +4 -4
- package/dist/{chunk-ZSTUKSTJ.js → chunk-MLUUF7OZ.js} +2 -2
- package/dist/{chunk-KW3H5FUS.js → chunk-MPYIEIBA.js} +2 -2
- package/dist/{chunk-DFI2RKVQ.js → chunk-MRWYKNBY.js} +2 -2
- package/dist/{chunk-AP4LSXRK.js → chunk-NYT3UVOH.js} +8 -8
- package/dist/{chunk-YWJDUJAR.js → chunk-O6IF4BZT.js} +2 -2
- package/dist/{chunk-3UEZ6NUI.js → chunk-OCQ6GDCF.js} +2 -2
- package/dist/{chunk-JAGAFEZL.js → chunk-OD3L6GX5.js} +2 -2
- package/dist/{chunk-RPBGUWNF.js → chunk-ON4TRXCM.js} +3 -3
- package/dist/{chunk-NOLSQK4J.js → chunk-PGV2FLE3.js} +2 -2
- package/dist/{chunk-C2TERIB4.js → chunk-QSNLIWEB.js} +2 -2
- package/dist/{chunk-XZY7O7JJ.js → chunk-RHKT2XW2.js} +2 -2
- package/dist/{chunk-4SHMSLFA.js → chunk-RRG75JJS.js} +2 -2
- package/dist/{chunk-6MD5QXXJ.js → chunk-RWRPF24F.js} +4 -4
- package/dist/{chunk-VPAOVEI2.js → chunk-SJGYMI6Y.js} +3 -3
- package/dist/{chunk-EQXIW5MQ.js → chunk-TCMH3FXD.js} +2 -2
- package/dist/{chunk-STTULW2K.js → chunk-TE3XYCX7.js} +2 -2
- package/dist/{chunk-TJ3334AJ.js → chunk-TMW7RBW7.js} +3 -3
- package/dist/{chunk-DGMDQHMI.js → chunk-U6DOF5CR.js} +14 -2
- package/dist/chunk-U6DOF5CR.js.map +1 -0
- package/dist/{chunk-3GYPZ5MI.js → chunk-UP7SSTCZ.js} +6 -6
- package/dist/{chunk-IWGW2E35.js → chunk-WF4XK5AS.js} +2 -2
- package/dist/{chunk-6REPQ352.js → chunk-WL7IG7TT.js} +2 -2
- package/dist/{chunk-U67ZQ6VM.js → chunk-YIWVHEPW.js} +2 -2
- package/dist/{chunk-DH77PLFF.js → chunk-YTVXT5TD.js} +2 -2
- package/dist/{chunk-MKLIMY3D.js → chunk-YZHX2HTC.js} +2 -2
- package/dist/{chunk-SQNQQTP7.js → chunk-Z6LTEJ7F.js} +7 -5
- package/dist/chunk-Z6LTEJ7F.js.map +1 -0
- package/dist/data-display/Alert.js +3 -3
- package/dist/data-display/Badge.js +4 -4
- package/dist/data-display/Banner.js +3 -3
- package/dist/data-display/CardKit.js +3 -3
- package/dist/data-display/Carousel.js +4 -4
- package/dist/data-display/Chart.js +4 -4
- package/dist/data-display/DataGrid.js +11 -2
- package/dist/data-display/DataViews.js +39 -38
- package/dist/data-display/DescriptionItem.js +6 -6
- package/dist/data-display/FleetMap.js +4 -4
- package/dist/data-display/MapPreview.js +1 -1
- package/dist/data-display/Progress.js +6 -6
- package/dist/data-display/Sheet.js +4 -4
- package/dist/data-display/Table.js +11 -3
- package/dist/feedback/ConfirmAction.js +3 -3
- package/dist/feedback/NotificationStatusNotice.js +3 -3
- package/dist/form/AddressAutocomplete.js +1 -1
- package/dist/form/Autocomplete.js +1 -1
- package/dist/form/Button.js +3 -3
- package/dist/form/CategorySelect.js +1 -1
- package/dist/form/CepField.js +1 -1
- package/dist/form/Command.js +4 -4
- package/dist/form/CreatableSelect.js +1 -1
- package/dist/form/DateRangePicker.js +1 -1
- package/dist/form/Input.js +1 -1
- package/dist/form/InputOTP.js +1 -1
- package/dist/form/Label.js +4 -4
- package/dist/form/Menubar.js +4 -4
- package/dist/form/NumberField.js +1 -1
- package/dist/form/PhoneInput.js +1 -1
- package/dist/form/RadioGroup.js +1 -1
- package/dist/form/Select.js +1 -1
- package/dist/form/Switch.js +3 -3
- package/dist/form/Textarea.js +2 -2
- package/dist/form/Toggle.js +1 -1
- package/dist/form/ToggleGroup.js +1 -1
- package/dist/form/total-form.js +3 -3
- package/dist/icons.js +7 -7
- package/dist/layout/Box.js +7 -7
- package/dist/layout/ContentToolbar.js +1 -1
- package/dist/layout/SettingCard.js +13 -13
- package/dist/layout/Stack.js +8 -8
- package/dist/layout/TableFilter.js +1 -1
- package/dist/navigation/AppHeader.js +4 -4
- package/dist/navigation/Pagination.js +1 -1
- package/dist/navigation/Tabs.js +1 -1
- package/dist/provider.js +7 -7
- package/dist/social-login-button.js +9 -9
- package/dist/tokens.js +15 -15
- package/dist/types/components/data-display/DataGrid/DataGrid.d.ts.map +1 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.model.d.ts +19 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.model.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-layout-context.d.ts +12 -0
- package/dist/types/components/data-display/DataViews/data-views-layout-context.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.helpers.d.ts +10 -1
- package/dist/types/components/data-display/Table/Table.helpers.d.ts.map +1 -1
- package/dist/typography/Heading.js +6 -6
- package/dist/typography/Text.js +5 -5
- package/dist/user-avatar.js +6 -6
- package/dist/utility/WorkflowStep.js +4 -4
- package/package.json +1 -1
- package/src/components/data-display/DataGrid/DataGrid.model.ts +30 -1
- package/src/components/data-display/DataGrid/DataGrid.tsx +9 -4
- package/src/components/data-display/DataViews/data-views-layout-context.tsx +24 -1
- package/src/components/data-display/Table/Table.helpers.ts +20 -2
- package/src/components/data-display/Table/Table.tsx +5 -2
- package/dist/chunk-DGMDQHMI.js.map +0 -1
- package/dist/chunk-KCDNOMMT.js.map +0 -1
- package/dist/chunk-NHEWST3N.js.map +0 -1
- package/dist/chunk-SQNQQTP7.js.map +0 -1
- package/dist/chunk-XZJM6EPC.js.map +0 -1
- /package/dist/{chunk-YPIVLPXF.js.map → chunk-33NBMNTB.js.map} +0 -0
- /package/dist/{chunk-JE6GQB5J.js.map → chunk-4Z2HIHA5.js.map} +0 -0
- /package/dist/{chunk-FHW3ATT7.js.map → chunk-53HQNN3C.js.map} +0 -0
- /package/dist/{chunk-53O2TNSR.js.map → chunk-5DAVXZPY.js.map} +0 -0
- /package/dist/{chunk-DH5UJD2I.js.map → chunk-5FHPZOYK.js.map} +0 -0
- /package/dist/{chunk-NSVSC6ZC.js.map → chunk-5PJM772Y.js.map} +0 -0
- /package/dist/{chunk-VYM2GPR6.js.map → chunk-5PTCT3LF.js.map} +0 -0
- /package/dist/{chunk-ZH2SZ6B3.js.map → chunk-652PYSML.js.map} +0 -0
- /package/dist/{chunk-PEOOCQ2T.js.map → chunk-6IRJAIS4.js.map} +0 -0
- /package/dist/{chunk-PAT2BQOQ.js.map → chunk-6IWO7CM2.js.map} +0 -0
- /package/dist/{chunk-YFODI4KT.js.map → chunk-6WZUZHJM.js.map} +0 -0
- /package/dist/{chunk-QEI5DC6S.js.map → chunk-7KJOODQB.js.map} +0 -0
- /package/dist/{chunk-6ZD3FI5P.js.map → chunk-AOFI3GDS.js.map} +0 -0
- /package/dist/{chunk-H72YKEGD.js.map → chunk-AOKLEE64.js.map} +0 -0
- /package/dist/{chunk-RDFPM2AQ.js.map → chunk-BJGUDLWZ.js.map} +0 -0
- /package/dist/{chunk-X66E5WSX.js.map → chunk-C4QKXFZN.js.map} +0 -0
- /package/dist/{chunk-OJUORFGO.js.map → chunk-C6JUGWAU.js.map} +0 -0
- /package/dist/{chunk-DLWLIPCP.js.map → chunk-CKFZQQ6T.js.map} +0 -0
- /package/dist/{chunk-Z2NN53E5.js.map → chunk-DCT2PKMQ.js.map} +0 -0
- /package/dist/{chunk-G6ZPQHBL.js.map → chunk-DSHM7VN6.js.map} +0 -0
- /package/dist/{chunk-WV62BSWA.js.map → chunk-F5BYZNXY.js.map} +0 -0
- /package/dist/{chunk-RDZGXJOD.js.map → chunk-F5GXWK6B.js.map} +0 -0
- /package/dist/{chunk-4Z7GEO2R.js.map → chunk-G7RYAWPZ.js.map} +0 -0
- /package/dist/{chunk-4S2LWZ7L.js.map → chunk-GO6XDMBB.js.map} +0 -0
- /package/dist/{chunk-KHOAXZW2.js.map → chunk-H3GYVR7S.js.map} +0 -0
- /package/dist/{chunk-C6OVO6AT.js.map → chunk-I6MVJWUO.js.map} +0 -0
- /package/dist/{chunk-4XHVGUOM.js.map → chunk-J2SFOLGZ.js.map} +0 -0
- /package/dist/{chunk-7TE4TMS3.js.map → chunk-JSOJKHEI.js.map} +0 -0
- /package/dist/{chunk-ZNBLGS66.js.map → chunk-K62RHTFB.js.map} +0 -0
- /package/dist/{chunk-6N2EDWMG.js.map → chunk-KWU62UPM.js.map} +0 -0
- /package/dist/{chunk-CJ45OL7L.js.map → chunk-M2GVHVE4.js.map} +0 -0
- /package/dist/{chunk-BX7QWHKC.js.map → chunk-MBNXCCRG.js.map} +0 -0
- /package/dist/{chunk-ZSTUKSTJ.js.map → chunk-MLUUF7OZ.js.map} +0 -0
- /package/dist/{chunk-KW3H5FUS.js.map → chunk-MPYIEIBA.js.map} +0 -0
- /package/dist/{chunk-DFI2RKVQ.js.map → chunk-MRWYKNBY.js.map} +0 -0
- /package/dist/{chunk-AP4LSXRK.js.map → chunk-NYT3UVOH.js.map} +0 -0
- /package/dist/{chunk-YWJDUJAR.js.map → chunk-O6IF4BZT.js.map} +0 -0
- /package/dist/{chunk-3UEZ6NUI.js.map → chunk-OCQ6GDCF.js.map} +0 -0
- /package/dist/{chunk-JAGAFEZL.js.map → chunk-OD3L6GX5.js.map} +0 -0
- /package/dist/{chunk-RPBGUWNF.js.map → chunk-ON4TRXCM.js.map} +0 -0
- /package/dist/{chunk-NOLSQK4J.js.map → chunk-PGV2FLE3.js.map} +0 -0
- /package/dist/{chunk-C2TERIB4.js.map → chunk-QSNLIWEB.js.map} +0 -0
- /package/dist/{chunk-XZY7O7JJ.js.map → chunk-RHKT2XW2.js.map} +0 -0
- /package/dist/{chunk-4SHMSLFA.js.map → chunk-RRG75JJS.js.map} +0 -0
- /package/dist/{chunk-6MD5QXXJ.js.map → chunk-RWRPF24F.js.map} +0 -0
- /package/dist/{chunk-VPAOVEI2.js.map → chunk-SJGYMI6Y.js.map} +0 -0
- /package/dist/{chunk-EQXIW5MQ.js.map → chunk-TCMH3FXD.js.map} +0 -0
- /package/dist/{chunk-STTULW2K.js.map → chunk-TE3XYCX7.js.map} +0 -0
- /package/dist/{chunk-TJ3334AJ.js.map → chunk-TMW7RBW7.js.map} +0 -0
- /package/dist/{chunk-3GYPZ5MI.js.map → chunk-UP7SSTCZ.js.map} +0 -0
- /package/dist/{chunk-IWGW2E35.js.map → chunk-WF4XK5AS.js.map} +0 -0
- /package/dist/{chunk-6REPQ352.js.map → chunk-WL7IG7TT.js.map} +0 -0
- /package/dist/{chunk-U67ZQ6VM.js.map → chunk-YIWVHEPW.js.map} +0 -0
- /package/dist/{chunk-DH77PLFF.js.map → chunk-YTVXT5TD.js.map} +0 -0
- /package/dist/{chunk-MKLIMY3D.js.map → chunk-YZHX2HTC.js.map} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
-
import
|
|
2
|
+
import { type DensityLevel } from '../../../tokens/density';
|
|
3
|
+
import type { DataGridProps, GridColumn, GridDensity, GridSort } from './DataGrid.types';
|
|
3
4
|
/** Which id is being edited, or `null`. */
|
|
4
5
|
export interface EditingCell {
|
|
5
6
|
rowId: string | number;
|
|
@@ -13,6 +14,13 @@ export interface VisibleRange {
|
|
|
13
14
|
/** Everything the render needs, and nothing it has to derive. */
|
|
14
15
|
export interface DataGridModel<T extends Record<string, unknown>> {
|
|
15
16
|
containerRef: React.RefObject<HTMLDivElement | null>;
|
|
17
|
+
/**
|
|
18
|
+
* The density this render actually used: `props.density`, else the
|
|
19
|
+
* theme-driven default (FUT-2769, {@link mapThemeToGridDensity}). The same
|
|
20
|
+
* value `rowHeight` was scaled by — read it here rather than re-deriving it,
|
|
21
|
+
* so the reported default and the geometry can never disagree.
|
|
22
|
+
*/
|
|
23
|
+
density: GridDensity;
|
|
16
24
|
/** A row's height as CSS: the design height, density applied, through `rem`. */
|
|
17
25
|
rowHeight: string;
|
|
18
26
|
/**
|
|
@@ -37,5 +45,15 @@ export interface DataGridModel<T extends Record<string, unknown>> {
|
|
|
37
45
|
onToggleExpansion: (rowId: string | number) => void;
|
|
38
46
|
onScroll: (event: React.UIEvent<HTMLDivElement>) => void;
|
|
39
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* The theme's density level, aliased to `GridDensity` (FUT-2769 — umbrella
|
|
50
|
+
* Decision 7, non-breaking): `GridDensity`'s three names are not the theme's
|
|
51
|
+
* three names, so this is an alias table rather than a verbatim read.
|
|
52
|
+
* `'normal'` (the theme's own default, and what a theme with no density at
|
|
53
|
+
* all resolves to) maps to `'comfortable'` — today's literal default,
|
|
54
|
+
* unchanged — so the mapping is a no-op exactly when nothing about density
|
|
55
|
+
* has been said.
|
|
56
|
+
*/
|
|
57
|
+
export declare function mapThemeToGridDensity(level: DensityLevel): GridDensity;
|
|
40
58
|
export declare function useDataGridModel<T extends Record<string, unknown>>(props: DataGridProps<T>): DataGridModel<T>;
|
|
41
59
|
//# sourceMappingURL=DataGrid.model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataGrid.model.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataGrid/DataGrid.model.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DataGrid.model.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataGrid/DataGrid.model.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGxE,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,WAAW,EAEX,QAAQ,EAET,MAAM,kBAAkB,CAAC;AAY1B,2CAA2C;AAC3C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,+CAA+C;AAC/C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9D,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACrD;;;;;OAKG;IACH,OAAO,EAAE,WAAW,CAAC;IACrB,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,aAAa,EAAE,CAAC,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC,EAAE,CAAC;IACjB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC5B,cAAc,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAChD,iBAAiB,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAChD,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,iBAAiB,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;IACzD,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IACpD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CAC1D;AASD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAItE;AA+MD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACtB,aAAa,CAAC,CAAC,CAAC,CAyClB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ReactNode } from "react";
|
|
2
|
+
import { type DensityLevel } from "../../../tokens/density";
|
|
2
3
|
import { type DataViewsLayout } from "./data-views-types";
|
|
3
4
|
/**
|
|
4
5
|
* The DataViews layout (view type): the dense "Tabela" grid, the "Grade" of
|
|
@@ -91,6 +92,17 @@ interface LayoutAvailability {
|
|
|
91
92
|
canUseList: boolean;
|
|
92
93
|
canUseBoard: boolean;
|
|
93
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* The theme's density level, aliased to `DataViewsDensity` (FUT-2769 —
|
|
97
|
+
* umbrella Decision 7, non-breaking): `DataViewsDensity`'s three names are not
|
|
98
|
+
* the theme's three names, so this is an alias table rather than a verbatim
|
|
99
|
+
* read. `'normal'` (the theme's own default, and what a theme with no density
|
|
100
|
+
* at all resolves to) maps to `'cozy'` — today's literal default, unchanged —
|
|
101
|
+
* so the mapping is a no-op exactly when nothing about density has been said.
|
|
102
|
+
* The STORED per-viewer preference still wins over this default, unchanged
|
|
103
|
+
* from today (below).
|
|
104
|
+
*/
|
|
105
|
+
export declare function mapThemeToDataViewsDensity(level: DensityLevel): DataViewsDensity;
|
|
94
106
|
interface LayoutProviderProps extends Partial<LayoutAvailability> {
|
|
95
107
|
/** Which layout to show first when the user has expressed no preference. */
|
|
96
108
|
defaultLayout?: DataViewsLayout;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-views-layout-context.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-layout-context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA2D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"data-views-layout-context.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/DataViews/data-views-layout-context.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA2D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAOhG,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGxE,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;;;;;;GAOG;AACH,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,UAAU,oBAAoB;IAC5B,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C,oEAAoE;IACpE,OAAO,EAAE,gBAAgB,CAAC;IAC1B,UAAU,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAChD,2EAA2E;IAC3E,WAAW,EAAE,OAAO,CAAC;IACrB,6EAA6E;IAC7E,UAAU,EAAE,OAAO,CAAC;IACpB,mFAAmF;IACnF,WAAW,EAAE,OAAO,CAAC;IACrB,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAwBD;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;AAKlE,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAIhE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAI/D,CAAC;AAEF,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAElF;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAIhE,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGrD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,oDAAoD;AACpD,UAAU,kBAAkB;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAYD;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,YAAY,GAAG,gBAAgB,CAIhF;AAmDD,UAAU,mBAAoB,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IAC/D,4EAA4E;IAC5E,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B;;;;;;;;;;;;;OAaG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,WAAmB,EACnB,UAAkB,EAClB,WAAmB,EACnB,aAAuB,EACvB,UAAU,EACV,kBAA0B,EAC1B,QAAQ,GACT,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsDzC;AAED,oEAAoE;AACpE,wBAAgB,kBAAkB,IAAI,oBAAoB,CAMzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,YAAY,EAAE,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CA8BxG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Table/Table.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAEV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Table/Table.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAEV,YAAY,EACZ,UAAU,EACV,gBAAgB,EAAC,MAAM,eAAe,CAAC;AA6CzC,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CA+BA,CAAC;AAqBF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;AAyMxF,eAAO,MAAM,KAAK,kGAmEjB,CAAC"}
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import type { Theme } from '@mui/material/styles/index.js';
|
|
2
2
|
import type React from 'react';
|
|
3
|
-
import type {
|
|
3
|
+
import type { DensityLevel } from '../../../tokens/density';
|
|
4
|
+
import type { TableDensity, TableProps } from './Table.types';
|
|
4
5
|
/**
|
|
5
6
|
* A virtualised row's height in design px: the caller's `rowHeight`, else 52.
|
|
6
7
|
* Resolved here rather than in {@link TABLE_DEFAULTS} so the one number is read
|
|
7
8
|
* where it is drawn (`rem`) and where the window is positioned with it (`remPx`).
|
|
8
9
|
*/
|
|
9
10
|
export declare const tableRowHeight: (rowHeight: number | undefined) => number;
|
|
11
|
+
/**
|
|
12
|
+
* `density`'s default (FUT-2769): the caller's own prop, else the theme's
|
|
13
|
+
* level — `'normal'` for a theme with no density at all (`useDensity()`'s own
|
|
14
|
+
* fallback) or an unnamed numeric one. `TableDensity` is a verbatim match for
|
|
15
|
+
* the theme's `DensityLevel`, so no alias table is needed, unlike `DataGrid`'s
|
|
16
|
+
* `mapThemeToGridDensity` or `DataViews`' `mapThemeToDataViewsDensity`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const resolveTableDensity: (explicit: TableDensity | undefined, themeLevel: DensityLevel | undefined) => TableDensity;
|
|
10
19
|
/**
|
|
11
20
|
* The table's one scroll container (FUT-2658): `containerHeight` tall
|
|
12
21
|
* whenever it is set, or 400 when `virtualScrolling` is on and it is not,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.helpers.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Table/Table.helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Table.helpers.d.ts","sourceRoot":"","sources":["../../../../../src/components/data-display/Table/Table.helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,WAAW,MAAM,GAAG,SAAS,KAAG,MAAyB,CAAC;AAEzF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,YAAY,GAAG,SAAS,EAClC,YAAY,YAAY,GAAG,SAAS,KACnC,YAAkD,CAAC;AAQtD;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,KAAK,EAAE,GAAG,UAAU,KAAG,KAAK,CAAC,aAAa,GAAG,SAGnE,CAAC;AAEhB;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,KAAK,EACZ,cAAc,OAAO,GAAG,SAAS,KAChC,KAAK,CAAC,aAAa,GAAG,SAA4E,CAAC;AAEtG,gFAAgF;AAChF,eAAO,MAAM,cAAc,GAAI,OAAO,KAAK,EAAE,GAAG,UAAU,KAAG,KAAK,CAAC,aAAa,GAAG,SAIlF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GACvB,cAAc,MAAM,GAAG,SAAS,EAChC,SAAS,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAClE,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,SAC5B,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,GAAG,UAAU,KAAG,MAAM,GAAG,SAIxC,CAAC;AAQhB,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,UAAU,CAe9C,CAAC;AAKF,eAAO,MAAM,YAAY,GAAI,OAAO,UAAU,KAAG,OAAO,CAAC,UAAU,CAGzC,CAAC;AA2D3B;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,UAAU,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CACc,CAAC"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import "../chunk-6GP2DOOO.js";
|
|
2
2
|
import {
|
|
3
3
|
Heading
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-C4QKXFZN.js";
|
|
5
|
+
import "../chunk-WF4XK5AS.js";
|
|
6
|
+
import "../chunk-M2GVHVE4.js";
|
|
7
7
|
import "../chunk-TYJR4GOF.js";
|
|
8
8
|
import "../chunk-PT6TCWIW.js";
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-VBP46YP4.js";
|
|
9
|
+
import "../chunk-6WZUZHJM.js";
|
|
11
10
|
import "../chunk-2BYKTBDL.js";
|
|
12
11
|
import "../chunk-AG66JBNH.js";
|
|
13
12
|
import "../chunk-FZXKH2ZT.js";
|
|
14
|
-
import "../chunk-
|
|
13
|
+
import "../chunk-VBP46YP4.js";
|
|
15
14
|
import "../chunk-O6MJWHU5.js";
|
|
15
|
+
import "../chunk-26X4CZVR.js";
|
|
16
16
|
import "../chunk-FQ6UW7IY.js";
|
|
17
17
|
import "../chunk-6JAIFIPW.js";
|
|
18
18
|
import "../chunk-N3GAFIXG.js";
|
package/dist/typography/Text.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import "../chunk-VUHLNYAE.js";
|
|
2
2
|
import {
|
|
3
3
|
Text
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-YZHX2HTC.js";
|
|
5
|
+
import "../chunk-6IWO7CM2.js";
|
|
6
6
|
import "../chunk-TYJR4GOF.js";
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-VBP46YP4.js";
|
|
7
|
+
import "../chunk-6WZUZHJM.js";
|
|
9
8
|
import "../chunk-2BYKTBDL.js";
|
|
10
9
|
import "../chunk-AG66JBNH.js";
|
|
11
10
|
import "../chunk-FZXKH2ZT.js";
|
|
12
|
-
import "../chunk-
|
|
11
|
+
import "../chunk-VBP46YP4.js";
|
|
13
12
|
import "../chunk-O6MJWHU5.js";
|
|
13
|
+
import "../chunk-26X4CZVR.js";
|
|
14
14
|
import "../chunk-6JAIFIPW.js";
|
|
15
15
|
import "../chunk-YKCAJ2TN.js";
|
|
16
16
|
import "../chunk-PZ5AY32C.js";
|
package/dist/user-avatar.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
UserAvatar,
|
|
3
3
|
UserMenu
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-O6IF4BZT.js";
|
|
5
5
|
import "./chunk-UDQSIRAP.js";
|
|
6
6
|
import "./chunk-NYFGFELX.js";
|
|
7
7
|
import "./chunk-3ZVUNSFF.js";
|
|
@@ -19,20 +19,20 @@ import "./chunk-K6LNHHSH.js";
|
|
|
19
19
|
import "./chunk-ZKWVCSAB.js";
|
|
20
20
|
import "./chunk-LN46DSMF.js";
|
|
21
21
|
import "./chunk-TAMIZE4Q.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-YZHX2HTC.js";
|
|
23
|
+
import "./chunk-6IWO7CM2.js";
|
|
24
24
|
import "./chunk-TYJR4GOF.js";
|
|
25
25
|
import "./chunk-M47ZOUGF.js";
|
|
26
26
|
import "./chunk-7FDU3FIN.js";
|
|
27
27
|
import "./chunk-EPEJMTCQ.js";
|
|
28
28
|
import "./chunk-GDN2LUTZ.js";
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-VBP46YP4.js";
|
|
29
|
+
import "./chunk-6WZUZHJM.js";
|
|
31
30
|
import "./chunk-2BYKTBDL.js";
|
|
32
31
|
import "./chunk-AG66JBNH.js";
|
|
33
32
|
import "./chunk-FZXKH2ZT.js";
|
|
34
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-VBP46YP4.js";
|
|
35
34
|
import "./chunk-O6MJWHU5.js";
|
|
35
|
+
import "./chunk-26X4CZVR.js";
|
|
36
36
|
import "./chunk-FQ6UW7IY.js";
|
|
37
37
|
import "./chunk-6JAIFIPW.js";
|
|
38
38
|
import "./chunk-N3GAFIXG.js";
|
|
@@ -6,20 +6,20 @@ import "../chunk-7OO3BELX.js";
|
|
|
6
6
|
import "../chunk-KJID4PRD.js";
|
|
7
7
|
import "../chunk-RXNIOPOA.js";
|
|
8
8
|
import "../chunk-ZSTSISM6.js";
|
|
9
|
-
import "../chunk-DJKVSUXH.js";
|
|
10
9
|
import "../chunk-7ZPUN7TV.js";
|
|
10
|
+
import "../chunk-DJKVSUXH.js";
|
|
11
11
|
import "../chunk-PT6TCWIW.js";
|
|
12
12
|
import "../chunk-M47ZOUGF.js";
|
|
13
13
|
import "../chunk-7FDU3FIN.js";
|
|
14
14
|
import "../chunk-EPEJMTCQ.js";
|
|
15
15
|
import "../chunk-GDN2LUTZ.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-VBP46YP4.js";
|
|
16
|
+
import "../chunk-6WZUZHJM.js";
|
|
18
17
|
import "../chunk-2BYKTBDL.js";
|
|
19
18
|
import "../chunk-AG66JBNH.js";
|
|
20
19
|
import "../chunk-FZXKH2ZT.js";
|
|
21
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-VBP46YP4.js";
|
|
22
21
|
import "../chunk-O6MJWHU5.js";
|
|
22
|
+
import "../chunk-26X4CZVR.js";
|
|
23
23
|
import "../chunk-FQ6UW7IY.js";
|
|
24
24
|
import "../chunk-6JAIFIPW.js";
|
|
25
25
|
import "../chunk-N3GAFIXG.js";
|
package/package.json
CHANGED
|
@@ -15,11 +15,13 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
|
15
15
|
import type React from 'react';
|
|
16
16
|
|
|
17
17
|
import { rem, remPx } from '../../../tokens/relative';
|
|
18
|
+
import { useDensity, type DensityLevel } from '../../../tokens/density';
|
|
18
19
|
|
|
19
20
|
import { processRows } from './DataGrid.rows';
|
|
20
21
|
import type {
|
|
21
22
|
DataGridProps,
|
|
22
23
|
GridColumn,
|
|
24
|
+
GridDensity,
|
|
23
25
|
GridFilter,
|
|
24
26
|
GridSort,
|
|
25
27
|
SortDirection,
|
|
@@ -50,6 +52,13 @@ export interface VisibleRange {
|
|
|
50
52
|
/** Everything the render needs, and nothing it has to derive. */
|
|
51
53
|
export interface DataGridModel<T extends Record<string, unknown>> {
|
|
52
54
|
containerRef: React.RefObject<HTMLDivElement | null>;
|
|
55
|
+
/**
|
|
56
|
+
* The density this render actually used: `props.density`, else the
|
|
57
|
+
* theme-driven default (FUT-2769, {@link mapThemeToGridDensity}). The same
|
|
58
|
+
* value `rowHeight` was scaled by — read it here rather than re-deriving it,
|
|
59
|
+
* so the reported default and the geometry can never disagree.
|
|
60
|
+
*/
|
|
61
|
+
density: GridDensity;
|
|
53
62
|
/** A row's height as CSS: the design height, density applied, through `rem`. */
|
|
54
63
|
rowHeight: string;
|
|
55
64
|
/**
|
|
@@ -82,6 +91,21 @@ function densityHeight(base: number, density: DataGridProps['density']): number
|
|
|
82
91
|
return base;
|
|
83
92
|
}
|
|
84
93
|
|
|
94
|
+
/**
|
|
95
|
+
* The theme's density level, aliased to `GridDensity` (FUT-2769 — umbrella
|
|
96
|
+
* Decision 7, non-breaking): `GridDensity`'s three names are not the theme's
|
|
97
|
+
* three names, so this is an alias table rather than a verbatim read.
|
|
98
|
+
* `'normal'` (the theme's own default, and what a theme with no density at
|
|
99
|
+
* all resolves to) maps to `'comfortable'` — today's literal default,
|
|
100
|
+
* unchanged — so the mapping is a no-op exactly when nothing about density
|
|
101
|
+
* has been said.
|
|
102
|
+
*/
|
|
103
|
+
export function mapThemeToGridDensity(level: DensityLevel): GridDensity {
|
|
104
|
+
if (level === 'compact') return 'compact';
|
|
105
|
+
if (level === 'comfortable') return 'spacious';
|
|
106
|
+
return 'comfortable';
|
|
107
|
+
}
|
|
108
|
+
|
|
85
109
|
/** The rows this render should show, with every client-mode step resolved. */
|
|
86
110
|
function useProcessedRows<T extends Record<string, unknown>>(
|
|
87
111
|
props: DataGridProps<T>,
|
|
@@ -292,11 +316,15 @@ export function useDataGridModel<T extends Record<string, unknown>>(
|
|
|
292
316
|
): DataGridModel<T> {
|
|
293
317
|
const { columns } = props;
|
|
294
318
|
const theme = useTheme();
|
|
319
|
+
const themeDensity = useDensity();
|
|
295
320
|
const containerRef = useRef<HTMLDivElement>(null);
|
|
296
321
|
const [editingCell, setEditingCell] = useState<EditingCell | null>(null);
|
|
297
322
|
const { sortBy, filters, setInternalSortBy } = useSortAndFilter(props);
|
|
323
|
+
// An explicit `density` prop wins; otherwise the theme's own level, aliased
|
|
324
|
+
// to this grid's three names (FUT-2769).
|
|
325
|
+
const density = props.density ?? mapThemeToGridDensity(themeDensity.level ?? 'normal');
|
|
298
326
|
// 52 design px unless the caller says; the density scales it, then the type scale does.
|
|
299
|
-
const designRowHeight = densityHeight(props.rowHeight ?? 52,
|
|
327
|
+
const designRowHeight = densityHeight(props.rowHeight ?? 52, density);
|
|
300
328
|
const rowPitch = remPx(theme, designRowHeight);
|
|
301
329
|
const columnMap = useMemo(
|
|
302
330
|
() => new Map(columns.map((column) => [column.id, column])),
|
|
@@ -311,6 +339,7 @@ export function useDataGridModel<T extends Record<string, unknown>>(
|
|
|
311
339
|
|
|
312
340
|
return {
|
|
313
341
|
containerRef,
|
|
342
|
+
density,
|
|
314
343
|
rowHeight: rem(theme, designRowHeight),
|
|
315
344
|
rowPitch,
|
|
316
345
|
visibleColumns,
|
|
@@ -19,7 +19,7 @@ import type React from 'react';
|
|
|
19
19
|
import { GridBody, GridHeader } from './DataGrid.body';
|
|
20
20
|
import { useDataGridModel } from './DataGrid.model';
|
|
21
21
|
import { DataGridEmpty, DataGridError, DataGridLoading } from './DataGrid.states';
|
|
22
|
-
import type { DataGridProps } from './DataGrid.types';
|
|
22
|
+
import type { DataGridProps, GridDensity } from './DataGrid.types';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* The chrome every render needs, with the defaults resolved ONCE.
|
|
@@ -28,7 +28,10 @@ import type { DataGridProps } from './DataGrid.types';
|
|
|
28
28
|
* a dozen branches: the gate counted them, correctly, as complexity the render
|
|
29
29
|
* did not need to carry.
|
|
30
30
|
*/
|
|
31
|
-
function resolveChrome<T extends Record<string, unknown>>(
|
|
31
|
+
function resolveChrome<T extends Record<string, unknown>>(
|
|
32
|
+
props: DataGridProps<T>,
|
|
33
|
+
density: GridDensity,
|
|
34
|
+
): {
|
|
32
35
|
dataAttrs: Record<string, unknown>;
|
|
33
36
|
placeholder: {
|
|
34
37
|
dataTestId?: string;
|
|
@@ -43,7 +46,9 @@ function resolveChrome<T extends Record<string, unknown>>(props: DataGridProps<T
|
|
|
43
46
|
return {
|
|
44
47
|
dataAttrs: {
|
|
45
48
|
'data-ui': 'datagrid',
|
|
46
|
-
|
|
49
|
+
// The SAME resolved density the row-height geometry used (FUT-2769) —
|
|
50
|
+
// not re-derived here, so this attribute can never disagree with it.
|
|
51
|
+
'data-density': density,
|
|
47
52
|
'data-size-mode': props.sizeMode ?? 'auto',
|
|
48
53
|
'data-virtual-rows': props.virtualizeRows ?? true,
|
|
49
54
|
'data-virtual-cols': props.virtualizeColumns ?? false,
|
|
@@ -65,7 +70,7 @@ export const DataGrid = <T extends Record<string, unknown> = Record<string, unkn
|
|
|
65
70
|
props: DataGridProps<T>,
|
|
66
71
|
): React.JSX.Element => {
|
|
67
72
|
const model = useDataGridModel(props);
|
|
68
|
-
const { dataAttrs, placeholder } = resolveChrome(props);
|
|
73
|
+
const { dataAttrs, placeholder } = resolveChrome(props, model.density);
|
|
69
74
|
|
|
70
75
|
if (props.loading) return <DataGridLoading {...placeholder} />;
|
|
71
76
|
if (props.error) return <DataGridError {...placeholder} error={props.error} />;
|
|
@@ -7,6 +7,7 @@ import GridViewOutlinedIcon from "@mui/icons-material/GridViewOutlined";
|
|
|
7
7
|
import { Slider } from "../../form/Slider";
|
|
8
8
|
import { Box } from "../../../mui/Box";
|
|
9
9
|
import { sxRem } from "../../../tokens/relative";
|
|
10
|
+
import { useDensity, type DensityLevel } from "../../../tokens/density";
|
|
10
11
|
|
|
11
12
|
import { useDataViewsCopy } from "./data-views-copy-context";
|
|
12
13
|
import { DATA_VIEWS_LAYOUTS, type DataViewsLayout } from "./data-views-types";
|
|
@@ -166,6 +167,22 @@ function isDensity(value: unknown): value is DataViewsDensity {
|
|
|
166
167
|
return DENSITIES.includes(value as DataViewsDensity);
|
|
167
168
|
}
|
|
168
169
|
|
|
170
|
+
/**
|
|
171
|
+
* The theme's density level, aliased to `DataViewsDensity` (FUT-2769 —
|
|
172
|
+
* umbrella Decision 7, non-breaking): `DataViewsDensity`'s three names are not
|
|
173
|
+
* the theme's three names, so this is an alias table rather than a verbatim
|
|
174
|
+
* read. `'normal'` (the theme's own default, and what a theme with no density
|
|
175
|
+
* at all resolves to) maps to `'cozy'` — today's literal default, unchanged —
|
|
176
|
+
* so the mapping is a no-op exactly when nothing about density has been said.
|
|
177
|
+
* The STORED per-viewer preference still wins over this default, unchanged
|
|
178
|
+
* from today (below).
|
|
179
|
+
*/
|
|
180
|
+
export function mapThemeToDataViewsDensity(level: DensityLevel): DataViewsDensity {
|
|
181
|
+
if (level === 'compact') return 'compact';
|
|
182
|
+
if (level === 'comfortable') return 'comfortable';
|
|
183
|
+
return 'cozy';
|
|
184
|
+
}
|
|
185
|
+
|
|
169
186
|
/** The remembered density, or undefined (no window, no value, junk). */
|
|
170
187
|
function readStoredDensity(): DataViewsDensity | undefined {
|
|
171
188
|
try {
|
|
@@ -258,6 +275,10 @@ export function DataViewsLayoutProvider({
|
|
|
258
275
|
children,
|
|
259
276
|
}: LayoutProviderProps): React.JSX.Element {
|
|
260
277
|
const availability = { canUseCards, canUseList, canUseBoard };
|
|
278
|
+
// Read once, outside the lazy initializer below: a hook cannot be called
|
|
279
|
+
// from inside one (FUT-2769 — the theme is only a fallback when nothing is
|
|
280
|
+
// stored, same precedence as before this ticket).
|
|
281
|
+
const themeDensity = useDensity();
|
|
261
282
|
const [layout, setLayoutState] = useState<DataViewsLayout>(() =>
|
|
262
283
|
pinLayout(
|
|
263
284
|
viewLayout ?? (ignoreStoredLayout ? undefined : readStoredLayout()) ?? defaultLayout,
|
|
@@ -265,7 +286,9 @@ export function DataViewsLayoutProvider({
|
|
|
265
286
|
),
|
|
266
287
|
);
|
|
267
288
|
const [density, setDensityState] = useState<DataViewsDensity>(
|
|
268
|
-
() =>
|
|
289
|
+
() =>
|
|
290
|
+
(ignoreStoredLayout ? undefined : readStoredDensity()) ??
|
|
291
|
+
mapThemeToDataViewsDensity(themeDensity.level ?? "normal"),
|
|
269
292
|
);
|
|
270
293
|
const [zoom, setZoom] = useState(DEFAULT_ZOOM);
|
|
271
294
|
// A newly applied view carrying a layout switches to it (its reference-change
|
|
@@ -3,8 +3,9 @@ import type { Theme } from '@mui/material/styles/index.js';
|
|
|
3
3
|
import type React from 'react';
|
|
4
4
|
|
|
5
5
|
import { rem } from '../../../tokens/relative';
|
|
6
|
+
import type { DensityLevel } from '../../../tokens/density';
|
|
6
7
|
|
|
7
|
-
import type { TableProps } from './Table.types';
|
|
8
|
+
import type { TableDensity, TableProps } from './Table.types';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* A virtualised row's height in design px: the caller's `rowHeight`, else 52.
|
|
@@ -13,6 +14,18 @@ import type { TableProps } from './Table.types';
|
|
|
13
14
|
*/
|
|
14
15
|
export const tableRowHeight = (rowHeight: number | undefined): number => rowHeight ?? 52;
|
|
15
16
|
|
|
17
|
+
/**
|
|
18
|
+
* `density`'s default (FUT-2769): the caller's own prop, else the theme's
|
|
19
|
+
* level — `'normal'` for a theme with no density at all (`useDensity()`'s own
|
|
20
|
+
* fallback) or an unnamed numeric one. `TableDensity` is a verbatim match for
|
|
21
|
+
* the theme's `DensityLevel`, so no alias table is needed, unlike `DataGrid`'s
|
|
22
|
+
* `mapThemeToGridDensity` or `DataViews`' `mapThemeToDataViewsDensity`.
|
|
23
|
+
*/
|
|
24
|
+
export const resolveTableDensity = (
|
|
25
|
+
explicit: TableDensity | undefined,
|
|
26
|
+
themeLevel: DensityLevel | undefined,
|
|
27
|
+
): TableDensity => explicit ?? themeLevel ?? 'normal';
|
|
28
|
+
|
|
16
29
|
/** The scroll box's height: a number is design px, 400 unless the caller says otherwise. */
|
|
17
30
|
const scrollHeight = (theme: Theme, containerHeight: number | string | undefined): string => {
|
|
18
31
|
const box = containerHeight || 400;
|
|
@@ -71,6 +84,12 @@ export const virtualHeight = (p: TableProps): number | undefined =>
|
|
|
71
84
|
? p.containerHeight
|
|
72
85
|
: undefined;
|
|
73
86
|
|
|
87
|
+
// `density` is NOT here (FUT-2769): `TableDensity` is a verbatim match for
|
|
88
|
+
// the theme's `DensityLevel`, so `Table.tsx` resolves it itself —
|
|
89
|
+
// `props.density ?? (useDensity().level ?? 'normal')` — reading the theme
|
|
90
|
+
// requires a hook, which this module-level constant cannot call. At
|
|
91
|
+
// `theme.density` unset, or its level `'normal'`, that reproduces this
|
|
92
|
+
// object's OTHER defaults' shape exactly: today's literal `'normal'`.
|
|
74
93
|
export const TABLE_DEFAULTS: Partial<TableProps> = {
|
|
75
94
|
variant: 'default',
|
|
76
95
|
stripeColor: 'neutral',
|
|
@@ -78,7 +97,6 @@ export const TABLE_DEFAULTS: Partial<TableProps> = {
|
|
|
78
97
|
pulse: false,
|
|
79
98
|
hoverable: false,
|
|
80
99
|
loading: false,
|
|
81
|
-
density: 'normal',
|
|
82
100
|
stickyHeader: false,
|
|
83
101
|
selectable: false,
|
|
84
102
|
selectedRows: [],
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
containerStyle,
|
|
25
25
|
definedProps,
|
|
26
26
|
headerRefFor,
|
|
27
|
+
resolveTableDensity,
|
|
27
28
|
scrollerRadiusStyle,
|
|
28
29
|
tableDomProps,
|
|
29
30
|
tableRowHeight,
|
|
@@ -32,9 +33,9 @@ import {
|
|
|
32
33
|
import { useTableSelection, useVirtualScrolling } from './Table.hooks';
|
|
33
34
|
import { EnhancedTableBody, EnhancedTableHeader } from './TableParts';
|
|
34
35
|
import { EmptyRow, NoDataPlaceholder } from './TableStates';
|
|
35
|
-
import {
|
|
36
|
-
tableStyles } from './Table.styles';
|
|
36
|
+
import { tableStyles } from './Table.styles';
|
|
37
37
|
import { rem } from '../../../tokens/relative';
|
|
38
|
+
import { useDensity } from '../../../tokens/density';
|
|
38
39
|
|
|
39
40
|
// Helper function to get stripe color from theme
|
|
40
41
|
const StyledTable = styled(MuiTable, {
|
|
@@ -329,7 +330,9 @@ const TableEmptyState: React.FC<{
|
|
|
329
330
|
|
|
330
331
|
export const Table = React.forwardRef<globalThis.HTMLTableElement, TableProps>(
|
|
331
332
|
(tableProps, ref) => {
|
|
333
|
+
const themeDensity = useDensity(); // FUT-2769 — density's default; see resolveTableDensity
|
|
332
334
|
const resolved = { ...TABLE_DEFAULTS, ...definedProps(tableProps) } as TableProps;
|
|
335
|
+
resolved.density = resolveTableDensity(resolved.density, themeDensity.level);
|
|
333
336
|
const {
|
|
334
337
|
columns,
|
|
335
338
|
data,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/DataGrid/DataGrid.model.ts"],"sourcesContent":["/**\n * The DataGrid's STATE, in one hook.\n *\n * The component used to hold all of it inline, which made its body 700 lines\n * long and put the row pipeline, the virtualization window and the JSX in one\n * scope where any of them could reach any other. Split out, each piece is a\n * hook with named inputs and the render is left with nothing to do but render.\n *\n * Controlled/uncontrolled is resolved in ONE place per feature: a caller that\n * passes `sorting.sortBy` owns the sort, and a caller that does not gets the\n * internal state — the component never holds a second, divergent copy.\n */\nimport { useTheme } from '@mui/material/styles/index.js';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type React from 'react';\n\nimport { rem, remPx } from '../../../tokens/relative';\n\nimport { processRows } from './DataGrid.rows';\nimport type {\n DataGridProps,\n GridColumn,\n GridFilter,\n GridSort,\n SortDirection,\n} from './DataGrid.types';\n\nconst DEFAULT_PAGE_SIZE = 50;\n/** Rows rendered on either side of the window, so a fast scroll stays filled. */\nconst OVERSCAN_COUNT = 20;\n/** Below this many rows, virtualization costs more than it saves. */\nconst VIRTUALIZATION_THRESHOLD = 100;\n/** The initial (and reset) window size, before a scroll has measured anything. */\nconst INITIAL_WINDOW = 50;\n/** Re-window only past this much drift, so a scroll is not one setState per pixel. */\nconst WINDOW_DRIFT = 5;\n\n/** Which id is being edited, or `null`. */\nexport interface EditingCell {\n rowId: string | number;\n colId: string;\n}\n\n/** The visible slice of a virtualized body. */\nexport interface VisibleRange {\n start: number;\n end: number;\n}\n\n/** Everything the render needs, and nothing it has to derive. */\nexport interface DataGridModel<T extends Record<string, unknown>> {\n containerRef: React.RefObject<HTMLDivElement | null>;\n /** A row's height as CSS: the design height, density applied, through `rem`. */\n rowHeight: string;\n /**\n * The same height in px (`remPx`) — what the window divides `scrollTop` by.\n * One design number drawn two ways, so the rows and the window never disagree.\n */\n rowPitch: number;\n visibleColumns: GridColumn<T>[];\n processedRows: T[];\n visibleRows: T[];\n visibleRange: VisibleRange;\n virtualized: boolean;\n sortBy: readonly GridSort[];\n selectedRowIds: Array<string | number>;\n selectedRowIdsSet: ReadonlySet<string | number>;\n expandedRowIdsSet: ReadonlySet<string | number>;\n editingCell: EditingCell | null;\n setEditingCell: (cell: EditingCell | null) => void;\n setSelectedRowIds: (ids: Array<string | number>) => void;\n onSort: (columnId: string) => void;\n onToggleRow: (rowId: string | number, isSelected: boolean) => void;\n onToggleExpansion: (rowId: string | number) => void;\n onScroll: (event: React.UIEvent<HTMLDivElement>) => void;\n}\n\n/** The row height a density implies, in design px. */\nfunction densityHeight(base: number, density: DataGridProps['density']): number {\n if (density === 'compact') return Math.max(base * 0.8, 32);\n if (density === 'spacious') return base * 1.2;\n return base;\n}\n\n/** The rows this render should show, with every client-mode step resolved. */\nfunction useProcessedRows<T extends Record<string, unknown>>(\n props: DataGridProps<T>,\n columnMap: ReadonlyMap<string, GridColumn<T>>,\n sortBy: readonly GridSort[],\n filters: readonly GridFilter[],\n): T[] {\n const { rows, filtering = {}, sorting = {}, pagination, virtualizeRows = true } = props;\n const pageIndex = pagination?.pageIndex ?? 0;\n const pageSize = pagination?.pageSize ?? DEFAULT_PAGE_SIZE;\n return useMemo(\n () =>\n processRows({\n rows,\n columnMap,\n filters,\n sortBy,\n needsFiltering: filtering.mode === 'client' && filters.length > 0,\n needsSorting: sorting.mode === 'client' && sortBy.length > 0,\n // Virtualization already slices; doing both would page a page.\n needsPagination: pagination?.mode === 'client' && !virtualizeRows,\n pageIndex,\n pageSize,\n }),\n [\n rows,\n columnMap,\n filters,\n sortBy,\n filtering.mode,\n sorting.mode,\n pagination?.mode,\n virtualizeRows,\n pageIndex,\n pageSize,\n ],\n );\n}\n\n/**\n * The virtualization window and the scroll handler that moves it. `rowPitch` is\n * px, like the `scrollTop` and `clientHeight` it is divided into.\n *\n * Throttled through `requestAnimationFrame`, and only committed once the window\n * has drifted meaningfully — a `setState` per scroll event re-renders every\n * visible row for a movement the eye cannot see.\n */\nfunction useRowWindow(\n rowCount: number,\n rowPitch: number,\n enabled: boolean,\n): { range: VisibleRange; onScroll: (event: React.UIEvent<HTMLDivElement>) => void } {\n const [range, setRange] = useState<VisibleRange>({ start: 0, end: INITIAL_WINDOW });\n const rafRef = useRef<number | null>(null);\n\n useEffect(() => {\n if (rowCount < range.end) setRange({ start: 0, end: Math.min(INITIAL_WINDOW, rowCount) });\n }, [rowCount, range.end]);\n\n useEffect(\n () => () => {\n if (rafRef.current !== null) window.cancelAnimationFrame(rafRef.current);\n },\n [],\n );\n\n const onScroll = useCallback(\n (event: React.UIEvent<HTMLDivElement>) => {\n if (!enabled) return;\n const { scrollTop, clientHeight } = event.currentTarget;\n if (rafRef.current !== null) window.cancelAnimationFrame(rafRef.current);\n rafRef.current = window.requestAnimationFrame(() => {\n const first = Math.floor(scrollTop / rowPitch);\n const visible = Math.ceil(clientHeight / rowPitch);\n const start = Math.max(0, first - OVERSCAN_COUNT);\n const end = Math.min(first + visible + OVERSCAN_COUNT, rowCount);\n setRange((current) =>\n Math.abs(start - current.start) > WINDOW_DRIFT ||\n Math.abs(end - current.end) > WINDOW_DRIFT\n ? { start, end }\n : current,\n );\n rafRef.current = null;\n });\n },\n [enabled, rowPitch, rowCount],\n );\n\n return { range, onScroll };\n}\n\n/** The next `sortBy` for a header press: asc → desc → unsorted. */\nfunction nextSortBy(current: readonly GridSort[], columnId: string): GridSort[] {\n const existing = current.find((sort) => sort.id === columnId);\n let dir: SortDirection = 'asc';\n if (existing?.dir === 'asc') dir = 'desc';\n else if (existing?.dir === 'desc') dir = null;\n return dir ? [{ id: columnId, dir }] : current.filter((sort) => sort.id !== columnId);\n}\n\n/** Selection + expansion, each resolved once against its controlled prop. */\nfunction useRowFlags<T extends Record<string, unknown>>(\n props: DataGridProps<T>,\n): Pick<\n DataGridModel<T>,\n | 'selectedRowIds'\n | 'selectedRowIdsSet'\n | 'expandedRowIdsSet'\n | 'setSelectedRowIds'\n | 'onToggleRow'\n | 'onToggleExpansion'\n> {\n const { selection = { mode: 'none' }, expansion } = props;\n const [internalSelected, setInternalSelected] = useState(selection.defaultSelectedRowIds ?? []);\n const [internalExpanded, setInternalExpanded] = useState(expansion?.defaultExpandedRowIds ?? []);\n const selectedRowIds = selection.selectedRowIds ?? internalSelected;\n const expandedRowIds = expansion?.expandedRowIds ?? internalExpanded;\n\n const commitSelected = useCallback(\n (ids: Array<string | number>) => {\n if (selection.onChangeSelected) selection.onChangeSelected(ids);\n else setInternalSelected(ids);\n },\n [selection],\n );\n\n return {\n selectedRowIds,\n selectedRowIdsSet: useMemo(() => new Set(selectedRowIds), [selectedRowIds]),\n expandedRowIdsSet: useMemo(() => new Set(expandedRowIds), [expandedRowIds]),\n setSelectedRowIds: commitSelected,\n onToggleRow: (rowId, isSelected) => {\n if (selection.mode === 'single') commitSelected(isSelected ? [rowId] : []);\n else if (selection.mode === 'multi') {\n commitSelected(\n isSelected\n ? [...selectedRowIds, rowId]\n : selectedRowIds.filter((id) => id !== rowId),\n );\n }\n },\n onToggleExpansion: (rowId) => {\n if (!expansion) return;\n const next = expandedRowIds.includes(rowId)\n ? expandedRowIds.filter((id) => id !== rowId)\n : [...expandedRowIds, rowId];\n if (expansion.onChangeExpanded) expansion.onChangeExpanded(next);\n else setInternalExpanded(next);\n },\n };\n}\n\n/**\n * A header press, routed to whoever owns the sort: the server (which must\n * re-query — sorting the current page locally would reorder one page of a\n * dataset and call it sorted), the caller's `onChangeSortBy`, or internal state.\n */\nfunction useSortHandler<T extends Record<string, unknown>>(\n props: DataGridProps<T>,\n sortBy: readonly GridSort[],\n filters: readonly GridFilter[],\n setInternalSortBy: (next: GridSort[]) => void,\n): (columnId: string) => void {\n const { sorting = {}, pagination, onRequestData } = props;\n return useCallback(\n (columnId: string) => {\n const next = nextSortBy(sortBy, columnId);\n if (sorting.mode === 'server' && onRequestData) {\n onRequestData({\n pageIndex: pagination?.pageIndex ?? 0,\n pageSize: pagination?.pageSize ?? DEFAULT_PAGE_SIZE,\n sortBy: next,\n filters: [...filters],\n });\n return;\n }\n if (sorting.onChangeSortBy) sorting.onChangeSortBy(next);\n else setInternalSortBy(next);\n },\n [sortBy, sorting, onRequestData, pagination, filters, setInternalSortBy],\n );\n}\n\n/**\n * Sort and filter, each resolved ONCE against its controlled prop: a caller\n * that passes `sorting.sortBy` owns the sort, and one that does not gets the\n * internal state. The grid never holds a second, divergent copy.\n */\nfunction useSortAndFilter<T extends Record<string, unknown>>(\n props: DataGridProps<T>,\n): {\n sortBy: readonly GridSort[];\n filters: readonly GridFilter[];\n setInternalSortBy: (next: GridSort[]) => void;\n} {\n const { sorting = {}, filtering = {} } = props;\n const [internalSortBy, setInternalSortBy] = useState<GridSort[]>(sorting.defaultSortBy ?? []);\n const [internalFilters] = useState<GridFilter[]>(filtering.defaultFilters ?? []);\n return {\n sortBy: sorting.sortBy ?? internalSortBy,\n filters: filtering.filters ?? internalFilters,\n setInternalSortBy,\n };\n}\n\nexport function useDataGridModel<T extends Record<string, unknown>>(\n props: DataGridProps<T>,\n): DataGridModel<T> {\n const { columns } = props;\n const theme = useTheme();\n const containerRef = useRef<HTMLDivElement>(null);\n const [editingCell, setEditingCell] = useState<EditingCell | null>(null);\n const { sortBy, filters, setInternalSortBy } = useSortAndFilter(props);\n // 52 design px unless the caller says; the density scales it, then the type scale does.\n const designRowHeight = densityHeight(props.rowHeight ?? 52, props.density);\n const rowPitch = remPx(theme, designRowHeight);\n const columnMap = useMemo(\n () => new Map(columns.map((column) => [column.id, column])),\n [columns],\n );\n const visibleColumns = useMemo(() => columns.filter((column) => !column.hidden), [columns]);\n const processedRows = useProcessedRows(props, columnMap, sortBy, filters);\n const virtualized =\n (props.virtualizeRows ?? true) && processedRows.length > VIRTUALIZATION_THRESHOLD;\n const { range, onScroll } = useRowWindow(processedRows.length, rowPitch, virtualized);\n const onSort = useSortHandler(props, sortBy, filters, setInternalSortBy);\n\n return {\n containerRef,\n rowHeight: rem(theme, designRowHeight),\n rowPitch,\n visibleColumns,\n processedRows,\n visibleRows: virtualized ? processedRows.slice(range.start, range.end) : processedRows,\n visibleRange: range,\n virtualized,\n sortBy,\n editingCell,\n setEditingCell,\n onSort,\n onScroll,\n ...useRowFlags(props),\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Table/Table.tsx"],"sourcesContent":["import MoreVertIcon from '@mui/icons-material/MoreVert';\nimport Box from '@mui/material/Box/index.js';\nimport FormControlLabel from '@mui/material/FormControlLabel/index.js';\nimport IconButton from '@mui/material/IconButton/index.js';\nimport Menu from '@mui/material/Menu/index.js';\nimport MenuItem from '@mui/material/MenuItem/index.js';\nimport Skeleton from '@mui/material/Skeleton/index.js';\nimport Switch from '@mui/material/Switch/index.js';\nimport MuiTable from '@mui/material/Table/index.js';\nimport TableBody from '@mui/material/TableBody/index.js';\nimport TableCell from '@mui/material/TableCell/index.js';\nimport TableContainer from '@mui/material/TableContainer/index.js';\nimport TableRow from '@mui/material/TableRow/index.js';\nimport { styled, useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport type {\n ColumnConfig,\n TableDensity,\n TableProps,\n TableStripeColor} from './Table.types';\nimport {\n TABLE_DEFAULTS,\n containerStyle,\n definedProps,\n headerRefFor,\n scrollerRadiusStyle,\n tableDomProps,\n tableRowHeight,\n virtualHeight,\n} from './Table.helpers';\nimport { useTableSelection, useVirtualScrolling } from './Table.hooks';\nimport { EnhancedTableBody, EnhancedTableHeader } from './TableParts';\nimport { EmptyRow, NoDataPlaceholder } from './TableStates';\nimport {\n tableStyles } from './Table.styles';\nimport { rem } from '../../../tokens/relative';\n\n// Helper function to get stripe color from theme\nconst StyledTable = styled(MuiTable, {\n shouldForwardProp: (prop) =>\n !['customVariant', 'glow', 'pulse', 'hoverable', 'density', 'stickyHeader', 'stripeColor', 'virtualised'].includes(prop as string) })<{\n customVariant?: string;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n stripeColor?: TableStripeColor;\n virtualised?: boolean;\n}>(({ theme, customVariant, glow, pulse, hoverable, density, stickyHeader, stripeColor = 'neutral', virtualised }) => {\n return tableStyles({\n theme,\n customVariant,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n stripeColor,\n virtualised });\n});\n\n// Virtual Scrolling Hook\nconst TableShell: React.FC<{\n innerRef: React.Ref<globalThis.HTMLTableElement>;\n variant?: string;\n stripeColor?: TableStripeColor;\n glow?: boolean;\n pulse?: boolean;\n hoverable?: boolean;\n density?: TableDensity;\n stickyHeader?: boolean;\n header: React.ReactNode;\n rest: Record<string, unknown>;\n children: React.ReactNode;\n}> = ({\n innerRef,\n variant,\n stripeColor,\n glow,\n pulse,\n hoverable,\n density,\n stickyHeader,\n header,\n rest,\n children }) => (\n // The loading and empty shells are not scrollers (no `containerHeight`), so\n // they get only the rounded clip `stickyHeader` moves off the `<table>`,\n // never a height (FUT-2677).\n <TableContainer style={scrollerRadiusStyle(useTheme(), stickyHeader)}>\n <StyledTable\n ref={innerRef}\n customVariant={variant}\n stripeColor={stripeColor}\n glow={glow}\n pulse={pulse}\n hoverable={hoverable}\n density={density}\n stickyHeader={stickyHeader}\n {...rest}\n >\n {header}\n {children}\n </StyledTable>\n </TableContainer>\n);\n\nconst SKELETON_ROW_COUNT = 5;\n\nconst LoadingSkeletonRows: React.FC<{ columns?: ColumnConfig[] }> = ({ columns }) => {\n const theme = useTheme();\n return (\n <>\n {Array.from({ length: SKELETON_ROW_COUNT }, (_, index) => (\n <TableRow key={index}>\n {columns?.map((column) => (\n <TableCell key={column.key}>\n <Skeleton height={rem(theme, 20)} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </>\n );\n};\n\nexport type TableShellProps = Omit<React.ComponentProps<typeof TableShell>, 'children'>;\n\ntype Selection = ReturnType<typeof useTableSelection>;\n\ninterface RendererProps {\n resolved: TableProps;\n selection: Selection;\n innerRef: React.Ref<globalThis.HTMLTableElement>;\n rest: Record<string, unknown>;\n}\n\n// The column-visibility control, shown only when responsive mode has actually\n// hidden something on a narrow viewport.\nconst ColumnToggleMenu: React.FC<{\n columns: ColumnConfig[];\n hiddenColumns: number[];\n anchor: HTMLElement | null;\n setAnchor: (element: HTMLElement | null) => void;\n setHiddenColumns: (next: number[]) => void;\n}> = ({ columns, hiddenColumns, anchor, setAnchor, setHiddenColumns }) => (\n <Box position=\"absolute\" top={8} right={8}>\n <IconButton onClick={(event) => setAnchor(event.currentTarget)} size=\"small\">\n <MoreVertIcon />\n </IconButton>\n <Menu anchorEl={anchor} open={Boolean(anchor)} onClose={() => setAnchor(null)}>\n {columns.map((column, index) => (\n <MenuItem key={column.key}>\n <FormControlLabel\n control={\n <Switch\n checked={!hiddenColumns.includes(index)}\n onChange={(event) =>\n setHiddenColumns(\n event.target.checked\n ? hiddenColumns.filter((i: number) => i !== index)\n : [...hiddenColumns, index],\n )\n }\n size=\"small\"\n />\n }\n label={column.label}\n />\n </MenuItem>\n ))}\n </Menu>\n </Box>\n);\n\n// The populated table. Local because StyledTable cannot cross a module\n// boundary (TS2742).\nconst columnsFor = (resolved: TableProps, selection: Selection): ColumnConfig[] =>\n (resolved.responsive ? selection.visibleColumns : resolved.columns) ?? [];\n\n// The toggle only earns its place when responsive mode has actually hidden\n// something on a narrow viewport.\nconst showsColumnToggle = (resolved: TableProps, selection: Selection): boolean =>\n Boolean(\n resolved.responsive &&\n selection.isMobile &&\n resolved.showColumnToggle &&\n selection.hiddenColumns.length > 0,\n );\n\n// The virtual window lives here, with the one scroller whose offset drives it;\n// the header's ref lets it subtract the height the `<thead>` pushes the body down.\nconst AdvancedTable: React.FC<RendererProps> = ({ resolved: p, selection, innerRef, rest }) => {\n const theme = useTheme();\n const finalColumns = columnsFor(p, selection);\n const showToggle = showsColumnToggle(p, selection);\n const headRef = React.useRef<globalThis.HTMLTableSectionElement>(null);\n const windowHeight = virtualHeight(p);\n const { visibleItems, handleScroll } = useVirtualScrolling(\n p.data ?? [],\n tableRowHeight(p.rowHeight) || 40,\n windowHeight ?? 400,\n p.overscan,\n headerRefFor(windowHeight, headRef),\n );\n\n return (\n <Box position=\"relative\">\n <TableContainer\n style={containerStyle(theme, p)}\n onScroll={windowHeight ? handleScroll : undefined}\n >\n <StyledTable\n ref={innerRef}\n customVariant={p.variant}\n stripeColor={p.stripeColor}\n glow={p.glow}\n pulse={p.pulse}\n hoverable={p.hoverable}\n density={p.density}\n stickyHeader={p.stickyHeader}\n virtualised={Boolean(windowHeight)}\n {...rest}\n >\n <EnhancedTableHeader\n columns={finalColumns}\n data={p.data ?? []}\n sortable={p.sortable}\n sortConfig={p.sortConfig}\n onSortChange={p.onSortChange}\n selectable={p.selectable}\n selectedRows={p.selectedRows}\n onSelectAll={selection.handleSelectAll}\n density={p.density}\n stickyHeader={p.stickyHeader}\n headRef={headRef}\n />\n <EnhancedTableBody\n data={p.data ?? []}\n columns={finalColumns}\n selectedRows={p.selectedRows}\n onRowClick={p.onRowClick}\n onRowFocus={p.onRowFocus}\n onRowBlur={p.onRowBlur}\n onSelectionChange={selection.handleSelectionChange}\n rowKeyExtractor={p.rowKeyExtractor}\n density={p.density}\n selectable={p.selectable}\n hoverable={p.hoverable}\n renderRow={p.renderRow}\n renderCell={p.renderCell}\n virtualWindow={windowHeight ? visibleItems : undefined}\n rowHeight={p.rowHeight}\n />\n </StyledTable>\n </TableContainer>\n\n {showToggle && (\n <ColumnToggleMenu\n columns={p.columns ?? []}\n hiddenColumns={selection.hiddenColumns}\n anchor={selection.columnMenuAnchor}\n setAnchor={selection.setColumnMenuAnchor}\n setHiddenColumns={selection.setHiddenColumns}\n />\n )}\n </Box>\n );\n};\n\n// The loading and empty states render the same shell as the populated table, so\n// they share TableShell rather than repeating it three times.\nconst buildShell = ({\n resolved,\n selection,\n innerRef,\n rest,\n finalColumns }: RendererProps & { finalColumns?: ColumnConfig[] }) => ({\n innerRef,\n variant: resolved.variant,\n stripeColor: resolved.stripeColor,\n glow: resolved.glow,\n pulse: resolved.pulse,\n hoverable: resolved.hoverable,\n density: resolved.density,\n stickyHeader: resolved.stickyHeader,\n header: resolved.columns ? (\n <EnhancedTableHeader\n columns={finalColumns ?? []}\n data={[]}\n sortable={resolved.sortable}\n sortConfig={resolved.sortConfig}\n onSortChange={resolved.onSortChange}\n selectable={resolved.selectable}\n selectedRows={resolved.selectedRows}\n onSelectAll={selection.handleSelectAll}\n density={resolved.density}\n stickyHeader={resolved.stickyHeader}\n />\n ) : null,\n rest: rest as Record<string, unknown> });\n\nconst TableLoadingState: React.FC<{\n shell: TableShellProps;\n loadingComponent?: React.ReactNode;\n columns?: ColumnConfig[];\n}> = ({ shell, loadingComponent, columns }) => (\n <TableShell {...shell}>\n <TableBody data-testid=\"table-loading\">\n {loadingComponent || <LoadingSkeletonRows columns={columns} />}\n </TableBody>\n </TableShell>\n);\n\nconst TableEmptyState: React.FC<{\n shell: TableShellProps;\n emptyStateComponent?: React.ReactNode;\n emptyText: string;\n colSpan: number;\n}> = ({ shell, emptyStateComponent, emptyText, colSpan }) => (\n <TableShell {...shell}>\n <EmptyRow colSpan={colSpan}>\n {emptyStateComponent || <NoDataPlaceholder emptyText={emptyText} />}\n </EmptyRow>\n </TableShell>\n);\n\nexport const Table = React.forwardRef<globalThis.HTMLTableElement, TableProps>(\n (tableProps, ref) => {\n const resolved = { ...TABLE_DEFAULTS, ...definedProps(tableProps) } as TableProps;\n const {\n columns,\n data,\n responsive,\n loading,\n loadingComponent,\n emptyStateComponent,\n emptyText,\n children,\n } = resolved;\n\n const selection = useTableSelection({\n columns,\n data,\n responsive,\n columnPriorities: resolved.columnPriorities,\n selectedRows: resolved.selectedRows ?? [],\n rowKeyExtractor: resolved.rowKeyExtractor,\n onSelectionChange: resolved.onSelectionChange });\n\n // Only MUI's and the DOM's own props reach the `<table>` (FUT-2658).\n const rest = tableDomProps(tableProps);\n const renderer: RendererProps = { resolved, selection, innerRef: ref, rest };\n const finalColumns = responsive ? selection.visibleColumns : columns;\n const shell = buildShell({ ...renderer, finalColumns });\n\n if (loading) {\n return (\n <TableLoadingState shell={shell} loadingComponent={loadingComponent} columns={columns} />\n );\n }\n\n if (data && data.length === 0) {\n return (\n <TableEmptyState\n shell={shell}\n emptyStateComponent={emptyStateComponent}\n emptyText={emptyText}\n colSpan={finalColumns?.length || 1}\n />\n );\n }\n\n if (columns && data) return <AdvancedTable {...renderer} />;\n\n // Basic table (backward compatibility)\n return (\n <StyledTable\n ref={ref}\n customVariant={resolved.variant}\n stripeColor={resolved.stripeColor}\n glow={resolved.glow}\n pulse={resolved.pulse}\n hoverable={resolved.hoverable}\n density={resolved.density}\n stickyHeader={resolved.stickyHeader}\n {...rest}\n >\n {children}\n </StyledTable>\n );\n },\n);\n\nTable.displayName = 'Table';"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/Table/Table.helpers.ts"],"sourcesContent":["import type { TableProps as MuiTableProps } from '@mui/material/Table/index.js';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport type React from 'react';\n\nimport { rem } from '../../../tokens/relative';\n\nimport type { TableProps } from './Table.types';\n\n/**\n * A virtualised row's height in design px: the caller's `rowHeight`, else 52.\n * Resolved here rather than in {@link TABLE_DEFAULTS} so the one number is read\n * where it is drawn (`rem`) and where the window is positioned with it (`remPx`).\n */\nexport const tableRowHeight = (rowHeight: number | undefined): number => rowHeight ?? 52;\n\n/** The scroll box's height: a number is design px, 400 unless the caller says otherwise. */\nconst scrollHeight = (theme: Theme, containerHeight: number | string | undefined): string => {\n const box = containerHeight || 400;\n return typeof box === 'number' ? rem(theme, box) : box;\n};\n\n/**\n * The table's one scroll container (FUT-2658): `containerHeight` tall\n * whenever it is set, or 400 when `virtualScrolling` is on and it is not,\n * holding the header and the body. `containerHeight` sizes the scroller with\n * or without `virtualScrolling` (FUT-2677) — no consumer relies on the old\n * virtual-only gate, and `stickyHeader` needs this box to stick inside.\n * Inline, so the height it was given reads back off the element. A\n * `containerHeight` of 0 counts as unset: a zero-height scroller shows nothing.\n */\nexport const scrollerStyle = (theme: Theme, p: TableProps): React.CSSProperties | undefined =>\n p.virtualScrolling || p.containerHeight\n ? { height: scrollHeight(theme, p.containerHeight), overflow: 'auto' }\n : undefined;\n\n/**\n * With `stickyHeader`, the scroller takes over the rounded clip the `<table>`\n * gives up (`tableStyles`, FUT-2677) — the caller's container owns it on the\n * basic (children) path, and the loading/empty shells get it too, so their\n * corners do not change between states.\n */\nexport const scrollerRadiusStyle = (\n theme: Theme,\n stickyHeader: boolean | undefined,\n): React.CSSProperties | undefined => (stickyHeader ? { borderRadius: theme.spacing(1) } : undefined);\n\n/** `scrollerStyle` and, with `stickyHeader`, the rounded clip it takes over. */\nexport const containerStyle = (theme: Theme, p: TableProps): React.CSSProperties | undefined => {\n const scroller = scrollerStyle(theme, p);\n const radius = scrollerRadiusStyle(theme, p.stickyHeader);\n return scroller || radius ? { ...scroller, ...radius } : undefined;\n};\n\n/**\n * Only a virtualised table needs its header measured — a plain one never\n * reads `scroll.headerPx`, so it gets no `ResizeObserver` either (FUT-2678).\n */\nexport const headerRefFor = (\n windowHeight: number | undefined,\n headRef: React.RefObject<globalThis.HTMLTableSectionElement | null>,\n): React.RefObject<globalThis.HTMLTableSectionElement | null> | undefined =>\n windowHeight ? headRef : undefined;\n\n/**\n * The window's height in design px when the body is virtualised — only a\n * numeric `containerHeight` virtualises; a string sizes the scroller alone.\n */\nexport const virtualHeight = (p: TableProps): number | undefined =>\n p.virtualScrolling && typeof p.containerHeight === 'number' && p.containerHeight > 0 &&\n tableRowHeight(p.rowHeight) > 0\n ? p.containerHeight\n : undefined;\n\nexport const TABLE_DEFAULTS: Partial<TableProps> = {\n variant: 'default',\n stripeColor: 'neutral',\n glow: false,\n pulse: false,\n hoverable: false,\n loading: false,\n density: 'normal',\n stickyHeader: false,\n selectable: false,\n selectedRows: [],\n sortable: false,\n virtualScrolling: false,\n overscan: 5,\n responsive: false,\n showColumnToggle: true,\n};\n\n// Strips explicitly-undefined props before the merge, so `prop={undefined}` still\n// falls back to the default as a destructuring default would. Eighteen separate\n// destructuring defaults were most of this component's branch count.\nexport const definedProps = (props: TableProps): Partial<TableProps> =>\n Object.fromEntries(\n Object.entries(props).filter(([, value]) => value !== undefined),\n ) as Partial<TableProps>;\n\n// The container + styled table + optional header, shared by the loading, empty\n// and populated renders.\n\n/** A key `Table` declares on top of MUI's own `TableProps`. */\ntype TableOwnKey = Exclude<keyof TableProps, keyof MuiTableProps>;\n\n/**\n * Every key {@link TableOwnKey} names. None is an HTML attribute: each is read\n * by the table and drawn by its parts, so none may reach the `<table>`\n * (FUT-2658). A `Record` over the key union makes the list exhaustive — a prop\n * added to `Table.types.ts` does not compile until it is named here.\n */\nconst TABLE_OWN_KEYS: Record<TableOwnKey, true> = {\n emptyText: true,\n variant: true,\n stripeColor: true,\n glow: true,\n pulse: true,\n hoverable: true,\n loading: true,\n onRowClick: true,\n onRowFocus: true,\n onRowBlur: true,\n density: true,\n selectable: true,\n selectedRows: true,\n onSelectionChange: true,\n rowKeyExtractor: true,\n sortable: true,\n sortConfig: true,\n onSortChange: true,\n filterable: true,\n filterConfig: true,\n onFilterChange: true,\n columns: true,\n data: true,\n virtualScrolling: true,\n rowHeight: true,\n overscan: true,\n responsive: true,\n columnPriorities: true,\n responsiveBreakpoints: true,\n showColumnToggle: true,\n containerHeight: true,\n loadingComponent: true,\n emptyStateComponent: true,\n keyboardNavigation: true,\n renderRow: true,\n renderCell: true,\n draggableRows: true,\n onRowsReorder: true,\n fixedColumns: true,\n rowStyleConfig: true,\n};\n\nconst NOT_FORWARDED = new Set<string>([...Object.keys(TABLE_OWN_KEYS), 'children']);\n\n/**\n * What the caller passed that is MUI's or the DOM's — `className`, `id`,\n * `style`, `aria-*`, `data-*`, DOM handlers, `sx`, `size`, `padding`,\n * `component` — for `MuiTable` to spread onto the `<table>`. `children` is\n * placed by the table itself.\n */\nexport const tableDomProps = (props: TableProps): Record<string, unknown> =>\n Object.fromEntries(Object.entries(props).filter(([key]) => !NOT_FORWARDED.has(key)));\n"],"mappings":";;;;;AAaO,IAAM,iBAAiB,CAAC,cAA0C,aAAa;AAGtF,IAAM,eAAe,CAAC,OAAc,oBAAyD;AAC3F,QAAM,MAAM,mBAAmB;AAC/B,SAAO,OAAO,QAAQ,WAAW,IAAI,OAAO,GAAG,IAAI;AACrD;AAWO,IAAM,gBAAgB,CAAC,OAAc,MAC1C,EAAE,oBAAoB,EAAE,kBACpB,EAAE,QAAQ,aAAa,OAAO,EAAE,eAAe,GAAG,UAAU,OAAO,IACnE;AAQC,IAAM,sBAAsB,CACjC,OACA,iBACqC,eAAe,EAAE,cAAc,MAAM,QAAQ,CAAC,EAAE,IAAI;AAGpF,IAAM,iBAAiB,CAAC,OAAc,MAAmD;AAC9F,QAAM,WAAW,cAAc,OAAO,CAAC;AACvC,QAAM,SAAS,oBAAoB,OAAO,EAAE,YAAY;AACxD,SAAO,YAAY,SAAS,EAAE,GAAG,UAAU,GAAG,OAAO,IAAI;AAC3D;AAMO,IAAM,eAAe,CAC1B,cACA,YAEA,eAAe,UAAU;AAMpB,IAAM,gBAAgB,CAAC,MAC5B,EAAE,oBAAoB,OAAO,EAAE,oBAAoB,YAAY,EAAE,kBAAkB,KACnF,eAAe,EAAE,SAAS,IAAI,IAC1B,EAAE,kBACF;AAEC,IAAM,iBAAsC;AAAA,EACjD,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,EACT,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc,CAAC;AAAA,EACf,UAAU;AAAA,EACV,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,kBAAkB;AACpB;AAKO,IAAM,eAAe,CAAC,UAC3B,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,UAAU,MAAS;AACjE;AAcF,IAAM,iBAA4C;AAAA,EAChD,WAAW;AAAA,EACX,SAAS;AAAA,EACT,aAAa;AAAA,EACb,MAAM;AAAA,EACN,OAAO;AAAA,EACP,WAAW;AAAA,EACX,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,kBAAkB;AAAA,EAClB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,eAAe;AAAA,EACf,cAAc;AAAA,EACd,gBAAgB;AAClB;AAEA,IAAM,gBAAgB,oBAAI,IAAY,CAAC,GAAG,OAAO,KAAK,cAAc,GAAG,UAAU,CAAC;AAQ3E,IAAM,gBAAgB,CAAC,UAC5B,OAAO,YAAY,OAAO,QAAQ,KAAK,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC;","names":[]}
|