@coreui/vue-pro 5.13.0 → 5.15.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.
Files changed (115) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/components/calendar/CCalendar.js +61 -65
  3. package/dist/cjs/components/calendar/CCalendar.js.map +1 -1
  4. package/dist/cjs/components/calendar/utils.d.ts +53 -2
  5. package/dist/cjs/components/calendar/utils.js +466 -43
  6. package/dist/cjs/components/calendar/utils.js.map +1 -1
  7. package/dist/cjs/components/date-picker/CDatePicker.d.ts +19 -0
  8. package/dist/cjs/components/date-picker/CDatePicker.js +9 -0
  9. package/dist/cjs/components/date-picker/CDatePicker.js.map +1 -1
  10. package/dist/cjs/components/date-range-picker/CDateRangePicker.d.ts +19 -0
  11. package/dist/cjs/components/date-range-picker/CDateRangePicker.js +98 -57
  12. package/dist/cjs/components/date-range-picker/CDateRangePicker.js.map +1 -1
  13. package/dist/cjs/components/date-range-picker/utils.d.ts +0 -9
  14. package/dist/cjs/components/date-range-picker/utils.js +0 -38
  15. package/dist/cjs/components/date-range-picker/utils.js.map +1 -1
  16. package/dist/cjs/components/dropdown/CDropdown.js +22 -13
  17. package/dist/cjs/components/dropdown/CDropdown.js.map +1 -1
  18. package/dist/cjs/components/dropdown/CDropdownToggle.js +7 -1
  19. package/dist/cjs/components/dropdown/CDropdownToggle.js.map +1 -1
  20. package/dist/cjs/components/focus-trap/CFocusTrap.d.ts +108 -0
  21. package/dist/cjs/components/focus-trap/CFocusTrap.js +254 -0
  22. package/dist/cjs/components/focus-trap/CFocusTrap.js.map +1 -0
  23. package/dist/cjs/components/focus-trap/index.d.ts +6 -0
  24. package/dist/cjs/components/focus-trap/index.js +13 -0
  25. package/dist/cjs/components/focus-trap/index.js.map +1 -0
  26. package/dist/cjs/components/focus-trap/utils.d.ts +28 -0
  27. package/dist/cjs/components/focus-trap/utils.js +83 -0
  28. package/dist/cjs/components/focus-trap/utils.js.map +1 -0
  29. package/dist/cjs/components/index.d.ts +1 -0
  30. package/dist/cjs/components/index.js +70 -66
  31. package/dist/cjs/components/index.js.map +1 -1
  32. package/dist/cjs/components/modal/CModal.d.ts +2 -2
  33. package/dist/cjs/components/modal/CModal.js +19 -27
  34. package/dist/cjs/components/modal/CModal.js.map +1 -1
  35. package/dist/cjs/components/modal/CModalHeader.js +4 -2
  36. package/dist/cjs/components/modal/CModalHeader.js.map +1 -1
  37. package/dist/cjs/components/offcanvas/COffcanvas.js +3 -2
  38. package/dist/cjs/components/offcanvas/COffcanvas.js.map +1 -1
  39. package/dist/cjs/components/picker/CPicker.js +3 -2
  40. package/dist/cjs/components/picker/CPicker.js.map +1 -1
  41. package/dist/cjs/components/time-picker/CTimePicker.d.ts +1 -1
  42. package/dist/cjs/components/time-picker/CTimePicker.js +1 -1
  43. package/dist/cjs/components/time-picker/CTimePicker.js.map +1 -1
  44. package/dist/cjs/components/time-picker/utils.d.ts +1 -1
  45. package/dist/cjs/composables/useDebouncedCallback.d.ts +1 -1
  46. package/dist/cjs/composables/useDebouncedCallback.js +1 -1
  47. package/dist/cjs/composables/useDebouncedCallback.js.map +1 -1
  48. package/dist/cjs/index.js +76 -72
  49. package/dist/cjs/index.js.map +1 -1
  50. package/dist/esm/components/calendar/CCalendar.js +61 -65
  51. package/dist/esm/components/calendar/CCalendar.js.map +1 -1
  52. package/dist/esm/components/calendar/utils.d.ts +53 -2
  53. package/dist/esm/components/calendar/utils.js +464 -44
  54. package/dist/esm/components/calendar/utils.js.map +1 -1
  55. package/dist/esm/components/date-picker/CDatePicker.d.ts +19 -0
  56. package/dist/esm/components/date-picker/CDatePicker.js +9 -0
  57. package/dist/esm/components/date-picker/CDatePicker.js.map +1 -1
  58. package/dist/esm/components/date-range-picker/CDateRangePicker.d.ts +19 -0
  59. package/dist/esm/components/date-range-picker/CDateRangePicker.js +98 -57
  60. package/dist/esm/components/date-range-picker/CDateRangePicker.js.map +1 -1
  61. package/dist/esm/components/date-range-picker/utils.d.ts +0 -9
  62. package/dist/esm/components/date-range-picker/utils.js +1 -38
  63. package/dist/esm/components/date-range-picker/utils.js.map +1 -1
  64. package/dist/esm/components/dropdown/CDropdown.js +23 -14
  65. package/dist/esm/components/dropdown/CDropdown.js.map +1 -1
  66. package/dist/esm/components/dropdown/CDropdownToggle.js +7 -1
  67. package/dist/esm/components/dropdown/CDropdownToggle.js.map +1 -1
  68. package/dist/esm/components/focus-trap/CFocusTrap.d.ts +108 -0
  69. package/dist/esm/components/focus-trap/CFocusTrap.js +252 -0
  70. package/dist/esm/components/focus-trap/CFocusTrap.js.map +1 -0
  71. package/dist/esm/components/focus-trap/index.d.ts +6 -0
  72. package/dist/esm/components/focus-trap/index.js +10 -0
  73. package/dist/esm/components/focus-trap/index.js.map +1 -0
  74. package/dist/esm/components/focus-trap/utils.d.ts +28 -0
  75. package/dist/esm/components/focus-trap/utils.js +78 -0
  76. package/dist/esm/components/focus-trap/utils.js.map +1 -0
  77. package/dist/esm/components/index.d.ts +1 -0
  78. package/dist/esm/components/index.js +2 -0
  79. package/dist/esm/components/index.js.map +1 -1
  80. package/dist/esm/components/modal/CModal.d.ts +2 -2
  81. package/dist/esm/components/modal/CModal.js +19 -27
  82. package/dist/esm/components/modal/CModal.js.map +1 -1
  83. package/dist/esm/components/modal/CModalHeader.js +4 -2
  84. package/dist/esm/components/modal/CModalHeader.js.map +1 -1
  85. package/dist/esm/components/offcanvas/COffcanvas.js +3 -2
  86. package/dist/esm/components/offcanvas/COffcanvas.js.map +1 -1
  87. package/dist/esm/components/picker/CPicker.js +3 -2
  88. package/dist/esm/components/picker/CPicker.js.map +1 -1
  89. package/dist/esm/components/time-picker/CTimePicker.d.ts +1 -1
  90. package/dist/esm/components/time-picker/CTimePicker.js +1 -1
  91. package/dist/esm/components/time-picker/CTimePicker.js.map +1 -1
  92. package/dist/esm/components/time-picker/utils.d.ts +1 -1
  93. package/dist/esm/composables/useDebouncedCallback.d.ts +1 -1
  94. package/dist/esm/composables/useDebouncedCallback.js +1 -1
  95. package/dist/esm/composables/useDebouncedCallback.js.map +1 -1
  96. package/dist/esm/index.js +2 -0
  97. package/dist/esm/index.js.map +1 -1
  98. package/package.json +5 -5
  99. package/src/components/calendar/CCalendar.ts +55 -70
  100. package/src/components/calendar/utils.ts +595 -47
  101. package/src/components/date-picker/CDatePicker.ts +9 -0
  102. package/src/components/date-range-picker/CDateRangePicker.ts +144 -82
  103. package/src/components/date-range-picker/utils.ts +0 -58
  104. package/src/components/dropdown/CDropdown.ts +34 -23
  105. package/src/components/dropdown/CDropdownToggle.ts +8 -2
  106. package/src/components/focus-trap/CFocusTrap.ts +303 -0
  107. package/src/components/focus-trap/index.ts +10 -0
  108. package/src/components/focus-trap/utils.ts +90 -0
  109. package/src/components/index.ts +1 -0
  110. package/src/components/modal/CModal.ts +32 -37
  111. package/src/components/modal/CModalHeader.ts +5 -3
  112. package/src/components/offcanvas/COffcanvas.ts +40 -36
  113. package/src/components/picker/CPicker.ts +58 -52
  114. package/src/components/time-picker/CTimePicker.ts +12 -13
  115. package/src/composables/useDebouncedCallback.ts +1 -1
@@ -157,6 +157,7 @@ const CDropdown = vue.defineComponent({
157
157
  setup(props, { slots, emit }) {
158
158
  const dropdownToggleRef = vue.ref();
159
159
  const dropdownMenuRef = vue.ref();
160
+ const pendingKeyDownEventRef = vue.ref(null);
160
161
  const popper = vue.ref(typeof props.alignment === 'object' ? false : props.popper);
161
162
  const visible = vue.ref(props.visible);
162
163
  const { initPopper, destroyPopper } = usePopper.usePopper();
@@ -176,21 +177,32 @@ const CDropdown = vue.defineComponent({
176
177
  });
177
178
  vue.watch(visible, () => {
178
179
  if (visible.value && dropdownToggleRef.value && dropdownMenuRef.value) {
179
- popper.value && initPopper(dropdownToggleRef.value, dropdownMenuRef.value, popperConfig);
180
+ if (popper.value) {
181
+ initPopper(dropdownToggleRef.value, dropdownMenuRef.value, popperConfig);
182
+ }
180
183
  window.addEventListener('mouseup', handleMouseUp);
181
184
  window.addEventListener('keyup', handleKeyup);
182
185
  dropdownToggleRef.value.addEventListener('keydown', handleKeydown);
183
186
  dropdownMenuRef.value.addEventListener('keydown', handleKeydown);
187
+ if (pendingKeyDownEventRef.value) {
188
+ vue.nextTick(() => {
189
+ handleKeydown(pendingKeyDownEventRef.value);
190
+ pendingKeyDownEventRef.value = null;
191
+ });
192
+ }
184
193
  emit('show');
185
194
  return;
186
195
  }
187
196
  popper.value && destroyPopper();
188
197
  window.removeEventListener('mouseup', handleMouseUp);
189
198
  window.removeEventListener('keyup', handleKeyup);
199
+ dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
200
+ emit('hide');
201
+ });
202
+ vue.onUnmounted(() => {
190
203
  dropdownToggleRef.value &&
191
204
  dropdownToggleRef.value.removeEventListener('keydown', handleKeydown);
192
205
  dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
193
- emit('hide');
194
206
  });
195
207
  vue.provide('config', {
196
208
  alignment: props.alignment,
@@ -203,13 +215,11 @@ const CDropdown = vue.defineComponent({
203
215
  vue.provide('visible', visible);
204
216
  vue.provide('dropdownToggleRef', dropdownToggleRef);
205
217
  vue.provide('dropdownMenuRef', dropdownMenuRef);
218
+ vue.provide('pendingKeyDownEventRef', pendingKeyDownEventRef);
206
219
  const handleKeydown = (event) => {
207
- if (visible.value &&
208
- dropdownMenuRef.value &&
209
- (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
220
+ if (dropdownMenuRef.value && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
210
221
  event.preventDefault();
211
222
  const target = event.target;
212
- // eslint-disable-next-line unicorn/prefer-spread
213
223
  const items = Array.from(dropdownMenuRef.value.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)'));
214
224
  getNextActiveElement.default(items, target, event.key === 'ArrowDown', true).focus();
215
225
  }
@@ -220,6 +230,7 @@ const CDropdown = vue.defineComponent({
220
230
  }
221
231
  if (event.key === 'Escape') {
222
232
  setVisible(false);
233
+ dropdownToggleRef.value?.focus();
223
234
  }
224
235
  };
225
236
  const handleMouseUp = (event) => {
@@ -238,19 +249,17 @@ const CDropdown = vue.defineComponent({
238
249
  return;
239
250
  }
240
251
  };
241
- const setVisible = (_visible) => {
252
+ const setVisible = (_visible, event) => {
242
253
  if (props.disabled) {
243
254
  return;
244
255
  }
245
- if (typeof _visible == 'boolean') {
256
+ if (typeof _visible === 'boolean') {
257
+ if (event) {
258
+ pendingKeyDownEventRef.value = event || null;
259
+ }
246
260
  visible.value = _visible;
247
261
  return;
248
262
  }
249
- if (visible.value === true) {
250
- visible.value = false;
251
- return;
252
- }
253
- visible.value = true;
254
263
  };
255
264
  vue.provide('setVisible', setVisible);
256
265
  return () => props.variant === 'input-group'
@@ -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":"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"}
1
+ {"version":3,"file":"CDropdown.js","sources":["../../../../src/components/dropdown/CDropdown.ts"],"sourcesContent":[null],"names":["defineComponent","ref","usePopper","getPlacement","isRTL","watch","nextTick","onUnmounted","provide","getNextActiveElement","h"],"mappings":"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"}
@@ -97,7 +97,7 @@ const CDropdownToggle = vue.defineComponent({
97
97
  if (props.disabled) {
98
98
  return;
99
99
  }
100
- setVisible();
100
+ setVisible(!visible.value);
101
101
  },
102
102
  }),
103
103
  ...((props.trigger === 'focus' || props.trigger.includes('focus')) && {
@@ -114,6 +114,12 @@ const CDropdownToggle = vue.defineComponent({
114
114
  setVisible(false);
115
115
  },
116
116
  }),
117
+ onkeydown: (event) => {
118
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
119
+ event.preventDefault();
120
+ setVisible(true, event);
121
+ }
122
+ }
117
123
  };
118
124
  const togglerProps = vue.computed(() => {
119
125
  return {
@@ -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":"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"}
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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"}
@@ -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 };
@@ -0,0 +1,254 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var utils = require('./utils.js');
5
+
6
+ const CFocusTrap = vue.defineComponent({
7
+ name: 'CFocusTrap',
8
+ props: {
9
+ /**
10
+ * Controls whether the focus trap is active or inactive.
11
+ * When `true`, focus will be trapped within the child element.
12
+ * When `false`, normal focus behavior is restored.
13
+ */
14
+ active: {
15
+ type: Boolean,
16
+ default: true,
17
+ },
18
+ /**
19
+ * Additional container elements to include in the focus trap.
20
+ * Useful for floating elements like tooltips or popovers that are
21
+ * rendered outside the main container but should be part of the trap.
22
+ */
23
+ additionalContainer: {
24
+ type: Object,
25
+ default: undefined,
26
+ },
27
+ /**
28
+ * Controls whether to focus the first selectable element or the container itself.
29
+ * When `true`, focuses the first tabbable element within the container.
30
+ * When `false`, focuses the container element directly.
31
+ *
32
+ * This is useful for containers that should receive focus themselves,
33
+ * such as scrollable regions or custom interactive components.
34
+ */
35
+ focusFirstElement: {
36
+ type: Boolean,
37
+ default: false,
38
+ },
39
+ /**
40
+ * Automatically restores focus to the previously focused element when the trap is deactivated.
41
+ * This is crucial for accessibility as it maintains the user's place in the document
42
+ * when returning from modal dialogs or overlay components.
43
+ *
44
+ * Recommended to be `true` for modal dialogs and popover components.
45
+ */
46
+ restoreFocus: {
47
+ type: Boolean,
48
+ default: true,
49
+ },
50
+ },
51
+ emits: {
52
+ /**
53
+ * Emitted when the focus trap becomes active.
54
+ * Useful for triggering additional accessibility announcements or analytics.
55
+ */
56
+ activate: () => true,
57
+ /**
58
+ * Emitted when the focus trap is deactivated.
59
+ * Can be used for cleanup, analytics, or triggering state changes.
60
+ */
61
+ deactivate: () => true,
62
+ },
63
+ setup(props, { emit, slots, expose }) {
64
+ const containerRef = vue.ref(null);
65
+ const prevFocusedRef = vue.ref(null);
66
+ const isActiveRef = vue.ref(false);
67
+ const lastTabNavDirectionRef = vue.ref('forward');
68
+ const tabEventSourceRef = vue.ref(null);
69
+ let handleKeyDown = null;
70
+ let handleFocusIn = null;
71
+ const activateTrap = () => {
72
+ const container = containerRef.value;
73
+ const additionalContainer = props.additionalContainer?.value || null;
74
+ if (!container) {
75
+ return;
76
+ }
77
+ prevFocusedRef.value = document.activeElement;
78
+ // Activating...
79
+ isActiveRef.value = true;
80
+ // Set initial focus
81
+ if (props.focusFirstElement) {
82
+ const elements = utils.focusableChildren(container);
83
+ if (elements.length > 0) {
84
+ elements[0].focus({ preventScroll: true });
85
+ }
86
+ else {
87
+ // Fallback to container if no focusable elements
88
+ container.focus({ preventScroll: true });
89
+ }
90
+ }
91
+ else {
92
+ container.focus({ preventScroll: true });
93
+ }
94
+ emit('activate');
95
+ // Create event handlers
96
+ handleFocusIn = (event) => {
97
+ // Only handle focus events from tab navigation
98
+ if (containerRef.value !== tabEventSourceRef.value) {
99
+ return;
100
+ }
101
+ const target = event.target;
102
+ // Allow focus within container
103
+ if (target === document || target === container || container.contains(target)) {
104
+ return;
105
+ }
106
+ // Allow focus within additional elements
107
+ if (additionalContainer &&
108
+ (target === additionalContainer || additionalContainer.contains(target))) {
109
+ return;
110
+ }
111
+ // Focus escaped, bring it back
112
+ const elements = utils.focusableChildren(container);
113
+ if (elements.length === 0) {
114
+ container.focus({ preventScroll: true });
115
+ }
116
+ else if (lastTabNavDirectionRef.value === 'backward') {
117
+ elements.at(-1)?.focus({ preventScroll: true });
118
+ }
119
+ else {
120
+ elements[0].focus({ preventScroll: true });
121
+ }
122
+ };
123
+ handleKeyDown = (event) => {
124
+ if (event.key !== 'Tab') {
125
+ return;
126
+ }
127
+ tabEventSourceRef.value = container;
128
+ lastTabNavDirectionRef.value = event.shiftKey ? 'backward' : 'forward';
129
+ if (!additionalContainer) {
130
+ return;
131
+ }
132
+ const containerElements = utils.focusableChildren(container);
133
+ const additionalElements = utils.focusableChildren(additionalContainer);
134
+ if (containerElements.length === 0 && additionalElements.length === 0) {
135
+ // No focusable elements, prevent tab
136
+ event.preventDefault();
137
+ return;
138
+ }
139
+ const activeElement = document.activeElement;
140
+ const isInContainer = containerElements.includes(activeElement);
141
+ const isInAdditional = additionalElements.includes(activeElement);
142
+ // Handle tab navigation between container and additional elements
143
+ if (isInContainer) {
144
+ const index = containerElements.indexOf(activeElement);
145
+ if (!event.shiftKey &&
146
+ index === containerElements.length - 1 &&
147
+ additionalElements.length > 0) {
148
+ // Tab forward from last container element to first additional element
149
+ event.preventDefault();
150
+ additionalElements[0].focus({ preventScroll: true });
151
+ }
152
+ else if (event.shiftKey && index === 0 && additionalElements.length > 0) {
153
+ // Tab backward from first container element to last additional element
154
+ event.preventDefault();
155
+ additionalElements.at(-1)?.focus({ preventScroll: true });
156
+ }
157
+ }
158
+ else if (isInAdditional) {
159
+ const index = additionalElements.indexOf(activeElement);
160
+ if (!event.shiftKey &&
161
+ index === additionalElements.length - 1 &&
162
+ containerElements.length > 0) {
163
+ // Tab forward from last additional element to first container element
164
+ event.preventDefault();
165
+ containerElements[0].focus({ preventScroll: true });
166
+ }
167
+ else if (event.shiftKey && index === 0 && containerElements.length > 0) {
168
+ // Tab backward from first additional element to last container element
169
+ event.preventDefault();
170
+ containerElements.at(-1)?.focus({ preventScroll: true });
171
+ }
172
+ }
173
+ };
174
+ // Add event listeners
175
+ container.addEventListener('keydown', handleKeyDown, true);
176
+ if (additionalContainer) {
177
+ additionalContainer.addEventListener('keydown', handleKeyDown, true);
178
+ }
179
+ document.addEventListener('focusin', handleFocusIn, true);
180
+ };
181
+ const deactivateTrap = () => {
182
+ if (!isActiveRef.value) {
183
+ return;
184
+ }
185
+ // Cleanup event listeners
186
+ const container = containerRef.value;
187
+ const additionalContainer = props.additionalContainer?.value || null;
188
+ if (container && handleKeyDown) {
189
+ container.removeEventListener('keydown', handleKeyDown, true);
190
+ }
191
+ if (additionalContainer && handleKeyDown) {
192
+ additionalContainer.removeEventListener('keydown', handleKeyDown, true);
193
+ }
194
+ if (handleFocusIn) {
195
+ document.removeEventListener('focusin', handleFocusIn, true);
196
+ }
197
+ // Restore focus
198
+ if (props.restoreFocus && prevFocusedRef.value?.isConnected) {
199
+ prevFocusedRef.value.focus({ preventScroll: true });
200
+ }
201
+ emit('deactivate');
202
+ isActiveRef.value = false;
203
+ prevFocusedRef.value = null;
204
+ };
205
+ vue.watch(() => props.active, (newActive) => {
206
+ if (newActive && containerRef.value) {
207
+ activateTrap();
208
+ }
209
+ else {
210
+ deactivateTrap();
211
+ }
212
+ }, { immediate: false });
213
+ vue.watch(() => props.additionalContainer?.value, () => {
214
+ if (props.active && isActiveRef.value) {
215
+ // Reactivate to update event listeners
216
+ deactivateTrap();
217
+ activateTrap();
218
+ }
219
+ });
220
+ vue.onMounted(() => {
221
+ if (props.active && containerRef.value) {
222
+ activateTrap();
223
+ }
224
+ });
225
+ vue.onUnmounted(() => {
226
+ deactivateTrap();
227
+ });
228
+ // Expose containerRef for parent components
229
+ expose({
230
+ containerRef,
231
+ });
232
+ return () => {
233
+ const vnodes = slots.default?.();
234
+ const vnode = vnodes?.[0];
235
+ if (!vnode)
236
+ return null;
237
+ const originalRef = vnode.props?.ref;
238
+ return vue.cloneVNode(vnode, {
239
+ ref: (el) => {
240
+ containerRef.value = el;
241
+ if (typeof originalRef === 'function') {
242
+ originalRef(el);
243
+ }
244
+ else if (originalRef && typeof originalRef === 'object' && 'value' in originalRef) {
245
+ originalRef.value = el;
246
+ }
247
+ },
248
+ });
249
+ };
250
+ },
251
+ });
252
+
253
+ exports.CFocusTrap = CFocusTrap;
254
+ //# sourceMappingURL=CFocusTrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CFocusTrap.js","sources":["../../../../src/components/focus-trap/CFocusTrap.ts"],"sourcesContent":[null],"names":["defineComponent","ref","focusableChildren","watch","onMounted","onUnmounted","cloneVNode"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { App } from 'vue';
2
+ import { CFocusTrap } from './CFocusTrap';
3
+ declare const CFocusTrapPlugin: {
4
+ install: (app: App) => void;
5
+ };
6
+ export { CFocusTrapPlugin, CFocusTrap };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var CFocusTrap = require('./CFocusTrap.js');
4
+
5
+ const CFocusTrapPlugin = {
6
+ install: (app) => {
7
+ app.component(CFocusTrap.CFocusTrap.name, CFocusTrap.CFocusTrap);
8
+ },
9
+ };
10
+
11
+ exports.CFocusTrap = CFocusTrap.CFocusTrap;
12
+ exports.CFocusTrapPlugin = CFocusTrapPlugin;
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/focus-trap/index.ts"],"sourcesContent":[null],"names":["CFocusTrap"],"mappings":";;;;AAGA,MAAM,gBAAgB,GAAG;AACvB,IAAA,OAAO,EAAE,CAAC,GAAQ,KAAU;QAC1B,GAAG,CAAC,SAAS,CAACA,qBAAU,CAAC,IAAc,EAAEA,qBAAU,CAAC;IACtD,CAAC;;;;;;"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Gets all focusable child elements within a container.
3
+ * Uses a comprehensive selector to find elements that can receive focus.
4
+ * @param element - The container element to search within
5
+ * @returns Array of focusable HTML elements
6
+ */
7
+ export declare const focusableChildren: (element: HTMLElement) => HTMLElement[];
8
+ /**
9
+ * Checks if an element is disabled.
10
+ * Considers various ways an element can be disabled including CSS classes and attributes.
11
+ * @param element - The HTML element to check
12
+ * @returns True if the element is disabled, false otherwise
13
+ */
14
+ export declare const isDisabled: (element: HTMLElement) => boolean;
15
+ /**
16
+ * Type guard to check if an object is an Element.
17
+ * Handles edge cases including jQuery objects.
18
+ * @param object - The object to check
19
+ * @returns True if the object is an Element, false otherwise
20
+ */
21
+ export declare const isElement: (object: unknown) => object is Element;
22
+ /**
23
+ * Checks if an element is visible in the DOM.
24
+ * Considers client rects and computed visibility styles, handling edge cases like details elements.
25
+ * @param element - The HTML element to check for visibility
26
+ * @returns True if the element is visible, false otherwise
27
+ */
28
+ export declare const isVisible: (element: HTMLElement) => boolean;