@ark-ui/solid 1.0.0-beta.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -1
- package/cjs/index.js +659 -381
- package/cjs/index.js.map +1 -1
- package/esm/index.js +655 -383
- package/esm/index.js.map +1 -1
- package/package.json +45 -45
- package/source/accordion/accordion-item-content.jsx +7 -6
- package/source/accordion/accordion-item-trigger.jsx +4 -1
- package/source/accordion/accordion-item.jsx +10 -6
- package/source/accordion/accordion.jsx +8 -4
- package/source/avatar/avatar-fallback.jsx +2 -2
- package/source/avatar/avatar-image.jsx +2 -2
- package/source/avatar/avatar.jsx +2 -2
- package/source/carousel/carousel.jsx +6 -4
- package/source/checkbox/checkbox-label.jsx +2 -2
- package/source/color-picker/color-picker-content.jsx +7 -2
- package/source/color-picker/color-picker-positioner.jsx +6 -1
- package/source/color-picker/color-picker-value-text.jsx +9 -0
- package/source/color-picker/color-picker-view.jsx +13 -0
- package/source/color-picker/color-picker.jsx +8 -3
- package/source/color-picker/index.js +5 -1
- package/source/combobox/combobox-content.jsx +6 -5
- package/source/combobox/combobox-item-group-label.jsx +2 -2
- package/source/combobox/combobox-positioner.jsx +8 -3
- package/source/combobox/combobox.jsx +8 -3
- package/source/date-picker/date-picker-content.jsx +7 -2
- package/source/date-picker/date-picker-positioner.jsx +6 -1
- package/source/date-picker/date-picker-view.jsx +4 -1
- package/source/date-picker/date-picker.jsx +9 -4
- package/source/dialog/dialog-backdrop.jsx +6 -5
- package/source/dialog/dialog-close-trigger.jsx +2 -2
- package/source/dialog/dialog-content.jsx +6 -5
- package/source/dialog/dialog-description.jsx +2 -2
- package/source/dialog/dialog-positioner.jsx +8 -3
- package/source/dialog/dialog-title.jsx +2 -2
- package/source/dialog/dialog-trigger.jsx +6 -3
- package/source/dialog/dialog.jsx +9 -3
- package/source/editable/editable-area.jsx +2 -2
- package/source/editable/editable-cancel-trigger.jsx +2 -2
- package/source/editable/editable-control.jsx +2 -2
- package/source/editable/editable-edit-trigger.jsx +2 -2
- package/source/editable/editable-input.jsx +2 -2
- package/source/editable/editable-label.jsx +2 -2
- package/source/editable/editable-preview.jsx +2 -2
- package/source/editable/editable-submit-trigger.jsx +2 -2
- package/source/editable/editable.jsx +2 -2
- package/source/hover-card/hover-card-arrow-tip.jsx +2 -2
- package/source/hover-card/hover-card-arrow.jsx +2 -2
- package/source/hover-card/hover-card-content.jsx +6 -5
- package/source/hover-card/hover-card-positioner.jsx +8 -3
- package/source/hover-card/hover-card-trigger.jsx +2 -2
- package/source/hover-card/hover-card.jsx +9 -3
- package/source/menu/menu-arrow-tip.jsx +2 -2
- package/source/menu/menu-arrow.jsx +2 -2
- package/source/menu/menu-content.jsx +6 -5
- package/source/menu/menu-context-trigger.jsx +2 -2
- package/source/menu/menu-item-group-label.jsx +3 -5
- package/source/menu/menu-item-group.jsx +2 -2
- package/source/menu/menu-item.jsx +2 -2
- package/source/menu/menu-option-item.jsx +2 -2
- package/source/menu/menu-positioner.jsx +8 -3
- package/source/menu/menu-separator.jsx +2 -2
- package/source/menu/menu-trigger-item.jsx +2 -2
- package/source/menu/menu-trigger.jsx +2 -2
- package/source/menu/menu.jsx +11 -12
- package/source/number-input/number-input-control.jsx +2 -2
- package/source/number-input/number-input-decrement-trigger.jsx +2 -2
- package/source/number-input/number-input-field.jsx +2 -2
- package/source/number-input/number-input-increment-trigger.jsx +2 -2
- package/source/number-input/number-input-label.jsx +2 -2
- package/source/number-input/number-input-scrubber.jsx +2 -2
- package/source/number-input/number-input.jsx +2 -2
- package/source/pagination/pagination.jsx +2 -2
- package/source/pin-input/pin-input-field.jsx +2 -2
- package/source/pin-input/pin-input-label.jsx +2 -2
- package/source/popover/popover-anchor.jsx +2 -2
- package/source/popover/popover-arrow-tip.jsx +2 -2
- package/source/popover/popover-arrow.jsx +2 -2
- package/source/popover/popover-close-trigger.jsx +2 -2
- package/source/popover/popover-content.jsx +6 -5
- package/source/popover/popover-description.jsx +2 -2
- package/source/popover/popover-positioner.jsx +7 -2
- package/source/popover/popover-title.jsx +2 -2
- package/source/popover/popover-trigger.jsx +5 -2
- package/source/popover/popover.jsx +10 -2
- package/source/presence/index.js +4 -1
- package/source/presence/presence-context.js +5 -0
- package/source/presence/presence-props-context.js +5 -0
- package/source/presence/presence.jsx +9 -28
- package/source/presence/use-presence.js +21 -4
- package/source/rating-group/rating-group-item.jsx +5 -4
- package/source/select/select-content.jsx +6 -5
- package/source/select/select-control.jsx +9 -1
- package/source/select/select-item-group-label.jsx +2 -2
- package/source/select/select-positioner.jsx +6 -1
- package/source/select/select.jsx +8 -3
- package/source/slider/index.js +3 -3
- package/source/slider/slider-thumb.jsx +2 -2
- package/source/slider/slider-value-text.jsx +10 -0
- package/source/splitter/splitter-panel.jsx +2 -2
- package/source/splitter/splitter-resize-trigger.jsx +2 -2
- package/source/splitter/splitter.jsx +2 -2
- package/source/switch/switch-label.jsx +2 -2
- package/source/switch/switch-thumb.jsx +2 -2
- package/source/tabs/tab-content.jsx +11 -8
- package/source/tabs/tab-indicator.jsx +2 -2
- package/source/tabs/tab-list.jsx +2 -2
- package/source/tabs/tab-trigger.jsx +2 -2
- package/source/tabs/tabs.jsx +7 -3
- package/source/toggle-group/toggle-group.jsx +2 -2
- package/source/tooltip/tooltip-arrow-tip.jsx +2 -2
- package/source/tooltip/tooltip-arrow.jsx +2 -2
- package/source/tooltip/tooltip-content.jsx +7 -6
- package/source/tooltip/tooltip-positioner.jsx +7 -2
- package/source/tooltip/tooltip-trigger.jsx +2 -2
- package/source/tooltip/tooltip.jsx +10 -2
- package/types/accordion/accordion-context.d.ts +3 -2
- package/types/accordion/accordion-item-content.d.ts +2 -2
- package/types/accordion/accordion-item-context.d.ts +3 -2
- package/types/accordion/accordion-item-indicator.d.ts +2 -1
- package/types/accordion/accordion-item-trigger.d.ts +2 -1
- package/types/accordion/accordion-item.d.ts +5 -4
- package/types/accordion/accordion.d.ts +3 -1
- package/types/accordion/use-accordion.d.ts +4 -2
- package/types/avatar/avatar-context.d.ts +3 -2
- package/types/avatar/avatar-fallback.d.ts +2 -1
- package/types/avatar/avatar-image.d.ts +2 -1
- package/types/avatar/avatar.d.ts +2 -1
- package/types/avatar/use-avatar.d.ts +4 -2
- package/types/carousel/carousel-context.d.ts +3 -2
- package/types/carousel/carousel-control.d.ts +2 -1
- package/types/carousel/carousel-indicator-group.d.ts +2 -1
- package/types/carousel/carousel-indicator.d.ts +2 -1
- package/types/carousel/carousel-next-trigger.d.ts +2 -1
- package/types/carousel/carousel-prev-trigger.d.ts +2 -1
- package/types/carousel/carousel-slide-group.d.ts +2 -1
- package/types/carousel/carousel-slide.d.ts +2 -1
- package/types/carousel/carousel-viewport.d.ts +2 -1
- package/types/carousel/carousel.d.ts +7 -3
- package/types/carousel/use-carousel.d.ts +4 -2
- package/types/checkbox/checkbox-context.d.ts +3 -2
- package/types/checkbox/checkbox-control.d.ts +2 -1
- package/types/checkbox/checkbox-indicator.d.ts +2 -1
- package/types/checkbox/checkbox-label.d.ts +2 -1
- package/types/checkbox/checkbox.d.ts +5 -5
- package/types/checkbox/use-checkbox.d.ts +4 -2
- package/types/color-picker/color-picker-transparency-grid.d.ts +2 -2
- package/types/color-picker/color-picker-value-text.d.ts +5 -0
- package/types/color-picker/color-picker-view.d.ts +7 -0
- package/types/color-picker/color-picker.d.ts +5 -3
- package/types/color-picker/index.d.ts +8 -4
- package/types/combobox/combobox-clear-trigger.d.ts +2 -1
- package/types/combobox/combobox-content.d.ts +2 -2
- package/types/combobox/combobox-context.d.ts +2 -1
- package/types/combobox/combobox-control.d.ts +2 -1
- package/types/combobox/combobox-input.d.ts +2 -1
- package/types/combobox/combobox-item-context.d.ts +3 -2
- package/types/combobox/combobox-item-group-label.d.ts +6 -2
- package/types/combobox/combobox-item-group.d.ts +2 -1
- package/types/combobox/combobox-item-indicator.d.ts +2 -1
- package/types/combobox/combobox-item-text.d.ts +2 -1
- package/types/combobox/combobox-item.d.ts +5 -4
- package/types/combobox/combobox-label.d.ts +2 -1
- package/types/combobox/combobox-positioner.d.ts +2 -1
- package/types/combobox/combobox-trigger.d.ts +2 -1
- package/types/combobox/combobox.d.ts +7 -6
- package/types/combobox/use-combobox.d.ts +2 -1
- package/types/date-picker/date-picker-context.d.ts +3 -2
- package/types/date-picker/date-picker-view.d.ts +4 -3
- package/types/date-picker/date-picker.d.ts +5 -3
- package/types/dialog/dialog-backdrop.d.ts +2 -2
- package/types/dialog/dialog-close-trigger.d.ts +2 -1
- package/types/dialog/dialog-content.d.ts +2 -2
- package/types/dialog/dialog-context.d.ts +3 -2
- package/types/dialog/dialog-description.d.ts +2 -1
- package/types/dialog/dialog-positioner.d.ts +2 -1
- package/types/dialog/dialog-title.d.ts +2 -1
- package/types/dialog/dialog-trigger.d.ts +2 -1
- package/types/dialog/dialog.d.ts +4 -3
- package/types/dialog/use-dialog.d.ts +4 -2
- package/types/editable/editable-area.d.ts +2 -1
- package/types/editable/editable-cancel-trigger.d.ts +2 -1
- package/types/editable/editable-context.d.ts +3 -2
- package/types/editable/editable-control.d.ts +2 -1
- package/types/editable/editable-edit-trigger.d.ts +2 -1
- package/types/editable/editable-input.d.ts +2 -1
- package/types/editable/editable-label.d.ts +2 -1
- package/types/editable/editable-preview.d.ts +2 -1
- package/types/editable/editable-submit-trigger.d.ts +2 -1
- package/types/editable/editable.d.ts +5 -5
- package/types/editable/use-editable.d.ts +4 -2
- package/types/environment/environment.d.ts +2 -2
- package/types/hover-card/hover-card-arrow-tip.d.ts +2 -1
- package/types/hover-card/hover-card-arrow.d.ts +2 -1
- package/types/hover-card/hover-card-content.d.ts +2 -2
- package/types/hover-card/hover-card-context.d.ts +3 -2
- package/types/hover-card/hover-card-positioner.d.ts +2 -1
- package/types/hover-card/hover-card-trigger.d.ts +2 -1
- package/types/hover-card/hover-card.d.ts +4 -3
- package/types/hover-card/use-hover-card.d.ts +4 -2
- package/types/menu/menu-arrow-tip.d.ts +2 -1
- package/types/menu/menu-arrow.d.ts +2 -1
- package/types/menu/menu-content.d.ts +2 -2
- package/types/menu/menu-context-trigger.d.ts +2 -1
- package/types/menu/menu-item-group-label.d.ts +5 -4
- package/types/menu/menu-item-group.d.ts +2 -1
- package/types/menu/menu-item.d.ts +2 -1
- package/types/menu/menu-option-item.d.ts +3 -2
- package/types/menu/menu-positioner.d.ts +2 -1
- package/types/menu/menu-separator.d.ts +2 -1
- package/types/menu/menu-trigger-item.d.ts +2 -1
- package/types/menu/menu-trigger.d.ts +2 -1
- package/types/menu/menu.d.ts +6 -9
- package/types/menu/use-menu.d.ts +2 -1
- package/types/number-input/number-input-context.d.ts +3 -2
- package/types/number-input/number-input-control.d.ts +2 -1
- package/types/number-input/number-input-decrement-trigger.d.ts +2 -1
- package/types/number-input/number-input-field.d.ts +2 -1
- package/types/number-input/number-input-increment-trigger.d.ts +2 -1
- package/types/number-input/number-input-label.d.ts +2 -1
- package/types/number-input/number-input-scrubber.d.ts +2 -1
- package/types/number-input/number-input.d.ts +2 -1
- package/types/number-input/use-number-input.d.ts +4 -2
- package/types/pagination/pagination-context.d.ts +3 -2
- package/types/pagination/pagination-ellipsis.d.ts +2 -1
- package/types/pagination/pagination-item.d.ts +2 -1
- package/types/pagination/pagination.d.ts +4 -3
- package/types/pagination/use-pagination.d.ts +4 -2
- package/types/pin-input/pin-input-context.d.ts +3 -2
- package/types/pin-input/pin-input-control.d.ts +2 -1
- package/types/pin-input/pin-input-field.d.ts +3 -2
- package/types/pin-input/pin-input-label.d.ts +2 -1
- package/types/pin-input/pin-input.d.ts +2 -1
- package/types/pin-input/use-pin-input.d.ts +4 -2
- package/types/popover/popover-anchor.d.ts +2 -1
- package/types/popover/popover-arrow-tip.d.ts +2 -1
- package/types/popover/popover-arrow.d.ts +2 -1
- package/types/popover/popover-close-trigger.d.ts +2 -1
- package/types/popover/popover-content.d.ts +2 -2
- package/types/popover/popover-context.d.ts +3 -2
- package/types/popover/popover-description.d.ts +2 -1
- package/types/popover/popover-indicator.d.ts +2 -1
- package/types/popover/popover-positioner.d.ts +2 -1
- package/types/popover/popover-title.d.ts +2 -1
- package/types/popover/popover-trigger.d.ts +2 -1
- package/types/popover/popover.d.ts +5 -4
- package/types/popover/use-popover.d.ts +4 -2
- package/types/presence/index.d.ts +5 -2
- package/types/presence/presence-context.d.ts +4 -0
- package/types/presence/presence-props-context.d.ts +4 -0
- package/types/presence/presence.d.ts +4 -15
- package/types/presence/split-presence-props.d.ts +2 -2
- package/types/presence/use-presence.d.ts +23 -2
- package/types/radio-group/radio-group-context.d.ts +3 -2
- package/types/radio-group/radio-group-indicator.d.ts +2 -1
- package/types/radio-group/radio-group-item-context.d.ts +3 -2
- package/types/radio-group/radio-group-item-control.d.ts +2 -1
- package/types/radio-group/radio-group-item-text.d.ts +2 -1
- package/types/radio-group/radio-group-item.d.ts +2 -1
- package/types/radio-group/radio-group-label.d.ts +2 -1
- package/types/radio-group/radio-group.d.ts +2 -1
- package/types/radio-group/use-radio-group.d.ts +4 -2
- package/types/rating-group/rating-group-context.d.ts +3 -2
- package/types/rating-group/rating-group-control.d.ts +6 -5
- package/types/rating-group/rating-group-item-context.d.ts +4 -2
- package/types/rating-group/rating-group-item.d.ts +6 -6
- package/types/rating-group/rating-group-label.d.ts +2 -1
- package/types/rating-group/rating-group.d.ts +2 -1
- package/types/rating-group/use-rating-group.d.ts +4 -2
- package/types/segment-group/segment-group-context.d.ts +3 -2
- package/types/segment-group/segment-group-indicator.d.ts +2 -1
- package/types/segment-group/segment-group-item-control.d.ts +2 -1
- package/types/segment-group/segment-group-item-text.d.ts +2 -1
- package/types/segment-group/segment-group-item.d.ts +2 -1
- package/types/segment-group/segment-group-label.d.ts +2 -1
- package/types/segment-group/segment-group.d.ts +2 -1
- package/types/segment-group/use-segment-group.d.ts +4 -2
- package/types/select/select-clear-trigger.d.ts +2 -1
- package/types/select/select-content.d.ts +2 -2
- package/types/select/select-context.d.ts +2 -1
- package/types/select/select-control.d.ts +2 -1
- package/types/select/select-indicator.d.ts +2 -1
- package/types/select/select-item-context.d.ts +2 -1
- package/types/select/select-item-group-label.d.ts +6 -2
- package/types/select/select-item-group.d.ts +2 -1
- package/types/select/select-item-indicator.d.ts +2 -1
- package/types/select/select-item-text.d.ts +2 -1
- package/types/select/select-item.d.ts +5 -4
- package/types/select/select-label.d.ts +2 -1
- package/types/select/select-positioner.d.ts +2 -1
- package/types/select/select-trigger.d.ts +2 -1
- package/types/select/select.d.ts +7 -6
- package/types/select/use-select.d.ts +2 -1
- package/types/slider/index.d.ts +4 -4
- package/types/slider/slider-context.d.ts +3 -2
- package/types/slider/slider-control.d.ts +2 -1
- package/types/slider/slider-label.d.ts +2 -1
- package/types/slider/slider-marker-group.d.ts +2 -1
- package/types/slider/slider-marker.d.ts +2 -1
- package/types/slider/slider-range.d.ts +2 -1
- package/types/slider/slider-thumb.d.ts +2 -1
- package/types/slider/slider-track.d.ts +2 -1
- package/types/slider/slider-value-text.d.ts +4 -0
- package/types/slider/slider.d.ts +4 -3
- package/types/slider/use-slider.d.ts +4 -2
- package/types/splitter/splitter-context.d.ts +3 -2
- package/types/splitter/splitter-panel.d.ts +2 -1
- package/types/splitter/splitter-resize-trigger.d.ts +2 -1
- package/types/splitter/splitter.d.ts +4 -3
- package/types/splitter/use-splitter.d.ts +4 -2
- package/types/switch/switch-context.d.ts +3 -2
- package/types/switch/switch-control.d.ts +2 -1
- package/types/switch/switch-label.d.ts +2 -1
- package/types/switch/switch-thumb.d.ts +2 -1
- package/types/switch/switch.d.ts +5 -5
- package/types/switch/use-switch.d.ts +4 -2
- package/types/tabs/tab-content.d.ts +2 -2
- package/types/tabs/tab-indicator.d.ts +2 -1
- package/types/tabs/tab-list.d.ts +2 -1
- package/types/tabs/tab-trigger.d.ts +2 -1
- package/types/tabs/tabs-context.d.ts +3 -2
- package/types/tabs/tabs.d.ts +3 -1
- package/types/tabs/use-tabs.d.ts +4 -2
- package/types/tags-input/tags-input-clear-trigger.d.ts +2 -1
- package/types/tags-input/tags-input-context.d.ts +3 -2
- package/types/tags-input/tags-input-control.d.ts +2 -1
- package/types/tags-input/tags-input-input.d.ts +2 -1
- package/types/tags-input/tags-input-item-context.d.ts +3 -2
- package/types/tags-input/tags-input-item-delete-trigger.d.ts +2 -1
- package/types/tags-input/tags-input-item-input.d.ts +2 -1
- package/types/tags-input/tags-input-item-text.d.ts +2 -1
- package/types/tags-input/tags-input-item.d.ts +5 -4
- package/types/tags-input/tags-input-label.d.ts +2 -1
- package/types/tags-input/tags-input.d.ts +5 -5
- package/types/tags-input/use-tags-input.d.ts +4 -2
- package/types/toast/toast-close-trigger.d.ts +2 -1
- package/types/toast/toast-description.d.ts +2 -1
- package/types/toast/toast-title.d.ts +2 -1
- package/types/toast/toast.d.ts +2 -1
- package/types/toggle-group/toggle-group-context.d.ts +3 -2
- package/types/toggle-group/toggle-group.d.ts +2 -1
- package/types/toggle-group/use-toggle-group.d.ts +4 -2
- package/types/tooltip/tooltip-arrow-tip.d.ts +2 -1
- package/types/tooltip/tooltip-arrow.d.ts +2 -1
- package/types/tooltip/tooltip-content.d.ts +2 -2
- package/types/tooltip/tooltip-context.d.ts +3 -2
- package/types/tooltip/tooltip-positioner.d.ts +2 -1
- package/types/tooltip/tooltip-trigger.d.ts +2 -1
- package/types/tooltip/tooltip.d.ts +6 -5
- package/types/tooltip/use-tooltip.d.ts +4 -2
- package/source/slider/slider-output.jsx +0 -10
- package/source/tabs/tab-presence.jsx +0 -6
- package/types/slider/slider-output.d.ts +0 -8
- package/types/tabs/tab-presence.d.ts +0 -4
- /package/source/date-picker/{use-date-picker.jsx → use-date-picker.js} +0 -0
- /package/source/radio-group/{use-radio-group.jsx → use-radio-group.js} +0 -0
- /package/source/rating-group/{use-rating-group.jsx → use-rating-group.js} +0 -0
- /package/source/segment-group/{use-segment-group.jsx → use-segment-group.js} +0 -0
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { usePopoverContext } from './popover-context';
|
|
4
4
|
export const PopoverCloseTrigger = (props) => {
|
|
5
5
|
const api = usePopoverContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.button {...
|
|
6
|
+
const mergedProps = mergeProps(() => api().closeTriggerProps, props);
|
|
7
|
+
return <ark.button {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show } from 'solid-js';
|
|
2
3
|
import { ark } from '../factory';
|
|
3
|
-
import {
|
|
4
|
+
import { usePresenceContext } from '../presence';
|
|
4
5
|
import { usePopoverContext } from './popover-context';
|
|
5
6
|
export const PopoverContent = (props) => {
|
|
6
|
-
const [presenceProps, localProps] = splitPresenceProps(props);
|
|
7
7
|
const api = usePopoverContext();
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const presenceApi = usePresenceContext();
|
|
9
|
+
const mergedProps = mergeProps(() => api().contentProps, () => presenceApi().presenceProps, props);
|
|
10
|
+
return (<Show when={!presenceApi().isUnmounted}>
|
|
10
11
|
<ark.div {...mergedProps}/>
|
|
11
|
-
</
|
|
12
|
+
</Show>);
|
|
12
13
|
};
|
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { usePopoverContext } from './popover-context';
|
|
4
4
|
export const PopoverDescription = (props) => {
|
|
5
5
|
const api = usePopoverContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.div {...
|
|
6
|
+
const mergedProps = mergeProps(() => api().descriptionProps, props);
|
|
7
|
+
return <ark.div {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show } from 'solid-js';
|
|
2
3
|
import { ark } from '../factory';
|
|
4
|
+
import { usePresenceContext } from '../presence';
|
|
3
5
|
import { usePopoverContext } from './popover-context';
|
|
4
6
|
export const PopoverPositioner = (props) => {
|
|
5
7
|
const api = usePopoverContext();
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
+
const presenceApi = usePresenceContext();
|
|
9
|
+
const mergedProps = mergeProps(() => api().positionerProps, props);
|
|
10
|
+
return (<Show when={!presenceApi().isUnmounted}>
|
|
11
|
+
<ark.div {...mergedProps}/>
|
|
12
|
+
</Show>);
|
|
8
13
|
};
|
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { usePopoverContext } from './popover-context';
|
|
4
4
|
export const PopoverTitle = (props) => {
|
|
5
5
|
const api = usePopoverContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.div {...
|
|
6
|
+
const mergedProps = mergeProps(() => api().titleProps, props);
|
|
7
|
+
return <ark.div {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
2
|
import { ark } from '../factory';
|
|
3
|
+
import { usePresenceContext } from '../presence';
|
|
3
4
|
import { usePopoverContext } from './popover-context';
|
|
4
5
|
export const PopoverTrigger = (props) => {
|
|
5
6
|
const api = usePopoverContext();
|
|
6
|
-
const
|
|
7
|
-
|
|
7
|
+
const presenceApi = usePresenceContext();
|
|
8
|
+
const mergedProps = mergeProps(() => api().triggerProps, () => ({ 'aria-controls': presenceApi().isUnmounted && null }), props);
|
|
9
|
+
// @ts-expect-error we want aria-controls to be null to remove them if the popover if lazy mounted
|
|
10
|
+
return <ark.button {...mergedProps}/>;
|
|
8
11
|
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
1
2
|
import { createSplitProps } from '../create-split-props';
|
|
3
|
+
import { PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
|
|
4
|
+
import { runIfFn } from '../run-if-fn';
|
|
2
5
|
import { PopoverProvider } from './popover-context';
|
|
3
6
|
import { usePopover } from './use-popover';
|
|
4
7
|
export const Popover = (props) => {
|
|
5
|
-
const [
|
|
8
|
+
const [presenceProps, popoverProps] = splitPresenceProps(props);
|
|
9
|
+
const [usePopoverProps, localProps] = createSplitProps()(popoverProps, [
|
|
6
10
|
'autoFocus',
|
|
7
11
|
'closeOnEsc',
|
|
8
12
|
'closeOnInteractOutside',
|
|
@@ -22,5 +26,9 @@ export const Popover = (props) => {
|
|
|
22
26
|
'positioning',
|
|
23
27
|
]);
|
|
24
28
|
const api = usePopover(usePopoverProps);
|
|
25
|
-
|
|
29
|
+
const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().isOpen })));
|
|
30
|
+
const getChildren = () => runIfFn(localProps.children, api);
|
|
31
|
+
return (<PopoverProvider value={api}>
|
|
32
|
+
<PresenceProvider value={apiPresence}>{getChildren()}</PresenceProvider>
|
|
33
|
+
</PopoverProvider>);
|
|
26
34
|
};
|
package/source/presence/index.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Presence as PresenceRoot } from './presence';
|
|
2
|
+
import { PresenceProvider, usePresenceContext } from './presence-context';
|
|
3
|
+
import { PresencePropsProvider, usePresencePropsContext, } from './presence-props-context';
|
|
2
4
|
import { splitPresenceProps } from './split-presence-props';
|
|
5
|
+
import { usePresence } from './use-presence';
|
|
3
6
|
const Presence = Object.assign(PresenceRoot, {
|
|
4
7
|
Root: PresenceRoot,
|
|
5
8
|
});
|
|
6
|
-
export { Presence, splitPresenceProps };
|
|
9
|
+
export { Presence, PresencePropsProvider, PresenceProvider, splitPresenceProps, usePresence, usePresenceContext, usePresencePropsContext, };
|
|
@@ -1,32 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show } from 'solid-js';
|
|
3
|
+
import { ark } from '../factory';
|
|
4
|
+
import { splitPresenceProps } from './split-presence-props';
|
|
4
5
|
import { usePresence } from './use-presence';
|
|
5
6
|
export const Presence = (props) => {
|
|
6
|
-
const [presenceProps, localProps] =
|
|
7
|
-
'onExitComplete',
|
|
8
|
-
'present',
|
|
9
|
-
]);
|
|
7
|
+
const [presenceProps, localProps] = splitPresenceProps(props);
|
|
10
8
|
const api = usePresence(presenceProps);
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
if (isPresent)
|
|
16
|
-
setWasEverPresent(true);
|
|
17
|
-
const children = getChildren();
|
|
18
|
-
if (children instanceof HTMLElement) {
|
|
19
|
-
api().setNode(children);
|
|
20
|
-
spread(children, {
|
|
21
|
-
['data-state']: presenceProps.present ? 'open' : 'closed',
|
|
22
|
-
hidden: !api().isPresent,
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
return (<>
|
|
27
|
-
{(!api().isPresent && !wasEverPresent() && localProps.lazyMount) ||
|
|
28
|
-
(localProps.unmountOnExit && !api().isPresent && wasEverPresent())
|
|
29
|
-
? null
|
|
30
|
-
: getChildren()}
|
|
31
|
-
</>);
|
|
9
|
+
const mergedProps = mergeProps(() => api().presenceProps, localProps);
|
|
10
|
+
return (<Show when={!api().isUnmounted}>
|
|
11
|
+
<ark.div {...mergedProps} data-scope="presence" data-part="root"/>
|
|
12
|
+
</Show>);
|
|
32
13
|
};
|
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
import * as presence from '@zag-js/presence';
|
|
2
2
|
import { normalizeProps, useMachine } from '@zag-js/solid';
|
|
3
|
-
import { createMemo } from 'solid-js';
|
|
3
|
+
import { createEffect, createMemo, createSignal, splitProps } from 'solid-js';
|
|
4
4
|
export const usePresence = (props) => {
|
|
5
|
-
const [
|
|
6
|
-
|
|
5
|
+
const [localProps, machineProps] = splitProps(props, ['lazyMount', 'unmountOnExit']);
|
|
6
|
+
const [wasEverPresent, setWasEverPresent] = createSignal(false);
|
|
7
|
+
const [state, send] = useMachine(presence.machine(machineProps), {
|
|
8
|
+
context: machineProps,
|
|
7
9
|
});
|
|
8
|
-
|
|
10
|
+
const api = createMemo(() => presence.connect(state, send, normalizeProps));
|
|
11
|
+
createEffect(() => {
|
|
12
|
+
const isPresent = api().isPresent;
|
|
13
|
+
if (isPresent)
|
|
14
|
+
setWasEverPresent(true);
|
|
15
|
+
});
|
|
16
|
+
return createMemo(() => ({
|
|
17
|
+
isUnmounted: (!api().isPresent && !wasEverPresent() && localProps.lazyMount) ||
|
|
18
|
+
(localProps.unmountOnExit && !api().isPresent && wasEverPresent()),
|
|
19
|
+
isPresent: api().isPresent,
|
|
20
|
+
presenceProps: {
|
|
21
|
+
ref: api().setNode,
|
|
22
|
+
hidden: !api().isPresent,
|
|
23
|
+
'data-state': machineProps.present ? 'open' : 'closed',
|
|
24
|
+
},
|
|
25
|
+
}));
|
|
9
26
|
};
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { createMemo } from 'solid-js';
|
|
2
3
|
import { createSplitProps } from '../create-split-props';
|
|
3
4
|
import { ark } from '../factory';
|
|
4
5
|
import { runIfFn } from '../run-if-fn';
|
|
5
6
|
import { useRatingGroupContext } from './rating-group-context';
|
|
6
7
|
import { RatingGroupItemProvider } from './rating-group-item-context';
|
|
7
8
|
export const RatingGroupItem = (props) => {
|
|
8
|
-
const [
|
|
9
|
+
const [itemProps, localProps] = createSplitProps()(props, ['index']);
|
|
9
10
|
const api = useRatingGroupContext();
|
|
10
|
-
const itemState = api().getItemState(
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const itemState = createMemo(() => api().getItemState(itemProps));
|
|
12
|
+
const getChildren = () => runIfFn(localProps.children, itemState);
|
|
13
|
+
const mergedProps = mergeProps(() => api().getItemProps(itemProps), localProps);
|
|
13
14
|
return (<RatingGroupItemProvider value={itemState}>
|
|
14
15
|
<ark.span {...mergedProps}>{getChildren()}</ark.span>
|
|
15
16
|
</RatingGroupItemProvider>);
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show } from 'solid-js';
|
|
2
3
|
import { ark } from '../factory';
|
|
3
|
-
import {
|
|
4
|
+
import { usePresenceContext } from '../presence';
|
|
4
5
|
import { useSelectContext } from './select-context';
|
|
5
6
|
export const SelectContent = (props) => {
|
|
6
|
-
const [presenceProps, localProps] = splitPresenceProps(props);
|
|
7
7
|
const api = useSelectContext();
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const presenceApi = usePresenceContext();
|
|
9
|
+
const mergedProps = mergeProps(() => api().contentProps, () => presenceApi().presenceProps, props);
|
|
10
|
+
return (<Show when={!presenceApi().isUnmounted}>
|
|
10
11
|
<ark.div {...mergedProps}/>
|
|
11
|
-
</
|
|
12
|
+
</Show>);
|
|
12
13
|
};
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Index } from 'solid-js';
|
|
2
3
|
import { ark } from '../factory';
|
|
3
4
|
import { useSelectContext } from './select-context';
|
|
4
5
|
export const SelectControl = (props) => {
|
|
5
6
|
const api = useSelectContext();
|
|
6
7
|
const mergedProps = mergeProps(() => api().controlProps, props);
|
|
7
|
-
return
|
|
8
|
+
return (<>
|
|
9
|
+
<ark.div {...mergedProps}/>
|
|
10
|
+
<select {...api().hiddenSelectProps}>
|
|
11
|
+
<Index each={api().collection.toArray()}>
|
|
12
|
+
{(option) => <option value={option().value}>{option().label}</option>}
|
|
13
|
+
</Index>
|
|
14
|
+
</select>
|
|
15
|
+
</>);
|
|
8
16
|
};
|
|
@@ -3,8 +3,8 @@ import { createSplitProps } from '../create-split-props';
|
|
|
3
3
|
import { ark } from '../factory';
|
|
4
4
|
import { useSelectContext } from './select-context';
|
|
5
5
|
export const SelectItemGroupLabel = (props) => {
|
|
6
|
-
const [labelProps, localProps] = createSplitProps()(props, ['
|
|
6
|
+
const [labelProps, localProps] = createSplitProps()(props, ['for']);
|
|
7
7
|
const api = useSelectContext();
|
|
8
|
-
const mergedProps = mergeProps(() => api().getItemGroupLabelProps(labelProps), localProps);
|
|
8
|
+
const mergedProps = mergeProps(() => api().getItemGroupLabelProps({ htmlFor: labelProps.for }), localProps);
|
|
9
9
|
return <ark.div {...mergedProps}/>;
|
|
10
10
|
};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show } from 'solid-js';
|
|
2
3
|
import { ark } from '../factory';
|
|
4
|
+
import { usePresenceContext } from '../presence';
|
|
3
5
|
import { useSelectContext } from './select-context';
|
|
4
6
|
export const SelectPositioner = (props) => {
|
|
5
7
|
const api = useSelectContext();
|
|
8
|
+
const presenceApi = usePresenceContext();
|
|
6
9
|
const mergedProps = mergeProps(() => api().positionerProps, props);
|
|
7
|
-
return <
|
|
10
|
+
return (<Show when={!presenceApi().isUnmounted}>
|
|
11
|
+
<ark.div {...mergedProps}/>
|
|
12
|
+
</Show>);
|
|
8
13
|
};
|
package/source/select/select.jsx
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
2
|
import { createSplitProps } from '../create-split-props';
|
|
3
3
|
import { ark } from '../factory';
|
|
4
|
+
import { PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
|
|
4
5
|
import { runIfFn } from '../run-if-fn';
|
|
5
6
|
import { SelectProvider } from './select-context';
|
|
6
7
|
import { useSelect } from './use-select';
|
|
7
8
|
export const Select = (props) => {
|
|
8
|
-
const [
|
|
9
|
+
const [presenceProps, selectProps] = splitPresenceProps(props);
|
|
10
|
+
const [useSelectProps, localProps] = createSplitProps()(selectProps, [
|
|
9
11
|
'closeOnSelect',
|
|
10
12
|
'dir',
|
|
11
13
|
'disabled',
|
|
@@ -34,10 +36,13 @@ export const Select = (props) => {
|
|
|
34
36
|
'selectOnBlur',
|
|
35
37
|
'value',
|
|
36
38
|
]);
|
|
37
|
-
const api = useSelect(
|
|
39
|
+
const api = useSelect(useSelectProps);
|
|
40
|
+
const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().isOpen })));
|
|
38
41
|
const mergedProps = mergeProps(() => api().rootProps, localProps);
|
|
39
42
|
const getChildren = () => runIfFn(localProps.children, api);
|
|
40
43
|
return (<SelectProvider value={api}>
|
|
41
|
-
<
|
|
44
|
+
<PresenceProvider value={apiPresence}>
|
|
45
|
+
<ark.div {...mergedProps}>{getChildren()}</ark.div>
|
|
46
|
+
</PresenceProvider>
|
|
42
47
|
</SelectProvider>);
|
|
43
48
|
};
|
package/source/slider/index.js
CHANGED
|
@@ -4,19 +4,19 @@ import { SliderControl } from './slider-control';
|
|
|
4
4
|
import { SliderLabel } from './slider-label';
|
|
5
5
|
import { SliderMarker } from './slider-marker';
|
|
6
6
|
import { SliderMarkerGroup } from './slider-marker-group';
|
|
7
|
-
import { SliderOutput } from './slider-output';
|
|
8
7
|
import { SliderRange } from './slider-range';
|
|
9
8
|
import { SliderThumb } from './slider-thumb';
|
|
10
9
|
import { SliderTrack } from './slider-track';
|
|
10
|
+
import { SliderValueText } from './slider-value-text';
|
|
11
11
|
const Slider = Object.assign(SliderRoot, {
|
|
12
12
|
Root: SliderRoot,
|
|
13
13
|
Control: SliderControl,
|
|
14
14
|
Label: SliderLabel,
|
|
15
15
|
Marker: SliderMarker,
|
|
16
16
|
MarkerGroup: SliderMarkerGroup,
|
|
17
|
-
Output: SliderOutput,
|
|
18
17
|
Range: SliderRange,
|
|
19
18
|
Thumb: SliderThumb,
|
|
20
19
|
Track: SliderTrack,
|
|
20
|
+
ValueText: SliderValueText,
|
|
21
21
|
});
|
|
22
|
-
export { Slider, SliderControl, SliderLabel, SliderMarker, SliderMarkerGroup,
|
|
22
|
+
export { Slider, SliderControl, SliderLabel, SliderMarker, SliderMarkerGroup, SliderRange, SliderThumb, SliderTrack, SliderValueText, useSliderContext, };
|
|
@@ -5,6 +5,6 @@ import { useSliderContext } from './slider-context';
|
|
|
5
5
|
export const SliderThumb = (props) => {
|
|
6
6
|
const [thumbProps, localProps] = createSplitProps()(props, ['index']);
|
|
7
7
|
const api = useSliderContext();
|
|
8
|
-
const
|
|
9
|
-
return <ark.div {...
|
|
8
|
+
const mergedProps = mergeProps(() => api().getThumbProps(thumbProps), localProps);
|
|
9
|
+
return <ark.div {...mergedProps}/>;
|
|
10
10
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { children } from 'solid-js';
|
|
3
|
+
import { ark } from '../factory';
|
|
4
|
+
import { useSliderContext } from './slider-context';
|
|
5
|
+
export const SliderValueText = (props) => {
|
|
6
|
+
const api = useSliderContext();
|
|
7
|
+
const mergedProps = mergeProps(() => api().valueTextProps, props);
|
|
8
|
+
const getChildren = children(() => props.children);
|
|
9
|
+
return <ark.div {...mergedProps}>{getChildren() || api().value.join(',')}</ark.div>;
|
|
10
|
+
};
|
|
@@ -5,6 +5,6 @@ import { useSplitterContext } from './splitter-context';
|
|
|
5
5
|
export const SplitterPanel = (props) => {
|
|
6
6
|
const [panelParams, restProps] = createSplitProps()(props, ['id', 'snapSize']);
|
|
7
7
|
const api = useSplitterContext();
|
|
8
|
-
const
|
|
9
|
-
return <ark.div {...
|
|
8
|
+
const mergedProps = mergeProps(() => api().getPanelProps(panelParams), restProps);
|
|
9
|
+
return <ark.div {...mergedProps}/>;
|
|
10
10
|
};
|
|
@@ -9,6 +9,6 @@ export const SplitterResizeTrigger = (props) => {
|
|
|
9
9
|
'id',
|
|
10
10
|
'step',
|
|
11
11
|
]);
|
|
12
|
-
const
|
|
13
|
-
return <ark.button {...
|
|
12
|
+
const mergedProps = mergeProps(() => api().getResizeTriggerProps(triggerParams), restProps);
|
|
13
|
+
return <ark.button {...mergedProps}/>;
|
|
14
14
|
};
|
|
@@ -18,8 +18,8 @@ export const Splitter = (props) => {
|
|
|
18
18
|
]);
|
|
19
19
|
const api = useSplitter(splitterParams);
|
|
20
20
|
const getChildren = () => runIfFn(localProps.children, api);
|
|
21
|
-
const
|
|
21
|
+
const mergedProps = mergeProps(() => api().rootProps, localProps);
|
|
22
22
|
return (<SplitterProvider value={api}>
|
|
23
|
-
<ark.div {...
|
|
23
|
+
<ark.div {...mergedProps}>{getChildren()}</ark.div>
|
|
24
24
|
</SplitterProvider>);
|
|
25
25
|
};
|
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { useSwitchContext } from './switch-context';
|
|
4
4
|
export const SwitchLabel = (props) => {
|
|
5
5
|
const checkbox = useSwitchContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.span {...
|
|
6
|
+
const mergedProps = mergeProps(() => checkbox().labelProps, props);
|
|
7
|
+
return <ark.span {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { useSwitchContext } from './switch-context';
|
|
4
4
|
export const SwitchThumb = (props) => {
|
|
5
5
|
const checkbox = useSwitchContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.span {...
|
|
6
|
+
const mergedProps = mergeProps(() => checkbox().thumbProps, props);
|
|
7
|
+
return <ark.span {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show } from 'solid-js';
|
|
2
3
|
import { createSplitProps } from '../create-split-props';
|
|
3
4
|
import { ark } from '../factory';
|
|
4
|
-
import {
|
|
5
|
-
import { TabPresence } from './tab-presence';
|
|
5
|
+
import { PresenceProvider, usePresence, usePresencePropsContext } from '../presence';
|
|
6
6
|
import { useTabsContext } from './tabs-context';
|
|
7
7
|
export const TabContent = (props) => {
|
|
8
|
-
const [
|
|
9
|
-
const [getContentProps, restProps] = createSplitProps()(localProps, ['value']);
|
|
8
|
+
const [contentProps, localProps] = createSplitProps()(props, ['value']);
|
|
10
9
|
const api = useTabsContext();
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
const presenceProps = usePresencePropsContext();
|
|
11
|
+
const presenceApi = usePresence(mergeProps(presenceProps, () => ({ present: api().value === contentProps.value })));
|
|
12
|
+
const mergedProps = mergeProps(() => api().getContentProps(contentProps), () => presenceApi().presenceProps, localProps);
|
|
13
|
+
return (<PresenceProvider value={presenceApi}>
|
|
14
|
+
<Show when={!presenceApi().isUnmounted}>
|
|
15
|
+
<ark.div {...mergedProps}/>
|
|
16
|
+
</Show>
|
|
17
|
+
</PresenceProvider>);
|
|
15
18
|
};
|
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { useTabsContext } from './tabs-context';
|
|
4
4
|
export const TabIndicator = (props) => {
|
|
5
5
|
const api = useTabsContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.div {...
|
|
6
|
+
const mergedProps = mergeProps(() => api().indicatorProps, props);
|
|
7
|
+
return <ark.div {...mergedProps}/>;
|
|
8
8
|
};
|
package/source/tabs/tab-list.jsx
CHANGED
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { useTabsContext } from './tabs-context';
|
|
4
4
|
export const TabList = (props) => {
|
|
5
5
|
const api = useTabsContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.div {...
|
|
6
|
+
const mergedProps = mergeProps(() => api().tablistProps, props);
|
|
7
|
+
return <ark.div {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -5,6 +5,6 @@ import { useTabsContext } from './tabs-context';
|
|
|
5
5
|
export const TabTrigger = (props) => {
|
|
6
6
|
const [tabParams, restProps] = createSplitProps()(props, ['disabled', 'value']);
|
|
7
7
|
const api = useTabsContext();
|
|
8
|
-
const
|
|
9
|
-
return <ark.button {...
|
|
8
|
+
const mergedProps = mergeProps(() => api().getTriggerProps(tabParams), restProps);
|
|
9
|
+
return <ark.button {...mergedProps}/>;
|
|
10
10
|
};
|
package/source/tabs/tabs.jsx
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
2
|
import { createSplitProps } from '../create-split-props';
|
|
3
3
|
import { ark } from '../factory';
|
|
4
|
+
import { PresencePropsProvider, splitPresenceProps } from '../presence';
|
|
4
5
|
import { TabsProvider } from './tabs-context';
|
|
5
6
|
import { useTabs } from './use-tabs';
|
|
6
7
|
export const Tabs = (props) => {
|
|
7
|
-
const [
|
|
8
|
+
const [presenceProps, tabsProps] = splitPresenceProps(props);
|
|
9
|
+
const [tabsParams, restProps] = createSplitProps()(tabsProps, [
|
|
8
10
|
'activationMode',
|
|
9
11
|
'dir',
|
|
10
12
|
'getRootNode',
|
|
@@ -18,8 +20,10 @@ export const Tabs = (props) => {
|
|
|
18
20
|
'value',
|
|
19
21
|
]);
|
|
20
22
|
const api = useTabs(tabsParams);
|
|
21
|
-
const
|
|
23
|
+
const mergedProps = mergeProps(() => api().rootProps, restProps);
|
|
22
24
|
return (<TabsProvider value={api}>
|
|
23
|
-
<
|
|
25
|
+
<PresencePropsProvider value={presenceProps}>
|
|
26
|
+
<ark.div {...mergedProps}/>
|
|
27
|
+
</PresencePropsProvider>
|
|
24
28
|
</TabsProvider>);
|
|
25
29
|
};
|
|
@@ -18,8 +18,8 @@ export const ToggleGroup = (props) => {
|
|
|
18
18
|
'value',
|
|
19
19
|
]);
|
|
20
20
|
const api = useToggleGroup(groupParams);
|
|
21
|
-
const
|
|
21
|
+
const mergedProps = mergeProps(() => api().rootProps, restProps);
|
|
22
22
|
return (<ToggleGroupProvider value={api}>
|
|
23
|
-
<ark.div {...
|
|
23
|
+
<ark.div {...mergedProps}/>
|
|
24
24
|
</ToggleGroupProvider>);
|
|
25
25
|
};
|
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { useTooltipContext } from './tooltip-context';
|
|
4
4
|
export const TooltipArrowTip = (props) => {
|
|
5
5
|
const api = useTooltipContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.div {...
|
|
6
|
+
const mergedProps = mergeProps(() => api().arrowTipProps, props);
|
|
7
|
+
return <ark.div {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { useTooltipContext } from './tooltip-context';
|
|
4
4
|
export const TooltipArrow = (props) => {
|
|
5
5
|
const tooltip = useTooltipContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.div {...
|
|
6
|
+
const mergedProps = mergeProps(() => tooltip().arrowProps, props);
|
|
7
|
+
return <ark.div {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show } from 'solid-js';
|
|
2
3
|
import { ark } from '../factory';
|
|
3
|
-
import {
|
|
4
|
+
import { usePresenceContext } from '../presence';
|
|
4
5
|
import { useTooltipContext } from './tooltip-context';
|
|
5
6
|
export const TooltipContent = (props) => {
|
|
6
|
-
const [presenceProps, localProps] = splitPresenceProps(props);
|
|
7
7
|
const api = useTooltipContext();
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
const presenceApi = usePresenceContext();
|
|
9
|
+
const mergedProps = mergeProps(() => api().contentProps, () => presenceApi().presenceProps, props);
|
|
10
|
+
return (<Show when={!presenceApi().isUnmounted}>
|
|
11
|
+
<ark.div {...mergedProps}/>
|
|
12
|
+
</Show>);
|
|
12
13
|
};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { mergeProps } from '@zag-js/solid';
|
|
2
|
+
import { Show } from 'solid-js';
|
|
2
3
|
import { ark } from '../factory';
|
|
4
|
+
import { usePresenceContext } from '../presence';
|
|
3
5
|
import { useTooltipContext } from './tooltip-context';
|
|
4
6
|
export const TooltipPositioner = (props) => {
|
|
5
7
|
const api = useTooltipContext();
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
+
const presenceApi = usePresenceContext();
|
|
9
|
+
const mergedProps = mergeProps(() => api().positionerProps, props);
|
|
10
|
+
return (<Show when={!presenceApi().isUnmounted}>
|
|
11
|
+
<ark.div {...mergedProps}/>
|
|
12
|
+
</Show>);
|
|
8
13
|
};
|
|
@@ -3,6 +3,6 @@ import { ark } from '../factory';
|
|
|
3
3
|
import { useTooltipContext } from './tooltip-context';
|
|
4
4
|
export const TooltipTrigger = (props) => {
|
|
5
5
|
const api = useTooltipContext();
|
|
6
|
-
const
|
|
7
|
-
return <ark.button {...
|
|
6
|
+
const mergedProps = mergeProps(() => api().triggerProps, props);
|
|
7
|
+
return <ark.button {...mergedProps}/>;
|
|
8
8
|
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { mergeProps } from '@zag-js/solid';
|
|
1
2
|
import { createSplitProps } from '../create-split-props';
|
|
3
|
+
import { PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
|
|
4
|
+
import { runIfFn } from '../run-if-fn';
|
|
2
5
|
import { TooltipProvider } from './tooltip-context';
|
|
3
6
|
import { useTooltip } from './use-tooltip';
|
|
4
7
|
export const Tooltip = (props) => {
|
|
5
|
-
const [
|
|
8
|
+
const [presenceProps, tooltipProps] = splitPresenceProps(props);
|
|
9
|
+
const [useTooltipProps, localProps] = createSplitProps()(tooltipProps, [
|
|
6
10
|
'aria-label',
|
|
7
11
|
'closeDelay',
|
|
8
12
|
'closeOnEsc',
|
|
@@ -19,5 +23,9 @@ export const Tooltip = (props) => {
|
|
|
19
23
|
'positioning',
|
|
20
24
|
]);
|
|
21
25
|
const api = useTooltip(useTooltipProps);
|
|
22
|
-
|
|
26
|
+
const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().isOpen })));
|
|
27
|
+
const getChildren = () => runIfFn(localProps.children, api);
|
|
28
|
+
return (<TooltipProvider value={api}>
|
|
29
|
+
<PresenceProvider value={apiPresence}>{getChildren()}</PresenceProvider>
|
|
30
|
+
</TooltipProvider>);
|
|
23
31
|
};
|