@chassis-ui/react 0.1.3 → 0.3.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/LICENSE +1 -1
- package/README.md +56 -23
- package/dist/accordion.d.ts +2 -0
- package/dist/accordion.js +1 -0
- package/dist/alert.d.ts +2 -0
- package/dist/alert.js +1 -0
- package/dist/autocomplete.d.ts +2 -0
- package/dist/autocomplete.js +1 -0
- package/dist/avatar.d.ts +2 -0
- package/dist/avatar.js +1 -0
- package/dist/badge.d.ts +2 -0
- package/dist/badge.js +1 -0
- package/dist/breadcrumb.d.ts +2 -0
- package/dist/breadcrumb.js +1 -0
- package/dist/button-group.d.ts +2 -0
- package/dist/button-group.js +1 -0
- package/dist/button.d.ts +3 -0
- package/dist/button.js +1 -0
- package/dist/calendar.d.ts +3 -0
- package/dist/calendar.js +1 -0
- package/dist/card.d.ts +2 -0
- package/dist/card.js +1 -0
- package/dist/carousel.d.ts +2 -0
- package/dist/carousel.js +1 -0
- package/dist/checkbox.d.ts +3 -0
- package/dist/checkbox.js +1 -0
- package/dist/chip-input.d.ts +2 -0
- package/dist/chip-input.js +1 -0
- package/dist/chip.d.ts +2 -0
- package/dist/chip.js +1 -0
- package/dist/chunks/Button-BoymWE-L.js +2 -0
- package/dist/chunks/Button-BoymWE-L.js.map +1 -0
- package/dist/chunks/Button-Cptd4Yk7.d.ts +66 -0
- package/dist/chunks/Chip-DCaWaBqo.js +2 -0
- package/dist/chunks/Chip-DCaWaBqo.js.map +1 -0
- package/dist/chunks/CloseButton-DPgQztE0.js +2 -0
- package/dist/chunks/CloseButton-DPgQztE0.js.map +1 -0
- package/dist/chunks/ComboboxItem-C9TpoJOI.d.ts +55 -0
- package/dist/chunks/ComboboxListBox-Cm3L1ULl.js +2 -0
- package/dist/chunks/ComboboxListBox-Cm3L1ULl.js.map +1 -0
- package/dist/chunks/DateSegment-2agXAd0f.js +2 -0
- package/dist/chunks/DateSegment-2agXAd0f.js.map +1 -0
- package/dist/chunks/FormHelp-AE6_iSLJ.js +2 -0
- package/dist/chunks/FormHelp-AE6_iSLJ.js.map +1 -0
- package/dist/chunks/FormLabel-CYcQiFUI.js +2 -0
- package/dist/chunks/FormLabel-CYcQiFUI.js.map +1 -0
- package/dist/chunks/Icon-CioraWLF.d.ts +37 -0
- package/dist/chunks/Icon-DLB1f88W.js +2 -0
- package/dist/chunks/Icon-DLB1f88W.js.map +1 -0
- package/dist/chunks/Link-CZsWCnQb.js +2 -0
- package/dist/chunks/Link-CZsWCnQb.js.map +1 -0
- package/dist/chunks/Link-nrd0JWlO.d.ts +71 -0
- package/dist/chunks/Menu-CSBg2Zmc.js +2 -0
- package/dist/chunks/Menu-CSBg2Zmc.js.map +1 -0
- package/dist/chunks/Menu-QeYOzrUL.d.ts +95 -0
- package/{src/components/menu/MenuItemDef.ts → dist/chunks/MenuItemDef-D0VDtYIQ.d.ts} +25 -25
- package/dist/chunks/MenuToggle-BdQtF7FV.js +2 -0
- package/dist/chunks/MenuToggle-BdQtF7FV.js.map +1 -0
- package/dist/chunks/Portal-CgeR1WXV.js +2 -0
- package/dist/chunks/Portal-CgeR1WXV.js.map +1 -0
- package/dist/chunks/RangeCalendar-BJl-j4W2.js +2 -0
- package/dist/chunks/RangeCalendar-BJl-j4W2.js.map +1 -0
- package/dist/chunks/VisuallyHidden-C2dM7HhC.js +2 -0
- package/dist/chunks/VisuallyHidden-C2dM7HhC.js.map +1 -0
- package/dist/chunks/accordion-B8UWyvQB.js +2 -0
- package/dist/chunks/accordion-B8UWyvQB.js.map +1 -0
- package/dist/chunks/alert-BXI-_qlt.js +2 -0
- package/dist/chunks/alert-BXI-_qlt.js.map +1 -0
- package/dist/chunks/autocomplete-Baf9VSHN.js +2 -0
- package/dist/chunks/autocomplete-Baf9VSHN.js.map +1 -0
- package/dist/chunks/avatar-S3dGy6Qc.js +2 -0
- package/dist/chunks/avatar-S3dGy6Qc.js.map +1 -0
- package/dist/chunks/badge-D2oztCvs.js +2 -0
- package/dist/chunks/badge-D2oztCvs.js.map +1 -0
- package/dist/chunks/breadcrumb-s6J9itez.js +2 -0
- package/dist/chunks/breadcrumb-s6J9itez.js.map +1 -0
- package/dist/chunks/breakpoints-CJ-498B7.d.ts +7 -0
- package/dist/chunks/breakpoints-o_2Ev7ir.js +2 -0
- package/dist/chunks/breakpoints-o_2Ev7ir.js.map +1 -0
- package/dist/chunks/button-group-BGppPrIv.js +2 -0
- package/dist/chunks/button-group-BGppPrIv.js.map +1 -0
- package/dist/chunks/card-YXn3bj_d.js +2 -0
- package/dist/chunks/card-YXn3bj_d.js.map +1 -0
- package/dist/chunks/carousel-fTVPqnSV.js +2 -0
- package/dist/chunks/carousel-fTVPqnSV.js.map +1 -0
- package/dist/chunks/checkbox-ChACalAw.js +2 -0
- package/dist/chunks/checkbox-ChACalAw.js.map +1 -0
- package/dist/chunks/chip-input-BpVDRERg.js +2 -0
- package/dist/chunks/chip-input-BpVDRERg.js.map +1 -0
- package/dist/chunks/collapse--Go2Y73B.js +2 -0
- package/dist/chunks/collapse--Go2Y73B.js.map +1 -0
- package/dist/chunks/color-input-Bwl5ef5B.js +2 -0
- package/dist/chunks/color-input-Bwl5ef5B.js.map +1 -0
- package/dist/chunks/combobox-Bp1tIaiW.js +2 -0
- package/dist/chunks/combobox-Bp1tIaiW.js.map +1 -0
- package/dist/chunks/context-menu-B4a0tS-h.js +2 -0
- package/dist/chunks/context-menu-B4a0tS-h.js.map +1 -0
- package/dist/chunks/datagrid-CH3Cy-q7.js +3 -0
- package/dist/chunks/datagrid-CH3Cy-q7.js.map +1 -0
- package/dist/chunks/dateRangePresets-R1FtA1zp.d.ts +42 -0
- package/dist/chunks/datepicker-bOiM_zhJ.js +2 -0
- package/dist/chunks/datepicker-bOiM_zhJ.js.map +1 -0
- package/dist/chunks/dialogTransition-i9vw0i2Z.js +2 -0
- package/dist/chunks/dialogTransition-i9vw0i2Z.js.map +1 -0
- package/dist/chunks/direction-LN6uwsK5.js +2 -0
- package/dist/chunks/direction-LN6uwsK5.js.map +1 -0
- package/dist/chunks/divider-CjbF4OfA.js +2 -0
- package/dist/chunks/divider-CjbF4OfA.js.map +1 -0
- package/dist/chunks/drawer-C7Tz4XU_.js +2 -0
- package/dist/chunks/drawer-C7Tz4XU_.js.map +1 -0
- package/dist/chunks/file-input-CDM6qrmV.js +2 -0
- package/dist/chunks/file-input-CDM6qrmV.js.map +1 -0
- package/dist/chunks/flex-CmlJbKVj.js +2 -0
- package/dist/chunks/flex-CmlJbKVj.js.map +1 -0
- package/dist/chunks/floating-input-DmSZZc27.js +2 -0
- package/dist/chunks/floating-input-DmSZZc27.js.map +1 -0
- package/dist/chunks/focus-ring-SR_LwaN7.js +2 -0
- package/dist/chunks/focus-ring-SR_LwaN7.js.map +1 -0
- package/dist/chunks/focusRedirect-BrvK3U_o.js +2 -0
- package/dist/chunks/focusRedirect-BrvK3U_o.js.map +1 -0
- package/dist/chunks/form-GpdAyWWi.js +2 -0
- package/dist/chunks/form-GpdAyWWi.js.map +1 -0
- package/dist/chunks/form-field-CNPGTMiW.js +2 -0
- package/dist/chunks/form-field-CNPGTMiW.js.map +1 -0
- package/dist/chunks/grid-DK_vxz-4.js +2 -0
- package/dist/chunks/grid-DK_vxz-4.js.map +1 -0
- package/dist/chunks/icon-BQsT6YtE.js +2 -0
- package/dist/chunks/icon-BQsT6YtE.js.map +1 -0
- package/dist/chunks/iconConfig-C6gbYhsD.d.ts +71 -0
- package/dist/chunks/iconSlot-BNu2MrFI.js +2 -0
- package/dist/chunks/iconSlot-BNu2MrFI.js.map +1 -0
- package/dist/chunks/index-4cKG9KWB.d.ts +85 -0
- package/dist/chunks/index-6uob77s9.d.ts +81 -0
- package/dist/chunks/index-91YA-jkp.d.ts +127 -0
- package/dist/chunks/index-9rQeMqVI.d.ts +42 -0
- package/dist/chunks/index-B0-8n-Gs.d.ts +106 -0
- package/dist/chunks/index-B2K-O9kl.d.ts +59 -0
- package/dist/chunks/index-B8uaSJA9.d.ts +96 -0
- package/dist/chunks/index-BA-raEMm.d.ts +29 -0
- package/dist/chunks/index-BAsbRx5n.d.ts +54 -0
- package/dist/chunks/index-BF3OWUVc.d.ts +66 -0
- package/dist/chunks/index-BNf0jIIL.d.ts +213 -0
- package/dist/chunks/index-BO9jLOIb.d.ts +59 -0
- package/dist/chunks/index-BTTeKpiE.d.ts +364 -0
- package/dist/chunks/index-BVGGIaPX.d.ts +111 -0
- package/dist/chunks/index-B_UzbGOa.d.ts +195 -0
- package/dist/chunks/index-Bi8FFadV.d.ts +99 -0
- package/dist/chunks/index-Bkj17NEQ.d.ts +51 -0
- package/dist/chunks/index-Bm2NpgND.d.ts +82 -0
- package/dist/chunks/index-BnR7wjax.d.ts +68 -0
- package/dist/chunks/index-BxROljJI.d.ts +18 -0
- package/dist/chunks/index-Bz8MDq0H.d.ts +85 -0
- package/dist/chunks/index-C4Dks__B.d.ts +139 -0
- package/dist/chunks/index-CCXJXToc.d.ts +53 -0
- package/dist/chunks/index-CFnQubsV.d.ts +123 -0
- package/dist/chunks/index-CJXKl97l.d.ts +120 -0
- package/dist/chunks/index-CJzKu7QI.d.ts +41 -0
- package/dist/chunks/index-CKx1KHED.d.ts +303 -0
- package/dist/chunks/index-COsIPd8L.d.ts +63 -0
- package/dist/chunks/index-CRfm7W6C.d.ts +231 -0
- package/dist/chunks/index-CTpwB1yR.d.ts +236 -0
- package/dist/chunks/index-CVUMS0x7.d.ts +74 -0
- package/dist/chunks/index-CYgBmZ8w.d.ts +271 -0
- package/dist/chunks/index-Cc4SSslb.d.ts +205 -0
- package/dist/chunks/index-CftERHnE.d.ts +25 -0
- package/dist/chunks/index-Ci7AEgEc.d.ts +47 -0
- package/dist/chunks/index-CqZ68Z8R.d.ts +415 -0
- package/dist/chunks/index-CsARGAzD.d.ts +50 -0
- package/dist/chunks/index-CsMIgBsd.d.ts +40 -0
- package/dist/chunks/index-D9PZHY_I.d.ts +136 -0
- package/dist/chunks/index-DAoPg59I.d.ts +81 -0
- package/dist/chunks/index-DHGgezXU.d.ts +59 -0
- package/dist/chunks/index-DHOG_rjE.d.ts +121 -0
- package/dist/chunks/index-DJfga0Ce.d.ts +57 -0
- package/dist/chunks/index-DJr_ZK4b.d.ts +110 -0
- package/dist/chunks/index-DMbdEm__.d.ts +119 -0
- package/dist/chunks/index-DXjbI7Yv.d.ts +133 -0
- package/dist/chunks/index-DaHQdNul.d.ts +182 -0
- package/dist/chunks/index-Dcc_W6Kv.d.ts +147 -0
- package/dist/chunks/index-DceCODH9.d.ts +138 -0
- package/dist/chunks/index-Ddd7iWfm.d.ts +32 -0
- package/dist/chunks/index-Dfg4Ftb8.d.ts +69 -0
- package/dist/chunks/index-Dfy1YW5j.d.ts +74 -0
- package/dist/chunks/index-DgHvXzVh.d.ts +208 -0
- package/dist/chunks/index-Dh5CaHTP.d.ts +45 -0
- package/dist/chunks/index-DjXRq-n3.d.ts +98 -0
- package/dist/chunks/index-DjrEvKd-.d.ts +193 -0
- package/dist/chunks/index-DtbUXxjz.d.ts +54 -0
- package/dist/chunks/index-Du9fBqkT.d.ts +56 -0
- package/dist/chunks/index-FKh7iFQE.d.ts +95 -0
- package/dist/chunks/index-HrKN6s8z.d.ts +67 -0
- package/dist/chunks/index-I-H3VJ-L.d.ts +229 -0
- package/dist/chunks/index-RHJhkSY-.d.ts +273 -0
- package/dist/chunks/index-e7SJkI_m.d.ts +102 -0
- package/dist/chunks/index-g74gO0pc.d.ts +36 -0
- package/dist/chunks/index-qMq_-GY2.d.ts +105 -0
- package/dist/chunks/index-t_x6jj7l.d.ts +97 -0
- package/dist/chunks/input-adorn-DwdX-jxA.js +2 -0
- package/dist/chunks/input-adorn-DwdX-jxA.js.map +1 -0
- package/dist/chunks/input-group-Cuiuf4Dl.js +2 -0
- package/dist/chunks/input-group-Cuiuf4Dl.js.map +1 -0
- package/dist/chunks/lazyElement-tfMG21pZ.js +2 -0
- package/dist/chunks/lazyElement-tfMG21pZ.js.map +1 -0
- package/dist/chunks/list-BQCkwWjF.js +2 -0
- package/dist/chunks/list-BQCkwWjF.js.map +1 -0
- package/dist/chunks/menu-98EAD9nj.js +2 -0
- package/dist/chunks/menu-98EAD9nj.js.map +1 -0
- package/dist/chunks/modal-bgDR29Jh.js +2 -0
- package/dist/chunks/modal-bgDR29Jh.js.map +1 -0
- package/dist/chunks/nav-TiZuTHC6.js +2 -0
- package/dist/chunks/nav-TiZuTHC6.js.map +1 -0
- package/dist/chunks/nav-overflow-Ay5mM5Gc.js +2 -0
- package/dist/chunks/nav-overflow-Ay5mM5Gc.js.map +1 -0
- package/dist/chunks/navOverflow-B5krZe6D.js +2 -0
- package/dist/chunks/navOverflow-B5krZe6D.js.map +1 -0
- package/dist/chunks/navVariant-CnD21GBS.d.ts +5 -0
- package/dist/chunks/navVariant-DeGTk9B7.js +2 -0
- package/dist/chunks/navVariant-DeGTk9B7.js.map +1 -0
- package/dist/chunks/navbar-DxIwt0sc.js +2 -0
- package/dist/chunks/navbar-DxIwt0sc.js.map +1 -0
- package/dist/chunks/notification-Ds24wnPq.js +2 -0
- package/dist/chunks/notification-Ds24wnPq.js.map +1 -0
- package/dist/chunks/number-field-IBIX2IWH.js +2 -0
- package/dist/chunks/number-field-IBIX2IWH.js.map +1 -0
- package/dist/chunks/otp-input-ws393uPB.js +2 -0
- package/dist/chunks/otp-input-ws393uPB.js.map +1 -0
- package/dist/chunks/overlayPlacement-BtS90IVf.js +2 -0
- package/dist/chunks/overlayPlacement-BtS90IVf.js.map +1 -0
- package/dist/chunks/overlayPlacement-CIsLpycT.d.ts +7 -0
- package/dist/chunks/pagination-BkOquk-x.js +2 -0
- package/dist/chunks/pagination-BkOquk-x.js.map +1 -0
- package/dist/chunks/password-strength-DDK8pHRq.js +2 -0
- package/dist/chunks/password-strength-DDK8pHRq.js.map +1 -0
- package/dist/chunks/placeholder-BCr83sUn.js +2 -0
- package/dist/chunks/placeholder-BCr83sUn.js.map +1 -0
- package/dist/chunks/polymorphic-BhGNZQja.js +2 -0
- package/dist/chunks/polymorphic-BhGNZQja.js.map +1 -0
- package/dist/chunks/polymorphic-CVHbTHSN.d.ts +41 -0
- package/dist/chunks/popover-Bdg8D4sm.js +2 -0
- package/dist/chunks/popover-Bdg8D4sm.js.map +1 -0
- package/dist/chunks/progress-zWkTltor.js +2 -0
- package/dist/chunks/progress-zWkTltor.js.map +1 -0
- package/dist/chunks/radio-DOFYCfJi.js +2 -0
- package/dist/chunks/radio-DOFYCfJi.js.map +1 -0
- package/dist/chunks/range-input-CT_8TKL7.js +2 -0
- package/dist/chunks/range-input-CT_8TKL7.js.map +1 -0
- package/dist/chunks/renderFormCheck-DN_-V62U.js +2 -0
- package/dist/chunks/renderFormCheck-DN_-V62U.js.map +1 -0
- package/dist/chunks/renderFormCheck-DZh_5Df8.d.ts +24 -0
- package/dist/chunks/renderFormField-Brkw1yA6.js +2 -0
- package/dist/chunks/renderFormField-Brkw1yA6.js.map +1 -0
- package/dist/chunks/renderFormField-ChNagAFN.d.ts +15 -0
- package/dist/chunks/renderMenuItemContent-DUezZrpj.js +2 -0
- package/dist/chunks/renderMenuItemContent-DUezZrpj.js.map +1 -0
- package/dist/chunks/scrollspy-C2HmrnZ4.js +2 -0
- package/dist/chunks/scrollspy-C2HmrnZ4.js.map +1 -0
- package/dist/chunks/scrollspy-D_lPjb92.js +2 -0
- package/dist/chunks/scrollspy-D_lPjb92.js.map +1 -0
- package/dist/chunks/search-field--nDoCI_E.js +2 -0
- package/dist/chunks/search-field--nDoCI_E.js.map +1 -0
- package/dist/chunks/select-BwJIfv9f.js +2 -0
- package/dist/chunks/select-BwJIfv9f.js.map +1 -0
- package/dist/chunks/skeleton-BrD2JwNx.js +2 -0
- package/dist/chunks/skeleton-BrD2JwNx.js.map +1 -0
- package/dist/chunks/slot-CNhFZdHF.js +2 -0
- package/dist/chunks/slot-CNhFZdHF.js.map +1 -0
- package/dist/chunks/spacingClassName-DVhk8m3P.js +2 -0
- package/dist/chunks/spacingClassName-DVhk8m3P.js.map +1 -0
- package/dist/chunks/spinner-DblhvrHL.js +2 -0
- package/dist/chunks/spinner-DblhvrHL.js.map +1 -0
- package/dist/chunks/stack-CsMiQbpq.js +2 -0
- package/dist/chunks/stack-CsMiQbpq.js.map +1 -0
- package/dist/chunks/static-table-D0M4oc_t.js +2 -0
- package/dist/chunks/static-table-D0M4oc_t.js.map +1 -0
- package/dist/chunks/stepper-CVXMJ2yg.js +2 -0
- package/dist/chunks/stepper-CVXMJ2yg.js.map +1 -0
- package/dist/chunks/switch-C6s3LxEv.js +2 -0
- package/dist/chunks/switch-C6s3LxEv.js.map +1 -0
- package/dist/chunks/table-Cy6uEuEP.js +2 -0
- package/dist/chunks/table-Cy6uEuEP.js.map +1 -0
- package/dist/chunks/tableClassName-CZA2Bse8.js +2 -0
- package/dist/chunks/tableClassName-CZA2Bse8.js.map +1 -0
- package/dist/chunks/tabs-91T7-8qq.js +2 -0
- package/dist/chunks/tabs-91T7-8qq.js.map +1 -0
- package/dist/chunks/text-input-B4pTv6SU.js +2 -0
- package/dist/chunks/text-input-B4pTv6SU.js.map +1 -0
- package/dist/chunks/textarea-1A1nABQE.js +2 -0
- package/dist/chunks/textarea-1A1nABQE.js.map +1 -0
- package/dist/chunks/time-field-B3MA7ED_.js +2 -0
- package/dist/chunks/time-field-B3MA7ED_.js.map +1 -0
- package/dist/chunks/toast-CGHl3-oU.js +2 -0
- package/dist/chunks/toast-CGHl3-oU.js.map +1 -0
- package/dist/chunks/tooltip-Bc-u6nIW.js +2 -0
- package/dist/chunks/tooltip-Bc-u6nIW.js.map +1 -0
- package/dist/chunks/tree-Cql1veeZ.js +2 -0
- package/dist/chunks/tree-Cql1veeZ.js.map +1 -0
- package/dist/chunks/types-CS_40Txv.d.ts +35 -0
- package/dist/chunks/unhandledProps-9Kdj7WVf.js +2 -0
- package/dist/chunks/unhandledProps-9Kdj7WVf.js.map +1 -0
- package/dist/chunks/useButtonSemantics-CILM_lhi.js +2 -0
- package/dist/chunks/useButtonSemantics-CILM_lhi.js.map +1 -0
- package/dist/chunks/useControllableState-CPUJxfKW.js +2 -0
- package/dist/chunks/useControllableState-CPUJxfKW.js.map +1 -0
- package/dist/chunks/useDialogElement-CgOnJAzu.js +2 -0
- package/dist/chunks/useDialogElement-CgOnJAzu.js.map +1 -0
- package/dist/chunks/useDisabledAnchorGuard-Cz58UCXy.js +2 -0
- package/dist/chunks/useDisabledAnchorGuard-Cz58UCXy.js.map +1 -0
- package/dist/chunks/useFloatingOverlay-DLIvwx-8.js +2 -0
- package/dist/chunks/useFloatingOverlay-DLIvwx-8.js.map +1 -0
- package/dist/chunks/useForkedRef-DVEfT-KI.js +2 -0
- package/dist/chunks/useForkedRef-DVEfT-KI.js.map +1 -0
- package/dist/chunks/useFormField-BOqmBTC4.js +2 -0
- package/dist/chunks/useFormField-BOqmBTC4.js.map +1 -0
- package/dist/chunks/useIsomorphicLayoutEffect-BbqRwuqn.js +2 -0
- package/dist/chunks/useIsomorphicLayoutEffect-BbqRwuqn.js.map +1 -0
- package/dist/chunks/useOpenStateProps-DykUbnPJ.js +2 -0
- package/dist/chunks/useOpenStateProps-DykUbnPJ.js.map +1 -0
- package/dist/chunks/useToastRegionQueue-CIV5SdiE.js +2 -0
- package/dist/chunks/useToastRegionQueue-CIV5SdiE.js.map +1 -0
- package/dist/chunks/useTransitionState-e5ToY7eX.js +2 -0
- package/dist/chunks/useTransitionState-e5ToY7eX.js.map +1 -0
- package/dist/chunks/validationClassName-gRGs4KBm.js +2 -0
- package/dist/chunks/validationClassName-gRGs4KBm.js.map +1 -0
- package/dist/chunks/visibleState-B_i1zHu2.js +2 -0
- package/dist/chunks/visibleState-B_i1zHu2.js.map +1 -0
- package/dist/close-button.d.ts +2 -0
- package/dist/close-button.js +1 -0
- package/dist/collapse.d.ts +2 -0
- package/dist/collapse.js +1 -0
- package/dist/color-input.d.ts +2 -0
- package/dist/color-input.js +1 -0
- package/dist/combobox.d.ts +3 -0
- package/dist/combobox.js +1 -0
- package/dist/context-menu.d.ts +2 -0
- package/dist/context-menu.js +1 -0
- package/dist/datagrid.d.ts +2 -0
- package/dist/datagrid.js +1 -0
- package/dist/datepicker.d.ts +2 -0
- package/dist/datepicker.js +1 -0
- package/dist/divider.d.ts +2 -0
- package/dist/divider.js +1 -0
- package/dist/drawer.d.ts +2 -0
- package/dist/drawer.js +1 -0
- package/dist/file-input.d.ts +2 -0
- package/dist/file-input.js +1 -0
- package/dist/flex.d.ts +2 -0
- package/dist/flex.js +1 -0
- package/dist/floating-input.d.ts +2 -0
- package/dist/floating-input.js +1 -0
- package/dist/form-field.d.ts +2 -0
- package/dist/form-field.js +1 -0
- package/dist/form.d.ts +2 -0
- package/dist/form.js +1 -0
- package/dist/grid.d.ts +2 -0
- package/dist/grid.js +1 -0
- package/dist/icon.d.ts +4 -0
- package/dist/icon.js +1 -0
- package/dist/index.d.ts +84 -6369
- package/dist/index.js +1 -2
- package/dist/input-adorn.d.ts +2 -0
- package/dist/input-adorn.js +1 -0
- package/dist/input-group.d.ts +2 -0
- package/dist/input-group.js +1 -0
- package/dist/link.d.ts +3 -0
- package/dist/link.js +1 -0
- package/dist/list.d.ts +2 -0
- package/dist/list.js +1 -0
- package/dist/menu.d.ts +4 -0
- package/dist/menu.js +1 -0
- package/dist/modal.d.ts +2 -0
- package/dist/modal.js +1 -0
- package/dist/nav-overflow.d.ts +2 -0
- package/dist/nav-overflow.js +1 -0
- package/dist/nav.d.ts +2 -0
- package/dist/nav.js +1 -0
- package/dist/navbar.d.ts +2 -0
- package/dist/navbar.js +1 -0
- package/dist/notification.d.ts +2 -0
- package/dist/notification.js +1 -0
- package/dist/number-field.d.ts +2 -0
- package/dist/number-field.js +1 -0
- package/dist/otp-input.d.ts +2 -0
- package/dist/otp-input.js +1 -0
- package/dist/pagination.d.ts +2 -0
- package/dist/pagination.js +1 -0
- package/dist/password-strength.d.ts +2 -0
- package/dist/password-strength.js +1 -0
- package/dist/placeholder.d.ts +2 -0
- package/dist/placeholder.js +1 -0
- package/dist/popover.d.ts +2 -0
- package/dist/popover.js +1 -0
- package/dist/portal.d.ts +2 -0
- package/dist/portal.js +1 -0
- package/dist/progress.d.ts +2 -0
- package/dist/progress.js +1 -0
- package/dist/radio.d.ts +2 -0
- package/dist/radio.js +1 -0
- package/dist/range-input.d.ts +2 -0
- package/dist/range-input.js +1 -0
- package/dist/scrollspy.d.ts +2 -0
- package/dist/scrollspy.js +1 -0
- package/dist/search-field.d.ts +2 -0
- package/dist/search-field.js +1 -0
- package/dist/select.d.ts +2 -0
- package/dist/select.js +1 -0
- package/dist/skeleton.d.ts +2 -0
- package/dist/skeleton.js +1 -0
- package/dist/spinner.d.ts +2 -0
- package/dist/spinner.js +1 -0
- package/dist/stack.d.ts +2 -0
- package/dist/stack.js +1 -0
- package/dist/static-table.d.ts +2 -0
- package/dist/static-table.js +1 -0
- package/dist/stepper.d.ts +2 -0
- package/dist/stepper.js +1 -0
- package/dist/style.css +1 -1
- package/dist/switch.d.ts +2 -0
- package/dist/switch.js +1 -0
- package/dist/table.d.ts +2 -0
- package/dist/table.js +1 -0
- package/dist/tabs.d.ts +2 -0
- package/dist/tabs.js +1 -0
- package/dist/text-input.d.ts +2 -0
- package/dist/text-input.js +1 -0
- package/dist/textarea.d.ts +2 -0
- package/dist/textarea.js +1 -0
- package/dist/time-field.d.ts +2 -0
- package/dist/time-field.js +1 -0
- package/dist/toast.d.ts +2 -0
- package/dist/toast.js +1 -0
- package/dist/tooltip.d.ts +2 -0
- package/dist/tooltip.js +1 -0
- package/dist/tree.d.ts +2 -0
- package/dist/tree.js +1 -0
- package/dist/visually-hidden.d.ts +2 -0
- package/dist/visually-hidden.js +1 -0
- package/package.json +120 -53
- package/src/components/accordion/Accordion.tsx +0 -190
- package/src/components/accordion/AccordionBody.tsx +0 -46
- package/src/components/accordion/AccordionHeader.tsx +0 -21
- package/src/components/accordion/AccordionItem.tsx +0 -59
- package/src/components/accordion/context.ts +0 -8
- package/src/components/accordion/index.ts +0 -8
- package/src/components/autocomplete/Autocomplete.tsx +0 -464
- package/src/components/autocomplete/AutocompleteGroup.tsx +0 -20
- package/src/components/autocomplete/AutocompleteItem.tsx +0 -18
- package/src/components/autocomplete/index.ts +0 -6
- package/src/components/avatar/Avatar.tsx +0 -137
- package/src/components/avatar/AvatarImage.tsx +0 -19
- package/src/components/avatar/AvatarStack.tsx +0 -98
- package/src/components/avatar/index.ts +0 -6
- package/src/components/badge/Badge.tsx +0 -94
- package/src/components/badge/index.ts +0 -2
- package/src/components/breadcrumb/Breadcrumb.tsx +0 -68
- package/src/components/breadcrumb/BreadcrumbItem.tsx +0 -38
- package/src/components/breadcrumb/index.ts +0 -4
- package/src/components/button/Button.tsx +0 -232
- package/src/components/button/index.ts +0 -2
- package/src/components/button-group/ButtonGroup.tsx +0 -55
- package/src/components/button-group/ButtonToolbar.tsx +0 -47
- package/src/components/button-group/index.ts +0 -4
- package/src/components/calendar/Calendar.scss +0 -57
- package/src/components/calendar/Calendar.tsx +0 -338
- package/src/components/calendar/CalendarMonthBlock.tsx +0 -57
- package/src/components/calendar/CalendarMonthGrid.tsx +0 -94
- package/src/components/calendar/CalendarMonthYearPicker.tsx +0 -164
- package/src/components/calendar/CalendarNavButton.tsx +0 -24
- package/src/components/calendar/CalendarWeekGrid.tsx +0 -58
- package/src/components/calendar/CalendarYearGrid.tsx +0 -128
- package/src/components/calendar/RangeCalendar.scss +0 -95
- package/src/components/calendar/RangeCalendar.tsx +0 -373
- package/src/components/calendar/index.ts +0 -6
- package/src/components/calendar/labels.tsx +0 -71
- package/src/components/card/Card.tsx +0 -173
- package/src/components/card/CardBody.tsx +0 -75
- package/src/components/card/CardFooter.tsx +0 -47
- package/src/components/card/CardGroup.tsx +0 -51
- package/src/components/card/CardHeader.tsx +0 -47
- package/src/components/card/CardImage.tsx +0 -70
- package/src/components/card/CardImageOverlay.tsx +0 -47
- package/src/components/card/CardLink.tsx +0 -40
- package/src/components/card/CardSubtitle.tsx +0 -47
- package/src/components/card/CardText.tsx +0 -47
- package/src/components/card/CardTitle.tsx +0 -47
- package/src/components/card/index.ts +0 -22
- package/src/components/carousel/Carousel.tsx +0 -753
- package/src/components/carousel/CarouselControlButton.tsx +0 -74
- package/src/components/carousel/CarouselControlNext.tsx +0 -22
- package/src/components/carousel/CarouselControlPrev.tsx +0 -22
- package/src/components/carousel/CarouselIndicators.tsx +0 -44
- package/src/components/carousel/CarouselInner.tsx +0 -56
- package/src/components/carousel/CarouselItem.tsx +0 -51
- package/src/components/carousel/CarouselOverlay.tsx +0 -51
- package/src/components/carousel/CarouselPlayPause.tsx +0 -61
- package/src/components/carousel/carouselEngine.ts +0 -170
- package/src/components/carousel/context.ts +0 -29
- package/src/components/carousel/index.ts +0 -21
- package/src/components/checkbox/Checkbox.tsx +0 -252
- package/src/components/checkbox/CheckboxGroup.tsx +0 -145
- package/src/components/checkbox/context.ts +0 -14
- package/src/components/checkbox/index.ts +0 -4
- package/src/components/chip/Chip.tsx +0 -184
- package/src/components/chip/index.ts +0 -2
- package/src/components/chip-input/ChipInput.tsx +0 -371
- package/src/components/chip-input/ChipList.tsx +0 -95
- package/src/components/chip-input/index.ts +0 -2
- package/src/components/close-button/CloseButton.tsx +0 -205
- package/src/components/close-button/index.ts +0 -2
- package/src/components/collapse/Collapse.tsx +0 -128
- package/src/components/collapse/index.ts +0 -2
- package/src/components/color-input/ColorInput.tsx +0 -106
- package/src/components/color-input/index.ts +0 -2
- package/src/components/combobox/Combobox.tsx +0 -320
- package/src/components/combobox/ComboboxGroup.tsx +0 -27
- package/src/components/combobox/ComboboxItem.tsx +0 -44
- package/src/components/combobox/ComboboxListBox.tsx +0 -98
- package/src/components/combobox/index.ts +0 -6
- package/src/components/datagrid/DataGrid.scss +0 -203
- package/src/components/datagrid/DataGrid.tsx +0 -259
- package/src/components/datagrid/DataGridBody.tsx +0 -162
- package/src/components/datagrid/DataGridCell.tsx +0 -47
- package/src/components/datagrid/DataGridColumn.tsx +0 -109
- package/src/components/datagrid/DataGridHeader.tsx +0 -47
- package/src/components/datagrid/DataGridPinBehavior.tsx +0 -225
- package/src/components/datagrid/DataGridRow.tsx +0 -48
- package/src/components/datagrid/DataGridSelectionCell.tsx +0 -74
- package/src/components/datagrid/DataGridTableLayout.ts +0 -30
- package/src/components/datagrid/index.ts +0 -14
- package/src/components/datagrid/useColumnGeometry.ts +0 -161
- package/src/components/datepicker/CalendarToggleButton.tsx +0 -58
- package/src/components/datepicker/ClearButton.tsx +0 -38
- package/src/components/datepicker/DateField.tsx +0 -54
- package/src/components/datepicker/DatePicker.scss +0 -51
- package/src/components/datepicker/DatePicker.tsx +0 -606
- package/src/components/datepicker/DateRangePicker.scss +0 -11
- package/src/components/datepicker/DateRangePicker.tsx +0 -361
- package/src/components/datepicker/index.ts +0 -4
- package/src/components/datepicker/renderDatePickerShell.tsx +0 -104
- package/src/components/drawer/Drawer.tsx +0 -213
- package/src/components/drawer/DrawerBody.tsx +0 -47
- package/src/components/drawer/DrawerFooter.tsx +0 -51
- package/src/components/drawer/DrawerHeader.tsx +0 -60
- package/src/components/drawer/DrawerTitle.tsx +0 -49
- package/src/components/drawer/index.ts +0 -10
- package/src/components/file-input/FileInput.tsx +0 -100
- package/src/components/file-input/index.ts +0 -2
- package/src/components/flex/Flex.tsx +0 -134
- package/src/components/flex/index.ts +0 -2
- package/src/components/floating-input/FloatingInput.tsx +0 -94
- package/src/components/floating-input/index.ts +0 -2
- package/src/components/form/Form.tsx +0 -26
- package/src/components/form/FormFeedback.tsx +0 -64
- package/src/components/form/FormHelp.tsx +0 -46
- package/src/components/form/FormLabel.tsx +0 -26
- package/src/components/form/index.ts +0 -8
- package/src/components/form/renderFormCheck.tsx +0 -86
- package/src/components/form-field/FormField.tsx +0 -84
- package/src/components/form-field/index.ts +0 -2
- package/src/components/form-field/renderFormField.tsx +0 -85
- package/src/components/grid/Col.tsx +0 -69
- package/src/components/grid/Container.tsx +0 -59
- package/src/components/grid/Grid.tsx +0 -86
- package/src/components/grid/GridItem.tsx +0 -123
- package/src/components/grid/Row.tsx +0 -71
- package/src/components/grid/gap.ts +0 -8
- package/src/components/grid/index.ts +0 -10
- package/src/components/icon/Icon.tsx +0 -74
- package/src/components/icon/index.ts +0 -2
- package/src/components/input-adorn/InputAdorn.tsx +0 -55
- package/src/components/input-adorn/index.ts +0 -2
- package/src/components/input-group/InputGroup.tsx +0 -50
- package/src/components/input-group/InputGroupAddon.tsx +0 -50
- package/src/components/input-group/index.ts +0 -4
- package/src/components/link/Link.tsx +0 -148
- package/src/components/link/index.ts +0 -2
- package/src/components/list/List.tsx +0 -193
- package/src/components/list/ListItem.tsx +0 -91
- package/src/components/list/index.ts +0 -4
- package/src/components/menu/Menu.tsx +0 -408
- package/src/components/menu/MenuDivider.tsx +0 -19
- package/src/components/menu/MenuHeader.tsx +0 -55
- package/src/components/menu/MenuItem.tsx +0 -85
- package/src/components/menu/MenuList.tsx +0 -142
- package/src/components/menu/MenuSubmenu.tsx +0 -284
- package/src/components/menu/MenuSubmenuBack.tsx +0 -39
- package/src/components/menu/MenuText.tsx +0 -47
- package/src/components/menu/MenuToggle.tsx +0 -148
- package/src/components/menu/index.ts +0 -19
- package/src/components/menu/menuNavigation.ts +0 -106
- package/src/components/menu/submenuGroup.ts +0 -43
- package/src/components/modal/Modal.tsx +0 -164
- package/src/components/modal/ModalBody.tsx +0 -47
- package/src/components/modal/ModalFooter.tsx +0 -51
- package/src/components/modal/ModalHeader.tsx +0 -60
- package/src/components/modal/ModalTitle.tsx +0 -49
- package/src/components/modal/index.ts +0 -10
- package/src/components/nav/Nav.tsx +0 -97
- package/src/components/nav/NavItem.tsx +0 -42
- package/src/components/nav/NavLink.tsx +0 -48
- package/src/components/nav/NavTitle.tsx +0 -22
- package/src/components/nav/index.ts +0 -7
- package/src/components/navbar/Navbar.tsx +0 -112
- package/src/components/navbar/NavbarBrand.tsx +0 -58
- package/src/components/navbar/NavbarNav.tsx +0 -47
- package/src/components/navbar/NavbarText.tsx +0 -47
- package/src/components/navbar/NavbarToggler.tsx +0 -34
- package/src/components/navbar/index.ts +0 -10
- package/src/components/notification/Notification.scss +0 -15
- package/src/components/notification/Notification.tsx +0 -187
- package/src/components/notification/NotificationIcon.tsx +0 -21
- package/src/components/notification/NotificationStack.tsx +0 -66
- package/src/components/notification/NotificationText.tsx +0 -47
- package/src/components/notification/NotificationTitle.tsx +0 -47
- package/src/components/notification/context.ts +0 -14
- package/src/components/notification/index.ts +0 -17
- package/src/components/notification/notificationQueue.ts +0 -48
- package/src/components/otp-input/OtpBox.tsx +0 -68
- package/src/components/otp-input/OtpInput.tsx +0 -342
- package/src/components/otp-input/index.ts +0 -2
- package/src/components/pagination/Pagination.tsx +0 -199
- package/src/components/pagination/PaginationItem.tsx +0 -152
- package/src/components/pagination/index.ts +0 -4
- package/src/components/password-strength/PasswordStrength.tsx +0 -155
- package/src/components/password-strength/index.ts +0 -2
- package/src/components/password-strength/strengthScore.ts +0 -79
- package/src/components/placeholder/Placeholder.tsx +0 -178
- package/src/components/placeholder/index.ts +0 -2
- package/src/components/popover/Popover.tsx +0 -269
- package/src/components/popover/index.ts +0 -2
- package/src/components/progress/Progress.tsx +0 -154
- package/src/components/progress/ProgressBar.tsx +0 -88
- package/src/components/progress/index.ts +0 -4
- package/src/components/radio/Radio.tsx +0 -98
- package/src/components/radio/RadioGroup.tsx +0 -142
- package/src/components/radio/context.ts +0 -14
- package/src/components/radio/index.ts +0 -4
- package/src/components/range-input/RangeInput.tsx +0 -109
- package/src/components/range-input/index.ts +0 -2
- package/src/components/select/Select.tsx +0 -277
- package/src/components/select/index.ts +0 -2
- package/src/components/skeleton/Skeleton.tsx +0 -89
- package/src/components/skeleton/SkeletonLoader.tsx +0 -91
- package/src/components/skeleton/index.ts +0 -4
- package/src/components/spinner/Spinner.tsx +0 -77
- package/src/components/spinner/index.ts +0 -2
- package/src/components/stack/Stack.tsx +0 -81
- package/src/components/stack/index.ts +0 -2
- package/src/components/stepper/Stepper.tsx +0 -172
- package/src/components/stepper/StepperItem.tsx +0 -66
- package/src/components/stepper/index.ts +0 -4
- package/src/components/switch/Switch.tsx +0 -259
- package/src/components/switch/index.ts +0 -2
- package/src/components/table/Table.css +0 -39
- package/src/components/table/Table.tsx +0 -413
- package/src/components/table/TableBody.tsx +0 -25
- package/src/components/table/TableCell.tsx +0 -27
- package/src/components/table/TableColumn.tsx +0 -31
- package/src/components/table/TableHeader.tsx +0 -26
- package/src/components/table/TableRow.tsx +0 -24
- package/src/components/table/index.ts +0 -12
- package/src/components/tabs/Tab.tsx +0 -36
- package/src/components/tabs/TabList.tsx +0 -76
- package/src/components/tabs/TabPanel.tsx +0 -68
- package/src/components/tabs/Tabs.tsx +0 -136
- package/src/components/tabs/context.ts +0 -24
- package/src/components/tabs/index.ts +0 -8
- package/src/components/text-input/TextInput.tsx +0 -188
- package/src/components/text-input/index.ts +0 -2
- package/src/components/textarea/Textarea.tsx +0 -145
- package/src/components/textarea/index.ts +0 -2
- package/src/components/toast/Toast.tsx +0 -219
- package/src/components/toast/ToastBody.tsx +0 -64
- package/src/components/toast/ToastFooter.tsx +0 -47
- package/src/components/toast/ToastHeader.tsx +0 -104
- package/src/components/toast/ToastIcon.tsx +0 -21
- package/src/components/toast/Toaster.tsx +0 -87
- package/src/components/toast/context.ts +0 -14
- package/src/components/toast/index.ts +0 -18
- package/src/components/toast/toastQueue.ts +0 -56
- package/src/components/tooltip/Tooltip.tsx +0 -171
- package/src/components/tooltip/index.ts +0 -2
- package/src/global.d.ts +0 -2
- package/src/hooks/index.ts +0 -57
- package/src/hooks/useAutoDismiss.ts +0 -91
- package/src/hooks/useButtonSemantics.ts +0 -33
- package/src/hooks/useControllableState.ts +0 -24
- package/src/hooks/useDialogElement.ts +0 -226
- package/src/hooks/useDisabledAnchorGuard.ts +0 -22
- package/src/hooks/useDismissibleTransition.ts +0 -126
- package/src/hooks/useDrawer.ts +0 -9
- package/src/hooks/useFloatingOverlay.ts +0 -125
- package/src/hooks/useForkedRef.ts +0 -50
- package/src/hooks/useFormField.ts +0 -89
- package/src/hooks/useIsomorphicLayoutEffect.ts +0 -9
- package/src/hooks/useModal.ts +0 -9
- package/src/hooks/useNotification.ts +0 -10
- package/src/hooks/useOverlayPlacement.ts +0 -93
- package/src/hooks/usePagination.ts +0 -89
- package/src/hooks/useToast.ts +0 -9
- package/src/hooks/useToastRegionQueue.ts +0 -27
- package/src/index.ts +0 -502
- package/src/types.ts +0 -133
- package/src/utils/breakpoints.ts +0 -43
- package/src/utils/comboboxCollection.tsx +0 -152
- package/src/utils/dateRangePresets.ts +0 -6
- package/src/utils/devWarning.ts +0 -58
- package/src/utils/dialogTransition.ts +0 -39
- package/src/utils/direction.ts +0 -14
- package/src/utils/focusRedirect.ts +0 -23
- package/src/utils/isWholeUnitDisabled.ts +0 -17
- package/src/utils/mergeIsDateUnavailable.ts +0 -15
- package/src/utils/overlayPlacement.ts +0 -93
- package/src/utils/pointerInteraction.ts +0 -21
- package/src/utils/polymorphic.ts +0 -53
- package/src/utils/renderMenuItemContent.tsx +0 -62
- package/src/utils/setVisibleRangeStart.ts +0 -64
- package/src/utils/spacingClassName.ts +0 -14
- package/src/utils/suppressFocusRingGlobally.ts +0 -84
- package/src/utils/triggerElement.ts +0 -25
- package/src/utils/validationClassName.ts +0 -8
- package/src/utils/virtualFocusStyle.ts +0 -16
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import React, { FC, ReactElement, ReactNode, useCallback, useRef } from 'react'
|
|
2
|
-
import { createPortal } from 'react-dom'
|
|
3
|
-
import classNames from 'classnames'
|
|
4
|
-
import { mergeProps, useOverlayPosition, useTooltip, useTooltipTrigger } from 'react-aria'
|
|
5
|
-
import { useTooltipTriggerState } from 'react-stately'
|
|
6
|
-
import { Transition } from 'react-transition-group'
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
getOverlayArrowStyle,
|
|
10
|
-
getOverlayTransitionClass,
|
|
11
|
-
useFloatingOverlay,
|
|
12
|
-
useForkedRef
|
|
13
|
-
} from '../../hooks'
|
|
14
|
-
import { Placement, resolveDataPlacement, toAriaPlacement } from '../../utils/overlayPlacement'
|
|
15
|
-
import { asTriggerElement, getTriggerRef } from '../../utils/triggerElement'
|
|
16
|
-
|
|
17
|
-
export type { Placement }
|
|
18
|
-
|
|
19
|
-
export interface TooltipProps {
|
|
20
|
-
children: ReactElement
|
|
21
|
-
/**
|
|
22
|
-
* Content node for your component.
|
|
23
|
-
*/
|
|
24
|
-
content: ReactNode | string
|
|
25
|
-
/**
|
|
26
|
-
* Offset of the tooltip relative to its target, as `[crossAxis, mainAxis]`.
|
|
27
|
-
*/
|
|
28
|
-
offset?: [number, number]
|
|
29
|
-
/**
|
|
30
|
-
* Callback fired when the component requests to be hidden.
|
|
31
|
-
*/
|
|
32
|
-
onHide?: () => void
|
|
33
|
-
/**
|
|
34
|
-
* Callback fired when the component requests to be shown.
|
|
35
|
-
*/
|
|
36
|
-
onShow?: () => void
|
|
37
|
-
/**
|
|
38
|
-
* Describes the preferred placement of your component. Chassis will flip it to keep it in
|
|
39
|
-
* view.
|
|
40
|
-
*/
|
|
41
|
-
placement?: Placement
|
|
42
|
-
/**
|
|
43
|
-
* Tooltips always show on focus, since keyboard/screen-reader users need them too. Set to
|
|
44
|
-
* `'focus'` to disable the hover trigger and show on focus only.
|
|
45
|
-
*/
|
|
46
|
-
trigger?: 'hover' | 'focus'
|
|
47
|
-
/**
|
|
48
|
-
* Toggle the visibility of the tooltip component.
|
|
49
|
-
*/
|
|
50
|
-
visible?: boolean
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export const Tooltip: FC<TooltipProps> = ({
|
|
54
|
-
children,
|
|
55
|
-
content,
|
|
56
|
-
placement = 'top',
|
|
57
|
-
offset: offsetProp = [0, 6],
|
|
58
|
-
onHide,
|
|
59
|
-
onShow,
|
|
60
|
-
trigger,
|
|
61
|
-
visible,
|
|
62
|
-
...rest
|
|
63
|
-
}) => {
|
|
64
|
-
const arrowRef = useRef<HTMLDivElement>(null)
|
|
65
|
-
const triggerRef = useRef<HTMLElement | null>(null)
|
|
66
|
-
const floatingRef = useRef<HTMLDivElement>(null)
|
|
67
|
-
|
|
68
|
-
// `cloneElement`'s config replaces the child's own `ref` outright rather than merging with it,
|
|
69
|
-
// so capturing the trigger node has to be forked with whatever ref the caller already put on
|
|
70
|
-
// that child — otherwise `<Tooltip><Button ref={mine} /></Tooltip>` silently never populates
|
|
71
|
-
// `mine`. Same reasoning for merging (rather than overwriting) the child's own props below:
|
|
72
|
-
// `triggerProps` carries the focus/hover handlers this component needs, and spreading them raw
|
|
73
|
-
// would drop a handler the caller put on their own trigger.
|
|
74
|
-
const setTriggerRef = useCallback((node: HTMLElement | null) => {
|
|
75
|
-
triggerRef.current = node
|
|
76
|
-
}, [])
|
|
77
|
-
const triggerElement = asTriggerElement(children)
|
|
78
|
-
const forkedTriggerRef = useForkedRef<HTMLElement>(setTriggerRef, getTriggerRef(triggerElement))
|
|
79
|
-
|
|
80
|
-
// react-stately defaults to a 1500ms warmup delay (and 500ms cooldown) before a first tooltip
|
|
81
|
-
// shows, spectrum-style — chassis-css's own JS plugin defaults to instant (`delay: 0`), so
|
|
82
|
-
// match that here rather than leaving new adopters to wonder why the first hover lags.
|
|
83
|
-
const state = useTooltipTriggerState({ trigger, delay: 0, closeDelay: 0 })
|
|
84
|
-
const { triggerProps, tooltipProps: tooltipTriggerProps } = useTooltipTrigger(
|
|
85
|
-
{ trigger },
|
|
86
|
-
state,
|
|
87
|
-
triggerRef
|
|
88
|
-
)
|
|
89
|
-
const { tooltipProps } = useTooltip({}, state)
|
|
90
|
-
|
|
91
|
-
// Bypasses the hook's hover-warmup delay (`open`/`close`'s `immediate` argument) since a
|
|
92
|
-
// programmatic `visible` change, an `onShow`/`onHide` sync, or a containing dialog closing
|
|
93
|
-
// should all apply right away, same as before.
|
|
94
|
-
const portalContainer = useFloatingOverlay({
|
|
95
|
-
close: () => state.close(true),
|
|
96
|
-
isOpen: state.isOpen,
|
|
97
|
-
open: () => state.open(true),
|
|
98
|
-
onHide,
|
|
99
|
-
onShow,
|
|
100
|
-
triggerRef,
|
|
101
|
-
visible
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
const {
|
|
105
|
-
overlayProps,
|
|
106
|
-
arrowProps,
|
|
107
|
-
placement: resolvedPlacement
|
|
108
|
-
} = useOverlayPosition({
|
|
109
|
-
targetRef: triggerRef,
|
|
110
|
-
overlayRef: floatingRef,
|
|
111
|
-
placement: toAriaPlacement(placement),
|
|
112
|
-
offset: offsetProp[1],
|
|
113
|
-
crossOffset: offsetProp[0],
|
|
114
|
-
arrowSize: 8,
|
|
115
|
-
arrowRef,
|
|
116
|
-
isOpen: state.isOpen
|
|
117
|
-
})
|
|
118
|
-
|
|
119
|
-
const floatingStyle: React.CSSProperties = {
|
|
120
|
-
position: overlayProps.style?.position as React.CSSProperties['position'],
|
|
121
|
-
top: overlayProps.style?.top,
|
|
122
|
-
left: overlayProps.style?.left
|
|
123
|
-
}
|
|
124
|
-
const placementAttr = resolveDataPlacement(placement, resolvedPlacement)
|
|
125
|
-
|
|
126
|
-
return (
|
|
127
|
-
<>
|
|
128
|
-
{React.cloneElement(triggerElement, {
|
|
129
|
-
...mergeProps(triggerElement.props, triggerProps),
|
|
130
|
-
ref: forkedTriggerRef
|
|
131
|
-
})}
|
|
132
|
-
{typeof window !== 'undefined' &&
|
|
133
|
-
createPortal(
|
|
134
|
-
<Transition
|
|
135
|
-
in={state.isOpen}
|
|
136
|
-
mountOnEnter
|
|
137
|
-
nodeRef={floatingRef}
|
|
138
|
-
timeout={{
|
|
139
|
-
enter: 0,
|
|
140
|
-
exit: 200
|
|
141
|
-
}}
|
|
142
|
-
unmountOnExit
|
|
143
|
-
>
|
|
144
|
-
{(transitionState) => {
|
|
145
|
-
const transitionClass = getOverlayTransitionClass(transitionState)
|
|
146
|
-
return (
|
|
147
|
-
<div
|
|
148
|
-
className={classNames('tooltip cx-tooltip-auto', transitionClass)}
|
|
149
|
-
data-cx-placement={placementAttr}
|
|
150
|
-
ref={floatingRef}
|
|
151
|
-
style={floatingStyle}
|
|
152
|
-
{...mergeProps(tooltipTriggerProps, tooltipProps)}
|
|
153
|
-
{...rest}
|
|
154
|
-
>
|
|
155
|
-
<div
|
|
156
|
-
className="tooltip-arrow"
|
|
157
|
-
{...arrowProps}
|
|
158
|
-
style={getOverlayArrowStyle(arrowProps)}
|
|
159
|
-
></div>
|
|
160
|
-
<div className="tooltip-inner">{content}</div>
|
|
161
|
-
</div>
|
|
162
|
-
)
|
|
163
|
-
}}
|
|
164
|
-
</Transition>,
|
|
165
|
-
portalContainer ?? document.body
|
|
166
|
-
)}
|
|
167
|
-
</>
|
|
168
|
-
)
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
Tooltip.displayName = 'Tooltip'
|
package/src/global.d.ts
DELETED
package/src/hooks/index.ts
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { useAutoDismiss } from './useAutoDismiss'
|
|
2
|
-
import { useButtonSemantics } from './useButtonSemantics'
|
|
3
|
-
import { useControllableState } from './useControllableState'
|
|
4
|
-
import { useDialogElement } from './useDialogElement'
|
|
5
|
-
import { useDisabledAnchorGuard } from './useDisabledAnchorGuard'
|
|
6
|
-
import { useDismissibleTransition } from './useDismissibleTransition'
|
|
7
|
-
import { useDrawer } from './useDrawer'
|
|
8
|
-
import {
|
|
9
|
-
getOverlayArrowStyle,
|
|
10
|
-
getOverlayTransitionClass,
|
|
11
|
-
useFloatingOverlay
|
|
12
|
-
} from './useFloatingOverlay'
|
|
13
|
-
import { useForkedRef } from './useForkedRef'
|
|
14
|
-
import { useFormField } from './useFormField'
|
|
15
|
-
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect'
|
|
16
|
-
import { useModal } from './useModal'
|
|
17
|
-
import { useNotification } from './useNotification'
|
|
18
|
-
import { useOverlayPlacement } from './useOverlayPlacement'
|
|
19
|
-
import { usePagination } from './usePagination'
|
|
20
|
-
import { useToast } from './useToast'
|
|
21
|
-
import { useToastRegionQueue } from './useToastRegionQueue'
|
|
22
|
-
|
|
23
|
-
export {
|
|
24
|
-
getOverlayArrowStyle,
|
|
25
|
-
getOverlayTransitionClass,
|
|
26
|
-
useAutoDismiss,
|
|
27
|
-
useButtonSemantics,
|
|
28
|
-
useControllableState,
|
|
29
|
-
useDialogElement,
|
|
30
|
-
useDisabledAnchorGuard,
|
|
31
|
-
useDismissibleTransition,
|
|
32
|
-
useDrawer,
|
|
33
|
-
useFloatingOverlay,
|
|
34
|
-
useForkedRef,
|
|
35
|
-
useFormField,
|
|
36
|
-
useIsomorphicLayoutEffect,
|
|
37
|
-
useModal,
|
|
38
|
-
useNotification,
|
|
39
|
-
useOverlayPlacement,
|
|
40
|
-
usePagination,
|
|
41
|
-
useToast,
|
|
42
|
-
useToastRegionQueue
|
|
43
|
-
}
|
|
44
|
-
export type { UseAutoDismissOptions, UseAutoDismissResult } from './useAutoDismiss'
|
|
45
|
-
export type { UseDialogElementOptions } from './useDialogElement'
|
|
46
|
-
export type {
|
|
47
|
-
UseDismissibleTransitionOptions,
|
|
48
|
-
UseDismissibleTransitionResult
|
|
49
|
-
} from './useDismissibleTransition'
|
|
50
|
-
export type { UseDrawerResult } from './useDrawer'
|
|
51
|
-
export type { UseFloatingOverlayOptions } from './useFloatingOverlay'
|
|
52
|
-
export type { UseFormFieldOptions, UseFormFieldResult } from './useFormField'
|
|
53
|
-
export type { UseModalResult } from './useModal'
|
|
54
|
-
export type { UseNotificationResult } from './useNotification'
|
|
55
|
-
export type { UsePaginationResult } from './usePagination'
|
|
56
|
-
export type { UseToastResult } from './useToast'
|
|
57
|
-
export type { UseToastRegionQueueResult } from './useToastRegionQueue'
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useRef } from 'react'
|
|
2
|
-
|
|
3
|
-
export interface UseAutoDismissOptions {
|
|
4
|
-
/**
|
|
5
|
-
* Enables the auto-dismiss timer. When `false`, `onHide` is never called and the returned
|
|
6
|
-
* handlers are no-ops.
|
|
7
|
-
*/
|
|
8
|
-
enabled?: boolean
|
|
9
|
-
/**
|
|
10
|
-
* Delay in ms before `onHide` fires once the timer is (re)started.
|
|
11
|
-
*/
|
|
12
|
-
delay?: number
|
|
13
|
-
/**
|
|
14
|
-
* Whether the dismissible element is currently visible. The timer only runs while `true`.
|
|
15
|
-
*/
|
|
16
|
-
visible: boolean
|
|
17
|
-
/**
|
|
18
|
-
* Called once the delay elapses without an intervening pointer/focus interaction.
|
|
19
|
-
*/
|
|
20
|
-
onHide: () => void
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface UseAutoDismissResult {
|
|
24
|
-
onMouseEnter: () => void
|
|
25
|
-
onMouseLeave: () => void
|
|
26
|
-
onFocus: () => void
|
|
27
|
-
onBlur: () => void
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Shared timer logic for components that auto-dismiss after a delay, pausing while the pointer
|
|
31
|
-
// or focus is on the element (mirrors the behavior `Toast` already implements). Extracted so new
|
|
32
|
-
// auto-dismissing components don't reimplement the pause/resume bookkeeping.
|
|
33
|
-
export function useAutoDismiss({
|
|
34
|
-
enabled = false,
|
|
35
|
-
delay = 5000,
|
|
36
|
-
visible,
|
|
37
|
-
onHide
|
|
38
|
-
}: UseAutoDismissOptions): UseAutoDismissResult {
|
|
39
|
-
// `useRef<number>()` (no argument) isn't valid under @types/react 19 — the overload requires
|
|
40
|
-
// an initial value, and the ref has to admit `undefined` for `clearAutoDismissTimeout` to reset
|
|
41
|
-
// it back to "no timer scheduled".
|
|
42
|
-
const timeout = useRef<number | undefined>(undefined)
|
|
43
|
-
const hasMouseInteraction = useRef(false)
|
|
44
|
-
const hasKeyboardInteraction = useRef(false)
|
|
45
|
-
|
|
46
|
-
const clearAutoDismissTimeout = useCallback(() => {
|
|
47
|
-
clearTimeout(timeout.current)
|
|
48
|
-
timeout.current = undefined
|
|
49
|
-
}, [])
|
|
50
|
-
|
|
51
|
-
const maybeScheduleHide = useCallback(() => {
|
|
52
|
-
clearAutoDismissTimeout()
|
|
53
|
-
if (!enabled || hasMouseInteraction.current || hasKeyboardInteraction.current) {
|
|
54
|
-
return
|
|
55
|
-
}
|
|
56
|
-
timeout.current = window.setTimeout(onHide, delay)
|
|
57
|
-
}, [enabled, delay, onHide, clearAutoDismissTimeout])
|
|
58
|
-
|
|
59
|
-
// Clears on unmount.
|
|
60
|
-
useEffect(() => clearAutoDismissTimeout, [clearAutoDismissTimeout])
|
|
61
|
-
|
|
62
|
-
useEffect(() => {
|
|
63
|
-
if (visible) {
|
|
64
|
-
maybeScheduleHide()
|
|
65
|
-
} else {
|
|
66
|
-
clearAutoDismissTimeout()
|
|
67
|
-
}
|
|
68
|
-
}, [visible, enabled, delay, maybeScheduleHide, clearAutoDismissTimeout])
|
|
69
|
-
|
|
70
|
-
const onMouseEnter = useCallback(() => {
|
|
71
|
-
hasMouseInteraction.current = true
|
|
72
|
-
clearAutoDismissTimeout()
|
|
73
|
-
}, [clearAutoDismissTimeout])
|
|
74
|
-
|
|
75
|
-
const onMouseLeave = useCallback(() => {
|
|
76
|
-
hasMouseInteraction.current = false
|
|
77
|
-
maybeScheduleHide()
|
|
78
|
-
}, [maybeScheduleHide])
|
|
79
|
-
|
|
80
|
-
const onFocus = useCallback(() => {
|
|
81
|
-
hasKeyboardInteraction.current = true
|
|
82
|
-
clearAutoDismissTimeout()
|
|
83
|
-
}, [clearAutoDismissTimeout])
|
|
84
|
-
|
|
85
|
-
const onBlur = useCallback(() => {
|
|
86
|
-
hasKeyboardInteraction.current = false
|
|
87
|
-
maybeScheduleHide()
|
|
88
|
-
}, [maybeScheduleHide])
|
|
89
|
-
|
|
90
|
-
return { onMouseEnter, onMouseLeave, onFocus, onBlur }
|
|
91
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { MouseEventHandler, Ref, RefObject, useRef } from 'react'
|
|
2
|
-
import { AriaButtonProps, useButton } from 'react-aria'
|
|
3
|
-
|
|
4
|
-
import { useForkedRef } from './useForkedRef'
|
|
5
|
-
|
|
6
|
-
interface UseButtonSemanticsOptions<T extends HTMLElement> {
|
|
7
|
-
disabled?: boolean
|
|
8
|
-
onClick?: MouseEventHandler<T>
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
// Synthesizes native button semantics (role, tabIndex, Enter/Space activation) for a
|
|
12
|
-
// non-native `component` — a `<button>`/`<a>`/`<input>` gets all of this for free from the
|
|
13
|
-
// browser, but an arbitrary `component` (e.g. `'div'`, `'span'`) doesn't. Shared by
|
|
14
|
-
// `Link`/`Button`/`CloseButton`, which otherwise duplicated this ref/hook wiring near-verbatim.
|
|
15
|
-
// `elementType: 'div'` and the `HTMLDivElement` cast below are fixed regardless of the actual
|
|
16
|
-
// rendered tag — `useButton` only uses `elementType` to pick which ARIA attributes apply
|
|
17
|
-
// (a `div`-shaped set is the right one for an arbitrary non-native element either way), not to
|
|
18
|
-
// constrain the ref's real type.
|
|
19
|
-
export const useButtonSemantics = <T extends HTMLElement>(
|
|
20
|
-
ref: Ref<T>,
|
|
21
|
-
{ disabled, onClick }: UseButtonSemanticsOptions<T>
|
|
22
|
-
) => {
|
|
23
|
-
const buttonRef = useRef<T | null>(null)
|
|
24
|
-
const forkedRef = useForkedRef(ref, buttonRef)
|
|
25
|
-
const buttonAriaProps: AriaButtonProps<'div'> = {
|
|
26
|
-
elementType: 'div',
|
|
27
|
-
isDisabled: disabled,
|
|
28
|
-
onClick: onClick as unknown as AriaButtonProps<'div'>['onClick']
|
|
29
|
-
}
|
|
30
|
-
const { buttonProps } = useButton(buttonAriaProps, buttonRef as RefObject<HTMLDivElement | null>)
|
|
31
|
-
|
|
32
|
-
return { buttonProps, forkedRef }
|
|
33
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { useState } from 'react'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Shared controlled/uncontrolled state pattern: `value` present means controlled (the returned
|
|
5
|
-
* state always mirrors it), otherwise state is tracked internally starting from `defaultValue`.
|
|
6
|
-
* The returned setter updates internal state (when uncontrolled) and always calls `onChange`,
|
|
7
|
-
* leaving the caller free to layer additional logic (e.g. an `onComplete` callback) around it.
|
|
8
|
-
*/
|
|
9
|
-
export function useControllableState<T>(
|
|
10
|
-
value: T | undefined,
|
|
11
|
-
defaultValue: T,
|
|
12
|
-
onChange?: (value: T) => void
|
|
13
|
-
): [T, (next: T) => void] {
|
|
14
|
-
const isControlled = value !== undefined
|
|
15
|
-
const [uncontrolledValue, setUncontrolledValue] = useState<T>(defaultValue)
|
|
16
|
-
const state = isControlled ? (value as T) : uncontrolledValue
|
|
17
|
-
|
|
18
|
-
const setState = (next: T) => {
|
|
19
|
-
if (!isControlled) setUncontrolledValue(next)
|
|
20
|
-
onChange?.(next)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return [state, setState]
|
|
24
|
-
}
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ForwardedRef,
|
|
3
|
-
MouseEvent as ReactMouseEvent,
|
|
4
|
-
MouseEventHandler,
|
|
5
|
-
SyntheticEvent,
|
|
6
|
-
useEffect,
|
|
7
|
-
useRef,
|
|
8
|
-
useState
|
|
9
|
-
} from 'react'
|
|
10
|
-
import { usePreventScroll } from 'react-aria'
|
|
11
|
-
|
|
12
|
-
import { useForkedRef } from './useForkedRef'
|
|
13
|
-
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect'
|
|
14
|
-
import { executeAfterTransition } from '../utils/dialogTransition'
|
|
15
|
-
|
|
16
|
-
export interface UseDialogElementOptions {
|
|
17
|
-
/**
|
|
18
|
-
* Same-named prop from the caller (`Modal`/`Drawer`) — only ever consulted here to
|
|
19
|
-
* distinguish `'static'` from everything else for the backdrop-click/Escape bounce.
|
|
20
|
-
*/
|
|
21
|
-
backdrop?: boolean | 'static'
|
|
22
|
-
/**
|
|
23
|
-
* Disables the open/close transition entirely.
|
|
24
|
-
*/
|
|
25
|
-
instant?: boolean
|
|
26
|
-
/**
|
|
27
|
-
* Whether this open should use `showModal()` (top-layer, native backdrop, scroll-locked) or
|
|
28
|
-
* `show()` — `Modal` passes its own `modal` prop straight through; `Drawer` derives it from
|
|
29
|
-
* `backdrop`/`scroll` instead, since its vanilla chassis-css counterpart does the same.
|
|
30
|
-
*/
|
|
31
|
-
isModal: boolean
|
|
32
|
-
/**
|
|
33
|
-
* Closes on the escape key / native `cancel` event.
|
|
34
|
-
*/
|
|
35
|
-
keyboard?: boolean
|
|
36
|
-
/**
|
|
37
|
-
* Fires synchronously right before a closed dialog actually opens (after the "already open"
|
|
38
|
-
* bail-out, before capturing the pre-open trigger element) — `Drawer`'s only hook into the
|
|
39
|
-
* show effect, used to auto-close every other open drawer first.
|
|
40
|
-
*/
|
|
41
|
-
onBeforeShow?: (dialog: HTMLDialogElement) => void
|
|
42
|
-
/**
|
|
43
|
-
* The caller's own `onClick`, chained ahead of the backdrop-click handling below rather than
|
|
44
|
-
* left in the props spread — a `<dialog>` needs `onClick` for its own backdrop detection, so
|
|
45
|
-
* spreading the caller's alongside it silently dropped one of the two. Fires for every click
|
|
46
|
-
* on the dialog, not just backdrop ones.
|
|
47
|
-
*/
|
|
48
|
-
onClick?: MouseEventHandler<HTMLDialogElement>
|
|
49
|
-
onClose?: () => void
|
|
50
|
-
onClosePrevented?: () => void
|
|
51
|
-
onHidden?: () => void
|
|
52
|
-
onShow?: () => void
|
|
53
|
-
onShown?: () => void
|
|
54
|
-
ref: ForwardedRef<HTMLDialogElement>
|
|
55
|
-
visible?: boolean
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Shared open/close machinery for a native `<dialog>`-based component — `Modal` and `Drawer`
|
|
59
|
-
// otherwise duplicated this near-verbatim: forked ref, the show/begin-hide effect (showModal()
|
|
60
|
-
// vs. show(), initial focus, scroll lock), the finish-hide effect (waits out the exit
|
|
61
|
-
// transition), the non-modal Escape-key listener (the native `cancel` event only fires for
|
|
62
|
-
// dialogs opened with `showModal()`), and the static-backdrop "bounce" used by both the
|
|
63
|
-
// backdrop-click handler and the Escape/`cancel` handler. What's left in each caller is only
|
|
64
|
-
// what's genuinely component-specific: `Modal`/`Drawer`'s own `_className` building, and
|
|
65
|
-
// `Drawer`'s cross-instance "auto-close every other open drawer" registry (wired in via
|
|
66
|
-
// `onBeforeShow`, since it needs to run at one precise point inside the show effect).
|
|
67
|
-
export const useDialogElement = ({
|
|
68
|
-
backdrop,
|
|
69
|
-
instant,
|
|
70
|
-
isModal,
|
|
71
|
-
keyboard = true,
|
|
72
|
-
onBeforeShow,
|
|
73
|
-
onClick,
|
|
74
|
-
onClose,
|
|
75
|
-
onClosePrevented,
|
|
76
|
-
onHidden,
|
|
77
|
-
onShow,
|
|
78
|
-
onShown,
|
|
79
|
-
ref,
|
|
80
|
-
visible
|
|
81
|
-
}: UseDialogElementOptions) => {
|
|
82
|
-
const dialogRef = useRef<HTMLDialogElement>(null)
|
|
83
|
-
const forkedRef = useForkedRef(ref, dialogRef)
|
|
84
|
-
|
|
85
|
-
const [_visible, setVisible] = useState(visible)
|
|
86
|
-
const [hiding, setHiding] = useState(false)
|
|
87
|
-
const [staticBounce, setStaticBounce] = useState(false)
|
|
88
|
-
const [scrollLocked, setScrollLocked] = useState(false)
|
|
89
|
-
const openedAsModalRef = useRef(false)
|
|
90
|
-
const triggerRef = useRef<HTMLElement | null>(null)
|
|
91
|
-
|
|
92
|
-
// Locked from showModal() until the exit transition finishes (see the show/hide effect
|
|
93
|
-
// below) — usePreventScroll releases it automatically on unmount too, even mid-transition.
|
|
94
|
-
usePreventScroll({ isDisabled: !scrollLocked })
|
|
95
|
-
|
|
96
|
-
useEffect(() => {
|
|
97
|
-
setVisible(visible)
|
|
98
|
-
}, [visible])
|
|
99
|
-
|
|
100
|
-
const close = () => {
|
|
101
|
-
onClose?.()
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
const triggerStaticBounce = () => {
|
|
105
|
-
onClosePrevented?.()
|
|
106
|
-
const dialog = dialogRef.current
|
|
107
|
-
if (!dialog) return
|
|
108
|
-
setStaticBounce(true)
|
|
109
|
-
executeAfterTransition(dialog, () => setStaticBounce(false), !instant)
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// Read through refs, kept current every render, so the keydown listener below — which only
|
|
113
|
-
// resubscribes when `keyboard` changes — never invokes a stale `close`/`triggerStaticBounce`
|
|
114
|
-
// closure if `onClose`/`onClosePrevented`/`instant` change identity without `keyboard` also
|
|
115
|
-
// changing. Same pattern as `Drawer`'s own `closeRef` and `useFloatingOverlay`'s `closeRef`.
|
|
116
|
-
const closeRef = useRef(close)
|
|
117
|
-
closeRef.current = close
|
|
118
|
-
const triggerStaticBounceRef = useRef(triggerStaticBounce)
|
|
119
|
-
triggerStaticBounceRef.current = triggerStaticBounce
|
|
120
|
-
|
|
121
|
-
// Show / begin-hide
|
|
122
|
-
useIsomorphicLayoutEffect(() => {
|
|
123
|
-
const dialog = dialogRef.current
|
|
124
|
-
if (!dialog) return undefined
|
|
125
|
-
|
|
126
|
-
if (_visible) {
|
|
127
|
-
if (dialog.open) return undefined
|
|
128
|
-
|
|
129
|
-
onBeforeShow?.(dialog)
|
|
130
|
-
|
|
131
|
-
triggerRef.current =
|
|
132
|
-
document.activeElement instanceof HTMLElement ? document.activeElement : null
|
|
133
|
-
|
|
134
|
-
openedAsModalRef.current = isModal
|
|
135
|
-
if (isModal) {
|
|
136
|
-
dialog.showModal()
|
|
137
|
-
setScrollLocked(true)
|
|
138
|
-
} else {
|
|
139
|
-
dialog.show()
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
const autofocusEl = dialog.querySelector<HTMLElement>('[autofocus]')
|
|
143
|
-
if (autofocusEl) {
|
|
144
|
-
autofocusEl.focus()
|
|
145
|
-
} else {
|
|
146
|
-
dialog.setAttribute('tabindex', '-1')
|
|
147
|
-
dialog.focus()
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
onShow?.()
|
|
151
|
-
setHiding(false)
|
|
152
|
-
|
|
153
|
-
return executeAfterTransition(dialog, () => onShown?.(), !instant)
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (!dialog.open) return undefined
|
|
157
|
-
setHiding(true)
|
|
158
|
-
return undefined
|
|
159
|
-
}, [_visible])
|
|
160
|
-
|
|
161
|
-
// Finish hide once the exit transition (or lack thereof) completes
|
|
162
|
-
useEffect(() => {
|
|
163
|
-
const dialog = dialogRef.current
|
|
164
|
-
if (!hiding || !dialog) return undefined
|
|
165
|
-
|
|
166
|
-
return executeAfterTransition(
|
|
167
|
-
dialog,
|
|
168
|
-
() => {
|
|
169
|
-
if (dialog.open) {
|
|
170
|
-
dialog.close()
|
|
171
|
-
}
|
|
172
|
-
if (openedAsModalRef.current) {
|
|
173
|
-
setScrollLocked(false)
|
|
174
|
-
}
|
|
175
|
-
setHiding(false)
|
|
176
|
-
onHidden?.()
|
|
177
|
-
const trigger = triggerRef.current
|
|
178
|
-
if (trigger && document.contains(trigger)) {
|
|
179
|
-
trigger.focus()
|
|
180
|
-
}
|
|
181
|
-
},
|
|
182
|
-
!instant
|
|
183
|
-
)
|
|
184
|
-
}, [hiding])
|
|
185
|
-
|
|
186
|
-
// Escape key for non-modal (show()) dialogs — the native `cancel` event below only
|
|
187
|
-
// fires for dialogs opened with showModal().
|
|
188
|
-
useEffect(() => {
|
|
189
|
-
const dialog = dialogRef.current
|
|
190
|
-
if (!dialog) return undefined
|
|
191
|
-
|
|
192
|
-
const handleKeyDown = (event: KeyboardEvent) => {
|
|
193
|
-
if (event.key !== 'Escape' || openedAsModalRef.current) return
|
|
194
|
-
event.preventDefault()
|
|
195
|
-
if (!keyboard) {
|
|
196
|
-
triggerStaticBounceRef.current()
|
|
197
|
-
return
|
|
198
|
-
}
|
|
199
|
-
closeRef.current()
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
dialog.addEventListener('keydown', handleKeyDown)
|
|
203
|
-
return () => dialog.removeEventListener('keydown', handleKeyDown)
|
|
204
|
-
}, [keyboard])
|
|
205
|
-
|
|
206
|
-
const handleCancel = (event: SyntheticEvent<HTMLDialogElement>) => {
|
|
207
|
-
event.preventDefault()
|
|
208
|
-
if (!keyboard) {
|
|
209
|
-
triggerStaticBounce()
|
|
210
|
-
return
|
|
211
|
-
}
|
|
212
|
-
close()
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
const handleBackdropClick = (event: ReactMouseEvent<HTMLDialogElement>) => {
|
|
216
|
-
onClick?.(event)
|
|
217
|
-
if (event.target !== dialogRef.current || !openedAsModalRef.current) return
|
|
218
|
-
if (backdrop === 'static') {
|
|
219
|
-
triggerStaticBounce()
|
|
220
|
-
return
|
|
221
|
-
}
|
|
222
|
-
close()
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
return { close, dialogRef, forkedRef, handleBackdropClick, handleCancel, hiding, staticBounce }
|
|
226
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { MouseEvent, MouseEventHandler } from 'react'
|
|
2
|
-
|
|
3
|
-
// A native `<button>`/`<input>` stops firing `click` on its own once `disabled` is set — an
|
|
4
|
-
// `<a>` (or any other non-native-button element standing in for one) has no real `disabled`
|
|
5
|
-
// attribute, so it still fires click (and an anchor still navigates) unless blocked by hand.
|
|
6
|
-
// `guard` is the caller's own "is this rendering as a non-native-button element" check (e.g.
|
|
7
|
-
// `Component === 'a'` for `Button`/`CloseButton`, `!isButton` for `Chip`) — kept as an explicit
|
|
8
|
-
// parameter rather than inferred here, since each caller's own set of native, guard-free elements
|
|
9
|
-
// differs slightly.
|
|
10
|
-
export const useDisabledAnchorGuard = <T extends HTMLElement>(
|
|
11
|
-
guard: boolean,
|
|
12
|
-
disabled: boolean | undefined,
|
|
13
|
-
onClick: MouseEventHandler<T> | undefined
|
|
14
|
-
): MouseEventHandler<T> => {
|
|
15
|
-
return (event: MouseEvent<T>) => {
|
|
16
|
-
if (guard && disabled) {
|
|
17
|
-
event.preventDefault()
|
|
18
|
-
return
|
|
19
|
-
}
|
|
20
|
-
onClick?.(event)
|
|
21
|
-
}
|
|
22
|
-
}
|