@coreui/vue-pro 5.14.0 → 5.16.0
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/README.md +1 -1
- package/dist/cjs/components/calendar/CCalendar.js +67 -65
- package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
- package/dist/cjs/components/calendar/utils.d.ts +53 -2
- package/dist/cjs/components/calendar/utils.js +466 -43
- package/dist/cjs/components/calendar/utils.js.map +1 -1
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js +86 -57
- package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/cjs/components/date-range-picker/utils.d.ts +0 -9
- package/dist/cjs/components/date-range-picker/utils.js +0 -38
- package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdown.d.ts +32 -7
- package/dist/cjs/components/dropdown/CDropdown.js +67 -29
- package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
- package/dist/cjs/components/dropdown/CDropdownToggle.d.ts +19 -0
- package/dist/cjs/components/dropdown/CDropdownToggle.js +17 -2
- package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/cjs/components/dropdown/utils.d.ts +2 -0
- package/dist/cjs/components/dropdown/utils.js +13 -0
- package/dist/cjs/components/dropdown/utils.js.map +1 -1
- package/dist/cjs/components/focus-trap/CFocusTrap.d.ts +108 -0
- package/dist/cjs/components/focus-trap/CFocusTrap.js +254 -0
- package/dist/cjs/components/focus-trap/CFocusTrap.js.map +1 -0
- package/dist/cjs/components/focus-trap/index.d.ts +6 -0
- package/dist/cjs/components/focus-trap/index.js +13 -0
- package/dist/cjs/components/focus-trap/index.js.map +1 -0
- package/dist/cjs/components/focus-trap/utils.d.ts +28 -0
- package/dist/cjs/components/focus-trap/utils.js +83 -0
- package/dist/cjs/components/focus-trap/utils.js.map +1 -0
- package/dist/cjs/components/index.d.ts +1 -0
- package/dist/cjs/components/index.js +70 -66
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/modal/CModal.d.ts +2 -2
- package/dist/cjs/components/modal/CModal.js +19 -27
- package/dist/cjs/components/modal/CModal.js.map +1 -1
- package/dist/cjs/components/modal/CModalHeader.js +4 -2
- package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
- package/dist/cjs/components/nav/CNavItem.d.ts +2 -2
- package/dist/cjs/components/offcanvas/COffcanvas.js +3 -2
- package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/cjs/components/picker/CPicker.js +3 -2
- package/dist/cjs/components/picker/CPicker.js.map +1 -1
- package/dist/cjs/components/time-picker/CTimePicker.d.ts +45 -1
- package/dist/cjs/components/time-picker/CTimePicker.js +64 -8
- package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
- package/dist/cjs/components/time-picker/CTimePickerRollCol.d.ts +19 -7
- package/dist/cjs/components/time-picker/CTimePickerRollCol.js +80 -8
- package/dist/cjs/components/time-picker/CTimePickerRollCol.js.map +1 -1
- package/dist/cjs/components/time-picker/utils.d.ts +1 -1
- package/dist/cjs/composables/useDebouncedCallback.d.ts +1 -1
- package/dist/cjs/composables/useDebouncedCallback.js +1 -1
- package/dist/cjs/composables/useDebouncedCallback.js.map +1 -1
- package/dist/cjs/index.js +76 -72
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/calendar/CCalendar.js +67 -65
- package/dist/esm/components/calendar/CCalendar.js.map +1 -1
- package/dist/esm/components/calendar/utils.d.ts +53 -2
- package/dist/esm/components/calendar/utils.js +464 -44
- package/dist/esm/components/calendar/utils.js.map +1 -1
- package/dist/esm/components/date-range-picker/CDateRangePicker.js +86 -57
- package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
- package/dist/esm/components/date-range-picker/utils.d.ts +0 -9
- package/dist/esm/components/date-range-picker/utils.js +1 -38
- package/dist/esm/components/date-range-picker/utils.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdown.d.ts +32 -7
- package/dist/esm/components/dropdown/CDropdown.js +69 -31
- package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
- package/dist/esm/components/dropdown/CDropdownToggle.d.ts +19 -0
- package/dist/esm/components/dropdown/CDropdownToggle.js +17 -2
- package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
- package/dist/esm/components/dropdown/utils.d.ts +2 -0
- package/dist/esm/components/dropdown/utils.js +13 -1
- package/dist/esm/components/dropdown/utils.js.map +1 -1
- package/dist/esm/components/focus-trap/CFocusTrap.d.ts +108 -0
- package/dist/esm/components/focus-trap/CFocusTrap.js +252 -0
- package/dist/esm/components/focus-trap/CFocusTrap.js.map +1 -0
- package/dist/esm/components/focus-trap/index.d.ts +6 -0
- package/dist/esm/components/focus-trap/index.js +10 -0
- package/dist/esm/components/focus-trap/index.js.map +1 -0
- package/dist/esm/components/focus-trap/utils.d.ts +28 -0
- package/dist/esm/components/focus-trap/utils.js +78 -0
- package/dist/esm/components/focus-trap/utils.js.map +1 -0
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/index.js +2 -0
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/modal/CModal.d.ts +2 -2
- package/dist/esm/components/modal/CModal.js +19 -27
- package/dist/esm/components/modal/CModal.js.map +1 -1
- package/dist/esm/components/modal/CModalHeader.js +4 -2
- package/dist/esm/components/modal/CModalHeader.js.map +1 -1
- package/dist/esm/components/nav/CNavItem.d.ts +2 -2
- package/dist/esm/components/offcanvas/COffcanvas.js +3 -2
- package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
- package/dist/esm/components/picker/CPicker.js +3 -2
- package/dist/esm/components/picker/CPicker.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePicker.d.ts +45 -1
- package/dist/esm/components/time-picker/CTimePicker.js +64 -8
- package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
- package/dist/esm/components/time-picker/CTimePickerRollCol.d.ts +19 -7
- package/dist/esm/components/time-picker/CTimePickerRollCol.js +80 -8
- package/dist/esm/components/time-picker/CTimePickerRollCol.js.map +1 -1
- package/dist/esm/components/time-picker/utils.d.ts +1 -1
- package/dist/esm/composables/useDebouncedCallback.d.ts +1 -1
- package/dist/esm/composables/useDebouncedCallback.js +1 -1
- package/dist/esm/composables/useDebouncedCallback.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +5 -5
- package/src/components/calendar/CCalendar.ts +61 -70
- package/src/components/calendar/utils.ts +595 -47
- package/src/components/date-range-picker/CDateRangePicker.ts +131 -82
- package/src/components/date-range-picker/utils.ts +0 -58
- package/src/components/dropdown/CDropdown.ts +119 -52
- package/src/components/dropdown/CDropdownToggle.ts +18 -3
- package/src/components/dropdown/utils.ts +21 -0
- package/src/components/focus-trap/CFocusTrap.ts +303 -0
- package/src/components/focus-trap/index.ts +10 -0
- package/src/components/focus-trap/utils.ts +90 -0
- package/src/components/index.ts +1 -0
- package/src/components/modal/CModal.ts +32 -37
- package/src/components/modal/CModalHeader.ts +5 -3
- package/src/components/nav/CNavItem.ts +1 -1
- package/src/components/offcanvas/COffcanvas.ts +40 -36
- package/src/components/picker/CPicker.ts +58 -52
- package/src/components/time-picker/CTimePicker.ts +80 -22
- package/src/components/time-picker/CTimePickerRollCol.ts +87 -9
- package/src/composables/useDebouncedCallback.ts +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { defineComponent, ref, watch, provide, h } from 'vue';
|
|
1
|
+
import { defineComponent, ref, computed, watch, nextTick, onUnmounted, provide, h } from 'vue';
|
|
2
2
|
import { usePopper } from '../../composables/usePopper.js';
|
|
3
3
|
import getNextActiveElement from '../../utils/getNextActiveElement.js';
|
|
4
4
|
import isRTL from '../../utils/isRTL.js';
|
|
5
|
-
import { getPlacement } from './utils.js';
|
|
5
|
+
import { getPlacement, getReferenceElement } from './utils.js';
|
|
6
|
+
import { CFocusTrap } from '../focus-trap/CFocusTrap.js';
|
|
6
7
|
|
|
7
8
|
const CDropdown = defineComponent({
|
|
8
9
|
name: 'CDropdown',
|
|
@@ -109,6 +110,19 @@ const CDropdown = defineComponent({
|
|
|
109
110
|
type: Boolean,
|
|
110
111
|
default: true,
|
|
111
112
|
},
|
|
113
|
+
/**
|
|
114
|
+
* Sets the reference element for positioning the Vue Dropdown Menu.
|
|
115
|
+
* - `toggle` - The Vue Dropdown Toggle button (default).
|
|
116
|
+
* - `parent` - The Vue Dropdown wrapper element.
|
|
117
|
+
* - `HTMLElement` - A custom HTML element.
|
|
118
|
+
* - `Ref` - A custom reference element.
|
|
119
|
+
*
|
|
120
|
+
* @since 5.7.0
|
|
121
|
+
*/
|
|
122
|
+
reference: {
|
|
123
|
+
type: [String, Object],
|
|
124
|
+
default: 'toggle',
|
|
125
|
+
},
|
|
112
126
|
/**
|
|
113
127
|
* Generates dropdown menu using Teleport.
|
|
114
128
|
*
|
|
@@ -153,12 +167,14 @@ const CDropdown = defineComponent({
|
|
|
153
167
|
'show',
|
|
154
168
|
],
|
|
155
169
|
setup(props, { slots, emit }) {
|
|
156
|
-
const
|
|
157
|
-
const dropdownMenuRef = ref();
|
|
170
|
+
const dropdownRef = ref(null);
|
|
171
|
+
const dropdownMenuRef = ref(null);
|
|
172
|
+
const dropdownToggleRef = ref(null);
|
|
173
|
+
const pendingKeyDownEventRef = ref(null);
|
|
158
174
|
const popper = ref(typeof props.alignment === 'object' ? false : props.popper);
|
|
159
175
|
const visible = ref(props.visible);
|
|
160
176
|
const { initPopper, destroyPopper } = usePopper();
|
|
161
|
-
const popperConfig = {
|
|
177
|
+
const popperConfig = computed(() => ({
|
|
162
178
|
modifiers: [
|
|
163
179
|
{
|
|
164
180
|
name: 'offset',
|
|
@@ -168,28 +184,44 @@ const CDropdown = defineComponent({
|
|
|
168
184
|
},
|
|
169
185
|
],
|
|
170
186
|
placement: getPlacement(props.placement, props.direction, props.alignment, isRTL(dropdownMenuRef.value)),
|
|
171
|
-
};
|
|
187
|
+
}));
|
|
172
188
|
watch(() => props.visible, () => {
|
|
173
189
|
visible.value = props.visible;
|
|
174
190
|
});
|
|
175
191
|
watch(visible, () => {
|
|
176
192
|
if (visible.value && dropdownToggleRef.value && dropdownMenuRef.value) {
|
|
177
|
-
|
|
178
|
-
|
|
193
|
+
const referenceElement = getReferenceElement(props.reference, dropdownToggleRef, dropdownRef);
|
|
194
|
+
if (referenceElement && popper.value) {
|
|
195
|
+
initPopper(referenceElement, dropdownMenuRef.value, popperConfig.value);
|
|
196
|
+
}
|
|
197
|
+
window.addEventListener('click', handleClick);
|
|
179
198
|
window.addEventListener('keyup', handleKeyup);
|
|
180
199
|
dropdownToggleRef.value.addEventListener('keydown', handleKeydown);
|
|
181
200
|
dropdownMenuRef.value.addEventListener('keydown', handleKeydown);
|
|
201
|
+
if (pendingKeyDownEventRef.value) {
|
|
202
|
+
nextTick(() => {
|
|
203
|
+
handleKeydown(pendingKeyDownEventRef.value);
|
|
204
|
+
pendingKeyDownEventRef.value = null;
|
|
205
|
+
});
|
|
206
|
+
}
|
|
182
207
|
emit('show');
|
|
183
208
|
return;
|
|
184
209
|
}
|
|
185
|
-
popper.value
|
|
186
|
-
|
|
210
|
+
if (popper.value) {
|
|
211
|
+
destroyPopper();
|
|
212
|
+
}
|
|
213
|
+
window.removeEventListener('click', handleClick);
|
|
187
214
|
window.removeEventListener('keyup', handleKeyup);
|
|
215
|
+
dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
|
|
188
216
|
dropdownToggleRef.value &&
|
|
189
217
|
dropdownToggleRef.value.removeEventListener('keydown', handleKeydown);
|
|
190
|
-
dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
|
|
191
218
|
emit('hide');
|
|
192
219
|
});
|
|
220
|
+
onUnmounted(() => {
|
|
221
|
+
dropdownToggleRef.value &&
|
|
222
|
+
dropdownToggleRef.value.removeEventListener('keydown', handleKeydown);
|
|
223
|
+
dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
|
|
224
|
+
});
|
|
193
225
|
provide('config', {
|
|
194
226
|
alignment: props.alignment,
|
|
195
227
|
container: props.container,
|
|
@@ -201,13 +233,11 @@ const CDropdown = defineComponent({
|
|
|
201
233
|
provide('visible', visible);
|
|
202
234
|
provide('dropdownToggleRef', dropdownToggleRef);
|
|
203
235
|
provide('dropdownMenuRef', dropdownMenuRef);
|
|
236
|
+
provide('pendingKeyDownEventRef', pendingKeyDownEventRef);
|
|
204
237
|
const handleKeydown = (event) => {
|
|
205
|
-
if (
|
|
206
|
-
dropdownMenuRef.value &&
|
|
207
|
-
(event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
|
|
238
|
+
if (dropdownMenuRef.value && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
|
|
208
239
|
event.preventDefault();
|
|
209
240
|
const target = event.target;
|
|
210
|
-
// eslint-disable-next-line unicorn/prefer-spread
|
|
211
241
|
const items = Array.from(dropdownMenuRef.value.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)'));
|
|
212
242
|
getNextActiveElement(items, target, event.key === 'ArrowDown', true).focus();
|
|
213
243
|
}
|
|
@@ -218,40 +248,47 @@ const CDropdown = defineComponent({
|
|
|
218
248
|
}
|
|
219
249
|
if (event.key === 'Escape') {
|
|
220
250
|
setVisible(false);
|
|
251
|
+
dropdownToggleRef.value?.focus();
|
|
221
252
|
}
|
|
222
253
|
};
|
|
223
|
-
const
|
|
254
|
+
const handleClick = (event) => {
|
|
224
255
|
if (!dropdownToggleRef.value || !dropdownMenuRef.value) {
|
|
225
256
|
return;
|
|
226
257
|
}
|
|
227
|
-
if (
|
|
258
|
+
if (event.button === 2) {
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
const composedPath = event.composedPath();
|
|
262
|
+
const isOnToggle = composedPath.includes(dropdownToggleRef.value);
|
|
263
|
+
const isOnMenu = composedPath.includes(dropdownMenuRef.value);
|
|
264
|
+
if (isOnToggle) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
const target = event.target;
|
|
268
|
+
const FORM_TAG_RE = /^(input|select|option|textarea|form|button|label)$/i;
|
|
269
|
+
if (isOnMenu && target && FORM_TAG_RE.test(target.tagName)) {
|
|
228
270
|
return;
|
|
229
271
|
}
|
|
230
272
|
if (props.autoClose === true ||
|
|
231
|
-
(props.autoClose === 'inside' &&
|
|
232
|
-
|
|
233
|
-
(props.autoClose === 'outside' &&
|
|
234
|
-
!dropdownMenuRef.value.contains(event.target))) {
|
|
273
|
+
(props.autoClose === 'inside' && isOnMenu) ||
|
|
274
|
+
(props.autoClose === 'outside' && !isOnMenu)) {
|
|
235
275
|
setVisible(false);
|
|
236
|
-
return;
|
|
237
276
|
}
|
|
238
277
|
};
|
|
239
|
-
const setVisible = (_visible) => {
|
|
278
|
+
const setVisible = (_visible, event) => {
|
|
240
279
|
if (props.disabled) {
|
|
241
280
|
return;
|
|
242
281
|
}
|
|
243
|
-
if (typeof _visible
|
|
282
|
+
if (typeof _visible === 'boolean') {
|
|
283
|
+
if (event) {
|
|
284
|
+
pendingKeyDownEventRef.value = event || null;
|
|
285
|
+
}
|
|
244
286
|
visible.value = _visible;
|
|
245
287
|
return;
|
|
246
288
|
}
|
|
247
|
-
if (visible.value === true) {
|
|
248
|
-
visible.value = false;
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
visible.value = true;
|
|
252
289
|
};
|
|
253
290
|
provide('setVisible', setVisible);
|
|
254
|
-
return () => props.variant === 'input-group'
|
|
291
|
+
return () => h(CFocusTrap, { active: props.teleport && visible.value, additionalContainer: dropdownMenuRef }, () => props.variant === 'input-group'
|
|
255
292
|
? [slots.default && slots.default()]
|
|
256
293
|
: h('div', {
|
|
257
294
|
class: [
|
|
@@ -262,7 +299,8 @@ const CDropdown = defineComponent({
|
|
|
262
299
|
? 'dropup dropup-center'
|
|
263
300
|
: props.direction,
|
|
264
301
|
],
|
|
265
|
-
|
|
302
|
+
ref: dropdownRef,
|
|
303
|
+
}, slots.default && slots.default()));
|
|
266
304
|
},
|
|
267
305
|
});
|
|
268
306
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CDropdown.js","sources":["../../../../src/components/dropdown/CDropdown.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CDropdown.js","sources":["../../../../src/components/dropdown/CDropdown.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,15 @@ declare const CDropdownToggle: import("vue").DefineComponent<import("vue").Extra
|
|
|
61
61
|
* Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` className for proper spacing around the dropdown caret.
|
|
62
62
|
*/
|
|
63
63
|
split: BooleanConstructor;
|
|
64
|
+
/**
|
|
65
|
+
* Screen reader label for split button dropdown toggle.
|
|
66
|
+
*
|
|
67
|
+
* @since 5.7.0
|
|
68
|
+
*/
|
|
69
|
+
splitLabel: {
|
|
70
|
+
type: StringConstructor;
|
|
71
|
+
default: string;
|
|
72
|
+
};
|
|
64
73
|
/**
|
|
65
74
|
* Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them.
|
|
66
75
|
*
|
|
@@ -144,6 +153,15 @@ declare const CDropdownToggle: import("vue").DefineComponent<import("vue").Extra
|
|
|
144
153
|
* Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` className for proper spacing around the dropdown caret.
|
|
145
154
|
*/
|
|
146
155
|
split: BooleanConstructor;
|
|
156
|
+
/**
|
|
157
|
+
* Screen reader label for split button dropdown toggle.
|
|
158
|
+
*
|
|
159
|
+
* @since 5.7.0
|
|
160
|
+
*/
|
|
161
|
+
splitLabel: {
|
|
162
|
+
type: StringConstructor;
|
|
163
|
+
default: string;
|
|
164
|
+
};
|
|
147
165
|
/**
|
|
148
166
|
* Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them.
|
|
149
167
|
*
|
|
@@ -170,5 +188,6 @@ declare const CDropdownToggle: import("vue").DefineComponent<import("vue").Extra
|
|
|
170
188
|
trigger: Triggers;
|
|
171
189
|
caret: boolean;
|
|
172
190
|
navLink: boolean;
|
|
191
|
+
splitLabel: string;
|
|
173
192
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
174
193
|
export { CDropdownToggle };
|
|
@@ -61,6 +61,15 @@ const CDropdownToggle = defineComponent({
|
|
|
61
61
|
* Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` className for proper spacing around the dropdown caret.
|
|
62
62
|
*/
|
|
63
63
|
split: Boolean,
|
|
64
|
+
/**
|
|
65
|
+
* Screen reader label for split button dropdown toggle.
|
|
66
|
+
*
|
|
67
|
+
* @since 5.7.0
|
|
68
|
+
*/
|
|
69
|
+
splitLabel: {
|
|
70
|
+
type: String,
|
|
71
|
+
default: 'Toggle Dropdown',
|
|
72
|
+
},
|
|
64
73
|
/**
|
|
65
74
|
* Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them.
|
|
66
75
|
*
|
|
@@ -95,7 +104,7 @@ const CDropdownToggle = defineComponent({
|
|
|
95
104
|
if (props.disabled) {
|
|
96
105
|
return;
|
|
97
106
|
}
|
|
98
|
-
setVisible();
|
|
107
|
+
setVisible(!visible.value);
|
|
99
108
|
},
|
|
100
109
|
}),
|
|
101
110
|
...((props.trigger === 'focus' || props.trigger.includes('focus')) && {
|
|
@@ -112,6 +121,12 @@ const CDropdownToggle = defineComponent({
|
|
|
112
121
|
setVisible(false);
|
|
113
122
|
},
|
|
114
123
|
}),
|
|
124
|
+
onkeydown: (event) => {
|
|
125
|
+
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
126
|
+
event.preventDefault();
|
|
127
|
+
setVisible(true, event);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
115
130
|
};
|
|
116
131
|
const togglerProps = computed(() => {
|
|
117
132
|
return {
|
|
@@ -158,7 +173,7 @@ const CDropdownToggle = defineComponent({
|
|
|
158
173
|
togglerRef.value = el;
|
|
159
174
|
},
|
|
160
175
|
}, () => props.split
|
|
161
|
-
? h('span', { class: 'visually-hidden' },
|
|
176
|
+
? h('span', { class: 'visually-hidden' }, props.splitLabel)
|
|
162
177
|
: slots.default && slots.default());
|
|
163
178
|
},
|
|
164
179
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CDropdownToggle.js","sources":["../../../../src/components/dropdown/CDropdownToggle.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAiBA,MAAM,eAAe,GAAG,eAAe,CAAC;AACtC,IAAA,IAAI,EAAE,iBAAiB;AACvB,IAAA,KAAK,EAAE;AACL;;AAEG;AACH,QAAA,EAAE,EAAE;AACF,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,OAAO,EAAE,QAAQ;AAClB,SAAA;AACD;;;;AAIG;AACH,QAAA,KAAK,EAAE,KAAK;AACZ;;AAEG;AACH,QAAA,KAAK,EAAE;AACL,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,IAAI;AACd,SAAA;AACD;;AAEG;AACH,QAAA,MAAM,EAAE,OAAO;AACf;;AAEG;AACH,QAAA,QAAQ,EAAE,OAAO;AACjB;;;;AAIG;AACH,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,IAAI;AACd,SAAA;AACD;;AAEG;AACH,QAAA,KAAK,EAAE,KAAK;AACZ;;;;AAIG;AACH,QAAA,IAAI,EAAE;AACJ,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;gBAC3B,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YACrC,CAAC;AACF,SAAA;AACD;;AAEG;AACH,QAAA,KAAK,EAAE,OAAO;AACd;;;;AAIG;AACH,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAA4B;AAClC,YAAA,OAAO,EAAE,OAAO;AACjB,SAAA;AACD;;;;AAIG;AACH,QAAA,OAAO,EAAE;AACP,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;gBAC3B,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7C,CAAC;AACF,SAAA;AACF,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA;AACpB,QAAA,MAAM,UAAU,GAAG,GAAG,EAAE;AACxB,QAAA,MAAM,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAqB;AACzE,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAW;AACnD,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAiB;AACjD,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"CDropdownToggle.js","sources":["../../../../src/components/dropdown/CDropdownToggle.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
1
2
|
import type { Placement } from '@popperjs/core';
|
|
2
3
|
import type { Placements } from '../../types';
|
|
3
4
|
import type { Alignments } from './types';
|
|
4
5
|
export declare const getAlignmentClassNames: (alignment: Alignments) => string[];
|
|
5
6
|
export declare const getPlacement: (placement: Placement, direction: string | undefined, alignment: Alignments | string | undefined, isRTL: boolean) => Placements;
|
|
7
|
+
export declare const getReferenceElement: (reference: "parent" | "toggle" | Ref<HTMLElement | null> | HTMLElement, dropdownToggleRef: Ref<HTMLElement | null>, dropdownRef: Ref<HTMLElement | null>) => HTMLElement | null;
|
|
@@ -29,6 +29,18 @@ const getPlacement = (placement, direction, alignment, isRTL) => {
|
|
|
29
29
|
}
|
|
30
30
|
return _placement;
|
|
31
31
|
};
|
|
32
|
+
const getReferenceElement = (reference, dropdownToggleRef, dropdownRef) => {
|
|
33
|
+
if (reference === 'parent') {
|
|
34
|
+
return dropdownRef.value;
|
|
35
|
+
}
|
|
36
|
+
if (reference instanceof HTMLElement) {
|
|
37
|
+
return reference;
|
|
38
|
+
}
|
|
39
|
+
if (reference instanceof Object && 'value' in reference) {
|
|
40
|
+
return reference.value;
|
|
41
|
+
}
|
|
42
|
+
return dropdownToggleRef.value;
|
|
43
|
+
};
|
|
32
44
|
|
|
33
|
-
export { getAlignmentClassNames, getPlacement };
|
|
45
|
+
export { getAlignmentClassNames, getPlacement, getReferenceElement };
|
|
34
46
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/components/dropdown/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/components/dropdown/utils.ts"],"sourcesContent":[null],"names":[],"mappings":"AAKO,MAAM,sBAAsB,GAAG,CAAC,SAAqB,KAAI;IAC9D,MAAM,UAAU,GAAa,EAAE;AAC/B,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;YAC3B,UAAU,CAAC,IAAI,CACb,CAAA,aAAA,EAAgB,GAAG,KAAK,IAAI,GAAG,EAAE,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA,CAAA,EAAI,SAAS,CAAC,GAAwB,CAAC,CAAA,CAAE,CACvF;QACH;IACF;AAEA,IAAA,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;AACjC,QAAA,UAAU,CAAC,IAAI,CAAC,iBAAiB,SAAS,CAAA,CAAE,CAAC;IAC/C;AAEA,IAAA,OAAO,UAAU;AACnB;AAEO,MAAM,YAAY,GAAG,CAC1B,SAAoB,EACpB,SAA6B,EAC7B,SAA0C,EAC1C,KAAc,KACA;IACd,IAAI,UAAU,GAAG,SAAS;AAE1B,IAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;QAC1B,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW;IAC9C;AAEA,IAAA,IAAI,SAAS,KAAK,eAAe,EAAE;QACjC,UAAU,GAAG,KAAK;IACpB;AAEA,IAAA,IAAI,SAAS,KAAK,SAAS,EAAE;QAC3B,UAAU,GAAG,KAAK,GAAG,YAAY,GAAG,aAAa;IACnD;AAEA,IAAA,IAAI,SAAS,KAAK,WAAW,EAAE;QAC7B,UAAU,GAAG,KAAK,GAAG,aAAa,GAAG,YAAY;IACnD;AAEA,IAAA,IAAI,SAAS,KAAK,KAAK,EAAE;QACvB,UAAU,GAAG,KAAK,GAAG,cAAc,GAAG,YAAY;IACpD;AAEA,IAAA,OAAO,UAAU;AACnB;AAEO,MAAM,mBAAmB,GAAG,CACjC,SAAsE,EACtE,iBAA0C,EAC1C,WAAoC,KACd;AACtB,IAAA,IAAI,SAAS,KAAK,QAAQ,EAAE;QAC1B,OAAO,WAAW,CAAC,KAAK;IAC1B;AAEA,IAAA,IAAI,SAAS,YAAY,WAAW,EAAE;AACpC,QAAA,OAAO,SAAS;IAClB;IAEA,IAAI,SAAS,YAAY,MAAM,IAAI,OAAO,IAAI,SAAS,EAAE;QACvD,OAAO,SAAS,CAAC,KAAK;IACxB;IAEA,OAAO,iBAAiB,CAAC,KAAK;AAChC;;;;"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { type Ref, type PropType } from 'vue';
|
|
2
|
+
declare const CFocusTrap: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
3
|
+
/**
|
|
4
|
+
* Controls whether the focus trap is active or inactive.
|
|
5
|
+
* When `true`, focus will be trapped within the child element.
|
|
6
|
+
* When `false`, normal focus behavior is restored.
|
|
7
|
+
*/
|
|
8
|
+
active: {
|
|
9
|
+
type: BooleanConstructor;
|
|
10
|
+
default: boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Additional container elements to include in the focus trap.
|
|
14
|
+
* Useful for floating elements like tooltips or popovers that are
|
|
15
|
+
* rendered outside the main container but should be part of the trap.
|
|
16
|
+
*/
|
|
17
|
+
additionalContainer: {
|
|
18
|
+
type: PropType<Ref<HTMLElement | null>>;
|
|
19
|
+
default: undefined;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Controls whether to focus the first selectable element or the container itself.
|
|
23
|
+
* When `true`, focuses the first tabbable element within the container.
|
|
24
|
+
* When `false`, focuses the container element directly.
|
|
25
|
+
*
|
|
26
|
+
* This is useful for containers that should receive focus themselves,
|
|
27
|
+
* such as scrollable regions or custom interactive components.
|
|
28
|
+
*/
|
|
29
|
+
focusFirstElement: {
|
|
30
|
+
type: BooleanConstructor;
|
|
31
|
+
default: boolean;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Automatically restores focus to the previously focused element when the trap is deactivated.
|
|
35
|
+
* This is crucial for accessibility as it maintains the user's place in the document
|
|
36
|
+
* when returning from modal dialogs or overlay components.
|
|
37
|
+
*
|
|
38
|
+
* Recommended to be `true` for modal dialogs and popover components.
|
|
39
|
+
*/
|
|
40
|
+
restoreFocus: {
|
|
41
|
+
type: BooleanConstructor;
|
|
42
|
+
default: boolean;
|
|
43
|
+
};
|
|
44
|
+
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
|
|
45
|
+
[key: string]: any;
|
|
46
|
+
}> | null, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
47
|
+
/**
|
|
48
|
+
* Emitted when the focus trap becomes active.
|
|
49
|
+
* Useful for triggering additional accessibility announcements or analytics.
|
|
50
|
+
*/
|
|
51
|
+
activate: () => true;
|
|
52
|
+
/**
|
|
53
|
+
* Emitted when the focus trap is deactivated.
|
|
54
|
+
* Can be used for cleanup, analytics, or triggering state changes.
|
|
55
|
+
*/
|
|
56
|
+
deactivate: () => true;
|
|
57
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
58
|
+
/**
|
|
59
|
+
* Controls whether the focus trap is active or inactive.
|
|
60
|
+
* When `true`, focus will be trapped within the child element.
|
|
61
|
+
* When `false`, normal focus behavior is restored.
|
|
62
|
+
*/
|
|
63
|
+
active: {
|
|
64
|
+
type: BooleanConstructor;
|
|
65
|
+
default: boolean;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Additional container elements to include in the focus trap.
|
|
69
|
+
* Useful for floating elements like tooltips or popovers that are
|
|
70
|
+
* rendered outside the main container but should be part of the trap.
|
|
71
|
+
*/
|
|
72
|
+
additionalContainer: {
|
|
73
|
+
type: PropType<Ref<HTMLElement | null>>;
|
|
74
|
+
default: undefined;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Controls whether to focus the first selectable element or the container itself.
|
|
78
|
+
* When `true`, focuses the first tabbable element within the container.
|
|
79
|
+
* When `false`, focuses the container element directly.
|
|
80
|
+
*
|
|
81
|
+
* This is useful for containers that should receive focus themselves,
|
|
82
|
+
* such as scrollable regions or custom interactive components.
|
|
83
|
+
*/
|
|
84
|
+
focusFirstElement: {
|
|
85
|
+
type: BooleanConstructor;
|
|
86
|
+
default: boolean;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Automatically restores focus to the previously focused element when the trap is deactivated.
|
|
90
|
+
* This is crucial for accessibility as it maintains the user's place in the document
|
|
91
|
+
* when returning from modal dialogs or overlay components.
|
|
92
|
+
*
|
|
93
|
+
* Recommended to be `true` for modal dialogs and popover components.
|
|
94
|
+
*/
|
|
95
|
+
restoreFocus: {
|
|
96
|
+
type: BooleanConstructor;
|
|
97
|
+
default: boolean;
|
|
98
|
+
};
|
|
99
|
+
}>> & Readonly<{
|
|
100
|
+
onActivate?: (() => any) | undefined;
|
|
101
|
+
onDeactivate?: (() => any) | undefined;
|
|
102
|
+
}>, {
|
|
103
|
+
active: boolean;
|
|
104
|
+
additionalContainer: Ref<HTMLElement | null, HTMLElement | null>;
|
|
105
|
+
focusFirstElement: boolean;
|
|
106
|
+
restoreFocus: boolean;
|
|
107
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
108
|
+
export { CFocusTrap };
|