@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
|
@@ -5,6 +5,7 @@ var usePopper = require('../../composables/usePopper.js');
|
|
|
5
5
|
var getNextActiveElement = require('../../utils/getNextActiveElement.js');
|
|
6
6
|
var isRTL = require('../../utils/isRTL.js');
|
|
7
7
|
var utils = require('./utils.js');
|
|
8
|
+
var CFocusTrap = require('../focus-trap/CFocusTrap.js');
|
|
8
9
|
|
|
9
10
|
const CDropdown = vue.defineComponent({
|
|
10
11
|
name: 'CDropdown',
|
|
@@ -111,6 +112,19 @@ const CDropdown = vue.defineComponent({
|
|
|
111
112
|
type: Boolean,
|
|
112
113
|
default: true,
|
|
113
114
|
},
|
|
115
|
+
/**
|
|
116
|
+
* Sets the reference element for positioning the Vue Dropdown Menu.
|
|
117
|
+
* - `toggle` - The Vue Dropdown Toggle button (default).
|
|
118
|
+
* - `parent` - The Vue Dropdown wrapper element.
|
|
119
|
+
* - `HTMLElement` - A custom HTML element.
|
|
120
|
+
* - `Ref` - A custom reference element.
|
|
121
|
+
*
|
|
122
|
+
* @since 5.7.0
|
|
123
|
+
*/
|
|
124
|
+
reference: {
|
|
125
|
+
type: [String, Object],
|
|
126
|
+
default: 'toggle',
|
|
127
|
+
},
|
|
114
128
|
/**
|
|
115
129
|
* Generates dropdown menu using Teleport.
|
|
116
130
|
*
|
|
@@ -155,12 +169,14 @@ const CDropdown = vue.defineComponent({
|
|
|
155
169
|
'show',
|
|
156
170
|
],
|
|
157
171
|
setup(props, { slots, emit }) {
|
|
158
|
-
const
|
|
159
|
-
const dropdownMenuRef = vue.ref();
|
|
172
|
+
const dropdownRef = vue.ref(null);
|
|
173
|
+
const dropdownMenuRef = vue.ref(null);
|
|
174
|
+
const dropdownToggleRef = vue.ref(null);
|
|
175
|
+
const pendingKeyDownEventRef = vue.ref(null);
|
|
160
176
|
const popper = vue.ref(typeof props.alignment === 'object' ? false : props.popper);
|
|
161
177
|
const visible = vue.ref(props.visible);
|
|
162
178
|
const { initPopper, destroyPopper } = usePopper.usePopper();
|
|
163
|
-
const popperConfig = {
|
|
179
|
+
const popperConfig = vue.computed(() => ({
|
|
164
180
|
modifiers: [
|
|
165
181
|
{
|
|
166
182
|
name: 'offset',
|
|
@@ -170,28 +186,44 @@ const CDropdown = vue.defineComponent({
|
|
|
170
186
|
},
|
|
171
187
|
],
|
|
172
188
|
placement: utils.getPlacement(props.placement, props.direction, props.alignment, isRTL.default(dropdownMenuRef.value)),
|
|
173
|
-
};
|
|
189
|
+
}));
|
|
174
190
|
vue.watch(() => props.visible, () => {
|
|
175
191
|
visible.value = props.visible;
|
|
176
192
|
});
|
|
177
193
|
vue.watch(visible, () => {
|
|
178
194
|
if (visible.value && dropdownToggleRef.value && dropdownMenuRef.value) {
|
|
179
|
-
|
|
180
|
-
|
|
195
|
+
const referenceElement = utils.getReferenceElement(props.reference, dropdownToggleRef, dropdownRef);
|
|
196
|
+
if (referenceElement && popper.value) {
|
|
197
|
+
initPopper(referenceElement, dropdownMenuRef.value, popperConfig.value);
|
|
198
|
+
}
|
|
199
|
+
window.addEventListener('click', handleClick);
|
|
181
200
|
window.addEventListener('keyup', handleKeyup);
|
|
182
201
|
dropdownToggleRef.value.addEventListener('keydown', handleKeydown);
|
|
183
202
|
dropdownMenuRef.value.addEventListener('keydown', handleKeydown);
|
|
203
|
+
if (pendingKeyDownEventRef.value) {
|
|
204
|
+
vue.nextTick(() => {
|
|
205
|
+
handleKeydown(pendingKeyDownEventRef.value);
|
|
206
|
+
pendingKeyDownEventRef.value = null;
|
|
207
|
+
});
|
|
208
|
+
}
|
|
184
209
|
emit('show');
|
|
185
210
|
return;
|
|
186
211
|
}
|
|
187
|
-
popper.value
|
|
188
|
-
|
|
212
|
+
if (popper.value) {
|
|
213
|
+
destroyPopper();
|
|
214
|
+
}
|
|
215
|
+
window.removeEventListener('click', handleClick);
|
|
189
216
|
window.removeEventListener('keyup', handleKeyup);
|
|
217
|
+
dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
|
|
190
218
|
dropdownToggleRef.value &&
|
|
191
219
|
dropdownToggleRef.value.removeEventListener('keydown', handleKeydown);
|
|
192
|
-
dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
|
|
193
220
|
emit('hide');
|
|
194
221
|
});
|
|
222
|
+
vue.onUnmounted(() => {
|
|
223
|
+
dropdownToggleRef.value &&
|
|
224
|
+
dropdownToggleRef.value.removeEventListener('keydown', handleKeydown);
|
|
225
|
+
dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
|
|
226
|
+
});
|
|
195
227
|
vue.provide('config', {
|
|
196
228
|
alignment: props.alignment,
|
|
197
229
|
container: props.container,
|
|
@@ -203,13 +235,11 @@ const CDropdown = vue.defineComponent({
|
|
|
203
235
|
vue.provide('visible', visible);
|
|
204
236
|
vue.provide('dropdownToggleRef', dropdownToggleRef);
|
|
205
237
|
vue.provide('dropdownMenuRef', dropdownMenuRef);
|
|
238
|
+
vue.provide('pendingKeyDownEventRef', pendingKeyDownEventRef);
|
|
206
239
|
const handleKeydown = (event) => {
|
|
207
|
-
if (
|
|
208
|
-
dropdownMenuRef.value &&
|
|
209
|
-
(event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
|
|
240
|
+
if (dropdownMenuRef.value && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
|
|
210
241
|
event.preventDefault();
|
|
211
242
|
const target = event.target;
|
|
212
|
-
// eslint-disable-next-line unicorn/prefer-spread
|
|
213
243
|
const items = Array.from(dropdownMenuRef.value.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)'));
|
|
214
244
|
getNextActiveElement.default(items, target, event.key === 'ArrowDown', true).focus();
|
|
215
245
|
}
|
|
@@ -220,40 +250,47 @@ const CDropdown = vue.defineComponent({
|
|
|
220
250
|
}
|
|
221
251
|
if (event.key === 'Escape') {
|
|
222
252
|
setVisible(false);
|
|
253
|
+
dropdownToggleRef.value?.focus();
|
|
223
254
|
}
|
|
224
255
|
};
|
|
225
|
-
const
|
|
256
|
+
const handleClick = (event) => {
|
|
226
257
|
if (!dropdownToggleRef.value || !dropdownMenuRef.value) {
|
|
227
258
|
return;
|
|
228
259
|
}
|
|
229
|
-
if (
|
|
260
|
+
if (event.button === 2) {
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const composedPath = event.composedPath();
|
|
264
|
+
const isOnToggle = composedPath.includes(dropdownToggleRef.value);
|
|
265
|
+
const isOnMenu = composedPath.includes(dropdownMenuRef.value);
|
|
266
|
+
if (isOnToggle) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
const target = event.target;
|
|
270
|
+
const FORM_TAG_RE = /^(input|select|option|textarea|form|button|label)$/i;
|
|
271
|
+
if (isOnMenu && target && FORM_TAG_RE.test(target.tagName)) {
|
|
230
272
|
return;
|
|
231
273
|
}
|
|
232
274
|
if (props.autoClose === true ||
|
|
233
|
-
(props.autoClose === 'inside' &&
|
|
234
|
-
|
|
235
|
-
(props.autoClose === 'outside' &&
|
|
236
|
-
!dropdownMenuRef.value.contains(event.target))) {
|
|
275
|
+
(props.autoClose === 'inside' && isOnMenu) ||
|
|
276
|
+
(props.autoClose === 'outside' && !isOnMenu)) {
|
|
237
277
|
setVisible(false);
|
|
238
|
-
return;
|
|
239
278
|
}
|
|
240
279
|
};
|
|
241
|
-
const setVisible = (_visible) => {
|
|
280
|
+
const setVisible = (_visible, event) => {
|
|
242
281
|
if (props.disabled) {
|
|
243
282
|
return;
|
|
244
283
|
}
|
|
245
|
-
if (typeof _visible
|
|
284
|
+
if (typeof _visible === 'boolean') {
|
|
285
|
+
if (event) {
|
|
286
|
+
pendingKeyDownEventRef.value = event || null;
|
|
287
|
+
}
|
|
246
288
|
visible.value = _visible;
|
|
247
289
|
return;
|
|
248
290
|
}
|
|
249
|
-
if (visible.value === true) {
|
|
250
|
-
visible.value = false;
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
visible.value = true;
|
|
254
291
|
};
|
|
255
292
|
vue.provide('setVisible', setVisible);
|
|
256
|
-
return () => props.variant === 'input-group'
|
|
293
|
+
return () => vue.h(CFocusTrap.CFocusTrap, { active: props.teleport && visible.value, additionalContainer: dropdownMenuRef }, () => props.variant === 'input-group'
|
|
257
294
|
? [slots.default && slots.default()]
|
|
258
295
|
: vue.h('div', {
|
|
259
296
|
class: [
|
|
@@ -264,7 +301,8 @@ const CDropdown = vue.defineComponent({
|
|
|
264
301
|
? 'dropup dropup-center'
|
|
265
302
|
: props.direction,
|
|
266
303
|
],
|
|
267
|
-
|
|
304
|
+
ref: dropdownRef,
|
|
305
|
+
}, slots.default && slots.default()));
|
|
268
306
|
},
|
|
269
307
|
});
|
|
270
308
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CDropdown.js","sources":["../../../../src/components/dropdown/CDropdown.ts"],"sourcesContent":[null],"names":["defineComponent","ref","usePopper","getPlacement","isRTL","watch","provide","getNextActiveElement","h"],"mappings":"
|
|
1
|
+
{"version":3,"file":"CDropdown.js","sources":["../../../../src/components/dropdown/CDropdown.ts"],"sourcesContent":[null],"names":["defineComponent","ref","usePopper","computed","getPlacement","isRTL","watch","getReferenceElement","nextTick","onUnmounted","provide","getNextActiveElement","h","CFocusTrap"],"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 };
|
|
@@ -63,6 +63,15 @@ const CDropdownToggle = vue.defineComponent({
|
|
|
63
63
|
* 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.
|
|
64
64
|
*/
|
|
65
65
|
split: Boolean,
|
|
66
|
+
/**
|
|
67
|
+
* Screen reader label for split button dropdown toggle.
|
|
68
|
+
*
|
|
69
|
+
* @since 5.7.0
|
|
70
|
+
*/
|
|
71
|
+
splitLabel: {
|
|
72
|
+
type: String,
|
|
73
|
+
default: 'Toggle Dropdown',
|
|
74
|
+
},
|
|
66
75
|
/**
|
|
67
76
|
* Sets which event handlers you’d like provided to your toggle prop. You can specify one trigger or an array of them.
|
|
68
77
|
*
|
|
@@ -97,7 +106,7 @@ const CDropdownToggle = vue.defineComponent({
|
|
|
97
106
|
if (props.disabled) {
|
|
98
107
|
return;
|
|
99
108
|
}
|
|
100
|
-
setVisible();
|
|
109
|
+
setVisible(!visible.value);
|
|
101
110
|
},
|
|
102
111
|
}),
|
|
103
112
|
...((props.trigger === 'focus' || props.trigger.includes('focus')) && {
|
|
@@ -114,6 +123,12 @@ const CDropdownToggle = vue.defineComponent({
|
|
|
114
123
|
setVisible(false);
|
|
115
124
|
},
|
|
116
125
|
}),
|
|
126
|
+
onkeydown: (event) => {
|
|
127
|
+
if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
|
|
128
|
+
event.preventDefault();
|
|
129
|
+
setVisible(true, event);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
117
132
|
};
|
|
118
133
|
const togglerProps = vue.computed(() => {
|
|
119
134
|
return {
|
|
@@ -160,7 +175,7 @@ const CDropdownToggle = vue.defineComponent({
|
|
|
160
175
|
togglerRef.value = el;
|
|
161
176
|
},
|
|
162
177
|
}, () => props.split
|
|
163
|
-
? vue.h('span', { class: 'visually-hidden' },
|
|
178
|
+
? vue.h('span', { class: 'visually-hidden' }, props.splitLabel)
|
|
164
179
|
: slots.default && slots.default());
|
|
165
180
|
},
|
|
166
181
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CDropdownToggle.js","sources":["../../../../src/components/dropdown/CDropdownToggle.ts"],"sourcesContent":[null],"names":["defineComponent","Color","Shape","ref","inject","computed","onMounted","cloneVNode","h","CButton"],"mappings":";;;;;;AAiBA,MAAM,eAAe,GAAGA,mBAAe,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,EAAEC,WAAK;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,EAAEC,WAAK;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,GAAGC,OAAG,EAAE;AACxB,QAAA,MAAM,iBAAiB,GAAGC,UAAM,CAAC,mBAAmB,CAAqB;AACzE,QAAA,MAAM,eAAe,GAAGA,UAAM,CAAC,SAAS,CAAW;AACnD,QAAA,MAAM,OAAO,GAAGA,UAAM,CAAC,SAAS,CAAiB;AACjD,QAAA,MAAM,UAAU,GAAGA,UAAM,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"CDropdownToggle.js","sources":["../../../../src/components/dropdown/CDropdownToggle.ts"],"sourcesContent":[null],"names":["defineComponent","Color","Shape","ref","inject","computed","onMounted","cloneVNode","h","CButton"],"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;
|
|
@@ -31,7 +31,20 @@ const getPlacement = (placement, direction, alignment, isRTL) => {
|
|
|
31
31
|
}
|
|
32
32
|
return _placement;
|
|
33
33
|
};
|
|
34
|
+
const getReferenceElement = (reference, dropdownToggleRef, dropdownRef) => {
|
|
35
|
+
if (reference === 'parent') {
|
|
36
|
+
return dropdownRef.value;
|
|
37
|
+
}
|
|
38
|
+
if (reference instanceof HTMLElement) {
|
|
39
|
+
return reference;
|
|
40
|
+
}
|
|
41
|
+
if (reference instanceof Object && 'value' in reference) {
|
|
42
|
+
return reference.value;
|
|
43
|
+
}
|
|
44
|
+
return dropdownToggleRef.value;
|
|
45
|
+
};
|
|
34
46
|
|
|
35
47
|
exports.getAlignmentClassNames = getAlignmentClassNames;
|
|
36
48
|
exports.getPlacement = getPlacement;
|
|
49
|
+
exports.getReferenceElement = getReferenceElement;
|
|
37
50
|
//# 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 };
|