ropav 0.0.9 → 0.0.10
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/dist/color-input.css +19 -19
- package/dist/color-input.js +8 -3
- package/dist/color-picker.css +20 -20
- package/dist/color-picker.js +107 -27
- package/dist/components/accordion/accordion-item.d.ts +4 -4
- package/dist/components/accordion/accordion.d.ts +1 -1
- package/dist/components/accordion/index.d.ts +4 -4
- package/dist/components/accordion/types.d.ts +1 -1
- package/dist/components/accordion/useAccordion.d.ts +1 -1
- package/dist/components/alert/alert.d.ts +1 -1
- package/dist/components/alert/index.d.ts +3 -3
- package/dist/components/alert/types.d.ts +1 -1
- package/dist/components/alert/useAlertColor.d.ts +1 -1
- package/dist/components/aspect-ratio/aspect-ratio.d.ts +1 -1
- package/dist/components/aspect-ratio/index.d.ts +2 -2
- package/dist/components/avatar/avatar.d.ts +1 -1
- package/dist/components/avatar/index.d.ts +3 -3
- package/dist/components/avatar/types.d.ts +1 -1
- package/dist/components/avatar/useAvatarColor.d.ts +1 -1
- package/dist/components/badge/badge.d.ts +1 -1
- package/dist/components/badge/index.d.ts +3 -3
- package/dist/components/badge/types.d.ts +1 -1
- package/dist/components/badge/useBadgeColor.d.ts +1 -1
- package/dist/components/button/button.d.ts +1 -1
- package/dist/components/button/index.d.ts +2 -2
- package/dist/components/button/types.d.ts +1 -1
- package/dist/components/button/useButtonColor.d.ts +1 -1
- package/dist/components/button-group/button-group.d.ts +1 -1
- package/dist/components/button-group/index.d.ts +2 -2
- package/dist/components/button-link/button-link.d.ts +1 -1
- package/dist/components/button-link/index.d.ts +2 -2
- package/dist/components/button-link/types.d.ts +1 -1
- package/dist/components/card/card.d.ts +1 -1
- package/dist/components/card/index.d.ts +2 -2
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/checkbox/index.d.ts +2 -2
- package/dist/components/checkbox/types.d.ts +1 -1
- package/dist/components/checkbox/useCheckbox.d.ts +2 -2
- package/dist/components/collapse/collapse.d.ts +2 -2
- package/dist/components/collapse/index.d.ts +3 -3
- package/dist/components/collapse/useCollapse.d.ts +1 -1
- package/dist/components/color-input/color-input.d.ts +1 -1
- package/dist/components/color-input/index.d.ts +2 -2
- package/dist/components/color-input/types.d.ts +4 -3
- package/dist/components/color-input/useColorInput.d.ts +5 -5
- package/dist/components/color-input/useColorInputEyeDropper.d.ts +1 -1
- package/dist/components/color-input/useColorInputPopover.d.ts +2 -2
- package/dist/components/color-input/useColorInputValue.d.ts +1 -1
- package/dist/components/color-picker/color-picker-saturation.d.ts +1 -1
- package/dist/components/color-picker/color-picker-slider.d.ts +1 -1
- package/dist/components/color-picker/color-picker-utils.d.ts +1 -1
- package/dist/components/color-picker/color-picker.d.ts +1 -1
- package/dist/components/color-picker/index.d.ts +3 -3
- package/dist/components/color-picker/useColorPickerDrag.d.ts +7 -2
- package/dist/components/color-picker/useColorPickerSwatches.d.ts +1 -1
- package/dist/components/color-picker/useColorPickerValue.d.ts +2 -2
- package/dist/components/color-swatch/color-swatch.d.ts +1 -1
- package/dist/components/color-swatch/index.d.ts +2 -2
- package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +15 -6
- package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.d.ts +1 -1
- package/dist/components/dropdown-menu/index.d.ts +3 -3
- package/dist/components/dropdown-menu/useDropdownMenu.d.ts +11 -10
- package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +2 -2
- package/dist/components/dropdown-menu/useDropdownMenuDom.d.ts +2 -2
- package/dist/components/dropdown-menu/useDropdownMenuHoverIntent.d.ts +2 -2
- package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +2 -2
- package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +3 -3
- package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +12 -4
- package/dist/components/dropdown-menu/useDropdownSubmenus.d.ts +3 -3
- package/dist/components/field/field.d.ts +2 -2
- package/dist/components/field/index.d.ts +2 -2
- package/dist/components/field/useField.d.ts +1 -1
- package/dist/components/icon-button/icon-button.d.ts +1 -1
- package/dist/components/icon-button/index.d.ts +2 -2
- package/dist/components/icon-button/types.d.ts +1 -1
- package/dist/components/input/index.d.ts +2 -2
- package/dist/components/input/input.d.ts +1 -1
- package/dist/components/input/useInput.d.ts +2 -2
- package/dist/components/modal/index.d.ts +2 -2
- package/dist/components/modal/modal.d.ts +1 -1
- package/dist/components/modal/types.d.ts +1 -1
- package/dist/components/modal/useModal.d.ts +1 -1
- package/dist/components/number-input/index.d.ts +2 -2
- package/dist/components/number-input/number-input.d.ts +1 -1
- package/dist/components/number-input/types.d.ts +1 -1
- package/dist/components/number-input/useNumberInput.d.ts +2 -2
- package/dist/components/overlay/index.d.ts +2 -2
- package/dist/components/overlay/overlay.d.ts +1 -1
- package/dist/components/overlay/useOverlay.d.ts +1 -1
- package/dist/components/popover/index.d.ts +3 -3
- package/dist/components/popover/popover.d.ts +2 -2
- package/dist/components/popover/types.d.ts +1 -0
- package/dist/components/popover/usePopover.d.ts +2 -1
- package/dist/components/progress/index.d.ts +3 -3
- package/dist/components/progress/progress.d.ts +1 -1
- package/dist/components/progress/types.d.ts +1 -1
- package/dist/components/progress/useProgress.d.ts +2 -2
- package/dist/components/radio/index.d.ts +3 -3
- package/dist/components/radio/radio-group.d.ts +1 -1
- package/dist/components/radio/radio.d.ts +1 -1
- package/dist/components/radio/types.d.ts +1 -1
- package/dist/components/radio/useRadio.d.ts +2 -2
- package/dist/components/select/index.d.ts +2 -2
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/select/useSelect.d.ts +2 -2
- package/dist/components/slider/index.d.ts +4 -4
- package/dist/components/slider/range-slider-tooltip.d.ts +34 -0
- package/dist/components/slider/range-slider.d.ts +4 -12
- package/dist/components/slider/slider.d.ts +1 -1
- package/dist/components/slider/sliderCore.d.ts +35 -0
- package/dist/components/slider/types.d.ts +2 -5
- package/dist/components/slider/useRangeSlider.d.ts +5 -7
- package/dist/components/slider/useRangeSliderPointer.d.ts +19 -0
- package/dist/components/slider/useRangeSliderTooltipCollision.d.ts +31 -2
- package/dist/components/slider/useRangeSliderTooltipState.d.ts +23 -0
- package/dist/components/slider/useSlider.d.ts +11 -15
- package/dist/components/switch/index.d.ts +2 -2
- package/dist/components/switch/switch.d.ts +1 -1
- package/dist/components/switch/types.d.ts +1 -1
- package/dist/components/switch/useSwitch.d.ts +2 -2
- package/dist/components/tabs/index.d.ts +6 -6
- package/dist/components/tabs/tabs-content.d.ts +2 -2
- package/dist/components/tabs/tabs-list.d.ts +4 -4
- package/dist/components/tabs/tabs-trigger.d.ts +5 -5
- package/dist/components/tabs/tabs.d.ts +5 -5
- package/dist/components/tabs/useTabs.d.ts +1 -1
- package/dist/components/textarea/index.d.ts +2 -2
- package/dist/components/textarea/textarea.d.ts +1 -1
- package/dist/components/textarea/useTextarea.d.ts +2 -2
- package/dist/components/toast/defaults.d.ts +7 -0
- package/dist/components/toast/index.d.ts +7 -0
- package/dist/components/toast/index.js +2 -0
- package/dist/components/toast/toast-provider.d.ts +21 -0
- package/dist/components/toast/toast-viewport.d.ts +34 -0
- package/dist/components/toast/toast.d.ts +31 -0
- package/dist/components/toast/types.d.ts +106 -0
- package/dist/components/toast/useToast.d.ts +4 -0
- package/dist/components/toast/useToastColor.d.ts +3 -0
- package/dist/components/toast/useToastState.d.ts +2 -0
- package/dist/components/tooltip/index.d.ts +2 -2
- package/dist/components/tooltip/tooltip.d.ts +2 -2
- package/dist/components/tooltip/types.d.ts +1 -1
- package/dist/components/tooltip/useTooltip.d.ts +3 -1
- package/dist/dropdown-menu.js +160 -39
- package/dist/index.d.ts +31 -30
- package/dist/index.js +2 -1
- package/dist/popover.css +28 -28
- package/dist/popover.js +25 -14
- package/dist/rafScheduler.js +34 -0
- package/dist/slider.css +355 -228
- package/dist/slider.js +890 -862
- package/dist/textarea.js +8 -2
- package/dist/toast.css +232 -0
- package/dist/toast.js +679 -0
- package/dist/tooltip.js +17 -10
- package/dist/utils/componentColors.d.ts +60 -0
- package/package.json +17 -9
- package/dist/components/slider/useRangeSliderTooltipTransition.d.ts +0 -4
package/dist/dropdown-menu.js
CHANGED
|
@@ -11,29 +11,6 @@ var chevron_right_default = markRaw(defineVaporComponent({
|
|
|
11
11
|
name: "lucide-chevron-right",
|
|
12
12
|
render
|
|
13
13
|
}));
|
|
14
|
-
//#endregion
|
|
15
|
-
//#region src/components/dropdown-menu/dropdown-menu-items.ts
|
|
16
|
-
var dropdown_menu_items_default = defineComponent({
|
|
17
|
-
name: "RpDropdownMenuItems",
|
|
18
|
-
props: { items: {
|
|
19
|
-
type: Array,
|
|
20
|
-
required: true
|
|
21
|
-
} },
|
|
22
|
-
setup(props, { slots }) {
|
|
23
|
-
function renderItems(items) {
|
|
24
|
-
return items.map((renderedItem) => {
|
|
25
|
-
const children = [h("button", renderedItem.props, slots.item?.(renderedItem.slotProps))];
|
|
26
|
-
if (renderedItem.hasSubmenu && renderedItem.submenuOpen) children.push(h("div", renderedItem.submenuProps, renderItems(renderedItem.children)));
|
|
27
|
-
return h("div", {
|
|
28
|
-
key: renderedItem.key,
|
|
29
|
-
class: "rp-dropdown-menu__item-wrap",
|
|
30
|
-
role: "none"
|
|
31
|
-
}, children);
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
return () => renderItems(props.items);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
14
|
var DEFAULT_FOCUS_TARGET = "first";
|
|
38
15
|
function getOpenFocusTarget(options) {
|
|
39
16
|
if (typeof options === "string") return options;
|
|
@@ -52,7 +29,7 @@ function hasItemSubmenu(item) {
|
|
|
52
29
|
return (item.children?.length ?? 0) > 0;
|
|
53
30
|
}
|
|
54
31
|
function hasNestedItems(items) {
|
|
55
|
-
return items.some(
|
|
32
|
+
return items.some(hasItemSubmenu);
|
|
56
33
|
}
|
|
57
34
|
function getPathKey(path) {
|
|
58
35
|
return path.length === 0 ? "root" : path.join("-");
|
|
@@ -95,6 +72,138 @@ function getNextEnabledIndex(items, index, direction) {
|
|
|
95
72
|
return enabledIndexes[enabledIndexes.length - 1];
|
|
96
73
|
}
|
|
97
74
|
//#endregion
|
|
75
|
+
//#region src/components/dropdown-menu/dropdown-menu-items.ts
|
|
76
|
+
var contextProp = {
|
|
77
|
+
type: Object,
|
|
78
|
+
required: true
|
|
79
|
+
};
|
|
80
|
+
var renderItemProp = {
|
|
81
|
+
type: Function,
|
|
82
|
+
required: true
|
|
83
|
+
};
|
|
84
|
+
var DropdownMenuItemRow = defineComponent({
|
|
85
|
+
name: "RpDropdownMenuItemRow",
|
|
86
|
+
props: {
|
|
87
|
+
context: contextProp,
|
|
88
|
+
disabled: {
|
|
89
|
+
type: Boolean,
|
|
90
|
+
required: true
|
|
91
|
+
},
|
|
92
|
+
focused: {
|
|
93
|
+
type: Boolean,
|
|
94
|
+
required: true
|
|
95
|
+
},
|
|
96
|
+
index: {
|
|
97
|
+
type: Number,
|
|
98
|
+
required: true
|
|
99
|
+
},
|
|
100
|
+
item: {
|
|
101
|
+
type: Object,
|
|
102
|
+
required: true
|
|
103
|
+
},
|
|
104
|
+
parentPath: {
|
|
105
|
+
type: Array,
|
|
106
|
+
required: true
|
|
107
|
+
},
|
|
108
|
+
renderItem: renderItemProp,
|
|
109
|
+
submenuOpen: {
|
|
110
|
+
type: Boolean,
|
|
111
|
+
required: true
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
setup(props) {
|
|
115
|
+
const path = computed(() => [...props.parentPath, props.index]);
|
|
116
|
+
return () => {
|
|
117
|
+
const currentPath = path.value;
|
|
118
|
+
const hasSubmenu = hasItemSubmenu(props.item);
|
|
119
|
+
const children = [h("button", props.context.getItemProps(props.item, currentPath, props.focused, props.disabled, props.submenuOpen), props.renderItem(props.context.getItemSlotProps(props.item, currentPath, props.focused, props.disabled, props.submenuOpen)))];
|
|
120
|
+
if (hasSubmenu && props.submenuOpen) children.push(h(DropdownMenuSubmenu, {
|
|
121
|
+
context: props.context,
|
|
122
|
+
item: props.item,
|
|
123
|
+
path: currentPath,
|
|
124
|
+
renderItem: props.renderItem
|
|
125
|
+
}));
|
|
126
|
+
return h("div", {
|
|
127
|
+
class: "rp-dropdown-menu__item-wrap",
|
|
128
|
+
role: "none"
|
|
129
|
+
}, children);
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
var DropdownMenuItemsList = defineComponent({
|
|
134
|
+
name: "RpDropdownMenuItemsList",
|
|
135
|
+
props: {
|
|
136
|
+
context: contextProp,
|
|
137
|
+
items: {
|
|
138
|
+
type: Array,
|
|
139
|
+
required: true
|
|
140
|
+
},
|
|
141
|
+
parentPath: {
|
|
142
|
+
type: Array,
|
|
143
|
+
default: () => []
|
|
144
|
+
},
|
|
145
|
+
renderItem: renderItemProp
|
|
146
|
+
},
|
|
147
|
+
setup(props) {
|
|
148
|
+
return () => props.items.map((item, index) => {
|
|
149
|
+
const path = [...props.parentPath, index];
|
|
150
|
+
const hasSubmenu = hasItemSubmenu(item);
|
|
151
|
+
return h(DropdownMenuItemRow, {
|
|
152
|
+
key: `${getPathKey(path)}:${String(item.value)}`,
|
|
153
|
+
context: props.context,
|
|
154
|
+
disabled: Boolean(item.disabled),
|
|
155
|
+
focused: props.context.isItemFocused(path),
|
|
156
|
+
index,
|
|
157
|
+
item,
|
|
158
|
+
parentPath: props.parentPath,
|
|
159
|
+
renderItem: props.renderItem,
|
|
160
|
+
submenuOpen: hasSubmenu && props.context.isSubmenuOpen(path)
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
var DropdownMenuSubmenu = defineComponent({
|
|
166
|
+
name: "RpDropdownMenuSubmenu",
|
|
167
|
+
props: {
|
|
168
|
+
context: contextProp,
|
|
169
|
+
item: {
|
|
170
|
+
type: Object,
|
|
171
|
+
required: true
|
|
172
|
+
},
|
|
173
|
+
path: {
|
|
174
|
+
type: Array,
|
|
175
|
+
required: true
|
|
176
|
+
},
|
|
177
|
+
renderItem: renderItemProp
|
|
178
|
+
},
|
|
179
|
+
setup(props) {
|
|
180
|
+
return () => h("div", props.context.getSubmenuProps(props.item, props.path, true), [h(DropdownMenuItemsList, {
|
|
181
|
+
context: props.context,
|
|
182
|
+
items: props.item.children ?? [],
|
|
183
|
+
parentPath: props.path,
|
|
184
|
+
renderItem: props.renderItem
|
|
185
|
+
})]);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
var dropdown_menu_items_default = defineComponent({
|
|
189
|
+
name: "RpDropdownMenuItems",
|
|
190
|
+
props: {
|
|
191
|
+
context: contextProp,
|
|
192
|
+
items: {
|
|
193
|
+
type: Array,
|
|
194
|
+
required: true
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
setup(props, { slots }) {
|
|
198
|
+
const renderItem = (slotProps) => slots.item?.(slotProps);
|
|
199
|
+
return () => h(DropdownMenuItemsList, {
|
|
200
|
+
context: props.context,
|
|
201
|
+
items: props.items,
|
|
202
|
+
renderItem
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
//#endregion
|
|
98
207
|
//#region src/components/dropdown-menu/useDropdownMenuDisclosure.ts
|
|
99
208
|
function useDropdownMenuDisclosure({ props, emit, rootRef, uncontrolledOpen, isDisabled, isOpen, isVisible, focusedPath, resetFocus, resetSubmenus, resetHoverIntent, focusItem, focusMenu, focusTrigger }) {
|
|
100
209
|
function setOpen(nextOpen) {
|
|
@@ -567,25 +676,25 @@ function useDropdownMenuRenderItems({ items, getItemId, getSubmenuId, getMenuAct
|
|
|
567
676
|
disabled,
|
|
568
677
|
hasSubmenu,
|
|
569
678
|
submenuOpen,
|
|
570
|
-
props: getItemProps(item, path, focused, disabled),
|
|
571
|
-
submenuProps:
|
|
572
|
-
slotProps: getItemSlotProps(item, path, focused, disabled),
|
|
573
|
-
children:
|
|
679
|
+
props: getItemProps(item, path, focused, disabled, submenuOpen),
|
|
680
|
+
submenuProps: submenuOpen ? getSubmenuProps(item, path, true) : void 0,
|
|
681
|
+
slotProps: getItemSlotProps(item, path, focused, disabled, submenuOpen),
|
|
682
|
+
children: submenuOpen ? getRenderedItems(item.children ?? [], path) : []
|
|
574
683
|
};
|
|
575
684
|
});
|
|
576
685
|
}
|
|
577
|
-
function getItemProps(item, indexOrPath, focused = isItemFocused(indexOrPath), disabled = Boolean(item.disabled)) {
|
|
686
|
+
function getItemProps(item, indexOrPath, focused = isItemFocused(indexOrPath), disabled = Boolean(item.disabled), submenuOpen) {
|
|
578
687
|
const path = normalizePath(indexOrPath);
|
|
579
688
|
const hasSubmenu = hasItemSubmenu(item);
|
|
580
|
-
const
|
|
689
|
+
const resolvedSubmenuOpen = submenuOpen ?? (hasSubmenu ? isSubmenuOpen(path) : false);
|
|
581
690
|
return {
|
|
582
691
|
id: getItemId(path),
|
|
583
692
|
type: "button",
|
|
584
693
|
role: "menuitem",
|
|
585
694
|
tabindex: -1,
|
|
586
|
-
class: getItemClass(item, focused, disabled, hasSubmenu,
|
|
695
|
+
class: getItemClass(item, focused, disabled, hasSubmenu, resolvedSubmenuOpen),
|
|
587
696
|
"aria-controls": hasSubmenu ? getSubmenuId(path) : void 0,
|
|
588
|
-
"aria-expanded": hasSubmenu ?
|
|
697
|
+
"aria-expanded": hasSubmenu ? resolvedSubmenuOpen : void 0,
|
|
589
698
|
"aria-haspopup": hasSubmenu ? "menu" : void 0,
|
|
590
699
|
"aria-disabled": disabled || void 0,
|
|
591
700
|
"data-disabled": disabled || void 0,
|
|
@@ -595,21 +704,22 @@ function useDropdownMenuRenderItems({ items, getItemId, getSubmenuId, getMenuAct
|
|
|
595
704
|
onMouseenter: (event) => focusHoveredItem(item, path, event)
|
|
596
705
|
};
|
|
597
706
|
}
|
|
598
|
-
function getSubmenuProps(item, path) {
|
|
707
|
+
function getSubmenuProps(item, path, submenuOpen = isSubmenuOpen(path)) {
|
|
599
708
|
return {
|
|
600
709
|
id: getSubmenuId(path),
|
|
601
710
|
role: "menu",
|
|
602
711
|
class: bem("rp-dropdown-menu__submenu", {
|
|
603
|
-
open:
|
|
712
|
+
open: submenuOpen,
|
|
604
713
|
"has-submenu": hasNestedItems(item.children ?? [])
|
|
605
714
|
}),
|
|
606
715
|
"aria-label": item.label,
|
|
607
716
|
"aria-activedescendant": getMenuActiveDescendant(path)
|
|
608
717
|
};
|
|
609
718
|
}
|
|
610
|
-
function getItemSlotProps(item, indexOrPath, focused = isItemFocused(indexOrPath), disabled = Boolean(item.disabled)) {
|
|
719
|
+
function getItemSlotProps(item, indexOrPath, focused = isItemFocused(indexOrPath), disabled = Boolean(item.disabled), submenuOpen) {
|
|
611
720
|
const path = normalizePath(indexOrPath);
|
|
612
721
|
const hasSubmenu = hasItemSubmenu(item);
|
|
722
|
+
const resolvedSubmenuOpen = submenuOpen ?? (hasSubmenu ? isSubmenuOpen(path) : false);
|
|
613
723
|
return {
|
|
614
724
|
item,
|
|
615
725
|
index: path[path.length - 1] ?? -1,
|
|
@@ -618,7 +728,7 @@ function useDropdownMenuRenderItems({ items, getItemId, getSubmenuId, getMenuAct
|
|
|
618
728
|
focused,
|
|
619
729
|
disabled,
|
|
620
730
|
hasSubmenu,
|
|
621
|
-
isSubmenuOpen:
|
|
731
|
+
isSubmenuOpen: resolvedSubmenuOpen,
|
|
622
732
|
select: () => selectItem(item),
|
|
623
733
|
openSubmenu: (focus = DEFAULT_FOCUS_TARGET) => openSubmenu(path, focus),
|
|
624
734
|
closeSubmenu: () => closeSubmenu(path),
|
|
@@ -627,6 +737,13 @@ function useDropdownMenuRenderItems({ items, getItemId, getSubmenuId, getMenuAct
|
|
|
627
737
|
}
|
|
628
738
|
return {
|
|
629
739
|
renderedItems,
|
|
740
|
+
renderContext: {
|
|
741
|
+
isItemFocused,
|
|
742
|
+
isSubmenuOpen,
|
|
743
|
+
getItemProps,
|
|
744
|
+
getSubmenuProps,
|
|
745
|
+
getItemSlotProps
|
|
746
|
+
},
|
|
630
747
|
getItemProps,
|
|
631
748
|
getItemSlotProps
|
|
632
749
|
};
|
|
@@ -768,7 +885,7 @@ function useDropdownMenu(props, emit = {}) {
|
|
|
768
885
|
close,
|
|
769
886
|
toggle
|
|
770
887
|
}));
|
|
771
|
-
const { renderedItems, getItemProps, getItemSlotProps } = useDropdownMenuRenderItems({
|
|
888
|
+
const { renderedItems, renderContext, getItemProps, getItemSlotProps } = useDropdownMenuRenderItems({
|
|
772
889
|
items: visibleItems,
|
|
773
890
|
getItemId,
|
|
774
891
|
getSubmenuId,
|
|
@@ -790,6 +907,7 @@ function useDropdownMenu(props, emit = {}) {
|
|
|
790
907
|
isEmpty,
|
|
791
908
|
visibleItems,
|
|
792
909
|
renderedItems,
|
|
910
|
+
renderContext,
|
|
793
911
|
focusedIndex,
|
|
794
912
|
focusedPath,
|
|
795
913
|
activeDescendantId,
|
|
@@ -847,7 +965,7 @@ var dropdown_menu_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
847
965
|
setup(__props, { emit: __emit }) {
|
|
848
966
|
const props = __props;
|
|
849
967
|
const emit = __emit;
|
|
850
|
-
const { rootRef, menuRef, isVisible, isEmpty,
|
|
968
|
+
const { rootRef, menuRef, isVisible, isEmpty, visibleItems, renderContext, rootClass, contentClass, contentProps, slotProps } = useDropdownMenu(props, {
|
|
851
969
|
openChange: (open) => emit("update:open", open),
|
|
852
970
|
select: (item) => emit("select", item)
|
|
853
971
|
});
|
|
@@ -871,7 +989,10 @@ var dropdown_menu_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
871
989
|
return n8;
|
|
872
990
|
});
|
|
873
991
|
setInsertionState(n21, null, 1);
|
|
874
|
-
createComponent(unref(dropdown_menu_items_default), {
|
|
992
|
+
createComponent(unref(dropdown_menu_items_default), {
|
|
993
|
+
items: () => unref(visibleItems),
|
|
994
|
+
context: () => unref(renderContext)
|
|
995
|
+
}, { "item": extend((itemSlotProps) => {
|
|
875
996
|
return [createSlot("item", { $: [() => itemSlotProps] }, () => {
|
|
876
997
|
const n11 = t2();
|
|
877
998
|
const x11 = txt(n11);
|
package/dist/index.d.ts
CHANGED
|
@@ -1,30 +1,31 @@
|
|
|
1
|
-
export * from './components/alert';
|
|
2
|
-
export * from './components/accordion';
|
|
3
|
-
export * from './components/aspect-ratio';
|
|
4
|
-
export * from './components/avatar';
|
|
5
|
-
export * from './components/badge';
|
|
6
|
-
export * from './components/button';
|
|
7
|
-
export * from './components/button-link';
|
|
8
|
-
export * from './components/button-group';
|
|
9
|
-
export * from './components/card';
|
|
10
|
-
export * from './components/checkbox';
|
|
11
|
-
export * from './components/collapse';
|
|
12
|
-
export * from './components/color-input';
|
|
13
|
-
export * from './components/color-picker';
|
|
14
|
-
export * from './components/color-swatch';
|
|
15
|
-
export * from './components/dropdown-menu';
|
|
16
|
-
export * from './components/field';
|
|
17
|
-
export * from './components/icon-button';
|
|
18
|
-
export * from './components/input';
|
|
19
|
-
export * from './components/modal';
|
|
20
|
-
export * from './components/number-input';
|
|
21
|
-
export * from './components/overlay';
|
|
22
|
-
export * from './components/popover';
|
|
23
|
-
export * from './components/progress';
|
|
24
|
-
export * from './components/radio';
|
|
25
|
-
export * from './components/select';
|
|
26
|
-
export * from './components/slider';
|
|
27
|
-
export * from './components/switch';
|
|
28
|
-
export * from './components/tabs';
|
|
29
|
-
export * from './components/textarea';
|
|
30
|
-
export * from './components/
|
|
1
|
+
export * from './components/alert/index.js';
|
|
2
|
+
export * from './components/accordion/index.js';
|
|
3
|
+
export * from './components/aspect-ratio/index.js';
|
|
4
|
+
export * from './components/avatar/index.js';
|
|
5
|
+
export * from './components/badge/index.js';
|
|
6
|
+
export * from './components/button/index.js';
|
|
7
|
+
export * from './components/button-link/index.js';
|
|
8
|
+
export * from './components/button-group/index.js';
|
|
9
|
+
export * from './components/card/index.js';
|
|
10
|
+
export * from './components/checkbox/index.js';
|
|
11
|
+
export * from './components/collapse/index.js';
|
|
12
|
+
export * from './components/color-input/index.js';
|
|
13
|
+
export * from './components/color-picker/index.js';
|
|
14
|
+
export * from './components/color-swatch/index.js';
|
|
15
|
+
export * from './components/dropdown-menu/index.js';
|
|
16
|
+
export * from './components/field/index.js';
|
|
17
|
+
export * from './components/icon-button/index.js';
|
|
18
|
+
export * from './components/input/index.js';
|
|
19
|
+
export * from './components/modal/index.js';
|
|
20
|
+
export * from './components/number-input/index.js';
|
|
21
|
+
export * from './components/overlay/index.js';
|
|
22
|
+
export * from './components/popover/index.js';
|
|
23
|
+
export * from './components/progress/index.js';
|
|
24
|
+
export * from './components/radio/index.js';
|
|
25
|
+
export * from './components/select/index.js';
|
|
26
|
+
export * from './components/slider/index.js';
|
|
27
|
+
export * from './components/switch/index.js';
|
|
28
|
+
export * from './components/tabs/index.js';
|
|
29
|
+
export * from './components/textarea/index.js';
|
|
30
|
+
export * from './components/toast/index.js';
|
|
31
|
+
export * from './components/tooltip/index.js';
|
package/dist/index.js
CHANGED
|
@@ -35,5 +35,6 @@ import { a as slider_default, i as range_slider_default, n as sliderOrientations
|
|
|
35
35
|
import { t as switch_default } from "./switch.js";
|
|
36
36
|
import { a as useTabs, c as useTabsTrigger, i as tabs_default, n as tabs_list_default, o as useTabsContent, r as tabs_content_default, s as useTabsList, t as tabs_trigger_default } from "./tabs.js";
|
|
37
37
|
import { t as textarea_default } from "./textarea.js";
|
|
38
|
+
import { a as toastColors, c as toastTypes, i as useToast, l as toastVariants, n as toast_viewport_default, o as toastPositions, r as toast_provider_default, s as toastRadiuses, t as useToastState, u as toast_default } from "./toast.js";
|
|
38
39
|
import "./components/tooltip/index.js";
|
|
39
|
-
export { accordion_default as Accordion, accordion_item_default as AccordionItem, alert_default as Alert, aspect_ratio_default as AspectRatio, avatar_default as Avatar, badge_default as Badge, button_default as Button, button_group_default as ButtonGroup, button_link_default as ButtonLink, card_default as Card, checkbox_default as Checkbox, collapse_default as Collapse, color_input_default as ColorInput, color_picker_default as ColorPicker, color_swatch_default as ColorSwatch, dropdown_menu_default as DropdownMenu, field_default as Field, icon_button_default as IconButton, input_default as Input, modal_default as Modal, number_input_default as NumberInput, overlay_default as Overlay, popover_default as Popover, progress_default as Progress, radio_default as Radio, radio_group_default as RadioGroup, range_slider_default as RangeSlider, select_default as Select, slider_default as Slider, switch_default as Switch, tabs_default as Tabs, tabs_content_default as TabsContent, tabs_list_default as TabsList, tabs_trigger_default as TabsTrigger, textarea_default as Textarea, tooltip_default as Tooltip, alertColors, alertRadiuses, alertVariants, avatarColors, avatarRadiuses, avatarSizes, avatarVariants, badgeColors, badgeRadiuses, badgeSizes, badgeVariants, colorPickerFormats, colorPickerSizes, popoverPlacements, progressColors, progressRadiuses, progressSizes, sliderColors, sliderOrientations, sliderSizes, useAccordion, useAccordionItem, useCollapse, useDropdownMenu, useTabs, useTabsContent, useTabsList, useTabsTrigger };
|
|
40
|
+
export { accordion_default as Accordion, accordion_item_default as AccordionItem, alert_default as Alert, aspect_ratio_default as AspectRatio, avatar_default as Avatar, badge_default as Badge, button_default as Button, button_group_default as ButtonGroup, button_link_default as ButtonLink, card_default as Card, checkbox_default as Checkbox, collapse_default as Collapse, color_input_default as ColorInput, color_picker_default as ColorPicker, color_swatch_default as ColorSwatch, dropdown_menu_default as DropdownMenu, field_default as Field, icon_button_default as IconButton, input_default as Input, modal_default as Modal, number_input_default as NumberInput, overlay_default as Overlay, popover_default as Popover, progress_default as Progress, radio_default as Radio, radio_group_default as RadioGroup, range_slider_default as RangeSlider, select_default as Select, slider_default as Slider, switch_default as Switch, tabs_default as Tabs, tabs_content_default as TabsContent, tabs_list_default as TabsList, tabs_trigger_default as TabsTrigger, textarea_default as Textarea, toast_default as Toast, toast_provider_default as ToastProvider, toast_viewport_default as ToastViewport, tooltip_default as Tooltip, alertColors, alertRadiuses, alertVariants, avatarColors, avatarRadiuses, avatarSizes, avatarVariants, badgeColors, badgeRadiuses, badgeSizes, badgeVariants, colorPickerFormats, colorPickerSizes, popoverPlacements, progressColors, progressRadiuses, progressSizes, sliderColors, sliderOrientations, sliderSizes, toastColors, toastPositions, toastRadiuses, toastTypes, toastVariants, useAccordion, useAccordionItem, useCollapse, useDropdownMenu, useTabs, useTabsContent, useTabsList, useTabsTrigger, useToast, useToastState };
|
package/dist/popover.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.rp-popover[data-v-
|
|
1
|
+
.rp-popover[data-v-13614b6c] {
|
|
2
2
|
--_rp-popover-main-axis-offset: var(--rp-spacing-2);
|
|
3
3
|
--_rp-popover-cross-axis-offset: 0px;
|
|
4
4
|
--_rp-popover-radius: var(--rp-radius-sm);
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
font-family: var(--rp-font-family);
|
|
8
8
|
vertical-align: middle;
|
|
9
9
|
}
|
|
10
|
-
.rp-popover__content[data-v-
|
|
10
|
+
.rp-popover__content[data-v-13614b6c] {
|
|
11
11
|
position: absolute;
|
|
12
12
|
z-index: 100;
|
|
13
13
|
box-sizing: border-box;
|
|
@@ -23,42 +23,42 @@
|
|
|
23
23
|
border-radius: var(--_rp-popover-radius);
|
|
24
24
|
box-shadow: var(--rp-shadow-base);
|
|
25
25
|
}
|
|
26
|
-
.rp-popover--placement-top-start .rp-popover__content[data-v-
|
|
26
|
+
.rp-popover--placement-top-start .rp-popover__content[data-v-13614b6c], .rp-popover--placement-top .rp-popover__content[data-v-13614b6c], .rp-popover--placement-top-end .rp-popover__content[data-v-13614b6c] {
|
|
27
27
|
bottom: calc(100% + var(--_rp-popover-main-axis-offset));
|
|
28
28
|
}
|
|
29
|
-
.rp-popover--placement-right-start .rp-popover__content[data-v-
|
|
29
|
+
.rp-popover--placement-right-start .rp-popover__content[data-v-13614b6c], .rp-popover--placement-right .rp-popover__content[data-v-13614b6c], .rp-popover--placement-right-end .rp-popover__content[data-v-13614b6c] {
|
|
30
30
|
left: calc(100% + var(--_rp-popover-main-axis-offset));
|
|
31
31
|
}
|
|
32
|
-
.rp-popover--placement-bottom-start .rp-popover__content[data-v-
|
|
32
|
+
.rp-popover--placement-bottom-start .rp-popover__content[data-v-13614b6c], .rp-popover--placement-bottom .rp-popover__content[data-v-13614b6c], .rp-popover--placement-bottom-end .rp-popover__content[data-v-13614b6c] {
|
|
33
33
|
top: calc(100% + var(--_rp-popover-main-axis-offset));
|
|
34
34
|
}
|
|
35
|
-
.rp-popover--placement-left-start .rp-popover__content[data-v-
|
|
35
|
+
.rp-popover--placement-left-start .rp-popover__content[data-v-13614b6c], .rp-popover--placement-left .rp-popover__content[data-v-13614b6c], .rp-popover--placement-left-end .rp-popover__content[data-v-13614b6c] {
|
|
36
36
|
right: calc(100% + var(--_rp-popover-main-axis-offset));
|
|
37
37
|
}
|
|
38
|
-
.rp-popover--placement-top-start .rp-popover__content[data-v-
|
|
38
|
+
.rp-popover--placement-top-start .rp-popover__content[data-v-13614b6c], .rp-popover--placement-bottom-start .rp-popover__content[data-v-13614b6c] {
|
|
39
39
|
left: var(--_rp-popover-cross-axis-offset);
|
|
40
40
|
}
|
|
41
|
-
.rp-popover--placement-top .rp-popover__content[data-v-
|
|
41
|
+
.rp-popover--placement-top .rp-popover__content[data-v-13614b6c], .rp-popover--placement-bottom .rp-popover__content[data-v-13614b6c] {
|
|
42
42
|
left: calc(50% + var(--_rp-popover-cross-axis-offset));
|
|
43
43
|
translate: -50% 0;
|
|
44
44
|
}
|
|
45
|
-
.rp-popover--placement-top-end .rp-popover__content[data-v-
|
|
45
|
+
.rp-popover--placement-top-end .rp-popover__content[data-v-13614b6c], .rp-popover--placement-bottom-end .rp-popover__content[data-v-13614b6c] {
|
|
46
46
|
right: calc(0px - var(--_rp-popover-cross-axis-offset));
|
|
47
47
|
}
|
|
48
|
-
.rp-popover--placement-right-start .rp-popover__content[data-v-
|
|
48
|
+
.rp-popover--placement-right-start .rp-popover__content[data-v-13614b6c], .rp-popover--placement-left-start .rp-popover__content[data-v-13614b6c] {
|
|
49
49
|
top: var(--_rp-popover-cross-axis-offset);
|
|
50
50
|
}
|
|
51
|
-
.rp-popover--placement-right .rp-popover__content[data-v-
|
|
51
|
+
.rp-popover--placement-right .rp-popover__content[data-v-13614b6c], .rp-popover--placement-left .rp-popover__content[data-v-13614b6c] {
|
|
52
52
|
top: calc(50% + var(--_rp-popover-cross-axis-offset));
|
|
53
53
|
translate: 0 -50%;
|
|
54
54
|
}
|
|
55
|
-
.rp-popover--placement-right-end .rp-popover__content[data-v-
|
|
55
|
+
.rp-popover--placement-right-end .rp-popover__content[data-v-13614b6c], .rp-popover--placement-left-end .rp-popover__content[data-v-13614b6c] {
|
|
56
56
|
bottom: calc(0px - var(--_rp-popover-cross-axis-offset));
|
|
57
57
|
}
|
|
58
|
-
.rp-popover--target[data-v-
|
|
58
|
+
.rp-popover--target[data-v-13614b6c] {
|
|
59
59
|
display: contents;
|
|
60
60
|
}
|
|
61
|
-
.rp-popover--target .rp-popover__content[data-v-
|
|
61
|
+
.rp-popover--target .rp-popover__content[data-v-13614b6c] {
|
|
62
62
|
--_rp-popover-target-translate-x: 0px;
|
|
63
63
|
--_rp-popover-target-translate-y: 0px;
|
|
64
64
|
position: fixed;
|
|
@@ -68,41 +68,41 @@
|
|
|
68
68
|
left: var(--_rp-popover-target-x, 0);
|
|
69
69
|
translate: var(--_rp-popover-target-translate-x) var(--_rp-popover-target-translate-y);
|
|
70
70
|
}
|
|
71
|
-
.rp-popover--target.rp-popover--placement-top-start .rp-popover__content[data-v-
|
|
71
|
+
.rp-popover--target.rp-popover--placement-top-start .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-top .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-top-end .rp-popover__content[data-v-13614b6c] {
|
|
72
72
|
--_rp-popover-target-translate-y: calc(-100% - var(--_rp-popover-main-axis-offset));
|
|
73
73
|
}
|
|
74
|
-
.rp-popover--target.rp-popover--placement-right-start .rp-popover__content[data-v-
|
|
74
|
+
.rp-popover--target.rp-popover--placement-right-start .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-right .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-right-end .rp-popover__content[data-v-13614b6c] {
|
|
75
75
|
--_rp-popover-target-translate-x: var(--_rp-popover-main-axis-offset);
|
|
76
76
|
}
|
|
77
|
-
.rp-popover--target.rp-popover--placement-bottom-start .rp-popover__content[data-v-
|
|
77
|
+
.rp-popover--target.rp-popover--placement-bottom-start .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-bottom .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-bottom-end .rp-popover__content[data-v-13614b6c] {
|
|
78
78
|
--_rp-popover-target-translate-y: var(--_rp-popover-main-axis-offset);
|
|
79
79
|
}
|
|
80
|
-
.rp-popover--target.rp-popover--placement-left-start .rp-popover__content[data-v-
|
|
80
|
+
.rp-popover--target.rp-popover--placement-left-start .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-left .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-left-end .rp-popover__content[data-v-13614b6c] {
|
|
81
81
|
--_rp-popover-target-translate-x: calc(-100% - var(--_rp-popover-main-axis-offset));
|
|
82
82
|
}
|
|
83
|
-
.rp-popover--target.rp-popover--placement-top-start .rp-popover__content[data-v-
|
|
83
|
+
.rp-popover--target.rp-popover--placement-top-start .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-bottom-start .rp-popover__content[data-v-13614b6c] {
|
|
84
84
|
--_rp-popover-target-translate-x: var(--_rp-popover-cross-axis-offset);
|
|
85
85
|
}
|
|
86
|
-
.rp-popover--target.rp-popover--placement-top .rp-popover__content[data-v-
|
|
86
|
+
.rp-popover--target.rp-popover--placement-top .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-bottom .rp-popover__content[data-v-13614b6c] {
|
|
87
87
|
--_rp-popover-target-translate-x: calc(-50% + var(--_rp-popover-cross-axis-offset));
|
|
88
88
|
}
|
|
89
|
-
.rp-popover--target.rp-popover--placement-top-end .rp-popover__content[data-v-
|
|
89
|
+
.rp-popover--target.rp-popover--placement-top-end .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-bottom-end .rp-popover__content[data-v-13614b6c] {
|
|
90
90
|
--_rp-popover-target-translate-x: calc(-100% + var(--_rp-popover-cross-axis-offset));
|
|
91
91
|
}
|
|
92
|
-
.rp-popover--target.rp-popover--placement-right-start .rp-popover__content[data-v-
|
|
92
|
+
.rp-popover--target.rp-popover--placement-right-start .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-left-start .rp-popover__content[data-v-13614b6c] {
|
|
93
93
|
--_rp-popover-target-translate-y: var(--_rp-popover-cross-axis-offset);
|
|
94
94
|
}
|
|
95
|
-
.rp-popover--target.rp-popover--placement-right .rp-popover__content[data-v-
|
|
95
|
+
.rp-popover--target.rp-popover--placement-right .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-left .rp-popover__content[data-v-13614b6c] {
|
|
96
96
|
--_rp-popover-target-translate-y: calc(-50% + var(--_rp-popover-cross-axis-offset));
|
|
97
97
|
}
|
|
98
|
-
.rp-popover--target.rp-popover--placement-right-end .rp-popover__content[data-v-
|
|
98
|
+
.rp-popover--target.rp-popover--placement-right-end .rp-popover__content[data-v-13614b6c], .rp-popover--target.rp-popover--placement-left-end .rp-popover__content[data-v-13614b6c] {
|
|
99
99
|
--_rp-popover-target-translate-y: calc(-100% + var(--_rp-popover-cross-axis-offset));
|
|
100
100
|
}
|
|
101
|
-
.rp-popover-content-enter-active[data-v-
|
|
102
|
-
.rp-popover-content-leave-active[data-v-
|
|
101
|
+
.rp-popover-content-enter-active[data-v-13614b6c],
|
|
102
|
+
.rp-popover-content-leave-active[data-v-13614b6c] {
|
|
103
103
|
transition: opacity var(--rp-transition-fast);
|
|
104
104
|
}
|
|
105
|
-
.rp-popover-content-enter-from[data-v-
|
|
106
|
-
.rp-popover-content-leave-to[data-v-
|
|
105
|
+
.rp-popover-content-enter-from[data-v-13614b6c],
|
|
106
|
+
.rp-popover-content-leave-to[data-v-13614b6c] {
|
|
107
107
|
opacity: 0;
|
|
108
108
|
}
|
package/dist/popover.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import './popover.css';
|
|
2
2
|
import { t as bem } from "./bem.js";
|
|
3
3
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
|
|
4
|
-
import {
|
|
4
|
+
import { t as createRafScheduler } from "./rafScheduler.js";
|
|
5
|
+
import { VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, defineVaporComponent, extend, isRef, onBeforeUnmount, onMounted, ref, renderEffect, setAttr, setClass, setInsertionState, setProp, setStaticTemplateRef, setStyle, template, unref, useId, useSlots, watch } from "vue";
|
|
5
6
|
//#region src/components/popover/usePopover.ts
|
|
6
7
|
var DEFAULT_PLACEMENT = "bottom";
|
|
7
8
|
var DEFAULT_ROLE = "dialog";
|
|
@@ -95,6 +96,7 @@ function usePopover(props, emitOpenChange) {
|
|
|
95
96
|
const targetElement = ref(null);
|
|
96
97
|
const targetPosition = ref(null);
|
|
97
98
|
const uncontrolledOpen = ref(false);
|
|
99
|
+
const positionScheduler = createRafScheduler(updateTargetPosition, () => targetElement.value?.ownerDocument.defaultView);
|
|
98
100
|
const popoverId = computed(() => props.id ?? `${generatedId}-popover`);
|
|
99
101
|
const placement = computed(() => props.placement ?? DEFAULT_PLACEMENT);
|
|
100
102
|
const popoverRole = computed(() => props.role ?? DEFAULT_ROLE);
|
|
@@ -103,7 +105,8 @@ function usePopover(props, emitOpenChange) {
|
|
|
103
105
|
const isDisabled = computed(() => Boolean(props.disabled || !hasContent.value));
|
|
104
106
|
const isOpen = computed(() => props.open ?? uncontrolledOpen.value);
|
|
105
107
|
const isVisible = computed(() => isOpen.value && !isDisabled.value);
|
|
106
|
-
const shouldRenderContent = computed(() => !isDisabled.value);
|
|
108
|
+
const shouldRenderContent = computed(() => !isDisabled.value && (Boolean(props.keepMounted) || isVisible.value));
|
|
109
|
+
const shouldShowContent = computed(() => !props.keepMounted || isVisible.value);
|
|
107
110
|
const shouldWireTarget = computed(() => isTargetMode.value && !isDisabled.value);
|
|
108
111
|
const ariaLabel = computed(() => props.ariaLabel || void 0);
|
|
109
112
|
const ariaLabelledby = computed(() => props.ariaLabelledby || void 0);
|
|
@@ -146,7 +149,6 @@ function usePopover(props, emitOpenChange) {
|
|
|
146
149
|
}
|
|
147
150
|
function openPopover() {
|
|
148
151
|
if (isDisabled.value) return;
|
|
149
|
-
updateTargetPosition();
|
|
150
152
|
setOpen(true);
|
|
151
153
|
}
|
|
152
154
|
function closePopover() {
|
|
@@ -191,13 +193,13 @@ function usePopover(props, emitOpenChange) {
|
|
|
191
193
|
closePopover();
|
|
192
194
|
}
|
|
193
195
|
function syncTargetElement() {
|
|
196
|
+
positionScheduler.cancel();
|
|
194
197
|
const nextTarget = isTargetMode.value ? resolveTargetElement(readTarget()) : null;
|
|
195
198
|
if (targetElement.value !== nextTarget) targetElement.value = nextTarget;
|
|
196
199
|
if (!nextTarget) {
|
|
197
200
|
targetPosition.value = null;
|
|
198
201
|
return;
|
|
199
202
|
}
|
|
200
|
-
if (isVisible.value) updateTargetPosition();
|
|
201
203
|
}
|
|
202
204
|
watch(isDisabled, (disabled) => {
|
|
203
205
|
if (disabled) closePopover();
|
|
@@ -233,12 +235,14 @@ function usePopover(props, emitOpenChange) {
|
|
|
233
235
|
isTargetMode,
|
|
234
236
|
targetElement
|
|
235
237
|
], ([visible, targetMode, target], _previous, onCleanup) => {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
238
|
+
const view = target?.ownerDocument.defaultView;
|
|
239
|
+
if (!visible || !targetMode || !view) return;
|
|
240
|
+
view.addEventListener("resize", positionScheduler.schedule);
|
|
241
|
+
view.addEventListener("scroll", positionScheduler.schedule, true);
|
|
239
242
|
onCleanup(() => {
|
|
240
|
-
|
|
241
|
-
|
|
243
|
+
view.removeEventListener("resize", positionScheduler.schedule);
|
|
244
|
+
view.removeEventListener("scroll", positionScheduler.schedule, true);
|
|
245
|
+
positionScheduler.cancel();
|
|
242
246
|
});
|
|
243
247
|
}, { flush: "sync" });
|
|
244
248
|
watch(isVisible, (visible, _previous, onCleanup) => {
|
|
@@ -258,9 +262,11 @@ function usePopover(props, emitOpenChange) {
|
|
|
258
262
|
placement,
|
|
259
263
|
isVisible
|
|
260
264
|
], () => {
|
|
265
|
+
positionScheduler.cancel();
|
|
261
266
|
if (isVisible.value) updateTargetPosition();
|
|
262
267
|
}, { flush: "sync" });
|
|
263
268
|
onMounted(syncTargetElement);
|
|
269
|
+
onBeforeUnmount(positionScheduler.cancel);
|
|
264
270
|
return {
|
|
265
271
|
rootRef,
|
|
266
272
|
popoverId,
|
|
@@ -272,6 +278,7 @@ function usePopover(props, emitOpenChange) {
|
|
|
272
278
|
ariaLabelledby,
|
|
273
279
|
ariaDescribedby,
|
|
274
280
|
shouldRenderContent,
|
|
281
|
+
shouldShowContent,
|
|
275
282
|
rootClass,
|
|
276
283
|
contentStyle,
|
|
277
284
|
triggerProps,
|
|
@@ -285,8 +292,8 @@ function usePopover(props, emitOpenChange) {
|
|
|
285
292
|
}
|
|
286
293
|
//#endregion
|
|
287
294
|
//#region src/components/popover/popover.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
288
|
-
var t0 = template("<section data-v-
|
|
289
|
-
var t1 = template("<span data-v-
|
|
295
|
+
var t0 = template("<section data-v-13614b6c class=rp-popover__content>");
|
|
296
|
+
var t1 = template("<span data-v-13614b6c>", 1);
|
|
290
297
|
//#endregion
|
|
291
298
|
//#region src/components/popover/popover.vue
|
|
292
299
|
var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
|
|
@@ -316,13 +323,17 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
316
323
|
closeOnEscape: {
|
|
317
324
|
type: Boolean,
|
|
318
325
|
default: true
|
|
326
|
+
},
|
|
327
|
+
keepMounted: {
|
|
328
|
+
type: Boolean,
|
|
329
|
+
default: false
|
|
319
330
|
}
|
|
320
331
|
},
|
|
321
332
|
emits: ["update:open"],
|
|
322
333
|
setup(__props, { emit: __emit }) {
|
|
323
334
|
const props = __props;
|
|
324
335
|
const emit = __emit;
|
|
325
|
-
const { rootRef, popoverId,
|
|
336
|
+
const { rootRef, popoverId, isTargetMode, popoverRole, ariaLabel, ariaLabelledby, ariaDescribedby, shouldRenderContent, shouldShowContent, rootClass, contentStyle, slotProps, contentSlotProps } = usePopover(props, (open) => {
|
|
326
337
|
emit("update:open", open);
|
|
327
338
|
});
|
|
328
339
|
const n12 = t1();
|
|
@@ -368,13 +379,13 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
368
379
|
}, null, 1);
|
|
369
380
|
}, null, 129);
|
|
370
381
|
}, 1);
|
|
371
|
-
applyVShow(n10, () => unref(
|
|
382
|
+
applyVShow(n10, () => unref(shouldShowContent));
|
|
372
383
|
return n10;
|
|
373
384
|
}, null, 129);
|
|
374
385
|
}, { _: 8 }));
|
|
375
386
|
setStaticTemplateRef(n12, rootRef, null, "rootRef");
|
|
376
387
|
return n12;
|
|
377
388
|
}
|
|
378
|
-
}), [["__scopeId", "data-v-
|
|
389
|
+
}), [["__scopeId", "data-v-13614b6c"]]);
|
|
379
390
|
//#endregion
|
|
380
391
|
export { popover_default as t };
|