@dialpad/dialtone 9.107.1 → 9.107.2

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 (184) hide show
  1. package/dist/css/dialtone-default-theme.css +1 -0
  2. package/dist/css/dialtone-default-theme.min.css +1 -1
  3. package/dist/css/dialtone.css +1 -0
  4. package/dist/css/dialtone.min.css +1 -1
  5. package/dist/tokens/doc.json +15744 -15744
  6. package/dist/vue3/common/config.cjs +8 -0
  7. package/dist/vue3/common/config.cjs.map +1 -0
  8. package/dist/vue3/common/config.js +9 -0
  9. package/dist/vue3/common/config.js.map +1 -0
  10. package/dist/vue3/common/mixins/keyboard_list_navigation.cjs +2 -1
  11. package/dist/vue3/common/mixins/keyboard_list_navigation.cjs.map +1 -1
  12. package/dist/vue3/common/mixins/keyboard_list_navigation.js +2 -1
  13. package/dist/vue3/common/mixins/keyboard_list_navigation.js.map +1 -1
  14. package/dist/vue3/common/mixins/modal.cjs +4 -2
  15. package/dist/vue3/common/mixins/modal.cjs.map +1 -1
  16. package/dist/vue3/common/mixins/modal.js +4 -2
  17. package/dist/vue3/common/mixins/modal.js.map +1 -1
  18. package/dist/vue3/common/utils.cjs +28 -0
  19. package/dist/vue3/common/utils.cjs.map +1 -1
  20. package/dist/vue3/common/utils.js +28 -0
  21. package/dist/vue3/common/utils.js.map +1 -1
  22. package/dist/vue3/components/avatar/avatar.vue.cjs +3 -1
  23. package/dist/vue3/components/avatar/avatar.vue.cjs.map +1 -1
  24. package/dist/vue3/components/avatar/avatar.vue.js +4 -2
  25. package/dist/vue3/components/avatar/avatar.vue.js.map +1 -1
  26. package/dist/vue3/components/breadcrumbs/breadcrumb_item.vue.cjs +11 -6
  27. package/dist/vue3/components/breadcrumbs/breadcrumb_item.vue.cjs.map +1 -1
  28. package/dist/vue3/components/breadcrumbs/breadcrumb_item.vue.js +12 -7
  29. package/dist/vue3/components/breadcrumbs/breadcrumb_item.vue.js.map +1 -1
  30. package/dist/vue3/components/checkbox/checkbox.vue.cjs +6 -3
  31. package/dist/vue3/components/checkbox/checkbox.vue.cjs.map +1 -1
  32. package/dist/vue3/components/checkbox/checkbox.vue.js +7 -4
  33. package/dist/vue3/components/checkbox/checkbox.vue.js.map +1 -1
  34. package/dist/vue3/components/datepicker/composables/useCalendar.cjs +9 -8
  35. package/dist/vue3/components/datepicker/composables/useCalendar.cjs.map +1 -1
  36. package/dist/vue3/components/datepicker/composables/useCalendar.js +9 -8
  37. package/dist/vue3/components/datepicker/composables/useCalendar.js.map +1 -1
  38. package/dist/vue3/components/datepicker/composables/useMonthYearPicker.cjs +6 -5
  39. package/dist/vue3/components/datepicker/composables/useMonthYearPicker.cjs.map +1 -1
  40. package/dist/vue3/components/datepicker/composables/useMonthYearPicker.js +6 -5
  41. package/dist/vue3/components/datepicker/composables/useMonthYearPicker.js.map +1 -1
  42. package/dist/vue3/components/datepicker/datepicker.vue.cjs +2 -2
  43. package/dist/vue3/components/datepicker/datepicker.vue.cjs.map +1 -1
  44. package/dist/vue3/components/datepicker/datepicker.vue.js +2 -2
  45. package/dist/vue3/components/datepicker/datepicker.vue.js.map +1 -1
  46. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.cjs +2 -1
  47. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.cjs.map +1 -1
  48. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.js +2 -1
  49. package/dist/vue3/components/emoji_picker/modules/emoji_tabset.vue.js.map +1 -1
  50. package/dist/vue3/components/image_viewer/image_viewer.vue.cjs +3 -2
  51. package/dist/vue3/components/image_viewer/image_viewer.vue.cjs.map +1 -1
  52. package/dist/vue3/components/image_viewer/image_viewer.vue.js +3 -2
  53. package/dist/vue3/components/image_viewer/image_viewer.vue.js.map +1 -1
  54. package/dist/vue3/components/input/input.vue.cjs +8 -7
  55. package/dist/vue3/components/input/input.vue.cjs.map +1 -1
  56. package/dist/vue3/components/input/input.vue.js +10 -9
  57. package/dist/vue3/components/input/input.vue.js.map +1 -1
  58. package/dist/vue3/components/modal/modal.vue.cjs +2 -2
  59. package/dist/vue3/components/modal/modal.vue.cjs.map +1 -1
  60. package/dist/vue3/components/modal/modal.vue.js +3 -3
  61. package/dist/vue3/components/modal/modal.vue.js.map +1 -1
  62. package/dist/vue3/components/popover/popover.vue.cjs +7 -7
  63. package/dist/vue3/components/popover/popover.vue.cjs.map +1 -1
  64. package/dist/vue3/components/popover/popover.vue.js +8 -8
  65. package/dist/vue3/components/popover/popover.vue.js.map +1 -1
  66. package/dist/vue3/components/popover/popover_header_footer.vue.cjs +1 -1
  67. package/dist/vue3/components/popover/popover_header_footer.vue.cjs.map +1 -1
  68. package/dist/vue3/components/popover/popover_header_footer.vue.js +2 -2
  69. package/dist/vue3/components/popover/popover_header_footer.vue.js.map +1 -1
  70. package/dist/vue3/components/radio/radio.vue.cjs +5 -3
  71. package/dist/vue3/components/radio/radio.vue.cjs.map +1 -1
  72. package/dist/vue3/components/radio/radio.vue.js +7 -5
  73. package/dist/vue3/components/radio/radio.vue.js.map +1 -1
  74. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.cjs +2 -2
  75. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.cjs.map +1 -1
  76. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.js +3 -3
  77. package/dist/vue3/components/rich_text_editor/rich_text_editor.vue.js.map +1 -1
  78. package/dist/vue3/components/scroller/modules/dynamic_scroller.vue.cjs +4 -3
  79. package/dist/vue3/components/scroller/modules/dynamic_scroller.vue.cjs.map +1 -1
  80. package/dist/vue3/components/scroller/modules/dynamic_scroller.vue.js +4 -3
  81. package/dist/vue3/components/scroller/modules/dynamic_scroller.vue.js.map +1 -1
  82. package/dist/vue3/components/scroller/modules/scroller_item.vue.cjs +6 -5
  83. package/dist/vue3/components/scroller/modules/scroller_item.vue.cjs.map +1 -1
  84. package/dist/vue3/components/scroller/modules/scroller_item.vue.js +6 -5
  85. package/dist/vue3/components/scroller/modules/scroller_item.vue.js.map +1 -1
  86. package/dist/vue3/components/select_menu/select_menu.vue.cjs +5 -3
  87. package/dist/vue3/components/select_menu/select_menu.vue.cjs.map +1 -1
  88. package/dist/vue3/components/select_menu/select_menu.vue.js +7 -5
  89. package/dist/vue3/components/select_menu/select_menu.vue.js.map +1 -1
  90. package/dist/vue3/components/split_button/split_button.vue.cjs +5 -3
  91. package/dist/vue3/components/split_button/split_button.vue.cjs.map +1 -1
  92. package/dist/vue3/components/split_button/split_button.vue.js +6 -4
  93. package/dist/vue3/components/split_button/split_button.vue.js.map +1 -1
  94. package/dist/vue3/components/tab/tab_panel.vue.cjs +3 -2
  95. package/dist/vue3/components/tab/tab_panel.vue.cjs.map +1 -1
  96. package/dist/vue3/components/tab/tab_panel.vue.js +3 -2
  97. package/dist/vue3/components/tab/tab_panel.vue.js.map +1 -1
  98. package/dist/vue3/components/toggle/toggle.vue.cjs +10 -10
  99. package/dist/vue3/components/toggle/toggle.vue.cjs.map +1 -1
  100. package/dist/vue3/components/toggle/toggle.vue.js +11 -11
  101. package/dist/vue3/components/toggle/toggle.vue.js.map +1 -1
  102. package/dist/vue3/components/tooltip/tooltip.vue.cjs +3 -3
  103. package/dist/vue3/components/tooltip/tooltip.vue.cjs.map +1 -1
  104. package/dist/vue3/components/tooltip/tooltip.vue.js +4 -4
  105. package/dist/vue3/components/tooltip/tooltip.vue.js.map +1 -1
  106. package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.cjs +10 -5
  107. package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.cjs.map +1 -1
  108. package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.js +12 -7
  109. package/dist/vue3/recipes/buttons/callbar_button/callbar_button.vue.js.map +1 -1
  110. package/dist/vue3/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.cjs +6 -5
  111. package/dist/vue3/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.cjs.map +1 -1
  112. package/dist/vue3/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.js +8 -7
  113. package/dist/vue3/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.js.map +1 -1
  114. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs +6 -5
  115. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.cjs.map +1 -1
  116. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js +8 -7
  117. package/dist/vue3/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.js.map +1 -1
  118. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs +2 -2
  119. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.cjs.map +1 -1
  120. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js +3 -3
  121. package/dist/vue3/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.js.map +1 -1
  122. package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs +7 -5
  123. package/dist/vue3/recipes/conversation_view/editor/editor.vue.cjs.map +1 -1
  124. package/dist/vue3/recipes/conversation_view/editor/editor.vue.js +8 -6
  125. package/dist/vue3/recipes/conversation_view/editor/editor.vue.js.map +1 -1
  126. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.cjs +10 -6
  127. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.cjs.map +1 -1
  128. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.js +11 -7
  129. package/dist/vue3/recipes/conversation_view/message_input/message_input.vue.js.map +1 -1
  130. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.cjs +19 -19
  131. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.cjs.map +1 -1
  132. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.js +20 -20
  133. package/dist/vue3/recipes/leftbar/callbox/callbox.vue.js.map +1 -1
  134. package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.cjs +12 -10
  135. package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.cjs.map +1 -1
  136. package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.js +14 -12
  137. package/dist/vue3/recipes/leftbar/contact_centers_row/contact_centers_row.vue.js.map +1 -1
  138. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.cjs +9 -10
  139. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.cjs.map +1 -1
  140. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.js +11 -12
  141. package/dist/vue3/recipes/leftbar/general_row/general_row.vue.js.map +1 -1
  142. package/dist/vue3/types/common/config/index.d.ts +3 -0
  143. package/dist/vue3/types/common/config/index.d.ts.map +1 -0
  144. package/dist/vue3/types/common/mixins/keyboard_list_navigation.d.ts.map +1 -1
  145. package/dist/vue3/types/common/mixins/modal.d.ts.map +1 -1
  146. package/dist/vue3/types/common/utils/index.d.ts +12 -0
  147. package/dist/vue3/types/common/utils/index.d.ts.map +1 -1
  148. package/dist/vue3/types/components/avatar/avatar.vue.d.ts.map +1 -1
  149. package/dist/vue3/types/components/breadcrumbs/breadcrumb_item.vue.d.ts +5 -1
  150. package/dist/vue3/types/components/breadcrumbs/breadcrumb_item.vue.d.ts.map +1 -1
  151. package/dist/vue3/types/components/checkbox/checkbox.vue.d.ts +3 -0
  152. package/dist/vue3/types/components/checkbox/checkbox.vue.d.ts.map +1 -1
  153. package/dist/vue3/types/components/datepicker/composables/useCalendar.d.ts.map +1 -1
  154. package/dist/vue3/types/components/datepicker/composables/useMonthYearPicker.d.ts.map +1 -1
  155. package/dist/vue3/types/components/emoji_picker/modules/emoji_tabset.vue.d.ts.map +1 -1
  156. package/dist/vue3/types/components/input/input.vue.d.ts +3 -1
  157. package/dist/vue3/types/components/input/input.vue.d.ts.map +1 -1
  158. package/dist/vue3/types/components/modal/modal.vue.d.ts.map +1 -1
  159. package/dist/vue3/types/components/popover/popover.vue.d.ts.map +1 -1
  160. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
  161. package/dist/vue3/types/components/radio/radio.vue.d.ts +3 -1
  162. package/dist/vue3/types/components/radio/radio.vue.d.ts.map +1 -1
  163. package/dist/vue3/types/components/select_menu/select_menu.vue.d.ts +3 -1
  164. package/dist/vue3/types/components/select_menu/select_menu.vue.d.ts.map +1 -1
  165. package/dist/vue3/types/components/split_button/split_button.vue.d.ts +2 -0
  166. package/dist/vue3/types/components/toggle/toggle.vue.d.ts +3 -4
  167. package/dist/vue3/types/components/toggle/toggle.vue.d.ts.map +1 -1
  168. package/dist/vue3/types/components/tooltip/tooltip.vue.d.ts.map +1 -1
  169. package/dist/vue3/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +5 -1
  170. package/dist/vue3/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts.map +1 -1
  171. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +3 -0
  172. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
  173. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +3 -0
  174. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
  175. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +3 -0
  176. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  177. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +3 -0
  178. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  179. package/dist/vue3/types/recipes/leftbar/callbox/callbox.vue.d.ts.map +1 -1
  180. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +3 -0
  181. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
  182. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts +3 -0
  183. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  184. package/package.json +4 -4
@@ -1,6 +1,7 @@
1
1
  import { InputMixin, CheckableMixin, GroupableMixin, MessagesMixin } from "../../common/mixins/input.js";
2
+ import { removeClassStyleAttrs, addClassStyleAttrs } from "../../common/utils.js";
2
3
  import { CHECKBOX_INPUT_VALIDATION_CLASSES } from "./checkbox_constants.js";
3
- import { resolveComponent, openBlock, createElementBlock, createElementVNode, normalizeClass, mergeProps, toHandlers, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createVNode } from "vue";
4
+ import { resolveComponent, openBlock, createElementBlock, normalizeProps, guardReactiveProps, createElementVNode, normalizeClass, mergeProps, toHandlers, renderSlot, createTextVNode, toDisplayString, createCommentVNode, createVNode } from "vue";
4
5
  import _export_sfc from "../../_virtual/_plugin-vue_export-helper.js";
5
6
  import DtValidationMessages from "../validation_messages/validation_messages.vue.js";
6
7
  const _sfc_main = {
@@ -78,6 +79,8 @@ const _sfc_main = {
78
79
  this.runValidations();
79
80
  },
80
81
  methods: {
82
+ removeClassStyleAttrs,
83
+ addClassStyleAttrs,
81
84
  emitValue(target) {
82
85
  let { value, checked } = target;
83
86
  if (this.internalIndeterminate) {
@@ -102,7 +105,7 @@ const _hoisted_3 = {
102
105
  };
103
106
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
104
107
  const _component_dt_validation_messages = resolveComponent("dt-validation-messages");
105
- return openBlock(), createElementBlock("div", null, [
108
+ return openBlock(), createElementBlock("div", normalizeProps(guardReactiveProps($options.addClassStyleAttrs(_ctx.$attrs))), [
106
109
  createElementVNode("label", null, [
107
110
  createElementVNode("div", {
108
111
  class: normalizeClass(["d-checkbox-group", { "d-checkbox-group--disabled": _ctx.internalDisabled }])
@@ -115,7 +118,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
115
118
  value: _ctx.value,
116
119
  disabled: _ctx.internalDisabled,
117
120
  class: ["d-checkbox", $options.inputValidationClass, _ctx.inputClass]
118
- }, _ctx.$attrs, { ".indeterminate": _ctx.internalIndeterminate }, toHandlers($options.inputListeners, true)), null, 48, _hoisted_2)
121
+ }, $options.removeClassStyleAttrs(_ctx.$attrs), { ".indeterminate": _ctx.internalIndeterminate }, toHandlers($options.inputListeners, true)), null, 48, _hoisted_2)
119
122
  ]),
120
123
  $options.hasLabelOrDescription ? (openBlock(), createElementBlock("div", _hoisted_3, [
121
124
  $options.hasLabel ? (openBlock(), createElementBlock("div", mergeProps({
@@ -142,7 +145,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
142
145
  ])) : createCommentVNode("", true)
143
146
  ], 2)
144
147
  ])
145
- ]);
148
+ ], 16);
146
149
  }
147
150
  const checkbox = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
148
151
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.vue.js","sources":["../../../components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <div>\n <label>\n <div :class=\"['d-checkbox-group', { 'd-checkbox-group--disabled': internalDisabled }]\">\n <div class=\"d-checkbox__input\">\n <input\n type=\"checkbox\"\n :checked=\"internalChecked\"\n :name=\"internalName\"\n :value=\"value\"\n :disabled=\"internalDisabled\"\n :class=\"['d-checkbox', inputValidationClass, inputClass]\"\n v-bind=\"$attrs\"\n :indeterminate.prop=\"internalIndeterminate\"\n v-on=\"inputListeners\"\n >\n </div>\n <div\n v-if=\"hasLabelOrDescription\"\n class=\"d-checkbox__copy d-checkbox__label\"\n data-qa=\"checkbox-label-description-container\"\n >\n <div\n v-if=\"hasLabel\"\n :class=\"labelClass\"\n v-bind=\"labelChildProps\"\n data-qa=\"checkbox-label\"\n >\n <!-- @slot slot for Checkbox Label -->\n <slot>{{ label }}</slot>\n </div>\n <div\n v-if=\"hasDescription\"\n :class=\"['d-description', descriptionClass]\"\n v-bind=\"descriptionChildProps\"\n data-qa=\"checkbox-description\"\n >\n <!-- @slot slot for Checkbox Description -->\n <slot name=\"description\">{{ description }}</slot>\n </div>\n <dt-validation-messages\n :validation-messages=\"formattedMessages\"\n :show-messages=\"showMessages\"\n :class=\"messagesClass\"\n v-bind=\"messagesChildProps\"\n data-qa=\"dt-checkbox-validation-messages\"\n />\n </div>\n </div>\n </label>\n </div>\n</template>\n\n<script>\n// Imports\nimport {\n InputMixin,\n CheckableMixin,\n GroupableMixin,\n MessagesMixin,\n} from '@/common/mixins/input';\nimport { CHECKBOX_INPUT_VALIDATION_CLASSES } from './checkbox_constants';\nimport { DtValidationMessages } from '../validation_messages';\n\n/**\n * Checkboxes are control elements that allow the user to make a selection.They are typically used in a\n * Checkbox Group which allows the user to make one or more selections from a list of options.\n * @see https://dialtone.dialpad.com/components/checkbox.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtCheckbox',\n\n components: { DtValidationMessages },\n\n mixins: [InputMixin, CheckableMixin, GroupableMixin, MessagesMixin],\n\n inheritAttrs: false,\n\n emits: [\n /**\n * Native input event\n *\n * @event input\n * @type {Boolean}\n */\n 'input',\n\n /**\n * Native input focusin event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native input focusout event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n ],\n\n computed: {\n inputValidationClass () {\n return CHECKBOX_INPUT_VALIDATION_CLASSES[this.internalValidationState];\n },\n\n checkboxGroupValueChecked () {\n return this.groupContext?.selectedValues?.includes(this.value) ?? false;\n },\n\n hasLabel () {\n return !!(this.$slots.default || this.label);\n },\n\n hasDescription () {\n return !!(this.$slots.description || this.description);\n },\n\n hasLabelOrDescription () {\n return this.hasLabel || this.hasDescription;\n },\n\n inputListeners () {\n return {\n /*\n * Override input listener to as no-op. Prevents parent input listeners from being passed through\n * onto the input element which will result in the handler being called twice\n * (once on the input element and once by the emitted input event by the change listener).\n */\n input: () => {},\n focusin: event => this.$emit('focusin', event),\n focusout: event => this.$emit('focusout', event),\n change: event => this.emitValue(event.target),\n };\n },\n },\n\n watch: {\n checkboxGroupValueChecked: {\n immediate: true,\n handler (newCheckboxGroupValueChecked) {\n if (this.hasGroup) {\n // update internal value when the checkbox group value changes\n this.internalChecked = newCheckboxGroupValueChecked;\n }\n },\n },\n },\n\n mounted () {\n this.runValidations();\n },\n\n methods: {\n emitValue (target) {\n let { value, checked } = target;\n // Expected: Indeterminate -> unchecked. We need to manually set DOM property `checked` to false\n // and update this.internalIndeterminate.\n if (this.internalIndeterminate) {\n checked = false;\n this.internalIndeterminate = false;\n target.checked = false;\n }\n // update provided value if injected\n this.setGroupValue(value, checked);\n\n // emit the state of the checkbox\n this.$emit('input', checked);\n },\n\n runValidations () {\n this.validateInputLabels(this.hasLabel, this.$attrs['aria-label']);\n },\n },\n};\n</script>\n"],"names":["_createElementBlock","_createElementVNode","_normalizeClass","_mergeProps","_toHandlers","_openBlock","_renderSlot","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode"],"mappings":"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"}
1
+ {"version":3,"file":"checkbox.vue.js","sources":["../../../components/checkbox/checkbox.vue"],"sourcesContent":["<template>\n <div\n v-bind=\"addClassStyleAttrs($attrs)\"\n >\n <label>\n <div :class=\"['d-checkbox-group', { 'd-checkbox-group--disabled': internalDisabled }]\">\n <div class=\"d-checkbox__input\">\n <input\n type=\"checkbox\"\n :checked=\"internalChecked\"\n :name=\"internalName\"\n :value=\"value\"\n :disabled=\"internalDisabled\"\n :class=\"['d-checkbox', inputValidationClass, inputClass]\"\n v-bind=\"removeClassStyleAttrs($attrs)\"\n :indeterminate.prop=\"internalIndeterminate\"\n v-on=\"inputListeners\"\n >\n </div>\n <div\n v-if=\"hasLabelOrDescription\"\n class=\"d-checkbox__copy d-checkbox__label\"\n data-qa=\"checkbox-label-description-container\"\n >\n <div\n v-if=\"hasLabel\"\n :class=\"labelClass\"\n v-bind=\"labelChildProps\"\n data-qa=\"checkbox-label\"\n >\n <!-- @slot slot for Checkbox Label -->\n <slot>{{ label }}</slot>\n </div>\n <div\n v-if=\"hasDescription\"\n :class=\"['d-description', descriptionClass]\"\n v-bind=\"descriptionChildProps\"\n data-qa=\"checkbox-description\"\n >\n <!-- @slot slot for Checkbox Description -->\n <slot name=\"description\">{{ description }}</slot>\n </div>\n <dt-validation-messages\n :validation-messages=\"formattedMessages\"\n :show-messages=\"showMessages\"\n :class=\"messagesClass\"\n v-bind=\"messagesChildProps\"\n data-qa=\"dt-checkbox-validation-messages\"\n />\n </div>\n </div>\n </label>\n </div>\n</template>\n\n<script>\n// Imports\nimport {\n InputMixin,\n CheckableMixin,\n GroupableMixin,\n MessagesMixin,\n} from '@/common/mixins/input';\nimport { removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { CHECKBOX_INPUT_VALIDATION_CLASSES } from './checkbox_constants';\nimport { DtValidationMessages } from '../validation_messages';\n\n/**\n * Checkboxes are control elements that allow the user to make a selection.They are typically used in a\n * Checkbox Group which allows the user to make one or more selections from a list of options.\n * @see https://dialtone.dialpad.com/components/checkbox.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtCheckbox',\n\n components: { DtValidationMessages },\n\n mixins: [InputMixin, CheckableMixin, GroupableMixin, MessagesMixin],\n\n inheritAttrs: false,\n\n emits: [\n /**\n * Native input event\n *\n * @event input\n * @type {Boolean}\n */\n 'input',\n\n /**\n * Native input focusin event\n *\n * @event focusin\n * @type {FocusEvent}\n */\n 'focusin',\n\n /**\n * Native input focusout event\n *\n * @event focusout\n * @type {FocusEvent}\n */\n 'focusout',\n ],\n\n computed: {\n inputValidationClass () {\n return CHECKBOX_INPUT_VALIDATION_CLASSES[this.internalValidationState];\n },\n\n checkboxGroupValueChecked () {\n return this.groupContext?.selectedValues?.includes(this.value) ?? false;\n },\n\n hasLabel () {\n return !!(this.$slots.default || this.label);\n },\n\n hasDescription () {\n return !!(this.$slots.description || this.description);\n },\n\n hasLabelOrDescription () {\n return this.hasLabel || this.hasDescription;\n },\n\n inputListeners () {\n return {\n /*\n * Override input listener to as no-op. Prevents parent input listeners from being passed through\n * onto the input element which will result in the handler being called twice\n * (once on the input element and once by the emitted input event by the change listener).\n */\n input: () => {},\n focusin: event => this.$emit('focusin', event),\n focusout: event => this.$emit('focusout', event),\n change: event => this.emitValue(event.target),\n };\n },\n },\n\n watch: {\n checkboxGroupValueChecked: {\n immediate: true,\n handler (newCheckboxGroupValueChecked) {\n if (this.hasGroup) {\n // update internal value when the checkbox group value changes\n this.internalChecked = newCheckboxGroupValueChecked;\n }\n },\n },\n },\n\n mounted () {\n this.runValidations();\n },\n\n methods: {\n removeClassStyleAttrs,\n addClassStyleAttrs,\n\n emitValue (target) {\n let { value, checked } = target;\n // Expected: Indeterminate -> unchecked. We need to manually set DOM property `checked` to false\n // and update this.internalIndeterminate.\n if (this.internalIndeterminate) {\n checked = false;\n this.internalIndeterminate = false;\n target.checked = false;\n }\n // update provided value if injected\n this.setGroupValue(value, checked);\n\n // emit the state of the checkbox\n this.$emit('input', checked);\n },\n\n runValidations () {\n this.validateInputLabels(this.hasLabel, this.$attrs['aria-label']);\n },\n },\n};\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeProps","_guardReactiveProps","_createElementVNode","_normalizeClass","_mergeProps","_toHandlers","_renderSlot","_createTextVNode","_toDisplayString","_createCommentVNode","_createVNode"],"mappings":"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"}
@@ -4,6 +4,7 @@ const vue = require("vue");
4
4
  const utils = require("../utils.cjs");
5
5
  const datepicker_constants = require("../datepicker_constants.cjs");
6
6
  const dateFns = require("date-fns");
7
+ const common_utils = require("../../../common/utils.cjs");
7
8
  function useCalendar(props, emits) {
8
9
  const selectedDay = vue.ref(null);
9
10
  const focusDay = vue.ref(0);
@@ -30,12 +31,12 @@ function useCalendar(props, emits) {
30
31
  event.preventDefault();
31
32
  focusDay.value -= 7;
32
33
  try {
33
- daysRef.value[focusDay.value].el.$el.focus();
34
+ common_utils.returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
34
35
  } catch (error) {
35
36
  const prevFocusDate = utils.calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);
36
37
  emits("go-to-prev-month");
37
38
  vue.nextTick(() => {
38
- daysRef.value[prevFocusDate - 1].el.$el.focus();
39
+ common_utils.returnFirstEl(daysRef.value[prevFocusDate - 1].el.$el).focus();
39
40
  focusDay.value += prevFocusDate - 1;
40
41
  });
41
42
  }
@@ -44,12 +45,12 @@ function useCalendar(props, emits) {
44
45
  event.preventDefault();
45
46
  focusDay.value += 7;
46
47
  try {
47
- daysRef.value[focusDay.value].el.$el.focus();
48
+ common_utils.returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
48
49
  } catch (error) {
49
50
  const nextFocusDate = utils.calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);
50
51
  emits("go-to-next-month");
51
52
  vue.nextTick(() => {
52
- daysRef.value[nextFocusDate - 1].el.$el.focus();
53
+ common_utils.returnFirstEl(daysRef.value[nextFocusDate - 1].el.$el).focus();
53
54
  focusDay.value += nextFocusDate - 1;
54
55
  });
55
56
  }
@@ -58,7 +59,7 @@ function useCalendar(props, emits) {
58
59
  event.preventDefault();
59
60
  if (focusDay.value > 0) {
60
61
  focusDay.value -= 1;
61
- daysRef.value[focusDay.value].el.$el.focus();
62
+ common_utils.returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
62
63
  } else {
63
64
  emits("go-to-prev-month");
64
65
  focusLastDay();
@@ -68,7 +69,7 @@ function useCalendar(props, emits) {
68
69
  event.preventDefault();
69
70
  if (focusDay.value < daysRef.value.length - 1) {
70
71
  focusDay.value += 1;
71
- daysRef.value[focusDay.value].el.$el.focus();
72
+ common_utils.returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
72
73
  } else {
73
74
  emits("go-to-next-month");
74
75
  focusFirstDay();
@@ -86,13 +87,13 @@ function useCalendar(props, emits) {
86
87
  function focusFirstDay() {
87
88
  focusDay.value = 0;
88
89
  vue.nextTick(() => {
89
- daysRef.value[focusDay.value].el.$el.focus();
90
+ common_utils.returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
90
91
  });
91
92
  }
92
93
  function focusLastDay() {
93
94
  vue.nextTick(() => {
94
95
  focusDay.value = daysRef.value.length - 1;
95
- daysRef.value[focusDay.value].el.$el.focus();
96
+ common_utils.returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
96
97
  });
97
98
  }
98
99
  function selectDay(day) {
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendar.cjs","sources":["../../../../components/datepicker/composables/useCalendar.js"],"sourcesContent":["import { computed, ref, watch, nextTick } from 'vue';\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate } from '@/components/datepicker/utils.js';\nimport { MONTH_FORMAT, WEEK_START } from '@/components/datepicker/datepicker_constants.js';\nimport { format, getYear } from 'date-fns';\n\nexport function useCalendar (props, emits) {\n const selectedDay = ref(null);\n const focusDay = ref(0);\n const daysRef = ref([]);\n\n const weekDays = computed(() => {\n return getWeekDayNames(props.locale, WEEK_START);\n });\n\n watch(() => props.calendarDays, () => {\n focusDay.value = 0;\n daysRef.value = [];\n selectedDay.value = null;\n });\n\n function dayAriaLabel (day) {\n return `${props.selectDayLabel} ${day.text} ${format(day.value, MONTH_FORMAT)} ${getYear(day.value)}`;\n }\n\n function setDayRef (el, day) {\n if (!daysRef.value.some(day => day.el === el) && day.currentMonth) {\n daysRef.value.push({ el, day });\n }\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n focusDay.value -= 7;\n try {\n daysRef.value[focusDay.value].el.$el.focus();\n } catch (error) {\n const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);\n emits('go-to-prev-month');\n\n nextTick(() => {\n daysRef.value[prevFocusDate - 1].el.$el.focus();\n focusDay.value += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n focusDay.value += 7;\n try {\n daysRef.value[focusDay.value].el.$el.focus();\n } catch (error) {\n const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);\n emits('go-to-next-month');\n\n nextTick(() => {\n daysRef.value[nextFocusDate - 1].el.$el.focus();\n focusDay.value += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (focusDay.value > 0) {\n focusDay.value -= 1;\n daysRef.value[focusDay.value].el.$el.focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n emits('go-to-prev-month');\n focusLastDay();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusDay.value < daysRef.value.length - 1) {\n focusDay.value += 1;\n daysRef.value[focusDay.value].el.$el.focus();\n } else {\n // if we are on month last day, jump to first day of next month\n emits('go-to-next-month');\n\n focusFirstDay();\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-month-year-picker');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function focusFirstDay () {\n focusDay.value = 0;\n\n nextTick(() => {\n daysRef.value[focusDay.value].el.$el.focus();\n });\n }\n\n function focusLastDay () {\n nextTick(() => {\n focusDay.value = daysRef.value.length - 1;\n daysRef.value[focusDay.value].el.$el.focus();\n });\n }\n\n function selectDay (day) {\n if (!day.currentMonth) { return; }\n\n // local selectedDay is updated when a day is selected\n selectedDay.value = day.text;\n emits('select-date', day.value);\n }\n\n return {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n };\n}\n"],"names":["ref","computed","getWeekDayNames","WEEK_START","watch","format","MONTH_FORMAT","getYear","day","calculatePrevFocusDate","nextTick","calculateNextFocusDate"],"mappings":"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"}
1
+ {"version":3,"file":"useCalendar.cjs","sources":["../../../../components/datepicker/composables/useCalendar.js"],"sourcesContent":["import { computed, ref, watch, nextTick } from 'vue';\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate } from '@/components/datepicker/utils.js';\nimport { MONTH_FORMAT, WEEK_START } from '@/components/datepicker/datepicker_constants.js';\nimport { format, getYear } from 'date-fns';\nimport { returnFirstEl } from '@/common/utils';\n\nexport function useCalendar (props, emits) {\n const selectedDay = ref(null);\n const focusDay = ref(0);\n const daysRef = ref([]);\n\n const weekDays = computed(() => {\n return getWeekDayNames(props.locale, WEEK_START);\n });\n\n watch(() => props.calendarDays, () => {\n focusDay.value = 0;\n daysRef.value = [];\n selectedDay.value = null;\n });\n\n function dayAriaLabel (day) {\n return `${props.selectDayLabel} ${day.text} ${format(day.value, MONTH_FORMAT)} ${getYear(day.value)}`;\n }\n\n function setDayRef (el, day) {\n if (!daysRef.value.some(day => day.el === el) && day.currentMonth) {\n daysRef.value.push({ el, day });\n }\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n focusDay.value -= 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch (error) {\n const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);\n emits('go-to-prev-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[prevFocusDate - 1].el.$el).focus();\n focusDay.value += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n focusDay.value += 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch (error) {\n const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);\n emits('go-to-next-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[nextFocusDate - 1].el.$el).focus();\n focusDay.value += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (focusDay.value > 0) {\n focusDay.value -= 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n emits('go-to-prev-month');\n focusLastDay();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusDay.value < daysRef.value.length - 1) {\n focusDay.value += 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month last day, jump to first day of next month\n emits('go-to-next-month');\n\n focusFirstDay();\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-month-year-picker');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function focusFirstDay () {\n focusDay.value = 0;\n\n nextTick(() => {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function focusLastDay () {\n nextTick(() => {\n focusDay.value = daysRef.value.length - 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function selectDay (day) {\n if (!day.currentMonth) { return; }\n\n // local selectedDay is updated when a day is selected\n selectedDay.value = day.text;\n emits('select-date', day.value);\n }\n\n return {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n };\n}\n"],"names":["ref","computed","getWeekDayNames","WEEK_START","watch","format","MONTH_FORMAT","getYear","day","returnFirstEl","calculatePrevFocusDate","nextTick","calculateNextFocusDate"],"mappings":"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"}
@@ -2,6 +2,7 @@ import { ref, computed, watch, nextTick } from "vue";
2
2
  import { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate } from "../utils.js";
3
3
  import { WEEK_START, MONTH_FORMAT } from "../datepicker_constants.js";
4
4
  import { format, getYear } from "date-fns";
5
+ import { returnFirstEl } from "../../../common/utils.js";
5
6
  function useCalendar(props, emits) {
6
7
  const selectedDay = ref(null);
7
8
  const focusDay = ref(0);
@@ -28,12 +29,12 @@ function useCalendar(props, emits) {
28
29
  event.preventDefault();
29
30
  focusDay.value -= 7;
30
31
  try {
31
- daysRef.value[focusDay.value].el.$el.focus();
32
+ returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
32
33
  } catch (error) {
33
34
  const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);
34
35
  emits("go-to-prev-month");
35
36
  nextTick(() => {
36
- daysRef.value[prevFocusDate - 1].el.$el.focus();
37
+ returnFirstEl(daysRef.value[prevFocusDate - 1].el.$el).focus();
37
38
  focusDay.value += prevFocusDate - 1;
38
39
  });
39
40
  }
@@ -42,12 +43,12 @@ function useCalendar(props, emits) {
42
43
  event.preventDefault();
43
44
  focusDay.value += 7;
44
45
  try {
45
- daysRef.value[focusDay.value].el.$el.focus();
46
+ returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
46
47
  } catch (error) {
47
48
  const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);
48
49
  emits("go-to-next-month");
49
50
  nextTick(() => {
50
- daysRef.value[nextFocusDate - 1].el.$el.focus();
51
+ returnFirstEl(daysRef.value[nextFocusDate - 1].el.$el).focus();
51
52
  focusDay.value += nextFocusDate - 1;
52
53
  });
53
54
  }
@@ -56,7 +57,7 @@ function useCalendar(props, emits) {
56
57
  event.preventDefault();
57
58
  if (focusDay.value > 0) {
58
59
  focusDay.value -= 1;
59
- daysRef.value[focusDay.value].el.$el.focus();
60
+ returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
60
61
  } else {
61
62
  emits("go-to-prev-month");
62
63
  focusLastDay();
@@ -66,7 +67,7 @@ function useCalendar(props, emits) {
66
67
  event.preventDefault();
67
68
  if (focusDay.value < daysRef.value.length - 1) {
68
69
  focusDay.value += 1;
69
- daysRef.value[focusDay.value].el.$el.focus();
70
+ returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
70
71
  } else {
71
72
  emits("go-to-next-month");
72
73
  focusFirstDay();
@@ -84,13 +85,13 @@ function useCalendar(props, emits) {
84
85
  function focusFirstDay() {
85
86
  focusDay.value = 0;
86
87
  nextTick(() => {
87
- daysRef.value[focusDay.value].el.$el.focus();
88
+ returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
88
89
  });
89
90
  }
90
91
  function focusLastDay() {
91
92
  nextTick(() => {
92
93
  focusDay.value = daysRef.value.length - 1;
93
- daysRef.value[focusDay.value].el.$el.focus();
94
+ returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();
94
95
  });
95
96
  }
96
97
  function selectDay(day) {
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendar.js","sources":["../../../../components/datepicker/composables/useCalendar.js"],"sourcesContent":["import { computed, ref, watch, nextTick } from 'vue';\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate } from '@/components/datepicker/utils.js';\nimport { MONTH_FORMAT, WEEK_START } from '@/components/datepicker/datepicker_constants.js';\nimport { format, getYear } from 'date-fns';\n\nexport function useCalendar (props, emits) {\n const selectedDay = ref(null);\n const focusDay = ref(0);\n const daysRef = ref([]);\n\n const weekDays = computed(() => {\n return getWeekDayNames(props.locale, WEEK_START);\n });\n\n watch(() => props.calendarDays, () => {\n focusDay.value = 0;\n daysRef.value = [];\n selectedDay.value = null;\n });\n\n function dayAriaLabel (day) {\n return `${props.selectDayLabel} ${day.text} ${format(day.value, MONTH_FORMAT)} ${getYear(day.value)}`;\n }\n\n function setDayRef (el, day) {\n if (!daysRef.value.some(day => day.el === el) && day.currentMonth) {\n daysRef.value.push({ el, day });\n }\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n focusDay.value -= 7;\n try {\n daysRef.value[focusDay.value].el.$el.focus();\n } catch (error) {\n const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);\n emits('go-to-prev-month');\n\n nextTick(() => {\n daysRef.value[prevFocusDate - 1].el.$el.focus();\n focusDay.value += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n focusDay.value += 7;\n try {\n daysRef.value[focusDay.value].el.$el.focus();\n } catch (error) {\n const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);\n emits('go-to-next-month');\n\n nextTick(() => {\n daysRef.value[nextFocusDate - 1].el.$el.focus();\n focusDay.value += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (focusDay.value > 0) {\n focusDay.value -= 1;\n daysRef.value[focusDay.value].el.$el.focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n emits('go-to-prev-month');\n focusLastDay();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusDay.value < daysRef.value.length - 1) {\n focusDay.value += 1;\n daysRef.value[focusDay.value].el.$el.focus();\n } else {\n // if we are on month last day, jump to first day of next month\n emits('go-to-next-month');\n\n focusFirstDay();\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-month-year-picker');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function focusFirstDay () {\n focusDay.value = 0;\n\n nextTick(() => {\n daysRef.value[focusDay.value].el.$el.focus();\n });\n }\n\n function focusLastDay () {\n nextTick(() => {\n focusDay.value = daysRef.value.length - 1;\n daysRef.value[focusDay.value].el.$el.focus();\n });\n }\n\n function selectDay (day) {\n if (!day.currentMonth) { return; }\n\n // local selectedDay is updated when a day is selected\n selectedDay.value = day.text;\n emits('select-date', day.value);\n }\n\n return {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n };\n}\n"],"names":["day"],"mappings":"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"}
1
+ {"version":3,"file":"useCalendar.js","sources":["../../../../components/datepicker/composables/useCalendar.js"],"sourcesContent":["import { computed, ref, watch, nextTick } from 'vue';\nimport { getWeekDayNames, calculateNextFocusDate, calculatePrevFocusDate } from '@/components/datepicker/utils.js';\nimport { MONTH_FORMAT, WEEK_START } from '@/components/datepicker/datepicker_constants.js';\nimport { format, getYear } from 'date-fns';\nimport { returnFirstEl } from '@/common/utils';\n\nexport function useCalendar (props, emits) {\n const selectedDay = ref(null);\n const focusDay = ref(0);\n const daysRef = ref([]);\n\n const weekDays = computed(() => {\n return getWeekDayNames(props.locale, WEEK_START);\n });\n\n watch(() => props.calendarDays, () => {\n focusDay.value = 0;\n daysRef.value = [];\n selectedDay.value = null;\n });\n\n function dayAriaLabel (day) {\n return `${props.selectDayLabel} ${day.text} ${format(day.value, MONTH_FORMAT)} ${getYear(day.value)}`;\n }\n\n function setDayRef (el, day) {\n if (!daysRef.value.some(day => day.el === el) && day.currentMonth) {\n daysRef.value.push({ el, day });\n }\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowUp':\n event.preventDefault();\n focusDay.value -= 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch (error) {\n const prevFocusDate = calculatePrevFocusDate(daysRef.value[focusDay.value + 7].day.value);\n emits('go-to-prev-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[prevFocusDate - 1].el.$el).focus();\n focusDay.value += prevFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n focusDay.value += 7;\n try {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } catch (error) {\n const nextFocusDate = calculateNextFocusDate(daysRef.value[focusDay.value - 7].day.value);\n emits('go-to-next-month');\n\n nextTick(() => {\n returnFirstEl(daysRef.value[nextFocusDate - 1].el.$el).focus();\n focusDay.value += nextFocusDate - 1;\n });\n }\n break;\n\n case 'ArrowLeft':\n event.preventDefault();\n if (focusDay.value > 0) {\n focusDay.value -= 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month first day, jump to last day of prev month\n emits('go-to-prev-month');\n focusLastDay();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusDay.value < daysRef.value.length - 1) {\n focusDay.value += 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n } else {\n // if we are on month last day, jump to first day of next month\n emits('go-to-next-month');\n\n focusFirstDay();\n }\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-month-year-picker');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function focusFirstDay () {\n focusDay.value = 0;\n\n nextTick(() => {\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function focusLastDay () {\n nextTick(() => {\n focusDay.value = daysRef.value.length - 1;\n returnFirstEl(daysRef.value[focusDay.value].el.$el).focus();\n });\n }\n\n function selectDay (day) {\n if (!day.currentMonth) { return; }\n\n // local selectedDay is updated when a day is selected\n selectedDay.value = day.text;\n emits('select-date', day.value);\n }\n\n return {\n selectedDay,\n weekDays,\n dayAriaLabel,\n setDayRef,\n handleKeyDown,\n focusFirstDay,\n selectDay,\n };\n}\n"],"names":["day"],"mappings":"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"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vue = require("vue");
4
4
  const dateFns = require("date-fns");
5
5
  const utils = require("../utils.cjs");
6
+ const common_utils = require("../../../common/utils.cjs");
6
7
  function useMonthYearPicker(props, emits) {
7
8
  const selectMonth = vue.ref(dateFns.getMonth(props.selectedDate));
8
9
  const selectYear = vue.ref(dateFns.getYear(props.selectedDate));
@@ -29,7 +30,7 @@ function useMonthYearPicker(props, emits) {
29
30
  }
30
31
  }
31
32
  function focusMonthYearPicker() {
32
- focusRefs.value[0].$el.focus();
33
+ common_utils.returnFirstEl(focusRefs.value[0].$el).focus();
33
34
  }
34
35
  function handleKeyDown(event) {
35
36
  switch (event.key) {
@@ -37,20 +38,20 @@ function useMonthYearPicker(props, emits) {
37
38
  event.preventDefault();
38
39
  if (focusPicker.value === 0) {
39
40
  focusPicker.value = 3;
40
- focusRefs.value[focusPicker.value].$el.focus();
41
+ common_utils.returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();
41
42
  } else {
42
43
  focusPicker.value--;
43
- focusRefs.value[focusPicker.value].$el.focus();
44
+ common_utils.returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();
44
45
  }
45
46
  break;
46
47
  case "ArrowRight":
47
48
  event.preventDefault();
48
49
  if (focusPicker.value === 3) {
49
50
  focusPicker.value = 0;
50
- focusRefs.value[focusPicker.value].$el.focus();
51
+ common_utils.returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();
51
52
  } else {
52
53
  focusPicker.value++;
53
- focusRefs.value[focusPicker.value].$el.focus();
54
+ common_utils.returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();
54
55
  }
55
56
  break;
56
57
  case "ArrowDown":
@@ -1 +1 @@
1
- {"version":3,"file":"useMonthYearPicker.cjs","sources":["../../../../components/datepicker/composables/useMonthYearPicker.js"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport { addMonths, getDate, getMonth, getYear, set, subMonths } from 'date-fns';\nimport { formatMonth, getCalendarDays } from '@/components/datepicker/utils.js';\n\nexport function useMonthYearPicker (props, emits) {\n const selectMonth = ref(getMonth(props.selectedDate));\n const selectYear = ref(getYear(props.selectedDate));\n const highlightedDay = ref(null);\n const focusPicker = ref(0);\n const focusRefs = ref([]);\n\n const calendarDays = computed(() => {\n return getCalendarDays(selectMonth.value, selectYear.value, highlightedDay.value);\n });\n\n const formattedMonth = computed(() => {\n return (month, format, locale) => formatMonth(month, format, locale);\n });\n\n watch(selectMonth, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(selectYear, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n function setDayRef (el) {\n if (!focusRefs.value.includes(el)) {\n focusRefs.value.push(el);\n }\n }\n\n function focusMonthYearPicker () {\n focusRefs.value[0].$el.focus();\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (focusPicker.value === 0) {\n focusPicker.value = 3;\n focusRefs.value[focusPicker.value].$el.focus();\n } else {\n focusPicker.value--;\n focusRefs.value[focusPicker.value].$el.focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusPicker.value === 3) {\n focusPicker.value = 0;\n focusRefs.value[focusPicker.value].$el.focus();\n } else {\n focusPicker.value++;\n focusRefs.value[focusPicker.value].$el.focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function highlightDay () {\n const year = getYear(props.selectedDate);\n const month = getMonth(props.selectedDate);\n\n if (year !== selectYear.value || month !== selectMonth.value) {\n highlightedDay.value = null;\n } else {\n highlightedDay.value = getDate(props.selectedDate);\n }\n }\n\n function changeMonth (value) {\n // Adjust year when changing from January to December or vice versa\n if ((selectMonth.value === 0 && value === -1) || (selectMonth.value === 11 && value === 1)) {\n selectYear.value += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(props.selectedDate, { month: selectMonth.value, year: selectYear.value });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n selectMonth.value = getMonth(newDate);\n }\n\n function changeYear (value) {\n selectYear.value = selectYear.value + value;\n }\n\n function goToNextMonth () {\n changeMonth(1);\n }\n\n function goToPrevMonth () {\n changeMonth(-1);\n }\n\n return {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n };\n}\n"],"names":["ref","getMonth","getYear","computed","getCalendarDays","formatMonth","watch","getDate","set","addMonths","subMonths"],"mappings":"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"}
1
+ {"version":3,"file":"useMonthYearPicker.cjs","sources":["../../../../components/datepicker/composables/useMonthYearPicker.js"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport { addMonths, getDate, getMonth, getYear, set, subMonths } from 'date-fns';\nimport { formatMonth, getCalendarDays } from '@/components/datepicker/utils.js';\nimport { returnFirstEl } from '@/common/utils';\n\nexport function useMonthYearPicker (props, emits) {\n const selectMonth = ref(getMonth(props.selectedDate));\n const selectYear = ref(getYear(props.selectedDate));\n const highlightedDay = ref(null);\n const focusPicker = ref(0);\n const focusRefs = ref([]);\n\n const calendarDays = computed(() => {\n return getCalendarDays(selectMonth.value, selectYear.value, highlightedDay.value);\n });\n\n const formattedMonth = computed(() => {\n return (month, format, locale) => formatMonth(month, format, locale);\n });\n\n watch(selectMonth, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(selectYear, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n function setDayRef (el) {\n if (!focusRefs.value.includes(el)) {\n focusRefs.value.push(el);\n }\n }\n\n function focusMonthYearPicker () {\n returnFirstEl(focusRefs.value[0].$el).focus();\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (focusPicker.value === 0) {\n focusPicker.value = 3;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value--;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusPicker.value === 3) {\n focusPicker.value = 0;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value++;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function highlightDay () {\n const year = getYear(props.selectedDate);\n const month = getMonth(props.selectedDate);\n\n if (year !== selectYear.value || month !== selectMonth.value) {\n highlightedDay.value = null;\n } else {\n highlightedDay.value = getDate(props.selectedDate);\n }\n }\n\n function changeMonth (value) {\n // Adjust year when changing from January to December or vice versa\n if ((selectMonth.value === 0 && value === -1) || (selectMonth.value === 11 && value === 1)) {\n selectYear.value += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(props.selectedDate, { month: selectMonth.value, year: selectYear.value });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n selectMonth.value = getMonth(newDate);\n }\n\n function changeYear (value) {\n selectYear.value = selectYear.value + value;\n }\n\n function goToNextMonth () {\n changeMonth(1);\n }\n\n function goToPrevMonth () {\n changeMonth(-1);\n }\n\n return {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n };\n}\n"],"names":["ref","getMonth","getYear","computed","getCalendarDays","formatMonth","watch","returnFirstEl","getDate","set","addMonths","subMonths"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { ref, computed, watch } from "vue";
2
2
  import { getMonth, getYear, getDate, set, addMonths, subMonths } from "date-fns";
3
3
  import { getCalendarDays, formatMonth } from "../utils.js";
4
+ import { returnFirstEl } from "../../../common/utils.js";
4
5
  function useMonthYearPicker(props, emits) {
5
6
  const selectMonth = ref(getMonth(props.selectedDate));
6
7
  const selectYear = ref(getYear(props.selectedDate));
@@ -27,7 +28,7 @@ function useMonthYearPicker(props, emits) {
27
28
  }
28
29
  }
29
30
  function focusMonthYearPicker() {
30
- focusRefs.value[0].$el.focus();
31
+ returnFirstEl(focusRefs.value[0].$el).focus();
31
32
  }
32
33
  function handleKeyDown(event) {
33
34
  switch (event.key) {
@@ -35,20 +36,20 @@ function useMonthYearPicker(props, emits) {
35
36
  event.preventDefault();
36
37
  if (focusPicker.value === 0) {
37
38
  focusPicker.value = 3;
38
- focusRefs.value[focusPicker.value].$el.focus();
39
+ returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();
39
40
  } else {
40
41
  focusPicker.value--;
41
- focusRefs.value[focusPicker.value].$el.focus();
42
+ returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();
42
43
  }
43
44
  break;
44
45
  case "ArrowRight":
45
46
  event.preventDefault();
46
47
  if (focusPicker.value === 3) {
47
48
  focusPicker.value = 0;
48
- focusRefs.value[focusPicker.value].$el.focus();
49
+ returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();
49
50
  } else {
50
51
  focusPicker.value++;
51
- focusRefs.value[focusPicker.value].$el.focus();
52
+ returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();
52
53
  }
53
54
  break;
54
55
  case "ArrowDown":
@@ -1 +1 @@
1
- {"version":3,"file":"useMonthYearPicker.js","sources":["../../../../components/datepicker/composables/useMonthYearPicker.js"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport { addMonths, getDate, getMonth, getYear, set, subMonths } from 'date-fns';\nimport { formatMonth, getCalendarDays } from '@/components/datepicker/utils.js';\n\nexport function useMonthYearPicker (props, emits) {\n const selectMonth = ref(getMonth(props.selectedDate));\n const selectYear = ref(getYear(props.selectedDate));\n const highlightedDay = ref(null);\n const focusPicker = ref(0);\n const focusRefs = ref([]);\n\n const calendarDays = computed(() => {\n return getCalendarDays(selectMonth.value, selectYear.value, highlightedDay.value);\n });\n\n const formattedMonth = computed(() => {\n return (month, format, locale) => formatMonth(month, format, locale);\n });\n\n watch(selectMonth, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(selectYear, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n function setDayRef (el) {\n if (!focusRefs.value.includes(el)) {\n focusRefs.value.push(el);\n }\n }\n\n function focusMonthYearPicker () {\n focusRefs.value[0].$el.focus();\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (focusPicker.value === 0) {\n focusPicker.value = 3;\n focusRefs.value[focusPicker.value].$el.focus();\n } else {\n focusPicker.value--;\n focusRefs.value[focusPicker.value].$el.focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusPicker.value === 3) {\n focusPicker.value = 0;\n focusRefs.value[focusPicker.value].$el.focus();\n } else {\n focusPicker.value++;\n focusRefs.value[focusPicker.value].$el.focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function highlightDay () {\n const year = getYear(props.selectedDate);\n const month = getMonth(props.selectedDate);\n\n if (year !== selectYear.value || month !== selectMonth.value) {\n highlightedDay.value = null;\n } else {\n highlightedDay.value = getDate(props.selectedDate);\n }\n }\n\n function changeMonth (value) {\n // Adjust year when changing from January to December or vice versa\n if ((selectMonth.value === 0 && value === -1) || (selectMonth.value === 11 && value === 1)) {\n selectYear.value += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(props.selectedDate, { month: selectMonth.value, year: selectYear.value });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n selectMonth.value = getMonth(newDate);\n }\n\n function changeYear (value) {\n selectYear.value = selectYear.value + value;\n }\n\n function goToNextMonth () {\n changeMonth(1);\n }\n\n function goToPrevMonth () {\n changeMonth(-1);\n }\n\n return {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useMonthYearPicker.js","sources":["../../../../components/datepicker/composables/useMonthYearPicker.js"],"sourcesContent":["import { computed, ref, watch } from 'vue';\nimport { addMonths, getDate, getMonth, getYear, set, subMonths } from 'date-fns';\nimport { formatMonth, getCalendarDays } from '@/components/datepicker/utils.js';\nimport { returnFirstEl } from '@/common/utils';\n\nexport function useMonthYearPicker (props, emits) {\n const selectMonth = ref(getMonth(props.selectedDate));\n const selectYear = ref(getYear(props.selectedDate));\n const highlightedDay = ref(null);\n const focusPicker = ref(0);\n const focusRefs = ref([]);\n\n const calendarDays = computed(() => {\n return getCalendarDays(selectMonth.value, selectYear.value, highlightedDay.value);\n });\n\n const formattedMonth = computed(() => {\n return (month, format, locale) => formatMonth(month, format, locale);\n });\n\n watch(selectMonth, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n watch(selectYear, () => {\n highlightDay();\n emits('calendar-days', calendarDays.value);\n }, { immediate: true });\n\n function setDayRef (el) {\n if (!focusRefs.value.includes(el)) {\n focusRefs.value.push(el);\n }\n }\n\n function focusMonthYearPicker () {\n returnFirstEl(focusRefs.value[0].$el).focus();\n }\n\n function handleKeyDown (event) {\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n if (focusPicker.value === 0) {\n focusPicker.value = 3;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value--;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowRight':\n event.preventDefault();\n if (focusPicker.value === 3) {\n focusPicker.value = 0;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n } else {\n focusPicker.value++;\n returnFirstEl(focusRefs.value[focusPicker.value].$el).focus();\n }\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Tab':\n event.preventDefault();\n emits('focus-first-day');\n break;\n\n case 'Escape':\n emits('close-datepicker');\n break;\n }\n }\n\n function highlightDay () {\n const year = getYear(props.selectedDate);\n const month = getMonth(props.selectedDate);\n\n if (year !== selectYear.value || month !== selectMonth.value) {\n highlightedDay.value = null;\n } else {\n highlightedDay.value = getDate(props.selectedDate);\n }\n }\n\n function changeMonth (value) {\n // Adjust year when changing from January to December or vice versa\n if ((selectMonth.value === 0 && value === -1) || (selectMonth.value === 11 && value === 1)) {\n selectYear.value += value;\n }\n\n // Calculate the new date by adding or subtracting months\n const initialDate = set(props.selectedDate, { month: selectMonth.value, year: selectYear.value });\n const newDate = value === 1 ? addMonths(initialDate, 1) : subMonths(initialDate, 1);\n\n // Update the selected month\n selectMonth.value = getMonth(newDate);\n }\n\n function changeYear (value) {\n selectYear.value = selectYear.value + value;\n }\n\n function goToNextMonth () {\n changeMonth(1);\n }\n\n function goToPrevMonth () {\n changeMonth(-1);\n }\n\n return {\n selectMonth,\n selectYear,\n formattedMonth,\n setDayRef,\n focusMonthYearPicker,\n handleKeyDown,\n changeMonth,\n changeYear,\n goToNextMonth,\n goToPrevMonth,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
+ const common_utils = require("../../common/utils.cjs");
4
5
  const monthYearPicker = require("./modules/month-year-picker.vue.cjs");
5
6
  const calendar = require("./modules/calendar.vue.cjs");
6
- const common_utils = require("../../common/utils.cjs");
7
7
  const stack = require("../stack/stack.vue.cjs");
8
8
  const _hoisted_1 = { class: "d-datepicker__hd" };
9
9
  const _hoisted_2 = { class: "d-datepicker__bd" };
@@ -111,7 +111,7 @@ const _sfc_main = {
111
111
  }
112
112
  vue.onMounted(() => {
113
113
  const instance = vue.getCurrentInstance();
114
- common_utils.warnIfUnmounted(instance.proxy.$el, "datepicker");
114
+ common_utils.warnIfUnmounted(common_utils.returnFirstEl(instance.proxy.$el), "datepicker");
115
115
  });
116
116
  return (_ctx, _cache) => {
117
117
  return vue.openBlock(), vue.createBlock(vue.unref(stack.default), {
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.vue.cjs","sources":["../../../components/datepicker/datepicker.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"400\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :locale=\"locale\"\n :prev-month-label=\"prevMonthLabel\"\n :next-month-label=\"nextMonthLabel\"\n :prev-year-label=\"prevYearLabel\"\n :next-year-label=\"nextYearLabel\"\n :change-to-label=\"changeToLabel\"\n :selected-date=\"selectedDate\"\n @calendar-days=\"updateCalendarDays\"\n @focus-first-day=\"$refs.calendar.focusFirstDay()\"\n @focus-last-day=\"$refs.calendar.focusLastDay()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n />\n </div>\n <div class=\"d-datepicker__bd\">\n <calendar\n ref=\"calendar\"\n :locale=\"locale\"\n :calendar-days=\"calendarDays\"\n :select-day-label=\"selectDayLabel\"\n @select-date=\"$emit('selected-date', $event)\"\n @focus-month-year-picker=\"$refs.monthYearPicker.focusMonthYearPicker()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n @go-to-next-month=\"$refs.monthYearPicker.goToNextMonth()\"\n @go-to-prev-month=\"$refs.monthYearPicker.goToPrevMonth()\"\n />\n </div>\n </dt-stack>\n</template>\n\n<script setup>\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport { DtStack } from '@/components/stack';\n\nimport { onMounted, ref, getCurrentInstance } from 'vue';\nimport { warnIfUnmounted } from '@/common/utils';\n\ndefineProps({\n /**\n * Label for the previous month button\n *\n * @type {String}\n * @example 'Previous month'\n */\n prevMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next month button\n *\n * @type {String}\n * @example 'Next month'\n */\n nextMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the previous year button\n *\n * @type {String}\n * @example 'Previous year'\n */\n prevYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next year button\n *\n * @type {String}\n * @example 'Next year'\n */\n nextYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the select day button\n *\n * @type {String}\n * @example 'Select day'\n */\n selectDayLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the change to button\n *\n * @type {String}\n * @example 'Change to'\n */\n changeToLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Locale for the calendar\n *\n * @type {String}\n */\n locale: {\n type: String,\n default: 'en-US',\n },\n\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n});\n\ndefineEmits([\n /**\n * Event fired when a date is selected\n *\n * @event selected-date\n * @type {Date}\n */\n 'selected-date',\n\n /**\n * Event fired when user presses the esc key\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n]);\n\nconst calendarDays = ref([]);\n\nfunction updateCalendarDays (days) {\n calendarDays.value = days;\n}\n\nonMounted(() => {\n const instance = getCurrentInstance();\n warnIfUnmounted(instance.proxy.$el, 'datepicker');\n});\n</script>\n"],"names":["ref","onMounted","getCurrentInstance","warnIfUnmounted"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuJA,UAAM,eAAeA,IAAAA,IAAI,CAAA,CAAE;AAE3B,aAAS,mBAAoB,MAAM;AACjC,mBAAa,QAAQ;AAAA,IACvB;AAEAC,QAAAA,UAAU,MAAM;AACd,YAAM,WAAWC,IAAAA;AACjBC,mBAAAA,gBAAgB,SAAS,MAAM,KAAK,YAAY;AAAA,IAClD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"datepicker.vue.cjs","sources":["../../../components/datepicker/datepicker.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"400\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :locale=\"locale\"\n :prev-month-label=\"prevMonthLabel\"\n :next-month-label=\"nextMonthLabel\"\n :prev-year-label=\"prevYearLabel\"\n :next-year-label=\"nextYearLabel\"\n :change-to-label=\"changeToLabel\"\n :selected-date=\"selectedDate\"\n @calendar-days=\"updateCalendarDays\"\n @focus-first-day=\"$refs.calendar.focusFirstDay()\"\n @focus-last-day=\"$refs.calendar.focusLastDay()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n />\n </div>\n <div class=\"d-datepicker__bd\">\n <calendar\n ref=\"calendar\"\n :locale=\"locale\"\n :calendar-days=\"calendarDays\"\n :select-day-label=\"selectDayLabel\"\n @select-date=\"$emit('selected-date', $event)\"\n @focus-month-year-picker=\"$refs.monthYearPicker.focusMonthYearPicker()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n @go-to-next-month=\"$refs.monthYearPicker.goToNextMonth()\"\n @go-to-prev-month=\"$refs.monthYearPicker.goToPrevMonth()\"\n />\n </div>\n </dt-stack>\n</template>\n\n<script setup>\nimport { returnFirstEl, warnIfUnmounted } from '@/common/utils';\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport { DtStack } from '@/components/stack';\n\nimport { onMounted, ref, getCurrentInstance } from 'vue';\n\ndefineProps({\n /**\n * Label for the previous month button\n *\n * @type {String}\n * @example 'Previous month'\n */\n prevMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next month button\n *\n * @type {String}\n * @example 'Next month'\n */\n nextMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the previous year button\n *\n * @type {String}\n * @example 'Previous year'\n */\n prevYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next year button\n *\n * @type {String}\n * @example 'Next year'\n */\n nextYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the select day button\n *\n * @type {String}\n * @example 'Select day'\n */\n selectDayLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the change to button\n *\n * @type {String}\n * @example 'Change to'\n */\n changeToLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Locale for the calendar\n *\n * @type {String}\n */\n locale: {\n type: String,\n default: 'en-US',\n },\n\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n});\n\ndefineEmits([\n /**\n * Event fired when a date is selected\n *\n * @event selected-date\n * @type {Date}\n */\n 'selected-date',\n\n /**\n * Event fired when user presses the esc key\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n]);\n\nconst calendarDays = ref([]);\n\nfunction updateCalendarDays (days) {\n calendarDays.value = days;\n}\n\nonMounted(() => {\n const instance = getCurrentInstance();\n warnIfUnmounted(returnFirstEl(instance.proxy.$el), 'datepicker');\n});\n</script>\n"],"names":["ref","onMounted","getCurrentInstance","warnIfUnmounted","returnFirstEl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuJA,UAAM,eAAeA,IAAAA,IAAI,CAAA,CAAE;AAE3B,aAAS,mBAAoB,MAAM;AACjC,mBAAa,QAAQ;AAAA,IACvB;AAEAC,QAAAA,UAAU,MAAM;AACd,YAAM,WAAWC,IAAAA;AACjBC,mBAAe,gBAACC,aAAa,cAAC,SAAS,MAAM,GAAG,GAAG,YAAY;AAAA,IACjE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, getCurrentInstance, openBlock, createBlock, unref, withCtx, createElementVNode, createVNode } from "vue";
2
+ import { warnIfUnmounted, returnFirstEl } from "../../common/utils.js";
2
3
  import _sfc_main$2 from "./modules/month-year-picker.vue.js";
3
4
  import _sfc_main$3 from "./modules/calendar.vue.js";
4
- import { warnIfUnmounted } from "../../common/utils.js";
5
5
  import DtStack from "../stack/stack.vue.js";
6
6
  const _hoisted_1 = { class: "d-datepicker__hd" };
7
7
  const _hoisted_2 = { class: "d-datepicker__bd" };
@@ -109,7 +109,7 @@ const _sfc_main = {
109
109
  }
110
110
  onMounted(() => {
111
111
  const instance = getCurrentInstance();
112
- warnIfUnmounted(instance.proxy.$el, "datepicker");
112
+ warnIfUnmounted(returnFirstEl(instance.proxy.$el), "datepicker");
113
113
  });
114
114
  return (_ctx, _cache) => {
115
115
  return openBlock(), createBlock(unref(DtStack), {
@@ -1 +1 @@
1
- {"version":3,"file":"datepicker.vue.js","sources":["../../../components/datepicker/datepicker.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"400\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :locale=\"locale\"\n :prev-month-label=\"prevMonthLabel\"\n :next-month-label=\"nextMonthLabel\"\n :prev-year-label=\"prevYearLabel\"\n :next-year-label=\"nextYearLabel\"\n :change-to-label=\"changeToLabel\"\n :selected-date=\"selectedDate\"\n @calendar-days=\"updateCalendarDays\"\n @focus-first-day=\"$refs.calendar.focusFirstDay()\"\n @focus-last-day=\"$refs.calendar.focusLastDay()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n />\n </div>\n <div class=\"d-datepicker__bd\">\n <calendar\n ref=\"calendar\"\n :locale=\"locale\"\n :calendar-days=\"calendarDays\"\n :select-day-label=\"selectDayLabel\"\n @select-date=\"$emit('selected-date', $event)\"\n @focus-month-year-picker=\"$refs.monthYearPicker.focusMonthYearPicker()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n @go-to-next-month=\"$refs.monthYearPicker.goToNextMonth()\"\n @go-to-prev-month=\"$refs.monthYearPicker.goToPrevMonth()\"\n />\n </div>\n </dt-stack>\n</template>\n\n<script setup>\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport { DtStack } from '@/components/stack';\n\nimport { onMounted, ref, getCurrentInstance } from 'vue';\nimport { warnIfUnmounted } from '@/common/utils';\n\ndefineProps({\n /**\n * Label for the previous month button\n *\n * @type {String}\n * @example 'Previous month'\n */\n prevMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next month button\n *\n * @type {String}\n * @example 'Next month'\n */\n nextMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the previous year button\n *\n * @type {String}\n * @example 'Previous year'\n */\n prevYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next year button\n *\n * @type {String}\n * @example 'Next year'\n */\n nextYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the select day button\n *\n * @type {String}\n * @example 'Select day'\n */\n selectDayLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the change to button\n *\n * @type {String}\n * @example 'Change to'\n */\n changeToLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Locale for the calendar\n *\n * @type {String}\n */\n locale: {\n type: String,\n default: 'en-US',\n },\n\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n});\n\ndefineEmits([\n /**\n * Event fired when a date is selected\n *\n * @event selected-date\n * @type {Date}\n */\n 'selected-date',\n\n /**\n * Event fired when user presses the esc key\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n]);\n\nconst calendarDays = ref([]);\n\nfunction updateCalendarDays (days) {\n calendarDays.value = days;\n}\n\nonMounted(() => {\n const instance = getCurrentInstance();\n warnIfUnmounted(instance.proxy.$el, 'datepicker');\n});\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuJA,UAAM,eAAe,IAAI,CAAA,CAAE;AAE3B,aAAS,mBAAoB,MAAM;AACjC,mBAAa,QAAQ;AAAA,IACvB;AAEA,cAAU,MAAM;AACd,YAAM,WAAW;AACjB,sBAAgB,SAAS,MAAM,KAAK,YAAY;AAAA,IAClD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"datepicker.vue.js","sources":["../../../components/datepicker/datepicker.vue"],"sourcesContent":["<!-- eslint-disable vue/multi-word-component-names -->\n<template>\n <dt-stack\n class=\"d-datepicker\"\n gap=\"400\"\n >\n <div class=\"d-datepicker__hd\">\n <month-year-picker\n ref=\"monthYearPicker\"\n :locale=\"locale\"\n :prev-month-label=\"prevMonthLabel\"\n :next-month-label=\"nextMonthLabel\"\n :prev-year-label=\"prevYearLabel\"\n :next-year-label=\"nextYearLabel\"\n :change-to-label=\"changeToLabel\"\n :selected-date=\"selectedDate\"\n @calendar-days=\"updateCalendarDays\"\n @focus-first-day=\"$refs.calendar.focusFirstDay()\"\n @focus-last-day=\"$refs.calendar.focusLastDay()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n />\n </div>\n <div class=\"d-datepicker__bd\">\n <calendar\n ref=\"calendar\"\n :locale=\"locale\"\n :calendar-days=\"calendarDays\"\n :select-day-label=\"selectDayLabel\"\n @select-date=\"$emit('selected-date', $event)\"\n @focus-month-year-picker=\"$refs.monthYearPicker.focusMonthYearPicker()\"\n @close-datepicker=\"$emit('close-datepicker')\"\n @go-to-next-month=\"$refs.monthYearPicker.goToNextMonth()\"\n @go-to-prev-month=\"$refs.monthYearPicker.goToPrevMonth()\"\n />\n </div>\n </dt-stack>\n</template>\n\n<script setup>\nimport { returnFirstEl, warnIfUnmounted } from '@/common/utils';\nimport MonthYearPicker from './modules/month-year-picker.vue';\nimport Calendar from './modules/calendar.vue';\nimport { DtStack } from '@/components/stack';\n\nimport { onMounted, ref, getCurrentInstance } from 'vue';\n\ndefineProps({\n /**\n * Label for the previous month button\n *\n * @type {String}\n * @example 'Previous month'\n */\n prevMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next month button\n *\n * @type {String}\n * @example 'Next month'\n */\n nextMonthLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the previous year button\n *\n * @type {String}\n * @example 'Previous year'\n */\n prevYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the next year button\n *\n * @type {String}\n * @example 'Next year'\n */\n nextYearLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the select day button\n *\n * @type {String}\n * @example 'Select day'\n */\n selectDayLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Label for the change to button\n *\n * @type {String}\n * @example 'Change to'\n */\n changeToLabel: {\n type: String,\n required: true,\n },\n\n /**\n * Locale for the calendar\n *\n * @type {String}\n */\n locale: {\n type: String,\n default: 'en-US',\n },\n\n /**\n * Selected date\n *\n * @type {Date}\n */\n selectedDate: {\n type: Date,\n default: () => (new Date()),\n },\n});\n\ndefineEmits([\n /**\n * Event fired when a date is selected\n *\n * @event selected-date\n * @type {Date}\n */\n 'selected-date',\n\n /**\n * Event fired when user presses the esc key\n *\n * @event close-datepicker\n */\n 'close-datepicker',\n]);\n\nconst calendarDays = ref([]);\n\nfunction updateCalendarDays (days) {\n calendarDays.value = days;\n}\n\nonMounted(() => {\n const instance = getCurrentInstance();\n warnIfUnmounted(returnFirstEl(instance.proxy.$el), 'datepicker');\n});\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuJA,UAAM,eAAe,IAAI,CAAA,CAAE;AAE3B,aAAS,mBAAoB,MAAM;AACjC,mBAAa,QAAQ;AAAA,IACvB;AAEA,cAAU,MAAM;AACd,YAAM,WAAW;AACjB,sBAAgB,cAAc,SAAS,MAAM,GAAG,GAAG,YAAY;AAAA,IACjE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
3
  const vue = require("vue");
4
+ const common_utils = require("../../../common/utils.cjs");
4
5
  const emoji_picker_constants = require("../emoji_picker_constants.cjs");
5
6
  const vue3 = require("@dialpad/dialtone-icons/vue3");
6
7
  const tab_group = require("../../tab/tab_group.vue.cjs");
@@ -95,7 +96,7 @@ const _sfc_main = {
95
96
  emits("selected-tabset", parseId);
96
97
  }
97
98
  function setTabsetRef(ref) {
98
- tabsetRef.value.push(ref.$el);
99
+ tabsetRef.value.push(common_utils.returnFirstEl(ref.$el));
99
100
  }
100
101
  function focusTabset() {
101
102
  tabsetRef.value[0].focus();
@@ -1 +1 @@
1
- {"version":3,"file":"emoji_tabset.vue.cjs","sources":["../../../../components/emoji_picker/modules/emoji_tabset.vue"],"sourcesContent":["<template>\n <div class=\"d-emoji-picker__tabset\">\n <dt-tab-group\n size=\"sm\"\n tab-list-class=\"d-emoji-picker__tabset-list\"\n :selected=\"selectedTab\"\n >\n <template #tabs>\n <dt-tab\n v-for=\"(tab, index) in tabs\"\n :id=\"tab.id\"\n :ref=\"el => { if (el) setTabsetRef(el) }\"\n :key=\"tab.id\"\n :panel-id=\"tab.panelId\"\n :label=\"tab.label\"\n aria-controls=\"d-emoji-picker-list\"\n :tabindex=\"index + 1\"\n @click.capture.stop=\"selectTabset(tab.id)\"\n @keydown=\"handleKeyDown($event, tab.id)\"\n >\n <component\n :is=\"tab.icon\"\n size=\"400\"\n />\n </dt-tab>\n </template>\n </dt-tab-group>\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, watch } from 'vue';\nimport { DtTab, DtTabGroup } from '@/components/tab';\nimport { EMOJI_PICKER_CATEGORIES } from '@/components/emoji_picker/emoji_picker_constants.js';\nimport {\n DtIconClock,\n DtIconSatisfied,\n DtIconLivingThing,\n DtIconFood,\n DtIconObject,\n DtIconTransportation,\n DtIconLightbulb,\n DtIconHeart,\n DtIconFlag,\n} from '@dialpad/dialtone-icons/vue3';\n\nconst props = defineProps({\n /**\n * Whether to show the recently used tab or not\n * @type {Boolean}\n * @default false\n */\n showRecentlyUsedTab: {\n type: Boolean,\n default: false,\n },\n\n scrollIntoTab: {\n type: Number,\n required: true,\n },\n\n emojiFilter: {\n type: String,\n default: '',\n },\n\n /**\n * The labels for the aria-label\n * @type {Array}\n * @required\n */\n tabsetLabels: {\n type: Array,\n required: true,\n },\n});\n\nconst emits = defineEmits([\n /**\n * Emitted when a tab is selected\n * @event selected-tabset\n * @param {String} tabId - The name of the tab that was selected\n */\n 'selected-tabset',\n\n 'focus-search-input',\n 'focus-skin-selector',\n]);\n\nconst TABS_DATA = [\n { label: EMOJI_PICKER_CATEGORIES.MOST_RECENTLY_USED, icon: DtIconClock },\n { label: EMOJI_PICKER_CATEGORIES.SMILEYS_AND_PEOPLE, icon: DtIconSatisfied },\n { label: EMOJI_PICKER_CATEGORIES.NATURE, icon: DtIconLivingThing },\n { label: EMOJI_PICKER_CATEGORIES.FOOD, icon: DtIconFood },\n { label: EMOJI_PICKER_CATEGORIES.ACTIVITY, icon: DtIconObject },\n { label: EMOJI_PICKER_CATEGORIES.TRAVEL, icon: DtIconTransportation },\n { label: EMOJI_PICKER_CATEGORIES.OBJECTS, icon: DtIconLightbulb },\n { label: EMOJI_PICKER_CATEGORIES.SYMBOLS, icon: DtIconHeart },\n { label: EMOJI_PICKER_CATEGORIES.FLAGS, icon: DtIconFlag },\n];\n\nconst tabs = computed(() => {\n const tabsData = props.showRecentlyUsedTab ? TABS_DATA : TABS_DATA.slice(1);\n\n return tabsData.map((tab, index) => ({\n ...tab,\n label: props.tabsetLabels[index],\n // IDs on dt-tab component need to be on string\n id: (index + 1).toString(),\n panelId: (index + 1).toString(),\n }));\n});\n\nconst isSearching = computed(() => props.emojiFilter.length > 0);\n\nconst selectedTab = ref('1');\n\nconst tabsetRef = ref([]);\n\nwatch(() => props.scrollIntoTab,\n () => {\n if (!isSearching.value) {\n selectedTab.value = (props.scrollIntoTab + 1).toString();\n }\n });\n\nwatch(isSearching,\n () => {\n if (isSearching.value) {\n selectedTab.value = null;\n }\n });\n\n/**\n * We are using .capture.stop modifiers on the click event\n * because we don't want to trigger the click event of the\n * dt-tab component\n */\nfunction selectTabset (id) {\n // IDs on scrollToTab need to be on number\n const parseId = parseInt(id);\n // IDs on dt-tab component need to be on string\n selectedTab.value = id;\n emits('selected-tabset', parseId);\n}\n\nfunction setTabsetRef (ref) {\n // We push the $el, because $el is the button inside the dt-tab component\n // and we need the button to focus it\n tabsetRef.value.push(ref.$el);\n}\n\nfunction focusTabset () {\n tabsetRef.value[0].focus();\n}\n\nfunction handleKeyDown (event, tabId) {\n if (event.key === 'Enter') {\n selectTabset(tabId);\n // We blur because seems like the tab component override the selected prop, and it removes the selected style\n tabsetRef.value[tabId - 1].blur();\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n emits('focus-skin-selector');\n } else {\n emits('focus-search-input');\n }\n }\n\n if (event.key === 'ArrowDown') {\n // Jump to search input\n emits('focus-search-input');\n }\n}\n\ndefineExpose({\n focusTabset,\n});\n</script>\n"],"names":["EMOJI_PICKER_CATEGORIES","DtIconClock","DtIconSatisfied","DtIconLivingThing","DtIconFood","DtIconObject","DtIconTransportation","DtIconLightbulb","DtIconHeart","DtIconFlag","computed","tab","ref","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,UAAM,QAAQ;AAgCd,UAAM,QAAQ;AAYd,UAAM,YAAY;AAAA,MAChB,EAAE,OAAOA,uBAAuB,wBAAC,oBAAoB,MAAMC,KAAAA,YAAa;AAAA,MACxE,EAAE,OAAOD,uBAAuB,wBAAC,oBAAoB,MAAME,KAAAA,gBAAiB;AAAA,MAC5E,EAAE,OAAOF,uBAAuB,wBAAC,QAAQ,MAAMG,KAAAA,kBAAmB;AAAA,MAClE,EAAE,OAAOH,uBAAuB,wBAAC,MAAM,MAAMI,KAAAA,WAAY;AAAA,MACzD,EAAE,OAAOJ,uBAAuB,wBAAC,UAAU,MAAMK,KAAAA,aAAc;AAAA,MAC/D,EAAE,OAAOL,uBAAuB,wBAAC,QAAQ,MAAMM,KAAAA,qBAAsB;AAAA,MACrE,EAAE,OAAON,uBAAuB,wBAAC,SAAS,MAAMO,KAAAA,gBAAiB;AAAA,MACjE,EAAE,OAAOP,uBAAuB,wBAAC,SAAS,MAAMQ,KAAAA,YAAa;AAAA,MAC7D,EAAE,OAAOR,uBAAuB,wBAAC,OAAO,MAAMS,KAAAA,WAAY;AAAA,IAC5D;AAEA,UAAM,OAAOC,IAAQ,SAAC,MAAM;AAC1B,YAAM,WAAW,MAAM,sBAAsB,YAAY,UAAU,MAAM,CAAC;AAE1E,aAAO,SAAS,IAAI,CAACC,MAAK,WAAW;AAAA,QACnC,GAAGA;AAAA,QACH,OAAO,MAAM,aAAa,KAAK;AAAA;AAAA,QAE/B,KAAK,QAAQ,GAAG,SAAU;AAAA,QAC1B,UAAU,QAAQ,GAAG,SAAU;AAAA,MAChC,EAAC;AAAA,IACJ,CAAC;AAED,UAAM,cAAcD,IAAQ,SAAC,MAAM,MAAM,YAAY,SAAS,CAAC;AAE/D,UAAM,cAAcE,IAAAA,IAAI,GAAG;AAE3B,UAAM,YAAYA,IAAAA,IAAI,CAAA,CAAE;AAExBC,QAAAA;AAAAA,MAAM,MAAM,MAAM;AAAA,MAChB,MAAM;AACJ,YAAI,CAAC,YAAY,OAAO;AACtB,sBAAY,SAAS,MAAM,gBAAgB,GAAG;QAC/C;AAAA,MACL;AAAA,IAAG;AAEHA,QAAAA;AAAAA,MAAM;AAAA,MACJ,MAAM;AACJ,YAAI,YAAY,OAAO;AACrB,sBAAY,QAAQ;AAAA,QACrB;AAAA,MACL;AAAA,IAAG;AAOH,aAAS,aAAc,IAAI;AAEzB,YAAM,UAAU,SAAS,EAAE;AAE3B,kBAAY,QAAQ;AACpB,YAAM,mBAAmB,OAAO;AAAA,IAClC;AAEA,aAAS,aAAc,KAAK;AAG1B,gBAAU,MAAM,KAAK,IAAI,GAAG;AAAA,IAC9B;AAEA,aAAS,cAAe;AACtB,gBAAU,MAAM,CAAC,EAAE,MAAK;AAAA,IAC1B;AAEA,aAAS,cAAe,OAAO,OAAO;AACpC,UAAI,MAAM,QAAQ,SAAS;AACzB,qBAAa,KAAK;AAElB,kBAAU,MAAM,QAAQ,CAAC,EAAE,KAAI;AAAA,MAChC;AAED,UAAI,MAAM,QAAQ,OAAO;AACvB,cAAM,eAAc;AACpB,YAAI,MAAM,UAAU;AAClB,gBAAM,qBAAqB;AAAA,QACjC,OAAW;AACL,gBAAM,oBAAoB;AAAA,QAC3B;AAAA,MACF;AAED,UAAI,MAAM,QAAQ,aAAa;AAE7B,cAAM,oBAAoB;AAAA,MAC3B;AAAA,IACH;AAEA,aAAa;AAAA,MACX;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"emoji_tabset.vue.cjs","sources":["../../../../components/emoji_picker/modules/emoji_tabset.vue"],"sourcesContent":["<template>\n <div class=\"d-emoji-picker__tabset\">\n <dt-tab-group\n size=\"sm\"\n tab-list-class=\"d-emoji-picker__tabset-list\"\n :selected=\"selectedTab\"\n >\n <template #tabs>\n <dt-tab\n v-for=\"(tab, index) in tabs\"\n :id=\"tab.id\"\n :ref=\"el => { if (el) setTabsetRef(el) }\"\n :key=\"tab.id\"\n :panel-id=\"tab.panelId\"\n :label=\"tab.label\"\n aria-controls=\"d-emoji-picker-list\"\n :tabindex=\"index + 1\"\n @click.capture.stop=\"selectTabset(tab.id)\"\n @keydown=\"handleKeyDown($event, tab.id)\"\n >\n <component\n :is=\"tab.icon\"\n size=\"400\"\n />\n </dt-tab>\n </template>\n </dt-tab-group>\n </div>\n</template>\n\n<script setup>\nimport { computed, ref, watch } from 'vue';\nimport { DtTab, DtTabGroup } from '@/components/tab';\nimport { returnFirstEl } from '@/common/utils';\nimport { EMOJI_PICKER_CATEGORIES } from '@/components/emoji_picker/emoji_picker_constants.js';\nimport {\n DtIconClock,\n DtIconSatisfied,\n DtIconLivingThing,\n DtIconFood,\n DtIconObject,\n DtIconTransportation,\n DtIconLightbulb,\n DtIconHeart,\n DtIconFlag,\n} from '@dialpad/dialtone-icons/vue3';\n\nconst props = defineProps({\n /**\n * Whether to show the recently used tab or not\n * @type {Boolean}\n * @default false\n */\n showRecentlyUsedTab: {\n type: Boolean,\n default: false,\n },\n\n scrollIntoTab: {\n type: Number,\n required: true,\n },\n\n emojiFilter: {\n type: String,\n default: '',\n },\n\n /**\n * The labels for the aria-label\n * @type {Array}\n * @required\n */\n tabsetLabels: {\n type: Array,\n required: true,\n },\n});\n\nconst emits = defineEmits([\n /**\n * Emitted when a tab is selected\n * @event selected-tabset\n * @param {String} tabId - The name of the tab that was selected\n */\n 'selected-tabset',\n\n 'focus-search-input',\n 'focus-skin-selector',\n]);\n\nconst TABS_DATA = [\n { label: EMOJI_PICKER_CATEGORIES.MOST_RECENTLY_USED, icon: DtIconClock },\n { label: EMOJI_PICKER_CATEGORIES.SMILEYS_AND_PEOPLE, icon: DtIconSatisfied },\n { label: EMOJI_PICKER_CATEGORIES.NATURE, icon: DtIconLivingThing },\n { label: EMOJI_PICKER_CATEGORIES.FOOD, icon: DtIconFood },\n { label: EMOJI_PICKER_CATEGORIES.ACTIVITY, icon: DtIconObject },\n { label: EMOJI_PICKER_CATEGORIES.TRAVEL, icon: DtIconTransportation },\n { label: EMOJI_PICKER_CATEGORIES.OBJECTS, icon: DtIconLightbulb },\n { label: EMOJI_PICKER_CATEGORIES.SYMBOLS, icon: DtIconHeart },\n { label: EMOJI_PICKER_CATEGORIES.FLAGS, icon: DtIconFlag },\n];\n\nconst tabs = computed(() => {\n const tabsData = props.showRecentlyUsedTab ? TABS_DATA : TABS_DATA.slice(1);\n\n return tabsData.map((tab, index) => ({\n ...tab,\n label: props.tabsetLabels[index],\n // IDs on dt-tab component need to be on string\n id: (index + 1).toString(),\n panelId: (index + 1).toString(),\n }));\n});\n\nconst isSearching = computed(() => props.emojiFilter.length > 0);\n\nconst selectedTab = ref('1');\n\nconst tabsetRef = ref([]);\n\nwatch(() => props.scrollIntoTab,\n () => {\n if (!isSearching.value) {\n selectedTab.value = (props.scrollIntoTab + 1).toString();\n }\n });\n\nwatch(isSearching,\n () => {\n if (isSearching.value) {\n selectedTab.value = null;\n }\n });\n\n/**\n * We are using .capture.stop modifiers on the click event\n * because we don't want to trigger the click event of the\n * dt-tab component\n */\nfunction selectTabset (id) {\n // IDs on scrollToTab need to be on number\n const parseId = parseInt(id);\n // IDs on dt-tab component need to be on string\n selectedTab.value = id;\n emits('selected-tabset', parseId);\n}\n\nfunction setTabsetRef (ref) {\n // We push the $el, because $el is the button inside the dt-tab component\n // and we need the button to focus it\n tabsetRef.value.push(returnFirstEl(ref.$el));\n}\n\nfunction focusTabset () {\n tabsetRef.value[0].focus();\n}\n\nfunction handleKeyDown (event, tabId) {\n if (event.key === 'Enter') {\n selectTabset(tabId);\n // We blur because seems like the tab component override the selected prop, and it removes the selected style\n tabsetRef.value[tabId - 1].blur();\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n emits('focus-skin-selector');\n } else {\n emits('focus-search-input');\n }\n }\n\n if (event.key === 'ArrowDown') {\n // Jump to search input\n emits('focus-search-input');\n }\n}\n\ndefineExpose({\n focusTabset,\n});\n</script>\n"],"names":["EMOJI_PICKER_CATEGORIES","DtIconClock","DtIconSatisfied","DtIconLivingThing","DtIconFood","DtIconObject","DtIconTransportation","DtIconLightbulb","DtIconHeart","DtIconFlag","computed","tab","ref","watch","returnFirstEl"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,UAAM,QAAQ;AAgCd,UAAM,QAAQ;AAYd,UAAM,YAAY;AAAA,MAChB,EAAE,OAAOA,uBAAuB,wBAAC,oBAAoB,MAAMC,KAAAA,YAAa;AAAA,MACxE,EAAE,OAAOD,uBAAuB,wBAAC,oBAAoB,MAAME,KAAAA,gBAAiB;AAAA,MAC5E,EAAE,OAAOF,uBAAuB,wBAAC,QAAQ,MAAMG,KAAAA,kBAAmB;AAAA,MAClE,EAAE,OAAOH,uBAAuB,wBAAC,MAAM,MAAMI,KAAAA,WAAY;AAAA,MACzD,EAAE,OAAOJ,uBAAuB,wBAAC,UAAU,MAAMK,KAAAA,aAAc;AAAA,MAC/D,EAAE,OAAOL,uBAAuB,wBAAC,QAAQ,MAAMM,KAAAA,qBAAsB;AAAA,MACrE,EAAE,OAAON,uBAAuB,wBAAC,SAAS,MAAMO,KAAAA,gBAAiB;AAAA,MACjE,EAAE,OAAOP,uBAAuB,wBAAC,SAAS,MAAMQ,KAAAA,YAAa;AAAA,MAC7D,EAAE,OAAOR,uBAAuB,wBAAC,OAAO,MAAMS,KAAAA,WAAY;AAAA,IAC5D;AAEA,UAAM,OAAOC,IAAQ,SAAC,MAAM;AAC1B,YAAM,WAAW,MAAM,sBAAsB,YAAY,UAAU,MAAM,CAAC;AAE1E,aAAO,SAAS,IAAI,CAACC,MAAK,WAAW;AAAA,QACnC,GAAGA;AAAA,QACH,OAAO,MAAM,aAAa,KAAK;AAAA;AAAA,QAE/B,KAAK,QAAQ,GAAG,SAAU;AAAA,QAC1B,UAAU,QAAQ,GAAG,SAAU;AAAA,MAChC,EAAC;AAAA,IACJ,CAAC;AAED,UAAM,cAAcD,IAAQ,SAAC,MAAM,MAAM,YAAY,SAAS,CAAC;AAE/D,UAAM,cAAcE,IAAAA,IAAI,GAAG;AAE3B,UAAM,YAAYA,IAAAA,IAAI,CAAA,CAAE;AAExBC,QAAAA;AAAAA,MAAM,MAAM,MAAM;AAAA,MAChB,MAAM;AACJ,YAAI,CAAC,YAAY,OAAO;AACtB,sBAAY,SAAS,MAAM,gBAAgB,GAAG;QAC/C;AAAA,MACL;AAAA,IAAG;AAEHA,QAAAA;AAAAA,MAAM;AAAA,MACJ,MAAM;AACJ,YAAI,YAAY,OAAO;AACrB,sBAAY,QAAQ;AAAA,QACrB;AAAA,MACL;AAAA,IAAG;AAOH,aAAS,aAAc,IAAI;AAEzB,YAAM,UAAU,SAAS,EAAE;AAE3B,kBAAY,QAAQ;AACpB,YAAM,mBAAmB,OAAO;AAAA,IAClC;AAEA,aAAS,aAAc,KAAK;AAG1B,gBAAU,MAAM,KAAKC,aAAa,cAAC,IAAI,GAAG,CAAC;AAAA,IAC7C;AAEA,aAAS,cAAe;AACtB,gBAAU,MAAM,CAAC,EAAE,MAAK;AAAA,IAC1B;AAEA,aAAS,cAAe,OAAO,OAAO;AACpC,UAAI,MAAM,QAAQ,SAAS;AACzB,qBAAa,KAAK;AAElB,kBAAU,MAAM,QAAQ,CAAC,EAAE,KAAI;AAAA,MAChC;AAED,UAAI,MAAM,QAAQ,OAAO;AACvB,cAAM,eAAc;AACpB,YAAI,MAAM,UAAU;AAClB,gBAAM,qBAAqB;AAAA,QACjC,OAAW;AACL,gBAAM,oBAAoB;AAAA,QAC3B;AAAA,MACF;AAED,UAAI,MAAM,QAAQ,aAAa;AAE7B,cAAM,oBAAoB;AAAA,MAC3B;AAAA,IACH;AAEA,aAAa;AAAA,MACX;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}