@12-apps/ui 6.46.1 → 6.47.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/Avatar/Avatar.js +3 -3
- package/dist/_internal/components/data-display/Avatar/Avatar.view.js +2 -2
- package/dist/_internal/components/data-display/Badge/Badge.js +2 -2
- package/dist/_internal/components/data-display/CardKit/use-remove-confirm.js +1 -1
- package/dist/_internal/components/data-display/CardKit/use-row-confirm.js +1 -1
- package/dist/_internal/components/data-display/Chart/Chart.js +4 -4
- package/dist/_internal/components/data-display/Chart/SpecChart.js +7 -7
- 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/Chart/chart-spec.js +2 -2
- package/dist/_internal/components/data-display/DataViews/DataViewsGrid.js +29 -29
- package/dist/_internal/components/data-display/DataViews/DataViewsTableBase.js +38 -38
- package/dist/_internal/components/data-display/DataViews/ManageViewsDialog.js +1 -1
- package/dist/_internal/components/data-display/DataViews/SaveViewModal.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card-geometry.js +4 -4
- package/dist/_internal/components/data-display/DataViews/base-list-card-slots.js +3 -3
- package/dist/_internal/components/data-display/DataViews/base-list-card.js +7 -7
- package/dist/_internal/components/data-display/DataViews/data-views-category-pill.js +9 -9
- 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 +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-grid-bodies.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-grid-parts.js +26 -26
- package/dist/_internal/components/data-display/DataViews/data-views-inline-bar.js +14 -14
- package/dist/_internal/components/data-display/DataViews/data-views-more-fields.js +12 -12
- package/dist/_internal/components/data-display/DataViews/data-views-more-filters.js +13 -13
- package/dist/_internal/components/data-display/DataViews/data-views-range-pill.js +2 -2
- 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 +2 -2
- package/dist/_internal/components/data-display/DataViews/data-views-table-parts.js +5 -5
- package/dist/_internal/components/data-display/DataViews/data-views-toolbar.js +2 -2
- package/dist/_internal/components/data-display/DataViews/list-card-rails.js +2 -2
- package/dist/_internal/components/data-display/DataViews/use-data-views-state.js +2 -2
- package/dist/_internal/components/data-display/FleetMap/FleetBody.js +11 -11
- package/dist/_internal/components/data-display/FleetMap/FleetCanvas.js +8 -8
- package/dist/_internal/components/data-display/FleetMap/FleetMap.js +12 -12
- package/dist/_internal/components/data-display/FleetMap/FleetRoster.js +2 -2
- package/dist/_internal/components/data-display/HoverCard/HoverCard.js +3 -3
- package/dist/_internal/components/data-display/Lightbox/Lightbox.js +3 -3
- package/dist/_internal/components/data-display/MapPreview/MapLayers.js +2 -2
- package/dist/_internal/components/data-display/MapPreview/MapPreview.js +7 -7
- package/dist/_internal/components/data-display/Progress/Progress.js +2 -2
- package/dist/_internal/components/data-display/Sheet/Sheet.js +4 -4
- package/dist/_internal/components/data-display/Table/Table.js +3 -3
- package/dist/_internal/components/data-display/index.js +42 -42
- package/dist/_internal/components/feedback/TutorialOverlay/TutorialOverlay.js +2 -2
- package/dist/_internal/components/feedback/index.js +5 -5
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.hooks.js +4 -4
- package/dist/_internal/components/form/AddressAutocomplete/AddressAutocomplete.js +7 -7
- package/dist/_internal/components/form/Autocomplete/Autocomplete.js +2 -2
- package/dist/_internal/components/form/Calendar/Calendar.hooks.js +2 -2
- package/dist/_internal/components/form/Calendar/Calendar.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryPanel.js +4 -4
- package/dist/_internal/components/form/CategorySelect/CategoryPanelList.js +3 -3
- package/dist/_internal/components/form/CategorySelect/CategoryRows.js +2 -2
- package/dist/_internal/components/form/CategorySelect/CategorySelect.js +8 -8
- package/dist/_internal/components/form/CepField/CepField.js +3 -3
- package/dist/_internal/components/form/CodeEditor/CodeEditor.js +2 -2
- package/dist/_internal/components/form/Command/Command.js +2 -2
- package/dist/_internal/components/form/DateRangePicker/DateRangePicker.js +5 -5
- package/dist/_internal/components/form/Input/Input.js +2 -2
- package/dist/_internal/components/form/NumberField/NumberField.js +3 -3
- package/dist/_internal/components/form/Select/Select.js +5 -2
- package/dist/_internal/components/form/Select/Select.metrics.js +5 -1
- package/dist/_internal/components/form/Select/Select.searchable.js +28 -0
- package/dist/_internal/components/form/Select/Select.searchable.js.map +1 -0
- package/dist/_internal/components/form/Select/Select.styles.js +25 -0
- package/dist/_internal/components/form/Select/Select.styles.js.map +1 -0
- package/dist/_internal/components/form/index.js +32 -29
- package/dist/_internal/components/form/total-form/Fields/CategoryField.js +9 -9
- package/dist/_internal/components/form/total-form/Fields/CepField.js +4 -4
- package/dist/_internal/components/form/total-form/Fields/SelectField.js +6 -3
- package/dist/_internal/components/form/total-form/Fields/TextField.js +3 -3
- package/dist/_internal/components/form/total-form/Fields/index.js +20 -18
- package/dist/_internal/components/index.js +85 -83
- package/dist/_internal/components/navigation/AppHeader/AppHeader.details.js +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.bar.js +6 -6
- package/dist/_internal/components/navigation/SectionNav/SectionNav.js +8 -8
- 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 +4 -4
- package/dist/_internal/components/navigation/SectionNav/SectionNav.sheet.js +4 -4
- package/dist/_internal/components/navigation/index.js +12 -12
- package/dist/_internal/user-avatar/user-avatar.js +4 -4
- package/dist/charts.js +10 -10
- package/dist/{chunk-A64MQ7GW.js → chunk-2LSJTQIL.js} +2 -2
- package/dist/{chunk-EU76OQGR.js → chunk-2NYVMLFQ.js} +2 -2
- package/dist/{chunk-CJPP4OUK.js → chunk-2YKTB2IZ.js} +2 -2
- package/dist/{chunk-ISW5K72V.js → chunk-2ZRZTGWP.js} +5 -5
- package/dist/{chunk-LQRUTHJY.js → chunk-3CDU7DLD.js} +5 -5
- package/dist/{chunk-72FPUWD6.js → chunk-3IPQANXY.js} +2 -2
- package/dist/{chunk-56QYSVLI.js → chunk-3WAAL3KN.js} +7 -7
- package/dist/{chunk-JO4UMHWR.js → chunk-43UFSKEK.js} +3 -3
- package/dist/{chunk-N2XQKTXX.js → chunk-5NFQKL7C.js} +5 -5
- package/dist/{chunk-PCHUIDMT.js → chunk-5OEC546C.js} +2 -2
- package/dist/{chunk-JBGCGYEC.js → chunk-6EJF3BUR.js} +4 -4
- package/dist/{chunk-P3XEF26U.js → chunk-A5ODDTGU.js} +3 -3
- package/dist/{chunk-RVOYCPKF.js → chunk-ACU7LEFG.js} +5 -5
- package/dist/{chunk-OARM5RX4.js → chunk-AQC67NQZ.js} +5 -5
- package/dist/{chunk-QQUNZH3L.js → chunk-AS2PWQIU.js} +3 -3
- package/dist/chunk-AV6NNCRO.js +111 -0
- package/dist/chunk-AV6NNCRO.js.map +1 -0
- package/dist/{chunk-V54LG3QG.js → chunk-B3QWQG62.js} +2 -2
- package/dist/{chunk-J2JWWGMT.js → chunk-BPOVRMVS.js} +7 -7
- package/dist/{chunk-V4R6Q5ED.js → chunk-CGBUWNNQ.js} +11 -11
- package/dist/{chunk-ZCEXSYAJ.js → chunk-CGL7R37P.js} +4 -4
- package/dist/{chunk-GYZUJ7HH.js → chunk-CO4MSWTV.js} +5 -5
- package/dist/chunk-EISPWFYO.js +146 -0
- package/dist/chunk-EISPWFYO.js.map +1 -0
- package/dist/{chunk-PGPPN63I.js → chunk-EMEXXAQI.js} +2 -2
- package/dist/{chunk-2HPNN5XA.js → chunk-FIF4RQ4S.js} +2 -2
- package/dist/{chunk-T6HVNVFI.js → chunk-FQT4C5R4.js} +9 -9
- package/dist/{chunk-BWURMQWZ.js → chunk-FS7UVKEE.js} +4 -4
- package/dist/{chunk-LUPHXDEU.js → chunk-FVKBP3UX.js} +2 -2
- package/dist/{chunk-TPPFWETI.js → chunk-G6II7SVX.js} +7 -7
- package/dist/{chunk-LV2SZFXK.js → chunk-GMC3F43L.js} +7 -7
- package/dist/{chunk-R6SBP5M5.js → chunk-GOWBYHYW.js} +4 -4
- package/dist/{chunk-AA7QTFMB.js → chunk-HGRC635A.js} +2 -2
- package/dist/{chunk-TE3XYCX7.js → chunk-IHO2O44S.js} +5 -5
- package/dist/{chunk-VPH47OIV.js → chunk-IKZSQKOE.js} +2 -2
- package/dist/{chunk-IPI3OU2P.js → chunk-IV7G7NK3.js} +5 -5
- package/dist/{chunk-JTWRI4WD.js → chunk-IX3U3XPP.js} +14 -14
- package/dist/{chunk-WYXNFH5Y.js → chunk-IYC7NPX7.js} +14 -2
- package/dist/{chunk-WYXNFH5Y.js.map → chunk-IYC7NPX7.js.map} +1 -1
- package/dist/{chunk-HC2AO3RT.js → chunk-J44PPGBF.js} +2 -2
- package/dist/{chunk-V2GHNHP6.js → chunk-JAHWFJCW.js} +4 -4
- package/dist/{chunk-HAFLKWWU.js → chunk-JQ6HDXKA.js} +2 -2
- package/dist/{chunk-SPZAEMGW.js → chunk-JWJ77IMK.js} +4 -4
- package/dist/{chunk-HYNDC3FP.js → chunk-JYLOCXMV.js} +5 -5
- package/dist/{chunk-ILKNYENU.js → chunk-LB27LKG3.js} +4 -4
- package/dist/{chunk-IWYTOCCV.js → chunk-LHTEAPYG.js} +4 -4
- package/dist/{chunk-TPVSHO75.js → chunk-NLEO5YI4.js} +7 -7
- package/dist/{chunk-K45ML7M7.js → chunk-NU55QUMO.js} +2 -2
- package/dist/{chunk-KN3WYEH2.js → chunk-NYHZUVLC.js} +4 -4
- package/dist/{chunk-U2UT2NDH.js → chunk-OBID7SOG.js} +2 -2
- package/dist/{chunk-UUJ7J7NE.js → chunk-PP7CDKO4.js} +2 -2
- package/dist/{chunk-6L2FKTBO.js → chunk-PQS3IPMD.js} +10 -91
- package/dist/chunk-PQS3IPMD.js.map +1 -0
- package/dist/{chunk-PARTZ7XI.js → chunk-R53ZOW4B.js} +2 -2
- package/dist/{chunk-BWXPO2SE.js → chunk-S22XIXLL.js} +3 -3
- package/dist/{chunk-QL7NPQOP.js → chunk-SAJ5H5VC.js} +2 -2
- package/dist/{chunk-6GAZAJXB.js → chunk-SDKOOVEX.js} +4 -4
- package/dist/{chunk-ETCS6OBJ.js → chunk-THCDUP6Q.js} +9 -9
- package/dist/{chunk-CMFJQH6A.js → chunk-UG636FEL.js} +4 -4
- package/dist/{chunk-NFA7STJA.js → chunk-UILH4OAZ.js} +5 -5
- package/dist/{chunk-X5F4FRH7.js → chunk-VNOXUWK7.js} +4 -4
- package/dist/{chunk-MD3ND6DT.js → chunk-VU63PDWW.js} +3 -3
- package/dist/{chunk-RBLBXJR7.js → chunk-WAD5VL6B.js} +7 -7
- package/dist/{chunk-4MGFUPQT.js → chunk-WC3W36AM.js} +7 -7
- package/dist/{chunk-Z3L2EGXW.js → chunk-WDAEYLT5.js} +2 -2
- package/dist/{chunk-BEX3FLHB.js → chunk-X3C3VTYS.js} +2 -2
- package/dist/{chunk-NFTFP6WO.js → chunk-XNTDEQEB.js} +5 -5
- package/dist/{chunk-TWVRPT7J.js → chunk-XXL4PM4M.js} +2 -2
- package/dist/{chunk-6OQHZVK6.js → chunk-XXNLBO4Q.js} +3 -3
- package/dist/{chunk-TNQDSTIA.js → chunk-Y6C4MYZE.js} +7 -7
- package/dist/{chunk-NRKAJHBB.js → chunk-YRACC6BB.js} +4 -4
- package/dist/{chunk-RSQYWGMU.js → chunk-YTIUFMRM.js} +5 -5
- package/dist/{chunk-FQ637IDM.js → chunk-YXU45AVO.js} +5 -5
- package/dist/{chunk-YDU2YPQA.js → chunk-ZVJSY2OV.js} +3 -3
- package/dist/data-display/Avatar.js +3 -3
- package/dist/data-display/Badge.js +2 -2
- package/dist/data-display/CardKit.js +10 -10
- package/dist/data-display/Chart.js +10 -10
- package/dist/data-display/DataViews.js +55 -55
- package/dist/data-display/FleetMap.js +12 -12
- package/dist/data-display/HoverCard.js +3 -3
- package/dist/data-display/Lightbox.js +3 -3
- package/dist/data-display/MapPreview.js +7 -7
- package/dist/data-display/Progress.js +2 -2
- package/dist/data-display/Sheet.js +4 -4
- package/dist/data-display/Table.js +3 -3
- package/dist/feedback/ConfirmAction.js +3 -3
- package/dist/feedback/TutorialOverlay.js +2 -2
- package/dist/form/AddressAutocomplete.js +7 -7
- package/dist/form/Autocomplete.js +2 -2
- package/dist/form/Calendar.js +3 -3
- package/dist/form/CategorySelect.js +8 -8
- package/dist/form/CepField.js +3 -3
- package/dist/form/CodeEditor.js +2 -2
- package/dist/form/Command.js +2 -2
- package/dist/form/DateRangePicker.js +10 -10
- package/dist/form/Input.js +2 -2
- package/dist/form/NumberField.js +3 -3
- package/dist/form/Select.js +5 -2
- package/dist/form/total-form.js +20 -18
- package/dist/native/form/Select.js.map +1 -1
- package/dist/navigation/AppHeader.js +4 -4
- package/dist/navigation/SectionNav.js +8 -8
- package/dist/types/components/form/Select/Select.base.d.ts +15 -0
- package/dist/types/components/form/Select/Select.base.d.ts.map +1 -1
- package/dist/types/components/form/Select/Select.d.ts +5 -0
- package/dist/types/components/form/Select/Select.d.ts.map +1 -1
- package/dist/types/components/form/Select/Select.metrics.d.ts +20 -0
- package/dist/types/components/form/Select/Select.metrics.d.ts.map +1 -1
- package/dist/types/components/form/Select/Select.searchable.d.ts +23 -0
- package/dist/types/components/form/Select/Select.searchable.d.ts.map +1 -0
- package/dist/types/components/form/Select/Select.styles.d.ts +27 -0
- package/dist/types/components/form/Select/Select.styles.d.ts.map +1 -0
- package/dist/types-native/components/form/Select/Select.base.d.ts +15 -0
- package/dist/types-native/components/form/Select/Select.base.d.ts.map +1 -1
- package/dist/types-native/components/form/Select/Select.metrics.d.ts +20 -0
- package/dist/types-native/components/form/Select/Select.metrics.d.ts.map +1 -1
- package/dist/user-avatar.js +4 -4
- package/package.json +1 -1
- package/src/components/form/Select/Select.base.ts +15 -0
- package/src/components/form/Select/Select.md +31 -1
- package/src/components/form/Select/Select.metrics.ts +22 -0
- package/src/components/form/Select/Select.searchable.tsx +203 -0
- package/src/components/form/Select/Select.styles.tsx +195 -0
- package/src/components/form/Select/Select.tsx +20 -166
- package/dist/chunk-6L2FKTBO.js.map +0 -1
- /package/dist/{chunk-A64MQ7GW.js.map → chunk-2LSJTQIL.js.map} +0 -0
- /package/dist/{chunk-EU76OQGR.js.map → chunk-2NYVMLFQ.js.map} +0 -0
- /package/dist/{chunk-CJPP4OUK.js.map → chunk-2YKTB2IZ.js.map} +0 -0
- /package/dist/{chunk-ISW5K72V.js.map → chunk-2ZRZTGWP.js.map} +0 -0
- /package/dist/{chunk-LQRUTHJY.js.map → chunk-3CDU7DLD.js.map} +0 -0
- /package/dist/{chunk-72FPUWD6.js.map → chunk-3IPQANXY.js.map} +0 -0
- /package/dist/{chunk-56QYSVLI.js.map → chunk-3WAAL3KN.js.map} +0 -0
- /package/dist/{chunk-JO4UMHWR.js.map → chunk-43UFSKEK.js.map} +0 -0
- /package/dist/{chunk-N2XQKTXX.js.map → chunk-5NFQKL7C.js.map} +0 -0
- /package/dist/{chunk-PCHUIDMT.js.map → chunk-5OEC546C.js.map} +0 -0
- /package/dist/{chunk-JBGCGYEC.js.map → chunk-6EJF3BUR.js.map} +0 -0
- /package/dist/{chunk-P3XEF26U.js.map → chunk-A5ODDTGU.js.map} +0 -0
- /package/dist/{chunk-RVOYCPKF.js.map → chunk-ACU7LEFG.js.map} +0 -0
- /package/dist/{chunk-OARM5RX4.js.map → chunk-AQC67NQZ.js.map} +0 -0
- /package/dist/{chunk-QQUNZH3L.js.map → chunk-AS2PWQIU.js.map} +0 -0
- /package/dist/{chunk-V54LG3QG.js.map → chunk-B3QWQG62.js.map} +0 -0
- /package/dist/{chunk-J2JWWGMT.js.map → chunk-BPOVRMVS.js.map} +0 -0
- /package/dist/{chunk-V4R6Q5ED.js.map → chunk-CGBUWNNQ.js.map} +0 -0
- /package/dist/{chunk-ZCEXSYAJ.js.map → chunk-CGL7R37P.js.map} +0 -0
- /package/dist/{chunk-GYZUJ7HH.js.map → chunk-CO4MSWTV.js.map} +0 -0
- /package/dist/{chunk-PGPPN63I.js.map → chunk-EMEXXAQI.js.map} +0 -0
- /package/dist/{chunk-2HPNN5XA.js.map → chunk-FIF4RQ4S.js.map} +0 -0
- /package/dist/{chunk-T6HVNVFI.js.map → chunk-FQT4C5R4.js.map} +0 -0
- /package/dist/{chunk-BWURMQWZ.js.map → chunk-FS7UVKEE.js.map} +0 -0
- /package/dist/{chunk-LUPHXDEU.js.map → chunk-FVKBP3UX.js.map} +0 -0
- /package/dist/{chunk-TPPFWETI.js.map → chunk-G6II7SVX.js.map} +0 -0
- /package/dist/{chunk-LV2SZFXK.js.map → chunk-GMC3F43L.js.map} +0 -0
- /package/dist/{chunk-R6SBP5M5.js.map → chunk-GOWBYHYW.js.map} +0 -0
- /package/dist/{chunk-AA7QTFMB.js.map → chunk-HGRC635A.js.map} +0 -0
- /package/dist/{chunk-TE3XYCX7.js.map → chunk-IHO2O44S.js.map} +0 -0
- /package/dist/{chunk-VPH47OIV.js.map → chunk-IKZSQKOE.js.map} +0 -0
- /package/dist/{chunk-IPI3OU2P.js.map → chunk-IV7G7NK3.js.map} +0 -0
- /package/dist/{chunk-JTWRI4WD.js.map → chunk-IX3U3XPP.js.map} +0 -0
- /package/dist/{chunk-HC2AO3RT.js.map → chunk-J44PPGBF.js.map} +0 -0
- /package/dist/{chunk-V2GHNHP6.js.map → chunk-JAHWFJCW.js.map} +0 -0
- /package/dist/{chunk-HAFLKWWU.js.map → chunk-JQ6HDXKA.js.map} +0 -0
- /package/dist/{chunk-SPZAEMGW.js.map → chunk-JWJ77IMK.js.map} +0 -0
- /package/dist/{chunk-HYNDC3FP.js.map → chunk-JYLOCXMV.js.map} +0 -0
- /package/dist/{chunk-ILKNYENU.js.map → chunk-LB27LKG3.js.map} +0 -0
- /package/dist/{chunk-IWYTOCCV.js.map → chunk-LHTEAPYG.js.map} +0 -0
- /package/dist/{chunk-TPVSHO75.js.map → chunk-NLEO5YI4.js.map} +0 -0
- /package/dist/{chunk-K45ML7M7.js.map → chunk-NU55QUMO.js.map} +0 -0
- /package/dist/{chunk-KN3WYEH2.js.map → chunk-NYHZUVLC.js.map} +0 -0
- /package/dist/{chunk-U2UT2NDH.js.map → chunk-OBID7SOG.js.map} +0 -0
- /package/dist/{chunk-UUJ7J7NE.js.map → chunk-PP7CDKO4.js.map} +0 -0
- /package/dist/{chunk-PARTZ7XI.js.map → chunk-R53ZOW4B.js.map} +0 -0
- /package/dist/{chunk-BWXPO2SE.js.map → chunk-S22XIXLL.js.map} +0 -0
- /package/dist/{chunk-QL7NPQOP.js.map → chunk-SAJ5H5VC.js.map} +0 -0
- /package/dist/{chunk-6GAZAJXB.js.map → chunk-SDKOOVEX.js.map} +0 -0
- /package/dist/{chunk-ETCS6OBJ.js.map → chunk-THCDUP6Q.js.map} +0 -0
- /package/dist/{chunk-CMFJQH6A.js.map → chunk-UG636FEL.js.map} +0 -0
- /package/dist/{chunk-NFA7STJA.js.map → chunk-UILH4OAZ.js.map} +0 -0
- /package/dist/{chunk-X5F4FRH7.js.map → chunk-VNOXUWK7.js.map} +0 -0
- /package/dist/{chunk-MD3ND6DT.js.map → chunk-VU63PDWW.js.map} +0 -0
- /package/dist/{chunk-RBLBXJR7.js.map → chunk-WAD5VL6B.js.map} +0 -0
- /package/dist/{chunk-4MGFUPQT.js.map → chunk-WC3W36AM.js.map} +0 -0
- /package/dist/{chunk-Z3L2EGXW.js.map → chunk-WDAEYLT5.js.map} +0 -0
- /package/dist/{chunk-BEX3FLHB.js.map → chunk-X3C3VTYS.js.map} +0 -0
- /package/dist/{chunk-NFTFP6WO.js.map → chunk-XNTDEQEB.js.map} +0 -0
- /package/dist/{chunk-TWVRPT7J.js.map → chunk-XXL4PM4M.js.map} +0 -0
- /package/dist/{chunk-6OQHZVK6.js.map → chunk-XXNLBO4Q.js.map} +0 -0
- /package/dist/{chunk-TNQDSTIA.js.map → chunk-Y6C4MYZE.js.map} +0 -0
- /package/dist/{chunk-NRKAJHBB.js.map → chunk-YRACC6BB.js.map} +0 -0
- /package/dist/{chunk-RSQYWGMU.js.map → chunk-YTIUFMRM.js.map} +0 -0
- /package/dist/{chunk-FQ637IDM.js.map → chunk-YXU45AVO.js.map} +0 -0
- /package/dist/{chunk-YDU2YPQA.js.map → chunk-ZVJSY2OV.js.map} +0 -0
package/dist/form/Calendar.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import "../chunk-BO6S47KI.js";
|
|
2
2
|
import {
|
|
3
3
|
Calendar
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
6
|
-
import "../chunk-FFQ4NOJT.js";
|
|
4
|
+
} from "../chunk-R53ZOW4B.js";
|
|
5
|
+
import "../chunk-2ZRZTGWP.js";
|
|
7
6
|
import "../chunk-SUALMVL7.js";
|
|
8
7
|
import "../chunk-AG3DY5TH.js";
|
|
9
8
|
import "../chunk-6PU3JYVY.js";
|
|
10
9
|
import "../chunk-H3AQQOTI.js";
|
|
11
10
|
import "../chunk-E2Y7G4MP.js";
|
|
11
|
+
import "../chunk-FFQ4NOJT.js";
|
|
12
12
|
import "../chunk-TERT6TIS.js";
|
|
13
13
|
import "../chunk-YKCAJ2TN.js";
|
|
14
14
|
import "../chunk-PZ5AY32C.js";
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import "../chunk-N5ZWC6CB.js";
|
|
2
2
|
import {
|
|
3
3
|
CategorySelect
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-CGBUWNNQ.js";
|
|
5
5
|
import "../chunk-QYY37ECA.js";
|
|
6
|
-
import "../chunk-
|
|
6
|
+
import "../chunk-UILH4OAZ.js";
|
|
7
7
|
import "../chunk-PGGYZU7Q.js";
|
|
8
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-NLEO5YI4.js";
|
|
9
|
+
import "../chunk-UG636FEL.js";
|
|
9
10
|
import "../chunk-S4IXC2V3.js";
|
|
10
11
|
import "../chunk-7KKMZJFT.js";
|
|
11
|
-
import "../chunk-XHHR6G35.js";
|
|
12
|
-
import "../chunk-NCB4GBRL.js";
|
|
13
|
-
import "../chunk-CMFJQH6A.js";
|
|
14
|
-
import "../chunk-DMNZD3Q7.js";
|
|
15
|
-
import "../chunk-Z6T5SXST.js";
|
|
16
12
|
import "../chunk-RZVUY2MO.js";
|
|
17
13
|
import "../chunk-USJPZ5Q7.js";
|
|
14
|
+
import "../chunk-XHHR6G35.js";
|
|
18
15
|
import "../chunk-R2AZOWEZ.js";
|
|
19
16
|
import {
|
|
20
17
|
buildCategoryGroups,
|
|
@@ -29,6 +26,9 @@ import {
|
|
|
29
26
|
summarizeSelection,
|
|
30
27
|
treeDepth
|
|
31
28
|
} from "../chunk-PN4HVM43.js";
|
|
29
|
+
import "../chunk-NCB4GBRL.js";
|
|
30
|
+
import "../chunk-DMNZD3Q7.js";
|
|
31
|
+
import "../chunk-Z6T5SXST.js";
|
|
32
32
|
import "../chunk-C3UKR3NT.js";
|
|
33
33
|
import "../chunk-D6KL74KI.js";
|
|
34
34
|
import "../chunk-M47ZOUGF.js";
|
package/dist/form/CepField.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "../chunk-6XLMTOJ3.js";
|
|
2
2
|
import {
|
|
3
3
|
CepField
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-B3QWQG62.js";
|
|
5
5
|
import "../chunk-QYKDY4EI.js";
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-YLXQWYOG.js";
|
|
6
|
+
import "../chunk-SDKOOVEX.js";
|
|
8
7
|
import "../chunk-SL6454K7.js";
|
|
8
|
+
import "../chunk-YLXQWYOG.js";
|
|
9
9
|
import "../chunk-JU3FRRO2.js";
|
|
10
10
|
import "../chunk-C3UKR3NT.js";
|
|
11
11
|
import "../chunk-D6KL74KI.js";
|
package/dist/form/CodeEditor.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import "../chunk-IDMG332I.js";
|
|
2
2
|
import {
|
|
3
3
|
CodeEditor
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-JYLOCXMV.js";
|
|
5
|
+
import "../chunk-X3OWMTLO.js";
|
|
5
6
|
import "../chunk-3TVUW7QE.js";
|
|
6
7
|
import "../chunk-L36S7YJB.js";
|
|
7
8
|
import {
|
|
8
9
|
configureCodeEditor
|
|
9
10
|
} from "../chunk-5F5Q6VJ2.js";
|
|
10
|
-
import "../chunk-X3OWMTLO.js";
|
|
11
11
|
import "../chunk-7FDU3FIN.js";
|
|
12
12
|
import "../chunk-EPEJMTCQ.js";
|
|
13
13
|
import "../chunk-GDN2LUTZ.js";
|
package/dist/form/Command.js
CHANGED
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
CommandGroup,
|
|
5
5
|
CommandInput,
|
|
6
6
|
CommandList
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-YOKUDQIJ.js";
|
|
7
|
+
} from "../chunk-ACU7LEFG.js";
|
|
9
8
|
import "../chunk-N4HHFYPB.js";
|
|
10
9
|
import {
|
|
11
10
|
CommandEmpty,
|
|
12
11
|
CommandLoading,
|
|
13
12
|
CommandSeparator
|
|
14
13
|
} from "../chunk-XLTHZI5W.js";
|
|
14
|
+
import "../chunk-YOKUDQIJ.js";
|
|
15
15
|
import "../chunk-QFJ3JXXP.js";
|
|
16
16
|
import "../chunk-7ZPUN7TV.js";
|
|
17
17
|
import "../chunk-TMOC2XUE.js";
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import "../chunk-BN6POCYF.js";
|
|
2
2
|
import {
|
|
3
3
|
DateRangePicker
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-4GN2RLYL.js";
|
|
6
|
-
import "../chunk-6KKQHJE7.js";
|
|
7
|
-
import "../chunk-K7MQP2KT.js";
|
|
8
|
-
import {
|
|
9
|
-
resolveDayRange
|
|
10
|
-
} from "../chunk-XB7HYOMM.js";
|
|
4
|
+
} from "../chunk-AQC67NQZ.js";
|
|
11
5
|
import {
|
|
12
6
|
DEFAULT_QUICK_RANGES,
|
|
13
7
|
DEFAULT_QUICK_RANGE_LABELS,
|
|
14
8
|
QUICK_RANGE_IDS,
|
|
15
9
|
createQuickRanges
|
|
16
10
|
} from "../chunk-QKLSHNOH.js";
|
|
11
|
+
import "../chunk-4GN2RLYL.js";
|
|
12
|
+
import "../chunk-6KKQHJE7.js";
|
|
13
|
+
import "../chunk-K7MQP2KT.js";
|
|
14
|
+
import {
|
|
15
|
+
resolveDayRange
|
|
16
|
+
} from "../chunk-XB7HYOMM.js";
|
|
17
17
|
import "../chunk-FRAVVI4A.js";
|
|
18
18
|
import "../chunk-BO6S47KI.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-FFQ4NOJT.js";
|
|
19
|
+
import "../chunk-R53ZOW4B.js";
|
|
20
|
+
import "../chunk-2ZRZTGWP.js";
|
|
22
21
|
import "../chunk-SUALMVL7.js";
|
|
23
22
|
import "../chunk-AG3DY5TH.js";
|
|
24
23
|
import "../chunk-6PU3JYVY.js";
|
|
25
24
|
import "../chunk-H3AQQOTI.js";
|
|
26
25
|
import "../chunk-E2Y7G4MP.js";
|
|
26
|
+
import "../chunk-FFQ4NOJT.js";
|
|
27
27
|
import "../chunk-TERT6TIS.js";
|
|
28
28
|
import "../chunk-FDMQ7H22.js";
|
|
29
29
|
import "../chunk-M47ZOUGF.js";
|
package/dist/form/Input.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "../chunk-QYKDY4EI.js";
|
|
2
2
|
import {
|
|
3
3
|
Input
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-YLXQWYOG.js";
|
|
4
|
+
} from "../chunk-SDKOOVEX.js";
|
|
6
5
|
import "../chunk-SL6454K7.js";
|
|
6
|
+
import "../chunk-YLXQWYOG.js";
|
|
7
7
|
import "../chunk-JU3FRRO2.js";
|
|
8
8
|
import "../chunk-TYJR4GOF.js";
|
|
9
9
|
import "../chunk-HPK33ACY.js";
|
package/dist/form/NumberField.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "../chunk-HALFOXSZ.js";
|
|
2
2
|
import {
|
|
3
3
|
NumberField
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-X3C3VTYS.js";
|
|
5
5
|
import "../chunk-Q4JWWTL4.js";
|
|
6
6
|
import "../chunk-QYKDY4EI.js";
|
|
7
|
-
import "../chunk-
|
|
8
|
-
import "../chunk-YLXQWYOG.js";
|
|
7
|
+
import "../chunk-SDKOOVEX.js";
|
|
9
8
|
import "../chunk-SL6454K7.js";
|
|
9
|
+
import "../chunk-YLXQWYOG.js";
|
|
10
10
|
import "../chunk-JU3FRRO2.js";
|
|
11
11
|
import "../chunk-TYJR4GOF.js";
|
|
12
12
|
import "../chunk-HPK33ACY.js";
|
package/dist/form/Select.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import "../chunk-II3YNC5S.js";
|
|
2
2
|
import {
|
|
3
3
|
Select
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-AV6NNCRO.js";
|
|
5
|
+
import "../chunk-EISPWFYO.js";
|
|
6
|
+
import "../chunk-PQS3IPMD.js";
|
|
7
|
+
import "../chunk-IYC7NPX7.js";
|
|
6
8
|
import "../chunk-JU3FRRO2.js";
|
|
7
9
|
import "../chunk-RTSK5OZT.js";
|
|
8
10
|
import "../chunk-TYJR4GOF.js";
|
|
@@ -18,6 +20,7 @@ import "../chunk-FQ6UW7IY.js";
|
|
|
18
20
|
import "../chunk-6JAIFIPW.js";
|
|
19
21
|
import "../chunk-N3GAFIXG.js";
|
|
20
22
|
import "../chunk-YKCAJ2TN.js";
|
|
23
|
+
import "../chunk-MFU4Y25U.js";
|
|
21
24
|
import "../chunk-PZ5AY32C.js";
|
|
22
25
|
export {
|
|
23
26
|
Select
|
package/dist/form/total-form.js
CHANGED
|
@@ -3,18 +3,18 @@ import {
|
|
|
3
3
|
} from "../chunk-CPAJYJUD.js";
|
|
4
4
|
import {
|
|
5
5
|
Fields_exports
|
|
6
|
-
} from "../chunk-
|
|
6
|
+
} from "../chunk-IV7G7NK3.js";
|
|
7
7
|
import "../chunk-QDELBNL3.js";
|
|
8
8
|
import {
|
|
9
9
|
TextField
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-NU55QUMO.js";
|
|
11
11
|
import {
|
|
12
12
|
SelectField
|
|
13
|
-
} from "../chunk-
|
|
14
|
-
import "../chunk-
|
|
13
|
+
} from "../chunk-3IPQANXY.js";
|
|
14
|
+
import "../chunk-XXL4PM4M.js";
|
|
15
15
|
import {
|
|
16
16
|
CategoryField
|
|
17
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-5OEC546C.js";
|
|
18
18
|
import {
|
|
19
19
|
SubmitButton
|
|
20
20
|
} from "../chunk-3CUWQXTG.js";
|
|
@@ -28,33 +28,35 @@ import {
|
|
|
28
28
|
import "../chunk-ONMSTW4B.js";
|
|
29
29
|
import "../chunk-KQZGUHYZ.js";
|
|
30
30
|
import "../chunk-II3YNC5S.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-AV6NNCRO.js";
|
|
32
|
+
import "../chunk-EISPWFYO.js";
|
|
33
|
+
import "../chunk-PQS3IPMD.js";
|
|
34
|
+
import "../chunk-IYC7NPX7.js";
|
|
33
35
|
import "../chunk-JD5BVIM7.js";
|
|
34
36
|
import "../chunk-VQYR64QB.js";
|
|
35
37
|
import "../chunk-6XLMTOJ3.js";
|
|
36
|
-
import "../chunk-
|
|
38
|
+
import "../chunk-B3QWQG62.js";
|
|
37
39
|
import "../chunk-N5ZWC6CB.js";
|
|
38
|
-
import "../chunk-
|
|
40
|
+
import "../chunk-CGBUWNNQ.js";
|
|
39
41
|
import "../chunk-QYY37ECA.js";
|
|
40
|
-
import "../chunk-
|
|
42
|
+
import "../chunk-UILH4OAZ.js";
|
|
41
43
|
import "../chunk-PGGYZU7Q.js";
|
|
42
|
-
import "../chunk-
|
|
44
|
+
import "../chunk-NLEO5YI4.js";
|
|
45
|
+
import "../chunk-UG636FEL.js";
|
|
43
46
|
import "../chunk-S4IXC2V3.js";
|
|
44
47
|
import "../chunk-7KKMZJFT.js";
|
|
45
|
-
import "../chunk-XHHR6G35.js";
|
|
46
|
-
import "../chunk-NCB4GBRL.js";
|
|
47
|
-
import "../chunk-CMFJQH6A.js";
|
|
48
|
-
import "../chunk-DMNZD3Q7.js";
|
|
49
|
-
import "../chunk-Z6T5SXST.js";
|
|
50
48
|
import "../chunk-RZVUY2MO.js";
|
|
51
49
|
import "../chunk-USJPZ5Q7.js";
|
|
50
|
+
import "../chunk-XHHR6G35.js";
|
|
52
51
|
import "../chunk-R2AZOWEZ.js";
|
|
53
52
|
import "../chunk-PN4HVM43.js";
|
|
53
|
+
import "../chunk-NCB4GBRL.js";
|
|
54
|
+
import "../chunk-DMNZD3Q7.js";
|
|
55
|
+
import "../chunk-Z6T5SXST.js";
|
|
54
56
|
import "../chunk-QYKDY4EI.js";
|
|
55
|
-
import "../chunk-
|
|
56
|
-
import "../chunk-YLXQWYOG.js";
|
|
57
|
+
import "../chunk-SDKOOVEX.js";
|
|
57
58
|
import "../chunk-SL6454K7.js";
|
|
59
|
+
import "../chunk-YLXQWYOG.js";
|
|
58
60
|
import "../chunk-JU3FRRO2.js";
|
|
59
61
|
import "../chunk-C3UKR3NT.js";
|
|
60
62
|
import "../chunk-D6KL74KI.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/form/Select/Select.native.tsx","../../../src/components/form/Select/Select.helpers.ts","../../../src/components/form/Select/Select.metrics.ts","../../../src/components/form/Select/Select.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text as RNText,\n View,\n useWindowDimensions,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\n\nimport {\n displayLabel,\n resolveSelectProps,\n selectItems,\n selectTestIds,\n type SelectItem,\n} from './Select.helpers';\nimport { menuStyle, optionStyle, optionTextStyle, selectLook, type SelectLook } from './Select.look.native';\nimport {\n SELECT_GLOW,\n SELECT_ICON,\n SELECT_MENU,\n inputVariantFor,\n selectInputSize,\n} from './Select.metrics';\nimport type { SelectProps, SelectValue } from './Select.types.native';\nimport { Icon } from '../../../icons/Icon.native';\nimport { webAria, webKeyDown, webRole, type WebKeyEvent } from '../../../platform/aria';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { fieldHeightPx } from '../../../tokens/field-height.core';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\nimport { FieldPulse } from '../field-pulse.native';\nimport { helperStyle, labelStyle, type FieldState } from '../Input/Input.look.native';\n\n/** MUI's halo on the outlined input, painted as a shadow. */\nfunction glowStyle(color: string): ViewStyle {\n return Platform.select<ViewStyle>({\n android: { elevation: SELECT_GLOW.rest.blur / 2 },\n default: {\n shadowColor: color,\n shadowOpacity: SELECT_GLOW.rest.alpha,\n shadowRadius: SELECT_GLOW.rest.blur,\n shadowOffset: { width: 0, height: 0 },\n },\n });\n}\n\ninterface MenuProps {\n items: SelectItem[];\n value: SelectValue;\n testIdFor: (value: SelectValue) => string;\n onPick: (item: SelectItem) => void;\n}\n\n/** The option list: MUI's `Menu`, under the field rather than portalled over it. */\nfunction SelectMenu({ items, value, testIdFor, onPick }: MenuProps): React.JSX.Element {\n const theme = useUiTheme();\n const { height } = useWindowDimensions();\n const textStyle = optionTextStyle(theme);\n\n return (\n <View style={menuStyle(theme, height - SELECT_MENU.maxHeightInset)} {...webRole('listbox')}>\n <ScrollView>\n {items.map((item) => {\n const selected = String(item.value) === String(value);\n return (\n <Pressable\n key={`${item.placeholder ? 'placeholder' : 'option'}-${item.value}`}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={item.disabled}\n disabled={item.disabled}\n testID={item.placeholder ? undefined : testIdFor(item.value)}\n onPress={() => onPick(item)}\n style={optionStyle(theme, selected, item.disabled)}\n >\n <RNText style={textStyle}>{item.label}</RNText>\n </Pressable>\n );\n })}\n </ScrollView>\n </View>\n );\n}\n\ninterface TriggerProps {\n testID: string;\n look: SelectLook;\n open: boolean;\n disabled: boolean;\n error: boolean;\n glow: boolean;\n display: string;\n labelId?: string;\n helperId?: string;\n onToggle: () => void;\n onKey: (event: WebKeyEvent) => void;\n}\n\n/**\n * The field itself: MUI's display slot and its arrow, under one `combobox`.\n *\n * `tabIndex` is spelled out because react-native-web only makes a handful of\n * roles focusable on its own, and `combobox` is not one of them — without it\n * the control would not be a tab stop. It goes to -1 when disabled, which is\n * what the web does by leaving the attribute off a disabled field entirely.\n */\nfunction SelectTrigger(props: TriggerProps): React.JSX.Element {\n const theme = useUiTheme();\n const { testID, look, open, disabled, error, glow, display, labelId, helperId } = props;\n\n return (\n <Pressable\n testID={testID}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={open}\n aria-disabled={disabled}\n disabled={disabled}\n onPress={props.onToggle}\n style={[look.box, glow ? glowStyle(theme.palette.primary.main) : null]}\n {...webAria({\n 'aria-haspopup': 'listbox',\n 'aria-invalid': error,\n ...(labelId === undefined ? {} : { 'aria-labelledby': labelId }),\n ...(helperId === undefined ? {} : { 'aria-describedby': helperId }),\n })}\n {...webKeyDown(props.onKey)}\n >\n <RNText style={look.display} numberOfLines={1}>\n {display}\n </RNText>\n <Icon\n name=\"ArrowDropDown\"\n size={SELECT_ICON.size}\n color={disabled ? theme.palette.action.disabled : theme.palette.action.active}\n testID={`${testID}-icon`}\n style={[\n { marginLeft: look.iconGap },\n open ? { transform: [{ rotate: `${SELECT_ICON.openRotateDeg}deg` }] } : null,\n ]}\n />\n </Pressable>\n );\n}\n\n/** The value the control shows, controlled by the caller or held here. */\nfunction useSelectValue(\n value: SelectValue | undefined,\n defaultValue: SelectValue | undefined,\n): [SelectValue, (next: SelectValue) => void] {\n const [own, setOwn] = React.useState<SelectValue>(defaultValue ?? '');\n return [value ?? own, setOwn];\n}\n\n/** The pulse bar, at the field's own height and corner. */\nfunction SelectPulse({\n theme,\n size,\n testID,\n}: {\n theme: UiTheme;\n size: SelectProps['size'];\n testID: string;\n}): React.JSX.Element {\n return (\n <FieldPulse\n color={theme.palette.primary.main}\n radius={theme.radius.field}\n height={fieldHeightPx(theme.fieldHeight, size ?? 'md')}\n testID={testID}\n />\n );\n}\n\n/**\n * The field's own box. Raised while open: react-native-web gives every View\n * `z-index: 0`, so the anchor's z-index stays inside this root, and the next\n * field down would paint over the list and take its taps.\n */\nfunction rootStyle(theme: UiTheme, fullWidth: boolean | undefined, open: boolean): StyleProp<ViewStyle> {\n return [styles.root, fullWidth ? styles.fullWidth : styles.auto, open ? { zIndex: theme.zIndex.modal } : null];\n}\n\n/**\n * The native `Select`.\n *\n * The list is an absolutely positioned panel under the field rather than a\n * portal over the screen: React Native's `Modal` traps focus, which is right\n * for a dialog and wrong for a dropdown — and wrong for the shared stories,\n * which expect the trigger to keep focus while the list is open. The trade is\n * recorded in `NATIVE-NOTES.md`.\n */\nexport const Select = React.forwardRef<View, SelectProps>((rawProps, ref) => {\n const {\n variant, options, label, helperText, fullWidth, size, placeholder, error, glow, pulse,\n disabled, value, defaultValue, onChange, onOpen, onClose, style, ...others\n } = resolveSelectProps(rawProps);\n\n const theme = useUiTheme();\n const [open, setOpen] = React.useState(false);\n const [current, setCurrent] = useSelectValue(value, defaultValue);\n const labelId = React.useId();\n const helperId = React.useId();\n\n const items = selectItems(options, placeholder);\n const ids = selectTestIds(resolveTestId(others));\n const state: FieldState = { focused: open && !disabled, error, disabled };\n const look = selectLook(theme, variant, size, state);\n\n const setOpenState = (next: boolean): void => {\n if (next === open) return;\n setOpen(next);\n (next ? onOpen : onClose)?.();\n };\n\n const handleKey = (event: WebKeyEvent): void => {\n if (event.key === 'Escape') setOpenState(false);\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') setOpenState(true);\n };\n\n const pick = (item: SelectItem): void => {\n setOpenState(false);\n if (item.option === undefined) return;\n setCurrent(item.value);\n onChange?.({ target: { value: item.value } }, item.option);\n };\n\n return (\n <View\n ref={ref}\n testID={ids.root}\n style={[rootStyle(theme, fullWidth, open), style]}\n {...withoutTestIdProps(others)}\n >\n {pulse ? <SelectPulse theme={theme} size={size} testID={`${ids.trigger}-pulse`} /> : null}\n {label === undefined ? null : (\n <RNText id={labelId} style={labelStyle(theme, inputVariantFor(variant), size, state)}>\n {label}\n </RNText>\n )}\n <View style={[styles.anchor, open ? { zIndex: theme.zIndex.modal } : null]}>\n <SelectTrigger\n testID={ids.trigger}\n look={look}\n open={open}\n disabled={disabled}\n error={error}\n glow={glow}\n display={displayLabel(items, current)}\n labelId={label === undefined ? undefined : labelId}\n helperId={helperText === undefined ? undefined : helperId}\n onToggle={() => setOpenState(!open)}\n onKey={handleKey}\n />\n {open ? (\n <SelectMenu items={items} value={current} testIdFor={ids.option} onPick={pick} />\n ) : null}\n </View>\n {helperText === undefined ? null : (\n <RNText id={helperId} style={helperStyle(theme, inputVariantFor(variant), selectInputSize(size), state)}>\n {helperText}\n </RNText>\n )}\n </View>\n );\n});\n\nSelect.displayName = 'Select';\n\nconst styles = StyleSheet.create({\n root: {\n position: 'relative',\n },\n anchor: {\n position: 'relative',\n },\n fullWidth: {\n alignSelf: 'stretch',\n width: '100%',\n },\n auto: {\n alignSelf: 'flex-start',\n },\n});\n","import type { SelectBaseProps, SelectOption, SelectValue } from './Select.base';\nimport { withDefaults } from '../../../utils/withDefaults';\n\ntype SelectDefaultedKeys = 'variant' | 'size' | 'fullWidth' | 'error' | 'glow' | 'pulse' | 'disabled';\n\nexport type ResolvedSelectProps<P extends SelectBaseProps> = P &\n Required<Pick<SelectBaseProps, SelectDefaultedKeys>>;\n\n/**\n * `Select.tsx` leaves `variant`, `size`, `glow` and `pulse` undefined on\n * purpose — undefined resolves to the default variant, MUI's medium and no\n * effects, which keeps its render function under the complexity budget. The\n * native renderer has to name them, so the same resolution happens here.\n */\nconst SELECT_DEFAULTS: Required<Pick<SelectBaseProps, SelectDefaultedKeys>> = {\n variant: 'default',\n size: 'md',\n fullWidth: true,\n error: false,\n glow: false,\n pulse: false,\n disabled: false,\n};\n\nexport const resolveSelectProps = <P extends SelectBaseProps>(props: P): ResolvedSelectProps<P> =>\n withDefaults(props, SELECT_DEFAULTS as Partial<P>) as ResolvedSelectProps<P>;\n\n/** One row of the list: an option, or the disabled placeholder above them. */\nexport interface SelectItem {\n value: SelectValue;\n label: string;\n disabled: boolean;\n /** The placeholder is not an option: it carries no test id and cannot be chosen. */\n placeholder: boolean;\n option?: SelectOption;\n}\n\n/**\n * The list MUI renders: the placeholder first when there is one, then the\n * options, in the order `renderMenuItems` builds them.\n */\nexport function selectItems(options: SelectOption[], placeholder?: string): SelectItem[] {\n const items: SelectItem[] = options.map((option) => ({\n value: option.value,\n label: option.label,\n disabled: option.disabled === true,\n placeholder: false,\n option,\n }));\n if (placeholder === undefined || placeholder === '') return items;\n return [{ value: '', label: placeholder, disabled: true, placeholder: true }, ...items];\n}\n\n/**\n * What the display slot shows.\n *\n * The LAST match wins, which is MUI's own answer: `SelectInput` walks its\n * children and overwrites the display for every child whose value matches, so\n * a list carrying both an empty placeholder and a real empty-valued option\n * shows the option. Values are compared as strings because the DOM stringifies\n * them anyway (MUI's `areEqualValues`).\n */\nexport function displayLabel(items: SelectItem[], value: SelectValue): string {\n let label = '';\n for (const item of items) {\n if (String(item.value) === String(value)) label = item.label;\n }\n return label;\n}\n\n/** The three ids the web puts on the control, spelled exactly as it spells them. */\nexport function selectTestIds(id: string | undefined): {\n root: string | undefined;\n trigger: string;\n option: (value: SelectValue) => string;\n} {\n return {\n root: id,\n trigger: id ? `${id}-select` : 'select',\n option: (value) => (id ? `${id}-option-${value}` : `option-${value}`),\n };\n}\n","import type { SelectVariant } from './Select.base';\nimport type { InputVariant } from '../Input/Input.base';\nimport { ICON_SIZES } from '../../../icons/Icon.types';\nimport { ELEVATION_SHADOWS } from '../../../tokens/ink.core';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Select` RENDERERS DRAW WITH.\n *\n * A `Select` on the web IS an `OutlinedInput` with a display slot and an arrow\n * where the value would be typed, so the box's own numbers — the padding, the\n * border, the radius, the field edge — are `Input.metrics.ts`'s, read through\n * {@link inputVariantFor} rather than restated. What is here is what a select\n * has and a text field does not: the arrow, the option list, and the two\n * heights MUI's `FormControl` offers.\n */\n\n/** Our three variants onto the `Input` variant that draws the same box. */\nexport const inputVariantFor = (variant: SelectVariant): InputVariant =>\n variant === 'default' ? 'outlined' : variant;\n\n/**\n * The house scale as a `FormControl` size.\n *\n * Not `muiSize`: that collapses five onto MUI's three, and a FormControl takes\n * only two — `sm` draws small and EVERY other step, `xs` included, draws\n * medium. Restated from `Select.tsx`'s `formControlSize` so the native side\n * reads the same lossy map rather than inventing a kinder one.\n */\nexport const selectInputSize = (size: SizeValue | undefined): 'sm' | 'md' =>\n size === 'sm' ? 'sm' : 'md';\n\n/**\n * The arrow: MUI's `ArrowDropDown` at `SvgIcon`'s medium size, 7px from the\n * right edge, turned over while the list is open. The display slot reserves\n * 32px for it, so the flow-laid glyph takes the difference as a margin.\n */\nexport const SELECT_ICON = {\n size: ICON_SIZES.md,\n right: 7,\n displayPaddingRight: 32,\n openRotateDeg: 180,\n} as const;\n\n/** What the glyph leaves between itself and the value: 32 - 24 - 7. */\nexport const SELECT_ICON_GAP =\n SELECT_ICON.displayPaddingRight - SELECT_ICON.size - SELECT_ICON.right;\n\n/** `.MuiSelect-select`'s floor, MUI's `1.4375em` at the 16px body size. */\nexport const SELECT_DISPLAY_MIN_HEIGHT = 23;\n\n/**\n * The option list: MUI's `Menu` over a `MenuList` of `MenuItem`s.\n *\n * `selectedAlpha` is `palette.action.selectedOpacity`, which MUI doubles in\n * dark mode; `disabledOpacity` is `palette.action.disabledOpacity`. Neither is\n * on `UiTheme`, whose `action` carries colours rather than opacities.\n */\nexport const SELECT_MENU = {\n itemMinHeight: 48,\n itemPaddingVertical: 6,\n itemPaddingHorizontal: 16,\n listPaddingVertical: 8,\n selectedAlpha: { light: 0.08, dark: 0.16 },\n disabledOpacity: 0.38,\n /** MUI's `Menu` paper is `calc(100% - 96px)` tall at most. */\n maxHeightInset: 96,\n} as const;\n\n/** MUI's `theme.shadows[8]`, the elevation a `Menu` paper rests at. */\nexport const MUI_MENU_SHADOW = ELEVATION_SHADOWS[8];\n\n/** The wash behind the option the value currently names. */\nexport const selectedWashAlpha = (theme: UiTheme): number =>\n theme.mode === 'dark' ? SELECT_MENU.selectedAlpha.dark : SELECT_MENU.selectedAlpha.light;\n\n/**\n * The box a select draws IS the input's box, so these are the input's tables\n * under this component's names — the border widths, the glass and gradient\n * alphas, the halo and the pulse. Restating them here is how the two controls\n * would come to disagree about what an outlined field looks like.\n */\nexport {\n INPUT_BORDER as SELECT_BORDER,\n INPUT_GLASS as SELECT_GLASS,\n INPUT_GLOW as SELECT_GLOW,\n INPUT_GRADIENT as SELECT_GRADIENT,\n INPUT_PULSE as SELECT_PULSE,\n} from '../Input/Input.metrics';\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport {\n MUI_MENU_SHADOW,\n SELECT_DISPLAY_MIN_HEIGHT,\n SELECT_ICON,\n SELECT_ICON_GAP,\n SELECT_MENU,\n inputVariantFor,\n selectedWashAlpha,\n} from './Select.metrics';\nimport type { SelectVariant } from './Select.base';\nimport { INPUT_FONT_SIZE, INPUT_LINE_HEIGHT } from '../Input/Input.metrics';\nimport { fieldLook, horizontalBorderInset, type FieldState } from '../Input/Input.look.native';\nimport { alpha } from '../../../tokens/color';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * WHAT A NATIVE `Select` PAINTS.\n *\n * The box is the `Input`'s box: a select on the web is an `OutlinedInput` with\n * a display slot where the value would be typed, so `fieldLook` decides the\n * fill, the edges and the inset, and this file only says what a select adds —\n * room for the arrow, and the list under it.\n */\nexport interface SelectLook {\n box: ViewStyle;\n display: TextStyle;\n iconGap: number;\n}\n\nexport function selectLook(\n theme: UiTheme,\n variant: SelectVariant,\n size: SizeValue,\n state: FieldState,\n): SelectLook {\n const inputVariant = inputVariantFor(variant);\n const look = fieldLook(theme, inputVariant, size, state);\n const inset = horizontalBorderInset(inputVariant, state.focused);\n\n return {\n box: {\n ...look.box,\n // MUI's arrow is absolute at `right: 7`; laid out in flow it takes the\n // row's right inset instead, and {@link SELECT_ICON_GAP} makes up the\n // difference so the value still stops 32px from the edge.\n paddingRight: SELECT_ICON.right - inset,\n },\n display: {\n ...look.value,\n minHeight: SELECT_DISPLAY_MIN_HEIGHT,\n fontSize: INPUT_FONT_SIZE,\n lineHeight: INPUT_LINE_HEIGHT,\n },\n iconGap: SELECT_ICON_GAP,\n };\n}\n\n/** The option list's paper: MUI's `Menu`, at elevation 8 on the theme's radius. */\nexport function menuStyle(theme: UiTheme, maxHeight: number): ViewStyle {\n return {\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: theme.zIndex.modal,\n maxHeight,\n paddingVertical: SELECT_MENU.listPaddingVertical,\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.radius.md,\n boxShadow: MUI_MENU_SHADOW,\n };\n}\n\n/** One `MenuItem`: 48px tall at least, 6px by 16px of padding, washed when selected. */\nexport function optionStyle(theme: UiTheme, selected: boolean, disabled: boolean): ViewStyle {\n return {\n minHeight: SELECT_MENU.itemMinHeight,\n justifyContent: 'center',\n paddingVertical: SELECT_MENU.itemPaddingVertical,\n paddingHorizontal: SELECT_MENU.itemPaddingHorizontal,\n backgroundColor: selected\n ? alpha(theme.palette.primary.main, selectedWashAlpha(theme))\n : 'transparent',\n opacity: disabled ? SELECT_MENU.disabledOpacity : 1,\n };\n}\n\n/** A `MenuItem`'s label: MUI's `body1`, the same type the display slot sets. */\nexport function optionTextStyle(theme: UiTheme): TextStyle {\n return {\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n fontSize: INPUT_FONT_SIZE,\n lineHeight: INPUT_LINE_HEIGHT,\n };\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/form/Select/Select.native.tsx","../../../src/components/form/Select/Select.helpers.ts","../../../src/components/form/Select/Select.metrics.ts","../../../src/components/form/Select/Select.look.native.ts"],"sourcesContent":["import * as React from 'react';\nimport {\n Platform,\n Pressable,\n ScrollView,\n StyleSheet,\n Text as RNText,\n View,\n useWindowDimensions,\n type StyleProp,\n type ViewStyle,\n} from 'react-native';\n\nimport {\n displayLabel,\n resolveSelectProps,\n selectItems,\n selectTestIds,\n type SelectItem,\n} from './Select.helpers';\nimport { menuStyle, optionStyle, optionTextStyle, selectLook, type SelectLook } from './Select.look.native';\nimport {\n SELECT_GLOW,\n SELECT_ICON,\n SELECT_MENU,\n inputVariantFor,\n selectInputSize,\n} from './Select.metrics';\nimport type { SelectProps, SelectValue } from './Select.types.native';\nimport { Icon } from '../../../icons/Icon.native';\nimport { webAria, webKeyDown, webRole, type WebKeyEvent } from '../../../platform/aria';\nimport { resolveTestId, withoutTestIdProps } from '../../../platform/test-id';\nimport { fieldHeightPx } from '../../../tokens/field-height.core';\nimport { useUiTheme } from '../../../provider/use-ui-theme.native';\nimport type { UiTheme } from '../../../tokens/theme';\nimport { FieldPulse } from '../field-pulse.native';\nimport { helperStyle, labelStyle, type FieldState } from '../Input/Input.look.native';\n\n/** MUI's halo on the outlined input, painted as a shadow. */\nfunction glowStyle(color: string): ViewStyle {\n return Platform.select<ViewStyle>({\n android: { elevation: SELECT_GLOW.rest.blur / 2 },\n default: {\n shadowColor: color,\n shadowOpacity: SELECT_GLOW.rest.alpha,\n shadowRadius: SELECT_GLOW.rest.blur,\n shadowOffset: { width: 0, height: 0 },\n },\n });\n}\n\ninterface MenuProps {\n items: SelectItem[];\n value: SelectValue;\n testIdFor: (value: SelectValue) => string;\n onPick: (item: SelectItem) => void;\n}\n\n/** The option list: MUI's `Menu`, under the field rather than portalled over it. */\nfunction SelectMenu({ items, value, testIdFor, onPick }: MenuProps): React.JSX.Element {\n const theme = useUiTheme();\n const { height } = useWindowDimensions();\n const textStyle = optionTextStyle(theme);\n\n return (\n <View style={menuStyle(theme, height - SELECT_MENU.maxHeightInset)} {...webRole('listbox')}>\n <ScrollView>\n {items.map((item) => {\n const selected = String(item.value) === String(value);\n return (\n <Pressable\n key={`${item.placeholder ? 'placeholder' : 'option'}-${item.value}`}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={item.disabled}\n disabled={item.disabled}\n testID={item.placeholder ? undefined : testIdFor(item.value)}\n onPress={() => onPick(item)}\n style={optionStyle(theme, selected, item.disabled)}\n >\n <RNText style={textStyle}>{item.label}</RNText>\n </Pressable>\n );\n })}\n </ScrollView>\n </View>\n );\n}\n\ninterface TriggerProps {\n testID: string;\n look: SelectLook;\n open: boolean;\n disabled: boolean;\n error: boolean;\n glow: boolean;\n display: string;\n labelId?: string;\n helperId?: string;\n onToggle: () => void;\n onKey: (event: WebKeyEvent) => void;\n}\n\n/**\n * The field itself: MUI's display slot and its arrow, under one `combobox`.\n *\n * `tabIndex` is spelled out because react-native-web only makes a handful of\n * roles focusable on its own, and `combobox` is not one of them — without it\n * the control would not be a tab stop. It goes to -1 when disabled, which is\n * what the web does by leaving the attribute off a disabled field entirely.\n */\nfunction SelectTrigger(props: TriggerProps): React.JSX.Element {\n const theme = useUiTheme();\n const { testID, look, open, disabled, error, glow, display, labelId, helperId } = props;\n\n return (\n <Pressable\n testID={testID}\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={open}\n aria-disabled={disabled}\n disabled={disabled}\n onPress={props.onToggle}\n style={[look.box, glow ? glowStyle(theme.palette.primary.main) : null]}\n {...webAria({\n 'aria-haspopup': 'listbox',\n 'aria-invalid': error,\n ...(labelId === undefined ? {} : { 'aria-labelledby': labelId }),\n ...(helperId === undefined ? {} : { 'aria-describedby': helperId }),\n })}\n {...webKeyDown(props.onKey)}\n >\n <RNText style={look.display} numberOfLines={1}>\n {display}\n </RNText>\n <Icon\n name=\"ArrowDropDown\"\n size={SELECT_ICON.size}\n color={disabled ? theme.palette.action.disabled : theme.palette.action.active}\n testID={`${testID}-icon`}\n style={[\n { marginLeft: look.iconGap },\n open ? { transform: [{ rotate: `${SELECT_ICON.openRotateDeg}deg` }] } : null,\n ]}\n />\n </Pressable>\n );\n}\n\n/** The value the control shows, controlled by the caller or held here. */\nfunction useSelectValue(\n value: SelectValue | undefined,\n defaultValue: SelectValue | undefined,\n): [SelectValue, (next: SelectValue) => void] {\n const [own, setOwn] = React.useState<SelectValue>(defaultValue ?? '');\n return [value ?? own, setOwn];\n}\n\n/** The pulse bar, at the field's own height and corner. */\nfunction SelectPulse({\n theme,\n size,\n testID,\n}: {\n theme: UiTheme;\n size: SelectProps['size'];\n testID: string;\n}): React.JSX.Element {\n return (\n <FieldPulse\n color={theme.palette.primary.main}\n radius={theme.radius.field}\n height={fieldHeightPx(theme.fieldHeight, size ?? 'md')}\n testID={testID}\n />\n );\n}\n\n/**\n * The field's own box. Raised while open: react-native-web gives every View\n * `z-index: 0`, so the anchor's z-index stays inside this root, and the next\n * field down would paint over the list and take its taps.\n */\nfunction rootStyle(theme: UiTheme, fullWidth: boolean | undefined, open: boolean): StyleProp<ViewStyle> {\n return [styles.root, fullWidth ? styles.fullWidth : styles.auto, open ? { zIndex: theme.zIndex.modal } : null];\n}\n\n/**\n * The native `Select`.\n *\n * The list is an absolutely positioned panel under the field rather than a\n * portal over the screen: React Native's `Modal` traps focus, which is right\n * for a dialog and wrong for a dropdown — and wrong for the shared stories,\n * which expect the trigger to keep focus while the list is open. The trade is\n * recorded in `NATIVE-NOTES.md`.\n */\nexport const Select = React.forwardRef<View, SelectProps>((rawProps, ref) => {\n const {\n variant, options, label, helperText, fullWidth, size, placeholder, error, glow, pulse,\n disabled, value, defaultValue, onChange, onOpen, onClose, style, ...others\n } = resolveSelectProps(rawProps);\n\n const theme = useUiTheme();\n const [open, setOpen] = React.useState(false);\n const [current, setCurrent] = useSelectValue(value, defaultValue);\n const labelId = React.useId();\n const helperId = React.useId();\n\n const items = selectItems(options, placeholder);\n const ids = selectTestIds(resolveTestId(others));\n const state: FieldState = { focused: open && !disabled, error, disabled };\n const look = selectLook(theme, variant, size, state);\n\n const setOpenState = (next: boolean): void => {\n if (next === open) return;\n setOpen(next);\n (next ? onOpen : onClose)?.();\n };\n\n const handleKey = (event: WebKeyEvent): void => {\n if (event.key === 'Escape') setOpenState(false);\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') setOpenState(true);\n };\n\n const pick = (item: SelectItem): void => {\n setOpenState(false);\n if (item.option === undefined) return;\n setCurrent(item.value);\n onChange?.({ target: { value: item.value } }, item.option);\n };\n\n return (\n <View\n ref={ref}\n testID={ids.root}\n style={[rootStyle(theme, fullWidth, open), style]}\n {...withoutTestIdProps(others)}\n >\n {pulse ? <SelectPulse theme={theme} size={size} testID={`${ids.trigger}-pulse`} /> : null}\n {label === undefined ? null : (\n <RNText id={labelId} style={labelStyle(theme, inputVariantFor(variant), size, state)}>\n {label}\n </RNText>\n )}\n <View style={[styles.anchor, open ? { zIndex: theme.zIndex.modal } : null]}>\n <SelectTrigger\n testID={ids.trigger}\n look={look}\n open={open}\n disabled={disabled}\n error={error}\n glow={glow}\n display={displayLabel(items, current)}\n labelId={label === undefined ? undefined : labelId}\n helperId={helperText === undefined ? undefined : helperId}\n onToggle={() => setOpenState(!open)}\n onKey={handleKey}\n />\n {open ? (\n <SelectMenu items={items} value={current} testIdFor={ids.option} onPick={pick} />\n ) : null}\n </View>\n {helperText === undefined ? null : (\n <RNText id={helperId} style={helperStyle(theme, inputVariantFor(variant), selectInputSize(size), state)}>\n {helperText}\n </RNText>\n )}\n </View>\n );\n});\n\nSelect.displayName = 'Select';\n\nconst styles = StyleSheet.create({\n root: {\n position: 'relative',\n },\n anchor: {\n position: 'relative',\n },\n fullWidth: {\n alignSelf: 'stretch',\n width: '100%',\n },\n auto: {\n alignSelf: 'flex-start',\n },\n});\n","import type { SelectBaseProps, SelectOption, SelectValue } from './Select.base';\nimport { withDefaults } from '../../../utils/withDefaults';\n\ntype SelectDefaultedKeys = 'variant' | 'size' | 'fullWidth' | 'error' | 'glow' | 'pulse' | 'disabled';\n\nexport type ResolvedSelectProps<P extends SelectBaseProps> = P &\n Required<Pick<SelectBaseProps, SelectDefaultedKeys>>;\n\n/**\n * `Select.tsx` leaves `variant`, `size`, `glow` and `pulse` undefined on\n * purpose — undefined resolves to the default variant, MUI's medium and no\n * effects, which keeps its render function under the complexity budget. The\n * native renderer has to name them, so the same resolution happens here.\n */\nconst SELECT_DEFAULTS: Required<Pick<SelectBaseProps, SelectDefaultedKeys>> = {\n variant: 'default',\n size: 'md',\n fullWidth: true,\n error: false,\n glow: false,\n pulse: false,\n disabled: false,\n};\n\nexport const resolveSelectProps = <P extends SelectBaseProps>(props: P): ResolvedSelectProps<P> =>\n withDefaults(props, SELECT_DEFAULTS as Partial<P>) as ResolvedSelectProps<P>;\n\n/** One row of the list: an option, or the disabled placeholder above them. */\nexport interface SelectItem {\n value: SelectValue;\n label: string;\n disabled: boolean;\n /** The placeholder is not an option: it carries no test id and cannot be chosen. */\n placeholder: boolean;\n option?: SelectOption;\n}\n\n/**\n * The list MUI renders: the placeholder first when there is one, then the\n * options, in the order `renderMenuItems` builds them.\n */\nexport function selectItems(options: SelectOption[], placeholder?: string): SelectItem[] {\n const items: SelectItem[] = options.map((option) => ({\n value: option.value,\n label: option.label,\n disabled: option.disabled === true,\n placeholder: false,\n option,\n }));\n if (placeholder === undefined || placeholder === '') return items;\n return [{ value: '', label: placeholder, disabled: true, placeholder: true }, ...items];\n}\n\n/**\n * What the display slot shows.\n *\n * The LAST match wins, which is MUI's own answer: `SelectInput` walks its\n * children and overwrites the display for every child whose value matches, so\n * a list carrying both an empty placeholder and a real empty-valued option\n * shows the option. Values are compared as strings because the DOM stringifies\n * them anyway (MUI's `areEqualValues`).\n */\nexport function displayLabel(items: SelectItem[], value: SelectValue): string {\n let label = '';\n for (const item of items) {\n if (String(item.value) === String(value)) label = item.label;\n }\n return label;\n}\n\n/** The three ids the web puts on the control, spelled exactly as it spells them. */\nexport function selectTestIds(id: string | undefined): {\n root: string | undefined;\n trigger: string;\n option: (value: SelectValue) => string;\n} {\n return {\n root: id,\n trigger: id ? `${id}-select` : 'select',\n option: (value) => (id ? `${id}-option-${value}` : `option-${value}`),\n };\n}\n","import type { SelectVariant } from './Select.base';\nimport type { InputVariant } from '../Input/Input.base';\nimport { ICON_SIZES } from '../../../icons/Icon.types';\nimport { ELEVATION_SHADOWS } from '../../../tokens/ink.core';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * THE NUMBERS BOTH `Select` RENDERERS DRAW WITH.\n *\n * A `Select` on the web IS an `OutlinedInput` with a display slot and an arrow\n * where the value would be typed, so the box's own numbers — the padding, the\n * border, the radius, the field edge — are `Input.metrics.ts`'s, read through\n * {@link inputVariantFor} rather than restated. What is here is what a select\n * has and a text field does not: the arrow, the option list, and the two\n * heights MUI's `FormControl` offers.\n */\n\n/** Our three variants onto the `Input` variant that draws the same box. */\nexport const inputVariantFor = (variant: SelectVariant): InputVariant =>\n variant === 'default' ? 'outlined' : variant;\n\n/**\n * The house scale as a `FormControl` size.\n *\n * Not `muiSize`: that collapses five onto MUI's three, and a FormControl takes\n * only two — `sm` draws small and EVERY other step, `xs` included, draws\n * medium. Restated from `Select.tsx`'s `formControlSize` so the native side\n * reads the same lossy map rather than inventing a kinder one.\n */\nexport const selectInputSize = (size: SizeValue | undefined): 'sm' | 'md' =>\n size === 'sm' ? 'sm' : 'md';\n\n/**\n * The arrow: MUI's `ArrowDropDown` at `SvgIcon`'s medium size, 7px from the\n * right edge, turned over while the list is open. The display slot reserves\n * 32px for it, so the flow-laid glyph takes the difference as a margin.\n */\nexport const SELECT_ICON = {\n size: ICON_SIZES.md,\n right: 7,\n displayPaddingRight: 32,\n openRotateDeg: 180,\n} as const;\n\n/** What the glyph leaves between itself and the value: 32 - 24 - 7. */\nexport const SELECT_ICON_GAP =\n SELECT_ICON.displayPaddingRight - SELECT_ICON.size - SELECT_ICON.right;\n\n/** `.MuiSelect-select`'s floor, MUI's `1.4375em` at the 16px body size. */\nexport const SELECT_DISPLAY_MIN_HEIGHT = 23;\n\n/**\n * The option list: MUI's `Menu` over a `MenuList` of `MenuItem`s.\n *\n * `selectedAlpha` is `palette.action.selectedOpacity`, which MUI doubles in\n * dark mode; `disabledOpacity` is `palette.action.disabledOpacity`. Neither is\n * on `UiTheme`, whose `action` carries colours rather than opacities.\n */\nexport const SELECT_MENU = {\n itemMinHeight: 48,\n itemPaddingVertical: 6,\n itemPaddingHorizontal: 16,\n listPaddingVertical: 8,\n selectedAlpha: { light: 0.08, dark: 0.16 },\n disabledOpacity: 0.38,\n /** MUI's `Menu` paper is `calc(100% - 96px)` tall at most. */\n maxHeightInset: 96,\n} as const;\n\n/** MUI's `theme.shadows[8]`, the elevation a `Menu` paper rests at. */\nexport const MUI_MENU_SHADOW = ELEVATION_SHADOWS[8];\n\n/** The wash behind the option the value currently names. */\nexport const selectedWashAlpha = (theme: UiTheme): number =>\n theme.mode === 'dark' ? SELECT_MENU.selectedAlpha.dark : SELECT_MENU.selectedAlpha.light;\n\n/**\n * The box a select draws IS the input's box, so these are the input's tables\n * under this component's names — the border widths, the glass and gradient\n * alphas, the halo and the pulse. Restating them here is how the two controls\n * would come to disagree about what an outlined field looks like.\n */\nexport {\n INPUT_BORDER as SELECT_BORDER,\n INPUT_GLASS as SELECT_GLASS,\n INPUT_GLOW as SELECT_GLOW,\n INPUT_GRADIENT as SELECT_GRADIENT,\n INPUT_PULSE as SELECT_PULSE,\n} from '../Input/Input.metrics';\n\n/**\n * WHEN A `Select` BECOMES A SEARCH BOX, AND HOW TALL ITS LIST MAY GROW.\n *\n * Past five options a menu stops being scannable at a glance and starts being\n * scrolled — and MUI's menu grows to the viewport's height to show them all, so\n * a staff picker covered the whole screen. From six options on the field turns\n * into the searchable dropdown (`CreatableSelect`'s engine, MUI `Autocomplete`)\n * and its list stops at {@link SELECT_SEARCH.listMaxHeight}: about six rows,\n * the seventh cut in half so the list reads as scrollable.\n */\nexport const SEARCHABLE_MIN_OPTIONS = 6;\n\nexport const SELECT_SEARCH = {\n /** px — six 40px rows and half of the seventh. */\n listMaxHeight: 260,\n /**\n * px — what a field that does not fill its row adds to its longest label:\n * the input's inline padding and the arrow's slot.\n */\n fieldChrome: 72,\n} as const;\n","import type { TextStyle, ViewStyle } from 'react-native';\n\nimport {\n MUI_MENU_SHADOW,\n SELECT_DISPLAY_MIN_HEIGHT,\n SELECT_ICON,\n SELECT_ICON_GAP,\n SELECT_MENU,\n inputVariantFor,\n selectedWashAlpha,\n} from './Select.metrics';\nimport type { SelectVariant } from './Select.base';\nimport { INPUT_FONT_SIZE, INPUT_LINE_HEIGHT } from '../Input/Input.metrics';\nimport { fieldLook, horizontalBorderInset, type FieldState } from '../Input/Input.look.native';\nimport { alpha } from '../../../tokens/color';\nimport type { UiTheme } from '../../../tokens/theme';\nimport type { SizeValue } from '../../../tokens/vocabulary';\n\n/**\n * WHAT A NATIVE `Select` PAINTS.\n *\n * The box is the `Input`'s box: a select on the web is an `OutlinedInput` with\n * a display slot where the value would be typed, so `fieldLook` decides the\n * fill, the edges and the inset, and this file only says what a select adds —\n * room for the arrow, and the list under it.\n */\nexport interface SelectLook {\n box: ViewStyle;\n display: TextStyle;\n iconGap: number;\n}\n\nexport function selectLook(\n theme: UiTheme,\n variant: SelectVariant,\n size: SizeValue,\n state: FieldState,\n): SelectLook {\n const inputVariant = inputVariantFor(variant);\n const look = fieldLook(theme, inputVariant, size, state);\n const inset = horizontalBorderInset(inputVariant, state.focused);\n\n return {\n box: {\n ...look.box,\n // MUI's arrow is absolute at `right: 7`; laid out in flow it takes the\n // row's right inset instead, and {@link SELECT_ICON_GAP} makes up the\n // difference so the value still stops 32px from the edge.\n paddingRight: SELECT_ICON.right - inset,\n },\n display: {\n ...look.value,\n minHeight: SELECT_DISPLAY_MIN_HEIGHT,\n fontSize: INPUT_FONT_SIZE,\n lineHeight: INPUT_LINE_HEIGHT,\n },\n iconGap: SELECT_ICON_GAP,\n };\n}\n\n/** The option list's paper: MUI's `Menu`, at elevation 8 on the theme's radius. */\nexport function menuStyle(theme: UiTheme, maxHeight: number): ViewStyle {\n return {\n position: 'absolute',\n top: '100%',\n left: 0,\n right: 0,\n zIndex: theme.zIndex.modal,\n maxHeight,\n paddingVertical: SELECT_MENU.listPaddingVertical,\n backgroundColor: theme.palette.background.paper,\n borderRadius: theme.radius.md,\n boxShadow: MUI_MENU_SHADOW,\n };\n}\n\n/** One `MenuItem`: 48px tall at least, 6px by 16px of padding, washed when selected. */\nexport function optionStyle(theme: UiTheme, selected: boolean, disabled: boolean): ViewStyle {\n return {\n minHeight: SELECT_MENU.itemMinHeight,\n justifyContent: 'center',\n paddingVertical: SELECT_MENU.itemPaddingVertical,\n paddingHorizontal: SELECT_MENU.itemPaddingHorizontal,\n backgroundColor: selected\n ? alpha(theme.palette.primary.main, selectedWashAlpha(theme))\n : 'transparent',\n opacity: disabled ? SELECT_MENU.disabledOpacity : 1,\n };\n}\n\n/** A `MenuItem`'s label: MUI's `body1`, the same type the display slot sets. */\nexport function optionTextStyle(theme: UiTheme): TextStyle {\n return {\n color: theme.palette.text.primary,\n fontFamily: theme.typography.fontFamily,\n fontSize: INPUT_FONT_SIZE,\n lineHeight: INPUT_LINE_HEIGHT,\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -12,18 +12,18 @@ import {
|
|
|
12
12
|
} from "../chunk-GWFAINQ7.js";
|
|
13
13
|
import {
|
|
14
14
|
AppHeaderDetails
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-SAJ5H5VC.js";
|
|
16
16
|
import {
|
|
17
17
|
brandGradient,
|
|
18
18
|
highlightOf,
|
|
19
19
|
initialsOf
|
|
20
20
|
} from "../chunk-IQU4HKND.js";
|
|
21
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-WAD5VL6B.js";
|
|
22
|
+
import "../chunk-3U3H3BZM.js";
|
|
22
23
|
import "../chunk-PIUQYYOM.js";
|
|
24
|
+
import "../chunk-FPVYD7BO.js";
|
|
23
25
|
import "../chunk-LYVTJLCF.js";
|
|
24
26
|
import "../chunk-CRN4KKNI.js";
|
|
25
|
-
import "../chunk-3U3H3BZM.js";
|
|
26
|
-
import "../chunk-FPVYD7BO.js";
|
|
27
27
|
import "../chunk-IM4DMKH4.js";
|
|
28
28
|
import "../chunk-MQ277OLB.js";
|
|
29
29
|
import "../chunk-ST7B54JN.js";
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import "../chunk-R26KYJHK.js";
|
|
2
2
|
import {
|
|
3
3
|
SectionNav
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-S22XIXLL.js";
|
|
5
|
+
import "../chunk-J44PPGBF.js";
|
|
6
6
|
import {
|
|
7
7
|
sectionNavBarInset
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
} from "../chunk-CGL7R37P.js";
|
|
9
|
+
import "../chunk-2YKTB2IZ.js";
|
|
10
10
|
import {
|
|
11
11
|
RaisedActionButton
|
|
12
|
-
} from "../chunk-
|
|
13
|
-
import "../chunk-
|
|
12
|
+
} from "../chunk-HGRC635A.js";
|
|
13
|
+
import "../chunk-FVKBP3UX.js";
|
|
14
14
|
import "../chunk-VHVI3D4R.js";
|
|
15
15
|
import "../chunk-TMSWLFL4.js";
|
|
16
16
|
import "../chunk-KIHGTL2D.js";
|
|
17
17
|
import "../chunk-5AK2EZG5.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-GMC3F43L.js";
|
|
19
|
+
import "../chunk-6C5D6O3D.js";
|
|
19
20
|
import "../chunk-WDQRQIT7.js";
|
|
20
21
|
import "../chunk-ZCXVTFYQ.js";
|
|
21
22
|
import "../chunk-M5ZXL52T.js";
|
|
22
|
-
import "../chunk-6C5D6O3D.js";
|
|
23
23
|
import "../chunk-3UIDKLML.js";
|
|
24
24
|
import "../chunk-PYC4CWCQ.js";
|
|
25
25
|
import "../chunk-TYJR4GOF.js";
|
|
@@ -71,5 +71,20 @@ export interface SelectBaseProps {
|
|
|
71
71
|
disabled?: boolean;
|
|
72
72
|
testID?: string;
|
|
73
73
|
dataTestId?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Draw the field as a search box that filters the options as you type,
|
|
76
|
+
* with a list of bounded height.
|
|
77
|
+
*
|
|
78
|
+
* Left unset, it follows the option count: a list longer than
|
|
79
|
+
* five options searches (`SEARCHABLE_MIN_OPTIONS`), a shorter one opens
|
|
80
|
+
* as a plain menu. `multiple` and `renderValue` always keep the menu.
|
|
81
|
+
*/
|
|
82
|
+
searchable?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* What the searchable list says when nothing matches the typed text. The
|
|
85
|
+
* host's sentence: this library ships no copy. Unset, the empty list shows
|
|
86
|
+
* no message.
|
|
87
|
+
*/
|
|
88
|
+
noOptionsText?: string;
|
|
74
89
|
}
|
|
75
90
|
//# sourceMappingURL=Select.base.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/Select/Select.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7D,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;OAEG;IACH,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Select.base.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/Select/Select.base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7D,2FAA2F;AAC3F,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;OAEG;IACH,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SelectProps } from './Select.types';
|
|
3
|
+
/**
|
|
4
|
+
* The house select. Up to five options it opens a menu; from six on it is a
|
|
5
|
+
* search box over a list of bounded height (`Select.searchable.tsx`), with the
|
|
6
|
+
* same props, events and test ids either way. `searchable` overrides the count.
|
|
7
|
+
*/
|
|
3
8
|
export declare const Select: React.ForwardRefExoticComponent<Omit<SelectProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
4
9
|
//# sourceMappingURL=Select.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/Select/Select.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/Select/Select.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA0HlD;;;;GAIG;AACH,eAAO,MAAM,MAAM,iGAKjB,CAAC"}
|
|
@@ -69,4 +69,24 @@ export declare const selectedWashAlpha: (theme: UiTheme) => number;
|
|
|
69
69
|
* would come to disagree about what an outlined field looks like.
|
|
70
70
|
*/
|
|
71
71
|
export { INPUT_BORDER as SELECT_BORDER, INPUT_GLASS as SELECT_GLASS, INPUT_GLOW as SELECT_GLOW, INPUT_GRADIENT as SELECT_GRADIENT, INPUT_PULSE as SELECT_PULSE, } from '../Input/Input.metrics';
|
|
72
|
+
/**
|
|
73
|
+
* WHEN A `Select` BECOMES A SEARCH BOX, AND HOW TALL ITS LIST MAY GROW.
|
|
74
|
+
*
|
|
75
|
+
* Past five options a menu stops being scannable at a glance and starts being
|
|
76
|
+
* scrolled — and MUI's menu grows to the viewport's height to show them all, so
|
|
77
|
+
* a staff picker covered the whole screen. From six options on the field turns
|
|
78
|
+
* into the searchable dropdown (`CreatableSelect`'s engine, MUI `Autocomplete`)
|
|
79
|
+
* and its list stops at {@link SELECT_SEARCH.listMaxHeight}: about six rows,
|
|
80
|
+
* the seventh cut in half so the list reads as scrollable.
|
|
81
|
+
*/
|
|
82
|
+
export declare const SEARCHABLE_MIN_OPTIONS = 6;
|
|
83
|
+
export declare const SELECT_SEARCH: {
|
|
84
|
+
/** px — six 40px rows and half of the seventh. */
|
|
85
|
+
readonly listMaxHeight: 260;
|
|
86
|
+
/**
|
|
87
|
+
* px — what a field that does not fill its row adds to its longest label:
|
|
88
|
+
* the input's inline padding and the arrow's slot.
|
|
89
|
+
*/
|
|
90
|
+
readonly fieldChrome: 72;
|
|
91
|
+
};
|
|
72
92
|
//# sourceMappingURL=Select.metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.metrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/Select/Select.metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;;;;GASG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,eAAe,GAAI,SAAS,aAAa,KAAG,YACX,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,GAAG,SAAS,KAAG,IAAI,GAAG,IACxC,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,eAAe,QAC4C,CAAC;AAEzE,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;IAOtB,8DAA8D;;CAEtD,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,eAAe,wGAAuB,CAAC;AAEpD,4DAA4D;AAC5D,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,MACuC,CAAC;AAE3F;;;;;GAKG;AACH,OAAO,EACL,YAAY,IAAI,aAAa,EAC7B,WAAW,IAAI,YAAY,EAC3B,UAAU,IAAI,WAAW,EACzB,cAAc,IAAI,eAAe,EACjC,WAAW,IAAI,YAAY,GAC5B,MAAM,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"Select.metrics.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/Select/Select.metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;;;;;;;GASG;AAEH,2EAA2E;AAC3E,eAAO,MAAM,eAAe,GAAI,SAAS,aAAa,KAAG,YACX,CAAC;AAE/C;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,SAAS,GAAG,SAAS,KAAG,IAAI,GAAG,IACxC,CAAC;AAE9B;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,eAAe,QAC4C,CAAC;AAEzE,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;IAOtB,8DAA8D;;CAEtD,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,eAAe,wGAAuB,CAAC;AAEpD,4DAA4D;AAC5D,eAAO,MAAM,iBAAiB,GAAI,OAAO,OAAO,KAAG,MACuC,CAAC;AAE3F;;;;;GAKG;AACH,OAAO,EACL,YAAY,IAAI,aAAa,EAC7B,WAAW,IAAI,YAAY,EAC3B,UAAU,IAAI,WAAW,EACzB,cAAc,IAAI,eAAe,EACjC,WAAW,IAAI,YAAY,GAC5B,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,eAAO,MAAM,aAAa;IACxB,kDAAkD;;IAElD;;;OAGG;;CAEK,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SelectProps } from './Select.types';
|
|
3
|
+
/**
|
|
4
|
+
* THE SELECT, PAST FIVE OPTIONS: a search box over a list of bounded height.
|
|
5
|
+
*
|
|
6
|
+
* Same engine as `CreatableSelect` — MUI `Autocomplete` — so every searchable
|
|
7
|
+
* dropdown in the library types, filters and scrolls the same way. What it
|
|
8
|
+
* keeps from `Select` is the whole CONTRACT, so a call site cannot tell which
|
|
9
|
+
* one it got until it opens it:
|
|
10
|
+
*
|
|
11
|
+
* - the field chrome ({@link SelectFieldControl}: variant, size, glow, pulse);
|
|
12
|
+
* - the floating label, placeholder, helper text and error;
|
|
13
|
+
* - `onChange(event)` with `event.target.value` — the option's value, a number
|
|
14
|
+
* staying a number, exactly what MUI's `Select` hands its handlers;
|
|
15
|
+
* - disabled options, and the `-select` / `-option-<value>` test ids.
|
|
16
|
+
*
|
|
17
|
+
* It cannot be cleared (a `Select` has no "none" either — its placeholder is
|
|
18
|
+
* disabled), and it never accepts text that is not an option.
|
|
19
|
+
*/
|
|
20
|
+
/** Whether `props` should render as a search box. */
|
|
21
|
+
export declare function shouldSearch(props: SelectProps): boolean;
|
|
22
|
+
export declare const SearchableSelect: React.ForwardRefExoticComponent<Omit<SelectProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
//# sourceMappingURL=Select.searchable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.searchable.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/Select/Select.searchable.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOhE;;;;;;;;;;;;;;;;GAgBG;AAEH,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAIxD;AAiGD,eAAO,MAAM,gBAAgB,iGA+D3B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type FormControlProps } from '@mui/material/FormControl/index.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import type { SelectProps } from './Select.types';
|
|
4
|
+
import type { SizeValue } from '../../../tokens/vocabulary';
|
|
5
|
+
/** What {@link SelectFieldControl} takes: a FormControl, plus the four look switches. */
|
|
6
|
+
export interface SelectFieldControlProps extends FormControlProps {
|
|
7
|
+
customVariant?: SelectProps['variant'];
|
|
8
|
+
fieldSize: SizeValue;
|
|
9
|
+
glow?: boolean;
|
|
10
|
+
pulse?: boolean;
|
|
11
|
+
'data-testid'?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The styled FormControl, behind a component with a NAMED type: a `styled()`
|
|
15
|
+
* export's inferred type reaches into `@mui/system`'s pnpm path, which the
|
|
16
|
+
* declaration build refuses to write (TS2742).
|
|
17
|
+
*/
|
|
18
|
+
export declare const SelectFieldControl: React.ForwardRefExoticComponent<Omit<SelectFieldControlProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
19
|
+
/**
|
|
20
|
+
* The house scale as a FormControl size.
|
|
21
|
+
*
|
|
22
|
+
* Not `muiSize`: that collapses five onto MUI's three, and a FormControl takes
|
|
23
|
+
* only two. This component's scale is already narrowed to `sm | md`, so the map
|
|
24
|
+
* is exact rather than lossy.
|
|
25
|
+
*/
|
|
26
|
+
export declare const formControlSize: (size: SelectProps["size"]) => "small" | "medium" | undefined;
|
|
27
|
+
//# sourceMappingURL=Select.styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/form/Select/Select.styles.tsx"],"names":[],"mappings":"AAAA,OAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAExF,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAIlD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAmJ5D,yFAAyF;AACzF,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,6GAE9B,CAAC;AAIF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,WAAW,CAAC,MAAM,CAAC,KAAG,OAAO,GAAG,QAAQ,GAAG,SAGhF,CAAC"}
|
|
@@ -71,5 +71,20 @@ export interface SelectBaseProps {
|
|
|
71
71
|
disabled?: boolean;
|
|
72
72
|
testID?: string;
|
|
73
73
|
dataTestId?: string;
|
|
74
|
+
/**
|
|
75
|
+
* Draw the field as a search box that filters the options as you type,
|
|
76
|
+
* with a list of bounded height.
|
|
77
|
+
*
|
|
78
|
+
* Left unset, it follows the option count: a list longer than
|
|
79
|
+
* five options searches (`SEARCHABLE_MIN_OPTIONS`), a shorter one opens
|
|
80
|
+
* as a plain menu. `multiple` and `renderValue` always keep the menu.
|
|
81
|
+
*/
|
|
82
|
+
searchable?: boolean;
|
|
83
|
+
/**
|
|
84
|
+
* What the searchable list says when nothing matches the typed text. The
|
|
85
|
+
* host's sentence: this library ships no copy. Unset, the empty list shows
|
|
86
|
+
* no message.
|
|
87
|
+
*/
|
|
88
|
+
noOptionsText?: string;
|
|
74
89
|
}
|
|
75
90
|
//# sourceMappingURL=Select.base.d.ts.map
|