ropav 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -1
- package/dist/accordion.css +17 -17
- package/dist/accordion.js +123 -155
- package/dist/alert.css +18 -18
- package/dist/alert.js +10 -11
- package/dist/ancestry.js +136 -0
- package/dist/aria.js +14 -0
- package/dist/aspect-ratio.js +1 -1
- package/dist/attributes.js +9 -0
- package/dist/attributes2.js +29 -0
- package/dist/avatar.css +19 -19
- package/dist/avatar.js +9 -17
- package/dist/badge.css +16 -16
- package/dist/badge.js +5 -5
- package/dist/button-group.js +1 -1
- package/dist/button-link.js +4 -3
- package/dist/button.js +4 -3
- package/dist/button.scss_vue_type_style_index_0_src_true_lang.js +1 -1
- package/dist/calendar.css +173 -0
- package/dist/calendar.js +714 -0
- package/dist/calendar2.js +37 -0
- package/dist/card.js +1 -1
- package/dist/checkbox.css +32 -32
- package/dist/checkbox.js +22 -28
- package/dist/chevron-left.js +12 -0
- package/dist/collapse.css +6 -6
- package/dist/collapse.js +7 -6
- package/dist/collectionNavigation.js +2 -99
- package/dist/color-input.css +19 -19
- package/dist/color-input.js +14 -13
- package/dist/color-picker.css +40 -40
- package/dist/color-picker.js +247 -276
- package/dist/color-picker2.js +1 -9
- package/dist/color-swatch.css +4 -4
- package/dist/color-swatch.js +6 -8
- package/dist/color.js +5 -10
- package/dist/combobox.css +251 -0
- package/dist/combobox.js +410 -0
- package/dist/componentColors.js +125 -84
- package/dist/componentRef.js +26 -0
- package/dist/components/accordion/accordionContext.d.ts +3 -0
- package/dist/components/accordion/accordionModel.d.ts +14 -0
- package/dist/components/accordion/index.d.ts +2 -1
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/accordion/types.d.ts +1 -2
- package/dist/components/accordion/useAccordion.d.ts +2 -2
- package/dist/components/accordion/useAccordionItem.d.ts +2 -0
- package/dist/components/calendar/calendar.d.ts +30 -0
- package/dist/components/calendar/calendarBehavior.d.ts +49 -0
- package/dist/components/calendar/index.d.ts +3 -0
- package/dist/components/calendar/index.js +3 -0
- package/dist/components/calendar/types.d.ts +53 -0
- package/dist/components/calendar/useCalendar.d.ts +24 -0
- package/dist/components/checkbox/useCheckbox.d.ts +1 -2
- package/dist/components/color-picker/index.js +2 -2
- package/dist/components/color-picker/types.d.ts +2 -2
- package/dist/components/color-picker/useColorPickerDrag.d.ts +1 -1
- package/dist/components/color-picker/useColorPickerSaturation.d.ts +22 -0
- package/dist/components/color-picker/useColorPickerSlider.d.ts +20 -0
- package/dist/components/color-picker/useColorPickerValue.d.ts +1 -1
- package/dist/components/combobox/combobox.d.ts +29 -0
- package/dist/components/combobox/comboboxModel.d.ts +4 -0
- package/dist/components/combobox/index.d.ts +3 -0
- package/dist/components/combobox/index.js +2 -0
- package/dist/components/combobox/types.d.ts +43 -0
- package/dist/components/combobox/useCombobox.d.ts +45 -0
- package/dist/components/date-picker/date-picker.d.ts +33 -0
- package/dist/components/date-picker/datePickerModel.d.ts +10 -0
- package/dist/components/date-picker/index.d.ts +4 -0
- package/dist/components/date-picker/index.js +2 -0
- package/dist/components/date-picker/types.d.ts +57 -0
- package/dist/components/date-picker/useDatePicker.d.ts +29 -0
- package/dist/components/date-picker/useDatePickerValueState.d.ts +21 -0
- package/dist/components/dialog/{dialog-core.d.ts → dialogContext.d.ts} +1 -5
- package/dist/components/dialog/useDialogContentInteractions.d.ts +18 -0
- package/dist/components/dialog/useDialogRootState.d.ts +19 -0
- package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +2 -2
- package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +1 -1
- package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +1 -1
- package/dist/components/dropdown-menu/dropdown-menu-model.d.ts +8 -0
- package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +2 -2
- package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +2 -2
- package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +1 -1
- package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.d.ts +2 -2
- package/dist/components/dropdown-menu/{dropdown-menu-primitive-core.d.ts → dropdownMenuContext.d.ts} +17 -30
- package/dist/components/dropdown-menu/dropdownMenuDataModel.d.ts +20 -0
- package/dist/components/dropdown-menu/dropdownMenuInteraction.d.ts +3 -0
- package/dist/components/dropdown-menu/dropdownMenuInteractionNavigation.d.ts +24 -0
- package/dist/components/dropdown-menu/dropdownMenuInteractionRegistry.d.ts +42 -0
- package/dist/components/dropdown-menu/dropdownMenuInteractionTypes.d.ts +114 -0
- package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -11
- package/dist/components/dropdown-menu/useDropdownMenuContextTrigger.d.ts +9 -0
- package/dist/components/dropdown-menu/useDropdownMenuDataController.d.ts +35 -0
- package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +24 -0
- package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +6 -5
- package/dist/components/dropdown-menu/useDropdownMenuInteractionDismissal.d.ts +17 -0
- package/dist/components/dropdown-menu/useDropdownMenuInteractionKeyboard.d.ts +19 -0
- package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +0 -1
- package/dist/components/dropdown-menu/useDropdownMenuPresentation.d.ts +28 -0
- package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +2 -2
- package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +1 -1
- package/dist/components/dropdown-menu/useDropdownMenuTargetBindings.d.ts +19 -0
- package/dist/components/dropzone/dropzone.d.ts +31 -0
- package/dist/components/dropzone/dropzoneModel.d.ts +16 -0
- package/dist/components/dropzone/index.d.ts +3 -0
- package/dist/components/dropzone/index.js +2 -0
- package/dist/components/dropzone/types.d.ts +56 -0
- package/dist/components/dropzone/useDropzone.d.ts +25 -0
- package/dist/components/file-input/file-input.d.ts +29 -0
- package/dist/components/file-input/index.d.ts +3 -0
- package/dist/components/file-input/index.js +2 -0
- package/dist/components/file-input/types.d.ts +37 -0
- package/dist/components/file-input/useFileInput.d.ts +15 -0
- package/dist/components/floating/index.js +2 -2
- package/dist/components/floating/useFloatingPosition.d.ts +1 -14
- package/dist/components/floating/useFloatingTargetLifecycle.d.ts +32 -0
- package/dist/components/floating/useHoverDisclosure.d.ts +10 -0
- package/dist/components/hover-card/hover-card.d.ts +25 -0
- package/dist/components/hover-card/index.d.ts +3 -0
- package/dist/components/hover-card/index.js +2 -0
- package/dist/components/hover-card/types.d.ts +45 -0
- package/dist/components/hover-card/useHoverCard.d.ts +22 -0
- package/dist/components/hover-card/useHoverCardDisclosure.d.ts +19 -0
- package/dist/components/multi-select/index.d.ts +3 -0
- package/dist/components/multi-select/index.js +2 -0
- package/dist/components/multi-select/multi-select.d.ts +30 -0
- package/dist/components/multi-select/multiSelectModel.d.ts +3 -0
- package/dist/components/multi-select/types.d.ts +49 -0
- package/dist/components/multi-select/useMultiSelect.d.ts +46 -0
- package/dist/components/number-input/numberInputModel.d.ts +15 -0
- package/dist/components/number-input/useNumberInput.d.ts +3 -19
- package/dist/components/pagination/index.d.ts +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/pagination/paginationModel.d.ts +4 -0
- package/dist/components/pagination/types.d.ts +15 -0
- package/dist/components/pagination/usePagination.d.ts +3 -19
- package/dist/components/popover/usePopoverBindings.d.ts +13 -0
- package/dist/components/progress/progressModel.d.ts +8 -0
- package/dist/components/progress/useProgress.d.ts +0 -6
- package/dist/components/radio/useRadio.d.ts +1 -2
- package/dist/components/scroll-area/scroll-area.d.ts +1 -1
- package/dist/components/scroll-area/scrollAreaModel.d.ts +64 -0
- package/dist/components/scroll-area/useScrollArea.d.ts +70 -53
- package/dist/components/scroll-area/{useScrollAreaPresentation.d.ts → useScrollAreaAttributes.d.ts} +37 -17
- package/dist/components/scroll-area/useScrollAreaDerivedState.d.ts +8 -0
- package/dist/components/scroll-area/useScrollAreaMeasurement.d.ts +35 -0
- package/dist/components/scroll-area/useScrollAreaPointer.d.ts +11 -9
- package/dist/components/scroll-area/useScrollAreaVisibility.d.ts +15 -20
- package/dist/components/segmented-control/index.d.ts +3 -0
- package/dist/components/segmented-control/index.js +2 -0
- package/dist/components/segmented-control/segmented-control.d.ts +26 -0
- package/dist/components/segmented-control/types.d.ts +47 -0
- package/dist/components/segmented-control/useSegmentedControl.d.ts +15 -0
- package/dist/components/select/useSelect.d.ts +31 -19
- package/dist/components/slider/rangeSliderModel.d.ts +41 -0
- package/dist/components/slider/{sliderCore.d.ts → sliderModel.d.ts} +0 -1
- package/dist/components/slider/useRangeSlider.d.ts +9 -17
- package/dist/components/slider/useRangeSliderPointer.d.ts +1 -1
- package/dist/components/slider/useRangeSliderValueState.d.ts +40 -0
- package/dist/components/slider/useSlider.d.ts +7 -13
- package/dist/components/slider/useSliderPointerPreview.d.ts +22 -0
- package/dist/components/slider/useSliderTooltipState.d.ts +40 -0
- package/dist/components/slider/useSliderValueState.d.ts +33 -0
- package/dist/components/tags-input/index.d.ts +3 -0
- package/dist/components/tags-input/index.js +2 -0
- package/dist/components/tags-input/tags-input.d.ts +27 -0
- package/dist/components/tags-input/tagsInputModel.d.ts +12 -0
- package/dist/components/tags-input/types.d.ts +37 -0
- package/dist/components/tags-input/useTagsInput.d.ts +23 -0
- package/dist/components/teleport-provider/index.js +1 -1
- package/dist/components/teleport-provider/useTeleportTarget.d.ts +1 -2
- package/dist/components/toast/useToastLifecycle.d.ts +19 -0
- package/dist/components/tooltip/useTooltip.d.ts +1 -2
- package/dist/components/tooltip/useTooltipTargetBindings.d.ts +12 -0
- package/dist/css.js +12 -0
- package/dist/date-picker.css +49 -0
- package/dist/date-picker.js +809 -0
- package/dist/dialog.js +215 -218
- package/dist/direction.js +6 -0
- package/dist/dropdown-menu.css +21 -3
- package/dist/dropdown-menu.js +1626 -1185
- package/dist/dropzone.css +135 -0
- package/dist/dropzone.js +431 -0
- package/dist/events.js +59 -0
- package/dist/field.css +8 -8
- package/dist/field.js +13 -25
- package/dist/file-input.css +135 -0
- package/dist/file-input.js +198 -0
- package/dist/floatingOffset.js +11 -0
- package/dist/focus-trap.js +7 -5
- package/dist/focusNavigation.js +37 -0
- package/dist/hover-card.css +80 -0
- package/dist/hover-card.js +402 -0
- package/dist/icon-button.css +8 -8
- package/dist/icon-button.js +7 -6
- package/dist/index.d.ts +9 -0
- package/dist/index.js +20 -9
- package/dist/input.css +24 -24
- package/dist/input.js +19 -31
- package/dist/interactive.js +18 -0
- package/dist/internal/composables/useOverlayLayer.d.ts +12 -0
- package/dist/modal.js +2 -2
- package/dist/multi-select.css +316 -0
- package/dist/multi-select.js +481 -0
- package/dist/nativeChoice.js +169 -0
- package/dist/number-input.css +18 -18
- package/dist/number-input.js +44 -44
- package/dist/number.js +22 -0
- package/dist/overlay.js +3 -2
- package/dist/pagination.css +28 -28
- package/dist/pagination.js +66 -73
- package/dist/pointerSession.js +130 -0
- package/dist/popover.css +55 -37
- package/dist/popover.js +75 -101
- package/dist/progress.js +10 -13
- package/dist/query.js +40 -0
- package/dist/radio.css +18 -18
- package/dist/radio.js +30 -36
- package/dist/rafScheduler.js +34 -0
- package/dist/scroll-area.css +28 -28
- package/dist/scroll-area.js +540 -554
- package/dist/segmented-control.css +176 -0
- package/dist/segmented-control.js +382 -0
- package/dist/select.css +50 -48
- package/dist/select.js +131 -289
- package/dist/slider.css +191 -191
- package/dist/slider.js +720 -706
- package/dist/styles-api.d.ts +0 -1
- package/dist/styles-api.js +1 -4
- package/dist/switch.css +17 -17
- package/dist/switch.js +14 -15
- package/dist/tabs.css +43 -43
- package/dist/tabs.js +29 -56
- package/dist/tags-input.css +197 -0
- package/dist/tags-input.js +380 -0
- package/dist/text.js +17 -0
- package/dist/textarea.css +26 -26
- package/dist/textarea.js +21 -32
- package/dist/toast.css +26 -26
- package/dist/toast.js +141 -118
- package/dist/tooltip.css +12 -12
- package/dist/tooltip.js +64 -63
- package/dist/useCollapse.js +8 -11
- package/dist/useControlState.js +3 -6
- package/dist/useEditableOptionList.js +216 -0
- package/dist/useFlatOptionCollection.js +134 -0
- package/dist/useFloatingPosition.js +14 -40
- package/dist/useFloatingTargetLifecycle.js +127 -0
- package/dist/useFormControl.js +1 -0
- package/dist/useHoverDisclosure.js +561 -0
- package/dist/useNativeChoiceTransaction.js +46 -0
- package/dist/useNativeFileSelection.js +86 -0
- package/dist/useOverlayZIndex.js +246 -19
- package/dist/useTeleportTarget.js +3 -14
- package/dist/useTypeahead.js +94 -0
- package/dist/utils/aria.d.ts +3 -0
- package/dist/utils/attributes.d.ts +2 -0
- package/dist/utils/bem.d.ts +3 -0
- package/dist/utils/collectionNavigation.d.ts +2 -0
- package/dist/utils/color.d.ts +7 -0
- package/dist/{components/color-picker/color-picker-utils.d.ts → utils/colorPicker.d.ts} +5 -4
- package/dist/utils/componentColors.d.ts +7 -0
- package/dist/utils/css.d.ts +3 -0
- package/dist/utils/date.d.ts +13 -0
- package/dist/utils/dateAvailability.d.ts +7 -0
- package/dist/utils/dom/ancestry.d.ts +8 -0
- package/dist/utils/dom/attributes.d.ts +16 -0
- package/dist/utils/dom/componentRef.d.ts +4 -0
- package/dist/utils/dom/direction.d.ts +2 -0
- package/dist/utils/dom/events.d.ts +5 -0
- package/dist/utils/dom/files.d.ts +3 -0
- package/dist/utils/dom/focusNavigation.d.ts +7 -0
- package/dist/utils/dom/interactive.d.ts +2 -0
- package/dist/utils/dom/nativeChoice.d.ts +17 -0
- package/dist/utils/dom/pointerSession.d.ts +20 -0
- package/dist/utils/dom/query.d.ts +4 -0
- package/dist/utils/dom/scroll.d.ts +24 -0
- package/dist/utils/floatingOffset.d.ts +10 -0
- package/dist/utils/geometry.d.ts +14 -0
- package/dist/utils/indexPath.d.ts +6 -0
- package/dist/utils/number.d.ts +4 -0
- package/dist/utils/optionFilter.d.ts +5 -0
- package/dist/utils/rafScheduler.d.ts +4 -0
- package/dist/utils/text.d.ts +2 -0
- package/docs/code-architecture.md +118 -0
- package/docs/public-floating-api.md +13 -9
- package/docs/public-styles-api.md +25 -12
- package/package.json +51 -14
- package/src/styles/_mixins.scss +26 -0
- package/src/styles/styles-manifest.json +1 -2
- package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +0 -3
- package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -21
- package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +0 -36
- package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +0 -29
- package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +0 -52
- package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +0 -17
- package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +0 -18
- package/dist/components/scroll-area/scrollAreaCore.d.ts +0 -30
- package/dist/components/scroll-area/useScrollAreaControls.d.ts +0 -25
- package/dist/components/scroll-area/useScrollAreaMetrics.d.ts +0 -38
- package/dist/components/select/useSelectNativeControl.d.ts +0 -9
- package/dist/components/select/useSelectNativeValue.d.ts +0 -9
- package/dist/floating.js +0 -415
- /package/dist/components/alert/{useAlertColor.d.ts → alertColor.d.ts} +0 -0
- /package/dist/components/avatar/{useAvatarColor.d.ts → avatarColor.d.ts} +0 -0
- /package/dist/components/badge/{useBadgeColor.d.ts → badgeColor.d.ts} +0 -0
- /package/dist/components/button/{useButtonColor.d.ts → buttonColor.d.ts} +0 -0
- /package/dist/components/color-swatch/{useColorSwatchColor.d.ts → colorSwatchColor.d.ts} +0 -0
- /package/dist/components/toast/{useToastColor.d.ts → toastColor.d.ts} +0 -0
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as isElement } from "./query.js";
|
|
2
|
+
import { n as observeComposedAncestry } from "./ancestry.js";
|
|
3
|
+
import { nextTick, onBeforeUnmount, readonly, ref, toValue, watch } from "vue";
|
|
2
4
|
import { arrow, autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
|
|
3
5
|
//#region src/components/floating/useFloatingPosition.ts
|
|
4
6
|
var DEFAULT_ARROW_PADDING = 4;
|
|
@@ -6,44 +8,9 @@ var DEFAULT_COLLISION_PADDING = 8;
|
|
|
6
8
|
var DEFAULT_OFFSET = 8;
|
|
7
9
|
var DEFAULT_PLACEMENT = "bottom";
|
|
8
10
|
var DEFAULT_STRATEGY = "absolute";
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
function isVirtualReference(value) {
|
|
13
|
-
if (value == null || typeof value !== "object") return false;
|
|
14
|
-
return "getBoundingClientRect" in value && typeof value.getBoundingClientRect === "function";
|
|
15
|
-
}
|
|
16
|
-
function isElementReference(value) {
|
|
17
|
-
return typeof Element !== "undefined" && value instanceof Element;
|
|
18
|
-
}
|
|
19
|
-
function resolveFloatingTarget(target) {
|
|
20
|
-
if (!target) return null;
|
|
21
|
-
if (typeof target !== "string") return isVirtualReference(target) ? target : null;
|
|
22
|
-
if (typeof document === "undefined") return null;
|
|
23
|
-
try {
|
|
24
|
-
return document.querySelector(target);
|
|
25
|
-
} catch {
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function useFloatingTarget(getTarget, fallback) {
|
|
30
|
-
const resolvedTarget = shallowRef(null);
|
|
31
|
-
const isExplicitTarget = computed(() => {
|
|
32
|
-
const target = readFloatingTarget(getTarget());
|
|
33
|
-
return target != null && target !== "";
|
|
34
|
-
});
|
|
35
|
-
const reference = computed(() => isExplicitTarget.value ? resolvedTarget.value : fallback.value);
|
|
36
|
-
function syncTarget() {
|
|
37
|
-
resolvedTarget.value = isExplicitTarget.value ? resolveFloatingTarget(readFloatingTarget(getTarget())) : null;
|
|
38
|
-
}
|
|
39
|
-
watch(() => readFloatingTarget(getTarget()), syncTarget, { flush: "post" });
|
|
40
|
-
onMounted(syncTarget);
|
|
41
|
-
return {
|
|
42
|
-
isExplicitTarget,
|
|
43
|
-
reference,
|
|
44
|
-
resolvedTarget,
|
|
45
|
-
syncTarget
|
|
46
|
-
};
|
|
11
|
+
function getReferenceElement(reference) {
|
|
12
|
+
if (isElement(reference)) return reference;
|
|
13
|
+
return reference && isElement(reference.contextElement) ? reference.contextElement : null;
|
|
47
14
|
}
|
|
48
15
|
function useFloatingPosition(options) {
|
|
49
16
|
const actualPlacement = ref(getPlacement());
|
|
@@ -51,6 +18,7 @@ function useFloatingPosition(options) {
|
|
|
51
18
|
const floatingStyle = ref(getHiddenStyle());
|
|
52
19
|
const arrowStyle = ref();
|
|
53
20
|
let cleanup;
|
|
21
|
+
let cleanupPositioningAncestry;
|
|
54
22
|
let generation = 0;
|
|
55
23
|
let request = 0;
|
|
56
24
|
function getReference() {
|
|
@@ -106,9 +74,14 @@ function useFloatingPosition(options) {
|
|
|
106
74
|
function stop() {
|
|
107
75
|
cleanup?.();
|
|
108
76
|
cleanup = void 0;
|
|
77
|
+
cleanupPositioningAncestry?.();
|
|
78
|
+
cleanupPositioningAncestry = void 0;
|
|
109
79
|
generation += 1;
|
|
110
80
|
request += 1;
|
|
111
81
|
}
|
|
82
|
+
function observePositioningAncestry() {
|
|
83
|
+
cleanupPositioningAncestry = observeComposedAncestry(() => [getReferenceElement(getReference()), getFloating()], start, { deferWhileDisconnected: true });
|
|
84
|
+
}
|
|
112
85
|
function getMiddleware() {
|
|
113
86
|
const middleware = [offset(getOffset())];
|
|
114
87
|
const padding = getCollisionPadding();
|
|
@@ -162,6 +135,7 @@ function useFloatingPosition(options) {
|
|
|
162
135
|
const updatePosition = () => void update();
|
|
163
136
|
const animationFrame = getAutoUpdateAnimationFrame();
|
|
164
137
|
cleanup = animationFrame == null ? autoUpdate(reference, floating, updatePosition) : autoUpdate(reference, floating, updatePosition, { animationFrame });
|
|
138
|
+
observePositioningAncestry();
|
|
165
139
|
});
|
|
166
140
|
}
|
|
167
141
|
watch([
|
|
@@ -192,4 +166,4 @@ function useFloatingPosition(options) {
|
|
|
192
166
|
};
|
|
193
167
|
}
|
|
194
168
|
//#endregion
|
|
195
|
-
export { useFloatingPosition as
|
|
169
|
+
export { useFloatingPosition as t };
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { i as querySelectorSafe, t as isElement } from "./query.js";
|
|
2
|
+
import { a as snapshotAttributes, i as restoreAttributes } from "./attributes2.js";
|
|
3
|
+
import { computed, isRef, onBeforeUnmount, onMounted, shallowRef, watch, watchEffect } from "vue";
|
|
4
|
+
//#region src/components/floating/useFloatingTargetLifecycle.ts
|
|
5
|
+
var SELECTOR_OBSERVER_OPTIONS = {
|
|
6
|
+
attributes: true,
|
|
7
|
+
childList: true,
|
|
8
|
+
subtree: true
|
|
9
|
+
};
|
|
10
|
+
function readTarget(target) {
|
|
11
|
+
return isRef(target) ? target.value : target;
|
|
12
|
+
}
|
|
13
|
+
function isVirtualReference(value) {
|
|
14
|
+
if (value == null || typeof value !== "object") return false;
|
|
15
|
+
return "getBoundingClientRect" in value && typeof value.getBoundingClientRect === "function";
|
|
16
|
+
}
|
|
17
|
+
function resolveTarget(target) {
|
|
18
|
+
if (!target) return null;
|
|
19
|
+
if (typeof target !== "string") return isVirtualReference(target) ? target : null;
|
|
20
|
+
return querySelectorSafe(target);
|
|
21
|
+
}
|
|
22
|
+
function getMutationObserverConstructor() {
|
|
23
|
+
if (typeof document === "undefined") return void 0;
|
|
24
|
+
return document.defaultView?.MutationObserver ?? globalThis.MutationObserver;
|
|
25
|
+
}
|
|
26
|
+
function useFloatingTargetLifecycle({ target, fallback, getTargetElement }) {
|
|
27
|
+
const resolvedTarget = shallowRef(null);
|
|
28
|
+
const isExplicitTarget = computed(() => {
|
|
29
|
+
const currentTarget = readTarget(target());
|
|
30
|
+
return currentTarget != null && currentTarget !== "";
|
|
31
|
+
});
|
|
32
|
+
const reference = computed(() => isExplicitTarget.value ? resolvedTarget.value : fallback.value);
|
|
33
|
+
const targetElement = computed(() => {
|
|
34
|
+
const currentTarget = resolvedTarget.value;
|
|
35
|
+
if (!currentTarget) return null;
|
|
36
|
+
if (getTargetElement) return getTargetElement(currentTarget);
|
|
37
|
+
return isElement(currentTarget) ? currentTarget : null;
|
|
38
|
+
});
|
|
39
|
+
let selectorObserver;
|
|
40
|
+
let selectorObserverActive = false;
|
|
41
|
+
let ownedAttributeMutationDepth = 0;
|
|
42
|
+
let selectorSyncScheduled = false;
|
|
43
|
+
function syncTarget() {
|
|
44
|
+
resolvedTarget.value = isExplicitTarget.value ? resolveTarget(readTarget(target())) : null;
|
|
45
|
+
}
|
|
46
|
+
function stopObservingSelector() {
|
|
47
|
+
selectorObserverActive = false;
|
|
48
|
+
selectorObserver?.disconnect();
|
|
49
|
+
selectorObserver = void 0;
|
|
50
|
+
}
|
|
51
|
+
function scheduleSelectorSync() {
|
|
52
|
+
if (selectorSyncScheduled) return;
|
|
53
|
+
selectorSyncScheduled = true;
|
|
54
|
+
queueMicrotask(() => {
|
|
55
|
+
selectorSyncScheduled = false;
|
|
56
|
+
if (selectorObserverActive) syncTarget();
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function mutateWithoutSelectorObservation(mutate) {
|
|
60
|
+
const observer = selectorObserver;
|
|
61
|
+
const shouldPause = observer !== void 0 && selectorObserverActive && ownedAttributeMutationDepth === 0;
|
|
62
|
+
ownedAttributeMutationDepth += 1;
|
|
63
|
+
if (shouldPause) {
|
|
64
|
+
if (observer.takeRecords().length > 0) scheduleSelectorSync();
|
|
65
|
+
observer.disconnect();
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
mutate();
|
|
69
|
+
} finally {
|
|
70
|
+
ownedAttributeMutationDepth -= 1;
|
|
71
|
+
if (shouldPause && selectorObserverActive && selectorObserver === observer && typeof document !== "undefined") observer.observe(document, SELECTOR_OBSERVER_OPTIONS);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function observeSelector() {
|
|
75
|
+
stopObservingSelector();
|
|
76
|
+
const currentTarget = readTarget(target());
|
|
77
|
+
const MutationObserverConstructor = getMutationObserverConstructor();
|
|
78
|
+
if (typeof currentTarget !== "string" || !MutationObserverConstructor || typeof document === "undefined") return;
|
|
79
|
+
const observer = new MutationObserverConstructor(syncTarget);
|
|
80
|
+
selectorObserver = observer;
|
|
81
|
+
selectorObserverActive = true;
|
|
82
|
+
observer.observe(document, SELECTOR_OBSERVER_OPTIONS);
|
|
83
|
+
}
|
|
84
|
+
function syncLifecycle() {
|
|
85
|
+
syncTarget();
|
|
86
|
+
observeSelector();
|
|
87
|
+
}
|
|
88
|
+
function bindTarget(adapter) {
|
|
89
|
+
watchEffect((onCleanup) => {
|
|
90
|
+
const currentTarget = targetElement.value;
|
|
91
|
+
if (!currentTarget) return;
|
|
92
|
+
const disconnect = adapter.connect?.(currentTarget);
|
|
93
|
+
const listeners = adapter.listeners ?? [];
|
|
94
|
+
for (const [type, listener, options] of listeners) currentTarget.addEventListener(type, listener, options);
|
|
95
|
+
onCleanup(() => {
|
|
96
|
+
for (const [type, listener, options] of listeners) currentTarget.removeEventListener(type, listener, options);
|
|
97
|
+
disconnect?.();
|
|
98
|
+
});
|
|
99
|
+
}, { flush: "sync" });
|
|
100
|
+
const attributeAdapter = adapter.attributes;
|
|
101
|
+
if (!attributeAdapter) return;
|
|
102
|
+
watchEffect((onCleanup) => {
|
|
103
|
+
const currentTarget = targetElement.value;
|
|
104
|
+
if (!currentTarget || attributeAdapter.isActive?.() === false) return;
|
|
105
|
+
const snapshot = snapshotAttributes(currentTarget, attributeAdapter.names);
|
|
106
|
+
mutateWithoutSelectorObservation(() => {
|
|
107
|
+
attributeAdapter.apply(currentTarget, snapshot);
|
|
108
|
+
});
|
|
109
|
+
onCleanup(() => {
|
|
110
|
+
mutateWithoutSelectorObservation(() => {
|
|
111
|
+
restoreAttributes(currentTarget, snapshot);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
}, { flush: "sync" });
|
|
115
|
+
}
|
|
116
|
+
watch(() => readTarget(target()), syncLifecycle, { flush: "post" });
|
|
117
|
+
onMounted(syncLifecycle);
|
|
118
|
+
onBeforeUnmount(stopObservingSelector);
|
|
119
|
+
return {
|
|
120
|
+
bindTarget,
|
|
121
|
+
isExplicitTarget,
|
|
122
|
+
reference,
|
|
123
|
+
targetElement
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//#endregion
|
|
127
|
+
export { useFloatingTargetLifecycle as t };
|
package/dist/useFormControl.js
CHANGED
|
@@ -37,6 +37,7 @@ function useFormControl(options) {
|
|
|
37
37
|
const elements = getElements(options).filter((element) => element.form === form);
|
|
38
38
|
if (elements.length === 0) return;
|
|
39
39
|
queueMicrotask(() => {
|
|
40
|
+
if (event.defaultPrevented) return;
|
|
40
41
|
if (options.isControlled()) options.syncControlledValue(elements);
|
|
41
42
|
else options.readResetValue(elements);
|
|
42
43
|
});
|