@teammodlr/ui-kit 3.0.0-beta.21 → 3.0.0-beta.23
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/lib/components/dialog/Dialog.vue.d.ts +1 -2
- package/lib/components/dialogprovider/types.d.ts +0 -2
- package/lib/index.cjs.js +3 -3
- package/lib/index.es.js +1703 -1717
- package/package.json +1 -1
- package/src/components/dialog/Dialog.vue +8 -30
- package/src/components/dialogprovider/DialogProvider.vue +1 -7
- package/src/components/dialogprovider/types.ts +0 -2
package/package.json
CHANGED
|
@@ -17,11 +17,11 @@
|
|
|
17
17
|
:disable-outside-pointer-events="modal"
|
|
18
18
|
@open-auto-focus="handleOpenAutoFocus"
|
|
19
19
|
@escape-key-down="handleEscapeKeyDown"
|
|
20
|
-
@pointer-down-outside
|
|
21
|
-
@focus-outside="
|
|
22
|
-
@interact-outside
|
|
20
|
+
@pointer-down-outside.prevent
|
|
21
|
+
@focus-outside="handleFocusOutside"
|
|
22
|
+
@interact-outside.prevent
|
|
23
23
|
>
|
|
24
|
-
<FocusScope :trapped="
|
|
24
|
+
<FocusScope :trapped="focusTrap" :loop="focusTrap">
|
|
25
25
|
<slot v-if="$slots.container" name="container" :close="close"></slot>
|
|
26
26
|
<template v-else>
|
|
27
27
|
<div :class="style.content">
|
|
@@ -65,7 +65,6 @@ import {
|
|
|
65
65
|
import {
|
|
66
66
|
computed,
|
|
67
67
|
defineComponent,
|
|
68
|
-
onUnmounted,
|
|
69
68
|
provide,
|
|
70
69
|
ref,
|
|
71
70
|
shallowRef,
|
|
@@ -137,19 +136,6 @@ export default defineComponent({
|
|
|
137
136
|
const zIndex = ref(props.zIndex ?? nextZIndex());
|
|
138
137
|
provide(ZINDEX, zIndex);
|
|
139
138
|
const hasOpened = ref(false);
|
|
140
|
-
const focusTrapOverride = ref<boolean | null>(null);
|
|
141
|
-
const activeFocusTrap = computed(() => focusTrapOverride.value ?? props.focusTrap);
|
|
142
|
-
|
|
143
|
-
// reka-ui's FocusScope captures `trapped` at mount time and never re-checks it.
|
|
144
|
-
// We register this listener before FocusScope mounts (children mount after parent setup)
|
|
145
|
-
// so it fires first and blocks reka-ui's listener from stealing focus when trap is off.
|
|
146
|
-
const focusTrapBlocker = (event: FocusEvent) => {
|
|
147
|
-
if (!activeFocusTrap.value) {
|
|
148
|
-
event.stopImmediatePropagation();
|
|
149
|
-
}
|
|
150
|
-
};
|
|
151
|
-
document.addEventListener('focusin', focusTrapBlocker, true);
|
|
152
|
-
onUnmounted(() => document.removeEventListener('focusin', focusTrapBlocker, true));
|
|
153
139
|
|
|
154
140
|
const isDragging = ref<boolean>(false);
|
|
155
141
|
|
|
@@ -259,10 +245,8 @@ export default defineComponent({
|
|
|
259
245
|
zIndex.value = nextZIndex();
|
|
260
246
|
}
|
|
261
247
|
|
|
262
|
-
function
|
|
263
|
-
|
|
264
|
-
event.preventDefault();
|
|
265
|
-
}
|
|
248
|
+
function handleFocusOutside(event: Event) {
|
|
249
|
+
event.preventDefault();
|
|
266
250
|
}
|
|
267
251
|
|
|
268
252
|
function handleOpenAutoFocus(event: Event) {
|
|
@@ -363,13 +347,8 @@ export default defineComponent({
|
|
|
363
347
|
{ immediate: true }
|
|
364
348
|
);
|
|
365
349
|
|
|
366
|
-
function setFocusTrap(value: boolean) {
|
|
367
|
-
focusTrapOverride.value = value;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
350
|
expose({
|
|
371
351
|
close,
|
|
372
|
-
setFocusTrap,
|
|
373
352
|
});
|
|
374
353
|
|
|
375
354
|
return {
|
|
@@ -393,9 +372,8 @@ export default defineComponent({
|
|
|
393
372
|
onEnter,
|
|
394
373
|
handleOpenChange,
|
|
395
374
|
handleOpenAutoFocus,
|
|
396
|
-
|
|
397
|
-
isOpen: computed(() => props.open)
|
|
398
|
-
activeFocusTrap,
|
|
375
|
+
handleFocusOutside,
|
|
376
|
+
isOpen: computed(() => props.open)
|
|
399
377
|
};
|
|
400
378
|
},
|
|
401
379
|
});
|
|
@@ -39,10 +39,6 @@ export default defineComponent({
|
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
function setFocusTrap(key: string, enabled: boolean) {
|
|
43
|
-
dialogRefs.value[key]?.setFocusTrap(enabled);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
42
|
function create(key: string, options: DialogOptions = {}): DialogReactive {
|
|
47
43
|
if (dialogMap[key]) {
|
|
48
44
|
// Merge new options into existing reactive options
|
|
@@ -76,7 +72,6 @@ export default defineComponent({
|
|
|
76
72
|
handleClose(key);
|
|
77
73
|
}
|
|
78
74
|
},
|
|
79
|
-
setFocusTrap: (enabled: boolean) => setFocusTrap(key, enabled),
|
|
80
75
|
};
|
|
81
76
|
|
|
82
77
|
dialogMap[key] = dialog;
|
|
@@ -127,8 +122,7 @@ export default defineComponent({
|
|
|
127
122
|
remove,
|
|
128
123
|
hasOpenDialog: () => hasOpenDialog.value,
|
|
129
124
|
openDialogCount: () => openDialogCount.value,
|
|
130
|
-
openDialogKeys: () => openDialogKeys.value
|
|
131
|
-
setFocusTrap,
|
|
125
|
+
openDialogKeys: () => openDialogKeys.value
|
|
132
126
|
};
|
|
133
127
|
|
|
134
128
|
provide('m-dialog', api);
|
|
@@ -19,7 +19,6 @@ export interface DialogReactive {
|
|
|
19
19
|
options: DialogOptions;
|
|
20
20
|
open: () => void;
|
|
21
21
|
close: () => void;
|
|
22
|
-
setFocusTrap: (enabled: boolean) => void;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
export interface DialogApiInjection {
|
|
@@ -28,5 +27,4 @@ export interface DialogApiInjection {
|
|
|
28
27
|
hasOpenDialog: () => boolean;
|
|
29
28
|
openDialogCount: () => number;
|
|
30
29
|
openDialogKeys: () => string[];
|
|
31
|
-
setFocusTrap: (key: string, enabled: boolean) => void;
|
|
32
30
|
}
|