@12-apps/ui 6.43.0 → 6.44.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/NATIVE.md +1 -1
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
- package/dist/_internal/components/data-display/Badge/Badge.js +6 -5
- package/dist/_internal/components/data-display/Badge/Badge.styles.js +4 -3
- package/dist/_internal/components/data-display/Badge/BadgeContent.js +5 -4
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +5 -5
- package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +5 -4
- package/dist/_internal/components/data-display/Carousel/Carousel.js +8 -7
- package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +4 -3
- package/dist/_internal/components/data-display/Carousel/Carousel.styles.js +4 -3
- package/dist/_internal/components/data-display/Chart/Chart.js +7 -6
- package/dist/_internal/components/data-display/Chart/SpecChart.js +8 -7
- package/dist/_internal/components/data-display/Chart/chart-context.js +5 -4
- package/dist/_internal/components/data-display/Chart/chart-internals.js +4 -3
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +6 -5
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +4 -3
- package/dist/_internal/components/data-display/DataGrid/DataGrid.model.js +3 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +32 -31
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +45 -44
- package/dist/_internal/components/data-display/DataViews/DeleteViewDialog.js +3 -3
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +7 -7
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-card.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +6 -5
- package/dist/_internal/components/data-display/DataViews/base-list-card-gutters.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +5 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +10 -9
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +5 -4
- package/dist/_internal/components/data-display/DataViews/data-views-display-tabs.js +4 -3
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +8 -7
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +31 -30
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-layout-context.js +3 -2
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +4 -3
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +8 -7
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +10 -10
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +7 -6
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +4 -3
- package/dist/_internal/components/data-display/DataViews/use-saved-views-controller.js +2 -2
- package/dist/_internal/components/data-display/EmptyState/EmptyState.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +5 -5
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +4 -4
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +13 -12
- package/dist/_internal/components/data-display/InteractiveTooltip/InteractiveTooltip.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +3 -3
- package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
- package/dist/_internal/components/data-display/Sheet/Sheet.body.js +3 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +5 -4
- package/dist/_internal/components/data-display/Sheet/Sheet.styles.js +4 -3
- package/dist/_internal/components/data-display/Table/Table.js +4 -3
- package/dist/_internal/components/data-display/index.js +38 -37
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmAction.js +2 -2
- package/dist/_internal/components/feedback/ConfirmAction/ConfirmButton.js +3 -3
- package/dist/_internal/components/feedback/ConfirmAction/with-confirmation.js +2 -2
- package/dist/_internal/components/feedback/Dialog/Dialog.js +2 -2
- package/dist/_internal/components/feedback/StackedModal/StackedModal.js +6 -6
- package/dist/_internal/components/feedback/index.js +14 -14
- 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/Autocomplete/Autocomplete.js +3 -3
- package/dist/_internal/components/form/Autocomplete/useAutocomplete.js +1 -1
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +6 -6
- package/dist/_internal/components/form/Checkbox/Checkbox.js +2 -2
- package/dist/_internal/components/form/Command/Command.js +5 -4
- package/dist/_internal/components/form/Command/Command.styles.js +4 -3
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +2 -2
- package/dist/_internal/components/form/Label/Label.js +5 -4
- package/dist/_internal/components/form/Label/Label.styles.js +4 -3
- package/dist/_internal/components/form/Menubar/Menubar.item.js +5 -4
- package/dist/_internal/components/form/Menubar/Menubar.js +7 -6
- package/dist/_internal/components/form/Menubar/Menubar.styles.js +4 -3
- package/dist/_internal/components/form/Menubar/Menubar.toolbar.js +6 -5
- package/dist/_internal/components/form/UploadButton/UploadButton.js +2 -2
- package/dist/_internal/components/form/index.js +21 -20
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +7 -7
- package/dist/_internal/components/form/total-form/Fields/index.js +11 -11
- package/dist/_internal/components/index.js +100 -99
- package/dist/_internal/components/layout/Box/Box.js +6 -5
- package/dist/_internal/components/layout/ScrollArea/ScrollArea.js +2 -2
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +8 -7
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +7 -6
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js +8 -7
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +10 -9
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +9 -8
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +10 -9
- package/dist/_internal/components/layout/SettingsLayout/SettingsLayout.js +4 -4
- package/dist/_internal/components/layout/SettingsLayout/SettingsPanel.js +3 -3
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.js +2 -2
- package/dist/_internal/components/layout/SettingsLayout/SettingsSectionChips.scroll.js +1 -1
- package/dist/_internal/components/layout/Stack/Stack.js +7 -6
- package/dist/_internal/components/layout/index.js +20 -19
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +8 -7
- package/dist/_internal/components/navigation/AppHeader/AppHeader.identity.js +4 -3
- package/dist/_internal/components/navigation/CommandPalette/CommandPalette.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMegaSection.js +3 -3
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenu.js +5 -5
- package/dist/_internal/components/navigation/NavigationMenu/NavigationMenuItem.js +2 -2
- package/dist/_internal/components/navigation/NavigationMenu/NavigationStandardBody.js +3 -3
- package/dist/_internal/components/navigation/index.js +16 -15
- package/dist/_internal/components/utility/InfiniteScroll/InfiniteScroll.js +2 -2
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.helpers.js +6 -3
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.js +7 -6
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStep.parts.js +5 -4
- package/dist/_internal/components/utility/WorkflowStep/WorkflowStepRow.js +6 -5
- package/dist/_internal/components/utility/index.js +9 -8
- package/dist/_internal/icons/Icon.js +6 -5
- package/dist/_internal/provider/UiProvider.js +5 -4
- package/dist/_internal/provider/mui-bridge.js +4 -3
- package/dist/_internal/provider/use-ui-theme.js +5 -4
- package/dist/_internal/tokens/density-overrides.js +11 -0
- package/dist/_internal/tokens/density-overrides.js.map +1 -0
- package/dist/_internal/tokens/density.js +3 -1
- package/dist/charts.js +8 -7
- package/dist/{chunk-DJKVSUXH.js → chunk-2GG5W6LR.js} +10 -2
- package/dist/chunk-2GG5W6LR.js.map +1 -0
- package/dist/{chunk-442FSG7G.js → chunk-3I77A65F.js} +4 -4
- package/dist/{chunk-R2FUQV24.js → chunk-4MGUBSAL.js} +2 -2
- package/dist/{chunk-YIWVHEPW.js → chunk-4T5LD2NV.js} +2 -2
- package/dist/{chunk-4CHYMTBT.js → chunk-4WCDMCIS.js} +4 -4
- package/dist/chunk-532XOWZ5.js +59 -0
- package/dist/chunk-532XOWZ5.js.map +1 -0
- package/dist/{chunk-5KGABAQB.js → chunk-5752357K.js} +4 -4
- package/dist/{chunk-JSGVYOMN.js → chunk-5MW7OYBM.js} +2 -2
- package/dist/{chunk-RWRPF24F.js → chunk-5OS5AMC2.js} +2 -2
- package/dist/{chunk-I6MVJWUO.js → chunk-6B3QXFF5.js} +2 -2
- package/dist/{chunk-MLUUF7OZ.js → chunk-6B4UTB4O.js} +2 -2
- package/dist/{chunk-FBUCXTA4.js → chunk-6DMUVVON.js} +2 -2
- package/dist/{chunk-G7RYAWPZ.js → chunk-6HTCCWUM.js} +2 -2
- package/dist/{chunk-77BKKPCI.js → chunk-6KLDYVRY.js} +2 -2
- package/dist/{chunk-6Z6PUG4C.js → chunk-6LYRFS5S.js} +5 -5
- package/dist/{chunk-KJID4PRD.js → chunk-6S25ZCEW.js} +34 -45
- package/dist/chunk-6S25ZCEW.js.map +1 -0
- package/dist/{chunk-K4A3JDYQ.js → chunk-6ZWOVUNB.js} +2 -2
- package/dist/{chunk-3RUCLKAK.js → chunk-7HZTYK7U.js} +4 -4
- package/dist/{chunk-BKZERHNC.js → chunk-7XDET7PL.js} +3 -3
- package/dist/{chunk-OD3L6GX5.js → chunk-A7OQBAR7.js} +2 -2
- package/dist/{chunk-2MLS6KU4.js → chunk-AEKHSORY.js} +2 -2
- package/dist/{chunk-5DAVXZPY.js → chunk-B2WBDMHE.js} +2 -2
- package/dist/{chunk-GZT7MLLO.js → chunk-B2ZITMYG.js} +2 -2
- package/dist/{chunk-54HTXJJ2.js → chunk-BHE44AQE.js} +2 -2
- package/dist/{chunk-TBMGYQJF.js → chunk-BKBELIUR.js} +2 -2
- package/dist/{chunk-OOB3YWPX.js → chunk-BZFRBG2H.js} +4 -4
- package/dist/{chunk-PICOOZLX.js → chunk-C5RTSOXD.js} +3 -3
- package/dist/{chunk-GO6XDMBB.js → chunk-CEJTGG6J.js} +2 -2
- package/dist/{chunk-ZGWEFOW6.js → chunk-CKAVTWXP.js} +4 -4
- package/dist/{chunk-ANYOSBNA.js → chunk-CSXK7LH7.js} +2 -2
- package/dist/{chunk-U6DOF5CR.js → chunk-CU7ELD43.js} +2 -2
- package/dist/{chunk-XO4ZUHVH.js → chunk-CYPBF3BI.js} +2 -2
- package/dist/{chunk-EO5IEWFI.js → chunk-DE6A46AE.js} +6 -6
- package/dist/{chunk-JMEPGXJG.js → chunk-DHW5UMUG.js} +2 -2
- package/dist/{chunk-3EPA2A4M.js → chunk-DJIFXJ4C.js} +5 -5
- package/dist/{chunk-CM2Q7IH3.js → chunk-DTLKF4AX.js} +6 -6
- package/dist/{chunk-C6JUGWAU.js → chunk-DYCTIOER.js} +4 -4
- package/dist/{chunk-LCWGNDTH.js → chunk-EKBUM7HK.js} +4 -4
- package/dist/{chunk-NYT3UVOH.js → chunk-EOEYOPOS.js} +7 -7
- package/dist/{chunk-7LILFS72.js → chunk-EOKPFMJD.js} +2 -2
- package/dist/{chunk-ZSTSISM6.js → chunk-FHWXRHMA.js} +1 -1
- package/dist/{chunk-ZSTSISM6.js.map → chunk-FHWXRHMA.js.map} +1 -1
- package/dist/{chunk-4PRZLII7.js → chunk-FOM7OMJR.js} +5 -5
- package/dist/{chunk-QSNLIWEB.js → chunk-FTV5R2UZ.js} +2 -2
- package/dist/{chunk-NDHDBOUH.js → chunk-FWPFCK4D.js} +4 -4
- package/dist/{chunk-ON4TRXCM.js → chunk-GHJ2FIJO.js} +3 -3
- package/dist/{chunk-GANW7FXQ.js → chunk-GKNMKPR6.js} +2 -2
- package/dist/{chunk-LGCRL7DK.js → chunk-GP4BJI3F.js} +2 -2
- package/dist/{chunk-652PYSML.js → chunk-HDVEE4NQ.js} +14 -6
- package/dist/chunk-HDVEE4NQ.js.map +1 -0
- package/dist/{chunk-4MKVGSHX.js → chunk-HN3PZTUK.js} +5 -5
- package/dist/{chunk-HBP2OU4Q.js → chunk-HNFZLXZI.js} +5 -5
- package/dist/{chunk-5FHPZOYK.js → chunk-HOIHO2YQ.js} +2 -2
- package/dist/{chunk-3AOOI2NR.js → chunk-HR7YTBR7.js} +4 -4
- package/dist/{chunk-PGV2FLE3.js → chunk-IG26N6J2.js} +2 -2
- package/dist/{chunk-G2WERTWZ.js → chunk-IGGXKT5B.js} +2 -2
- package/dist/{chunk-XLXMJ6X2.js → chunk-IO2X6DVH.js} +3 -3
- package/dist/{chunk-3CLBGHTL.js → chunk-ITBUKGG3.js} +2 -2
- package/dist/{chunk-6IRJAIS4.js → chunk-IXWIJCS3.js} +2 -2
- package/dist/{chunk-TMW7RBW7.js → chunk-J6TIK47Z.js} +2 -2
- package/dist/{chunk-G4TKMUOL.js → chunk-JDEKR77O.js} +7 -7
- package/dist/{chunk-Y2C2S4R7.js → chunk-JHW62I7Z.js} +7 -5
- package/dist/chunk-JHW62I7Z.js.map +1 -0
- package/dist/{chunk-ITFFA3H2.js → chunk-JYLBVHG2.js} +3 -3
- package/dist/{chunk-G7XHJPLO.js → chunk-JZ7ZRZTF.js} +4 -4
- package/dist/{chunk-YTVXT5TD.js → chunk-K5CCQBNN.js} +6 -6
- package/dist/{chunk-AOFI3GDS.js → chunk-KMC6WP66.js} +5 -5
- package/dist/{chunk-K62RHTFB.js → chunk-KNAWZM7F.js} +2 -2
- package/dist/{chunk-4Z2HIHA5.js → chunk-KRA75CKC.js} +2 -2
- package/dist/{chunk-RHKT2XW2.js → chunk-KUKY5GEX.js} +3 -3
- package/dist/{chunk-HUAQQ5ZL.js → chunk-LHHV6NXO.js} +2 -2
- package/dist/{chunk-BJGUDLWZ.js → chunk-LRFXCZB4.js} +2 -2
- package/dist/{chunk-U6W2RY3Z.js → chunk-MLQYIJTO.js} +5 -5
- package/dist/{chunk-GPHURU2K.js → chunk-MSAAOQAD.js} +7 -7
- package/dist/{chunk-3MJHHPRW.js → chunk-MVR4GURP.js} +2 -2
- package/dist/{chunk-PRLYYKMG.js → chunk-MW7S7WZM.js} +2 -2
- package/dist/{chunk-ERY6D2OV.js → chunk-MWPXKZ7O.js} +4 -4
- package/dist/{chunk-ZUME25DS.js → chunk-NM2FLCPV.js} +3 -3
- package/dist/{chunk-UP7SSTCZ.js → chunk-OAVRXSAS.js} +7 -7
- package/dist/{chunk-VYA4QWQL.js → chunk-PJVZY2SA.js} +2 -2
- package/dist/{chunk-SDBBJ6FG.js → chunk-PUYJVQ7X.js} +2 -2
- package/dist/{chunk-IUD6N52Q.js → chunk-PXGURBIU.js} +4 -4
- package/dist/{chunk-PNDYAIKM.js → chunk-Q5J37WOE.js} +2 -2
- package/dist/{chunk-DCT2PKMQ.js → chunk-QGB3DOMV.js} +2 -2
- package/dist/{chunk-GT2RCOHM.js → chunk-QLAFJZDS.js} +31 -13
- package/dist/chunk-QLAFJZDS.js.map +1 -0
- package/dist/{chunk-YGYQC7MT.js → chunk-QOLIBVGS.js} +4 -4
- package/dist/{chunk-TDXEO2UI.js → chunk-RJ35IXFD.js} +2 -2
- package/dist/{chunk-P6Q2O3TU.js → chunk-RNVR3RGV.js} +2 -2
- package/dist/{chunk-SNW5MJ6I.js → chunk-RPKWTFJ2.js} +2 -2
- package/dist/{chunk-NPPJ3IJP.js → chunk-RRAWJQIO.js} +2 -2
- package/dist/{chunk-H3GYVR7S.js → chunk-SM4MT4YC.js} +3 -3
- package/dist/{chunk-5B7BTLN4.js → chunk-SOCZLOPJ.js} +2 -2
- package/dist/{chunk-RXNIOPOA.js → chunk-TM5QQJTF.js} +8 -2
- package/dist/{chunk-RXNIOPOA.js.map → chunk-TM5QQJTF.js.map} +1 -1
- package/dist/{chunk-Z4O3F6KU.js → chunk-U4QUDFPJ.js} +4 -4
- package/dist/{chunk-KWU62UPM.js → chunk-UHGQ74E3.js} +2 -2
- package/dist/{chunk-Z6LTEJ7F.js → chunk-VKFZQSQC.js} +4 -4
- package/dist/{chunk-MBNXCCRG.js → chunk-VQUPB7F7.js} +7 -7
- package/dist/{chunk-CNR5RFKC.js → chunk-VVFV4MXS.js} +2 -2
- package/dist/{chunk-ALOUJ3CE.js → chunk-WQ3KTELX.js} +5 -5
- package/dist/{chunk-FY6PONLA.js → chunk-WSYPM3SR.js} +2 -2
- package/dist/{chunk-QMELMQPA.js → chunk-X4VWYWFK.js} +2 -2
- package/dist/{chunk-5PJM772Y.js → chunk-XLQYOBHP.js} +4 -4
- package/dist/{chunk-TCMH3FXD.js → chunk-XTDJ2D5A.js} +2 -2
- package/dist/{chunk-F5GXWK6B.js → chunk-Y2CMWGIU.js} +3 -3
- package/dist/{chunk-SJGYMI6Y.js → chunk-Y4ET3NRC.js} +2 -2
- package/dist/{chunk-7OO3BELX.js → chunk-Y6RSQEOU.js} +3 -2
- package/dist/{chunk-7OO3BELX.js.map → chunk-Y6RSQEOU.js.map} +1 -1
- package/dist/{chunk-FIO55AKI.js → chunk-YCHOWWRE.js} +3 -3
- package/dist/{chunk-MM5XSAVE.js → chunk-YDIRPKYI.js} +2 -2
- package/dist/{chunk-44Z72DDM.js → chunk-YF3VD2KD.js} +2 -2
- package/dist/{chunk-BR2T72JI.js → chunk-YWJZPN5C.js} +11 -1
- package/dist/chunk-YWJZPN5C.js.map +1 -0
- package/dist/{chunk-Z4DKVLYG.js → chunk-Z3HSRNJT.js} +4 -4
- package/dist/{chunk-5PTCT3LF.js → chunk-ZQ7IESR7.js} +2 -2
- package/dist/data-display/AsyncStateContainer.js +3 -3
- package/dist/data-display/Badge.js +6 -5
- package/dist/data-display/CardKit.js +10 -10
- package/dist/data-display/Carousel.js +8 -7
- package/dist/data-display/Chart.js +8 -7
- package/dist/data-display/DataGrid.js +4 -3
- package/dist/data-display/DataViews.js +54 -53
- package/dist/data-display/EmptyState.js +2 -2
- package/dist/data-display/FleetMap.js +13 -12
- package/dist/data-display/InteractiveTooltip.js +2 -2
- package/dist/data-display/Lightbox.js +2 -2
- package/dist/data-display/MapPreview.js +3 -3
- package/dist/data-display/SectionOnboarding.js +3 -3
- package/dist/data-display/Sheet.js +5 -4
- package/dist/data-display/Table.js +4 -3
- package/dist/feedback/ConfirmAction.js +6 -6
- package/dist/feedback/Dialog.js +2 -2
- package/dist/feedback/StackedModal.js +6 -6
- package/dist/form/AddressAutocomplete.js +1 -1
- package/dist/form/Autocomplete.js +3 -3
- package/dist/form/CategorySelect.js +6 -6
- package/dist/form/Checkbox.js +2 -2
- package/dist/form/Command.js +5 -4
- package/dist/form/DateRangePicker.js +2 -2
- package/dist/form/Label.js +5 -4
- package/dist/form/Menubar.js +7 -6
- package/dist/form/UploadButton.js +2 -2
- package/dist/form/total-form.js +9 -9
- package/dist/icons.js +6 -5
- package/dist/layout/Box.js +6 -5
- package/dist/layout/ContentToolbar.js +3 -3
- package/dist/layout/ScrollArea.js +2 -2
- package/dist/layout/SettingCard.js +15 -14
- package/dist/layout/SettingsLayout.js +4 -4
- package/dist/layout/Stack.js +7 -6
- package/dist/navigation/AppHeader.js +9 -8
- package/dist/navigation/CommandPalette.js +2 -2
- package/dist/navigation/NavigationMenu.js +5 -5
- package/dist/provider.js +6 -5
- package/dist/tokens.js +8 -2
- package/dist/types/components/form/Autocomplete/useAutocomplete.d.ts.map +1 -1
- package/dist/types/components/layout/SettingsLayout/SettingsSectionChips.scroll.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts +15 -0
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.helpers.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.parts.d.ts +7 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.parts.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.types.d.ts +10 -0
- package/dist/types/components/utility/WorkflowStep/WorkflowStep.types.d.ts.map +1 -1
- package/dist/types/components/utility/WorkflowStep/WorkflowStepRow.d.ts.map +1 -1
- package/dist/types/provider/mui-bridge.d.ts.map +1 -1
- package/dist/types/tokens/density-overrides.d.ts +6 -0
- package/dist/types/tokens/density-overrides.d.ts.map +1 -0
- package/dist/types/tokens/density.d.ts +9 -6
- package/dist/types/tokens/density.d.ts.map +1 -1
- package/dist/types/tokens/scales.d.ts +1 -0
- package/dist/types/tokens/scales.d.ts.map +1 -1
- package/dist/utility/InfiniteScroll.js +2 -2
- package/dist/utility/WorkflowStep.js +7 -6
- package/package.json +1 -1
- package/src/components/form/Autocomplete/useAutocomplete.ts +17 -0
- package/src/components/layout/SettingsLayout/SettingsSectionChips.scroll.ts +52 -16
- package/src/components/utility/WorkflowStep/WorkflowStep.helpers.ts +25 -0
- package/src/components/utility/WorkflowStep/WorkflowStep.parts.tsx +46 -49
- package/src/components/utility/WorkflowStep/WorkflowStep.tsx +5 -3
- package/src/components/utility/WorkflowStep/WorkflowStep.types.ts +10 -0
- package/src/components/utility/WorkflowStep/WorkflowStepRow.tsx +1 -0
- package/src/provider/mui-bridge.ts +9 -4
- package/src/tokens/density-overrides.ts +177 -0
- package/src/tokens/density.ts +15 -7
- package/src/tokens/scales.ts +4 -0
- package/dist/chunk-652PYSML.js.map +0 -1
- package/dist/chunk-BR2T72JI.js.map +0 -1
- package/dist/chunk-DJKVSUXH.js.map +0 -1
- package/dist/chunk-GT2RCOHM.js.map +0 -1
- package/dist/chunk-KJID4PRD.js.map +0 -1
- package/dist/chunk-Y2C2S4R7.js.map +0 -1
- /package/dist/{chunk-442FSG7G.js.map → chunk-3I77A65F.js.map} +0 -0
- /package/dist/{chunk-R2FUQV24.js.map → chunk-4MGUBSAL.js.map} +0 -0
- /package/dist/{chunk-YIWVHEPW.js.map → chunk-4T5LD2NV.js.map} +0 -0
- /package/dist/{chunk-4CHYMTBT.js.map → chunk-4WCDMCIS.js.map} +0 -0
- /package/dist/{chunk-5KGABAQB.js.map → chunk-5752357K.js.map} +0 -0
- /package/dist/{chunk-JSGVYOMN.js.map → chunk-5MW7OYBM.js.map} +0 -0
- /package/dist/{chunk-RWRPF24F.js.map → chunk-5OS5AMC2.js.map} +0 -0
- /package/dist/{chunk-I6MVJWUO.js.map → chunk-6B3QXFF5.js.map} +0 -0
- /package/dist/{chunk-MLUUF7OZ.js.map → chunk-6B4UTB4O.js.map} +0 -0
- /package/dist/{chunk-FBUCXTA4.js.map → chunk-6DMUVVON.js.map} +0 -0
- /package/dist/{chunk-G7RYAWPZ.js.map → chunk-6HTCCWUM.js.map} +0 -0
- /package/dist/{chunk-77BKKPCI.js.map → chunk-6KLDYVRY.js.map} +0 -0
- /package/dist/{chunk-6Z6PUG4C.js.map → chunk-6LYRFS5S.js.map} +0 -0
- /package/dist/{chunk-K4A3JDYQ.js.map → chunk-6ZWOVUNB.js.map} +0 -0
- /package/dist/{chunk-3RUCLKAK.js.map → chunk-7HZTYK7U.js.map} +0 -0
- /package/dist/{chunk-BKZERHNC.js.map → chunk-7XDET7PL.js.map} +0 -0
- /package/dist/{chunk-OD3L6GX5.js.map → chunk-A7OQBAR7.js.map} +0 -0
- /package/dist/{chunk-2MLS6KU4.js.map → chunk-AEKHSORY.js.map} +0 -0
- /package/dist/{chunk-5DAVXZPY.js.map → chunk-B2WBDMHE.js.map} +0 -0
- /package/dist/{chunk-GZT7MLLO.js.map → chunk-B2ZITMYG.js.map} +0 -0
- /package/dist/{chunk-54HTXJJ2.js.map → chunk-BHE44AQE.js.map} +0 -0
- /package/dist/{chunk-TBMGYQJF.js.map → chunk-BKBELIUR.js.map} +0 -0
- /package/dist/{chunk-OOB3YWPX.js.map → chunk-BZFRBG2H.js.map} +0 -0
- /package/dist/{chunk-PICOOZLX.js.map → chunk-C5RTSOXD.js.map} +0 -0
- /package/dist/{chunk-GO6XDMBB.js.map → chunk-CEJTGG6J.js.map} +0 -0
- /package/dist/{chunk-ZGWEFOW6.js.map → chunk-CKAVTWXP.js.map} +0 -0
- /package/dist/{chunk-ANYOSBNA.js.map → chunk-CSXK7LH7.js.map} +0 -0
- /package/dist/{chunk-U6DOF5CR.js.map → chunk-CU7ELD43.js.map} +0 -0
- /package/dist/{chunk-XO4ZUHVH.js.map → chunk-CYPBF3BI.js.map} +0 -0
- /package/dist/{chunk-EO5IEWFI.js.map → chunk-DE6A46AE.js.map} +0 -0
- /package/dist/{chunk-JMEPGXJG.js.map → chunk-DHW5UMUG.js.map} +0 -0
- /package/dist/{chunk-3EPA2A4M.js.map → chunk-DJIFXJ4C.js.map} +0 -0
- /package/dist/{chunk-CM2Q7IH3.js.map → chunk-DTLKF4AX.js.map} +0 -0
- /package/dist/{chunk-C6JUGWAU.js.map → chunk-DYCTIOER.js.map} +0 -0
- /package/dist/{chunk-LCWGNDTH.js.map → chunk-EKBUM7HK.js.map} +0 -0
- /package/dist/{chunk-NYT3UVOH.js.map → chunk-EOEYOPOS.js.map} +0 -0
- /package/dist/{chunk-7LILFS72.js.map → chunk-EOKPFMJD.js.map} +0 -0
- /package/dist/{chunk-4PRZLII7.js.map → chunk-FOM7OMJR.js.map} +0 -0
- /package/dist/{chunk-QSNLIWEB.js.map → chunk-FTV5R2UZ.js.map} +0 -0
- /package/dist/{chunk-NDHDBOUH.js.map → chunk-FWPFCK4D.js.map} +0 -0
- /package/dist/{chunk-ON4TRXCM.js.map → chunk-GHJ2FIJO.js.map} +0 -0
- /package/dist/{chunk-GANW7FXQ.js.map → chunk-GKNMKPR6.js.map} +0 -0
- /package/dist/{chunk-LGCRL7DK.js.map → chunk-GP4BJI3F.js.map} +0 -0
- /package/dist/{chunk-4MKVGSHX.js.map → chunk-HN3PZTUK.js.map} +0 -0
- /package/dist/{chunk-HBP2OU4Q.js.map → chunk-HNFZLXZI.js.map} +0 -0
- /package/dist/{chunk-5FHPZOYK.js.map → chunk-HOIHO2YQ.js.map} +0 -0
- /package/dist/{chunk-3AOOI2NR.js.map → chunk-HR7YTBR7.js.map} +0 -0
- /package/dist/{chunk-PGV2FLE3.js.map → chunk-IG26N6J2.js.map} +0 -0
- /package/dist/{chunk-G2WERTWZ.js.map → chunk-IGGXKT5B.js.map} +0 -0
- /package/dist/{chunk-XLXMJ6X2.js.map → chunk-IO2X6DVH.js.map} +0 -0
- /package/dist/{chunk-3CLBGHTL.js.map → chunk-ITBUKGG3.js.map} +0 -0
- /package/dist/{chunk-6IRJAIS4.js.map → chunk-IXWIJCS3.js.map} +0 -0
- /package/dist/{chunk-TMW7RBW7.js.map → chunk-J6TIK47Z.js.map} +0 -0
- /package/dist/{chunk-G4TKMUOL.js.map → chunk-JDEKR77O.js.map} +0 -0
- /package/dist/{chunk-ITFFA3H2.js.map → chunk-JYLBVHG2.js.map} +0 -0
- /package/dist/{chunk-G7XHJPLO.js.map → chunk-JZ7ZRZTF.js.map} +0 -0
- /package/dist/{chunk-YTVXT5TD.js.map → chunk-K5CCQBNN.js.map} +0 -0
- /package/dist/{chunk-AOFI3GDS.js.map → chunk-KMC6WP66.js.map} +0 -0
- /package/dist/{chunk-K62RHTFB.js.map → chunk-KNAWZM7F.js.map} +0 -0
- /package/dist/{chunk-4Z2HIHA5.js.map → chunk-KRA75CKC.js.map} +0 -0
- /package/dist/{chunk-RHKT2XW2.js.map → chunk-KUKY5GEX.js.map} +0 -0
- /package/dist/{chunk-HUAQQ5ZL.js.map → chunk-LHHV6NXO.js.map} +0 -0
- /package/dist/{chunk-BJGUDLWZ.js.map → chunk-LRFXCZB4.js.map} +0 -0
- /package/dist/{chunk-U6W2RY3Z.js.map → chunk-MLQYIJTO.js.map} +0 -0
- /package/dist/{chunk-GPHURU2K.js.map → chunk-MSAAOQAD.js.map} +0 -0
- /package/dist/{chunk-3MJHHPRW.js.map → chunk-MVR4GURP.js.map} +0 -0
- /package/dist/{chunk-PRLYYKMG.js.map → chunk-MW7S7WZM.js.map} +0 -0
- /package/dist/{chunk-ERY6D2OV.js.map → chunk-MWPXKZ7O.js.map} +0 -0
- /package/dist/{chunk-ZUME25DS.js.map → chunk-NM2FLCPV.js.map} +0 -0
- /package/dist/{chunk-UP7SSTCZ.js.map → chunk-OAVRXSAS.js.map} +0 -0
- /package/dist/{chunk-VYA4QWQL.js.map → chunk-PJVZY2SA.js.map} +0 -0
- /package/dist/{chunk-SDBBJ6FG.js.map → chunk-PUYJVQ7X.js.map} +0 -0
- /package/dist/{chunk-IUD6N52Q.js.map → chunk-PXGURBIU.js.map} +0 -0
- /package/dist/{chunk-PNDYAIKM.js.map → chunk-Q5J37WOE.js.map} +0 -0
- /package/dist/{chunk-DCT2PKMQ.js.map → chunk-QGB3DOMV.js.map} +0 -0
- /package/dist/{chunk-YGYQC7MT.js.map → chunk-QOLIBVGS.js.map} +0 -0
- /package/dist/{chunk-TDXEO2UI.js.map → chunk-RJ35IXFD.js.map} +0 -0
- /package/dist/{chunk-P6Q2O3TU.js.map → chunk-RNVR3RGV.js.map} +0 -0
- /package/dist/{chunk-SNW5MJ6I.js.map → chunk-RPKWTFJ2.js.map} +0 -0
- /package/dist/{chunk-NPPJ3IJP.js.map → chunk-RRAWJQIO.js.map} +0 -0
- /package/dist/{chunk-H3GYVR7S.js.map → chunk-SM4MT4YC.js.map} +0 -0
- /package/dist/{chunk-5B7BTLN4.js.map → chunk-SOCZLOPJ.js.map} +0 -0
- /package/dist/{chunk-Z4O3F6KU.js.map → chunk-U4QUDFPJ.js.map} +0 -0
- /package/dist/{chunk-KWU62UPM.js.map → chunk-UHGQ74E3.js.map} +0 -0
- /package/dist/{chunk-Z6LTEJ7F.js.map → chunk-VKFZQSQC.js.map} +0 -0
- /package/dist/{chunk-MBNXCCRG.js.map → chunk-VQUPB7F7.js.map} +0 -0
- /package/dist/{chunk-CNR5RFKC.js.map → chunk-VVFV4MXS.js.map} +0 -0
- /package/dist/{chunk-ALOUJ3CE.js.map → chunk-WQ3KTELX.js.map} +0 -0
- /package/dist/{chunk-FY6PONLA.js.map → chunk-WSYPM3SR.js.map} +0 -0
- /package/dist/{chunk-QMELMQPA.js.map → chunk-X4VWYWFK.js.map} +0 -0
- /package/dist/{chunk-5PJM772Y.js.map → chunk-XLQYOBHP.js.map} +0 -0
- /package/dist/{chunk-TCMH3FXD.js.map → chunk-XTDJ2D5A.js.map} +0 -0
- /package/dist/{chunk-F5GXWK6B.js.map → chunk-Y2CMWGIU.js.map} +0 -0
- /package/dist/{chunk-SJGYMI6Y.js.map → chunk-Y4ET3NRC.js.map} +0 -0
- /package/dist/{chunk-FIO55AKI.js.map → chunk-YCHOWWRE.js.map} +0 -0
- /package/dist/{chunk-MM5XSAVE.js.map → chunk-YDIRPKYI.js.map} +0 -0
- /package/dist/{chunk-44Z72DDM.js.map → chunk-YF3VD2KD.js.map} +0 -0
- /package/dist/{chunk-Z4DKVLYG.js.map → chunk-Z3HSRNJT.js.map} +0 -0
- /package/dist/{chunk-5PTCT3LF.js.map → chunk-ZQ7IESR7.js.map} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../chunk-H7NA4TXY.js";
|
|
2
2
|
import {
|
|
3
3
|
InfiniteScroll
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-5KNDAC24.js";
|
|
4
|
+
} from "../chunk-HNFZLXZI.js";
|
|
6
5
|
import "../chunk-Y2X7LYIN.js";
|
|
6
|
+
import "../chunk-5KNDAC24.js";
|
|
7
7
|
import "../chunk-YKCAJ2TN.js";
|
|
8
8
|
import "../chunk-PZ5AY32C.js";
|
|
9
9
|
export {
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import "../chunk-IO36MEBD.js";
|
|
2
2
|
import {
|
|
3
3
|
WorkflowStep
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-JHW62I7Z.js";
|
|
5
|
+
import "../chunk-Y6RSQEOU.js";
|
|
6
|
+
import "../chunk-6S25ZCEW.js";
|
|
7
|
+
import "../chunk-TM5QQJTF.js";
|
|
8
|
+
import "../chunk-FHWXRHMA.js";
|
|
9
9
|
import "../chunk-7ZPUN7TV.js";
|
|
10
|
-
import "../chunk-
|
|
10
|
+
import "../chunk-2GG5W6LR.js";
|
|
11
|
+
import "../chunk-532XOWZ5.js";
|
|
11
12
|
import "../chunk-PT6TCWIW.js";
|
|
12
13
|
import "../chunk-M47ZOUGF.js";
|
|
13
14
|
import "../chunk-7FDU3FIN.js";
|
package/package.json
CHANGED
|
@@ -245,6 +245,14 @@ function runSelectItem<T>(item: T, p: AutocompleteProps<T>, s: AutocompleteState
|
|
|
245
245
|
// commitMultiSelect already clears inputValue and resets the flag itself,
|
|
246
246
|
// so the empty-input branch of the filter effect keeps the list closed.
|
|
247
247
|
const isSingleSelectPick = isLink || !p.multiple;
|
|
248
|
+
// Cancel a still-pending keystroke debounce BEFORE dispatching the pick, so
|
|
249
|
+
// no branch below — including `openLink`, which never touches `onChange`
|
|
250
|
+
// at all — can leave it armed to fire the STALE pre-pick text later
|
|
251
|
+
// (FUT-2779 #1). `commitSingleSelect`/`commitMultiSelect` already clear it
|
|
252
|
+
// as a side effect of calling the same `debouncedOnChange`; this makes it
|
|
253
|
+
// unconditional so a `link` pick (which skips `onChange` entirely) is
|
|
254
|
+
// covered too.
|
|
255
|
+
if (s.debounceRef.current) window.clearTimeout(s.debounceRef.current);
|
|
248
256
|
commitPick(item, isLink ? (url as string) : null, p, s, onChange);
|
|
249
257
|
s.setOpen(false);
|
|
250
258
|
s.setActiveIndex(-1);
|
|
@@ -347,6 +355,15 @@ export function useAutocomplete<T>(p: AutocompleteProps<T>): AutocompleteView<T>
|
|
|
347
355
|
if (!s.open || s.filteredSuggestions.length === 0) s.setActiveIndex(-1);
|
|
348
356
|
setDeliberateClose(s, false);
|
|
349
357
|
},
|
|
358
|
+
// Unconditionally reopens on a non-empty input, unguarded by
|
|
359
|
+
// `userClosedDropdownRef` — plausible on a touch device that blurs the
|
|
360
|
+
// input on `touchstart` before a tap's own `click`/`mousedown` reaches the
|
|
361
|
+
// option (FUT-2779 #2). Checked under Playwright touch emulation
|
|
362
|
+
// (`hasTouch`/`isMobile` context, both the `.tap()` API and raw CDP
|
|
363
|
+
// `Input.dispatchTouchEvent` at the option's coordinates) against this
|
|
364
|
+
// Chromium build: `document.activeElement` never left the input across
|
|
365
|
+
// the touch, so the reopen never happened — not reproduced, left
|
|
366
|
+
// unguarded per the ticket's decision rather than fixed blind.
|
|
350
367
|
onFocus: (): void => {
|
|
351
368
|
s.setIsInputFocused(true);
|
|
352
369
|
setDeliberateClose(s, false);
|
|
@@ -39,6 +39,13 @@ const SCROLL_DELTA_EPSILON = 2;
|
|
|
39
39
|
*/
|
|
40
40
|
const POINTER_MOVE_EPSILON = 2;
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* How long a key, sideways wheel or pan stays armed through a scroll the strip
|
|
44
|
+
* made itself (FUT-2848): a busy thread can finish a re-centre before the key's
|
|
45
|
+
* scroll ticks once. Past this it lapses, so a later clamp is not the visitor.
|
|
46
|
+
*/
|
|
47
|
+
const NUDGE_FRESH_MS = 1000;
|
|
48
|
+
|
|
42
49
|
interface VisitorScrollWatch {
|
|
43
50
|
/** True once the visitor has moved the strip themselves. */
|
|
44
51
|
hasScrolled: () => boolean;
|
|
@@ -79,6 +86,9 @@ interface WatchState {
|
|
|
79
86
|
pointer: boolean;
|
|
80
87
|
touch: boolean;
|
|
81
88
|
nudged: boolean;
|
|
89
|
+
/** When `nudged` was set (`Date.now()` ms), and whether it outlived an own verdict. */
|
|
90
|
+
nudgedAt: number;
|
|
91
|
+
nudgeKept: boolean;
|
|
82
92
|
undecided: boolean;
|
|
83
93
|
scrolled: boolean;
|
|
84
94
|
aimed: number;
|
|
@@ -177,6 +187,11 @@ export function toRawScrollLeft(strip: HTMLElement, physical: number): number {
|
|
|
177
187
|
return physical;
|
|
178
188
|
}
|
|
179
189
|
|
|
190
|
+
/** Whether the gesture that armed `nudged` happened within {@link NUDGE_FRESH_MS}. */
|
|
191
|
+
function nudgeIsFresh(state: WatchState): boolean {
|
|
192
|
+
return Date.now() - state.nudgedAt <= NUDGE_FRESH_MS;
|
|
193
|
+
}
|
|
194
|
+
|
|
180
195
|
/** Whether the strip came to rest where it last aimed itself — clamped as the browser would. */
|
|
181
196
|
function restsOnAim(strip: HTMLElement, aimed: number): boolean {
|
|
182
197
|
const reachable = Math.min(aimed, strip.scrollWidth - strip.clientWidth);
|
|
@@ -222,15 +237,18 @@ function createGestureListeners(state: WatchState): { onStrip: Listeners; onView
|
|
|
222
237
|
state.touch = false;
|
|
223
238
|
state.touchDownAt = Number.NaN;
|
|
224
239
|
};
|
|
225
|
-
const
|
|
240
|
+
const nudge = (): void => {
|
|
226
241
|
state.nudged = true;
|
|
227
|
-
|
|
242
|
+
state.nudgedAt = Date.now();
|
|
243
|
+
state.nudgeKept = false;
|
|
228
244
|
};
|
|
229
|
-
const
|
|
230
|
-
|
|
245
|
+
const onPointerCancel = (): void => {
|
|
246
|
+
nudge();
|
|
247
|
+
onPointerUp();
|
|
231
248
|
};
|
|
249
|
+
const onKeydown = nudge;
|
|
232
250
|
const onWheel = (event: Event): void => {
|
|
233
|
-
if (horizontalDelta(event) !== 0)
|
|
251
|
+
if (horizontalDelta(event) !== 0) nudge();
|
|
234
252
|
};
|
|
235
253
|
return {
|
|
236
254
|
onStrip: [
|
|
@@ -252,6 +270,31 @@ function createGestureListeners(state: WatchState): { onStrip: Listeners; onView
|
|
|
252
270
|
};
|
|
253
271
|
}
|
|
254
272
|
|
|
273
|
+
/**
|
|
274
|
+
* Judge the scroll under judgement once the strip rests. Only a scroll UNDER
|
|
275
|
+
* JUDGEMENT disarms: Chromium can fire `scrollend` for the strip's own scroll
|
|
276
|
+
* cut off by another BEFORE that one's first `scroll`, and disarming there
|
|
277
|
+
* would hand the visitor's scroll to nobody.
|
|
278
|
+
*/
|
|
279
|
+
function settleJudgement(strip: HTMLElement, state: WatchState): void {
|
|
280
|
+
if (!state.undecided) return;
|
|
281
|
+
state.undecided = false;
|
|
282
|
+
const own = restsOnAim(strip, state.aimed);
|
|
283
|
+
if (!own) state.scrolled = true;
|
|
284
|
+
// The strip's own scroll does not use up a gesture armed moments ago: the
|
|
285
|
+
// scroll that gesture causes may still be on its way (FUT-2848).
|
|
286
|
+
state.nudgeKept = own && nudgeIsFresh(state);
|
|
287
|
+
if (!state.nudgeKept) state.nudged = false;
|
|
288
|
+
state.settled();
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/** A gesture kept through the strip's own scroll lapses once stale (FUT-2848). */
|
|
292
|
+
function dropStaleNudge(state: WatchState): void {
|
|
293
|
+
if (!state.nudgeKept || nudgeIsFresh(state)) return;
|
|
294
|
+
state.nudged = false;
|
|
295
|
+
state.nudgeKept = false;
|
|
296
|
+
}
|
|
297
|
+
|
|
255
298
|
/**
|
|
256
299
|
* Tell a scroll the VISITOR made from every other one.
|
|
257
300
|
*
|
|
@@ -291,6 +334,8 @@ export function watchVisitorScroll(strip: HTMLElement): VisitorScrollWatch {
|
|
|
291
334
|
pointer: false,
|
|
292
335
|
touch: false,
|
|
293
336
|
nudged: false,
|
|
337
|
+
nudgedAt: Number.NaN,
|
|
338
|
+
nudgeKept: false,
|
|
294
339
|
undecided: false,
|
|
295
340
|
scrolled: false,
|
|
296
341
|
aimed: Number.NaN,
|
|
@@ -302,17 +347,7 @@ export function watchVisitorScroll(strip: HTMLElement): VisitorScrollWatch {
|
|
|
302
347
|
touchDownAt: Number.NaN,
|
|
303
348
|
touchMoved: false,
|
|
304
349
|
};
|
|
305
|
-
const settle = (): void =>
|
|
306
|
-
// Only a scroll that was UNDER JUDGEMENT disarms. Chromium can end the
|
|
307
|
-
// strip's own smooth scroll with a `scrollend` when another scroll cuts it
|
|
308
|
-
// off, fired BEFORE that scroll's first `scroll` (seen with an instant one);
|
|
309
|
-
// disarming there would hand the visitor's scroll to nobody.
|
|
310
|
-
if (!state.undecided) return;
|
|
311
|
-
state.undecided = false;
|
|
312
|
-
state.nudged = false;
|
|
313
|
-
if (!restsOnAim(strip, state.aimed)) state.scrolled = true;
|
|
314
|
-
state.settled();
|
|
315
|
-
};
|
|
350
|
+
const settle = (): void => settleJudgement(strip, state);
|
|
316
351
|
const onScroll = (): void => {
|
|
317
352
|
const now = physicalScrollLeft(strip);
|
|
318
353
|
const movedFarEnough = Math.abs(now - state.lastScrollLeft) > SCROLL_DELTA_EPSILON;
|
|
@@ -324,6 +359,7 @@ export function watchVisitorScroll(strip: HTMLElement): VisitorScrollWatch {
|
|
|
324
359
|
// arm under a delta-only check (`pointerMoved`/`touchMoved` rules that out);
|
|
325
360
|
// a pointer that drifts a sub-epsilon amount while resting would arm under
|
|
326
361
|
// a moved-only check with no delta floor (`movedFarEnough` rules that out).
|
|
362
|
+
dropStaleNudge(state);
|
|
327
363
|
const pointerDrag = state.pointer && state.pointerMoved && movedFarEnough;
|
|
328
364
|
const touchDrag = state.touch && state.touchMoved && movedFarEnough;
|
|
329
365
|
// `nudged` (a keypress, a sideways wheel, the browser taking the pointer
|
|
@@ -172,3 +172,28 @@ export const progressValueText = (
|
|
|
172
172
|
const step = steps[currentStep];
|
|
173
173
|
return step === undefined ? position : `${position}: ${step.title}`;
|
|
174
174
|
};
|
|
175
|
+
|
|
176
|
+
export interface ProgressValueRange {
|
|
177
|
+
max?: number;
|
|
178
|
+
now?: number;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* The progressbar's `aria-valuemax`/`aria-valuenow` pair (FUT-2773). With no
|
|
183
|
+
* steps at all there is no meaningful range to report — a `role="progressbar"`
|
|
184
|
+
* with zero steps has nothing to measure, and WAI-ARIA's own value attributes
|
|
185
|
+
* are optional for exactly this case (an indeterminate progressbar omits
|
|
186
|
+
* `aria-valuenow`) — so both are left out rather than asserting the invalid
|
|
187
|
+
* range `aria-valuemax={-1}` with `aria-valuenow={0}`. Otherwise `currentStep`
|
|
188
|
+
* is clamped to `[0, steps.length - 1]` so the reported value never falls
|
|
189
|
+
* outside `[aria-valuemin, aria-valuemax]`, however far `currentStep` strays.
|
|
190
|
+
*/
|
|
191
|
+
export const progressValueRange = (
|
|
192
|
+
steps: readonly WorkflowStepItem[],
|
|
193
|
+
currentStep: number,
|
|
194
|
+
): ProgressValueRange => {
|
|
195
|
+
if (steps.length === 0) return {};
|
|
196
|
+
|
|
197
|
+
const max = steps.length - 1;
|
|
198
|
+
return { max, now: Math.min(Math.max(currentStep, 0), max) };
|
|
199
|
+
};
|
|
@@ -123,14 +123,17 @@ const StepContent = styled(Box, {
|
|
|
123
123
|
orientation: WorkflowStepProps['orientation'];
|
|
124
124
|
interactive: boolean;
|
|
125
125
|
disabled: boolean;
|
|
126
|
-
}>(({ theme, orientation,
|
|
126
|
+
}>(({ theme, orientation, disabled }) => ({
|
|
127
127
|
display: 'flex',
|
|
128
128
|
flexDirection: 'column',
|
|
129
129
|
alignItems: orientation === 'vertical' ? 'flex-start' : 'center',
|
|
130
130
|
textAlign: orientation === 'vertical' ? 'left' : 'center',
|
|
131
131
|
marginTop: orientation === 'vertical' ? theme.spacing(1) : theme.spacing(0.5),
|
|
132
132
|
marginLeft: orientation === 'horizontal' ? theme.spacing(1) : 0,
|
|
133
|
-
|
|
133
|
+
// Inert (FUT-2773): the content block has no click handling of its own —
|
|
134
|
+
// the indicator is the step's one interactive element — so its cursor
|
|
135
|
+
// never claims to be clickable, whatever `interactive` says.
|
|
136
|
+
cursor: 'default',
|
|
134
137
|
minWidth: 0,
|
|
135
138
|
flex: 1,
|
|
136
139
|
|
|
@@ -160,26 +163,27 @@ const StepContent = styled(Box, {
|
|
|
160
163
|
}));
|
|
161
164
|
|
|
162
165
|
const StepConnector = styled(Box, {
|
|
163
|
-
shouldForwardProp: (prop) => !['orientation', 'isCompleted', 'color', 'variant'].includes(prop as string),
|
|
166
|
+
shouldForwardProp: (prop) => !['orientation', 'isCompleted', 'color', 'variant', 'animated'].includes(prop as string),
|
|
164
167
|
})<{
|
|
165
168
|
orientation: WorkflowStepProps['orientation'];
|
|
166
169
|
isCompleted: boolean;
|
|
167
170
|
color: WorkflowStepProps['color'];
|
|
168
171
|
variant: WorkflowStepProps['variant'];
|
|
169
|
-
|
|
172
|
+
animated: boolean;
|
|
173
|
+
}>(({ theme, orientation, isCompleted, color, variant, animated }) => {
|
|
170
174
|
const connectorColor = isCompleted ? stepPalette(theme, color).main : neutralTones(theme).track;
|
|
171
175
|
|
|
172
176
|
return {
|
|
173
177
|
flex: 1,
|
|
174
178
|
position: 'relative',
|
|
175
|
-
|
|
179
|
+
|
|
176
180
|
...(orientation === 'horizontal' && {
|
|
177
181
|
height: rem(theme, 2),
|
|
178
182
|
backgroundColor: connectorColor,
|
|
179
183
|
margin: `0 ${theme.spacing(1)}`,
|
|
180
184
|
minWidth: theme.spacing(2),
|
|
181
185
|
}),
|
|
182
|
-
|
|
186
|
+
|
|
183
187
|
...(orientation === 'vertical' && {
|
|
184
188
|
width: rem(theme, 2),
|
|
185
189
|
backgroundColor: connectorColor,
|
|
@@ -191,9 +195,11 @@ const StepConnector = styled(Box, {
|
|
|
191
195
|
top: '100%',
|
|
192
196
|
}),
|
|
193
197
|
|
|
194
|
-
transition:
|
|
195
|
-
|
|
196
|
-
|
|
198
|
+
transition: animated
|
|
199
|
+
? theme.transitions.create('background-color', {
|
|
200
|
+
duration: theme.transitions.duration.short,
|
|
201
|
+
})
|
|
202
|
+
: 'none',
|
|
197
203
|
|
|
198
204
|
...(variant === 'minimal' && {
|
|
199
205
|
opacity: 0.6,
|
|
@@ -223,6 +229,8 @@ const StepIndicatorComponent = forwardRef<HTMLDivElement, StepIndicatorProps>(({
|
|
|
223
229
|
onClick,
|
|
224
230
|
'data-testid': dataTestId,
|
|
225
231
|
}, ref) => {
|
|
232
|
+
const isDisabled = Boolean(disabled || step.disabled);
|
|
233
|
+
|
|
226
234
|
const handleClick = useCallback(() => {
|
|
227
235
|
if (interactive && !disabled && onClick) {
|
|
228
236
|
onClick(index, step);
|
|
@@ -265,13 +273,14 @@ const StepIndicatorComponent = forwardRef<HTMLDivElement, StepIndicatorProps>(({
|
|
|
265
273
|
isError={isError}
|
|
266
274
|
interactive={interactive}
|
|
267
275
|
animated={animated}
|
|
268
|
-
disabled={
|
|
276
|
+
disabled={isDisabled}
|
|
269
277
|
onClick={handleClick}
|
|
270
278
|
onKeyDown={handleKeyDown}
|
|
271
279
|
role={interactive ? 'button' : undefined}
|
|
272
|
-
tabIndex={interactive
|
|
280
|
+
tabIndex={!interactive ? undefined : isDisabled ? -1 : 0}
|
|
273
281
|
aria-label={`Step ${index + 1}: ${step.title}`}
|
|
274
282
|
aria-current={isActive ? 'step' : undefined}
|
|
283
|
+
aria-disabled={interactive && isDisabled ? true : undefined}
|
|
275
284
|
data-testid={dataTestId}
|
|
276
285
|
>
|
|
277
286
|
{renderIndicatorContent()}
|
|
@@ -289,6 +298,10 @@ const StepConnectorComponent = forwardRef<HTMLDivElement, StepConnectorProps>(({
|
|
|
289
298
|
orientation,
|
|
290
299
|
variant,
|
|
291
300
|
color,
|
|
301
|
+
// Defaults to the connector's own prior, unconditional behaviour (FUT-2773):
|
|
302
|
+
// an external caller building a `StepConnectorProps` value that predates
|
|
303
|
+
// this field keeps the transition it always had.
|
|
304
|
+
animated = true,
|
|
292
305
|
'data-testid': dataTestId,
|
|
293
306
|
}, ref) => (
|
|
294
307
|
<StepConnector
|
|
@@ -297,6 +310,7 @@ const StepConnectorComponent = forwardRef<HTMLDivElement, StepConnectorProps>(({
|
|
|
297
310
|
isCompleted={isCompleted}
|
|
298
311
|
color={color}
|
|
299
312
|
variant={variant}
|
|
313
|
+
animated={animated}
|
|
300
314
|
data-testid={dataTestId}
|
|
301
315
|
/>
|
|
302
316
|
));
|
|
@@ -304,51 +318,34 @@ const StepConnectorComponent = forwardRef<HTMLDivElement, StepConnectorProps>(({
|
|
|
304
318
|
StepConnectorComponent.displayName = 'StepConnector';
|
|
305
319
|
|
|
306
320
|
/**
|
|
307
|
-
* Step content component
|
|
321
|
+
* Step content component.
|
|
322
|
+
*
|
|
323
|
+
* Inert on purpose (FUT-2773): the indicator is the step's one focusable
|
|
324
|
+
* `role="button"` element — it already carries `aria-label="Step N: <title>"`
|
|
325
|
+
* — so the title/description block gets no `role`, `tabIndex`, click or key
|
|
326
|
+
* handling of its own. Two independently-interactive elements per step gave
|
|
327
|
+
* assistive tech two tab stops for what a caller means as a single control.
|
|
308
328
|
*/
|
|
309
329
|
const StepContentComponent = forwardRef<HTMLDivElement, StepContentProps>(({
|
|
310
330
|
step,
|
|
311
|
-
index,
|
|
312
331
|
orientation,
|
|
313
332
|
interactive,
|
|
314
333
|
disabled,
|
|
315
|
-
onClick,
|
|
316
334
|
'data-testid': dataTestId,
|
|
317
|
-
}, ref) =>
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
}, [interactive, disabled, onClick, index, step]);
|
|
332
|
-
|
|
333
|
-
return (
|
|
334
|
-
<StepContent
|
|
335
|
-
ref={ref}
|
|
336
|
-
orientation={orientation}
|
|
337
|
-
interactive={interactive}
|
|
338
|
-
disabled={Boolean(disabled || step.disabled)}
|
|
339
|
-
onClick={handleClick}
|
|
340
|
-
onKeyDown={handleKeyDown}
|
|
341
|
-
role={interactive ? 'button' : undefined}
|
|
342
|
-
tabIndex={interactive && !disabled && !step.disabled ? 0 : -1}
|
|
343
|
-
data-testid={dataTestId}
|
|
344
|
-
>
|
|
345
|
-
<div className="step-title">{step.title}</div>
|
|
346
|
-
{step.description && (
|
|
347
|
-
<div className="step-description">{step.description}</div>
|
|
348
|
-
)}
|
|
349
|
-
</StepContent>
|
|
350
|
-
);
|
|
351
|
-
});
|
|
335
|
+
}, ref) => (
|
|
336
|
+
<StepContent
|
|
337
|
+
ref={ref}
|
|
338
|
+
orientation={orientation}
|
|
339
|
+
interactive={interactive}
|
|
340
|
+
disabled={Boolean(disabled || step.disabled)}
|
|
341
|
+
data-testid={dataTestId}
|
|
342
|
+
>
|
|
343
|
+
<div className="step-title">{step.title}</div>
|
|
344
|
+
{step.description && (
|
|
345
|
+
<div className="step-description">{step.description}</div>
|
|
346
|
+
)}
|
|
347
|
+
</StepContent>
|
|
348
|
+
));
|
|
352
349
|
|
|
353
350
|
StepContentComponent.displayName = 'StepContent';
|
|
354
351
|
|
|
@@ -2,7 +2,7 @@ import Box from '@mui/material/Box/index.js';
|
|
|
2
2
|
import { styled } from '@mui/material/styles/index.js';
|
|
3
3
|
import React, { forwardRef, useCallback, useMemo } from 'react';
|
|
4
4
|
|
|
5
|
-
import { progressValueText, resolveWorkflowStepProps, withDerivedStatus } from './WorkflowStep.helpers';
|
|
5
|
+
import { progressValueRange, progressValueText, resolveWorkflowStepProps, withDerivedStatus } from './WorkflowStep.helpers';
|
|
6
6
|
import { StepRow } from './WorkflowStepRow';
|
|
7
7
|
import type { WorkflowStepItem, WorkflowStepProps } from './WorkflowStep.types';
|
|
8
8
|
|
|
@@ -62,6 +62,8 @@ export const WorkflowStep = forwardRef<HTMLDivElement, WorkflowStepProps>((rawPr
|
|
|
62
62
|
[steps, currentStep],
|
|
63
63
|
);
|
|
64
64
|
|
|
65
|
+
const { max: valueMax, now: valueNow } = progressValueRange(steps, currentStep);
|
|
66
|
+
|
|
65
67
|
return (
|
|
66
68
|
<StepContainer
|
|
67
69
|
ref={ref}
|
|
@@ -71,8 +73,8 @@ export const WorkflowStep = forwardRef<HTMLDivElement, WorkflowStepProps>((rawPr
|
|
|
71
73
|
style={style}
|
|
72
74
|
role="progressbar"
|
|
73
75
|
aria-valuemin={0}
|
|
74
|
-
aria-valuemax={
|
|
75
|
-
aria-valuenow={
|
|
76
|
+
aria-valuemax={valueMax}
|
|
77
|
+
aria-valuenow={valueNow}
|
|
76
78
|
aria-valuetext={progressValueText(steps, currentStep)}
|
|
77
79
|
data-testid={dataTestId}
|
|
78
80
|
{...other}
|
|
@@ -117,6 +117,14 @@ export interface StepConnectorProps {
|
|
|
117
117
|
orientation: WorkflowStepOrientation;
|
|
118
118
|
variant: WorkflowStepVariant;
|
|
119
119
|
color: WorkflowStepColor;
|
|
120
|
+
/**
|
|
121
|
+
* Gates the connector's colour transition (FUT-2773), the same way the
|
|
122
|
+
* indicator's already did. Optional and defaults to `true` — the
|
|
123
|
+
* connector's own prior, unconditional behaviour — so an external caller
|
|
124
|
+
* that already builds a `StepConnectorProps`-typed value without this
|
|
125
|
+
* field keeps rendering exactly as it did before this field existed.
|
|
126
|
+
*/
|
|
127
|
+
animated?: boolean;
|
|
120
128
|
'data-testid'?: string;
|
|
121
129
|
}
|
|
122
130
|
|
|
@@ -125,10 +133,12 @@ export interface StepConnectorProps {
|
|
|
125
133
|
*/
|
|
126
134
|
export interface StepContentProps {
|
|
127
135
|
step: WorkflowStepItem;
|
|
136
|
+
/** @deprecated Unused since FUT-2773 — the content block is inert and no longer keyed off it. */
|
|
128
137
|
index: number;
|
|
129
138
|
orientation: WorkflowStepOrientation;
|
|
130
139
|
interactive: boolean;
|
|
131
140
|
disabled: boolean;
|
|
141
|
+
/** @deprecated Unused since FUT-2773 — the content block is inert and never calls this itself; the indicator is the step's one interactive element. */
|
|
132
142
|
onClick?: (index: number, step: WorkflowStepItem) => void;
|
|
133
143
|
'data-testid'?: string;
|
|
134
144
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { PaletteColor, Theme, ThemeOptions } from '@mui/material/styles/index.js';
|
|
2
2
|
|
|
3
3
|
import { cssLengthToPx, cssTrackingToEm } from '../tokens/css-units';
|
|
4
|
+
import { chipDensityOverrides, iconButtonDensityOverrides } from '../tokens/density-overrides';
|
|
4
5
|
import { densityFontSize, resolveDensityFactor } from '../tokens/density';
|
|
5
6
|
import { resolveFieldHeight } from '../tokens/field-height.core';
|
|
6
7
|
import { fieldOverrides, mergeMuiComponents } from '../tokens/field-height';
|
|
@@ -144,10 +145,14 @@ export function muiThemeOptionsFrom(ui: UiTheme): ThemeOptions {
|
|
|
144
145
|
shape: { borderRadius: ui.radius.md },
|
|
145
146
|
fieldRadius: ui.radius.field,
|
|
146
147
|
fieldHeight: ui.fieldHeight,
|
|
147
|
-
// Additive: children
|
|
148
|
-
// their own geometry overrides land — this PR
|
|
149
|
-
//
|
|
150
|
-
components: mergeMuiComponents(
|
|
148
|
+
// Additive: children 3/4 (FUT-2767/2768) each add one more source here as
|
|
149
|
+
// their own geometry overrides land — this PR (FUT-2766) adds IconButton's
|
|
150
|
+
// and Chip's.
|
|
151
|
+
components: mergeMuiComponents(
|
|
152
|
+
fieldOverrides(ui.radius.field, ui.fieldHeight),
|
|
153
|
+
iconButtonDensityOverrides(),
|
|
154
|
+
chipDensityOverrides(),
|
|
155
|
+
),
|
|
151
156
|
spacing: ui.spacingUnit,
|
|
152
157
|
density: ui.density,
|
|
153
158
|
typography: {
|