@destyler/popover 0.0.5 → 0.0.7-beta.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.
@@ -1,35 +0,0 @@
1
- import { defineComponent, onBeforeMount, onUnmounted, h, mergeProps } from 'vue';
2
- import { popperAnchorProps, PopperAnchor } from '@destyler/popper';
3
- import { i as injectPopoverRootContext } from './shared/popover.005a231a.mjs';
4
- export { P as PopoverArrow, a as PopoverClose, c as PopoverContent, f as PopoverContentImpl, j as PopoverContentModal, k as PopoverContentNonModal, l as PopoverPortal, n as PopoverRoot, r as PopoverTrigger, p as popoverArrowProps, b as popoverCloseProps, e as popoverContentEmits, h as popoverContentImplEmits, g as popoverContentImplProps, d as popoverContentProps, m as popoverPortalProps, q as popoverRootEmits, o as popoverRootProps, s as popoverTriggerProps } from './shared/popover.005a231a.mjs';
5
- import '@destyler/primitive';
6
- import '@destyler/shared';
7
- import '@destyler/composition';
8
- import '@destyler/presence';
9
- import '@destyler/dismissable-layer';
10
- import '@destyler/dismissable-layer/component';
11
- import '@destyler/focus-scope';
12
- import '@destyler/directives';
13
- import '@destyler/teleport';
14
-
15
- const popoverAnchorProps = {
16
- ...popperAnchorProps
17
- };
18
- const PopoverAnchor = defineComponent({
19
- name: "DestylerPopoverAnchor",
20
- props: popoverAnchorProps,
21
- setup() {
22
- const rootContext = injectPopoverRootContext();
23
- onBeforeMount(() => {
24
- rootContext.hasCustomAnchor.value = true;
25
- });
26
- onUnmounted(() => {
27
- rootContext.hasCustomAnchor.value = false;
28
- });
29
- },
30
- render() {
31
- return h(PopperAnchor, mergeProps(this.$props, {}), () => this.$slots.default?.());
32
- }
33
- });
34
-
35
- export { PopoverAnchor, popoverAnchorProps };
package/dist/resolver.cjs DELETED
@@ -1,25 +0,0 @@
1
- 'use strict';
2
-
3
- const name = "@destyler/popover";
4
-
5
- const packageName = name;
6
- const popoverComponentName = [
7
- "PopoverArrow",
8
- "PopoverClose",
9
- "PopoverContent",
10
- "PopoverPortal",
11
- "PopoverRoot",
12
- "PopoverTrigger"
13
- ];
14
- function PopoverResolver() {
15
- return {
16
- type: "component",
17
- resolve: (name2) => {
18
- if (popoverComponentName.includes(name2))
19
- return { name: name2, from: packageName };
20
- }
21
- };
22
- }
23
-
24
- exports.PopoverResolver = PopoverResolver;
25
- exports.popoverComponentName = popoverComponentName;
@@ -1,6 +0,0 @@
1
- import { ComponentResolver } from 'unplugin-vue-components';
2
-
3
- declare const popoverComponentName: string[];
4
- declare function PopoverResolver(): ComponentResolver;
5
-
6
- export { PopoverResolver, popoverComponentName };
@@ -1,6 +0,0 @@
1
- import { ComponentResolver } from 'unplugin-vue-components';
2
-
3
- declare const popoverComponentName: string[];
4
- declare function PopoverResolver(): ComponentResolver;
5
-
6
- export { PopoverResolver, popoverComponentName };
@@ -1,6 +0,0 @@
1
- import { ComponentResolver } from 'unplugin-vue-components';
2
-
3
- declare const popoverComponentName: string[];
4
- declare function PopoverResolver(): ComponentResolver;
5
-
6
- export { PopoverResolver, popoverComponentName };
package/dist/resolver.mjs DELETED
@@ -1,22 +0,0 @@
1
- const name = "@destyler/popover";
2
-
3
- const packageName = name;
4
- const popoverComponentName = [
5
- "PopoverArrow",
6
- "PopoverClose",
7
- "PopoverContent",
8
- "PopoverPortal",
9
- "PopoverRoot",
10
- "PopoverTrigger"
11
- ];
12
- function PopoverResolver() {
13
- return {
14
- type: "component",
15
- resolve: (name2) => {
16
- if (popoverComponentName.includes(name2))
17
- return { name: name2, from: packageName };
18
- }
19
- };
20
- }
21
-
22
- export { PopoverResolver, popoverComponentName };
@@ -1,399 +0,0 @@
1
- import { defineComponent, h, mergeProps, toRef, ref, withDirectives, onMounted } from 'vue';
2
- import { popperArrowProps, PopperArrow, PopperRoot, popperContentProps, PopperContent, PopperAnchor } from '@destyler/popper';
3
- import { primitiveProps, Primitive } from '@destyler/primitive';
4
- import { createContext } from '@destyler/shared';
5
- import { useVModel, useId, useForwardProps, useFocusGuards, useForwardPropsEmits, useForwardExpose, useHideOthers } from '@destyler/composition';
6
- import { Presence } from '@destyler/presence';
7
- import { dismissableLayerProps, DismissableLayer } from '@destyler/dismissable-layer';
8
- import { dismissableLayerEmits } from '@destyler/dismissable-layer/component';
9
- import { focusScopeProps, FocusScope } from '@destyler/focus-scope';
10
- import { BindOnceDirective } from '@destyler/directives';
11
- import { teleportPrimitiveProps, TeleportPrimitive } from '@destyler/teleport';
12
-
13
- const popoverArrowProps = {
14
- ...popperArrowProps
15
- };
16
- const PopoverArrow = defineComponent({
17
- name: "DestylerPopoverArrow",
18
- props: popoverArrowProps,
19
- render() {
20
- return h(PopperArrow, mergeProps(this.$props, {}), () => this.$slots.default?.());
21
- }
22
- });
23
-
24
- const [injectPopoverRootContext, providePopoverRootContext] = createContext("DestylerPopoverRoot");
25
- const popoverRootProps = {
26
- /**
27
- * The open state of the popover when it is initially rendered. Use when you do not need to control its open state.
28
- *
29
- * @default false
30
- */
31
- defaultOpen: {
32
- type: Boolean,
33
- required: false,
34
- default: false
35
- },
36
- /**
37
- * The controlled open state of the popover.
38
- *
39
- * @default undefined
40
- */
41
- open: {
42
- type: Boolean,
43
- required: false,
44
- default: void 0
45
- },
46
- /**
47
- * The modality of the popover. When set to true, interaction with outside elements will be disabled and only popover content will be visible to screen readers.
48
- *
49
- * @default false
50
- */
51
- modal: {
52
- type: Boolean,
53
- required: false,
54
- default: false
55
- }
56
- };
57
- const popoverRootEmits = {
58
- /**
59
- * Event handler called when the open state of the popover changes.
60
- */
61
- "update:open": (_value) => true
62
- };
63
- const PopoverRoot = defineComponent({
64
- name: "DestylerPopoverRoot",
65
- props: popoverRootProps,
66
- emits: popoverRootEmits,
67
- setup(props, { emit }) {
68
- const modalRef = toRef(props.modal);
69
- const openRef = useVModel(props, "open", emit, {
70
- defaultValue: props.defaultOpen,
71
- passive: props.open === void 0
72
- });
73
- const triggerElement = ref();
74
- const hasCustomAnchor = ref(false);
75
- function handleUpdateOpen(value) {
76
- openRef.value = value;
77
- }
78
- providePopoverRootContext({
79
- contentId: useId(),
80
- modal: modalRef,
81
- open: openRef,
82
- onOpenChange: (value) => {
83
- handleUpdateOpen(value);
84
- },
85
- onOpenToggle: () => {
86
- handleUpdateOpen(!openRef.value);
87
- },
88
- triggerElement,
89
- hasCustomAnchor
90
- });
91
- return {
92
- openRef,
93
- modalRef,
94
- triggerElement,
95
- hasCustomAnchor
96
- };
97
- },
98
- render() {
99
- return h(PopperRoot, null, () => this.$slots.default?.());
100
- }
101
- });
102
-
103
- const popoverCloseProps = {
104
- ...primitiveProps,
105
- /**
106
- * @default button
107
- */
108
- as: {
109
- ...primitiveProps.as,
110
- default: "button"
111
- }
112
- };
113
- const PopoverClose = defineComponent({
114
- name: "DestylerPopoverClose",
115
- props: popoverCloseProps,
116
- setup() {
117
- const rootContext = injectPopoverRootContext();
118
- return {
119
- rootContext
120
- };
121
- },
122
- render() {
123
- return h(Primitive, {
124
- as: this.$props.as,
125
- asChild: this.$props.asChild,
126
- type: this.$props.as === "button" ? "button" : void 0,
127
- onClick: () => {
128
- this.rootContext.onOpenChange(false);
129
- }
130
- }, () => this.$slots.default?.());
131
- }
132
- });
133
-
134
- const popoverContentImplProps = {
135
- ...popperContentProps,
136
- ...dismissableLayerProps,
137
- /**
138
- * Used to force mounting when more control is needed. Useful when
139
- * controlling animation with Vue animation libraries.
140
- */
141
- trapFocus: {
142
- ...focusScopeProps.trapped
143
- }
144
- };
145
- const popoverContentImplEmits = {
146
- ...dismissableLayerEmits,
147
- /**
148
- * Event handler called when auto-focusing on open.
149
- * Can be prevented.
150
- */
151
- openAutoFocus: (_event) => true,
152
- /**
153
- * Event handler called when auto-focusing on close.
154
- * Can be prevented.
155
- */
156
- closeAutoFocus: (_event) => true
157
- };
158
- const PopoverContentImpl = defineComponent({
159
- name: "DestylerPopoverContentImpl",
160
- props: popoverContentImplProps,
161
- emits: popoverContentImplEmits,
162
- setup(props) {
163
- const forwarded = useForwardProps(props);
164
- const rootContext = injectPopoverRootContext();
165
- useFocusGuards();
166
- return {
167
- rootContext,
168
- forwarded
169
- };
170
- },
171
- render() {
172
- return h(FocusScope, {
173
- asChild: true,
174
- loop: true,
175
- trapped: this.$props.trapFocus,
176
- onMountAutoFocus: (event) => {
177
- this.$emit("openAutoFocus", event);
178
- },
179
- onUnmountAutoFocus: (event) => {
180
- this.$emit("closeAutoFocus", event);
181
- }
182
- }, () => h(DismissableLayer, {
183
- asChild: true,
184
- disableOutsidePointerEvents: this.$props.disableOutsidePointerEvents,
185
- onPointerDownOutside: (event) => {
186
- this.$emit("pointerDownOutside", event);
187
- },
188
- onInteractOutside: (event) => {
189
- this.$emit("interactOutside", event);
190
- },
191
- onEscapeKeyDown: (event) => {
192
- this.$emit("escapeKeyDown", event);
193
- },
194
- onFocusOutside: (event) => {
195
- this.$emit("focusOutside", event);
196
- },
197
- onDismiss: () => {
198
- this.rootContext.onOpenChange(false);
199
- }
200
- }, () => withDirectives(h(PopperContent, mergeProps(this.forwarded, {
201
- "data-state": this.rootContext.open.value ? "open" : "closed",
202
- "role": "dialog",
203
- "style": {
204
- "--destyler-popover-content-transform-origin": "var(--destyler-popper-transform-origin)",
205
- "--destyler-popover-content-available-width": "var(--destyler-popper-available-width)",
206
- "--destyler-popover-content-available-height": "var(--destyler-popper-available-height)",
207
- "--destyler-popover-trigger-width": "var(--destyler-popper-anchor-width)",
208
- "--destyler-popover-trigger-height": "var(--destyler-popper-anchor-height)"
209
- }
210
- }), () => this.$slots.default?.()), [
211
- [BindOnceDirective, { id: this.rootContext.contentId }]
212
- ])));
213
- }
214
- });
215
-
216
- const PopoverContentModal = defineComponent({
217
- name: "DestylerPopoverContentModal",
218
- props: popoverContentImplProps,
219
- emits: popoverContentImplEmits,
220
- setup(props, { emit }) {
221
- const rootContext = injectPopoverRootContext();
222
- const isRightClickOutsideRef = ref(false);
223
- const forwarded = useForwardPropsEmits(props, emit);
224
- const { forwardRef, currentElement } = useForwardExpose();
225
- useHideOthers(currentElement);
226
- return {
227
- rootContext,
228
- forwarded,
229
- isRightClickOutsideRef,
230
- forwardRef
231
- };
232
- },
233
- render() {
234
- return h(PopoverContentImpl, {
235
- ref: (el) => this.forwardRef(el),
236
- ...mergeProps(this.forwarded),
237
- trapFocus: this.rootContext.open.value,
238
- disableOutsidePointerEvents: true,
239
- onCloseAutoFocusPrevent: (event) => {
240
- this.$emit("closeAutoFocus", event);
241
- if (!this.isRightClickOutsideRef)
242
- this.rootContext.triggerElement.value?.focus();
243
- },
244
- onPointerDownOutside: (event) => {
245
- this.$emit("pointerDownOutside", event);
246
- const originalEvent = event.detail.originalEvent;
247
- const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
248
- const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
249
- this.isRightClickOutsideRef = isRightClick;
250
- }
251
- }, () => this.$slots.default?.());
252
- }
253
- });
254
-
255
- const PopoverContentNonModal = defineComponent({
256
- name: "DestylerPopoverContentNonModal",
257
- props: popoverContentImplProps,
258
- emits: popoverContentImplEmits,
259
- setup(props, { emit }) {
260
- const rootContext = injectPopoverRootContext();
261
- const hasInteractedOutsideRef = ref(false);
262
- const hasPointerDownOutsideRef = ref(false);
263
- const forwarded = useForwardPropsEmits(props, emit);
264
- return {
265
- forwarded,
266
- rootContext,
267
- hasInteractedOutsideRef,
268
- hasPointerDownOutsideRef
269
- };
270
- },
271
- render() {
272
- return h(PopoverContentImpl, {
273
- ...this.forwarded,
274
- trapFocus: false,
275
- disableOutsidePointerEvents: false,
276
- onCloseAutoFocus: (event) => {
277
- this.$emit("closeAutoFocus", event);
278
- if (!event.defaultPrevented) {
279
- if (!this.hasInteractedOutsideRef)
280
- this.rootContext.triggerElement.value?.focus();
281
- event.preventDefault();
282
- }
283
- this.hasInteractedOutsideRef = false;
284
- this.hasPointerDownOutsideRef = false;
285
- },
286
- onInteractOutside: async (event) => {
287
- this.$emit("interactOutside", event);
288
- if (!event.defaultPrevented) {
289
- this.hasInteractedOutsideRef = true;
290
- if (event.detail.originalEvent.type === "pointerdown")
291
- this.hasPointerDownOutsideRef = true;
292
- }
293
- const target = event.target;
294
- const targetIsTrigger = this.rootContext.triggerElement.value?.contains(target);
295
- if (targetIsTrigger)
296
- event.preventDefault();
297
- if (event.detail.originalEvent.type === "focusin" && this.hasPointerDownOutsideRef)
298
- event.preventDefault();
299
- }
300
- }, () => this.$slots.default?.());
301
- }
302
- });
303
-
304
- const popoverContentProps = {
305
- ...popoverContentImplProps,
306
- /**
307
- * Used to force mounting when more control is needed. Useful when
308
- * controlling animation with Vue animation libraries.
309
- *
310
- * @default false
311
- */
312
- forceMount: {
313
- type: Boolean,
314
- required: false,
315
- default: false
316
- }
317
- };
318
- const popoverContentEmits = {
319
- ...popoverContentImplEmits
320
- };
321
- const PopoverContent = defineComponent({
322
- name: "DestylerPopoverContent",
323
- props: popoverContentProps,
324
- emits: popoverContentEmits,
325
- setup(props, { emit }) {
326
- const rootContext = injectPopoverRootContext();
327
- const forwarded = useForwardPropsEmits(props, emit);
328
- return {
329
- rootContext,
330
- forwarded
331
- };
332
- },
333
- render() {
334
- const useVShow = this.rootContext.modal.value;
335
- return h(Presence, {
336
- present: this.forceMount || this.rootContext.open.value
337
- }, () => useVShow ? h(PopoverContentModal, {
338
- ...this.forwarded
339
- }, () => this.$slots.default?.()) : h(PopoverContentNonModal, {
340
- ...this.forwarded
341
- }, () => this.$slots.default?.()));
342
- }
343
- });
344
-
345
- const popoverPortalProps = {
346
- ...teleportPrimitiveProps
347
- };
348
- const PopoverPortal = defineComponent({
349
- name: "DestylerPopoverPortal",
350
- props: popoverPortalProps,
351
- render() {
352
- return h(TeleportPrimitive, mergeProps(this.$props), () => this.$slots.default?.());
353
- }
354
- });
355
-
356
- const popoverTriggerProps = {
357
- ...primitiveProps,
358
- /**
359
- * @default button
360
- */
361
- as: {
362
- ...primitiveProps.as,
363
- default: "button"
364
- }
365
- };
366
- const PopoverTrigger = defineComponent({
367
- name: "DestylerPopoverTrigger",
368
- props: popoverTriggerProps,
369
- setup() {
370
- const rootContext = injectPopoverRootContext();
371
- const { forwardRef, currentElement: triggerElement } = useForwardExpose();
372
- onMounted(() => {
373
- rootContext.triggerElement.value = triggerElement.value;
374
- });
375
- return {
376
- rootContext,
377
- forwardRef
378
- };
379
- },
380
- render() {
381
- return h(this.rootContext.hasCustomAnchor.value ? Primitive : PopperAnchor, {
382
- asChild: true
383
- }, () => h(Primitive, {
384
- "ref": (el) => this.forwardRef(el),
385
- "type": this.$props.as === "button" ? "button" : void 0,
386
- "as": this.$props.as,
387
- "aria-haspopup": "dialog",
388
- "asChild": this.$props.asChild,
389
- "aria-expanded": this.rootContext.open.value,
390
- "aria-controls": this.rootContext.contentId,
391
- "data-state": this.rootContext.open.value ? "open" : "closed",
392
- "onClick": () => {
393
- this.rootContext.onOpenToggle();
394
- }
395
- }, () => this.$slots.default?.()));
396
- }
397
- });
398
-
399
- export { PopoverArrow as P, PopoverClose as a, popoverCloseProps as b, PopoverContent as c, popoverContentProps as d, popoverContentEmits as e, PopoverContentImpl as f, popoverContentImplProps as g, popoverContentImplEmits as h, injectPopoverRootContext as i, PopoverContentModal as j, PopoverContentNonModal as k, PopoverPortal as l, popoverPortalProps as m, PopoverRoot as n, popoverRootProps as o, popoverArrowProps as p, popoverRootEmits as q, PopoverTrigger as r, popoverTriggerProps as s };