@dialpad/dialtone 9.151.0 → 9.153.9

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 (188) hide show
  1. package/README.md +1 -34
  2. package/dist/css/dialtone-default-theme.css +8 -2
  3. package/dist/css/dialtone-default-theme.min.css +1 -1
  4. package/dist/css/dialtone.css +8 -2
  5. package/dist/css/dialtone.min.css +1 -1
  6. package/dist/tokens/css/tokens-botany-dark.css +1 -1
  7. package/dist/tokens/css/tokens-buttercream-dark.css +1 -1
  8. package/dist/tokens/css/tokens-deca-light.css +3 -3
  9. package/dist/tokens/css/tokens-dp-dark.css +1 -1
  10. package/dist/tokens/css/tokens-expressive-dark.css +1 -1
  11. package/dist/tokens/css/tokens-expressive-sm-dark.css +1 -1
  12. package/dist/tokens/css/tokens-high-desert-dark.css +1 -1
  13. package/dist/tokens/css/tokens-plum-dark.css +1 -1
  14. package/dist/tokens/css/tokens-sunflower-dark.css +1 -1
  15. package/dist/tokens/css/tokens-tmo-dark.css +2 -2
  16. package/dist/tokens/doc.json +78308 -78308
  17. package/dist/tokens/themes/botany-dark.cjs +1 -1
  18. package/dist/tokens/themes/botany-dark.js +1 -1
  19. package/dist/tokens/themes/buttercream-dark.cjs +1 -1
  20. package/dist/tokens/themes/buttercream-dark.js +1 -1
  21. package/dist/tokens/themes/dp-dark.cjs +1 -1
  22. package/dist/tokens/themes/dp-dark.js +1 -1
  23. package/dist/tokens/themes/dp-deca-light.cjs +1 -1
  24. package/dist/tokens/themes/dp-deca-light.js +1 -1
  25. package/dist/tokens/themes/expressive-dark.cjs +1 -1
  26. package/dist/tokens/themes/expressive-dark.js +1 -1
  27. package/dist/tokens/themes/high-desert-dark.cjs +1 -1
  28. package/dist/tokens/themes/high-desert-dark.js +1 -1
  29. package/dist/tokens/themes/plum-dark.cjs +1 -1
  30. package/dist/tokens/themes/plum-dark.js +1 -1
  31. package/dist/tokens/themes/sunflower-dark.cjs +1 -1
  32. package/dist/tokens/themes/sunflower-dark.js +1 -1
  33. package/dist/tokens/themes/tmo-dark.cjs +1 -1
  34. package/dist/tokens/themes/tmo-dark.js +1 -1
  35. package/dist/vue2/lib/tab/tab-group.cjs +1 -1
  36. package/dist/vue2/lib/tab/tab-group.cjs.map +1 -1
  37. package/dist/vue2/lib/tab/tab-group.js +4 -4
  38. package/dist/vue2/lib/tab/tab-group.js.map +1 -1
  39. package/dist/vue2/localization/index.cjs +1 -1
  40. package/dist/vue2/localization/index.cjs.map +1 -1
  41. package/dist/vue2/localization/index.js +46 -42
  42. package/dist/vue2/localization/index.js.map +1 -1
  43. package/dist/vue2/types/common/sr_only_close_button.vue.d.ts +2 -3
  44. package/dist/vue2/types/common/sr_only_close_button.vue.d.ts.map +1 -1
  45. package/dist/vue2/types/components/breadcrumbs/breadcrumbs.vue.d.ts +1 -2
  46. package/dist/vue2/types/components/breadcrumbs/breadcrumbs.vue.d.ts.map +1 -1
  47. package/dist/vue2/types/components/button/button.vue.d.ts +1 -2
  48. package/dist/vue2/types/components/button/button.vue.d.ts.map +1 -1
  49. package/dist/vue2/types/components/chip/chip.vue.d.ts +2 -3
  50. package/dist/vue2/types/components/chip/chip.vue.d.ts.map +1 -1
  51. package/dist/vue2/types/components/datepicker/modules/calendar.vue.d.ts +1 -2
  52. package/dist/vue2/types/components/datepicker/modules/calendar.vue.d.ts.map +1 -1
  53. package/dist/vue2/types/components/datepicker/modules/month-year-picker.vue.d.ts +1 -2
  54. package/dist/vue2/types/components/datepicker/modules/month-year-picker.vue.d.ts.map +1 -1
  55. package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts +2 -3
  56. package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  57. package/dist/vue2/types/components/loader/loader.vue.d.ts +1 -2
  58. package/dist/vue2/types/components/loader/loader.vue.d.ts.map +1 -1
  59. package/dist/vue2/types/components/modal/modal.vue.d.ts +2 -3
  60. package/dist/vue2/types/components/modal/modal.vue.d.ts.map +1 -1
  61. package/dist/vue2/types/components/notice/notice_action.vue.d.ts +2 -3
  62. package/dist/vue2/types/components/notice/notice_action.vue.d.ts.map +1 -1
  63. package/dist/vue2/types/components/pagination/pagination.vue.d.ts +3 -4
  64. package/dist/vue2/types/components/pagination/pagination.vue.d.ts.map +1 -1
  65. package/dist/vue2/types/components/popover/popover_header_footer.vue.d.ts +2 -3
  66. package/dist/vue2/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
  67. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +1 -2
  68. package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  69. package/dist/vue2/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +2 -3
  70. package/dist/vue2/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
  71. package/dist/vue2/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +2 -3
  72. package/dist/vue2/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
  73. package/dist/vue2/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +3 -4
  74. package/dist/vue2/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
  75. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +1 -2
  76. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
  77. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +2 -3
  78. package/dist/vue2/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts.map +1 -1
  79. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts +14 -15
  80. package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  81. package/dist/vue2/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +2 -3
  82. package/dist/vue2/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
  83. package/dist/vue2/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +2 -3
  84. package/dist/vue2/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
  85. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts +5 -6
  86. package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  87. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +8 -9
  88. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
  89. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +9 -10
  90. package/dist/vue2/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
  91. package/dist/vue2/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +2 -3
  92. package/dist/vue2/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
  93. package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts +2 -3
  94. package/dist/vue2/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  95. package/dist/vue2/types/recipes/leftbar/group_row/group_row.vue.d.ts +1 -2
  96. package/dist/vue2/types/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
  97. package/dist/vue2/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts +2 -3
  98. package/dist/vue2/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts.map +1 -1
  99. package/dist/vue3/component-documentation.json +1 -1
  100. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  101. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  102. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js +100 -93
  103. package/dist/vue3/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  104. package/dist/vue3/lib/radio/radio.cjs +1 -1
  105. package/dist/vue3/lib/radio/radio.cjs.map +1 -1
  106. package/dist/vue3/lib/radio/radio.js +7 -14
  107. package/dist/vue3/lib/radio/radio.js.map +1 -1
  108. package/dist/vue3/lib/rich-text-editor/mention-suggestion.cjs +1 -1
  109. package/dist/vue3/lib/rich-text-editor/mention-suggestion.cjs.map +1 -1
  110. package/dist/vue3/lib/rich-text-editor/mention-suggestion.js +12 -2
  111. package/dist/vue3/lib/rich-text-editor/mention-suggestion.js.map +1 -1
  112. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs +4 -4
  113. package/dist/vue3/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  114. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js +95 -73
  115. package/dist/vue3/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  116. package/dist/vue3/lib/tab/tab-group.cjs +1 -1
  117. package/dist/vue3/lib/tab/tab-group.cjs.map +1 -1
  118. package/dist/vue3/lib/tab/tab-group.js +1 -1
  119. package/dist/vue3/lib/tab/tab-group.js.map +1 -1
  120. package/dist/vue3/lib/tooltip-directive/tooltip.cjs +1 -1
  121. package/dist/vue3/lib/tooltip-directive/tooltip.cjs.map +1 -1
  122. package/dist/vue3/lib/tooltip-directive/tooltip.js +21 -21
  123. package/dist/vue3/lib/tooltip-directive/tooltip.js.map +1 -1
  124. package/dist/vue3/localization/index.cjs +1 -1
  125. package/dist/vue3/localization/index.cjs.map +1 -1
  126. package/dist/vue3/localization/index.js +48 -46
  127. package/dist/vue3/localization/index.js.map +1 -1
  128. package/dist/vue3/types/common/sr_only_close_button.vue.d.ts +2 -3
  129. package/dist/vue3/types/common/sr_only_close_button.vue.d.ts.map +1 -1
  130. package/dist/vue3/types/components/breadcrumbs/breadcrumbs.vue.d.ts +1 -2
  131. package/dist/vue3/types/components/breadcrumbs/breadcrumbs.vue.d.ts.map +1 -1
  132. package/dist/vue3/types/components/button/button.vue.d.ts +1 -2
  133. package/dist/vue3/types/components/button/button.vue.d.ts.map +1 -1
  134. package/dist/vue3/types/components/chip/chip.vue.d.ts +2 -3
  135. package/dist/vue3/types/components/chip/chip.vue.d.ts.map +1 -1
  136. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts +2 -3
  137. package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  138. package/dist/vue3/types/components/modal/modal.vue.d.ts +2 -3
  139. package/dist/vue3/types/components/modal/modal.vue.d.ts.map +1 -1
  140. package/dist/vue3/types/components/notice/notice_action.vue.d.ts +2 -3
  141. package/dist/vue3/types/components/notice/notice_action.vue.d.ts.map +1 -1
  142. package/dist/vue3/types/components/pagination/pagination.vue.d.ts +3 -4
  143. package/dist/vue3/types/components/pagination/pagination.vue.d.ts.map +1 -1
  144. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts +2 -3
  145. package/dist/vue3/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
  146. package/dist/vue3/types/components/radio/radio.vue.d.ts +1 -2
  147. package/dist/vue3/types/components/radio/radio.vue.d.ts.map +1 -1
  148. package/dist/vue3/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +3 -1
  149. package/dist/vue3/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts.map +1 -1
  150. package/dist/vue3/types/components/rich_text_editor/mention_suggestion.d.ts +3 -0
  151. package/dist/vue3/types/components/rich_text_editor/mention_suggestion.d.ts.map +1 -1
  152. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +3 -3
  153. package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
  154. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +2 -3
  155. package/dist/vue3/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
  156. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +2 -3
  157. package/dist/vue3/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
  158. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +3 -4
  159. package/dist/vue3/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
  160. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +1 -2
  161. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
  162. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +2 -3
  163. package/dist/vue3/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts.map +1 -1
  164. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +14 -15
  165. package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts.map +1 -1
  166. package/dist/vue3/types/recipes/conversation_view/emoji_row/composables/useMockReactions.d.ts +2 -0
  167. package/dist/vue3/types/recipes/conversation_view/emoji_row/composables/useMockReactions.d.ts.map +1 -0
  168. package/dist/vue3/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +2 -3
  169. package/dist/vue3/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
  170. package/dist/vue3/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +2 -3
  171. package/dist/vue3/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
  172. package/dist/vue3/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +2 -3
  173. package/dist/vue3/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts.map +1 -1
  174. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +5 -6
  175. package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts.map +1 -1
  176. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +8 -9
  177. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
  178. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +9 -10
  179. package/dist/vue3/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
  180. package/dist/vue3/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +2 -3
  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 +2 -3
  183. package/dist/vue3/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  184. package/dist/vue3/types/recipes/leftbar/group_row/group_row.vue.d.ts +1 -2
  185. package/dist/vue3/types/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
  186. package/dist/vue3/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts +2 -3
  187. package/dist/vue3/types/recipes/leftbar/unread_pill/unread_pill.vue.d.ts.map +1 -1
  188. package/package.json +4 -4
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./tabs-constants.cjs"),a=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),r={name:"DtTabGroup",provide(){return{groupContext:this.provideObj,setFocus:this.setFocus}},props:{label:{type:String,default:""},selected:{type:String,default:""},disabled:{type:Boolean,default:!1},inverted:{type:Boolean,default:!1},borderless:{type:Boolean,default:!1},size:{type:String,default:"default",validate(t){return i.TAB_LIST_SIZES.includes(t)}},tabListClass:{type:[String,Array,Object],default:""},tabListChildProps:{type:Object,default:()=>({})}},emits:["change","before-change"],data(){return{provideObj:{selected:"",disabled:!1},focusId:null,tabs:[],TAB_LIST_SIZE_MODIFIERS:i.TAB_LIST_SIZE_MODIFIERS,TAB_LIST_KIND_MODIFIERS:i.TAB_LIST_KIND_MODIFIERS,TAB_LIST_IMPORTANCE_MODIFIERS:i.TAB_LIST_IMPORTANCE_MODIFIERS}},watch:{disabled:{immediate:!0,handler(){this.provideObj.disabled=this.disabled}},selected:{immediate:!0,handler(){this.provideObj.selected=this.selected}}},mounted(){this.updateSelected()},beforeUpdate(){this.updateSelected()},methods:{updateSelected(){this.provideObj.selected||(this.provideObj.selected=this.selected),this.tabs=this.getTabChildren()},setFocus(t){this.focusId=t},getTabChildren(){return Array.from(this.$el.querySelectorAll(".d-tab")).map(t=>{var e,n;return{context:t,panelId:(e=t.getAttribute("aria-controls"))==null?void 0:e.replace("dt-panel-",""),tabId:(n=t.getAttribute("id"))==null?void 0:n.replace("dt-tab-",""),isSelected:t.getAttribute("aria-selected")==="true"}})},onChange(){this.$emit("change",{...this.provideObj})},tabLeft(){const t=this.getFocusedTabIndex();if(t===-1)return;const e=t-1<0?this.tabs.length-1:t-1;this.selectFocusOnTab(e)},tabRight(){const t=this.getFocusedTabIndex();if(t===-1)return;const e=t+1>this.tabs.length-1?0:t+1;this.selectFocusOnTab(e)},selectFocusOnTab(t){const{context:e}=this.tabs[t];e.focus()},selectTab(t){if(this.isSameTabClicked()||(this.$emit("before-change",t),t.defaultPrevented))return;const e=this.getFocusedTabIndex();this.selectTabByIndex(e),this.onChange()},selectTabByIndex(t){const{context:e,panelId:n}=this.tabs[t];this.provideObj.selected=n,e.focus()},getFocusedTabIndex(){const t=this.tabs.findIndex(e=>this.focusId?e.tabId===`${this.focusId}`:e.isSelected);return t===-1?0:t},onHomeButton(){var t,e;this.tabs.length!==0&&((e=(t=this.tabs[0])==null?void 0:t.context)==null||e.focus())},onEndButton(){var t,e;this.tabs.length!==0&&((e=(t=this.tabs[this.tabs.length-1])==null?void 0:t.context)==null||e.focus())},isSameTabClicked(){const t=this.tabs[this.getFocusedTabIndex()];return this.provideObj.selected===t.panelId}}};var d=function(){var e=this,n=e._self._c;return n("div",{attrs:{"data-qa":"dt-tab-group"}},[n("div",e._b({class:["d-tablist",e.TAB_LIST_SIZE_MODIFIERS[e.size],{[e.TAB_LIST_KIND_MODIFIERS.inverted]:e.inverted,[e.TAB_LIST_IMPORTANCE_MODIFIERS.borderless]:e.borderless},e.tabListClass],attrs:{role:"tablist","aria-label":e.label},on:{keyup:[function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"left",37,s.key,["Left","ArrowLeft"])||"button"in s&&s.button!==0?null:e.tabLeft.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"right",39,s.key,["Right","ArrowRight"])||"button"in s&&s.button!==2?null:e.tabRight.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"enter",13,s.key,"Enter")?null:e.selectTab.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"space",32,s.key,[" ","Spacebar"])?null:e.selectTab.apply(null,arguments)}],click:e.selectTab,keydown:[function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"home",void 0,s.key,void 0)?null:e.onHomeButton.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"end",void 0,s.key,void 0)?null:e.onEndButton.apply(null,arguments)}]}},"div",e.tabListChildProps,!1),[e._t("tabs")],2),e._t("default")],2)},l=[],u=a.n(r,d,l);const o=u.exports;exports.default=o;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("./tabs-constants.cjs"),a=require("../../_plugin-vue2_normalizer-e_CkxkSV.cjs"),r={name:"DtTabGroup",provide(){return{groupContext:this.provideObj,setFocus:this.setFocus}},props:{label:{type:String,default:""},selected:{type:String,default:""},disabled:{type:Boolean,default:!1},inverted:{type:Boolean,default:!1},borderless:{type:Boolean,default:!1},size:{type:String,default:"default",validate(t){return i.TAB_LIST_SIZES.includes(t)}},tabListClass:{type:[String,Array,Object],default:""},tabListChildProps:{type:Object,default:()=>({})}},emits:["change","before-change"],data(){return{provideObj:{selected:"",disabled:!1},focusId:null,tabs:[],TAB_LIST_SIZE_MODIFIERS:i.TAB_LIST_SIZE_MODIFIERS,TAB_LIST_KIND_MODIFIERS:i.TAB_LIST_KIND_MODIFIERS,TAB_LIST_IMPORTANCE_MODIFIERS:i.TAB_LIST_IMPORTANCE_MODIFIERS}},watch:{disabled:{immediate:!0,handler(){this.provideObj.disabled=this.disabled}},selected:{immediate:!0,handler(){this.provideObj.selected=this.selected}}},mounted(){this.updateSelected()},updated(){this.updateSelected()},methods:{updateSelected(){this.provideObj.selected||(this.provideObj.selected=this.selected),this.tabs=this.getTabChildren()},setFocus(t){this.focusId=t},getTabChildren(){return Array.from(this.$el.querySelectorAll(".d-tab")).map(t=>{var e,n;return{context:t,panelId:(e=t.getAttribute("aria-controls"))==null?void 0:e.replace("dt-panel-",""),tabId:(n=t.getAttribute("id"))==null?void 0:n.replace("dt-tab-",""),isSelected:t.getAttribute("aria-selected")==="true"}})},onChange(){this.$emit("change",{...this.provideObj})},tabLeft(){const t=this.getFocusedTabIndex();if(t===-1)return;const e=t-1<0?this.tabs.length-1:t-1;this.selectFocusOnTab(e)},tabRight(){const t=this.getFocusedTabIndex();if(t===-1)return;const e=t+1>this.tabs.length-1?0:t+1;this.selectFocusOnTab(e)},selectFocusOnTab(t){const{context:e}=this.tabs[t];e.focus()},selectTab(t){if(this.isSameTabClicked()||(this.$emit("before-change",t),t.defaultPrevented))return;const e=this.getFocusedTabIndex();this.selectTabByIndex(e),this.onChange()},selectTabByIndex(t){const{context:e,panelId:n}=this.tabs[t];this.provideObj.selected=n,e.focus()},getFocusedTabIndex(){const t=this.tabs.findIndex(e=>this.focusId?e.tabId===`${this.focusId}`:e.isSelected);return t===-1?0:t},onHomeButton(){var t,e;this.tabs.length!==0&&((e=(t=this.tabs[0])==null?void 0:t.context)==null||e.focus())},onEndButton(){var t,e;this.tabs.length!==0&&((e=(t=this.tabs[this.tabs.length-1])==null?void 0:t.context)==null||e.focus())},isSameTabClicked(){const t=this.tabs[this.getFocusedTabIndex()];return this.provideObj.selected===t.panelId}}};var d=function(){var e=this,n=e._self._c;return n("div",{attrs:{"data-qa":"dt-tab-group"}},[n("div",e._b({class:["d-tablist",e.TAB_LIST_SIZE_MODIFIERS[e.size],{[e.TAB_LIST_KIND_MODIFIERS.inverted]:e.inverted,[e.TAB_LIST_IMPORTANCE_MODIFIERS.borderless]:e.borderless},e.tabListClass],attrs:{role:"tablist","aria-label":e.label},on:{keyup:[function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"left",37,s.key,["Left","ArrowLeft"])||"button"in s&&s.button!==0?null:e.tabLeft.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"right",39,s.key,["Right","ArrowRight"])||"button"in s&&s.button!==2?null:e.tabRight.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"enter",13,s.key,"Enter")?null:e.selectTab.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"space",32,s.key,[" ","Spacebar"])?null:e.selectTab.apply(null,arguments)}],click:e.selectTab,keydown:[function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"home",void 0,s.key,void 0)?null:e.onHomeButton.apply(null,arguments)},function(s){return!s.type.indexOf("key")&&e._k(s.keyCode,"end",void 0,s.key,void 0)?null:e.onEndButton.apply(null,arguments)}]}},"div",e.tabListChildProps,!1),[e._t("tabs")],2),e._t("default")],2)},l=[],u=a.n(r,d,l);const o=u.exports;exports.default=o;
2
2
  //# sourceMappingURL=tab-group.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-group.cjs","sources":["../../../components/tab/tab_group.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-tab-group\"\n >\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -->\n <div\n :class=\"[\n 'd-tablist',\n TAB_LIST_SIZE_MODIFIERS[size],\n {\n [TAB_LIST_KIND_MODIFIERS.inverted]: inverted,\n [TAB_LIST_IMPORTANCE_MODIFIERS.borderless]: borderless,\n },\n tabListClass,\n ]\"\n v-bind=\"tabListChildProps\"\n role=\"tablist\"\n :aria-label=\"label\"\n @keyup.left=\"tabLeft\"\n @keyup.right=\"tabRight\"\n @keyup.enter=\"selectTab\"\n @keyup.space=\"selectTab\"\n @click=\"selectTab\"\n @keydown.home=\"onHomeButton\"\n @keydown.end=\"onEndButton\"\n >\n <!-- @slot Slot for Tabs -->\n <slot name=\"tabs\" />\n </div>\n <!-- @slot Default slot for Panel -->\n <slot />\n </div>\n</template>\n\n<script>\nimport {\n TAB_LIST_SIZES,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n TAB_LIST_SIZE_MODIFIERS,\n} from './tabs_constants';\n\n/**\n * Tabs allow users to navigation between grouped content in different views while within the same page context.\n * @see https://dialtone.dialpad.com/components/tabs.html\n */\nexport default {\n name: 'DtTabGroup',\n\n provide () {\n return {\n groupContext: this.provideObj,\n setFocus: this.setFocus,\n };\n },\n\n props: {\n /**\n * Identifies the tab group\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * The id of the selected tab panel which should be displayed\n */\n selected: {\n type: String,\n default: '',\n },\n\n /**\n * If true, disables the tab group\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies inverted styles to the tab group\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies borderless styles to the tab group\n * @values true, false\n */\n borderless: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If provided, applies size styles to the tab group\n * @values default, sm\n */\n size: {\n type: String,\n default: 'default',\n validate (size) {\n return TAB_LIST_SIZES.includes(size);\n },\n },\n\n /**\n * Pass through classes, used to customize the tab list\n */\n tabListClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through props, used to customize the tab list\n */\n tabListChildProps: {\n type: Object,\n default: () => ({}),\n },\n },\n\n emits: [\n /**\n * Change tab event with the arguments: selected id of the current tab and disabled value\n *\n * @event change\n * @type {Object}\n */\n 'change',\n\n /**\n * Before change tab event with the event argument, useful to perform validations and prevent changing tabs if neccessary.\n *\n * @event before-change\n * @type {Event}\n */\n 'before-change',\n ],\n\n data () {\n return {\n provideObj: {\n selected: '', // the currently displayed tab id\n disabled: false, // disable group\n },\n\n focusId: null,\n tabs: [],\n TAB_LIST_SIZE_MODIFIERS,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n };\n },\n\n watch: {\n disabled: {\n immediate: true,\n handler () {\n this.provideObj.disabled = this.disabled;\n },\n },\n\n selected: {\n immediate: true,\n handler () {\n this.provideObj.selected = this.selected;\n },\n },\n },\n\n mounted () {\n this.updateSelected();\n },\n\n beforeUpdate () {\n this.updateSelected();\n },\n\n methods: {\n updateSelected () {\n /**\n * Prevent override tab selected by default\n */\n if (!this.provideObj.selected) {\n this.provideObj.selected = this.selected;\n }\n this.tabs = this.getTabChildren();\n },\n\n setFocus (focusId) {\n this.focusId = focusId;\n },\n\n getTabChildren () {\n return Array.from(this.$el.querySelectorAll('.d-tab'))\n .map(el => {\n return ({\n context: el,\n panelId: el.getAttribute('aria-controls')?.replace('dt-panel-', ''),\n tabId: el.getAttribute('id')?.replace('dt-tab-', ''),\n isSelected: el.getAttribute('aria-selected') === 'true',\n });\n });\n },\n\n onChange () {\n this.$emit('change', { ...this.provideObj });\n },\n\n tabLeft () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const indexElement = index - 1 < 0 ? this.tabs.length - 1 : index - 1;\n this.selectFocusOnTab(indexElement);\n },\n\n tabRight () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const indexElement = index + 1 > this.tabs.length - 1 ? 0 : index + 1;\n this.selectFocusOnTab(indexElement);\n },\n\n selectFocusOnTab (index) {\n const { context } = this.tabs[index];\n context.focus();\n },\n\n selectTab (event) {\n if (this.isSameTabClicked()) return;\n\n this.$emit('before-change', event);\n if (event.defaultPrevented) return;\n\n const index = this.getFocusedTabIndex();\n\n this.selectTabByIndex(index);\n this.onChange();\n },\n\n selectTabByIndex (index) {\n const { context, panelId } = this.tabs[index];\n this.provideObj.selected = panelId;\n context.focus();\n },\n\n getFocusedTabIndex () {\n // Hot fix https://github.com/dialpad/dialtone/pull/849\n // The main issue is that this.tabs is not being updated at the time this is being triggered.\n\n const index = this.tabs.findIndex((context) =>\n this.focusId ? context.tabId === `${this.focusId}` : context.isSelected,\n );\n\n return index === -1 ? 0 : index;\n },\n\n onHomeButton () {\n if (this.tabs.length === 0) return;\n this.tabs[0]?.context?.focus();\n },\n\n onEndButton () {\n if (this.tabs.length === 0) return;\n this.tabs[this.tabs.length - 1]?.context?.focus();\n },\n\n isSameTabClicked () {\n const tab = this.tabs[this.getFocusedTabIndex()];\n return this.provideObj.selected === tab.panelId;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","size","TAB_LIST_SIZES","TAB_LIST_SIZE_MODIFIERS","TAB_LIST_KIND_MODIFIERS","TAB_LIST_IMPORTANCE_MODIFIERS","focusId","el","_a","_b","index","indexElement","context","event","panelId","tab"],"mappings":"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"}
1
+ {"version":3,"file":"tab-group.cjs","sources":["../../../components/tab/tab_group.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-tab-group\"\n >\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -->\n <div\n :class=\"[\n 'd-tablist',\n TAB_LIST_SIZE_MODIFIERS[size],\n {\n [TAB_LIST_KIND_MODIFIERS.inverted]: inverted,\n [TAB_LIST_IMPORTANCE_MODIFIERS.borderless]: borderless,\n },\n tabListClass,\n ]\"\n v-bind=\"tabListChildProps\"\n role=\"tablist\"\n :aria-label=\"label\"\n @keyup.left=\"tabLeft\"\n @keyup.right=\"tabRight\"\n @keyup.enter=\"selectTab\"\n @keyup.space=\"selectTab\"\n @click=\"selectTab\"\n @keydown.home=\"onHomeButton\"\n @keydown.end=\"onEndButton\"\n >\n <!-- @slot Slot for Tabs -->\n <slot name=\"tabs\" />\n </div>\n <!-- @slot Default slot for Panel -->\n <slot />\n </div>\n</template>\n\n<script>\nimport {\n TAB_LIST_SIZES,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n TAB_LIST_SIZE_MODIFIERS,\n} from './tabs_constants';\n\n/**\n * Tabs allow users to navigation between grouped content in different views while within the same page context.\n * @see https://dialtone.dialpad.com/components/tabs.html\n */\nexport default {\n name: 'DtTabGroup',\n\n provide () {\n return {\n groupContext: this.provideObj,\n setFocus: this.setFocus,\n };\n },\n\n props: {\n /**\n * Identifies the tab group\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * The id of the selected tab panel which should be displayed\n */\n selected: {\n type: String,\n default: '',\n },\n\n /**\n * If true, disables the tab group\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies inverted styles to the tab group\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies borderless styles to the tab group\n * @values true, false\n */\n borderless: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If provided, applies size styles to the tab group\n * @values default, sm\n */\n size: {\n type: String,\n default: 'default',\n validate (size) {\n return TAB_LIST_SIZES.includes(size);\n },\n },\n\n /**\n * Pass through classes, used to customize the tab list\n */\n tabListClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through props, used to customize the tab list\n */\n tabListChildProps: {\n type: Object,\n default: () => ({}),\n },\n },\n\n emits: [\n /**\n * Change tab event with the arguments: selected id of the current tab and disabled value\n *\n * @event change\n * @type {Object}\n */\n 'change',\n\n /**\n * Before change tab event with the event argument, useful to perform validations and prevent changing tabs if neccessary.\n *\n * @event before-change\n * @type {Event}\n */\n 'before-change',\n ],\n\n data () {\n return {\n provideObj: {\n selected: '', // the currently displayed tab id\n disabled: false, // disable group\n },\n\n focusId: null,\n tabs: [],\n TAB_LIST_SIZE_MODIFIERS,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n };\n },\n\n watch: {\n disabled: {\n immediate: true,\n handler () {\n this.provideObj.disabled = this.disabled;\n },\n },\n\n selected: {\n immediate: true,\n handler () {\n this.provideObj.selected = this.selected;\n },\n },\n },\n\n mounted () {\n this.updateSelected();\n },\n\n updated () {\n this.updateSelected();\n },\n\n methods: {\n updateSelected () {\n /**\n * Prevent override tab selected by default\n */\n if (!this.provideObj.selected) {\n this.provideObj.selected = this.selected;\n }\n this.tabs = this.getTabChildren();\n },\n\n setFocus (focusId) {\n this.focusId = focusId;\n },\n\n getTabChildren () {\n return Array.from(this.$el.querySelectorAll('.d-tab'))\n .map(el => {\n return ({\n context: el,\n panelId: el.getAttribute('aria-controls')?.replace('dt-panel-', ''),\n tabId: el.getAttribute('id')?.replace('dt-tab-', ''),\n isSelected: el.getAttribute('aria-selected') === 'true',\n });\n });\n },\n\n onChange () {\n this.$emit('change', { ...this.provideObj });\n },\n\n tabLeft () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const indexElement = index - 1 < 0 ? this.tabs.length - 1 : index - 1;\n this.selectFocusOnTab(indexElement);\n },\n\n tabRight () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const indexElement = index + 1 > this.tabs.length - 1 ? 0 : index + 1;\n this.selectFocusOnTab(indexElement);\n },\n\n selectFocusOnTab (index) {\n const { context } = this.tabs[index];\n context.focus();\n },\n\n selectTab (event) {\n if (this.isSameTabClicked()) return;\n\n this.$emit('before-change', event);\n if (event.defaultPrevented) return;\n\n const index = this.getFocusedTabIndex();\n\n this.selectTabByIndex(index);\n this.onChange();\n },\n\n selectTabByIndex (index) {\n const { context, panelId } = this.tabs[index];\n this.provideObj.selected = panelId;\n context.focus();\n },\n\n getFocusedTabIndex () {\n const index = this.tabs.findIndex((context) =>\n this.focusId ? context.tabId === `${this.focusId}` : context.isSelected,\n );\n\n // Safe guard if tab is not found\n return index === -1 ? 0 : index;\n },\n\n onHomeButton () {\n if (this.tabs.length === 0) return;\n this.tabs[0]?.context?.focus();\n },\n\n onEndButton () {\n if (this.tabs.length === 0) return;\n this.tabs[this.tabs.length - 1]?.context?.focus();\n },\n\n isSameTabClicked () {\n const tab = this.tabs[this.getFocusedTabIndex()];\n return this.provideObj.selected === tab.panelId;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","size","TAB_LIST_SIZES","TAB_LIST_SIZE_MODIFIERS","TAB_LIST_KIND_MODIFIERS","TAB_LIST_IMPORTANCE_MODIFIERS","focusId","el","_a","_b","index","indexElement","context","event","panelId","tab"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { TAB_LIST_IMPORTANCE_MODIFIERS as i, TAB_LIST_KIND_MODIFIERS as a, TAB_LIST_SIZE_MODIFIERS as r, TAB_LIST_SIZES as d } from "./tabs-constants.js";
2
2
  import { n as l } from "../../_plugin-vue2_normalizer-DSLOjnn3.js";
3
- const o = {
3
+ const u = {
4
4
  name: "DtTabGroup",
5
5
  provide() {
6
6
  return {
@@ -121,7 +121,7 @@ const o = {
121
121
  mounted() {
122
122
  this.updateSelected();
123
123
  },
124
- beforeUpdate() {
124
+ updated() {
125
125
  this.updateSelected();
126
126
  },
127
127
  methods: {
@@ -190,7 +190,7 @@ const o = {
190
190
  }
191
191
  }
192
192
  };
193
- var u = function() {
193
+ var o = function() {
194
194
  var e = this, n = e._self._c;
195
195
  return n("div", { attrs: { "data-qa": "dt-tab-group" } }, [n("div", e._b({ class: [
196
196
  "d-tablist",
@@ -214,8 +214,8 @@ var u = function() {
214
214
  return !s.type.indexOf("key") && e._k(s.keyCode, "end", void 0, s.key, void 0) ? null : e.onEndButton.apply(null, arguments);
215
215
  }] } }, "div", e.tabListChildProps, !1), [e._t("tabs")], 2), e._t("default")], 2);
216
216
  }, c = [], b = /* @__PURE__ */ l(
217
- o,
218
217
  u,
218
+ o,
219
219
  c
220
220
  );
221
221
  const p = b.exports;
@@ -1 +1 @@
1
- {"version":3,"file":"tab-group.js","sources":["../../../components/tab/tab_group.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-tab-group\"\n >\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -->\n <div\n :class=\"[\n 'd-tablist',\n TAB_LIST_SIZE_MODIFIERS[size],\n {\n [TAB_LIST_KIND_MODIFIERS.inverted]: inverted,\n [TAB_LIST_IMPORTANCE_MODIFIERS.borderless]: borderless,\n },\n tabListClass,\n ]\"\n v-bind=\"tabListChildProps\"\n role=\"tablist\"\n :aria-label=\"label\"\n @keyup.left=\"tabLeft\"\n @keyup.right=\"tabRight\"\n @keyup.enter=\"selectTab\"\n @keyup.space=\"selectTab\"\n @click=\"selectTab\"\n @keydown.home=\"onHomeButton\"\n @keydown.end=\"onEndButton\"\n >\n <!-- @slot Slot for Tabs -->\n <slot name=\"tabs\" />\n </div>\n <!-- @slot Default slot for Panel -->\n <slot />\n </div>\n</template>\n\n<script>\nimport {\n TAB_LIST_SIZES,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n TAB_LIST_SIZE_MODIFIERS,\n} from './tabs_constants';\n\n/**\n * Tabs allow users to navigation between grouped content in different views while within the same page context.\n * @see https://dialtone.dialpad.com/components/tabs.html\n */\nexport default {\n name: 'DtTabGroup',\n\n provide () {\n return {\n groupContext: this.provideObj,\n setFocus: this.setFocus,\n };\n },\n\n props: {\n /**\n * Identifies the tab group\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * The id of the selected tab panel which should be displayed\n */\n selected: {\n type: String,\n default: '',\n },\n\n /**\n * If true, disables the tab group\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies inverted styles to the tab group\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies borderless styles to the tab group\n * @values true, false\n */\n borderless: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If provided, applies size styles to the tab group\n * @values default, sm\n */\n size: {\n type: String,\n default: 'default',\n validate (size) {\n return TAB_LIST_SIZES.includes(size);\n },\n },\n\n /**\n * Pass through classes, used to customize the tab list\n */\n tabListClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through props, used to customize the tab list\n */\n tabListChildProps: {\n type: Object,\n default: () => ({}),\n },\n },\n\n emits: [\n /**\n * Change tab event with the arguments: selected id of the current tab and disabled value\n *\n * @event change\n * @type {Object}\n */\n 'change',\n\n /**\n * Before change tab event with the event argument, useful to perform validations and prevent changing tabs if neccessary.\n *\n * @event before-change\n * @type {Event}\n */\n 'before-change',\n ],\n\n data () {\n return {\n provideObj: {\n selected: '', // the currently displayed tab id\n disabled: false, // disable group\n },\n\n focusId: null,\n tabs: [],\n TAB_LIST_SIZE_MODIFIERS,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n };\n },\n\n watch: {\n disabled: {\n immediate: true,\n handler () {\n this.provideObj.disabled = this.disabled;\n },\n },\n\n selected: {\n immediate: true,\n handler () {\n this.provideObj.selected = this.selected;\n },\n },\n },\n\n mounted () {\n this.updateSelected();\n },\n\n beforeUpdate () {\n this.updateSelected();\n },\n\n methods: {\n updateSelected () {\n /**\n * Prevent override tab selected by default\n */\n if (!this.provideObj.selected) {\n this.provideObj.selected = this.selected;\n }\n this.tabs = this.getTabChildren();\n },\n\n setFocus (focusId) {\n this.focusId = focusId;\n },\n\n getTabChildren () {\n return Array.from(this.$el.querySelectorAll('.d-tab'))\n .map(el => {\n return ({\n context: el,\n panelId: el.getAttribute('aria-controls')?.replace('dt-panel-', ''),\n tabId: el.getAttribute('id')?.replace('dt-tab-', ''),\n isSelected: el.getAttribute('aria-selected') === 'true',\n });\n });\n },\n\n onChange () {\n this.$emit('change', { ...this.provideObj });\n },\n\n tabLeft () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const indexElement = index - 1 < 0 ? this.tabs.length - 1 : index - 1;\n this.selectFocusOnTab(indexElement);\n },\n\n tabRight () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const indexElement = index + 1 > this.tabs.length - 1 ? 0 : index + 1;\n this.selectFocusOnTab(indexElement);\n },\n\n selectFocusOnTab (index) {\n const { context } = this.tabs[index];\n context.focus();\n },\n\n selectTab (event) {\n if (this.isSameTabClicked()) return;\n\n this.$emit('before-change', event);\n if (event.defaultPrevented) return;\n\n const index = this.getFocusedTabIndex();\n\n this.selectTabByIndex(index);\n this.onChange();\n },\n\n selectTabByIndex (index) {\n const { context, panelId } = this.tabs[index];\n this.provideObj.selected = panelId;\n context.focus();\n },\n\n getFocusedTabIndex () {\n // Hot fix https://github.com/dialpad/dialtone/pull/849\n // The main issue is that this.tabs is not being updated at the time this is being triggered.\n\n const index = this.tabs.findIndex((context) =>\n this.focusId ? context.tabId === `${this.focusId}` : context.isSelected,\n );\n\n return index === -1 ? 0 : index;\n },\n\n onHomeButton () {\n if (this.tabs.length === 0) return;\n this.tabs[0]?.context?.focus();\n },\n\n onEndButton () {\n if (this.tabs.length === 0) return;\n this.tabs[this.tabs.length - 1]?.context?.focus();\n },\n\n isSameTabClicked () {\n const tab = this.tabs[this.getFocusedTabIndex()];\n return this.provideObj.selected === tab.panelId;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","size","TAB_LIST_SIZES","TAB_LIST_SIZE_MODIFIERS","TAB_LIST_KIND_MODIFIERS","TAB_LIST_IMPORTANCE_MODIFIERS","focusId","el","_a","_b","index","indexElement","context","event","panelId","tab"],"mappings":"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"}
1
+ {"version":3,"file":"tab-group.js","sources":["../../../components/tab/tab_group.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-tab-group\"\n >\n <!-- eslint-disable-next-line vuejs-accessibility/interactive-supports-focus -->\n <div\n :class=\"[\n 'd-tablist',\n TAB_LIST_SIZE_MODIFIERS[size],\n {\n [TAB_LIST_KIND_MODIFIERS.inverted]: inverted,\n [TAB_LIST_IMPORTANCE_MODIFIERS.borderless]: borderless,\n },\n tabListClass,\n ]\"\n v-bind=\"tabListChildProps\"\n role=\"tablist\"\n :aria-label=\"label\"\n @keyup.left=\"tabLeft\"\n @keyup.right=\"tabRight\"\n @keyup.enter=\"selectTab\"\n @keyup.space=\"selectTab\"\n @click=\"selectTab\"\n @keydown.home=\"onHomeButton\"\n @keydown.end=\"onEndButton\"\n >\n <!-- @slot Slot for Tabs -->\n <slot name=\"tabs\" />\n </div>\n <!-- @slot Default slot for Panel -->\n <slot />\n </div>\n</template>\n\n<script>\nimport {\n TAB_LIST_SIZES,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n TAB_LIST_SIZE_MODIFIERS,\n} from './tabs_constants';\n\n/**\n * Tabs allow users to navigation between grouped content in different views while within the same page context.\n * @see https://dialtone.dialpad.com/components/tabs.html\n */\nexport default {\n name: 'DtTabGroup',\n\n provide () {\n return {\n groupContext: this.provideObj,\n setFocus: this.setFocus,\n };\n },\n\n props: {\n /**\n * Identifies the tab group\n */\n label: {\n type: String,\n default: '',\n },\n\n /**\n * The id of the selected tab panel which should be displayed\n */\n selected: {\n type: String,\n default: '',\n },\n\n /**\n * If true, disables the tab group\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies inverted styles to the tab group\n * @values true, false\n */\n inverted: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If true, applies borderless styles to the tab group\n * @values true, false\n */\n borderless: {\n type: Boolean,\n default: false,\n },\n\n /**\n * If provided, applies size styles to the tab group\n * @values default, sm\n */\n size: {\n type: String,\n default: 'default',\n validate (size) {\n return TAB_LIST_SIZES.includes(size);\n },\n },\n\n /**\n * Pass through classes, used to customize the tab list\n */\n tabListClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through props, used to customize the tab list\n */\n tabListChildProps: {\n type: Object,\n default: () => ({}),\n },\n },\n\n emits: [\n /**\n * Change tab event with the arguments: selected id of the current tab and disabled value\n *\n * @event change\n * @type {Object}\n */\n 'change',\n\n /**\n * Before change tab event with the event argument, useful to perform validations and prevent changing tabs if neccessary.\n *\n * @event before-change\n * @type {Event}\n */\n 'before-change',\n ],\n\n data () {\n return {\n provideObj: {\n selected: '', // the currently displayed tab id\n disabled: false, // disable group\n },\n\n focusId: null,\n tabs: [],\n TAB_LIST_SIZE_MODIFIERS,\n TAB_LIST_KIND_MODIFIERS,\n TAB_LIST_IMPORTANCE_MODIFIERS,\n };\n },\n\n watch: {\n disabled: {\n immediate: true,\n handler () {\n this.provideObj.disabled = this.disabled;\n },\n },\n\n selected: {\n immediate: true,\n handler () {\n this.provideObj.selected = this.selected;\n },\n },\n },\n\n mounted () {\n this.updateSelected();\n },\n\n updated () {\n this.updateSelected();\n },\n\n methods: {\n updateSelected () {\n /**\n * Prevent override tab selected by default\n */\n if (!this.provideObj.selected) {\n this.provideObj.selected = this.selected;\n }\n this.tabs = this.getTabChildren();\n },\n\n setFocus (focusId) {\n this.focusId = focusId;\n },\n\n getTabChildren () {\n return Array.from(this.$el.querySelectorAll('.d-tab'))\n .map(el => {\n return ({\n context: el,\n panelId: el.getAttribute('aria-controls')?.replace('dt-panel-', ''),\n tabId: el.getAttribute('id')?.replace('dt-tab-', ''),\n isSelected: el.getAttribute('aria-selected') === 'true',\n });\n });\n },\n\n onChange () {\n this.$emit('change', { ...this.provideObj });\n },\n\n tabLeft () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const indexElement = index - 1 < 0 ? this.tabs.length - 1 : index - 1;\n this.selectFocusOnTab(indexElement);\n },\n\n tabRight () {\n const index = this.getFocusedTabIndex();\n if (index === -1) return;\n\n const indexElement = index + 1 > this.tabs.length - 1 ? 0 : index + 1;\n this.selectFocusOnTab(indexElement);\n },\n\n selectFocusOnTab (index) {\n const { context } = this.tabs[index];\n context.focus();\n },\n\n selectTab (event) {\n if (this.isSameTabClicked()) return;\n\n this.$emit('before-change', event);\n if (event.defaultPrevented) return;\n\n const index = this.getFocusedTabIndex();\n\n this.selectTabByIndex(index);\n this.onChange();\n },\n\n selectTabByIndex (index) {\n const { context, panelId } = this.tabs[index];\n this.provideObj.selected = panelId;\n context.focus();\n },\n\n getFocusedTabIndex () {\n const index = this.tabs.findIndex((context) =>\n this.focusId ? context.tabId === `${this.focusId}` : context.isSelected,\n );\n\n // Safe guard if tab is not found\n return index === -1 ? 0 : index;\n },\n\n onHomeButton () {\n if (this.tabs.length === 0) return;\n this.tabs[0]?.context?.focus();\n },\n\n onEndButton () {\n if (this.tabs.length === 0) return;\n this.tabs[this.tabs.length - 1]?.context?.focus();\n },\n\n isSameTabClicked () {\n const tab = this.tabs[this.getFocusedTabIndex()];\n return this.provideObj.selected === tab.panelId;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","size","TAB_LIST_SIZES","TAB_LIST_SIZE_MODIFIERS","TAB_LIST_KIND_MODIFIERS","TAB_LIST_IMPORTANCE_MODIFIERS","focusId","el","_a","_b","index","indexElement","context","event","panelId","tab"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@dialpad/i18n-vue2"),u=require("./en-US.cjs"),d=require("./zh-CN.cjs"),f=require("./nl-NL.cjs"),g=require("./fr-FR.cjs"),S=require("./de-DE.cjs"),N=require("./it-IT.cjs"),w=require("./ja-JP.cjs"),L=require("./pt-BR.cjs"),R=require("./ru-RU.cjs"),h=require("./es-LA.cjs"),e="dialtone",o={ENGLISH:"en-US",CHINESE:"zh-CN",DUTCH:"nl-NL",FRENCH:"fr-FR",GERMAN:"de-DE",ITALIAN:"it-IT",JAPANESE:"ja-JP",PORTUGUESE:"pt-BR",RUSSIAN:"ru-RU",SPANISH:"es-LA"},n="en-US",s="user-locale";class l{constructor(t=null){if(typeof l.instance=="object")return l.instance;this._locale=t||l.getPreferredLocale();const r=new a.RawBundleSource({resources:a.RawBundleSource.builtResources([["en-US",e,u.default],["zh-CN",e,d.default],["nl-NL",e,f.default],["fr-FR",e,g.default],["de-DE",e,S.default],["it-IT",e,N.default],["ja-JP",e,w.default],["pt-BR",e,L.default],["ru-RU",e,R.default],["es-LA",e,h.default]])});return new a.LocaleManager({bundleSource:r,allowedLocales:Object.values(o),fallbackLocale:n,preferredLocale:this._locale,namespaces:[e]}).install(e),l.instance=this,typeof window<"u"&&(window.onstorage=i=>{i.key===s&&(this.currentLocale=i.newValue)}),this}static getPreferredLocale(){if(typeof window>"u"||!window.localStorage)return n;const t=window.localStorage.getItem(s),r=Object.values(o).find(c=>c.startsWith(navigator.language.slice(0,2)));return t||r||n}static getAllowedLocales(){return o}$t(...t){return a.useI18N(e).$t(...t)}$ta(...t){return a.useI18N(e).$ta(...t)}get currentLocale(){return this._locale}set currentLocale(t){if(t!==this._locale){if(!Object.values(o).includes(t))throw new Error(`Locale ${t} is not allowed, please use one of the following: ${Object.values(o).join(", ")}`);this._locale=t,a.useI18N(e).setI18N({preferredLocale:t},e)}}}exports.DialtoneLocalization=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@dialpad/i18n-vue2"),u=require("./en-US.cjs"),d=require("./zh-CN.cjs"),f=require("./nl-NL.cjs"),g=require("./fr-FR.cjs"),S=require("./de-DE.cjs"),h=require("./it-IT.cjs"),w=require("./ja-JP.cjs"),L=require("./pt-BR.cjs"),N=require("./ru-RU.cjs"),R=require("./es-LA.cjs"),t="dialtone",o={ENGLISH:"en-US",CHINESE:"zh-CN",DUTCH:"nl-NL",FRENCH:"fr-FR",GERMAN:"de-DE",ITALIAN:"it-IT",JAPANESE:"ja-JP",PORTUGUESE:"pt-BR",RUSSIAN:"ru-RU",SPANISH:"es-LA"},i="en-US",s="user-locale";class a{constructor(e=null){if(typeof a.instance=="object")return a.instance;this._locale=e||a.getPreferredLocale();const l=new n.RawBundleSource({resources:n.RawBundleSource.builtResources([["en-US",t,u.default],["zh-CN",t,d.default],["nl-NL",t,f.default],["fr-FR",t,g.default],["de-DE",t,S.default],["it-IT",t,h.default],["ja-JP",t,w.default],["pt-BR",t,L.default],["ru-RU",t,N.default],["es-LA",t,R.default]])}),r=new n.LocaleManager({bundleSource:l,allowedLocales:Object.values(o),fallbackLocale:i,preferredLocale:this._locale,namespaces:[t]});return this.i18n=r.useI18N(t),a.instance=this,typeof window<"u"&&(window.onstorage=c=>{c.key===s&&(this.currentLocale=c.newValue)}),this}static getPreferredLocale(){if(typeof window>"u"||!window.localStorage)return i;const e=window.localStorage.getItem(s),l=Object.values(o).find(r=>r.startsWith(navigator.language.slice(0,2)));return e||l||i}static getAllowedLocales(){return o}$t(...e){return this.i18n.$t(...e)}$ta(...e){return this.i18n.$ta(...e)}get currentLocale(){return this._locale}set currentLocale(e){if(e!==this._locale){if(!Object.values(o).includes(e))throw new Error(`Locale ${e} is not allowed, please use one of the following: ${Object.values(o).join(", ")}`);this._locale=e,this.i18n.setI18N({preferredLocale:e},t)}}}exports.DialtoneLocalization=a;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../localization/index.js"],"sourcesContent":["import { LocaleManager, RawBundleSource, useI18N } from '@dialpad/i18n-vue2';\n\nimport enUS from './en-US.ftl?raw';\nimport zhCN from './zh-CN.ftl?raw';\nimport nlNL from './nl-NL.ftl?raw';\nimport frFR from './fr-FR.ftl?raw';\nimport deDE from './de-DE.ftl?raw';\nimport itIT from './it-IT.ftl?raw';\nimport jaJP from './ja-JP.ftl?raw';\nimport ptBR from './pt-BR.ftl?raw';\nimport ruRU from './ru-RU.ftl?raw';\nimport esLA from './es-LA.ftl?raw';\n\nconst dialtoneNamespace = 'dialtone';\nconst allowedLocales = {\n ENGLISH: 'en-US',\n CHINESE: 'zh-CN',\n DUTCH: 'nl-NL',\n FRENCH: 'fr-FR',\n GERMAN: 'de-DE',\n ITALIAN: 'it-IT',\n JAPANESE: 'ja-JP',\n PORTUGUESE: 'pt-BR',\n RUSSIAN: 'ru-RU',\n SPANISH: 'es-LA',\n};\nconst fallbackLocale = 'en-US';\n/**\n * Default key name used by the LocaleManager to store the user's preferred locale in localStorage\n */\nconst localeManagerStorageKey = 'user-locale';\n\n/**\n * Dialtone localization class, follows the singleton pattern to make sure only one instance of the class is created.\n * Initializes the localeManager and looks for changes on the browser storage to update the current locale.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#i18n-vue-3-compatible\n */\nexport class DialtoneLocalization {\n constructor (locale = null) {\n if (typeof DialtoneLocalization.instance === 'object') {\n return DialtoneLocalization.instance;\n }\n\n this._locale = locale || DialtoneLocalization.getPreferredLocale();\n\n const bundleSource = new RawBundleSource({\n resources: RawBundleSource.builtResources([\n ['en-US', dialtoneNamespace, enUS],\n ['zh-CN', dialtoneNamespace, zhCN],\n ['nl-NL', dialtoneNamespace, nlNL],\n ['fr-FR', dialtoneNamespace, frFR],\n ['de-DE', dialtoneNamespace, deDE],\n ['it-IT', dialtoneNamespace, itIT],\n ['ja-JP', dialtoneNamespace, jaJP],\n ['pt-BR', dialtoneNamespace, ptBR],\n ['ru-RU', dialtoneNamespace, ruRU],\n ['es-LA', dialtoneNamespace, esLA],\n ]),\n });\n\n const localeManager = new LocaleManager({\n bundleSource,\n allowedLocales: Object.values(allowedLocales),\n fallbackLocale,\n preferredLocale: this._locale,\n namespaces: [dialtoneNamespace],\n });\n\n localeManager.install(dialtoneNamespace);\n\n DialtoneLocalization.instance = this;\n\n if (typeof window !== 'undefined') {\n /**\n * @description\n * When the browser storage changes, update the current locale\n * @param event\n */\n window.onstorage = (event) => {\n if (event.key === localeManagerStorageKey) {\n this.currentLocale = event.newValue;\n }\n };\n }\n\n return this;\n }\n\n /**\n * Gets the preferred locale from user's locale stored in localStorage or the browser language\n * @returns { string }\n */\n static getPreferredLocale () {\n /**\n * Early return if we're not in the browser or if localStorage is not available\n */\n if (typeof window === 'undefined' || !window.localStorage) {\n return fallbackLocale;\n }\n\n const localStorageLanguage = window.localStorage.getItem(localeManagerStorageKey);\n\n // Get the first two letters of the navigator language and check if it's in the allowed locales\n const navigatorLanguage = Object.values(allowedLocales)\n .find(locale => locale.startsWith(navigator.language.slice(0, 2)));\n\n return localStorageLanguage || navigatorLanguage || fallbackLocale;\n }\n\n static getAllowedLocales () {\n return allowedLocales;\n }\n\n /**\n * Passthrough function to the i18n $t function including the dialtone namespace\n * Returns a translated string based on a key and optional variables.\n * It’s used for simple text translations.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#t\n */\n $t (...args) {\n return useI18N(dialtoneNamespace).$t(...args);\n }\n\n /**\n * Passthrough function to the i18n $ta function including the dialtone namespace\n * Returns an object containing translated attributes to pass directly as props to components, it can contain\n * aria-label, title, etc, rather than just a plain text. It’s useful for handling element attributes in the UI.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#ta\n */\n $ta (...args) {\n return useI18N(dialtoneNamespace).$ta(...args);\n }\n\n get currentLocale () {\n return this._locale;\n }\n\n set currentLocale (newLocale) {\n if (newLocale === this._locale) return;\n if (!Object.values(allowedLocales).includes(newLocale)) {\n throw new Error(`Locale ${newLocale} is not allowed, please use one of the following: ${Object.values(allowedLocales).join(', ')}`);\n }\n\n this._locale = newLocale;\n useI18N(dialtoneNamespace).setI18N({ preferredLocale: newLocale }, dialtoneNamespace);\n }\n}\n"],"names":["dialtoneNamespace","allowedLocales","fallbackLocale","localeManagerStorageKey","DialtoneLocalization","locale","bundleSource","RawBundleSource","enUS","zhCN","nlNL","frFR","deDE","itIT","jaJP","ptBR","ruRU","esLA","LocaleManager","event","localStorageLanguage","navigatorLanguage","args","useI18N","newLocale"],"mappings":"gXAaMA,EAAoB,WACpBC,EAAiB,CACrB,QAAS,QACT,QAAS,QACT,MAAO,QACP,OAAQ,QACR,OAAQ,QACR,QAAS,QACT,SAAU,QACV,WAAY,QACZ,QAAS,QACT,QAAS,OACX,EACMC,EAAiB,QAIjBC,EAA0B,cAOzB,MAAMC,CAAqB,CAChC,YAAaC,EAAS,KAAM,CAC1B,GAAI,OAAOD,EAAqB,UAAa,SAC3C,OAAOA,EAAqB,SAG9B,KAAK,QAAUC,GAAUD,EAAqB,mBAAkB,EAEhE,MAAME,EAAe,IAAIC,kBAAgB,CACvC,UAAWA,EAAAA,gBAAgB,eAAe,CACxC,CAAC,QAASP,EAAmBQ,SAAI,EACjC,CAAC,QAASR,EAAmBS,SAAI,EACjC,CAAC,QAAST,EAAmBU,SAAI,EACjC,CAAC,QAASV,EAAmBW,SAAI,EACjC,CAAC,QAASX,EAAmBY,SAAI,EACjC,CAAC,QAASZ,EAAmBa,SAAI,EACjC,CAAC,QAASb,EAAmBc,SAAI,EACjC,CAAC,QAASd,EAAmBe,SAAI,EACjC,CAAC,QAASf,EAAmBgB,SAAI,EACjC,CAAC,QAAShB,EAAmBiB,SAAI,CACzC,CAAO,CACP,CAAK,EAUD,OARsB,IAAIC,gBAAc,CACtC,aAAAZ,EACA,eAAgB,OAAO,OAAOL,CAAc,EAC5C,eAAAC,EACA,gBAAiB,KAAK,QACtB,WAAY,CAACF,CAAiB,CACpC,CAAK,EAEa,QAAQA,CAAiB,EAEvCI,EAAqB,SAAW,KAE5B,OAAO,OAAW,MAMpB,OAAO,UAAae,GAAU,CACxBA,EAAM,MAAQhB,IAChB,KAAK,cAAgBgB,EAAM,SAE/B,GAGK,IACT,CAMA,OAAO,oBAAsB,CAI3B,GAAI,OAAO,OAAW,KAAe,CAAC,OAAO,aAC3C,OAAOjB,EAGT,MAAMkB,EAAuB,OAAO,aAAa,QAAQjB,CAAuB,EAG1EkB,EAAoB,OAAO,OAAOpB,CAAc,EACnD,KAAKI,GAAUA,EAAO,WAAW,UAAU,SAAS,MAAM,EAAG,CAAC,CAAC,CAAC,EAEnE,OAAOe,GAAwBC,GAAqBnB,CACtD,CAEA,OAAO,mBAAqB,CAC1B,OAAOD,CACT,CAQA,MAAOqB,EAAM,CACX,OAAOC,EAAAA,QAAQvB,CAAiB,EAAE,GAAG,GAAGsB,CAAI,CAC9C,CAQA,OAAQA,EAAM,CACZ,OAAOC,EAAAA,QAAQvB,CAAiB,EAAE,IAAI,GAAGsB,CAAI,CAC/C,CAEA,IAAI,eAAiB,CACnB,OAAO,KAAK,OACd,CAEA,IAAI,cAAeE,EAAW,CAC5B,GAAIA,IAAc,KAAK,QACvB,IAAI,CAAC,OAAO,OAAOvB,CAAc,EAAE,SAASuB,CAAS,EACnD,MAAM,IAAI,MAAM,UAAUA,CAAS,qDAAqD,OAAO,OAAOvB,CAAc,EAAE,KAAK,IAAI,CAAC,EAAE,EAGpI,KAAK,QAAUuB,EACfD,EAAAA,QAAQvB,CAAiB,EAAE,QAAQ,CAAE,gBAAiBwB,CAAS,EAAIxB,CAAiB,EACtF,CACF"}
1
+ {"version":3,"file":"index.cjs","sources":["../../localization/index.js"],"sourcesContent":["import { LocaleManager, RawBundleSource } from '@dialpad/i18n-vue2';\n\nimport enUS from './en-US.ftl?raw';\nimport zhCN from './zh-CN.ftl?raw';\nimport nlNL from './nl-NL.ftl?raw';\nimport frFR from './fr-FR.ftl?raw';\nimport deDE from './de-DE.ftl?raw';\nimport itIT from './it-IT.ftl?raw';\nimport jaJP from './ja-JP.ftl?raw';\nimport ptBR from './pt-BR.ftl?raw';\nimport ruRU from './ru-RU.ftl?raw';\nimport esLA from './es-LA.ftl?raw';\n\nconst dialtoneNamespace = 'dialtone';\nconst allowedLocales = {\n ENGLISH: 'en-US',\n CHINESE: 'zh-CN',\n DUTCH: 'nl-NL',\n FRENCH: 'fr-FR',\n GERMAN: 'de-DE',\n ITALIAN: 'it-IT',\n JAPANESE: 'ja-JP',\n PORTUGUESE: 'pt-BR',\n RUSSIAN: 'ru-RU',\n SPANISH: 'es-LA',\n};\nconst fallbackLocale = 'en-US';\n/**\n * Default key name used by the LocaleManager to store the user's preferred locale in localStorage\n */\nconst localeManagerStorageKey = 'user-locale';\n\n/**\n * Dialtone localization class, follows the singleton pattern to make sure only one instance of the class is created.\n * Initializes the localeManager and looks for changes on the browser storage to update the current locale.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#i18n-vue-3-compatible\n */\nexport class DialtoneLocalization {\n /**\n * @prop {import('@dialpad/i18n').UseI18N} i18n\n * @private\n */\n constructor (locale = null) {\n if (typeof DialtoneLocalization.instance === 'object') {\n return DialtoneLocalization.instance;\n }\n\n this._locale = locale || DialtoneLocalization.getPreferredLocale();\n\n const bundleSource = new RawBundleSource({\n resources: RawBundleSource.builtResources([\n ['en-US', dialtoneNamespace, enUS],\n ['zh-CN', dialtoneNamespace, zhCN],\n ['nl-NL', dialtoneNamespace, nlNL],\n ['fr-FR', dialtoneNamespace, frFR],\n ['de-DE', dialtoneNamespace, deDE],\n ['it-IT', dialtoneNamespace, itIT],\n ['ja-JP', dialtoneNamespace, jaJP],\n ['pt-BR', dialtoneNamespace, ptBR],\n ['ru-RU', dialtoneNamespace, ruRU],\n ['es-LA', dialtoneNamespace, esLA],\n ]),\n });\n\n const localeManager = new LocaleManager({\n bundleSource,\n allowedLocales: Object.values(allowedLocales),\n fallbackLocale,\n preferredLocale: this._locale,\n namespaces: [dialtoneNamespace],\n });\n\n this.i18n = localeManager.useI18N(dialtoneNamespace);\n\n DialtoneLocalization.instance = this;\n\n if (typeof window !== 'undefined') {\n /**\n * @description\n * When the browser storage changes, update the current locale\n * @param event\n */\n window.onstorage = (event) => {\n if (event.key === localeManagerStorageKey) {\n this.currentLocale = event.newValue;\n }\n };\n }\n\n return this;\n }\n\n /**\n * Gets the preferred locale from user's locale stored in localStorage or the browser language\n * @returns { string }\n */\n static getPreferredLocale () {\n /**\n * Early return if we're not in the browser or if localStorage is not available\n */\n if (typeof window === 'undefined' || !window.localStorage) {\n return fallbackLocale;\n }\n\n const localStorageLanguage = window.localStorage.getItem(localeManagerStorageKey);\n\n // Get the first two letters of the navigator language and check if it's in the allowed locales\n const navigatorLanguage = Object.values(allowedLocales)\n .find(locale => locale.startsWith(navigator.language.slice(0, 2)));\n\n return localStorageLanguage || navigatorLanguage || fallbackLocale;\n }\n\n static getAllowedLocales () {\n return allowedLocales;\n }\n\n /**\n * Passthrough function to the i18n $t function including the dialtone namespace\n * Returns a translated string based on a key and optional variables.\n * It’s used for simple text translations.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#t\n */\n $t (...args) {\n return this.i18n.$t(...args);\n }\n\n /**\n * Passthrough function to the i18n $ta function including the dialtone namespace\n * Returns an object containing translated attributes to pass directly as props to components, it can contain\n * aria-label, title, etc, rather than just a plain text. It’s useful for handling element attributes in the UI.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#ta\n */\n $ta (...args) {\n return this.i18n.$ta(...args);\n }\n\n get currentLocale () {\n return this._locale;\n }\n\n set currentLocale (newLocale) {\n if (newLocale === this._locale) return;\n if (!Object.values(allowedLocales).includes(newLocale)) {\n throw new Error(`Locale ${newLocale} is not allowed, please use one of the following: ${Object.values(allowedLocales).join(', ')}`);\n }\n\n this._locale = newLocale;\n this.i18n.setI18N({ preferredLocale: newLocale }, dialtoneNamespace);\n }\n}\n"],"names":["dialtoneNamespace","allowedLocales","fallbackLocale","localeManagerStorageKey","DialtoneLocalization","locale","bundleSource","RawBundleSource","enUS","zhCN","nlNL","frFR","deDE","itIT","jaJP","ptBR","ruRU","esLA","localeManager","LocaleManager","event","localStorageLanguage","navigatorLanguage","args","newLocale"],"mappings":"gXAaMA,EAAoB,WACpBC,EAAiB,CACrB,QAAS,QACT,QAAS,QACT,MAAO,QACP,OAAQ,QACR,OAAQ,QACR,QAAS,QACT,SAAU,QACV,WAAY,QACZ,QAAS,QACT,QAAS,OACX,EACMC,EAAiB,QAIjBC,EAA0B,cAOzB,MAAMC,CAAqB,CAKhC,YAAaC,EAAS,KAAM,CAC1B,GAAI,OAAOD,EAAqB,UAAa,SAC3C,OAAOA,EAAqB,SAG9B,KAAK,QAAUC,GAAUD,EAAqB,mBAAkB,EAEhE,MAAME,EAAe,IAAIC,kBAAgB,CACvC,UAAWA,EAAAA,gBAAgB,eAAe,CACxC,CAAC,QAASP,EAAmBQ,SAAI,EACjC,CAAC,QAASR,EAAmBS,SAAI,EACjC,CAAC,QAAST,EAAmBU,SAAI,EACjC,CAAC,QAASV,EAAmBW,SAAI,EACjC,CAAC,QAASX,EAAmBY,SAAI,EACjC,CAAC,QAASZ,EAAmBa,SAAI,EACjC,CAAC,QAASb,EAAmBc,SAAI,EACjC,CAAC,QAASd,EAAmBe,SAAI,EACjC,CAAC,QAASf,EAAmBgB,SAAI,EACjC,CAAC,QAAShB,EAAmBiB,SAAI,CACzC,CAAO,CACP,CAAK,EAEKC,EAAgB,IAAIC,gBAAc,CACtC,aAAAb,EACA,eAAgB,OAAO,OAAOL,CAAc,EAC5C,eAAAC,EACA,gBAAiB,KAAK,QACtB,WAAY,CAACF,CAAiB,CACpC,CAAK,EAED,YAAK,KAAOkB,EAAc,QAAQlB,CAAiB,EAEnDI,EAAqB,SAAW,KAE5B,OAAO,OAAW,MAMpB,OAAO,UAAagB,GAAU,CACxBA,EAAM,MAAQjB,IAChB,KAAK,cAAgBiB,EAAM,SAE/B,GAGK,IACT,CAMA,OAAO,oBAAsB,CAI3B,GAAI,OAAO,OAAW,KAAe,CAAC,OAAO,aAC3C,OAAOlB,EAGT,MAAMmB,EAAuB,OAAO,aAAa,QAAQlB,CAAuB,EAG1EmB,EAAoB,OAAO,OAAOrB,CAAc,EACnD,KAAKI,GAAUA,EAAO,WAAW,UAAU,SAAS,MAAM,EAAG,CAAC,CAAC,CAAC,EAEnE,OAAOgB,GAAwBC,GAAqBpB,CACtD,CAEA,OAAO,mBAAqB,CAC1B,OAAOD,CACT,CAQA,MAAOsB,EAAM,CACX,OAAO,KAAK,KAAK,GAAG,GAAGA,CAAI,CAC7B,CAQA,OAAQA,EAAM,CACZ,OAAO,KAAK,KAAK,IAAI,GAAGA,CAAI,CAC9B,CAEA,IAAI,eAAiB,CACnB,OAAO,KAAK,OACd,CAEA,IAAI,cAAeC,EAAW,CAC5B,GAAIA,IAAc,KAAK,QACvB,IAAI,CAAC,OAAO,OAAOvB,CAAc,EAAE,SAASuB,CAAS,EACnD,MAAM,IAAI,MAAM,UAAUA,CAAS,qDAAqD,OAAO,OAAOvB,CAAc,EAAE,KAAK,IAAI,CAAC,EAAE,EAGpI,KAAK,QAAUuB,EACf,KAAK,KAAK,QAAQ,CAAE,gBAAiBA,CAAS,EAAIxB,CAAiB,EACrE,CACF"}
@@ -1,15 +1,15 @@
1
- import { RawBundleSource as i, LocaleManager as f, useI18N as l } from "@dialpad/i18n-vue2";
2
- import d from "./en-US.js";
3
- import m from "./zh-CN.js";
4
- import g from "./nl-NL.js";
1
+ import { RawBundleSource as i, LocaleManager as u } from "@dialpad/i18n-vue2";
2
+ import f from "./en-US.js";
3
+ import d from "./zh-CN.js";
4
+ import m from "./nl-NL.js";
5
5
  import p from "./fr-FR.js";
6
- import S from "./de-DE.js";
7
- import w from "./it-IT.js";
8
- import N from "./ja-JP.js";
9
- import L from "./pt-BR.js";
10
- import R from "./ru-RU.js";
11
- import h from "./es-LA.js";
12
- const e = "dialtone", t = {
6
+ import g from "./de-DE.js";
7
+ import h from "./it-IT.js";
8
+ import S from "./ja-JP.js";
9
+ import w from "./pt-BR.js";
10
+ import N from "./ru-RU.js";
11
+ import L from "./es-LA.js";
12
+ const r = "dialtone", t = {
13
13
  ENGLISH: "en-US",
14
14
  CHINESE: "zh-CN",
15
15
  DUTCH: "nl-NL",
@@ -20,34 +20,38 @@ const e = "dialtone", t = {
20
20
  PORTUGUESE: "pt-BR",
21
21
  RUSSIAN: "ru-RU",
22
22
  SPANISH: "es-LA"
23
- }, n = "en-US", u = "user-locale";
23
+ }, l = "en-US", c = "user-locale";
24
24
  class o {
25
- constructor(r = null) {
25
+ /**
26
+ * @prop {import('@dialpad/i18n').UseI18N} i18n
27
+ * @private
28
+ */
29
+ constructor(e = null) {
26
30
  if (typeof o.instance == "object")
27
31
  return o.instance;
28
- this._locale = r || o.getPreferredLocale();
32
+ this._locale = e || o.getPreferredLocale();
29
33
  const a = new i({
30
34
  resources: i.builtResources([
31
- ["en-US", e, d],
32
- ["zh-CN", e, m],
33
- ["nl-NL", e, g],
34
- ["fr-FR", e, p],
35
- ["de-DE", e, S],
36
- ["it-IT", e, w],
37
- ["ja-JP", e, N],
38
- ["pt-BR", e, L],
39
- ["ru-RU", e, R],
40
- ["es-LA", e, h]
35
+ ["en-US", r, f],
36
+ ["zh-CN", r, d],
37
+ ["nl-NL", r, m],
38
+ ["fr-FR", r, p],
39
+ ["de-DE", r, g],
40
+ ["it-IT", r, h],
41
+ ["ja-JP", r, S],
42
+ ["pt-BR", r, w],
43
+ ["ru-RU", r, N],
44
+ ["es-LA", r, L]
41
45
  ])
42
- });
43
- return new f({
46
+ }), n = new u({
44
47
  bundleSource: a,
45
48
  allowedLocales: Object.values(t),
46
- fallbackLocale: n,
49
+ fallbackLocale: l,
47
50
  preferredLocale: this._locale,
48
- namespaces: [e]
49
- }).install(e), o.instance = this, typeof window < "u" && (window.onstorage = (c) => {
50
- c.key === u && (this.currentLocale = c.newValue);
51
+ namespaces: [r]
52
+ });
53
+ return this.i18n = n.useI18N(r), o.instance = this, typeof window < "u" && (window.onstorage = (s) => {
54
+ s.key === c && (this.currentLocale = s.newValue);
51
55
  }), this;
52
56
  }
53
57
  /**
@@ -56,9 +60,9 @@ class o {
56
60
  */
57
61
  static getPreferredLocale() {
58
62
  if (typeof window > "u" || !window.localStorage)
59
- return n;
60
- const r = window.localStorage.getItem(u), a = Object.values(t).find((s) => s.startsWith(navigator.language.slice(0, 2)));
61
- return r || a || n;
63
+ return l;
64
+ const e = window.localStorage.getItem(c), a = Object.values(t).find((n) => n.startsWith(navigator.language.slice(0, 2)));
65
+ return e || a || l;
62
66
  }
63
67
  static getAllowedLocales() {
64
68
  return t;
@@ -69,8 +73,8 @@ class o {
69
73
  * It’s used for simple text translations.
70
74
  * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#t
71
75
  */
72
- $t(...r) {
73
- return l(e).$t(...r);
76
+ $t(...e) {
77
+ return this.i18n.$t(...e);
74
78
  }
75
79
  /**
76
80
  * Passthrough function to the i18n $ta function including the dialtone namespace
@@ -78,17 +82,17 @@ class o {
78
82
  * aria-label, title, etc, rather than just a plain text. It’s useful for handling element attributes in the UI.
79
83
  * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#ta
80
84
  */
81
- $ta(...r) {
82
- return l(e).$ta(...r);
85
+ $ta(...e) {
86
+ return this.i18n.$ta(...e);
83
87
  }
84
88
  get currentLocale() {
85
89
  return this._locale;
86
90
  }
87
- set currentLocale(r) {
88
- if (r !== this._locale) {
89
- if (!Object.values(t).includes(r))
90
- throw new Error(`Locale ${r} is not allowed, please use one of the following: ${Object.values(t).join(", ")}`);
91
- this._locale = r, l(e).setI18N({ preferredLocale: r }, e);
91
+ set currentLocale(e) {
92
+ if (e !== this._locale) {
93
+ if (!Object.values(t).includes(e))
94
+ throw new Error(`Locale ${e} is not allowed, please use one of the following: ${Object.values(t).join(", ")}`);
95
+ this._locale = e, this.i18n.setI18N({ preferredLocale: e }, r);
92
96
  }
93
97
  }
94
98
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../localization/index.js"],"sourcesContent":["import { LocaleManager, RawBundleSource, useI18N } from '@dialpad/i18n-vue2';\n\nimport enUS from './en-US.ftl?raw';\nimport zhCN from './zh-CN.ftl?raw';\nimport nlNL from './nl-NL.ftl?raw';\nimport frFR from './fr-FR.ftl?raw';\nimport deDE from './de-DE.ftl?raw';\nimport itIT from './it-IT.ftl?raw';\nimport jaJP from './ja-JP.ftl?raw';\nimport ptBR from './pt-BR.ftl?raw';\nimport ruRU from './ru-RU.ftl?raw';\nimport esLA from './es-LA.ftl?raw';\n\nconst dialtoneNamespace = 'dialtone';\nconst allowedLocales = {\n ENGLISH: 'en-US',\n CHINESE: 'zh-CN',\n DUTCH: 'nl-NL',\n FRENCH: 'fr-FR',\n GERMAN: 'de-DE',\n ITALIAN: 'it-IT',\n JAPANESE: 'ja-JP',\n PORTUGUESE: 'pt-BR',\n RUSSIAN: 'ru-RU',\n SPANISH: 'es-LA',\n};\nconst fallbackLocale = 'en-US';\n/**\n * Default key name used by the LocaleManager to store the user's preferred locale in localStorage\n */\nconst localeManagerStorageKey = 'user-locale';\n\n/**\n * Dialtone localization class, follows the singleton pattern to make sure only one instance of the class is created.\n * Initializes the localeManager and looks for changes on the browser storage to update the current locale.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#i18n-vue-3-compatible\n */\nexport class DialtoneLocalization {\n constructor (locale = null) {\n if (typeof DialtoneLocalization.instance === 'object') {\n return DialtoneLocalization.instance;\n }\n\n this._locale = locale || DialtoneLocalization.getPreferredLocale();\n\n const bundleSource = new RawBundleSource({\n resources: RawBundleSource.builtResources([\n ['en-US', dialtoneNamespace, enUS],\n ['zh-CN', dialtoneNamespace, zhCN],\n ['nl-NL', dialtoneNamespace, nlNL],\n ['fr-FR', dialtoneNamespace, frFR],\n ['de-DE', dialtoneNamespace, deDE],\n ['it-IT', dialtoneNamespace, itIT],\n ['ja-JP', dialtoneNamespace, jaJP],\n ['pt-BR', dialtoneNamespace, ptBR],\n ['ru-RU', dialtoneNamespace, ruRU],\n ['es-LA', dialtoneNamespace, esLA],\n ]),\n });\n\n const localeManager = new LocaleManager({\n bundleSource,\n allowedLocales: Object.values(allowedLocales),\n fallbackLocale,\n preferredLocale: this._locale,\n namespaces: [dialtoneNamespace],\n });\n\n localeManager.install(dialtoneNamespace);\n\n DialtoneLocalization.instance = this;\n\n if (typeof window !== 'undefined') {\n /**\n * @description\n * When the browser storage changes, update the current locale\n * @param event\n */\n window.onstorage = (event) => {\n if (event.key === localeManagerStorageKey) {\n this.currentLocale = event.newValue;\n }\n };\n }\n\n return this;\n }\n\n /**\n * Gets the preferred locale from user's locale stored in localStorage or the browser language\n * @returns { string }\n */\n static getPreferredLocale () {\n /**\n * Early return if we're not in the browser or if localStorage is not available\n */\n if (typeof window === 'undefined' || !window.localStorage) {\n return fallbackLocale;\n }\n\n const localStorageLanguage = window.localStorage.getItem(localeManagerStorageKey);\n\n // Get the first two letters of the navigator language and check if it's in the allowed locales\n const navigatorLanguage = Object.values(allowedLocales)\n .find(locale => locale.startsWith(navigator.language.slice(0, 2)));\n\n return localStorageLanguage || navigatorLanguage || fallbackLocale;\n }\n\n static getAllowedLocales () {\n return allowedLocales;\n }\n\n /**\n * Passthrough function to the i18n $t function including the dialtone namespace\n * Returns a translated string based on a key and optional variables.\n * It’s used for simple text translations.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#t\n */\n $t (...args) {\n return useI18N(dialtoneNamespace).$t(...args);\n }\n\n /**\n * Passthrough function to the i18n $ta function including the dialtone namespace\n * Returns an object containing translated attributes to pass directly as props to components, it can contain\n * aria-label, title, etc, rather than just a plain text. It’s useful for handling element attributes in the UI.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#ta\n */\n $ta (...args) {\n return useI18N(dialtoneNamespace).$ta(...args);\n }\n\n get currentLocale () {\n return this._locale;\n }\n\n set currentLocale (newLocale) {\n if (newLocale === this._locale) return;\n if (!Object.values(allowedLocales).includes(newLocale)) {\n throw new Error(`Locale ${newLocale} is not allowed, please use one of the following: ${Object.values(allowedLocales).join(', ')}`);\n }\n\n this._locale = newLocale;\n useI18N(dialtoneNamespace).setI18N({ preferredLocale: newLocale }, dialtoneNamespace);\n }\n}\n"],"names":["dialtoneNamespace","allowedLocales","fallbackLocale","localeManagerStorageKey","DialtoneLocalization","locale","bundleSource","RawBundleSource","enUS","zhCN","nlNL","frFR","deDE","itIT","jaJP","ptBR","ruRU","esLA","LocaleManager","event","localStorageLanguage","navigatorLanguage","args","useI18N","newLocale"],"mappings":";;;;;;;;;;;AAaA,MAAMA,IAAoB,YACpBC,IAAiB;AAAA,EACrB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AACX,GACMC,IAAiB,SAIjBC,IAA0B;AAOzB,MAAMC,EAAqB;AAAA,EAChC,YAAaC,IAAS,MAAM;AAC1B,QAAI,OAAOD,EAAqB,YAAa;AAC3C,aAAOA,EAAqB;AAG9B,SAAK,UAAUC,KAAUD,EAAqB,mBAAkB;AAEhE,UAAME,IAAe,IAAIC,EAAgB;AAAA,MACvC,WAAWA,EAAgB,eAAe;AAAA,QACxC,CAAC,SAASP,GAAmBQ,CAAI;AAAA,QACjC,CAAC,SAASR,GAAmBS,CAAI;AAAA,QACjC,CAAC,SAAST,GAAmBU,CAAI;AAAA,QACjC,CAAC,SAASV,GAAmBW,CAAI;AAAA,QACjC,CAAC,SAASX,GAAmBY,CAAI;AAAA,QACjC,CAAC,SAASZ,GAAmBa,CAAI;AAAA,QACjC,CAAC,SAASb,GAAmBc,CAAI;AAAA,QACjC,CAAC,SAASd,GAAmBe,CAAI;AAAA,QACjC,CAAC,SAASf,GAAmBgB,CAAI;AAAA,QACjC,CAAC,SAAShB,GAAmBiB,CAAI;AAAA,MACzC,CAAO;AAAA,IACP,CAAK;AAUD,WARsB,IAAIC,EAAc;AAAA,MACtC,cAAAZ;AAAA,MACA,gBAAgB,OAAO,OAAOL,CAAc;AAAA,MAC5C,gBAAAC;AAAA,MACA,iBAAiB,KAAK;AAAA,MACtB,YAAY,CAACF,CAAiB;AAAA,IACpC,CAAK,EAEa,QAAQA,CAAiB,GAEvCI,EAAqB,WAAW,MAE5B,OAAO,SAAW,QAMpB,OAAO,YAAY,CAACe,MAAU;AAC5B,MAAIA,EAAM,QAAQhB,MAChB,KAAK,gBAAgBgB,EAAM;AAAA,IAE/B,IAGK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,qBAAsB;AAI3B,QAAI,OAAO,SAAW,OAAe,CAAC,OAAO;AAC3C,aAAOjB;AAGT,UAAMkB,IAAuB,OAAO,aAAa,QAAQjB,CAAuB,GAG1EkB,IAAoB,OAAO,OAAOpB,CAAc,EACnD,KAAK,CAAAI,MAAUA,EAAO,WAAW,UAAU,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC;AAEnE,WAAOe,KAAwBC,KAAqBnB;AAAA,EACtD;AAAA,EAEA,OAAO,oBAAqB;AAC1B,WAAOD;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAOqB,GAAM;AACX,WAAOC,EAAQvB,CAAiB,EAAE,GAAG,GAAGsB,CAAI;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAQA,GAAM;AACZ,WAAOC,EAAQvB,CAAiB,EAAE,IAAI,GAAGsB,CAAI;AAAA,EAC/C;AAAA,EAEA,IAAI,gBAAiB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,cAAeE,GAAW;AAC5B,QAAIA,MAAc,KAAK,SACvB;AAAA,UAAI,CAAC,OAAO,OAAOvB,CAAc,EAAE,SAASuB,CAAS;AACnD,cAAM,IAAI,MAAM,UAAUA,CAAS,qDAAqD,OAAO,OAAOvB,CAAc,EAAE,KAAK,IAAI,CAAC,EAAE;AAGpI,WAAK,UAAUuB,GACfD,EAAQvB,CAAiB,EAAE,QAAQ,EAAE,iBAAiBwB,EAAS,GAAIxB,CAAiB;AAAA;AAAA,EACtF;AACF;"}
1
+ {"version":3,"file":"index.js","sources":["../../localization/index.js"],"sourcesContent":["import { LocaleManager, RawBundleSource } from '@dialpad/i18n-vue2';\n\nimport enUS from './en-US.ftl?raw';\nimport zhCN from './zh-CN.ftl?raw';\nimport nlNL from './nl-NL.ftl?raw';\nimport frFR from './fr-FR.ftl?raw';\nimport deDE from './de-DE.ftl?raw';\nimport itIT from './it-IT.ftl?raw';\nimport jaJP from './ja-JP.ftl?raw';\nimport ptBR from './pt-BR.ftl?raw';\nimport ruRU from './ru-RU.ftl?raw';\nimport esLA from './es-LA.ftl?raw';\n\nconst dialtoneNamespace = 'dialtone';\nconst allowedLocales = {\n ENGLISH: 'en-US',\n CHINESE: 'zh-CN',\n DUTCH: 'nl-NL',\n FRENCH: 'fr-FR',\n GERMAN: 'de-DE',\n ITALIAN: 'it-IT',\n JAPANESE: 'ja-JP',\n PORTUGUESE: 'pt-BR',\n RUSSIAN: 'ru-RU',\n SPANISH: 'es-LA',\n};\nconst fallbackLocale = 'en-US';\n/**\n * Default key name used by the LocaleManager to store the user's preferred locale in localStorage\n */\nconst localeManagerStorageKey = 'user-locale';\n\n/**\n * Dialtone localization class, follows the singleton pattern to make sure only one instance of the class is created.\n * Initializes the localeManager and looks for changes on the browser storage to update the current locale.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#i18n-vue-3-compatible\n */\nexport class DialtoneLocalization {\n /**\n * @prop {import('@dialpad/i18n').UseI18N} i18n\n * @private\n */\n constructor (locale = null) {\n if (typeof DialtoneLocalization.instance === 'object') {\n return DialtoneLocalization.instance;\n }\n\n this._locale = locale || DialtoneLocalization.getPreferredLocale();\n\n const bundleSource = new RawBundleSource({\n resources: RawBundleSource.builtResources([\n ['en-US', dialtoneNamespace, enUS],\n ['zh-CN', dialtoneNamespace, zhCN],\n ['nl-NL', dialtoneNamespace, nlNL],\n ['fr-FR', dialtoneNamespace, frFR],\n ['de-DE', dialtoneNamespace, deDE],\n ['it-IT', dialtoneNamespace, itIT],\n ['ja-JP', dialtoneNamespace, jaJP],\n ['pt-BR', dialtoneNamespace, ptBR],\n ['ru-RU', dialtoneNamespace, ruRU],\n ['es-LA', dialtoneNamespace, esLA],\n ]),\n });\n\n const localeManager = new LocaleManager({\n bundleSource,\n allowedLocales: Object.values(allowedLocales),\n fallbackLocale,\n preferredLocale: this._locale,\n namespaces: [dialtoneNamespace],\n });\n\n this.i18n = localeManager.useI18N(dialtoneNamespace);\n\n DialtoneLocalization.instance = this;\n\n if (typeof window !== 'undefined') {\n /**\n * @description\n * When the browser storage changes, update the current locale\n * @param event\n */\n window.onstorage = (event) => {\n if (event.key === localeManagerStorageKey) {\n this.currentLocale = event.newValue;\n }\n };\n }\n\n return this;\n }\n\n /**\n * Gets the preferred locale from user's locale stored in localStorage or the browser language\n * @returns { string }\n */\n static getPreferredLocale () {\n /**\n * Early return if we're not in the browser or if localStorage is not available\n */\n if (typeof window === 'undefined' || !window.localStorage) {\n return fallbackLocale;\n }\n\n const localStorageLanguage = window.localStorage.getItem(localeManagerStorageKey);\n\n // Get the first two letters of the navigator language and check if it's in the allowed locales\n const navigatorLanguage = Object.values(allowedLocales)\n .find(locale => locale.startsWith(navigator.language.slice(0, 2)));\n\n return localStorageLanguage || navigatorLanguage || fallbackLocale;\n }\n\n static getAllowedLocales () {\n return allowedLocales;\n }\n\n /**\n * Passthrough function to the i18n $t function including the dialtone namespace\n * Returns a translated string based on a key and optional variables.\n * It’s used for simple text translations.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#t\n */\n $t (...args) {\n return this.i18n.$t(...args);\n }\n\n /**\n * Passthrough function to the i18n $ta function including the dialtone namespace\n * Returns an object containing translated attributes to pass directly as props to components, it can contain\n * aria-label, title, etc, rather than just a plain text. It’s useful for handling element attributes in the UI.\n * https://github.com/dialpad/goblin-client-tools/tree/main/packages/i18n#ta\n */\n $ta (...args) {\n return this.i18n.$ta(...args);\n }\n\n get currentLocale () {\n return this._locale;\n }\n\n set currentLocale (newLocale) {\n if (newLocale === this._locale) return;\n if (!Object.values(allowedLocales).includes(newLocale)) {\n throw new Error(`Locale ${newLocale} is not allowed, please use one of the following: ${Object.values(allowedLocales).join(', ')}`);\n }\n\n this._locale = newLocale;\n this.i18n.setI18N({ preferredLocale: newLocale }, dialtoneNamespace);\n }\n}\n"],"names":["dialtoneNamespace","allowedLocales","fallbackLocale","localeManagerStorageKey","DialtoneLocalization","locale","bundleSource","RawBundleSource","enUS","zhCN","nlNL","frFR","deDE","itIT","jaJP","ptBR","ruRU","esLA","localeManager","LocaleManager","event","localStorageLanguage","navigatorLanguage","args","newLocale"],"mappings":";;;;;;;;;;;AAaA,MAAMA,IAAoB,YACpBC,IAAiB;AAAA,EACrB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,SAAS;AACX,GACMC,IAAiB,SAIjBC,IAA0B;AAOzB,MAAMC,EAAqB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhC,YAAaC,IAAS,MAAM;AAC1B,QAAI,OAAOD,EAAqB,YAAa;AAC3C,aAAOA,EAAqB;AAG9B,SAAK,UAAUC,KAAUD,EAAqB,mBAAkB;AAEhE,UAAME,IAAe,IAAIC,EAAgB;AAAA,MACvC,WAAWA,EAAgB,eAAe;AAAA,QACxC,CAAC,SAASP,GAAmBQ,CAAI;AAAA,QACjC,CAAC,SAASR,GAAmBS,CAAI;AAAA,QACjC,CAAC,SAAST,GAAmBU,CAAI;AAAA,QACjC,CAAC,SAASV,GAAmBW,CAAI;AAAA,QACjC,CAAC,SAASX,GAAmBY,CAAI;AAAA,QACjC,CAAC,SAASZ,GAAmBa,CAAI;AAAA,QACjC,CAAC,SAASb,GAAmBc,CAAI;AAAA,QACjC,CAAC,SAASd,GAAmBe,CAAI;AAAA,QACjC,CAAC,SAASf,GAAmBgB,CAAI;AAAA,QACjC,CAAC,SAAShB,GAAmBiB,CAAI;AAAA,MACzC,CAAO;AAAA,IACP,CAAK,GAEKC,IAAgB,IAAIC,EAAc;AAAA,MACtC,cAAAb;AAAA,MACA,gBAAgB,OAAO,OAAOL,CAAc;AAAA,MAC5C,gBAAAC;AAAA,MACA,iBAAiB,KAAK;AAAA,MACtB,YAAY,CAACF,CAAiB;AAAA,IACpC,CAAK;AAED,gBAAK,OAAOkB,EAAc,QAAQlB,CAAiB,GAEnDI,EAAqB,WAAW,MAE5B,OAAO,SAAW,QAMpB,OAAO,YAAY,CAACgB,MAAU;AAC5B,MAAIA,EAAM,QAAQjB,MAChB,KAAK,gBAAgBiB,EAAM;AAAA,IAE/B,IAGK;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,qBAAsB;AAI3B,QAAI,OAAO,SAAW,OAAe,CAAC,OAAO;AAC3C,aAAOlB;AAGT,UAAMmB,IAAuB,OAAO,aAAa,QAAQlB,CAAuB,GAG1EmB,IAAoB,OAAO,OAAOrB,CAAc,EACnD,KAAK,CAAAI,MAAUA,EAAO,WAAW,UAAU,SAAS,MAAM,GAAG,CAAC,CAAC,CAAC;AAEnE,WAAOgB,KAAwBC,KAAqBpB;AAAA,EACtD;AAAA,EAEA,OAAO,oBAAqB;AAC1B,WAAOD;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAOsB,GAAM;AACX,WAAO,KAAK,KAAK,GAAG,GAAGA,CAAI;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAQA,GAAM;AACZ,WAAO,KAAK,KAAK,IAAI,GAAGA,CAAI;AAAA,EAC9B;AAAA,EAEA,IAAI,gBAAiB;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,cAAeC,GAAW;AAC5B,QAAIA,MAAc,KAAK,SACvB;AAAA,UAAI,CAAC,OAAO,OAAOvB,CAAc,EAAE,SAASuB,CAAS;AACnD,cAAM,IAAI,MAAM,UAAUA,CAAS,qDAAqD,OAAO,OAAOvB,CAAc,EAAE,KAAK,IAAI,CAAC,EAAE;AAGpI,WAAK,UAAUuB,GACf,KAAK,KAAK,QAAQ,EAAE,iBAAiBA,EAAS,GAAIxB,CAAiB;AAAA;AAAA,EACrE;AACF;"}
@@ -1,8 +1,7 @@
1
- import { DialtoneLocalization } from '../localization';
2
1
  declare const _default: import('vue').DefineComponent<{}, any, {
3
- i18n: DialtoneLocalization;
2
+ i18n: any;
4
3
  }, {
5
- closeButtonTitle(): string;
4
+ closeButtonTitle(): any;
6
5
  }, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "close"[], string, Readonly<import('vue').ExtractPropTypes<{}>>, {}>;
7
6
  export default _default;
8
7
  //# sourceMappingURL=sr_only_close_button.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sr_only_close_button.vue.d.ts","sourceRoot":"","sources":["../../../common/sr_only_close_button.vue"],"names":[],"mappings":"AAaA;;;;;;;qCAmDqC,gBAAgB"}
1
+ {"version":3,"file":"sr_only_close_button.vue.d.ts","sourceRoot":"","sources":["../../../common/sr_only_close_button.vue"],"names":[],"mappings":"AAaA;"}
@@ -1,4 +1,3 @@
1
- import { DialtoneLocalization } from '../../localization';
2
1
  declare const _default: import('vue').DefineComponent<{
3
2
  breadcrumbs: {
4
3
  type: ArrayConstructor;
@@ -15,7 +14,7 @@ declare const _default: import('vue').DefineComponent<{
15
14
  };
16
15
  }, {}, {
17
16
  BREADCRUMBS_INVERTED_MODIFIER: string;
18
- i18n: DialtoneLocalization;
17
+ i18n: any;
19
18
  }, {}, {
20
19
  getBreadcrumbItemKey(index: any): string;
21
20
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, Readonly<import('vue').ExtractPropTypes<{
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumbs.vue.d.ts","sourceRoot":"","sources":["../../../../components/breadcrumbs/breadcrumbs.vue"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA6FqC,gBAAgB"}
1
+ {"version":3,"file":"breadcrumbs.vue.d.ts","sourceRoot":"","sources":["../../../../components/breadcrumbs/breadcrumbs.vue"],"names":[],"mappings":"AAuBA;"}
@@ -1,4 +1,3 @@
1
- import { DialtoneLocalization } from '../../localization';
2
1
  declare const _default: import('vue').DefineComponent<{
3
2
  circle: {
4
3
  type: BooleanConstructor;
@@ -74,7 +73,7 @@ declare const _default: import('vue').DefineComponent<{
74
73
  bottom: string;
75
74
  };
76
75
  isInFocus: boolean;
77
- i18n: DialtoneLocalization;
76
+ i18n: any;
78
77
  }, {
79
78
  buttonListeners(): Record<string, Function | Function[]>;
80
79
  computedAriaLive(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"button.vue.d.ts","sourceRoot":"","sources":["../../../../components/button/button.vue"],"names":[],"mappings":"AA8CA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA8XqC,gBAAgB"}
1
+ {"version":3,"file":"button.vue.d.ts","sourceRoot":"","sources":["../../../../components/button/button.vue"],"names":[],"mappings":"AA8CA;"}
@@ -1,4 +1,3 @@
1
- import { DialtoneLocalization } from '../../localization';
2
1
  declare const _default: import('vue').DefineComponent<{
3
2
  disabled: {
4
3
  type: BooleanConstructor;
@@ -35,7 +34,7 @@ declare const _default: import('vue').DefineComponent<{
35
34
  };
36
35
  }, {}, {
37
36
  isActive: boolean;
38
- i18n: DialtoneLocalization;
37
+ i18n: any;
39
38
  }, {
40
39
  chipListeners(): {
41
40
  click: (event: any) => void;
@@ -43,7 +42,7 @@ declare const _default: import('vue').DefineComponent<{
43
42
  keyup: (event: any) => void;
44
43
  };
45
44
  closeButtonIconSize(): any;
46
- closeButtonTitle(): string;
45
+ closeButtonTitle(): any;
47
46
  }, {
48
47
  chipClasses(): any[];
49
48
  chipCloseButtonClasses(): any[];
@@ -1 +1 @@
1
- {"version":3,"file":"chip.vue.d.ts","sourceRoot":"","sources":["../../../../components/chip/chip.vue"],"names":[],"mappings":"AAyDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAuQqC,gBAAgB"}
1
+ {"version":3,"file":"chip.vue.d.ts","sourceRoot":"","sources":["../../../../components/chip/chip.vue"],"names":[],"mappings":"AAyDA;"}
@@ -1,4 +1,3 @@
1
- import { DialtoneLocalization } from '../../../localization';
2
1
  declare const _default: import('vue').DefineComponent<{
3
2
  calendarDays: {
4
3
  type: ArrayConstructor;
@@ -8,7 +7,7 @@ declare const _default: import('vue').DefineComponent<{
8
7
  selectedDay: null;
9
8
  focusDay: number;
10
9
  daysRef: never[];
11
- i18n: DialtoneLocalization;
10
+ i18n: any;
12
11
  }, {
13
12
  weekDays(): string[];
14
13
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.vue.d.ts","sourceRoot":"","sources":["../../../../../components/datepicker/modules/calendar.vue"],"names":[],"mappings":"AA2DA;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA2PqC,gBAAgB"}
1
+ {"version":3,"file":"calendar.vue.d.ts","sourceRoot":"","sources":["../../../../../components/datepicker/modules/calendar.vue"],"names":[],"mappings":"AA2DA;"}
@@ -1,4 +1,3 @@
1
- import { DialtoneLocalization } from '../../../localization';
2
1
  declare const _default: import('vue').DefineComponent<{
3
2
  selectedDate: {
4
3
  type: DateConstructor;
@@ -11,7 +10,7 @@ declare const _default: import('vue').DefineComponent<{
11
10
  focusPicker: number;
12
11
  focusRefs: never[];
13
12
  refNames: string[];
14
- i18n: DialtoneLocalization;
13
+ i18n: any;
15
14
  }, {
16
15
  calendarDays(): any[];
17
16
  formattedMonth(): (month: any) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"month-year-picker.vue.d.ts","sourceRoot":"","sources":["../../../../../components/datepicker/modules/month-year-picker.vue"],"names":[],"mappings":"AAkIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA6WqC,gBAAgB"}
1
+ {"version":3,"file":"month-year-picker.vue.d.ts","sourceRoot":"","sources":["../../../../../components/datepicker/modules/month-year-picker.vue"],"names":[],"mappings":"AAkIA;"}
@@ -1,4 +1,3 @@
1
- import { DialtoneLocalization } from '../../localization';
2
1
  declare const _default: import('vue').DefineComponent<{
3
2
  appendTo: {
4
3
  type: StringConstructor;
@@ -28,13 +27,13 @@ declare const _default: import('vue').DefineComponent<{
28
27
  }, {}, {
29
28
  showCloseButton: boolean;
30
29
  isOpen: boolean;
31
- i18n: DialtoneLocalization;
30
+ i18n: any;
32
31
  }, {
33
32
  modalListeners(): {
34
33
  click: (event: any) => void;
35
34
  keydown: (event: any) => void;
36
35
  };
37
- closeButtonTitle(): string;
36
+ closeButtonTitle(): any;
38
37
  }, {
39
38
  openModal(): void;
40
39
  close(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"image_viewer.vue.d.ts","sourceRoot":"","sources":["../../../../components/image_viewer/image_viewer.vue"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEA2QA,IAzJe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA+JsB,gBAAgB"}
1
+ {"version":3,"file":"image_viewer.vue.d.ts","sourceRoot":"","sources":["../../../../components/image_viewer/image_viewer.vue"],"names":[],"mappings":"AAuEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEA2QA,IAzJe"}
@@ -1,4 +1,3 @@
1
- import { DialtoneLocalization } from '../../localization';
2
1
  declare const _default: import('vue').DefineComponent<{
3
2
  ariaLabel: {
4
3
  type: StringConstructor;
@@ -10,7 +9,7 @@ declare const _default: import('vue').DefineComponent<{
10
9
  validator: (s: unknown) => boolean;
11
10
  };
12
11
  }, {}, {
13
- i18n: DialtoneLocalization;
12
+ i18n: any;
14
13
  }, {
15
14
  loaderText(): any;
16
15
  }, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, Readonly<import('vue').ExtractPropTypes<{
@@ -1 +1 @@
1
- {"version":3,"file":"loader.vue.d.ts","sourceRoot":"","sources":["../../../../components/loader/loader.vue"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAgEqC,gBAAgB"}
1
+ {"version":3,"file":"loader.vue.d.ts","sourceRoot":"","sources":["../../../../components/loader/loader.vue"],"names":[],"mappings":"AAaA;"}
@@ -1,4 +1,3 @@
1
- import { DialtoneLocalization } from '../../localization';
2
1
  declare const _default: import('vue').DefineComponent<{
3
2
  copy: {
4
3
  type: StringConstructor;
@@ -113,7 +112,7 @@ declare const _default: import('vue').DefineComponent<{
113
112
  home: string;
114
113
  end: string;
115
114
  };
116
- i18n: DialtoneLocalization;
115
+ i18n: any;
117
116
  }, {
118
117
  modalListeners(): {
119
118
  click: (event: any) => void;
@@ -123,7 +122,7 @@ declare const _default: import('vue').DefineComponent<{
123
122
  open(): string;
124
123
  hasFooterSlot(): boolean;
125
124
  bannerKindClass(): never;
126
- closeButtonTitle(): string;
125
+ closeButtonTitle(): any;
127
126
  }, {
128
127
  close(): void;
129
128
  setFocusAfterTransition(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"modal.vue.d.ts","sourceRoot":"","sources":["../../../../components/modal/modal.vue"],"names":[],"mappings":"AAwHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEAwdA,IAlWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA+WkC,gBAAgB"}
1
+ {"version":3,"file":"modal.vue.d.ts","sourceRoot":"","sources":["../../../../components/modal/modal.vue"],"names":[],"mappings":"AAwHA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qEAwdA,IAlWG"}