@12-apps/ui 6.90.0 → 6.92.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/components-catalog.md +3 -3
- package/dist/_internal/components/data-display/Alert/Alert.js +2 -2
- package/dist/_internal/components/data-display/Avatar/Avatar.js +2 -2
- 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/Carousel/Carousel.js +2 -2
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
- package/dist/_internal/components/data-display/Chart/chart-context.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +3 -3
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +25 -25
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +31 -31
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +6 -6
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +7 -7
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +5 -5
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +8 -8
- 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 +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +22 -22
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +9 -9
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +8 -8
- package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +4 -4
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +6 -6
- 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 +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +1 -1
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +4 -4
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
- 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/FleetMap/FleetBody.js +10 -10
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +9 -9
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +7 -7
- package/dist/_internal/components/data-display/Lightbox/LightboxControls.js +2 -2
- package/dist/_internal/components/data-display/Lightbox/LightboxOverlay.js +3 -3
- package/dist/_internal/components/data-display/Lightbox/LightboxThumbnails.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +3 -3
- package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +8 -8
- package/dist/_internal/components/data-display/RegionMap/RegionMap.hooks.js +2 -1
- package/dist/_internal/components/data-display/RegionMap/RegionMap.js +5 -4
- package/dist/_internal/components/data-display/RegionMap/RegionMap.view.js +19 -0
- package/dist/_internal/components/data-display/RegionMap/RegionMapDrawing.js +1 -1
- 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/index.js +58 -51
- 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 +69 -62
- 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/_internal/user-avatar/user-avatar.js +3 -3
- package/dist/charts.js +6 -6
- package/dist/{chunk-FI2CQOGC.js → chunk-3OHZAZEE.js} +5 -5
- package/dist/{chunk-CJ6XXM4X.js → chunk-3PQL2EN5.js} +6 -6
- package/dist/{chunk-7YJYIMWP.js → chunk-4QR7LM5F.js} +6 -6
- package/dist/{chunk-HI7JPDD6.js → chunk-5357QUVE.js} +2 -2
- package/dist/{chunk-WNNA6YYE.js → chunk-5I75WRXT.js} +10 -7
- package/dist/chunk-5I75WRXT.js.map +1 -0
- package/dist/chunk-5MXVKZKZ.js +30 -0
- package/dist/chunk-5MXVKZKZ.js.map +1 -0
- package/dist/{chunk-BP3ZKIPE.js → chunk-64UNVW6D.js} +4 -4
- package/dist/{chunk-SCXVTNLE.js → chunk-66VKX6JE.js} +2 -2
- package/dist/{chunk-N5PVD4J5.js → chunk-6DO672AG.js} +7 -7
- package/dist/{chunk-NK6O4NE4.js → chunk-AI7XWBNG.js} +3 -3
- package/dist/{chunk-SNWCT6JN.js → chunk-AMIUZRDQ.js} +3 -3
- package/dist/{chunk-BMTIBQQC.js → chunk-BBBHPK2Q.js} +6 -6
- package/dist/{chunk-A3DDEKLV.js → chunk-BOADHYTA.js} +2 -2
- package/dist/{chunk-KRBPWTXW.js → chunk-CKQOYPH3.js} +2 -2
- package/dist/{chunk-EUR2ORTN.js → chunk-CSJ7WNXU.js} +2 -2
- package/dist/{chunk-QADTI63U.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-XCUHGPPZ.js → chunk-DTZOP4ZR.js} +2 -2
- package/dist/chunk-DY2I6LMX.js +1 -0
- package/dist/chunk-DY2I6LMX.js.map +1 -0
- package/dist/{chunk-BLZDSCIZ.js → chunk-DYHOBKPU.js} +6 -6
- package/dist/{chunk-QKOJ4637.js → chunk-E6K2UZGR.js} +3 -3
- package/dist/{chunk-MX2RF34M.js → chunk-E73C73UD.js} +15 -7
- package/dist/chunk-E73C73UD.js.map +1 -0
- 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-VIMMEADQ.js → chunk-FORAVDJF.js} +9 -9
- package/dist/{chunk-PJNIJIE6.js → chunk-FQNDJITD.js} +2 -2
- package/dist/chunk-FWAY2SAI.js +72 -0
- package/dist/chunk-FWAY2SAI.js.map +1 -0
- package/dist/{chunk-COKPPU42.js → chunk-FWTVIRZZ.js} +13 -13
- package/dist/{chunk-GMRQPNG3.js → chunk-G2NVBCF7.js} +20 -25
- package/dist/chunk-G2NVBCF7.js.map +1 -0
- package/dist/{chunk-JHWEL4NX.js → chunk-HS662RLW.js} +2 -2
- package/dist/{chunk-BZBLPXV7.js → chunk-IWSTMVCA.js} +4 -4
- package/dist/{chunk-TZC6KIK2.js → chunk-JG733RMP.js} +5 -5
- 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-ILJ3FXIC.js → chunk-MM3QESLI.js} +2 -2
- package/dist/{chunk-EEO7M5GU.js → chunk-MYTV353T.js} +4 -4
- package/dist/{chunk-3HZKUN5J.js → chunk-MZAYIG2I.js} +2 -2
- package/dist/{chunk-AKE6KVQG.js → chunk-NGXL4R54.js} +5 -1
- package/dist/chunk-NGXL4R54.js.map +1 -0
- 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-BV2LOTMC.js → chunk-Q3SILZTQ.js} +2 -2
- package/dist/{chunk-DSBC6O46.js → chunk-R4LCPPKA.js} +3 -3
- package/dist/{chunk-ZH6NYB6Y.js → chunk-S2VZUBM7.js} +7 -7
- package/dist/{chunk-JFD742C3.js → chunk-TMINUTQQ.js} +2 -2
- package/dist/{chunk-SK2CTB3O.js → chunk-U2SAW6DH.js} +5 -5
- package/dist/{chunk-ACM3HHZY.js → chunk-UDBOGSFO.js} +68 -2
- package/dist/chunk-UDBOGSFO.js.map +1 -0
- package/dist/{chunk-DAHSKQBV.js → chunk-UMOHHWXY.js} +2 -2
- package/dist/{chunk-QAEO52Z4.js → chunk-VHE7UEG5.js} +2 -2
- package/dist/{chunk-TIM4PXWN.js → chunk-VWRXSBT2.js} +2 -2
- package/dist/{chunk-KANCE4MS.js → chunk-W2KOP27S.js} +3 -3
- package/dist/{chunk-P772HCHI.js → chunk-W676GY42.js} +4 -4
- package/dist/{chunk-T2G4LDU5.js → chunk-WLLUARTC.js} +2 -2
- package/dist/{chunk-3OTGREQG.js → chunk-X3GD3TFI.js} +15 -15
- package/dist/{chunk-3X2MA47R.js → chunk-XNAI7QGU.js} +6 -6
- package/dist/{chunk-L6JAALMX.js → chunk-XRV4QFEQ.js} +3 -3
- package/dist/{chunk-WH3LUOCQ.js → chunk-YE7M7URT.js} +2 -2
- package/dist/{chunk-WWR6APJR.js → chunk-YVDNCV2D.js} +5 -5
- package/dist/{chunk-LOLYBFYY.js → chunk-ZCNR4DN5.js} +5 -5
- package/dist/{chunk-D3OXTS7Y.js → chunk-ZHCZOPKE.js} +3 -2
- package/dist/{chunk-D3OXTS7Y.js.map → chunk-ZHCZOPKE.js.map} +1 -1
- package/dist/data-display/Alert.js +2 -2
- package/dist/data-display/Avatar.js +2 -2
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +14 -14
- package/dist/data-display/Carousel.js +2 -2
- package/dist/data-display/Chart.js +6 -6
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +47 -47
- package/dist/data-display/DayRuler.js +9 -9
- package/dist/data-display/FleetMap.js +12 -12
- package/dist/data-display/Lightbox.js +7 -7
- package/dist/data-display/MapPreview.js +8 -8
- package/dist/data-display/RegionMap.js +12 -6
- package/dist/data-display/ScheduleGrid.js +4 -3
- package/dist/feedback/NotificationStatusNotice.js +3 -3
- package/dist/feedback/SequenceResolver.js +5 -5
- package/dist/navigation/SectionNav.js +9 -9
- 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/RegionMap/RegionMap.d.ts +4 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts +4 -2
- package/dist/types/components/data-display/RegionMap/RegionMap.hooks.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts +40 -0
- package/dist/types/components/data-display/RegionMap/RegionMap.types.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/RegionMap.view.d.ts +36 -0
- package/dist/types/components/data-display/RegionMap/RegionMap.view.d.ts.map +1 -0
- package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts +4 -1
- package/dist/types/components/data-display/RegionMap/RegionMapDrawing.d.ts.map +1 -1
- package/dist/types/components/data-display/RegionMap/index.d.ts +3 -2
- package/dist/types/components/data-display/RegionMap/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/dist/user-avatar.js +3 -3
- package/package.json +1 -1
- 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/RegionMap/RegionMap.hooks.ts +24 -33
- package/src/components/data-display/RegionMap/RegionMap.md +27 -0
- package/src/components/data-display/RegionMap/RegionMap.tsx +7 -1
- package/src/components/data-display/RegionMap/RegionMap.types.ts +41 -0
- package/src/components/data-display/RegionMap/RegionMap.view.ts +105 -0
- package/src/components/data-display/RegionMap/RegionMapDrawing.tsx +11 -0
- package/src/components/data-display/RegionMap/index.ts +5 -1
- package/src/components/data-display/RegionMap/tests.md +10 -2
- 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-ACFKPE2T.js +0 -1
- package/dist/chunk-ACM3HHZY.js.map +0 -1
- package/dist/chunk-AKE6KVQG.js.map +0 -1
- package/dist/chunk-G2PVUPE7.js.map +0 -1
- package/dist/chunk-GMRQPNG3.js.map +0 -1
- package/dist/chunk-HMEGQKNQ.js.map +0 -1
- package/dist/chunk-MX2RF34M.js.map +0 -1
- package/dist/chunk-WNNA6YYE.js.map +0 -1
- /package/dist/{chunk-ACFKPE2T.js.map → _internal/components/data-display/RegionMap/RegionMap.view.js.map} +0 -0
- /package/dist/{chunk-FI2CQOGC.js.map → chunk-3OHZAZEE.js.map} +0 -0
- /package/dist/{chunk-CJ6XXM4X.js.map → chunk-3PQL2EN5.js.map} +0 -0
- /package/dist/{chunk-7YJYIMWP.js.map → chunk-4QR7LM5F.js.map} +0 -0
- /package/dist/{chunk-HI7JPDD6.js.map → chunk-5357QUVE.js.map} +0 -0
- /package/dist/{chunk-BP3ZKIPE.js.map → chunk-64UNVW6D.js.map} +0 -0
- /package/dist/{chunk-SCXVTNLE.js.map → chunk-66VKX6JE.js.map} +0 -0
- /package/dist/{chunk-N5PVD4J5.js.map → chunk-6DO672AG.js.map} +0 -0
- /package/dist/{chunk-NK6O4NE4.js.map → chunk-AI7XWBNG.js.map} +0 -0
- /package/dist/{chunk-SNWCT6JN.js.map → chunk-AMIUZRDQ.js.map} +0 -0
- /package/dist/{chunk-BMTIBQQC.js.map → chunk-BBBHPK2Q.js.map} +0 -0
- /package/dist/{chunk-A3DDEKLV.js.map → chunk-BOADHYTA.js.map} +0 -0
- /package/dist/{chunk-KRBPWTXW.js.map → chunk-CKQOYPH3.js.map} +0 -0
- /package/dist/{chunk-EUR2ORTN.js.map → chunk-CSJ7WNXU.js.map} +0 -0
- /package/dist/{chunk-QADTI63U.js.map → chunk-CZVAVX5L.js.map} +0 -0
- /package/dist/{chunk-DVX4HDNP.js.map → chunk-DBPFKGXX.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-QKOJ4637.js.map → chunk-E6K2UZGR.js.map} +0 -0
- /package/dist/{chunk-2M3W6ACW.js.map → chunk-FAUNQ3FS.js.map} +0 -0
- /package/dist/{chunk-VIMMEADQ.js.map → chunk-FORAVDJF.js.map} +0 -0
- /package/dist/{chunk-PJNIJIE6.js.map → chunk-FQNDJITD.js.map} +0 -0
- /package/dist/{chunk-COKPPU42.js.map → chunk-FWTVIRZZ.js.map} +0 -0
- /package/dist/{chunk-JHWEL4NX.js.map → chunk-HS662RLW.js.map} +0 -0
- /package/dist/{chunk-BZBLPXV7.js.map → chunk-IWSTMVCA.js.map} +0 -0
- /package/dist/{chunk-TZC6KIK2.js.map → chunk-JG733RMP.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-ILJ3FXIC.js.map → chunk-MM3QESLI.js.map} +0 -0
- /package/dist/{chunk-EEO7M5GU.js.map → chunk-MYTV353T.js.map} +0 -0
- /package/dist/{chunk-3HZKUN5J.js.map → chunk-MZAYIG2I.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-BV2LOTMC.js.map → chunk-Q3SILZTQ.js.map} +0 -0
- /package/dist/{chunk-DSBC6O46.js.map → chunk-R4LCPPKA.js.map} +0 -0
- /package/dist/{chunk-ZH6NYB6Y.js.map → chunk-S2VZUBM7.js.map} +0 -0
- /package/dist/{chunk-JFD742C3.js.map → chunk-TMINUTQQ.js.map} +0 -0
- /package/dist/{chunk-SK2CTB3O.js.map → chunk-U2SAW6DH.js.map} +0 -0
- /package/dist/{chunk-DAHSKQBV.js.map → chunk-UMOHHWXY.js.map} +0 -0
- /package/dist/{chunk-QAEO52Z4.js.map → chunk-VHE7UEG5.js.map} +0 -0
- /package/dist/{chunk-TIM4PXWN.js.map → chunk-VWRXSBT2.js.map} +0 -0
- /package/dist/{chunk-KANCE4MS.js.map → chunk-W2KOP27S.js.map} +0 -0
- /package/dist/{chunk-P772HCHI.js.map → chunk-W676GY42.js.map} +0 -0
- /package/dist/{chunk-T2G4LDU5.js.map → chunk-WLLUARTC.js.map} +0 -0
- /package/dist/{chunk-3OTGREQG.js.map → chunk-X3GD3TFI.js.map} +0 -0
- /package/dist/{chunk-3X2MA47R.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-WWR6APJR.js.map → chunk-YVDNCV2D.js.map} +0 -0
- /package/dist/{chunk-LOLYBFYY.js.map → chunk-ZCNR4DN5.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
renderChartByType
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CZVAVX5L.js";
|
|
4
4
|
import {
|
|
5
5
|
ChartContainer
|
|
6
6
|
} from "./chunk-RIRTW5EU.js";
|
|
@@ -111,4 +111,4 @@ var Chart = (props) => {
|
|
|
111
111
|
export {
|
|
112
112
|
Chart
|
|
113
113
|
};
|
|
114
|
-
//# sourceMappingURL=chunk-
|
|
114
|
+
//# sourceMappingURL=chunk-5357QUVE.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RegionMapLegend
|
|
3
|
+
} from "./chunk-PBRCKHN3.js";
|
|
1
4
|
import {
|
|
2
5
|
RegionMapDrawing
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NGXL4R54.js";
|
|
4
7
|
import {
|
|
5
8
|
useRegionMap
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-G2NVBCF7.js";
|
|
7
10
|
import {
|
|
8
11
|
RegionMapList
|
|
9
12
|
} from "./chunk-BRZKOUEL.js";
|
|
10
|
-
import {
|
|
11
|
-
RegionMapLegend
|
|
12
|
-
} from "./chunk-PBRCKHN3.js";
|
|
13
13
|
|
|
14
14
|
// src/components/data-display/RegionMap/RegionMap.tsx
|
|
15
15
|
import Box from "@mui/material/Box/index.js";
|
|
@@ -20,6 +20,8 @@ function RegionMap({
|
|
|
20
20
|
regions,
|
|
21
21
|
center,
|
|
22
22
|
circles,
|
|
23
|
+
reach,
|
|
24
|
+
overlay,
|
|
23
25
|
onToggle,
|
|
24
26
|
highlightedIds = NO_IDS,
|
|
25
27
|
copy,
|
|
@@ -30,7 +32,7 @@ function RegionMap({
|
|
|
30
32
|
dataTestId = "region-map"
|
|
31
33
|
}) {
|
|
32
34
|
const theme = useTheme();
|
|
33
|
-
const model = useRegionMap({ regions, center, circles, onToggle });
|
|
35
|
+
const model = useRegionMap({ regions, center, circles, reach, onToggle });
|
|
34
36
|
const { view } = model;
|
|
35
37
|
if (view === null && regions.length === 0) return null;
|
|
36
38
|
return /* @__PURE__ */ jsxs(Box, { className, "data-testid": dataTestId, children: [
|
|
@@ -39,6 +41,7 @@ function RegionMap({
|
|
|
39
41
|
RegionMapDrawing,
|
|
40
42
|
{
|
|
41
43
|
model: { ...model, view },
|
|
44
|
+
overlay,
|
|
42
45
|
showCenter: center !== null,
|
|
43
46
|
highlightedIds,
|
|
44
47
|
maxHeight,
|
|
@@ -77,4 +80,4 @@ function RegionMap({
|
|
|
77
80
|
export {
|
|
78
81
|
RegionMap
|
|
79
82
|
};
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
83
|
+
//# sourceMappingURL=chunk-5I75WRXT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/RegionMap/RegionMap.tsx"],"sourcesContent":["import Box from '@mui/material/Box/index.js';\nimport { useTheme } from '@mui/material/styles/index.js';\nimport React from 'react';\n\nimport { useRegionMap } from './RegionMap.hooks';\nimport type { RegionMapProps } from './RegionMap.types';\nimport { RegionMapDrawing } from './RegionMapDrawing';\nimport { RegionMapLegend } from './RegionMapLegend';\nimport { RegionMapList } from './RegionMapList';\n\n/** One empty list, so the default does not change identity per render. */\nconst NO_IDS: readonly string[] = [];\n\n/**\n * A hand-drawn map of named areas around a centre; a tap toggles an area.\n *\n * Drawn as inline SVG over a plain background — no tile server, no API key,\n * nothing fetched — because the question it answers is \"which of THESE areas\",\n * not \"what is the street called\". Four choices shape it:\n *\n * - **The list is the accessible way in.** The drawing is one `role=\"img\"`\n * with a name; its areas are not tab stops (dozens of them, many too small to\n * tap on a phone). Every area is also a toggle button in the list beneath,\n * with `aria-pressed`, which is what a keyboard and a screen reader use —\n * and what reaches a sliver no finger can.\n * - **Excluded is hatched AND named, never only coloured,** and never in the\n * error colour: leaving an area out is a choice, not a failure.\n * - **The hit test is ours, not only the browser's.** A mouse click on a path\n * is that path. A finger's tap takes the SMALLEST area within a few pixels'\n * worth of metres (`hitRegion`), so a sliver beside a big area can be hit\n * from the map; one too thin even for that is still on the list.\n * - **The host can draw inside it.** `reach` widens the view past the largest\n * circle and `overlay` draws a layer in the SVG at the map's own projection,\n * tap-transparent; `regionMapView` gives the same view to HTML laid over it.\n * - **A toggle is cheap.** Geometry is projected once per `rings` identity,\n * and the base layer is memoised, so a tap re-renders the hatch and labels.\n */\nexport function RegionMap({\n regions,\n center,\n circles,\n reach,\n overlay,\n onToggle,\n highlightedIds = NO_IDS,\n copy,\n listMode = 'collapsed',\n listSort = 'given',\n maxHeight,\n className,\n dataTestId = 'region-map',\n}: RegionMapProps): React.JSX.Element | null {\n const theme = useTheme();\n const model = useRegionMap({ regions, center, circles, reach, onToggle });\n const { view } = model;\n if (view === null && regions.length === 0) return null;\n return (\n <Box className={className} data-testid={dataTestId}>\n {view && (\n <>\n <RegionMapDrawing\n model={{ ...model, view }}\n overlay={overlay}\n showCenter={center !== null}\n highlightedIds={highlightedIds}\n maxHeight={maxHeight}\n label={copy.mapLabel}\n tappable={onToggle !== undefined}\n testId={dataTestId}\n theme={theme}\n />\n <RegionMapLegend\n copy={copy}\n outermostMetres={model.outermostMetres}\n showCenter={center !== null}\n theme={theme}\n testId={dataTestId}\n />\n </>\n )}\n {listMode !== 'none' && (\n <RegionMapList\n regions={regions}\n copy={copy}\n mode={listMode}\n sort={listSort}\n onToggle={onToggle}\n testId={dataTestId}\n theme={theme}\n />\n )}\n </Box>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,OAAO,SAAS;AAChB,SAAS,gBAAgB;AA0DjB,mBACE,KADF;AAhDR,IAAM,SAA4B,CAAC;AA0B5B,SAAS,UAAU;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA,WAAW;AAAA,EACX,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,aAAa;AACf,GAA6C;AAC3C,QAAM,QAAQ,SAAS;AACvB,QAAM,QAAQ,aAAa,EAAE,SAAS,QAAQ,SAAS,OAAO,SAAS,CAAC;AACxE,QAAM,EAAE,KAAK,IAAI;AACjB,MAAI,SAAS,QAAQ,QAAQ,WAAW,EAAG,QAAO;AAClD,SACE,qBAAC,OAAI,WAAsB,eAAa,YACrC;AAAA,YACC,iCACE;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO,EAAE,GAAG,OAAO,KAAK;AAAA,UACxB;AAAA,UACA,YAAY,WAAW;AAAA,UACvB;AAAA,UACA;AAAA,UACA,OAAO,KAAK;AAAA,UACZ,UAAU,aAAa;AAAA,UACvB,QAAQ;AAAA,UACR;AAAA;AAAA,MACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,iBAAiB,MAAM;AAAA,UACvB,YAAY,WAAW;AAAA,UACvB;AAAA,UACA,QAAQ;AAAA;AAAA,MACV;AAAA,OACF;AAAA,IAED,aAAa,UACZ;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA,QAAQ;AAAA,QACR;AAAA;AAAA,IACF;AAAA,KAEJ;AAEJ;","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SCHEDULE_GRID_METRICS
|
|
3
|
+
} from "./chunk-3R6BR22L.js";
|
|
4
|
+
import {
|
|
5
|
+
sxRem
|
|
6
|
+
} from "./chunk-YKCAJ2TN.js";
|
|
7
|
+
|
|
8
|
+
// src/components/data-display/ScheduleGrid/schedule-header-host.styles.ts
|
|
9
|
+
var headerAdornmentSx = {
|
|
10
|
+
mt: 0.5,
|
|
11
|
+
fontSize: sxRem(SCHEDULE_GRID_METRICS.headerSublabel),
|
|
12
|
+
fontWeight: 400,
|
|
13
|
+
color: "text.secondary"
|
|
14
|
+
};
|
|
15
|
+
var cornerSx = {
|
|
16
|
+
display: "flex",
|
|
17
|
+
flexDirection: "column",
|
|
18
|
+
justifyContent: "flex-start",
|
|
19
|
+
fontSize: sxRem(SCHEDULE_GRID_METRICS.headerSublabel),
|
|
20
|
+
color: "text.secondary",
|
|
21
|
+
pt: 0.5,
|
|
22
|
+
pr: 0.5,
|
|
23
|
+
minWidth: 0
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export {
|
|
27
|
+
headerAdornmentSx,
|
|
28
|
+
cornerSx
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=chunk-5MXVKZKZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/ScheduleGrid/schedule-header-host.styles.ts"],"sourcesContent":["import type { SxProps, Theme } from '@mui/material/styles/index.js';\n\nimport { sxRem } from '../../../tokens/relative';\nimport { SCHEDULE_GRID_METRICS as M } from './ScheduleGrid.metrics';\n\n/**\n * The header row's host figures (FUT-3882): a day's adornment under its label\n * and the corner above the names. Their own module to keep the grid's styles\n * under the file-size budget.\n */\n\n/** A day's adornment: under its label, the column's full width, in the secondary ink unless the host says otherwise. */\nexport const headerAdornmentSx: SxProps<Theme> = {\n mt: 0.5,\n fontSize: sxRem(M.headerSublabel),\n fontWeight: 400,\n color: 'text.secondary',\n};\n\n/**\n * The cell above the names. It is the pinned mask over the names column (the\n * grid's sticky rule): it must stay a stretched grid item, the header row's\n * full height, or a day scrolled sideways shows above the names. Its words sit\n * inside it on the days' label line (the prototype's \"Movimento, 11h–23h\").\n */\nexport const cornerSx: SxProps<Theme> = {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-start',\n fontSize: sxRem(M.headerSublabel),\n color: 'text.secondary',\n pt: 0.5,\n pr: 0.5,\n minWidth: 0,\n};\n"],"mappings":";;;;;;;;AAYO,IAAM,oBAAoC;AAAA,EAC/C,IAAI;AAAA,EACJ,UAAU,MAAM,sBAAE,cAAc;AAAA,EAChC,YAAY;AAAA,EACZ,OAAO;AACT;AAQO,IAAM,WAA2B;AAAA,EACtC,SAAS;AAAA,EACT,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,UAAU,MAAM,sBAAE,cAAc;AAAA,EAChC,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,UAAU;AACZ;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
useLightboxCopy
|
|
3
|
-
} from "./chunk-TEQYTEM2.js";
|
|
4
1
|
import {
|
|
5
2
|
thumbnailStripSx
|
|
6
3
|
} from "./chunk-VQU3CBAL.js";
|
|
4
|
+
import {
|
|
5
|
+
useLightboxCopy
|
|
6
|
+
} from "./chunk-TEQYTEM2.js";
|
|
7
7
|
import {
|
|
8
8
|
onMedia,
|
|
9
9
|
sheen
|
|
@@ -89,4 +89,4 @@ var LightboxThumbnails = ({
|
|
|
89
89
|
export {
|
|
90
90
|
LightboxThumbnails
|
|
91
91
|
};
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
92
|
+
//# sourceMappingURL=chunk-64UNVW6D.js.map
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-4SQ2WCZA.js";
|
|
13
13
|
import {
|
|
14
14
|
Alert
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-PEAUGQKU.js";
|
|
16
16
|
|
|
17
17
|
// src/components/data-display/DataViews/data-views-table-parts.tsx
|
|
18
18
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -121,4 +121,4 @@ export {
|
|
|
121
121
|
ViewsMenuSlot,
|
|
122
122
|
ViewDialogs
|
|
123
123
|
};
|
|
124
|
-
//# sourceMappingURL=chunk-
|
|
124
|
+
//# sourceMappingURL=chunk-66VKX6JE.js.map
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
badgeContentOf,
|
|
3
|
-
definedAria,
|
|
4
|
-
formatCount,
|
|
5
|
-
resolveBadgeProps
|
|
6
|
-
} from "./chunk-6C5D6O3D.js";
|
|
7
1
|
import {
|
|
8
2
|
buildBadgeContent
|
|
9
3
|
} from "./chunk-ZNCYCE7L.js";
|
|
@@ -11,6 +5,12 @@ import {
|
|
|
11
5
|
badgeStyles,
|
|
12
6
|
getAnchorOrigin
|
|
13
7
|
} from "./chunk-2L3VRVRE.js";
|
|
8
|
+
import {
|
|
9
|
+
badgeContentOf,
|
|
10
|
+
definedAria,
|
|
11
|
+
formatCount,
|
|
12
|
+
resolveBadgeProps
|
|
13
|
+
} from "./chunk-6C5D6O3D.js";
|
|
14
14
|
import {
|
|
15
15
|
CLOSE_DELAY_MS,
|
|
16
16
|
MOUNT_ANIMATION_MS
|
|
@@ -180,4 +180,4 @@ Badge.displayName = "Badge";
|
|
|
180
180
|
export {
|
|
181
181
|
Badge
|
|
182
182
|
};
|
|
183
|
-
//# sourceMappingURL=chunk-
|
|
183
|
+
//# sourceMappingURL=chunk-6DO672AG.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-T7OIVPCO.js";
|
|
6
6
|
import {
|
|
7
7
|
MoreFilters
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-HS662RLW.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-3OHZAZEE.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-AI7XWBNG.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RailCreateMenu
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MM3QESLI.js";
|
|
4
4
|
import {
|
|
5
5
|
Box,
|
|
6
6
|
CONTROL_RESET,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
controlProps,
|
|
12
12
|
destinationControl,
|
|
13
13
|
focusRing
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-LDCZPZPD.js";
|
|
15
15
|
import {
|
|
16
16
|
destinationState,
|
|
17
17
|
isMenu
|
|
@@ -295,4 +295,4 @@ function SectionNavRail({
|
|
|
295
295
|
export {
|
|
296
296
|
SectionNavRail
|
|
297
297
|
};
|
|
298
|
-
//# sourceMappingURL=chunk-
|
|
298
|
+
//# sourceMappingURL=chunk-AMIUZRDQ.js.map
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
CellConfigProvider,
|
|
3
|
-
cellTracks,
|
|
4
|
-
compactCellTracks
|
|
5
|
-
} from "./chunk-F5S5UFGD.js";
|
|
6
1
|
import {
|
|
7
2
|
DENSITY_ROW_PADDING
|
|
8
3
|
} from "./chunk-5CAWRMDX.js";
|
|
9
4
|
import {
|
|
10
5
|
GroupGrid
|
|
11
6
|
} from "./chunk-U3HEYECF.js";
|
|
7
|
+
import {
|
|
8
|
+
CellConfigProvider,
|
|
9
|
+
cellTracks,
|
|
10
|
+
compactCellTracks
|
|
11
|
+
} from "./chunk-F5S5UFGD.js";
|
|
12
12
|
|
|
13
13
|
// src/components/data-display/DataViews/list-card-rails.tsx
|
|
14
14
|
import { createContext, useContext } from "react";
|
|
@@ -133,4 +133,4 @@ export {
|
|
|
133
133
|
cellRailCount,
|
|
134
134
|
ListCardGroup
|
|
135
135
|
};
|
|
136
|
-
//# sourceMappingURL=chunk-
|
|
136
|
+
//# sourceMappingURL=chunk-BBBHPK2Q.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
} from "./chunk-L7BRU4UF.js";
|
|
9
9
|
import {
|
|
10
10
|
Alert
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-PEAUGQKU.js";
|
|
12
12
|
import {
|
|
13
13
|
Button
|
|
14
14
|
} from "./chunk-YOXYSAUI.js";
|
|
@@ -106,4 +106,4 @@ NotificationStatusNotice.displayName = "NotificationStatusNotice";
|
|
|
106
106
|
export {
|
|
107
107
|
NotificationStatusNotice
|
|
108
108
|
};
|
|
109
|
-
//# sourceMappingURL=chunk-
|
|
109
|
+
//# sourceMappingURL=chunk-BOADHYTA.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-AJ6KFHEE.js";
|
|
4
4
|
import {
|
|
5
5
|
PanelRangeField
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-3OHZAZEE.js";
|
|
7
7
|
import {
|
|
8
8
|
useDataViewsCopy
|
|
9
9
|
} from "./chunk-KHG57NAE.js";
|
|
@@ -157,4 +157,4 @@ export {
|
|
|
157
157
|
GridFilterPanel,
|
|
158
158
|
FilterDialog
|
|
159
159
|
};
|
|
160
|
-
//# sourceMappingURL=chunk-
|
|
160
|
+
//# sourceMappingURL=chunk-CKQOYPH3.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RAIL_GAP_PX
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BBBHPK2Q.js";
|
|
4
4
|
import {
|
|
5
5
|
COMPACT_BREAK,
|
|
6
6
|
META_BREAK
|
|
@@ -257,4 +257,4 @@ export {
|
|
|
257
257
|
ListCardActions,
|
|
258
258
|
ListCardTail
|
|
259
259
|
};
|
|
260
|
-
//# sourceMappingURL=chunk-
|
|
260
|
+
//# sourceMappingURL=chunk-CSJ7WNXU.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
buildChartContext
|
|
3
|
+
} from "./chunk-JG733RMP.js";
|
|
1
4
|
import {
|
|
2
5
|
ChartLegendContent,
|
|
3
6
|
ChartTooltipContent
|
|
4
7
|
} from "./chunk-RIRTW5EU.js";
|
|
5
|
-
import {
|
|
6
|
-
buildChartContext
|
|
7
|
-
} from "./chunk-TZC6KIK2.js";
|
|
8
8
|
import {
|
|
9
9
|
uiInk
|
|
10
10
|
} from "./chunk-XJAD6E3V.js";
|
|
@@ -318,4 +318,4 @@ function renderChartByType(props, theme) {
|
|
|
318
318
|
export {
|
|
319
319
|
renderChartByType
|
|
320
320
|
};
|
|
321
|
-
//# sourceMappingURL=chunk-
|
|
321
|
+
//# sourceMappingURL=chunk-CZVAVX5L.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GridBody,
|
|
3
3
|
GridHeader
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-E73C73UD.js";
|
|
5
5
|
import {
|
|
6
6
|
focusables,
|
|
7
7
|
handleGridKey
|
|
@@ -119,7 +119,7 @@ function ScheduleGrid(props) {
|
|
|
119
119
|
onPointerDownCapture: focus.forget,
|
|
120
120
|
onClickCapture: can.create ? focus.followClickCreate : void 0,
|
|
121
121
|
children: [
|
|
122
|
-
/* @__PURE__ */ jsx(Box, { ref: headRef, role: "none", sx: headerSx(props.stickyTop ?? 0), "data-sg-head": "", "data-testid": `${testId}-head`, onWheel: sideways.forwardWheel, children: /* @__PURE__ */ jsx(GridHeader, { columns, totalLabel: hasTotal ? props.totalLabel ?? "" : void 0, rowSx, testId }) }),
|
|
122
|
+
/* @__PURE__ */ jsx(Box, { ref: headRef, role: "none", sx: headerSx(props.stickyTop ?? 0), "data-sg-head": "", "data-testid": `${testId}-head`, onWheel: sideways.forwardWheel, children: /* @__PURE__ */ jsx(GridHeader, { columns, totalLabel: hasTotal ? props.totalLabel ?? "" : void 0, corner: props.corner, rowSx, testId }) }),
|
|
123
123
|
/* @__PURE__ */ jsx(
|
|
124
124
|
Box,
|
|
125
125
|
{
|
|
@@ -144,4 +144,4 @@ function ScheduleGrid(props) {
|
|
|
144
144
|
export {
|
|
145
145
|
ScheduleGrid
|
|
146
146
|
};
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
147
|
+
//# sourceMappingURL=chunk-D7R6SRJB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/ScheduleGrid/ScheduleGrid.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport React, { useEffect, useRef } from 'react';\n\nimport { resolveLabels } from '../../../utils/resolve-labels';\nimport { EN_US_SCHEDULE_GRID_LABELS } from './ScheduleGrid.en-US';\nimport { focusables, handleGridKey } from './ScheduleGrid.keyboard';\nimport { GridBody, GridHeader, type CellAbilities } from './ScheduleGrid.parts';\nimport { frameSx, headerSx, rootSx, rowGridSx, scrollSx, SR_ONLY_SX } from './ScheduleGrid.styles';\nimport type { ScheduleGridProps } from './ScheduleGrid.types';\nimport { useAnnouncer } from './useAnnouncer';\nimport { useGridDrag } from './useGridDrag';\nimport { useScrollToDay } from './useScrollToDay';\nimport { useSidewaysScroll } from './useSidewaysScroll';\n\n/**\n * After a keyboard move the host re-renders the block in its new cell (a new\n * element): focus follows it there. After a create on an empty day's \"+\" (Enter,\n * Space or a click) the \"+\" gives way to the host's new block: focus moves to\n * it, so the arrows go on from there — after a click without scrolling. A host\n * that refused keeps focus where it was; the next key or pointer press forgets\n * the wait.\n */\ntype FollowTarget = { kind: 'move'; id: string; day: number } | { kind: 'create'; row: string; day: number; pointer: boolean };\n\n/** The empty day's \"+\" an event landed on, if any. */\nfunction plusOf(target: EventTarget): HTMLElement | null {\n if (!(target instanceof HTMLElement)) return null;\n const plus = target.closest<HTMLElement>('button[data-sg-focus]');\n return plus && plus.dataset.sgBlock === undefined && plus.dataset.sgRow !== undefined ? plus : null;\n}\n\nfunction useFollowFocus(rootRef: React.RefObject<HTMLElement | null>) {\n const pending = useRef<FollowTarget | null>(null);\n useEffect(() => {\n const follow = pending.current;\n if (!follow || !rootRef.current) return;\n const block = focusables(rootRef.current).find((el) =>\n Number(el.dataset.sgDay) !== follow.day || el.dataset.sgBlock === undefined\n ? false\n : follow.kind === 'move'\n ? el.dataset.sgBlock === follow.id\n : el.dataset.sgRow === follow.row,\n );\n if (!block) return;\n // After a click the cell stays where the pointer left it: no scroll at all (FUT-3825 R1).\n block.focus(follow.kind === 'create' && follow.pointer ? { preventScroll: true } : undefined);\n pending.current = null;\n });\n return {\n follow: (id: string, day: number): void => {\n pending.current = { kind: 'move', id, day };\n },\n /** A key that presses an empty day's \"+\" (its click creates there). */\n followCreate: (event: React.KeyboardEvent): void => {\n const plus = plusOf(event.target);\n if ((event.key !== 'Enter' && event.key !== ' ') || !plus?.dataset.sgRow) return;\n pending.current = { kind: 'create', row: plus.dataset.sgRow, day: Number(plus.dataset.sgDay), pointer: false };\n },\n /** A pointer click on an empty day's \"+\" (a key's click, `detail` 0, is the key's). */\n followClickCreate: (event: React.MouseEvent): void => {\n const plus = plusOf(event.target);\n if (event.detail === 0 || !plus?.dataset.sgRow) return;\n pending.current = { kind: 'create', row: plus.dataset.sgRow, day: Number(plus.dataset.sgDay), pointer: true };\n },\n forget: (): void => {\n pending.current = null;\n },\n };\n}\n\n/** The body shows the days' rows: not the skeleton, the host's error or its empty state. */\nfunction daysDrawn(props: ScheduleGridProps, rowCount: number): boolean {\n return !props.loading && !props.error && rowCount > 0;\n}\n\nfunction abilitiesOf(props: ScheduleGridProps): CellAbilities {\n const open = !props.readOnly && !props.loading;\n return { create: open && Boolean(props.onCreate), copy: open && Boolean(props.onCopy), move: open && Boolean(props.onMove) };\n}\n\n/**\n * People (or resources) as rows, days as columns, and blocks with a start and\n * an end in the cells — the week grid of a staff schedule (FUT-3825).\n *\n * Click an empty cell to create on that day; drag across empty cells of a row\n * to create on each; drag a block's edge grip along its row to copy it; drag\n * its middle to move it to another day or row; click it to open it. Touch\n * scrolls and never drags. Every gesture has a keyboard twin.\n *\n * The grid reports gestures; the hours, limits and refusals are the host's.\n */\nexport function ScheduleGrid(props: ScheduleGridProps): React.JSX.Element {\n const { columns, groups, cell, onCreate, onCopy, onMove } = props;\n const testId = props.dataTestId ?? 'schedule-grid';\n const labels = resolveLabels(EN_US_SCHEDULE_GRID_LABELS, props.labels);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const { text: announcement, say } = useAnnouncer();\n const focus = useFollowFocus(rootRef);\n const dragApi = useGridDrag(rootRef, { cell, onCreate, onCopy, onMove });\n const can = abilitiesOf(props);\n const rows = groups.flatMap((group) => group.rows);\n const hasTotal = props.totalLabel !== undefined || rows.some((row) => row.total !== undefined);\n const rowSx = rowGridSx(columns.length, hasTotal);\n\n const headRef = useRef<HTMLDivElement | null>(null);\n const bodyRef = useRef<HTMLDivElement | null>(null);\n const sideways = useSidewaysScroll(headRef, bodyRef);\n useScrollToDay(headRef, bodyRef, { day: props.scrollToDay, dayCount: columns.length, drawn: daysDrawn(props, rows.length) }, sideways.follow);\n\n const onKeyDown = (event: React.KeyboardEvent): void => {\n sideways.release();\n focus.forget();\n if (!rootRef.current) return;\n if (can.create) focus.followCreate(event);\n handleGridKey(event, { root: rootRef.current, rows, columns, cell, can, onCopy, onMove, labels, say, follow: focus.follow });\n };\n\n return (\n <Box sx={rootSx} data-testid={testId}>\n <Box\n ref={rootRef}\n role=\"table\"\n aria-label={props['aria-label']}\n aria-busy={props.loading || undefined}\n aria-description={props.loading ? labels.loading : undefined}\n sx={frameSx(columns.length, hasTotal)}\n onKeyDown={onKeyDown}\n onPointerDownCapture={focus.forget}\n onClickCapture={can.create ? focus.followClickCreate : undefined}\n >\n {/* The header row sits outside the sideways scroller, so it sticks to the page; it follows the days sideways. */}\n <Box ref={headRef} role=\"none\" sx={headerSx(props.stickyTop ?? 0)} data-sg-head=\"\" data-testid={`${testId}-head`} onWheel={sideways.forwardWheel}>\n <GridHeader columns={columns} totalLabel={hasTotal ? (props.totalLabel ?? '') : undefined} rowSx={rowSx} testId={testId} />\n </Box>\n <Box ref={bodyRef} role=\"none\" sx={scrollSx} data-sg-scroll=\"\" data-testid={`${testId}-scroll`} onScroll={sideways.follow}\n onFocus={sideways.bringOut}\n onPointerDownCapture={sideways.press}\n >\n <GridBody grid={props} rows={rows} rowSx={rowSx} hasTotal={hasTotal} can={can} dragApi={dragApi} labels={labels} testId={testId} />\n </Box>\n </Box>\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
|
+
{"version":3,"sources":["../src/components/data-display/ScheduleGrid/ScheduleGrid.tsx"],"sourcesContent":["'use client';\n\nimport Box from '@mui/material/Box/index.js';\nimport React, { useEffect, useRef } from 'react';\n\nimport { resolveLabels } from '../../../utils/resolve-labels';\nimport { EN_US_SCHEDULE_GRID_LABELS } from './ScheduleGrid.en-US';\nimport { focusables, handleGridKey } from './ScheduleGrid.keyboard';\nimport { GridBody, GridHeader, type CellAbilities } from './ScheduleGrid.parts';\nimport { frameSx, headerSx, rootSx, rowGridSx, scrollSx, SR_ONLY_SX } from './ScheduleGrid.styles';\nimport type { ScheduleGridProps } from './ScheduleGrid.types';\nimport { useAnnouncer } from './useAnnouncer';\nimport { useGridDrag } from './useGridDrag';\nimport { useScrollToDay } from './useScrollToDay';\nimport { useSidewaysScroll } from './useSidewaysScroll';\n\n/**\n * After a keyboard move the host re-renders the block in its new cell (a new\n * element): focus follows it there. After a create on an empty day's \"+\" (Enter,\n * Space or a click) the \"+\" gives way to the host's new block: focus moves to\n * it, so the arrows go on from there — after a click without scrolling. A host\n * that refused keeps focus where it was; the next key or pointer press forgets\n * the wait.\n */\ntype FollowTarget = { kind: 'move'; id: string; day: number } | { kind: 'create'; row: string; day: number; pointer: boolean };\n\n/** The empty day's \"+\" an event landed on, if any. */\nfunction plusOf(target: EventTarget): HTMLElement | null {\n if (!(target instanceof HTMLElement)) return null;\n const plus = target.closest<HTMLElement>('button[data-sg-focus]');\n return plus && plus.dataset.sgBlock === undefined && plus.dataset.sgRow !== undefined ? plus : null;\n}\n\nfunction useFollowFocus(rootRef: React.RefObject<HTMLElement | null>) {\n const pending = useRef<FollowTarget | null>(null);\n useEffect(() => {\n const follow = pending.current;\n if (!follow || !rootRef.current) return;\n const block = focusables(rootRef.current).find((el) =>\n Number(el.dataset.sgDay) !== follow.day || el.dataset.sgBlock === undefined\n ? false\n : follow.kind === 'move'\n ? el.dataset.sgBlock === follow.id\n : el.dataset.sgRow === follow.row,\n );\n if (!block) return;\n // After a click the cell stays where the pointer left it: no scroll at all (FUT-3825 R1).\n block.focus(follow.kind === 'create' && follow.pointer ? { preventScroll: true } : undefined);\n pending.current = null;\n });\n return {\n follow: (id: string, day: number): void => {\n pending.current = { kind: 'move', id, day };\n },\n /** A key that presses an empty day's \"+\" (its click creates there). */\n followCreate: (event: React.KeyboardEvent): void => {\n const plus = plusOf(event.target);\n if ((event.key !== 'Enter' && event.key !== ' ') || !plus?.dataset.sgRow) return;\n pending.current = { kind: 'create', row: plus.dataset.sgRow, day: Number(plus.dataset.sgDay), pointer: false };\n },\n /** A pointer click on an empty day's \"+\" (a key's click, `detail` 0, is the key's). */\n followClickCreate: (event: React.MouseEvent): void => {\n const plus = plusOf(event.target);\n if (event.detail === 0 || !plus?.dataset.sgRow) return;\n pending.current = { kind: 'create', row: plus.dataset.sgRow, day: Number(plus.dataset.sgDay), pointer: true };\n },\n forget: (): void => {\n pending.current = null;\n },\n };\n}\n\n/** The body shows the days' rows: not the skeleton, the host's error or its empty state. */\nfunction daysDrawn(props: ScheduleGridProps, rowCount: number): boolean {\n return !props.loading && !props.error && rowCount > 0;\n}\n\nfunction abilitiesOf(props: ScheduleGridProps): CellAbilities {\n const open = !props.readOnly && !props.loading;\n return { create: open && Boolean(props.onCreate), copy: open && Boolean(props.onCopy), move: open && Boolean(props.onMove) };\n}\n\n/**\n * People (or resources) as rows, days as columns, and blocks with a start and\n * an end in the cells — the week grid of a staff schedule (FUT-3825).\n *\n * Click an empty cell to create on that day; drag across empty cells of a row\n * to create on each; drag a block's edge grip along its row to copy it; drag\n * its middle to move it to another day or row; click it to open it. Touch\n * scrolls and never drags. Every gesture has a keyboard twin.\n *\n * The grid reports gestures; the hours, limits and refusals are the host's.\n */\nexport function ScheduleGrid(props: ScheduleGridProps): React.JSX.Element {\n const { columns, groups, cell, onCreate, onCopy, onMove } = props;\n const testId = props.dataTestId ?? 'schedule-grid';\n const labels = resolveLabels(EN_US_SCHEDULE_GRID_LABELS, props.labels);\n const rootRef = useRef<HTMLDivElement | null>(null);\n const { text: announcement, say } = useAnnouncer();\n const focus = useFollowFocus(rootRef);\n const dragApi = useGridDrag(rootRef, { cell, onCreate, onCopy, onMove });\n const can = abilitiesOf(props);\n const rows = groups.flatMap((group) => group.rows);\n const hasTotal = props.totalLabel !== undefined || rows.some((row) => row.total !== undefined);\n const rowSx = rowGridSx(columns.length, hasTotal);\n\n const headRef = useRef<HTMLDivElement | null>(null);\n const bodyRef = useRef<HTMLDivElement | null>(null);\n const sideways = useSidewaysScroll(headRef, bodyRef);\n useScrollToDay(headRef, bodyRef, { day: props.scrollToDay, dayCount: columns.length, drawn: daysDrawn(props, rows.length) }, sideways.follow);\n\n const onKeyDown = (event: React.KeyboardEvent): void => {\n sideways.release();\n focus.forget();\n if (!rootRef.current) return;\n if (can.create) focus.followCreate(event);\n handleGridKey(event, { root: rootRef.current, rows, columns, cell, can, onCopy, onMove, labels, say, follow: focus.follow });\n };\n\n return (\n <Box sx={rootSx} data-testid={testId}>\n <Box\n ref={rootRef}\n role=\"table\"\n aria-label={props['aria-label']}\n aria-busy={props.loading || undefined}\n aria-description={props.loading ? labels.loading : undefined}\n sx={frameSx(columns.length, hasTotal)}\n onKeyDown={onKeyDown}\n onPointerDownCapture={focus.forget}\n onClickCapture={can.create ? focus.followClickCreate : undefined}\n >\n {/* The header row sits outside the sideways scroller, so it sticks to the page; it follows the days sideways. */}\n <Box ref={headRef} role=\"none\" sx={headerSx(props.stickyTop ?? 0)} data-sg-head=\"\" data-testid={`${testId}-head`} onWheel={sideways.forwardWheel}>\n <GridHeader columns={columns} totalLabel={hasTotal ? (props.totalLabel ?? '') : undefined} corner={props.corner} rowSx={rowSx} testId={testId} />\n </Box>\n <Box ref={bodyRef} role=\"none\" sx={scrollSx} data-sg-scroll=\"\" data-testid={`${testId}-scroll`} onScroll={sideways.follow}\n onFocus={sideways.bringOut}\n onPointerDownCapture={sideways.press}\n >\n <GridBody grid={props} rows={rows} rowSx={rowSx} hasTotal={hasTotal} can={can} dragApi={dragApi} labels={labels} testId={testId} />\n </Box>\n </Box>\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,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useCardActions
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FQNDJITD.js";
|
|
4
4
|
import {
|
|
5
5
|
ConfirmActionDialog
|
|
6
6
|
} from "./chunk-7W5X3KQ2.js";
|
|
@@ -50,4 +50,4 @@ function useRemoveConfirm({
|
|
|
50
50
|
export {
|
|
51
51
|
useRemoveConfirm
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
53
|
+
//# sourceMappingURL=chunk-DBPFKGXX.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
CountedIcon,
|
|
5
5
|
controlProps,
|
|
6
6
|
focusRing
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LDCZPZPD.js";
|
|
8
8
|
import {
|
|
9
9
|
Drawer,
|
|
10
10
|
DrawerContent,
|
|
@@ -175,4 +175,4 @@ function SectionNavSheet({
|
|
|
175
175
|
export {
|
|
176
176
|
SectionNavSheet
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chunk-
|
|
178
|
+
//# sourceMappingURL=chunk-DTZOP4ZR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-DY2I6LMX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DataGridEmpty,
|
|
3
|
+
DataGridError,
|
|
4
|
+
DataGridLoading
|
|
5
|
+
} from "./chunk-EARWC6PD.js";
|
|
1
6
|
import {
|
|
2
7
|
useDataGridModel
|
|
3
8
|
} from "./chunk-LDROG4QI.js";
|
|
@@ -5,11 +10,6 @@ import {
|
|
|
5
10
|
GridBody,
|
|
6
11
|
GridHeader
|
|
7
12
|
} from "./chunk-5RYPVYWP.js";
|
|
8
|
-
import {
|
|
9
|
-
DataGridEmpty,
|
|
10
|
-
DataGridError,
|
|
11
|
-
DataGridLoading
|
|
12
|
-
} from "./chunk-EARWC6PD.js";
|
|
13
13
|
|
|
14
14
|
// src/components/data-display/DataGrid/DataGrid.tsx
|
|
15
15
|
import Paper from "@mui/material/Paper/index.js";
|
|
@@ -120,4 +120,4 @@ export {
|
|
|
120
120
|
DataGrid,
|
|
121
121
|
GRID_ONLY_PROPS
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=chunk-
|
|
123
|
+
//# sourceMappingURL=chunk-DYHOBKPU.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
rowGutters
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UMOHHWXY.js";
|
|
4
4
|
import {
|
|
5
5
|
cellRailsTemplate
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-BBBHPK2Q.js";
|
|
7
7
|
import {
|
|
8
8
|
cellTracks,
|
|
9
9
|
compactCellTracks,
|
|
@@ -55,4 +55,4 @@ export {
|
|
|
55
55
|
useRowLayout,
|
|
56
56
|
StandaloneContainer
|
|
57
57
|
};
|
|
58
|
-
//# sourceMappingURL=chunk-
|
|
58
|
+
//# sourceMappingURL=chunk-E6K2UZGR.js.map
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cornerSx,
|
|
3
|
+
headerAdornmentSx
|
|
4
|
+
} from "./chunk-5MXVKZKZ.js";
|
|
1
5
|
import {
|
|
2
6
|
daysBetween,
|
|
3
7
|
isOpen
|
|
4
8
|
} from "./chunk-E6UMTR2G.js";
|
|
5
|
-
import {
|
|
6
|
-
ScheduleNameCell
|
|
7
|
-
} from "./chunk-TZ44F6W7.js";
|
|
8
9
|
import {
|
|
9
10
|
SR_ONLY_SX,
|
|
10
11
|
blockSx,
|
|
@@ -24,6 +25,9 @@ import {
|
|
|
24
25
|
totalCellSx,
|
|
25
26
|
totalHeaderSx
|
|
26
27
|
} from "./chunk-RYJ6XGFA.js";
|
|
28
|
+
import {
|
|
29
|
+
ScheduleNameCell
|
|
30
|
+
} from "./chunk-TZ44F6W7.js";
|
|
27
31
|
import {
|
|
28
32
|
SCHEDULE_GRID_METRICS
|
|
29
33
|
} from "./chunk-3R6BR22L.js";
|
|
@@ -173,12 +177,15 @@ function NameCell({ row }) {
|
|
|
173
177
|
const sizes = { name: SCHEDULE_GRID_METRICS.rowName, meta: SCHEDULE_GRID_METRICS.rowMeta, chipsTop: 0.5 };
|
|
174
178
|
return /* @__PURE__ */ jsx(ScheduleNameCell, { row, role: "rowheader", sx: nameCellSx, sizes });
|
|
175
179
|
}
|
|
180
|
+
function keepRangesWhole(node) {
|
|
181
|
+
return typeof node === "string" ? node.replace(/(\S)–(\S)/g, "$1\u2060\u2013\u2060$2") : node;
|
|
182
|
+
}
|
|
176
183
|
function keepDatesWhole(label) {
|
|
177
184
|
return label.replace(/ (?=\d)/g, "\xA0");
|
|
178
185
|
}
|
|
179
|
-
function GridHeader({ columns, totalLabel, rowSx, testId }) {
|
|
186
|
+
function GridHeader({ columns, totalLabel, corner, rowSx, testId }) {
|
|
180
187
|
return /* @__PURE__ */ jsxs(Box, { role: "row", sx: [rowSx, headerRowSx], "data-testid": `${testId}-header`, children: [
|
|
181
|
-
/* @__PURE__ */ jsx("span",
|
|
188
|
+
/* @__PURE__ */ jsx(Box, { component: "span", role: "cell", "data-sg-corner": "", sx: cornerSx, "data-testid": `${testId}-corner`, children: keepRangesWhole(corner) }),
|
|
182
189
|
columns.map((column, day) => /* @__PURE__ */ jsxs(
|
|
183
190
|
Box,
|
|
184
191
|
{
|
|
@@ -187,7 +194,8 @@ function GridHeader({ columns, totalLabel, rowSx, testId }) {
|
|
|
187
194
|
"data-sg-past": column.past ? "" : void 0,
|
|
188
195
|
children: [
|
|
189
196
|
/* @__PURE__ */ jsx("span", { "data-sg-col": "full", title: column.label, children: keepDatesWhole(column.label) }),
|
|
190
|
-
column.sublabel ? /* @__PURE__ */ jsx(Box, { component: "span", sx: headerSublabelSx, "data-sg-col": "sub", children: column.sublabel }) : null
|
|
197
|
+
column.sublabel ? /* @__PURE__ */ jsx(Box, { component: "span", sx: headerSublabelSx, "data-sg-col": "sub", children: column.sublabel }) : null,
|
|
198
|
+
column.adornment ? /* @__PURE__ */ jsx(Box, { component: "span", sx: headerAdornmentSx, "data-sg-col": "adornment", "data-testid": `${testId}-adornment-${day}`, children: column.adornment }) : null
|
|
191
199
|
]
|
|
192
200
|
},
|
|
193
201
|
`${day}-${column.label}`
|
|
@@ -246,4 +254,4 @@ export {
|
|
|
246
254
|
GridHeader,
|
|
247
255
|
GridBody
|
|
248
256
|
};
|
|
249
|
-
//# sourceMappingURL=chunk-
|
|
257
|
+
//# sourceMappingURL=chunk-E73C73UD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/ScheduleGrid/ScheduleGrid.parts.tsx"],"sourcesContent":["import AddIcon from '@mui/icons-material/Add';\nimport Box from '@mui/material/Box/index.js';\nimport type { CSSObject, Theme } from '@mui/material/styles/index.js';\nimport type * as React from 'react';\n\nimport type { ScheduleGridLabels } from './ScheduleGrid.labels';\nimport { daysBetween, isOpen } from './schedule-grid-model';\nimport { SCHEDULE_GRID_METRICS } from './ScheduleGrid.metrics';\nimport {\n blockedLabelSx,\n blockSx,\n breakSx,\n cellSx,\n ghostSx,\n gripSx,\n groupTitleSx,\n headerCellSx,\n headerSublabelSx,\n headerRowSx,\n nameCellSx,\n personRowSx,\n plusButtonSx,\n skeletonCellSx,\n SR_ONLY_SX,\n totalCellSx,\n totalHeaderSx,\n} from './ScheduleGrid.styles';\nimport { cornerSx, headerAdornmentSx } from './schedule-header-host.styles';\nimport type { CellLook } from './ScheduleGrid.styles';\nimport type {\n ScheduleGridBlock,\n ScheduleGridCell,\n ScheduleGridColumn,\n ScheduleGridProps,\n ScheduleGridRow,\n} from './ScheduleGrid.types';\nimport { ScheduleNameCell } from './ScheduleNameCell';\nimport type { GridDrag, GridDragApi } from './useGridDrag';\n\n/** What the grid lets a cell do, resolved once per render. */\nexport interface CellAbilities {\n create: boolean;\n copy: boolean;\n move: boolean;\n}\n\n/** A row's shared columns, as an `sx` part. */\ntype RowSx = (theme: Theme) => CSSObject;\n\ninterface CellProps {\n row: ScheduleGridRow;\n day: number;\n column: ScheduleGridColumn;\n cell: ScheduleGridCell;\n drag: GridDrag | null;\n dragApi: GridDragApi;\n can: CellAbilities;\n createPreview?: (rowId: string) => string;\n onCreate?: (rowId: string, days: number[]) => void;\n onBlockClick?: (blockId: string) => void;\n labels: ScheduleGridLabels;\n testId: string;\n}\n\n/** The ghost text this cell shows during a create or copy, or `null` when the gesture does not land here. */\nfunction ghostFor(props: CellProps): string | null {\n const { drag, row, day, cell, createPreview } = props;\n if (!drag || drag.mode === 'move' || drag.rowId !== row.id || !isOpen(cell)) return null;\n if (!daysBetween(drag.anchor, drag.day).includes(day)) return null;\n if (drag.mode === 'copy') return day === drag.anchor ? null : drag.preview;\n return createPreview?.(row.id) ?? '';\n}\n\n/** The keys a block answers to, for `aria-keyshortcuts`. */\nfunction shortcutsOf(movable: boolean, copyable: boolean): string | undefined {\n const keys = [movable ? 'Alt+ArrowLeft Alt+ArrowRight' : '', copyable ? 'Shift+ArrowLeft Shift+ArrowRight' : ''];\n return keys.filter(Boolean).join(' ') || undefined;\n}\n\nconst titleOf = (block: ScheduleGridBlock): string => block.title ?? [block.label, block.note].filter(Boolean).join(' · ');\n\ninterface BlockProps {\n block: ScheduleGridBlock;\n row: ScheduleGridRow;\n day: number;\n can: CellAbilities;\n dragApi: GridDragApi;\n onBlockClick?: (blockId: string) => void;\n testId: string;\n}\n\nfunction Grip({ side, onPointerDown, testId }: { side: 'l' | 'r'; onPointerDown: (event: React.PointerEvent) => void; testId: string }) {\n return <Box component=\"span\" aria-hidden sx={gripSx(side)} onPointerDown={onPointerDown} data-sg-grip=\"\" data-testid={testId} />;\n}\n\n/** The block's break, kept inside it whatever the host sent. */\nfunction BreakBand({ span, testId }: { span: { start: number; end: number }; testId: string }): React.JSX.Element | null {\n const start = Math.min(1, Math.max(0, span.start));\n const end = Math.min(1, Math.max(0, span.end));\n if (!(end > start)) return null;\n return <Box component=\"span\" aria-hidden sx={breakSx({ start, end })} data-sg-break=\"\" data-testid={testId} />;\n}\n\nfunction BlockButton({ block, row, day, can, dragApi, onBlockClick, testId }: BlockProps): React.JSX.Element {\n const movable = can.move && Boolean(block.movable);\n const copyable = can.copy && Boolean(block.copyable);\n const startCopy = (event: React.PointerEvent): void => dragApi.startCopy(event, block.id, row.id, day, block.label);\n const startMove = (event: React.PointerEvent): void => dragApi.startMove(event, block.id, row.id, day);\n return (\n <Box\n component=\"button\"\n type=\"button\"\n sx={blockSx(block.tone, { selected: Boolean(block.selected), movable })}\n title={titleOf(block)}\n aria-keyshortcuts={shortcutsOf(movable, copyable)}\n aria-current={block.selected ? 'true' : undefined}\n data-sg-focus=\"\"\n data-sg-row={row.id}\n data-sg-day={day}\n data-sg-block={block.id}\n data-tone={block.tone}\n data-testid={`${testId}-block-${block.id}`}\n onPointerDown={movable ? startMove : undefined}\n onClick={() => {\n if (!dragApi.takeClick()) onBlockClick?.(block.id);\n }}\n >\n {block.breakSpan ? <BreakBand span={block.breakSpan} testId={`${testId}-break-${block.id}`} /> : null}\n {copyable ? <Grip side=\"l\" onPointerDown={startCopy} testId={`${testId}-grip-l-${block.id}`} /> : null}\n <span data-sg-line=\"label\">{block.label}</span>\n {block.note ? <span data-sg-line=\"note\">{block.note}</span> : null}\n {copyable ? <Grip side=\"r\" onPointerDown={startCopy} testId={`${testId}-grip-r-${block.id}`} /> : null}\n </Box>\n );\n}\n\n/**\n * The empty cell's \"+\". It stays mounted while a drag shows the ghost in it, so\n * a press and release in place is still its click.\n */\nfunction PlusButton({ props, ghost }: { props: CellProps; ghost: string | null }): React.JSX.Element {\n const { row, day, column, dragApi, onCreate, labels } = props;\n return (\n <Box\n component=\"button\"\n type=\"button\"\n sx={plusButtonSx}\n aria-label={labels.createCell(row.label, column.label)}\n data-ghost={ghost === null ? undefined : ''}\n data-sg-focus=\"\"\n data-sg-row={row.id}\n data-sg-day={day}\n onPointerDown={(event: React.PointerEvent) => dragApi.startCreate(event, row.id, day)}\n onClick={() => {\n if (!dragApi.takeClick()) onCreate?.(row.id, [day]);\n }}\n >\n {ghost === null ? <AddIcon aria-hidden /> : <Ghost text={ghost} />}\n </Box>\n );\n}\n\nfunction Ghost({ text }: { text: string }): React.JSX.Element {\n return (\n <Box component=\"span\" sx={ghostSx} aria-hidden>\n {text}\n </Box>\n );\n}\n\n/** What fills a cell after its blocks: the \"+\" (or the ghost in it), a lone ghost, or a closed day's label. */\nfunction CellFill({ props, ghost }: { props: CellProps; ghost: string | null }): React.JSX.Element | null {\n const { cell, can } = props;\n if (can.create && isOpen(cell)) return <PlusButton props={props} ghost={ghost} />;\n if (ghost !== null) return <Ghost text={ghost} />;\n if (!cell.blocked || cell.blocks.length > 0 || !cell.blockedLabel) return null;\n return (\n <Box component=\"span\" sx={blockedLabelSx} aria-hidden title={cell.blockedLabel}>\n {cell.blockedLabel}\n </Box>\n );\n}\n\n/** A gone day's words for a screen reader (\"Já passou\"): visually hidden, and only when the host gives them. */\nfunction ClosedWords({ cell }: { cell: ScheduleGridCell }): React.JSX.Element | null {\n if (!cell.closed || cell.blocked || !cell.closedLabel) return null;\n return (\n <Box component=\"span\" sx={SR_ONLY_SX}>\n {cell.closedLabel}\n </Box>\n );\n}\n\n/** How the cell is drawn right now. */\nfunction lookOf(props: CellProps, ghost: string | null): CellLook {\n const { row, day, column, cell, drag, can } = props;\n return {\n today: Boolean(column.today),\n blocked: Boolean(cell.blocked),\n closed: Boolean(cell.closed),\n target: ghost !== null,\n over: drag?.mode === 'move' && drag.moved && drag.rowId === row.id && drag.day === day,\n interactive: can.create && isOpen(cell),\n };\n}\n\n/** One day of one row: its blocks, a \"+\" when it is empty, the hatch when it is closed. */\nexport function GridCell(props: CellProps): React.JSX.Element {\n const { row, day, column, cell, can, labels, testId } = props;\n const ghost = ghostFor(props);\n const look = lookOf(props, ghost);\n const blocked = look.blocked;\n const closedName = blocked && cell.blocks.length === 0 ? (cell.blockedLabel ?? labels.blockedCell(row.label, column.label)) : undefined;\n return (\n <Box\n role=\"cell\"\n sx={cellSx(look)}\n data-sg-cell=\"\"\n data-sg-row={row.id}\n data-sg-day={day}\n data-testid={`${testId}-cell-${row.id}-${day}`}\n aria-label={closedName}\n >\n {cell.blocks.map((block) => (\n <BlockButton\n key={block.id}\n block={block}\n row={row}\n day={day}\n can={can}\n dragApi={props.dragApi}\n onBlockClick={props.onBlockClick}\n testId={testId}\n />\n ))}\n <CellFill props={props} ghost={ghost} />\n <ClosedWords cell={cell} />\n </Box>\n );\n}\n\n/** The first column: the person, as both views draw it. */\nfunction NameCell({ row }: { row: ScheduleGridRow }): React.JSX.Element {\n const sizes = { name: SCHEDULE_GRID_METRICS.rowName, meta: SCHEDULE_GRID_METRICS.rowMeta, chipsTop: 0.5 };\n return <ScheduleNameCell row={row} role=\"rowheader\" sx={nameCellSx} sizes={sizes} />;\n}\n\ninterface HeaderProps {\n columns: readonly ScheduleGridColumn[];\n /** Present when the grid has a last column. */\n totalLabel?: string;\n /** Above the names (`ScheduleGridProps.corner`). */\n corner?: React.ReactNode;\n rowSx: RowSx;\n testId: string;\n}\n\n/** The days, their counts and the total column's header — pinned while the grid scrolls. */\n\n/** A range (\"11h–23h\") breaks before or after it, never at its dash; a spaced dash (\"11h – 23h\") keeps its spaces. */\nfunction keepRangesWhole(node: React.ReactNode): React.ReactNode {\n return typeof node === 'string' ? node.replace(/(\\S)–(\\S)/g, '$1\\u2060–\\u2060$2') : node;\n}\n\n/** A label wraps between words, never inside \"Seg 19/10\": the space before a number holds. */\nfunction keepDatesWhole(label: string): string {\n return label.replace(/ (?=\\d)/g, '\\u00a0');\n}\n\nexport function GridHeader({ columns, totalLabel, corner, rowSx, testId }: HeaderProps): React.JSX.Element {\n return (\n <Box role=\"row\" sx={[rowSx, headerRowSx]} data-testid={`${testId}-header`}>\n {/* Above the names: a cell of the header row, with nothing to head but the host's corner words. */}\n <Box component=\"span\" role=\"cell\" data-sg-corner=\"\" sx={cornerSx} data-testid={`${testId}-corner`}>\n {keepRangesWhole(corner)}\n </Box>\n {columns.map((column, day) => (\n <Box\n role=\"columnheader\"\n key={`${day}-${column.label}`}\n sx={headerCellSx(Boolean(column.today), Boolean(column.past))}\n data-sg-past={column.past ? '' : undefined}\n >\n <span data-sg-col=\"full\" title={column.label}>\n {keepDatesWhole(column.label)}\n </span>\n {column.sublabel ? (\n <Box component=\"span\" sx={headerSublabelSx} data-sg-col=\"sub\">\n {column.sublabel}\n </Box>\n ) : null}\n {column.adornment ? (\n <Box component=\"span\" sx={headerAdornmentSx} data-sg-col=\"adornment\" data-testid={`${testId}-adornment-${day}`}>\n {column.adornment}\n </Box>\n ) : null}\n </Box>\n ))}\n {totalLabel !== undefined ? (\n <Box role=\"columnheader\" sx={totalHeaderSx}>\n {totalLabel}\n </Box>\n ) : null}\n </Box>\n );\n}\n\ninterface BodyProps {\n grid: ScheduleGridProps;\n rows: readonly ScheduleGridRow[];\n rowSx: RowSx;\n hasTotal: boolean;\n can: CellAbilities;\n dragApi: GridDragApi;\n labels: ScheduleGridLabels;\n testId: string;\n}\n\nfunction SkeletonRows({ grid, rowSx, testId }: Pick<BodyProps, 'grid' | 'rowSx' | 'testId'>): React.JSX.Element {\n return (\n <>\n {Array.from({ length: SCHEDULE_GRID_METRICS.skeletonRows }, (_, index) => (\n <Box key={index} sx={[rowSx, personRowSx]} aria-hidden data-testid={`${testId}-loading`}>\n <Box sx={skeletonCellSx} />\n {grid.columns.map((column, day) => (\n <Box key={`${day}-${column.label}`} sx={skeletonCellSx} />\n ))}\n </Box>\n ))}\n </>\n );\n}\n\nfunction PersonRow({ row, body }: { row: ScheduleGridRow; body: BodyProps }): React.JSX.Element {\n const { grid, rowSx, hasTotal, can, dragApi, labels, testId } = body;\n return (\n <Box role=\"row\" sx={[rowSx, personRowSx]} data-testid={`${testId}-row-${row.id}`}>\n <NameCell row={row} />\n {grid.columns.map((column, day) => (\n <GridCell\n key={`${day}-${column.label}`}\n row={row}\n day={day}\n column={column}\n cell={grid.cell(row.id, day)}\n drag={dragApi.drag}\n dragApi={dragApi}\n can={can}\n createPreview={grid.createPreview}\n onCreate={grid.onCreate}\n onBlockClick={grid.onBlockClick}\n labels={labels}\n testId={testId}\n />\n ))}\n {hasTotal ? (\n <Box role=\"cell\" sx={totalCellSx}>\n {row.total}\n </Box>\n ) : null}\n </Box>\n );\n}\n\n/** The host's error or empty node, as the table's one full-width row (a table holds rows only). */\nfunction MessageRow({ children, testId }: { children: React.ReactNode; testId: string }): React.JSX.Element | null {\n if (children === null || children === undefined || children === false) return null;\n return (\n <Box role=\"row\" data-testid={`${testId}-message`}>\n <Box role=\"cell\">{children}</Box>\n </Box>\n );\n}\n\n/** The groups and their rows — or the skeleton, the host's error, or the host's empty state. */\nexport function GridBody(body: BodyProps): React.JSX.Element | null {\n const { grid, rows } = body;\n if (grid.error) return <MessageRow testId={body.testId}>{grid.error}</MessageRow>;\n if (grid.loading) return <SkeletonRows grid={grid} rowSx={body.rowSx} testId={body.testId} />;\n if (rows.length === 0) return <MessageRow testId={body.testId}>{grid.empty}</MessageRow>;\n return (\n <>\n {grid.groups.map((group, index) => (\n <Box role=\"rowgroup\" key={`${index}-${group.title ?? ''}`} aria-label={group.title}>\n {group.title ? (\n <Box component=\"p\" sx={groupTitleSx} aria-hidden data-sg-group-title=\"\">\n {group.title}\n </Box>\n ) : null}\n {group.rows.map((row) => (\n <PersonRow key={row.id} row={row} body={body} />\n ))}\n </Box>\n ))}\n </>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
PT_BR_DAY_RULER_LABELS
|
|
3
|
-
} from "./chunk-D3OXTS7Y.js";
|
|
4
1
|
import {
|
|
5
2
|
EN_US_DAY_RULER_LABELS
|
|
6
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-F2ZUUEXC.js";
|
|
4
|
+
import {
|
|
5
|
+
PT_BR_DAY_RULER_LABELS
|
|
6
|
+
} from "./chunk-ZHCZOPKE.js";
|
|
7
7
|
|
|
8
8
|
// src/components/data-display/DayRuler/DayRuler.labels.ts
|
|
9
9
|
var DAY_RULER_LABELS = {
|
|
@@ -14,4 +14,4 @@ var DAY_RULER_LABELS = {
|
|
|
14
14
|
export {
|
|
15
15
|
DAY_RULER_LABELS
|
|
16
16
|
};
|
|
17
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-EZBBLLEU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.labels.ts"],"sourcesContent":["/**\n * `DayRuler`'s words, in both languages. They live with the component rather\n * than in `UiLabels` so they load only with it: `EN_US_UI_LABELS` and\n * `PT_BR_UI_LABELS` are imported by eagerly loaded components (`Avatar`), and\n * every family in them ships to every host that renders any of those (FUT-3831).\n *\n * Each language is a named pack beside the component (`DayRuler.pt-BR.ts`,\n * `DayRuler.en-US.ts`). A pt-BR host passes `DAY_RULER_LABELS['pt-BR']` to\n * `labels`; the ruler falls back to `'en-US'` on its own.\n */\nimport { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';\nimport { PT_BR_DAY_RULER_LABELS } from './DayRuler.pt-BR';\n\n/** `DayRuler`'s track names and the sentences its live region reads after a keyboard move or resize. */\nexport interface DayRulerLabels {\n /** A row's empty track: Enter schedules this row. */\n createTrack(row: string): string;\n /** After Alt+←/→ moved a block; `range` is \"20:45–00:45\". */\n moved(block: string, range: string): string;\n /** After Shift(+Alt)+←/→ changed a block's end or start. */\n resized(block: string, range: string): string;\n /** A keyboard move or resize past the ruler's ends or under the shortest length. */\n refused: string;\n /** Shift/Alt+←/→ on a block that is not `movable` / `resizable`: the block is fixed. */\n notMovable: string;\n /** The ruler's busy state. */\n loading: string;\n}\n\n/**\n * Both packs, in the shape `locales.ts`'s `pack(...)` yields. The component\n * itself imports only the en-US file, its fallback.\n */\nexport const DAY_RULER_LABELS: { readonly 'pt-BR': DayRulerLabels; readonly 'en-US': DayRulerLabels } = {\n 'pt-BR': PT_BR_DAY_RULER_LABELS,\n 'en-US': EN_US_DAY_RULER_LABELS,\n};\n"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DayRuler/DayRuler.labels.ts"],"sourcesContent":["/**\n * `DayRuler`'s words, in both languages. They live with the component rather\n * than in `UiLabels` so they load only with it: `EN_US_UI_LABELS` and\n * `PT_BR_UI_LABELS` are imported by eagerly loaded components (`Avatar`), and\n * every family in them ships to every host that renders any of those (FUT-3831).\n *\n * Each language is a named pack beside the component (`DayRuler.pt-BR.ts`,\n * `DayRuler.en-US.ts`). A pt-BR host passes `DAY_RULER_LABELS['pt-BR']` to\n * `labels`; the ruler falls back to `'en-US'` on its own.\n */\nimport { EN_US_DAY_RULER_LABELS } from './DayRuler.en-US';\nimport { PT_BR_DAY_RULER_LABELS } from './DayRuler.pt-BR';\n\n/** `DayRuler`'s track names and the sentences its live region reads after a keyboard move or resize. */\nexport interface DayRulerLabels {\n /** A row's empty track: Enter schedules this row. */\n createTrack(row: string): string;\n /** After Alt+←/→ moved a block; `range` is \"20:45–00:45\". */\n moved(block: string, range: string): string;\n /** After Shift(+Alt)+←/→ changed a block's end or start. */\n resized(block: string, range: string): string;\n /** A keyboard move or resize past the ruler's ends or under the shortest length. */\n refused: string;\n /** Shift/Alt+←/→ on a block that is not `movable` / `resizable`: the block is fixed. */\n notMovable: string;\n /** The ruler's busy state. */\n loading: string;\n /** Said after a group footer's marked hour when the host gives it no `title` (FUT-3882). */\n footerMarked: string;\n}\n\n/**\n * Both packs, in the shape `locales.ts`'s `pack(...)` yields. The component\n * itself imports only the en-US file, its fallback.\n */\nexport const DAY_RULER_LABELS: { readonly 'pt-BR': DayRulerLabels; readonly 'en-US': DayRulerLabels } = {\n 'pt-BR': PT_BR_DAY_RULER_LABELS,\n 'en-US': EN_US_DAY_RULER_LABELS,\n};\n"],"mappings":";;;;;;;;AAmCO,IAAM,mBAA2F;AAAA,EACtG,SAAS;AAAA,EACT,SAAS;AACX;","names":[]}
|