@destyler/popover 0.0.2 → 0.0.4

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,68 +1,69 @@
1
1
  import { defineComponent, h, mergeProps, toRef, ref, withDirectives, onMounted } from 'vue';
2
- import { DestylerPopperArrow, DestylerPopperRoot, DestylerPopperContent, DestylerPopperAnchor } from '@destyler/popper';
3
- import { DestylerPrimitive } from '@destyler/primitive';
2
+ import { popperArrowProps, PopperArrow, PopperRoot, popperContentProps, PopperContent, PopperAnchor } from '@destyler/popper';
3
+ import { primitiveProps, Primitive } from '@destyler/primitive';
4
4
  import { createContext } from '@destyler/shared';
5
5
  import { useVModel, useId, useForwardProps, useFocusGuards, useForwardPropsEmits, useForwardExpose, useHideOthers } from '@destyler/composition';
6
- import { DestylerPresence } from '@destyler/presence';
7
- import { DestylerDismissableLayer } from '@destyler/dismissable-layer';
8
- import { DestylerFocusScope } from '@destyler/focus-scope';
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';
9
10
  import { BindOnceDirective } from '@destyler/directives';
10
- import { DestylerTeleport } from '@destyler/teleport';
11
+ import { teleportPrimitiveProps, TeleportPrimitive } from '@destyler/teleport';
11
12
 
12
- const destylerPopoverArrowProps = {
13
- asChild: {
14
- type: Boolean,
15
- required: false,
16
- default: false
17
- },
18
- width: {
19
- type: Number,
20
- required: false,
21
- default: 5
22
- },
23
- height: {
24
- type: Number,
25
- required: false,
26
- default: 10
27
- },
28
- as: {
29
- type: [String, Object],
30
- required: false,
31
- default: "svg"
32
- }
13
+ const popoverArrowProps = {
14
+ ...popperArrowProps
33
15
  };
34
- const DestylerPopoverArrow = defineComponent({
16
+ const PopoverArrow = defineComponent({
35
17
  name: "DestylerPopoverArrow",
36
- props: destylerPopoverArrowProps,
18
+ props: popoverArrowProps,
37
19
  render() {
38
- return h(DestylerPopperArrow, mergeProps(this.$props, {}), {
39
- default: () => this.$slots.default?.()
40
- });
20
+ return h(PopperArrow, mergeProps(this.$props, {}), () => this.$slots.default?.());
41
21
  }
42
22
  });
43
23
 
44
24
  const [injectPopoverRootContext, providePopoverRootContext] = createContext("DestylerPopoverRoot");
45
- const destylerPopoverRootProps = {
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
+ */
46
31
  defaultOpen: {
47
32
  type: Boolean,
48
33
  required: false,
49
34
  default: false
50
35
  },
36
+ /**
37
+ * The controlled open state of the popover.
38
+ *
39
+ * @default undefined
40
+ */
51
41
  open: {
52
42
  type: Boolean,
53
43
  required: false,
54
44
  default: void 0
55
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
+ */
56
51
  modal: {
57
52
  type: Boolean,
58
53
  required: false,
59
54
  default: false
60
55
  }
61
56
  };
62
- const DestylerPopoverRoot = defineComponent({
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({
63
64
  name: "DestylerPopoverRoot",
64
- props: destylerPopoverRootProps,
65
- emits: ["update:open"],
65
+ props: popoverRootProps,
66
+ emits: popoverRootEmits,
66
67
  setup(props, { emit }) {
67
68
  const modalRef = toRef(props.modal);
68
69
  const openRef = useVModel(props, "open", emit, {
@@ -95,27 +96,23 @@ const DestylerPopoverRoot = defineComponent({
95
96
  };
96
97
  },
97
98
  render() {
98
- return h(DestylerPopperRoot, null, {
99
- default: () => this.$slots.default?.()
100
- });
99
+ return h(PopperRoot, null, () => this.$slots.default?.());
101
100
  }
102
101
  });
103
102
 
104
- const destylerPopoverCloseProps = {
105
- asChild: {
106
- type: Boolean,
107
- required: false,
108
- default: false
109
- },
103
+ const popoverCloseProps = {
104
+ ...primitiveProps,
105
+ /**
106
+ * @default button
107
+ */
110
108
  as: {
111
- type: [String, Object],
112
- required: false,
109
+ ...primitiveProps.as,
113
110
  default: "button"
114
111
  }
115
112
  };
116
- const DestylerPopoverClose = defineComponent({
113
+ const PopoverClose = defineComponent({
117
114
  name: "DestylerPopoverClose",
118
- props: destylerPopoverCloseProps,
115
+ props: popoverCloseProps,
119
116
  setup() {
120
117
  const rootContext = injectPopoverRootContext();
121
118
  return {
@@ -123,110 +120,45 @@ const DestylerPopoverClose = defineComponent({
123
120
  };
124
121
  },
125
122
  render() {
126
- return h(DestylerPrimitive, {
123
+ return h(Primitive, {
127
124
  as: this.$props.as,
128
125
  asChild: this.$props.asChild,
129
126
  type: this.$props.as === "button" ? "button" : void 0,
130
127
  onClick: () => {
131
128
  this.rootContext.onOpenChange(false);
132
129
  }
133
- }, {
134
- default: () => this.$slots.default?.()
135
- });
130
+ }, () => this.$slots.default?.());
136
131
  }
137
132
  });
138
133
 
139
- const destylerPopoverContentImplProps = {
140
- side: {
141
- type: String,
142
- required: false,
143
- default: "bottom"
144
- },
145
- sideOffset: {
146
- type: Number,
147
- required: false,
148
- default: 0
149
- },
150
- align: {
151
- type: String,
152
- required: false,
153
- default: "center"
154
- },
155
- alignOffset: {
156
- type: Number,
157
- required: false,
158
- default: 0
159
- },
160
- avoidCollisions: {
161
- type: Boolean,
162
- required: false,
163
- default: true
164
- },
165
- collisionBoundary: {
166
- type: [Object, Array, null],
167
- required: false,
168
- default: () => []
169
- },
170
- collisionPadding: {
171
- type: [Number, Object],
172
- required: false,
173
- default: 0
174
- },
175
- arrowPadding: {
176
- type: Number,
177
- required: false,
178
- default: 0
179
- },
180
- sticky: {
181
- type: String,
182
- required: false,
183
- default: "partial"
184
- },
185
- hideWhenDetached: {
186
- type: Boolean,
187
- required: false,
188
- default: false
189
- },
190
- updatePositionStrategy: {
191
- type: String,
192
- required: false,
193
- default: "optimized"
194
- },
195
- onPlaced: {
196
- type: Function,
197
- required: false
198
- },
199
- prioritizePosition: {
200
- type: Boolean,
201
- required: false,
202
- default: false
203
- },
204
- as: {
205
- type: [String, Object],
206
- required: false,
207
- default: "div"
208
- },
209
- asChild: {
210
- type: Boolean,
211
- required: false,
212
- default: false
213
- },
214
- disableOutsidePointerEvents: {
215
- type: Boolean,
216
- required: false,
217
- default: false
218
- },
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
+ */
219
141
  trapFocus: {
220
- type: Boolean,
221
- required: false,
222
- default: false
142
+ ...focusScopeProps.trapped
223
143
  }
224
144
  };
225
- const destylerPopoverContentImplEmits = ["escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "dismiss", "openAutoFocus", "closeAutoFocus"];
226
- const DestylerPopoverContentImpl = defineComponent({
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({
227
159
  name: "DestylerPopoverContentImpl",
228
- props: destylerPopoverContentImplProps,
229
- emits: destylerPopoverContentImplEmits,
160
+ props: popoverContentImplProps,
161
+ emits: popoverContentImplEmits,
230
162
  setup(props) {
231
163
  const forwarded = useForwardProps(props);
232
164
  const rootContext = injectPopoverRootContext();
@@ -237,7 +169,7 @@ const DestylerPopoverContentImpl = defineComponent({
237
169
  };
238
170
  },
239
171
  render() {
240
- return h(DestylerFocusScope, {
172
+ return h(FocusScope, {
241
173
  asChild: true,
242
174
  loop: true,
243
175
  trapped: this.$props.trapFocus,
@@ -247,7 +179,7 @@ const DestylerPopoverContentImpl = defineComponent({
247
179
  onUnmountAutoFocus: (event) => {
248
180
  this.$emit("closeAutoFocus", event);
249
181
  }
250
- }, h(DestylerDismissableLayer, {
182
+ }, () => h(DismissableLayer, {
251
183
  asChild: true,
252
184
  disableOutsidePointerEvents: this.$props.disableOutsidePointerEvents,
253
185
  onPointerDownOutside: (event) => {
@@ -265,28 +197,26 @@ const DestylerPopoverContentImpl = defineComponent({
265
197
  onDismiss: () => {
266
198
  this.rootContext.onOpenChange(false);
267
199
  }
268
- }, withDirectives(h(DestylerPopperContent, mergeProps(this.forwarded, {
200
+ }, () => withDirectives(h(PopperContent, mergeProps(this.forwarded, {
269
201
  "data-state": this.rootContext.open.value ? "open" : "closed",
270
202
  "role": "dialog",
271
203
  "style": {
272
- "--destyler_popover_content_transform_origin": "var(--destyler_popper_transform_origin)",
273
- "--destyler_popover_content_available_width": "var(--destyler_popper_available_width)",
274
- "--destyler_popover_content_available_height": "var(--destyler_popper_available_height)",
275
- "--destyler_popover_trigger_width": "var(--destyler_popper_anchor_width)",
276
- "--destyler_popover_trigger_height": "var(--destyler_popper_anchor_height)"
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)"
277
209
  }
278
- }), {
279
- default: () => this.$slots.default?.()
280
- }), [
210
+ }), () => this.$slots.default?.()), [
281
211
  [BindOnceDirective, { id: this.rootContext.contentId }]
282
212
  ])));
283
213
  }
284
214
  });
285
215
 
286
- const DestylerPopoverContentModal = defineComponent({
216
+ const PopoverContentModal = defineComponent({
287
217
  name: "DestylerPopoverContentModal",
288
- props: destylerPopoverContentImplProps,
289
- emits: destylerPopoverContentImplEmits,
218
+ props: popoverContentImplProps,
219
+ emits: popoverContentImplEmits,
290
220
  setup(props, { emit }) {
291
221
  const rootContext = injectPopoverRootContext();
292
222
  const isRightClickOutsideRef = ref(false);
@@ -301,7 +231,7 @@ const DestylerPopoverContentModal = defineComponent({
301
231
  };
302
232
  },
303
233
  render() {
304
- return h(DestylerPopoverContentImpl, {
234
+ return h(PopoverContentImpl, {
305
235
  ref: (el) => this.forwardRef(el),
306
236
  ...mergeProps(this.forwarded),
307
237
  trapFocus: this.rootContext.open.value,
@@ -318,16 +248,14 @@ const DestylerPopoverContentModal = defineComponent({
318
248
  const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
319
249
  this.isRightClickOutsideRef = isRightClick;
320
250
  }
321
- }, {
322
- default: () => this.$slots.default?.()
323
- });
251
+ }, () => this.$slots.default?.());
324
252
  }
325
253
  });
326
254
 
327
- const DestylerPopoverContentNonModal = defineComponent({
255
+ const PopoverContentNonModal = defineComponent({
328
256
  name: "DestylerPopoverContentNonModal",
329
- props: destylerPopoverContentImplProps,
330
- emits: destylerPopoverContentImplEmits,
257
+ props: popoverContentImplProps,
258
+ emits: popoverContentImplEmits,
331
259
  setup(props, { emit }) {
332
260
  const rootContext = injectPopoverRootContext();
333
261
  const hasInteractedOutsideRef = ref(false);
@@ -341,7 +269,7 @@ const DestylerPopoverContentNonModal = defineComponent({
341
269
  };
342
270
  },
343
271
  render() {
344
- return h(DestylerPopoverContentImpl, {
272
+ return h(PopoverContentImpl, {
345
273
  ...this.forwarded,
346
274
  trapFocus: false,
347
275
  disableOutsidePointerEvents: false,
@@ -369,25 +297,31 @@ const DestylerPopoverContentNonModal = defineComponent({
369
297
  if (event.detail.originalEvent.type === "focusin" && this.hasPointerDownOutsideRef)
370
298
  event.preventDefault();
371
299
  }
372
- }, {
373
- default: () => this.$slots.default?.()
374
- });
300
+ }, () => this.$slots.default?.());
375
301
  }
376
302
  });
377
303
 
378
- const destylerPopoverContentProps = {
379
- ...destylerPopoverContentImplProps,
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
+ */
380
312
  forceMount: {
381
313
  type: Boolean,
382
314
  required: false,
383
315
  default: false
384
316
  }
385
317
  };
386
- const destylerPopoverContentEmits = [...destylerPopoverContentImplEmits];
387
- const DestylerPopoverContent = defineComponent({
318
+ const popoverContentEmits = {
319
+ ...popoverContentImplEmits
320
+ };
321
+ const PopoverContent = defineComponent({
388
322
  name: "DestylerPopoverContent",
389
- props: destylerPopoverContentProps,
390
- emits: destylerPopoverContentEmits,
323
+ props: popoverContentProps,
324
+ emits: popoverContentEmits,
391
325
  setup(props, { emit }) {
392
326
  const rootContext = injectPopoverRootContext();
393
327
  const forwarded = useForwardPropsEmits(props, emit);
@@ -398,62 +332,40 @@ const DestylerPopoverContent = defineComponent({
398
332
  },
399
333
  render() {
400
334
  const useVShow = this.rootContext.modal.value;
401
- return h(DestylerPresence, {
335
+ return h(Presence, {
402
336
  present: this.forceMount || this.rootContext.open.value
403
- }, useVShow ? h(DestylerPopoverContentModal, {
337
+ }, () => useVShow ? h(PopoverContentModal, {
404
338
  ...this.forwarded
405
- }, {
406
- default: () => this.$slots.default?.()
407
- }) : h(DestylerPopoverContentNonModal, {
339
+ }, () => this.$slots.default?.()) : h(PopoverContentNonModal, {
408
340
  ...this.forwarded
409
- }, {
410
- default: () => this.$slots.default?.()
411
- }));
341
+ }, () => this.$slots.default?.()));
412
342
  }
413
343
  });
414
344
 
415
- const destylerPopoverPortalProps = {
416
- to: {
417
- type: [String, Object],
418
- required: false,
419
- default: "body"
420
- },
421
- disabled: {
422
- type: Boolean,
423
- required: false,
424
- default: false
425
- },
426
- forceMount: {
427
- type: Boolean,
428
- required: false,
429
- default: false
430
- }
345
+ const popoverPortalProps = {
346
+ ...teleportPrimitiveProps
431
347
  };
432
- const DestylerPopoverPortal = defineComponent({
348
+ const PopoverPortal = defineComponent({
433
349
  name: "DestylerPopoverPortal",
434
- props: destylerPopoverPortalProps,
350
+ props: popoverPortalProps,
435
351
  render() {
436
- return h(DestylerTeleport, mergeProps(this.$props), {
437
- default: () => this.$slots.default?.()
438
- });
352
+ return h(TeleportPrimitive, mergeProps(this.$props), () => this.$slots.default?.());
439
353
  }
440
354
  });
441
355
 
442
- const destylerPopoverTriggerProps = {
443
- asChild: {
444
- type: Boolean,
445
- required: false,
446
- default: false
447
- },
356
+ const popoverTriggerProps = {
357
+ ...primitiveProps,
358
+ /**
359
+ * @default button
360
+ */
448
361
  as: {
449
- type: [String, Object],
450
- required: false,
362
+ ...primitiveProps.as,
451
363
  default: "button"
452
364
  }
453
365
  };
454
- const DestylerPopoverTrigger = defineComponent({
366
+ const PopoverTrigger = defineComponent({
455
367
  name: "DestylerPopoverTrigger",
456
- props: destylerPopoverTriggerProps,
368
+ props: popoverTriggerProps,
457
369
  setup() {
458
370
  const rootContext = injectPopoverRootContext();
459
371
  const { forwardRef, currentElement: triggerElement } = useForwardExpose();
@@ -466,9 +378,9 @@ const DestylerPopoverTrigger = defineComponent({
466
378
  };
467
379
  },
468
380
  render() {
469
- return h(this.rootContext.hasCustomAnchor.value ? DestylerPrimitive : DestylerPopperAnchor, {
381
+ return h(this.rootContext.hasCustomAnchor.value ? Primitive : PopperAnchor, {
470
382
  asChild: true
471
- }, h(DestylerPrimitive, {
383
+ }, () => h(Primitive, {
472
384
  "ref": (el) => this.forwardRef(el),
473
385
  "type": this.$props.as === "button" ? "button" : void 0,
474
386
  "as": this.$props.as,
@@ -480,10 +392,8 @@ const DestylerPopoverTrigger = defineComponent({
480
392
  "onClick": () => {
481
393
  this.rootContext.onOpenToggle();
482
394
  }
483
- }, {
484
- default: () => this.$slots.default?.()
485
- }));
395
+ }, () => this.$slots.default?.()));
486
396
  }
487
397
  });
488
398
 
489
- export { DestylerPopoverArrow as D, DestylerPopoverClose as a, DestylerPopoverContent as b, DestylerPopoverContentImpl as c, DestylerPopoverContentModal as d, DestylerPopoverContentNonModal as e, DestylerPopoverPortal as f, DestylerPopoverRoot as g, DestylerPopoverTrigger as h, injectPopoverRootContext as i };
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 };