@witchcraft/ui 0.4.0-beta.5 → 0.4.0-beta.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/dist/module.json +1 -1
- package/dist/runtime/components/WCheckbox/WCheckbox.vue +1 -0
- package/dist/runtime/components/WColorPicker/WColorPicker.vue +1 -0
- package/dist/runtime/components/WCombobox/WCombobox.vue +4 -2
- package/dist/runtime/components/WDatePicker/WRangeDatePicker.vue +5 -0
- package/dist/runtime/components/WDatePicker/WSingleDatePicker.vue +5 -0
- package/dist/runtime/components/WDebug/WDebug.vue +1 -0
- package/dist/runtime/components/WFileInput/WFileInput.vue +3 -0
- package/dist/runtime/components/WMultiValues/WMultiValues.vue +1 -0
- package/dist/runtime/components/WNotifications/WNotification.vue +2 -0
- package/dist/runtime/components/WPopover/WPopover.d.vue.ts +4 -2
- package/dist/runtime/components/WPopover/WPopover.vue +13 -6
- package/dist/runtime/components/WPopover/WPopover.vue.d.ts +4 -2
- package/dist/runtime/components/WTooltip/WTooltip.vue +1 -0
- package/package.json +1 -1
- package/src/runtime/components/WCheckbox/WCheckbox.vue +2 -0
- package/src/runtime/components/WColorPicker/WColorPicker.vue +2 -0
- package/src/runtime/components/WCombobox/WCombobox.vue +5 -2
- package/src/runtime/components/WDatePicker/WRangeDatePicker.vue +6 -0
- package/src/runtime/components/WDatePicker/WSingleDatePicker.vue +6 -0
- package/src/runtime/components/WDebug/WDebug.vue +2 -0
- package/src/runtime/components/WFileInput/WFileInput.vue +4 -0
- package/src/runtime/components/WMultiValues/WMultiValues.vue +2 -0
- package/src/runtime/components/WNotifications/WNotification.vue +3 -0
- package/src/runtime/components/WPopover/WPopover.vue +16 -8
- package/src/runtime/components/WTable/WTable.vue +0 -1
- package/src/runtime/components/WTooltip/WTooltip.vue +2 -0
package/dist/module.json
CHANGED
|
@@ -84,6 +84,7 @@
|
|
|
84
84
|
<script setup>
|
|
85
85
|
import { CheckboxIndicator, CheckboxRoot } from "reka-ui";
|
|
86
86
|
import { useAttrs } from "vue";
|
|
87
|
+
import ILucideCheck from "~icons/lucide/check";
|
|
87
88
|
import { useFallbackId } from "../../composables/useFallbackId.js";
|
|
88
89
|
import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js";
|
|
89
90
|
import { twMerge } from "../../utils/twMerge.js";
|
|
@@ -189,6 +189,7 @@ import { computed, onMounted, reactive, ref, useAttrs, watch } from "vue";
|
|
|
189
189
|
import { safeConvertToHsva } from "./utils/safeConvertToHsva.js";
|
|
190
190
|
import { safeConvertToRgba } from "./utils/safeConvertToRgba.js";
|
|
191
191
|
import { toLowPrecisionRgbaString } from "./utils/toLowPrecisionRgbaString.js";
|
|
192
|
+
import ILucideCopy from "~icons/lucide/copy";
|
|
192
193
|
import { useFallbackId } from "../../composables/useFallbackId.js";
|
|
193
194
|
import { useInjectedI18n } from "../../composables/useInjectedI18n.js";
|
|
194
195
|
import { copy } from "../../helpers/copy.js";
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
has-[input:invalid]:border-danger-500
|
|
49
49
|
invalid:border-danger-500
|
|
50
50
|
`,
|
|
51
|
-
open && popupSide === 'top' && `rounded-tl-none rounded-tr-none`,
|
|
52
|
-
open && popupSide === 'bottom' && `rounded-bl-none rounded-br-none`
|
|
51
|
+
filtered.length > 0 && open && popupSide === 'top' && `rounded-tl-none rounded-tr-none`,
|
|
52
|
+
filtered.length > 0 && open && popupSide === 'bottom' && `rounded-bl-none rounded-br-none`
|
|
53
53
|
)"
|
|
54
54
|
>
|
|
55
55
|
<!-- @vue-expect-error aria/keydown can be defined -->
|
|
@@ -309,6 +309,8 @@ import {
|
|
|
309
309
|
useFilter
|
|
310
310
|
} from "reka-ui";
|
|
311
311
|
import { computed, nextTick, ref, useAttrs, useSlots, useTemplateRef, watch } from "vue";
|
|
312
|
+
import ILucideChevronDown from "~icons/lucide/chevron-down";
|
|
313
|
+
import ILucideLoaderCircle from "~icons/lucide/loader-circle";
|
|
312
314
|
import { useDelayedLoadingIndicator } from "../../composables/useDelayedLoadingIndicator.js";
|
|
313
315
|
import { useDisplayForReka } from "../../composables/useDisplayForReka.js";
|
|
314
316
|
import { useFallbackId } from "../../composables/useFallbackId.js";
|
|
@@ -3,6 +3,11 @@ import { getLocalTimeZone } from "@internationalized/date";
|
|
|
3
3
|
import { DateRangePickerArrow, DateRangePickerCalendar, DateRangePickerCell, DateRangePickerCellTrigger, DateRangePickerContent, DateRangePickerField, DateRangePickerGrid, DateRangePickerGridBody, DateRangePickerGridHead, DateRangePickerGridRow, DateRangePickerHeadCell, DateRangePickerHeader, DateRangePickerHeading, DateRangePickerInput, DateRangePickerNext, DateRangePickerPrev, DateRangePickerRoot, DateRangePickerTrigger } from "reka-ui";
|
|
4
4
|
import { onBeforeUnmount, ref, toRaw, useAttrs, watch } from "vue";
|
|
5
5
|
import { convertDateWithFallback, getNow, toEmittableDate } from "./helpers.js";
|
|
6
|
+
import ILucideCalendarRange from "~icons/lucide/calendar-range";
|
|
7
|
+
import ILucideChevronLeft from "~icons/lucide/chevron-left";
|
|
8
|
+
import ILucideChevronRight from "~icons/lucide/chevron-right";
|
|
9
|
+
import ILucideChevronsLeft from "~icons/lucide/chevrons-left";
|
|
10
|
+
import ILucideChevronsRight from "~icons/lucide/chevrons-right";
|
|
6
11
|
import { useInjectedLocale } from "../../composables/useInjectedLocale.js";
|
|
7
12
|
import { twMerge } from "../../utils/twMerge.js";
|
|
8
13
|
import WIcon from "../WIcon/WIcon.vue";
|
|
@@ -3,6 +3,11 @@ import { getLocalTimeZone } from "@internationalized/date";
|
|
|
3
3
|
import { DatePickerArrow, DatePickerCalendar, DatePickerCell, DatePickerCellTrigger, DatePickerContent, DatePickerField, DatePickerGrid, DatePickerGridBody, DatePickerGridHead, DatePickerGridRow, DatePickerHeadCell, DatePickerHeader, DatePickerHeading, DatePickerInput, DatePickerNext, DatePickerPrev, DatePickerRoot, DatePickerTrigger } from "reka-ui";
|
|
4
4
|
import { onBeforeUnmount, ref, toRaw, useAttrs, watch } from "vue";
|
|
5
5
|
import { convertDateWithFallback, getNow, toEmittableDate } from "./helpers.js";
|
|
6
|
+
import ILucideCalendarDays from "~icons/lucide/calendar-days";
|
|
7
|
+
import ILucideChevronLeft from "~icons/lucide/chevron-left";
|
|
8
|
+
import ILucideChevronRight from "~icons/lucide/chevron-right";
|
|
9
|
+
import ILucideChevronsLeft from "~icons/lucide/chevrons-left";
|
|
10
|
+
import ILucideChevronsRight from "~icons/lucide/chevrons-right";
|
|
6
11
|
import { useInjectedLocale } from "../../composables/useInjectedLocale.js";
|
|
7
12
|
import { twMerge } from "../../utils/twMerge.js";
|
|
8
13
|
import WIcon from "../WIcon/WIcon.vue";
|
|
@@ -226,6 +226,9 @@
|
|
|
226
226
|
|
|
227
227
|
<script setup>
|
|
228
228
|
import { computed, onBeforeUnmount, ref, shallowReactive, watch } from "vue";
|
|
229
|
+
import ILucideFile from "~icons/lucide/file";
|
|
230
|
+
import ILucideUpload from "~icons/lucide/upload";
|
|
231
|
+
import ILucideX from "~icons/lucide/x";
|
|
229
232
|
import { useFallbackId } from "../../composables/useFallbackId.js";
|
|
230
233
|
import { useInjectedI18n } from "../../composables/useInjectedI18n.js";
|
|
231
234
|
import { twMerge } from "../../utils/twMerge.js";
|
|
@@ -86,6 +86,7 @@
|
|
|
86
86
|
<script setup>
|
|
87
87
|
import { removeIfIn } from "@alanscodelog/utils/removeIfIn";
|
|
88
88
|
import { computed, nextTick, ref, useAttrs } from "vue";
|
|
89
|
+
import ILucideX from "~icons/lucide/x";
|
|
89
90
|
import { copy } from "../../helpers/copy.js";
|
|
90
91
|
import { twMerge } from "../../utils/twMerge.js";
|
|
91
92
|
import WButton from "../WButton/WButton.vue";
|
|
@@ -177,6 +177,8 @@
|
|
|
177
177
|
|
|
178
178
|
<script setup>
|
|
179
179
|
import { computed, onMounted, ref, useAttrs } from "vue";
|
|
180
|
+
import ILucideCopy from "~icons/lucide/copy";
|
|
181
|
+
import ILucideX from "~icons/lucide/x";
|
|
180
182
|
import { useSlotVars } from "../../composables/useSlotVars.js";
|
|
181
183
|
import { copy } from "../../helpers/copy.js";
|
|
182
184
|
import { NotificationHandler } from "../../helpers/NotificationHandler.js";
|
|
@@ -4,7 +4,8 @@ import type { EmitsToProps, PopupConstrainToProps, TailwindClassProp } from "../
|
|
|
4
4
|
type __VLS_Props = PopupConstrainToProps & {
|
|
5
5
|
backdropClass?: string;
|
|
6
6
|
showBackdrop?: boolean;
|
|
7
|
-
|
|
7
|
+
showArrow?: boolean;
|
|
8
|
+
animationDirection?: "use-side" | "use-align" | "left" | "right" | "up" | "down" | "show" | "none";
|
|
8
9
|
/** Overrides teleport target. */
|
|
9
10
|
to?: string;
|
|
10
11
|
/** Overrides reka-ui's PopoverRootProps */
|
|
@@ -31,7 +32,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
|
|
|
31
32
|
constrainHeightTo: number | "trigger" | "available" | string | null;
|
|
32
33
|
to: string;
|
|
33
34
|
showBackdrop: boolean;
|
|
34
|
-
|
|
35
|
+
showArrow: boolean;
|
|
36
|
+
animationDirection: "use-side" | "use-align" | "left" | "right" | "up" | "down" | "show" | "none";
|
|
35
37
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
36
38
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
37
39
|
declare const _default: typeof __VLS_export;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<transition>
|
|
15
15
|
<div
|
|
16
16
|
v-if="showBackdrop && modelValue"
|
|
17
|
-
:class="twMerge(`
|
|
17
|
+
:class="twMerge(`popover--backdrop absolute inset-0 bg-black/50`, backdropClass)"
|
|
18
18
|
@click="modelValue = false"
|
|
19
19
|
/>
|
|
20
20
|
</transition>
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
:style="contentStyle"
|
|
39
39
|
:class="twMerge(
|
|
40
40
|
`
|
|
41
|
-
|
|
41
|
+
popover--content-wrapper
|
|
42
42
|
focus:outline-none
|
|
43
43
|
overflow-auto
|
|
44
44
|
scrollbar-hidden
|
|
@@ -71,12 +71,15 @@
|
|
|
71
71
|
animationDirection === `down` && `
|
|
72
72
|
animate-slideInDown
|
|
73
73
|
`,
|
|
74
|
+
animationDirection === `show` && `
|
|
75
|
+
animate-contentShow
|
|
76
|
+
`,
|
|
74
77
|
contentProps?.class
|
|
75
78
|
)"
|
|
76
79
|
>
|
|
77
80
|
<div
|
|
78
81
|
:class="twMerge(`
|
|
79
|
-
|
|
82
|
+
popover--content
|
|
80
83
|
flex
|
|
81
84
|
flex-col
|
|
82
85
|
bg-neutral-50
|
|
@@ -96,13 +99,16 @@
|
|
|
96
99
|
</div>
|
|
97
100
|
|
|
98
101
|
<PopoverArrow
|
|
99
|
-
|
|
102
|
+
v-if="showArrow"
|
|
103
|
+
:class="twMerge(`
|
|
104
|
+
popover--arrow
|
|
100
105
|
-mt-px
|
|
101
106
|
fill-neutral-50
|
|
102
107
|
dark:fill-neutral-800
|
|
103
108
|
drop-shadow-[0_2px_1px_rgba(0,0,0,0.3)]
|
|
104
109
|
relative
|
|
105
|
-
|
|
110
|
+
stroke-black/30
|
|
111
|
+
`)"
|
|
106
112
|
/>
|
|
107
113
|
</PopoverContent>
|
|
108
114
|
</PopoverPortal>
|
|
@@ -120,7 +126,7 @@ import {
|
|
|
120
126
|
import { usePopupConstrainToStyle } from "../../composables/usePopupConstrainToStyle.js";
|
|
121
127
|
import { twMerge } from "../../utils/twMerge.js";
|
|
122
128
|
defineOptions({
|
|
123
|
-
name: "
|
|
129
|
+
name: "WPopover",
|
|
124
130
|
inheritAttrs: false
|
|
125
131
|
});
|
|
126
132
|
const props = defineProps({
|
|
@@ -128,6 +134,7 @@ const props = defineProps({
|
|
|
128
134
|
constrainHeightTo: { type: [Number, String, null], required: false, default: "available" },
|
|
129
135
|
backdropClass: { type: String, required: false },
|
|
130
136
|
showBackdrop: { type: Boolean, required: false, default: false },
|
|
137
|
+
showArrow: { type: Boolean, required: false, default: true },
|
|
131
138
|
animationDirection: { type: String, required: false, default: "use-side" },
|
|
132
139
|
to: { type: String, required: false, default: "#root" },
|
|
133
140
|
rootProps: { type: Object, required: false },
|
|
@@ -4,7 +4,8 @@ import type { EmitsToProps, PopupConstrainToProps, TailwindClassProp } from "../
|
|
|
4
4
|
type __VLS_Props = PopupConstrainToProps & {
|
|
5
5
|
backdropClass?: string;
|
|
6
6
|
showBackdrop?: boolean;
|
|
7
|
-
|
|
7
|
+
showArrow?: boolean;
|
|
8
|
+
animationDirection?: "use-side" | "use-align" | "left" | "right" | "up" | "down" | "show" | "none";
|
|
8
9
|
/** Overrides teleport target. */
|
|
9
10
|
to?: string;
|
|
10
11
|
/** Overrides reka-ui's PopoverRootProps */
|
|
@@ -31,7 +32,8 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, {}, {
|
|
|
31
32
|
constrainHeightTo: number | "trigger" | "available" | string | null;
|
|
32
33
|
to: string;
|
|
33
34
|
showBackdrop: boolean;
|
|
34
|
-
|
|
35
|
+
showArrow: boolean;
|
|
36
|
+
animationDirection: "use-side" | "use-align" | "left" | "right" | "up" | "down" | "show" | "none";
|
|
35
37
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
36
38
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
37
39
|
declare const _default: typeof __VLS_export;
|
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
|
|
93
93
|
<script setup>
|
|
94
94
|
import { TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger } from "reka-ui";
|
|
95
|
+
import ILucideInfo from "~icons/lucide/info";
|
|
95
96
|
import { usePopupConstrainToStyle } from "../../composables/usePopupConstrainToStyle.js";
|
|
96
97
|
import { twMerge } from "../../utils/twMerge.js";
|
|
97
98
|
import WIcon from "../WIcon/WIcon.vue";
|
package/package.json
CHANGED
|
@@ -84,6 +84,8 @@ import { CheckboxIndicator, CheckboxRoot } from "reka-ui"
|
|
|
84
84
|
import type { HTMLAttributes, InputHTMLAttributes } from "vue"
|
|
85
85
|
import { useAttrs } from "vue"
|
|
86
86
|
|
|
87
|
+
import ILucideCheck from "~icons/lucide/check"
|
|
88
|
+
|
|
87
89
|
import { useFallbackId } from "../../composables/useFallbackId.js"
|
|
88
90
|
import { usePreHydrationValue } from "../../composables/usePreHydrationValue.js"
|
|
89
91
|
import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js"
|
|
@@ -191,6 +191,8 @@ import { safeConvertToHsva } from "./utils/safeConvertToHsva.js"
|
|
|
191
191
|
import { safeConvertToRgba } from "./utils/safeConvertToRgba.js"
|
|
192
192
|
import { toLowPrecisionRgbaString } from "./utils/toLowPrecisionRgbaString.js"
|
|
193
193
|
|
|
194
|
+
import ILucideCopy from "~icons/lucide/copy"
|
|
195
|
+
|
|
194
196
|
import { useFallbackId } from "../../composables/useFallbackId.js"
|
|
195
197
|
import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
|
|
196
198
|
import { copy } from "../../helpers/copy.js"
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
has-[input:invalid]:border-danger-500
|
|
47
47
|
invalid:border-danger-500
|
|
48
48
|
`,
|
|
49
|
-
open && popupSide === 'top' && `rounded-tl-none rounded-tr-none`,
|
|
50
|
-
open && popupSide === 'bottom' && `rounded-bl-none rounded-br-none`
|
|
49
|
+
filtered.length > 0 && open && popupSide === 'top' && `rounded-tl-none rounded-tr-none`,
|
|
50
|
+
filtered.length > 0 && open && popupSide === 'bottom' && `rounded-bl-none rounded-br-none`
|
|
51
51
|
)"
|
|
52
52
|
>
|
|
53
53
|
<!-- @vue-expect-error aria/keydown can be defined -->
|
|
@@ -307,6 +307,9 @@ import {
|
|
|
307
307
|
import type { EmitsToProps, HTMLAttributes, InputHTMLAttributes } from "vue"
|
|
308
308
|
import { computed, nextTick, ref, useAttrs, useSlots, useTemplateRef, watch } from "vue"
|
|
309
309
|
|
|
310
|
+
import ILucideChevronDown from "~icons/lucide/chevron-down"
|
|
311
|
+
import ILucideLoaderCircle from "~icons/lucide/loader-circle"
|
|
312
|
+
|
|
310
313
|
import { useDelayedLoadingIndicator } from "../../composables/useDelayedLoadingIndicator.js"
|
|
311
314
|
import { type SuggestionsDisplayProps, useDisplayForReka } from "../../composables/useDisplayForReka.js"
|
|
312
315
|
import { useFallbackId } from "../../composables/useFallbackId.js"
|
|
@@ -7,6 +7,12 @@ import { onBeforeUnmount, ref, toRaw, useAttrs, watch } from "vue"
|
|
|
7
7
|
|
|
8
8
|
import { convertDateWithFallback, getNow, toEmittableDate } from "./helpers.js"
|
|
9
9
|
|
|
10
|
+
import ILucideCalendarRange from "~icons/lucide/calendar-range"
|
|
11
|
+
import ILucideChevronLeft from "~icons/lucide/chevron-left"
|
|
12
|
+
import ILucideChevronRight from "~icons/lucide/chevron-right"
|
|
13
|
+
import ILucideChevronsLeft from "~icons/lucide/chevrons-left"
|
|
14
|
+
import ILucideChevronsRight from "~icons/lucide/chevrons-right"
|
|
15
|
+
|
|
10
16
|
import { useInjectedLocale } from "../../composables/useInjectedLocale.js"
|
|
11
17
|
import type { RangeDate } from "../../types/index.js"
|
|
12
18
|
import { twMerge } from "../../utils/twMerge.js"
|
|
@@ -5,6 +5,12 @@ import { onBeforeUnmount, ref, toRaw, useAttrs, watch } from "vue"
|
|
|
5
5
|
|
|
6
6
|
import { convertDateWithFallback, getNow, toEmittableDate } from "./helpers.js"
|
|
7
7
|
|
|
8
|
+
import ILucideCalendarDays from "~icons/lucide/calendar-days"
|
|
9
|
+
import ILucideChevronLeft from "~icons/lucide/chevron-left"
|
|
10
|
+
import ILucideChevronRight from "~icons/lucide/chevron-right"
|
|
11
|
+
import ILucideChevronsLeft from "~icons/lucide/chevrons-left"
|
|
12
|
+
import ILucideChevronsRight from "~icons/lucide/chevrons-right"
|
|
13
|
+
|
|
8
14
|
import { useInjectedLocale } from "../../composables/useInjectedLocale.js"
|
|
9
15
|
import type { SingleDate } from "../../types/index.js"
|
|
10
16
|
import { twMerge } from "../../utils/twMerge.js"
|
|
@@ -231,6 +231,10 @@
|
|
|
231
231
|
import type { HTMLAttributes, InputHTMLAttributes } from "vue"
|
|
232
232
|
import { computed, onBeforeUnmount, ref, shallowReactive, watch } from "vue"
|
|
233
233
|
|
|
234
|
+
import ILucideFile from "~icons/lucide/file"
|
|
235
|
+
import ILucideUpload from "~icons/lucide/upload"
|
|
236
|
+
import ILucideX from "~icons/lucide/x"
|
|
237
|
+
|
|
234
238
|
import { useFallbackId } from "../../composables/useFallbackId.js"
|
|
235
239
|
import { useInjectedI18n } from "../../composables/useInjectedI18n.js"
|
|
236
240
|
import type { FileInputError, TailwindClassProp } from "../../types/index.js"
|
|
@@ -83,6 +83,8 @@
|
|
|
83
83
|
import { removeIfIn } from "@alanscodelog/utils/removeIfIn"
|
|
84
84
|
import { computed, type HTMLAttributes, nextTick, ref, useAttrs } from "vue"
|
|
85
85
|
|
|
86
|
+
import ILucideX from "~icons/lucide/x"
|
|
87
|
+
|
|
86
88
|
import { copy } from "../../helpers/copy.js"
|
|
87
89
|
import type { BaseInteractiveProps, TailwindClassProp } from "../../types/index.js"
|
|
88
90
|
import { twMerge } from "../../utils/twMerge.js"
|
|
@@ -176,6 +176,9 @@
|
|
|
176
176
|
<script setup lang="ts">
|
|
177
177
|
import { computed, type HTMLAttributes, onMounted, ref, useAttrs } from "vue"
|
|
178
178
|
|
|
179
|
+
import ILucideCopy from "~icons/lucide/copy"
|
|
180
|
+
import ILucideX from "~icons/lucide/x"
|
|
181
|
+
|
|
179
182
|
import { useSlotVars } from "../../composables/useSlotVars.js"
|
|
180
183
|
import { copy } from "../../helpers/copy.js"
|
|
181
184
|
import { type NotificationEntry, NotificationHandler } from "../../helpers/NotificationHandler.js"
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<transition>
|
|
15
15
|
<div
|
|
16
16
|
v-if="showBackdrop && modelValue"
|
|
17
|
-
:class="twMerge(`
|
|
17
|
+
:class="twMerge(`popover--backdrop absolute inset-0 bg-black/50`, backdropClass)"
|
|
18
18
|
@click="modelValue = false"
|
|
19
19
|
/>
|
|
20
20
|
</transition>
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
}"
|
|
38
38
|
:style="contentStyle"
|
|
39
39
|
:class="twMerge(`
|
|
40
|
-
|
|
40
|
+
popover--content-wrapper
|
|
41
41
|
focus:outline-none
|
|
42
42
|
overflow-auto
|
|
43
43
|
scrollbar-hidden
|
|
@@ -70,11 +70,14 @@
|
|
|
70
70
|
animationDirection === `down` && `
|
|
71
71
|
animate-slideInDown
|
|
72
72
|
`,
|
|
73
|
+
animationDirection === `show` && `
|
|
74
|
+
animate-contentShow
|
|
75
|
+
`,
|
|
73
76
|
contentProps?.class)"
|
|
74
77
|
>
|
|
75
78
|
<div
|
|
76
79
|
:class="twMerge(`
|
|
77
|
-
|
|
80
|
+
popover--content
|
|
78
81
|
flex
|
|
79
82
|
flex-col
|
|
80
83
|
bg-neutral-50
|
|
@@ -94,13 +97,16 @@
|
|
|
94
97
|
</div>
|
|
95
98
|
|
|
96
99
|
<PopoverArrow
|
|
97
|
-
|
|
100
|
+
v-if="showArrow"
|
|
101
|
+
:class="twMerge(`
|
|
102
|
+
popover--arrow
|
|
98
103
|
-mt-px
|
|
99
104
|
fill-neutral-50
|
|
100
105
|
dark:fill-neutral-800
|
|
101
106
|
drop-shadow-[0_2px_1px_rgba(0,0,0,0.3)]
|
|
102
107
|
relative
|
|
103
|
-
|
|
108
|
+
stroke-black/30
|
|
109
|
+
`)"
|
|
104
110
|
/>
|
|
105
111
|
</PopoverContent>
|
|
106
112
|
</PopoverPortal>
|
|
@@ -127,7 +133,7 @@ import { twMerge } from "../../utils/twMerge.js"
|
|
|
127
133
|
|
|
128
134
|
/** Wrapper around reka-ui's `Popover` component. */
|
|
129
135
|
defineOptions({
|
|
130
|
-
name: "
|
|
136
|
+
name: "WPopover",
|
|
131
137
|
inheritAttrs: false
|
|
132
138
|
})
|
|
133
139
|
|
|
@@ -136,9 +142,10 @@ const props = withDefaults(defineProps<
|
|
|
136
142
|
& PopupConstrainToProps
|
|
137
143
|
& {
|
|
138
144
|
backdropClass?: string
|
|
139
|
-
/* If true, a backdrop is shown behind the
|
|
145
|
+
/* If true, a backdrop is shown behind the popover. Whether interaction is allowed outside the popover is still determined by `disableOutsidePointerEvents`. */
|
|
140
146
|
showBackdrop?: boolean
|
|
141
|
-
|
|
147
|
+
showArrow?: boolean
|
|
148
|
+
animationDirection?: "use-side" | "use-align" | "left" | "right" | "up" | "down" | "show" | "none"
|
|
142
149
|
/** Overrides teleport target. */
|
|
143
150
|
to?: string
|
|
144
151
|
/** Overrides reka-ui's PopoverRootProps */
|
|
@@ -148,6 +155,7 @@ const props = withDefaults(defineProps<
|
|
|
148
155
|
}
|
|
149
156
|
>(), {
|
|
150
157
|
showBackdrop: false,
|
|
158
|
+
showArrow: true,
|
|
151
159
|
constrainWidthTo: 400,
|
|
152
160
|
constrainHeightTo: "available",
|
|
153
161
|
animationDirection: "use-side",
|
|
@@ -92,6 +92,8 @@
|
|
|
92
92
|
<script setup lang="ts">
|
|
93
93
|
import { TooltipArrow, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger } from "reka-ui"
|
|
94
94
|
|
|
95
|
+
import ILucideInfo from "~icons/lucide/info"
|
|
96
|
+
|
|
95
97
|
import { usePopupConstrainToStyle } from "../../composables/usePopupConstrainToStyle.js"
|
|
96
98
|
import type { PopupConstrainToProps } from "../../types/index.js"
|
|
97
99
|
import { twMerge } from "../../utils/twMerge.js"
|