@12-apps/ui 6.91.0 → 6.92.1
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/components-catalog.md +2 -2
- package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
- package/dist/_internal/components/data-display/AsyncStateContainer/AsyncStateContainer.js +3 -3
- package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +3 -3
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +4 -4
- package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
- package/dist/_internal/components/data-display/Chart/SpecChart.js +5 -5
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
- package/dist/_internal/components/data-display/Chip/Chip.js +3 -3
- package/dist/_internal/components/data-display/Chip/Chip.styles.js +2 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +20 -20
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +26 -26
- package/dist/_internal/components/data-display/DataViews/data-views-display-panel.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +17 -17
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +6 -6
- package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-range-calendar.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-range-summary.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-scope-tabs.js +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +1 -1
- package/dist/_internal/components/data-display/DayRuler/DayRuler.en-US.js +1 -1
- package/dist/_internal/components/data-display/DayRuler/DayRuler.js +5 -5
- package/dist/_internal/components/data-display/DayRuler/DayRuler.labels.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +9 -4
- package/dist/_internal/components/data-display/DayRuler/DayRuler.pt-BR.js +1 -1
- package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +9 -1
- 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 +9 -9
- 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/RegionMap/RegionMap.js +2 -2
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.js +4 -3
- package/dist/_internal/components/data-display/ScheduleGrid/ScheduleGrid.parts.js +3 -2
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-header-host.styles.js +12 -0
- package/dist/_internal/components/data-display/ScheduleGrid/schedule-header-host.styles.js.map +1 -0
- package/dist/_internal/components/data-display/SectionOnboarding/SectionOnboarding.js +3 -3
- package/dist/_internal/components/data-display/index.js +42 -41
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +3 -3
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +5 -5
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +4 -4
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +3 -3
- package/dist/_internal/components/feedback/index.js +6 -6
- package/dist/_internal/components/index.js +60 -59
- package/dist/_internal/components/layout/SettingCard/SettingCard.js +8 -8
- package/dist/_internal/components/layout/SettingCard/SettingCard.parts.js +4 -4
- package/dist/_internal/components/layout/SettingCard/SettingCard.summary.js +7 -7
- package/dist/_internal/components/layout/SettingCard/SettingGrid.js +5 -5
- package/dist/_internal/components/layout/SettingCard/SettingGroup.js +9 -9
- package/dist/_internal/components/layout/SettingCard/SettingSwitch.js +8 -8
- package/dist/_internal/components/layout/SettingCard/SettingToggle.js +9 -9
- package/dist/_internal/components/layout/index.js +12 -12
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +9 -9
- package/dist/_internal/components/navigation/SectionNav/SectionNav.parts.js +3 -3
- package/dist/_internal/components/navigation/SectionNav/SectionNav.primary.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.rail.js +5 -5
- package/dist/_internal/components/navigation/SectionNav/SectionNav.railCreate.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
- package/dist/_internal/components/navigation/index.js +9 -9
- package/dist/charts.js +6 -6
- package/dist/{chunk-HC6OZ7QK.js → chunk-3EIRRLCQ.js} +2 -2
- package/dist/{chunk-U2AEM3K4.js → chunk-3PQL2EN5.js} +2 -2
- package/dist/{chunk-7NP2JHGM.js → chunk-3WYEENUH.js} +11 -6
- package/dist/chunk-3WYEENUH.js.map +1 -0
- package/dist/{chunk-M3XJVD5G.js → chunk-5357QUVE.js} +2 -2
- package/dist/{chunk-Z7T4EFEC.js → chunk-5I75WRXT.js} +4 -4
- package/dist/chunk-5MXVKZKZ.js +30 -0
- package/dist/chunk-5MXVKZKZ.js.map +1 -0
- package/dist/{chunk-5E2CRRD4.js → chunk-66VKX6JE.js} +5 -5
- package/dist/{chunk-N5PVD4J5.js → chunk-6DO672AG.js} +7 -7
- package/dist/{chunk-76DX2IMH.js → chunk-7F6D73NL.js} +2 -2
- package/dist/{chunk-SNWCT6JN.js → chunk-AMIUZRDQ.js} +3 -3
- package/dist/{chunk-A3DDEKLV.js → chunk-BOADHYTA.js} +2 -2
- package/dist/{chunk-JKZPGCN7.js → chunk-BXZMV6QC.js} +12 -12
- package/dist/{chunk-JH2XLVWM.js → chunk-CW5Z67NA.js} +2 -2
- package/dist/{chunk-3JZ3KEQQ.js → chunk-CZVAVX5L.js} +4 -4
- package/dist/{chunk-O3OU3ED7.js → chunk-D7R6SRJB.js} +3 -3
- package/dist/{chunk-O3OU3ED7.js.map → chunk-D7R6SRJB.js.map} +1 -1
- package/dist/{chunk-DVX4HDNP.js → chunk-DBPFKGXX.js} +2 -2
- package/dist/{chunk-QN7FVZQD.js → chunk-DHAXUVMR.js} +4 -4
- package/dist/{chunk-XCUHGPPZ.js → chunk-DTZOP4ZR.js} +2 -2
- package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
- package/dist/{chunk-MX2RF34M.js → chunk-E73C73UD.js} +15 -7
- package/dist/chunk-E73C73UD.js.map +1 -0
- package/dist/{chunk-42D7KBDH.js → chunk-EOIRU62W.js} +2 -2
- package/dist/{chunk-HNW7IZPV.js → chunk-EZBBLLEU.js} +5 -5
- package/dist/{chunk-HNW7IZPV.js.map → chunk-EZBBLLEU.js.map} +1 -1
- package/dist/{chunk-K3IB7S7Q.js → chunk-F2ZUUEXC.js} +3 -2
- package/dist/{chunk-K3IB7S7Q.js.map → chunk-F2ZUUEXC.js.map} +1 -1
- package/dist/{chunk-2M3W6ACW.js → chunk-FAUNQ3FS.js} +3 -3
- package/dist/{chunk-FORAVDJF.js → chunk-FC7UCFFA.js} +35 -7
- package/dist/chunk-FC7UCFFA.js.map +1 -0
- package/dist/{chunk-PJNIJIE6.js → chunk-FQNDJITD.js} +2 -2
- package/dist/{chunk-ZIHSCBMN.js → chunk-FWTVIRZZ.js} +4 -4
- package/dist/{chunk-L3PDY7CJ.js → chunk-FYUNROLW.js} +2 -2
- package/dist/{chunk-KJKD6Y6V.js → chunk-GBB23QLL.js} +3 -3
- package/dist/{chunk-MICX23P4.js → chunk-HRES2S3Q.js} +85 -8
- package/dist/chunk-HRES2S3Q.js.map +1 -0
- package/dist/{chunk-XILMDEGZ.js → chunk-IEUVP6UV.js} +3 -3
- package/dist/{chunk-3IDL7NK7.js → chunk-K2VDRODL.js} +2 -2
- package/dist/{chunk-K3PMMW23.js → chunk-K6VEN5VN.js} +4 -4
- package/dist/{chunk-UKUGSU3Y.js → chunk-L4V7FZJI.js} +2 -2
- package/dist/{chunk-24HHUCWB.js → chunk-LDCZPZPD.js} +2 -2
- package/dist/{chunk-42TOCPXB.js → chunk-LXIPBHNJ.js} +5 -5
- package/dist/{chunk-ILJ3FXIC.js → chunk-MM3QESLI.js} +2 -2
- package/dist/{chunk-PGANINQD.js → chunk-NI67M453.js} +5 -5
- package/dist/{chunk-JN2IANXD.js → chunk-OCGPOACB.js} +2 -2
- package/dist/{chunk-RDCIST7P.js → chunk-OCT5VCLP.js} +2 -2
- package/dist/{chunk-G2PVUPE7.js → chunk-OJZLFFG4.js} +41 -3
- package/dist/chunk-OJZLFFG4.js.map +1 -0
- package/dist/{chunk-F7LBTMCA.js → chunk-P53ANKZV.js} +4 -4
- package/dist/{chunk-HMEGQKNQ.js → chunk-PCQ5JWLF.js} +15 -7
- package/dist/chunk-PCQ5JWLF.js.map +1 -0
- package/dist/{chunk-QVDEGBME.js → chunk-PEAUGQKU.js} +4 -4
- package/dist/{chunk-HS662RLW.js → chunk-RZWU2KYP.js} +2 -2
- package/dist/{chunk-U2QXQ7D4.js → chunk-S2VZUBM7.js} +4 -4
- package/dist/{chunk-HOPRZEBM.js → chunk-SKIAWOUC.js} +3 -3
- package/dist/{chunk-WCF56ZCD.js → chunk-TMINUTQQ.js} +2 -2
- package/dist/{chunk-ACM3HHZY.js → chunk-UDBOGSFO.js} +68 -2
- package/dist/chunk-UDBOGSFO.js.map +1 -0
- package/dist/{chunk-MZAYIG2I.js → chunk-VCJ72ODU.js} +2 -2
- package/dist/{chunk-YGQM6GFQ.js → chunk-VHE7UEG5.js} +2 -2
- package/dist/{chunk-QHIWV55K.js → chunk-VWRXSBT2.js} +2 -2
- package/dist/chunk-WLDP7C4K.js +44 -0
- package/dist/chunk-WLDP7C4K.js.map +1 -0
- package/dist/{chunk-TSEBMVYY.js → chunk-X2GWR75Q.js} +3 -3
- package/dist/{chunk-NKEFH3RS.js → chunk-XNAI7QGU.js} +2 -2
- package/dist/{chunk-L6JAALMX.js → chunk-XRV4QFEQ.js} +3 -3
- package/dist/{chunk-WH3LUOCQ.js → chunk-YE7M7URT.js} +2 -2
- package/dist/{chunk-DA3D5X5Z.js → chunk-YVDNCV2D.js} +6 -6
- package/dist/{chunk-G3JFESKD.js → chunk-Z5WUSI47.js} +6 -6
- package/dist/{chunk-5HADIIWN.js → chunk-ZDAAHCIS.js} +3 -3
- package/dist/{chunk-D3OXTS7Y.js → chunk-ZHCZOPKE.js} +3 -2
- package/dist/{chunk-D3OXTS7Y.js.map → chunk-ZHCZOPKE.js.map} +1 -1
- package/dist/{chunk-4KWDNGMA.js → chunk-ZVHHFLYY.js} +3 -3
- package/dist/data-display/Alert.js +2 -2
- package/dist/data-display/AsyncStateContainer.js +3 -3
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +7 -7
- package/dist/data-display/Chart.js +6 -6
- package/dist/data-display/Chip.js +3 -3
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +35 -35
- package/dist/data-display/DayRuler.js +7 -7
- package/dist/data-display/EmptyState.js +2 -2
- package/dist/data-display/FleetMap.js +9 -9
- 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/RegionMap.js +2 -2
- package/dist/data-display/ScheduleGrid.js +4 -3
- package/dist/data-display/SectionOnboarding.js +3 -3
- package/dist/feedback/NotificationStatusNotice.js +3 -3
- package/dist/feedback/SequenceResolver.js +5 -5
- package/dist/layout/SettingCard.js +12 -12
- package/dist/navigation/SectionNav.js +9 -9
- package/dist/types/components/data-display/DataViews/data-views-range-bounds.d.ts +6 -1
- package/dist/types/components/data-display/DataViews/data-views-range-bounds.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-range-calendar.d.ts +13 -1
- package/dist/types/components/data-display/DataViews/data-views-range-calendar.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-range-summary.d.ts +4 -5
- package/dist/types/components/data-display/DataViews/data-views-range-summary.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.en-US.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.labels.d.ts +2 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.labels.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts +13 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.pt-BR.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +16 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts +44 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.types.d.ts.map +1 -1
- package/dist/types/components/data-display/DayRuler/index.d.ts +1 -1
- package/dist/types/components/data-display/DayRuler/index.d.ts.map +1 -1
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts +3 -1
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts +12 -0
- package/dist/types/components/data-display/ScheduleGrid/ScheduleGrid.types.d.ts.map +1 -1
- package/dist/types/components/data-display/ScheduleGrid/schedule-header-host.styles.d.ts +16 -0
- package/dist/types/components/data-display/ScheduleGrid/schedule-header-host.styles.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/data-display/DataViews/RESPONSIVE-BEHAVIOUR.md +8 -4
- package/src/components/data-display/DataViews/data-views-range-bounds.tsx +57 -3
- package/src/components/data-display/DataViews/data-views-range-calendar.tsx +122 -8
- package/src/components/data-display/DataViews/data-views-range-pill.tsx +5 -0
- package/src/components/data-display/DataViews/data-views-range-summary.tsx +9 -22
- package/src/components/data-display/DayRuler/DayRuler.en-US.ts +1 -0
- package/src/components/data-display/DayRuler/DayRuler.labels.ts +2 -0
- package/src/components/data-display/DayRuler/DayRuler.md +3 -2
- package/src/components/data-display/DayRuler/DayRuler.parts.tsx +120 -1
- package/src/components/data-display/DayRuler/DayRuler.pt-BR.ts +1 -0
- package/src/components/data-display/DayRuler/DayRuler.styles.ts +50 -1
- package/src/components/data-display/DayRuler/DayRuler.tsx +10 -1
- package/src/components/data-display/DayRuler/DayRuler.types.ts +30 -1
- package/src/components/data-display/DayRuler/index.ts +2 -0
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.md +3 -2
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx +18 -3
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.tsx +1 -1
- package/src/components/data-display/ScheduleGrid/ScheduleGrid.types.ts +12 -0
- package/src/components/data-display/ScheduleGrid/schedule-header-host.styles.ts +35 -0
- package/dist/chunk-7NP2JHGM.js.map +0 -1
- package/dist/chunk-ACM3HHZY.js.map +0 -1
- package/dist/chunk-FORAVDJF.js.map +0 -1
- package/dist/chunk-G2PVUPE7.js.map +0 -1
- package/dist/chunk-HMEGQKNQ.js.map +0 -1
- package/dist/chunk-J2AVWIMM.js +0 -60
- package/dist/chunk-J2AVWIMM.js.map +0 -1
- package/dist/chunk-MICX23P4.js.map +0 -1
- package/dist/chunk-MX2RF34M.js.map +0 -1
- /package/dist/{chunk-HC6OZ7QK.js.map → chunk-3EIRRLCQ.js.map} +0 -0
- /package/dist/{chunk-U2AEM3K4.js.map → chunk-3PQL2EN5.js.map} +0 -0
- /package/dist/{chunk-M3XJVD5G.js.map → chunk-5357QUVE.js.map} +0 -0
- /package/dist/{chunk-Z7T4EFEC.js.map → chunk-5I75WRXT.js.map} +0 -0
- /package/dist/{chunk-5E2CRRD4.js.map → chunk-66VKX6JE.js.map} +0 -0
- /package/dist/{chunk-N5PVD4J5.js.map → chunk-6DO672AG.js.map} +0 -0
- /package/dist/{chunk-76DX2IMH.js.map → chunk-7F6D73NL.js.map} +0 -0
- /package/dist/{chunk-SNWCT6JN.js.map → chunk-AMIUZRDQ.js.map} +0 -0
- /package/dist/{chunk-A3DDEKLV.js.map → chunk-BOADHYTA.js.map} +0 -0
- /package/dist/{chunk-JKZPGCN7.js.map → chunk-BXZMV6QC.js.map} +0 -0
- /package/dist/{chunk-JH2XLVWM.js.map → chunk-CW5Z67NA.js.map} +0 -0
- /package/dist/{chunk-3JZ3KEQQ.js.map → chunk-CZVAVX5L.js.map} +0 -0
- /package/dist/{chunk-DVX4HDNP.js.map → chunk-DBPFKGXX.js.map} +0 -0
- /package/dist/{chunk-QN7FVZQD.js.map → chunk-DHAXUVMR.js.map} +0 -0
- /package/dist/{chunk-XCUHGPPZ.js.map → chunk-DTZOP4ZR.js.map} +0 -0
- /package/dist/{chunk-BLZDSCIZ.js.map → chunk-DYHOBKPU.js.map} +0 -0
- /package/dist/{chunk-42D7KBDH.js.map → chunk-EOIRU62W.js.map} +0 -0
- /package/dist/{chunk-2M3W6ACW.js.map → chunk-FAUNQ3FS.js.map} +0 -0
- /package/dist/{chunk-PJNIJIE6.js.map → chunk-FQNDJITD.js.map} +0 -0
- /package/dist/{chunk-ZIHSCBMN.js.map → chunk-FWTVIRZZ.js.map} +0 -0
- /package/dist/{chunk-L3PDY7CJ.js.map → chunk-FYUNROLW.js.map} +0 -0
- /package/dist/{chunk-KJKD6Y6V.js.map → chunk-GBB23QLL.js.map} +0 -0
- /package/dist/{chunk-XILMDEGZ.js.map → chunk-IEUVP6UV.js.map} +0 -0
- /package/dist/{chunk-3IDL7NK7.js.map → chunk-K2VDRODL.js.map} +0 -0
- /package/dist/{chunk-K3PMMW23.js.map → chunk-K6VEN5VN.js.map} +0 -0
- /package/dist/{chunk-UKUGSU3Y.js.map → chunk-L4V7FZJI.js.map} +0 -0
- /package/dist/{chunk-24HHUCWB.js.map → chunk-LDCZPZPD.js.map} +0 -0
- /package/dist/{chunk-42TOCPXB.js.map → chunk-LXIPBHNJ.js.map} +0 -0
- /package/dist/{chunk-ILJ3FXIC.js.map → chunk-MM3QESLI.js.map} +0 -0
- /package/dist/{chunk-PGANINQD.js.map → chunk-NI67M453.js.map} +0 -0
- /package/dist/{chunk-JN2IANXD.js.map → chunk-OCGPOACB.js.map} +0 -0
- /package/dist/{chunk-RDCIST7P.js.map → chunk-OCT5VCLP.js.map} +0 -0
- /package/dist/{chunk-F7LBTMCA.js.map → chunk-P53ANKZV.js.map} +0 -0
- /package/dist/{chunk-QVDEGBME.js.map → chunk-PEAUGQKU.js.map} +0 -0
- /package/dist/{chunk-HS662RLW.js.map → chunk-RZWU2KYP.js.map} +0 -0
- /package/dist/{chunk-U2QXQ7D4.js.map → chunk-S2VZUBM7.js.map} +0 -0
- /package/dist/{chunk-HOPRZEBM.js.map → chunk-SKIAWOUC.js.map} +0 -0
- /package/dist/{chunk-WCF56ZCD.js.map → chunk-TMINUTQQ.js.map} +0 -0
- /package/dist/{chunk-MZAYIG2I.js.map → chunk-VCJ72ODU.js.map} +0 -0
- /package/dist/{chunk-YGQM6GFQ.js.map → chunk-VHE7UEG5.js.map} +0 -0
- /package/dist/{chunk-QHIWV55K.js.map → chunk-VWRXSBT2.js.map} +0 -0
- /package/dist/{chunk-TSEBMVYY.js.map → chunk-X2GWR75Q.js.map} +0 -0
- /package/dist/{chunk-NKEFH3RS.js.map → chunk-XNAI7QGU.js.map} +0 -0
- /package/dist/{chunk-L6JAALMX.js.map → chunk-XRV4QFEQ.js.map} +0 -0
- /package/dist/{chunk-WH3LUOCQ.js.map → chunk-YE7M7URT.js.map} +0 -0
- /package/dist/{chunk-DA3D5X5Z.js.map → chunk-YVDNCV2D.js.map} +0 -0
- /package/dist/{chunk-G3JFESKD.js.map → chunk-Z5WUSI47.js.map} +0 -0
- /package/dist/{chunk-5HADIIWN.js.map → chunk-ZDAAHCIS.js.map} +0 -0
- /package/dist/{chunk-4KWDNGMA.js.map → chunk-ZVHHFLYY.js.map} +0 -0
|
@@ -71,13 +71,90 @@ function openingMonth(value, months) {
|
|
|
71
71
|
const anchor = end ?? /* @__PURE__ */ new Date();
|
|
72
72
|
return new Date(anchor.getFullYear(), anchor.getMonth() - (months > 1 ? 1 : 0), 1);
|
|
73
73
|
}
|
|
74
|
+
function HintLine({
|
|
75
|
+
text,
|
|
76
|
+
isWindow,
|
|
77
|
+
canClear,
|
|
78
|
+
onClear,
|
|
79
|
+
testId
|
|
80
|
+
}) {
|
|
81
|
+
const clear = useDataViewsCopy().filters.clear;
|
|
82
|
+
return /* @__PURE__ */ jsxs(
|
|
83
|
+
Box,
|
|
84
|
+
{
|
|
85
|
+
"data-testid": `${testId}-calendar-line`,
|
|
86
|
+
sx: {
|
|
87
|
+
display: "flex",
|
|
88
|
+
alignItems: "center",
|
|
89
|
+
justifyContent: "space-between",
|
|
90
|
+
gap: 2,
|
|
91
|
+
mt: { xs: 0.25, sm: 1 },
|
|
92
|
+
minHeight: canClear ? sxRem(40) : void 0,
|
|
93
|
+
fontSize: sxRem(12),
|
|
94
|
+
lineHeight: 1.5
|
|
95
|
+
},
|
|
96
|
+
children: [
|
|
97
|
+
/* @__PURE__ */ jsx(
|
|
98
|
+
Typography,
|
|
99
|
+
{
|
|
100
|
+
component: "p",
|
|
101
|
+
"aria-live": "polite",
|
|
102
|
+
"data-testid": `${testId}-calendar-hint`,
|
|
103
|
+
title: text,
|
|
104
|
+
noWrap: true,
|
|
105
|
+
sx: { m: 0, minWidth: 0, font: "inherit", color: isWindow ? "text.primary" : "text.secondary" },
|
|
106
|
+
children: text
|
|
107
|
+
}
|
|
108
|
+
),
|
|
109
|
+
onClear && /* @__PURE__ */ jsx(
|
|
110
|
+
Box,
|
|
111
|
+
{
|
|
112
|
+
component: "button",
|
|
113
|
+
type: "button",
|
|
114
|
+
onClick: (event) => onClear(event.detail === 0),
|
|
115
|
+
"data-testid": `${testId}-clear`,
|
|
116
|
+
sx: {
|
|
117
|
+
flexShrink: 0,
|
|
118
|
+
display: "inline-flex",
|
|
119
|
+
alignItems: "center",
|
|
120
|
+
minHeight: sxRem(40),
|
|
121
|
+
border: 0,
|
|
122
|
+
bgcolor: "transparent",
|
|
123
|
+
cursor: "pointer",
|
|
124
|
+
font: "inherit",
|
|
125
|
+
fontWeight: 600,
|
|
126
|
+
color: "primary.main",
|
|
127
|
+
px: 1,
|
|
128
|
+
py: 0,
|
|
129
|
+
// Its text lines up with the boxes' right edge; the side padding
|
|
130
|
+
// reaches into the popover's own.
|
|
131
|
+
mr: -1,
|
|
132
|
+
borderRadius: 1,
|
|
133
|
+
"&:hover": { bgcolor: "action.hover" },
|
|
134
|
+
// The theme's focus ring for a keyboard, none for a tap.
|
|
135
|
+
"&:focus": { outline: "none" },
|
|
136
|
+
"&:focus-visible": {
|
|
137
|
+
outline: (theme) => `${rem(theme, 2)} solid`,
|
|
138
|
+
outlineColor: "primary.main",
|
|
139
|
+
outlineOffset: sxRem(1)
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
children: clear
|
|
143
|
+
}
|
|
144
|
+
)
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
}
|
|
74
149
|
function DayRangeCalendar({
|
|
75
150
|
fieldLabel,
|
|
76
151
|
value,
|
|
77
152
|
onChange,
|
|
78
153
|
months,
|
|
79
154
|
viewKey,
|
|
80
|
-
testId
|
|
155
|
+
testId,
|
|
156
|
+
summary,
|
|
157
|
+
onClear
|
|
81
158
|
}) {
|
|
82
159
|
const copy = useDataViewsCopy().filters.dayCalendar ?? EN_US_DATA_VIEWS_COPY.filters.dayCalendar;
|
|
83
160
|
const range = rangeOf(value);
|
|
@@ -103,13 +180,13 @@ function DayRangeCalendar({
|
|
|
103
180
|
viewKey
|
|
104
181
|
),
|
|
105
182
|
/* @__PURE__ */ jsx(
|
|
106
|
-
|
|
183
|
+
HintLine,
|
|
107
184
|
{
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
185
|
+
text: waitingForEnd ? copy.pickEnd : summary ?? copy.pickStart,
|
|
186
|
+
isWindow: !waitingForEnd && summary !== void 0,
|
|
187
|
+
canClear: onClear !== void 0,
|
|
188
|
+
onClear: summary === void 0 ? void 0 : onClear,
|
|
189
|
+
testId
|
|
113
190
|
}
|
|
114
191
|
)
|
|
115
192
|
] });
|
|
@@ -119,4 +196,4 @@ export {
|
|
|
119
196
|
rangeFromCalendar,
|
|
120
197
|
DayRangeCalendar
|
|
121
198
|
};
|
|
122
|
-
//# sourceMappingURL=chunk-
|
|
199
|
+
//# sourceMappingURL=chunk-HRES2S3Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DataViews/data-views-range-calendar.tsx"],"sourcesContent":["'use client';\n\n/**\n * The range calendar under a day filter's `De`/`Até` boxes (FUT-4144).\n *\n * The owner picked it ALWAYS OPEN (option B of the prototype): a period is\n * three taps — open the filter, the first day, the last day — against five for\n * a calendar button in each box and four for a link to a separate sheet. It\n * sits BELOW the boxes, with no button of its own, so the typed path is not one\n * keystroke longer than it was.\n *\n * The boxes and the calendar are two views of ONE range: a tap writes the\n * boxes, a typed day moves and repaints the calendar, an impossible typed day\n * (which writes nothing) leaves it alone, and \"Limpar\" empties both.\n *\n * It is `Calendar` in `selectionMode=\"range\"`, the same one `DateRangePicker`\n * mounts — not a second calendar. Its own rule picks the period: the first tap\n * starts it, the second closes it, and a second tap BEFORE the first swaps the\n * two, so the boxes never show a period backwards.\n */\nimport Box from '@mui/material/Box/index.js';\nimport Typography from '@mui/material/Typography/index.js';\nimport React from 'react';\n\nimport { EN_US_DATA_VIEWS_COPY } from '../../../en-US.data-display';\nimport type { Theme } from '@mui/material/styles/index.js';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport { Calendar, type DateRange } from '../../form/Calendar';\nimport { toDayString, toLocalDay } from '../../form/DateRangePicker/DateRangePicker.dates';\nimport type { DataViewsDayCalendarCopy } from './data-views-copy';\nimport { useDataViewsCopy } from './data-views-copy-context';\nimport type { RangeValue } from './data-views-types';\n\nconst CALENDAR_CLASS = 'data-views-range-calendar';\n\n/**\n * `Calendar` draws its own `Paper` with 24px of padding and a shadow. Inside\n * the filter's popover that reads as a card inside a card, so the inner frame\n * is flattened through the class hook the component offers for this — the\n * same thing `DateRangePicker` does.\n */\nconst ROOT_SX = (theme: Theme) => ({\n mt: { xs: 1, sm: 1.5 },\n // Below `sm` the caption and the weekday row give up their bottom margins,\n // so the whole popover fits a 320×568 screen under its pill (FUT-4144).\n '& :has(> * > [data-testid=\"calendar-month-select\"])': { mb: { xs: 0.5, sm: 2 } },\n '& :has(> [role=\"columnheader\"])': { mb: { xs: 0, sm: 1 } },\n '& [role=\"columnheader\"]': { height: { xs: rem(theme, 24), sm: rem(theme, 32) } },\n // The days carry no column gap of their own (`Calendar`, FUT-4162), so the\n // seven columns are what a day's 40px target is carved from below `sm`; the\n // range band and its round endpoints are the Calendar's, untouched here.\n // The month/year caption on ONE row at 320: the selectors give up the slack\n // around their text before the arrows are pushed onto a second row.\n '& [data-testid=\"calendar-month-select\"], & [data-testid=\"calendar-year-select\"]': { px: 0.5, minWidth: 0 },\n [`& .${CALENDAR_CLASS}`]: {\n p: 0,\n boxShadow: 'none',\n backgroundColor: 'transparent',\n backgroundImage: 'none',\n // A tapped day already rings itself; the whole grid framed in the primary\n // colour after every tap is noise in a popover. The frame stays for the\n // keyboard reaching the grid itself.\n '&:focus-within': { outline: 'none' },\n '&:focus-visible': {\n outline: (theme: Theme) => `${rem(theme, 2)} solid`,\n outlineColor: 'primary.main',\n outlineOffset: sxRem(2),\n },\n },\n});\n\n/** The two ends of a range, as `Calendar` reads them. */\nfunction rangeOf(value: RangeValue): DateRange {\n return {\n start: toLocalDay(typeof value.min === 'string' ? value.min : null),\n end: toLocalDay(typeof value.max === 'string' ? value.max : null),\n };\n}\n\n/**\n * What a tap on the calendar makes of the range.\n *\n * `Calendar` reports the period it holds after the tap: a fresh start (`end`\n * null) or a closed one, already in order. The one case it cannot see is a\n * range with only `Até` — typed, or left by a saved view — where its first tap\n * would drop that `Até`. A first day on or before it keeps it, so \"até 15/10\"\n * plus one tap on the 3rd is 03/10–15/10, as the prototype does.\n */\nexport function rangeFromCalendar(previous: RangeValue, picked: DateRange): RangeValue {\n const min = dayOf(picked.start);\n const max = dayOf(picked.end) ?? keptEnd(previous, min);\n return { ...(min ? { min } : {}), ...(max ? { max } : {}) };\n}\n\nconst dayOf = (date: Date | null | undefined): string | undefined => (date ? toDayString(date) : undefined);\n\n/** The `Até` of a range that has ONLY one, when the new first day is on or before it. */\nfunction keptEnd(previous: RangeValue, min: string | undefined): string | undefined {\n if (previous.min != null || typeof previous.max !== 'string') return undefined;\n return min && min <= previous.max ? previous.max : undefined;\n}\n\n/**\n * The month the calendar opens on while `De` is empty. With `De` set it opens\n * on De's month, which `Calendar` does by itself.\n *\n * With two months the current month sits on the RIGHT (setembro | outubro), so\n * the days a filter usually asks about — the ones just past — are on screen;\n * with only `Até` set, its month takes that place.\n */\nfunction openingMonth(value: RangeValue, months: number): Date | undefined {\n const end = toLocalDay(typeof value.max === 'string' ? value.max : null);\n const anchor = end ?? new Date();\n return new Date(anchor.getFullYear(), anchor.getMonth() - (months > 1 ? 1 : 0), 1);\n}\n\n/**\n * The line under the calendar: the next step (\"Toque no primeiro e no último\n * dia.\" / \"Agora toque no último dia.\") or, once a period is applied, the\n * window, with \"Limpar\" at its end.\n *\n * ONE line whose words change, never a row held empty for later (FUT-4144\n * follow-up): #932 kept an invisible summary row under the hint so the first\n * tap would not grow the popover, and at 1280 that was 59px of white.\n *\n * Where the line can hold \"Limpar\" (the pill's popover) it is always as tall as\n * its 40px target, so it keeps one height with the button and without it, and\n * the popover does not move. Where it cannot (a panel, whose header has\n * \"Limpar\") it stays a plain line of text: no row reserved for a button that\n * never comes. The text keeps to one line, cut with an ellipsis and whole in\n * its title, so a long label never grows the line on the closing tap. The target\n * is its own box, not padding pushed out with a negative margin: that version\n * ran under the calendar's last week, which took its top 10px at 320 (FUT-4144\n * UI review). The window is said in the primary ink, the steps in the\n * secondary one, so the result does not read as one more instruction.\n */\nfunction HintLine({\n text,\n isWindow,\n canClear,\n onClear,\n testId,\n}: {\n text: string;\n /** `text` is the applied window, not a step. */\n isWindow: boolean;\n /** The line can hold \"Limpar\" at all — fixed per surface, not per state. */\n canClear: boolean;\n /** Shown now: \"Limpar\" empties the range; `fromKeyboard` is a click with `detail` 0 (Enter or Space). */\n onClear: ((fromKeyboard: boolean) => void) | undefined;\n testId: string;\n}): React.JSX.Element {\n const clear = useDataViewsCopy().filters.clear;\n return (\n <Box\n data-testid={`${testId}-calendar-line`}\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 2,\n mt: { xs: 0.25, sm: 1 },\n minHeight: canClear ? sxRem(40) : undefined,\n fontSize: sxRem(12),\n lineHeight: 1.5,\n }}\n >\n <Typography\n component=\"p\"\n aria-live=\"polite\"\n data-testid={`${testId}-calendar-hint`}\n title={text}\n noWrap\n sx={{ m: 0, minWidth: 0, font: 'inherit', color: isWindow ? 'text.primary' : 'text.secondary' }}\n >\n {text}\n </Typography>\n {onClear && (\n <Box\n component=\"button\"\n type=\"button\"\n onClick={(event) => onClear(event.detail === 0)}\n data-testid={`${testId}-clear`}\n sx={{\n flexShrink: 0,\n display: 'inline-flex',\n alignItems: 'center',\n minHeight: sxRem(40),\n border: 0,\n bgcolor: 'transparent',\n cursor: 'pointer',\n font: 'inherit',\n fontWeight: 600,\n color: 'primary.main',\n px: 1,\n py: 0,\n // Its text lines up with the boxes' right edge; the side padding\n // reaches into the popover's own.\n mr: -1,\n borderRadius: 1,\n '&:hover': { bgcolor: 'action.hover' },\n // The theme's focus ring for a keyboard, none for a tap.\n '&:focus': { outline: 'none' },\n '&:focus-visible': {\n outline: (theme: Theme) => `${rem(theme, 2)} solid`,\n outlineColor: 'primary.main',\n outlineOffset: sxRem(1),\n },\n }}\n >\n {clear}\n </Box>\n )}\n </Box>\n );\n}\n\n/** Props of {@link DayRangeCalendar}. */\nexport interface DayRangeCalendarProps {\n /** The filter's own label (\"Data\"), which names the calendar. */\n fieldLabel: string;\n value: RangeValue;\n /** Called with the range a tap leaves; never for a typed day. */\n onChange: (range: RangeValue) => void;\n /**\n * Months side by side. Two read as a period at a glance where there is room;\n * one, with the month/year selectors, where there is not.\n */\n months: 1 | 2;\n /**\n * Changes when the range moved from OUTSIDE the calendar (typed, a preset,\n * \"Limpar\"), so the calendar re-opens on it. Never for its own taps: a\n * calendar that jumped under the finger picking in it would be unusable.\n */\n viewKey: string;\n testId: string;\n /**\n * The applied window in words (\"Data: 01/10–15/10\"), said on the hint's own\n * line with \"Limpar\" at its end. Set by the pill, whose popover has no other\n * place for them; a panel says them in its own header and leaves this unset.\n */\n summary?: string;\n /**\n * Empties the range: the line's \"Limpar\", shown while `summary` is set. Set\n * only where the line may hold it; the line reserves its 40px only then.\n * `fromKeyboard` is true when it was pressed from the keyboard.\n */\n onClear?: (fromKeyboard: boolean) => void;\n}\n\nexport function DayRangeCalendar({\n fieldLabel,\n value,\n onChange,\n months,\n viewKey,\n testId,\n summary,\n onClear,\n}: DayRangeCalendarProps): React.JSX.Element {\n const copy: DataViewsDayCalendarCopy =\n useDataViewsCopy().filters.dayCalendar ?? (EN_US_DATA_VIEWS_COPY.filters.dayCalendar as DataViewsDayCalendarCopy);\n const range = rangeOf(value);\n const pick = (picked: DateRange) => onChange(rangeFromCalendar(value, picked));\n const waitingForEnd = Boolean(range.start && !range.end);\n\n return (\n <Box sx={ROOT_SX} data-testid={`${testId}-calendar`}>\n <Calendar\n key={viewKey}\n ariaLabel={copy.label(fieldLabel)}\n className={CALENDAR_CLASS}\n selectionMode=\"range\"\n locale={copy.locale}\n labels={copy.caption}\n // Sunday first, as a pt-BR calendar reads (`D S T Q Q S S`) and as the\n // presets' \"Esta semana\" counts.\n firstDayOfWeek={0}\n numberOfMonths={months}\n // Side by side, a day of the next month in this one is the same day\n // twice; one month alone keeps them, muted, as a six-week frame.\n showOutsideDays={months === 1}\n captionLayout={months > 1 ? 'arrows' : 'selectors'}\n defaultMonth={openingMonth(value, months)}\n range={range}\n // The intermediate callback does the work: the other fires only on the\n // tap that CLOSES a period, so the first tap would write nothing.\n onIntermediateRangeChange={pick}\n />\n <HintLine\n text={waitingForEnd ? copy.pickEnd : (summary ?? copy.pickStart)}\n isWindow={!waitingForEnd && summary !== undefined}\n canClear={onClear !== undefined}\n onClear={summary === undefined ? undefined : onClear}\n testId={testId}\n />\n </Box>\n );\n}\n"],"mappings":"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","names":["theme"]}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-T7OIVPCO.js";
|
|
6
6
|
import {
|
|
7
7
|
MoreFilters
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-RZWU2KYP.js";
|
|
9
9
|
import {
|
|
10
10
|
PillControl
|
|
11
11
|
} from "./chunk-AJ6KFHEE.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-KYUEO2IO.js";
|
|
15
15
|
import {
|
|
16
16
|
RangePill
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-3WYEENUH.js";
|
|
18
18
|
import {
|
|
19
19
|
QuickChip
|
|
20
20
|
} from "./chunk-AT6UKTH4.js";
|
|
@@ -251,4 +251,4 @@ function FilterSlots({
|
|
|
251
251
|
export {
|
|
252
252
|
InlineFilterControls
|
|
253
253
|
};
|
|
254
|
-
//# sourceMappingURL=chunk-
|
|
254
|
+
//# sourceMappingURL=chunk-IEUVP6UV.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SettingSwitchBlock,
|
|
3
3
|
useSettingSwitchIds
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZDAAHCIS.js";
|
|
5
5
|
import {
|
|
6
6
|
useSettingGroup
|
|
7
7
|
} from "./chunk-XJQNSMGA.js";
|
|
@@ -44,4 +44,4 @@ SettingToggle.displayName = "SettingToggle";
|
|
|
44
44
|
export {
|
|
45
45
|
SettingToggle
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
47
|
+
//# sourceMappingURL=chunk-K2VDRODL.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DataViewsScopeTabs
|
|
3
|
-
} from "./chunk-PL2AB5HJ.js";
|
|
4
1
|
import {
|
|
5
2
|
useDataViewsLayout
|
|
6
3
|
} from "./chunk-5CAWRMDX.js";
|
|
4
|
+
import {
|
|
5
|
+
DataViewsScopeTabs
|
|
6
|
+
} from "./chunk-PL2AB5HJ.js";
|
|
7
7
|
|
|
8
8
|
// src/components/data-display/DataViews/data-views-scope-tabs.tsx
|
|
9
9
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -34,4 +34,4 @@ function ScopeTabsSlot({
|
|
|
34
34
|
export {
|
|
35
35
|
ScopeTabsSlot
|
|
36
36
|
};
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
37
|
+
//# sourceMappingURL=chunk-K6VEN5VN.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
CONTROL_RESET,
|
|
4
4
|
NOT_LIVE,
|
|
5
5
|
SlotIcon
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-LDCZPZPD.js";
|
|
7
7
|
import {
|
|
8
8
|
rem
|
|
9
9
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -129,4 +129,4 @@ export {
|
|
|
129
129
|
RAISED_LIFT_COMPACT,
|
|
130
130
|
raisedLift
|
|
131
131
|
};
|
|
132
|
-
//# sourceMappingURL=chunk-
|
|
132
|
+
//# sourceMappingURL=chunk-L4V7FZJI.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-PUFA7FQ7.js";
|
|
7
7
|
import {
|
|
8
8
|
Badge
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6DO672AG.js";
|
|
10
10
|
import {
|
|
11
11
|
rem
|
|
12
12
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -115,4 +115,4 @@ export {
|
|
|
115
115
|
VISUALLY_HIDDEN,
|
|
116
116
|
useMounted
|
|
117
117
|
};
|
|
118
|
-
//# sourceMappingURL=chunk-
|
|
118
|
+
//# sourceMappingURL=chunk-LDCZPZPD.js.map
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
actionsOf,
|
|
3
|
-
makeTestId
|
|
4
|
-
} from "./chunk-MWFSIB6K.js";
|
|
5
1
|
import {
|
|
6
2
|
ACTIONS_GAP_UNITS,
|
|
7
3
|
ACTIONS_MARGIN_TOP_UNITS,
|
|
@@ -18,6 +14,10 @@ import {
|
|
|
18
14
|
illustrationMaxWidth,
|
|
19
15
|
illustrationOpacity
|
|
20
16
|
} from "./chunk-KLPTOVIX.js";
|
|
17
|
+
import {
|
|
18
|
+
actionsOf,
|
|
19
|
+
makeTestId
|
|
20
|
+
} from "./chunk-MWFSIB6K.js";
|
|
21
21
|
import {
|
|
22
22
|
EN_US_UI_LABELS
|
|
23
23
|
} from "./chunk-XOXXG7Q5.js";
|
|
@@ -207,4 +207,4 @@ export {
|
|
|
207
207
|
EmptyState,
|
|
208
208
|
EmptyState_default
|
|
209
209
|
};
|
|
210
|
-
//# sourceMappingURL=chunk-
|
|
210
|
+
//# sourceMappingURL=chunk-LXIPBHNJ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CountedIcon
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LDCZPZPD.js";
|
|
4
4
|
import {
|
|
5
5
|
rem
|
|
6
6
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -133,4 +133,4 @@ function RailCreateMenu({
|
|
|
133
133
|
export {
|
|
134
134
|
RailCreateMenu
|
|
135
135
|
};
|
|
136
|
-
//# sourceMappingURL=chunk-
|
|
136
|
+
//# sourceMappingURL=chunk-MM3QESLI.js.map
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
chipStyles,
|
|
4
4
|
iconWithTestId,
|
|
5
5
|
makeKeyDownHandler
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-DHAXUVMR.js";
|
|
7
|
+
import {
|
|
8
|
+
chipMuiSize
|
|
9
|
+
} from "./chunk-E5I776YW.js";
|
|
7
10
|
import {
|
|
8
11
|
chipRole,
|
|
9
12
|
isClickable,
|
|
10
13
|
makeTestId
|
|
11
14
|
} from "./chunk-BF4FYOAR.js";
|
|
12
|
-
import {
|
|
13
|
-
chipMuiSize
|
|
14
|
-
} from "./chunk-E5I776YW.js";
|
|
15
15
|
|
|
16
16
|
// src/components/data-display/Chip/Chip.tsx
|
|
17
17
|
import CancelIcon from "@mui/icons-material/Cancel";
|
|
@@ -77,4 +77,4 @@ Chip.displayName = "Chip";
|
|
|
77
77
|
export {
|
|
78
78
|
Chip
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-NI67M453.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GridShell
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BXZMV6QC.js";
|
|
4
4
|
import {
|
|
5
5
|
useDataViewsState
|
|
6
6
|
} from "./chunk-ZCNR4DN5.js";
|
|
@@ -27,4 +27,4 @@ function DataViewsGrid(props) {
|
|
|
27
27
|
export {
|
|
28
28
|
DataViewsGrid
|
|
29
29
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
//# sourceMappingURL=chunk-OCGPOACB.js.map
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-2ORD2FMN.js";
|
|
18
18
|
import {
|
|
19
19
|
Alert
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-PEAUGQKU.js";
|
|
21
21
|
import {
|
|
22
22
|
Button
|
|
23
23
|
} from "./chunk-YOXYSAUI.js";
|
|
@@ -160,4 +160,4 @@ export {
|
|
|
160
160
|
SequenceStepBody,
|
|
161
161
|
SequenceDoneBody
|
|
162
162
|
};
|
|
163
|
-
//# sourceMappingURL=chunk-
|
|
163
|
+
//# sourceMappingURL=chunk-OCT5VCLP.js.map
|
|
@@ -4,7 +4,8 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
actualBarColor,
|
|
6
6
|
blockToneStyles,
|
|
7
|
-
breakHatch
|
|
7
|
+
breakHatch,
|
|
8
|
+
signalInk
|
|
8
9
|
} from "./chunk-4HK4FVMV.js";
|
|
9
10
|
import {
|
|
10
11
|
FIELD_BORDER_WIDTH
|
|
@@ -265,6 +266,39 @@ var skeletonNameSx = (theme) => ({
|
|
|
265
266
|
borderRadius: rem(theme, DAY_RULER_METRICS.skeletonNameRadius),
|
|
266
267
|
backgroundColor: theme.palette.action.hover
|
|
267
268
|
});
|
|
269
|
+
function footerInk(theme, marked, plain) {
|
|
270
|
+
return marked ? signalInk(theme, "warning", theme.palette.background.default) : plain;
|
|
271
|
+
}
|
|
272
|
+
function footerCellSx(marked) {
|
|
273
|
+
return (theme) => ({
|
|
274
|
+
display: "flex",
|
|
275
|
+
alignItems: "center",
|
|
276
|
+
justifyContent: "center",
|
|
277
|
+
fontSize: rem(theme, DAY_RULER_METRICS.coverage.font),
|
|
278
|
+
borderRadius: rem(theme, DAY_RULER_METRICS.coverage.radius),
|
|
279
|
+
color: footerInk(theme, marked, theme.palette.text.primary),
|
|
280
|
+
fontWeight: marked ? 500 : 400,
|
|
281
|
+
// The hairline is always there, transparent when unmarked, so a mark never shifts a count.
|
|
282
|
+
border: `1px solid ${marked ? theme.palette.warning.main : "transparent"}`,
|
|
283
|
+
minWidth: 0,
|
|
284
|
+
overflow: "hidden"
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
function footerNoteSx(marked) {
|
|
288
|
+
return (theme) => ({
|
|
289
|
+
fontSize: rem(theme, DAY_RULER_METRICS.meta),
|
|
290
|
+
color: footerInk(theme, marked, theme.palette.text.secondary),
|
|
291
|
+
fontWeight: marked ? 500 : 400,
|
|
292
|
+
...marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
var trendSx = (theme) => ({
|
|
296
|
+
display: "block",
|
|
297
|
+
width: "100%",
|
|
298
|
+
height: rem(theme, DAY_RULER_METRICS.coverage.height + DAY_RULER_METRICS.coverage.height / 2),
|
|
299
|
+
color: theme.palette.primary.main,
|
|
300
|
+
overflow: "visible"
|
|
301
|
+
});
|
|
268
302
|
|
|
269
303
|
export {
|
|
270
304
|
rootSx,
|
|
@@ -286,6 +320,10 @@ export {
|
|
|
286
320
|
actualLabelSx,
|
|
287
321
|
nowSx,
|
|
288
322
|
skeletonTrackSx,
|
|
289
|
-
skeletonNameSx
|
|
323
|
+
skeletonNameSx,
|
|
324
|
+
footerInk,
|
|
325
|
+
footerCellSx,
|
|
326
|
+
footerNoteSx,
|
|
327
|
+
trendSx
|
|
290
328
|
};
|
|
291
|
-
//# sourceMappingURL=chunk-
|
|
329
|
+
//# sourceMappingURL=chunk-OJZLFFG4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.styles.ts"],"sourcesContent":["import { alpha, type CSSObject, type SxProps, type Theme } from '@mui/material/styles/index.js';\n\nimport { FIELD_BORDER_WIDTH } from '../../../tokens/field-height.core';\nimport { rem, sxRem } from '../../../tokens/relative';\nimport { actualBarColor, blockToneStyles, breakHatch, signalInk } from '../ScheduleGrid/schedule-tones';\nimport type { ScheduleBlockTone } from '../ScheduleGrid/ScheduleGrid.types';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\n\n/** The container narrow rows answer to (container queries, never media queries). */\n/**\n * `--dr-actions`: the actions column, 220px when any row has actions and\n * nothing when none does (no empty column at the end of every row).\n */\nexport function rootSx(hasActions: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n containerType: 'inline-size',\n minWidth: 0,\n width: '100%',\n userSelect: 'none',\n '--dr-actions': hasActions ? rem(theme, M.sideColumn) : '0%',\n });\n}\n\n/** `@container` below which a row stacks (the coverage and axis rows go full width). Bounds are \"from px up\". */\nfunction compact(theme: Theme): string {\n return `@container (width < ${rem(theme, M.compactBelow)})`;\n}\n\n/** `@container` below which the pane is phone-sized: no coverage row, no axis. Bounds are \"from px up\". */\nfunction phone(theme: Theme): string {\n return `@container (width < ${rem(theme, M.phoneBelow)})`;\n}\n\n/** Name · track · actions, the coverage row and the axis row share these columns on a computer. */\nexport const lineSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr) var(--dr-actions)`,\n columnGap: rem(theme, M.gap),\n alignItems: 'center',\n // Stacked: across the full width, like the tracks; the label above the counts.\n [compact(theme)]: {\n gridTemplateColumns: 'minmax(0, 1fr)',\n rowGap: rem(theme, M.coverage.gap),\n '& > span:empty': { display: 'none' },\n },\n [phone(theme)]: { display: 'none' },\n});\n\nexport const coverageLabelSx: SxProps<Theme> = { fontSize: sxRem(M.meta), color: 'text.secondary' };\n\nexport function coverageSx(hours: number): SxProps<Theme> {\n return (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `repeat(${hours}, minmax(0, 1fr))`,\n gap: rem(theme, M.coverage.gap),\n height: rem(theme, M.coverage.height),\n });\n}\n\n/**\n * How strongly a staffed hour is filled: the prototype's tonal success step, deeper with each\n * person on the escala (0.18 + 0.09 per person, at most 0.85). An empty hour has none.\n */\nexport function coverageStrength(count: number): number {\n if (count <= 0) return 0;\n return Math.min(0.85, 0.18 + count * 0.09);\n}\n\nexport function coverageCellSx(count: number): SxProps<Theme> {\n return (theme: Theme) => {\n const strength = coverageStrength(count);\n return {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: rem(theme, M.coverage.font),\n borderRadius: rem(theme, M.coverage.radius),\n color: theme.palette.text.primary,\n // A tonal fill, as the prototype's coverage line draws it — never an outline (FUT-3831). It is\n // the success colour over the page, so a staffed hour is LIGHTER than an empty one in dark mode\n // and plainly green in light, where the soft-signal blend read as the empty grey. The hairline\n // stays transparent so a count never shifts its cell.\n backgroundColor: strength > 0 ? alpha(theme.palette.success.main, strength) : theme.palette.action.hover,\n border: '1px solid transparent',\n minWidth: 0,\n overflow: 'hidden',\n };\n };\n}\n\nexport const axisSx: SxProps<Theme> = (theme: Theme) => ({\n position: 'relative',\n height: rem(theme, M.axis.height),\n fontSize: rem(theme, M.axis.font),\n color: theme.palette.text.secondary,\n mt: 0.5,\n '& > span': { position: 'absolute', transform: 'translateX(-50%)', whiteSpace: 'nowrap' },\n});\n\nexport const groupTitleSx: SxProps<Theme> = {\n fontSize: sxRem(M.groupTitle),\n letterSpacing: '0.05em',\n textTransform: 'uppercase',\n color: 'text.secondary',\n fontWeight: 500,\n pt: 1.5,\n pb: 0.5,\n m: 0,\n};\n\n/**\n * One person's row. A computer: name · track · actions on one line. A narrow\n * ruler (a phone): name and actions on top, the track under them, full width.\n */\nexport const rowSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'grid',\n gridTemplateColumns: `${rem(theme, M.sideColumn)} minmax(0, 1fr) var(--dr-actions)`,\n gridTemplateAreas: '\"who track actions\"',\n columnGap: rem(theme, M.gap),\n alignItems: 'center',\n py: rem(theme, M.rowPaddingY),\n borderBottom: `1px solid ${theme.palette.divider}`,\n [compact(theme)]: {\n gridTemplateColumns: 'minmax(0, 1fr) auto',\n gridTemplateAreas: '\"who actions\" \"track track\"',\n rowGap: theme.spacing(1),\n py: theme.spacing(1.5),\n },\n});\n\nexport const whoSx: SxProps<Theme> = { gridArea: 'who', minWidth: 0 };\n\nexport const actionsSx: SxProps<Theme> = {\n gridArea: 'actions',\n display: 'flex',\n gap: 1,\n alignItems: 'center',\n justifyContent: 'flex-end',\n flexWrap: 'wrap',\n minWidth: 0,\n};\n\n/** A break inside a block: a hatched band across its height, under its text. `span` is in % of the block. */\nexport function breakSx(span: Span): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: `${span.at}%`,\n width: `${span.share}%`,\n background: breakHatch(theme, rem(theme, M.breakStripe.ink), rem(theme, M.breakStripe.ink + M.breakStripe.gap)),\n pointerEvents: 'none',\n // Where the band meets an end of the block it takes the block's rounding:\n // on a phone the block does not clip (its hit area reaches past it).\n ...(span.at <= 0.01 ? { borderTopLeftRadius: 'inherit', borderBottomLeftRadius: 'inherit' } : {}),\n ...(span.at + span.share >= 99.99 ? { borderTopRightRadius: 'inherit', borderBottomRightRadius: 'inherit' } : {}),\n });\n}\n\n/** The hour lines: one every `every` hours of a `hours`-long ruler. */\nfunction hourLines(theme: Theme, hours: number, every: number): string {\n const line = theme.palette.divider;\n const step = `${(100 * every) / hours}%`;\n const hairline = `${FIELD_BORDER_WIDTH}px`;\n return `repeating-linear-gradient(to right, ${line} 0, ${line} ${hairline}, transparent ${hairline}, transparent ${step})`;\n}\n\nexport function trackSx(opts: { hours: number; tickHours: number; interactive: boolean }): SxProps<Theme> {\n return (theme: Theme) => ({\n gridArea: 'track',\n position: 'relative',\n height: rem(theme, M.track.height),\n borderRadius: rem(theme, M.track.radius),\n backgroundColor: theme.palette.action.hover,\n backgroundImage: hourLines(theme, opts.hours, 1),\n cursor: opts.interactive ? 'crosshair' : 'default',\n touchAction: 'auto',\n outline: 'none',\n '&:focus-visible': { boxShadow: `0 0 0 ${rem(theme, M.ring)} ${theme.palette.primary.main}` },\n [compact(theme)]: {\n height: rem(theme, M.track.compactHeight),\n borderRadius: rem(theme, M.track.compactRadius),\n backgroundImage: hourLines(theme, opts.hours, opts.tickHours),\n },\n });\n}\n\n/** Where a bar starts and how long it is, both in % of the track. */\nexport interface Span {\n at: number;\n share: number;\n}\n\nexport function blockSx(tone: ScheduleBlockTone, span: Span, opts: { selected: boolean; movable: boolean }): SxProps<Theme> {\n return (theme: Theme): CSSObject => ({\n ...blockToneStyles(theme, tone, true),\n position: 'absolute',\n left: `${span.at}%`,\n width: `${span.share}%`,\n top: rem(theme, M.block.top),\n height: rem(theme, M.block.height),\n boxSizing: 'border-box',\n borderRadius: rem(theme, M.block.radius),\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: `0 ${rem(theme, M.block.paddingX)}`,\n margin: 0,\n font: 'inherit',\n fontSize: rem(theme, M.block.font),\n fontWeight: 500,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n cursor: opts.movable ? 'grab' : 'pointer',\n boxShadow: opts.selected ? `0 0 0 ${rem(theme, M.ring)} ${theme.palette.primary.main}` : 'none',\n '&:focus-visible': { outline: `${rem(theme, M.ring)} solid ${theme.palette.primary.main}`, outlineOffset: rem(theme, M.ringOffset) },\n '& [data-dr-text]': { position: 'relative', overflow: 'hidden', textOverflow: 'ellipsis', minWidth: 0 },\n '& [data-dr-text=\"short\"]': { display: 'none' },\n [compact(theme)]: {\n top: rem(theme, M.block.compactTop),\n height: rem(theme, M.block.compactHeight),\n // A 40px hit area around the 20px bar, the look unchanged: the text cuts\n // itself (its spans ellipsize), so the block need not clip.\n overflow: 'visible',\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n left: 0,\n right: 0,\n top: '50%',\n height: rem(theme, M.block.hitArea),\n transform: 'translateY(-50%)',\n },\n '&[data-narrow] [data-dr-text=\"full\"]': { display: 'none' },\n '&[data-narrow] [data-dr-text=\"short\"]': { display: 'inline' },\n },\n });\n}\n\nexport function handleSx(side: 'l' | 'r'): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n top: 0,\n bottom: 0,\n [side === 'l' ? 'left' : 'right']: 0,\n width: rem(theme, M.handle),\n cursor: 'ew-resize',\n });\n}\n\nexport function actualSx(span: Span): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `${span.at}%`,\n width: `${span.share}%`,\n top: rem(theme, M.actual.top),\n height: rem(theme, M.actual.height),\n borderRadius: rem(theme, M.actual.radius),\n backgroundColor: actualBarColor(theme),\n pointerEvents: 'none',\n [compact(theme)]: { top: rem(theme, M.actual.compactTop), height: rem(theme, M.actual.compactHeight) },\n });\n}\n\nexport function actualLabelSx(left: number): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `calc(${left}% + ${rem(theme, M.actualLabel.offset)})`,\n top: rem(theme, M.actualLabel.top),\n fontSize: rem(theme, M.actualLabel.font),\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n [compact(theme)]: { display: 'none' },\n });\n}\n\nexport function nowSx(left: number): SxProps<Theme> {\n return (theme: Theme) => ({\n position: 'absolute',\n left: `${left}%`,\n top: rem(theme, -M.now.overhang),\n bottom: rem(theme, -M.now.overhang),\n width: rem(theme, M.now.width),\n backgroundColor: theme.palette.primary.main,\n pointerEvents: 'none',\n });\n}\n\nexport const skeletonTrackSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'track',\n height: rem(theme, M.track.height),\n borderRadius: rem(theme, M.track.radius),\n backgroundColor: theme.palette.action.hover,\n});\n\nexport const skeletonNameSx: SxProps<Theme> = (theme: Theme) => ({\n gridArea: 'who',\n height: rem(theme, M.name),\n width: '60%',\n borderRadius: rem(theme, M.skeletonNameRadius),\n backgroundColor: theme.palette.action.hover,\n});\n\n/**\n * A marked footer's words (FUT-3882): the warning ink deepened until it reads\n * at 4.5:1 on the page — `warning.main` is 3.1:1 on white. The outline keeps\n * `warning.main`: a non-text mark needs 3:1.\n */\nexport function footerInk(theme: Theme, marked: boolean, plain: string): string {\n return marked ? signalInk(theme, 'warning', theme.palette.background.default) : plain;\n}\n\n/** A group's count line (FUT-3882): plain counts on the hours' columns, a marked hour outlined in the warning ink. */\nexport function footerCellSx(marked: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: rem(theme, M.coverage.font),\n borderRadius: rem(theme, M.coverage.radius),\n color: footerInk(theme, marked, theme.palette.text.primary),\n fontWeight: marked ? 500 : 400,\n // The hairline is always there, transparent when unmarked, so a mark never shifts a count.\n border: `1px solid ${marked ? theme.palette.warning.main : 'transparent'}`,\n minWidth: 0,\n overflow: 'hidden',\n });\n}\n\n/**\n * A footer line's sentence; when the host marks it (\"Faltam 2, 20h–22h\"), in\n * the readable warning ink with a warning bar before it — a shape, so colour\n * is never the only signal.\n */\nexport function footerNoteSx(marked: boolean): SxProps<Theme> {\n return (theme: Theme) => ({\n fontSize: rem(theme, M.meta),\n color: footerInk(theme, marked, theme.palette.text.secondary),\n fontWeight: marked ? 500 : 400,\n ...(marked ? { borderLeft: `${rem(theme, 3)} solid ${theme.palette.warning.main}`, paddingLeft: rem(theme, 6) } : {}),\n });\n}\n\n/** A group's trend line: as tall as the coverage row, drawn in the primary colour. */\nexport const trendSx: SxProps<Theme> = (theme: Theme) => ({\n display: 'block',\n width: '100%',\n height: rem(theme, M.coverage.height + M.coverage.height / 2),\n color: theme.palette.primary.main,\n overflow: 'visible',\n});\n"],"mappings":"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","names":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SectionNavSheet
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DTZOP4ZR.js";
|
|
4
4
|
import {
|
|
5
5
|
RaisedActionButton,
|
|
6
6
|
raisedLift
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-L4V7FZJI.js";
|
|
8
8
|
import {
|
|
9
9
|
Box,
|
|
10
10
|
CONTROL_RESET,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
destinationControl,
|
|
16
16
|
focusRing,
|
|
17
17
|
useMounted
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-LDCZPZPD.js";
|
|
19
19
|
import {
|
|
20
20
|
barSlots,
|
|
21
21
|
destinationState,
|
|
@@ -327,4 +327,4 @@ export {
|
|
|
327
327
|
sectionNavSheetOffset,
|
|
328
328
|
SectionNavBar
|
|
329
329
|
};
|
|
330
|
-
//# sourceMappingURL=chunk-
|
|
330
|
+
//# sourceMappingURL=chunk-P53ANKZV.js.map
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Axis,
|
|
3
3
|
Coverage,
|
|
4
|
+
GroupFooter,
|
|
4
5
|
RulerRow
|
|
5
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-UDBOGSFO.js";
|
|
6
7
|
import {
|
|
7
8
|
groupTitleSx,
|
|
8
9
|
rootSx,
|
|
9
10
|
rowSx,
|
|
10
11
|
skeletonNameSx,
|
|
11
12
|
skeletonTrackSx
|
|
12
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-OJZLFFG4.js";
|
|
14
|
+
import {
|
|
15
|
+
EN_US_DAY_RULER_LABELS
|
|
16
|
+
} from "./chunk-F2ZUUEXC.js";
|
|
13
17
|
import {
|
|
14
18
|
handleBlockKey,
|
|
15
19
|
keyCreateSpan
|
|
16
20
|
} from "./chunk-Y3F2F36I.js";
|
|
17
|
-
import {
|
|
18
|
-
EN_US_DAY_RULER_LABELS
|
|
19
|
-
} from "./chunk-K3IB7S7Q.js";
|
|
20
21
|
import {
|
|
21
22
|
useRulerDrag
|
|
22
23
|
} from "./chunk-EKSJES5E.js";
|
|
@@ -58,6 +59,12 @@ function abilitiesOf(props) {
|
|
|
58
59
|
const open = !props.readOnly && !props.loading;
|
|
59
60
|
return { create: open && Boolean(props.onCreate), move: open && Boolean(props.onMove), resize: open && Boolean(props.onResize) };
|
|
60
61
|
}
|
|
62
|
+
function FooterOf({ props, group, ctx }) {
|
|
63
|
+
const rows = props.groupFooter?.(group);
|
|
64
|
+
if (!rows || rows.length === 0) return null;
|
|
65
|
+
const marked = props.labels?.footerMarked ?? EN_US_DAY_RULER_LABELS.footerMarked;
|
|
66
|
+
return /* @__PURE__ */ jsx(GroupFooter, { rows, scale: ctx.scale, testId: ctx.testId, marked });
|
|
67
|
+
}
|
|
61
68
|
function RulerBody({ props, ctx }) {
|
|
62
69
|
if (props.error) return /* @__PURE__ */ jsx(Fragment, { children: props.error });
|
|
63
70
|
if (props.loading) {
|
|
@@ -69,7 +76,8 @@ function RulerBody({ props, ctx }) {
|
|
|
69
76
|
if (props.rows.length === 0) return /* @__PURE__ */ jsx(Fragment, { children: props.empty ?? null });
|
|
70
77
|
return /* @__PURE__ */ jsx(Fragment, { children: grouped(props.rows).map((group, index) => /* @__PURE__ */ jsxs(Box, { role: "list", "aria-label": group.title, children: [
|
|
71
78
|
group.title ? /* @__PURE__ */ jsx(Box, { component: "p", sx: groupTitleSx, "aria-hidden": true, children: group.title }) : null,
|
|
72
|
-
group.rows.map((row) => /* @__PURE__ */ jsx(RulerRow, { row, ctx }, row.id))
|
|
79
|
+
group.rows.map((row) => /* @__PURE__ */ jsx(RulerRow, { row, ctx }, row.id)),
|
|
80
|
+
/* @__PURE__ */ jsx(FooterOf, { props, group: group.title, ctx })
|
|
73
81
|
] }, `${index}-${group.title ?? ""}`)) });
|
|
74
82
|
}
|
|
75
83
|
function DayRuler(props) {
|
|
@@ -117,4 +125,4 @@ function DayRuler(props) {
|
|
|
117
125
|
export {
|
|
118
126
|
DayRuler
|
|
119
127
|
};
|
|
120
|
-
//# sourceMappingURL=chunk-
|
|
128
|
+
//# sourceMappingURL=chunk-PCQ5JWLF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport type React from 'react';\n\nimport { resolveLabels } from '../../../utils/resolve-labels';\nimport { SR_ONLY_SX } from '../ScheduleGrid/ScheduleGrid.styles';\nimport { useAnnouncer } from '../ScheduleGrid/useAnnouncer';\nimport { handleBlockKey, keyCreateSpan, type RulerAbilities, type RulerScale } from './DayRuler.keyboard';\nimport { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';\nimport { DAY_RULER_METRICS as M } from './DayRuler.metrics';\nimport { Axis, Coverage, GroupFooter, RulerRow, type RowContext } from './DayRuler.parts';\nimport { groupTitleSx, rootSx, rowSx, skeletonNameSx, skeletonTrackSx } from './DayRuler.styles';\nimport type { DayRulerProps, DayRulerRow } from './DayRuler.types';\nimport { useRulerDrag } from './useRulerDrag';\n\n/** The rows, grouped under a heading each time `row.group` changes. */\nfunction grouped(rows: readonly DayRulerRow[]): { title?: string; rows: DayRulerRow[] }[] {\n const out: { title?: string; rows: DayRulerRow[] }[] = [];\n for (const row of rows) {\n const last = out[out.length - 1];\n if (last && last.title === row.group) last.rows.push(row);\n else out.push({ title: row.group, rows: [row] });\n }\n return out;\n}\n\nfunction scaleOf(props: DayRulerProps): RulerScale {\n return {\n from: props.from ?? 6,\n to: props.to ?? 26,\n snap: (props.snapMinutes ?? 15) / 60,\n createHours: props.createHours ?? 4,\n tickHours: props.tickHours ?? 4,\n };\n}\n\nfunction abilitiesOf(props: DayRulerProps): RulerAbilities {\n const open = !props.readOnly && !props.loading;\n return { create: open && Boolean(props.onCreate), move: open && Boolean(props.onMove), resize: open && Boolean(props.onResize) };\n}\n\n/** A group's lines under its rows, when the host gives any (`groupFooter`). */\nfunction FooterOf({ props, group, ctx }: { props: DayRulerProps; group: string | undefined; ctx: RowContext }): React.JSX.Element | null {\n const rows = props.groupFooter?.(group);\n if (!rows || rows.length === 0) return null;\n const marked = props.labels?.footerMarked ?? EN_US_DAY_RULER_LABELS.footerMarked;\n return <GroupFooter rows={rows} scale={ctx.scale} testId={ctx.testId} marked={marked} />;\n}\n\n/** The groups and their rows — or the skeleton, the host's error, or the host's empty state. */\nfunction RulerBody({ props, ctx }: { props: DayRulerProps; ctx: RowContext }): React.JSX.Element {\n if (props.error) return <>{props.error}</>;\n if (props.loading) {\n return (\n <>\n {Array.from({ length: M.skeletonRows }, (_, index) => (\n <Box key={index} sx={rowSx} aria-hidden data-testid={`${ctx.testId}-loading`}>\n <Box sx={skeletonNameSx} />\n <Box sx={skeletonTrackSx} />\n </Box>\n ))}\n </>\n );\n }\n if (props.rows.length === 0) return <>{props.empty ?? null}</>;\n return (\n <>\n {grouped(props.rows).map((group, index) => (\n <Box key={`${index}-${group.title ?? ''}`} role=\"list\" aria-label={group.title}>\n {group.title ? (\n <Box component=\"p\" sx={groupTitleSx} aria-hidden>\n {group.title}\n </Box>\n ) : null}\n {group.rows.map((row) => (\n <RulerRow key={row.id} row={row} ctx={ctx} />\n ))}\n <FooterOf props={props} group={group.title} ctx={ctx} />\n </Box>\n ))}\n </>\n );\n}\n\n/**\n * One day as an hour ruler per row — who is on the escala when, and who is\n * really on shift (FUT-3825). Drag on an empty stretch to create (a click\n * alone is `createHours`), drag a block to move it, drag its ends to change\n * them; every hour snaps to `snapMinutes`. On a narrow ruler (a phone) each row\n * stacks and the blocks are tap-only: touch scrolls and never drags.\n *\n * The ruler reports gestures; hours, limits and refusals are the host's.\n */\nexport function DayRuler(props: DayRulerProps): React.JSX.Element {\n const { now, onCreate, onMove, onResize } = props;\n const testId = props.dataTestId ?? 'day-ruler';\n const labels = resolveLabels(EN_US_DAY_RULER_LABELS, props.labels);\n const scale = scaleOf(props);\n const can = abilitiesOf(props);\n const dragApi = useRulerDrag(scale, { onCreate, onMove, onResize });\n const { text: announcement, say } = useAnnouncer();\n\n const ctx: RowContext = {\n scale,\n now,\n can,\n drag: dragApi.drag,\n dragApi,\n onBlockClick: props.onBlockClick,\n onKeyCreate: (row) => {\n const [start, end] = keyCreateSpan(scale, now, props.createStart?.(row.id));\n onCreate?.(row.id, start, end);\n },\n onBlockKey: (event, block) => handleBlockKey(event, block, { scale, can, onMove, onResize, labels, say }),\n createLabel: labels.createTrack,\n testId,\n };\n\n return (\n <Box\n sx={rootSx(props.rows.some((row) => row.actions !== undefined && row.actions !== null))}\n data-testid={testId}\n role=\"region\"\n aria-label={props['aria-label']}\n aria-busy={props.loading || undefined}\n aria-description={props.loading ? labels.loading : undefined}\n >\n {props.coverage && props.coverage.length > 0 ? (\n <Coverage coverage={props.coverage} label={props.coverageLabel} scale={scale} testId={testId} />\n ) : null}\n <Axis scale={scale} testId={testId} />\n <RulerBody props={props} ctx={ctx} />\n <Box sx={SR_ONLY_SX} aria-live=\"polite\" role=\"status\" data-testid={`${testId}-live`}>\n {announcement}\n </Box>\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resolveIconPlacement
|
|
3
|
+
} from "./chunk-QXUXO22M.js";
|
|
1
4
|
import {
|
|
2
5
|
AlertContent
|
|
3
6
|
} from "./chunk-7HZ36QDH.js";
|
|
@@ -14,9 +17,6 @@ import {
|
|
|
14
17
|
resolveAnnouncement,
|
|
15
18
|
testIdFor
|
|
16
19
|
} from "./chunk-L7VH6IMR.js";
|
|
17
|
-
import {
|
|
18
|
-
resolveIconPlacement
|
|
19
|
-
} from "./chunk-QXUXO22M.js";
|
|
20
20
|
import {
|
|
21
21
|
ACTIVE,
|
|
22
22
|
ALERT_EASING,
|
|
@@ -277,4 +277,4 @@ export {
|
|
|
277
277
|
Alert,
|
|
278
278
|
ALERT_ONLY_PROPS
|
|
279
279
|
};
|
|
280
|
-
//# sourceMappingURL=chunk-
|
|
280
|
+
//# sourceMappingURL=chunk-PEAUGQKU.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
MoreGroup,
|
|
3
3
|
MoreQuick,
|
|
4
4
|
fieldClearing
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VCJ72ODU.js";
|
|
6
6
|
import {
|
|
7
7
|
useStillAnchor
|
|
8
8
|
} from "./chunk-7CUZTWKW.js";
|
|
@@ -222,4 +222,4 @@ function MoreFilters({
|
|
|
222
222
|
export {
|
|
223
223
|
MoreFilters
|
|
224
224
|
};
|
|
225
|
-
//# sourceMappingURL=chunk-
|
|
225
|
+
//# sourceMappingURL=chunk-RZWU2KYP.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
MapControlBar
|
|
3
|
+
} from "./chunk-6PU5P7QT.js";
|
|
1
4
|
import {
|
|
2
5
|
HeatmapOverlay,
|
|
3
6
|
RouteOverlay
|
|
4
7
|
} from "./chunk-ZZ4MMUBY.js";
|
|
5
|
-
import {
|
|
6
|
-
MapControlBar
|
|
7
|
-
} from "./chunk-6PU5P7QT.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveMapCopy
|
|
10
10
|
} from "./chunk-M5Y42AZ4.js";
|
|
@@ -59,4 +59,4 @@ var MapLayers = ({ settings, zoom, mapType, search, controls }) => {
|
|
|
59
59
|
export {
|
|
60
60
|
MapLayers
|
|
61
61
|
};
|
|
62
|
-
//# sourceMappingURL=chunk-
|
|
62
|
+
//# sourceMappingURL=chunk-S2VZUBM7.js.map
|
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
} from "./chunk-SALQ65SM.js";
|
|
4
4
|
import {
|
|
5
5
|
useSummaryInfo
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-X2GWR75Q.js";
|
|
7
7
|
import {
|
|
8
8
|
LearnMore,
|
|
9
9
|
PendingSpinner,
|
|
10
10
|
SaveError,
|
|
11
11
|
SettingHeader,
|
|
12
12
|
partTestId
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-3EIRRLCQ.js";
|
|
14
14
|
import {
|
|
15
15
|
SETTING_CARD_OPEN_ATTR,
|
|
16
16
|
actionsStyles,
|
|
@@ -170,4 +170,4 @@ SettingCard.displayName = "SettingCard";
|
|
|
170
170
|
export {
|
|
171
171
|
SettingCard
|
|
172
172
|
};
|
|
173
|
-
//# sourceMappingURL=chunk-
|
|
173
|
+
//# sourceMappingURL=chunk-SKIAWOUC.js.map
|