ropav 0.0.12 → 0.1.1

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.
Files changed (37) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -1
  3. package/dist/card.css +26 -26
  4. package/dist/card.js +6 -16
  5. package/dist/components/card/types.d.ts +0 -3
  6. package/dist/components/dialog/types.d.ts +1 -0
  7. package/dist/components/dropdown-menu/types.d.ts +5 -7
  8. package/dist/components/dropdown-menu/useDropdownMenuRenderItems.d.ts +2 -0
  9. package/dist/components/floating/index.d.ts +1 -1
  10. package/dist/components/floating/types.d.ts +11 -0
  11. package/dist/components/modal/types.d.ts +1 -0
  12. package/dist/components/overlay/index.d.ts +3 -0
  13. package/dist/components/overlay/index.js +3 -2
  14. package/dist/components/overlay/overlay-layer-provider.d.ts +21 -0
  15. package/dist/components/overlay/types.d.ts +10 -1
  16. package/dist/components/overlay/useOverlayZIndex.d.ts +4 -0
  17. package/dist/components/popover/types.d.ts +1 -0
  18. package/dist/components/toast/types.d.ts +1 -0
  19. package/dist/components/tooltip/types.d.ts +1 -0
  20. package/dist/composables/useOverlayLayer.d.ts +1 -1
  21. package/dist/dialog.js +7 -2
  22. package/dist/dropdown-menu.js +34 -23
  23. package/dist/index.js +3 -2
  24. package/dist/modal.css +28 -28
  25. package/dist/modal.js +5 -3
  26. package/dist/overlay2.js +16 -1
  27. package/dist/popover.js +11 -2
  28. package/dist/toast.css +21 -21
  29. package/dist/toast.js +10 -2
  30. package/dist/tooltip.js +12 -1
  31. package/dist/useFloatingPosition.js +16 -2
  32. package/dist/{useOverlayLayer.js → useOverlayZIndex.js} +29 -4
  33. package/docs/public-floating-api.md +24 -13
  34. package/docs/public-overlay-layer-api.md +65 -0
  35. package/docs/public-styles-api.md +1 -5
  36. package/package.json +38 -41
  37. package/dist/legacy-unlayered.css +0 -5382
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ import { n as color_input_default, t as colorInputParts } from "./color-input.js
14
14
  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
+ import { n as useOverlayZIndex } from "./useOverlayZIndex.js";
17
18
  import { t as useFocusTrap } from "./useFocusTrap.js";
18
19
  import { n as useFloatingPosition } from "./useFloatingPosition.js";
19
20
  import { r as useTeleportTarget } from "./useTeleportTarget.js";
@@ -31,7 +32,7 @@ import { t as inputParts } from "./input2.js";
31
32
  import { t as overlay_default } from "./overlay.js";
32
33
  import { n as modal_default, t as modalParts } from "./modal.js";
33
34
  import { n as number_input_default, t as numberInputParts } from "./number-input.js";
34
- import { t as overlayParts } from "./overlay2.js";
35
+ import { n as overlay_layer_provider_default, t as overlayParts } from "./overlay2.js";
35
36
  import { n as popoverPlacements, t as popoverParts } from "./popover2.js";
36
37
  import { a as progress_default, i as progressSizes, n as progressParts, r as progressRadiuses, t as progressColors } from "./progress.js";
37
38
  import { i as radioParts, n as radio_default, r as radioGroupParts, t as radio_group_default } from "./radio.js";
@@ -44,4 +45,4 @@ import { t as teleport_provider_default } from "./teleport-provider.js";
44
45
  import { n as textarea_default, t as textareaParts } from "./textarea.js";
45
46
  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";
46
47
  import { t as tooltipParts } from "./tooltip2.js";
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 };
48
+ 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, overlay_layer_provider_default as OverlayLayerProvider, 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, useOverlayZIndex, useTabs, useTabsContent, useTabsList, useTabsTrigger, useTeleportTarget, useToast, useToastState };
package/dist/modal.css CHANGED
@@ -1,5 +1,5 @@
1
1
  @layer ropav.components {
2
- .rp-modal[data-v-1a627831] {
2
+ .rp-modal[data-v-04a5d994] {
3
3
  --_rp-modal-width: 32rem;
4
4
  --_rp-modal-max-height: calc(100vh - var(--rp-spacing-12));
5
5
  --_rp-modal-radius: var(--rp-radius-sm);
@@ -13,25 +13,25 @@
13
13
  overflow: auto;
14
14
  font-family: var(--rp-font-family);
15
15
  }
16
- .rp-modal--size-sm[data-v-1a627831] {
16
+ .rp-modal--size-sm[data-v-04a5d994] {
17
17
  --_rp-modal-width: 22rem;
18
18
  }
19
- .rp-modal--size-lg[data-v-1a627831] {
19
+ .rp-modal--size-lg[data-v-04a5d994] {
20
20
  --_rp-modal-width: 45rem;
21
21
  }
22
- .rp-modal--size-xl[data-v-1a627831] {
22
+ .rp-modal--size-xl[data-v-04a5d994] {
23
23
  --_rp-modal-width: 58rem;
24
24
  }
25
- .rp-modal--size-full[data-v-1a627831] {
25
+ .rp-modal--size-full[data-v-04a5d994] {
26
26
  --_rp-modal-width: 100vw;
27
27
  --_rp-modal-max-height: 100vh;
28
28
  --_rp-modal-radius: var(--rp-radius-none);
29
29
  padding: 0;
30
30
  }
31
- .rp-modal__overlay[data-v-1a627831] {
31
+ .rp-modal__overlay[data-v-04a5d994] {
32
32
  border-radius: 0;
33
33
  }
34
- .rp-modal__panel[data-v-1a627831] {
34
+ .rp-modal__panel[data-v-04a5d994] {
35
35
  position: relative;
36
36
  z-index: 1;
37
37
  box-sizing: border-box;
@@ -47,39 +47,39 @@
47
47
  box-shadow: var(--rp-shadow-lg);
48
48
  outline: none;
49
49
  }
50
- .rp-modal--size-full .rp-modal__panel[data-v-1a627831] {
50
+ .rp-modal--size-full .rp-modal__panel[data-v-04a5d994] {
51
51
  min-height: 100vh;
52
52
  border: 0;
53
53
  }
54
- .rp-modal__header[data-v-1a627831] {
54
+ .rp-modal__header[data-v-04a5d994] {
55
55
  box-sizing: border-box;
56
56
  padding: var(--rp-spacing-5) calc(var(--rp-spacing-6) + var(--rp-size-control-sm)) var(--rp-spacing-4) var(--rp-spacing-5);
57
57
  border-bottom: var(--rp-border-width-thin) solid var(--rp-color-default-border);
58
58
  }
59
- .rp-modal__heading[data-v-1a627831] {
59
+ .rp-modal__heading[data-v-04a5d994] {
60
60
  display: grid;
61
61
  gap: var(--rp-spacing-1);
62
62
  }
63
- .rp-modal__title[data-v-1a627831] {
63
+ .rp-modal__title[data-v-04a5d994] {
64
64
  margin: 0;
65
65
  color: var(--rp-color-text);
66
66
  font-size: var(--rp-font-size-xl);
67
67
  font-weight: var(--rp-font-weight-semibold);
68
68
  line-height: var(--rp-line-height-xs);
69
69
  }
70
- .rp-modal__description[data-v-1a627831] {
70
+ .rp-modal__description[data-v-04a5d994] {
71
71
  margin: 0;
72
72
  color: var(--rp-color-dimmed);
73
73
  font-size: var(--rp-font-size-sm);
74
74
  line-height: var(--rp-line-height-md);
75
75
  }
76
- .rp-modal__close[data-v-1a627831] {
76
+ .rp-modal__close[data-v-04a5d994] {
77
77
  position: absolute;
78
78
  top: var(--rp-spacing-3);
79
79
  right: var(--rp-spacing-3);
80
80
  z-index: 1;
81
81
  }
82
- .rp-modal__body[data-v-1a627831] {
82
+ .rp-modal__body[data-v-04a5d994] {
83
83
  box-sizing: border-box;
84
84
  flex: 1 1 auto;
85
85
  min-height: 0;
@@ -89,10 +89,10 @@
89
89
  font-size: var(--rp-font-size-md);
90
90
  line-height: var(--rp-line-height-md);
91
91
  }
92
- .rp-modal--closable.rp-modal--headerless .rp-modal__body[data-v-1a627831] {
92
+ .rp-modal--closable.rp-modal--headerless .rp-modal__body[data-v-04a5d994] {
93
93
  padding-right: calc(var(--rp-spacing-6) + var(--rp-size-control-sm));
94
94
  }
95
- .rp-modal__footer[data-v-1a627831] {
95
+ .rp-modal__footer[data-v-04a5d994] {
96
96
  box-sizing: border-box;
97
97
  display: flex;
98
98
  flex: 0 0 auto;
@@ -102,34 +102,34 @@
102
102
  padding: var(--rp-spacing-4) var(--rp-spacing-5);
103
103
  border-top: var(--rp-border-width-thin) solid var(--rp-color-default-border);
104
104
  }
105
- .rp-modal-enter-active[data-v-1a627831],
106
- .rp-modal-leave-active[data-v-1a627831] {
105
+ .rp-modal-enter-active[data-v-04a5d994],
106
+ .rp-modal-leave-active[data-v-04a5d994] {
107
107
  transition: opacity var(--rp-transition-fast);
108
108
  }
109
- .rp-modal-enter-active .rp-modal__panel[data-v-1a627831],
110
- .rp-modal-leave-active .rp-modal__panel[data-v-1a627831] {
109
+ .rp-modal-enter-active .rp-modal__panel[data-v-04a5d994],
110
+ .rp-modal-leave-active .rp-modal__panel[data-v-04a5d994] {
111
111
  transition: opacity var(--rp-transition-fast), transform var(--rp-transition-fast);
112
112
  }
113
- .rp-modal-enter-from[data-v-1a627831],
114
- .rp-modal-leave-to[data-v-1a627831] {
113
+ .rp-modal-enter-from[data-v-04a5d994],
114
+ .rp-modal-leave-to[data-v-04a5d994] {
115
115
  opacity: 0;
116
116
  }
117
- .rp-modal-enter-from .rp-modal__panel[data-v-1a627831],
118
- .rp-modal-leave-to .rp-modal__panel[data-v-1a627831] {
117
+ .rp-modal-enter-from .rp-modal__panel[data-v-04a5d994],
118
+ .rp-modal-leave-to .rp-modal__panel[data-v-04a5d994] {
119
119
  opacity: 0;
120
120
  transform: translateY(var(--rp-spacing-2)) scale(0.98);
121
121
  }
122
122
  @media (max-width: 480px) {
123
- .rp-modal[data-v-1a627831] {
123
+ .rp-modal[data-v-04a5d994] {
124
124
  padding: var(--rp-spacing-3);
125
125
  }
126
- .rp-modal__header[data-v-1a627831] {
126
+ .rp-modal__header[data-v-04a5d994] {
127
127
  padding-left: var(--rp-spacing-4);
128
128
  }
129
- .rp-modal__body[data-v-1a627831] {
129
+ .rp-modal__body[data-v-04a5d994] {
130
130
  padding: var(--rp-spacing-4);
131
131
  }
132
- .rp-modal__footer[data-v-1a627831] {
132
+ .rp-modal__footer[data-v-04a5d994] {
133
133
  padding: var(--rp-spacing-4);
134
134
  }
135
135
  }
package/dist/modal.js CHANGED
@@ -106,8 +106,8 @@ function useModal(props, emit = {}) {
106
106
  //#endregion
107
107
  //#region src/components/modal/modal.vue?vue&type=script&setup=true&vapor=true&lang.ts
108
108
  var t0 = template(" ");
109
- var t1 = template("<div data-v-1a627831 class=rp-modal__heading>");
110
- var t2 = template("<div data-v-1a627831>");
109
+ var t1 = template("<div data-v-04a5d994 class=rp-modal__heading>");
110
+ var t2 = template("<div data-v-04a5d994>");
111
111
  //#endregion
112
112
  //#region src/components/modal/modal.vue
113
113
  var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -120,6 +120,7 @@ var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
120
120
  type: Boolean,
121
121
  default: void 0
122
122
  },
123
+ baseZIndex: {},
123
124
  title: { default: "" },
124
125
  description: { default: "" },
125
126
  ariaLabel: { default: "" },
@@ -196,6 +197,7 @@ var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
196
197
  const closeStyles = computed(() => ({ root: props.styles?.close }));
197
198
  return createComponent(unref(dialog_root_default), {
198
199
  open: () => unref(isOpen),
200
+ "base-z-index": () => __props.baseZIndex,
199
201
  modal: () => __props.modal,
200
202
  "close-on-escape": () => __props.closeOnEscape,
201
203
  "close-on-outside-click": () => __props.closeOnOverlayClick,
@@ -310,7 +312,7 @@ var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
310
312
  });
311
313
  }, true);
312
314
  }
313
- }), [["__scopeId", "data-v-1a627831"]]);
315
+ }), [["__scopeId", "data-v-04a5d994"]]);
314
316
  //#endregion
315
317
  //#region src/components/modal/types.ts
316
318
  var modalParts = [
package/dist/overlay2.js CHANGED
@@ -1,4 +1,19 @@
1
+ import { t as provideOverlayZIndex } from "./useOverlayZIndex.js";
2
+ import { createSlot, defineVaporComponent } from "vue";
3
+ //#endregion
4
+ //#region src/components/overlay/overlay-layer-provider.vue
5
+ var overlay_layer_provider_default = /* @__PURE__ */ defineVaporComponent({
6
+ name: "RpOverlayLayerProvider",
7
+ __name: "overlay-layer-provider",
8
+ props: { baseZIndex: {} },
9
+ setup(__props) {
10
+ const props = __props;
11
+ provideOverlayZIndex(() => props.baseZIndex);
12
+ return createSlot();
13
+ }
14
+ });
15
+ //#endregion
1
16
  //#region src/components/overlay/types.ts
2
17
  var overlayParts = ["root"];
3
18
  //#endregion
4
- export { overlayParts as t };
19
+ export { overlay_layer_provider_default as n, overlayParts as t };
package/dist/popover.js CHANGED
@@ -2,7 +2,7 @@ import './popover.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 { t as useOverlayLayer } from "./useOverlayLayer.js";
5
+ import { n as useOverlayZIndex, r as useOverlayLayer } from "./useOverlayZIndex.js";
6
6
  import { t as useFocusTrap } from "./useFocusTrap.js";
7
7
  import { n as useFloatingPosition, r as useFloatingTarget, t as isElementReference } from "./useFloatingPosition.js";
8
8
  import { n as useTeleportPositioningKey, r as useTeleportTarget } from "./useTeleportTarget.js";
@@ -70,7 +70,11 @@ function usePopover(props, emitOpenChange) {
70
70
  const layer = useOverlayLayer({
71
71
  active: isVisible,
72
72
  element: contentRef,
73
- baseZIndex: 100
73
+ baseZIndex: useOverlayZIndex({
74
+ baseZIndex: () => props.baseZIndex,
75
+ defaultBaseZIndex: 100,
76
+ aboveParent: false
77
+ })
74
78
  });
75
79
  const shouldRenderContent = computed(() => !isDisabled.value && (Boolean(props.keepMounted) || isVisible.value));
76
80
  const shouldShowContent = computed(() => !props.keepMounted || isVisible.value);
@@ -96,8 +100,10 @@ function usePopover(props, emitOpenChange) {
96
100
  strategy: () => props.strategy ?? "absolute",
97
101
  offset: () => props.offset,
98
102
  flip: () => props.flip !== false,
103
+ flipOptions: () => props.flipOptions,
99
104
  shift: () => props.shift !== false,
100
105
  collisionPadding: () => props.collisionPadding ?? 8,
106
+ autoUpdateOptions: () => props.autoUpdateOptions,
101
107
  restartKey: () => [
102
108
  Boolean(props.teleport),
103
109
  teleportTo.value,
@@ -301,6 +307,7 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
301
307
  __name: "popover",
302
308
  props: {
303
309
  id: {},
310
+ baseZIndex: {},
304
311
  contentClass: {},
305
312
  open: {
306
313
  type: Boolean,
@@ -344,11 +351,13 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
344
351
  type: Boolean,
345
352
  default: true
346
353
  },
354
+ flipOptions: {},
347
355
  shift: {
348
356
  type: Boolean,
349
357
  default: true
350
358
  },
351
359
  collisionPadding: { default: 8 },
360
+ autoUpdateOptions: {},
352
361
  arrow: {
353
362
  type: Boolean,
354
363
  default: false
package/dist/toast.css CHANGED
@@ -132,7 +132,7 @@
132
132
  }
133
133
  }
134
134
  }@layer ropav.components {
135
- .rp-toast-viewport[data-v-e14bb4e0] {
135
+ .rp-toast-viewport[data-v-480d3e51] {
136
136
  --_rp-toast-viewport-shift-x: 0;
137
137
  --_rp-toast-viewport-shift-y: calc(var(--rp-spacing-3) * -1);
138
138
  position: fixed;
@@ -150,58 +150,58 @@
150
150
  list-style: none;
151
151
  pointer-events: none;
152
152
  }
153
- .rp-toast-viewport--top-left[data-v-e14bb4e0] {
153
+ .rp-toast-viewport--top-left[data-v-480d3e51] {
154
154
  --_rp-toast-viewport-shift-x: calc(var(--rp-spacing-3) * -1);
155
155
  --_rp-toast-viewport-shift-y: 0;
156
156
  top: 0;
157
157
  left: 0;
158
158
  }
159
- .rp-toast-viewport--top-center[data-v-e14bb4e0] {
159
+ .rp-toast-viewport--top-center[data-v-480d3e51] {
160
160
  top: 0;
161
161
  left: 50%;
162
162
  transform: translateX(-50%);
163
163
  }
164
- .rp-toast-viewport--top-right[data-v-e14bb4e0] {
164
+ .rp-toast-viewport--top-right[data-v-480d3e51] {
165
165
  --_rp-toast-viewport-shift-x: var(--rp-spacing-3);
166
166
  --_rp-toast-viewport-shift-y: 0;
167
167
  top: 0;
168
168
  right: 0;
169
169
  }
170
- .rp-toast-viewport--bottom-left[data-v-e14bb4e0] {
170
+ .rp-toast-viewport--bottom-left[data-v-480d3e51] {
171
171
  --_rp-toast-viewport-shift-x: calc(var(--rp-spacing-3) * -1);
172
172
  --_rp-toast-viewport-shift-y: 0;
173
173
  bottom: 0;
174
174
  left: 0;
175
175
  }
176
- .rp-toast-viewport--bottom-center[data-v-e14bb4e0] {
176
+ .rp-toast-viewport--bottom-center[data-v-480d3e51] {
177
177
  --_rp-toast-viewport-shift-y: var(--rp-spacing-3);
178
178
  bottom: 0;
179
179
  left: 50%;
180
180
  transform: translateX(-50%);
181
181
  }
182
- .rp-toast-viewport--bottom-right[data-v-e14bb4e0] {
182
+ .rp-toast-viewport--bottom-right[data-v-480d3e51] {
183
183
  --_rp-toast-viewport-shift-x: var(--rp-spacing-3);
184
184
  --_rp-toast-viewport-shift-y: 0;
185
185
  right: 0;
186
186
  bottom: 0;
187
187
  }
188
- .rp-toast-viewport__item[data-v-e14bb4e0] {
188
+ .rp-toast-viewport__item[data-v-480d3e51] {
189
189
  display: flex;
190
190
  width: 100%;
191
191
  flex: 0 0 auto;
192
192
  pointer-events: auto;
193
193
  }
194
- .rp-toast-viewport__item[data-v-e14bb4e0] .rp-toast {
194
+ .rp-toast-viewport__item[data-v-480d3e51] .rp-toast {
195
195
  width: 100%;
196
196
  }
197
- .rp-toast-viewport-item-enter-active[data-v-e14bb4e0],
198
- .rp-toast-viewport-item-leave-active[data-v-e14bb4e0] {
197
+ .rp-toast-viewport-item-enter-active[data-v-480d3e51],
198
+ .rp-toast-viewport-item-leave-active[data-v-480d3e51] {
199
199
  will-change: opacity, transform;
200
200
  }
201
- .rp-toast-viewport-item-enter-active[data-v-e14bb4e0] {
201
+ .rp-toast-viewport-item-enter-active[data-v-480d3e51] {
202
202
  transition: opacity 180ms ease-out, transform 240ms cubic-bezier(0.16, 1, 0.3, 1);
203
203
  }
204
- .rp-toast-viewport-item-leave-active[data-v-e14bb4e0] {
204
+ .rp-toast-viewport-item-leave-active[data-v-480d3e51] {
205
205
  position: absolute;
206
206
  right: var(--rp-spacing-4);
207
207
  left: var(--rp-spacing-4);
@@ -209,27 +209,27 @@
209
209
  pointer-events: none;
210
210
  transition: opacity 120ms ease-in, transform 180ms cubic-bezier(0.4, 0, 1, 1);
211
211
  }
212
- .rp-toast-viewport--empty .rp-toast-viewport-item-leave-active[data-v-e14bb4e0] {
212
+ .rp-toast-viewport--empty .rp-toast-viewport-item-leave-active[data-v-480d3e51] {
213
213
  position: relative;
214
214
  right: auto;
215
215
  left: auto;
216
216
  width: 100%;
217
217
  }
218
- .rp-toast-viewport-item-move[data-v-e14bb4e0] {
218
+ .rp-toast-viewport-item-move[data-v-480d3e51] {
219
219
  transition: transform 240ms cubic-bezier(0.16, 1, 0.3, 1);
220
220
  }
221
- .rp-toast-viewport-item-enter-from[data-v-e14bb4e0],
222
- .rp-toast-viewport-item-leave-to[data-v-e14bb4e0] {
221
+ .rp-toast-viewport-item-enter-from[data-v-480d3e51],
222
+ .rp-toast-viewport-item-leave-to[data-v-480d3e51] {
223
223
  opacity: 0;
224
224
  transform: translate3d(var(--_rp-toast-viewport-shift-x), var(--_rp-toast-viewport-shift-y), 0) scale(0.98);
225
225
  }
226
226
  @media (prefers-reduced-motion: reduce) {
227
- .rp-toast-viewport[data-v-e14bb4e0] {
227
+ .rp-toast-viewport[data-v-480d3e51] {
228
228
  scroll-behavior: auto;
229
229
  }
230
- .rp-toast-viewport-item-enter-active[data-v-e14bb4e0],
231
- .rp-toast-viewport-item-leave-active[data-v-e14bb4e0],
232
- .rp-toast-viewport-item-move[data-v-e14bb4e0] {
230
+ .rp-toast-viewport-item-enter-active[data-v-480d3e51],
231
+ .rp-toast-viewport-item-leave-active[data-v-480d3e51],
232
+ .rp-toast-viewport-item-move[data-v-480d3e51] {
233
233
  transition: none;
234
234
  }
235
235
  }
package/dist/toast.js CHANGED
@@ -4,6 +4,7 @@ import { t as bem } from "./bem.js";
4
4
  import { n as useStylesApi } from "./styles-api.js";
5
5
  import { i as getComponentVariantColorRoles, t as componentColors } from "./componentColors.js";
6
6
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
7
+ import { n as useOverlayZIndex } from "./useOverlayZIndex.js";
7
8
  import { r as useTeleportTarget } from "./useTeleportTarget.js";
8
9
  import { VaporTeleport, VaporTransition, VaporTransitionGroup, computed, createComponent, createFor, createIf, createInvoker, createSlot, defineVaporComponent, delegateEvents, extend, inject, nextTick, onBeforeUnmount, onMounted, provide, ref, renderEffect, setDynamicProps, setInsertionState, setText, template, toDisplayString, toValue, txt, unref, useSlots, watch } from "vue";
9
10
  //#region src/components/toast/defaults.ts
@@ -583,7 +584,7 @@ var toast_provider_default = /* @__PURE__ */ defineVaporComponent({
583
584
  });
584
585
  //#endregion
585
586
  //#region src/components/toast/toast-viewport.vue?vue&type=script&setup=true&vapor=true&lang.ts
586
- var t0 = template("<li data-v-e14bb4e0>");
587
+ var t0 = template("<li data-v-480d3e51>");
587
588
  //#endregion
588
589
  //#region src/components/toast/toast-viewport.vue
589
590
  var toast_viewport_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -593,6 +594,7 @@ var toast_viewport_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
593
594
  props: {
594
595
  position: { default: "top-right" },
595
596
  label: { default: "Notifications" },
597
+ baseZIndex: {},
596
598
  teleport: {
597
599
  type: Boolean,
598
600
  default: true
@@ -604,6 +606,11 @@ var toast_viewport_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
604
606
  setup(__props, { slots: $slots }) {
605
607
  const props = __props;
606
608
  const resolvedTeleportTo = useTeleportTarget(() => props.teleportTo);
609
+ const zIndex = useOverlayZIndex({
610
+ baseZIndex: () => props.baseZIndex,
611
+ defaultBaseZIndex: 1e3,
612
+ offset: 1
613
+ });
607
614
  const context = useToastContext("<ToastViewport>");
608
615
  function reverseToasts(toasts) {
609
616
  return toasts.map((_, index) => toasts[toasts.length - index - 1]);
@@ -616,6 +623,7 @@ var toast_viewport_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
616
623
  `rp-toast-viewport--${props.position}`,
617
624
  { "rp-toast-viewport--empty": orderedToasts.value.length === 0 }
618
625
  ],
626
+ style: { zIndex: zIndex.value },
619
627
  "data-position": props.position,
620
628
  "aria-label": props.label
621
629
  }));
@@ -689,7 +697,7 @@ var toast_viewport_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
689
697
  }, { _: 8 }));
690
698
  }, true);
691
699
  }
692
- }), [["__scopeId", "data-v-e14bb4e0"]]);
700
+ }), [["__scopeId", "data-v-480d3e51"]]);
693
701
  //#endregion
694
702
  //#region src/components/toast/useToastState.ts
695
703
  function optionValue(value) {
package/dist/tooltip.js CHANGED
@@ -3,6 +3,7 @@ import { t as bem } from "./bem.js";
3
3
  import { n as useStylesApi, t as presence } from "./styles-api.js";
4
4
  import { i as getComponentVariantColorRoles } from "./componentColors.js";
5
5
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
6
+ import { n as useOverlayZIndex } from "./useOverlayZIndex.js";
6
7
  import { n as useFloatingPosition, r as useFloatingTarget, t as isElementReference } from "./useFloatingPosition.js";
7
8
  import { n as useTeleportPositioningKey, r as useTeleportTarget } from "./useTeleportTarget.js";
8
9
  import { VaporTeleport, VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, createTemplateRefSetter, defineVaporComponent, extend, onBeforeUnmount, ref, renderEffect, setAttr, setDynamicProps, setInsertionState, setStaticTemplateRef, setStyle, setText, template, toDisplayString, unref, useId, useSlots, watch } from "vue";
@@ -95,6 +96,10 @@ function useTooltip(props, emitOpenChange) {
95
96
  const teleportPositioningKey = useTeleportPositioningKey();
96
97
  const { isExplicitTarget, reference, resolvedTarget } = useFloatingTarget(() => props.target, rootRef);
97
98
  const targetElement = computed(() => isElementReference(resolvedTarget.value) ? resolvedTarget.value : null);
99
+ const zIndex = useOverlayZIndex({
100
+ baseZIndex: () => props.baseZIndex,
101
+ defaultBaseZIndex: 1e3
102
+ });
98
103
  const { isOpen, open, closeImmediate } = useDelayedOpen({
99
104
  open: () => props.open,
100
105
  openDelay: () => props.openDelay ?? 300,
@@ -111,8 +116,10 @@ function useTooltip(props, emitOpenChange) {
111
116
  strategy: () => props.strategy ?? "absolute",
112
117
  offset: () => props.offset,
113
118
  flip: () => props.flip !== false,
119
+ flipOptions: () => props.flipOptions,
114
120
  shift: () => props.shift !== false,
115
121
  collisionPadding: () => props.collisionPadding ?? 8,
122
+ autoUpdateOptions: () => props.autoUpdateOptions,
116
123
  restartKey: () => [
117
124
  Boolean(props.teleport),
118
125
  teleportTo.value,
@@ -133,7 +140,8 @@ function useTooltip(props, emitOpenChange) {
133
140
  const contentStyle = computed(() => ({
134
141
  ...floating.floatingStyle.value,
135
142
  ...resolveTooltipOffsetStyle(props.offset),
136
- ...resolveTooltipColorStyleWithContrast(props.color, props.autoContrast)
143
+ ...resolveTooltipColorStyleWithContrast(props.color, props.autoContrast),
144
+ zIndex: zIndex.value
137
145
  }));
138
146
  function openTooltip() {
139
147
  open();
@@ -216,6 +224,7 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
216
224
  __name: "tooltip",
217
225
  props: {
218
226
  id: {},
227
+ baseZIndex: {},
219
228
  content: { default: "" },
220
229
  color: {},
221
230
  autoContrast: { type: Boolean },
@@ -240,11 +249,13 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
240
249
  type: Boolean,
241
250
  default: true
242
251
  },
252
+ flipOptions: {},
243
253
  shift: {
244
254
  type: Boolean,
245
255
  default: true
246
256
  },
247
257
  collisionPadding: { default: 8 },
258
+ autoUpdateOptions: {},
248
259
  arrow: {
249
260
  type: Boolean,
250
261
  default: false
@@ -1213,12 +1213,18 @@ function useFloatingPosition(options) {
1213
1213
  function getFlip() {
1214
1214
  return toValue(options.flip) !== false;
1215
1215
  }
1216
+ function getFlipFallbackStrategy() {
1217
+ return toValue(options.flipOptions)?.fallbackStrategy;
1218
+ }
1216
1219
  function getShift() {
1217
1220
  return toValue(options.shift) !== false;
1218
1221
  }
1219
1222
  function getCollisionPadding() {
1220
1223
  return toValue(options.collisionPadding) ?? DEFAULT_COLLISION_PADDING;
1221
1224
  }
1225
+ function getAutoUpdateAnimationFrame() {
1226
+ return toValue(options.autoUpdateOptions)?.animationFrame;
1227
+ }
1222
1228
  function getHiddenStyle() {
1223
1229
  return {
1224
1230
  position: getStrategy(),
@@ -1242,7 +1248,11 @@ function useFloatingPosition(options) {
1242
1248
  function getMiddleware() {
1243
1249
  const middleware = [offset(getOffset())];
1244
1250
  const padding = getCollisionPadding();
1245
- if (getFlip()) middleware.push(flip({ padding }));
1251
+ const fallbackStrategy = getFlipFallbackStrategy();
1252
+ if (getFlip()) middleware.push(flip({
1253
+ padding,
1254
+ ...fallbackStrategy == null ? {} : { fallbackStrategy }
1255
+ }));
1246
1256
  if (getShift()) middleware.push(shift({ padding }));
1247
1257
  const arrow$2 = getArrow();
1248
1258
  if (arrow$2) middleware.push(arrow({
@@ -1285,7 +1295,9 @@ function useFloatingPosition(options) {
1285
1295
  const reference = getReference();
1286
1296
  const floating = getFloating();
1287
1297
  if (currentGeneration !== generation || !reference || !floating || !getOpen()) return;
1288
- cleanup = autoUpdate(reference, floating, () => void update());
1298
+ const updatePosition = () => void update();
1299
+ const animationFrame = getAutoUpdateAnimationFrame();
1300
+ cleanup = animationFrame == null ? autoUpdate(reference, floating, updatePosition) : autoUpdate(reference, floating, updatePosition, { animationFrame });
1289
1301
  });
1290
1302
  }
1291
1303
  watch([
@@ -1297,8 +1309,10 @@ function useFloatingPosition(options) {
1297
1309
  getStrategy,
1298
1310
  getOffset,
1299
1311
  getFlip,
1312
+ getFlipFallbackStrategy,
1300
1313
  getShift,
1301
1314
  getCollisionPadding,
1315
+ getAutoUpdateAnimationFrame,
1302
1316
  () => toValue(options.restartKey)
1303
1317
  ], start, {
1304
1318
  flush: "post",
@@ -33,7 +33,7 @@ function syncLayerZIndices(state) {
33
33
  for (const layer of state.layers) {
34
34
  const metadata = layerMetadata.get(layer);
35
35
  if (!metadata) continue;
36
- const zIndex = Math.max(metadata.baseZIndex, highestZIndex + 2);
36
+ const zIndex = Math.max(metadata.baseZIndex.value, highestZIndex + 2);
37
37
  metadata.setZIndex(zIndex);
38
38
  highestZIndex = zIndex;
39
39
  }
@@ -142,7 +142,8 @@ function useOverlayLayer(options) {
142
142
  const branchSet = /* @__PURE__ */ new Set();
143
143
  const focusBranchSet = /* @__PURE__ */ new Set();
144
144
  const insideBranchSet = /* @__PURE__ */ new Set();
145
- const zIndex = ref(options.baseZIndex ?? 100);
145
+ const baseZIndex = computed(() => toValue(options.baseZIndex ?? 100));
146
+ const zIndex = ref(baseZIndex.value);
146
147
  let registeredDocument = null;
147
148
  let registeredElement = null;
148
149
  let parentBranchCleanup;
@@ -194,7 +195,7 @@ function useOverlayLayer(options) {
194
195
  registerBranch
195
196
  };
196
197
  layerMetadata.set(context, {
197
- baseZIndex: options.baseZIndex ?? 100,
198
+ baseZIndex,
198
199
  parent,
199
200
  setZIndex(value) {
200
201
  zIndex.value = value;
@@ -241,6 +242,10 @@ function useOverlayLayer(options) {
241
242
  watch([modal, preventScroll], () => {
242
243
  if (registeredDocument) syncModalEffects(registeredDocument, getState(registeredDocument));
243
244
  });
245
+ watch(baseZIndex, (value) => {
246
+ if (registeredDocument) syncLayerZIndices(getState(registeredDocument));
247
+ else zIndex.value = value;
248
+ });
244
249
  onBeforeUnmount(unregister);
245
250
  provide(overlayLayerKey, context);
246
251
  return context;
@@ -258,5 +263,25 @@ function useOverlayLayerBranch(element, options = {}) {
258
263
  onBeforeUnmount(() => cleanup?.());
259
264
  return layer;
260
265
  }
266
+ function useParentOverlayLayer() {
267
+ return inject(overlayLayerKey, null);
268
+ }
269
+ //#endregion
270
+ //#region src/components/overlay/useOverlayZIndex.ts
271
+ var overlayZIndexKey = Symbol("overlay-z-index");
272
+ function provideOverlayZIndex(baseZIndex) {
273
+ const resolvedBaseZIndex = computed(() => toValue(baseZIndex));
274
+ provide(overlayZIndexKey, { baseZIndex: resolvedBaseZIndex });
275
+ return resolvedBaseZIndex;
276
+ }
277
+ function useOverlayZIndex(options = {}) {
278
+ const provided = inject(overlayZIndexKey, null);
279
+ const parentLayer = useParentOverlayLayer();
280
+ return computed(() => {
281
+ const resolvedZIndex = (toValue(options.baseZIndex) ?? provided?.baseZIndex.value ?? options.defaultBaseZIndex ?? 1e3) + (toValue(options.offset) ?? 0);
282
+ if (toValue(options.aboveParent) === false || !parentLayer) return resolvedZIndex;
283
+ return Math.max(resolvedZIndex, parentLayer.zIndex.value + 1);
284
+ });
285
+ }
261
286
  //#endregion
262
- export { useOverlayLayerBranch as n, useOverlayLayer as t };
287
+ export { useOverlayLayerBranch as i, useOverlayZIndex as n, useOverlayLayer as r, provideOverlayZIndex as t };