ropav 0.1.3 → 0.1.5
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 +16 -0
- package/dist/alert.css +18 -18
- package/dist/alert.js +15 -10
- package/dist/avatar.css +19 -19
- package/dist/avatar.js +14 -9
- package/dist/badge.css +16 -16
- package/dist/badge.js +12 -7
- package/dist/base.css +196 -56
- package/dist/button-link.css +32 -28
- package/dist/button-link.js +9 -5
- package/dist/button.css +32 -28
- package/dist/button.js +9 -5
- package/dist/checkbox.css +32 -32
- package/dist/checkbox.js +17 -9
- package/dist/chevron-right.js +12 -0
- package/dist/collectionNavigation.js +120 -0
- package/dist/color-input.js +2 -1
- package/dist/componentColors.js +94 -22
- package/dist/components/alert/types.d.ts +1 -0
- package/dist/components/alert/useAlertColor.d.ts +1 -1
- package/dist/components/avatar/types.d.ts +1 -0
- package/dist/components/avatar/useAvatarColor.d.ts +1 -1
- package/dist/components/badge/types.d.ts +1 -0
- package/dist/components/badge/useBadgeColor.d.ts +1 -1
- package/dist/components/button/types.d.ts +1 -0
- package/dist/components/button/useButtonColor.d.ts +1 -1
- package/dist/components/button-link/types.d.ts +1 -0
- package/dist/components/checkbox/types.d.ts +1 -0
- package/dist/components/dropdown-menu/dropdown-menu-primitive-core.d.ts +1 -0
- package/dist/components/dropdown-menu/dropdown-menu-utils.d.ts +0 -2
- package/dist/components/dropdown-menu/index.d.ts +1 -0
- package/dist/components/dropdown-menu/types.d.ts +4 -0
- package/dist/components/dropdown-menu/useDropdownMenuInteractions.d.ts +2 -1
- package/dist/components/dropdown-menu/useDropdownMenuNavigation.d.ts +1 -0
- package/dist/components/icon-button/types.d.ts +1 -0
- package/dist/components/pagination/index.d.ts +4 -0
- package/dist/components/pagination/index.js +2 -0
- package/dist/components/pagination/pagination.d.ts +49 -0
- package/dist/components/pagination/types.d.ts +54 -0
- package/dist/components/pagination/usePagination.d.ts +19 -0
- package/dist/components/radio/types.d.ts +3 -0
- package/dist/components/scroll-area/scroll-area.d.ts +37 -3
- package/dist/components/scroll-area/types.d.ts +1 -0
- package/dist/components/scroll-area/useScrollArea.d.ts +4 -0
- package/dist/components/scroll-area/useScrollAreaControls.d.ts +4 -0
- package/dist/components/scroll-area/useScrollAreaPresentation.d.ts +1 -1
- package/dist/components/select/useSelect.d.ts +1 -1
- package/dist/components/slider/range-slider-tooltip.d.ts +2 -0
- package/dist/components/slider/types.d.ts +1 -1
- package/dist/components/slider/useRangeSlider.d.ts +2 -0
- package/dist/components/slider/useSlider.d.ts +2 -0
- package/dist/components/toast/types.d.ts +2 -0
- package/dist/components/toast/useToastColor.d.ts +1 -1
- package/dist/components/tooltip/types.d.ts +1 -0
- package/dist/components/tooltip/useTooltip.d.ts +1 -1
- package/dist/dropdown-menu.js +55 -30
- package/dist/icon-button.css +39 -35
- package/dist/icon-button.js +9 -5
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -1
- package/dist/input.js +2 -1
- package/dist/number-input.js +2 -1
- package/dist/pagination.css +140 -0
- package/dist/pagination.js +442 -0
- package/dist/radio.js +15 -5
- package/dist/scroll-area.css +25 -25
- package/dist/scroll-area.js +102 -19
- package/dist/select.js +65 -46
- package/dist/slider.css +191 -191
- package/dist/slider.js +49 -31
- package/dist/switch.js +2 -1
- package/dist/tabs.css +13 -13
- package/dist/tabs.js +38 -9
- package/dist/textarea.js +2 -1
- package/dist/toast.css +26 -26
- package/dist/toast.js +16 -9
- package/dist/tooltip.css +12 -12
- package/dist/tooltip.js +13 -8
- package/dist/unplugin-icons.js +38 -25
- package/dist/useButtonColor.js +6 -3
- package/dist/useControllableValue.js +27 -0
- package/dist/useFormControl.js +2 -27
- package/dist/utils/componentColors.d.ts +14 -1
- package/docs/public-styles-api.md +1 -1
- package/docs/public-tokens.md +648 -508
- package/package.json +8 -2
- package/src/styles/_tokens.scss +459 -319
- package/src/styles/styles-manifest.json +1122 -2
|
@@ -1,11 +1,45 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PropType } from 'vue';
|
|
2
|
+
import { ScrollAreaProps, ScrollAreaScrollbars } from './types.js';
|
|
2
3
|
declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
3
|
-
props: import('vue').PublicProps & __VLS_PrettifyLocal<
|
|
4
|
+
props: import('vue').PublicProps & __VLS_PrettifyLocal<import('vue').ExtractPublicPropTypes<{
|
|
5
|
+
id: StringConstructor;
|
|
6
|
+
embedded: {
|
|
7
|
+
type: BooleanConstructor;
|
|
8
|
+
default: boolean;
|
|
9
|
+
};
|
|
10
|
+
type: {
|
|
11
|
+
type: PropType<ScrollAreaProps["type"]>;
|
|
12
|
+
default: string;
|
|
13
|
+
};
|
|
14
|
+
scrollbars: {
|
|
15
|
+
type: PropType<ScrollAreaScrollbars | false>;
|
|
16
|
+
default: string;
|
|
17
|
+
};
|
|
18
|
+
scrollbarSize: {
|
|
19
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
20
|
+
default: number;
|
|
21
|
+
};
|
|
22
|
+
scrollHideDelay: {
|
|
23
|
+
type: NumberConstructor;
|
|
24
|
+
default: number;
|
|
25
|
+
};
|
|
26
|
+
ariaLabel: StringConstructor;
|
|
27
|
+
ariaLabelledby: StringConstructor;
|
|
28
|
+
ariaDescribedby: StringConstructor;
|
|
29
|
+
viewportAttrs: PropType<ScrollAreaProps["viewportAttrs"]>;
|
|
30
|
+
contentAttrs: PropType<ScrollAreaProps["contentAttrs"]>;
|
|
31
|
+
classNames: PropType<ScrollAreaProps["classNames"]>;
|
|
32
|
+
styles: PropType<ScrollAreaProps["styles"]>;
|
|
33
|
+
}> & {
|
|
4
34
|
onScroll?: ((event: Event) => any) | undefined;
|
|
5
35
|
onScrollPositionChange?: ((position: {
|
|
6
36
|
x: number;
|
|
7
37
|
y: number;
|
|
8
38
|
}) => any) | undefined;
|
|
39
|
+
onReachTop?: ((event: Event) => any) | undefined;
|
|
40
|
+
onReachBottom?: ((event: Event) => any) | undefined;
|
|
41
|
+
onReachLeft?: ((event: Event) => any) | undefined;
|
|
42
|
+
onReachRight?: ((event: Event) => any) | undefined;
|
|
9
43
|
}> & (typeof globalThis extends {
|
|
10
44
|
__VLS_PROPS_FALLBACK: infer P;
|
|
11
45
|
} ? P : {});
|
|
@@ -29,7 +63,7 @@ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup
|
|
|
29
63
|
emit: ((evt: "scroll", event: Event) => void) & ((evt: "scrollPositionChange", position: {
|
|
30
64
|
x: number;
|
|
31
65
|
y: number;
|
|
32
|
-
}) => void);
|
|
66
|
+
}) => void) & ((evt: "reachTop", event: Event) => void) & ((evt: "reachBottom", event: Event) => void) & ((evt: "reachLeft", event: Event) => void) & ((evt: "reachRight", event: Event) => void);
|
|
33
67
|
}>) => import('vue').VNode & {
|
|
34
68
|
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
35
69
|
};
|
|
@@ -3,6 +3,10 @@ interface UseScrollAreaOptions {
|
|
|
3
3
|
props: Readonly<ScrollAreaProps>;
|
|
4
4
|
emitScroll: (event: Event) => void;
|
|
5
5
|
emitPositionChange: (position: ScrollAreaPosition) => void;
|
|
6
|
+
emitReachTop: (event: Event) => void;
|
|
7
|
+
emitReachBottom: (event: Event) => void;
|
|
8
|
+
emitReachLeft: (event: Event) => void;
|
|
9
|
+
emitReachRight: (event: Event) => void;
|
|
6
10
|
}
|
|
7
11
|
export declare function useScrollArea(options: UseScrollAreaOptions): {
|
|
8
12
|
onScrollbarPointerdown: (axis: import('./scrollAreaCore.js').ScrollAxis, event: PointerEvent) => void;
|
|
@@ -8,6 +8,10 @@ interface UseScrollAreaControlsOptions {
|
|
|
8
8
|
showDuringScroll: () => void;
|
|
9
9
|
emitScroll: (event: Event) => void;
|
|
10
10
|
emitPositionChange: (position: ScrollAreaPosition) => void;
|
|
11
|
+
emitReachTop: (event: Event) => void;
|
|
12
|
+
emitReachBottom: (event: Event) => void;
|
|
13
|
+
emitReachLeft: (event: Event) => void;
|
|
14
|
+
emitReachRight: (event: Event) => void;
|
|
11
15
|
}
|
|
12
16
|
export declare function useScrollAreaControls(options: UseScrollAreaControlsOptions): {
|
|
13
17
|
onViewportScroll: (event: Event) => void;
|
|
@@ -4,7 +4,7 @@ import { ScrollAreaOrientation, ScrollAreaProps, ScrollAreaSlotProps } from './t
|
|
|
4
4
|
export declare function useScrollAreaPresentation(props: Readonly<ScrollAreaProps>, scrollArea: ScrollAreaController): {
|
|
5
5
|
rootAttrs: import('vue').ComputedRef<Record<string, unknown>>;
|
|
6
6
|
viewportAttrs: import('vue').ComputedRef<HTMLAttributes>;
|
|
7
|
-
contentAttrs: import('vue').ComputedRef<
|
|
7
|
+
contentAttrs: import('vue').ComputedRef<HTMLAttributes>;
|
|
8
8
|
horizontalScrollbarAttrs: import('vue').ComputedRef<{
|
|
9
9
|
role: string;
|
|
10
10
|
tabindex: number;
|
|
@@ -10,7 +10,7 @@ export declare function useSelect(props: Readonly<SelectBehaviorProps>, emitUpda
|
|
|
10
10
|
listboxId: string;
|
|
11
11
|
control: import('../../composables/useControlState.js').ControlState;
|
|
12
12
|
visibleOptions: import('vue').ComputedRef<SelectOption[]>;
|
|
13
|
-
focusedIndex:
|
|
13
|
+
focusedIndex: import('vue').ComputedRef<number>;
|
|
14
14
|
activeDescendantId: import('vue').ComputedRef<string | undefined>;
|
|
15
15
|
rootClass: import('vue').ComputedRef<string[]>;
|
|
16
16
|
hasValue: import('vue').ComputedRef<boolean>;
|
|
@@ -5,6 +5,8 @@ declare const __VLS_export: (__VLS_props: NonNullable<Awaited<typeof __VLS_setup
|
|
|
5
5
|
props: import('vue').PublicProps & __VLS_PrettifyLocal<{
|
|
6
6
|
arrow?: boolean;
|
|
7
7
|
color?: TooltipColor;
|
|
8
|
+
autoContrast?: boolean;
|
|
9
|
+
contrastColor?: string;
|
|
8
10
|
content: [string, string];
|
|
9
11
|
ids: [string | undefined, string | undefined];
|
|
10
12
|
mergedContent: string;
|
|
@@ -23,7 +23,7 @@ export type RangeSliderEndpointValueText = string | SliderValueFormatter;
|
|
|
23
23
|
export type RangeSliderAriaValueText = RangeSliderEndpointValueText | [RangeSliderEndpointValueText, RangeSliderEndpointValueText];
|
|
24
24
|
export type RangeSliderValidationMessage = string | [string | undefined, string | undefined];
|
|
25
25
|
export type SliderTooltipMode = 'hover' | 'always';
|
|
26
|
-
type SliderTooltipBaseOptions = Pick<TooltipProps, 'id' | 'placement' | 'color' | 'offset' | 'openDelay' | 'arrow'>;
|
|
26
|
+
type SliderTooltipBaseOptions = Pick<TooltipProps, 'id' | 'placement' | 'color' | 'autoContrast' | 'contrastColor' | 'offset' | 'openDelay' | 'arrow'>;
|
|
27
27
|
export type SliderTooltipAnchor = 'thumb' | 'pointer';
|
|
28
28
|
export type SliderTooltipOptions = (SliderTooltipBaseOptions & {
|
|
29
29
|
anchor?: 'thumb';
|
|
@@ -42,6 +42,8 @@ export declare function useRangeSlider(props: RangeSliderStateProps, emitUpdate:
|
|
|
42
42
|
tooltipIds: import('vue').ComputedRef<[string | undefined, string | undefined]>;
|
|
43
43
|
mergedTooltipId: import('vue').ComputedRef<string | undefined>;
|
|
44
44
|
tooltipColor: import('vue').ComputedRef<import('../../utils/componentColors.js').ComponentColorValue | undefined>;
|
|
45
|
+
tooltipAutoContrast: import('vue').ComputedRef<boolean | undefined>;
|
|
46
|
+
tooltipContrastColor: import('vue').ComputedRef<string | undefined>;
|
|
45
47
|
tooltipOffset: import('vue').ComputedRef<import('../floating/index.js').FloatingOffset | undefined>;
|
|
46
48
|
tooltipOpenDelay: import('vue').ComputedRef<number>;
|
|
47
49
|
tooltipArrow: import('vue').ComputedRef<boolean>;
|
|
@@ -38,6 +38,8 @@ export declare function useSlider(props: SliderStateProps, emitUpdate: (value: n
|
|
|
38
38
|
tooltipPlacement: import('vue').ComputedRef<import('../tooltip/index.js').TooltipPlacement>;
|
|
39
39
|
tooltipId: import('vue').ComputedRef<string | undefined>;
|
|
40
40
|
tooltipColor: import('vue').ComputedRef<import('../../utils/componentColors.js').ComponentColorValue | undefined>;
|
|
41
|
+
tooltipAutoContrast: import('vue').ComputedRef<boolean | undefined>;
|
|
42
|
+
tooltipContrastColor: import('vue').ComputedRef<string | undefined>;
|
|
41
43
|
tooltipOffset: import('vue').ComputedRef<import('../floating/index.js').FloatingOffset | undefined>;
|
|
42
44
|
tooltipOpenDelay: import('vue').ComputedRef<number>;
|
|
43
45
|
tooltipArrow: import('vue').ComputedRef<boolean>;
|
|
@@ -27,6 +27,7 @@ export interface ToastProps extends StylesApiProps<ToastPart> {
|
|
|
27
27
|
variant?: ToastVariant;
|
|
28
28
|
color?: ToastColor;
|
|
29
29
|
autoContrast?: boolean;
|
|
30
|
+
contrastColor?: string;
|
|
30
31
|
radius?: ToastRadius;
|
|
31
32
|
role?: ToastRole;
|
|
32
33
|
duration?: number;
|
|
@@ -61,6 +62,7 @@ export interface ToastStoreOptions {
|
|
|
61
62
|
variant?: ToastVariant;
|
|
62
63
|
color?: ToastColor;
|
|
63
64
|
autoContrast?: boolean;
|
|
65
|
+
contrastColor?: string;
|
|
64
66
|
radius?: ToastRadius;
|
|
65
67
|
role?: ToastRole;
|
|
66
68
|
pauseOnHover?: boolean;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { CSSProperties } from 'vue';
|
|
2
2
|
import { ToastColor, ToastVariant } from './types.js';
|
|
3
|
-
export declare function getToastColorStyle(color: ToastColor | undefined, variant: ToastVariant | undefined, autoContrast: boolean | undefined): CSSProperties | undefined;
|
|
3
|
+
export declare function getToastColorStyle(color: ToastColor | undefined, variant: ToastVariant | undefined, autoContrast: boolean | undefined, contrastColor?: string): CSSProperties | undefined;
|
|
@@ -2,7 +2,7 @@ import { CSSProperties } from 'vue';
|
|
|
2
2
|
import { TooltipOffset, TooltipProps, TooltipTriggerProps } from './types.js';
|
|
3
3
|
type TooltipBehaviorProps = Omit<TooltipProps, 'classNames' | 'styles'>;
|
|
4
4
|
export declare function resolveTooltipOffsetStyle(offset: TooltipOffset | undefined): CSSProperties | undefined;
|
|
5
|
-
export declare function resolveTooltipColorStyleWithContrast(color: TooltipProps['color'], autoContrast: TooltipProps['autoContrast']): CSSProperties | undefined;
|
|
5
|
+
export declare function resolveTooltipColorStyleWithContrast(color: TooltipProps['color'], autoContrast: TooltipProps['autoContrast'], contrastColor?: TooltipProps['contrastColor']): CSSProperties | undefined;
|
|
6
6
|
export declare function useTooltip(props: Readonly<TooltipBehaviorProps>, emitOpenChange?: (open: boolean) => void): {
|
|
7
7
|
rootRef: import('vue').Ref<HTMLElement | null, HTMLElement | null>;
|
|
8
8
|
contentRef: import('vue').Ref<HTMLElement | null, HTMLElement | null>;
|
package/dist/dropdown-menu.js
CHANGED
|
@@ -5,7 +5,9 @@ import { t as useRequiredInject } from "./useRequiredInject.js";
|
|
|
5
5
|
import { n as useOverlayZIndex, r as useOverlayLayer } from "./useOverlayZIndex.js";
|
|
6
6
|
import { n as useFloatingPosition, r as useFloatingTarget, t as isElementReference } from "./useFloatingPosition.js";
|
|
7
7
|
import { n as useTeleportPositioningKey, r as useTeleportTarget, t as provideTeleportTarget } from "./useTeleportTarget.js";
|
|
8
|
-
import {
|
|
8
|
+
import { n as getNextEnabledIndex, r as useTypeahead, t as getEnabledIndexes } from "./collectionNavigation.js";
|
|
9
|
+
import { t as chevron_right_default } from "./chevron-right.js";
|
|
10
|
+
import { VaporTeleport, VaporTransition, child, computed, createComponent, createComponentWithFallback, createDynamicComponent, createFor, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, isRef, mergeProps, nextTick, onBeforeUnmount, onMounted, onUnmounted, provide, ref, renderEffect, resolveComponent, setAttr, setDynamicProps, setInsertionState, setStaticTemplateRef, setStyle, setTemplateRefBinding, setText, shallowRef, template, toDisplayString, txt, unref, useAttrs, useId, watch } from "vue";
|
|
9
11
|
//#region src/components/dropdown-menu/dropdown-menu-primitive-core.ts
|
|
10
12
|
var rootKey = Symbol("dropdown-menu-root");
|
|
11
13
|
var menuKey = Symbol("dropdown-menu-content");
|
|
@@ -156,6 +158,17 @@ function createMenuContext(options) {
|
|
|
156
158
|
const item = enabledItems[((currentIndex < 0 ? direction === 1 ? -1 : 0 : currentIndex) + direction + enabledItems.length) % enabledItems.length];
|
|
157
159
|
if (item) setActive(item.id);
|
|
158
160
|
}
|
|
161
|
+
const typeahead = useTypeahead({
|
|
162
|
+
items: () => sortItems(items.value),
|
|
163
|
+
activeIndex: () => sortItems(items.value).findIndex((item) => item.id === activeId.value),
|
|
164
|
+
getKey: (item) => item.id,
|
|
165
|
+
getTextValue: (item) => item.textValue(),
|
|
166
|
+
isDisabled: (item) => item.disabled(),
|
|
167
|
+
onMatch: (item) => setActive(item.id)
|
|
168
|
+
});
|
|
169
|
+
watch(computed(() => options.parentSub?.isOpen.value ?? options.root.isOpen.value), (open) => {
|
|
170
|
+
if (!open) typeahead.reset();
|
|
171
|
+
}, { flush: "sync" });
|
|
159
172
|
function onHorizontalKeydown(event, active) {
|
|
160
173
|
if (options.parentSub && event.key === getCloseDirection(context)) {
|
|
161
174
|
event.preventDefault();
|
|
@@ -169,6 +182,10 @@ function createMenuContext(options) {
|
|
|
169
182
|
active.submenu.open("first");
|
|
170
183
|
}
|
|
171
184
|
function onKeydown(event) {
|
|
185
|
+
if (typeahead.handleKey(event)) {
|
|
186
|
+
event.stopPropagation();
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
172
189
|
const active = items.value.find((item) => item.id === activeId.value);
|
|
173
190
|
switch (event.key) {
|
|
174
191
|
case "ArrowDown":
|
|
@@ -249,6 +266,7 @@ function usePrimitiveItem(componentName, props, emitSelect, options) {
|
|
|
249
266
|
return id.value;
|
|
250
267
|
},
|
|
251
268
|
element: () => element.value,
|
|
269
|
+
textValue: () => props.textValue ?? element.value?.textContent?.trim() ?? "",
|
|
252
270
|
disabled: () => isDisabled.value,
|
|
253
271
|
activate
|
|
254
272
|
};
|
|
@@ -302,6 +320,7 @@ var dropdown_menu_checkbox_item_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
302
320
|
},
|
|
303
321
|
id: {},
|
|
304
322
|
as: { default: "button" },
|
|
323
|
+
textValue: {},
|
|
305
324
|
disabled: {
|
|
306
325
|
type: Boolean,
|
|
307
326
|
default: false
|
|
@@ -569,7 +588,7 @@ function useDropdownMenuPrimitiveContent(props, attrs, events, submenu) {
|
|
|
569
588
|
}
|
|
570
589
|
//#endregion
|
|
571
590
|
//#region src/components/dropdown-menu/dropdown-menu-content.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
572
|
-
var t0$
|
|
591
|
+
var t0$2 = template("<span class=rp-dropdown-menu__arrow aria-hidden=true>");
|
|
573
592
|
//#endregion
|
|
574
593
|
//#region src/components/dropdown-menu/dropdown-menu-content.vue
|
|
575
594
|
var dropdown_menu_content_default = /* @__PURE__ */ defineVaporComponent({
|
|
@@ -625,7 +644,7 @@ var dropdown_menu_content_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
625
644
|
return createIf(() => unref(shouldRender), () => {
|
|
626
645
|
const n6 = createDynamicComponent(() => __props.as, { $: [() => unref(rootAttrs)] }, extend(() => {
|
|
627
646
|
return [createIf(() => __props.arrow, () => {
|
|
628
|
-
const n4 = t0$
|
|
647
|
+
const n4 = t0$2();
|
|
629
648
|
_setTemplateRef(n4, arrowElement, null, "arrowElement");
|
|
630
649
|
renderEffect(() => {
|
|
631
650
|
setAttr(n4, "data-side", unref(placementSide));
|
|
@@ -781,6 +800,7 @@ var dropdown_menu_item_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
781
800
|
id: {},
|
|
782
801
|
as: { default: "button" },
|
|
783
802
|
value: {},
|
|
803
|
+
textValue: {},
|
|
784
804
|
disabled: {
|
|
785
805
|
type: Boolean,
|
|
786
806
|
default: false
|
|
@@ -970,6 +990,7 @@ var dropdown_menu_radio_item_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
970
990
|
value: {},
|
|
971
991
|
id: {},
|
|
972
992
|
as: { default: "button" },
|
|
993
|
+
textValue: {},
|
|
973
994
|
disabled: {
|
|
974
995
|
type: Boolean,
|
|
975
996
|
default: false
|
|
@@ -1347,6 +1368,7 @@ var dropdown_menu_sub_trigger_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
1347
1368
|
props: {
|
|
1348
1369
|
id: {},
|
|
1349
1370
|
as: { default: "button" },
|
|
1371
|
+
textValue: {},
|
|
1350
1372
|
disabled: {
|
|
1351
1373
|
type: Boolean,
|
|
1352
1374
|
default: false
|
|
@@ -1366,6 +1388,7 @@ var dropdown_menu_sub_trigger_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
1366
1388
|
return id.value;
|
|
1367
1389
|
},
|
|
1368
1390
|
element: () => sub.trigger.value,
|
|
1391
|
+
textValue: () => props.textValue ?? sub.trigger.value?.textContent?.trim() ?? "",
|
|
1369
1392
|
disabled: () => isDisabled.value,
|
|
1370
1393
|
activate: () => sub.open("first"),
|
|
1371
1394
|
submenu: sub
|
|
@@ -1495,16 +1518,6 @@ var dropdown_menu_trigger_default = /* @__PURE__ */ defineVaporComponent({
|
|
|
1495
1518
|
return n1;
|
|
1496
1519
|
}
|
|
1497
1520
|
});
|
|
1498
|
-
//#endregion
|
|
1499
|
-
//#region ~icons/lucide/chevron-right
|
|
1500
|
-
var t0$2 = template("<svg viewBox=\"0 0 24 24\"width=1.2em height=1.2em><path fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 d=\"m9 18l6-6l-6-6\">", 3, 1);
|
|
1501
|
-
function render(_ctx) {
|
|
1502
|
-
return t0$2();
|
|
1503
|
-
}
|
|
1504
|
-
var chevron_right_default = markRaw(defineVaporComponent({
|
|
1505
|
-
name: "lucide-chevron-right",
|
|
1506
|
-
render
|
|
1507
|
-
}));
|
|
1508
1521
|
var DEFAULT_FOCUS_TARGET = "first";
|
|
1509
1522
|
function getOpenFocusTarget(options) {
|
|
1510
1523
|
if (typeof options === "string") return options;
|
|
@@ -1552,19 +1565,6 @@ function hasMeasuredRect(rect) {
|
|
|
1552
1565
|
function isPointInRect(point, rect, padding = 0) {
|
|
1553
1566
|
return point.x >= rect.left - padding && point.x <= rect.right + padding && point.y >= rect.top - padding && point.y <= rect.bottom + padding;
|
|
1554
1567
|
}
|
|
1555
|
-
function getEnabledIndexes(items) {
|
|
1556
|
-
return items.map((item, index) => item.disabled ? -1 : index).filter((index) => index >= 0);
|
|
1557
|
-
}
|
|
1558
|
-
function getNextEnabledIndex(items, index, direction) {
|
|
1559
|
-
const enabledIndexes = getEnabledIndexes(items);
|
|
1560
|
-
if (enabledIndexes.length === 0) return void 0;
|
|
1561
|
-
if (direction === 1) return enabledIndexes.find((candidate) => candidate > index) ?? enabledIndexes[0];
|
|
1562
|
-
for (let i = enabledIndexes.length - 1; i >= 0; i -= 1) {
|
|
1563
|
-
const candidate = enabledIndexes[i];
|
|
1564
|
-
if (candidate < index) return candidate;
|
|
1565
|
-
}
|
|
1566
|
-
return enabledIndexes[enabledIndexes.length - 1];
|
|
1567
|
-
}
|
|
1568
1568
|
//#endregion
|
|
1569
1569
|
//#region src/components/dropdown-menu/dropdown-menu-item-row.vue?vue&type=script&setup=true&vapor=true&lang.ts
|
|
1570
1570
|
var t0$1 = template("<div>");
|
|
@@ -1979,7 +1979,7 @@ function useDropdownMenuHoverIntent({ openSubmenuPath, getItemElement, getSubmen
|
|
|
1979
1979
|
}
|
|
1980
1980
|
//#endregion
|
|
1981
1981
|
//#region src/components/dropdown-menu/useDropdownMenuInteractions.ts
|
|
1982
|
-
function useDropdownMenuInteractions({ props, emit, isDisabled, focusedPath, openSubmenuPath, getItemAtPath, focusItem, moveFocus, submenus, hoverIntent, disclosure, isSubmenuOpeningLeft }) {
|
|
1982
|
+
function useDropdownMenuInteractions({ props, emit, isDisabled, focusedPath, openSubmenuPath, getItemAtPath, focusItem, moveFocus, handleTypeahead, submenus, hoverIntent, disclosure, isSubmenuOpeningLeft }) {
|
|
1983
1983
|
function activateItem(item, path, event) {
|
|
1984
1984
|
if (item.disabled) return;
|
|
1985
1985
|
if (hasItemSubmenu(item)) {
|
|
@@ -2062,6 +2062,7 @@ function useDropdownMenuInteractions({ props, emit, isDisabled, focusedPath, ope
|
|
|
2062
2062
|
}
|
|
2063
2063
|
function onMenuKeydown(event) {
|
|
2064
2064
|
hoverIntent.resetHoverIntent();
|
|
2065
|
+
if (handleTypeahead(event)) return;
|
|
2065
2066
|
switch (event.key) {
|
|
2066
2067
|
case "ArrowDown":
|
|
2067
2068
|
event.preventDefault();
|
|
@@ -2150,7 +2151,7 @@ function useDropdownMenuNavigation(items) {
|
|
|
2150
2151
|
return getItemsAtPath(getParentPath(path))[path[path.length - 1]];
|
|
2151
2152
|
}
|
|
2152
2153
|
function focusItem(target, menuPath = []) {
|
|
2153
|
-
const enabledIndexes = getEnabledIndexes(getItemsAtPath(menuPath));
|
|
2154
|
+
const enabledIndexes = getEnabledIndexes(getItemsAtPath(menuPath), (item) => Boolean(item.disabled));
|
|
2154
2155
|
const index = target === "last" ? enabledIndexes[enabledIndexes.length - 1] : enabledIndexes[0];
|
|
2155
2156
|
if (index === void 0) {
|
|
2156
2157
|
if (menuPath.length === 0) focusedPath.value = [];
|
|
@@ -2162,13 +2163,19 @@ function useDropdownMenuNavigation(items) {
|
|
|
2162
2163
|
function resetFocus() {
|
|
2163
2164
|
focusedPath.value = [];
|
|
2164
2165
|
}
|
|
2166
|
+
function setFocusedIndex(index, menuPath = []) {
|
|
2167
|
+
const item = getItemsAtPath(menuPath)[index];
|
|
2168
|
+
if (!item || item.disabled) return false;
|
|
2169
|
+
focusedPath.value = [...menuPath, index];
|
|
2170
|
+
return true;
|
|
2171
|
+
}
|
|
2165
2172
|
function isItemFocused(indexOrPath) {
|
|
2166
2173
|
return arePathsEqual(normalizePath(indexOrPath), focusedPath.value);
|
|
2167
2174
|
}
|
|
2168
2175
|
function moveFocus(direction) {
|
|
2169
2176
|
const menuPath = getParentPath(focusedPath.value);
|
|
2170
2177
|
const itemsAtPath = getItemsAtPath(menuPath);
|
|
2171
|
-
const nextIndex = getNextEnabledIndex(itemsAtPath, focusedPath.value.length === 0 ? direction === 1 ? -1 : itemsAtPath.length : focusedPath.value[focusedPath.value.length - 1], direction);
|
|
2178
|
+
const nextIndex = getNextEnabledIndex(itemsAtPath, focusedPath.value.length === 0 ? direction === 1 ? -1 : itemsAtPath.length : focusedPath.value[focusedPath.value.length - 1], direction, (item) => Boolean(item.disabled));
|
|
2172
2179
|
if (nextIndex === void 0) {
|
|
2173
2180
|
focusedPath.value = [];
|
|
2174
2181
|
return;
|
|
@@ -2183,6 +2190,7 @@ function useDropdownMenuNavigation(items) {
|
|
|
2183
2190
|
getItemAtPath,
|
|
2184
2191
|
focusItem,
|
|
2185
2192
|
resetFocus,
|
|
2193
|
+
setFocusedIndex,
|
|
2186
2194
|
isItemFocused,
|
|
2187
2195
|
moveFocus
|
|
2188
2196
|
};
|
|
@@ -2398,13 +2406,26 @@ function useDropdownMenu(props, emit = {}) {
|
|
|
2398
2406
|
]
|
|
2399
2407
|
});
|
|
2400
2408
|
const placementSide = computed(() => actualPlacement.value.split("-")[0]);
|
|
2401
|
-
const { focusedPath, focusedIndex, getItemAtPath, focusItem, resetFocus, isItemFocused, moveFocus } = useDropdownMenuNavigation(visibleItems);
|
|
2409
|
+
const { focusedPath, focusedIndex, getItemsAtPath, getItemAtPath, focusItem, resetFocus, setFocusedIndex, isItemFocused, moveFocus } = useDropdownMenuNavigation(visibleItems);
|
|
2402
2410
|
const submenus = useDropdownSubmenus({
|
|
2403
2411
|
focusedPath,
|
|
2404
2412
|
getItemAtPath,
|
|
2405
2413
|
focusItem
|
|
2406
2414
|
});
|
|
2407
2415
|
const { openSubmenuPath, isSubmenuOpen } = submenus;
|
|
2416
|
+
const activeMenuPath = computed(() => getParentPath(focusedPath.value));
|
|
2417
|
+
const typeahead = useTypeahead({
|
|
2418
|
+
items: () => getItemsAtPath(activeMenuPath.value),
|
|
2419
|
+
activeIndex: () => focusedPath.value.at(-1) ?? -1,
|
|
2420
|
+
getKey: (item) => item.value,
|
|
2421
|
+
getTextValue: (item) => item.label,
|
|
2422
|
+
isDisabled: (item) => Boolean(item.disabled),
|
|
2423
|
+
scopeKey: () => activeMenuPath.value.join("/"),
|
|
2424
|
+
onMatch(_item, index) {
|
|
2425
|
+
const menuPath = activeMenuPath.value;
|
|
2426
|
+
if (setFocusedIndex(index, menuPath)) submenus.closeSubmenusAfter(menuPath);
|
|
2427
|
+
}
|
|
2428
|
+
});
|
|
2408
2429
|
const { activeDescendantId, focusMenu, focusTrigger, getItemId, getSubmenuId, getItemElement, getSubmenuElement, isSubmenuOpeningLeft, getMenuActiveDescendant } = useDropdownMenuDom({
|
|
2409
2430
|
menuId,
|
|
2410
2431
|
rootRef,
|
|
@@ -2447,6 +2468,7 @@ function useDropdownMenu(props, emit = {}) {
|
|
|
2447
2468
|
getItemAtPath,
|
|
2448
2469
|
focusItem,
|
|
2449
2470
|
moveFocus,
|
|
2471
|
+
handleTypeahead: typeahead.handleKey,
|
|
2450
2472
|
submenus,
|
|
2451
2473
|
hoverIntent,
|
|
2452
2474
|
disclosure,
|
|
@@ -2510,6 +2532,9 @@ function useDropdownMenu(props, emit = {}) {
|
|
|
2510
2532
|
target.removeEventListener("keydown", onTriggerKeydown);
|
|
2511
2533
|
});
|
|
2512
2534
|
}, { flush: "sync" });
|
|
2535
|
+
watch(isVisible, (visible) => {
|
|
2536
|
+
if (!visible) typeahead.reset();
|
|
2537
|
+
}, { flush: "sync" });
|
|
2513
2538
|
watch([
|
|
2514
2539
|
isExplicitTarget,
|
|
2515
2540
|
targetElement,
|
package/dist/icon-button.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@layer ropav.components {
|
|
2
|
-
.rp-button[data-v-
|
|
2
|
+
.rp-button[data-v-5d5bd5fa] {
|
|
3
3
|
--_rp-button-bg: var(--rp-color-default);
|
|
4
4
|
--_rp-button-bg-hover: var(--rp-color-default-hover);
|
|
5
5
|
--_rp-button-bg-active: var(--rp-color-disabled);
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
--_rp-button-border-hover: var(--_rp-button-border);
|
|
8
8
|
--_rp-button-border-active: var(--_rp-button-border-hover);
|
|
9
9
|
--_rp-button-fg: var(--rp-color-default-color);
|
|
10
|
+
--_rp-button-fg-hover: var(--_rp-button-fg);
|
|
11
|
+
--_rp-button-fg-active: var(--_rp-button-fg-hover);
|
|
10
12
|
--_rp-button-height: var(--rp-size-control-md);
|
|
11
13
|
--_rp-button-padding-x: 22px;
|
|
12
14
|
--_rp-button-font-size: var(--rp-font-size-md);
|
|
@@ -29,7 +31,7 @@
|
|
|
29
31
|
color: var(--_rp-button-fg);
|
|
30
32
|
cursor: pointer;
|
|
31
33
|
text-decoration: none;
|
|
32
|
-
transition:
|
|
34
|
+
transition: border-color var(--rp-transition-fast), box-shadow var(--rp-transition-fast), transform var(--rp-transition-fast);
|
|
33
35
|
white-space: nowrap;
|
|
34
36
|
user-select: none;
|
|
35
37
|
height: var(--_rp-button-height);
|
|
@@ -37,108 +39,110 @@
|
|
|
37
39
|
font-size: var(--_rp-button-font-size);
|
|
38
40
|
border-radius: var(--_rp-button-radius);
|
|
39
41
|
}
|
|
40
|
-
.rp-button[data-v-
|
|
42
|
+
.rp-button[data-v-5d5bd5fa]:hover:not(:disabled):not(.rp-button--disabled) {
|
|
41
43
|
background-color: var(--_rp-button-bg-hover);
|
|
42
44
|
border-color: var(--_rp-button-border-hover);
|
|
43
45
|
box-shadow: var(--_rp-button-shadow-hover);
|
|
46
|
+
color: var(--_rp-button-fg-hover);
|
|
44
47
|
}
|
|
45
|
-
.rp-button[data-v-
|
|
48
|
+
.rp-button[data-v-5d5bd5fa]:active:not(:disabled):not(.rp-button--disabled) {
|
|
46
49
|
background-color: var(--_rp-button-bg-active);
|
|
47
50
|
border-color: var(--_rp-button-border-active);
|
|
48
51
|
box-shadow: var(--_rp-button-shadow-active);
|
|
52
|
+
color: var(--_rp-button-fg-active);
|
|
49
53
|
transform: translateY(1px);
|
|
50
54
|
}
|
|
51
|
-
.rp-button--size-xs[data-v-
|
|
55
|
+
.rp-button--size-xs[data-v-5d5bd5fa] {
|
|
52
56
|
--_rp-button-height: var(--rp-size-control-xs);
|
|
53
57
|
--_rp-button-padding-x: 14px;
|
|
54
58
|
--_rp-button-font-size: var(--rp-font-size-xs);
|
|
55
59
|
}
|
|
56
|
-
.rp-button--size-sm[data-v-
|
|
60
|
+
.rp-button--size-sm[data-v-5d5bd5fa] {
|
|
57
61
|
--_rp-button-height: var(--rp-size-control-sm);
|
|
58
62
|
--_rp-button-padding-x: 18px;
|
|
59
63
|
--_rp-button-font-size: var(--rp-font-size-sm);
|
|
60
64
|
}
|
|
61
|
-
.rp-button--size-md[data-v-
|
|
65
|
+
.rp-button--size-md[data-v-5d5bd5fa] {
|
|
62
66
|
--_rp-button-height: var(--rp-size-control-md);
|
|
63
67
|
--_rp-button-padding-x: 22px;
|
|
64
68
|
--_rp-button-font-size: var(--rp-font-size-md);
|
|
65
69
|
}
|
|
66
|
-
.rp-button--size-lg[data-v-
|
|
70
|
+
.rp-button--size-lg[data-v-5d5bd5fa] {
|
|
67
71
|
--_rp-button-height: var(--rp-size-control-lg);
|
|
68
72
|
--_rp-button-padding-x: 26px;
|
|
69
73
|
--_rp-button-font-size: var(--rp-font-size-lg);
|
|
70
74
|
}
|
|
71
|
-
.rp-button--size-xl[data-v-
|
|
75
|
+
.rp-button--size-xl[data-v-5d5bd5fa] {
|
|
72
76
|
--_rp-button-height: var(--rp-size-control-xl);
|
|
73
77
|
--_rp-button-padding-x: 32px;
|
|
74
78
|
--_rp-button-font-size: var(--rp-font-size-xl);
|
|
75
79
|
}
|
|
76
|
-
.rp-button--radius-xs[data-v-
|
|
80
|
+
.rp-button--radius-xs[data-v-5d5bd5fa] {
|
|
77
81
|
--_rp-button-radius: var(--rp-radius-xs);
|
|
78
82
|
}
|
|
79
|
-
.rp-button--radius-sm[data-v-
|
|
83
|
+
.rp-button--radius-sm[data-v-5d5bd5fa] {
|
|
80
84
|
--_rp-button-radius: var(--rp-radius-sm);
|
|
81
85
|
}
|
|
82
|
-
.rp-button--radius-md[data-v-
|
|
86
|
+
.rp-button--radius-md[data-v-5d5bd5fa] {
|
|
83
87
|
--_rp-button-radius: var(--rp-radius-md);
|
|
84
88
|
}
|
|
85
|
-
.rp-button--radius-lg[data-v-
|
|
89
|
+
.rp-button--radius-lg[data-v-5d5bd5fa] {
|
|
86
90
|
--_rp-button-radius: var(--rp-radius-lg);
|
|
87
91
|
}
|
|
88
|
-
.rp-button--radius-xl[data-v-
|
|
92
|
+
.rp-button--radius-xl[data-v-5d5bd5fa] {
|
|
89
93
|
--_rp-button-radius: var(--rp-radius-xl);
|
|
90
94
|
}
|
|
91
|
-
.rp-button--subtle[data-v-
|
|
95
|
+
.rp-button--subtle[data-v-5d5bd5fa] {
|
|
92
96
|
--_rp-button-shadow: none;
|
|
93
97
|
--_rp-button-shadow-hover: none;
|
|
94
98
|
--_rp-button-shadow-active: none;
|
|
95
99
|
}
|
|
96
|
-
.rp-button--surface[data-v-
|
|
100
|
+
.rp-button--surface[data-v-5d5bd5fa] {
|
|
97
101
|
--_rp-button-shadow: none;
|
|
98
102
|
--_rp-button-shadow-hover: none;
|
|
99
103
|
--_rp-button-shadow-active: none;
|
|
100
104
|
}
|
|
101
|
-
.rp-button--outline[data-v-
|
|
105
|
+
.rp-button--outline[data-v-5d5bd5fa] {
|
|
102
106
|
--_rp-button-shadow: none;
|
|
103
107
|
--_rp-button-shadow-hover: none;
|
|
104
108
|
--_rp-button-shadow-active: none;
|
|
105
109
|
}
|
|
106
|
-
.rp-button--ghost[data-v-
|
|
110
|
+
.rp-button--ghost[data-v-5d5bd5fa] {
|
|
107
111
|
--_rp-button-shadow: none;
|
|
108
112
|
--_rp-button-shadow-hover: none;
|
|
109
113
|
--_rp-button-shadow-active: none;
|
|
110
114
|
}
|
|
111
|
-
.rp-button--plain[data-v-
|
|
115
|
+
.rp-button--plain[data-v-5d5bd5fa] {
|
|
112
116
|
--_rp-button-shadow: none;
|
|
113
117
|
--_rp-button-shadow-hover: none;
|
|
114
118
|
--_rp-button-shadow-active: none;
|
|
115
119
|
}
|
|
116
|
-
.rp-button[data-v-
|
|
120
|
+
.rp-button[data-v-5d5bd5fa]:disabled, .rp-button--disabled[data-v-5d5bd5fa] {
|
|
117
121
|
opacity: var(--rp-opacity-disabled);
|
|
118
122
|
cursor: not-allowed;
|
|
119
123
|
box-shadow: none;
|
|
120
124
|
transform: none;
|
|
121
125
|
}
|
|
122
|
-
.rp-button[data-v-
|
|
126
|
+
.rp-button[data-v-5d5bd5fa]:focus-visible {
|
|
123
127
|
outline: none;
|
|
124
128
|
border-color: var(--rp-color-control-border-focus);
|
|
125
129
|
box-shadow: 0 0 0 var(--rp-border-width-medium) var(--rp-color-focus-ring);
|
|
126
130
|
}
|
|
127
|
-
.rp-button--loading .rp-button__content[data-v-
|
|
131
|
+
.rp-button--loading .rp-button__content[data-v-5d5bd5fa] {
|
|
128
132
|
opacity: 0;
|
|
129
133
|
}
|
|
130
|
-
.rp-button__content[data-v-
|
|
134
|
+
.rp-button__content[data-v-5d5bd5fa] {
|
|
131
135
|
display: inline-flex;
|
|
132
136
|
align-items: center;
|
|
133
137
|
justify-content: center;
|
|
134
138
|
gap: var(--rp-spacing-2);
|
|
135
139
|
}
|
|
136
|
-
.rp-button__left[data-v-
|
|
140
|
+
.rp-button__left[data-v-5d5bd5fa], .rp-button__right[data-v-5d5bd5fa] {
|
|
137
141
|
display: inline-flex;
|
|
138
142
|
align-items: center;
|
|
139
143
|
flex-shrink: 0;
|
|
140
144
|
}
|
|
141
|
-
.rp-button__loading[data-v-
|
|
145
|
+
.rp-button__loading[data-v-5d5bd5fa] {
|
|
142
146
|
display: inline-flex;
|
|
143
147
|
align-items: center;
|
|
144
148
|
justify-content: center;
|
|
@@ -147,49 +151,49 @@
|
|
|
147
151
|
left: 50%;
|
|
148
152
|
translate: -50% -50%;
|
|
149
153
|
}
|
|
150
|
-
.rp-button__spinner[data-v-
|
|
154
|
+
.rp-button__spinner[data-v-5d5bd5fa] {
|
|
151
155
|
display: block;
|
|
152
156
|
width: 1em;
|
|
153
157
|
height: 1em;
|
|
154
158
|
flex-shrink: 0;
|
|
155
159
|
transform-origin: center;
|
|
156
|
-
animation: rp-spinner-spin-
|
|
160
|
+
animation: rp-spinner-spin-5d5bd5fa 700ms linear infinite;
|
|
157
161
|
}
|
|
158
|
-
@keyframes rp-spinner-spin-
|
|
162
|
+
@keyframes rp-spinner-spin-5d5bd5fa {
|
|
159
163
|
to {
|
|
160
164
|
transform: rotate(360deg);
|
|
161
165
|
}
|
|
162
166
|
}
|
|
163
167
|
}@layer ropav.components {
|
|
164
|
-
.rp-icon-button[data-v-
|
|
168
|
+
.rp-icon-button[data-v-5d5bd5fa] {
|
|
165
169
|
width: var(--_rp-button-height);
|
|
166
170
|
padding: 0;
|
|
167
171
|
}
|
|
168
|
-
.rp-icon-button__icon[data-v-
|
|
172
|
+
.rp-icon-button__icon[data-v-5d5bd5fa] {
|
|
169
173
|
width: 1em;
|
|
170
174
|
height: 1em;
|
|
171
175
|
flex-shrink: 0;
|
|
172
176
|
}
|
|
173
|
-
.rp-icon-button__icon[data-v-
|
|
177
|
+
.rp-icon-button__icon[data-v-5d5bd5fa] {
|
|
174
178
|
display: inline-flex;
|
|
175
179
|
align-items: center;
|
|
176
180
|
justify-content: center;
|
|
177
181
|
line-height: 0;
|
|
178
182
|
}
|
|
179
|
-
.rp-icon-button__icon[data-v-
|
|
183
|
+
.rp-icon-button__icon[data-v-5d5bd5fa] > svg {
|
|
180
184
|
display: block;
|
|
181
185
|
width: 1em;
|
|
182
186
|
height: 1em;
|
|
183
187
|
}
|
|
184
|
-
.rp-icon-button__spinner[data-v-
|
|
188
|
+
.rp-icon-button__spinner[data-v-5d5bd5fa] {
|
|
185
189
|
display: block;
|
|
186
190
|
width: 1em;
|
|
187
191
|
height: 1em;
|
|
188
192
|
flex-shrink: 0;
|
|
189
193
|
transform-origin: center;
|
|
190
|
-
animation: rp-spinner-spin-
|
|
194
|
+
animation: rp-spinner-spin-5d5bd5fa 700ms linear infinite;
|
|
191
195
|
}
|
|
192
|
-
@keyframes rp-spinner-spin-
|
|
196
|
+
@keyframes rp-spinner-spin-5d5bd5fa {
|
|
193
197
|
to {
|
|
194
198
|
transform: rotate(360deg);
|
|
195
199
|
}
|