@feugene/granularity 0.48.0 → 0.50.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/README.md +3 -3
- package/dist/chunks/chevron-up-BhW6hi8L.js +23 -0
- package/dist/chunks/chevron-up-BhW6hi8L.js.map +1 -0
- package/dist/chunks/{config-E1cTyRVV.js → config-8n1VR0ju.js} +1 -1
- package/dist/chunks/{config-E1cTyRVV.js.map → config-8n1VR0ju.js.map} +1 -1
- package/dist/chunks/{config-2vrOFn2f.js → config-AKpLyIGD.js} +2 -2
- package/dist/chunks/{config-2vrOFn2f.js.map → config-AKpLyIGD.js.map} +1 -1
- package/dist/chunks/{config-DIDz_E5m.js → config-B34mkd53.js} +66 -1
- package/dist/chunks/config-B34mkd53.js.map +1 -0
- package/dist/chunks/{config-B5SBUa6u.js → config-B7qZqiUB.js} +28 -1
- package/dist/chunks/config-B7qZqiUB.js.map +1 -0
- package/dist/chunks/config-BBrPUEye.js +8 -0
- package/dist/chunks/config-BBrPUEye.js.map +1 -0
- package/dist/chunks/config-BBtBQE3s.js +108 -0
- package/dist/chunks/config-BBtBQE3s.js.map +1 -0
- package/dist/chunks/{config-CT4lP6S4.js → config-BOCzHqWh.js} +2 -2
- package/dist/chunks/{config-CT4lP6S4.js.map → config-BOCzHqWh.js.map} +1 -1
- package/dist/chunks/{config-iemgzS4x.js → config-BP1ktzwh.js} +2 -24
- package/dist/chunks/config-BP1ktzwh.js.map +1 -0
- package/dist/chunks/config-BTxmdRzT.js +28 -0
- package/dist/chunks/config-BTxmdRzT.js.map +1 -0
- package/dist/chunks/{config-CjWOTgLL.js → config-Bk52xd5l.js} +12 -5
- package/dist/chunks/config-Bk52xd5l.js.map +1 -0
- package/dist/chunks/{config-D3HOuHDe.js → config-C3SqBqSQ.js} +3 -1
- package/dist/chunks/config-C3SqBqSQ.js.map +1 -0
- package/dist/chunks/{config-2ZHRsdOc.js → config-C3uqd-sW.js} +1 -1
- package/dist/chunks/config-C3uqd-sW.js.map +1 -0
- package/dist/chunks/{config-BXRmsn3t.js → config-CPhcZzHi.js} +72 -10
- package/dist/chunks/config-CPhcZzHi.js.map +1 -0
- package/dist/chunks/config-CWtfxkM9.js.map +1 -1
- package/dist/chunks/{config--t2dxj0t.js → config-CmLTCmY9.js} +2 -2
- package/dist/chunks/{config--t2dxj0t.js.map → config-CmLTCmY9.js.map} +1 -1
- package/dist/chunks/{config-BAse0laT.js → config-CvtqB4ki.js} +8 -3
- package/dist/chunks/config-CvtqB4ki.js.map +1 -0
- package/dist/chunks/{config-BcXX7S7B.js → config-D-JgqV0J.js} +5 -1
- package/dist/chunks/{config-BcXX7S7B.js.map → config-D-JgqV0J.js.map} +1 -1
- package/dist/chunks/{config-BHLMTJaR.js → config-D1oVht-E.js} +8 -3
- package/dist/chunks/config-D1oVht-E.js.map +1 -0
- package/dist/chunks/{config-BscVxZR3.js → config-DF1ezU6y.js} +1 -1
- package/dist/chunks/{config-BscVxZR3.js.map → config-DF1ezU6y.js.map} +1 -1
- package/dist/chunks/{config-B42iJ48O.js → config-DG41PD9i.js} +13 -1
- package/dist/chunks/config-DG41PD9i.js.map +1 -0
- package/dist/chunks/{config-Bs1HwUcx.js → config-DPJ3jtiB.js} +12 -2
- package/dist/chunks/config-DPJ3jtiB.js.map +1 -0
- package/dist/chunks/{config-tNqtapcT.js → config-DpqjlCfB.js} +2 -2
- package/dist/chunks/{config-tNqtapcT.js.map → config-DpqjlCfB.js.map} +1 -1
- package/dist/chunks/{config-DNDgp9bB.js → config-DpzFoSIh.js} +64 -2
- package/dist/chunks/config-DpzFoSIh.js.map +1 -0
- package/dist/chunks/config-MUkhktTP.js +267 -0
- package/dist/chunks/config-MUkhktTP.js.map +1 -0
- package/dist/chunks/config-SPugeaHT.js +37 -0
- package/dist/chunks/config-SPugeaHT.js.map +1 -0
- package/dist/chunks/{en-Bxyn5lW7.js → en-mIFywnV2.js} +27 -7
- package/dist/chunks/en-mIFywnV2.js.map +1 -0
- package/dist/chunks/{es-Dtl-a7ui.js → es-CvthYwtB.js} +27 -7
- package/dist/chunks/es-CvthYwtB.js.map +1 -0
- package/dist/chunks/{es-Bj_vc18Z.js → es-DlGd6Mrj.js} +3 -3
- package/dist/chunks/{es-Bj_vc18Z.js.map → es-DlGd6Mrj.js.map} +1 -1
- package/dist/chunks/{generated-hELWB0gZ.js → generated-Cx4C7GRN.js} +126 -0
- package/dist/chunks/{generated-hELWB0gZ.js.map → generated-Cx4C7GRN.js.map} +1 -1
- package/dist/chunks/{grBadgeStyles-DV0DrAew.js → grBadgeStyles-D51AXbj5.js} +57 -1
- package/dist/chunks/grBadgeStyles-D51AXbj5.js.map +1 -0
- package/dist/chunks/{grChipStyles-DcDyxAL0.js → grChipStyles-CA9Wj1_E.js} +1 -1
- package/dist/chunks/{grChipStyles-DcDyxAL0.js.map → grChipStyles-CA9Wj1_E.js.map} +1 -1
- package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js → grPopoverStyles-CncEkiPu.js} +1 -1
- package/dist/chunks/{grPopoverStyles-CYAeO3Ov.js.map → grPopoverStyles-CncEkiPu.js.map} +1 -1
- package/dist/chunks/{grSelectStyles-D9EQ-pgK.js → grSelectStyles-Cam-IG9s.js} +3 -2
- package/dist/chunks/grSelectStyles-Cam-IG9s.js.map +1 -0
- package/dist/chunks/{grSliderStyles-kaz6VXZ3.js → grSliderStyles-CqzV0hll.js} +1 -1
- package/dist/chunks/grSliderStyles-CqzV0hll.js.map +1 -0
- package/dist/chunks/{config-CbEbLyDE.js → grSortableListStyles-CxieDmpe.js} +1 -27
- package/dist/chunks/grSortableListStyles-CxieDmpe.js.map +1 -0
- package/dist/chunks/grTableStyles-CPSxDTOW.js +66 -0
- package/dist/chunks/grTableStyles-CPSxDTOW.js.map +1 -0
- package/dist/chunks/{config-CMNfZO7S.js → grTabsStyles-DIz2VdIm.js} +1 -36
- package/dist/chunks/grTabsStyles-DIz2VdIm.js.map +1 -0
- package/dist/chunks/grTooltipStyles-CtbGEEGV.js +24 -0
- package/dist/chunks/grTooltipStyles-CtbGEEGV.js.map +1 -0
- package/dist/chunks/{granular-provider-BOQp7N5o.js → granular-provider-cv5vaM1a.js} +26 -22
- package/dist/chunks/granular-provider-cv5vaM1a.js.map +1 -0
- package/dist/chunks/hotkeySequence-BTHIM_5A.js +46 -0
- package/dist/chunks/hotkeySequence-BTHIM_5A.js.map +1 -0
- package/dist/chunks/{keyboard-DE2yhz_b.js → keyboard-BiFSgWLt.js} +70 -1
- package/dist/chunks/keyboard-BiFSgWLt.js.map +1 -0
- package/dist/chunks/optionPanel-DvY7Tv_4.js +182 -0
- package/dist/chunks/optionPanel-DvY7Tv_4.js.map +1 -0
- package/dist/chunks/overlayListPanel-D91jBCHU.js +21 -0
- package/dist/chunks/overlayListPanel-D91jBCHU.js.map +1 -0
- package/dist/chunks/{overlayStack-DH4Z7am1.js → overlayStack-DCkCgXZP.js} +1 -1
- package/dist/chunks/{overlayStack-DH4Z7am1.js.map → overlayStack-DCkCgXZP.js.map} +1 -1
- package/dist/chunks/{overlayPanelSurface-BKeMhRx4.js → overlayTransition-C0FDMx7Q.js} +24 -24
- package/dist/chunks/overlayTransition-C0FDMx7Q.js.map +1 -0
- package/dist/chunks/{ru-hrB4I1u_.js → ru-CQKDR-kD.js} +27 -7
- package/dist/chunks/ru-CQKDR-kD.js.map +1 -0
- package/dist/chunks/{safelist-x8USecK8.js → safelist-CSfynUC1.js} +5 -1
- package/dist/chunks/safelist-CSfynUC1.js.map +1 -0
- package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js → useMenuItemsFocus-C031blYS.js} +1 -1
- package/dist/chunks/{useMenuItemsFocus-B7Bl_aFA.js.map → useMenuItemsFocus-C031blYS.js.map} +1 -1
- package/dist/chunks/{useModalOverlay-ACRkflzx.js → useModalOverlay-CKCQkGdB.js} +1 -1
- package/dist/chunks/{useModalOverlay-ACRkflzx.js.map → useModalOverlay-CKCQkGdB.js.map} +1 -1
- package/dist/components/GrAutocomplete/chunks/{GrAutocomplete-C-uovdv8.js → GrAutocomplete-Cyr1-ENw.js} +183 -125
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-Cyr1-ENw.js.map +1 -0
- package/dist/components/GrAutocomplete/index.js +2 -2
- package/dist/components/GrAutocomplete/styles.css +1 -1
- package/dist/components/GrBadge/chunks/GrBadge-C42KLyUD.js +71 -0
- package/dist/components/GrBadge/chunks/GrBadge-C42KLyUD.js.map +1 -0
- package/dist/components/GrBadge/index.js +3 -3
- package/dist/components/GrBadge/styles.css +1 -1
- package/dist/components/GrCarousel/chunks/{GrCarousel-ByuughtI.js → GrCarousel-CBj-PEPB.js} +186 -37
- package/dist/components/GrCarousel/chunks/GrCarousel-CBj-PEPB.js.map +1 -0
- package/dist/components/GrCarousel/index.js +2 -2
- package/dist/components/GrCarousel/styles.css +1 -1
- package/dist/components/GrCheckbox/chunks/{GrCheckbox-Dp201frb.js → GrCheckbox-B4NJc7Ur.js} +2 -1
- package/dist/components/GrCheckbox/chunks/GrCheckbox-B4NJc7Ur.js.map +1 -0
- package/dist/components/GrCheckbox/index.js +1 -1
- package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js → GrCheckboxGroup-qZHpNFCX.js} +1 -1
- package/dist/components/GrCheckboxGroup/chunks/{GrCheckboxGroup-IpqG5qwm.js.map → GrCheckboxGroup-qZHpNFCX.js.map} +1 -1
- package/dist/components/GrCheckboxGroup/index.js +1 -1
- package/dist/components/GrChip/chunks/{GrChip-CKqyzYcv.js → GrChip-DoyS1Dr4.js} +1 -1
- package/dist/components/GrChip/chunks/{GrChip-CKqyzYcv.js.map → GrChip-DoyS1Dr4.js.map} +1 -1
- package/dist/components/GrChip/index.js +2 -2
- package/dist/components/GrColorPicker/chunks/{GrColorPicker-BRM_4lyI.js → GrColorPicker-vGSgpUV9.js} +353 -38
- package/dist/components/GrColorPicker/chunks/GrColorPicker-vGSgpUV9.js.map +1 -0
- package/dist/components/GrColorPicker/index.js +2 -2
- package/dist/components/GrColorPicker/styles.css +1 -1
- package/dist/components/GrCommandPalette/chunks/{GrCommandPalette-BJHmkDQv.js → GrCommandPalette-CAHgj0Aa.js} +23 -7
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-CAHgj0Aa.js.map +1 -0
- package/dist/components/GrCommandPalette/index.js +1 -1
- package/dist/components/GrCommandPalette/styles.css +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js → GrConfirmDialog-dg021BMd.js} +1 -1
- package/dist/components/GrConfirmDialog/chunks/{GrConfirmDialog-BzUQwbec.js.map → GrConfirmDialog-dg021BMd.js.map} +1 -1
- package/dist/components/GrConfirmDialog/index.js +1 -1
- package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js → GrContextMenu-bQ1Vvy2c.js} +3 -3
- package/dist/components/GrContextMenu/chunks/{GrContextMenu-RpxMHQXH.js.map → GrContextMenu-bQ1Vvy2c.js.map} +1 -1
- package/dist/components/GrContextMenu/index.js +1 -1
- package/dist/components/GrDataTable/chunks/{GrDataTable-DQxYYgQk.js → GrDataTable-Bb2jWnRG.js} +576 -136
- package/dist/components/GrDataTable/chunks/GrDataTable-Bb2jWnRG.js.map +1 -0
- package/dist/components/GrDataTable/index.js +2 -2
- package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js → GrDelta-BSv1KdMy.js} +0 -0
- package/dist/components/GrDelta/chunks/{GrDelta-CgTvfoIN.js.map → GrDelta-BSv1KdMy.js.map} +1 -1
- package/dist/components/GrDelta/index.js +2 -2
- package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js → GrDialog-C9Zu72jB.js} +1 -1
- package/dist/components/GrDialog/chunks/{GrDialog-DDz_OEhk.js.map → GrDialog-C9Zu72jB.js.map} +1 -1
- package/dist/components/GrDialog/index.js +1 -1
- package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js → GrDialogService-DLBifO61.js} +2 -2
- package/dist/components/GrDialogService/chunks/{GrDialogService-Dtq0ZCN5.js.map → GrDialogService-DLBifO61.js.map} +1 -1
- package/dist/components/GrDialogService/index.js +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js → GrDrawer-DOcRTE8G.js} +1 -1
- package/dist/components/GrDrawer/chunks/{GrDrawer-CNpSMuN-.js.map → GrDrawer-DOcRTE8G.js.map} +1 -1
- package/dist/components/GrDrawer/index.js +1 -1
- package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js → GrDropdown-kxwmgfSe.js} +2 -2
- package/dist/components/GrDropdown/chunks/{GrDropdown-cLZuZMEY.js.map → GrDropdown-kxwmgfSe.js.map} +1 -1
- package/dist/components/GrDropdown/index.js +2 -2
- package/dist/components/GrDropdownMenu/chunks/{GrDropdownMenu-Dxkz_ry4.js → GrDropdownMenu--VoK3VY0.js} +3 -34
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu--VoK3VY0.js.map +1 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js +34 -0
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-CkM3BFPL.js.map +1 -0
- package/dist/components/GrDropdownMenu/index.js +2 -1
- package/dist/components/GrEmptyState/chunks/{GrEmptyState-BbvwE-E0.js → GrEmptyState-Bz6-_ED4.js} +42 -6
- package/dist/components/GrEmptyState/chunks/GrEmptyState-Bz6-_ED4.js.map +1 -0
- package/dist/components/GrEmptyState/index.js +1 -1
- package/dist/components/GrFileUpload/chunks/{GrFileUpload-BwMR71zN.js → GrFileUpload-Bgdfnkd8.js} +5 -2
- package/dist/components/GrFileUpload/chunks/GrFileUpload-Bgdfnkd8.js.map +1 -0
- package/dist/components/GrFileUpload/index.js +1 -1
- package/dist/components/GrFormFile/chunks/{GrFormFile-Dlxx-9zi.js → GrFormFile-Ctq1isz-.js} +78 -11
- package/dist/components/GrFormFile/chunks/GrFormFile-Ctq1isz-.js.map +1 -0
- package/dist/components/GrFormFile/index.js +2 -2
- package/dist/components/GrFormFile/styles.css +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js → GrImageViewer-Bnql_dNP.js} +1 -1
- package/dist/components/GrImageViewer/chunks/{GrImageViewer-DK-iVHHC.js.map → GrImageViewer-Bnql_dNP.js.map} +1 -1
- package/dist/components/GrImageViewer/index.js +1 -1
- package/dist/components/GrInput/chunks/{GrInput-DV4gMWPR.js → GrInput-CoaFLpaU.js} +43 -22
- package/dist/components/GrInput/chunks/GrInput-CoaFLpaU.js.map +1 -0
- package/dist/components/GrInput/index.js +1 -1
- package/dist/components/GrInputTag/chunks/{GrInputTag-CO0YU-ok.js → GrInputTag-BzzNRBe3.js} +247 -20
- package/dist/components/GrInputTag/chunks/GrInputTag-BzzNRBe3.js.map +1 -0
- package/dist/components/GrInputTag/index.js +2 -2
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js → GrJsonViewer-B6ZJ3GFH.js} +2 -2
- package/dist/components/GrJsonViewer/chunks/{GrJsonViewer-D7CyWzhT.js.map → GrJsonViewer-B6ZJ3GFH.js.map} +1 -1
- package/dist/components/GrJsonViewer/index.js +1 -1
- package/dist/components/GrKbd/chunks/{GrKbd-BNMeoaLV.js → GrKbd-D2rHDkQv.js} +42 -37
- package/dist/components/GrKbd/chunks/GrKbd-D2rHDkQv.js.map +1 -0
- package/dist/components/GrKbd/index.js +1 -1
- package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js → GrModal-SHb1U2qx.js} +1 -1
- package/dist/components/GrModal/chunks/{GrModal-Cm0mtSXk.js.map → GrModal-SHb1U2qx.js.map} +1 -1
- package/dist/components/GrModal/index.js +1 -1
- package/dist/components/GrNavbar/chunks/{GrNavbar-BRGuksiy.js → GrNavbar-IEIHC5Vt.js} +10 -4
- package/dist/components/GrNavbar/chunks/GrNavbar-IEIHC5Vt.js.map +1 -0
- package/dist/components/GrNavbar/index.js +2 -2
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js → GrNumberInput-CmnUDaKi.js} +2 -22
- package/dist/components/GrNumberInput/chunks/{GrNumberInput-BI6-vkcs.js.map → GrNumberInput-CmnUDaKi.js.map} +1 -1
- package/dist/components/GrNumberInput/index.js +1 -1
- package/dist/components/GrOtpInput/chunks/GrOtpInput-B_Q-RDLw.js +419 -0
- package/dist/components/GrOtpInput/chunks/GrOtpInput-B_Q-RDLw.js.map +1 -0
- package/dist/components/GrOtpInput/index.js +3 -0
- package/dist/components/GrOtpInput/styles.css +1 -0
- package/dist/components/GrPagination/chunks/{GrPagination-BbaF5eXk.js → GrPagination-AMbn5D8I.js} +1 -1
- package/dist/components/GrPagination/chunks/{GrPagination-BbaF5eXk.js.map → GrPagination-AMbn5D8I.js.map} +1 -1
- package/dist/components/GrPagination/index.js +1 -1
- package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js → GrPopover-DjVxt8bf.js} +3 -3
- package/dist/components/GrPopover/chunks/{GrPopover-CcWvr1ZA.js.map → GrPopover-DjVxt8bf.js.map} +1 -1
- package/dist/components/GrPopover/index.js +2 -2
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js → GrPromptDialog-BhbIZP1f.js} +3 -3
- package/dist/components/GrPromptDialog/chunks/{GrPromptDialog-BEL-QgwE.js.map → GrPromptDialog-BhbIZP1f.js.map} +1 -1
- package/dist/components/GrPromptDialog/index.js +1 -1
- package/dist/components/GrSelect/chunks/{GrSelect-0iI4wdR_.js → GrSelect-B-ykrHpL.js} +26 -182
- package/dist/components/GrSelect/chunks/GrSelect-B-ykrHpL.js.map +1 -0
- package/dist/components/GrSelect/index.js +2 -2
- package/dist/components/GrSelect/styles.css +1 -1
- package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js +543 -0
- package/dist/components/GrSidebar/chunks/GrSidebar-jVvoLGDO.js.map +1 -0
- package/dist/components/GrSidebar/index.js +2 -2
- package/dist/components/GrSlider/chunks/{GrSlider-CO8N9SF6.js → GrSlider-DF2Cq0rV.js} +29 -4
- package/dist/components/GrSlider/chunks/GrSlider-DF2Cq0rV.js.map +1 -0
- package/dist/components/GrSlider/index.js +2 -2
- package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js → GrSortableList-ChH9nQBv.js} +1 -1
- package/dist/components/GrSortableList/chunks/{GrSortableList-NKriuGm_.js.map → GrSortableList-ChH9nQBv.js.map} +1 -1
- package/dist/components/GrSortableList/index.js +2 -2
- package/dist/components/GrSwitch/chunks/{GrSwitch-CriHWT2A.js → GrSwitch-D7X42uIA.js} +61 -7
- package/dist/components/GrSwitch/chunks/GrSwitch-D7X42uIA.js.map +1 -0
- package/dist/components/GrSwitch/index.js +2 -2
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js +30 -0
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BDt5oVdd.js.map +1 -0
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js +83 -0
- package/dist/components/GrTabPanels/chunks/GrTabPanels-BJvAflnA.js.map +1 -0
- package/dist/components/GrTabPanels/index.js +2 -1
- package/dist/components/GrTable/chunks/{GrTable-CKJ-HrsN.js → GrTable-BQitSDep.js} +52 -16
- package/dist/components/GrTable/chunks/GrTable-BQitSDep.js.map +1 -0
- package/dist/components/GrTable/index.js +2 -2
- package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js → GrTabs-DVC6nfWB.js} +1 -1
- package/dist/components/GrTabs/chunks/{GrTabs-s9RzC1WX.js.map → GrTabs-DVC6nfWB.js.map} +1 -1
- package/dist/components/GrTabs/index.js +2 -2
- package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js +98 -0
- package/dist/components/GrTabsWithPanels/chunks/GrTabsWithPanels-BYtuzouj.js.map +1 -0
- package/dist/components/GrTabsWithPanels/index.js +3 -0
- package/dist/components/GrTextarea/chunks/{GrTextarea-Bfgc0DD2.js → GrTextarea-BFwyqcHB.js} +22 -5
- package/dist/components/GrTextarea/chunks/GrTextarea-BFwyqcHB.js.map +1 -0
- package/dist/components/GrTextarea/index.js +1 -1
- package/dist/components/GrToaster/chunks/{GrToaster-CZixNk0l.js → GrToaster-OzT1VKcp.js} +163 -32
- package/dist/components/GrToaster/chunks/GrToaster-OzT1VKcp.js.map +1 -0
- package/dist/components/GrToaster/index.js +2 -2
- package/dist/components/GrToaster/styles.css +1 -1
- package/dist/components/GrTooltip/chunks/{GrTooltip-DkMMM0uq.js → GrTooltip-BDcFycvW.js} +26 -13
- package/dist/components/GrTooltip/chunks/GrTooltip-BDcFycvW.js.map +1 -0
- package/dist/components/GrTooltip/index.js +2 -2
- package/dist/components/GrTransfer/chunks/{GrTransfer-DdfBUf35.js → GrTransfer-CV7BL5UK.js} +114 -12
- package/dist/components/GrTransfer/chunks/GrTransfer-CV7BL5UK.js.map +1 -0
- package/dist/components/GrTransfer/index.js +1 -1
- package/dist/components/GrTransfer/styles.css +1 -1
- package/dist/components/GrTree/chunks/{GrTree-6yZrncJE.js → GrTree-DpgaP8hk.js} +39 -1
- package/dist/components/GrTree/chunks/GrTree-DpgaP8hk.js.map +1 -0
- package/dist/components/GrTree/index.js +1 -1
- package/dist/components/GrTree/styles.css +1 -1
- package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js → GrTreeSections-BeOj__44.js} +1 -1
- package/dist/components/GrTreeSections/chunks/{GrTreeSections-DcmDcLwj.js.map → GrTreeSections-BeOj__44.js.map} +1 -1
- package/dist/components/GrTreeSections/index.js +1 -1
- package/dist/components/GrTreeSelect/chunks/{GrTreeSelect-B6KoDYiZ.js → GrTreeSelect-BHq-T8wH.js} +113 -14
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-BHq-T8wH.js.map +1 -0
- package/dist/components/GrTreeSelect/index.js +2 -2
- package/dist/composables/useFloating.js +1 -1
- package/dist/composables/useHotkeys.js +89 -0
- package/dist/composables/useHotkeys.js.map +1 -0
- package/dist/composables/useOverlayLayer.js +1 -1
- package/dist/directives/hotkey.js +19 -46
- package/dist/directives/hotkey.js.map +1 -1
- package/dist/granular-provider-node.js +1 -1
- package/dist/granular-provider.js +1 -1
- package/dist/i18n/all.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/index.js +80 -71
- package/dist/theme.js +1 -1
- package/dist/tokens.js +1 -1
- package/dist/types/components/GrAutocomplete/GrAutocomplete.vue.d.ts +4 -4
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteNavigation.d.ts +12 -3
- package/dist/types/components/GrAutocomplete/composables/useAutocompletePanel.d.ts +12 -2
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteValues.d.ts +7 -4
- package/dist/types/components/GrAutocomplete/composables/useRemoteOptions.d.ts +4 -4
- package/dist/types/components/GrAutocomplete/grAutocompleteStyles.d.ts +15 -1
- package/dist/types/components/GrAutocomplete/index.d.ts +1 -1
- package/dist/types/components/GrBadge/GrBadge.vue.d.ts +15 -1
- package/dist/types/components/GrBadge/grBadgeStyles.d.ts +57 -0
- package/dist/types/components/GrBadge/index.d.ts +1 -1
- package/dist/types/components/GrCarousel/GrCarousel.vue.d.ts +29 -1
- package/dist/types/components/GrCarousel/composables/useCarouselSwipe.d.ts +5 -0
- package/dist/types/components/GrCarousel/grCarouselContext.d.ts +21 -0
- package/dist/types/components/GrCarousel/grCarouselStyles.d.ts +39 -9
- package/dist/types/components/GrCheckbox/GrCheckbox.vue.d.ts +13 -0
- package/dist/types/components/GrColorPicker/GrColorPicker.vue.d.ts +18 -2
- package/dist/types/components/GrColorPicker/color.d.ts +13 -1
- package/dist/types/components/GrColorPicker/colorArea.d.ts +59 -0
- package/dist/types/components/GrColorPicker/defaults.d.ts +3 -1
- package/dist/types/components/GrColorPicker/eyeDropper.d.ts +21 -0
- package/dist/types/components/GrColorPicker/grColorPickerStyles.d.ts +42 -0
- package/dist/types/components/GrCommandPalette/GrCommandPalette.vue.d.ts +10 -1
- package/dist/types/components/GrDataTable/GrDataTable.vue.d.ts +41 -1
- package/dist/types/components/GrDataTable/composables/useDataTableGridNavigation.d.ts +53 -0
- package/dist/types/components/GrDataTable/grDataTableStyles.d.ts +8 -0
- package/dist/types/components/GrDataTable/index.d.ts +1 -1
- package/dist/types/components/GrDelta/grDeltaStyles.d.ts +10 -3
- package/dist/types/components/GrEmptyState/GrEmptyState.vue.d.ts +11 -2
- package/dist/types/components/GrEmptyState/grEmptyStateStyles.d.ts +10 -0
- package/dist/types/components/GrEmptyState/index.d.ts +1 -1
- package/dist/types/components/GrFileUpload/GrFileUpload.vue.d.ts +2 -1
- package/dist/types/components/GrFormFile/GrFormFile.vue.d.ts +10 -0
- package/dist/types/components/GrInput/GrInput.vue.d.ts +15 -0
- package/dist/types/components/GrInputTag/GrInputTag.vue.d.ts +16 -0
- package/dist/types/components/GrInputTag/grInputTagStyles.d.ts +11 -0
- package/dist/types/components/GrKbd/GrKbd.vue.d.ts +14 -0
- package/dist/types/components/GrNavbar/GrNavbar.vue.d.ts +18 -0
- package/dist/types/components/GrNavbar/grNavbarStyles.d.ts +10 -1
- package/dist/types/components/GrNavbar/index.d.ts +1 -0
- package/dist/types/components/GrOtpInput/GrOtpInput.vue.d.ts +164 -0
- package/dist/types/components/GrOtpInput/config.d.ts +1 -0
- package/dist/types/components/GrOtpInput/defaults.d.ts +15 -0
- package/dist/types/components/GrOtpInput/grOtpInputStyles.d.ts +62 -0
- package/dist/types/components/GrOtpInput/index.d.ts +9 -0
- package/dist/types/components/GrOtpInput/otpValue.d.ts +71 -0
- package/dist/types/components/GrOtpInput/safelist.d.ts +7 -0
- package/dist/types/components/GrSelect/composables/useSelectPanelItems.d.ts +8 -34
- package/dist/types/components/GrSelect/composables/useSelectVirtualization.d.ts +7 -0
- package/dist/types/components/GrSelect/grSelectStyles.d.ts +1 -1
- package/dist/types/components/GrSidebar/GrSidebar.vue.d.ts +20 -0
- package/dist/types/components/GrSidebar/GrSidebarItem.vue.d.ts +39 -5
- package/dist/types/components/GrSidebar/grSidebarStyles.d.ts +32 -0
- package/dist/types/components/GrSidebar/index.d.ts +1 -1
- package/dist/types/components/GrSidebar/sidebarContext.d.ts +23 -1
- package/dist/types/components/GrSlider/GrSlider.vue.d.ts +39 -1
- package/dist/types/components/GrSlider/grSliderStyles.d.ts +1 -1
- package/dist/types/components/GrSwitch/GrSwitch.vue.d.ts +42 -4
- package/dist/types/components/GrSwitch/defaults.d.ts +2 -0
- package/dist/types/components/GrSwitch/grSwitchStyles.d.ts +129 -25
- package/dist/types/components/GrSwitch/index.d.ts +1 -1
- package/dist/types/components/GrSwitch/safelist.d.ts +4 -3
- package/dist/types/components/GrTabPanels/context.d.ts +6 -0
- package/dist/types/components/GrTable/GrTable.vue.d.ts +37 -0
- package/dist/types/components/GrTable/grTableStyles.d.ts +16 -7
- package/dist/types/components/GrTabsWithPanels/GrTabsWithPanels.vue.d.ts +77 -0
- package/dist/types/components/GrTabsWithPanels/config.d.ts +1 -0
- package/dist/types/components/GrTabsWithPanels/index.d.ts +4 -0
- package/dist/types/components/GrTextarea/GrTextarea.vue.d.ts +19 -1
- package/dist/types/components/GrToaster/GrToaster.vue.d.ts +12 -0
- package/dist/types/components/GrToaster/grToasterStyles.d.ts +26 -0
- package/dist/types/components/GrTooltip/GrTooltip.vue.d.ts +22 -0
- package/dist/types/components/GrTransfer/GrTransfer.vue.d.ts +23 -0
- package/dist/types/components/GrTreeSelect/grTreeSelectStyles.d.ts +1 -1
- package/dist/types/components/GrTreeSelect/grTreeSelectTypes.d.ts +20 -0
- package/dist/types/components/shared/hotkey.d.ts +8 -9
- package/dist/types/components/shared/optionPanel.d.ts +100 -0
- package/dist/types/components/shared/overlayListPanel.d.ts +18 -0
- package/dist/types/composables/useHotkeys.d.ts +43 -0
- package/dist/types/granular-provider/shared.d.ts +2 -0
- package/dist/types/i18n/messages/en.d.ts +32 -0
- package/dist/types/i18n/messages/es.d.ts +32 -0
- package/dist/types/i18n/messages/ru.d.ts +32 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/internal/hotkeySequence.d.ts +22 -0
- package/dist/types/internal/keyboard.d.ts +45 -0
- package/dist/web-types.json +784 -101
- package/package.json +13 -1
- package/dist/chunks/config-2ZHRsdOc.js.map +0 -1
- package/dist/chunks/config-B42iJ48O.js.map +0 -1
- package/dist/chunks/config-B5SBUa6u.js.map +0 -1
- package/dist/chunks/config-BAse0laT.js.map +0 -1
- package/dist/chunks/config-BHLMTJaR.js.map +0 -1
- package/dist/chunks/config-BXRmsn3t.js.map +0 -1
- package/dist/chunks/config-Bs1HwUcx.js.map +0 -1
- package/dist/chunks/config-CMNfZO7S.js.map +0 -1
- package/dist/chunks/config-CbEbLyDE.js.map +0 -1
- package/dist/chunks/config-CjWOTgLL.js.map +0 -1
- package/dist/chunks/config-D3HOuHDe.js.map +0 -1
- package/dist/chunks/config-DIDz_E5m.js.map +0 -1
- package/dist/chunks/config-DNDgp9bB.js.map +0 -1
- package/dist/chunks/config-Yy67uWHY.js +0 -140
- package/dist/chunks/config-Yy67uWHY.js.map +0 -1
- package/dist/chunks/config-iemgzS4x.js.map +0 -1
- package/dist/chunks/en-Bxyn5lW7.js.map +0 -1
- package/dist/chunks/es-Dtl-a7ui.js.map +0 -1
- package/dist/chunks/grBadgeStyles-DV0DrAew.js.map +0 -1
- package/dist/chunks/grSelectStyles-D9EQ-pgK.js.map +0 -1
- package/dist/chunks/grSliderStyles-kaz6VXZ3.js.map +0 -1
- package/dist/chunks/grTableStyles-DkQPMfx9.js +0 -39
- package/dist/chunks/grTableStyles-DkQPMfx9.js.map +0 -1
- package/dist/chunks/granular-provider-BOQp7N5o.js.map +0 -1
- package/dist/chunks/keyboard-DE2yhz_b.js.map +0 -1
- package/dist/chunks/overlayPanelSurface-BKeMhRx4.js.map +0 -1
- package/dist/chunks/ru-hrB4I1u_.js.map +0 -1
- package/dist/chunks/safelist-x8USecK8.js.map +0 -1
- package/dist/components/GrAutocomplete/chunks/GrAutocomplete-C-uovdv8.js.map +0 -1
- package/dist/components/GrBadge/chunks/GrBadge-DBeQXEir.js +0 -47
- package/dist/components/GrBadge/chunks/GrBadge-DBeQXEir.js.map +0 -1
- package/dist/components/GrCarousel/chunks/GrCarousel-ByuughtI.js.map +0 -1
- package/dist/components/GrCheckbox/chunks/GrCheckbox-Dp201frb.js.map +0 -1
- package/dist/components/GrColorPicker/chunks/GrColorPicker-BRM_4lyI.js.map +0 -1
- package/dist/components/GrCommandPalette/chunks/GrCommandPalette-BJHmkDQv.js.map +0 -1
- package/dist/components/GrDataTable/chunks/GrDataTable-DQxYYgQk.js.map +0 -1
- package/dist/components/GrDropdownMenu/chunks/GrDropdownMenu-Dxkz_ry4.js.map +0 -1
- package/dist/components/GrEmptyState/chunks/GrEmptyState-BbvwE-E0.js.map +0 -1
- package/dist/components/GrFileUpload/chunks/GrFileUpload-BwMR71zN.js.map +0 -1
- package/dist/components/GrFormFile/chunks/GrFormFile-Dlxx-9zi.js.map +0 -1
- package/dist/components/GrInput/chunks/GrInput-DV4gMWPR.js.map +0 -1
- package/dist/components/GrInputTag/chunks/GrInputTag-CO0YU-ok.js.map +0 -1
- package/dist/components/GrKbd/chunks/GrKbd-BNMeoaLV.js.map +0 -1
- package/dist/components/GrNavbar/chunks/GrNavbar-BRGuksiy.js.map +0 -1
- package/dist/components/GrSelect/chunks/GrSelect-0iI4wdR_.js.map +0 -1
- package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js +0 -264
- package/dist/components/GrSidebar/chunks/GrSidebar-DoKLlHSw.js.map +0 -1
- package/dist/components/GrSlider/chunks/GrSlider-CO8N9SF6.js.map +0 -1
- package/dist/components/GrSwitch/chunks/GrSwitch-CriHWT2A.js.map +0 -1
- package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js +0 -92
- package/dist/components/GrTabPanels/chunks/GrTabPanels-5zsbqS1v.js.map +0 -1
- package/dist/components/GrTable/chunks/GrTable-CKJ-HrsN.js.map +0 -1
- package/dist/components/GrTextarea/chunks/GrTextarea-Bfgc0DD2.js.map +0 -1
- package/dist/components/GrToaster/chunks/GrToaster-CZixNk0l.js.map +0 -1
- package/dist/components/GrTooltip/chunks/GrTooltip-DkMMM0uq.js.map +0 -1
- package/dist/components/GrTransfer/chunks/GrTransfer-DdfBUf35.js.map +0 -1
- package/dist/components/GrTree/chunks/GrTree-6yZrncJE.js.map +0 -1
- package/dist/components/GrTreeSelect/chunks/GrTreeSelect-B6KoDYiZ.js.map +0 -1
- package/dist/types/components/GrAutocomplete/composables/useAutocompleteVirtual.d.ts +0 -33
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { ComputedRef, Ref } from 'vue';
|
|
2
|
-
import type {
|
|
2
|
+
import type { OptionPanelItem, OptionPanelRow } from '../../shared/optionPanel';
|
|
3
|
+
import type { GrAutocompleteOption, GrAutocompleteOptionOrGroup, GrAutocompleteValue } from '../GrAutocomplete.vue';
|
|
4
|
+
export type GrAutocompletePanelItem<TValue extends GrAutocompleteValue> = OptionPanelItem<GrAutocompleteOption<TValue>>;
|
|
5
|
+
export type GrAutocompletePanelRow<TValue extends GrAutocompleteValue> = OptionPanelRow<GrAutocompleteOption<TValue>>;
|
|
3
6
|
/**
|
|
4
7
|
* Состав панели `GrAutocomplete`: что показывать под запросом.
|
|
5
8
|
*
|
|
@@ -11,7 +14,9 @@ import type { GrAutocompleteOption, GrAutocompleteValue } from '../GrAutocomplet
|
|
|
11
14
|
* уже есть среди опций.
|
|
12
15
|
*/
|
|
13
16
|
export interface UseAutocompletePanelOptions<TValue extends GrAutocompleteValue> {
|
|
14
|
-
optionsResolved: ComputedRef<
|
|
17
|
+
optionsResolved: ComputedRef<GrAutocompleteOptionOrGroup<TValue>[]>;
|
|
18
|
+
/** Список без групп: по нему проверяется «такое значение уже есть». */
|
|
19
|
+
flatOptions: ComputedRef<GrAutocompleteOption<TValue>[]>;
|
|
15
20
|
/** Введённый текст без нормализации: тримит уже сам модуль. */
|
|
16
21
|
query: Ref<string>;
|
|
17
22
|
/** Пользователь начал ввод — до этого single-режим показывает весь список. */
|
|
@@ -29,6 +34,11 @@ export interface UseAutocompletePanelOptions<TValue extends GrAutocompleteValue>
|
|
|
29
34
|
export interface AutocompletePanel<TValue extends GrAutocompleteValue> {
|
|
30
35
|
searchQuery: ComputedRef<string>;
|
|
31
36
|
belowMinQuery: ComputedRef<boolean>;
|
|
37
|
+
/** Плоский набор строк панели: заголовки групп идут в нём наравне с опциями. */
|
|
38
|
+
panelItems: ComputedRef<GrAutocompletePanelItem<TValue>[]>;
|
|
39
|
+
/** Те же строки, собранные в группы для рендера. */
|
|
40
|
+
panelRows: ComputedRef<GrAutocompletePanelRow<TValue>[]>;
|
|
41
|
+
/** Только опции — по ним ходит клавиатура и считается «список пуст». */
|
|
32
42
|
effectiveOptions: ComputedRef<GrAutocompleteOption<TValue>[]>;
|
|
33
43
|
canAddCustom: ComputedRef<boolean>;
|
|
34
44
|
showEmpty: ComputedRef<boolean>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ComputedRef, Ref, ShallowRef } from 'vue';
|
|
2
|
-
import type { GrAutocompleteModelValue, GrAutocompleteOption, GrAutocompleteValue } from '../GrAutocomplete.vue';
|
|
2
|
+
import type { GrAutocompleteModelValue, GrAutocompleteOption, GrAutocompleteOptionOrGroup, GrAutocompleteValue } from '../GrAutocomplete.vue';
|
|
3
3
|
/**
|
|
4
4
|
* Значение и опции `GrAutocomplete`: что выбрано и как это назвать.
|
|
5
5
|
*
|
|
@@ -9,14 +9,17 @@ import type { GrAutocompleteModelValue, GrAutocompleteOption, GrAutocompleteValu
|
|
|
9
9
|
*/
|
|
10
10
|
export interface UseAutocompleteValuesOptions<TValue extends GrAutocompleteValue> {
|
|
11
11
|
modelValue: () => GrAutocompleteModelValue<TValue>;
|
|
12
|
-
options: () =>
|
|
12
|
+
options: () => GrAutocompleteOptionOrGroup<TValue>[] | undefined;
|
|
13
13
|
multiple: () => boolean;
|
|
14
14
|
fetchOptions: () => unknown;
|
|
15
|
-
remoteOptions: ShallowRef<
|
|
15
|
+
remoteOptions: ShallowRef<GrAutocompleteOptionOrGroup<TValue>[]>;
|
|
16
16
|
remoteAnswered: Ref<boolean>;
|
|
17
17
|
}
|
|
18
18
|
export interface AutocompleteValues<TValue extends GrAutocompleteValue> {
|
|
19
|
-
|
|
19
|
+
/** Список как его задал потребитель — с группами, если они есть. */
|
|
20
|
+
optionsResolved: ComputedRef<GrAutocompleteOptionOrGroup<TValue>[]>;
|
|
21
|
+
/** Тот же список без групп: по нему ищут метку выбранного и проверяют дубли. */
|
|
22
|
+
flatOptions: ComputedRef<GrAutocompleteOption<TValue>[]>;
|
|
20
23
|
isEmptyValue: (value: unknown) => boolean;
|
|
21
24
|
modelSingle: ComputedRef<TValue | ''>;
|
|
22
25
|
selectedValues: ComputedRef<TValue[]>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Ref, ShallowRef } from 'vue';
|
|
2
|
-
import type {
|
|
2
|
+
import type { GrAutocompleteOptionOrGroup, GrAutocompleteValue } from '../GrAutocomplete.vue';
|
|
3
3
|
/**
|
|
4
4
|
* Дебаунснутая удалённая загрузка опций.
|
|
5
5
|
*
|
|
@@ -15,16 +15,16 @@ import type { GrAutocompleteOption, GrAutocompleteValue } from '../GrAutocomplet
|
|
|
15
15
|
* делает потребитель) — модулю место в `composables/internal/`.
|
|
16
16
|
*/
|
|
17
17
|
export interface UseRemoteOptionsOptions<TValue extends GrAutocompleteValue> {
|
|
18
|
-
fetchOptions: () => ((query: string, signal: AbortSignal) => Promise<
|
|
18
|
+
fetchOptions: () => ((query: string, signal: AbortSignal) => Promise<GrAutocompleteOptionOrGroup<TValue>[]>) | undefined;
|
|
19
19
|
/** Стартовый список: его смена сбрасывает ответ сервера. */
|
|
20
|
-
options: () =>
|
|
20
|
+
options: () => GrAutocompleteOptionOrGroup<TValue>[] | undefined;
|
|
21
21
|
debounce: () => number;
|
|
22
22
|
minQueryLength: () => number;
|
|
23
23
|
onSearch: (query: string) => void;
|
|
24
24
|
onSearchError: (error: unknown) => void;
|
|
25
25
|
}
|
|
26
26
|
export interface RemoteOptions<TValue extends GrAutocompleteValue> {
|
|
27
|
-
remoteOptions: ShallowRef<
|
|
27
|
+
remoteOptions: ShallowRef<GrAutocompleteOptionOrGroup<TValue>[]>;
|
|
28
28
|
remoteAnswered: Ref<boolean>;
|
|
29
29
|
remoteLoading: Ref<boolean>;
|
|
30
30
|
scheduleSearch: (value: string) => void;
|
|
@@ -11,6 +11,20 @@ export type GrAutocompleteOption<TValue extends GrAutocompleteValue = string> =
|
|
|
11
11
|
label: string;
|
|
12
12
|
disabled?: boolean;
|
|
13
13
|
};
|
|
14
|
+
/**
|
|
15
|
+
* Группа опций: заголовок `label` + вложенные опции `options`.
|
|
16
|
+
*
|
|
17
|
+
* Форма та же, что у `GrSelect`: два соседних контрола, у которых списки
|
|
18
|
+
* различаются только способом ввода, обязаны принимать данные одинаково.
|
|
19
|
+
*/
|
|
20
|
+
export type GrAutocompleteOptionGroup<TValue extends GrAutocompleteValue = string> = {
|
|
21
|
+
label: string;
|
|
22
|
+
options: GrAutocompleteOption<TValue>[];
|
|
23
|
+
};
|
|
24
|
+
/** Элемент списка: либо одиночная опция, либо группа. */
|
|
25
|
+
export type GrAutocompleteOptionOrGroup<TValue extends GrAutocompleteValue = string> = GrAutocompleteOption<TValue> | GrAutocompleteOptionGroup<TValue>;
|
|
26
|
+
/** Группа опознаётся по наличию вложенного списка, а не по служебному полю. */
|
|
27
|
+
export declare function isAutocompleteOptionGroup<TValue extends GrAutocompleteValue>(item: GrAutocompleteOptionOrGroup<TValue>): item is GrAutocompleteOptionGroup<TValue>;
|
|
14
28
|
export type GrAutocompleteModelValue<TValue extends GrAutocompleteValue = string> = TValue | TValue[];
|
|
15
29
|
/**
|
|
16
30
|
* Оболочка (визуально повторяет `GrInput`): бордер + focus-ring по `focus-within`,
|
|
@@ -60,4 +74,4 @@ export declare const autocompleteStateClass = "flex items-center justify-center
|
|
|
60
74
|
* (card + бордер + shadow-2 + скругление). Держим локальную копию строки,
|
|
61
75
|
* чтобы не тянуть зависимость от `GrSelect` (компоненты гранулярно независимы).
|
|
62
76
|
*/
|
|
63
|
-
export declare const autocompletePanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] overflow-hidden";
|
|
77
|
+
export declare const autocompletePanelClasses = "rounded-[var(--gr-radius-xl)] border border-[var(--gr-brd)] bg-[var(--gr-popover)] text-[var(--gr-popover-fg)] shadow-[var(--gr-shadow-2)] flex flex-col max-h-[var(--gr-floating-available-height,100vh)] overflow-hidden";
|
|
@@ -4,7 +4,7 @@ export { default } from './GrAutocomplete.vue';
|
|
|
4
4
|
export { default as GrAutocomplete } from './GrAutocomplete.vue';
|
|
5
5
|
export { grAutocompleteConfig } from './config';
|
|
6
6
|
export type { GrAutocompleteConfigurableProps } from './defaults';
|
|
7
|
-
export type { GrAutocompleteModelValue, GrAutocompleteOption, GrAutocompleteProps, GrAutocompleteSize, } from './GrAutocomplete.vue';
|
|
7
|
+
export type { GrAutocompleteModelValue, GrAutocompleteOption, GrAutocompleteOptionGroup, GrAutocompleteOptionOrGroup, GrAutocompleteProps, GrAutocompleteSize, } from './GrAutocomplete.vue';
|
|
8
8
|
export { grAutocompleteSafelist } from './safelist';
|
|
9
9
|
export type { GrAutocompleteEmits } from './GrAutocomplete.vue';
|
|
10
10
|
export type GrAutocompleteInstance = ComponentExposed<typeof GrAutocompleteComponent>;
|
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
export type { GrBadgeRadius, GrBadgeSize, GrBadgeTone } from './grBadgeStyles';
|
|
2
|
-
import { type GrBadgeRadius, type GrBadgeSize, type GrBadgeTone } from './grBadgeStyles';
|
|
2
|
+
import { type GrBadgeDotTone, type GrBadgeRadius, type GrBadgeSize, type GrBadgeTone } from './grBadgeStyles';
|
|
3
3
|
export interface GrBadgeProps {
|
|
4
4
|
tone?: GrBadgeTone;
|
|
5
5
|
dark?: boolean;
|
|
6
6
|
size?: GrBadgeSize;
|
|
7
7
|
radius?: GrBadgeRadius;
|
|
8
|
+
/**
|
|
9
|
+
* Точка-маркер перед подписью: «● Активен».
|
|
10
|
+
*
|
|
11
|
+
* Имя тона красит маркер отдельно от плашки — ради пары «тихая плашка +
|
|
12
|
+
* цветной маркер», из-за которой паттерн и существует. `true` берёт тон
|
|
13
|
+
* самого бейджа.
|
|
14
|
+
*
|
|
15
|
+
* На заливке (`dark`) маркер всегда цвета текста: тон там слился бы с
|
|
16
|
+
* подложкой, взятой из того же слоя.
|
|
17
|
+
*/
|
|
18
|
+
dot?: GrBadgeDotTone | boolean;
|
|
8
19
|
}
|
|
9
20
|
type __VLS_Slots = {
|
|
10
21
|
/** Содержимое метки. */
|
|
@@ -26,16 +37,19 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
26
37
|
dark: boolean;
|
|
27
38
|
size: undefined;
|
|
28
39
|
radius: undefined;
|
|
40
|
+
dot: boolean;
|
|
29
41
|
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrBadgeProps>, {
|
|
30
42
|
tone: undefined;
|
|
31
43
|
dark: boolean;
|
|
32
44
|
size: undefined;
|
|
33
45
|
radius: undefined;
|
|
46
|
+
dot: boolean;
|
|
34
47
|
}>>> & Readonly<{}>, {
|
|
35
48
|
tone: GrBadgeTone;
|
|
36
49
|
size: GrBadgeSize;
|
|
37
50
|
radius: GrBadgeRadius;
|
|
38
51
|
dark: boolean;
|
|
52
|
+
dot: GrBadgeDotTone | boolean;
|
|
39
53
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
40
54
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
41
55
|
declare const _default: typeof __VLS_export;
|
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import type { GrComponentSize } from '../shared/sizes';
|
|
2
2
|
import type { GrTone } from '../shared/tones';
|
|
3
3
|
export type GrBadgeTone = GrTone;
|
|
4
|
+
/**
|
|
5
|
+
* Тон маркера — отдельным литеральным перечислением, а не `GrTone`.
|
|
6
|
+
*
|
|
7
|
+
* Компилятор SFC выводит рантайм-типы пропов из TypeScript, но `GrTone` это
|
|
8
|
+
* `typeof GR_TONES[number]`, и развернуть его в конструкторы он не умеет. У
|
|
9
|
+
* `dot?: GrTone | boolean` из объединения выживал один `Boolean`, и строковый
|
|
10
|
+
* тон отбраковывался предупреждением Vue у каждого потребителя — при том, что
|
|
11
|
+
* компонент работал. Литеральное объединение разрешается и даёт
|
|
12
|
+
* `type: [Boolean, String]`; так же написан `showTooltip` у `GrSlider`.
|
|
13
|
+
*
|
|
14
|
+
* От расхождения с `GR_TONES` держит `assertDotToneCoversTones` ниже: списки
|
|
15
|
+
* обязаны совпадать в обе стороны, иначе `vue-tsc` роняет сборку.
|
|
16
|
+
*/
|
|
17
|
+
export type GrBadgeDotTone = 'primary' | 'neutral' | 'success' | 'warning' | 'danger' | 'info' | 'slate' | 'azure';
|
|
18
|
+
type AssertMutual<A, B> = [A] extends [B] ? ([B] extends [A] ? true : never) : never;
|
|
19
|
+
export declare const assertDotToneCoversTones: AssertMutual<GrBadgeDotTone, GrTone>;
|
|
4
20
|
export type GrBadgeSize = GrComponentSize;
|
|
5
21
|
export type GrBadgeRadius = 'square' | 'semi' | 'round';
|
|
6
22
|
export declare const sizeClassBySize: Record<GrBadgeSize, string>;
|
|
@@ -42,3 +58,44 @@ export declare function grBadgeClass(options: {
|
|
|
42
58
|
size: GrBadgeSize;
|
|
43
59
|
radius: GrBadgeRadius;
|
|
44
60
|
}): string;
|
|
61
|
+
/**
|
|
62
|
+
* Точка-маркер перед подписью.
|
|
63
|
+
*
|
|
64
|
+
* Кружок мельче иконки и растёт медленнее: маркер обязан оставаться маркером,
|
|
65
|
+
* а не превращаться в третий элемент строки. Повтор значений на концах шкалы —
|
|
66
|
+
* тот же приём, что у `badgeIconSizeClassBySize`.
|
|
67
|
+
*/
|
|
68
|
+
export declare const badgeDotSizeClassBySize: Record<GrBadgeSize, string>;
|
|
69
|
+
/** Маркер не жмётся: подпись бейджа не переносится, сжиматься нечему. */
|
|
70
|
+
export declare const badgeDotClass = "shrink-0 rounded-[var(--gr-radius-full)]";
|
|
71
|
+
/**
|
|
72
|
+
* Маркер на мягкой подложке красится **тем же покомпонентным слоем**, что и
|
|
73
|
+
* заливка filled-бейджа, и это не экономия на токенах.
|
|
74
|
+
*
|
|
75
|
+
* Роль тона напрямую здесь не работает ни в одном виде, и обе ветки измерены:
|
|
76
|
+
* `--gr-{tone}` в светлой теме — яркая заливка под тёмный текст, как маркер она
|
|
77
|
+
* не берёт 3:1 **ни на одной** подложке (`success` 2.06–2.32, `warning`
|
|
78
|
+
* 2.27–2.56); `--gr-{tone}-solid` берёт светлую тему и заваливает тёмную
|
|
79
|
+
* (до 1.37). Слой `--gr-badge-{tone}-bg` как раз и означает «насыщенный вес,
|
|
80
|
+
* который читается в этой теме»: `-solid` в светлой, роль тона в тёмной.
|
|
81
|
+
*
|
|
82
|
+
* На нём проходят все 128 пар «тон маркера × тон бейджа × тема», включая
|
|
83
|
+
* одноимённую, — поэтому булев `dot` берёт тон самого бейджа, а не отдельный
|
|
84
|
+
* цвет. Гейт — `__tests__/grBadgeContrast.test.ts`.
|
|
85
|
+
*/
|
|
86
|
+
export declare const badgeDotToneClass: Record<GrBadgeTone, string>;
|
|
87
|
+
/**
|
|
88
|
+
* Маркер на **заливке** — цветом текста бейджа.
|
|
89
|
+
*
|
|
90
|
+
* Тон здесь не годится по построению: подложка filled-бейджа сама берётся из
|
|
91
|
+
* `--gr-badge-{tone}-bg`, и маркер того же тона слился бы с ней в один цвет.
|
|
92
|
+
* `currentColor` равен тексту бейджа, а он поверен на AA 4.5:1 — то есть
|
|
93
|
+
* заведомо проходит порог для графики.
|
|
94
|
+
*/
|
|
95
|
+
export declare const badgeDotCurrentColorClass = "bg-[currentColor]";
|
|
96
|
+
export declare function badgeDotClassFor(options: {
|
|
97
|
+
tone: GrBadgeTone;
|
|
98
|
+
dark: boolean;
|
|
99
|
+
size: GrBadgeSize;
|
|
100
|
+
}): string;
|
|
101
|
+
export {};
|
|
@@ -2,6 +2,6 @@ export { default } from './GrBadge.vue';
|
|
|
2
2
|
export { default as GrBadge } from './GrBadge.vue';
|
|
3
3
|
export { grBadgeConfig } from './config';
|
|
4
4
|
export type { GrBadgeConfigurableProps } from './defaults';
|
|
5
|
-
export type { GrBadgeRadius, GrBadgeSize, GrBadgeTone } from './grBadgeStyles';
|
|
5
|
+
export type { GrBadgeDotTone, GrBadgeRadius, GrBadgeSize, GrBadgeTone } from './grBadgeStyles';
|
|
6
6
|
export { grBadgeSafelist } from './safelist';
|
|
7
7
|
export type { GrBadgeProps } from './GrBadge.vue';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GrCarouselActivationMode, GrCarouselIndicators } from './grCarouselStyles';
|
|
1
|
+
import type { GrCarouselActivationMode, GrCarouselIndicators, GrCarouselOrientation } from './grCarouselStyles';
|
|
2
2
|
import type { GrTone } from '../shared/tones';
|
|
3
3
|
export interface GrCarouselProps {
|
|
4
4
|
/** Индекс текущего кадра. Не передан — лента ведёт позицию сама. */
|
|
@@ -9,6 +9,25 @@ export interface GrCarouselProps {
|
|
|
9
9
|
autoplayInterval?: number;
|
|
10
10
|
/** Замкнуть ленту. Выключено — стрелки на краях гаснут. */
|
|
11
11
|
loop?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Ось движения ленты. По вертикали вьюпорту нужна **определённая высота**:
|
|
14
|
+
* шаг считается от неё, и без высоты лента вырождается в столбец кадров.
|
|
15
|
+
*/
|
|
16
|
+
orientation?: GrCarouselOrientation;
|
|
17
|
+
/**
|
|
18
|
+
* Не рисовать содержимое кадров вдали от текущего.
|
|
19
|
+
*
|
|
20
|
+
* Виртуализируется **нутро кадра, а не кадр**: кадры приходят слотом, и не
|
|
21
|
+
* отрисовать чужой узел лента не может. Пустая обёртка держит место в ряду и
|
|
22
|
+
* почти ничего не весит, а картинки и карточки из DOM уходят.
|
|
23
|
+
*/
|
|
24
|
+
virtual?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Сколько кадров по обе стороны от текущего рисовать сверх него. Меньше
|
|
27
|
+
* единицы ставить нельзя: следующий кадр обязан быть готов **до** перехода,
|
|
28
|
+
* иначе лента поедет на пустоту, а содержимое проявится уже на месте.
|
|
29
|
+
*/
|
|
30
|
+
virtualOverscan?: number;
|
|
12
31
|
/** Вид переключателя кадров. `none` меняет и роль самих слайдов. */
|
|
13
32
|
indicators?: GrCarouselIndicators;
|
|
14
33
|
/** Тон текущего переключателя по общей шкале пакета. */
|
|
@@ -57,6 +76,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
57
76
|
autoplay: boolean;
|
|
58
77
|
autoplayInterval: number;
|
|
59
78
|
loop: boolean;
|
|
79
|
+
orientation: string;
|
|
80
|
+
virtual: boolean;
|
|
81
|
+
virtualOverscan: number;
|
|
60
82
|
indicators: undefined;
|
|
61
83
|
tone: undefined;
|
|
62
84
|
activationMode: undefined;
|
|
@@ -89,6 +111,9 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
89
111
|
autoplay: boolean;
|
|
90
112
|
autoplayInterval: number;
|
|
91
113
|
loop: boolean;
|
|
114
|
+
orientation: string;
|
|
115
|
+
virtual: boolean;
|
|
116
|
+
virtualOverscan: number;
|
|
92
117
|
indicators: undefined;
|
|
93
118
|
tone: undefined;
|
|
94
119
|
activationMode: undefined;
|
|
@@ -108,11 +133,14 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
108
133
|
tone: GrTone;
|
|
109
134
|
indicators: GrCarouselIndicators;
|
|
110
135
|
activationMode: GrCarouselActivationMode;
|
|
136
|
+
orientation: GrCarouselOrientation;
|
|
111
137
|
ariaLabel: string;
|
|
112
138
|
modelValue: number;
|
|
139
|
+
virtual: boolean;
|
|
113
140
|
autoplay: boolean;
|
|
114
141
|
autoplayInterval: number;
|
|
115
142
|
loop: boolean;
|
|
143
|
+
virtualOverscan: number;
|
|
116
144
|
arrows: boolean;
|
|
117
145
|
swipe: boolean;
|
|
118
146
|
landmark: boolean;
|
|
@@ -9,6 +9,11 @@ export interface UseCarouselSwipeOptions {
|
|
|
9
9
|
atEdge: (direction: 1 | -1) => boolean;
|
|
10
10
|
/** Жест начался: показ пора ставить на паузу. */
|
|
11
11
|
onStart?: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Ось движения ленты. По вертикали ведущей становится `dy`, а поперечная
|
|
14
|
+
* прокрутка страницы отдаётся ей же — иначе карусель перехватывала бы скролл.
|
|
15
|
+
*/
|
|
16
|
+
orientation?: () => 'horizontal' | 'vertical';
|
|
12
17
|
}
|
|
13
18
|
export interface UseCarouselSwipeReturn {
|
|
14
19
|
isDragging: Ref<boolean>;
|
|
@@ -42,5 +42,26 @@ export interface GrCarouselContext {
|
|
|
42
42
|
tabIdFor: (id: string) => string | undefined;
|
|
43
43
|
/** «N из M» — имя слайда, когда своего `label` у него нет. */
|
|
44
44
|
positionLabel: (id: string) => string;
|
|
45
|
+
/**
|
|
46
|
+
* Смещение слайда в процентах ширины ленты на время замыкания петли.
|
|
47
|
+
*
|
|
48
|
+
* Кольцо делается **без клонирования кадров**: на шаге «последний → первый»
|
|
49
|
+
* первый слайд временно переезжает за последний, лента доезжает до него как
|
|
50
|
+
* до обычного соседа, и уже после перехода индекс снимается на ноль без
|
|
51
|
+
* анимации. Клон здесь невозможен по устройству: кадры приходят слотом, и
|
|
52
|
+
* копия чужого узла унесла бы с собой его состояние и ссылки.
|
|
53
|
+
*/
|
|
54
|
+
displacementOf: (id: string) => number;
|
|
55
|
+
/** Ось движения ленты: по ней кадр выбирает, какой размер занимать целиком. */
|
|
56
|
+
orientation: ComputedRef<'horizontal' | 'vertical'>;
|
|
57
|
+
/**
|
|
58
|
+
* Рисовать ли содержимое кадра.
|
|
59
|
+
*
|
|
60
|
+
* Виртуализация здесь **содержимого, а не самих кадров**: кадры приходят
|
|
61
|
+
* слотом, и не отрисовать чужой узел лента не может — но может попросить его
|
|
62
|
+
* не рисовать своё нутро. Пустая обёртка держит место в ряду и весит
|
|
63
|
+
* пренебрежимо мало, а тяжёлое (картинки, карточки) уходит из DOM.
|
|
64
|
+
*/
|
|
65
|
+
shouldRender: (id: string) => boolean;
|
|
45
66
|
}
|
|
46
67
|
export declare const GR_CAROUSEL_CONTEXT: InjectionKey<GrCarouselContext>;
|
|
@@ -23,24 +23,54 @@ export declare function grCarouselThumbActiveClass(tone: GrTone): string;
|
|
|
23
23
|
export declare const GR_CAROUSEL_ACTIVATION_MODES: readonly ["automatic", "manual"];
|
|
24
24
|
export type GrCarouselActivationMode = typeof GR_CAROUSEL_ACTIVATION_MODES[number];
|
|
25
25
|
export declare const carouselRootBase = "relative w-full";
|
|
26
|
+
/**
|
|
27
|
+
* Вертикальная лента: высоту задаёт потребитель **на корне**, а вьюпорт обязан
|
|
28
|
+
* её получить.
|
|
29
|
+
*
|
|
30
|
+
* Иначе высота вьюпорта выводится из содержимого, процентная `flex-basis`
|
|
31
|
+
* кадров упирается в неопределённый размер и вырождается в высоту содержимого —
|
|
32
|
+
* кадры встают столбцом, а лента честно считает шаг от суммы. Отсюда колонка на
|
|
33
|
+
* корне и `flex-1 min-h-0` на вьюпорте: полоса переключателей остаётся под ним,
|
|
34
|
+
* а вьюпорт забирает остаток.
|
|
35
|
+
*/
|
|
36
|
+
export declare const carouselRootAxis: Record<GrCarouselOrientation, string>;
|
|
37
|
+
export declare const carouselViewportAxis: Record<GrCarouselOrientation, string>;
|
|
26
38
|
export declare const carouselViewportBase = "relative w-full overflow-hidden";
|
|
27
39
|
/**
|
|
28
40
|
* Вертикальная прокрутка страницы остаётся браузеру, горизонталь забирает лента.
|
|
29
41
|
* `select-none` — против выделения текста слайда протяжкой.
|
|
30
42
|
*/
|
|
31
|
-
export declare const carouselViewportSwipeClass = "
|
|
32
|
-
export declare const carouselTrackBase = "flex
|
|
33
|
-
export declare const
|
|
43
|
+
export declare const carouselViewportSwipeClass = "select-none";
|
|
44
|
+
export declare const carouselTrackBase = "flex will-change-transform transition-transform duration-[var(--gr-duration-base)] ease-[var(--gr-ease-out)]";
|
|
45
|
+
export declare const GR_CAROUSEL_ORIENTATIONS: readonly ["horizontal", "vertical"];
|
|
46
|
+
export type GrCarouselOrientation = typeof GR_CAROUSEL_ORIENTATIONS[number];
|
|
47
|
+
export declare const carouselSlideBase = "shrink-0 grow-0 basis-full";
|
|
48
|
+
/**
|
|
49
|
+
* Кадр занимает вьюпорт целиком по оси движения. Поперёк оси он не ограничен:
|
|
50
|
+
* там размер задаёт содержимое, как и раньше.
|
|
51
|
+
*/
|
|
52
|
+
export declare const carouselSlideAxis: Record<GrCarouselOrientation, string>;
|
|
53
|
+
/**
|
|
54
|
+
* Направление ленты. По вертикали ей нужна **определённая высота вьюпорта**:
|
|
55
|
+
* `translateY(-100%)` считается от высоты самой ленты, а она у колонки равна
|
|
56
|
+
* сумме кадров, если вьюпорт высоту не задал.
|
|
57
|
+
*/
|
|
58
|
+
export declare const carouselTrackAxis: Record<GrCarouselOrientation, string>;
|
|
59
|
+
/** Жест по оси движения перехватывается лентой, поперёк — отдаётся странице. */
|
|
60
|
+
export declare const carouselViewportTouchAction: Record<GrCarouselOrientation, string>;
|
|
61
|
+
/**
|
|
62
|
+
* Стрелки стоят по оси движения. По горизонтали позиции логические
|
|
63
|
+
* (`start`/`end`) — они зеркалятся под RTL; по вертикали направление письма ни
|
|
64
|
+
* при чём, поэтому там физические `top`/`bottom`.
|
|
65
|
+
*/
|
|
66
|
+
export declare const carouselControlAxis: Record<GrCarouselOrientation, string>;
|
|
34
67
|
/**
|
|
35
68
|
* Стрелки лежат поверх произвольного содержимого, поэтому несут собственную
|
|
36
69
|
* подложку: на светлом кадре иконка без неё пропадает. `z-10` — порядок внутри
|
|
37
70
|
* собственного stacking-контекста компонента, а не слой страницы.
|
|
38
71
|
*/
|
|
39
|
-
export declare const carouselControlBase = "absolute
|
|
40
|
-
export declare const carouselControlPositions:
|
|
41
|
-
readonly prev: "start-2";
|
|
42
|
-
readonly next: "end-2";
|
|
43
|
-
};
|
|
72
|
+
export declare const carouselControlBase = "absolute z-10 inline-flex h-9 w-9 items-center justify-center rounded-[var(--gr-radius-full)] border border-[var(--gr-brd)] bg-[var(--gr-carousel-control-bg,var(--gr-bg))] text-[var(--gr-carousel-control-fg,var(--gr-fg))] transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--gr-ring)]";
|
|
73
|
+
export declare const carouselControlPositions: Record<GrCarouselOrientation, Record<'prev' | 'next', string>>;
|
|
44
74
|
/**
|
|
45
75
|
* Стрелка на краю без `loop` гасится фоном, а не `opacity`: прозрачность
|
|
46
76
|
* разбавляет выверенные на AA токены текста и роняет контраст.
|
|
@@ -75,6 +105,6 @@ export declare const carouselThumbStates: {
|
|
|
75
105
|
export declare const carouselThumbImageClass = "h-full w-full object-cover";
|
|
76
106
|
/** Миниатюры не дали — плитка держит ритм полосы номером слайда. */
|
|
77
107
|
export declare const carouselThumbFallbackClass = "flex h-full w-full items-center justify-center bg-[var(--gr-muted)] text-[var(--gr-muted-fg)] text-[length:var(--gr-control-text-xs)] leading-[var(--gr-control-leading-xs)]";
|
|
78
|
-
export declare function grCarouselControlClass(direction: 'prev' | 'next', disabled: boolean): string;
|
|
108
|
+
export declare function grCarouselControlClass(direction: 'prev' | 'next', disabled: boolean, orientation?: GrCarouselOrientation): string;
|
|
79
109
|
export declare function grCarouselIndicatorsClass(variant: GrCarouselIndicators): string;
|
|
80
110
|
export declare function grCarouselIndicatorClass(variant: GrCarouselIndicators, active: boolean, tone?: GrTone): string;
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { type GrCheckboxLabelPosition, type GrCheckboxSize } from './grCheckboxStyles';
|
|
2
2
|
export type { GrCheckboxLabelPosition, GrCheckboxSize } from './grCheckboxStyles';
|
|
3
3
|
export interface GrCheckboxProps {
|
|
4
|
+
/**
|
|
5
|
+
* Остановка `Tab` у самого переключателя.
|
|
6
|
+
*
|
|
7
|
+
* Нужна составным виджетам, которые забирают таб-порядок себе: в сетке
|
|
8
|
+
* `GrDataTable` (`cell-navigation`) `Tab` принадлежит таблице целиком, и
|
|
9
|
+
* чекбокс в ячейке своей остановки держать не должен — до него добираются
|
|
10
|
+
* стрелкой до ячейки и `Enter`. Выключенный переключатель остаётся вне
|
|
11
|
+
* обхода в любом случае.
|
|
12
|
+
*/
|
|
13
|
+
tabindex?: number;
|
|
4
14
|
/** Не задан внутри `GrCheckboxGroup` — состояние берётся из группы. */
|
|
5
15
|
modelValue?: boolean;
|
|
6
16
|
disabled?: boolean;
|
|
@@ -38,6 +48,7 @@ declare function focus(): void;
|
|
|
38
48
|
declare function blur(): void;
|
|
39
49
|
declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrCheckboxProps>, {
|
|
40
50
|
modelValue: undefined;
|
|
51
|
+
tabindex: undefined;
|
|
41
52
|
disabled: undefined;
|
|
42
53
|
name: undefined;
|
|
43
54
|
value: string;
|
|
@@ -60,6 +71,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
60
71
|
blur: (event: FocusEvent) => void;
|
|
61
72
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrCheckboxProps>, {
|
|
62
73
|
modelValue: undefined;
|
|
74
|
+
tabindex: undefined;
|
|
63
75
|
disabled: undefined;
|
|
64
76
|
name: undefined;
|
|
65
77
|
value: string;
|
|
@@ -87,6 +99,7 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
|
|
|
87
99
|
name: string;
|
|
88
100
|
invalid: boolean;
|
|
89
101
|
id: string;
|
|
102
|
+
tabindex: number;
|
|
90
103
|
ariaLabel: string;
|
|
91
104
|
modelValue: boolean;
|
|
92
105
|
required: boolean;
|
|
@@ -1,10 +1,20 @@
|
|
|
1
|
-
import { type GrColorPickerSize } from './grColorPickerStyles';
|
|
2
|
-
export type { GrColorPickerSize } from './grColorPickerStyles';
|
|
1
|
+
import { type GrColorPickerSize, type GrColorPickerView } from './grColorPickerStyles';
|
|
2
|
+
export type { GrColorPickerSize, GrColorPickerView } from './grColorPickerStyles';
|
|
3
3
|
export interface GrColorPickerProps {
|
|
4
4
|
/** Цвет в hex: `#RRGGBB`, а при `alpha` — `#RRGGBBAA`. Мусор не роняет компонент. */
|
|
5
5
|
modelValue: string;
|
|
6
6
|
/** Четвёртый слайдер и восьмизначная форма hex. */
|
|
7
7
|
alpha?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Как задаются насыщенность и светлота: двумя бегунками или квадратом.
|
|
10
|
+
* Оттенок и прозрачность остаются бегунками в обоих видах.
|
|
11
|
+
*/
|
|
12
|
+
view?: GrColorPickerView;
|
|
13
|
+
/**
|
|
14
|
+
* Кнопка пипетки. Рисуется только там, где браузер даёт `EyeDropper`, —
|
|
15
|
+
* сегодня это Chromium.
|
|
16
|
+
*/
|
|
17
|
+
eyedropper?: boolean;
|
|
8
18
|
/** Палитра быстрого выбора. Пусто — блок не рендерится. */
|
|
9
19
|
presets?: string[];
|
|
10
20
|
size?: GrColorPickerSize;
|
|
@@ -32,6 +42,8 @@ declare function focus(): void;
|
|
|
32
42
|
declare function blur(): void;
|
|
33
43
|
declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrColorPickerProps>, {
|
|
34
44
|
alpha: boolean;
|
|
45
|
+
view: undefined;
|
|
46
|
+
eyedropper: undefined;
|
|
35
47
|
presets: () => never[];
|
|
36
48
|
size: undefined;
|
|
37
49
|
open: undefined;
|
|
@@ -53,6 +65,8 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
53
65
|
blur: (event: FocusEvent) => void;
|
|
54
66
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<GrColorPickerProps>, {
|
|
55
67
|
alpha: boolean;
|
|
68
|
+
view: undefined;
|
|
69
|
+
eyedropper: undefined;
|
|
56
70
|
presets: () => never[];
|
|
57
71
|
size: undefined;
|
|
58
72
|
open: undefined;
|
|
@@ -73,7 +87,9 @@ declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractP
|
|
|
73
87
|
placement: "bottom-start" | "bottom-end" | "top-start" | "top-end";
|
|
74
88
|
disabled: boolean;
|
|
75
89
|
readonly: boolean;
|
|
90
|
+
view: GrColorPickerView;
|
|
76
91
|
size: GrColorPickerSize;
|
|
92
|
+
eyedropper: boolean;
|
|
77
93
|
name: string;
|
|
78
94
|
invalid: boolean;
|
|
79
95
|
alpha: boolean;
|
|
@@ -34,5 +34,17 @@ export declare function parseHexColor(value: unknown): GrHsla | null;
|
|
|
34
34
|
export declare function formatHexColor(color: GrHsla, withAlpha?: boolean): string;
|
|
35
35
|
/** CSS-запись цвета для превью и градиентов. */
|
|
36
36
|
export declare function hslaToCss(color: GrHsla): string;
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Приводит произвольный объект к валидному диапазону каналов.
|
|
39
|
+
*
|
|
40
|
+
* Округления нет ни у одного канала, и это то же правило, что у `normalizeHue`,
|
|
41
|
+
* распространённое на насыщенность и светлоту: целочисленная сетка HSL мельче
|
|
42
|
+
* сетки hex, и посадка на неё меняет цвет. Замер на типовых брендовых
|
|
43
|
+
* значениях — 11 расхождений из 12: `#10b981` возвращался как `#10b77f`.
|
|
44
|
+
* Пользователь при этом ничего не двигал, а компонент уже переписал его цвет —
|
|
45
|
+
* достаточно было выбрать пресет или вставить hex в поле.
|
|
46
|
+
*
|
|
47
|
+
* Целые нужны шкалам, и они их и получают: бегунок читает `Math.round` своего
|
|
48
|
+
* канала, а хранимое значение остаётся точным.
|
|
49
|
+
*/
|
|
38
50
|
export declare function normalizeHsla(color: GrHsla): GrHsla;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Арифметика двумерной области насыщенность × светлота.
|
|
3
|
+
*
|
|
4
|
+
* Модуль чистый: ни DOM, ни Vue. Всё, что здесь считается, проверяется без
|
|
5
|
+
* монтирования — а в jsdom у области нет ни размеров, ни попадания указателя.
|
|
6
|
+
*
|
|
7
|
+
* Оси выбраны под модель компонента (HSL), а не под привычный HSV-квадрат.
|
|
8
|
+
* Перевод в HSV дал бы более нарядную заливку, но принёс бы вторую проекцию с
|
|
9
|
+
* потерями: при `v = 0` насыщенность HSV не определена, и чёрный терял бы её
|
|
10
|
+
* ровно так же, как серый теряет оттенок. Компонент уже держит своё состояние
|
|
11
|
+
* именно чтобы такого не было.
|
|
12
|
+
*/
|
|
13
|
+
export type GrColorAreaAxis = 'saturation' | 'lightness';
|
|
14
|
+
/** Точка области в процентах: обе координаты — значения каналов, а не пиксели. */
|
|
15
|
+
export interface GrColorAreaPoint {
|
|
16
|
+
s: number;
|
|
17
|
+
l: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Положение ручки в процентах от левого верхнего угла.
|
|
21
|
+
*
|
|
22
|
+
* Светлота инвертирована: вверху области белое, внизу чёрное — так стоит
|
|
23
|
+
* вертикальная шкала во всех привычных пикерах, и переворачивать её значило бы
|
|
24
|
+
* ломать ожидание ради буквальности.
|
|
25
|
+
*/
|
|
26
|
+
export declare function colorAreaThumbPosition(point: GrColorAreaPoint): {
|
|
27
|
+
x: number;
|
|
28
|
+
y: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Значение под указателем.
|
|
32
|
+
*
|
|
33
|
+
* Прямоугольник приходит снаружи: измерять его умеет только вызывающий, а
|
|
34
|
+
* промах мимо области — норма, указатель уходит за её границы при каждом
|
|
35
|
+
* протягивании.
|
|
36
|
+
*/
|
|
37
|
+
export declare function colorAreaPointAt(pointer: {
|
|
38
|
+
clientX: number;
|
|
39
|
+
clientY: number;
|
|
40
|
+
}, rect: {
|
|
41
|
+
left: number;
|
|
42
|
+
top: number;
|
|
43
|
+
width: number;
|
|
44
|
+
height: number;
|
|
45
|
+
}): GrColorAreaPoint;
|
|
46
|
+
/**
|
|
47
|
+
* Клавиша → новое значение и ось, которая изменилась.
|
|
48
|
+
*
|
|
49
|
+
* Ось возвращается не для отчёта: у области два настоящих `input[type=range]`,
|
|
50
|
+
* по одному на канал, и стрелка поперёк оси сфокусированного поля обязана
|
|
51
|
+
* увести фокус на соседнее — иначе диктор промолчит о том, что изменилось.
|
|
52
|
+
*
|
|
53
|
+
* `Home`/`End` и крупный шаг работают по оси **сфокусированного** поля: они
|
|
54
|
+
* относятся к диапазону, а диапазонов здесь два.
|
|
55
|
+
*/
|
|
56
|
+
export declare function colorAreaKeyStep(key: string, point: GrColorAreaPoint, focused: GrColorAreaAxis): {
|
|
57
|
+
point: GrColorAreaPoint;
|
|
58
|
+
axis: GrColorAreaAxis;
|
|
59
|
+
} | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GrColorPickerSize } from './grColorPickerStyles';
|
|
1
|
+
import type { GrColorPickerSize, GrColorPickerView } from './grColorPickerStyles';
|
|
2
2
|
/**
|
|
3
3
|
* Пропы `GrColorPicker`, настраиваемые глобально через `componentDefaults`.
|
|
4
4
|
*
|
|
@@ -7,6 +7,8 @@ import type { GrColorPickerSize } from './grColorPickerStyles';
|
|
|
7
7
|
*/
|
|
8
8
|
export interface GrColorPickerConfigurableProps {
|
|
9
9
|
size: GrColorPickerSize;
|
|
10
|
+
view: GrColorPickerView;
|
|
11
|
+
eyedropper: boolean;
|
|
10
12
|
}
|
|
11
13
|
declare module '../../composables/useGrComponentConfig' {
|
|
12
14
|
interface GrComponentDefaultsRegistry {
|