@12-apps/ui 6.89.1 → 6.90.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 +1 -1
- package/dist/_internal/components/data-display/Alert/Alert.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.js +4 -4
- package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
- package/dist/_internal/components/data-display/CardKit/card-actions-context.js +4 -4
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +5 -5
- package/dist/_internal/components/data-display/Carousel/Carousel.chrome.js +4 -3
- package/dist/_internal/components/data-display/Carousel/Carousel.js +6 -5
- package/dist/_internal/components/data-display/Carousel/Carousel.parts.js +3 -2
- package/dist/_internal/components/data-display/Chart/Chart.js +3 -3
- package/dist/_internal/components/data-display/Chart/SpecChart.js +6 -6
- package/dist/_internal/components/data-display/Chart/chart-renderers.js +2 -2
- package/dist/_internal/components/data-display/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/DataGrid/DataGrid.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +48 -23
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +53 -28
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +1 -1
- package/dist/_internal/components/data-display/DataViews/base-list-card-layout.js +1 -1
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-bar-controls.js +5 -3
- package/dist/_internal/components/data-display/DataViews/data-views-day-input.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-filter-panel.js +31 -6
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +47 -22
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +37 -12
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +32 -7
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +33 -8
- package/dist/_internal/components/data-display/DataViews/data-views-number-input.js +1 -1
- package/dist/_internal/components/data-display/DataViews/data-views-preset-chips.js +10 -3
- package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js +47 -0
- package/dist/_internal/components/data-display/DataViews/data-views-range-bounds.js.map +1 -0
- package/dist/_internal/components/data-display/DataViews/data-views-range-calendar.js +36 -0
- package/dist/_internal/components/data-display/DataViews/data-views-range-calendar.js.map +1 -0
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +32 -6
- package/dist/_internal/components/data-display/DataViews/data-views-range-summary.js +12 -0
- package/dist/_internal/components/data-display/DataViews/data-views-range-summary.js.map +1 -0
- package/dist/_internal/components/data-display/DataViews/data-views-shell-toolbar.js +3 -3
- package/dist/_internal/components/data-display/DataViews/data-views-still-anchor.js +9 -0
- package/dist/_internal/components/data-display/DataViews/data-views-still-anchor.js.map +1 -0
- 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 +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.js +3 -3
- package/dist/_internal/components/data-display/DayRuler/DayRuler.parts.js +2 -2
- package/dist/_internal/components/data-display/DayRuler/DayRuler.styles.js +3 -1
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +9 -8
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +8 -7
- package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js +2 -1
- package/dist/_internal/components/data-display/FleetMap/FleetMap.fixtures.js.map +1 -1
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +9 -9
- package/dist/_internal/components/data-display/MapPreview/MapControlBar.js +4 -3
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +5 -4
- package/dist/_internal/components/data-display/MapPreview/MapMarkers.js +4 -3
- package/dist/_internal/components/data-display/MapPreview/MapPreview.helpers.js +3 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +7 -6
- package/dist/_internal/components/data-display/index.js +38 -38
- package/dist/_internal/components/feedback/NotificationStatusNotice/NotificationStatusNotice.js +4 -4
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.js +6 -6
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.overview.js +5 -5
- package/dist/_internal/components/feedback/SequenceResolver/SequenceResolver.parts.js +4 -4
- package/dist/_internal/components/feedback/index.js +7 -7
- package/dist/_internal/components/form/Calendar/Calendar.js +5 -5
- package/dist/_internal/components/form/Calendar/CalendarDay.js +1 -1
- package/dist/_internal/components/form/Calendar/CalendarDayCell.js +2 -2
- package/dist/_internal/components/form/Calendar/CalendarMonth.js +3 -3
- package/dist/_internal/components/form/Calendar/CalendarSelectorsMonth.js +4 -4
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.hooks.js +3 -3
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +10 -10
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.range.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePickerFields.js +3 -3
- package/dist/_internal/components/form/index.js +24 -24
- package/dist/_internal/components/index.js +66 -66
- package/dist/_internal/en-US.data-display.js +2 -1
- package/dist/_internal/pt-BR.data-display.js +2 -1
- package/dist/_internal/user-avatar/user-avatar.js +5 -5
- package/dist/charts.js +11 -11
- package/dist/{chunk-FJ3UZ4RC.js → chunk-2FKWKLSC.js} +5 -3
- package/dist/chunk-2FKWKLSC.js.map +1 -0
- package/dist/{chunk-BO6MT2S2.js → chunk-3HZKUN5J.js} +7 -6
- package/dist/chunk-3HZKUN5J.js.map +1 -0
- package/dist/{chunk-TYXFFNPM.js → chunk-3OTGREQG.js} +10 -10
- package/dist/{chunk-BEHT4IHH.js → chunk-3X2MA47R.js} +2 -2
- package/dist/{chunk-XHIBFBNP.js → chunk-3ZRK3BRN.js} +4 -2
- package/dist/chunk-3ZRK3BRN.js.map +1 -0
- package/dist/{chunk-X5OGIT2F.js → chunk-4L54KUZV.js} +22 -4
- package/dist/chunk-4L54KUZV.js.map +1 -0
- package/dist/{chunk-TRYR424I.js → chunk-6LOWZCH7.js} +15 -1
- package/dist/chunk-6LOWZCH7.js.map +1 -0
- package/dist/{chunk-6WHIJPEF.js → chunk-6PU5P7QT.js} +2 -2
- package/dist/chunk-7CUZTWKW.js +52 -0
- package/dist/chunk-7CUZTWKW.js.map +1 -0
- package/dist/{chunk-JIEVKHOH.js → chunk-7YJYIMWP.js} +7 -7
- package/dist/{chunk-YNZUYZ2O.js → chunk-A3DDEKLV.js} +2 -2
- package/dist/{chunk-KHREN7Y7.js → chunk-ACM3HHZY.js} +2 -2
- package/dist/{chunk-FEKWKWGK.js → chunk-ARGVUTTL.js} +15 -1
- package/dist/chunk-ARGVUTTL.js.map +1 -0
- package/dist/{chunk-DYHOBKPU.js → chunk-BLZDSCIZ.js} +6 -6
- package/dist/{chunk-E2UOEI7N.js → chunk-BV2LOTMC.js} +2 -2
- package/dist/{chunk-O63ZROSY.js → chunk-BZBLPXV7.js} +4 -4
- package/dist/{chunk-OKRITX4S.js → chunk-CJ6XXM4X.js} +4 -4
- package/dist/{chunk-LV6AD6XC.js → chunk-DBI6AMNY.js} +4 -4
- package/dist/{chunk-QRRWLLXW.js → chunk-DSBC6O46.js} +2 -2
- package/dist/{chunk-3YFDGFEK.js → chunk-DVX4HDNP.js} +2 -2
- package/dist/{chunk-CJUK32UH.js → chunk-EEO7M5GU.js} +2 -2
- package/dist/{chunk-7XSCEHGA.js → chunk-EOQ6EKTS.js} +7 -7
- package/dist/{chunk-5RSK5M6M.js → chunk-FI2CQOGC.js} +63 -126
- package/dist/chunk-FI2CQOGC.js.map +1 -0
- package/dist/{chunk-Q2ERGAQO.js → chunk-FYAW5GBF.js} +33 -6
- package/dist/chunk-FYAW5GBF.js.map +1 -0
- package/dist/{chunk-EOJSA2EK.js → chunk-G2PVUPE7.js} +26 -18
- package/dist/chunk-G2PVUPE7.js.map +1 -0
- package/dist/{chunk-AMLHEKSV.js → chunk-HI7JPDD6.js} +5 -5
- package/dist/{chunk-2H6SCVLD.js → chunk-HMEGQKNQ.js} +3 -3
- package/dist/chunk-J2AVWIMM.js +60 -0
- package/dist/chunk-J2AVWIMM.js.map +1 -0
- package/dist/{chunk-7QKIL5YF.js → chunk-J2GDA64N.js} +4 -4
- package/dist/{chunk-BAQ3ITZV.js → chunk-JFD742C3.js} +2 -2
- package/dist/{chunk-OBA75Y5O.js → chunk-JHWEL4NX.js} +61 -33
- package/dist/chunk-JHWEL4NX.js.map +1 -0
- package/dist/{chunk-HQCZT6TO.js → chunk-JVOEVTCZ.js} +5 -5
- package/dist/{chunk-WAO7UQRS.js → chunk-KANCE4MS.js} +3 -3
- package/dist/{chunk-XLU5WFSY.js → chunk-KRBPWTXW.js} +2 -2
- package/dist/{chunk-S6D7NOV7.js → chunk-L6JAALMX.js} +3 -3
- package/dist/{chunk-72HOUWAW.js → chunk-L6YTVXGN.js} +5 -3
- package/dist/{chunk-72HOUWAW.js.map → chunk-L6YTVXGN.js.map} +1 -1
- package/dist/chunk-LZNUBQ5I.js +181 -0
- package/dist/chunk-LZNUBQ5I.js.map +1 -0
- package/dist/{chunk-BECKKDYG.js → chunk-M2M4IDFU.js} +2 -2
- package/dist/{chunk-CSGBHYW6.js → chunk-M5Y42AZ4.js} +2 -2
- package/dist/chunk-MICX23P4.js +122 -0
- package/dist/chunk-MICX23P4.js.map +1 -0
- package/dist/{chunk-5CP5Z3YU.js → chunk-MPWA55CF.js} +4 -4
- package/dist/{chunk-5KK3I42O.js → chunk-NK6O4NE4.js} +13 -10
- package/dist/chunk-NK6O4NE4.js.map +1 -0
- package/dist/{chunk-RCTHCXS6.js → chunk-PJNIJIE6.js} +2 -2
- package/dist/{chunk-6ATXOJVQ.js → chunk-QADTI63U.js} +4 -4
- package/dist/{chunk-MW7P2C2C.js → chunk-QAEO52Z4.js} +2 -2
- package/dist/{chunk-5S5K73I6.js → chunk-QSOCOXVL.js} +3 -3
- package/dist/{chunk-NQCTANF3.js → chunk-QVDEGBME.js} +7 -7
- package/dist/{chunk-BQBEN44R.js → chunk-RDCIST7P.js} +2 -2
- package/dist/{chunk-HUXAIQC5.js → chunk-RZ3P4X2I.js} +2 -2
- package/dist/{chunk-WJMSND5Q.js → chunk-SCXVTNLE.js} +2 -2
- package/dist/{chunk-K6FCSB6T.js → chunk-SK2CTB3O.js} +6 -6
- package/dist/{chunk-QLJU7UUI.js → chunk-T7OIVPCO.js} +38 -3
- package/dist/chunk-T7OIVPCO.js.map +1 -0
- package/dist/{chunk-U2ILXZDG.js → chunk-TB5CRHTF.js} +2 -2
- package/dist/{chunk-SB2SEGR6.js → chunk-TIM4PXWN.js} +3 -3
- package/dist/{chunk-YDIC6LSP.js → chunk-VCQFDQM3.js} +27 -7
- package/dist/chunk-VCQFDQM3.js.map +1 -0
- package/dist/chunk-VIMMEADQ.js +164 -0
- package/dist/chunk-VIMMEADQ.js.map +1 -0
- package/dist/{chunk-6D5AMANO.js → chunk-WH3LUOCQ.js} +2 -2
- package/dist/{chunk-OWRQOYUE.js → chunk-WWR6APJR.js} +2 -2
- package/dist/{chunk-5BVAUUWL.js → chunk-X37NTEVS.js} +2 -2
- package/dist/{chunk-WW3F7DCX.js → chunk-Z2WZDVGG.js} +2 -2
- package/dist/{chunk-EXVCVXFX.js → chunk-ZH6NYB6Y.js} +3 -3
- package/dist/data-display/Alert.js +3 -3
- package/dist/data-display/Avatar.js +4 -4
- package/dist/data-display/CardKit.js +11 -11
- package/dist/data-display/Carousel.js +6 -5
- package/dist/data-display/Chart.js +11 -11
- package/dist/data-display/DataGrid.js +2 -2
- package/dist/data-display/DataViews.js +60 -35
- package/dist/data-display/DayRuler.js +3 -3
- package/dist/data-display/FleetMap.js +9 -9
- package/dist/data-display/MapPreview.js +7 -6
- package/dist/en-US.js +1 -1
- package/dist/feedback/NotificationStatusNotice.js +4 -4
- package/dist/feedback/SequenceResolver.js +6 -6
- package/dist/form/Calendar.js +5 -5
- package/dist/form/DateRangePicker.js +10 -10
- package/dist/locales.js +5 -5
- package/dist/pt-BR.js +1 -1
- package/dist/types/components/data-display/DataViews/data-views-bar-controls.d.ts +15 -1
- package/dist/types/components/data-display/DataViews/data-views-bar-controls.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +35 -0
- package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts +7 -1
- package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts +5 -3
- package/dist/types/components/data-display/DataViews/data-views-more-filters.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-number-input.d.ts +10 -2
- package/dist/types/components/data-display/DataViews/data-views-number-input.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-preset-chips.d.ts +10 -0
- package/dist/types/components/data-display/DataViews/data-views-preset-chips.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-range-bounds.d.ts +35 -0
- package/dist/types/components/data-display/DataViews/data-views-range-bounds.d.ts.map +1 -0
- package/dist/types/components/data-display/DataViews/data-views-range-calendar.d.ts +35 -0
- package/dist/types/components/data-display/DataViews/data-views-range-calendar.d.ts.map +1 -0
- package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts +2 -11
- 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 +21 -0
- package/dist/types/components/data-display/DataViews/data-views-range-summary.d.ts.map +1 -0
- package/dist/types/components/data-display/DataViews/data-views-still-anchor.d.ts +45 -0
- package/dist/types/components/data-display/DataViews/data-views-still-anchor.d.ts.map +1 -0
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts +6 -1
- package/dist/types/components/data-display/DayRuler/DayRuler.styles.d.ts.map +1 -1
- package/dist/types/components/data-display/LazyImage/LazyImage.hooks.d.ts +1 -1
- package/dist/types/components/form/Calendar/Calendar.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/CalendarDay.d.ts +2 -0
- package/dist/types/components/form/Calendar/CalendarDay.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/CalendarDayCell.d.ts +2 -0
- package/dist/types/components/form/Calendar/CalendarDayCell.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/CalendarMonth.d.ts +5 -0
- package/dist/types/components/form/Calendar/CalendarMonth.d.ts.map +1 -1
- package/dist/types/en-US.data-display.d.ts.map +1 -1
- package/dist/types/pt-BR.data-display.d.ts.map +1 -1
- package/dist/user-avatar.js +5 -5
- package/package.json +1 -1
- package/src/components/data-display/DataViews/RESPONSIVE-BEHAVIOUR.md +59 -0
- package/src/components/data-display/DataViews/data-views-bar-controls.tsx +56 -1
- package/src/components/data-display/DataViews/data-views-copy.ts +36 -0
- package/src/components/data-display/DataViews/data-views-day-input.tsx +9 -1
- package/src/components/data-display/DataViews/data-views-inline-bar.tsx +5 -3
- package/src/components/data-display/DataViews/data-views-more-fields.tsx +1 -0
- package/src/components/data-display/DataViews/data-views-more-filters.tsx +82 -29
- package/src/components/data-display/DataViews/data-views-number-input.tsx +19 -9
- package/src/components/data-display/DataViews/data-views-preset-chips.tsx +165 -16
- package/src/components/data-display/DataViews/data-views-range-bounds.tsx +223 -0
- package/src/components/data-display/DataViews/data-views-range-calendar.tsx +185 -0
- package/src/components/data-display/DataViews/data-views-range-pill.tsx +71 -154
- package/src/components/data-display/DataViews/data-views-range-summary.tsx +66 -0
- package/src/components/data-display/DataViews/data-views-still-anchor.ts +93 -0
- package/src/components/data-display/DayRuler/DayRuler.styles.ts +29 -16
- package/src/components/form/Calendar/Calendar.md +17 -2
- package/src/components/form/Calendar/Calendar.tsx +56 -3
- package/src/components/form/Calendar/CalendarDay.tsx +33 -3
- package/src/components/form/Calendar/CalendarDayCell.tsx +4 -0
- package/src/components/form/Calendar/CalendarMonth.tsx +27 -5
- package/src/en-US.data-display.ts +12 -0
- package/src/pt-BR.data-display.ts +12 -0
- package/dist/chunk-5KK3I42O.js.map +0 -1
- package/dist/chunk-5RSK5M6M.js.map +0 -1
- package/dist/chunk-7D7CJRL7.js +0 -78
- package/dist/chunk-7D7CJRL7.js.map +0 -1
- package/dist/chunk-BO6MT2S2.js.map +0 -1
- package/dist/chunk-EOJSA2EK.js.map +0 -1
- package/dist/chunk-FEKWKWGK.js.map +0 -1
- package/dist/chunk-FJ3UZ4RC.js.map +0 -1
- package/dist/chunk-OBA75Y5O.js.map +0 -1
- package/dist/chunk-Q2ERGAQO.js.map +0 -1
- package/dist/chunk-QLJU7UUI.js.map +0 -1
- package/dist/chunk-TRYR424I.js.map +0 -1
- package/dist/chunk-X5OGIT2F.js.map +0 -1
- package/dist/chunk-XHIBFBNP.js.map +0 -1
- package/dist/chunk-YDIC6LSP.js.map +0 -1
- /package/dist/{chunk-TYXFFNPM.js.map → chunk-3OTGREQG.js.map} +0 -0
- /package/dist/{chunk-BEHT4IHH.js.map → chunk-3X2MA47R.js.map} +0 -0
- /package/dist/{chunk-6WHIJPEF.js.map → chunk-6PU5P7QT.js.map} +0 -0
- /package/dist/{chunk-JIEVKHOH.js.map → chunk-7YJYIMWP.js.map} +0 -0
- /package/dist/{chunk-YNZUYZ2O.js.map → chunk-A3DDEKLV.js.map} +0 -0
- /package/dist/{chunk-KHREN7Y7.js.map → chunk-ACM3HHZY.js.map} +0 -0
- /package/dist/{chunk-DYHOBKPU.js.map → chunk-BLZDSCIZ.js.map} +0 -0
- /package/dist/{chunk-E2UOEI7N.js.map → chunk-BV2LOTMC.js.map} +0 -0
- /package/dist/{chunk-O63ZROSY.js.map → chunk-BZBLPXV7.js.map} +0 -0
- /package/dist/{chunk-OKRITX4S.js.map → chunk-CJ6XXM4X.js.map} +0 -0
- /package/dist/{chunk-LV6AD6XC.js.map → chunk-DBI6AMNY.js.map} +0 -0
- /package/dist/{chunk-QRRWLLXW.js.map → chunk-DSBC6O46.js.map} +0 -0
- /package/dist/{chunk-3YFDGFEK.js.map → chunk-DVX4HDNP.js.map} +0 -0
- /package/dist/{chunk-CJUK32UH.js.map → chunk-EEO7M5GU.js.map} +0 -0
- /package/dist/{chunk-7XSCEHGA.js.map → chunk-EOQ6EKTS.js.map} +0 -0
- /package/dist/{chunk-AMLHEKSV.js.map → chunk-HI7JPDD6.js.map} +0 -0
- /package/dist/{chunk-2H6SCVLD.js.map → chunk-HMEGQKNQ.js.map} +0 -0
- /package/dist/{chunk-7QKIL5YF.js.map → chunk-J2GDA64N.js.map} +0 -0
- /package/dist/{chunk-BAQ3ITZV.js.map → chunk-JFD742C3.js.map} +0 -0
- /package/dist/{chunk-HQCZT6TO.js.map → chunk-JVOEVTCZ.js.map} +0 -0
- /package/dist/{chunk-WAO7UQRS.js.map → chunk-KANCE4MS.js.map} +0 -0
- /package/dist/{chunk-XLU5WFSY.js.map → chunk-KRBPWTXW.js.map} +0 -0
- /package/dist/{chunk-S6D7NOV7.js.map → chunk-L6JAALMX.js.map} +0 -0
- /package/dist/{chunk-BECKKDYG.js.map → chunk-M2M4IDFU.js.map} +0 -0
- /package/dist/{chunk-CSGBHYW6.js.map → chunk-M5Y42AZ4.js.map} +0 -0
- /package/dist/{chunk-5CP5Z3YU.js.map → chunk-MPWA55CF.js.map} +0 -0
- /package/dist/{chunk-RCTHCXS6.js.map → chunk-PJNIJIE6.js.map} +0 -0
- /package/dist/{chunk-6ATXOJVQ.js.map → chunk-QADTI63U.js.map} +0 -0
- /package/dist/{chunk-MW7P2C2C.js.map → chunk-QAEO52Z4.js.map} +0 -0
- /package/dist/{chunk-5S5K73I6.js.map → chunk-QSOCOXVL.js.map} +0 -0
- /package/dist/{chunk-NQCTANF3.js.map → chunk-QVDEGBME.js.map} +0 -0
- /package/dist/{chunk-BQBEN44R.js.map → chunk-RDCIST7P.js.map} +0 -0
- /package/dist/{chunk-HUXAIQC5.js.map → chunk-RZ3P4X2I.js.map} +0 -0
- /package/dist/{chunk-WJMSND5Q.js.map → chunk-SCXVTNLE.js.map} +0 -0
- /package/dist/{chunk-K6FCSB6T.js.map → chunk-SK2CTB3O.js.map} +0 -0
- /package/dist/{chunk-U2ILXZDG.js.map → chunk-TB5CRHTF.js.map} +0 -0
- /package/dist/{chunk-SB2SEGR6.js.map → chunk-TIM4PXWN.js.map} +0 -0
- /package/dist/{chunk-6D5AMANO.js.map → chunk-WH3LUOCQ.js.map} +0 -0
- /package/dist/{chunk-OWRQOYUE.js.map → chunk-WWR6APJR.js.map} +0 -0
- /package/dist/{chunk-5BVAUUWL.js.map → chunk-X37NTEVS.js.map} +0 -0
- /package/dist/{chunk-WW3F7DCX.js.map → chunk-Z2WZDVGG.js.map} +0 -0
- /package/dist/{chunk-EXVCVXFX.js.map → chunk-ZH6NYB6Y.js.map} +0 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isPresetActive,
|
|
3
|
+
resolvePreset
|
|
4
|
+
} from "./chunk-CBOB5AV6.js";
|
|
5
|
+
import {
|
|
6
|
+
useDataViewsCopy
|
|
7
|
+
} from "./chunk-KHG57NAE.js";
|
|
8
|
+
import {
|
|
9
|
+
EN_US_DATA_VIEWS_COPY
|
|
10
|
+
} from "./chunk-ARGVUTTL.js";
|
|
11
|
+
import {
|
|
12
|
+
sxRem
|
|
13
|
+
} from "./chunk-YKCAJ2TN.js";
|
|
14
|
+
|
|
15
|
+
// src/components/data-display/DataViews/data-views-preset-chips.tsx
|
|
16
|
+
import Box from "@mui/material/Box/index.js";
|
|
17
|
+
import TextField from "@mui/material/TextField/index.js";
|
|
18
|
+
import { useTheme } from "@mui/material/styles/index.js";
|
|
19
|
+
import { useLayoutEffect, useRef, useState } from "react";
|
|
20
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
21
|
+
function PresetChip({
|
|
22
|
+
preset,
|
|
23
|
+
active,
|
|
24
|
+
onSelect,
|
|
25
|
+
testId
|
|
26
|
+
}) {
|
|
27
|
+
return /* @__PURE__ */ jsx(
|
|
28
|
+
Box,
|
|
29
|
+
{
|
|
30
|
+
component: "button",
|
|
31
|
+
type: "button",
|
|
32
|
+
onClick: onSelect,
|
|
33
|
+
"aria-pressed": active,
|
|
34
|
+
"data-testid": testId,
|
|
35
|
+
sx: {
|
|
36
|
+
px: 1.25,
|
|
37
|
+
py: 0.5,
|
|
38
|
+
border: 1,
|
|
39
|
+
borderStyle: "solid",
|
|
40
|
+
borderColor: active ? "primary.main" : "divider",
|
|
41
|
+
borderRadius: 999,
|
|
42
|
+
bgcolor: active ? "action.selected" : "background.paper",
|
|
43
|
+
color: active ? "primary.main" : "text.secondary",
|
|
44
|
+
cursor: "pointer",
|
|
45
|
+
font: "inherit",
|
|
46
|
+
fontSize: sxRem(12),
|
|
47
|
+
fontWeight: 600,
|
|
48
|
+
whiteSpace: "nowrap",
|
|
49
|
+
overflow: "hidden",
|
|
50
|
+
textOverflow: "ellipsis",
|
|
51
|
+
minWidth: 0,
|
|
52
|
+
"&:hover": { borderColor: active ? "primary.main" : "text.primary" }
|
|
53
|
+
},
|
|
54
|
+
children: preset.label
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
var MEASURE_SX = {
|
|
59
|
+
display: "inline-block",
|
|
60
|
+
px: 1.25,
|
|
61
|
+
border: 1,
|
|
62
|
+
font: "inherit",
|
|
63
|
+
fontSize: sxRem(12),
|
|
64
|
+
fontWeight: 600,
|
|
65
|
+
whiteSpace: "nowrap"
|
|
66
|
+
};
|
|
67
|
+
function presetsFitOneLine(width, widest, count, gap) {
|
|
68
|
+
if (width === null) return true;
|
|
69
|
+
return widest * count + gap * (count - 1) <= width;
|
|
70
|
+
}
|
|
71
|
+
function useElementWidth(ref) {
|
|
72
|
+
const [width, setWidth] = useState(null);
|
|
73
|
+
useLayoutEffect(() => {
|
|
74
|
+
const element = ref.current;
|
|
75
|
+
if (element === null || typeof ResizeObserver === "undefined") return void 0;
|
|
76
|
+
const observer = new ResizeObserver((entries) => {
|
|
77
|
+
const measured = entries[0]?.contentRect.width;
|
|
78
|
+
if (measured !== void 0 && measured > 0) setWidth(measured);
|
|
79
|
+
});
|
|
80
|
+
observer.observe(element);
|
|
81
|
+
return () => observer.disconnect();
|
|
82
|
+
}, [ref]);
|
|
83
|
+
return width;
|
|
84
|
+
}
|
|
85
|
+
function useWidestLabel(ref, labels, width) {
|
|
86
|
+
const [widest, setWidest] = useState(0);
|
|
87
|
+
useLayoutEffect(() => {
|
|
88
|
+
const measure = () => {
|
|
89
|
+
const spans = ref.current?.querySelectorAll("[data-preset-measure]") ?? [];
|
|
90
|
+
setWidest(Math.max(0, ...Array.from(spans, (span) => span.offsetWidth + 1)));
|
|
91
|
+
};
|
|
92
|
+
measure();
|
|
93
|
+
let live = true;
|
|
94
|
+
void document.fonts?.ready.then(() => {
|
|
95
|
+
if (live) measure();
|
|
96
|
+
});
|
|
97
|
+
return () => {
|
|
98
|
+
live = false;
|
|
99
|
+
};
|
|
100
|
+
}, [ref, labels, width]);
|
|
101
|
+
return widest;
|
|
102
|
+
}
|
|
103
|
+
function PresetSelect({
|
|
104
|
+
presets,
|
|
105
|
+
value,
|
|
106
|
+
onChange,
|
|
107
|
+
testId
|
|
108
|
+
}) {
|
|
109
|
+
const copy = useDataViewsCopy().filters.presetSelect ?? EN_US_DATA_VIEWS_COPY.filters.presetSelect;
|
|
110
|
+
const active = presets.find((preset) => isPresetActive(preset, value))?.id ?? "";
|
|
111
|
+
return /* @__PURE__ */ jsxs(
|
|
112
|
+
TextField,
|
|
113
|
+
{
|
|
114
|
+
select: true,
|
|
115
|
+
size: "small",
|
|
116
|
+
fullWidth: true,
|
|
117
|
+
label: copy?.label,
|
|
118
|
+
value: active,
|
|
119
|
+
onChange: (event) => {
|
|
120
|
+
const picked = presets.find((preset) => preset.id === event.target.value);
|
|
121
|
+
onChange(picked ? resolvePreset(picked) : {});
|
|
122
|
+
},
|
|
123
|
+
SelectProps: { native: true },
|
|
124
|
+
InputLabelProps: { shrink: true },
|
|
125
|
+
inputProps: { "data-testid": `${testId}-presets-select` },
|
|
126
|
+
children: [
|
|
127
|
+
/* @__PURE__ */ jsx("option", { value: "", children: copy?.none }),
|
|
128
|
+
presets.map((preset) => /* @__PURE__ */ jsx("option", { value: preset.id, children: preset.label }, preset.id))
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
function RangePresets({
|
|
134
|
+
presets,
|
|
135
|
+
value,
|
|
136
|
+
onChange,
|
|
137
|
+
testId
|
|
138
|
+
}) {
|
|
139
|
+
const theme = useTheme();
|
|
140
|
+
const box = useRef(null);
|
|
141
|
+
const width = useElementWidth(box);
|
|
142
|
+
const widest = useWidestLabel(box, presets.map((preset) => preset.label).join("|"), width);
|
|
143
|
+
if (presets.length === 0) return null;
|
|
144
|
+
const fits = presetsFitOneLine(width, widest, presets.length, parseFloat(theme.spacing(0.75)));
|
|
145
|
+
return /* @__PURE__ */ jsxs(Box, { ref: box, sx: { position: "relative", minWidth: 0 }, children: [
|
|
146
|
+
/* @__PURE__ */ jsx(
|
|
147
|
+
Box,
|
|
148
|
+
{
|
|
149
|
+
"aria-hidden": "true",
|
|
150
|
+
sx: { position: "absolute", top: 0, left: 0, width: "max-content", height: 0, overflow: "hidden", visibility: "hidden" },
|
|
151
|
+
children: presets.map((preset) => /* @__PURE__ */ jsx(Box, { component: "span", "data-preset-measure": "", sx: MEASURE_SX, children: preset.label }, preset.id))
|
|
152
|
+
}
|
|
153
|
+
),
|
|
154
|
+
fits ? /* @__PURE__ */ jsx(
|
|
155
|
+
Box,
|
|
156
|
+
{
|
|
157
|
+
"data-testid": `${testId}-presets`,
|
|
158
|
+
sx: { display: "grid", gridTemplateColumns: `repeat(${presets.length}, minmax(0, 1fr))`, gap: 0.75 },
|
|
159
|
+
children: presets.map((preset) => {
|
|
160
|
+
const active = isPresetActive(preset, value);
|
|
161
|
+
return /* @__PURE__ */ jsx(
|
|
162
|
+
PresetChip,
|
|
163
|
+
{
|
|
164
|
+
preset,
|
|
165
|
+
active,
|
|
166
|
+
onSelect: () => onChange(active ? {} : resolvePreset(preset)),
|
|
167
|
+
testId: `${testId}-preset-${preset.id}`
|
|
168
|
+
},
|
|
169
|
+
preset.id
|
|
170
|
+
);
|
|
171
|
+
})
|
|
172
|
+
}
|
|
173
|
+
) : /* @__PURE__ */ jsx(Box, { "data-testid": `${testId}-presets`, children: /* @__PURE__ */ jsx(PresetSelect, { presets, value, onChange, testId }) })
|
|
174
|
+
] });
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export {
|
|
178
|
+
presetsFitOneLine,
|
|
179
|
+
RangePresets
|
|
180
|
+
};
|
|
181
|
+
//# sourceMappingURL=chunk-LZNUBQ5I.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DataViews/data-views-preset-chips.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * THE ONE-CLICK WINDOWS ABOVE A RANGE'S `De`/`Até` INPUTS.\n *\n * \"Filter by last month\" is two date pickers, four gestures and a mental\n * calculation of which day the month ended on. It is also the overwhelmingly\n * common case. So the common windows get a chip each, and the inputs stay for\n * the windows nobody could enumerate.\n *\n * Clicking an active preset CLEARS it. A chip that reads as pressed and does\n * nothing when pressed again is a dead control, and the alternative — hunting\n * for the pill's ✕ — is the gesture this row exists to remove.\n *\n * ONE LINE at every width (ADR 0190 in the host, FUT-4144): the presets are\n * the options of one question, and as wrapping chips \"Este ano\" fell onto a\n * second line at 320, 390 and 600, where it read as a second question. Where\n * the row is wide enough they are a segmented control of equal parts; where it\n * is not, the same question is a select.\n */\nimport Box from \"@mui/material/Box/index.js\";\nimport TextField from \"@mui/material/TextField/index.js\";\nimport { useTheme } from \"@mui/material/styles/index.js\";\nimport React, { useLayoutEffect, useRef, useState, type RefObject } from \"react\";\n\nimport { EN_US_DATA_VIEWS_COPY } from \"../../../en-US.data-display\";\nimport { useDataViewsCopy } from \"./data-views-copy-context\";\nimport { isPresetActive, resolvePreset } from \"./data-views-range-presets\";\nimport type { RangePreset, RangeValue } from \"./data-views-types\";\nimport { sxRem } from \"../../../tokens/relative\";\n\n/** One preset, styled as the same pill-shaped chip the filter bar uses. */\nfunction PresetChip({\n preset,\n active,\n onSelect,\n testId,\n}: {\n preset: RangePreset;\n active: boolean;\n onSelect: () => void;\n testId: string;\n}): React.JSX.Element {\n return (\n <Box\n component=\"button\"\n type=\"button\"\n onClick={onSelect}\n aria-pressed={active}\n data-testid={testId}\n sx={{\n px: 1.25,\n py: 0.5,\n border: 1,\n borderStyle: \"solid\",\n borderColor: active ? \"primary.main\" : \"divider\",\n borderRadius: 999,\n bgcolor: active ? \"action.selected\" : \"background.paper\",\n color: active ? \"primary.main\" : \"text.secondary\",\n cursor: \"pointer\",\n font: \"inherit\",\n fontSize: sxRem(12),\n fontWeight: 600,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n minWidth: 0,\n \"&:hover\": { borderColor: active ? \"primary.main\" : \"text.primary\" },\n }}\n >\n {preset.label}\n </Box>\n );\n}\n\n/** The chip look, for the hidden row that measures each label at its natural width. */\nconst MEASURE_SX = {\n display: \"inline-block\",\n px: 1.25,\n border: 1,\n font: \"inherit\",\n fontSize: sxRem(12),\n fontWeight: 600,\n whiteSpace: \"nowrap\",\n} as const;\n\n/**\n * Whether `count` equal parts, each as wide as the widest label, fit `width`\n * with `gap` between them. Unmeasured (`null`: the server, jsdom) counts as\n * fitting, so the row renders the buttons it always rendered.\n */\nexport function presetsFitOneLine(width: number | null, widest: number, count: number, gap: number): boolean {\n if (width === null) return true;\n return widest * count + gap * (count - 1) <= width;\n}\n\n/** The element's own width as it changes; `null` until measured, or where nothing can measure. */\nfunction useElementWidth(ref: RefObject<HTMLElement | null>): number | null {\n const [width, setWidth] = useState<number | null>(null);\n useLayoutEffect(() => {\n const element = ref.current;\n if (element === null || typeof ResizeObserver === \"undefined\") return undefined;\n const observer = new ResizeObserver((entries) => {\n const measured = entries[0]?.contentRect.width;\n if (measured !== undefined && measured > 0) setWidth(measured);\n });\n observer.observe(element);\n return () => observer.disconnect();\n }, [ref]);\n return width;\n}\n\n/**\n * The widest label at the chip's own type, padding and border, read off the\n * hidden measuring row.\n *\n * `offsetWidth`, the LAYOUT width, never the bounding box: a popover grows in\n * from 75% scale, and a box read during that transition is a quarter short —\n * which judged \"Acima de R$ 10\" to fit a third of the \"Mais\" panel and cut it\n * to \"Acima de …\" (FUT-4144 UI review round 2). Measured again when the row's\n * width changes and once the web fonts have loaded, since a fallback face is\n * narrower than the one the parts will be drawn in.\n */\nfunction useWidestLabel(ref: RefObject<HTMLElement | null>, labels: string, width: number | null): number {\n const [widest, setWidest] = useState(0);\n useLayoutEffect(() => {\n const measure = (): void => {\n const spans = ref.current?.querySelectorAll<HTMLElement>(\"[data-preset-measure]\") ?? [];\n // +1: `offsetWidth` rounds, so a label laid out at 80.4px reads 80 and\n // would be judged to fit half a pixel short, behind an ellipsis.\n setWidest(Math.max(0, ...Array.from(spans, (span) => span.offsetWidth + 1)));\n };\n measure();\n let live = true;\n void document.fonts?.ready.then(() => {\n if (live) measure();\n });\n return () => {\n live = false;\n };\n }, [ref, labels, width]);\n return widest;\n}\n\n/** The same question as a select, for a row too narrow for its parts. */\nfunction PresetSelect({\n presets,\n value,\n onChange,\n testId,\n}: {\n presets: RangePreset[];\n value: RangeValue;\n onChange: (range: RangeValue) => void;\n testId: string;\n}): React.JSX.Element {\n const copy = useDataViewsCopy().filters.presetSelect ?? EN_US_DATA_VIEWS_COPY.filters.presetSelect;\n const active = presets.find((preset) => isPresetActive(preset, value))?.id ?? \"\";\n return (\n <TextField\n select\n size=\"small\"\n fullWidth\n label={copy?.label}\n value={active}\n onChange={(event) => {\n const picked = presets.find((preset) => preset.id === event.target.value);\n // \"None\" is the select's way of tapping the active chip again.\n onChange(picked ? resolvePreset(picked) : {});\n }}\n SelectProps={{ native: true }}\n InputLabelProps={{ shrink: true }}\n inputProps={{ \"data-testid\": `${testId}-presets-select` }}\n >\n <option value=\"\">{copy?.none}</option>\n {presets.map((preset) => (\n <option key={preset.id} value={preset.id}>\n {preset.label}\n </option>\n ))}\n </TextField>\n );\n}\n\n/**\n * The preset row. Renders nothing when a field declares none, so a numeric\n * range without host-configured windows keeps the popover it had.\n *\n * Carries no outer margin — the three surfaces that host it (the pill's\n * popover, the slide-in panel, the \"Mais\" overflow) each sit it in a different\n * stack, and a baked-in margin would be wrong in two of them.\n *\n * What is measured is the row's OWN width, not the window's: the same row\n * lives in a 670px popover, a 300px panel and a phone-wide sheet.\n */\nexport function RangePresets({\n presets,\n value,\n onChange,\n testId,\n}: {\n presets: RangePreset[];\n value: RangeValue;\n onChange: (range: RangeValue) => void;\n testId: string;\n}): React.JSX.Element | null {\n const theme = useTheme();\n const box = useRef<HTMLDivElement>(null);\n const width = useElementWidth(box);\n const widest = useWidestLabel(box, presets.map((preset) => preset.label).join(\"|\"), width);\n if (presets.length === 0) return null;\n const fits = presetsFitOneLine(width, widest, presets.length, parseFloat(theme.spacing(0.75)));\n return (\n <Box ref={box} sx={{ position: \"relative\", minWidth: 0 }}>\n <Box\n aria-hidden=\"true\"\n sx={{ position: \"absolute\", top: 0, left: 0, width: \"max-content\", height: 0, overflow: \"hidden\", visibility: \"hidden\" }}\n >\n {presets.map((preset) => (\n <Box key={preset.id} component=\"span\" data-preset-measure=\"\" sx={MEASURE_SX}>\n {preset.label}\n </Box>\n ))}\n </Box>\n {fits ? (\n <Box\n data-testid={`${testId}-presets`}\n sx={{ display: \"grid\", gridTemplateColumns: `repeat(${presets.length}, minmax(0, 1fr))`, gap: 0.75 }}\n >\n {presets.map((preset) => {\n const active = isPresetActive(preset, value);\n return (\n <PresetChip\n key={preset.id}\n preset={preset}\n active={active}\n onSelect={() => onChange(active ? {} : resolvePreset(preset))}\n testId={`${testId}-preset-${preset.id}`}\n />\n );\n })}\n </Box>\n ) : (\n <Box data-testid={`${testId}-presets`}>\n <PresetSelect presets={presets} value={value} onChange={onChange} testId={testId} />\n </Box>\n )}\n </Box>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EN_US_CAROUSEL_COPY
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ARGVUTTL.js";
|
|
4
4
|
import {
|
|
5
5
|
withDefaults
|
|
6
6
|
} from "./chunk-HPK33ACY.js";
|
|
@@ -330,4 +330,4 @@ export {
|
|
|
330
330
|
CarouselArrows,
|
|
331
331
|
CarouselThumbnails
|
|
332
332
|
};
|
|
333
|
-
//# sourceMappingURL=chunk-
|
|
333
|
+
//# sourceMappingURL=chunk-M2M4IDFU.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-H2J2MTRE.js";
|
|
4
4
|
import {
|
|
5
5
|
EN_US_MAP_PREVIEW_COPY
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-ARGVUTTL.js";
|
|
7
7
|
import {
|
|
8
8
|
rem
|
|
9
9
|
} from "./chunk-YKCAJ2TN.js";
|
|
@@ -46,4 +46,4 @@ export {
|
|
|
46
46
|
resolveMapPreviewProps,
|
|
47
47
|
glassStyles
|
|
48
48
|
};
|
|
49
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-M5Y42AZ4.js.map
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useDataViewsCopy
|
|
3
|
+
} from "./chunk-KHG57NAE.js";
|
|
4
|
+
import {
|
|
5
|
+
toDayString,
|
|
6
|
+
toLocalDay
|
|
7
|
+
} from "./chunk-SUTOAW7I.js";
|
|
8
|
+
import {
|
|
9
|
+
Calendar
|
|
10
|
+
} from "./chunk-FYAW5GBF.js";
|
|
11
|
+
import {
|
|
12
|
+
EN_US_DATA_VIEWS_COPY
|
|
13
|
+
} from "./chunk-ARGVUTTL.js";
|
|
14
|
+
import {
|
|
15
|
+
rem,
|
|
16
|
+
sxRem
|
|
17
|
+
} from "./chunk-YKCAJ2TN.js";
|
|
18
|
+
|
|
19
|
+
// src/components/data-display/DataViews/data-views-range-calendar.tsx
|
|
20
|
+
import Box from "@mui/material/Box/index.js";
|
|
21
|
+
import Typography from "@mui/material/Typography/index.js";
|
|
22
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
23
|
+
var CALENDAR_CLASS = "data-views-range-calendar";
|
|
24
|
+
var ROOT_SX = (theme) => ({
|
|
25
|
+
mt: { xs: 1, sm: 1.5 },
|
|
26
|
+
// Below `sm` the caption and the weekday row give up their bottom margins,
|
|
27
|
+
// so the whole popover fits a 320×568 screen under its pill (FUT-4144).
|
|
28
|
+
'& :has(> * > [data-testid="calendar-month-select"])': { mb: { xs: 0.5, sm: 2 } },
|
|
29
|
+
'& :has(> [role="columnheader"])': { mb: { xs: 0, sm: 1 } },
|
|
30
|
+
'& [role="columnheader"]': { height: { xs: rem(theme, 24), sm: rem(theme, 32) } },
|
|
31
|
+
// The days carry no column gap of their own (`Calendar`, FUT-4162), so the
|
|
32
|
+
// seven columns are what a day's 40px target is carved from below `sm`; the
|
|
33
|
+
// range band and its round endpoints are the Calendar's, untouched here.
|
|
34
|
+
// The month/year caption on ONE row at 320: the selectors give up the slack
|
|
35
|
+
// around their text before the arrows are pushed onto a second row.
|
|
36
|
+
'& [data-testid="calendar-month-select"], & [data-testid="calendar-year-select"]': { px: 0.5, minWidth: 0 },
|
|
37
|
+
[`& .${CALENDAR_CLASS}`]: {
|
|
38
|
+
p: 0,
|
|
39
|
+
boxShadow: "none",
|
|
40
|
+
backgroundColor: "transparent",
|
|
41
|
+
backgroundImage: "none",
|
|
42
|
+
// A tapped day already rings itself; the whole grid framed in the primary
|
|
43
|
+
// colour after every tap is noise in a popover. The frame stays for the
|
|
44
|
+
// keyboard reaching the grid itself.
|
|
45
|
+
"&:focus-within": { outline: "none" },
|
|
46
|
+
"&:focus-visible": {
|
|
47
|
+
outline: (theme2) => `${rem(theme2, 2)} solid`,
|
|
48
|
+
outlineColor: "primary.main",
|
|
49
|
+
outlineOffset: sxRem(2)
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
function rangeOf(value) {
|
|
54
|
+
return {
|
|
55
|
+
start: toLocalDay(typeof value.min === "string" ? value.min : null),
|
|
56
|
+
end: toLocalDay(typeof value.max === "string" ? value.max : null)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function rangeFromCalendar(previous, picked) {
|
|
60
|
+
const min = dayOf(picked.start);
|
|
61
|
+
const max = dayOf(picked.end) ?? keptEnd(previous, min);
|
|
62
|
+
return { ...min ? { min } : {}, ...max ? { max } : {} };
|
|
63
|
+
}
|
|
64
|
+
var dayOf = (date) => date ? toDayString(date) : void 0;
|
|
65
|
+
function keptEnd(previous, min) {
|
|
66
|
+
if (previous.min != null || typeof previous.max !== "string") return void 0;
|
|
67
|
+
return min && min <= previous.max ? previous.max : void 0;
|
|
68
|
+
}
|
|
69
|
+
function openingMonth(value, months) {
|
|
70
|
+
const end = toLocalDay(typeof value.max === "string" ? value.max : null);
|
|
71
|
+
const anchor = end ?? /* @__PURE__ */ new Date();
|
|
72
|
+
return new Date(anchor.getFullYear(), anchor.getMonth() - (months > 1 ? 1 : 0), 1);
|
|
73
|
+
}
|
|
74
|
+
function DayRangeCalendar({
|
|
75
|
+
fieldLabel,
|
|
76
|
+
value,
|
|
77
|
+
onChange,
|
|
78
|
+
months,
|
|
79
|
+
viewKey,
|
|
80
|
+
testId
|
|
81
|
+
}) {
|
|
82
|
+
const copy = useDataViewsCopy().filters.dayCalendar ?? EN_US_DATA_VIEWS_COPY.filters.dayCalendar;
|
|
83
|
+
const range = rangeOf(value);
|
|
84
|
+
const pick = (picked) => onChange(rangeFromCalendar(value, picked));
|
|
85
|
+
const waitingForEnd = Boolean(range.start && !range.end);
|
|
86
|
+
return /* @__PURE__ */ jsxs(Box, { sx: ROOT_SX, "data-testid": `${testId}-calendar`, children: [
|
|
87
|
+
/* @__PURE__ */ jsx(
|
|
88
|
+
Calendar,
|
|
89
|
+
{
|
|
90
|
+
ariaLabel: copy.label(fieldLabel),
|
|
91
|
+
className: CALENDAR_CLASS,
|
|
92
|
+
selectionMode: "range",
|
|
93
|
+
locale: copy.locale,
|
|
94
|
+
labels: copy.caption,
|
|
95
|
+
firstDayOfWeek: 0,
|
|
96
|
+
numberOfMonths: months,
|
|
97
|
+
showOutsideDays: months === 1,
|
|
98
|
+
captionLayout: months > 1 ? "arrows" : "selectors",
|
|
99
|
+
defaultMonth: openingMonth(value, months),
|
|
100
|
+
range,
|
|
101
|
+
onIntermediateRangeChange: pick
|
|
102
|
+
},
|
|
103
|
+
viewKey
|
|
104
|
+
),
|
|
105
|
+
/* @__PURE__ */ jsx(
|
|
106
|
+
Typography,
|
|
107
|
+
{
|
|
108
|
+
component: "p",
|
|
109
|
+
"aria-live": "polite",
|
|
110
|
+
"data-testid": `${testId}-calendar-hint`,
|
|
111
|
+
sx: { mt: { xs: 0.25, sm: 1 }, fontSize: sxRem(12), color: "text.secondary" },
|
|
112
|
+
children: waitingForEnd ? copy.pickEnd : copy.pickStart
|
|
113
|
+
}
|
|
114
|
+
)
|
|
115
|
+
] });
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export {
|
|
119
|
+
rangeFromCalendar,
|
|
120
|
+
DayRangeCalendar
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=chunk-MICX23P4.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/** 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\nexport function DayRangeCalendar({\n fieldLabel,\n value,\n onChange,\n months,\n viewKey,\n testId,\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 <Typography\n component=\"p\"\n aria-live=\"polite\"\n data-testid={`${testId}-calendar-hint`}\n sx={{ mt: { xs: 0.25, sm: 1 }, fontSize: sxRem(12), color: 'text.secondary' }}\n >\n {waitingForEnd ? copy.pickEnd : copy.pickStart}\n </Typography>\n </Box>\n );\n}\n"],"mappings":"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","names":["theme"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isoToMasked
|
|
3
|
+
} from "./chunk-L6YTVXGN.js";
|
|
1
4
|
import {
|
|
2
5
|
dayCount,
|
|
3
6
|
isAfterDay
|
|
4
7
|
} from "./chunk-SUTOAW7I.js";
|
|
5
|
-
import {
|
|
6
|
-
isoToMasked
|
|
7
|
-
} from "./chunk-72HOUWAW.js";
|
|
8
8
|
import {
|
|
9
9
|
EN_US_UI_LABELS
|
|
10
10
|
} from "./chunk-XOXXG7Q5.js";
|
|
@@ -65,4 +65,4 @@ export {
|
|
|
65
65
|
resolveQuickRanges,
|
|
66
66
|
activeQuickRangeId
|
|
67
67
|
};
|
|
68
|
-
//# sourceMappingURL=chunk-
|
|
68
|
+
//# sourceMappingURL=chunk-MPWA55CF.js.map
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ClearAllControl,
|
|
3
|
-
CloseSearchControl
|
|
4
|
-
|
|
3
|
+
CloseSearchControl,
|
|
4
|
+
useBarFrozen
|
|
5
|
+
} from "./chunk-T7OIVPCO.js";
|
|
5
6
|
import {
|
|
6
7
|
MoreFilters
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JHWEL4NX.js";
|
|
8
9
|
import {
|
|
9
10
|
PillControl
|
|
10
11
|
} from "./chunk-AJ6KFHEE.js";
|
|
11
|
-
import {
|
|
12
|
-
QuickChip
|
|
13
|
-
} from "./chunk-AT6UKTH4.js";
|
|
14
12
|
import {
|
|
15
13
|
isQuickActive
|
|
16
14
|
} from "./chunk-KYUEO2IO.js";
|
|
17
15
|
import {
|
|
18
16
|
RangePill
|
|
19
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-FI2CQOGC.js";
|
|
18
|
+
import {
|
|
19
|
+
QuickChip
|
|
20
|
+
} from "./chunk-AT6UKTH4.js";
|
|
20
21
|
import {
|
|
21
22
|
CollapsedSearch,
|
|
22
23
|
InlineKeyword
|
|
@@ -201,12 +202,13 @@ function FilterSlots({
|
|
|
201
202
|
testIdPrefix,
|
|
202
203
|
clearKey
|
|
203
204
|
}) {
|
|
205
|
+
const clear = useBarFrozen(onControlOpenChange);
|
|
204
206
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
205
207
|
inline.map((field) => /* @__PURE__ */ jsx(
|
|
206
208
|
InlineControl,
|
|
207
209
|
{
|
|
208
210
|
field,
|
|
209
|
-
onOpenChange:
|
|
211
|
+
onOpenChange: clear.onOpenChange,
|
|
210
212
|
pills,
|
|
211
213
|
ranges,
|
|
212
214
|
onTogglePill,
|
|
@@ -221,7 +223,7 @@ function FilterSlots({
|
|
|
221
223
|
MoreFilters,
|
|
222
224
|
{
|
|
223
225
|
clearKey,
|
|
224
|
-
onOpenChange:
|
|
226
|
+
onOpenChange: clear.onOpenChange,
|
|
225
227
|
onClearAll,
|
|
226
228
|
anyApplied: activeFilterCount > 0,
|
|
227
229
|
compact: compactControls,
|
|
@@ -239,6 +241,7 @@ function FilterSlots({
|
|
|
239
241
|
{
|
|
240
242
|
onClearAll,
|
|
241
243
|
compact: compactControls,
|
|
244
|
+
frozen: clear.frozen,
|
|
242
245
|
testIdPrefix
|
|
243
246
|
}
|
|
244
247
|
)
|
|
@@ -248,4 +251,4 @@ function FilterSlots({
|
|
|
248
251
|
export {
|
|
249
252
|
InlineFilterControls
|
|
250
253
|
};
|
|
251
|
-
//# sourceMappingURL=chunk-
|
|
254
|
+
//# sourceMappingURL=chunk-NK6O4NE4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DataViews/data-views-inline-bar.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * The INLINE filter bar — the horizontal row of controls a grid renders instead\n * of the slide-in panel on a wide screen (`inlineFilters`): the compact keyword\n * box, one pill per facet, one pill per range, and \"Mais N\" for whatever had no\n * room.\n *\n * There is no \"Filtros ativos\" row beneath it. Listing every applied filter a\n * second time, under the controls already showing them, was the same\n * information twice — and put the ✕ that removes a filter somewhere other than\n * the control that applied it. Each pill carries its own.\n *\n * Split from `data-views-filter-panel` because they are two surfaces, not one:\n * the panel is a column of stacked fields, this is a row of pills, and the only\n * thing they share is the prop shape they are both driven by.\n */\nimport Box from \"@mui/material/Box/index.js\";\nimport { useState } from \"react\";\n\n\nimport { ClearAllControl, CloseSearchControl, useBarFrozen } from \"./data-views-bar-controls\";\nimport type { GridFilterPanelProps } from \"./data-views-filter-panel\";\nimport { MoreFilters } from \"./data-views-more-filters\";\nimport type { OverflowField, OverflowSplit } from \"./data-views-overflow\";\nimport { CollapsedSearch, InlineKeyword } from \"./data-views-search\";\nimport { PillControl } from \"./data-views-category-pill\";\nimport { isQuickActive } from \"./data-views-overflow\";\nimport { QuickChip } from \"./data-views-quick-chip\";\nimport { RangePill } from \"./data-views-range-pill\";\nimport type { QuickFilterConfig, RangeValue } from \"./data-views-types\";\n\n\n\n/* ── Inline (second-line) filter bar ─────────────────────────────────────── */\n\n/** The search, in whichever of its two forms the measurement asked for. */\nfunction SearchSlot({\n search,\n onSearchChange,\n collapsed,\n expanded,\n fill,\n onOpen,\n onEscape,\n testIdPrefix,\n}: {\n search: string;\n onSearchChange: (value: string) => void;\n collapsed: boolean;\n expanded: boolean;\n /** The box owns the cluster alone, so it may shrink below its usual floor. */\n fill: boolean;\n onOpen: () => void;\n onEscape: () => void;\n testIdPrefix: string;\n}): React.JSX.Element {\n if (collapsed) {\n return (\n <CollapsedSearch active={search !== \"\"} onOpen={onOpen} testId={`${testIdPrefix}-search-all`} />\n );\n }\n return (\n <InlineKeyword\n value={search}\n onChange={onSearchChange}\n testId={`${testIdPrefix}-search-all`}\n autoFocus={expanded}\n onEscape={onEscape}\n fill={fill}\n />\n );\n}\n\n/** Props the inline bar needs (the slide-in panel's, minus its own chrome). */\ntype InlineFilterBarProps<T extends Record<string, unknown>> = Pick<\n GridFilterPanelProps<T>,\n | \"testIdPrefix\"\n | \"search\"\n | \"fields\"\n | \"rangeFields\"\n | \"pills\"\n | \"ranges\"\n | \"onSearchChange\"\n | \"onTogglePill\"\n | \"onChangeRange\"\n | \"onClearField\"\n | \"onClearAll\"\n> & {\n /** The measured degradation state, computed once in `GridShell`. */\n split: OverflowSplit<T>;\n};\n\n/**\n * One filter control on the bar: a multi-select pill or a min/max range. The\n * two are the same thing from the bar's point of view — a labelled control that\n * writes into the view state — so which one to build is decided here rather\n * than in the bar's own render.\n */\nfunction InlineControl<T extends Record<string, unknown>>({\n field,\n pills,\n ranges,\n onTogglePill,\n onChangeRange,\n onClearField,\n onToggleQuick,\n onOpenChange,\n testIdPrefix,\n}: {\n field: OverflowField<T>;\n onToggleQuick?: (quick: QuickFilterConfig) => void;\n onOpenChange?: (open: boolean) => void;\n pills: Record<string, string[]>;\n ranges: Record<string, RangeValue>;\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onChangeRange: (fieldId: string, range: RangeValue) => void;\n onClearField: (fieldId: string) => void;\n testIdPrefix: string;\n}): React.JSX.Element | null {\n if (field.group === \"quick\" && field.quick) {\n const quick = field.quick;\n return (\n <QuickChip\n quick={quick}\n active={isQuickActive(quick, pills)}\n onToggle={() => onToggleQuick?.(quick)}\n testIdPrefix={testIdPrefix}\n />\n );\n }\n if (field.group === \"pill\" && field.pill) {\n return (\n <PillControl\n fieldId={field.id}\n pill={field.pill}\n selected={pills[field.id] ?? []}\n onTogglePill={onTogglePill}\n onClearField={onClearField}\n onOpenChange={onOpenChange}\n testIdPrefix={testIdPrefix}\n />\n );\n }\n if (field.group === \"range\" && field.range) {\n return (\n <RangePill\n field={field.range}\n value={ranges[field.id] ?? {}}\n onChange={(range) => onChangeRange(field.id, range)}\n onOpenChange={onOpenChange}\n testIdPrefix={testIdPrefix}\n />\n );\n }\n return null;\n}\n\n/**\n * WHICH OF THE SEARCH'S THREE STATES THE BAR IS IN.\n *\n * Resting, expanded-and-sharing, or expanded-and-owning-the-cluster. They were\n * one boolean until a phone showed why they are not:\n *\n * - `fill` — an expanded box drops its usual 200px floor and takes whatever the\n * cluster has. That floor is right for a box that lives on the row; it is\n * wrong for one expanded into a cluster the ladder sized for an icon, where\n * insisting on it made the row scroll sideways (154px of overhang at 320px,\n * 84px at 390px, 42px at 500px).\n * - `takesOver` — the narrower case, where shrinking has run out of road and\n * what is left would be too small to read. Only then do the filters stand\n * down. A large phone has room to share, and evicting them there cost the\n * operator their filters for nothing.\n *\n * Once CLICKED the box stays open until Escape or its ✕, so typing is never\n * interrupted by a re-measure.\n */\nfunction useSearchMode<T extends Record<string, unknown>>(\n split: OverflowSplit<T>,\n): {\n showBox: boolean;\n expanded: boolean;\n fill: boolean;\n takesOver: boolean;\n open: () => void;\n close: () => void;\n} {\n const [searchOpen, setSearchOpen] = useState(false);\n return {\n showBox: !split.searchCollapsed || searchOpen,\n expanded: searchOpen,\n fill: split.searchCollapsed && searchOpen,\n takesOver: searchOpen && split.searchTakeover,\n open: () => setSearchOpen(true),\n close: () => setSearchOpen(false),\n };\n}\n\n/**\n * The filter CONTROLS alone — search, the fields that fit, and \"Mais N\" for the\n * ones that don't — with no row chrome of its own, because it is rendered ON\n * the toolbar line rather than under it (`ContentToolbar`'s `leadingControls`).\n *\n * The measurement driving the collapse lives on the toolbar ROW, not here —\n * see the note on `split` below.\n */\nexport function InlineFilterControls<T extends Record<string, unknown>>({\n testIdPrefix,\n pills,\n ranges,\n search,\n onSearchChange,\n onTogglePill,\n onChangeRange,\n onClearField,\n split,\n onClearAll,\n activeFilterCount,\n onControlOpenChange,\n onToggleQuick,\n clearKey,\n}: Omit<InlineFilterBarProps<T>, \"fields\" | \"rangeFields\"> & {\n /** Changes on every clear-all; the \"Mais\" fields are keyed on it (FUT-4144). */\n clearKey?: number;\n /** Presses or releases a quick chip — see `QuickFilterConfig`. */\n onToggleQuick?: (quick: QuickFilterConfig) => void;\n /** How many filters are applied — decides whether \"Limpar\" is on the bar at all. */\n activeFilterCount: number;\n /** Reports a control opening/closing so the shell can freeze the measurement. */\n onControlOpenChange?: (open: boolean) => void;\n}): React.JSX.Element {\n // MEASURED, not breakpointed — and measured ONCE, in the shell, because the\n // toolbar around it needs the same answer to drop its labels. The measured\n // element is the whole toolbar ROW (see `GridToolbar`), not this cluster:\n // `RESERVED` prices the counter and Exibir/Exportar, so measuring only the\n // controls would charge for that furniture a second time and collapse the\n // ladder while the row still had hundreds of free pixels.\n const { inline, overflow, compactControls, clearAllHidden } = split;\n const { showBox, expanded, fill, takesOver, open, close } = useSearchMode(split);\n return (\n <Box\n data-testid={`${testIdPrefix}-inline-filters`}\n sx={{\n display: \"flex\",\n flexWrap: \"nowrap\",\n alignItems: \"center\",\n gap: 1,\n minWidth: 0,\n // No squeezing: if the estimate over-packs, the row must overflow (and\n // the next measure sheds a control), not shrink labels to an ellipsis.\n \"& > *\": { flexShrink: 0 },\n }}\n >\n <SearchSlot\n search={search}\n onSearchChange={onSearchChange}\n collapsed={!showBox}\n expanded={expanded}\n fill={fill}\n onOpen={open}\n onEscape={close}\n testIdPrefix={testIdPrefix}\n />\n {takesOver && <CloseSearchControl onClose={close} testIdPrefix={testIdPrefix} />}\n {!takesOver && (\n <FilterSlots\n inline={inline}\n overflow={overflow}\n pills={pills}\n ranges={ranges}\n onTogglePill={onTogglePill}\n onChangeRange={onChangeRange}\n onClearField={onClearField}\n onToggleQuick={onToggleQuick}\n onClearAll={onClearAll}\n onControlOpenChange={onControlOpenChange}\n activeFilterCount={activeFilterCount}\n compactControls={compactControls}\n clearAllHidden={clearAllHidden}\n testIdPrefix={testIdPrefix}\n clearKey={clearKey}\n />\n )}\n </Box>\n );\n}\n\n/**\n * Everything to the right of the search: the fields that fit, \"Mais N\" for the\n * ones that don't, and \"Limpar\". Split out of `InlineFilterControls` only to\n * keep that function inside the size gate — the three are one cluster and the\n * order they render in is the order they shed in.\n */\nfunction FilterSlots<T extends Record<string, unknown>>({\n inline,\n overflow,\n pills,\n ranges,\n onTogglePill,\n onChangeRange,\n onClearField,\n onToggleQuick,\n onClearAll,\n onControlOpenChange,\n activeFilterCount,\n compactControls,\n clearAllHidden,\n testIdPrefix,\n clearKey,\n}: {\n clearKey?: number;\n onToggleQuick?: (quick: QuickFilterConfig) => void;\n inline: OverflowField<T>[];\n overflow: OverflowField<T>[];\n pills: Record<string, string[]>;\n ranges: Record<string, RangeValue>;\n onTogglePill: (fieldId: string, value: string, checked: boolean) => void;\n onChangeRange: (fieldId: string, range: RangeValue) => void;\n onClearField: (fieldId: string) => void;\n onClearAll: () => void;\n onControlOpenChange?: (open: boolean) => void;\n activeFilterCount: number;\n compactControls: boolean;\n clearAllHidden: boolean;\n testIdPrefix: string;\n}): React.JSX.Element {\n const clear = useBarFrozen(onControlOpenChange);\n return (\n <>\n {inline.map((field) => (\n <InlineControl\n key={field.id}\n field={field}\n onOpenChange={clear.onOpenChange}\n pills={pills}\n ranges={ranges}\n onTogglePill={onTogglePill}\n onChangeRange={onChangeRange}\n onClearField={onClearField}\n onToggleQuick={onToggleQuick}\n testIdPrefix={testIdPrefix}\n />\n ))}\n <MoreFilters\n clearKey={clearKey}\n onOpenChange={clear.onOpenChange}\n onClearAll={onClearAll}\n anyApplied={activeFilterCount > 0}\n compact={compactControls}\n fields={overflow}\n pills={pills}\n ranges={ranges}\n onTogglePill={onTogglePill}\n onChangeRange={onChangeRange}\n onToggleQuick={onToggleQuick}\n testIdPrefix={testIdPrefix}\n />\n {activeFilterCount > 0 && !clearAllHidden && (\n <ClearAllControl\n onClearAll={onClearAll}\n compact={compactControls}\n frozen={clear.frozen}\n testIdPrefix={testIdPrefix}\n />\n )}\n </>\n );\n}\n\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Alert
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QVDEGBME.js";
|
|
4
4
|
|
|
5
5
|
// src/components/data-display/CardKit/card-actions-context.tsx
|
|
6
6
|
import { createContext, useCallback, useContext, useState } from "react";
|
|
@@ -58,4 +58,4 @@ export {
|
|
|
58
58
|
CardActionsProvider,
|
|
59
59
|
useCardActions
|
|
60
60
|
};
|
|
61
|
-
//# sourceMappingURL=chunk-
|
|
61
|
+
//# sourceMappingURL=chunk-PJNIJIE6.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildChartContext
|
|
3
|
-
} from "./chunk-TZC6KIK2.js";
|
|
4
1
|
import {
|
|
5
2
|
ChartLegendContent,
|
|
6
3
|
ChartTooltipContent
|
|
7
4
|
} 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-QADTI63U.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MapPreview
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CJ6XXM4X.js";
|
|
4
4
|
|
|
5
5
|
// src/components/data-display/FleetMap/FleetCanvas.tsx
|
|
6
6
|
import Box from "@mui/material/Box/index.js";
|
|
@@ -38,4 +38,4 @@ function FleetCanvas({
|
|
|
38
38
|
export {
|
|
39
39
|
FleetCanvas
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=chunk-
|
|
41
|
+
//# sourceMappingURL=chunk-QAEO52Z4.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
statusMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-MPWA55CF.js";
|
|
4
4
|
import {
|
|
5
5
|
DayBoundInput
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-L6YTVXGN.js";
|
|
7
7
|
|
|
8
8
|
// src/components/form/DateRangePicker/DateRangePickerFields.tsx
|
|
9
9
|
import Box from "@mui/material/Box/index.js";
|
|
@@ -64,4 +64,4 @@ function DateRangeFields({
|
|
|
64
64
|
export {
|
|
65
65
|
DateRangeFields
|
|
66
66
|
};
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-QSOCOXVL.js.map
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AlertContent
|
|
3
|
+
} from "./chunk-7HZ36QDH.js";
|
|
1
4
|
import {
|
|
2
5
|
alertEmphasisStyles,
|
|
3
6
|
alertLayoutStyles,
|
|
@@ -6,17 +9,14 @@ import {
|
|
|
6
9
|
getColorFromTheme,
|
|
7
10
|
getVariantIcon
|
|
8
11
|
} from "./chunk-L5RS6QAT.js";
|
|
9
|
-
import {
|
|
10
|
-
resolveIconPlacement
|
|
11
|
-
} from "./chunk-QXUXO22M.js";
|
|
12
|
-
import {
|
|
13
|
-
AlertContent
|
|
14
|
-
} from "./chunk-7HZ36QDH.js";
|
|
15
12
|
import {
|
|
16
13
|
resolveAlertProps,
|
|
17
14
|
resolveAnnouncement,
|
|
18
15
|
testIdFor
|
|
19
16
|
} 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-QVDEGBME.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-QVDEGBME.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-RDCIST7P.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
defaultMessages,
|
|
4
4
|
resolveDayRange,
|
|
5
5
|
resolveQuickRanges
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MPWA55CF.js";
|
|
7
7
|
import {
|
|
8
8
|
toDayString,
|
|
9
9
|
todayIn
|
|
@@ -69,4 +69,4 @@ function useDateRangePicker({
|
|
|
69
69
|
export {
|
|
70
70
|
useDateRangePicker
|
|
71
71
|
};
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
72
|
+
//# sourceMappingURL=chunk-RZ3P4X2I.js.map
|