@destyler/popover 0.0.3 → 0.0.5

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.
@@ -7,62 +7,65 @@ const shared = require('@destyler/shared');
7
7
  const composition = require('@destyler/composition');
8
8
  const presence = require('@destyler/presence');
9
9
  const dismissableLayer = require('@destyler/dismissable-layer');
10
+ const component = require('@destyler/dismissable-layer/component');
10
11
  const focusScope = require('@destyler/focus-scope');
11
12
  const directives = require('@destyler/directives');
12
13
  const teleport = require('@destyler/teleport');
13
14
 
14
- const destylerPopoverArrowProps = {
15
- asChild: {
16
- type: Boolean,
17
- required: false,
18
- default: false
19
- },
20
- width: {
21
- type: Number,
22
- required: false,
23
- default: 5
24
- },
25
- height: {
26
- type: Number,
27
- required: false,
28
- default: 10
29
- },
30
- as: {
31
- type: [String, Object],
32
- required: false,
33
- default: "svg"
34
- }
15
+ const popoverArrowProps = {
16
+ ...popper.popperArrowProps
35
17
  };
36
- const DestylerPopoverArrow = vue.defineComponent({
18
+ const PopoverArrow = vue.defineComponent({
37
19
  name: "DestylerPopoverArrow",
38
- props: destylerPopoverArrowProps,
20
+ props: popoverArrowProps,
39
21
  render() {
40
- return vue.h(popper.DestylerPopperArrow, vue.mergeProps(this.$props, {}), () => this.$slots.default?.());
22
+ return vue.h(popper.PopperArrow, vue.mergeProps(this.$props, {}), () => this.$slots.default?.());
41
23
  }
42
24
  });
43
25
 
44
26
  const [injectPopoverRootContext, providePopoverRootContext] = shared.createContext("DestylerPopoverRoot");
45
- const destylerPopoverRootProps = {
27
+ const popoverRootProps = {
28
+ /**
29
+ * The open state of the popover when it is initially rendered. Use when you do not need to control its open state.
30
+ *
31
+ * @default false
32
+ */
46
33
  defaultOpen: {
47
34
  type: Boolean,
48
35
  required: false,
49
36
  default: false
50
37
  },
38
+ /**
39
+ * The controlled open state of the popover.
40
+ *
41
+ * @default undefined
42
+ */
51
43
  open: {
52
44
  type: Boolean,
53
45
  required: false,
54
46
  default: void 0
55
47
  },
48
+ /**
49
+ * 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.
50
+ *
51
+ * @default false
52
+ */
56
53
  modal: {
57
54
  type: Boolean,
58
55
  required: false,
59
56
  default: false
60
57
  }
61
58
  };
62
- const DestylerPopoverRoot = vue.defineComponent({
59
+ const popoverRootEmits = {
60
+ /**
61
+ * Event handler called when the open state of the popover changes.
62
+ */
63
+ "update:open": (_value) => true
64
+ };
65
+ const PopoverRoot = vue.defineComponent({
63
66
  name: "DestylerPopoverRoot",
64
- props: destylerPopoverRootProps,
65
- emits: ["update:open"],
67
+ props: popoverRootProps,
68
+ emits: popoverRootEmits,
66
69
  setup(props, { emit }) {
67
70
  const modalRef = vue.toRef(props.modal);
68
71
  const openRef = composition.useVModel(props, "open", emit, {
@@ -95,25 +98,23 @@ const DestylerPopoverRoot = vue.defineComponent({
95
98
  };
96
99
  },
97
100
  render() {
98
- return vue.h(popper.DestylerPopperRoot, null, () => this.$slots.default?.());
101
+ return vue.h(popper.PopperRoot, null, () => this.$slots.default?.());
99
102
  }
100
103
  });
101
104
 
102
- const destylerPopoverCloseProps = {
103
- asChild: {
104
- type: Boolean,
105
- required: false,
106
- default: false
107
- },
105
+ const popoverCloseProps = {
106
+ ...primitive.primitiveProps,
107
+ /**
108
+ * @default button
109
+ */
108
110
  as: {
109
- type: [String, Object],
110
- required: false,
111
+ ...primitive.primitiveProps.as,
111
112
  default: "button"
112
113
  }
113
114
  };
114
- const DestylerPopoverClose = vue.defineComponent({
115
+ const PopoverClose = vue.defineComponent({
115
116
  name: "DestylerPopoverClose",
116
- props: destylerPopoverCloseProps,
117
+ props: popoverCloseProps,
117
118
  setup() {
118
119
  const rootContext = injectPopoverRootContext();
119
120
  return {
@@ -121,7 +122,7 @@ const DestylerPopoverClose = vue.defineComponent({
121
122
  };
122
123
  },
123
124
  render() {
124
- return vue.h(primitive.DestylerPrimitive, {
125
+ return vue.h(primitive.Primitive, {
125
126
  as: this.$props.as,
126
127
  asChild: this.$props.asChild,
127
128
  type: this.$props.as === "button" ? "button" : void 0,
@@ -132,97 +133,34 @@ const DestylerPopoverClose = vue.defineComponent({
132
133
  }
133
134
  });
134
135
 
135
- const destylerPopoverContentImplProps = {
136
- side: {
137
- type: String,
138
- required: false,
139
- default: "bottom"
140
- },
141
- sideOffset: {
142
- type: Number,
143
- required: false,
144
- default: 0
145
- },
146
- align: {
147
- type: String,
148
- required: false,
149
- default: "center"
150
- },
151
- alignOffset: {
152
- type: Number,
153
- required: false,
154
- default: 0
155
- },
156
- avoidCollisions: {
157
- type: Boolean,
158
- required: false,
159
- default: true
160
- },
161
- collisionBoundary: {
162
- type: [Object, Array, null],
163
- required: false,
164
- default: () => []
165
- },
166
- collisionPadding: {
167
- type: [Number, Object],
168
- required: false,
169
- default: 0
170
- },
171
- arrowPadding: {
172
- type: Number,
173
- required: false,
174
- default: 0
175
- },
176
- sticky: {
177
- type: String,
178
- required: false,
179
- default: "partial"
180
- },
181
- hideWhenDetached: {
182
- type: Boolean,
183
- required: false,
184
- default: false
185
- },
186
- updatePositionStrategy: {
187
- type: String,
188
- required: false,
189
- default: "optimized"
190
- },
191
- onPlaced: {
192
- type: Function,
193
- required: false
194
- },
195
- prioritizePosition: {
196
- type: Boolean,
197
- required: false,
198
- default: false
199
- },
200
- as: {
201
- type: [String, Object],
202
- required: false,
203
- default: "div"
204
- },
205
- asChild: {
206
- type: Boolean,
207
- required: false,
208
- default: false
209
- },
210
- disableOutsidePointerEvents: {
211
- type: Boolean,
212
- required: false,
213
- default: false
214
- },
136
+ const popoverContentImplProps = {
137
+ ...popper.popperContentProps,
138
+ ...dismissableLayer.dismissableLayerProps,
139
+ /**
140
+ * Used to force mounting when more control is needed. Useful when
141
+ * controlling animation with Vue animation libraries.
142
+ */
215
143
  trapFocus: {
216
- type: Boolean,
217
- required: false,
218
- default: false
144
+ ...focusScope.focusScopeProps.trapped
219
145
  }
220
146
  };
221
- const destylerPopoverContentImplEmits = ["escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "dismiss", "openAutoFocus", "closeAutoFocus"];
222
- const DestylerPopoverContentImpl = vue.defineComponent({
147
+ const popoverContentImplEmits = {
148
+ ...component.dismissableLayerEmits,
149
+ /**
150
+ * Event handler called when auto-focusing on open.
151
+ * Can be prevented.
152
+ */
153
+ openAutoFocus: (_event) => true,
154
+ /**
155
+ * Event handler called when auto-focusing on close.
156
+ * Can be prevented.
157
+ */
158
+ closeAutoFocus: (_event) => true
159
+ };
160
+ const PopoverContentImpl = vue.defineComponent({
223
161
  name: "DestylerPopoverContentImpl",
224
- props: destylerPopoverContentImplProps,
225
- emits: destylerPopoverContentImplEmits,
162
+ props: popoverContentImplProps,
163
+ emits: popoverContentImplEmits,
226
164
  setup(props) {
227
165
  const forwarded = composition.useForwardProps(props);
228
166
  const rootContext = injectPopoverRootContext();
@@ -233,7 +171,7 @@ const DestylerPopoverContentImpl = vue.defineComponent({
233
171
  };
234
172
  },
235
173
  render() {
236
- return vue.h(focusScope.DestylerFocusScope, {
174
+ return vue.h(focusScope.FocusScope, {
237
175
  asChild: true,
238
176
  loop: true,
239
177
  trapped: this.$props.trapFocus,
@@ -243,7 +181,7 @@ const DestylerPopoverContentImpl = vue.defineComponent({
243
181
  onUnmountAutoFocus: (event) => {
244
182
  this.$emit("closeAutoFocus", event);
245
183
  }
246
- }, () => vue.h(dismissableLayer.DestylerDismissableLayer, {
184
+ }, () => vue.h(dismissableLayer.DismissableLayer, {
247
185
  asChild: true,
248
186
  disableOutsidePointerEvents: this.$props.disableOutsidePointerEvents,
249
187
  onPointerDownOutside: (event) => {
@@ -261,15 +199,15 @@ const DestylerPopoverContentImpl = vue.defineComponent({
261
199
  onDismiss: () => {
262
200
  this.rootContext.onOpenChange(false);
263
201
  }
264
- }, () => vue.withDirectives(vue.h(popper.DestylerPopperContent, vue.mergeProps(this.forwarded, {
202
+ }, () => vue.withDirectives(vue.h(popper.PopperContent, vue.mergeProps(this.forwarded, {
265
203
  "data-state": this.rootContext.open.value ? "open" : "closed",
266
204
  "role": "dialog",
267
205
  "style": {
268
- "--destyler_popover_content_transform_origin": "var(--destyler_popper_transform_origin)",
269
- "--destyler_popover_content_available_width": "var(--destyler_popper_available_width)",
270
- "--destyler_popover_content_available_height": "var(--destyler_popper_available_height)",
271
- "--destyler_popover_trigger_width": "var(--destyler_popper_anchor_width)",
272
- "--destyler_popover_trigger_height": "var(--destyler_popper_anchor_height)"
206
+ "--destyler-popover-content-transform-origin": "var(--destyler-popper-transform-origin)",
207
+ "--destyler-popover-content-available-width": "var(--destyler-popper-available-width)",
208
+ "--destyler-popover-content-available-height": "var(--destyler-popper-available-height)",
209
+ "--destyler-popover-trigger-width": "var(--destyler-popper-anchor-width)",
210
+ "--destyler-popover-trigger-height": "var(--destyler-popper-anchor-height)"
273
211
  }
274
212
  }), () => this.$slots.default?.()), [
275
213
  [directives.BindOnceDirective, { id: this.rootContext.contentId }]
@@ -277,10 +215,10 @@ const DestylerPopoverContentImpl = vue.defineComponent({
277
215
  }
278
216
  });
279
217
 
280
- const DestylerPopoverContentModal = vue.defineComponent({
218
+ const PopoverContentModal = vue.defineComponent({
281
219
  name: "DestylerPopoverContentModal",
282
- props: destylerPopoverContentImplProps,
283
- emits: destylerPopoverContentImplEmits,
220
+ props: popoverContentImplProps,
221
+ emits: popoverContentImplEmits,
284
222
  setup(props, { emit }) {
285
223
  const rootContext = injectPopoverRootContext();
286
224
  const isRightClickOutsideRef = vue.ref(false);
@@ -295,7 +233,7 @@ const DestylerPopoverContentModal = vue.defineComponent({
295
233
  };
296
234
  },
297
235
  render() {
298
- return vue.h(DestylerPopoverContentImpl, {
236
+ return vue.h(PopoverContentImpl, {
299
237
  ref: (el) => this.forwardRef(el),
300
238
  ...vue.mergeProps(this.forwarded),
301
239
  trapFocus: this.rootContext.open.value,
@@ -316,10 +254,10 @@ const DestylerPopoverContentModal = vue.defineComponent({
316
254
  }
317
255
  });
318
256
 
319
- const DestylerPopoverContentNonModal = vue.defineComponent({
257
+ const PopoverContentNonModal = vue.defineComponent({
320
258
  name: "DestylerPopoverContentNonModal",
321
- props: destylerPopoverContentImplProps,
322
- emits: destylerPopoverContentImplEmits,
259
+ props: popoverContentImplProps,
260
+ emits: popoverContentImplEmits,
323
261
  setup(props, { emit }) {
324
262
  const rootContext = injectPopoverRootContext();
325
263
  const hasInteractedOutsideRef = vue.ref(false);
@@ -333,7 +271,7 @@ const DestylerPopoverContentNonModal = vue.defineComponent({
333
271
  };
334
272
  },
335
273
  render() {
336
- return vue.h(DestylerPopoverContentImpl, {
274
+ return vue.h(PopoverContentImpl, {
337
275
  ...this.forwarded,
338
276
  trapFocus: false,
339
277
  disableOutsidePointerEvents: false,
@@ -365,19 +303,27 @@ const DestylerPopoverContentNonModal = vue.defineComponent({
365
303
  }
366
304
  });
367
305
 
368
- const destylerPopoverContentProps = {
369
- ...destylerPopoverContentImplProps,
306
+ const popoverContentProps = {
307
+ ...popoverContentImplProps,
308
+ /**
309
+ * Used to force mounting when more control is needed. Useful when
310
+ * controlling animation with Vue animation libraries.
311
+ *
312
+ * @default false
313
+ */
370
314
  forceMount: {
371
315
  type: Boolean,
372
316
  required: false,
373
317
  default: false
374
318
  }
375
319
  };
376
- const destylerPopoverContentEmits = [...destylerPopoverContentImplEmits];
377
- const DestylerPopoverContent = vue.defineComponent({
320
+ const popoverContentEmits = {
321
+ ...popoverContentImplEmits
322
+ };
323
+ const PopoverContent = vue.defineComponent({
378
324
  name: "DestylerPopoverContent",
379
- props: destylerPopoverContentProps,
380
- emits: destylerPopoverContentEmits,
325
+ props: popoverContentProps,
326
+ emits: popoverContentEmits,
381
327
  setup(props, { emit }) {
382
328
  const rootContext = injectPopoverRootContext();
383
329
  const forwarded = composition.useForwardPropsEmits(props, emit);
@@ -388,56 +334,40 @@ const DestylerPopoverContent = vue.defineComponent({
388
334
  },
389
335
  render() {
390
336
  const useVShow = this.rootContext.modal.value;
391
- return vue.h(presence.DestylerPresence, {
337
+ return vue.h(presence.Presence, {
392
338
  present: this.forceMount || this.rootContext.open.value
393
- }, () => useVShow ? vue.h(DestylerPopoverContentModal, {
339
+ }, () => useVShow ? vue.h(PopoverContentModal, {
394
340
  ...this.forwarded
395
- }, () => this.$slots.default?.()) : vue.h(DestylerPopoverContentNonModal, {
341
+ }, () => this.$slots.default?.()) : vue.h(PopoverContentNonModal, {
396
342
  ...this.forwarded
397
343
  }, () => this.$slots.default?.()));
398
344
  }
399
345
  });
400
346
 
401
- const destylerPopoverPortalProps = {
402
- to: {
403
- type: [String, Object],
404
- required: false,
405
- default: "body"
406
- },
407
- disabled: {
408
- type: Boolean,
409
- required: false,
410
- default: false
411
- },
412
- forceMount: {
413
- type: Boolean,
414
- required: false,
415
- default: false
416
- }
347
+ const popoverPortalProps = {
348
+ ...teleport.teleportPrimitiveProps
417
349
  };
418
- const DestylerPopoverPortal = vue.defineComponent({
350
+ const PopoverPortal = vue.defineComponent({
419
351
  name: "DestylerPopoverPortal",
420
- props: destylerPopoverPortalProps,
352
+ props: popoverPortalProps,
421
353
  render() {
422
- return vue.h(teleport.DestylerTeleport, vue.mergeProps(this.$props), () => this.$slots.default?.());
354
+ return vue.h(teleport.TeleportPrimitive, vue.mergeProps(this.$props), () => this.$slots.default?.());
423
355
  }
424
356
  });
425
357
 
426
- const destylerPopoverTriggerProps = {
427
- asChild: {
428
- type: Boolean,
429
- required: false,
430
- default: false
431
- },
358
+ const popoverTriggerProps = {
359
+ ...primitive.primitiveProps,
360
+ /**
361
+ * @default button
362
+ */
432
363
  as: {
433
- type: [String, Object],
434
- required: false,
364
+ ...primitive.primitiveProps.as,
435
365
  default: "button"
436
366
  }
437
367
  };
438
- const DestylerPopoverTrigger = vue.defineComponent({
368
+ const PopoverTrigger = vue.defineComponent({
439
369
  name: "DestylerPopoverTrigger",
440
- props: destylerPopoverTriggerProps,
370
+ props: popoverTriggerProps,
441
371
  setup() {
442
372
  const rootContext = injectPopoverRootContext();
443
373
  const { forwardRef, currentElement: triggerElement } = composition.useForwardExpose();
@@ -450,9 +380,9 @@ const DestylerPopoverTrigger = vue.defineComponent({
450
380
  };
451
381
  },
452
382
  render() {
453
- return vue.h(this.rootContext.hasCustomAnchor.value ? primitive.DestylerPrimitive : popper.DestylerPopperAnchor, {
383
+ return vue.h(this.rootContext.hasCustomAnchor.value ? primitive.Primitive : popper.PopperAnchor, {
454
384
  asChild: true
455
- }, () => vue.h(primitive.DestylerPrimitive, {
385
+ }, () => vue.h(primitive.Primitive, {
456
386
  "ref": (el) => this.forwardRef(el),
457
387
  "type": this.$props.as === "button" ? "button" : void 0,
458
388
  "as": this.$props.as,
@@ -468,13 +398,23 @@ const DestylerPopoverTrigger = vue.defineComponent({
468
398
  }
469
399
  });
470
400
 
471
- exports.DestylerPopoverArrow = DestylerPopoverArrow;
472
- exports.DestylerPopoverClose = DestylerPopoverClose;
473
- exports.DestylerPopoverContent = DestylerPopoverContent;
474
- exports.DestylerPopoverContentImpl = DestylerPopoverContentImpl;
475
- exports.DestylerPopoverContentModal = DestylerPopoverContentModal;
476
- exports.DestylerPopoverContentNonModal = DestylerPopoverContentNonModal;
477
- exports.DestylerPopoverPortal = DestylerPopoverPortal;
478
- exports.DestylerPopoverRoot = DestylerPopoverRoot;
479
- exports.DestylerPopoverTrigger = DestylerPopoverTrigger;
401
+ exports.PopoverArrow = PopoverArrow;
402
+ exports.PopoverClose = PopoverClose;
403
+ exports.PopoverContent = PopoverContent;
404
+ exports.PopoverContentImpl = PopoverContentImpl;
405
+ exports.PopoverContentModal = PopoverContentModal;
406
+ exports.PopoverContentNonModal = PopoverContentNonModal;
407
+ exports.PopoverPortal = PopoverPortal;
408
+ exports.PopoverRoot = PopoverRoot;
409
+ exports.PopoverTrigger = PopoverTrigger;
480
410
  exports.injectPopoverRootContext = injectPopoverRootContext;
411
+ exports.popoverArrowProps = popoverArrowProps;
412
+ exports.popoverCloseProps = popoverCloseProps;
413
+ exports.popoverContentEmits = popoverContentEmits;
414
+ exports.popoverContentImplEmits = popoverContentImplEmits;
415
+ exports.popoverContentImplProps = popoverContentImplProps;
416
+ exports.popoverContentProps = popoverContentProps;
417
+ exports.popoverPortalProps = popoverPortalProps;
418
+ exports.popoverRootEmits = popoverRootEmits;
419
+ exports.popoverRootProps = popoverRootProps;
420
+ exports.popoverTriggerProps = popoverTriggerProps;
package/package.json CHANGED
@@ -1,25 +1,22 @@
1
1
  {
2
2
  "name": "@destyler/popover",
3
3
  "type": "module",
4
- "version": "0.0.3",
5
- "description": "unstyled popover component for vue",
4
+ "version": "0.0.5",
5
+ "description": "displays rich content in a portal, triggered by a button.",
6
6
  "author": "Elone Hoo <elonehoo@gmail.com>",
7
7
  "license": "MIT",
8
8
  "exports": {
9
9
  ".": {
10
- "types": "./dist/index.d.ts",
11
- "import": "./dist/index.mjs",
12
- "require": "./dist/index.cjs"
10
+ "types": "./dist/index.d.mts",
11
+ "default": "./dist/index.mjs"
13
12
  },
14
13
  "./resolver": {
15
- "types": "./dist/resolver.d.ts",
16
- "import": "./dist/resolver.mjs",
17
- "require": "./dist/resolver.cjs"
14
+ "types": "./dist/resolver.d.mts",
15
+ "default": "./dist/resolver.mjs"
18
16
  },
19
17
  "./component": {
20
- "types": "./dist/component.d.ts",
21
- "import": "./dist/component.mjs",
22
- "require": "./dist/component.cjs"
18
+ "types": "./dist/component.d.mts",
19
+ "default": "./dist/component.mjs"
23
20
  },
24
21
  "./*": "./*"
25
22
  },
@@ -31,21 +28,22 @@
31
28
  "dist"
32
29
  ],
33
30
  "peerDependencies": {
34
- "vue": ">=3.3.4"
31
+ "vue": ">=3.4.21"
35
32
  },
36
33
  "dependencies": {
37
- "@destyler/composition": "0.0.3",
38
- "@destyler/directives": "0.0.3",
39
- "@destyler/dismissable-layer": "0.0.3",
40
- "@destyler/focus-scope": "0.0.3",
41
- "@destyler/teleport": "0.0.3",
42
- "@destyler/popper": "0.0.3",
43
- "@destyler/presence": "0.0.3",
44
- "@destyler/shared": "0.0.3",
45
- "@destyler/primitive": "0.0.3"
34
+ "@destyler/directives": "0.0.5",
35
+ "@destyler/focus-scope": "0.0.5",
36
+ "@destyler/composition": "0.0.5",
37
+ "@destyler/dismissable-layer": "0.0.5",
38
+ "@destyler/shared": "0.0.5",
39
+ "@destyler/primitive": "0.0.5",
40
+ "@destyler/teleport": "0.0.5",
41
+ "@destyler/presence": "0.0.5",
42
+ "@destyler/popper": "0.0.5"
46
43
  },
47
44
  "scripts": {
48
45
  "clear": "rimraf ./dist",
49
- "build": "pnpm run clear && unbuild"
46
+ "build": "pnpm run clear && unbuild",
47
+ "stub": "unbuild --stub"
50
48
  }
51
49
  }