@destyler/popover 0.0.1-beta.9 → 0.0.2

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.
@@ -0,0 +1,48 @@
1
+ import { defineComponent, onBeforeMount, onUnmounted, h, mergeProps } from 'vue';
2
+ import { DestylerPopperAnchor } from '@destyler/popper';
3
+ import { i as injectPopoverRootContext } from './shared/popover.a25f925c.mjs';
4
+ export { D as DestylerPopoverArrow, a as DestylerPopoverClose, b as DestylerPopoverContent, c as DestylerPopoverContentImpl, d as DestylerPopoverContentModal, e as DestylerPopoverContentNonModal, f as DestylerPopoverPortal, g as DestylerPopoverRoot, h as DestylerPopoverTrigger } from './shared/popover.a25f925c.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/focus-scope';
11
+ import '@destyler/directives';
12
+ import '@destyler/teleport';
13
+
14
+ const destylerPopoverAnchorProps = {
15
+ as: {
16
+ type: [String, Object],
17
+ required: false,
18
+ default: "div"
19
+ },
20
+ asChild: {
21
+ type: Boolean,
22
+ required: false,
23
+ default: false
24
+ },
25
+ element: {
26
+ type: Object
27
+ }
28
+ };
29
+ const DestylerPopoverAnchor = defineComponent({
30
+ name: "DestylerPopoverAnchor",
31
+ props: destylerPopoverAnchorProps,
32
+ setup() {
33
+ const rootContext = injectPopoverRootContext();
34
+ onBeforeMount(() => {
35
+ rootContext.hasCustomAnchor.value = true;
36
+ });
37
+ onUnmounted(() => {
38
+ rootContext.hasCustomAnchor.value = false;
39
+ });
40
+ },
41
+ render() {
42
+ return h(DestylerPopperAnchor, mergeProps(this.$props, {}), {
43
+ default: () => this.$slots.default?.()
44
+ });
45
+ }
46
+ });
47
+
48
+ export { DestylerPopoverAnchor };
package/dist/index.cjs CHANGED
@@ -1,410 +1,22 @@
1
1
  'use strict';
2
2
 
3
- const vue = require('vue');
4
- const popper = require('@destyler/popper');
5
- const shared = require('@destyler/shared');
6
- const composition = require('@destyler/composition');
7
- const primitive = require('@destyler/primitive');
8
- const presence = require('@destyler/presence');
9
- const dismissableLayer = require('@destyler/dismissable-layer');
10
- const focusScope = require('@destyler/focus-scope');
11
- const directives = require('@destyler/directives');
12
- const teleport = require('@destyler/teleport');
13
-
14
- const [injectPopoverRootContext, providePopoverRootContext] = shared.createContext("DestylerPopoverRoot");
15
- const destylerPopoverRootProps = {
16
- defaultOpen: {
17
- type: Boolean,
18
- required: false,
19
- default: false
20
- },
21
- open: {
22
- type: Boolean,
23
- required: false,
24
- default: void 0
25
- },
26
- modal: {
27
- type: Boolean,
28
- required: false,
29
- default: false
30
- }
31
- };
32
- const DestylerPopoverRoot = vue.defineComponent({
33
- name: "DestylerPopoverRoot",
34
- props: destylerPopoverRootProps,
35
- emits: ["update:open"],
36
- setup(props, { emit }) {
37
- const modalRef = vue.toRef(props.modal);
38
- const openRef = composition.useVModel(props, "open", emit, {
39
- defaultValue: props.defaultOpen,
40
- passive: props.open === void 0
41
- });
42
- const triggerElement = vue.ref();
43
- const hasCustomAnchor = vue.ref(false);
44
- function handleUpdateOpen(value) {
45
- openRef.value = value;
46
- }
47
- providePopoverRootContext({
48
- contentId: composition.useId(),
49
- modal: modalRef,
50
- open: openRef,
51
- onOpenChange: (value) => {
52
- handleUpdateOpen(value);
53
- },
54
- onOpenToggle: () => {
55
- handleUpdateOpen(!openRef.value);
56
- },
57
- triggerElement,
58
- hasCustomAnchor
59
- });
60
- return {
61
- openRef,
62
- modalRef,
63
- triggerElement,
64
- hasCustomAnchor
65
- };
66
- },
67
- render() {
68
- return vue.h(popper.DestylerPopperRoot, this.$slots.default?.());
69
- }
70
- });
71
-
72
- const destylerPopoverAnchorProps = {
73
- ...popper.destylerPopperArrowProps
74
- };
75
- const DestylerPopoverAnchor = vue.defineComponent({
76
- name: "DestylerPopoverAnchor",
77
- props: destylerPopoverAnchorProps,
78
- setup() {
79
- const rootContext = injectPopoverRootContext();
80
- vue.onBeforeMount(() => {
81
- rootContext.hasCustomAnchor.value = true;
82
- });
83
- vue.onUnmounted(() => {
84
- rootContext.hasCustomAnchor.value = false;
85
- });
86
- },
87
- render() {
88
- return vue.h(popper.DestylerPopperAnchor, vue.mergeProps(this.$props, {}), this.$slots.default?.());
89
- }
90
- });
91
-
92
- const destylerPopoverArrowProps = {
93
- ...popper.destylerPopperArrowProps
94
- };
95
- const DestylerPopoverArrow = vue.defineComponent({
96
- name: "DestylerPopoverArrow",
97
- props: destylerPopoverArrowProps,
98
- render() {
99
- return vue.h(popper.DestylerPopperArrow, vue.mergeProps(this.$props, {}), this.$slots.default?.());
100
- }
101
- });
102
-
103
- const destylerPopoverCloseProps = {
104
- ...primitive.destylerPrimitiveProp,
105
- as: {
106
- type: [String, Object],
107
- required: false,
108
- default: "button"
109
- }
110
- };
111
- const DestylerPopoverClose = vue.defineComponent({
112
- name: "DestylerPopoverClose",
113
- props: destylerPopoverCloseProps,
114
- setup() {
115
- const rootContext = injectPopoverRootContext();
116
- return {
117
- rootContext
118
- };
119
- },
120
- render() {
121
- return vue.h(primitive.DestylerPrimitive, {
122
- as: this.$props.as,
123
- asChild: this.$props.asChild,
124
- type: this.$props.as === "button" ? "button" : void 0,
125
- onClick: () => {
126
- this.rootContext.onOpenChange(false);
127
- }
128
- }, this.$slots.default?.());
129
- }
130
- });
131
-
132
- const destylerPopoverContentImplProps = {
133
- ...popper.destylerPopperContentProps,
134
- ...dismissableLayer.destylerDismissableLayerProps,
135
- trapFocus: {
136
- type: Boolean,
137
- required: false,
138
- default: false
139
- }
140
- };
141
- const destylerPopoverContentImplEmits = ["escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "dismiss", "openAutoFocus", "closeAutoFocus"];
142
- const DestylerPopoverContentImpl = vue.defineComponent({
143
- name: "DestylerPopoverContentImpl",
144
- props: destylerPopoverContentImplProps,
145
- emits: destylerPopoverContentImplEmits,
146
- setup(props) {
147
- const forwarded = composition.useForwardProps(props);
148
- const rootContext = injectPopoverRootContext();
149
- composition.useFocusGuards();
150
- return {
151
- rootContext,
152
- forwarded
153
- };
154
- },
155
- render() {
156
- return vue.h(focusScope.DestylerFocusScope, {
157
- asChild: this.$props.asChild,
158
- loop: true,
159
- trapped: this.$props.trapFocus,
160
- onMountAutoFocus: (event) => {
161
- this.$emit("openAutoFocus", event);
162
- },
163
- onUnmountAutoFocus: (event) => {
164
- this.$emit("closeAutoFocus", event);
165
- }
166
- }, vue.h(dismissableLayer.DestylerDismissableLayer, {
167
- asChild: this.$props.asChild,
168
- disableOutsidePointerEvents: this.$props.disableOutsidePointerEvents,
169
- onPointerDownOutside: (event) => {
170
- this.$emit("pointerDownOutside", event);
171
- },
172
- onInteractOutside: (event) => {
173
- this.$emit("interactOutside", event);
174
- },
175
- onEscapeKeyDown: (event) => {
176
- this.$emit("escapeKeyDown", event);
177
- },
178
- onFocusOutside: (event) => {
179
- this.$emit("focusOutside", event);
180
- },
181
- onDismiss: () => {
182
- this.rootContext.onOpenChange(false);
183
- }
184
- }, vue.withDirectives(vue.h(popper.DestylerPopperContent, vue.mergeProps(this.forwarded, {
185
- "data-state": this.rootContext.open.value ? "open" : "closed",
186
- "role": "dialog",
187
- "style": {
188
- "--destyler_popover_content_transform_origin": "var(--destyler_popper_transform_origin)",
189
- "--destyler_popover_content_available_width": "var(--destyler_popper_available_width)",
190
- "--destyler_popover_content_available_height": "var(--destyler_popper_available_height)",
191
- "--destyler_popover_trigger_width": "var(--destyler_popper_anchor_width)",
192
- "--destyler_popover_trigger_height": "var(--destyler_popper_anchor_height)"
193
- }
194
- }), this.$slots.default?.()), [
195
- [directives.BindOnceDirective, { id: this.rootContext.contentId }]
196
- ])));
197
- }
198
- });
199
-
200
- const DestylerPopoverContentModal = vue.defineComponent({
201
- name: "DestylerPopoverContentModal",
202
- props: destylerPopoverContentImplProps,
203
- emits: destylerPopoverContentImplEmits,
204
- setup(props, { emit }) {
205
- const rootContext = injectPopoverRootContext();
206
- const isRightClickOutsideRef = vue.ref(false);
207
- const forwarded = composition.useForwardPropsEmits(props, emit);
208
- const { customElement, currentElement } = composition.useCustomElement();
209
- composition.useHideOthers(currentElement);
210
- return {
211
- rootContext,
212
- forwarded,
213
- isRightClickOutsideRef,
214
- customElement
215
- };
216
- },
217
- render() {
218
- return vue.h(DestylerPopoverContentImpl, {
219
- "ref": "customElement",
220
- ...vue.mergeProps(this.forwarded),
221
- "trapFocus": this.rootContext.open.value,
222
- "disable-outside-pointer-events": "",
223
- "onCloseAutoFocusPrevent": (event) => {
224
- this.$emit("closeAutoFocus", event);
225
- if (!this.isRightClickOutsideRef)
226
- this.rootContext.triggerElement.value?.focus();
227
- },
228
- "onPointerDownOutside": (event) => {
229
- this.$emit("pointerDownOutside", event);
230
- const originalEvent = event.detail.originalEvent;
231
- const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
232
- const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
233
- this.isRightClickOutsideRef = isRightClick;
234
- }
235
- }, this.$slots.default?.());
236
- }
237
- });
238
-
239
- const DestylerPopoverContentNonModal = vue.defineComponent({
240
- name: "DestylerPopoverContentNonModal",
241
- props: destylerPopoverContentImplProps,
242
- emits: destylerPopoverContentImplEmits,
243
- setup(props, { emit }) {
244
- const rootContext = injectPopoverRootContext();
245
- const hasInteractedOutsideRef = vue.ref(false);
246
- const hasPointerDownOutsideRef = vue.ref(false);
247
- const forwarded = composition.useForwardPropsEmits(props, emit);
248
- return {
249
- forwarded,
250
- rootContext,
251
- hasInteractedOutsideRef,
252
- hasPointerDownOutsideRef
253
- };
254
- },
255
- render() {
256
- return vue.h(DestylerPopoverContentImpl, {
257
- ...vue.mergeProps(this.forwarded),
258
- trapFocus: false,
259
- disableOutsidePointerEvents: false,
260
- onCloseAutoFocus: (event) => {
261
- this.$emit("closeAutoFocus", event);
262
- if (!event.defaultPrevented) {
263
- if (!this.hasInteractedOutsideRef)
264
- this.rootContext.triggerElement.value?.focus();
265
- event.preventDefault();
266
- }
267
- this.hasInteractedOutsideRef = false;
268
- this.hasPointerDownOutsideRef = false;
269
- },
270
- onInteractOutside: async (event) => {
271
- this.$emit("interactOutside", event);
272
- if (!event.defaultPrevented) {
273
- this.hasInteractedOutsideRef = true;
274
- if (event.detail.originalEvent.type === "pointerdown")
275
- this.hasPointerDownOutsideRef = true;
276
- }
277
- const target = event.target;
278
- const targetIsTrigger = this.rootContext.triggerElement.value?.contains(target);
279
- if (targetIsTrigger)
280
- event.preventDefault();
281
- if (event.detail.originalEvent.type === "focusin" && this.hasPointerDownOutsideRef)
282
- event.preventDefault();
283
- }
284
- }, this.$slots.default?.());
285
- }
286
- });
287
-
288
- const destylerPopoverContentProps = {
289
- ...destylerPopoverContentImplProps,
290
- forceMount: {
291
- type: Boolean,
292
- required: false,
293
- default: false
294
- }
295
- };
296
- const destylerPopoverContentEmits = [...destylerPopoverContentImplEmits];
297
- const DestylerPopoverContent = vue.defineComponent({
298
- name: "DestylerPopoverContent",
299
- props: destylerPopoverContentProps,
300
- emits: destylerPopoverContentEmits,
301
- setup(props, { emit }) {
302
- const rootContext = injectPopoverRootContext();
303
- const forwarded = composition.useForwardPropsEmits(props, emit);
304
- return {
305
- rootContext,
306
- forwarded
307
- };
308
- },
309
- render() {
310
- const useVShow = this.rootContext.modal.value;
311
- return vue.h(presence.DestylerPresence, {
312
- present: this.forceMount || this.rootContext.open.value
313
- }, useVShow ? vue.h(DestylerPopoverContentModal, {
314
- ...this.forwarded,
315
- ...vue.mergeProps(this.$attrs)
316
- }, this.$slots.default?.()) : vue.h(DestylerPopoverContentNonModal, {
317
- ...this.forwarded,
318
- ...vue.mergeProps(this.$attrs)
319
- }, this.$slots.default?.()));
320
- }
321
- });
322
-
323
- const destylerPopoverPortalProps = {
324
- ...teleport.destylerTeleportProps
325
- };
326
- const DestylerPopoverPortal = vue.defineComponent({
327
- name: "DestylerPopoverPortal",
328
- props: destylerPopoverPortalProps,
329
- render() {
330
- return vue.h(teleport.DestylerTeleport, vue.mergeProps(this.$props), this.$slots.default?.());
331
- }
332
- });
333
-
334
- const destylerPopoverTriggerProps = {
335
- ...primitive.destylerPrimitiveProp,
336
- as: {
337
- type: [String, Object],
338
- required: false,
339
- default: "button"
340
- }
341
- };
342
- const DestylerPopoverTrigger = vue.defineComponent({
343
- name: "DestylerPopoverTrigger",
344
- props: destylerPopoverTriggerProps,
345
- setup() {
346
- const rootContext = injectPopoverRootContext();
347
- const { customElement, currentElement: triggerElement } = composition.useCustomElement();
348
- vue.onMounted(() => {
349
- rootContext.triggerElement.value = triggerElement.value;
350
- });
351
- return {
352
- rootContext,
353
- customElement
354
- };
355
- },
356
- render() {
357
- return vue.h(this.rootContext.hasCustomAnchor.value ? primitive.DestylerPrimitive : popper.DestylerPopperAnchor, {
358
- asChild: true
359
- }, vue.h(primitive.DestylerPrimitive, {
360
- "ref": "customElement",
361
- "type": this.$props.as === "button" ? "button" : void 0,
362
- "as": this.$props.as,
363
- "aria-haspopup": "dialog",
364
- "asChild": this.$props.asChild,
365
- "aria-expanded": this.rootContext.open.value,
366
- "aria-controls": this.rootContext.contentId,
367
- "data-state": this.rootContext.open.value ? "open" : "closed",
368
- "onClick": () => {
369
- this.rootContext.onOpenToggle();
370
- }
371
- }, this.$slots.default?.()));
372
- }
373
- });
374
-
375
- const name = "@destyler/popover";
376
-
377
- const packageName = name;
378
- function DestylerPopoverResolver() {
379
- return {
380
- type: "component",
381
- resolve: (name2) => {
382
- if (name2 === "DestylerPopover")
383
- return { name: name2, from: packageName };
384
- }
385
- };
386
- }
387
-
388
- exports.DestylerPopoverAnchor = DestylerPopoverAnchor;
389
- exports.DestylerPopoverArrow = DestylerPopoverArrow;
390
- exports.DestylerPopoverClose = DestylerPopoverClose;
391
- exports.DestylerPopoverContent = DestylerPopoverContent;
392
- exports.DestylerPopoverContentImpl = DestylerPopoverContentImpl;
393
- exports.DestylerPopoverContentModal = DestylerPopoverContentModal;
394
- exports.DestylerPopoverContentNonModal = DestylerPopoverContentNonModal;
395
- exports.DestylerPopoverPortal = DestylerPopoverPortal;
396
- exports.DestylerPopoverResolver = DestylerPopoverResolver;
397
- exports.DestylerPopoverRoot = DestylerPopoverRoot;
398
- exports.DestylerPopoverTrigger = DestylerPopoverTrigger;
399
- exports.destylerPopoverAnchorProps = destylerPopoverAnchorProps;
400
- exports.destylerPopoverArrowProps = destylerPopoverArrowProps;
401
- exports.destylerPopoverCloseProps = destylerPopoverCloseProps;
402
- exports.destylerPopoverContentEmits = destylerPopoverContentEmits;
403
- exports.destylerPopoverContentImplEmits = destylerPopoverContentImplEmits;
404
- exports.destylerPopoverContentImplProps = destylerPopoverContentImplProps;
405
- exports.destylerPopoverContentProps = destylerPopoverContentProps;
406
- exports.destylerPopoverPortalProps = destylerPopoverPortalProps;
407
- exports.destylerPopoverRootProps = destylerPopoverRootProps;
408
- exports.destylerPopoverTriggerProps = destylerPopoverTriggerProps;
409
- exports.injectPopoverRootContext = injectPopoverRootContext;
410
- exports.providePopoverRootContext = providePopoverRootContext;
3
+ const index = require('./shared/popover.f0fbccbe.cjs');
4
+ require('vue');
5
+ require('@destyler/popper');
6
+ require('@destyler/primitive');
7
+ require('@destyler/shared');
8
+ require('@destyler/composition');
9
+ require('@destyler/presence');
10
+ require('@destyler/dismissable-layer');
11
+ require('@destyler/focus-scope');
12
+ require('@destyler/directives');
13
+ require('@destyler/teleport');
14
+
15
+
16
+
17
+ exports.DestylerPopoverArrow = index.DestylerPopoverArrow;
18
+ exports.DestylerPopoverClose = index.DestylerPopoverClose;
19
+ exports.DestylerPopoverContent = index.DestylerPopoverContent;
20
+ exports.DestylerPopoverPortal = index.DestylerPopoverPortal;
21
+ exports.DestylerPopoverRoot = index.DestylerPopoverRoot;
22
+ exports.DestylerPopoverTrigger = index.DestylerPopoverTrigger;