ropav 0.0.11 → 0.0.13
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 +3 -0
- package/dist/checkbox.css +32 -32
- package/dist/checkbox.js +33 -14
- package/dist/color-input.css +19 -19
- package/dist/color-input.js +35 -17
- package/dist/components/checkbox/types.d.ts +5 -1
- package/dist/components/checkbox/useCheckbox.d.ts +1 -1
- package/dist/components/color-input/types.d.ts +4 -1
- package/dist/components/color-input/useColorInput.d.ts +1 -1
- package/dist/components/color-input/useColorInputValue.d.ts +1 -1
- package/dist/components/dialog/dialog-close.d.ts +21 -0
- package/dist/components/dialog/dialog-content.d.ts +32 -0
- package/dist/components/dialog/dialog-core.d.ts +27 -0
- package/dist/components/dialog/dialog-description.d.ts +21 -0
- package/dist/components/dialog/dialog-overlay.d.ts +21 -0
- package/dist/components/dialog/dialog-portal.d.ts +21 -0
- package/dist/components/dialog/dialog-root.d.ts +28 -0
- package/dist/components/dialog/dialog-title.d.ts +21 -0
- package/dist/components/dialog/dialog-trigger.d.ts +23 -0
- package/dist/components/dialog/index.d.ts +9 -0
- package/dist/components/dialog/index.js +2 -0
- package/dist/components/dialog/types.d.ts +61 -0
- package/dist/components/dropdown-menu/dropdown-menu-checkbox-item.d.ts +24 -0
- package/dist/components/dropdown-menu/dropdown-menu-content.d.ts +34 -0
- package/dist/components/dropdown-menu/dropdown-menu-context-trigger.d.ts +23 -0
- package/dist/components/dropdown-menu/dropdown-menu-item-indicator.d.ts +24 -0
- package/dist/components/dropdown-menu/dropdown-menu-item-row.d.ts +28 -0
- package/dist/components/dropdown-menu/dropdown-menu-item.d.ts +23 -0
- package/dist/components/dropdown-menu/dropdown-menu-items.d.ts +24 -22
- package/dist/components/dropdown-menu/dropdown-menu-label.d.ts +21 -0
- package/dist/components/dropdown-menu/dropdown-menu-outside.d.ts +3 -0
- package/dist/components/dropdown-menu/dropdown-menu-portal.d.ts +21 -0
- package/dist/components/dropdown-menu/dropdown-menu-primitive-core.d.ts +110 -0
- package/dist/components/dropdown-menu/dropdown-menu-primitives.d.ts +15 -724
- package/dist/components/dropdown-menu/dropdown-menu-radio-group.d.ts +25 -0
- package/dist/components/dropdown-menu/dropdown-menu-radio-item.d.ts +23 -0
- package/dist/components/dropdown-menu/dropdown-menu-root.d.ts +30 -0
- package/dist/components/dropdown-menu/dropdown-menu-separator.d.ts +19 -0
- package/dist/components/dropdown-menu/dropdown-menu-sub-content.d.ts +34 -0
- package/dist/components/dropdown-menu/dropdown-menu-sub-trigger.d.ts +28 -0
- package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +28 -0
- package/dist/components/dropdown-menu/dropdown-menu-trigger.d.ts +23 -0
- package/dist/components/dropdown-menu/dropdown-menu.d.ts +5 -2
- package/dist/components/dropdown-menu/index.d.ts +28 -49
- package/dist/components/dropdown-menu/index.js +2 -2
- package/dist/components/dropdown-menu/types.d.ts +8 -3
- package/dist/components/dropdown-menu/useDropdownMenu.d.ts +8 -4
- package/dist/components/dropdown-menu/useDropdownMenuDisclosure.d.ts +7 -2
- package/dist/components/dropdown-menu/useDropdownMenuPortalPosition.d.ts +3 -3
- package/dist/components/dropdown-menu/useDropdownMenuPrimitiveContent.d.ts +27 -0
- package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +2 -0
- package/dist/components/floating/index.d.ts +3 -1
- package/dist/components/floating/index.js +3 -0
- package/dist/components/floating/types.d.ts +86 -1
- package/dist/components/floating/useFloatingPosition.d.ts +3 -26
- package/dist/components/floating/useHoverDisclosure.d.ts +2 -0
- package/dist/components/input/input.d.ts +4 -1
- package/dist/components/input/types.d.ts +3 -1
- package/dist/components/modal/index.d.ts +1 -1
- package/dist/components/modal/modal.d.ts +3 -1
- package/dist/components/modal/types.d.ts +3 -0
- package/dist/components/modal/useModal.d.ts +7 -4
- package/dist/components/number-input/types.d.ts +3 -1
- package/dist/components/number-input/useNumberInput.d.ts +2 -1
- package/dist/components/popover/usePopover.d.ts +2 -2
- package/dist/components/radio/types.d.ts +17 -1
- package/dist/components/radio/useRadio.d.ts +3 -0
- package/dist/components/select/select.d.ts +4 -1
- package/dist/components/select/types.d.ts +6 -1
- package/dist/components/select/useSelect.d.ts +3 -2
- package/dist/components/slider/index.d.ts +1 -1
- package/dist/components/slider/range-slider.d.ts +3 -3
- package/dist/components/slider/types.d.ts +11 -3
- package/dist/components/slider/useRangeSlider.d.ts +1 -1
- package/dist/components/slider/useSlider.d.ts +1 -1
- package/dist/components/switch/types.d.ts +5 -1
- package/dist/components/switch/useSwitch.d.ts +1 -1
- package/dist/components/teleport-provider/index.d.ts +1 -0
- package/dist/components/teleport-provider/index.js +2 -1
- package/dist/components/teleport-provider/useTeleportTarget.d.ts +4 -3
- package/dist/components/textarea/types.d.ts +4 -1
- package/dist/components/textarea/useTextarea.d.ts +1 -1
- package/dist/components/toast/index.d.ts +2 -1
- package/dist/components/toast/index.js +2 -2
- package/dist/components/toast/toast-store.d.ts +2 -0
- package/dist/components/toast/types.d.ts +10 -4
- package/dist/components/toast/useToast.d.ts +2 -2
- package/dist/components/tooltip/useTooltip.d.ts +3 -3
- package/dist/composables/useOverlayLayer.d.ts +32 -0
- package/dist/dialog.js +510 -0
- package/dist/dropdown-menu.css +4 -5
- package/dist/dropdown-menu.js +1155 -886
- package/dist/floating.js +403 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -4
- package/dist/input.css +24 -24
- package/dist/input.js +21 -11
- package/dist/legacy-unlayered.css +424 -503
- package/dist/modal.css +28 -28
- package/dist/modal.js +141 -200
- package/dist/number-input.css +20 -20
- package/dist/number-input.js +44 -16
- package/dist/popover.css +4 -4
- package/dist/popover.js +29 -40
- package/dist/radio.css +18 -18
- package/dist/radio.js +96 -18
- package/dist/select.css +54 -43
- package/dist/select.js +185 -67
- package/dist/slider.css +183 -202
- package/dist/slider.js +138 -37
- package/dist/switch.css +17 -17
- package/dist/switch.js +31 -13
- package/dist/textarea.css +26 -26
- package/dist/textarea.js +19 -9
- package/dist/toast.js +110 -99
- package/dist/tooltip.css +5 -80
- package/dist/tooltip.js +11 -3
- package/dist/useControlState.js +4 -0
- package/dist/useFloatingPosition.js +86 -39
- package/dist/useFormControl.js +107 -0
- package/dist/useOverlayLayer.js +262 -0
- package/dist/useTeleportTarget.js +21 -10
- package/docs/public-floating-api.md +159 -0
- package/docs/public-styles-api.md +2 -1
- package/package.json +10 -6
- package/dist/useClickOutside.js +0 -24
package/dist/floating.js
ADDED
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import { computed, onBeforeUnmount, onMounted, ref, shallowRef, toValue, watch } from "vue";
|
|
2
|
+
//#region src/components/floating/useHoverDisclosure.ts
|
|
3
|
+
var DEFAULT_OPEN_DELAY = 0;
|
|
4
|
+
var DEFAULT_CLOSE_DELAY = 0;
|
|
5
|
+
function isElement(value) {
|
|
6
|
+
return typeof Element !== "undefined" && value instanceof Element;
|
|
7
|
+
}
|
|
8
|
+
function resolveSelector(selector) {
|
|
9
|
+
if (typeof document === "undefined") return null;
|
|
10
|
+
try {
|
|
11
|
+
return document.querySelector(selector);
|
|
12
|
+
} catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function resolveInteractionTarget(target) {
|
|
17
|
+
if (!target) return null;
|
|
18
|
+
if (typeof target === "string") return resolveSelector(target);
|
|
19
|
+
if (isElement(target)) return target;
|
|
20
|
+
return isElement(target.contextElement) ? target.contextElement : null;
|
|
21
|
+
}
|
|
22
|
+
function resolveContentTarget(target) {
|
|
23
|
+
if (!target) return null;
|
|
24
|
+
return typeof target === "string" ? resolveSelector(target) : isElement(target) ? target : null;
|
|
25
|
+
}
|
|
26
|
+
function readDelay(value, fallback) {
|
|
27
|
+
if (value == null) return fallback;
|
|
28
|
+
return Number.isFinite(value) ? Math.max(0, value) : fallback;
|
|
29
|
+
}
|
|
30
|
+
function eventElement(event) {
|
|
31
|
+
return isElement(event.currentTarget) ? event.currentTarget : null;
|
|
32
|
+
}
|
|
33
|
+
function focusLeavesCurrentTarget(event) {
|
|
34
|
+
const currentTarget = eventElement(event);
|
|
35
|
+
const nextTarget = event.relatedTarget;
|
|
36
|
+
return !(currentTarget && typeof Node !== "undefined" && nextTarget instanceof Node && currentTarget.contains(nextTarget));
|
|
37
|
+
}
|
|
38
|
+
function useHoverDisclosure(options = {}) {
|
|
39
|
+
const uncontrolledOpen = ref(options.defaultOpen === true && !toValue(options.disabled));
|
|
40
|
+
const resolvedInteractionTarget = shallowRef(null);
|
|
41
|
+
const resolvedContentTarget = shallowRef(null);
|
|
42
|
+
const controlledOpen = computed(() => toValue(options.open));
|
|
43
|
+
const isDisabled = computed(() => Boolean(toValue(options.disabled)));
|
|
44
|
+
const openState = computed(() => controlledOpen.value ?? uncontrolledOpen.value);
|
|
45
|
+
const isOpen = computed(() => !isDisabled.value && openState.value);
|
|
46
|
+
const state = computed(() => isOpen.value ? "open" : "closed");
|
|
47
|
+
let requestedOpen = openState.value;
|
|
48
|
+
let triggerHovered = false;
|
|
49
|
+
let contentHovered = false;
|
|
50
|
+
let triggerFocused = false;
|
|
51
|
+
let contentFocused = false;
|
|
52
|
+
let touchPinned = false;
|
|
53
|
+
let touchPointerActive = false;
|
|
54
|
+
let touchClickPending = false;
|
|
55
|
+
let triggerElement = null;
|
|
56
|
+
let contentElement = null;
|
|
57
|
+
let openTimer;
|
|
58
|
+
let closeTimer;
|
|
59
|
+
let documentListenersActive = false;
|
|
60
|
+
let disposed = false;
|
|
61
|
+
function getOpenDelay() {
|
|
62
|
+
return readDelay(toValue(options.openDelay), DEFAULT_OPEN_DELAY);
|
|
63
|
+
}
|
|
64
|
+
function getCloseDelay() {
|
|
65
|
+
return readDelay(toValue(options.closeDelay), DEFAULT_CLOSE_DELAY);
|
|
66
|
+
}
|
|
67
|
+
function getTouchBehavior() {
|
|
68
|
+
return toValue(options.touchBehavior) ?? "none";
|
|
69
|
+
}
|
|
70
|
+
function clearOpenTimer() {
|
|
71
|
+
if (openTimer === void 0) return;
|
|
72
|
+
clearTimeout(openTimer);
|
|
73
|
+
openTimer = void 0;
|
|
74
|
+
}
|
|
75
|
+
function clearCloseTimer() {
|
|
76
|
+
if (closeTimer === void 0) return;
|
|
77
|
+
clearTimeout(closeTimer);
|
|
78
|
+
closeTimer = void 0;
|
|
79
|
+
}
|
|
80
|
+
function clearTimers() {
|
|
81
|
+
clearOpenTimer();
|
|
82
|
+
clearCloseTimer();
|
|
83
|
+
}
|
|
84
|
+
function hasActiveInteraction() {
|
|
85
|
+
return triggerHovered || contentHovered || triggerFocused || contentFocused || touchPinned;
|
|
86
|
+
}
|
|
87
|
+
function setOpen(nextOpen, reason, event) {
|
|
88
|
+
if (disposed || nextOpen && isDisabled.value || requestedOpen === nextOpen) return;
|
|
89
|
+
requestedOpen = nextOpen;
|
|
90
|
+
if (controlledOpen.value === void 0) uncontrolledOpen.value = nextOpen;
|
|
91
|
+
options.onOpenChange?.(nextOpen, {
|
|
92
|
+
reason,
|
|
93
|
+
event
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
function openImmediately(reason, event) {
|
|
97
|
+
clearTimers();
|
|
98
|
+
setOpen(true, reason, event);
|
|
99
|
+
}
|
|
100
|
+
function closeImmediately(reason, event) {
|
|
101
|
+
clearTimers();
|
|
102
|
+
setOpen(false, reason, event);
|
|
103
|
+
}
|
|
104
|
+
function scheduleOpen(reason, event) {
|
|
105
|
+
if (disposed || isDisabled.value) return;
|
|
106
|
+
clearCloseTimer();
|
|
107
|
+
clearOpenTimer();
|
|
108
|
+
if (requestedOpen) return;
|
|
109
|
+
const delay = getOpenDelay();
|
|
110
|
+
if (delay === 0) {
|
|
111
|
+
setOpen(true, reason, event);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
openTimer = setTimeout(() => {
|
|
115
|
+
openTimer = void 0;
|
|
116
|
+
if (!triggerHovered || isDisabled.value) return;
|
|
117
|
+
setOpen(true, reason, event);
|
|
118
|
+
}, delay);
|
|
119
|
+
}
|
|
120
|
+
function scheduleClose(reason, event) {
|
|
121
|
+
clearOpenTimer();
|
|
122
|
+
clearCloseTimer();
|
|
123
|
+
if (disposed || hasActiveInteraction()) return;
|
|
124
|
+
closeTimer = setTimeout(() => {
|
|
125
|
+
closeTimer = void 0;
|
|
126
|
+
if (hasActiveInteraction()) return;
|
|
127
|
+
setOpen(false, reason, event);
|
|
128
|
+
}, getCloseDelay());
|
|
129
|
+
}
|
|
130
|
+
function rememberTrigger(event) {
|
|
131
|
+
triggerElement = eventElement(event) ?? resolvedInteractionTarget.value ?? triggerElement;
|
|
132
|
+
}
|
|
133
|
+
function rememberContent(event) {
|
|
134
|
+
contentElement = eventElement(event) ?? resolvedContentTarget.value ?? contentElement;
|
|
135
|
+
}
|
|
136
|
+
function onTriggerPointerenter(event) {
|
|
137
|
+
rememberTrigger(event);
|
|
138
|
+
if (event.pointerType === "touch" || isDisabled.value) return;
|
|
139
|
+
triggerHovered = true;
|
|
140
|
+
scheduleOpen("hover", event);
|
|
141
|
+
}
|
|
142
|
+
function onTriggerPointerleave(event) {
|
|
143
|
+
rememberTrigger(event);
|
|
144
|
+
if (event.pointerType === "touch") return;
|
|
145
|
+
triggerHovered = false;
|
|
146
|
+
scheduleClose("hover", event);
|
|
147
|
+
}
|
|
148
|
+
function onContentPointerenter(event) {
|
|
149
|
+
rememberContent(event);
|
|
150
|
+
if (event.pointerType === "touch" || isDisabled.value) return;
|
|
151
|
+
contentHovered = true;
|
|
152
|
+
clearCloseTimer();
|
|
153
|
+
}
|
|
154
|
+
function onContentPointerleave(event) {
|
|
155
|
+
rememberContent(event);
|
|
156
|
+
if (event.pointerType === "touch") return;
|
|
157
|
+
contentHovered = false;
|
|
158
|
+
scheduleClose("hover", event);
|
|
159
|
+
}
|
|
160
|
+
function onTriggerFocusin(event) {
|
|
161
|
+
rememberTrigger(event);
|
|
162
|
+
if (isDisabled.value || toValue(options.openOnFocus) === false) return;
|
|
163
|
+
triggerFocused = true;
|
|
164
|
+
openImmediately("focus", event);
|
|
165
|
+
}
|
|
166
|
+
function onTriggerFocusout(event) {
|
|
167
|
+
rememberTrigger(event);
|
|
168
|
+
if (!focusLeavesCurrentTarget(event)) return;
|
|
169
|
+
triggerFocused = false;
|
|
170
|
+
scheduleClose("focus", event);
|
|
171
|
+
}
|
|
172
|
+
function onContentFocusin(event) {
|
|
173
|
+
rememberContent(event);
|
|
174
|
+
if (isDisabled.value) return;
|
|
175
|
+
contentFocused = true;
|
|
176
|
+
clearCloseTimer();
|
|
177
|
+
}
|
|
178
|
+
function onContentFocusout(event) {
|
|
179
|
+
rememberContent(event);
|
|
180
|
+
if (!focusLeavesCurrentTarget(event)) return;
|
|
181
|
+
contentFocused = false;
|
|
182
|
+
scheduleClose("focus", event);
|
|
183
|
+
}
|
|
184
|
+
function onTriggerPointerdown(event) {
|
|
185
|
+
rememberTrigger(event);
|
|
186
|
+
touchPointerActive = event.pointerType === "touch";
|
|
187
|
+
touchClickPending = false;
|
|
188
|
+
}
|
|
189
|
+
function onTriggerPointerup(event) {
|
|
190
|
+
rememberTrigger(event);
|
|
191
|
+
touchClickPending = event.pointerType === "touch" && touchPointerActive;
|
|
192
|
+
touchPointerActive = false;
|
|
193
|
+
}
|
|
194
|
+
function onTriggerPointercancel(event) {
|
|
195
|
+
rememberTrigger(event);
|
|
196
|
+
touchPointerActive = false;
|
|
197
|
+
touchClickPending = false;
|
|
198
|
+
}
|
|
199
|
+
function onTriggerClick(event) {
|
|
200
|
+
rememberTrigger(event);
|
|
201
|
+
if (!touchClickPending) return;
|
|
202
|
+
touchClickPending = false;
|
|
203
|
+
if (getTouchBehavior() !== "toggle" || isDisabled.value) return;
|
|
204
|
+
event.preventDefault();
|
|
205
|
+
if (touchPinned || requestedOpen) {
|
|
206
|
+
touchPinned = false;
|
|
207
|
+
closeImmediately("touch", event);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
touchPinned = true;
|
|
211
|
+
openImmediately("touch", event);
|
|
212
|
+
}
|
|
213
|
+
function onContentPointerdown(event) {
|
|
214
|
+
rememberContent(event);
|
|
215
|
+
}
|
|
216
|
+
function onKeydown(event) {
|
|
217
|
+
if (event.key !== "Escape" || toValue(options.closeOnEscape) === false || !isOpen.value) return;
|
|
218
|
+
touchPinned = false;
|
|
219
|
+
closeImmediately("escape", event);
|
|
220
|
+
}
|
|
221
|
+
function open() {
|
|
222
|
+
openImmediately("programmatic");
|
|
223
|
+
}
|
|
224
|
+
function close() {
|
|
225
|
+
touchPinned = false;
|
|
226
|
+
closeImmediately("programmatic");
|
|
227
|
+
}
|
|
228
|
+
function toggle() {
|
|
229
|
+
if (requestedOpen || isOpen.value) close();
|
|
230
|
+
else open();
|
|
231
|
+
}
|
|
232
|
+
function isEventInside(event) {
|
|
233
|
+
const elements = [
|
|
234
|
+
triggerElement,
|
|
235
|
+
contentElement,
|
|
236
|
+
resolvedInteractionTarget.value,
|
|
237
|
+
resolvedContentTarget.value
|
|
238
|
+
].filter((element) => element !== null);
|
|
239
|
+
const path = typeof event.composedPath === "function" ? event.composedPath() : [];
|
|
240
|
+
if (elements.some((element) => path.includes(element))) return true;
|
|
241
|
+
const target = event.target;
|
|
242
|
+
return typeof Node !== "undefined" && target instanceof Node && elements.some((element) => element.contains(target));
|
|
243
|
+
}
|
|
244
|
+
function onDocumentPointerdown(event) {
|
|
245
|
+
if (!touchPinned || isEventInside(event)) return;
|
|
246
|
+
touchPinned = false;
|
|
247
|
+
closeImmediately("outside", event);
|
|
248
|
+
}
|
|
249
|
+
function setDocumentListeners(active) {
|
|
250
|
+
if (typeof document === "undefined" || active === documentListenersActive) return;
|
|
251
|
+
documentListenersActive = active;
|
|
252
|
+
const method = active ? "addEventListener" : "removeEventListener";
|
|
253
|
+
document[method]("keydown", onKeydown);
|
|
254
|
+
document[method]("pointerdown", onDocumentPointerdown, true);
|
|
255
|
+
}
|
|
256
|
+
function syncInteractionTarget() {
|
|
257
|
+
resolvedInteractionTarget.value = resolveInteractionTarget(toValue(options.interactionTarget));
|
|
258
|
+
}
|
|
259
|
+
function syncContentTarget() {
|
|
260
|
+
resolvedContentTarget.value = resolveContentTarget(toValue(options.contentTarget));
|
|
261
|
+
}
|
|
262
|
+
function bindTriggerTarget(target, cleanup) {
|
|
263
|
+
triggerElement = target;
|
|
264
|
+
target.addEventListener("pointerenter", onTriggerPointerenter);
|
|
265
|
+
target.addEventListener("pointerleave", onTriggerPointerleave);
|
|
266
|
+
target.addEventListener("pointerdown", onTriggerPointerdown);
|
|
267
|
+
target.addEventListener("pointerup", onTriggerPointerup);
|
|
268
|
+
target.addEventListener("pointercancel", onTriggerPointercancel);
|
|
269
|
+
target.addEventListener("click", onTriggerClick);
|
|
270
|
+
target.addEventListener("focusin", onTriggerFocusin);
|
|
271
|
+
target.addEventListener("focusout", onTriggerFocusout);
|
|
272
|
+
target.addEventListener("keydown", onKeydown);
|
|
273
|
+
cleanup(() => {
|
|
274
|
+
target.removeEventListener("pointerenter", onTriggerPointerenter);
|
|
275
|
+
target.removeEventListener("pointerleave", onTriggerPointerleave);
|
|
276
|
+
target.removeEventListener("pointerdown", onTriggerPointerdown);
|
|
277
|
+
target.removeEventListener("pointerup", onTriggerPointerup);
|
|
278
|
+
target.removeEventListener("pointercancel", onTriggerPointercancel);
|
|
279
|
+
target.removeEventListener("click", onTriggerClick);
|
|
280
|
+
target.removeEventListener("focusin", onTriggerFocusin);
|
|
281
|
+
target.removeEventListener("focusout", onTriggerFocusout);
|
|
282
|
+
target.removeEventListener("keydown", onKeydown);
|
|
283
|
+
if (triggerElement === target) triggerElement = null;
|
|
284
|
+
triggerHovered = false;
|
|
285
|
+
triggerFocused = false;
|
|
286
|
+
scheduleClose("hover");
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
function bindContentTarget(target, cleanup) {
|
|
290
|
+
contentElement = target;
|
|
291
|
+
target.addEventListener("pointerenter", onContentPointerenter);
|
|
292
|
+
target.addEventListener("pointerleave", onContentPointerleave);
|
|
293
|
+
target.addEventListener("pointerdown", onContentPointerdown);
|
|
294
|
+
target.addEventListener("focusin", onContentFocusin);
|
|
295
|
+
target.addEventListener("focusout", onContentFocusout);
|
|
296
|
+
target.addEventListener("keydown", onKeydown);
|
|
297
|
+
cleanup(() => {
|
|
298
|
+
target.removeEventListener("pointerenter", onContentPointerenter);
|
|
299
|
+
target.removeEventListener("pointerleave", onContentPointerleave);
|
|
300
|
+
target.removeEventListener("pointerdown", onContentPointerdown);
|
|
301
|
+
target.removeEventListener("focusin", onContentFocusin);
|
|
302
|
+
target.removeEventListener("focusout", onContentFocusout);
|
|
303
|
+
target.removeEventListener("keydown", onKeydown);
|
|
304
|
+
if (contentElement === target) contentElement = null;
|
|
305
|
+
contentHovered = false;
|
|
306
|
+
contentFocused = false;
|
|
307
|
+
scheduleClose("hover");
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
const triggerProps = computed(() => ({
|
|
311
|
+
"data-state": state.value,
|
|
312
|
+
onPointerenter: onTriggerPointerenter,
|
|
313
|
+
onPointerleave: onTriggerPointerleave,
|
|
314
|
+
onPointerdown: onTriggerPointerdown,
|
|
315
|
+
onPointerup: onTriggerPointerup,
|
|
316
|
+
onPointercancel: onTriggerPointercancel,
|
|
317
|
+
onClick: onTriggerClick,
|
|
318
|
+
onFocusin: onTriggerFocusin,
|
|
319
|
+
onFocusout: onTriggerFocusout,
|
|
320
|
+
onKeydown
|
|
321
|
+
}));
|
|
322
|
+
const contentProps = computed(() => ({
|
|
323
|
+
"data-state": state.value,
|
|
324
|
+
onPointerenter: onContentPointerenter,
|
|
325
|
+
onPointerleave: onContentPointerleave,
|
|
326
|
+
onPointerdown: onContentPointerdown,
|
|
327
|
+
onFocusin: onContentFocusin,
|
|
328
|
+
onFocusout: onContentFocusout,
|
|
329
|
+
onKeydown
|
|
330
|
+
}));
|
|
331
|
+
watch(openState, (value) => {
|
|
332
|
+
requestedOpen = value;
|
|
333
|
+
if (!value) {
|
|
334
|
+
contentHovered = false;
|
|
335
|
+
contentFocused = false;
|
|
336
|
+
contentElement = null;
|
|
337
|
+
touchPinned = false;
|
|
338
|
+
}
|
|
339
|
+
}, { flush: "sync" });
|
|
340
|
+
watch(isDisabled, (disabled) => {
|
|
341
|
+
if (!disabled) return;
|
|
342
|
+
triggerHovered = false;
|
|
343
|
+
contentHovered = false;
|
|
344
|
+
triggerFocused = false;
|
|
345
|
+
contentFocused = false;
|
|
346
|
+
touchPinned = false;
|
|
347
|
+
touchPointerActive = false;
|
|
348
|
+
touchClickPending = false;
|
|
349
|
+
closeImmediately("disabled");
|
|
350
|
+
});
|
|
351
|
+
watch(() => getTouchBehavior(), (behavior) => {
|
|
352
|
+
if (behavior === "toggle" || !touchPinned) return;
|
|
353
|
+
touchPinned = false;
|
|
354
|
+
closeImmediately("touch");
|
|
355
|
+
});
|
|
356
|
+
watch(() => toValue(options.interactionTarget), syncInteractionTarget, {
|
|
357
|
+
flush: "post",
|
|
358
|
+
immediate: true
|
|
359
|
+
});
|
|
360
|
+
watch(() => toValue(options.contentTarget), syncContentTarget, {
|
|
361
|
+
flush: "post",
|
|
362
|
+
immediate: true
|
|
363
|
+
});
|
|
364
|
+
watch(resolvedInteractionTarget, (target, _previous, cleanup) => {
|
|
365
|
+
if (target) bindTriggerTarget(target, cleanup);
|
|
366
|
+
}, {
|
|
367
|
+
flush: "sync",
|
|
368
|
+
immediate: true
|
|
369
|
+
});
|
|
370
|
+
watch(resolvedContentTarget, (target, _previous, cleanup) => {
|
|
371
|
+
if (target) bindContentTarget(target, cleanup);
|
|
372
|
+
}, {
|
|
373
|
+
flush: "sync",
|
|
374
|
+
immediate: true
|
|
375
|
+
});
|
|
376
|
+
watch(isOpen, setDocumentListeners, { flush: "sync" });
|
|
377
|
+
watch(isOpen, () => {
|
|
378
|
+
syncInteractionTarget();
|
|
379
|
+
syncContentTarget();
|
|
380
|
+
}, { flush: "post" });
|
|
381
|
+
onMounted(() => {
|
|
382
|
+
syncInteractionTarget();
|
|
383
|
+
syncContentTarget();
|
|
384
|
+
setDocumentListeners(isOpen.value);
|
|
385
|
+
});
|
|
386
|
+
onBeforeUnmount(() => {
|
|
387
|
+
disposed = true;
|
|
388
|
+
clearTimers();
|
|
389
|
+
setDocumentListeners(false);
|
|
390
|
+
});
|
|
391
|
+
return {
|
|
392
|
+
isOpen,
|
|
393
|
+
isDisabled,
|
|
394
|
+
state,
|
|
395
|
+
triggerProps,
|
|
396
|
+
contentProps,
|
|
397
|
+
open,
|
|
398
|
+
close,
|
|
399
|
+
toggle
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
//#endregion
|
|
403
|
+
export { useHoverDisclosure as t };
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from './components/color-input/index.js';
|
|
|
14
14
|
export * from './components/color-picker/index.js';
|
|
15
15
|
export * from './components/color-swatch/index.js';
|
|
16
16
|
export * from './components/dropdown-menu/index.js';
|
|
17
|
+
export * from './components/dialog/index.js';
|
|
17
18
|
export * from './components/field/index.js';
|
|
18
19
|
export * from './components/focus-trap/index.js';
|
|
19
20
|
export * from './components/floating/index.js';
|
package/dist/index.js
CHANGED
|
@@ -15,13 +15,16 @@ import { t as color_swatch_default } from "./color-swatch.js";
|
|
|
15
15
|
import { t as color_picker_default } from "./color-picker.js";
|
|
16
16
|
import { t as input_default } from "./input.js";
|
|
17
17
|
import { t as useFocusTrap } from "./useFocusTrap.js";
|
|
18
|
+
import { n as useFloatingPosition } from "./useFloatingPosition.js";
|
|
19
|
+
import { r as useTeleportTarget } from "./useTeleportTarget.js";
|
|
18
20
|
import { t as popover_default } from "./popover.js";
|
|
19
21
|
import { n as colorPickerParts, r as colorPickerSizes, t as colorPickerFormats } from "./color-picker2.js";
|
|
20
22
|
import { t as colorSwatchParts } from "./color-swatch2.js";
|
|
21
|
-
import { _ as
|
|
23
|
+
import { _ as dropdown_menu_content_default, a as dropdown_menu_trigger_default, c as dropdown_menu_sub_default, d as dropdown_menu_radio_item_default, f as dropdown_menu_radio_group_default, g as dropdown_menu_context_trigger_default, h as dropdown_menu_item_indicator_default, i as useDropdownMenu, l as dropdown_menu_separator_default, m as dropdown_menu_label_default, n as dropdownMenuParts, o as dropdown_menu_sub_trigger_default, p as dropdown_menu_portal_default, r as dropdown_menu_default, s as dropdown_menu_sub_content_default, t as DropdownMenuItem, u as dropdown_menu_root_default, v as dropdown_menu_checkbox_item_default } from "./dropdown-menu.js";
|
|
24
|
+
import { a as dialog_overlay_default, c as dialog_close_default, i as dialog_portal_default, n as dialog_title_default, o as dialog_description_default, r as dialog_root_default, s as dialog_content_default, t as dialog_trigger_default } from "./dialog.js";
|
|
22
25
|
import { n as field_default, t as fieldParts } from "./field.js";
|
|
23
26
|
import { n as focus_trap_default, t as focusTrapParts } from "./focus-trap.js";
|
|
24
|
-
import "./
|
|
27
|
+
import { t as useHoverDisclosure } from "./floating.js";
|
|
25
28
|
import { t as icon_button_default } from "./icon-button.js";
|
|
26
29
|
import { t as iconButtonParts } from "./icon-button2.js";
|
|
27
30
|
import { t as inputParts } from "./input2.js";
|
|
@@ -39,6 +42,6 @@ import { n as switch_default, t as switchParts } from "./switch.js";
|
|
|
39
42
|
import { a as tabs_trigger_default, c as tabs_default, d as useTabsList, f as useTabsTrigger, i as tabsTriggerParts, l as useTabs, n as tabsListParts, o as tabs_list_default, r as tabsParts, s as tabs_content_default, t as tabsContentParts, u as useTabsContent } from "./tabs.js";
|
|
40
43
|
import { t as teleport_provider_default } from "./teleport-provider.js";
|
|
41
44
|
import { n as textarea_default, t as textareaParts } from "./textarea.js";
|
|
42
|
-
import { a as toastColors, c as toastRadiuses, d as toastViewportParts, f as
|
|
45
|
+
import { a as toastColors, c as toastRadiuses, d as toastViewportParts, f as createToastStore, i as useToast, l as toastTypes, n as toast_viewport_default, o as toastParts, p as toast_default, r as toast_provider_default, s as toastPositions, t as useToastState, u as toastVariants } from "./toast.js";
|
|
43
46
|
import { t as tooltipParts } from "./tooltip2.js";
|
|
44
|
-
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, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuContextTrigger, DropdownMenuItem, DropdownMenuItemIndicator, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, field_default as Field, focus_trap_default as FocusTrap, 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, teleport_provider_default as TeleportProvider, textarea_default as Textarea, toast_default as Toast, toast_provider_default as ToastProvider, toast_viewport_default as ToastViewport, tooltip_default as Tooltip, accordionItemParts, accordionParts, alertColors, alertParts, alertRadiuses, alertVariants, aspectRatioParts, avatarColors, avatarParts, avatarRadiuses, avatarSizes, avatarVariants, badgeColors, badgeParts, badgeRadiuses, badgeSizes, badgeVariants, buttonGroupParts, buttonLinkParts, buttonParts, cardParts, checkboxParts, collapseParts, colorInputParts, colorPickerFormats, colorPickerParts, colorPickerSizes, colorSwatchParts, dropdownMenuParts, fieldParts, focusTrapParts, iconButtonParts, inputParts, modalParts, numberInputParts, overlayParts, popoverParts, popoverPlacements, progressColors, progressParts, progressRadiuses, progressSizes, radioGroupParts, radioParts, rangeSliderParts, selectParts, sliderColors, sliderOrientations, sliderParts, sliderSizes, switchParts, tabsContentParts, tabsListParts, tabsParts, tabsTriggerParts, textareaParts, toastColors, toastParts, toastPositions, toastRadiuses, toastTypes, toastVariants, toastViewportParts, tooltipParts, useAccordion, useAccordionItem, useCollapse, useDropdownMenu, useFocusTrap, useTabs, useTabsContent, useTabsList, useTabsTrigger, useToast, useToastState };
|
|
47
|
+
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, dialog_close_default as DialogClose, dialog_content_default as DialogContent, dialog_description_default as DialogDescription, dialog_overlay_default as DialogOverlay, dialog_portal_default as DialogPortal, dialog_root_default as DialogRoot, dialog_title_default as DialogTitle, dialog_trigger_default as DialogTrigger, dropdown_menu_default as DropdownMenu, dropdown_menu_checkbox_item_default as DropdownMenuCheckboxItem, dropdown_menu_content_default as DropdownMenuContent, dropdown_menu_context_trigger_default as DropdownMenuContextTrigger, DropdownMenuItem, dropdown_menu_item_indicator_default as DropdownMenuItemIndicator, dropdown_menu_label_default as DropdownMenuLabel, dropdown_menu_portal_default as DropdownMenuPortal, dropdown_menu_radio_group_default as DropdownMenuRadioGroup, dropdown_menu_radio_item_default as DropdownMenuRadioItem, dropdown_menu_root_default as DropdownMenuRoot, dropdown_menu_separator_default as DropdownMenuSeparator, dropdown_menu_sub_default as DropdownMenuSub, dropdown_menu_sub_content_default as DropdownMenuSubContent, dropdown_menu_sub_trigger_default as DropdownMenuSubTrigger, dropdown_menu_trigger_default as DropdownMenuTrigger, field_default as Field, focus_trap_default as FocusTrap, 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, teleport_provider_default as TeleportProvider, textarea_default as Textarea, toast_default as Toast, toast_provider_default as ToastProvider, toast_viewport_default as ToastViewport, tooltip_default as Tooltip, accordionItemParts, accordionParts, alertColors, alertParts, alertRadiuses, alertVariants, aspectRatioParts, avatarColors, avatarParts, avatarRadiuses, avatarSizes, avatarVariants, badgeColors, badgeParts, badgeRadiuses, badgeSizes, badgeVariants, buttonGroupParts, buttonLinkParts, buttonParts, cardParts, checkboxParts, collapseParts, colorInputParts, colorPickerFormats, colorPickerParts, colorPickerSizes, colorSwatchParts, createToastStore, dropdownMenuParts, fieldParts, focusTrapParts, iconButtonParts, inputParts, modalParts, numberInputParts, overlayParts, popoverParts, popoverPlacements, progressColors, progressParts, progressRadiuses, progressSizes, radioGroupParts, radioParts, rangeSliderParts, selectParts, sliderColors, sliderOrientations, sliderParts, sliderSizes, switchParts, tabsContentParts, tabsListParts, tabsParts, tabsTriggerParts, textareaParts, toastColors, toastParts, toastPositions, toastRadiuses, toastTypes, toastVariants, toastViewportParts, tooltipParts, useAccordion, useAccordionItem, useCollapse, useDropdownMenu, useFloatingPosition, useFocusTrap, useHoverDisclosure, useTabs, useTabsContent, useTabsList, useTabsTrigger, useTeleportTarget, useToast, useToastState };
|
package/dist/input.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@layer ropav.components {
|
|
2
|
-
.rp-input[data-v-
|
|
2
|
+
.rp-input[data-v-3dd93444] {
|
|
3
3
|
--_rp-input-height: var(--rp-size-control-md);
|
|
4
4
|
--_rp-input-padding-x: calc(var(--rp-size-control-md) / 3);
|
|
5
5
|
--_rp-input-font-size: var(--rp-font-size-md);
|
|
@@ -20,81 +20,81 @@
|
|
|
20
20
|
cursor: text;
|
|
21
21
|
transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast);
|
|
22
22
|
}
|
|
23
|
-
.rp-input[data-v-
|
|
23
|
+
.rp-input[data-v-3dd93444]:hover:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
|
|
24
24
|
border-color: var(--rp-color-control-border-hover);
|
|
25
25
|
}
|
|
26
|
-
.rp-input[data-v-
|
|
26
|
+
.rp-input[data-v-3dd93444]:focus-within:not(.rp-input--disabled):not(.rp-input--invalid):not(.rp-input--valid) {
|
|
27
27
|
border-color: var(--rp-color-control-border-focus);
|
|
28
28
|
box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
|
|
29
29
|
}
|
|
30
|
-
.rp-input[data-v-
|
|
30
|
+
.rp-input[data-v-3dd93444] {
|
|
31
31
|
height: var(--_rp-input-height);
|
|
32
32
|
padding: 0 var(--_rp-input-padding-x);
|
|
33
33
|
font-size: var(--_rp-input-font-size);
|
|
34
34
|
border-radius: var(--_rp-input-radius);
|
|
35
35
|
}
|
|
36
|
-
.rp-input--size-xs[data-v-
|
|
36
|
+
.rp-input--size-xs[data-v-3dd93444] {
|
|
37
37
|
--_rp-input-height: var(--rp-size-control-xs);
|
|
38
38
|
--_rp-input-padding-x: calc(var(--rp-size-control-xs) / 3);
|
|
39
39
|
--_rp-input-font-size: var(--rp-font-size-xs);
|
|
40
40
|
}
|
|
41
|
-
.rp-input--size-sm[data-v-
|
|
41
|
+
.rp-input--size-sm[data-v-3dd93444] {
|
|
42
42
|
--_rp-input-height: var(--rp-size-control-sm);
|
|
43
43
|
--_rp-input-padding-x: calc(var(--rp-size-control-sm) / 3);
|
|
44
44
|
--_rp-input-font-size: var(--rp-font-size-sm);
|
|
45
45
|
}
|
|
46
|
-
.rp-input--size-md[data-v-
|
|
46
|
+
.rp-input--size-md[data-v-3dd93444] {
|
|
47
47
|
--_rp-input-height: var(--rp-size-control-md);
|
|
48
48
|
--_rp-input-padding-x: calc(var(--rp-size-control-md) / 3);
|
|
49
49
|
--_rp-input-font-size: var(--rp-font-size-md);
|
|
50
50
|
}
|
|
51
|
-
.rp-input--size-lg[data-v-
|
|
51
|
+
.rp-input--size-lg[data-v-3dd93444] {
|
|
52
52
|
--_rp-input-height: var(--rp-size-control-lg);
|
|
53
53
|
--_rp-input-padding-x: calc(var(--rp-size-control-lg) / 3);
|
|
54
54
|
--_rp-input-font-size: var(--rp-font-size-lg);
|
|
55
55
|
}
|
|
56
|
-
.rp-input--size-xl[data-v-
|
|
56
|
+
.rp-input--size-xl[data-v-3dd93444] {
|
|
57
57
|
--_rp-input-height: var(--rp-size-control-xl);
|
|
58
58
|
--_rp-input-padding-x: calc(var(--rp-size-control-xl) / 3);
|
|
59
59
|
--_rp-input-font-size: var(--rp-font-size-xl);
|
|
60
60
|
}
|
|
61
|
-
.rp-input--radius-xs[data-v-
|
|
61
|
+
.rp-input--radius-xs[data-v-3dd93444] {
|
|
62
62
|
--_rp-input-radius: var(--rp-radius-xs);
|
|
63
63
|
}
|
|
64
|
-
.rp-input--radius-sm[data-v-
|
|
64
|
+
.rp-input--radius-sm[data-v-3dd93444] {
|
|
65
65
|
--_rp-input-radius: var(--rp-radius-sm);
|
|
66
66
|
}
|
|
67
|
-
.rp-input--radius-md[data-v-
|
|
67
|
+
.rp-input--radius-md[data-v-3dd93444] {
|
|
68
68
|
--_rp-input-radius: var(--rp-radius-md);
|
|
69
69
|
}
|
|
70
|
-
.rp-input--radius-lg[data-v-
|
|
70
|
+
.rp-input--radius-lg[data-v-3dd93444] {
|
|
71
71
|
--_rp-input-radius: var(--rp-radius-lg);
|
|
72
72
|
}
|
|
73
|
-
.rp-input--radius-xl[data-v-
|
|
73
|
+
.rp-input--radius-xl[data-v-3dd93444] {
|
|
74
74
|
--_rp-input-radius: var(--rp-radius-xl);
|
|
75
75
|
}
|
|
76
|
-
.rp-input--disabled[data-v-
|
|
76
|
+
.rp-input--disabled[data-v-3dd93444] {
|
|
77
77
|
opacity: var(--rp-opacity-disabled);
|
|
78
78
|
cursor: not-allowed;
|
|
79
79
|
}
|
|
80
|
-
.rp-input--valid[data-v-
|
|
80
|
+
.rp-input--valid[data-v-3dd93444] {
|
|
81
81
|
border-color: var(--_rp-input-valid-border);
|
|
82
82
|
}
|
|
83
|
-
.rp-input--valid[data-v-
|
|
83
|
+
.rp-input--valid[data-v-3dd93444]:focus-within:not(.rp-input--disabled) {
|
|
84
84
|
border-color: var(--_rp-input-valid-border);
|
|
85
85
|
box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-input-valid-ring);
|
|
86
86
|
}
|
|
87
|
-
.rp-input--invalid[data-v-
|
|
87
|
+
.rp-input--invalid[data-v-3dd93444] {
|
|
88
88
|
border-color: var(--_rp-input-invalid-border);
|
|
89
89
|
}
|
|
90
|
-
.rp-input--invalid[data-v-
|
|
90
|
+
.rp-input--invalid[data-v-3dd93444]:focus-within:not(.rp-input--disabled) {
|
|
91
91
|
border-color: var(--_rp-input-invalid-border);
|
|
92
92
|
box-shadow: 0 0 0 var(--rp-border-width-medium) var(--_rp-input-invalid-ring);
|
|
93
93
|
}
|
|
94
|
-
.rp-input--readonly[data-v-
|
|
94
|
+
.rp-input--readonly[data-v-3dd93444] {
|
|
95
95
|
background-color: var(--rp-color-control-readonly-bg);
|
|
96
96
|
}
|
|
97
|
-
.rp-input__native[data-v-
|
|
97
|
+
.rp-input__native[data-v-3dd93444] {
|
|
98
98
|
box-sizing: border-box;
|
|
99
99
|
flex: 1;
|
|
100
100
|
width: 100%;
|
|
@@ -108,13 +108,13 @@
|
|
|
108
108
|
color: var(--rp-color-control-fg);
|
|
109
109
|
line-height: 1;
|
|
110
110
|
}
|
|
111
|
-
.rp-input__native[data-v-
|
|
111
|
+
.rp-input__native[data-v-3dd93444]::placeholder {
|
|
112
112
|
color: var(--rp-color-control-placeholder);
|
|
113
113
|
}
|
|
114
|
-
.rp-input__native[data-v-
|
|
114
|
+
.rp-input__native[data-v-3dd93444]:disabled {
|
|
115
115
|
cursor: not-allowed;
|
|
116
116
|
}
|
|
117
|
-
.rp-input__left[data-v-
|
|
117
|
+
.rp-input__left[data-v-3dd93444], .rp-input__right[data-v-3dd93444] {
|
|
118
118
|
display: inline-flex;
|
|
119
119
|
align-items: center;
|
|
120
120
|
flex-shrink: 0;
|
package/dist/input.js
CHANGED
|
@@ -2,8 +2,9 @@ import './input.css';
|
|
|
2
2
|
import { t as bem } from "./bem.js";
|
|
3
3
|
import { n as useStylesApi, t as presence } from "./styles-api.js";
|
|
4
4
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
|
|
5
|
+
import { a as useTextFormControl, o as useControllableValue, t as claimNestedFormControlOwner } from "./useFormControl.js";
|
|
5
6
|
import { t as useControlState } from "./useControlState.js";
|
|
6
|
-
import { child, computed, createIf, createSlot, defineVaporComponent, ref, renderEffect, setDynamicProps, setInsertionState, setStaticTemplateRef, template, unref
|
|
7
|
+
import { child, computed, createIf, createSlot, defineVaporComponent, ref, renderEffect, setDynamicProps, setInsertionState, setStaticTemplateRef, template, unref } from "vue";
|
|
7
8
|
//#region src/components/input/useInput.ts
|
|
8
9
|
var INTERACTIVE_SELECTOR = [
|
|
9
10
|
"button",
|
|
@@ -47,8 +48,8 @@ function useInput(props, emitUpdate) {
|
|
|
47
48
|
}
|
|
48
49
|
//#endregion
|
|
49
50
|
//#region src/components/input/input.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
50
|
-
var t0 = template("<span data-v-
|
|
51
|
-
var t1 = template("<label data-v-
|
|
51
|
+
var t0 = template("<span data-v-3dd93444>");
|
|
52
|
+
var t1 = template("<label data-v-3dd93444><input data-v-3dd93444>", 1);
|
|
52
53
|
//#endregion
|
|
53
54
|
//#region src/components/input/input.vue
|
|
54
55
|
var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
|
|
@@ -58,7 +59,9 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
|
|
|
58
59
|
props: {
|
|
59
60
|
id: {},
|
|
60
61
|
name: {},
|
|
61
|
-
|
|
62
|
+
form: {},
|
|
63
|
+
modelValue: { default: void 0 },
|
|
64
|
+
defaultValue: { default: "" },
|
|
62
65
|
type: { default: "text" },
|
|
63
66
|
size: {},
|
|
64
67
|
radius: {},
|
|
@@ -92,12 +95,18 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
|
|
|
92
95
|
styles: {}
|
|
93
96
|
},
|
|
94
97
|
emits: ["update:modelValue"],
|
|
95
|
-
setup(__props, { emit: __emit, slots: $slots }) {
|
|
98
|
+
setup(__props, { expose: __expose, emit: __emit, slots: $slots }) {
|
|
96
99
|
const props = __props;
|
|
97
100
|
const emit = __emit;
|
|
101
|
+
const controllable = useControllableValue({
|
|
102
|
+
modelValue: () => props.modelValue,
|
|
103
|
+
defaultValue: () => props.defaultValue,
|
|
104
|
+
onChange: (value) => emit("update:modelValue", value)
|
|
105
|
+
});
|
|
98
106
|
const { inputRef, control, rootClass, onInput, focusInput } = useInput(props, (value) => {
|
|
99
|
-
|
|
107
|
+
controllable.setValue(value);
|
|
100
108
|
});
|
|
109
|
+
if (!claimNestedFormControlOwner()) useTextFormControl(() => inputRef.value, controllable, () => props.validationMessage);
|
|
101
110
|
const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
|
|
102
111
|
const rootAttrs = computed(() => getRootAttrs({
|
|
103
112
|
class: rootClass.value,
|
|
@@ -118,8 +127,9 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
|
|
|
118
127
|
}),
|
|
119
128
|
id: control.id,
|
|
120
129
|
name: props.name,
|
|
130
|
+
form: control.form ?? forwardedAttrs.form,
|
|
121
131
|
type: props.type,
|
|
122
|
-
value:
|
|
132
|
+
value: controllable.value.value,
|
|
123
133
|
placeholder: props.placeholder,
|
|
124
134
|
disabled: control.disabled || void 0,
|
|
125
135
|
readonly: props.readonly || void 0,
|
|
@@ -138,9 +148,9 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
|
|
|
138
148
|
}
|
|
139
149
|
};
|
|
140
150
|
});
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
151
|
+
__expose({
|
|
152
|
+
nativeElement: inputRef,
|
|
153
|
+
focus: () => inputRef.value?.focus()
|
|
144
154
|
});
|
|
145
155
|
const n9 = t1();
|
|
146
156
|
const n4 = child(n9, 1);
|
|
@@ -165,6 +175,6 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
|
|
|
165
175
|
});
|
|
166
176
|
return n9;
|
|
167
177
|
}
|
|
168
|
-
}), [["__scopeId", "data-v-
|
|
178
|
+
}), [["__scopeId", "data-v-3dd93444"]]);
|
|
169
179
|
//#endregion
|
|
170
180
|
export { input_default as t };
|