@ariakit/react-components 0.1.0 → 0.1.2
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/CHANGELOG.md +56 -0
- package/dist/button/button.d.ts +1 -1
- package/dist/{button-Cp853csH.d.ts → button-CVWcOgxs.d.ts} +3 -3
- package/dist/{button-Cp853csH.d.ts.map → button-CVWcOgxs.d.ts.map} +1 -1
- package/dist/checkbox/checkbox-check.d.ts +1 -1
- package/dist/checkbox/checkbox-check.d.ts.map +1 -1
- package/dist/checkbox/checkbox.d.ts +2 -2
- package/dist/checkbox/checkbox.d.ts.map +1 -1
- package/dist/collection/collection-item-offscreen.d.ts +1 -1
- package/dist/collection/collection-item-offscreen.js +1 -1
- package/dist/collection/collection-item-offscreen.js.map +1 -1
- package/dist/collection/collection-item.d.ts +1 -1
- package/dist/collection/collection-renderer.d.ts +1 -1
- package/dist/collection/collection-renderer.js +1 -1
- package/dist/collection/collection-renderer.js.map +1 -1
- package/dist/collection/collection.d.ts +1 -1
- package/dist/collection/collection.d.ts.map +1 -1
- package/dist/{collection-item-offscreen-DyXa-sqj.d.ts → collection-item-offscreen-B5E5vNFi.d.ts} +2 -2
- package/dist/{collection-item-offscreen-DyXa-sqj.d.ts.map → collection-item-offscreen-B5E5vNFi.d.ts.map} +1 -1
- package/dist/{collection-item-C-g2BwVF.d.ts → collection-item-pvEWNoNs.d.ts} +2 -2
- package/dist/{collection-item-C-g2BwVF.d.ts.map → collection-item-pvEWNoNs.d.ts.map} +1 -1
- package/dist/{collection-renderer-DsPD9ksD.d.ts → collection-renderer-BhzF21Du.d.ts} +29 -15
- package/dist/collection-renderer-BhzF21Du.d.ts.map +1 -0
- package/dist/combobox/combobox-cancel.d.ts +2 -2
- package/dist/combobox/combobox-cancel.d.ts.map +1 -1
- package/dist/combobox/combobox-cancel.js +1 -1
- package/dist/combobox/combobox-cancel.js.map +1 -1
- package/dist/combobox/combobox-disclosure.d.ts +2 -2
- package/dist/combobox/combobox-disclosure.d.ts.map +1 -1
- package/dist/combobox/combobox-disclosure.js +1 -1
- package/dist/combobox/combobox-disclosure.js.map +1 -1
- package/dist/combobox/combobox-group-label.d.ts +1 -1
- package/dist/combobox/combobox-group-label.d.ts.map +1 -1
- package/dist/combobox/combobox-group.d.ts +1 -1
- package/dist/combobox/combobox-group.d.ts.map +1 -1
- package/dist/combobox/combobox-group.js +1 -1
- package/dist/combobox/combobox-group.js.map +1 -1
- package/dist/combobox/combobox-item-check.d.ts +1 -1
- package/dist/combobox/combobox-item-check.d.ts.map +1 -1
- package/dist/combobox/combobox-item-value.d.ts +1 -1
- package/dist/combobox/combobox-item-value.d.ts.map +1 -1
- package/dist/combobox/combobox-item.d.ts +3 -3
- package/dist/combobox/combobox-item.d.ts.map +1 -1
- package/dist/combobox/combobox-item.js +1 -1
- package/dist/combobox/combobox-item.js.map +1 -1
- package/dist/combobox/combobox-label.d.ts +1 -1
- package/dist/combobox/combobox-label.d.ts.map +1 -1
- package/dist/combobox/combobox-label.js +1 -1
- package/dist/combobox/combobox-label.js.map +1 -1
- package/dist/combobox/combobox-list.d.ts +1 -1
- package/dist/combobox/combobox-list.d.ts.map +1 -1
- package/dist/combobox/combobox-list.js +1 -1
- package/dist/combobox/combobox-list.js.map +1 -1
- package/dist/combobox/combobox-popover.d.ts +1 -1
- package/dist/combobox/combobox-popover.js +1 -1
- package/dist/combobox/combobox-popover.js.map +1 -1
- package/dist/combobox/combobox-row.d.ts +1 -1
- package/dist/combobox/combobox-row.d.ts.map +1 -1
- package/dist/combobox/combobox-row.js +1 -1
- package/dist/combobox/combobox-row.js.map +1 -1
- package/dist/combobox/combobox-separator.d.ts +1 -1
- package/dist/combobox/combobox-separator.d.ts.map +1 -1
- package/dist/combobox/combobox-separator.js +1 -1
- package/dist/combobox/combobox-separator.js.map +1 -1
- package/dist/combobox/combobox-value.js +1 -1
- package/dist/combobox/combobox-value.js.map +1 -1
- package/dist/combobox/combobox.d.ts +3 -3
- package/dist/combobox/combobox.d.ts.map +1 -1
- package/dist/combobox/combobox.js +16 -2
- package/dist/combobox/combobox.js.map +1 -1
- package/dist/command/command.d.ts +1 -1
- package/dist/{command-DckndCUK.d.ts → command-B9C8p3_S.d.ts} +3 -3
- package/dist/{command-DckndCUK.d.ts.map → command-B9C8p3_S.d.ts.map} +1 -1
- package/dist/composite/composite-container.d.ts +1 -1
- package/dist/composite/composite-container.d.ts.map +1 -1
- package/dist/composite/composite-container.js +2 -2
- package/dist/composite/composite-container.js.map +1 -1
- package/dist/composite/composite-group-label.d.ts +2 -2
- package/dist/composite/composite-group-label.d.ts.map +1 -1
- package/dist/composite/composite-group.d.ts +2 -2
- package/dist/composite/composite-group.d.ts.map +1 -1
- package/dist/composite/composite-hover.d.ts +1 -1
- package/dist/composite/composite-hover.js +9 -13
- package/dist/composite/composite-hover.js.map +1 -1
- package/dist/composite/composite-input.d.ts +1 -1
- package/dist/composite/composite-input.d.ts.map +1 -1
- package/dist/composite/composite-input.js +1 -1
- package/dist/composite/composite-input.js.map +1 -1
- package/dist/composite/composite-item-offscreen.d.ts +2 -2
- package/dist/composite/composite-item-offscreen.js +2 -2
- package/dist/composite/composite-item-offscreen.js.map +1 -1
- package/dist/composite/composite-item.d.ts +1 -1
- package/dist/composite/composite-item.js +2 -2
- package/dist/composite/composite-item.js.map +1 -1
- package/dist/composite/composite-overflow-disclosure.d.ts +2 -2
- package/dist/composite/composite-overflow-disclosure.d.ts.map +1 -1
- package/dist/composite/composite-overflow.d.ts +2 -2
- package/dist/composite/composite-overflow.d.ts.map +1 -1
- package/dist/composite/composite-renderer.d.ts +28 -14
- package/dist/composite/composite-renderer.d.ts.map +1 -1
- package/dist/composite/composite-renderer.js +2 -2
- package/dist/composite/composite-renderer.js.map +1 -1
- package/dist/composite/composite-row.d.ts +1 -1
- package/dist/composite/composite-row.d.ts.map +1 -1
- package/dist/composite/composite-row.js +3 -3
- package/dist/composite/composite-row.js.map +1 -1
- package/dist/composite/composite-separator.d.ts +2 -2
- package/dist/composite/composite-separator.d.ts.map +1 -1
- package/dist/composite/composite-separator.js +3 -3
- package/dist/composite/composite-separator.js.map +1 -1
- package/dist/composite/composite-typeahead.d.ts +1 -1
- package/dist/composite/composite-typeahead.js +3 -3
- package/dist/composite/composite-typeahead.js.map +1 -1
- package/dist/composite/composite.d.ts +1 -1
- package/dist/composite/composite.js +3 -3
- package/dist/composite/composite.js.map +1 -1
- package/dist/{composite-DLvyFHMq.d.ts → composite-KBhCGLEy.d.ts} +3 -3
- package/dist/{composite-DLvyFHMq.d.ts.map → composite-KBhCGLEy.d.ts.map} +1 -1
- package/dist/{composite-hover-C7ul163w.d.ts → composite-hover-BpXq3T8J.d.ts} +2 -2
- package/dist/{composite-hover-C7ul163w.d.ts.map → composite-hover-BpXq3T8J.d.ts.map} +1 -1
- package/dist/{composite-item-B4WTelVz.d.ts → composite-item-d4UXaZ84.d.ts} +4 -4
- package/dist/{composite-item-B4WTelVz.d.ts.map → composite-item-d4UXaZ84.d.ts.map} +1 -1
- package/dist/{composite-typeahead-DDhpyKqm.d.ts → composite-typeahead-0euW43GU.d.ts} +2 -2
- package/dist/{composite-typeahead-DDhpyKqm.d.ts.map → composite-typeahead-0euW43GU.d.ts.map} +1 -1
- package/dist/dialog/dialog-backdrop.d.ts +1 -1
- package/dist/dialog/dialog-description.d.ts +1 -1
- package/dist/dialog/dialog-disclosure.d.ts +1 -1
- package/dist/dialog/dialog-disclosure.js +1 -1
- package/dist/dialog/dialog-disclosure.js.map +1 -1
- package/dist/dialog/dialog-dismiss.d.ts +1 -1
- package/dist/dialog/dialog-heading.d.ts +1 -1
- package/dist/dialog/dialog.d.ts +1 -1
- package/dist/dialog/dialog.js +18 -6
- package/dist/dialog/dialog.js.map +1 -1
- package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts +1 -3
- package/dist/dialog/utils/disable-accessibility-tree-outside.d.ts.map +1 -1
- package/dist/dialog/utils/disable-accessibility-tree-outside.js +1 -15
- package/dist/dialog/utils/disable-accessibility-tree-outside.js.map +1 -1
- package/dist/dialog/utils/use-hide-on-interact-outside.d.ts +1 -1
- package/dist/dialog/utils/use-hide-on-interact-outside.js +2 -2
- package/dist/dialog/utils/use-hide-on-interact-outside.js.map +1 -1
- package/dist/dialog/utils/use-prevent-body-scroll.js +2 -1
- package/dist/dialog/utils/use-prevent-body-scroll.js.map +1 -1
- package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts +1 -1
- package/dist/dialog/utils/use-previous-mouse-down-ref.d.ts.map +1 -1
- package/dist/{dialog-C__C-zX2.d.ts → dialog-D23r2ZWj.d.ts} +4 -4
- package/dist/{dialog-C__C-zX2.d.ts.map → dialog-D23r2ZWj.d.ts.map} +1 -1
- package/dist/{dialog-description-BCZJ1Kyd.d.ts → dialog-description-CJGxnEvk.d.ts} +2 -2
- package/dist/{dialog-description-BCZJ1Kyd.d.ts.map → dialog-description-CJGxnEvk.d.ts.map} +1 -1
- package/dist/{dialog-disclosure-DLD10zlb.d.ts → dialog-disclosure-DSESk5pv.d.ts} +3 -3
- package/dist/{dialog-disclosure-DLD10zlb.d.ts.map → dialog-disclosure-DSESk5pv.d.ts.map} +1 -1
- package/dist/{dialog-dismiss-CnwEbzc6.d.ts → dialog-dismiss-DW3XQYvp.d.ts} +3 -3
- package/dist/{dialog-dismiss-CnwEbzc6.d.ts.map → dialog-dismiss-DW3XQYvp.d.ts.map} +1 -1
- package/dist/{dialog-heading-DQvnOfZH.d.ts → dialog-heading-DGA5d8VH.d.ts} +3 -3
- package/dist/{dialog-heading-DQvnOfZH.d.ts.map → dialog-heading-DGA5d8VH.d.ts.map} +1 -1
- package/dist/disclosure/disclosure-content.js +1 -1
- package/dist/disclosure/disclosure-content.js.map +1 -1
- package/dist/disclosure/disclosure.d.ts +1 -1
- package/dist/disclosure/disclosure.js +1 -1
- package/dist/disclosure/disclosure.js.map +1 -1
- package/dist/{disclosure-CQ37hPVP.d.ts → disclosure-C4F4sCVZ.d.ts} +3 -3
- package/dist/{disclosure-CQ37hPVP.d.ts.map → disclosure-C4F4sCVZ.d.ts.map} +1 -1
- package/dist/focus-trap/focus-trap-region.d.ts +1 -1
- package/dist/focus-trap/focus-trap-region.d.ts.map +1 -1
- package/dist/focus-trap/focus-trap.d.ts +1 -1
- package/dist/focus-trap/focus-trap.d.ts.map +1 -1
- package/dist/focusable/focusable-container.d.ts +1 -1
- package/dist/focusable/focusable-container.d.ts.map +1 -1
- package/dist/focusable/focusable.d.ts +1 -1
- package/dist/focusable/focusable.js +49 -8
- package/dist/focusable/focusable.js.map +1 -1
- package/dist/{focusable-B00tOxtB.d.ts → focusable-dBZH13-T.d.ts} +2 -2
- package/dist/{focusable-B00tOxtB.d.ts.map → focusable-dBZH13-T.d.ts.map} +1 -1
- package/dist/form/form-checkbox.d.ts +1 -1
- package/dist/form/form-checkbox.d.ts.map +1 -1
- package/dist/form/form-checkbox.js +1 -1
- package/dist/form/form-checkbox.js.map +1 -1
- package/dist/form/form-control.d.ts +2 -2
- package/dist/form/form-control.d.ts.map +1 -1
- package/dist/form/form-control.js +1 -1
- package/dist/form/form-control.js.map +1 -1
- package/dist/form/form-description.d.ts +2 -2
- package/dist/form/form-description.d.ts.map +1 -1
- package/dist/form/form-description.js +1 -1
- package/dist/form/form-description.js.map +1 -1
- package/dist/form/form-error.d.ts +2 -2
- package/dist/form/form-error.d.ts.map +1 -1
- package/dist/form/form-error.js +1 -1
- package/dist/form/form-error.js.map +1 -1
- package/dist/form/form-field.d.ts +1 -1
- package/dist/form/form-field.d.ts.map +1 -1
- package/dist/form/form-group-label.d.ts +2 -2
- package/dist/form/form-group-label.d.ts.map +1 -1
- package/dist/form/form-group.d.ts +2 -2
- package/dist/form/form-group.d.ts.map +1 -1
- package/dist/form/form-input.d.ts +2 -2
- package/dist/form/form-input.d.ts.map +1 -1
- package/dist/form/form-input.js +1 -1
- package/dist/form/form-input.js.map +1 -1
- package/dist/form/form-label.d.ts +2 -2
- package/dist/form/form-label.d.ts.map +1 -1
- package/dist/form/form-label.js +1 -1
- package/dist/form/form-label.js.map +1 -1
- package/dist/form/form-push.d.ts +3 -3
- package/dist/form/form-push.d.ts.map +1 -1
- package/dist/form/form-push.js +1 -1
- package/dist/form/form-push.js.map +1 -1
- package/dist/form/form-radio-group.d.ts +1 -1
- package/dist/form/form-radio-group.d.ts.map +1 -1
- package/dist/form/form-radio.d.ts +1 -1
- package/dist/form/form-radio.d.ts.map +1 -1
- package/dist/form/form-radio.js +1 -1
- package/dist/form/form-radio.js.map +1 -1
- package/dist/form/form-remove.d.ts +16 -12
- package/dist/form/form-remove.d.ts.map +1 -1
- package/dist/form/form-remove.js +15 -11
- package/dist/form/form-remove.js.map +1 -1
- package/dist/form/form-reset.d.ts +2 -2
- package/dist/form/form-reset.d.ts.map +1 -1
- package/dist/form/form-reset.js +1 -1
- package/dist/form/form-reset.js.map +1 -1
- package/dist/form/form-submit.d.ts +2 -2
- package/dist/form/form-submit.d.ts.map +1 -1
- package/dist/form/form-submit.js +1 -1
- package/dist/form/form-submit.js.map +1 -1
- package/dist/form/form.d.ts +1 -1
- package/dist/form/form.d.ts.map +1 -1
- package/dist/form/form.js +1 -1
- package/dist/form/form.js.map +1 -1
- package/dist/group/group-label.d.ts +1 -1
- package/dist/group/group.d.ts +1 -1
- package/dist/{group-label-C16IDs1b.d.ts → group-label-BKYqD4Sj.d.ts} +2 -2
- package/dist/{group-label-C16IDs1b.d.ts.map → group-label-BKYqD4Sj.d.ts.map} +1 -1
- package/dist/{group-CamegDJA.d.ts → group-nGD9e6Dj.d.ts} +2 -2
- package/dist/{group-CamegDJA.d.ts.map → group-nGD9e6Dj.d.ts.map} +1 -1
- package/dist/heading/heading.d.ts +1 -1
- package/dist/heading/heading.js +2 -2
- package/dist/heading/heading.js.map +1 -1
- package/dist/{heading-zY9g_9K-.d.ts → heading-D_AmeqL5.d.ts} +2 -2
- package/dist/{heading-zY9g_9K-.d.ts.map → heading-D_AmeqL5.d.ts.map} +1 -1
- package/dist/hovercard/hovercard-anchor.d.ts +2 -2
- package/dist/hovercard/hovercard-anchor.d.ts.map +1 -1
- package/dist/hovercard/hovercard-anchor.js +1 -1
- package/dist/hovercard/hovercard-anchor.js.map +1 -1
- package/dist/hovercard/hovercard-arrow.d.ts +1 -1
- package/dist/hovercard/hovercard-arrow.d.ts.map +1 -1
- package/dist/hovercard/hovercard-description.d.ts +2 -2
- package/dist/hovercard/hovercard-description.d.ts.map +1 -1
- package/dist/hovercard/hovercard-disclosure.d.ts +2 -2
- package/dist/hovercard/hovercard-disclosure.d.ts.map +1 -1
- package/dist/hovercard/hovercard-disclosure.js +4 -4
- package/dist/hovercard/hovercard-disclosure.js.map +1 -1
- package/dist/hovercard/hovercard-dismiss.d.ts +2 -2
- package/dist/hovercard/hovercard-dismiss.d.ts.map +1 -1
- package/dist/hovercard/hovercard-heading.d.ts +2 -2
- package/dist/hovercard/hovercard-heading.d.ts.map +1 -1
- package/dist/hovercard/hovercard.d.ts +1 -1
- package/dist/hovercard/hovercard.js +2 -2
- package/dist/hovercard/hovercard.js.map +1 -1
- package/dist/menu/menu-arrow.d.ts +2 -2
- package/dist/menu/menu-arrow.d.ts.map +1 -1
- package/dist/menu/menu-bar-provider.js +1 -1
- package/dist/menu/menu-bar-provider.js.map +1 -1
- package/dist/menu/menu-bar-store.d.ts +3 -3
- package/dist/menu/menu-bar-store.js +3 -3
- package/dist/menu/menu-bar-store.js.map +1 -1
- package/dist/menu/menu-bar.d.ts +1 -1
- package/dist/menu/menu-bar.d.ts.map +1 -1
- package/dist/menu/menu-bar.js +1 -1
- package/dist/menu/menu-bar.js.map +1 -1
- package/dist/menu/menu-button-arrow.d.ts +2 -2
- package/dist/menu/menu-button-arrow.d.ts.map +1 -1
- package/dist/menu/menu-button.d.ts +3 -3
- package/dist/menu/menu-button.d.ts.map +1 -1
- package/dist/menu/menu-button.js +1 -1
- package/dist/menu/menu-button.js.map +1 -1
- package/dist/menu/menu-context.d.ts +10 -3
- package/dist/menu/menu-context.d.ts.map +1 -1
- package/dist/menu/menu-context.js +8 -1
- package/dist/menu/menu-context.js.map +1 -1
- package/dist/menu/menu-description.d.ts +2 -2
- package/dist/menu/menu-description.d.ts.map +1 -1
- package/dist/menu/menu-dismiss.d.ts +2 -2
- package/dist/menu/menu-dismiss.d.ts.map +1 -1
- package/dist/menu/menu-group-label.d.ts +2 -2
- package/dist/menu/menu-group-label.d.ts.map +1 -1
- package/dist/menu/menu-group.d.ts +2 -2
- package/dist/menu/menu-group.d.ts.map +1 -1
- package/dist/menu/menu-heading.d.ts +2 -2
- package/dist/menu/menu-heading.d.ts.map +1 -1
- package/dist/menu/menu-item-check.d.ts +2 -2
- package/dist/menu/menu-item-check.d.ts.map +1 -1
- package/dist/menu/menu-item-checkbox.d.ts +2 -2
- package/dist/menu/menu-item-checkbox.d.ts.map +1 -1
- package/dist/menu/menu-item-checkbox.js +1 -1
- package/dist/menu/menu-item-checkbox.js.map +1 -1
- package/dist/menu/menu-item-radio.d.ts +2 -2
- package/dist/menu/menu-item-radio.d.ts.map +1 -1
- package/dist/menu/menu-item-radio.js +1 -1
- package/dist/menu/menu-item-radio.js.map +1 -1
- package/dist/menu/menu-item.d.ts +5 -5
- package/dist/menu/menu-item.d.ts.map +1 -1
- package/dist/menu/menu-item.js +8 -4
- package/dist/menu/menu-item.js.map +1 -1
- package/dist/menu/menu-list.d.ts +4 -4
- package/dist/menu/menu-list.d.ts.map +1 -1
- package/dist/menu/menu-list.js +6 -2
- package/dist/menu/menu-list.js.map +1 -1
- package/dist/menu/menu-provider.d.ts +1 -1
- package/dist/menu/menu-separator.d.ts +2 -2
- package/dist/menu/menu-separator.d.ts.map +1 -1
- package/dist/menu/menu-store.d.ts +1 -1
- package/dist/menu/menu.js +1 -1
- package/dist/menu/menu.js.map +1 -1
- package/dist/{menu-store-0CKKmNek.d.ts → menu-store-BpTJdcL8.d.ts} +2 -2
- package/dist/{menu-store-0CKKmNek.d.ts.map → menu-store-BpTJdcL8.d.ts.map} +1 -1
- package/dist/menubar/menubar-context.d.ts +2 -3
- package/dist/menubar/menubar-context.d.ts.map +1 -1
- package/dist/menubar/menubar-context.js +1 -3
- package/dist/menubar/menubar-context.js.map +1 -1
- package/dist/menubar/menubar-provider.d.ts +1 -1
- package/dist/menubar/menubar-store.d.ts +1 -1
- package/dist/menubar/menubar-store.js +2 -2
- package/dist/menubar/menubar-store.js.map +1 -1
- package/dist/menubar/menubar.d.ts +3 -3
- package/dist/menubar/menubar.d.ts.map +1 -1
- package/dist/{menubar-store-3h0eNIbS.d.ts → menubar-store-C553OKBw.d.ts} +3 -3
- package/dist/{menubar-store-3h0eNIbS.d.ts.map → menubar-store-C553OKBw.d.ts.map} +1 -1
- package/dist/popover/popover-anchor.d.ts +1 -1
- package/dist/popover/popover-arrow.d.ts +1 -1
- package/dist/popover/popover-arrow.d.ts.map +1 -1
- package/dist/popover/popover-arrow.js +4 -4
- package/dist/popover/popover-arrow.js.map +1 -1
- package/dist/popover/popover-description.d.ts +1 -1
- package/dist/popover/popover-disclosure-arrow.d.ts +1 -1
- package/dist/popover/popover-disclosure-arrow.d.ts.map +1 -1
- package/dist/popover/popover-disclosure-arrow.js +1 -1
- package/dist/popover/popover-disclosure-arrow.js.map +1 -1
- package/dist/popover/popover-disclosure.d.ts +3 -3
- package/dist/popover/popover-disclosure.d.ts.map +1 -1
- package/dist/popover/popover-disclosure.js +1 -1
- package/dist/popover/popover-disclosure.js.map +1 -1
- package/dist/popover/popover-dismiss.d.ts +1 -1
- package/dist/popover/popover-heading.d.ts +1 -1
- package/dist/popover/popover.d.ts +1 -1
- package/dist/popover/popover.js +2 -2
- package/dist/popover/popover.js.map +1 -1
- package/dist/{popover-CCqiRKqg.d.ts → popover-B9PxE5iP.d.ts} +10 -2
- package/dist/popover-B9PxE5iP.d.ts.map +1 -0
- package/dist/{popover-anchor-PgfeXyzs.d.ts → popover-anchor-W18KUmuM.d.ts} +2 -2
- package/dist/{popover-anchor-PgfeXyzs.d.ts.map → popover-anchor-W18KUmuM.d.ts.map} +1 -1
- package/dist/{popover-description-DU753dah.d.ts → popover-description-DbW4mVBb.d.ts} +3 -3
- package/dist/{popover-description-DU753dah.d.ts.map → popover-description-DbW4mVBb.d.ts.map} +1 -1
- package/dist/{popover-dismiss-DPeI6Zse.d.ts → popover-dismiss-CQFvuLzJ.d.ts} +3 -3
- package/dist/{popover-dismiss-DPeI6Zse.d.ts.map → popover-dismiss-CQFvuLzJ.d.ts.map} +1 -1
- package/dist/{popover-heading-DGsr6D5W.d.ts → popover-heading-DC8rYnwo.d.ts} +3 -3
- package/dist/{popover-heading-DGsr6D5W.d.ts.map → popover-heading-DC8rYnwo.d.ts.map} +1 -1
- package/dist/portal/portal.d.ts +1 -1
- package/dist/{portal-CMBWiayp.d.ts → portal-CKFTfCWH.d.ts} +2 -2
- package/dist/{portal-CMBWiayp.d.ts.map → portal-CKFTfCWH.d.ts.map} +1 -1
- package/dist/radio/radio-group.d.ts +2 -2
- package/dist/radio/radio-group.d.ts.map +1 -1
- package/dist/radio/radio-group.js +1 -1
- package/dist/radio/radio-group.js.map +1 -1
- package/dist/radio/radio.d.ts +2 -2
- package/dist/radio/radio.d.ts.map +1 -1
- package/dist/select/select-arrow.d.ts +1 -1
- package/dist/select/select-arrow.d.ts.map +1 -1
- package/dist/select/select-dismiss.d.ts +2 -2
- package/dist/select/select-dismiss.d.ts.map +1 -1
- package/dist/select/select-group-label.d.ts +1 -1
- package/dist/select/select-group-label.d.ts.map +1 -1
- package/dist/select/select-group.d.ts +1 -1
- package/dist/select/select-group.d.ts.map +1 -1
- package/dist/select/select-heading.d.ts +2 -2
- package/dist/select/select-heading.d.ts.map +1 -1
- package/dist/select/select-item-check.d.ts +1 -1
- package/dist/select/select-item-check.d.ts.map +1 -1
- package/dist/select/select-item.d.ts +3 -3
- package/dist/select/select-item.d.ts.map +1 -1
- package/dist/select/select-item.js +1 -1
- package/dist/select/select-item.js.map +1 -1
- package/dist/select/select-label.d.ts +1 -1
- package/dist/select/select-label.d.ts.map +1 -1
- package/dist/select/select-label.js +1 -1
- package/dist/select/select-label.js.map +1 -1
- package/dist/select/select-list.d.ts +3 -3
- package/dist/select/select-list.d.ts.map +1 -1
- package/dist/select/select-list.js +1 -1
- package/dist/select/select-list.js.map +1 -1
- package/dist/select/select-popover.d.ts +1 -1
- package/dist/select/select-renderer.d.ts +2 -2
- package/dist/select/select-renderer.d.ts.map +1 -1
- package/dist/select/select-row.d.ts +1 -1
- package/dist/select/select-row.d.ts.map +1 -1
- package/dist/select/select-row.js +1 -1
- package/dist/select/select-row.js.map +1 -1
- package/dist/select/select-separator.d.ts +1 -1
- package/dist/select/select-separator.d.ts.map +1 -1
- package/dist/select/select.d.ts +2 -2
- package/dist/select/select.d.ts.map +1 -1
- package/dist/select/select.js +1 -1
- package/dist/select/select.js.map +1 -1
- package/dist/separator/separator.d.ts +1 -1
- package/dist/{separator--ozQfMcK.d.ts → separator-BnvSVwBa.d.ts} +2 -2
- package/dist/{separator--ozQfMcK.d.ts.map → separator-BnvSVwBa.d.ts.map} +1 -1
- package/dist/tab/tab-list.d.ts +2 -2
- package/dist/tab/tab-list.d.ts.map +1 -1
- package/dist/tab/tab-list.js +1 -1
- package/dist/tab/tab-list.js.map +1 -1
- package/dist/tab/tab-panel.d.ts +3 -3
- package/dist/tab/tab-panel.d.ts.map +1 -1
- package/dist/tab/tab-panel.js +2 -3
- package/dist/tab/tab-panel.js.map +1 -1
- package/dist/tab/tab.d.ts +2 -2
- package/dist/tab/tab.d.ts.map +1 -1
- package/dist/tab/tab.js +1 -1
- package/dist/tab/tab.js.map +1 -1
- package/dist/tag/tag-input.d.ts +2 -2
- package/dist/tag/tag-input.d.ts.map +1 -1
- package/dist/tag/tag-input.js +1 -2
- package/dist/tag/tag-input.js.map +1 -1
- package/dist/tag/tag-list-label.d.ts +2 -2
- package/dist/tag/tag-list-label.d.ts.map +1 -1
- package/dist/tag/tag-list-label.js +1 -1
- package/dist/tag/tag-list-label.js.map +1 -1
- package/dist/tag/tag-list.d.ts +2 -2
- package/dist/tag/tag-list.d.ts.map +1 -1
- package/dist/tag/tag-list.js +1 -1
- package/dist/tag/tag-list.js.map +1 -1
- package/dist/tag/tag-remove.d.ts +1 -1
- package/dist/tag/tag-remove.d.ts.map +1 -1
- package/dist/tag/tag-remove.js +1 -2
- package/dist/tag/tag-remove.js.map +1 -1
- package/dist/tag/tag-value.js +1 -1
- package/dist/tag/tag-value.js.map +1 -1
- package/dist/tag/tag-values.js +1 -1
- package/dist/tag/tag-values.js.map +1 -1
- package/dist/tag/tag.d.ts +2 -2
- package/dist/tag/tag.d.ts.map +1 -1
- package/dist/tag/tag.js +1 -1
- package/dist/tag/tag.js.map +1 -1
- package/dist/toolbar/toolbar-container.d.ts +1 -1
- package/dist/toolbar/toolbar-container.d.ts.map +1 -1
- package/dist/toolbar/toolbar-input.d.ts +1 -1
- package/dist/toolbar/toolbar-input.d.ts.map +1 -1
- package/dist/toolbar/toolbar-item.d.ts +2 -2
- package/dist/toolbar/toolbar-item.d.ts.map +1 -1
- package/dist/toolbar/toolbar-separator.d.ts +1 -1
- package/dist/toolbar/toolbar-separator.d.ts.map +1 -1
- package/dist/toolbar/toolbar.d.ts +2 -2
- package/dist/toolbar/toolbar.d.ts.map +1 -1
- package/dist/tooltip/tooltip-anchor.d.ts +1 -1
- package/dist/tooltip/tooltip-anchor.d.ts.map +1 -1
- package/dist/tooltip/tooltip-anchor.js +15 -4
- package/dist/tooltip/tooltip-anchor.js.map +1 -1
- package/dist/tooltip/tooltip-arrow.d.ts +1 -1
- package/dist/tooltip/tooltip-arrow.d.ts.map +1 -1
- package/dist/tooltip/tooltip-arrow.js +1 -1
- package/dist/tooltip/tooltip-arrow.js.map +1 -1
- package/dist/tooltip/tooltip.js +1 -1
- package/dist/tooltip/tooltip.js.map +1 -1
- package/dist/visually-hidden/visually-hidden.d.ts +1 -1
- package/dist/visually-hidden/visually-hidden.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/collection/collection-item-offscreen.tsx +1 -1
- package/src/combobox/combobox.tsx +47 -1
- package/src/composite/composite-container.tsx +2 -2
- package/src/composite/composite-hover.tsx +8 -14
- package/src/composite/composite-item-offscreen.tsx +2 -2
- package/src/composite/composite-item.tsx +2 -2
- package/src/composite/composite-renderer.tsx +2 -2
- package/src/composite/composite-row.tsx +2 -2
- package/src/composite/composite-separator.tsx +2 -2
- package/src/composite/composite-typeahead.tsx +2 -2
- package/src/composite/composite.tsx +3 -3
- package/src/dialog/dialog.tsx +33 -10
- package/src/dialog/utils/disable-accessibility-tree-outside.ts +0 -25
- package/src/dialog/utils/use-hide-on-interact-outside.ts +3 -2
- package/src/focusable/focusable.tsx +53 -10
- package/src/form/form-remove.tsx +14 -10
- package/src/form/form.tsx +3 -1
- package/src/heading/heading.tsx +2 -5
- package/src/hovercard/hovercard-disclosure.tsx +18 -4
- package/src/hovercard/hovercard.tsx +1 -1
- package/src/menu/menu-bar-store.ts +2 -2
- package/src/menu/menu-context.tsx +8 -0
- package/src/menu/menu-item.tsx +18 -1
- package/src/menu/menu-list.tsx +15 -0
- package/src/menubar/menubar-context.tsx +0 -5
- package/src/menubar/menubar-store.ts +2 -2
- package/src/popover/popover-arrow.tsx +3 -3
- package/src/popover/popover.tsx +8 -0
- package/src/tab/tab-panel.tsx +1 -1
- package/src/tag/tag-input.tsx +0 -1
- package/src/tag/tag-remove.tsx +0 -1
- package/src/tooltip/tooltip-anchor.tsx +23 -8
- package/dist/collection-renderer-DsPD9ksD.d.ts.map +0 -1
- package/dist/popover-CCqiRKqg.d.ts.map +0 -1
- package/src/hovercard/utils/__tests__/polygon-test.ts +0 -66
package/dist/tag/tag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag.js","names":[],"sources":["../../src/tag/tag.tsx"],"sourcesContent":["import {\n useBooleanEvent,\n useEvent,\n useId,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant, isApple } from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type { ElementType, KeyboardEvent } from \"react\";\nimport { useCallback, useState } from \"react\";\nimport type { CompositeItemOptions } from \"../composite/composite-item.tsx\";\nimport { useCompositeItem } from \"../composite/composite-item.tsx\";\nimport {\n TagRemoveIdContext,\n TagValueContext,\n useTagContext,\n} from \"./tag-context.tsx\";\nimport type { TagStore } from \"./tag-store.ts\";\nimport { useTouchDevice } from \"./utils.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n/**\n * Returns props to create a `Tag` component.\n * @see https://ariakit.com/components/tag\n * @example\n * ```jsx\n * const props = useTag();\n * <Role.div {...props} />\n * ```\n */\nexport const useTag = createHook<TagName, TagOptions>(function useTag({\n store,\n value,\n getItem: getItemProp,\n removeOnKeyPress = true,\n ...props\n}) {\n const context = useTagContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Tag must be wrapped in a TagList component.\",\n );\n\n const id = useId(props.id);\n const touchDevice = useTouchDevice();\n\n const getItem = useCallback<NonNullable<CompositeItemOptions[\"getItem\"]>>(\n (item) => {\n const nextItem = { ...item, value };\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [value, getItemProp],\n );\n\n const onKeyDownProp = props.onKeyDown;\n const removeOnKeyPressProp = useBooleanEvent(removeOnKeyPress);\n\n const onKeyDown = useEvent((event: KeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n if (event.defaultPrevented) return;\n const { inputElement } = store.getState();\n\n const isBackspace = event.key === \"Backspace\";\n const isRemoveKey = isBackspace || event.key === \"Delete\";\n\n if (isRemoveKey && removeOnKeyPressProp(event)) {\n event.preventDefault();\n store.removeValue(value);\n const nextId = isBackspace\n ? store.previous() || store.next()\n : store.next();\n store.move(nextId);\n }\n\n const isPrintableKey =\n !event.ctrlKey && !event.metaKey && event.key.length === 1;\n\n // If it's cmd/ctrl+v, focus on the input element so the value is pasted\n // there.\n const pc = !isApple();\n const v = event.key === \"v\" || event.key === \"V\";\n const mod = pc ? event.ctrlKey : event.metaKey;\n const isPaste = mod && v;\n\n if (isPrintableKey || isPaste) {\n inputElement?.focus();\n }\n });\n\n const [removeId, setRemoveId] = useState<string>();\n\n props = useWrapElement(\n props,\n (element) => (\n <TagValueContext.Provider value={value}>\n <TagRemoveIdContext.Provider value={setRemoveId}>\n {element}\n </TagRemoveIdContext.Provider>\n </TagValueContext.Provider>\n ),\n [value],\n );\n\n props = {\n role: !touchDevice ? \"option\" : \"listitem\",\n children: value,\n \"aria-describedby\": removeId,\n ...props,\n id,\n onKeyDown,\n };\n\n props = useCompositeItem<TagName>({\n store,\n ...props,\n getItem,\n });\n\n return props;\n});\n\n/**\n * Renders a tag element inside a\n * [`TagList`](https://ariakit.com/reference/tag-list) wrapper.\n *\n * The user can remove the tag by pressing `Backspace` or `Delete` keys when the\n * tag is focused. The\n * [`removeOnKeyPress`](https://ariakit.com/reference/tag#removeonkeypress) prop\n * can be used to disable this behavior.\n *\n * When a printable key is pressed, the focus is automatically moved to the\n * input element.\n * @see https://ariakit.com/components/tag\n * @example\n * ```jsx {7-10}\n * <TagProvider>\n * <TagListLabel>Invitees</TagListLabel>\n * <TagList>\n * <TagValues>\n * {(values) =>\n * values.map((value) => (\n * <Tag key={value} value={value}>\n * {value}\n * <TagRemove />\n * </Tag>\n * ))\n * }\n * </TagValues>\n * <TagInput />\n * </TagList>\n * </TagProvider>\n * ```\n */\nexport const Tag = memo(\n forwardRef(function Tag(props: TagProps) {\n const htmlProps = useTag(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface TagOptions<\n T extends ElementType = TagName,\n> extends CompositeItemOptions<T> {\n /**\n * Object returned by the\n * [`useTagStore`](https://ariakit.com/reference/use-tag-store) hook. If not\n * provided, the closest [`TagList`](https://ariakit.com/reference/tag-list)\n * component's context will be used.\n */\n store?: TagStore;\n /**\n * The unique value of the tag. This is automatically rendered as the tag's\n * content if no children are provided.\n */\n value: string;\n /**\n * Defines the behavior of the `Backspace` and `Delete` keys when the tag is\n * focused. If `true`, the tag is removed. If it's a function, it's invoked\n * with the key event and should return a boolean.\n * @default true\n */\n removeOnKeyPress?: BooleanOrCallback<KeyboardEvent<HTMLType>>;\n}\n\nexport type TagProps<T extends ElementType = TagName> = Props<T, TagOptions<T>>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;MA6CE,SAAM,WAAU,SAAc,OAAA,EAAA,OAAA,OAAA,SAAA,aAAA,mBAAA,MAAA,GAAA,SAAA;CAC9B,MAAA,UAAQ,cAAS;CAEjB,QAAA,
|
|
1
|
+
{"version":3,"file":"tag.js","names":[],"sources":["../../src/tag/tag.tsx"],"sourcesContent":["import {\n useBooleanEvent,\n useEvent,\n useId,\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n memo,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant, isApple } from \"@ariakit/utils\";\nimport type { BooleanOrCallback } from \"@ariakit/utils\";\nimport type { ElementType, KeyboardEvent } from \"react\";\nimport { useCallback, useState } from \"react\";\nimport type { CompositeItemOptions } from \"../composite/composite-item.tsx\";\nimport { useCompositeItem } from \"../composite/composite-item.tsx\";\nimport {\n TagRemoveIdContext,\n TagValueContext,\n useTagContext,\n} from \"./tag-context.tsx\";\nimport type { TagStore } from \"./tag-store.ts\";\nimport { useTouchDevice } from \"./utils.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n/**\n * Returns props to create a `Tag` component.\n * @see https://ariakit.com/components/tag\n * @example\n * ```jsx\n * const props = useTag();\n * <Role.div {...props} />\n * ```\n */\nexport const useTag = createHook<TagName, TagOptions>(function useTag({\n store,\n value,\n getItem: getItemProp,\n removeOnKeyPress = true,\n ...props\n}) {\n const context = useTagContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Tag must be wrapped in a TagList component.\",\n );\n\n const id = useId(props.id);\n const touchDevice = useTouchDevice();\n\n const getItem = useCallback<NonNullable<CompositeItemOptions[\"getItem\"]>>(\n (item) => {\n const nextItem = { ...item, value };\n if (getItemProp) {\n return getItemProp(nextItem);\n }\n return nextItem;\n },\n [value, getItemProp],\n );\n\n const onKeyDownProp = props.onKeyDown;\n const removeOnKeyPressProp = useBooleanEvent(removeOnKeyPress);\n\n const onKeyDown = useEvent((event: KeyboardEvent<HTMLType>) => {\n onKeyDownProp?.(event);\n if (event.defaultPrevented) return;\n const { inputElement } = store.getState();\n\n const isBackspace = event.key === \"Backspace\";\n const isRemoveKey = isBackspace || event.key === \"Delete\";\n\n if (isRemoveKey && removeOnKeyPressProp(event)) {\n event.preventDefault();\n store.removeValue(value);\n const nextId = isBackspace\n ? store.previous() || store.next()\n : store.next();\n store.move(nextId);\n }\n\n const isPrintableKey =\n !event.ctrlKey && !event.metaKey && event.key.length === 1;\n\n // If it's cmd/ctrl+v, focus on the input element so the value is pasted\n // there.\n const pc = !isApple();\n const v = event.key === \"v\" || event.key === \"V\";\n const mod = pc ? event.ctrlKey : event.metaKey;\n const isPaste = mod && v;\n\n if (isPrintableKey || isPaste) {\n inputElement?.focus();\n }\n });\n\n const [removeId, setRemoveId] = useState<string>();\n\n props = useWrapElement(\n props,\n (element) => (\n <TagValueContext.Provider value={value}>\n <TagRemoveIdContext.Provider value={setRemoveId}>\n {element}\n </TagRemoveIdContext.Provider>\n </TagValueContext.Provider>\n ),\n [value],\n );\n\n props = {\n role: !touchDevice ? \"option\" : \"listitem\",\n children: value,\n \"aria-describedby\": removeId,\n ...props,\n id,\n onKeyDown,\n };\n\n props = useCompositeItem<TagName>({\n store,\n ...props,\n getItem,\n });\n\n return props;\n});\n\n/**\n * Renders a tag element inside a\n * [`TagList`](https://ariakit.com/reference/tag-list) wrapper.\n *\n * The user can remove the tag by pressing `Backspace` or `Delete` keys when the\n * tag is focused. The\n * [`removeOnKeyPress`](https://ariakit.com/reference/tag#removeonkeypress) prop\n * can be used to disable this behavior.\n *\n * When a printable key is pressed, the focus is automatically moved to the\n * input element.\n * @see https://ariakit.com/components/tag\n * @example\n * ```jsx {7-10}\n * <TagProvider>\n * <TagListLabel>Invitees</TagListLabel>\n * <TagList>\n * <TagValues>\n * {(values) =>\n * values.map((value) => (\n * <Tag key={value} value={value}>\n * {value}\n * <TagRemove />\n * </Tag>\n * ))\n * }\n * </TagValues>\n * <TagInput />\n * </TagList>\n * </TagProvider>\n * ```\n */\nexport const Tag = memo(\n forwardRef(function Tag(props: TagProps) {\n const htmlProps = useTag(props);\n return createElement(TagName, htmlProps);\n }),\n);\n\nexport interface TagOptions<\n T extends ElementType = TagName,\n> extends CompositeItemOptions<T> {\n /**\n * Object returned by the\n * [`useTagStore`](https://ariakit.com/reference/use-tag-store) hook. If not\n * provided, the closest [`TagList`](https://ariakit.com/reference/tag-list)\n * component's context will be used.\n */\n store?: TagStore;\n /**\n * The unique value of the tag. This is automatically rendered as the tag's\n * content if no children are provided.\n */\n value: string;\n /**\n * Defines the behavior of the `Backspace` and `Delete` keys when the tag is\n * focused. If `true`, the tag is removed. If it's a function, it's invoked\n * with the key event and should return a boolean.\n * @default true\n */\n removeOnKeyPress?: BooleanOrCallback<KeyboardEvent<HTMLType>>;\n}\n\nexport type TagProps<T extends ElementType = TagName> = Props<T, TagOptions<T>>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;MA6CE,SAAM,WAAU,SAAc,OAAA,EAAA,OAAA,OAAA,SAAA,aAAA,mBAAA,MAAA,GAAA,SAAA;CAC9B,MAAA,UAAQ,cAAS;CAEjB,QAAA,SAEE;CAIF,UAAM,OAAW,QAAQ,IAAA,aAAA,gBAAA,6CAAA;CACzB,MAAM,KAAA,MAAA,MAAc,EAAA;CAEpB,MAAM,cAAU,eACb;OACC,UAAM,aAAW,SAAA;QAAK,WAAA;GAAM,GAAA;GAAM;EAClC;EAGA,IAAA,aAAO,OAAA,YAAA,QAAA;EACT,OACC;CAGH,GAAA,CAAA,OAAM,WAAgB,CAAA;CACtB,MAAM,gBAAA,MAAA;CAEN,MAAM,uBAAsB,gBAAmC,gBAAA;OAC7D,YAAgB,UAAK,UAAA;EACrB,gBAAU,KAAA;EACV,IAAA,MAAQ,kBAAiB;EAEzB,MAAM,EAAA,iBAAc,MAAM,SAAQ;EAGlC,MAFoB,cAAe,MAAM,QAAQ;OAG/C,eAAM,MAAe,QAAA,aAAA,qBAAA,KAAA,GAAA;GACrB,MAAM,eAAY;GAClB,MAAM,YAAS,KAAA;GAGf,MAAM,SAAK,cAAM,MAAA,SAAA,KAAA,MAAA,KAAA,IAAA,MAAA,KAAA;GACnB,MAAA,KAAA,MAAA;EAEA;EAKA,MAAM,iBAAc,CAAA,MAAA,WAAA,CAAA,MAAA,WAAA,MAAA,IAAA,WAAA;EACpB,MAAM,KAAI,CAAA,QAAM;EAEhB,MAAM,IAAA,MAAA,QADW,OAAM,MAAA,QAAgB;EAGvC,MAAI,WAAA,KAAkB,MAAA,UACpB,MAAA,YAAoB;EAEvB,IAAA,kBAAA,SAAA,cAAA,MAAA;CAED,CAAA;CAEA,MAAA,CAAA,UAAQ,eAEL,SAAA;SACkC,eAAA,QAAA,YAAA,oBAAA,gBAAA,UAAA;;YACK,oBAAA,mBAAA,UAAA;;GAEP,UAAA;EACL,CAAA;CAK9B,CAAA,GAAA,CAAA,KAAQ,CAAA;SACC;EACP,MAAA,CAAA,cAAU,WAAA;EACV,UAAA;EACA,oBAAG;EACH,GAAA;EACA;EACF;CAEA;SACE,iBAAA;EACA;EACA,GAAA;EACD;CAED,CAAA;CACD,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqCG,MAAO,KAAA,WAAc,SADH,IAAO,OACc;CACxC,OACH,cAAA,SAAA,OAAA,KAAA,CAAA"}
|
|
@@ -33,7 +33,7 @@ declare const useToolbarContainer: import("@ariakit/react-utils").Hook<"div", To
|
|
|
33
33
|
* </Toolbar>
|
|
34
34
|
* ```
|
|
35
35
|
*/
|
|
36
|
-
declare const ToolbarContainer: (props: ToolbarContainerProps) => import("react").ReactElement<
|
|
36
|
+
declare const ToolbarContainer: (props: ToolbarContainerProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
37
37
|
interface ToolbarContainerOptions<T extends ElementType = TagName> extends ToolbarItemOptions<T>, Omit<CompositeContainerOptions<T>, "store"> {}
|
|
38
38
|
type ToolbarContainerProps<T extends ElementType = TagName> = Props<T, ToolbarContainerOptions<T>>;
|
|
39
39
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-container.d.ts","names":["Props","ElementType","CompositeContainerOptions","ToolbarItemOptions","TagName","useToolbarContainer","ToolbarContainerOptions","Hook","ToolbarContainer","ToolbarContainerProps","props","ReactElement","JSXElementConstructor","T","Omit"],"sources":["../../src/toolbar/toolbar-container.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAe7B;;;;AAjB6D,cAiBxCC,mBAAAA,iCAAoDE,IAAAA,QAAYD,uBAAuB;AAa5G;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"toolbar-container.d.ts","names":["Props","ElementType","CompositeContainerOptions","ToolbarItemOptions","TagName","useToolbarContainer","ToolbarContainerOptions","Hook","ToolbarContainer","ToolbarContainerProps","props","ReactElement","JSXElementConstructor","T","Omit"],"sources":["../../src/toolbar/toolbar-container.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAe7B;;;;AAjB6D,cAiBxCC,mBAAAA,iCAAoDE,IAAAA,QAAYD,uBAAuB;AAa5G;;;;;;;;;AAA6J;AAC7J;;AADA,cAAqBE,gBAAAA,GAAmBE,KAAAA,EAAOD,qBAAqB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACvHN,uBAAAA,WAAkCL,WAAAA,GAAcG,OAAAA,UAAiBD,kBAAAA,CAAmBU,CAAAA,GAAIC,IAAAA,CAAKZ,yBAAAA,CAA0BW,CAAAA;AAAAA,KAE5HJ,qBAAAA,WAAgCR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,uBAAAA,CAAwBO,CAAAA"}
|
|
@@ -31,7 +31,7 @@ declare const useToolbarInput: import("@ariakit/react-utils").Hook<"input", Tool
|
|
|
31
31
|
* </Toolbar>
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
|
-
declare const ToolbarInput: (props: ToolbarInputProps) => import("react").ReactElement<
|
|
34
|
+
declare const ToolbarInput: (props: ToolbarInputProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
35
35
|
interface ToolbarInputOptions<T extends ElementType = TagName> extends ToolbarItemOptions<T> {}
|
|
36
36
|
type ToolbarInputProps<T extends ElementType = TagName> = Props<T, ToolbarInputOptions<T>>;
|
|
37
37
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-input.d.ts","names":["Props","ElementType","ToolbarItemOptions","TagName","useToolbarInput","ToolbarInputOptions","Hook","ToolbarInput","ToolbarInputProps","props","ReactElement","JSXElementConstructor","T"],"sources":["../../src/toolbar/toolbar-input.d.ts"],"mappings":";;;;;cAGcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAc7B;;;AAhB6D,cAgBxCC,eAAAA,iCAAgDE,IAAAA,UAAcD,mBAAmB;AAAA;AAatG;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"toolbar-input.d.ts","names":["Props","ElementType","ToolbarItemOptions","TagName","useToolbarInput","ToolbarInputOptions","Hook","ToolbarInput","ToolbarInputProps","props","ReactElement","JSXElementConstructor","T"],"sources":["../../src/toolbar/toolbar-input.d.ts"],"mappings":";;;;;cAGcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFgC;;;;AACxC;AAAA;;;;AACQ;AAc7B;;;AAhB6D,cAgBxCC,eAAAA,iCAAgDE,IAAAA,UAAcD,mBAAmB;AAAA;AAatG;;;;;;;;;AAAqJ;AACrJ;AAdsG,cAajFE,YAAAA,GAAeE,KAAAA,EAAOD,iBAAiB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC/GN,mBAAAA,WAA8BJ,WAAAA,GAAcE,OAAAA,UAAiBD,kBAAAA,CAAmBU,CAAAA;AAAAA,KAErFJ,iBAAAA,WAA4BP,WAAAA,GAAcE,OAAAA,IAAWH,KAAAA,CAAMY,CAAAA,EAAGP,mBAAAA,CAAoBO,CAAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as CompositeItemOptions } from "../composite-item-
|
|
1
|
+
import { n as CompositeItemOptions } from "../composite-item-d4UXaZ84.js";
|
|
2
2
|
import { t as ToolbarStore } from "../toolbar-store-Cs-9cGHx.js";
|
|
3
3
|
import { Props } from "@ariakit/react-utils";
|
|
4
4
|
import { ElementType } from "react";
|
|
@@ -30,7 +30,7 @@ declare const useToolbarItem: import("@ariakit/react-utils").Hook<"button", Tool
|
|
|
30
30
|
* </Toolbar>
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
declare const ToolbarItem: (props: ToolbarItemProps) => import("react").ReactElement<
|
|
33
|
+
declare const ToolbarItem: (props: ToolbarItemProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
34
34
|
interface ToolbarItemOptions<T extends ElementType = TagName> extends CompositeItemOptions<T> {
|
|
35
35
|
/**
|
|
36
36
|
* Object returned by the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-item.d.ts","names":["Props","ElementType","CompositeItemOptions","ToolbarStore","TagName","useToolbarItem","ToolbarItemOptions","Hook","ToolbarItem","ToolbarItemProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/toolbar/toolbar-item.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAa7B;;AAfuD,cAelCC,cAAAA,iCAA+CE,IAAAA,WAAeD,kBAAkB;;AAAA;AAYrG;;;;;;;;;cAAqBE,WAAAA,GAAcE,KAAAA,EAAOD,gBAAgB,qBAAqBE,YAAAA
|
|
1
|
+
{"version":3,"file":"toolbar-item.d.ts","names":["Props","ElementType","CompositeItemOptions","ToolbarStore","TagName","useToolbarItem","ToolbarItemOptions","Hook","ToolbarItem","ToolbarItemProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/toolbar/toolbar-item.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAa7B;;AAfuD,cAelCC,cAAAA,iCAA+CE,IAAAA,WAAeD,kBAAkB;;AAAA;AAYrG;;;;;;;;;cAAqBE,WAAAA,GAAcE,KAAAA,EAAOD,gBAAgB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC7GN,kBAAAA,WAA6BL,WAAAA,GAAcG,OAAAA,UAAiBF,oBAAAA,CAAqBW,CAAAA;EAA/D;;;;;;;EAQ/BC,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,gBAAAA,WAA2BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,kBAAAA,CAAmBO,CAAAA"}
|
|
@@ -34,7 +34,7 @@ declare const useToolbarSeparator: import("@ariakit/react-utils").Hook<"hr", Too
|
|
|
34
34
|
* </Toolbar>
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
|
-
declare const ToolbarSeparator: (props: ToolbarSeparatorProps) => import("react").ReactElement<
|
|
37
|
+
declare const ToolbarSeparator: (props: ToolbarSeparatorProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
38
38
|
interface ToolbarSeparatorOptions<T extends ElementType = TagName> extends CompositeSeparatorOptions<T> {
|
|
39
39
|
/**
|
|
40
40
|
* Object returned by the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-separator.d.ts","names":["Props","ElementType","CompositeSeparatorOptions","ToolbarStore","TagName","useToolbarSeparator","ToolbarSeparatorOptions","Hook","ToolbarSeparator","ToolbarSeparatorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/toolbar/toolbar-separator.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAe7B;;;;AAjBuD,cAiBlCC,mBAAAA,iCAAoDE,IAAAA,OAAWD,uBAAuB;AAc3G;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"toolbar-separator.d.ts","names":["Props","ElementType","CompositeSeparatorOptions","ToolbarStore","TagName","useToolbarSeparator","ToolbarSeparatorOptions","Hook","ToolbarSeparator","ToolbarSeparatorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/toolbar/toolbar-separator.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAe7B;;;;AAjBuD,cAiBlCC,mBAAAA,iCAAoDE,IAAAA,OAAWD,uBAAuB;AAc3G;;;;;;;;;AAA6J;AAC7J;;;AADA,cAAqBE,gBAAAA,GAAmBE,KAAAA,EAAOD,qBAAqB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACvHN,uBAAAA,WAAkCL,WAAAA,GAAcG,OAAAA,UAAiBF,yBAAAA,CAA0BW,CAAAA;EAAAA;;;;;;;EAQxGC,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,qBAAAA,WAAgCR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,uBAAAA,CAAwBO,CAAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as CompositeOptions } from "../composite-
|
|
1
|
+
import { n as CompositeOptions } from "../composite-KBhCGLEy.js";
|
|
2
2
|
import { i as ToolbarStoreProps, t as ToolbarStore } from "../toolbar-store-Cs-9cGHx.js";
|
|
3
3
|
import { Props } from "@ariakit/react-utils";
|
|
4
4
|
import { ElementType } from "react";
|
|
@@ -31,7 +31,7 @@ declare const useToolbar: import("@ariakit/react-utils").Hook<"div", ToolbarOpti
|
|
|
31
31
|
* </Toolbar>
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
|
-
declare const Toolbar: (props: ToolbarProps) => import("react").ReactElement<
|
|
34
|
+
declare const Toolbar: (props: ToolbarProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
35
35
|
interface ToolbarOptions<T extends ElementType = TagName> extends CompositeOptions<T>, Pick<ToolbarStoreProps, "focusLoop" | "orientation" | "rtl" | "virtualFocus"> {
|
|
36
36
|
/**
|
|
37
37
|
* Object returned by the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar.d.ts","names":["Props","ElementType","CompositeOptions","ToolbarStore","ToolbarStoreProps","TagName","useToolbar","ToolbarOptions","Hook","Toolbar","ToolbarProps","props","ReactElement","JSXElementConstructor","T","Pick","store"],"sources":["../../src/toolbar/toolbar.d.ts"],"mappings":";;;;;;cAIcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF6C;;;;AACrD;AAAA;;;;AACQ;AAc7B;;;AAhB0E,cAgBrDC,UAAAA,iCAA2CE,IAAAA,QAAYD,cAAc;AAAA;AAY1F;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"toolbar.d.ts","names":["Props","ElementType","CompositeOptions","ToolbarStore","ToolbarStoreProps","TagName","useToolbar","ToolbarOptions","Hook","Toolbar","ToolbarProps","props","ReactElement","JSXElementConstructor","T","Pick","store"],"sources":["../../src/toolbar/toolbar.d.ts"],"mappings":";;;;;;cAIcK,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF6C;;;;AACrD;AAAA;;;;AACQ;AAc7B;;;AAhB0E,cAgBrDC,UAAAA,iCAA2CE,IAAAA,QAAYD,cAAc;AAAA;AAY1F;;;;;;;;;AAA2I;AAZjD,cAYrEE,OAAAA,GAAUE,KAAAA,EAAOD,YAAY,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACrGN,cAAAA,WAAyBN,WAAAA,GAAcI,OAAAA,UAAiBH,gBAAAA,CAAiBY,CAAAA,GAAIC,IAAAA,CAAKX,iBAAAA;EAApEU;;;;;;;;;EAU3BE,KAAAA,GAAQb,YAAAA;AAAAA;AAAAA,KAEAO,YAAAA,WAAuBT,WAAAA,GAAcI,OAAAA,IAAWL,KAAAA,CAAMc,CAAAA,EAAGP,cAAAA,CAAeO,CAAAA"}
|
|
@@ -36,7 +36,7 @@ declare const useTooltipAnchor: import("@ariakit/react-utils").Hook<"div", Toolt
|
|
|
36
36
|
* </TooltipProvider>
|
|
37
37
|
* ```
|
|
38
38
|
*/
|
|
39
|
-
declare const TooltipAnchor: (props: TooltipAnchorProps) => import("react").ReactElement<
|
|
39
|
+
declare const TooltipAnchor: (props: TooltipAnchorProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
40
40
|
interface TooltipAnchorOptions<T extends ElementType = TagName> extends HovercardAnchorOptions<T> {
|
|
41
41
|
/**
|
|
42
42
|
* Object returned by the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-anchor.d.ts","names":["Props","ElementType","HovercardAnchorOptions","TooltipStore","TagName","useTooltipAnchor","TooltipAnchorOptions","Hook","TooltipAnchor","TooltipAnchorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tooltip/tooltip-anchor.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAY7B;AAduD,cAclCC,gBAAAA,iCAAiDE,IAAAA,QAAYD,oBAAoB;;;AAAA;AAmBtG;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"tooltip-anchor.d.ts","names":["Props","ElementType","HovercardAnchorOptions","TooltipStore","TagName","useTooltipAnchor","TooltipAnchorOptions","Hook","TooltipAnchor","TooltipAnchorProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tooltip/tooltip-anchor.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAY7B;AAduD,cAclCC,gBAAAA,iCAAiDE,IAAAA,QAAYD,oBAAoB;;;AAAA;AAmBtG;;;;;;;;;AAAuJ;AACvJ;;;;;cADqBE,aAAAA,GAAgBE,KAAAA,EAAOD,kBAAkB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACjHN,oBAAAA,WAA+BL,WAAAA,GAAcG,OAAAA,UAAiBF,sBAAAA,CAAuBW,CAAAA;EAAvBX;;;;;;;EAQ3EY,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,kBAAAA,WAA6BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,oBAAAA,CAAqBO,CAAAA"}
|
|
@@ -9,6 +9,7 @@ import { createStore, sync } from "@ariakit/store";
|
|
|
9
9
|
//#region src/tooltip/tooltip-anchor.tsx
|
|
10
10
|
const TagName = "div";
|
|
11
11
|
const globalStore = createStore({ activeStore: null });
|
|
12
|
+
const hidingStores = /* @__PURE__ */ new WeakSet();
|
|
12
13
|
function createRemoveStoreCallback(store) {
|
|
13
14
|
return () => {
|
|
14
15
|
const { activeStore } = globalStore.getState();
|
|
@@ -16,6 +17,12 @@ function createRemoveStoreCallback(store) {
|
|
|
16
17
|
globalStore.setState("activeStore", null);
|
|
17
18
|
};
|
|
18
19
|
}
|
|
20
|
+
function hideStore(store) {
|
|
21
|
+
if (!store) return;
|
|
22
|
+
hidingStores.add(store);
|
|
23
|
+
store.hide();
|
|
24
|
+
queueMicrotask(() => hidingStores.delete(store));
|
|
25
|
+
}
|
|
19
26
|
/**
|
|
20
27
|
* Returns props to create a `TooltipAnchor` component.
|
|
21
28
|
* @see https://ariakit.com/components/tooltip
|
|
@@ -30,7 +37,7 @@ function createRemoveStoreCallback(store) {
|
|
|
30
37
|
const useTooltipAnchor = createHook(function useTooltipAnchor({ store, showOnHover = true, ...props }) {
|
|
31
38
|
const context = useTooltipProviderContext();
|
|
32
39
|
store = store || context;
|
|
33
|
-
invariant(store, "TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.");
|
|
40
|
+
invariant(store, process.env.NODE_ENV !== "production" && "TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.");
|
|
34
41
|
const canShowOnHoverRef = useRef(false);
|
|
35
42
|
useEffect(() => {
|
|
36
43
|
return sync(store, ["mounted"], (state) => {
|
|
@@ -40,14 +47,18 @@ const useTooltipAnchor = createHook(function useTooltipAnchor({ store, showOnHov
|
|
|
40
47
|
}, [store]);
|
|
41
48
|
useEffect(() => {
|
|
42
49
|
if (!store) return;
|
|
43
|
-
|
|
50
|
+
const removeStore = createRemoveStoreCallback(store);
|
|
51
|
+
return chain(removeStore, sync(store, ["mounted"], (state) => {
|
|
44
52
|
if (!store) return;
|
|
45
53
|
if (state.mounted) {
|
|
46
54
|
const { activeStore } = globalStore.getState();
|
|
47
|
-
if (activeStore !== store)
|
|
55
|
+
if (activeStore !== store) {
|
|
56
|
+
if (hidingStores.has(store)) return;
|
|
57
|
+
hideStore(activeStore);
|
|
58
|
+
}
|
|
48
59
|
return globalStore.setState("activeStore", store);
|
|
49
60
|
}
|
|
50
|
-
const id = setTimeout(
|
|
61
|
+
const id = setTimeout(removeStore, store.getState().skipTimeout);
|
|
51
62
|
return () => clearTimeout(id);
|
|
52
63
|
}));
|
|
53
64
|
}, [store]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-anchor.js","names":[],"sources":["../../src/tooltip/tooltip-anchor.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useEvent,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { createStore, sync } from \"@ariakit/store\";\nimport { chain, invariant, isFalsyBooleanCallback } from \"@ariakit/utils\";\nimport type { ElementType, FocusEvent, MouseEvent } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport type { HovercardAnchorOptions } from \"../hovercard/hovercard-anchor.tsx\";\nimport { useHovercardAnchor } from \"../hovercard/hovercard-anchor.tsx\";\nimport { useTooltipProviderContext } from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n// Create a global store to keep track of the active tooltip store so we can\n// show other tooltips without a delay when there's already an active tooltip.\nconst globalStore = createStore<{ activeStore: TooltipStore | null }>({\n activeStore: null,\n});\n\nfunction createRemoveStoreCallback(store: TooltipStore) {\n return () => {\n const { activeStore } = globalStore.getState();\n if (activeStore !== store) return;\n globalStore.setState(\"activeStore\", null);\n };\n}\n\n/**\n * Returns props to create a `TooltipAnchor` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltipAnchor({ store });\n * <Role {...props}>Anchor</Role>\n * <Tooltip store={store}>Tooltip</Tooltip>\n * ```\n */\nexport const useTooltipAnchor = createHook<TagName, TooltipAnchorOptions>(\n function useTooltipAnchor({ store, showOnHover = true, ...props }) {\n const context = useTooltipProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.\",\n );\n\n // Imagine the scenario: the user hovers over an anchor, which shows a\n // tooltip, then presses escape to close the tooltip. We don't want to show\n // the tooltip again while the anchor is still hovered. So we keep this flag\n // that's set to true on mouse enter.\n const canShowOnHoverRef = useRef(false);\n\n useEffect(() => {\n return sync(store, [\"mounted\"], (state) => {\n if (state.mounted) return;\n canShowOnHoverRef.current = false;\n });\n }, [store]);\n\n useEffect(() => {\n if (!store) return;\n return chain(\n // Immediately remove the current store from the global store when\n // the component unmounts. This is useful, for example, to avoid\n // showing tooltips immediately on serial tests.\n createRemoveStoreCallback(store),\n sync(store, [\"mounted\", \"skipTimeout\"], (state) => {\n if (!store) return;\n // If the current tooltip is open, we should immediately hide the\n // active one and set the current one as the active tooltip.\n if (state.mounted) {\n const { activeStore } = globalStore.getState();\n if (activeStore !== store) {\n activeStore?.hide();\n }\n return globalStore.setState(\"activeStore\", store);\n }\n // Otherwise, if the current tooltip is closed, we should set a\n // timeout to hide the active tooltip in the global store. This is so\n // we can show other tooltips without a delay when there's already an\n // active tooltip (see the showOnHover method below).\n const id = setTimeout(\n createRemoveStoreCallback(store),\n state.skipTimeout,\n );\n return () => clearTimeout(id);\n }),\n );\n }, [store]);\n\n const onMouseEnterProp = props.onMouseEnter;\n\n const onMouseEnter = useEvent((event: MouseEvent<HTMLType>) => {\n onMouseEnterProp?.(event);\n canShowOnHoverRef.current = true;\n });\n\n const onFocusVisibleProp = props.onFocusVisible;\n\n const onFocusVisible = useEvent((event: FocusEvent<HTMLType>) => {\n onFocusVisibleProp?.(event);\n if (event.defaultPrevented) return;\n store?.setAnchorElement(event.currentTarget);\n store?.show();\n });\n\n const onBlurProp = props.onBlur;\n\n const onBlur = useEvent((event: FocusEvent<HTMLType>) => {\n onBlurProp?.(event);\n if (event.defaultPrevented) return;\n const { activeStore } = globalStore.getState();\n // Sets canShowOnHover to false so moving the mouse over the anchor after\n // it loses focus (for example, clicking on a menu button) doesn't show\n // the tooltip until the mouse leaves and re-enters the anchor.\n canShowOnHoverRef.current = false;\n // If the current tooltip is the active tooltip and the anchor loses focus\n // (for example, if the anchor is a menu button, clicking on the menu\n // button will automatically focus on the menu), we don't want to show\n // subsequent tooltips without a delay. So we set the active tooltip to\n // null.\n if (activeStore === store) {\n globalStore.setState(\"activeStore\", null);\n }\n });\n\n const type = useStoreState(store, \"type\");\n const contentId = useStoreState(store, (state) => state.contentElement?.id);\n\n props = {\n \"aria-labelledby\":\n type === \"label\" && props[\"aria-label\"] == null ? contentId : undefined,\n ...props,\n onMouseEnter,\n onFocusVisible,\n onBlur,\n };\n\n props = useHovercardAnchor<TagName>({\n store,\n showOnHover(event) {\n if (!canShowOnHoverRef.current) return false;\n if (isFalsyBooleanCallback(showOnHover, event)) return false;\n const { activeStore } = globalStore.getState();\n if (!activeStore) return true;\n // Show the tooltip immediately if there's an active tooltip instead of\n // waiting for the showTimeout delay.\n store?.show();\n return false;\n },\n ...props,\n });\n\n return props;\n },\n);\n\n/**\n * Renders a reference element for a\n * [`Tooltip`](https://ariakit.com/reference/tooltip), which is triggered by\n * focusing or hovering over the anchor.\n *\n * The tooltip is strictly for visual purposes. It's your responsibility to\n * ensure the anchor element has an accessible name. See [Tooltip anchors must\n * have accessible\n * names](https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names)\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {2}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>Tooltip</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const TooltipAnchor = forwardRef(function TooltipAnchor(\n props: TooltipAnchorProps,\n) {\n const htmlProps = useTooltipAnchor(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TooltipAnchorOptions<\n T extends ElementType = TagName,\n> extends HovercardAnchorOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * component's context will be used.\n */\n store?: TooltipStore;\n}\n\nexport type TooltipAnchorProps<T extends ElementType = TagName> = Props<\n T,\n TooltipAnchorOptions<T>\n>;\n"],"mappings":";;;;;;;;;AAuBA,MAAM,UAAA;AAIN,MAAA,cAAS,YAAA,EAAA,aAA+C,KAAA,CAAA;SACtD,0BAAa,OAAA;cACH;EACR,MAAI,EAAA,gBAAgB,YAAO,SAAA;EAC3B,IAAA,gBAAY,OAAS;EACvB,YAAA,SAAA,eAAA,IAAA;CACF;;;;;;;;;;;;;MAeI,mBAAgB,WAAA,SAA0B,iBAAA,EAAA,OAAA,cAAA,MAAA,GAAA,SAAA;CAC1C,MAAA,UAAQ,0BAAS;CAEjB,QAAA,SAGI;CAOJ,UAAM,OAAA,yFAAgC;CAEtC,MAAA,oBAAgB,OAAA,KAAA;iBACF;SACN,KAAM,OAAA,CAAS,SAAA,IAAA,UAAA;GACnB,IAAA,MAAA,SAAkB;GACnB,kBAAA,UAAA;EACH,CAAA;CAEA,GAAA,CAAA,KAAA,CAAA;iBACc;EACZ,IAAA,CAAA,OAAO;SAME,MAAO,0BAAA,KAAA,GAAA,KAAA,OAAA,CAAA,WAAA,aAAA,IAAA,UAAA;GAGZ,IAAI,CAAA,OAAM;OACR,MAAQ,SAAA;IACR,MAAI,EAAA,gBAAgB,YAClB,SAAkB;IAEpB,IAAA,gBAAmB,OAAA,aAAS,KAAe;IAC7C,OAAA,YAAA,SAAA,eAAA,KAAA;GAKA;GAIA,MAAA,KAAA,WAAa,0BAAe,KAAA,GAAA,MAAA,WAAA;GAC7B,aACH,aAAA,EAAA;EACF,CAAA,CAAG;CAEH,GAAA,CAAA,KAAM,CAAA;CAEN,MAAM,mBAAe,MAAU;OAC7B,eAAmB,UAAK,UAAA;EACxB,mBAAkB,KAAA;EACnB,kBAAA,UAAA;CAED,CAAA;CAEA,MAAM,qBAAiB,MAAU;OAC/B,iBAAqB,UAAK,UAAA;EAC1B,qBAAU,KAAA;EACV,IAAA,MAAO,kBAAiB;EACxB,OAAO,iBAAK,MAAA,aAAA;EACb,OAAA,KAAA;CAED,CAAA;CAEA,MAAM,aAAS,MAAU;OACvB,SAAa,UAAK,UAAA;EAClB,aAAU,KAAA;EACV,IAAA,MAAQ,kBAAgB;EAIxB,MAAA,EAAA,gBAAkB,YAAU,SAAA;EAM5B,kBAAI,UACF;EAEH,IAAA,gBAAA,OAAA,YAAA,SAAA,eAAA,IAAA;CAED,CAAA;CACA,MAAM,OAAA,cAAY,OAAc,MAAQ;CAExC,MAAA,YAAQ,cAAA,QAAA,UAAA,MAAA,gBAAA,EAAA;SACN;EAEA,mBAAG,SAAA,WAAA,MAAA,iBAAA,OAAA,YAAA,KAAA;EACH,GAAA;EACA;EACA;EACF;CAEA;SACE,mBAAA;EACA;cACO,OAAA;GACL,IAAI,CAAA,kBAAA,SAAuB,OAAA;GAC3B,IAAA,uBAAwB,aAAY,KAAS,GAAA,OAAA;GAC7C,MAAK,EAAA,gBAAa,YAAO,SAAA;GAGzB,IAAA,CAAA,aAAY,OAAA;GACZ,OAAO,KAAA;GACT,OAAA;EACA;EACD,GAAA;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;MAwBE,gBAAqB,WADH,SAAA,cACqB,OAAA;CACxC,OAAA,cAAA,SAAA,iBAAA,KAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"tooltip-anchor.js","names":[],"sources":["../../src/tooltip/tooltip-anchor.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useEvent,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { createStore, sync } from \"@ariakit/store\";\nimport { chain, invariant, isFalsyBooleanCallback } from \"@ariakit/utils\";\nimport type { ElementType, FocusEvent, MouseEvent } from \"react\";\nimport { useEffect, useRef } from \"react\";\nimport type { HovercardAnchorOptions } from \"../hovercard/hovercard-anchor.tsx\";\nimport { useHovercardAnchor } from \"../hovercard/hovercard-anchor.tsx\";\nimport { useTooltipProviderContext } from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\ntype HTMLType = HTMLElementTagNameMap[TagName];\n\n// Create a global store to keep track of the active tooltip store so we can\n// show other tooltips without a delay when there's already an active tooltip.\nconst globalStore = createStore<{ activeStore: TooltipStore | null }>({\n activeStore: null,\n});\n\nconst hidingStores = new WeakSet<TooltipStore>();\n\nfunction createRemoveStoreCallback(store: TooltipStore) {\n return () => {\n const { activeStore } = globalStore.getState();\n if (activeStore !== store) return;\n globalStore.setState(\"activeStore\", null);\n };\n}\n\nfunction hideStore(store: TooltipStore | null) {\n if (!store) return;\n hidingStores.add(store);\n store.hide();\n // Cleanup runs after `hide()` so controlled `open` props still see this\n // store in `hidingStores` when their batch microtask forces them open again.\n queueMicrotask(() => hidingStores.delete(store));\n}\n\n/**\n * Returns props to create a `TooltipAnchor` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltipAnchor({ store });\n * <Role {...props}>Anchor</Role>\n * <Tooltip store={store}>Tooltip</Tooltip>\n * ```\n */\nexport const useTooltipAnchor = createHook<TagName, TooltipAnchorOptions>(\n function useTooltipAnchor({ store, showOnHover = true, ...props }) {\n const context = useTooltipProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TooltipAnchor must receive a `store` prop or be wrapped in a TooltipProvider component.\",\n );\n\n // Imagine the scenario: the user hovers over an anchor, which shows a\n // tooltip, then presses escape to close the tooltip. We don't want to show\n // the tooltip again while the anchor is still hovered. So we keep this flag\n // that's set to true on mouse enter.\n const canShowOnHoverRef = useRef(false);\n\n useEffect(() => {\n return sync(store, [\"mounted\"], (state) => {\n if (state.mounted) return;\n canShowOnHoverRef.current = false;\n });\n }, [store]);\n\n useEffect(() => {\n if (!store) return;\n const removeStore = createRemoveStoreCallback(store);\n return chain(\n // Immediately remove the current store from the global store when\n // the component unmounts. This is useful, for example, to avoid\n // showing tooltips immediately on serial tests.\n removeStore,\n sync(store, [\"mounted\"], (state) => {\n if (!store) return;\n // If the current tooltip is open, we should immediately hide the\n // active one and set the current one as the active tooltip. If a\n // tooltip we just hid gets forced open again, we leave the current\n // active store in place to avoid a re-entrant loop between forced\n // open tooltips.\n if (state.mounted) {\n const { activeStore } = globalStore.getState();\n if (activeStore !== store) {\n if (hidingStores.has(store)) return;\n hideStore(activeStore);\n }\n return globalStore.setState(\"activeStore\", store);\n }\n // Otherwise, if the current tooltip is closed, we should set a\n // timeout to hide the active tooltip in the global store. This is so\n // we can show other tooltips without a delay when there's already an\n // active tooltip (see the showOnHover method below).\n // Read skipTimeout lazily because this sync only subscribes to\n // mounted.\n const id = setTimeout(removeStore, store.getState().skipTimeout);\n return () => clearTimeout(id);\n }),\n );\n }, [store]);\n\n const onMouseEnterProp = props.onMouseEnter;\n\n const onMouseEnter = useEvent((event: MouseEvent<HTMLType>) => {\n onMouseEnterProp?.(event);\n canShowOnHoverRef.current = true;\n });\n\n const onFocusVisibleProp = props.onFocusVisible;\n\n const onFocusVisible = useEvent((event: FocusEvent<HTMLType>) => {\n onFocusVisibleProp?.(event);\n if (event.defaultPrevented) return;\n store?.setAnchorElement(event.currentTarget);\n store?.show();\n });\n\n const onBlurProp = props.onBlur;\n\n const onBlur = useEvent((event: FocusEvent<HTMLType>) => {\n onBlurProp?.(event);\n if (event.defaultPrevented) return;\n const { activeStore } = globalStore.getState();\n // Sets canShowOnHover to false so moving the mouse over the anchor after\n // it loses focus (for example, clicking on a menu button) doesn't show\n // the tooltip until the mouse leaves and re-enters the anchor.\n canShowOnHoverRef.current = false;\n // If the current tooltip is the active tooltip and the anchor loses focus\n // (for example, if the anchor is a menu button, clicking on the menu\n // button will automatically focus on the menu), we don't want to show\n // subsequent tooltips without a delay. So we set the active tooltip to\n // null.\n if (activeStore === store) {\n globalStore.setState(\"activeStore\", null);\n }\n });\n\n const type = useStoreState(store, \"type\");\n const contentId = useStoreState(store, (state) => state.contentElement?.id);\n\n props = {\n \"aria-labelledby\":\n type === \"label\" && props[\"aria-label\"] == null ? contentId : undefined,\n ...props,\n onMouseEnter,\n onFocusVisible,\n onBlur,\n };\n\n props = useHovercardAnchor<TagName>({\n store,\n showOnHover(event) {\n if (!canShowOnHoverRef.current) return false;\n if (isFalsyBooleanCallback(showOnHover, event)) return false;\n const { activeStore } = globalStore.getState();\n if (!activeStore) return true;\n // Show the tooltip immediately if there's an active tooltip instead of\n // waiting for the showTimeout delay.\n store?.show();\n return false;\n },\n ...props,\n });\n\n return props;\n },\n);\n\n/**\n * Renders a reference element for a\n * [`Tooltip`](https://ariakit.com/reference/tooltip), which is triggered by\n * focusing or hovering over the anchor.\n *\n * The tooltip is strictly for visual purposes. It's your responsibility to\n * ensure the anchor element has an accessible name. See [Tooltip anchors must\n * have accessible\n * names](https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names)\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {2}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>Tooltip</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const TooltipAnchor = forwardRef(function TooltipAnchor(\n props: TooltipAnchorProps,\n) {\n const htmlProps = useTooltipAnchor(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TooltipAnchorOptions<\n T extends ElementType = TagName,\n> extends HovercardAnchorOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * component's context will be used.\n */\n store?: TooltipStore;\n}\n\nexport type TooltipAnchorProps<T extends ElementType = TagName> = Props<\n T,\n TooltipAnchorOptions<T>\n>;\n"],"mappings":";;;;;;;;;AAuBA,MAAM,UAAA;AAIN,MAAM,cAAA,YAAA,EAAA,aAAmB,KAAsB,CAAA;AAE/C,MAAA,+BAAmC,IAAA,QAAqB;SACtD,0BAAa,OAAA;cACH;EACR,MAAI,EAAA,gBAAgB,YAAO,SAAA;EAC3B,IAAA,gBAAY,OAAS;EACvB,YAAA,SAAA,eAAA,IAAA;CACF;AAEA;SACO,UAAO,OAAA;CACZ,IAAA,CAAA,OAAA;CACA,aAAW,IAAA,KAAA;CAGX,MAAA,KAAA;CACF,qBAAA,aAAA,OAAA,KAAA,CAAA;;;;;;;;;;;;;MAeI,mBAAgB,WAAA,SAA0B,iBAAA,EAAA,OAAA,cAAA,MAAA,GAAA,SAAA;CAC1C,MAAA,UAAQ,0BAAS;CAEjB,QAAA,SAEE;CAQF,UAAM,OAAA,QAAA,IAAoB,aAAY,gBAAA,yFAAA;CAEtC,MAAA,oBAAgB,OAAA,KAAA;iBACF;SACN,KAAM,OAAA,CAAS,SAAA,IAAA,UAAA;GACnB,IAAA,MAAA,SAAkB;GACnB,kBAAA,UAAA;EACH,CAAA;CAEA,GAAA,CAAA,KAAA,CAAA;iBACc;EACZ,IAAA,CAAA,OAAM;EACN,MAAA,cAIE,0BACa,KAAS;SACf,MAAO,aAAA,KAAA,OAAA,CAAA,SAAA,IAAA,UAAA;GAMZ,IAAI,CAAA,OAAM;OACR,MAAQ,SAAA;IACR,MAAI,EAAA,gBAAgB,YAAO,SAAA;QACzB,gBAAiB,OAAS;KAC1B,IAAA,aAAU,IAAW,KAAA,GAAA;KACvB,UAAA,WAAA;IACA;IACF,OAAA,YAAA,SAAA,eAAA,KAAA;GAOA;GACA,MAAA,KAAA,WAAa,aAAe,MAAA,SAAA,EAAA,WAAA;GAC7B,aACH,aAAA,EAAA;EACF,CAAA,CAAG;CAEH,GAAA,CAAA,KAAM,CAAA;CAEN,MAAM,mBAAe,MAAU;OAC7B,eAAmB,UAAK,UAAA;EACxB,mBAAkB,KAAA;EACnB,kBAAA,UAAA;CAED,CAAA;CAEA,MAAM,qBAAiB,MAAU;OAC/B,iBAAqB,UAAK,UAAA;EAC1B,qBAAU,KAAA;EACV,IAAA,MAAO,kBAAiB;EACxB,OAAO,iBAAK,MAAA,aAAA;EACb,OAAA,KAAA;CAED,CAAA;CAEA,MAAM,aAAS,MAAU;OACvB,SAAa,UAAK,UAAA;EAClB,aAAU,KAAA;EACV,IAAA,MAAQ,kBAAgB;EAIxB,MAAA,EAAA,gBAAkB,YAAU,SAAA;EAM5B,kBAAI,UACF;EAEH,IAAA,gBAAA,OAAA,YAAA,SAAA,eAAA,IAAA;CAED,CAAA;CACA,MAAM,OAAA,cAAY,OAAc,MAAQ;CAExC,MAAA,YAAQ,cAAA,QAAA,UAAA,MAAA,gBAAA,EAAA;SACN;EAEA,mBAAG,SAAA,WAAA,MAAA,iBAAA,OAAA,YAAA,KAAA;EACH,GAAA;EACA;EACA;EACF;CAEA;SACE,mBAAA;EACA;cACO,OAAA;GACL,IAAI,CAAA,kBAAA,SAAuB,OAAA;GAC3B,IAAA,uBAAwB,aAAY,KAAS,GAAA,OAAA;GAC7C,MAAK,EAAA,gBAAa,YAAO,SAAA;GAGzB,IAAA,CAAA,aAAY,OAAA;GACZ,OAAO,KAAA;GACT,OAAA;EACA;EACD,GAAA;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;MAwBE,gBAAqB,WADH,SAAA,cACqB,OAAA;CACxC,OAAA,cAAA,SAAA,iBAAA,KAAA,CAAA"}
|
|
@@ -36,7 +36,7 @@ declare const useTooltipArrow: import("@ariakit/react-utils").Hook<"div", Toolti
|
|
|
36
36
|
* </TooltipProvider>
|
|
37
37
|
* ```
|
|
38
38
|
*/
|
|
39
|
-
declare const TooltipArrow: (props: TooltipArrowProps) => import("react").ReactElement<
|
|
39
|
+
declare const TooltipArrow: (props: TooltipArrowProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
40
40
|
interface TooltipArrowOptions<T extends ElementType = TagName> extends PopoverArrowOptions<T> {
|
|
41
41
|
/**
|
|
42
42
|
* Object returned by the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-arrow.d.ts","names":["Props","ElementType","PopoverArrowOptions","TooltipStore","TagName","useTooltipArrow","TooltipArrowOptions","Hook","TooltipArrow","TooltipArrowProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tooltip/tooltip-arrow.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAe7B;;;;AAjBuD,cAiBlCC,eAAAA,iCAAgDE,IAAAA,QAAYD,mBAAmB;AAgBpG;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"tooltip-arrow.d.ts","names":["Props","ElementType","PopoverArrowOptions","TooltipStore","TagName","useTooltipArrow","TooltipArrowOptions","Hook","TooltipArrow","TooltipArrowProps","props","ReactElement","JSXElementConstructor","T","store"],"sources":["../../src/tooltip/tooltip-arrow.d.ts"],"mappings":";;;;;;cAIcI,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAF0B;;;;AAClC;AAAA;;;;AACQ;AAe7B;;;;AAjBuD,cAiBlCC,eAAAA,iCAAgDE,IAAAA,QAAYD,mBAAmB;AAgBpG;;;;;;;;;AAAqJ;AACrJ;;;;;AADA,cAAqBE,YAAAA,GAAeE,KAAAA,EAAOD,iBAAiB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UAC/GN,mBAAAA,WAA8BL,WAAAA,GAAcG,OAAAA,UAAiBF,mBAAAA,CAAoBW,CAAAA;EAApBX;;;;;;;;EAS1EY,KAAAA,GAAQX,YAAAA;AAAAA;AAAAA,KAEAM,iBAAAA,WAA4BR,WAAAA,GAAcG,OAAAA,IAAWJ,KAAAA,CAAMa,CAAAA,EAAGP,mBAAAA,CAAoBO,CAAAA"}
|
|
@@ -22,7 +22,7 @@ const TagName = "div";
|
|
|
22
22
|
const useTooltipArrow = createHook(function useTooltipArrow({ store, size = 16, ...props }) {
|
|
23
23
|
const context = useTooltipContext();
|
|
24
24
|
store = store || context;
|
|
25
|
-
invariant(store, "TooltipArrow must be wrapped in a Tooltip component.");
|
|
25
|
+
invariant(store, process.env.NODE_ENV !== "production" && "TooltipArrow must be wrapped in a Tooltip component.");
|
|
26
26
|
props = usePopoverArrow({
|
|
27
27
|
store,
|
|
28
28
|
size,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip-arrow.js","names":[],"sources":["../../src/tooltip/tooltip-arrow.tsx"],"sourcesContent":["import { createElement, createHook, forwardRef } from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport type { PopoverArrowOptions } from \"../popover/popover-arrow.tsx\";\nimport { usePopoverArrow } from \"../popover/popover-arrow.tsx\";\nimport { useTooltipContext } from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `TooltipArrow` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltipArrow({ store });\n * <TooltipAnchor store={store}>Anchor</TooltipAnchor>\n * <Tooltip store={store}>\n * <Role {...props} />\n * Tooltip\n * </Tooltip>\n * ```\n */\nexport const useTooltipArrow = createHook<TagName, TooltipArrowOptions>(\n function useTooltipArrow({ store, size = 16, ...props }) {\n // We need to get the tooltip store here because Tooltip is not using the\n // Popover component, so PopoverArrow can't access the popover context.\n const context = useTooltipContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TooltipArrow must be wrapped in a Tooltip component.\",\n );\n\n props = usePopoverArrow({ store, size, ...props });\n return props;\n },\n);\n\n/**\n * Renders an arrow inside a [`Tooltip`](https://ariakit.com/reference/tooltip)\n * pointing to the anchor element.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {4}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>\n * <TooltipArrow />\n * Tooltip\n * </Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const TooltipArrow = forwardRef(function TooltipArrow(\n props: TooltipArrowProps,\n) {\n const htmlProps = useTooltipArrow(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TooltipArrowOptions<\n T extends ElementType = TagName,\n> extends PopoverArrowOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`Tooltip`](https://ariakit.com/reference/tooltip) or\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * components' context will be used.\n */\n store?: TooltipStore;\n}\n\nexport type TooltipArrowProps<T extends ElementType = TagName> = Props<\n T,\n TooltipArrowOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA8BI,kBAAgB,WAAkB,SAAA,gBAAA,EAAA,OAAA,OAAA,IAAA,GAAA,SAAA;CAClC,MAAA,UAAQ,kBAAS;CAEjB,QAAA,
|
|
1
|
+
{"version":3,"file":"tooltip-arrow.js","names":[],"sources":["../../src/tooltip/tooltip-arrow.tsx"],"sourcesContent":["import { createElement, createHook, forwardRef } from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { invariant } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport type { PopoverArrowOptions } from \"../popover/popover-arrow.tsx\";\nimport { usePopoverArrow } from \"../popover/popover-arrow.tsx\";\nimport { useTooltipContext } from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `TooltipArrow` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltipArrow({ store });\n * <TooltipAnchor store={store}>Anchor</TooltipAnchor>\n * <Tooltip store={store}>\n * <Role {...props} />\n * Tooltip\n * </Tooltip>\n * ```\n */\nexport const useTooltipArrow = createHook<TagName, TooltipArrowOptions>(\n function useTooltipArrow({ store, size = 16, ...props }) {\n // We need to get the tooltip store here because Tooltip is not using the\n // Popover component, so PopoverArrow can't access the popover context.\n const context = useTooltipContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"TooltipArrow must be wrapped in a Tooltip component.\",\n );\n\n props = usePopoverArrow({ store, size, ...props });\n return props;\n },\n);\n\n/**\n * Renders an arrow inside a [`Tooltip`](https://ariakit.com/reference/tooltip)\n * pointing to the anchor element.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {4}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>\n * <TooltipArrow />\n * Tooltip\n * </Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const TooltipArrow = forwardRef(function TooltipArrow(\n props: TooltipArrowProps,\n) {\n const htmlProps = useTooltipArrow(props);\n return createElement(TagName, htmlProps);\n});\n\nexport interface TooltipArrowOptions<\n T extends ElementType = TagName,\n> extends PopoverArrowOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`Tooltip`](https://ariakit.com/reference/tooltip) or\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * components' context will be used.\n */\n store?: TooltipStore;\n}\n\nexport type TooltipArrowProps<T extends ElementType = TagName> = Props<\n T,\n TooltipArrowOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA8BI,kBAAgB,WAAkB,SAAA,gBAAA,EAAA,OAAA,OAAA,IAAA,GAAA,SAAA;CAClC,MAAA,UAAQ,kBAAS;CAEjB,QAAA,SAEE;CAIF,UAAQ,OAAA,QAAgB,IAAA,aAAA,gBAAA,sDAAA;SAAE,gBAAA;EAAO;EAAM;EAAU,GAAA;CACjD,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;MAqBE,eAAO,WADW,SAAA,aACqB,OAAA;CACxC,OAAA,cAAA,SAAA,gBAAA,KAAA,CAAA"}
|
package/dist/tooltip/tooltip.js
CHANGED
|
@@ -22,7 +22,7 @@ const TagName = "div";
|
|
|
22
22
|
const useTooltip = createHook(function useTooltip({ store, portal = true, gutter = 8, preserveTabOrder = false, hideOnHoverOutside = true, hideOnInteractOutside = true, ...props }) {
|
|
23
23
|
const context = useTooltipProviderContext();
|
|
24
24
|
store = store || context;
|
|
25
|
-
invariant(store, "Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.");
|
|
25
|
+
invariant(store, process.env.NODE_ENV !== "production" && "Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.");
|
|
26
26
|
props = useWrapElement(props, (element) => /* @__PURE__ */ jsx(TooltipScopedContextProvider, {
|
|
27
27
|
value: store,
|
|
28
28
|
children: element
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tooltip.js","names":[],"sources":["../../src/tooltip/tooltip.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { contains, invariant, isFalsyBooleanCallback } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport { createDialogComponent } from \"../dialog/dialog.tsx\";\nimport type { HovercardOptions } from \"../hovercard/hovercard.tsx\";\nimport { useHovercard } from \"../hovercard/hovercard.tsx\";\nimport {\n TooltipScopedContextProvider,\n useTooltipProviderContext,\n} from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `Tooltip` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltip({ store });\n * <TooltipAnchor store={store}>Anchor</TooltipAnchor>\n * <Role {...props}>Tooltip</Role>\n * ```\n */\nexport const useTooltip = createHook<TagName, TooltipOptions>(\n function useTooltip({\n store,\n portal = true,\n gutter = 8,\n preserveTabOrder = false,\n hideOnHoverOutside = true,\n hideOnInteractOutside = true,\n ...props\n }) {\n const context = useTooltipProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.\",\n );\n\n props = useWrapElement(\n props,\n (element) => (\n <TooltipScopedContextProvider value={store}>\n {element}\n </TooltipScopedContextProvider>\n ),\n [store],\n );\n\n const role = useStoreState(store, (state) =>\n state.type === \"description\" ? \"tooltip\" : \"none\",\n );\n\n props = { role, ...props };\n\n props = useHovercard({\n ...props,\n store,\n portal,\n gutter,\n preserveTabOrder,\n hideOnHoverOutside(event) {\n if (isFalsyBooleanCallback(hideOnHoverOutside, event)) return false;\n const anchorElement = store?.getState().anchorElement;\n if (!anchorElement) return true;\n // If the anchor element has the `data-focus-visible` attribute (added\n // by the `Focusable` component that is used by several components), we\n // don't hide the tooltip when the mouse leaves the anchor element. In\n // this case, the tooltip will be hidden only if the user presses the\n // Escape key or if the anchor element loses focus.\n if (\"focusVisible\" in anchorElement.dataset) return false;\n return true;\n },\n hideOnInteractOutside: (event) => {\n if (isFalsyBooleanCallback(hideOnInteractOutside, event)) return false;\n const anchorElement = store?.getState().anchorElement;\n if (!anchorElement) return true;\n // Prevent hiding the tooltip when the user interacts with the anchor\n // element. It's up to the developer to hide the tooltip when the user\n // clicks on the anchor element if that's the intended behavior.\n if (contains(anchorElement, event.target as Node)) return false;\n return true;\n },\n });\n\n return props;\n },\n);\n\n/**\n * Renders a tooltip element that visually describes a\n * [`TooltipAnchor`](https://ariakit.com/reference/tooltip-anchor) when it\n * receives focus or is hovered.\n *\n * The tooltip is strictly for visual purposes. It's your responsibility to\n * ensure the anchor element has an accessible name. See [Tooltip anchors must\n * have accessible\n * names](https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names)\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {3}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>Tooltip</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const Tooltip = createDialogComponent(\n forwardRef(function Tooltip(props: TooltipProps) {\n const htmlProps = useTooltip(props);\n return createElement(TagName, htmlProps);\n }),\n useTooltipProviderContext,\n);\n\nexport interface TooltipOptions<\n T extends ElementType = TagName,\n> extends HovercardOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * component's context will be used.\n */\n store?: TooltipStore;\n /**\n * @default true\n */\n portal?: HovercardOptions<T>[\"portal\"];\n /**\n * @default 8\n */\n gutter?: HovercardOptions<T>[\"gutter\"];\n}\n\nexport type TooltipProps<T extends ElementType = TagName> = Props<\n T,\n TooltipOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA2CI,aAAgB,WAAA,SAAA,WAA0B,EAAA,OAAA,SAAA,MAAA,SAAA,GAAA,mBAAA,OAAA,qBAAA,MAAA,wBAAA,MAAA,GAAA,SAAA;CAC1C,MAAA,UAAQ,0BAAS;CAEjB,QAAA,
|
|
1
|
+
{"version":3,"file":"tooltip.js","names":[],"sources":["../../src/tooltip/tooltip.tsx"],"sourcesContent":["import { useStoreState } from \"@ariakit/react-store\";\nimport {\n useWrapElement,\n createElement,\n createHook,\n forwardRef,\n} from \"@ariakit/react-utils\";\nimport type { Props } from \"@ariakit/react-utils\";\nimport { contains, invariant, isFalsyBooleanCallback } from \"@ariakit/utils\";\nimport type { ElementType } from \"react\";\nimport { createDialogComponent } from \"../dialog/dialog.tsx\";\nimport type { HovercardOptions } from \"../hovercard/hovercard.tsx\";\nimport { useHovercard } from \"../hovercard/hovercard.tsx\";\nimport {\n TooltipScopedContextProvider,\n useTooltipProviderContext,\n} from \"./tooltip-context.tsx\";\nimport type { TooltipStore } from \"./tooltip-store.ts\";\n\nconst TagName = \"div\" satisfies ElementType;\ntype TagName = typeof TagName;\n\n/**\n * Returns props to create a `Tooltip` component.\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx\n * const store = useToolTipStore();\n * const props = useTooltip({ store });\n * <TooltipAnchor store={store}>Anchor</TooltipAnchor>\n * <Role {...props}>Tooltip</Role>\n * ```\n */\nexport const useTooltip = createHook<TagName, TooltipOptions>(\n function useTooltip({\n store,\n portal = true,\n gutter = 8,\n preserveTabOrder = false,\n hideOnHoverOutside = true,\n hideOnInteractOutside = true,\n ...props\n }) {\n const context = useTooltipProviderContext();\n store = store || context;\n\n invariant(\n store,\n process.env.NODE_ENV !== \"production\" &&\n \"Tooltip must receive a `store` prop or be wrapped in a TooltipProvider component.\",\n );\n\n props = useWrapElement(\n props,\n (element) => (\n <TooltipScopedContextProvider value={store}>\n {element}\n </TooltipScopedContextProvider>\n ),\n [store],\n );\n\n const role = useStoreState(store, (state) =>\n state.type === \"description\" ? \"tooltip\" : \"none\",\n );\n\n props = { role, ...props };\n\n props = useHovercard({\n ...props,\n store,\n portal,\n gutter,\n preserveTabOrder,\n hideOnHoverOutside(event) {\n if (isFalsyBooleanCallback(hideOnHoverOutside, event)) return false;\n const anchorElement = store?.getState().anchorElement;\n if (!anchorElement) return true;\n // If the anchor element has the `data-focus-visible` attribute (added\n // by the `Focusable` component that is used by several components), we\n // don't hide the tooltip when the mouse leaves the anchor element. In\n // this case, the tooltip will be hidden only if the user presses the\n // Escape key or if the anchor element loses focus.\n if (\"focusVisible\" in anchorElement.dataset) return false;\n return true;\n },\n hideOnInteractOutside: (event) => {\n if (isFalsyBooleanCallback(hideOnInteractOutside, event)) return false;\n const anchorElement = store?.getState().anchorElement;\n if (!anchorElement) return true;\n // Prevent hiding the tooltip when the user interacts with the anchor\n // element. It's up to the developer to hide the tooltip when the user\n // clicks on the anchor element if that's the intended behavior.\n if (contains(anchorElement, event.target as Node)) return false;\n return true;\n },\n });\n\n return props;\n },\n);\n\n/**\n * Renders a tooltip element that visually describes a\n * [`TooltipAnchor`](https://ariakit.com/reference/tooltip-anchor) when it\n * receives focus or is hovered.\n *\n * The tooltip is strictly for visual purposes. It's your responsibility to\n * ensure the anchor element has an accessible name. See [Tooltip anchors must\n * have accessible\n * names](https://ariakit.com/components/tooltip#tooltip-anchors-must-have-accessible-names)\n * @see https://ariakit.com/components/tooltip\n * @example\n * ```jsx {3}\n * <TooltipProvider>\n * <TooltipAnchor>Anchor</TooltipAnchor>\n * <Tooltip>Tooltip</Tooltip>\n * </TooltipProvider>\n * ```\n */\nexport const Tooltip = createDialogComponent(\n forwardRef(function Tooltip(props: TooltipProps) {\n const htmlProps = useTooltip(props);\n return createElement(TagName, htmlProps);\n }),\n useTooltipProviderContext,\n);\n\nexport interface TooltipOptions<\n T extends ElementType = TagName,\n> extends HovercardOptions<T> {\n /**\n * Object returned by the\n * [`useTooltipStore`](https://ariakit.com/reference/use-tooltip-store) hook.\n * If not provided, the closest\n * [`TooltipProvider`](https://ariakit.com/reference/tooltip-provider)\n * component's context will be used.\n */\n store?: TooltipStore;\n /**\n * @default true\n */\n portal?: HovercardOptions<T>[\"portal\"];\n /**\n * @default 8\n */\n gutter?: HovercardOptions<T>[\"gutter\"];\n}\n\nexport type TooltipProps<T extends ElementType = TagName> = Props<\n T,\n TooltipOptions<T>\n>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;MA2CI,aAAgB,WAAA,SAAA,WAA0B,EAAA,OAAA,SAAA,MAAA,SAAA,GAAA,mBAAA,OAAA,qBAAA,MAAA,wBAAA,MAAA,GAAA,SAAA;CAC1C,MAAA,UAAQ,0BAAS;CAEjB,QAAA,SAEE;CAIF,UAAQ,OAAA,QACN,IAAA,aACC,gBACC,mFAAA;SAAqC,eAAA,QAAA,YAAA,oBAAA,8BAAA;;EAEP,UAGlC;CAMA,CAAA,GAAA,CAAA,KAAQ,CAAA;SAJK;EAIG,MAAG,cAAA,QAAA,UAAA,MAAA,SAAA,gBAAA,YAAA,MAAA;EAAM,GAAA;CAEzB;SACK,aAAA;EACH,GAAA;EACA;EACA;EACA;EACA;qBACM,OAAA;GACJ,IAAA,uBAAsB,oBAAkB,KAAA,GAAA,OAAA;GACxC,MAAK,gBAAe,OAAO,SAAA,EAAA;GAM3B,IAAI,CAAA,eAAA,OAAkB;GACtB,IAAA,kBAAO,cAAA,SAAA,OAAA;GACT,OAAA;EACA;0BACM,UAAuB;GAC3B,IAAA,uBAAsB,uBAAkB,KAAA,GAAA,OAAA;GACxC,MAAK,gBAAe,OAAO,SAAA,EAAA;GAI3B,IAAI,CAAA,eAAS,OAAA;GACb,IAAA,SAAO,eAAA,MAAA,MAAA,GAAA,OAAA;GACT,OAAA;EACD;CAED,CAAA;CAEJ,OAAA;;;;;;;;;;;;;;;;;;;;MAuBI,UAAO,sBADW,WACqB,SAAA,QAAA,OAAA;CACxC,OACD,cAAA,SACF,WAAA,KAAA,CAAA"}
|
|
@@ -29,7 +29,7 @@ declare const useVisuallyHidden: import("@ariakit/react-utils").Hook<"span", Vis
|
|
|
29
29
|
* </a>
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
|
-
declare const VisuallyHidden: (props: VisuallyHiddenProps) => import("react").ReactElement<
|
|
32
|
+
declare const VisuallyHidden: (props: VisuallyHiddenProps) => import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
|
|
33
33
|
interface VisuallyHiddenOptions<_T extends ElementType = TagName> extends Options {}
|
|
34
34
|
type VisuallyHiddenProps<T extends ElementType = TagName> = Props<T, VisuallyHiddenOptions<T>>;
|
|
35
35
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visually-hidden.d.ts","names":["Options","Props","ElementType","TagName","useVisuallyHidden","VisuallyHiddenOptions","Hook","VisuallyHidden","VisuallyHiddenProps","props","ReactElement","JSXElementConstructor","_T","T"],"sources":["../../src/visually-hidden/visually-hidden.d.ts"],"mappings":";;;;cAEcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFY;;;;AACpB;AAAA;;;;AACQ;AAc7B;;;AAhByC,cAgBpBC,iBAAAA,iCAAkDE,IAAAA,SAAaD,qBAAqB;AAAA;AAYzG;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"visually-hidden.d.ts","names":["Options","Props","ElementType","TagName","useVisuallyHidden","VisuallyHiddenOptions","Hook","VisuallyHidden","VisuallyHiddenProps","props","ReactElement","JSXElementConstructor","_T","T"],"sources":["../../src/visually-hidden/visually-hidden.d.ts"],"mappings":";;;;cAEcG,OAAAA;AAAAA,KACTA,OAAAA,UAAiBA,OAAO;AAFY;;;;AACpB;AAAA;;;;AACQ;AAc7B;;;AAhByC,cAgBpBC,iBAAAA,iCAAkDE,IAAAA,SAAaD,qBAAqB;AAAA;AAYzG;;;;;;;;;AAAyJ;AAZhD,cAYpFE,cAAAA,GAAiBE,KAAAA,EAAOD,mBAAmB,qBAAqBE,YAAAA,mCAA+CC,qBAAAA;AAAAA,UACnHN,qBAAAA,YAAiCH,WAAAA,GAAcC,OAAAA,UAAiBH,OAAAA;AAAAA,KAErEQ,mBAAAA,WAA8BN,WAAAA,GAAcC,OAAAA,IAAWF,KAAAA,CAAMY,CAAAA,EAAGR,qBAAAA,CAAsBQ,CAAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ariakit/react-components",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Ariakit React components",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ariakit",
|
|
@@ -23,15 +23,15 @@
|
|
|
23
23
|
"sideEffects": false,
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@floating-ui/dom": "^1.0.0",
|
|
26
|
-
"@ariakit/components": "0.1.
|
|
27
|
-
"@ariakit/
|
|
28
|
-
"@ariakit/
|
|
29
|
-
"@ariakit/
|
|
30
|
-
"@ariakit/
|
|
26
|
+
"@ariakit/components": "0.1.2",
|
|
27
|
+
"@ariakit/react-store": "0.1.2",
|
|
28
|
+
"@ariakit/react-utils": "0.1.2",
|
|
29
|
+
"@ariakit/store": "0.1.2",
|
|
30
|
+
"@ariakit/utils": "0.1.2"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"react": "
|
|
34
|
-
"react-dom": "
|
|
33
|
+
"react": "19.2.6",
|
|
34
|
+
"react-dom": "19.2.6",
|
|
35
35
|
"@ariakit/scripts": "0.0.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
@@ -55,7 +55,7 @@ export function useCollectionItemOffscreen<
|
|
|
55
55
|
invariant(
|
|
56
56
|
offscreenRoot !== undefined,
|
|
57
57
|
process.env.NODE_ENV !== "production" &&
|
|
58
|
-
"The offscreenRoot prop must provided.",
|
|
58
|
+
"The offscreenRoot prop must be provided.",
|
|
59
59
|
);
|
|
60
60
|
|
|
61
61
|
const getOffscreenRoot = () => {
|
|
@@ -293,6 +293,16 @@ export const useCombobox = createHook<TagName, ComboboxOptions>(
|
|
|
293
293
|
const scrollingElementRef = useRef<Element | null>(null);
|
|
294
294
|
const getAutoSelectIdProp = useEvent(getAutoSelectId);
|
|
295
295
|
const autoSelectIdRef = useRef<string | null | undefined>(null);
|
|
296
|
+
// Tracks the item (id and value) the autoSelect behavior last moved focus
|
|
297
|
+
// to, so we can tell an already-focused item apart from one that only looks
|
|
298
|
+
// the same, such as a different value under the same id (e.g. an index-keyed
|
|
299
|
+
// list after filtering) or an item that became active without focus. This is
|
|
300
|
+
// distinct from autoSelectIdRef above, which tracks the current target for
|
|
301
|
+
// the scroll guard. Reset when the popover closes so reopening re-focuses.
|
|
302
|
+
const autoSelectMovedRef = useRef<{
|
|
303
|
+
id: string | null;
|
|
304
|
+
value?: string;
|
|
305
|
+
}>(undefined);
|
|
296
306
|
const userScrolledRef = useRef(false);
|
|
297
307
|
const isAutoScrollingRef = useRef(false);
|
|
298
308
|
|
|
@@ -358,6 +368,13 @@ export const useCombobox = createHook<TagName, ComboboxOptions>(
|
|
|
358
368
|
canAutoSelectRef.current = open;
|
|
359
369
|
}, [autoSelect, open]);
|
|
360
370
|
|
|
371
|
+
// Reset the auto-moved item when the popover closes so reopening re-focuses
|
|
372
|
+
// the auto-selected item.
|
|
373
|
+
useSafeLayoutEffect(() => {
|
|
374
|
+
if (open) return;
|
|
375
|
+
autoSelectMovedRef.current = undefined;
|
|
376
|
+
}, [open]);
|
|
377
|
+
|
|
361
378
|
const resetValueOnSelect = useStoreState(store, "resetValueOnSelect");
|
|
362
379
|
|
|
363
380
|
// Auto select the first item on type. This effect runs both when the value
|
|
@@ -391,7 +408,36 @@ export const useCombobox = createHook<TagName, ComboboxOptions>(
|
|
|
391
408
|
// are disabled), we should move the focus to the input (null),
|
|
392
409
|
// otherwise, with async items, the activeValue won't be reset. TODO:
|
|
393
410
|
// Test this.
|
|
394
|
-
|
|
411
|
+
const nextActiveId = autoSelectId ?? null;
|
|
412
|
+
const nextActiveValue = store.item(nextActiveId)?.value;
|
|
413
|
+
const moved = autoSelectMovedRef.current;
|
|
414
|
+
// Move when the auto-select target changes: a different active item, a
|
|
415
|
+
// different target id, or the same id now holding a different value
|
|
416
|
+
// (for example, a list keyed by index whose first item's value changes
|
|
417
|
+
// after filtering, or asynchronously loaded items). We avoid re-moving
|
|
418
|
+
// to the exact item we already moved to, because store.move() always
|
|
419
|
+
// increments the `moves` counter, which makes the Composite component
|
|
420
|
+
// re-focus the active item. Re-focusing when only the rendered items
|
|
421
|
+
// changed (for example, a virtualized list resizing because a mobile
|
|
422
|
+
// keyboard's autocomplete bar changed the available height) would bounce
|
|
423
|
+
// focus off the input and back and drop characters as the user types.
|
|
424
|
+
// See https://github.com/ariakit/ariakit/issues/3837
|
|
425
|
+
if (
|
|
426
|
+
nextActiveId !== activeId ||
|
|
427
|
+
moved?.id !== nextActiveId ||
|
|
428
|
+
moved?.value !== nextActiveValue
|
|
429
|
+
) {
|
|
430
|
+
autoSelectMovedRef.current = {
|
|
431
|
+
id: nextActiveId,
|
|
432
|
+
value: nextActiveValue,
|
|
433
|
+
};
|
|
434
|
+
store.move(nextActiveId);
|
|
435
|
+
} else {
|
|
436
|
+
// The same item is already the focused active item, so we skip the
|
|
437
|
+
// move to avoid re-focusing it. Keep activeValue in sync (a no-op
|
|
438
|
+
// here since the value is unchanged) the way store.move() would.
|
|
439
|
+
store.setState("activeValue", nextActiveValue);
|
|
440
|
+
}
|
|
395
441
|
} else {
|
|
396
442
|
// Reset the scroll position to the active item when an item is selected
|
|
397
443
|
// and the combobox value is reset, which might move the active item
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "@ariakit/utils";
|
|
21
21
|
import type { ElementType, FocusEvent, KeyboardEvent, MouseEvent } from "react";
|
|
22
22
|
import { useEffect, useRef } from "react";
|
|
23
|
-
import {
|
|
23
|
+
import { useCompositeScopedContext } from "./composite-context.tsx";
|
|
24
24
|
import type { CompositeStore } from "./composite-store.ts";
|
|
25
25
|
import { selectTextField } from "./utils.ts";
|
|
26
26
|
|
|
@@ -56,7 +56,7 @@ export const useCompositeContainer = createHook<
|
|
|
56
56
|
TagName,
|
|
57
57
|
CompositeContainerOptions
|
|
58
58
|
>(function useCompositeContainer({ store, ...props }) {
|
|
59
|
-
const context =
|
|
59
|
+
const context = useCompositeScopedContext();
|
|
60
60
|
store = store || context;
|
|
61
61
|
|
|
62
62
|
const ref = useRef<HTMLType>(null);
|
|
@@ -15,29 +15,22 @@ import {
|
|
|
15
15
|
hasFocusWithin,
|
|
16
16
|
hasOwnProperty,
|
|
17
17
|
invariant,
|
|
18
|
+
isElement,
|
|
18
19
|
removeUndefinedValues,
|
|
19
20
|
} from "@ariakit/utils";
|
|
20
21
|
import type { BooleanOrCallback } from "@ariakit/utils";
|
|
21
22
|
import type { ElementType, MouseEvent as ReactMouseEvent } from "react";
|
|
22
23
|
import { useCallback } from "react";
|
|
23
|
-
import {
|
|
24
|
+
import { useCompositeScopedContext } from "./composite-context.tsx";
|
|
24
25
|
import type { CompositeStore } from "./composite-store.ts";
|
|
25
26
|
|
|
26
27
|
const TagName = "div" satisfies ElementType;
|
|
27
28
|
type TagName = typeof TagName;
|
|
28
29
|
type HTMLType = HTMLElementTagNameMap[TagName];
|
|
29
30
|
|
|
30
|
-
function getMouseDestination(event: ReactMouseEvent<HTMLElement>) {
|
|
31
|
-
const relatedTarget = event.relatedTarget as Node | null;
|
|
32
|
-
if (relatedTarget?.nodeType === Node.ELEMENT_NODE) {
|
|
33
|
-
return relatedTarget as Element;
|
|
34
|
-
}
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
31
|
function hoveringInside(event: ReactMouseEvent<HTMLElement>) {
|
|
39
|
-
const nextElement =
|
|
40
|
-
if (!nextElement) return false;
|
|
32
|
+
const nextElement = event.relatedTarget;
|
|
33
|
+
if (!isElement(nextElement)) return false;
|
|
41
34
|
return contains(event.currentTarget, nextElement);
|
|
42
35
|
}
|
|
43
36
|
|
|
@@ -45,8 +38,9 @@ const symbol = Symbol("composite-hover");
|
|
|
45
38
|
type ElementWithSymbol = HTMLElement & { [symbol]?: boolean };
|
|
46
39
|
|
|
47
40
|
function movingToAnotherItem(event: ReactMouseEvent<HTMLElement>) {
|
|
48
|
-
|
|
49
|
-
if (!
|
|
41
|
+
const { relatedTarget } = event;
|
|
42
|
+
if (!isElement(relatedTarget)) return false;
|
|
43
|
+
let dest: Element | null = relatedTarget;
|
|
50
44
|
do {
|
|
51
45
|
if (hasOwnProperty(dest, symbol) && dest[symbol]) return true;
|
|
52
46
|
dest = dest.parentElement;
|
|
@@ -75,7 +69,7 @@ export const useCompositeHover = createHook<TagName, CompositeHoverOptions>(
|
|
|
75
69
|
blurOnHoverEnd = !!focusOnHover,
|
|
76
70
|
...props
|
|
77
71
|
}) {
|
|
78
|
-
const context =
|
|
72
|
+
const context = useCompositeScopedContext();
|
|
79
73
|
store = store || context;
|
|
80
74
|
|
|
81
75
|
invariant(
|
|
@@ -8,7 +8,7 @@ import { useCollectionItemOffscreen } from "../collection/collection-item-offscr
|
|
|
8
8
|
import type { ComboboxStoreState } from "../combobox/combobox-store.ts";
|
|
9
9
|
import { Role } from "../role/role.tsx";
|
|
10
10
|
import type { SelectStoreState } from "../select/select-store.ts";
|
|
11
|
-
import {
|
|
11
|
+
import { useCompositeScopedContext } from "./composite-context.tsx";
|
|
12
12
|
import * as Base from "./composite-item.tsx";
|
|
13
13
|
import type { CompositeStoreState } from "./composite-store.ts";
|
|
14
14
|
|
|
@@ -20,7 +20,7 @@ export function useCompositeItemOffscreen<
|
|
|
20
20
|
// oxlint-disable-next-line no-unnecessary-type-parameters
|
|
21
21
|
P extends CompositeItemProps<T>,
|
|
22
22
|
>({ store, offscreenMode = "active", disabled, value, ...props }: P) {
|
|
23
|
-
const context =
|
|
23
|
+
const context = useCompositeScopedContext();
|
|
24
24
|
store = store || context;
|
|
25
25
|
|
|
26
26
|
const id = useId(props.id);
|
|
@@ -39,7 +39,7 @@ import { useCommand } from "../command/command.tsx";
|
|
|
39
39
|
import {
|
|
40
40
|
CompositeItemContext,
|
|
41
41
|
CompositeRowContext,
|
|
42
|
-
|
|
42
|
+
useCompositeScopedContext,
|
|
43
43
|
} from "./composite-context.tsx";
|
|
44
44
|
import type { CompositeStore } from "./composite-store.ts";
|
|
45
45
|
import {
|
|
@@ -155,7 +155,7 @@ export const useCompositeItem = createHook<TagName, CompositeItemOptions>(
|
|
|
155
155
|
"aria-posinset": ariaPosInSetProp,
|
|
156
156
|
...props
|
|
157
157
|
}) {
|
|
158
|
-
const context =
|
|
158
|
+
const context = useCompositeScopedContext();
|
|
159
159
|
store = store || context;
|
|
160
160
|
|
|
161
161
|
const id = useId(props.id);
|