@destyler/dialog 0.0.1-beta.9 → 0.0.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.
package/dist/index.mjs CHANGED
@@ -1,457 +1,10 @@
1
- import { defineComponent, ref, toRefs, h, mergeProps, onMounted, withDirectives } from 'vue';
2
- import { destylerPrimitiveProp, DestylerPrimitive, destylerPrimitiveProps } from '@destyler/primitive';
3
- import { createContext } from '@destyler/shared';
4
- import { useVModel, useId, useCustomElement, useEmitAsProps, useHideOthers } from '@destyler/composition';
5
- import { DestylerPresence } from '@destyler/presence';
6
- import { DestylerFocusScope } from '@destyler/focus-scope';
7
- import { DestylerDismissableLayer } from '@destyler/dismissable-layer';
8
- import { BindOnceDirective } from '@destyler/directives';
9
- import { DestylerTeleport } from '@destyler/teleport';
10
-
11
- const destylerDialogRootProps = {
12
- open: {
13
- type: Boolean,
14
- required: false,
15
- default: void 0
16
- },
17
- defaultOpen: {
18
- type: Boolean,
19
- required: false,
20
- default: false
21
- },
22
- modal: {
23
- type: Boolean,
24
- required: false,
25
- default: true
26
- }
27
- };
28
- const [injectDialogRootContext, provideDialogRootContext] = createContext("DialogRoot");
29
- const DestylerDialogRoot = defineComponent({
30
- name: "DestylerDialogRoot",
31
- props: destylerDialogRootProps,
32
- emits: ["update:open"],
33
- setup(props, { emit }) {
34
- const open = useVModel(props, "open", emit, {
35
- defaultValue: props.defaultOpen,
36
- passive: props.open === void 0
37
- });
38
- const triggerElement = ref();
39
- const contentElement = ref();
40
- const { modal } = toRefs(props);
41
- provideDialogRootContext({
42
- open,
43
- modal,
44
- openModal: () => {
45
- open.value = true;
46
- },
47
- onOpenChange: (value) => {
48
- open.value = value;
49
- },
50
- onOpenToggle: () => {
51
- open.value = !open.value;
52
- },
53
- contentId: useId(),
54
- titleId: useId(),
55
- descriptionId: useId(),
56
- triggerElement,
57
- contentElement
58
- });
59
- },
60
- render() {
61
- return this.$slots.default?.();
62
- }
63
- });
64
-
65
- const destylerDialogCloseProps = {
66
- ...destylerPrimitiveProp,
67
- as: {
68
- type: [String, Object],
69
- required: false,
70
- default: "button"
71
- }
72
- };
73
- const DestylerDialogClose = defineComponent({
74
- name: "DestylerDialogClose",
75
- props: destylerDialogCloseProps,
76
- setup() {
77
- const rootContext = injectDialogRootContext();
78
- return {
79
- rootContext
80
- };
81
- },
82
- render() {
83
- return h(DestylerPrimitive, mergeProps(this.$props, {
84
- type: this.$props.as === "button" ? "button" : void 0,
85
- onClick: () => {
86
- this.rootContext.onOpenChange(false);
87
- }
88
- }), this.$slots.default?.());
89
- }
90
- });
91
-
92
- function getOpenState(open) {
93
- return open ? "open" : "closed";
94
- }
95
-
96
- const destylerDialogContentImplProps = {
97
- ...destylerPrimitiveProps,
98
- forceMount: {
99
- type: Boolean,
100
- required: false
101
- },
102
- trapFocus: {
103
- type: Boolean,
104
- required: false,
105
- default: false
106
- }
107
- };
108
- const DestylerDialogContentImpl = defineComponent({
109
- name: "DestylerDialogContentImpl",
110
- props: destylerDialogContentImplProps,
111
- emits: ["openAutoFocus", "closeAutoFocus", "escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "dismiss"],
112
- setup() {
113
- const rootContext = injectDialogRootContext();
114
- const { customElement, currentElement: contentElement } = useCustomElement();
115
- onMounted(() => {
116
- rootContext.contentElement = contentElement;
117
- });
118
- return {
119
- rootContext,
120
- customElement
121
- };
122
- },
123
- render() {
124
- return h(DestylerFocusScope, {
125
- asChild: true,
126
- loop: true,
127
- trapped: this.$props.trapFocus,
128
- onMountAutoFocus: (event) => {
129
- this.$emit("openAutoFocus", event);
130
- },
131
- onUnmountAutoFocus: (event) => {
132
- this.$emit("closeAutoFocus", event);
133
- }
134
- }, withDirectives(h(DestylerDismissableLayer, {
135
- ...this.$attrs,
136
- "ref": "customElement",
137
- "as": this.$props.as,
138
- "asChild": this.$props.asChild,
139
- "role": "dialog",
140
- "aria-describedby": this.rootContext.descriptionId,
141
- "aria-labelledby": this.rootContext.titleId,
142
- "data-state": getOpenState(this.rootContext.open.value),
143
- "onDismiss": () => {
144
- this.rootContext.onOpenChange(false);
145
- },
146
- "onEscapeKeyDown": (event) => {
147
- this.$emit("escapeKeyDown", event);
148
- },
149
- "onFocusOutside": (event) => {
150
- this.$emit("focusOutside", event);
151
- },
152
- "onInteractOutside": (event) => {
153
- this.$emit("interactOutside", event);
154
- },
155
- "onPoInterDownOutside": (event) => {
156
- this.$emit("pointerDownOutside", event);
157
- }
158
- }, this.$slots.default?.()), [
159
- [BindOnceDirective, { id: this.rootContext.contentId }]
160
- ]));
161
- }
162
- });
163
-
164
- const DestylerDialogContentModal = defineComponent({
165
- name: "DestylerDialogContentModal",
166
- props: destylerDialogContentImplProps,
167
- emits: ["openAutoFocus", "closeAutoFocus", "escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "dismiss"],
168
- setup(_, { emit }) {
169
- const rootContext = injectDialogRootContext();
170
- const emitsAsProps = useEmitAsProps(emit);
171
- const { customElement, currentElement } = useCustomElement();
172
- useHideOthers(currentElement);
173
- return {
174
- rootContext,
175
- emitsAsProps,
176
- customElement
177
- };
178
- },
179
- render() {
180
- return h(DestylerDialogContentImpl, mergeProps(this.$props, this.emitsAsProps, {
181
- "ref": "customElement",
182
- "trap-focus": this.rootContext.open.value,
183
- "disable-outside-pointer-events": true,
184
- "onCloseAutoFocus": (event) => {
185
- this.$emit("closeAutoFocus", event);
186
- if (!event.defaultPrevented) {
187
- event.preventDefault();
188
- this.rootContext.triggerElement.value?.focus();
189
- }
190
- },
191
- "onPointerDownOutside": (event) => {
192
- const originalEvent = event.detail.originalEvent;
193
- const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
194
- const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
195
- if (isRightClick)
196
- event.preventDefault();
197
- },
198
- "onFocusOutside": (event) => {
199
- event.preventDefault();
200
- },
201
- "onOpenAutoFocus": (event) => {
202
- this.$emit("openAutoFocus", event);
203
- }
204
- }), this.$slots.default?.());
205
- }
206
- });
207
-
208
- const DestylerDialogContentNonModal = defineComponent({
209
- name: "DestylerDialogContentNonModal",
210
- props: destylerDialogContentImplProps,
211
- emits: ["openAutoFocus", "closeAutoFocus", "escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "dismiss"],
212
- setup(_, { emit }) {
213
- const rootContext = injectDialogRootContext();
214
- const hasInteractedOutsideRef = ref(false);
215
- const hasPointerDownOutsideRef = ref(false);
216
- const emitsAsProps = useEmitAsProps(emit);
217
- return {
218
- rootContext,
219
- hasInteractedOutsideRef,
220
- hasPointerDownOutsideRef,
221
- emitsAsProps
222
- };
223
- },
224
- render() {
225
- return h(DestylerDialogContentImpl, mergeProps(this.$props, this.emitsAsProps, {
226
- "trap-focus": false,
227
- "disable-outside-pointer-events": false,
228
- "onCloseAutoFocus": (event) => {
229
- this.$emit("closeAutoFocus", event);
230
- if (!event.defaultPrevented) {
231
- if (!this.hasInteractedOutsideRef)
232
- this.rootContext.triggerElement.value?.focus();
233
- event.preventDefault();
234
- }
235
- this.hasInteractedOutsideRef = false;
236
- this.hasPointerDownOutsideRef = false;
237
- },
238
- "onInteractOutside": (event) => {
239
- if (!event.defaultPrevented) {
240
- this.hasInteractedOutsideRef = true;
241
- if (event.detail.originalEvent.type === "pointerdown")
242
- this.hasPointerDownOutsideRef = true;
243
- }
244
- const target = event.target;
245
- const targetIsTrigger = this.rootContext.triggerElement.value?.contains(target);
246
- if (targetIsTrigger)
247
- event.preventDefault();
248
- if (event.detail.originalEvent.type === "focusin" && this.hasPointerDownOutsideRef)
249
- event.preventDefault();
250
- }
251
- }), this.$slots.default?.());
252
- }
253
- });
254
-
255
- const destylerDialogContentProps = {
256
- ...destylerDialogContentImplProps,
257
- forceMount: {
258
- type: Boolean,
259
- required: false
260
- }
261
- };
262
- const DestylerDialogContent = defineComponent({
263
- name: "DestylerDialogContent",
264
- props: destylerDialogContentProps,
265
- emits: ["openAutoFocus", "closeAutoFocus", "escapeKeyDown", "pointerDownOutside", "focusOutside", "interactOutside", "dismiss"],
266
- setup(_, { emit }) {
267
- const rootContext = injectDialogRootContext();
268
- const emitsAsProps = useEmitAsProps(emit);
269
- return {
270
- rootContext,
271
- emitsAsProps
272
- };
273
- },
274
- render() {
275
- const useVShow = this.rootContext.modal.value;
276
- return h(DestylerPresence, {
277
- present: this.$props.forceMount || this.rootContext.open.value
278
- }, [
279
- useVShow ? h(DestylerDialogContentModal, mergeProps(this.$props, this.emitsAsProps, this.$attrs, {
280
- onOpenAutoFocus: (event) => {
281
- this.$emit("openAutoFocus", event);
282
- }
283
- }), this.$slots.default?.()) : h(DestylerDialogContentNonModal, mergeProps(this.$props, this.emitsAsProps, this.$attrs), this.$slots.default?.())
284
- ]);
285
- }
286
- });
287
-
288
- const destylerDialogDescriptionProps = {
289
- ...destylerPrimitiveProp,
290
- as: {
291
- type: [String, Object],
292
- required: false,
293
- default: "p"
294
- }
295
- };
296
- const DestylerDialogDescription = defineComponent({
297
- name: "DestylerDialogDescription",
298
- props: destylerDialogDescriptionProps,
299
- setup() {
300
- const rootContext = injectDialogRootContext();
301
- return {
302
- rootContext
303
- };
304
- },
305
- render() {
306
- return withDirectives(h(DestylerPrimitive, {
307
- as: this.$props.as,
308
- asChild: this.$props.asChild
309
- }, this.$slots.default?.()), [
310
- [BindOnceDirective, { id: this.rootContext.descriptionId }]
311
- ]);
312
- }
313
- });
314
-
315
- const destylerDialogOverlayImplProps = {
316
- ...destylerPrimitiveProps
317
- };
318
- const DestylerDialogOverlayImpl = defineComponent({
319
- name: "DestylerDialogOverlayImpl",
320
- props: destylerDialogOverlayImplProps,
321
- setup() {
322
- const rootContext = injectDialogRootContext();
323
- return {
324
- rootContext
325
- };
326
- },
327
- render() {
328
- return h(DestylerPrimitive, {
329
- "as": this.$props.as,
330
- "asChild": this.$props.asChild,
331
- "data-state": this.rootContext.open.value ? "open" : "closed",
332
- "style": {
333
- "pointer-events": "auto"
334
- }
335
- }, this.$slots.default?.());
336
- }
337
- });
338
-
339
- const destylerDialogOverlayProps = {
340
- ...destylerPrimitiveProps,
341
- forceMount: {
342
- type: Boolean,
343
- required: false
344
- }
345
- };
346
- const DestylerDialogOverlay = defineComponent({
347
- name: "DestylerDialogOverlay",
348
- props: destylerDialogOverlayProps,
349
- setup() {
350
- const rootContext = injectDialogRootContext();
351
- return {
352
- rootContext
353
- };
354
- },
355
- render() {
356
- const useVShow = this.rootContext?.modal.value;
357
- return useVShow ? h(DestylerPresence, {
358
- present: this.$props.forceMount || this.rootContext.open.value
359
- }, h(DestylerDialogOverlayImpl, mergeProps(this.$attrs, {
360
- as: this.$props.as,
361
- asChild: this.$props.asChild
362
- }), this.$slots.default?.())) : null;
363
- }
364
- });
365
-
366
- const destylerDialogPortalProps = {
367
- ...destylerPrimitiveProps
368
- };
369
- const DestylerDialogPortal = defineComponent({
370
- name: "DestylerDialogPortal",
371
- props: destylerDialogPortalProps,
372
- render() {
373
- return h(DestylerTeleport, {
374
- as: this.$props.as,
375
- asChild: this.$props.asChild
376
- }, this.$slots.default?.());
377
- }
378
- });
379
-
380
- const destylerDialogTitleProps = {
381
- ...destylerPrimitiveProp,
382
- as: {
383
- type: [String, Object],
384
- required: false,
385
- default: "h2"
386
- }
387
- };
388
- const DestylerDialogTitle = defineComponent({
389
- name: "DestylerDialogTitle",
390
- props: destylerDialogTitleProps,
391
- setup() {
392
- const rootContext = injectDialogRootContext();
393
- return {
394
- rootContext
395
- };
396
- },
397
- render() {
398
- return withDirectives(h(DestylerPrimitive, {
399
- as: this.$props.as,
400
- asChild: this.$props.asChild
401
- }, this.$slots.default?.()), [
402
- [BindOnceDirective, { id: this.rootContext.titleId }]
403
- ]);
404
- }
405
- });
406
-
407
- const destylerDialogTriggerProps = {
408
- ...destylerPrimitiveProp,
409
- as: {
410
- type: [String, Object],
411
- required: false,
412
- default: "button"
413
- }
414
- };
415
- const DestylerDialogTrigger = defineComponent({
416
- name: "DestylerDialogTrigger",
417
- props: destylerDialogTriggerProps,
418
- setup() {
419
- const rootContext = injectDialogRootContext();
420
- const { customElement, currentElement } = useCustomElement();
421
- onMounted(() => {
422
- rootContext.triggerElement = currentElement;
423
- });
424
- return {
425
- rootContext,
426
- customElement
427
- };
428
- },
429
- render() {
430
- return h(DestylerPrimitive, mergeProps(this.$attrs, {
431
- "ref": "customElement",
432
- "type": this.$props.as === "button" ? "button" : void 0,
433
- "aria-haspopup": "dialog",
434
- "aria-expanded": this.rootContext.open.value || false,
435
- "aria-controls": this.rootContext.contentId,
436
- "data-state": this.rootContext.open.value ? "open" : "closed",
437
- "onClick": () => {
438
- this.rootContext.onOpenToggle();
439
- }
440
- }), this.$slots.default?.());
441
- }
442
- });
443
-
444
- const name = "@destyler/dialog";
445
-
446
- const packageName = name;
447
- function DestylerDialogResolver() {
448
- return {
449
- type: "component",
450
- resolve: (name2) => {
451
- if (name2 === "DestylerTemplate")
452
- return { name: name2, from: packageName };
453
- }
454
- };
455
- }
456
-
457
- export { DestylerDialogClose, DestylerDialogContent, DestylerDialogContentImpl, DestylerDialogContentModal, DestylerDialogContentNonModal, DestylerDialogDescription, DestylerDialogOverlay, DestylerDialogOverlayImpl, DestylerDialogPortal, DestylerDialogResolver, DestylerDialogRoot, DestylerDialogTitle, DestylerDialogTrigger, destylerDialogCloseProps, destylerDialogContentImplProps, destylerDialogContentProps, destylerDialogDescriptionProps, destylerDialogOverlayImplProps, destylerDialogOverlayProps, destylerDialogPortalProps, destylerDialogRootProps, destylerDialogTitleProps, destylerDialogTriggerProps, getOpenState, injectDialogRootContext, provideDialogRootContext };
1
+ export { DestylerDialogClose, DestylerDialogContent, DestylerDialogDescription, DestylerDialogOverlay, DestylerDialogPortal, DestylerDialogRoot, DestylerDialogTitle, DestylerDialogTrigger } from './component.mjs';
2
+ import 'vue';
3
+ import '@destyler/primitive';
4
+ import '@destyler/shared';
5
+ import '@destyler/composition';
6
+ import '@destyler/presence';
7
+ import '@destyler/focus-scope';
8
+ import '@destyler/dismissable-layer';
9
+ import '@destyler/directives';
10
+ import '@destyler/teleport';
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const name = "@destyler/dialog";
4
+
5
+ const packageName = name;
6
+ const dialogComponentName = [
7
+ "DestylerDialogClose",
8
+ "DestylerDialogContent",
9
+ "DestylerDialogDescription",
10
+ "DestylerDialogOverlay",
11
+ "DestylerDialogPortal",
12
+ "DestylerDialogRoot",
13
+ "DestylerDialogTitle",
14
+ "DestylerDialogTrigger"
15
+ ];
16
+ function DestylerDialogResolver() {
17
+ return {
18
+ type: "component",
19
+ resolve: (name2) => {
20
+ if (dialogComponentName.includes(name2))
21
+ return { name: name2, from: packageName };
22
+ }
23
+ };
24
+ }
25
+
26
+ exports.DestylerDialogResolver = DestylerDialogResolver;
27
+ exports.dialogComponentName = dialogComponentName;
@@ -0,0 +1,6 @@
1
+ import { ComponentResolver } from 'unplugin-vue-components';
2
+
3
+ declare const dialogComponentName: string[];
4
+ declare function DestylerDialogResolver(): ComponentResolver;
5
+
6
+ export { DestylerDialogResolver, dialogComponentName };
@@ -0,0 +1,6 @@
1
+ import { ComponentResolver } from 'unplugin-vue-components';
2
+
3
+ declare const dialogComponentName: string[];
4
+ declare function DestylerDialogResolver(): ComponentResolver;
5
+
6
+ export { DestylerDialogResolver, dialogComponentName };
@@ -0,0 +1,6 @@
1
+ import { ComponentResolver } from 'unplugin-vue-components';
2
+
3
+ declare const dialogComponentName: string[];
4
+ declare function DestylerDialogResolver(): ComponentResolver;
5
+
6
+ export { DestylerDialogResolver, dialogComponentName };
@@ -0,0 +1,24 @@
1
+ const name = "@destyler/dialog";
2
+
3
+ const packageName = name;
4
+ const dialogComponentName = [
5
+ "DestylerDialogClose",
6
+ "DestylerDialogContent",
7
+ "DestylerDialogDescription",
8
+ "DestylerDialogOverlay",
9
+ "DestylerDialogPortal",
10
+ "DestylerDialogRoot",
11
+ "DestylerDialogTitle",
12
+ "DestylerDialogTrigger"
13
+ ];
14
+ function DestylerDialogResolver() {
15
+ return {
16
+ type: "component",
17
+ resolve: (name2) => {
18
+ if (dialogComponentName.includes(name2))
19
+ return { name: name2, from: packageName };
20
+ }
21
+ };
22
+ }
23
+
24
+ export { DestylerDialogResolver, dialogComponentName };