@ryuzaki13/react-foundation-ui 1.0.18 → 1.0.19
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/dist/chunks/{select-CFbZS7fx.js → select-CniUoHU_.js} +115 -77
- package/dist/chunks/select-CniUoHU_.js.map +1 -0
- package/dist/preset-select/index.js +1 -1
- package/dist/select/Select.d.ts +3 -2
- package/dist/select/Select.d.ts.map +1 -1
- package/dist/select/SelectOptionGroup.d.ts +11 -0
- package/dist/select/SelectOptionGroup.d.ts.map +1 -0
- package/dist/select/index.js +1 -1
- package/dist/select/lib/createSelectOptionSections.d.ts +14 -0
- package/dist/select/lib/createSelectOptionSections.d.ts.map +1 -0
- package/dist/select/lib/getOptionSearchText.d.ts +3 -1
- package/dist/select/lib/getOptionSearchText.d.ts.map +1 -1
- package/dist/state-select/index.js +1 -1
- package/package.json +1 -1
- package/storybook-static/assets/{Badge-DWmXvSEt.js → Badge-D_WmNn4y.js} +1 -1
- package/storybook-static/assets/{Badge.stories-DrUkR5Kt.js → Badge.stories-U00ZjiZG.js} +1 -1
- package/storybook-static/assets/{Button-gqIyGTVm.js → Button-CSAUZh28.js} +1 -1
- package/storybook-static/assets/{Button-CBzJWtGT.js → Button-D6lDbX3u.js} +1 -1
- package/storybook-static/assets/{Button.stories-DarSDitm.js → Button.stories-BoqlEzDC.js} +1 -1
- package/storybook-static/assets/{CheckBox-CClp47K7.js → CheckBox-D5RDuslx.js} +1 -1
- package/storybook-static/assets/{CheckBox-Be5y5Yaf.js → CheckBox-O0Riv4G0.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-D-XTwN4w.js → CheckBox.stories-C5vwe09O.js} +1 -1
- package/storybook-static/assets/{Color-KMSTOMOX-Pv032miJ.js → Color-KMSTOMOX-BPWB1F58.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BkVTXUpG.js → ContextMenu-C7VPqNQh.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-DtvzPaIF.js → ContextMenu.stories-DMJS0eVK.js} +1 -1
- package/storybook-static/assets/{DateInput-6pvp1eRu.js → DateInput-BTsGvu-I.js} +1 -1
- package/storybook-static/assets/{DateInput-CbQwETpT.js → DateInput-D2Y798Qp.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-DRcN3ybd.js → DateInput.stories-UVnlKxGm.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-CAB32ti_.js → DateRangePresetSelect-BrHpjOGn.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-D6q7Kef5.js → DateRangePresetSelect-CgneHL9m.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-DN6TkVtw.js → DateRangePresetSelect.stories-ax9vHEAe.js} +1 -1
- package/storybook-static/assets/{Detail-CphbEg1M.js → Detail-DsUqYKBL.js} +1 -1
- package/storybook-static/assets/{Detail.stories-Dc5Rx4u4.js → Detail.stories-BfLSCMUs.js} +1 -1
- package/storybook-static/assets/{Dialog-ndurUKqc.js → Dialog-BH4bk-0Z.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-BvLARKjm.js → Dialog.stories-BnVA_xxd.js} +1 -1
- package/storybook-static/assets/{Disclosure-2VsNuiNF.js → Disclosure-Y5wcCyNo.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-eGJxzZmh.js → Disclosure.stories-Cj-6MIBl.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-CpVFRA5Y.js → DocsRenderer-JROSPFPF-DBs6q2X7.js} +2 -2
- package/storybook-static/assets/{DropZone-B8a2PM2e.js → DropZone-CoHuwX-b.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-DoBeAZdH.js → DropZone.stories-CRo1gU6s.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-Dyi86Exa.js → DropdownMenu-B4k8SvXE.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-BDyx4-Wf.js → ExpandableActionPanel.stories-BzCwb5XY.js} +1 -1
- package/storybook-static/assets/{Flex-B71m7CmC.js → Flex-DAlPnoyb.js} +1 -1
- package/storybook-static/assets/{Flex-DycwM4Fy.js → Flex-_SHSjraN.js} +1 -1
- package/storybook-static/assets/{Flex.stories-DNNoTDfs.js → Flex.stories-CoFPyXJs.js} +1 -1
- package/storybook-static/assets/{Grid-DzNawx4O.js → Grid-DcybsfOE.js} +1 -1
- package/storybook-static/assets/{Grid-CCVTg58v.js → Grid-Iuqk9TTe.js} +1 -1
- package/storybook-static/assets/{Grid.stories-D62x4nnt.js → Grid.stories-Bk96A8KC.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-BkBPtN0b.js → ImageCropper.stories-ByrSBnja.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-BNrfKcoR.js → ImageRenderer-gf_q-ONP.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-DQpqGfZ5.js → ImageRenderer.stories-BLYBSARQ.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-DzCNwypO.js → ImageView.stories-titYp-MM.js} +1 -1
- package/storybook-static/assets/{Input-D7RhI3F_.js → Input-BUCw6LuQ.js} +1 -1
- package/storybook-static/assets/{Input-DEvutRWc.js → Input-DQAmwpKH.js} +1 -1
- package/storybook-static/assets/{Input.stories-CQtNzJ2d.js → Input.stories-BxQePDp5.js} +1 -1
- package/storybook-static/assets/{InputDateTime-2xC784cj.js → InputDateTime-Ddecrzyl.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-DtYUywAW.js → InputDateTime.stories-DureL-Mi.js} +1 -1
- package/storybook-static/assets/{InputFile-LuB6ELgM.js → InputFile-CMaET8Mf.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-psIGnnDp.js → InputFile.stories-DjcYO4oK.js} +1 -1
- package/storybook-static/assets/{InputFiles-C71LfhQ3.js → InputFiles-CJP_43yk.js} +1 -1
- package/storybook-static/assets/{InputFiles-DRacqAIw.js → InputFiles-D4QBkXR-.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-BAO31sqC.js → InputFiles.stories-D59JNRfr.js} +1 -1
- package/storybook-static/assets/{InputImage-vZyjm8oI.js → InputImage-CD6r23HA.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-B9rN6Rxs.js → InputImage.stories-MSQPxiUk.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-CxDe5Gw8.js → LayoutPicker-bfpPHWZQ.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-D8cCxXXP.js → LayoutPicker.stories-C4mw3v4r.js} +1 -1
- package/storybook-static/assets/{Listbox-5iar6ma8.js → Listbox-B48HH949.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-COp6WiMB.js → Listbox.stories-P6m6Xtp9.js} +1 -1
- package/storybook-static/assets/{Modal-zV3K6vvv.js → Modal-60wYxR1C.js} +1 -1
- package/storybook-static/assets/{Modal.stories-CYmv-FaJ.js → Modal.stories-CW75CTPA.js} +1 -1
- package/storybook-static/assets/{MultiSelect-UizFi3d9.js → MultiSelect-1FTahVkX.js} +1 -1
- package/storybook-static/assets/{MultiSelect-D41OCY5x.js → MultiSelect-DbkLpHKL.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-u0AlSlZp.js → MultiSelect.stories-DtNSoSgt.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-hQChUMce.js → NotificationsHost-Cons6grm.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-D6g7WJjS.js → NotificationsHost.stories-BOwlyZjS.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-CiamQM6C.js → ODataMultiSelect-DfnQQURe.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-5eDEemGQ.js → ODataMultiSelect.stories-DXFgJSI2.js} +1 -1
- package/storybook-static/assets/{ODataSelect-BiWVXqPq.js → ODataSelect-BT-65yUm.js} +1 -1
- package/storybook-static/assets/{ODataSelect-CLx5JSMi.js → ODataSelect-YSvYEbvr.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-GwKgtC-N.js → ODataSelect.stories-CvGMCPLU.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-CzMZie_w.js → ODataTreeMultiSelect-C2Md-SrL.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-Da6MlEkV.js → ODataTreeMultiSelect.stories-C8ApR1Sv.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-CK7MxVU8.js → ODataTreeSelect-x8sFI-u2.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-D8CwVfe-.js → ODataTreeSelect.stories-CPriRr5I.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DqP0nweD.js → PeriodSelect-BZJyFSdN.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-BJXRGemD.js → PeriodSelect.stories-CtX4Ibbs.js} +1 -1
- package/storybook-static/assets/{Popover-D6qr-zdh.js → Popover-DaeR4BV_.js} +1 -1
- package/storybook-static/assets/{Popover.stories-wr4nVVeK.js → Popover.stories-C63N21sy.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-CX-JBXWg.js → PresetRangeDateInput-aaXvHNQh.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-CiMPYtxH.js → PresetRangeDateInput.stories-BM34C5xi.js} +1 -1
- package/storybook-static/assets/{RadioButton-CAE1c9uv.js → RadioButton-mvrQ8VSg.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-BysL-Bxz.js → RadioButton.stories-ROTAgef0.js} +1 -1
- package/storybook-static/assets/{RadioGroup-DxUA0aFk.js → RadioGroup-BcUi-6jJ.js} +1 -1
- package/storybook-static/assets/{RadioGroup-B1xxoy7T.js → RadioGroup-D8X2vCGo.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-Dhx6ULhk.js → RadioGroup.stories-D_XdSCvW.js} +1 -1
- package/storybook-static/assets/Select-B3mAjoSF.js +12 -0
- package/storybook-static/assets/Select-DshPuDqw.js +60 -0
- package/storybook-static/assets/Select.stories-B0CUlClA.js +46 -0
- package/storybook-static/assets/{SelectOptionContent-DXQBspsR.js → SelectOptionContent-Bp6u5oGr.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-b8rZxZBe.js → SerializableSelect-BaC_djq_.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-Byb9ssGD.js → SerializableSelect-DxFWB3Yw.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-D4pNvhz2.js → SerializableSelect.stories-CxBEpJLW.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-Dx8iPd-Q.js → SingleDateTimeInput-BSH4emHu.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-B2fchXdY.js → SingleDateTimeInput.stories-cYnhzTMl.js} +1 -1
- package/storybook-static/assets/{Slider-CFQMYiQq.js → Slider-DkjesSkp.js} +1 -1
- package/storybook-static/assets/{Slider.stories-EcLVbioI.js → Slider.stories-DLUrasL5.js} +1 -1
- package/storybook-static/assets/{SliderInput-CGhUFTU0.js → SliderInput-CmPkAcqZ.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-D_WSCFgt.js → SliderInput.stories-Fv5urNKI.js} +1 -1
- package/storybook-static/assets/{Sortable-BsOnR1uN.js → Sortable-BSnDSyV0.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-CPDoci0O.js → Sortable.stories-BE3qPo0z.js} +1 -1
- package/storybook-static/assets/{Splitter-CYyV_8Pq.js → Splitter-AiSG0IlN.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-DiVFmplz.js → Splitter.stories-CULtDRbv.js} +1 -1
- package/storybook-static/assets/{StateSelect-C9MDIBO7.js → StateSelect-BOK8WQ0m.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-snID0UC6.js → StateSelect.stories-9EwRNcC9.js} +1 -1
- package/storybook-static/assets/{Switch-BBFxT8_x.js → Switch-6vYGq9ue.js} +1 -1
- package/storybook-static/assets/{Switch.stories-BC53wJqW.js → Switch.stories-Ce72-4pP.js} +1 -1
- package/storybook-static/assets/{Table-BnfSUBvR.js → Table-p190sNTC.js} +1 -1
- package/storybook-static/assets/{Table.stories-2RTRdgpI.js → Table.stories-CmvShH-p.js} +1 -1
- package/storybook-static/assets/{Tabs-dXKmtWm1.js → Tabs-wkUiX8Um.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-CEp6vYMd.js → Tabs.stories-Byc-KGY4.js} +1 -1
- package/storybook-static/assets/{Textarea-C9LTwBnP.js → Textarea-B7q_RUGj.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-DuNG4Fxg.js → Textarea.stories-CKjpOMUz.js} +1 -1
- package/storybook-static/assets/{TimePanel-nrNpgIYg.js → TimePanel-CnKzYllv.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-CymqeBQ6.js → TimePanel.stories-B46ia-wr.js} +1 -1
- package/storybook-static/assets/{Toggle-BrZsGFyh.js → Toggle-5uy0fJIB.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-CnRLuZ1B.js → Toggle.stories-DqX_UZ8G.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-Dp-JxGpF.js → TreeMultiSelect-DHrLU10w.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-BBris-Xx.js → TreeMultiSelect-DL_QLoGE.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-Dn_39X3q.js → TreeMultiSelect.stories-B-1UUmQx.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-DIQdSZhJ.js → TreePickerBase-G2hDDb9o.js} +1 -1
- package/storybook-static/assets/{TreeSelect-CCksSJfk.js → TreeSelect-CgrwO1Mj.js} +1 -1
- package/storybook-static/assets/{TreeSelect-ltX2lBAg.js → TreeSelect-D1vY-eaq.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-BPEYOY-m.js → TreeSelect.stories-Dyaq1OjM.js} +1 -1
- package/storybook-static/assets/{TreeTable-Dc-Y0m3q.js → TreeTable-DHvrer9V.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-C2r_nF0e.js → TreeTable.stories-DPDIRJL3.js} +1 -1
- package/storybook-static/assets/{WithTooltip-7X4HQR7L-DK8uQ8Cn.js → WithTooltip-7X4HQR7L-DaLQMgLn.js} +1 -1
- package/storybook-static/assets/{base-table-Bx2k5lGS.js → base-table-BsLxwUBH.js} +1 -1
- package/storybook-static/assets/{blocks-C7Q8GMMo.js → blocks-DsR25Fmw.js} +6 -6
- package/storybook-static/assets/{button-wXbhbl78.js → button-aRaBdQCW.js} +1 -1
- package/storybook-static/assets/{check-box-C8FJKjhC.js → check-box-DSDs6bO5.js} +1 -1
- package/storybook-static/assets/{chunk-3LY4VQVK-uSlGTJmP.js → chunk-3LY4VQVK-M6BQinGY.js} +1 -1
- package/storybook-static/assets/{chunk-LITCR56V-FSgu6Y64.js → chunk-LITCR56V-CSkoC43Y.js} +1 -1
- package/storybook-static/assets/{contextMenu-DduWXaL3.js → contextMenu-DchOLs7K.js} +1 -1
- package/storybook-static/assets/{error-uQ2DxuVX.js → error-CK7Ijx9I.js} +1 -1
- package/storybook-static/assets/{flex-DkVQD9fQ.js → flex-DjjdXv7K.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-jQBFyt86.js → floating-ui.react-D6FeyKn7.js} +1 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-gZmLdNYr.js +1 -0
- package/storybook-static/assets/{formatters-BloK5ams.js → formatters-CGNSDKn9.js} +1 -1
- package/storybook-static/assets/grid-x1BgS-2p.js +1 -0
- package/storybook-static/assets/{hooks-DFj5VG2H.js → hooks-DSj02t4H.js} +1 -1
- package/storybook-static/assets/{iframe-BdBCyVHz.js → iframe-DLkjf7A9.js} +3 -3
- package/storybook-static/assets/{input-ddHVF6FV.js → input-TIwx4iZp.js} +1 -1
- package/storybook-static/assets/{lucide-react-CkksFLP-.js → lucide-react-p2Eti-TY.js} +1 -1
- package/storybook-static/assets/{mdx-react-shim-DeqTfg7V.js → mdx-react-shim-R_VK5jlr.js} +1 -1
- package/storybook-static/assets/{media-DrShSQO0.js → media-bpDsa4CN.js} +1 -1
- package/storybook-static/assets/{misc-CFwTrVHp.js → misc-DSA_vfBB.js} +1 -1
- package/storybook-static/assets/{notifications-gnKM3wlP.js → notifications-3_qt4j1E.js} +1 -1
- package/storybook-static/assets/{odata-C4pua5YA.js → odata-Cdpm4W6w.js} +1 -1
- package/storybook-static/assets/odata-service-CK4udXRv.js +1 -0
- package/storybook-static/assets/{odataStoryFixtures-CfzrHuke.js → odataStoryFixtures-DpHrb-x0.js} +1 -1
- package/storybook-static/assets/{picker-CO2rQx7C.js → picker-DiKffa5D.js} +1 -1
- package/storybook-static/assets/{popover-Dr7yuAT9.js → popover-CQelsqcy.js} +1 -1
- package/storybook-static/assets/{preset-select-CkU9ddp8.js → preset-select-DIzVw_fy.js} +1 -1
- package/storybook-static/assets/{react-18-Cxgo9w_S.js → react-18-D0MFaVsj.js} +1 -1
- package/storybook-static/assets/{react-CP3pw4PB.js → react-CyKnGS7r.js} +1 -1
- package/storybook-static/assets/{react-dom-BrHiwR18.js → react-dom-DafrFoS3.js} +1 -1
- package/storybook-static/assets/select-3BhbB83-.js +1 -0
- package/storybook-static/assets/{slider-Cen5Jymh.js → slider-B1Jh8YgP.js} +1 -1
- package/storybook-static/assets/{sortable-Dme5pcO0.js → sortable-Dw0f2WU0.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-B8bc6fVI.js → syntaxhighlighter-RTCFPKCB-3G4G11vY.js} +1 -1
- package/storybook-static/assets/{text-DrGSUN96.js → text-j7jiqOeo.js} +1 -1
- package/storybook-static/assets/{theming-0pJkCK9X.js → theming-DobiTi6v.js} +1 -1
- package/storybook-static/assets/ui-awvruYe3.js +1 -0
- package/storybook-static/assets/{useODataSelectBase-DwrfQAdM.js → useODataSelectBase-CnyHkhKg.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-DNpvGMOY.js → useODataTreeData-DQ9adG05.js} +1 -1
- package/storybook-static/assets/{utils-CYGhZ88S.js → utils-5U72nYIV.js} +1 -1
- package/storybook-static/iframe.html +1 -1
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/chunks/select-CFbZS7fx.js.map +0 -1
- package/storybook-static/assets/Select-C8dnQPHr.js +0 -57
- package/storybook-static/assets/Select-DTyFJMMc.js +0 -9
- package/storybook-static/assets/Select.stories-CvSTPVuR.js +0 -37
- package/storybook-static/assets/formatter-L2YTDE3Q-CK2g4idL.js +0 -1
- package/storybook-static/assets/grid-CZAlVfwE.js +0 -1
- package/storybook-static/assets/odata-service-YWH6p1Lv.js +0 -1
- package/storybook-static/assets/select-CXrVs_FQ.js +0 -1
- package/storybook-static/assets/ui-CxfY9QDr.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"generatedAt":
|
|
1
|
+
{"generatedAt":1783784508215,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":false,"hasStorybookEslint":false,"refCount":0,"metaFramework":{"name":"tanstack-react","packageName":"@tanstack/react-router","version":"1.170.17"},"knownPackages":{"testPackages":{"@testing-library/dom":"10.4.1","@testing-library/react":"16.3.2","@testing-library/user-event":"^14.6.1","vitest":"4.1.10"},"stateManagementPackages":{"zustand":"^5.0.14"},"dataFetchingPackages":{"@tanstack/react-query":"^5.101.1"},"routerPackages":{"@tanstack/react-router":"^1.170.16"}},"hasRouterPackage":false,"packageManager":{"type":"npm","version":"11.7.0","agent":"npm","nodeLinker":"node_modules"},"preview":{"usesGlobals":false},"framework":{"name":"@storybook/react-vite","options":{}},"builder":"@storybook/builder-vite","renderer":"@storybook/react","portableStoriesFileCount":0,"applicationFileCount":9,"storybookVersion":"10.4.6","storybookVersionSpecifier":"^10.4.6","language":"typescript","storybookPackages":{"@storybook/react-vite":{"version":"10.4.6"},"storybook":{}},"addons":{"@storybook/addon-docs":{"version":"10.4.6"},"@storybook/addon-a11y":{"version":"10.4.6"}},"packageJsonType":"module"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-CFbZS7fx.js","names":[],"sources":["../../src/select/lib/getOptionSearchText.ts","../../src/select/model/useODataSelect.ts","../../src/select/Select.module.scss","../../src/select/Select.tsx","../../src/select/ODataSelect.tsx","../../src/select/SerializableSelect.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { extractPickerTextContent } from \"../../picker\";\n\nexport function getOptionSearchText<T extends InputType>({\n\toption,\n\tgetOptionLabel,\n\tgetOptionCode\n}: {\n\toption: T;\n\tgetOptionLabel: (option: T) => ReactNode;\n\tgetOptionCode?: (option: T) => ReactNode;\n}) {\n\treturn [extractPickerTextContent(getOptionLabel(option)), extractPickerTextContent(getOptionCode?.(option))]\n\t\t.filter((part): part is string => Boolean(part))\n\t\t.join(\" \")\n\t\t.toLowerCase();\n}\n\n/** Находит selected option по value и возвращает fallback, если значение еще не нормализовано. */\nexport function resolveSelectedOption<TOption extends { value: string }>(\n\toptions: readonly TOption[],\n\tvalue: string,\n\tfallback: TOption\n): TOption {\n\treturn options.find((option) => option.value === value) ?? fallback;\n}\n","import { useMemo } from \"react\";\n\nimport { ODataCollectionModel, ODataSingleSelectProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { useODataSelectBase } from \"./useODataSelectBase\";\n\ninterface UseODataSelectOptions extends Omit<ODataSingleSelectProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (value: string | undefined) => void;\n}\n\nexport function useODataSelect({ odata, segment, model, value, dependencies, onChange }: UseODataSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue: value ? [value] : [],\n\t\tdependencies\n\t});\n\n\tconst selectedItem = odataModel.selectedItems[0];\n\tconst options = useMemo(() => {\n\t\tif (!selectedItem) {\n\t\t\treturn odataModel.filteredItems;\n\t\t}\n\n\t\treturn [selectedItem, ...odataModel.filteredItems];\n\t}, [odataModel.filteredItems, selectedItem]);\n\n\tconst handleChange = (item: CollectionItem | undefined) => {\n\t\tonChange(item?.[odataModel.selectionKey]);\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\tselectedItem,\n\t\toptions,\n\t\thandleChange\n\t};\n}\n",".inputWithOverlay {\n\tcolor: transparent;\n\tcaret-color: transparent;\n}\n\n.valueOverlay {\n\tposition: absolute;\n\tinset: 0 calc(var(--control-height) + var(--space-xs)) 0 var(--space-md);\n\tdisplay: flex;\n\talign-items: center;\n\tpointer-events: none;\n\toverflow: hidden;\n}\n","import { ReactNode, useRef, useState } from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\nimport { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CheckIcon, XIcon } from \"lucide-react\";\n\nimport {\n\textractPickerTextContent,\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTriggerActions,\n\tPickerTriggerInput,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerTriggerController\n} from \"../picker\";\nimport { ChangeHandler, UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport { getOptionSearchText } from \"./lib\";\nimport styles from \"./Select.module.scss\";\n\nexport type SelectOptionKey = string | number;\n\nexport type SelectOptionState = {\n\tactive: boolean;\n\tselected: boolean;\n\tdisabled: boolean;\n};\n\ntype SelectSharedProps<TOption extends InputType> = Omit<UiBaseProps<TOption, TOption | undefined>, \"onChange\"> & {\n\toptions: readonly TOption[];\n\tgetOptionKey: (option: TOption) => SelectOptionKey;\n\tgetOptionLabel: (option: TOption) => ReactNode;\n\tgetOptionCode?: (option: TOption) => ReactNode;\n\tgetOptionDisabled?: (option: TOption) => boolean;\n\tgetOptionAriaLabel?: (option: TOption) => string;\n\tgetOptionClassName?: (option: TOption, state: SelectOptionState) => string | undefined;\n\trenderOption?: (option: TOption, state: SelectOptionState) => ReactNode;\n\trenderValue?: (option: TOption) => ReactNode;\n\tclassName?: string;\n\tbuttonClassName?: string;\n\toptionsClassName?: string;\n\toptionsContentClassName?: string;\n\tsearchable?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\trenderPopupHeader?: ReactNode;\n\temptyState?: ReactNode;\n\tloadingState?: ReactNode;\n\terrorState?: ReactNode;\n\tplacement?: Placement;\n};\n\ntype SelectChangeValue<TOption extends InputType, TClearable extends boolean | undefined> = true extends TClearable\n\t? TOption | undefined\n\t: TOption;\n\nexport type SelectProps<TOption extends InputType, TClearable extends boolean | undefined = false> = SelectSharedProps<TOption> & {\n\tclearable?: TClearable;\n\tonChange: ChangeHandler<SelectChangeValue<TOption, TClearable>>;\n};\n\n/**\n * Выпадающий список выбора значения из набора опций. Подходит для форм, фильтров и простых справочников.\n */\nexport function Select<TOption extends InputType, TClearable extends boolean | undefined = false>(props: SelectProps<TOption, TClearable>) {\n\tconst {\n\t\tlabel,\n\t\tdescription,\n\t\tdisabled,\n\t\tplaceholder,\n\t\tsize,\n\t\toptions,\n\t\tvalue,\n\t\tonChange,\n\t\tgetOptionKey,\n\t\tgetOptionLabel,\n\t\tgetOptionCode,\n\t\tgetOptionDisabled,\n\t\tgetOptionAriaLabel,\n\t\tgetOptionClassName,\n\t\trenderOption,\n\t\trenderValue,\n\t\tclassName,\n\t\tbuttonClassName,\n\t\toptionsClassName,\n\t\toptionsContentClassName,\n\t\tsearchable = false,\n\t\tdefaultFilter = true,\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\trenderPopupHeader,\n\t\temptyState,\n\t\tloadingState,\n\t\terrorState,\n\t\tplacement = \"bottom-start\",\n\t\tclearable = false\n\t} = props;\n\tconst emitChange = onChange as ChangeHandler<TOption | undefined>;\n\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [open, setOpen] = useState(false);\n\tconst triggerMode = searchable ? \"search-single\" : \"display\";\n\tconst selectedKey = value === undefined ? undefined : getOptionKey(value);\n\tconst selectedOption =\n\t\tselectedKey === undefined ? undefined : (options.find((option) => getOptionKey(option) === selectedKey) ?? value);\n\tconst { query: currentQuery, setQuery } = usePickerQuery({\n\t\topen,\n\t\tquery,\n\t\tdefaultQuery,\n\t\tonQuery,\n\t\ttriggerMode\n\t});\n\tconst visibleOptions = usePickerDefaultFilter({\n\t\toptions,\n\t\tquery: currentQuery,\n\t\tenabled: searchable && defaultFilter,\n\t\tgetSearchText: (option) =>\n\t\t\tgetOptionSearchText({\n\t\t\t\toption,\n\t\t\t\tgetOptionLabel,\n\t\t\t\tgetOptionCode\n\t\t\t})\n\t});\n\tconst selectedIndex = selectedKey === undefined ? -1 : visibleOptions.findIndex((option) => getOptionKey(option) === selectedKey);\n\tconst {\n\t\tactiveIndex,\n\t\tcontext,\n\t\tfloatingStyles,\n\t\tgetFloatingProps,\n\t\tsetReference,\n\t\tsetFloating,\n\t\tsetOptionRef,\n\t\tclose,\n\t\topenList,\n\t\ttoggleOpen,\n\t\tselectOption,\n\t\tselectActiveOption,\n\t\thandleReferenceKeyDown,\n\t\thandleFloatingKeyDown,\n\t\tgetOptionId,\n\t\tgetActiveOptionId\n\t} = usePickerFloatingListbox({\n\t\toptions: visibleOptions,\n\t\tselectedIndex,\n\t\topen,\n\t\tonOpenChange: setOpen,\n\t\tgetOptionDisabled,\n\t\tonSelect: emitChange,\n\t\tdisabled,\n\t\tplacement,\n\t\ttriggerMode\n\t});\n\n\tconst hasOptions = visibleOptions.length > 0;\n\tconst labelContent = selectedOption !== undefined ? getOptionLabel(selectedOption) : undefined;\n\tconst displayContent = selectedOption !== undefined ? (renderValue ? renderValue(selectedOption) : labelContent) : undefined;\n\tconst labelText = extractPickerTextContent(labelContent);\n\tconst codeText = selectedOption !== undefined ? extractPickerTextContent(getOptionCode?.(selectedOption)) : undefined;\n\tconst displayText =\n\t\textractPickerTextContent(displayContent) ?? labelText ?? codeText ?? (selectedKey !== undefined ? String(selectedKey) : \"\");\n\tconst showSearchValue = searchable && (open || currentQuery.length > 0);\n\tconst inputValue = showSearchValue ? currentQuery : selectedOption !== undefined ? displayText : \"\";\n\tconst showDisplayOverlay =\n\t\tselectedOption !== undefined &&\n\t\tdisplayContent !== undefined &&\n\t\textractPickerTextContent(displayContent) === undefined &&\n\t\t!showSearchValue;\n\tconst triggerController = usePickerTriggerController({\n\t\tmode: triggerMode,\n\t\topen,\n\t\tcurrentQuery,\n\t\thasDisplayValue: selectedOption !== undefined,\n\t\tinputRef,\n\t\tsetQuery,\n\t\topenList,\n\t\tclose,\n\t\ttoggleOpen\n\t});\n\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\tinputRef.current = node;\n\t};\n\tconst handleClear = () => {\n\t\tif (clearable) {\n\t\t\temitChange(undefined);\n\t\t}\n\n\t\tsetQuery(\"\");\n\t\tclose();\n\t};\n\n\treturn (\n\t\t<PickerField\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\tclassName={className}>\n\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<PickerTriggerInput\n\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\treadOnly={!searchable}\n\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\t\tplaceholder={selectedOption === undefined || showSearchValue ? placeholder : undefined}\n\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\taria-autocomplete={searchable ? \"list\" : \"none\"}\n\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tinputClassName={cn(showDisplayOverlay && styles.inputWithOverlay, buttonClassName, \"textOverflow\")}\n\t\t\t\t\t\t\toverlay={showDisplayOverlay ? <div className={styles.valueOverlay}>{displayContent}</div> : undefined}\n\t\t\t\t\t\t\tendAdornment={\n\t\t\t\t\t\t\t\t<PickerTriggerActions\n\t\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}>\n\t\t\t\t\t\t\t\t\t{clearable && selectedOption !== undefined && !disabled ? (\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tclassName={uiStyles.uiClearButton}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"select-clear-button\"\n\t\t\t\t\t\t\t\t\t\t\tdata-action=\"clear-select\"\n\t\t\t\t\t\t\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\t\thandleClear();\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Очистить выбор\">\n\t\t\t\t\t\t\t\t\t\t\t<XIcon />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</PickerTriggerActions>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\tif (!searchable) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\tonActivateWhenOpen: selectActiveOption,\n\t\t\t\t\t\t\t\t\tenableSpaceActivation: !searchable\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\tactiveOptionId={hasOptions ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\tclassName={cn(uiStyles.uiPopupOptions, optionsClassName)}\n\t\t\t\t\t\t\theader={renderPopupHeader}>\n\t\t\t\t\t\t\t<div className={cn(optionsContentClassName, \"h100 scrollable\")}>\n\t\t\t\t\t\t\t\t{hasOptions ? (\n\t\t\t\t\t\t\t\t\tvisibleOptions.map((option, index) => {\n\t\t\t\t\t\t\t\t\t\tconst optionKey = getOptionKey(option);\n\t\t\t\t\t\t\t\t\t\tconst selected = selectedKey !== undefined && optionKey === selectedKey;\n\t\t\t\t\t\t\t\t\t\tconst active = index === activeIndex;\n\t\t\t\t\t\t\t\t\t\tconst optionDisabled = getOptionDisabled?.(option) ?? false;\n\t\t\t\t\t\t\t\t\t\tconst optionState = { active, selected, disabled: optionDisabled };\n\n\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\tkey={optionKey}\n\t\t\t\t\t\t\t\t\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\t\t\t\t\t\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\t\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\t\t\t\t\t\t\t\t\taria-label={getOptionAriaLabel?.(option)}\n\t\t\t\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\t\t\tuiStyles.uiPopupOption,\n\t\t\t\t\t\t\t\t\t\t\t\t\toptionDisabled && uiStyles.disabled,\n\t\t\t\t\t\t\t\t\t\t\t\t\tactive && uiStyles.uiPopupOptionActive,\n\t\t\t\t\t\t\t\t\t\t\t\t\tselected && uiStyles.selected,\n\t\t\t\t\t\t\t\t\t\t\t\t\tgetOptionClassName?.(option, optionState)\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={() => selectOption(option)}>\n\t\t\t\t\t\t\t\t\t\t\t\t{renderOption ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderOption(option, optionState)\n\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{selected ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<CheckIcon className={uiStyles.uiPopupOptionIcon} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span className={uiStyles.uiPopupOptionIcon} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className={uiStyles.uiOptionText}>{getOptionLabel(option)}</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{getOptionCode && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div className={uiStyles.uiOptionCode}>{getOptionCode(option)}</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<PickerStatus emptyState={emptyState} loadingState={loadingState} errorState={errorState} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}}\n\t\t</PickerField>\n\t);\n}\n","import React from \"react\";\n\nimport { ODataSingleSelectProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { InputUILoading } from \"../input\";\nimport { UiBaseProps } from \"../types\";\n\nimport { useODataSelect } from \"./model/useODataSelect\";\nimport { Select } from \"./Select\";\nimport { SelectOptionContent } from \"./SelectOptionContent\";\n\ntype ODataSelectProps = Omit<ODataSingleSelectProps, \"value\"> & UiBaseProps<string | undefined> & { clearable?: boolean };\n\nfunction getODataOptionTextKey(item: CollectionItem | undefined, textKey: string, codeKey: string) {\n\tif (!item) {\n\t\treturn textKey || codeKey;\n\t}\n\n\treturn textKey || Object.keys(item).find((key) => key !== codeKey) || codeKey;\n}\n\nexport const ODataSelect: React.FC<ODataSelectProps> = ({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tsize,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tclearable\n}) => {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\tif (odataModel.isLoading) {\n\t\treturn <InputUILoading size={size} label={label} description={description} />;\n\t}\n\n\tconst hideCode = segment.hideCode ?? odata.hideCode;\n\tconst resolvedTextKey = getODataOptionTextKey(odataModel.selectedItem ?? odataModel.options[0], odataModel.textKey, odataModel.codeKey);\n\n\treturn (\n\t\t<Select\n\t\t\tsize={size}\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\toptions={odataModel.options}\n\t\t\tvalue={odataModel.selectedItem}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tgetOptionKey={(item) => item[odataModel.codeKey]}\n\t\t\tgetOptionLabel={(item) => item[resolvedTextKey]}\n\t\t\tgetOptionCode={hideCode ? undefined : (item) => item[odataModel.codeKey]}\n\t\t\tgetOptionAriaLabel={(item) =>\n\t\t\t\thideCode || item[resolvedTextKey] === item[odataModel.codeKey]\n\t\t\t\t\t? String(item[resolvedTextKey])\n\t\t\t\t\t: `${item[resolvedTextKey]} ${item[odataModel.codeKey]}`\n\t\t\t}\n\t\t\trenderValue={(item) => (\n\t\t\t\t<SelectOptionContent label={item[resolvedTextKey]} code={hideCode ? undefined : item[odataModel.codeKey]} />\n\t\t\t)}\n\t\t\trenderOption={(item) => (\n\t\t\t\t<SelectOptionContent\n\t\t\t\t\tlabel={item[resolvedTextKey]}\n\t\t\t\t\tcode={hideCode ? undefined : item[odataModel.codeKey]}\n\t\t\t\t\thighlight={odataModel.debouncedQuery}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tsearchable\n\t\t\tquery={odataModel.query}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tdefaultFilter={false}\n\t\t\tdisabled={disabled || odataModel.isLoading}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\tloadingState=\"Загрузка...\"\n\t\t\terrorState={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t\temptyState={!odataModel.isLoading && !odataModel.isError ? \"Нет данных\" : undefined}\n\t\t\tclearable={clearable}\n\t\t/>\n\t);\n};\n","import { Select } from \"./Select\";\n\nimport type { UiBaseProps } from \"../types\";\nimport type { SelectOptionKey } from \"./Select\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], SelectOptionKey> extends never ? never : K;\n}[keyof TOption];\n\ntype SerializableOptionValue<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>> = Extract<\n\tTOption[TOptionKey],\n\tSelectOptionKey\n>;\n\nexport interface SerializableSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends Omit<UiBaseProps<SerializableOptionValue<TOption, TOptionKey> | undefined>, \"onChange\"> {\n\toptions: readonly TOption[];\n\tonChange: (value: SerializableOptionValue<TOption, TOptionKey> | undefined) => void;\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n\tclassName?: string;\n\tclearable?: boolean;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], SelectOptionKey> {\n\treturn option[optionKey] as Extract<TOption[TOptionKey], SelectOptionKey>;\n}\n\nfunction getSerializableOptionLabel<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>(option: TOption, optionLabel: TOptionLabel, optionKey: TOptionKey): string | number {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\" || typeof label === \"number\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" || typeof key === \"number\" ? key : String(key);\n}\n\nexport function SerializableSelect<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder,\n\tsize,\n\toptions,\n\tvalue,\n\tonChange,\n\toptionKey,\n\toptionLabel,\n\trenderCode,\n\tclassName,\n\tclearable\n}: SerializableSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\tconst selectedOption =\n\t\tvalue === undefined ? undefined : options.find((option) => getSerializableOptionKey(option, optionKey) === value);\n\n\treturn (\n\t\t<Select\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\toptions={options}\n\t\t\tvalue={selectedOption}\n\t\t\tonChange={(option: TOption | undefined) => onChange(option ? getSerializableOptionKey(option, optionKey) : undefined)}\n\t\t\tgetOptionKey={(option: TOption) => getSerializableOptionKey(option, optionKey)}\n\t\t\tgetOptionLabel={(option: TOption) => getSerializableOptionLabel(option, optionLabel, optionKey)}\n\t\t\tgetOptionCode={renderCode ? (option: TOption) => getSerializableOptionKey(option, optionKey) : undefined}\n\t\t\tclassName={className}\n\t\t\tclearable={clearable}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-C7Q8GMMo.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-DeqTfg7V.js";import{ControlledObjects as p,CustomOptionLayout as m,Disabled as h,Placeholder as g,PrimitiveOptions as _,n as v,t as y}from"./Select.stories-CvSTPVuR.js";function b(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(a,{of:y,parameters:{docs:{toc:!0}}}),`
|
|
2
|
-
`,(0,S.jsx)(c,{children:`Select`}),`
|
|
3
|
-
`,(0,S.jsx)(i,{children:`Getter-based select для примитивов и сложных объектных option`}),`
|
|
4
|
-
`,(0,S.jsx)(o.p,{children:`Select уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
5
|
-
Ниже можно быстро проверить базовый сценарий, а затем перейти к отдельным режимам использования и состояниям компонента. Отдельно разобраны заблокированные состояния.`}),`
|
|
6
|
-
`,(0,S.jsx)(o.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
|
|
7
|
-
`,(0,S.jsx)(u,{}),`
|
|
8
|
-
`,(0,S.jsx)(n,{of:p}),`
|
|
9
|
-
`,(0,S.jsx)(o.pre,{children:(0,S.jsx)(o.code,{className:`language-tsx`,children:`import { useState } from "react";
|
|
10
|
-
|
|
11
|
-
import { Select } from "@/shared/ui";
|
|
12
|
-
|
|
13
|
-
const options = [
|
|
14
|
-
{ id: 1, name: "Отдел продаж", code: "SLS" },
|
|
15
|
-
{ id: 2, name: "Закупки", code: "PRC" }
|
|
16
|
-
];
|
|
17
|
-
|
|
18
|
-
export function Example() {
|
|
19
|
-
const [value, setValue] = useState(undefined);
|
|
20
|
-
|
|
21
|
-
return (
|
|
22
|
-
<Select
|
|
23
|
-
label="Подразделение"
|
|
24
|
-
value={value}
|
|
25
|
-
onChange={setValue}
|
|
26
|
-
options={options}
|
|
27
|
-
getOptionKey={(option) => option.id}
|
|
28
|
-
getOptionLabel={(option) => option.name}
|
|
29
|
-
getOptionCode={(option) => option.code}
|
|
30
|
-
/>
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
`})}),`
|
|
34
|
-
`,(0,S.jsx)(o.h2,{id:`практические-рекомендации`,children:`Практические рекомендации`}),`
|
|
35
|
-
`,(0,S.jsxs)(o.ul,{children:[`
|
|
36
|
-
`,(0,S.jsx)(o.li,{children:`Заблокированное состояние лучше проверять отдельно, чтобы убедиться, что визуально и поведенчески оно остается понятным.`}),`
|
|
37
|
-
`]}),`
|
|
38
|
-
`,(0,S.jsx)(o.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
|
|
39
|
-
`,(0,S.jsx)(o.h3,{id:`работа-с-объектами-как-со-значениями-option`,children:`Работа с объектами как со значениями option`}),`
|
|
40
|
-
`,(0,S.jsx)(o.p,{children:`Работа с объектами как со значениями option.`}),`
|
|
41
|
-
`,(0,S.jsx)(l,{of:p}),`
|
|
42
|
-
`,(0,S.jsx)(o.h3,{id:`работа-с-примитивными-option`,children:`Работа с примитивными option`}),`
|
|
43
|
-
`,(0,S.jsx)(o.p,{children:`Работа с примитивными option.`}),`
|
|
44
|
-
`,(0,S.jsx)(l,{of:_}),`
|
|
45
|
-
`,(0,S.jsx)(o.h3,{id:`поведение-без-выбранного-значения`,children:`Поведение без выбранного значения`}),`
|
|
46
|
-
`,(0,S.jsx)(o.p,{children:`Поведение без выбранного значения.`}),`
|
|
47
|
-
`,(0,S.jsx)(l,{of:g}),`
|
|
48
|
-
`,(0,S.jsx)(o.h3,{id:`кастомный-рендер-option-и-выбранного-значения`,children:`Кастомный рендер option и выбранного значения`}),`
|
|
49
|
-
`,(0,S.jsx)(o.p,{children:`Кастомный рендер option и выбранного значения.`}),`
|
|
50
|
-
`,(0,S.jsx)(l,{of:m}),`
|
|
51
|
-
`,(0,S.jsx)(o.h3,{id:`проверка-поведения-в-заблокированном-состоянии`,children:`Проверка поведения в заблокированном состоянии`}),`
|
|
52
|
-
`,(0,S.jsx)(o.p,{children:`Проверка поведения в заблокированном состоянии.`}),`
|
|
53
|
-
`,(0,S.jsx)(l,{of:h}),`
|
|
54
|
-
`,(0,S.jsx)(o.h2,{id:`api`,children:`API`}),`
|
|
55
|
-
`,(0,S.jsx)(s,{of:y}),`
|
|
56
|
-
`,(0,S.jsx)(o.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
|
|
57
|
-
`,(0,S.jsx)(r,{includePrimary:!1})]})}function x(e={}){let{wrapper:n}={...t(),...e.components};return n?(0,S.jsx)(n,{...e,children:(0,S.jsx)(b,{...e})}):b(e)}var S;e((()=>{S=d(),f(),o(),v()}))();export{x as default};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-BdBCyVHz.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-CYGhZ88S.js";import{n as o,t as s,ut as c}from"./lucide-react-CkksFLP-.js";import{n as l,t as u}from"./ui.module-DS2qtZts.js";import{T as ee,b as te,d as ne,f as d,g as re,l as ie,m as ae,r as oe,s as se,t as f,v as p}from"./picker-CO2rQx7C.js";function m({option:e,getOptionLabel:t,getOptionCode:n}){return[d(t(e)),d(n?.(e))].filter(e=>!!e).join(` `).toLowerCase()}var h=t((()=>{f()})),g=t((()=>{h()})),_,v,y,b=t((()=>{_=`aEEqH1`,v=`_4HQKa7`,y={inputWithOverlay:_,valueOverlay:v}}));function x(e){let{label:t,description:n,disabled:r,placeholder:a,size:s,options:u,value:f,onChange:h,getOptionKey:g,getOptionLabel:_,getOptionCode:v,getOptionDisabled:b,getOptionAriaLabel:x,getOptionClassName:w,renderOption:T,renderValue:E,className:D,buttonClassName:O,optionsClassName:k,optionsContentClassName:ce,searchable:A=!1,defaultFilter:le=!0,query:ue,defaultQuery:de,onQuery:fe,renderPopupHeader:pe,emptyState:j,loadingState:M,errorState:N,placement:P=`bottom-start`,clearable:F=!1}=e,I=h,L=(0,S.useRef)(null),[R,z]=(0,S.useState)(!1),B=A?`search-single`:`display`,V=f===void 0?void 0:g(f),H=V===void 0?void 0:u.find(e=>g(e)===V)??f,{query:U,setQuery:W}=se({open:R,query:ue,defaultQuery:de,onQuery:fe,triggerMode:B}),G=ne({options:u,query:U,enabled:A&&le,getSearchText:e=>m({option:e,getOptionLabel:_,getOptionCode:v})}),{activeIndex:me,context:he,floatingStyles:ge,getFloatingProps:_e,setReference:ve,setFloating:ye,setOptionRef:be,close:K,openList:xe,toggleOpen:Se,selectOption:Ce,selectActiveOption:we,handleReferenceKeyDown:Te,handleFloatingKeyDown:Ee,getOptionId:De,getActiveOptionId:q}=ie({options:G,selectedIndex:V===void 0?-1:G.findIndex(e=>g(e)===V),open:R,onOpenChange:z,getOptionDisabled:b,onSelect:I,disabled:r,placement:P,triggerMode:B}),J=G.length>0,Y=H===void 0?void 0:_(H),X=H===void 0?void 0:E?E(H):Y,Oe=d(Y),ke=H===void 0?void 0:d(v?.(H)),Ae=d(X)??Oe??ke??(V===void 0?``:String(V)),Z=A&&(R||U.length>0),je=Z?U:H===void 0?``:Ae,Q=H!==void 0&&X!==void 0&&d(X)===void 0&&!Z,$=oe({mode:B,open:R,currentQuery:U,hasDisplayValue:H!==void 0,inputRef:L,setQuery:W,openList:xe,close:K,toggleOpen:Se}),Me=e=>{L.current=e},Ne=()=>{F&&I(void 0),W(``),K()};return(0,C.jsx)(ee,{label:t,description:n,disabled:r,placeholder:a,size:s,className:D,children:({controlId:e,labelId:t,describedBy:n})=>{let s=`${e}-listbox`;return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(ae,{ref:Me,rootRef:ve,id:e,type:`text`,disabled:r,readOnly:!A,autoComplete:`off`,role:`combobox`,value:je,placeholder:H===void 0||Z?a:void 0,"aria-labelledby":t,"aria-describedby":n,"aria-haspopup":`listbox`,"aria-expanded":R,"aria-controls":R?s:void 0,"aria-autocomplete":A?`list`:`none`,"aria-activedescendant":R?q(s):void 0,inputClassName:i(Q&&y.inputWithOverlay,O,`textOverflow`),overlay:Q?(0,C.jsx)(`div`,{className:y.valueOverlay,children:X}):void 0,endAdornment:(0,C.jsx)(re,{open:R,disabled:r,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,children:F&&H!==void 0&&!r?(0,C.jsx)(`button`,{type:`button`,className:l.uiClearButton,"data-ui":`select-clear-button`,"data-action":`clear-select`,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onClick:e=>{e.preventDefault(),e.stopPropagation(),Ne()},"aria-label":`Очистить выбор`,children:(0,C.jsx)(o,{})}):null}),onChange:e=>{A&&$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{Te(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:we,enableSpaceActivation:!A})}}),(0,C.jsx)(te,{open:R,context:he,floatingStyles:ge,listId:s,labelId:t,descriptionId:n,activeOptionId:J?q(s):void 0,setFloating:ye,getFloatingProps:_e,onKeyDown:Ee,className:i(l.uiPopupOptions,k),header:pe,children:(0,C.jsx)(`div`,{className:i(ce,`h100 scrollable`),children:J?G.map((e,t)=>{let n=g(e),r=V!==void 0&&n===V,a=t===me,o=b?.(e)??!1,u={active:a,selected:r,disabled:o};return(0,C.jsx)(`div`,{id:De(s,t),ref:e=>be(t,e),role:`option`,"aria-selected":r,"aria-disabled":o||void 0,"aria-label":x?.(e),className:i(l.uiPopupOption,o&&l.disabled,a&&l.uiPopupOptionActive,r&&l.selected,w?.(e,u)),onClick:()=>Ce(e),children:T?T(e,u):(0,C.jsxs)(C.Fragment,{children:[r?(0,C.jsx)(c,{className:l.uiPopupOptionIcon}):(0,C.jsx)(`span`,{className:l.uiPopupOptionIcon}),(0,C.jsx)(`div`,{className:l.uiOptionText,children:_(e)}),v&&(0,C.jsx)(`div`,{className:l.uiOptionCode,children:v(e)})]})},n)}):(0,C.jsx)(p,{emptyState:j,loadingState:M,errorState:N})})})]})}})}var S,C,w=t((()=>{S=e(n(),1),a(),s(),f(),u(),g(),b(),C=r(),x.__docgenInfo={description:`Выпадающий список выбора значения из набора опций. Подходит для форм, фильтров и простых справочников.`,methods:[],displayName:`Select`,props:{options:{required:!0,tsType:{name:`unknown`},description:``},getOptionKey:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => SelectOptionKey`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]}}},description:``},getOptionLabel:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`ReactNode`}}},description:``},getOptionCode:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`ReactNode`}}},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`boolean`}}},description:``},getOptionAriaLabel:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => string`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`string`}}},description:``},getOptionClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => string | undefined`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
|
|
2
|
-
active: boolean;
|
|
3
|
-
selected: boolean;
|
|
4
|
-
disabled: boolean;
|
|
5
|
-
}`,signature:{properties:[{key:`active`,value:{name:`boolean`,required:!0}},{key:`selected`,value:{name:`boolean`,required:!0}},{key:`disabled`,value:{name:`boolean`,required:!0}}]}},name:`state`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:``},renderOption:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption, state: SelectOptionState) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`},{type:{name:`signature`,type:`object`,raw:`{
|
|
6
|
-
active: boolean;
|
|
7
|
-
selected: boolean;
|
|
8
|
-
disabled: boolean;
|
|
9
|
-
}`,signature:{properties:[{key:`active`,value:{name:`boolean`,required:!0}},{key:`selected`,value:{name:`boolean`,required:!0}},{key:`disabled`,value:{name:`boolean`,required:!0}}]}},name:`state`}],return:{name:`ReactNode`}}},description:``},renderValue:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(option: TOption) => ReactNode`,signature:{arguments:[{type:{name:`TOption`},name:`option`}],return:{name:`ReactNode`}}},description:``},className:{required:!1,tsType:{name:`string`},description:``},buttonClassName:{required:!1,tsType:{name:`string`},description:``},optionsClassName:{required:!1,tsType:{name:`string`},description:``},optionsContentClassName:{required:!1,tsType:{name:`string`},description:``},searchable:{required:!1,tsType:{name:`boolean`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},defaultFilter:{required:!1,tsType:{name:`boolean`},description:``},renderPopupHeader:{required:!1,tsType:{name:`ReactNode`},description:``},emptyState:{required:!1,tsType:{name:`ReactNode`},description:``},loadingState:{required:!1,tsType:{name:`ReactNode`},description:``},errorState:{required:!1,tsType:{name:`ReactNode`},description:``},placement:{required:!1,tsType:{name:`Placement`},description:``},clearable:{required:!1,tsType:{name:`TClearable`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`unknown`},name:`value`}],return:{name:`void`}}},description:``}}}}));export{w as n,x as t};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{C as r}from"./iframe-BdBCyVHz.js";import{t as i}from"./jsx-runtime-BBQGix-2.js";import{n as a,t as o}from"./Select-DTyFJMMc.js";var s=e({ControlledObjects:()=>p,CustomOptionLayout:()=>g,Disabled:()=>_,Placeholder:()=>h,PrimitiveOptions:()=>m,__namedExportsOrder:()=>v,default:()=>f}),c,l,u,d,f,p,m,h,g,_,v,y=n((()=>{c=t(r(),1),a(),l=i(),u=[{id:1,name:`Отдел продаж`,code:`SLS`,manager:`Елена Миронова`},{id:2,name:`Закупки`,code:`PRC`,manager:`Антон Мелихов`},{id:3,name:`Логистика`,code:`LGS`,manager:`Мария Климова`,disabled:!0},{id:4,name:`Поддержка клиентов`,code:`SUP`,manager:`Ирина Белова`}],d=[`Новый`,`В работе`,`Завершён`,`Архив`],f={title:`Shared/UI/Select`,component:o,args:{label:`Подразделение`,description:`Выберите подразделение из списка.`,placeholder:`Не выбрано`,value:void 0,options:u,onChange:()=>{},getOptionKey:e=>e.id,getOptionLabel:e=>e.name,getOptionCode:e=>e.code,getOptionDisabled:e=>e.disabled??!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Низкоуровневый getter-based select. Подходит для произвольных структур данных, примитивов и сложного кастомного рендера. Компонент возвращает наружу саму выбранную option. Для сериализуемых конфигов и сценариев с optionKey/optionLabel используйте SerializableSelect.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение ещё не выбрано.`,control:`text`},value:{description:`Текущая выбранная option целиком.`,control:!1},options:{description:`Массив опций любого поддерживаемого формата.`,control:!1},onChange:{description:`Вызывается с выбранной option.`,control:!1},getOptionKey:{description:`Функция получения уникального ключа option.`,control:!1},getOptionLabel:{description:`Функция получения основного текста option.`,control:!1},getOptionCode:{description:`Опциональный рендер дополнительного кода справа.`,control:!1},getOptionDisabled:{description:`Опциональная функция блокировки отдельных option.`,control:!1},getOptionAriaLabel:{description:`Опциональная функция для aria-label option.`,control:!1},getOptionClassName:{description:`Опциональная функция CSS-класса option по её состоянию.`,control:!1},renderOption:{description:`Полностью кастомный рендер option в списке.`,control:!1},renderValue:{description:`Кастомный рендер выбранного значения в кнопке.`,control:!1},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`},buttonClassName:{description:`Дополнительный CSS-класс кнопки выбора.`,control:`text`},optionsClassName:{description:`Дополнительный CSS-класс контейнера списка.`,control:`text`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},placement:{description:`Позиционирование выпадающего списка.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`}}},p={name:`Объекты`,render:e=>{let[t,n]=(0,c.useState)(u[1]);return(0,l.jsx)(o,{...e,value:t,onChange:n})}},m={name:`Примитивы`,render:()=>{let[e,t]=(0,c.useState)(d[1]);return(0,l.jsx)(o,{label:`Статус`,description:`Пример использования низкоуровневого Select со строковыми значениями.`,placeholder:`Выберите статус`,options:d,value:e,onChange:t,getOptionKey:e=>e,getOptionLabel:e=>e,size:`md`})}},h={render:e=>{let[t,n]=(0,c.useState)(void 0);return(0,l.jsx)(o,{...e,value:t,onChange:n})}},g={name:`Кастомный рендер`,render:e=>{let[t,n]=(0,c.useState)(u[0]);return(0,l.jsx)(o,{...e,value:t,onChange:n,renderValue:e=>`${e.code} · ${e.name}`,renderOption:(e,t)=>(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(`div`,{className:`flexEllipsis`,children:[(0,l.jsx)(`div`,{children:e.name}),(0,l.jsx)(`div`,{className:`fontSizeSm content2`,children:e.manager})]}),(0,l.jsx)(`div`,{style:{opacity:t.selected?1:.5},children:e.code})]})})}},_={args:{disabled:!0,value:u[0]}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
name: "Объекты",
|
|
3
|
-
render: args => {
|
|
4
|
-
const [value, setValue] = useState<DepartmentOption | undefined>(departmentOptions[1]);
|
|
5
|
-
return <Select {...args} value={value} onChange={setValue} />;
|
|
6
|
-
}
|
|
7
|
-
}`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
8
|
-
name: "Примитивы",
|
|
9
|
-
render: () => {
|
|
10
|
-
const [value, setValue] = useState<(typeof primitiveOptions)[number] | undefined>(primitiveOptions[1]);
|
|
11
|
-
return <Select label="Статус" description="Пример использования низкоуровневого Select со строковыми значениями." placeholder="Выберите статус" options={primitiveOptions} value={value} onChange={setValue} getOptionKey={option => option} getOptionLabel={option => option} size="md" />;
|
|
12
|
-
}
|
|
13
|
-
}`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
|
|
14
|
-
render: args => {
|
|
15
|
-
const [value, setValue] = useState<DepartmentOption | undefined>(undefined);
|
|
16
|
-
return <Select {...args} value={value} onChange={setValue} />;
|
|
17
|
-
}
|
|
18
|
-
}`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
|
|
19
|
-
name: "Кастомный рендер",
|
|
20
|
-
render: args => {
|
|
21
|
-
const [value, setValue] = useState<DepartmentOption | undefined>(departmentOptions[0]);
|
|
22
|
-
return <Select {...args} value={value} onChange={setValue} renderValue={option => \`\${option.code} · \${option.name}\`} renderOption={(option, state) => <>
|
|
23
|
-
<div className="flexEllipsis">
|
|
24
|
-
<div>{option.name}</div>
|
|
25
|
-
<div className="fontSizeSm content2">{option.manager}</div>
|
|
26
|
-
</div>
|
|
27
|
-
<div style={{
|
|
28
|
-
opacity: state.selected ? 1 : 0.5
|
|
29
|
-
}}>{option.code}</div>
|
|
30
|
-
</>} />;
|
|
31
|
-
}
|
|
32
|
-
}`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
|
|
33
|
-
args: {
|
|
34
|
-
disabled: true,
|
|
35
|
-
value: departmentOptions[0]
|
|
36
|
-
}
|
|
37
|
-
}`,..._.parameters?.docs?.source}}},v=[`ControlledObjects`,`PrimitiveOptions`,`Placeholder`,`CustomOptionLayout`,`Disabled`]}));y();export{p as ControlledObjects,g as CustomOptionLayout,_ as Disabled,h as Placeholder,m as PrimitiveOptions,v as __namedExportsOrder,f as default,y as n,s as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{m as t,p as n}from"./iframe-BdBCyVHz.js";import{i as r,n as i,r as a,t as o}from"./chunk-3LY4VQVK-uSlGTJmP.js";var s;e((()=>{a(),i(),t(),s=(0,n(r(),1).default)(2)(async(e,t)=>e===!1?t:o(t))}))();export{s as formatter};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{a as t,n,r}from"./Grid-CCVTg58v.js";var i=e((()=>{n(),t(),r()}));export{i as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{P as t}from"./formatters-BloK5ams.js";var n=e((()=>{t()}));export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{n as t}from"./Select-DTyFJMMc.js";import{n}from"./ODataSelect-CLx5JSMi.js";import{n as r}from"./SerializableSelect-Byb9ssGD.js";var i=e((()=>{n(),t(),r()}));export{i as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{a as t,r as n}from"./DateInput-6pvp1eRu.js";var r=e((()=>{t(),n()}));export{r as t};
|