ropav 0.1.6 → 0.1.7
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 +6 -0
- 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/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/card.js +1 -1
- package/dist/checkbox.css +32 -32
- package/dist/checkbox.js +22 -28
- 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 +221 -200
- 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/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/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/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/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-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-trigger.d.ts +1 -1
- package/dist/components/dropdown-menu/dropdown-menu-sub.d.ts +1 -1
- package/dist/components/dropdown-menu/{dropdown-menu-primitive-core.d.ts → dropdownMenuContext.d.ts} +16 -18
- 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 +85 -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 +34 -0
- package/dist/components/dropdown-menu/useDropdownMenuDataRegistration.d.ts +22 -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 +29 -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/floating/hoverDisclosureInteractionModel.d.ts +42 -0
- package/dist/components/floating/index.js +1 -1
- package/dist/components/floating/useFloatingPosition.d.ts +0 -1
- package/dist/components/floating/useHoverDisclosureInteractions.d.ts +32 -0
- package/dist/components/floating/useHoverDisclosureOpenState.d.ts +25 -0
- package/dist/components/floating/useHoverDisclosureTargetBinding.d.ts +27 -0
- package/dist/components/number-input/numberInputModel.d.ts +15 -0
- package/dist/components/number-input/useNumberInput.d.ts +3 -17
- 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 +16 -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 +10 -8
- package/dist/components/scroll-area/useScrollAreaVisibility.d.ts +15 -20
- 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 +8 -16
- 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/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/css.js +12 -0
- package/dist/dialog.js +226 -218
- package/dist/dropdown-menu.js +1458 -1097
- package/dist/events.js +59 -0
- package/dist/field.css +8 -8
- package/dist/field.js +13 -25
- package/dist/floating.js +548 -319
- package/dist/floatingOffset.js +11 -0
- package/dist/focus-trap.js +7 -5
- package/dist/focusNavigation.js +37 -0
- package/dist/icon-button.css +8 -8
- package/dist/icon-button.js +7 -6
- package/dist/index.js +6 -6
- package/dist/input.css +24 -24
- package/dist/input.js +19 -31
- package/dist/interactive.js +18 -0
- package/dist/modal.js +1 -1
- package/dist/number-input.css +18 -18
- package/dist/number-input.js +14 -12
- package/dist/number.js +22 -0
- package/dist/overlay.js +3 -2
- package/dist/pagination.css +28 -28
- package/dist/pagination.js +65 -63
- package/dist/pointer.js +9 -0
- package/dist/popover.css +34 -34
- package/dist/popover.js +85 -86
- 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 +512 -516
- package/dist/select.css +45 -45
- package/dist/select.js +36 -44
- package/dist/slider.css +191 -191
- package/dist/slider.js +691 -618
- 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/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 +36 -40
- package/dist/useCollapse.js +8 -11
- package/dist/useControlState.js +3 -6
- package/dist/useFloatingPosition.js +140 -10
- package/dist/useOverlayZIndex.js +1 -5
- 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/dom/ancestry.d.ts +7 -0
- package/dist/utils/dom/attributes.d.ts +16 -0
- package/dist/utils/dom/componentRef.d.ts +4 -0
- package/dist/utils/dom/events.d.ts +5 -0
- package/dist/utils/dom/focusNavigation.d.ts +7 -0
- package/dist/utils/dom/interactive.d.ts +2 -0
- package/dist/utils/dom/pointer.d.ts +2 -0
- package/dist/utils/dom/query.d.ts +4 -0
- package/dist/utils/dom/scroll.d.ts +23 -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/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 +6 -5
- package/package.json +13 -12
- 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/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
package/dist/toast.js
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import './toast.css';
|
|
2
2
|
import { t as useControllableValue } from "./useControllableValue.js";
|
|
3
|
-
import {
|
|
3
|
+
import { t as useStylesApi } from "./styles-api.js";
|
|
4
4
|
import { t as bem } from "./bem.js";
|
|
5
5
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
|
|
6
6
|
import { t as x_default } from "./x.js";
|
|
7
7
|
import { a as getComponentVariantColorRoles, t as componentColors } from "./componentColors.js";
|
|
8
|
+
import { i as isNodeWithinElement } from "./events.js";
|
|
8
9
|
import { n as useOverlayZIndex } from "./useOverlayZIndex.js";
|
|
9
|
-
import {
|
|
10
|
-
import { VaporTeleport, VaporTransition, VaporTransitionGroup, computed, createComponent, createFor, createIf,
|
|
10
|
+
import { n as useTeleportTarget } from "./useTeleportTarget.js";
|
|
11
|
+
import { VaporTeleport, VaporTransition, VaporTransitionGroup, computed, createComponent, createFor, createIf, createSlot, defineVaporComponent, extend, inject, nextTick, on, onBeforeUnmount, onMounted, provide, ref, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, toValue, txt, unref, useSlots, watch } from "vue";
|
|
11
12
|
//#region src/components/toast/defaults.ts
|
|
12
13
|
var DEFAULT_TOAST_DURATION = 5e3;
|
|
13
14
|
var DEFAULT_TOAST_ROLE = "status";
|
|
14
15
|
var DEFAULT_TOAST_CLOSE_LABEL = "Close toast";
|
|
15
16
|
//#endregion
|
|
16
|
-
//#region src/components/toast/
|
|
17
|
+
//#region src/components/toast/toastColor.ts
|
|
17
18
|
function getToastColorStyle(color, variant, autoContrast, contrastColor) {
|
|
18
19
|
if (!color && !variant) return void 0;
|
|
19
20
|
const resolvedVariant = variant ?? "surface";
|
|
@@ -34,13 +35,131 @@ function getToastColorStyle(color, variant, autoContrast, contrastColor) {
|
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
//#endregion
|
|
38
|
+
//#region src/components/toast/useToastLifecycle.ts
|
|
39
|
+
function useToastLifecycle(options) {
|
|
40
|
+
const isOpen = computed(() => toValue(options.isOpen));
|
|
41
|
+
const duration = computed(() => toValue(options.duration));
|
|
42
|
+
const pauseOnHover = computed(() => toValue(options.pauseOnHover));
|
|
43
|
+
const pauseOnFocus = computed(() => toValue(options.pauseOnFocus));
|
|
44
|
+
let isMounted = false;
|
|
45
|
+
let closePending = false;
|
|
46
|
+
let pausedByHover = false;
|
|
47
|
+
let pausedByFocus = false;
|
|
48
|
+
let timer;
|
|
49
|
+
let timerStartedAt = 0;
|
|
50
|
+
let remainingDuration = 0;
|
|
51
|
+
function getDuration() {
|
|
52
|
+
return Number.isFinite(duration.value) && duration.value > 0 ? duration.value : 0;
|
|
53
|
+
}
|
|
54
|
+
function clearTimer() {
|
|
55
|
+
if (timer === void 0) return;
|
|
56
|
+
clearTimeout(timer);
|
|
57
|
+
timer = void 0;
|
|
58
|
+
}
|
|
59
|
+
function scheduleTimer() {
|
|
60
|
+
if (!isOpen.value || remainingDuration <= 0 || pausedByHover || pausedByFocus) return;
|
|
61
|
+
timerStartedAt = Date.now();
|
|
62
|
+
timer = setTimeout(() => {
|
|
63
|
+
timer = void 0;
|
|
64
|
+
remainingDuration = 0;
|
|
65
|
+
close("timeout");
|
|
66
|
+
}, remainingDuration);
|
|
67
|
+
}
|
|
68
|
+
function resetTimer() {
|
|
69
|
+
clearTimer();
|
|
70
|
+
remainingDuration = getDuration();
|
|
71
|
+
scheduleTimer();
|
|
72
|
+
}
|
|
73
|
+
function pauseTimer() {
|
|
74
|
+
if (timer === void 0) return;
|
|
75
|
+
remainingDuration = Math.max(0, remainingDuration - (Date.now() - timerStartedAt));
|
|
76
|
+
clearTimer();
|
|
77
|
+
if (remainingDuration === 0) close("timeout");
|
|
78
|
+
}
|
|
79
|
+
function resumeTimer() {
|
|
80
|
+
if (pausedByHover || pausedByFocus) return;
|
|
81
|
+
scheduleTimer();
|
|
82
|
+
}
|
|
83
|
+
function resetPauseState() {
|
|
84
|
+
pausedByHover = false;
|
|
85
|
+
pausedByFocus = false;
|
|
86
|
+
}
|
|
87
|
+
function onMouseenter() {
|
|
88
|
+
if (!pauseOnHover.value) return;
|
|
89
|
+
pausedByHover = true;
|
|
90
|
+
pauseTimer();
|
|
91
|
+
}
|
|
92
|
+
function onMouseleave() {
|
|
93
|
+
if (!pauseOnHover.value) return;
|
|
94
|
+
pausedByHover = false;
|
|
95
|
+
resumeTimer();
|
|
96
|
+
}
|
|
97
|
+
function onFocusin() {
|
|
98
|
+
if (!pauseOnFocus.value) return;
|
|
99
|
+
pausedByFocus = true;
|
|
100
|
+
pauseTimer();
|
|
101
|
+
}
|
|
102
|
+
function onFocusout(event) {
|
|
103
|
+
if (!pauseOnFocus.value) return;
|
|
104
|
+
if (isNodeWithinElement(event.relatedTarget, event.currentTarget)) return;
|
|
105
|
+
pausedByFocus = false;
|
|
106
|
+
resumeTimer();
|
|
107
|
+
}
|
|
108
|
+
function close(reason) {
|
|
109
|
+
if (closePending) return;
|
|
110
|
+
closePending = true;
|
|
111
|
+
clearTimer();
|
|
112
|
+
options.requestClose(reason);
|
|
113
|
+
if (isOpen.value) {
|
|
114
|
+
resetTimer();
|
|
115
|
+
nextTick(() => {
|
|
116
|
+
if (isOpen.value) closePending = false;
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
watch(isOpen, (open) => {
|
|
121
|
+
if (open) closePending = false;
|
|
122
|
+
});
|
|
123
|
+
watch(pauseOnHover, (enabled) => {
|
|
124
|
+
if (enabled || !pausedByHover) return;
|
|
125
|
+
pausedByHover = false;
|
|
126
|
+
resumeTimer();
|
|
127
|
+
});
|
|
128
|
+
watch(pauseOnFocus, (enabled) => {
|
|
129
|
+
if (enabled || !pausedByFocus) return;
|
|
130
|
+
pausedByFocus = false;
|
|
131
|
+
resumeTimer();
|
|
132
|
+
});
|
|
133
|
+
watch([isOpen, duration], ([open], [wasOpen]) => {
|
|
134
|
+
if (!isMounted) return;
|
|
135
|
+
if (!open || !wasOpen) resetPauseState();
|
|
136
|
+
resetTimer();
|
|
137
|
+
});
|
|
138
|
+
onMounted(() => {
|
|
139
|
+
isMounted = true;
|
|
140
|
+
resetTimer();
|
|
141
|
+
});
|
|
142
|
+
onBeforeUnmount(() => {
|
|
143
|
+
isMounted = false;
|
|
144
|
+
clearTimer();
|
|
145
|
+
});
|
|
146
|
+
return {
|
|
147
|
+
close,
|
|
148
|
+
rootEvents: {
|
|
149
|
+
onMouseenter,
|
|
150
|
+
onMouseleave,
|
|
151
|
+
onFocusin,
|
|
152
|
+
onFocusout
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
//#endregion
|
|
37
157
|
//#region src/components/toast/toast.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
38
|
-
var t0$1 = template("<div data-v-
|
|
158
|
+
var t0$1 = template("<div data-v-441adf44>");
|
|
39
159
|
var t1 = template(" ");
|
|
40
|
-
var t2 = template("<p data-v-
|
|
41
|
-
var t3 = template("<div data-v-
|
|
42
|
-
var t4 = template("<button data-v-
|
|
43
|
-
delegateEvents("click");
|
|
160
|
+
var t2 = template("<p data-v-441adf44> ");
|
|
161
|
+
var t3 = template("<div data-v-441adf44 class=rp-toast__content>");
|
|
162
|
+
var t4 = template("<button data-v-441adf44>");
|
|
44
163
|
//#endregion
|
|
45
164
|
//#region src/components/toast/toast.vue
|
|
46
165
|
var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
|
|
@@ -95,25 +214,15 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
|
|
|
95
214
|
onChange: (open) => emit("update:open", open)
|
|
96
215
|
});
|
|
97
216
|
const isOpen = controllableOpen.value;
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
});
|
|
108
|
-
watch(() => props.pauseOnHover, (pauseOnHover) => {
|
|
109
|
-
if (pauseOnHover || !pausedByHover.value) return;
|
|
110
|
-
pausedByHover.value = false;
|
|
111
|
-
resumeTimer();
|
|
112
|
-
});
|
|
113
|
-
watch(() => props.pauseOnFocus, (pauseOnFocus) => {
|
|
114
|
-
if (pauseOnFocus || !pausedByFocus.value) return;
|
|
115
|
-
pausedByFocus.value = false;
|
|
116
|
-
resumeTimer();
|
|
217
|
+
const { close: closeToast, rootEvents } = useToastLifecycle({
|
|
218
|
+
isOpen,
|
|
219
|
+
duration: () => props.duration,
|
|
220
|
+
pauseOnHover: () => props.pauseOnHover,
|
|
221
|
+
pauseOnFocus: () => props.pauseOnFocus,
|
|
222
|
+
requestClose(reason) {
|
|
223
|
+
controllableOpen.setValue(false);
|
|
224
|
+
emit("close", reason);
|
|
225
|
+
}
|
|
117
226
|
});
|
|
118
227
|
const hasTitle = computed(() => Boolean(props.title || slots.title));
|
|
119
228
|
const hasDescription = computed(() => Boolean(props.description));
|
|
@@ -130,91 +239,8 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
|
|
|
130
239
|
class: rootClass.value,
|
|
131
240
|
style: rootStyle.value,
|
|
132
241
|
role: resolvedRole.value,
|
|
133
|
-
|
|
134
|
-
onMouseleave,
|
|
135
|
-
onFocusin,
|
|
136
|
-
onFocusout
|
|
242
|
+
...rootEvents
|
|
137
243
|
}));
|
|
138
|
-
watch([isOpen, () => props.duration], ([open], [wasOpen]) => {
|
|
139
|
-
if (!isMounted.value) return;
|
|
140
|
-
if (!open || !wasOpen) {
|
|
141
|
-
pausedByHover.value = false;
|
|
142
|
-
pausedByFocus.value = false;
|
|
143
|
-
}
|
|
144
|
-
resetTimer();
|
|
145
|
-
});
|
|
146
|
-
onMounted(() => {
|
|
147
|
-
isMounted.value = true;
|
|
148
|
-
resetTimer();
|
|
149
|
-
});
|
|
150
|
-
onBeforeUnmount(clearTimer);
|
|
151
|
-
function getDuration() {
|
|
152
|
-
return Number.isFinite(props.duration) && props.duration > 0 ? props.duration : 0;
|
|
153
|
-
}
|
|
154
|
-
function resetTimer() {
|
|
155
|
-
clearTimer();
|
|
156
|
-
remainingDuration = getDuration();
|
|
157
|
-
scheduleTimer();
|
|
158
|
-
}
|
|
159
|
-
function scheduleTimer() {
|
|
160
|
-
if (!isOpen.value || remainingDuration <= 0 || pausedByHover.value || pausedByFocus.value) return;
|
|
161
|
-
timerStartedAt = Date.now();
|
|
162
|
-
timer = setTimeout(() => {
|
|
163
|
-
timer = void 0;
|
|
164
|
-
remainingDuration = 0;
|
|
165
|
-
closeToast("timeout");
|
|
166
|
-
}, remainingDuration);
|
|
167
|
-
}
|
|
168
|
-
function clearTimer() {
|
|
169
|
-
if (timer === void 0) return;
|
|
170
|
-
clearTimeout(timer);
|
|
171
|
-
timer = void 0;
|
|
172
|
-
}
|
|
173
|
-
function pauseTimer() {
|
|
174
|
-
if (timer === void 0) return;
|
|
175
|
-
remainingDuration = Math.max(0, remainingDuration - (Date.now() - timerStartedAt));
|
|
176
|
-
clearTimer();
|
|
177
|
-
if (remainingDuration === 0) closeToast("timeout");
|
|
178
|
-
}
|
|
179
|
-
function resumeTimer() {
|
|
180
|
-
if (pausedByHover.value || pausedByFocus.value) return;
|
|
181
|
-
scheduleTimer();
|
|
182
|
-
}
|
|
183
|
-
function onMouseenter() {
|
|
184
|
-
if (!props.pauseOnHover) return;
|
|
185
|
-
pausedByHover.value = true;
|
|
186
|
-
pauseTimer();
|
|
187
|
-
}
|
|
188
|
-
function onMouseleave() {
|
|
189
|
-
if (!props.pauseOnHover) return;
|
|
190
|
-
pausedByHover.value = false;
|
|
191
|
-
resumeTimer();
|
|
192
|
-
}
|
|
193
|
-
function onFocusin() {
|
|
194
|
-
if (!props.pauseOnFocus) return;
|
|
195
|
-
pausedByFocus.value = true;
|
|
196
|
-
pauseTimer();
|
|
197
|
-
}
|
|
198
|
-
function onFocusout(event) {
|
|
199
|
-
if (!props.pauseOnFocus) return;
|
|
200
|
-
const currentTarget = event.currentTarget;
|
|
201
|
-
if (currentTarget instanceof HTMLElement && event.relatedTarget instanceof Node && currentTarget.contains(event.relatedTarget)) return;
|
|
202
|
-
pausedByFocus.value = false;
|
|
203
|
-
resumeTimer();
|
|
204
|
-
}
|
|
205
|
-
function closeToast(reason) {
|
|
206
|
-
if (closePending) return;
|
|
207
|
-
closePending = true;
|
|
208
|
-
clearTimer();
|
|
209
|
-
controllableOpen.setValue(false);
|
|
210
|
-
emit("close", reason);
|
|
211
|
-
if (isOpen.value) {
|
|
212
|
-
resetTimer();
|
|
213
|
-
nextTick(() => {
|
|
214
|
-
if (isOpen.value) closePending = false;
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
244
|
const _on_after_leave = () => emit("after-leave");
|
|
219
245
|
return createComponent(VaporTransition, {
|
|
220
246
|
name: "rp-toast",
|
|
@@ -283,14 +309,14 @@ var toast_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
|
|
|
283
309
|
}]));
|
|
284
310
|
setInsertionState(n29, null, 0);
|
|
285
311
|
createComponent(unref(x_default), { "aria-hidden": "true" });
|
|
286
|
-
n29
|
|
312
|
+
on(n29, "click", () => unref(closeToast)("dismiss"));
|
|
287
313
|
return n29;
|
|
288
314
|
});
|
|
289
315
|
return n30;
|
|
290
316
|
}, null, 129);
|
|
291
317
|
}, { _: 8 }), true);
|
|
292
318
|
}
|
|
293
|
-
}), [["__scopeId", "data-v-
|
|
319
|
+
}), [["__scopeId", "data-v-441adf44"]]);
|
|
294
320
|
//#endregion
|
|
295
321
|
//#region src/components/toast/toast-store.ts
|
|
296
322
|
var TYPE_DEFAULTS = {
|
|
@@ -710,12 +736,9 @@ var toast_viewport_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
|
|
|
710
736
|
}), [["__scopeId", "data-v-480d3e51"]]);
|
|
711
737
|
//#endregion
|
|
712
738
|
//#region src/components/toast/useToastState.ts
|
|
713
|
-
function optionValue(value) {
|
|
714
|
-
return toValue(value);
|
|
715
|
-
}
|
|
716
739
|
function useToastState(options = {}) {
|
|
717
740
|
const closeReason = ref(null);
|
|
718
|
-
const controlledOpen = computed(() =>
|
|
741
|
+
const controlledOpen = computed(() => toValue(options.open));
|
|
719
742
|
const controllableOpen = useControllableValue({
|
|
720
743
|
modelValue: () => controlledOpen.value,
|
|
721
744
|
defaultValue: () => options.defaultOpen ?? false,
|
package/dist/tooltip.css
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
@layer ropav.components {
|
|
2
|
-
.rp-tooltip[data-v-
|
|
2
|
+
.rp-tooltip[data-v-19aad69c] {
|
|
3
3
|
position: relative;
|
|
4
4
|
display: inline-flex;
|
|
5
5
|
font-family: var(--rp-font-family);
|
|
6
6
|
vertical-align: middle;
|
|
7
7
|
}
|
|
8
|
-
.rp-tooltip__content[data-v-
|
|
8
|
+
.rp-tooltip__content[data-v-19aad69c] {
|
|
9
9
|
--_rp-tooltip-main-axis-offset: var(--rp-spacing-2);
|
|
10
10
|
--_rp-tooltip-cross-axis-offset: 0px;
|
|
11
11
|
--_rp-tooltip-arrow-size: 0.4375rem;
|
|
@@ -29,10 +29,10 @@
|
|
|
29
29
|
border-radius: var(--rp-radius-sm);
|
|
30
30
|
box-shadow: var(--rp-shadow-md);
|
|
31
31
|
}
|
|
32
|
-
.rp-tooltip--target[data-v-
|
|
32
|
+
.rp-tooltip--target[data-v-19aad69c] {
|
|
33
33
|
display: contents;
|
|
34
34
|
}
|
|
35
|
-
.rp-tooltip__arrow[data-v-
|
|
35
|
+
.rp-tooltip__arrow[data-v-19aad69c] {
|
|
36
36
|
position: absolute;
|
|
37
37
|
width: var(--_rp-tooltip-arrow-size);
|
|
38
38
|
height: var(--_rp-tooltip-arrow-size);
|
|
@@ -40,24 +40,24 @@
|
|
|
40
40
|
background-color: inherit;
|
|
41
41
|
rotate: 45deg;
|
|
42
42
|
}
|
|
43
|
-
.rp-tooltip__arrow[data-side=top][data-v-
|
|
43
|
+
.rp-tooltip__arrow[data-side=top][data-v-19aad69c] {
|
|
44
44
|
bottom: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
|
|
45
45
|
}
|
|
46
|
-
.rp-tooltip__arrow[data-side=right][data-v-
|
|
46
|
+
.rp-tooltip__arrow[data-side=right][data-v-19aad69c] {
|
|
47
47
|
left: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
|
|
48
48
|
}
|
|
49
|
-
.rp-tooltip__arrow[data-side=bottom][data-v-
|
|
49
|
+
.rp-tooltip__arrow[data-side=bottom][data-v-19aad69c] {
|
|
50
50
|
top: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
|
|
51
51
|
}
|
|
52
|
-
.rp-tooltip__arrow[data-side=left][data-v-
|
|
52
|
+
.rp-tooltip__arrow[data-side=left][data-v-19aad69c] {
|
|
53
53
|
right: calc(-1 * var(--_rp-tooltip-arrow-size) / 2);
|
|
54
54
|
}
|
|
55
|
-
.rp-tooltip-content-enter-active[data-v-
|
|
56
|
-
.rp-tooltip-content-leave-active[data-v-
|
|
55
|
+
.rp-tooltip-content-enter-active[data-v-19aad69c],
|
|
56
|
+
.rp-tooltip-content-leave-active[data-v-19aad69c] {
|
|
57
57
|
transition: opacity var(--rp-transition-fast);
|
|
58
58
|
}
|
|
59
|
-
.rp-tooltip-content-enter-from[data-v-
|
|
60
|
-
.rp-tooltip-content-leave-to[data-v-
|
|
59
|
+
.rp-tooltip-content-enter-from[data-v-19aad69c],
|
|
60
|
+
.rp-tooltip-content-leave-to[data-v-19aad69c] {
|
|
61
61
|
opacity: 0;
|
|
62
62
|
}
|
|
63
63
|
}
|
package/dist/tooltip.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import './tooltip.css';
|
|
2
2
|
import { t as useControllableValue } from "./useControllableValue.js";
|
|
3
|
-
import {
|
|
3
|
+
import { t as useStylesApi } from "./styles-api.js";
|
|
4
|
+
import { n as toPresenceAttribute } from "./attributes.js";
|
|
4
5
|
import { t as bem } from "./bem.js";
|
|
6
|
+
import { t as isElement } from "./query.js";
|
|
5
7
|
import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
|
|
8
|
+
import { r as normalizeDelay } from "./number.js";
|
|
6
9
|
import { a as getComponentVariantColorRoles } from "./componentColors.js";
|
|
10
|
+
import { a as snapshotAttributes, i as restoreAttributes } from "./attributes2.js";
|
|
11
|
+
import { n as mergeAriaIdRefs } from "./aria.js";
|
|
7
12
|
import { n as useOverlayZIndex } from "./useOverlayZIndex.js";
|
|
8
|
-
import {
|
|
9
|
-
import { n as
|
|
10
|
-
import {
|
|
13
|
+
import { t as getFloatingOffsetStyle } from "./floatingOffset.js";
|
|
14
|
+
import { n as useFloatingTarget, t as useFloatingPosition } from "./useFloatingPosition.js";
|
|
15
|
+
import { n as useTeleportTarget } from "./useTeleportTarget.js";
|
|
16
|
+
import { VaporTeleport, VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, onBeforeUnmount, ref, renderEffect, setAttr, setDynamicProps, setInsertionState, setStyle, setTemplateRefBinding, setText, template, toDisplayString, unref, useId, useSlots, watch } from "vue";
|
|
11
17
|
//#region src/internal/composables/useDelayedOpen.ts
|
|
12
18
|
function readOption(value, fallback) {
|
|
13
19
|
return typeof value === "function" ? value() ?? fallback : value ?? fallback;
|
|
@@ -37,7 +43,7 @@ function useDelayedOpen(options = {}) {
|
|
|
37
43
|
}
|
|
38
44
|
function open() {
|
|
39
45
|
if (isDisabled()) return;
|
|
40
|
-
const delay = readOption(options.openDelay, 0);
|
|
46
|
+
const delay = normalizeDelay(readOption(options.openDelay, 0));
|
|
41
47
|
if (delay <= 0) {
|
|
42
48
|
setOpen(true);
|
|
43
49
|
return;
|
|
@@ -61,14 +67,10 @@ function useDelayedOpen(options = {}) {
|
|
|
61
67
|
}
|
|
62
68
|
//#endregion
|
|
63
69
|
//#region src/components/tooltip/useTooltip.ts
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (offset.mainAxis != null) style["--_rp-tooltip-main-axis-offset"] = `${offset.mainAxis}px`;
|
|
69
|
-
if (offset.crossAxis != null) style["--_rp-tooltip-cross-axis-offset"] = `${offset.crossAxis}px`;
|
|
70
|
-
return Object.keys(style).length > 0 ? style : void 0;
|
|
71
|
-
}
|
|
70
|
+
var TOOLTIP_OFFSET_PROPERTIES = {
|
|
71
|
+
mainAxis: "--_rp-tooltip-main-axis-offset",
|
|
72
|
+
crossAxis: "--_rp-tooltip-cross-axis-offset"
|
|
73
|
+
};
|
|
72
74
|
function resolveTooltipColorStyleWithContrast(color, autoContrast, contrastColor) {
|
|
73
75
|
if (!color) return void 0;
|
|
74
76
|
const roles = getComponentVariantColorRoles({
|
|
@@ -97,9 +99,8 @@ function useTooltip(props, emitOpenChange) {
|
|
|
97
99
|
const shouldRenderContent = computed(() => !isDisabled.value);
|
|
98
100
|
const shouldDescribeContent = computed(() => shouldRenderContent.value && !isDecorative.value);
|
|
99
101
|
const teleportTo = useTeleportTarget(() => props.teleportTo);
|
|
100
|
-
const teleportPositioningKey = useTeleportPositioningKey();
|
|
101
102
|
const { isExplicitTarget, reference, resolvedTarget } = useFloatingTarget(() => props.target, rootRef);
|
|
102
|
-
const targetElement = computed(() =>
|
|
103
|
+
const targetElement = computed(() => isElement(resolvedTarget.value) ? resolvedTarget.value : null);
|
|
103
104
|
const zIndex = useOverlayZIndex({
|
|
104
105
|
baseZIndex: () => props.baseZIndex,
|
|
105
106
|
defaultBaseZIndex: 1e3
|
|
@@ -123,12 +124,7 @@ function useTooltip(props, emitOpenChange) {
|
|
|
123
124
|
flipOptions: () => props.flipOptions,
|
|
124
125
|
shift: () => props.shift !== false,
|
|
125
126
|
collisionPadding: () => props.collisionPadding ?? 8,
|
|
126
|
-
autoUpdateOptions: () => props.autoUpdateOptions
|
|
127
|
-
restartKey: () => [
|
|
128
|
-
Boolean(props.teleport),
|
|
129
|
-
teleportTo.value,
|
|
130
|
-
teleportPositioningKey.value
|
|
131
|
-
]
|
|
127
|
+
autoUpdateOptions: () => props.autoUpdateOptions
|
|
132
128
|
});
|
|
133
129
|
const placementSide = computed(() => floating.actualPlacement.value.split("-")[0]);
|
|
134
130
|
const rootClass = computed(() => bem("rp-tooltip", {
|
|
@@ -143,7 +139,7 @@ function useTooltip(props, emitOpenChange) {
|
|
|
143
139
|
const contentAriaHidden = computed(() => isDecorative.value ? "true" : void 0);
|
|
144
140
|
const contentStyle = computed(() => ({
|
|
145
141
|
...floating.floatingStyle.value,
|
|
146
|
-
...
|
|
142
|
+
...getFloatingOffsetStyle(props.offset, TOOLTIP_OFFSET_PROPERTIES),
|
|
147
143
|
...resolveTooltipColorStyleWithContrast(props.color, props.autoContrast, props.contrastColor),
|
|
148
144
|
zIndex: zIndex.value
|
|
149
145
|
}));
|
|
@@ -181,14 +177,9 @@ function useTooltip(props, emitOpenChange) {
|
|
|
181
177
|
tooltipId
|
|
182
178
|
], ([explicit, target, shouldDescribe, id], _previous, onCleanup) => {
|
|
183
179
|
if (!explicit || !target || !shouldDescribe) return;
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
target.setAttribute("aria-describedby", ids.join(" "));
|
|
188
|
-
onCleanup(() => {
|
|
189
|
-
if (previous == null) target.removeAttribute("aria-describedby");
|
|
190
|
-
else target.setAttribute("aria-describedby", previous);
|
|
191
|
-
});
|
|
180
|
+
const snapshot = snapshotAttributes(target, ["aria-describedby"]);
|
|
181
|
+
target.setAttribute("aria-describedby", mergeAriaIdRefs(snapshot.get("aria-describedby"), id) ?? "");
|
|
182
|
+
onCleanup(() => restoreAttributes(target, snapshot));
|
|
192
183
|
}, { flush: "sync" });
|
|
193
184
|
return {
|
|
194
185
|
rootRef,
|
|
@@ -216,10 +207,10 @@ function useTooltip(props, emitOpenChange) {
|
|
|
216
207
|
}
|
|
217
208
|
//#endregion
|
|
218
209
|
//#region src/components/tooltip/tooltip.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
219
|
-
var t0 = template("<span data-v-
|
|
210
|
+
var t0 = template("<span data-v-19aad69c class=rp-tooltip__arrow aria-hidden=true>");
|
|
220
211
|
var t1 = template(" ");
|
|
221
|
-
var t2 = template("<span data-v-
|
|
222
|
-
var t3 = template("<span data-v-
|
|
212
|
+
var t2 = template("<span data-v-19aad69c>");
|
|
213
|
+
var t3 = template("<span data-v-19aad69c>", 1);
|
|
223
214
|
//#endregion
|
|
224
215
|
//#region src/components/tooltip/tooltip.vue
|
|
225
216
|
var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
|
|
@@ -283,12 +274,17 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
283
274
|
const { rootRef, contentRef, arrowRef, tooltipId, isDisabled, isVisible, isTargetMode, shouldRenderContent, rootClass, triggerProps, contentRole, contentAriaHidden, contentStyle, actualPlacement, placementSide, arrowStyle, teleportTo, openTooltip, closeTooltip, onKeydown } = useTooltip(props, (open) => {
|
|
284
275
|
emit("update:open", open);
|
|
285
276
|
});
|
|
277
|
+
const templateRefs = {
|
|
278
|
+
root: rootRef,
|
|
279
|
+
content: contentRef,
|
|
280
|
+
arrow: arrowRef
|
|
281
|
+
};
|
|
286
282
|
const { getPartAttrs, getRootAttrs } = useStylesApi(props, "root");
|
|
287
283
|
const state = computed(() => isVisible.value ? "open" : "closed");
|
|
288
284
|
const rootAttrs = computed(() => getRootAttrs({
|
|
289
285
|
class: rootClass.value,
|
|
290
286
|
"data-state": state.value,
|
|
291
|
-
"data-disabled":
|
|
287
|
+
"data-disabled": toPresenceAttribute(isDisabled.value),
|
|
292
288
|
onMouseenter: openTooltip,
|
|
293
289
|
onMouseleave: closeTooltip,
|
|
294
290
|
onFocusin: openTooltip,
|
|
@@ -302,7 +298,7 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
302
298
|
...props.classNames?.trigger !== void 0 ? { class: partAttrs.class } : {},
|
|
303
299
|
...props.styles?.trigger !== void 0 ? { style: partAttrs.style } : {},
|
|
304
300
|
"data-state": state.value,
|
|
305
|
-
"data-disabled":
|
|
301
|
+
"data-disabled": toPresenceAttribute(isDisabled.value)
|
|
306
302
|
};
|
|
307
303
|
});
|
|
308
304
|
const contentAttrs = computed(() => ({
|
|
@@ -340,10 +336,10 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
340
336
|
setInsertionState(n11, null, 0);
|
|
341
337
|
createIf(() => __props.arrow, () => {
|
|
342
338
|
const n7 = t0();
|
|
343
|
-
_setTemplateRef(n7, arrowRef, null, "arrowRef");
|
|
344
339
|
renderEffect(() => {
|
|
345
340
|
setAttr(n7, "data-side", unref(placementSide));
|
|
346
341
|
setStyle(n7, unref(arrowStyle));
|
|
342
|
+
_setTemplateRef(n7, templateRefs.arrow);
|
|
347
343
|
});
|
|
348
344
|
return n7;
|
|
349
345
|
});
|
|
@@ -354,14 +350,14 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
|
|
|
354
350
|
return n10;
|
|
355
351
|
}, 1);
|
|
356
352
|
applyVShow(n11, () => unref(isVisible));
|
|
357
|
-
|
|
353
|
+
setTemplateRefBinding(n11, () => templateRefs.content, _setTemplateRef);
|
|
358
354
|
return n11;
|
|
359
355
|
}, null, 129);
|
|
360
356
|
}, { _: 8 }));
|
|
361
357
|
});
|
|
362
|
-
|
|
358
|
+
setTemplateRefBinding(n14, () => templateRefs.root);
|
|
363
359
|
return n14;
|
|
364
360
|
}
|
|
365
|
-
}), [["__scopeId", "data-v-
|
|
361
|
+
}), [["__scopeId", "data-v-19aad69c"]]);
|
|
366
362
|
//#endregion
|
|
367
|
-
export {
|
|
363
|
+
export { resolveTooltipColorStyleWithContrast as n, useDelayedOpen as r, tooltip_default as t };
|
package/dist/useCollapse.js
CHANGED
|
@@ -3,15 +3,12 @@ import { t as bem } from "./bem.js";
|
|
|
3
3
|
import { computed, toValue, useId } from "vue";
|
|
4
4
|
//#region src/components/collapse/useCollapse.ts
|
|
5
5
|
var DEFAULT_ROLE = "region";
|
|
6
|
-
function optionValue(value) {
|
|
7
|
-
return toValue(value);
|
|
8
|
-
}
|
|
9
6
|
function useCollapse(options = {}, emitOpenChange) {
|
|
10
7
|
const generatedId = useId();
|
|
11
|
-
const id = computed(() =>
|
|
12
|
-
const isDisabled = computed(() => Boolean(
|
|
8
|
+
const id = computed(() => toValue(options.id) ?? `${generatedId}-collapse`);
|
|
9
|
+
const isDisabled = computed(() => Boolean(toValue(options.disabled)));
|
|
13
10
|
const controllableOpen = useControllableValue({
|
|
14
|
-
modelValue: () =>
|
|
11
|
+
modelValue: () => toValue(options.open),
|
|
15
12
|
defaultValue: () => false,
|
|
16
13
|
onChange: (nextOpen) => {
|
|
17
14
|
options.onOpenChange?.(nextOpen);
|
|
@@ -20,7 +17,7 @@ function useCollapse(options = {}, emitOpenChange) {
|
|
|
20
17
|
});
|
|
21
18
|
const isOpen = controllableOpen.value;
|
|
22
19
|
const state = computed(() => isOpen.value ? "open" : "closed");
|
|
23
|
-
const shouldRenderContent = computed(() => !
|
|
20
|
+
const shouldRenderContent = computed(() => !toValue(options.unmountOnExit) || isOpen.value);
|
|
24
21
|
const rootClass = computed(() => bem("rp-collapse", {
|
|
25
22
|
open: isOpen.value,
|
|
26
23
|
closed: !isOpen.value,
|
|
@@ -48,12 +45,12 @@ function useCollapse(options = {}, emitOpenChange) {
|
|
|
48
45
|
const contentProps = computed(() => ({
|
|
49
46
|
class: "rp-collapse__content",
|
|
50
47
|
id: id.value,
|
|
51
|
-
role:
|
|
48
|
+
role: toValue(options.role) ?? DEFAULT_ROLE,
|
|
52
49
|
"data-state": state.value,
|
|
53
50
|
"aria-hidden": isOpen.value ? void 0 : "true",
|
|
54
|
-
"aria-label":
|
|
55
|
-
"aria-labelledby":
|
|
56
|
-
"aria-describedby":
|
|
51
|
+
"aria-label": toValue(options.ariaLabel) || void 0,
|
|
52
|
+
"aria-labelledby": toValue(options.ariaLabelledby) || void 0,
|
|
53
|
+
"aria-describedby": toValue(options.ariaDescribedby) || void 0
|
|
57
54
|
}));
|
|
58
55
|
const triggerSlotProps = computed(() => ({
|
|
59
56
|
triggerProps: triggerProps.value,
|
package/dist/useControlState.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
|
+
import { n as mergeAriaIdRefs } from "./aria.js";
|
|
1
2
|
import { computed } from "vue";
|
|
2
3
|
//#region src/internal/composables/useControlState.ts
|
|
3
|
-
function mergeIds(...values) {
|
|
4
|
-
const ids = values.flatMap((value) => value?.split(/\s+/) ?? []).filter(Boolean);
|
|
5
|
-
return ids.length > 0 ? Array.from(new Set(ids)).join(" ") : void 0;
|
|
6
|
-
}
|
|
7
4
|
function useControlState(options = {}) {
|
|
8
5
|
const id = computed(() => options.id);
|
|
9
6
|
const form = computed(() => options.form);
|
|
@@ -11,8 +8,8 @@ function useControlState(options = {}) {
|
|
|
11
8
|
const required = computed(() => options.required ?? false);
|
|
12
9
|
const invalid = computed(() => options.invalid ?? false);
|
|
13
10
|
const valid = computed(() => options.valid ?? false);
|
|
14
|
-
const ariaDescribedby = computed(() =>
|
|
15
|
-
const ariaLabelledby = computed(() =>
|
|
11
|
+
const ariaDescribedby = computed(() => mergeAriaIdRefs(options.describedby));
|
|
12
|
+
const ariaLabelledby = computed(() => mergeAriaIdRefs(options.labelledby));
|
|
16
13
|
return {
|
|
17
14
|
get id() {
|
|
18
15
|
return id.value;
|