@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
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, watch, provide, h } from 'vue';
1
+ import { defineComponent, ref, 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';
@@ -155,6 +155,7 @@ const CDropdown = defineComponent({
155
155
  setup(props, { slots, emit }) {
156
156
  const dropdownToggleRef = ref();
157
157
  const dropdownMenuRef = ref();
158
+ const pendingKeyDownEventRef = ref(null);
158
159
  const popper = ref(typeof props.alignment === 'object' ? false : props.popper);
159
160
  const visible = ref(props.visible);
160
161
  const { initPopper, destroyPopper } = usePopper();
@@ -174,21 +175,32 @@ const CDropdown = defineComponent({
174
175
  });
175
176
  watch(visible, () => {
176
177
  if (visible.value && dropdownToggleRef.value && dropdownMenuRef.value) {
177
- popper.value && initPopper(dropdownToggleRef.value, dropdownMenuRef.value, popperConfig);
178
+ if (popper.value) {
179
+ initPopper(dropdownToggleRef.value, dropdownMenuRef.value, popperConfig);
180
+ }
178
181
  window.addEventListener('mouseup', handleMouseUp);
179
182
  window.addEventListener('keyup', handleKeyup);
180
183
  dropdownToggleRef.value.addEventListener('keydown', handleKeydown);
181
184
  dropdownMenuRef.value.addEventListener('keydown', handleKeydown);
185
+ if (pendingKeyDownEventRef.value) {
186
+ nextTick(() => {
187
+ handleKeydown(pendingKeyDownEventRef.value);
188
+ pendingKeyDownEventRef.value = null;
189
+ });
190
+ }
182
191
  emit('show');
183
192
  return;
184
193
  }
185
194
  popper.value && destroyPopper();
186
195
  window.removeEventListener('mouseup', handleMouseUp);
187
196
  window.removeEventListener('keyup', handleKeyup);
197
+ dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
198
+ emit('hide');
199
+ });
200
+ onUnmounted(() => {
188
201
  dropdownToggleRef.value &&
189
202
  dropdownToggleRef.value.removeEventListener('keydown', handleKeydown);
190
203
  dropdownMenuRef.value && dropdownMenuRef.value.removeEventListener('keydown', handleKeydown);
191
- emit('hide');
192
204
  });
193
205
  provide('config', {
194
206
  alignment: props.alignment,
@@ -201,13 +213,11 @@ const CDropdown = defineComponent({
201
213
  provide('visible', visible);
202
214
  provide('dropdownToggleRef', dropdownToggleRef);
203
215
  provide('dropdownMenuRef', dropdownMenuRef);
216
+ provide('pendingKeyDownEventRef', pendingKeyDownEventRef);
204
217
  const handleKeydown = (event) => {
205
- if (visible.value &&
206
- dropdownMenuRef.value &&
207
- (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
218
+ if (dropdownMenuRef.value && (event.key === 'ArrowDown' || event.key === 'ArrowUp')) {
208
219
  event.preventDefault();
209
220
  const target = event.target;
210
- // eslint-disable-next-line unicorn/prefer-spread
211
221
  const items = Array.from(dropdownMenuRef.value.querySelectorAll('.dropdown-item:not(.disabled):not(:disabled)'));
212
222
  getNextActiveElement(items, target, event.key === 'ArrowDown', true).focus();
213
223
  }
@@ -218,6 +228,7 @@ const CDropdown = defineComponent({
218
228
  }
219
229
  if (event.key === 'Escape') {
220
230
  setVisible(false);
231
+ dropdownToggleRef.value?.focus();
221
232
  }
222
233
  };
223
234
  const handleMouseUp = (event) => {
@@ -236,19 +247,17 @@ const CDropdown = defineComponent({
236
247
  return;
237
248
  }
238
249
  };
239
- const setVisible = (_visible) => {
250
+ const setVisible = (_visible, event) => {
240
251
  if (props.disabled) {
241
252
  return;
242
253
  }
243
- if (typeof _visible == 'boolean') {
254
+ if (typeof _visible === 'boolean') {
255
+ if (event) {
256
+ pendingKeyDownEventRef.value = event || null;
257
+ }
244
258
  visible.value = _visible;
245
259
  return;
246
260
  }
247
- if (visible.value === true) {
248
- visible.value = false;
249
- return;
250
- }
251
- visible.value = true;
252
261
  };
253
262
  provide('setVisible', setVisible);
254
263
  return () => props.variant === 'input-group'
@@ -1 +1 @@
1
- {"version":3,"file":"CDropdown.js","sources":["../../../../src/components/dropdown/CDropdown.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAUA,MAAM,SAAS,GAAG,eAAe,CAAC;AAChC,IAAA,IAAI,EAAE,WAAW;AACjB,IAAA,KAAK,EAAE;AACL;;;;AAIG;AACH,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAkC;;AAEvD,YAAA,SAAS,EAAE,CAAC,KAAmB,KAAI;gBACjC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,EAAE;AACxC,oBAAA,OAAO,IAAI;gBACb;qBAAO;oBACL,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC1E,wBAAA,OAAO,IAAI;oBACb;oBACA,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC1E,wBAAA,OAAO,IAAI;oBACb;oBACA,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC1E,wBAAA,OAAO,IAAI;oBACb;oBACA,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC1E,wBAAA,OAAO,IAAI;oBACb;oBACA,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;AAC1E,wBAAA,OAAO,IAAI;oBACb;oBACA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,KAAK,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,EAAE;AAC7E,wBAAA,OAAO,IAAI;oBACb;AACA,oBAAA,OAAO,KAAK;gBACd;YACF,CAAC;AACF,SAAA;AACD;;;;;;AAMG;AACH,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;AACvB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,SAAS,EAAE,CAAC,KAAuB,KAAI;AACrC,gBAAA,OAAO,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC5E,CAAC;AACF,SAAA;AACD;;;;AAIG;AACH,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAyD;AAC9E,YAAA,OAAO,EAAE,MAAM;AAChB,SAAA;AACD;;AAEG;AACH,QAAA,IAAI,EAAE,OAAO;AACb;;;;AAIG;AACH,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,gBAAA,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtF,CAAC;AACF,SAAA;AACD;;AAEG;AACH,QAAA,QAAQ,EAAE,OAAO;AACjB;;;;AAIG;AACH,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AACtB,SAAA;AACD;;;;AAIG;AACH,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,MAA6B;AACnC,YAAA,OAAO,EAAE,cAAc;AACxB,SAAA;AACD;;AAEG;AACH,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,IAAI;AACd,SAAA;AACD;;;;AAIG;AACH,QAAA,QAAQ,EAAE;AACR,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,OAAO,EAAE,KAAK;AACf,SAAA;AACD;;AAEG;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,OAAO,EAAE,WAAW;AACpB,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,gBAAA,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7E,CAAC;AACF,SAAA;AACD;;AAEG;AACH,QAAA,OAAO,EAAE,OAAO;AACjB,KAAA;AACD,IAAA,KAAK,EAAE;AACL;;AAEG;QACH,MAAM;AACN;;AAEG;QACH,MAAM;AACP,KAAA;AACD,IAAA,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAA;AAC1B,QAAA,MAAM,iBAAiB,GAAG,GAAG,EAAE;AAC/B,QAAA,MAAM,eAAe,GAAG,GAAG,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QAC9E,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;QAElC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,EAAE;AAEjD,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,OAAO,EAAE;wBACP,MAAM,EAAE,KAAK,CAAC,MAAM;AACrB,qBAAA;AACF,iBAAA;AACF,aAAA;YACD,SAAS,EAAE,YAAY,CACrB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAChB;SACf;QAED,KAAK,CACH,MAAM,KAAK,CAAC,OAAO,EACnB,MAAK;AACH,YAAA,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO;AAC/B,QAAA,CAAC,CACF;AAED,QAAA,KAAK,CAAC,OAAO,EAAE,MAAK;AAClB,YAAA,IAAI,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,EAAE;AACrE,gBAAA,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC;AACxF,gBAAA,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;AACjD,gBAAA,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,CAAC;gBAC7C,iBAAiB,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;gBAClE,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;gBAChE,IAAI,CAAC,MAAM,CAAC;gBACZ;YACF;AAEA,YAAA,MAAM,CAAC,KAAK,IAAI,aAAa,EAAE;AAC/B,YAAA,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AACpD,YAAA,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC;AAChD,YAAA,iBAAiB,CAAC,KAAK;gBACrB,iBAAiB,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AACvE,YAAA,eAAe,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;YAC5F,IAAI,CAAC,MAAM,CAAC;AACd,QAAA,CAAC,CAAC;QAEF,OAAO,CAAC,QAAQ,EAAE;YAChB,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACzB,SAAA,CAAC;AAEF,QAAA,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;AACjC,QAAA,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC;AAC3B,QAAA,OAAO,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;AAC/C,QAAA,OAAO,CAAC,iBAAiB,EAAE,eAAe,CAAC;AAE3C,QAAA,MAAM,aAAa,GAAG,CAAC,KAAoB,KAAI;YAC7C,IACE,OAAO,CAAC,KAAK;AACb,gBAAA,eAAe,CAAC,KAAK;AACrB,iBAAC,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,EACtD;gBACA,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB;;AAE1C,gBAAA,MAAM,KAAK,GAAkB,KAAK,CAAC,IAAI,CACrC,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,8CAA8C,CAAC,CACvF;AACD,gBAAA,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE;YAC9E;AACF,QAAA,CAAC;AAED,QAAA,MAAM,WAAW,GAAG,CAAC,KAAoB,KAAI;AAC3C,YAAA,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,EAAE;gBAC7B;YACF;AAEA,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC1B,UAAU,CAAC,KAAK,CAAC;YACnB;AACF,QAAA,CAAC;AAED,QAAA,MAAM,aAAa,GAAG,CAAC,KAAY,KAAI;YACrC,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE;gBACtD;YACF;YAEA,IAAI,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;gBACjE;YACF;AAEA,YAAA,IACE,KAAK,CAAC,SAAS,KAAK,IAAI;AACxB,iBAAC,KAAK,CAAC,SAAS,KAAK,QAAQ;oBAC3B,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;AAC9D,iBAAC,KAAK,CAAC,SAAS,KAAK,SAAS;AAC5B,oBAAA,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC,EAC/D;gBACA,UAAU,CAAC,KAAK,CAAC;gBACjB;YACF;AACF,QAAA,CAAC;AAED,QAAA,MAAM,UAAU,GAAG,CAAC,QAAkB,KAAI;AACxC,YAAA,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB;YACF;AAEA,YAAA,IAAI,OAAO,QAAQ,IAAI,SAAS,EAAE;AAChC,gBAAA,OAAO,CAAC,KAAK,GAAG,QAAQ;gBACxB;YACF;AAEA,YAAA,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE;AAC1B,gBAAA,OAAO,CAAC,KAAK,GAAG,KAAK;gBACrB;YACF;AAEA,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI;AACtB,QAAA,CAAC;AAED,QAAA,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC;AAEjC,QAAA,OAAO,MACL,KAAK,CAAC,OAAO,KAAK;cACd,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;AACnC,cAAE,CAAC,CACC,KAAK,EACL;AACE,gBAAA,KAAK,EAAE;AACL,oBAAA,KAAK,CAAC,OAAO,KAAK,UAAU,GAAG,mBAAmB,GAAG,KAAK,CAAC,OAAO;oBAClE,KAAK,CAAC,SAAS,KAAK;AAClB,0BAAE;AACF,0BAAE,KAAK,CAAC,SAAS,KAAK;AACtB,8BAAE;8BACA,KAAK,CAAC,SAAS;AACpB,iBAAA;aACF,EACD,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CACjC;IACT,CAAC;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"CDropdown.js","sources":["../../../../src/components/dropdown/CDropdown.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -95,7 +95,7 @@ const CDropdownToggle = defineComponent({
95
95
  if (props.disabled) {
96
96
  return;
97
97
  }
98
- setVisible();
98
+ setVisible(!visible.value);
99
99
  },
100
100
  }),
101
101
  ...((props.trigger === 'focus' || props.trigger.includes('focus')) && {
@@ -112,6 +112,12 @@ const CDropdownToggle = defineComponent({
112
112
  setVisible(false);
113
113
  },
114
114
  }),
115
+ onkeydown: (event) => {
116
+ if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
117
+ event.preventDefault();
118
+ setVisible(true, event);
119
+ }
120
+ }
115
121
  };
116
122
  const togglerProps = computed(() => {
117
123
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"CDropdownToggle.js","sources":["../../../../src/components/dropdown/CDropdownToggle.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CDropdownToggle.js","sources":["../../../../src/components/dropdown/CDropdownToggle.ts"],"sourcesContent":[null],"names":[],"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,252 @@
1
+ import { defineComponent, ref, watch, onMounted, onUnmounted, cloneVNode } from 'vue';
2
+ import { focusableChildren } from './utils.js';
3
+
4
+ const CFocusTrap = defineComponent({
5
+ name: 'CFocusTrap',
6
+ props: {
7
+ /**
8
+ * Controls whether the focus trap is active or inactive.
9
+ * When `true`, focus will be trapped within the child element.
10
+ * When `false`, normal focus behavior is restored.
11
+ */
12
+ active: {
13
+ type: Boolean,
14
+ default: true,
15
+ },
16
+ /**
17
+ * Additional container elements to include in the focus trap.
18
+ * Useful for floating elements like tooltips or popovers that are
19
+ * rendered outside the main container but should be part of the trap.
20
+ */
21
+ additionalContainer: {
22
+ type: Object,
23
+ default: undefined,
24
+ },
25
+ /**
26
+ * Controls whether to focus the first selectable element or the container itself.
27
+ * When `true`, focuses the first tabbable element within the container.
28
+ * When `false`, focuses the container element directly.
29
+ *
30
+ * This is useful for containers that should receive focus themselves,
31
+ * such as scrollable regions or custom interactive components.
32
+ */
33
+ focusFirstElement: {
34
+ type: Boolean,
35
+ default: false,
36
+ },
37
+ /**
38
+ * Automatically restores focus to the previously focused element when the trap is deactivated.
39
+ * This is crucial for accessibility as it maintains the user's place in the document
40
+ * when returning from modal dialogs or overlay components.
41
+ *
42
+ * Recommended to be `true` for modal dialogs and popover components.
43
+ */
44
+ restoreFocus: {
45
+ type: Boolean,
46
+ default: true,
47
+ },
48
+ },
49
+ emits: {
50
+ /**
51
+ * Emitted when the focus trap becomes active.
52
+ * Useful for triggering additional accessibility announcements or analytics.
53
+ */
54
+ activate: () => true,
55
+ /**
56
+ * Emitted when the focus trap is deactivated.
57
+ * Can be used for cleanup, analytics, or triggering state changes.
58
+ */
59
+ deactivate: () => true,
60
+ },
61
+ setup(props, { emit, slots, expose }) {
62
+ const containerRef = ref(null);
63
+ const prevFocusedRef = ref(null);
64
+ const isActiveRef = ref(false);
65
+ const lastTabNavDirectionRef = ref('forward');
66
+ const tabEventSourceRef = ref(null);
67
+ let handleKeyDown = null;
68
+ let handleFocusIn = null;
69
+ const activateTrap = () => {
70
+ const container = containerRef.value;
71
+ const additionalContainer = props.additionalContainer?.value || null;
72
+ if (!container) {
73
+ return;
74
+ }
75
+ prevFocusedRef.value = document.activeElement;
76
+ // Activating...
77
+ isActiveRef.value = true;
78
+ // Set initial focus
79
+ if (props.focusFirstElement) {
80
+ const elements = focusableChildren(container);
81
+ if (elements.length > 0) {
82
+ elements[0].focus({ preventScroll: true });
83
+ }
84
+ else {
85
+ // Fallback to container if no focusable elements
86
+ container.focus({ preventScroll: true });
87
+ }
88
+ }
89
+ else {
90
+ container.focus({ preventScroll: true });
91
+ }
92
+ emit('activate');
93
+ // Create event handlers
94
+ handleFocusIn = (event) => {
95
+ // Only handle focus events from tab navigation
96
+ if (containerRef.value !== tabEventSourceRef.value) {
97
+ return;
98
+ }
99
+ const target = event.target;
100
+ // Allow focus within container
101
+ if (target === document || target === container || container.contains(target)) {
102
+ return;
103
+ }
104
+ // Allow focus within additional elements
105
+ if (additionalContainer &&
106
+ (target === additionalContainer || additionalContainer.contains(target))) {
107
+ return;
108
+ }
109
+ // Focus escaped, bring it back
110
+ const elements = focusableChildren(container);
111
+ if (elements.length === 0) {
112
+ container.focus({ preventScroll: true });
113
+ }
114
+ else if (lastTabNavDirectionRef.value === 'backward') {
115
+ elements.at(-1)?.focus({ preventScroll: true });
116
+ }
117
+ else {
118
+ elements[0].focus({ preventScroll: true });
119
+ }
120
+ };
121
+ handleKeyDown = (event) => {
122
+ if (event.key !== 'Tab') {
123
+ return;
124
+ }
125
+ tabEventSourceRef.value = container;
126
+ lastTabNavDirectionRef.value = event.shiftKey ? 'backward' : 'forward';
127
+ if (!additionalContainer) {
128
+ return;
129
+ }
130
+ const containerElements = focusableChildren(container);
131
+ const additionalElements = focusableChildren(additionalContainer);
132
+ if (containerElements.length === 0 && additionalElements.length === 0) {
133
+ // No focusable elements, prevent tab
134
+ event.preventDefault();
135
+ return;
136
+ }
137
+ const activeElement = document.activeElement;
138
+ const isInContainer = containerElements.includes(activeElement);
139
+ const isInAdditional = additionalElements.includes(activeElement);
140
+ // Handle tab navigation between container and additional elements
141
+ if (isInContainer) {
142
+ const index = containerElements.indexOf(activeElement);
143
+ if (!event.shiftKey &&
144
+ index === containerElements.length - 1 &&
145
+ additionalElements.length > 0) {
146
+ // Tab forward from last container element to first additional element
147
+ event.preventDefault();
148
+ additionalElements[0].focus({ preventScroll: true });
149
+ }
150
+ else if (event.shiftKey && index === 0 && additionalElements.length > 0) {
151
+ // Tab backward from first container element to last additional element
152
+ event.preventDefault();
153
+ additionalElements.at(-1)?.focus({ preventScroll: true });
154
+ }
155
+ }
156
+ else if (isInAdditional) {
157
+ const index = additionalElements.indexOf(activeElement);
158
+ if (!event.shiftKey &&
159
+ index === additionalElements.length - 1 &&
160
+ containerElements.length > 0) {
161
+ // Tab forward from last additional element to first container element
162
+ event.preventDefault();
163
+ containerElements[0].focus({ preventScroll: true });
164
+ }
165
+ else if (event.shiftKey && index === 0 && containerElements.length > 0) {
166
+ // Tab backward from first additional element to last container element
167
+ event.preventDefault();
168
+ containerElements.at(-1)?.focus({ preventScroll: true });
169
+ }
170
+ }
171
+ };
172
+ // Add event listeners
173
+ container.addEventListener('keydown', handleKeyDown, true);
174
+ if (additionalContainer) {
175
+ additionalContainer.addEventListener('keydown', handleKeyDown, true);
176
+ }
177
+ document.addEventListener('focusin', handleFocusIn, true);
178
+ };
179
+ const deactivateTrap = () => {
180
+ if (!isActiveRef.value) {
181
+ return;
182
+ }
183
+ // Cleanup event listeners
184
+ const container = containerRef.value;
185
+ const additionalContainer = props.additionalContainer?.value || null;
186
+ if (container && handleKeyDown) {
187
+ container.removeEventListener('keydown', handleKeyDown, true);
188
+ }
189
+ if (additionalContainer && handleKeyDown) {
190
+ additionalContainer.removeEventListener('keydown', handleKeyDown, true);
191
+ }
192
+ if (handleFocusIn) {
193
+ document.removeEventListener('focusin', handleFocusIn, true);
194
+ }
195
+ // Restore focus
196
+ if (props.restoreFocus && prevFocusedRef.value?.isConnected) {
197
+ prevFocusedRef.value.focus({ preventScroll: true });
198
+ }
199
+ emit('deactivate');
200
+ isActiveRef.value = false;
201
+ prevFocusedRef.value = null;
202
+ };
203
+ watch(() => props.active, (newActive) => {
204
+ if (newActive && containerRef.value) {
205
+ activateTrap();
206
+ }
207
+ else {
208
+ deactivateTrap();
209
+ }
210
+ }, { immediate: false });
211
+ watch(() => props.additionalContainer?.value, () => {
212
+ if (props.active && isActiveRef.value) {
213
+ // Reactivate to update event listeners
214
+ deactivateTrap();
215
+ activateTrap();
216
+ }
217
+ });
218
+ onMounted(() => {
219
+ if (props.active && containerRef.value) {
220
+ activateTrap();
221
+ }
222
+ });
223
+ onUnmounted(() => {
224
+ deactivateTrap();
225
+ });
226
+ // Expose containerRef for parent components
227
+ expose({
228
+ containerRef,
229
+ });
230
+ return () => {
231
+ const vnodes = slots.default?.();
232
+ const vnode = vnodes?.[0];
233
+ if (!vnode)
234
+ return null;
235
+ const originalRef = vnode.props?.ref;
236
+ return cloneVNode(vnode, {
237
+ ref: (el) => {
238
+ containerRef.value = el;
239
+ if (typeof originalRef === 'function') {
240
+ originalRef(el);
241
+ }
242
+ else if (originalRef && typeof originalRef === 'object' && 'value' in originalRef) {
243
+ originalRef.value = el;
244
+ }
245
+ },
246
+ });
247
+ };
248
+ },
249
+ });
250
+
251
+ export { CFocusTrap };
252
+ //# sourceMappingURL=CFocusTrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CFocusTrap.js","sources":["../../../../src/components/focus-trap/CFocusTrap.ts"],"sourcesContent":[null],"names":[],"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,10 @@
1
+ import { CFocusTrap } from './CFocusTrap.js';
2
+
3
+ const CFocusTrapPlugin = {
4
+ install: (app) => {
5
+ app.component(CFocusTrap.name, CFocusTrap);
6
+ },
7
+ };
8
+
9
+ export { CFocusTrap, CFocusTrapPlugin };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/focus-trap/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAGA,MAAM,gBAAgB,GAAG;AACvB,IAAA,OAAO,EAAE,CAAC,GAAQ,KAAU;QAC1B,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,IAAc,EAAE,UAAU,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;