@dialpad/dialtone-vue 3.209.0 → 3.210.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. package/dist/common/mixins/keyboard-list-navigation.cjs +1 -1
  2. package/dist/common/mixins/keyboard-list-navigation.cjs.map +1 -1
  3. package/dist/common/mixins/keyboard-list-navigation.js +7 -7
  4. package/dist/common/mixins/keyboard-list-navigation.js.map +1 -1
  5. package/dist/component-documentation.json +1 -1
  6. package/dist/dialtone-vue.cjs +1 -1
  7. package/dist/dialtone-vue.js +422 -386
  8. package/dist/dialtone-vue.js.map +1 -1
  9. package/dist/lib/attachment-carousel/attachment-carousel.cjs +1 -1
  10. package/dist/lib/attachment-carousel/attachment-carousel.cjs.map +1 -1
  11. package/dist/lib/attachment-carousel/attachment-carousel.js +64 -117
  12. package/dist/lib/attachment-carousel/attachment-carousel.js.map +1 -1
  13. package/dist/lib/avatar/avatar-constants.cjs +1 -1
  14. package/dist/lib/avatar/avatar-constants.cjs.map +1 -1
  15. package/dist/lib/avatar/avatar-constants.js +169 -43
  16. package/dist/lib/avatar/avatar-constants.js.map +1 -1
  17. package/dist/lib/avatar/avatar.cjs +1 -1
  18. package/dist/lib/avatar/avatar.cjs.map +1 -1
  19. package/dist/lib/avatar/avatar.js +185 -100
  20. package/dist/lib/avatar/avatar.js.map +1 -1
  21. package/dist/lib/avatar/index.cjs +1 -1
  22. package/dist/lib/avatar/index.js +16 -10
  23. package/dist/lib/badge/badge.cjs +1 -1
  24. package/dist/lib/badge/badge.cjs.map +1 -1
  25. package/dist/lib/badge/badge.js +47 -35
  26. package/dist/lib/badge/badge.js.map +1 -1
  27. package/dist/lib/button/button-constants.cjs +1 -1
  28. package/dist/lib/button/button-constants.cjs.map +1 -1
  29. package/dist/lib/button/button-constants.js +23 -19
  30. package/dist/lib/button/button-constants.js.map +1 -1
  31. package/dist/lib/button/button.cjs +1 -1
  32. package/dist/lib/button/button.cjs.map +1 -1
  33. package/dist/lib/button/button.js +138 -60
  34. package/dist/lib/button/button.js.map +1 -1
  35. package/dist/lib/callbar-button/callbar-button.cjs +1 -1
  36. package/dist/lib/callbar-button/callbar-button.cjs.map +1 -1
  37. package/dist/lib/callbar-button/callbar-button.js +8 -9
  38. package/dist/lib/callbar-button/callbar-button.js.map +1 -1
  39. package/dist/lib/callbox/callbox.cjs +1 -1
  40. package/dist/lib/callbox/callbox.cjs.map +1 -1
  41. package/dist/lib/callbox/callbox.js +47 -47
  42. package/dist/lib/callbox/callbox.js.map +1 -1
  43. package/dist/lib/combobox-multi-select/combobox-multi-select.cjs +1 -1
  44. package/dist/lib/combobox-multi-select/combobox-multi-select.cjs.map +1 -1
  45. package/dist/lib/combobox-multi-select/combobox-multi-select.js +31 -31
  46. package/dist/lib/combobox-multi-select/combobox-multi-select.js.map +1 -1
  47. package/dist/lib/contact-centers-row/contact-centers-row.cjs +1 -1
  48. package/dist/lib/contact-centers-row/contact-centers-row.cjs.map +1 -1
  49. package/dist/lib/contact-centers-row/contact-centers-row.js +33 -33
  50. package/dist/lib/contact-centers-row/contact-centers-row.js.map +1 -1
  51. package/dist/lib/contact-info/contact-info.cjs +1 -1
  52. package/dist/lib/contact-info/contact-info.cjs.map +1 -1
  53. package/dist/lib/contact-info/contact-info.js +56 -56
  54. package/dist/lib/contact-info/contact-info.js.map +1 -1
  55. package/dist/lib/contact-row/contact-row.cjs +1 -1
  56. package/dist/lib/contact-row/contact-row.cjs.map +1 -1
  57. package/dist/lib/contact-row/contact-row.js +1 -1
  58. package/dist/lib/contact-row/contact-row.js.map +1 -1
  59. package/dist/lib/datepicker/datepicker.cjs +1 -1
  60. package/dist/lib/datepicker/datepicker.cjs.map +1 -1
  61. package/dist/lib/datepicker/datepicker.js +11 -11
  62. package/dist/lib/datepicker/datepicker.js.map +1 -1
  63. package/dist/lib/editor/editor.cjs +1 -1
  64. package/dist/lib/editor/editor.cjs.map +1 -1
  65. package/dist/lib/editor/editor.js +13 -12
  66. package/dist/lib/editor/editor.js.map +1 -1
  67. package/dist/lib/emoji-picker/emoji-picker.cjs +1 -1
  68. package/dist/lib/emoji-picker/emoji-picker.cjs.map +1 -1
  69. package/dist/lib/emoji-picker/emoji-picker.js +2 -2
  70. package/dist/lib/emoji-picker/emoji-picker.js.map +1 -1
  71. package/dist/lib/feed-item-pill/feed-item-pill.cjs +1 -1
  72. package/dist/lib/feed-item-pill/feed-item-pill.cjs.map +1 -1
  73. package/dist/lib/feed-item-pill/feed-item-pill.js +56 -53
  74. package/dist/lib/feed-item-pill/feed-item-pill.js.map +1 -1
  75. package/dist/lib/feed-item-row/feed-item-row.cjs +1 -1
  76. package/dist/lib/feed-item-row/feed-item-row.cjs.map +1 -1
  77. package/dist/lib/feed-item-row/feed-item-row.js +11 -11
  78. package/dist/lib/feed-item-row/feed-item-row.js.map +1 -1
  79. package/dist/lib/filter-pill/filter-pill.cjs +2 -0
  80. package/dist/lib/filter-pill/filter-pill.cjs.map +1 -0
  81. package/dist/lib/filter-pill/filter-pill.js +346 -0
  82. package/dist/lib/filter-pill/filter-pill.js.map +1 -0
  83. package/dist/lib/filter-pill/index.cjs +2 -0
  84. package/dist/lib/filter-pill/index.cjs.map +1 -0
  85. package/dist/lib/filter-pill/index.js +5 -0
  86. package/dist/lib/filter-pill/index.js.map +1 -0
  87. package/dist/lib/general-row/general-row.cjs +1 -1
  88. package/dist/lib/general-row/general-row.cjs.map +1 -1
  89. package/dist/lib/general-row/general-row.js +153 -99
  90. package/dist/lib/general-row/general-row.js.map +1 -1
  91. package/dist/lib/group-row/group-row.cjs +1 -1
  92. package/dist/lib/group-row/group-row.cjs.map +1 -1
  93. package/dist/lib/group-row/group-row.js +1 -1
  94. package/dist/lib/group-row/group-row.js.map +1 -1
  95. package/dist/lib/grouped-chip/grouped-chip.cjs +1 -1
  96. package/dist/lib/grouped-chip/grouped-chip.cjs.map +1 -1
  97. package/dist/lib/grouped-chip/grouped-chip.js +31 -31
  98. package/dist/lib/grouped-chip/grouped-chip.js.map +1 -1
  99. package/dist/lib/input/input.cjs +1 -1
  100. package/dist/lib/input/input.cjs.map +1 -1
  101. package/dist/lib/input/input.js +53 -42
  102. package/dist/lib/input/input.js.map +1 -1
  103. package/dist/lib/item-layout/item-layout.cjs +3 -3
  104. package/dist/lib/item-layout/item-layout.cjs.map +1 -1
  105. package/dist/lib/item-layout/item-layout.js +74 -39
  106. package/dist/lib/item-layout/item-layout.js.map +1 -1
  107. package/dist/lib/kitchen-sink/kitchen-sink-view.cjs +2 -0
  108. package/dist/lib/kitchen-sink/kitchen-sink-view.cjs.map +1 -0
  109. package/dist/lib/kitchen-sink/kitchen-sink-view.js +263 -0
  110. package/dist/lib/kitchen-sink/kitchen-sink-view.js.map +1 -0
  111. package/dist/lib/link/link.cjs +1 -1
  112. package/dist/lib/link/link.cjs.map +1 -1
  113. package/dist/lib/link/link.js +21 -12
  114. package/dist/lib/link/link.js.map +1 -1
  115. package/dist/lib/list-item/list-item.cjs +1 -1
  116. package/dist/lib/list-item/list-item.cjs.map +1 -1
  117. package/dist/lib/list-item/list-item.js +25 -15
  118. package/dist/lib/list-item/list-item.js.map +1 -1
  119. package/dist/lib/loader/loader.cjs +13 -1
  120. package/dist/lib/loader/loader.cjs.map +1 -1
  121. package/dist/lib/loader/loader.js +31 -20
  122. package/dist/lib/loader/loader.js.map +1 -1
  123. package/dist/lib/message-input/message-input.cjs +1 -1
  124. package/dist/lib/message-input/message-input.cjs.map +1 -1
  125. package/dist/lib/message-input/message-input.js +44 -43
  126. package/dist/lib/message-input/message-input.js.map +1 -1
  127. package/dist/lib/mode-island/index.cjs +2 -0
  128. package/dist/lib/mode-island/index.cjs.map +1 -0
  129. package/dist/lib/mode-island/index.js +7 -0
  130. package/dist/lib/mode-island/index.js.map +1 -0
  131. package/dist/lib/mode-island/mode-island-constants.cjs +2 -0
  132. package/dist/lib/mode-island/mode-island-constants.cjs.map +1 -0
  133. package/dist/lib/mode-island/mode-island-constants.js +12 -0
  134. package/dist/lib/mode-island/mode-island-constants.js.map +1 -0
  135. package/dist/lib/mode-island/mode-island.cjs +2 -0
  136. package/dist/lib/mode-island/mode-island.cjs.map +1 -0
  137. package/dist/lib/mode-island/mode-island.js +130 -0
  138. package/dist/lib/mode-island/mode-island.js.map +1 -0
  139. package/dist/lib/mode-island/utils.cjs +2 -0
  140. package/dist/lib/mode-island/utils.cjs.map +1 -0
  141. package/dist/lib/mode-island/utils.js +32 -0
  142. package/dist/lib/mode-island/utils.js.map +1 -0
  143. package/dist/lib/mode-island/validators.cjs +2 -0
  144. package/dist/lib/mode-island/validators.cjs.map +1 -0
  145. package/dist/lib/mode-island/validators.js +12 -0
  146. package/dist/lib/mode-island/validators.js.map +1 -0
  147. package/dist/lib/pagination/pagination.cjs +1 -1
  148. package/dist/lib/pagination/pagination.cjs.map +1 -1
  149. package/dist/lib/pagination/pagination.js +15 -14
  150. package/dist/lib/pagination/pagination.js.map +1 -1
  151. package/dist/lib/popover/popover.cjs +1 -1
  152. package/dist/lib/popover/popover.cjs.map +1 -1
  153. package/dist/lib/popover/popover.js +1 -1
  154. package/dist/lib/popover/popover.js.map +1 -1
  155. package/dist/lib/progress-circle/index.cjs +2 -0
  156. package/dist/lib/progress-circle/index.cjs.map +1 -0
  157. package/dist/lib/progress-circle/index.js +10 -0
  158. package/dist/lib/progress-circle/index.js.map +1 -0
  159. package/dist/lib/progress-circle/progress-circle-constants.cjs +2 -0
  160. package/dist/lib/progress-circle/progress-circle-constants.cjs.map +1 -0
  161. package/dist/lib/progress-circle/progress-circle-constants.js +25 -0
  162. package/dist/lib/progress-circle/progress-circle-constants.js.map +1 -0
  163. package/dist/lib/progress-circle/progress-circle.cjs +2 -0
  164. package/dist/lib/progress-circle/progress-circle.cjs.map +1 -0
  165. package/dist/lib/progress-circle/progress-circle.js +136 -0
  166. package/dist/lib/progress-circle/progress-circle.js.map +1 -0
  167. package/dist/lib/rich-text-editor/rich-text-editor.cjs +2 -2
  168. package/dist/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
  169. package/dist/lib/rich-text-editor/rich-text-editor.js +115 -97
  170. package/dist/lib/rich-text-editor/rich-text-editor.js.map +1 -1
  171. package/dist/lib/root-layout/root-layout-constants.cjs +1 -1
  172. package/dist/lib/root-layout/root-layout-constants.cjs.map +1 -1
  173. package/dist/lib/root-layout/root-layout-constants.js +4 -2
  174. package/dist/lib/root-layout/root-layout-constants.js.map +1 -1
  175. package/dist/lib/root-layout/root-layout.cjs +1 -1
  176. package/dist/lib/root-layout/root-layout.cjs.map +1 -1
  177. package/dist/lib/root-layout/root-layout.js +9 -10
  178. package/dist/lib/root-layout/root-layout.js.map +1 -1
  179. package/dist/lib/settings-menu-button/settings-menu-button.cjs +1 -1
  180. package/dist/lib/settings-menu-button/settings-menu-button.cjs.map +1 -1
  181. package/dist/lib/settings-menu-button/settings-menu-button.js +14 -15
  182. package/dist/lib/settings-menu-button/settings-menu-button.js.map +1 -1
  183. package/dist/lib/split-button/split-button-alpha.cjs +1 -1
  184. package/dist/lib/split-button/split-button-alpha.cjs.map +1 -1
  185. package/dist/lib/split-button/split-button-alpha.js +51 -28
  186. package/dist/lib/split-button/split-button-alpha.js.map +1 -1
  187. package/dist/lib/split-button/split-button.cjs +1 -1
  188. package/dist/lib/split-button/split-button.cjs.map +1 -1
  189. package/dist/lib/split-button/split-button.js +235 -89
  190. package/dist/lib/split-button/split-button.js.map +1 -1
  191. package/dist/lib/text/index.cjs +2 -0
  192. package/dist/lib/text/index.cjs.map +1 -0
  193. package/dist/lib/text/index.js +20 -0
  194. package/dist/lib/text/index.js.map +1 -0
  195. package/dist/lib/text/text-constants.cjs +2 -0
  196. package/dist/lib/text/text-constants.cjs.map +1 -0
  197. package/dist/lib/text/text-constants.js +69 -0
  198. package/dist/lib/text/text-constants.js.map +1 -0
  199. package/dist/lib/text/text-tone-tokens.cjs +2 -0
  200. package/dist/lib/text/text-tone-tokens.cjs.map +1 -0
  201. package/dist/lib/text/text-tone-tokens.js +33 -0
  202. package/dist/lib/text/text-tone-tokens.js.map +1 -0
  203. package/dist/lib/text/text.cjs +2 -0
  204. package/dist/lib/text/text.cjs.map +1 -0
  205. package/dist/lib/text/text.js +203 -0
  206. package/dist/lib/text/text.js.map +1 -0
  207. package/dist/lib/top-banner-info/top-banner-info.cjs +1 -1
  208. package/dist/lib/top-banner-info/top-banner-info.cjs.map +1 -1
  209. package/dist/lib/top-banner-info/top-banner-info.js +16 -16
  210. package/dist/lib/top-banner-info/top-banner-info.js.map +1 -1
  211. package/dist/localization/en-US.cjs +2 -0
  212. package/dist/localization/en-US.cjs.map +1 -1
  213. package/dist/localization/en-US.js +2 -0
  214. package/dist/localization/en-US.js.map +1 -1
  215. package/dist/localization/es-LA.cjs +1 -1
  216. package/dist/localization/es-LA.cjs.map +1 -1
  217. package/dist/localization/es-LA.js +1 -1
  218. package/dist/localization/es-LA.js.map +1 -1
  219. package/dist/localization/it-IT.cjs +3 -3
  220. package/dist/localization/it-IT.cjs.map +1 -1
  221. package/dist/localization/it-IT.js +3 -3
  222. package/dist/localization/it-IT.js.map +1 -1
  223. package/dist/localization/nl-NL.cjs +2 -2
  224. package/dist/localization/nl-NL.cjs.map +1 -1
  225. package/dist/localization/nl-NL.js +2 -2
  226. package/dist/localization/nl-NL.js.map +1 -1
  227. package/dist/localization/ru-RU.cjs +1 -1
  228. package/dist/localization/ru-RU.cjs.map +1 -1
  229. package/dist/localization/ru-RU.js +1 -1
  230. package/dist/localization/ru-RU.js.map +1 -1
  231. package/dist/localization/zh-CN.cjs +1 -1
  232. package/dist/localization/zh-CN.cjs.map +1 -1
  233. package/dist/localization/zh-CN.js +1 -1
  234. package/dist/localization/zh-CN.js.map +1 -1
  235. package/dist/node_modules/@tiptap/vue-3.cjs.map +1 -1
  236. package/dist/node_modules/@tiptap/vue-3.js.map +1 -1
  237. package/dist/style.css +1 -1
  238. package/dist/types/common/mixins/keyboard_list_navigation.d.ts.map +1 -1
  239. package/dist/types/common/sr_only_close_button.vue.d.ts +20 -2
  240. package/dist/types/components/avatar/avatar.vue.d.ts +71 -25
  241. package/dist/types/components/avatar/avatar.vue.d.ts.map +1 -1
  242. package/dist/types/components/avatar/avatar_constants.d.ts +86 -29
  243. package/dist/types/components/avatar/avatar_constants.d.ts.map +1 -1
  244. package/dist/types/components/avatar/index.d.ts +1 -1
  245. package/dist/types/components/badge/badge.vue.d.ts.map +1 -1
  246. package/dist/types/components/banner/banner.vue.d.ts +40 -4
  247. package/dist/types/components/banner/banner.vue.d.ts.map +1 -1
  248. package/dist/types/components/breadcrumbs/breadcrumb_item.vue.d.ts +9 -0
  249. package/dist/types/components/breadcrumbs/breadcrumb_item.vue.d.ts.map +1 -1
  250. package/dist/types/components/breadcrumbs/breadcrumbs.vue.d.ts +9 -0
  251. package/dist/types/components/button/button.vue.d.ts +20 -2
  252. package/dist/types/components/button/button.vue.d.ts.map +1 -1
  253. package/dist/types/components/button/button_constants.d.ts +4 -0
  254. package/dist/types/components/button/button_constants.d.ts.map +1 -1
  255. package/dist/types/components/chip/chip.vue.d.ts +20 -2
  256. package/dist/types/components/chip/chip.vue.d.ts.map +1 -1
  257. package/dist/types/components/collapsible/collapsible.vue.d.ts +20 -2
  258. package/dist/types/components/collapsible/collapsible.vue.d.ts.map +1 -1
  259. package/dist/types/components/combobox/combobox.vue.d.ts +79 -13
  260. package/dist/types/components/combobox/combobox.vue.d.ts.map +1 -1
  261. package/dist/types/components/combobox/combobox_empty-list.vue.d.ts +39 -6
  262. package/dist/types/components/combobox/combobox_empty-list.vue.d.ts.map +1 -1
  263. package/dist/types/components/combobox/combobox_loading-list.vue.d.ts +39 -6
  264. package/dist/types/components/combobox/combobox_loading-list.vue.d.ts.map +1 -1
  265. package/dist/types/components/dropdown/dropdown.vue.d.ts +40 -4
  266. package/dist/types/components/dropdown/dropdown.vue.d.ts.map +1 -1
  267. package/dist/types/components/filter_pill/filter_pill.vue.d.ts +2016 -0
  268. package/dist/types/components/filter_pill/filter_pill.vue.d.ts.map +1 -0
  269. package/dist/types/components/filter_pill/index.d.ts +2 -0
  270. package/dist/types/components/filter_pill/index.d.ts.map +1 -0
  271. package/dist/types/components/hovercard/hovercard.vue.d.ts +80 -8
  272. package/dist/types/components/hovercard/hovercard.vue.d.ts.map +1 -1
  273. package/dist/types/components/image_viewer/image_viewer.vue.d.ts +40 -4
  274. package/dist/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
  275. package/dist/types/components/input/input.vue.d.ts.map +1 -1
  276. package/dist/types/components/item_layout/item_layout.vue.d.ts +36 -5
  277. package/dist/types/components/item_layout/item_layout.vue.d.ts.map +1 -1
  278. package/dist/types/components/link/link.vue.d.ts +9 -0
  279. package/dist/types/components/list_item/list_item.vue.d.ts +39 -6
  280. package/dist/types/components/list_item/list_item.vue.d.ts.map +1 -1
  281. package/dist/types/components/loader/loader.vue.d.ts +1 -32
  282. package/dist/types/components/loader/loader.vue.d.ts.map +1 -1
  283. package/dist/types/components/modal/modal.vue.d.ts +40 -4
  284. package/dist/types/components/modal/modal.vue.d.ts.map +1 -1
  285. package/dist/types/components/mode_island/index.d.ts +3 -0
  286. package/dist/types/components/mode_island/index.d.ts.map +1 -0
  287. package/dist/types/components/mode_island/mode_island.vue.d.ts +3 -0
  288. package/dist/types/components/mode_island/mode_island.vue.d.ts.map +1 -0
  289. package/dist/types/components/mode_island/mode_island_constants.d.ts +10 -0
  290. package/dist/types/components/mode_island/mode_island_constants.d.ts.map +1 -0
  291. package/dist/types/components/mode_island/utils.d.ts +12 -0
  292. package/dist/types/components/mode_island/utils.d.ts.map +1 -0
  293. package/dist/types/components/mode_island/validators.d.ts +6 -0
  294. package/dist/types/components/mode_island/validators.d.ts.map +1 -0
  295. package/dist/types/components/notice/notice.vue.d.ts +40 -4
  296. package/dist/types/components/notice/notice.vue.d.ts.map +1 -1
  297. package/dist/types/components/notice/notice_action.vue.d.ts +40 -4
  298. package/dist/types/components/notice/notice_action.vue.d.ts.map +1 -1
  299. package/dist/types/components/pagination/pagination.vue.d.ts +20 -2
  300. package/dist/types/components/pagination/pagination.vue.d.ts.map +1 -1
  301. package/dist/types/components/popover/popover.vue.d.ts +40 -4
  302. package/dist/types/components/popover/popover.vue.d.ts.map +1 -1
  303. package/dist/types/components/popover/popover_header_footer.vue.d.ts +20 -2
  304. package/dist/types/components/popover/popover_header_footer.vue.d.ts.map +1 -1
  305. package/dist/types/components/progress_circle/index.d.ts +3 -0
  306. package/dist/types/components/progress_circle/index.d.ts.map +1 -0
  307. package/dist/types/components/progress_circle/progress_circle.vue.d.ts +70 -0
  308. package/dist/types/components/progress_circle/progress_circle.vue.d.ts.map +1 -0
  309. package/dist/types/components/progress_circle/progress_circle_constants.d.ts +23 -0
  310. package/dist/types/components/progress_circle/progress_circle_constants.d.ts.map +1 -0
  311. package/dist/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +9 -0
  312. package/dist/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts.map +1 -1
  313. package/dist/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +9 -0
  314. package/dist/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts +71 -25
  315. package/dist/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts +39 -6
  316. package/dist/types/components/rich_text_editor/extensions/suggestion/SuggestionList.vue.d.ts.map +1 -1
  317. package/dist/types/components/rich_text_editor/extensions/variable/VariableComponent.vue.d.ts +61 -6
  318. package/dist/types/components/rich_text_editor/extensions/variable/VariableComponent.vue.d.ts.map +1 -1
  319. package/dist/types/components/rich_text_editor/extensions/variable/variable.d.ts.map +1 -1
  320. package/dist/types/components/root_layout/root_layout_constants.d.ts +2 -0
  321. package/dist/types/components/root_layout/root_layout_constants.d.ts.map +1 -1
  322. package/dist/types/components/split_button/split_button-alpha.vue.d.ts +21 -3
  323. package/dist/types/components/split_button/split_button-alpha.vue.d.ts.map +1 -1
  324. package/dist/types/components/split_button/split_button-omega.vue.d.ts +20 -2
  325. package/dist/types/components/split_button/split_button-omega.vue.d.ts.map +1 -1
  326. package/dist/types/components/split_button/split_button.vue.d.ts +214 -28
  327. package/dist/types/components/split_button/split_button.vue.d.ts.map +1 -1
  328. package/dist/types/components/tab/tab.vue.d.ts +20 -2
  329. package/dist/types/components/text/index.d.ts +3 -0
  330. package/dist/types/components/text/index.d.ts.map +1 -0
  331. package/dist/types/components/text/scripts/update-text-tone-tokens.d.cts +3 -0
  332. package/dist/types/components/text/scripts/update-text-tone-tokens.d.cts.map +1 -0
  333. package/dist/types/components/text/scripts/update_text_tone_tokens.d.cts +3 -0
  334. package/dist/types/components/text/scripts/update_text_tone_tokens.d.cts.map +1 -0
  335. package/dist/types/components/text/scripts/update_text_tone_tokens.d.ts +1 -0
  336. package/dist/types/components/text/scripts/update_text_tone_tokens.d.ts.map +1 -0
  337. package/dist/types/components/text/text.vue.d.ts +141 -0
  338. package/dist/types/components/text/text.vue.d.ts.map +1 -0
  339. package/dist/types/components/text/text_constants.d.ts +73 -0
  340. package/dist/types/components/text/text_constants.d.ts.map +1 -0
  341. package/dist/types/components/text/text_tone_tokens.d.ts +3 -0
  342. package/dist/types/components/text/text_tone_tokens.d.ts.map +1 -0
  343. package/dist/types/components/toast/layouts/toast_layout_alternate.vue.d.ts +40 -4
  344. package/dist/types/components/toast/layouts/toast_layout_alternate.vue.d.ts.map +1 -1
  345. package/dist/types/components/toast/layouts/toast_layout_default.vue.d.ts +40 -4
  346. package/dist/types/components/toast/layouts/toast_layout_default.vue.d.ts.map +1 -1
  347. package/dist/types/components/toast/toast.vue.d.ts +160 -16
  348. package/dist/types/components/toast/toast.vue.d.ts.map +1 -1
  349. package/dist/types/index.d.ts +4 -0
  350. package/dist/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +20 -2
  351. package/dist/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts.map +1 -1
  352. package/dist/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts +80 -8
  353. package/dist/types/recipes/buttons/callbar_button_with_dropdown/callbar_button_with_dropdown.vue.d.ts.map +1 -1
  354. package/dist/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +80 -8
  355. package/dist/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts.map +1 -1
  356. package/dist/types/recipes/cards/ivr_node/ivr_node.vue.d.ts +60 -6
  357. package/dist/types/recipes/cards/ivr_node/ivr_node.vue.d.ts.map +1 -1
  358. package/dist/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts +20 -2
  359. package/dist/types/recipes/chips/grouped_chip/grouped_chip.vue.d.ts.map +1 -1
  360. package/dist/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +198 -30
  361. package/dist/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts.map +1 -1
  362. package/dist/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts +124 -12
  363. package/dist/types/recipes/conversation_view/attachment_carousel/attachment_carousel.vue.d.ts.map +1 -1
  364. package/dist/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts +104 -10
  365. package/dist/types/recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue.d.ts.map +1 -1
  366. package/dist/types/recipes/conversation_view/editor/EditorToolbarButton.vue.d.ts +20 -2
  367. package/dist/types/recipes/conversation_view/editor/EditorToolbarDropdownButton.vue.d.ts +60 -6
  368. package/dist/types/recipes/conversation_view/editor/EditorToolbarDropdownButton.vue.d.ts.map +1 -1
  369. package/dist/types/recipes/conversation_view/editor/EditorToolbarPopoverButton.vue.d.ts +60 -6
  370. package/dist/types/recipes/conversation_view/editor/EditorToolbarPopoverButton.vue.d.ts.map +1 -1
  371. package/dist/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts +20 -2
  372. package/dist/types/recipes/conversation_view/emoji_row/emoji_row.vue.d.ts.map +1 -1
  373. package/dist/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +56 -7
  374. package/dist/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts.map +1 -1
  375. package/dist/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +110 -31
  376. package/dist/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts.map +1 -1
  377. package/dist/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +56 -7
  378. package/dist/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts.map +1 -1
  379. package/dist/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts +20 -2
  380. package/dist/types/recipes/conversation_view/message_input/message_input_button.vue.d.ts.map +1 -1
  381. package/dist/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts +80 -8
  382. package/dist/types/recipes/conversation_view/message_input/message_input_link.vue.d.ts.map +1 -1
  383. package/dist/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts +20 -2
  384. package/dist/types/recipes/conversation_view/message_input/message_input_topbar.vue.d.ts.map +1 -1
  385. package/dist/types/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts +20 -2
  386. package/dist/types/recipes/header/settings_menu_button/settings_menu_button.vue.d.ts.map +1 -1
  387. package/dist/types/recipes/item_layout/contact_info/contact_info.vue.d.ts +107 -30
  388. package/dist/types/recipes/item_layout/contact_info/contact_info.vue.d.ts.map +1 -1
  389. package/dist/types/recipes/leftbar/callbox/callbox.vue.d.ts +71 -25
  390. package/dist/types/recipes/leftbar/callbox/callbox.vue.d.ts.map +1 -1
  391. package/dist/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts +20 -2
  392. package/dist/types/recipes/leftbar/contact_centers_row/contact_centers_row.vue.d.ts.map +1 -1
  393. package/dist/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +449 -28
  394. package/dist/types/recipes/leftbar/contact_row/contact_row.vue.d.ts.map +1 -1
  395. package/dist/types/recipes/leftbar/general_row/general_row.vue.d.ts +378 -3
  396. package/dist/types/recipes/leftbar/general_row/general_row.vue.d.ts.map +1 -1
  397. package/dist/types/recipes/leftbar/group_row/group_row.vue.d.ts +378 -3
  398. package/dist/types/recipes/leftbar/group_row/group_row.vue.d.ts.map +1 -1
  399. package/dist/types/recipes/notices/top_banner_info/top_banner_info.vue.d.ts.map +1 -1
  400. package/package.json +6 -5
  401. package/dist/types/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.d.ts +0 -30
  402. package/dist/types/recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"callbox.cjs","sources":["../../../recipes/leftbar/callbox/callbox.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-recipe-callbox\"\n :class=\"[$attrs.class, 'd-recipe-callbox']\"\n :style=\"$attrs.style\"\n >\n <div\n v-if=\"$slots.video\"\n data-qa=\"dt-recipe-callbox__video-wrapper\"\n class=\"d-recipe-callbox__video\"\n >\n <!-- @slot Slot for video stream -->\n <slot name=\"video\" />\n </div>\n <div\n data-qa=\"dt-recipe-callbox__main-content\"\n :class=\"['d-recipe-callbox__main-content', borderClass, { 'd-recipe-callbox--clickable': clickable }]\"\n >\n <div\n class=\"d-recipe-callbox__main-content-top\"\n >\n <dt-avatar\n v-if=\"shouldShowAvatar\"\n avatar-class=\"d-recipe-callbox__avatar\"\n :image-src=\"avatarSrc\"\n image-alt=\"\"\n :full-name=\"avatarFullName\"\n :seed=\"avatarSeed\"\n :clickable=\"clickable\"\n size=\"sm\"\n @click=\"handleClick\"\n >\n <template\n v-if=\"isOnHold\"\n #overlayIcon\n >\n <dt-icon-pause />\n </template>\n </dt-avatar>\n <div class=\"d-recipe-callbox__content\">\n <component\n :is=\"clickable ? 'button' : 'span'\"\n v-dt-tooltip=\"title\"\n data-qa=\"dt-recipe-callbox__title\"\n class=\"d-recipe-callbox__content-title\"\n tabindex=\"0\"\n @click=\"handleClick\"\n >\n {{ title }}\n </component>\n <div\n v-if=\"$slots.badge || badgeText\"\n data-qa=\"dt-recipe-callbox__badge-wrapper\"\n class=\"d-recipe-callbox__content-badge\"\n >\n <!-- @slot Slot for call center badge -->\n <slot name=\"badge\">\n <dt-badge\n :class=\"badgeClass\"\n :text=\"badgeText\"\n />\n </slot>\n </div>\n <div\n v-if=\"$slots.subtitle\"\n data-qa=\"dt-recipe-callbox__subtitle-wrapper\"\n class=\"d-recipe-callbox__content-subtitle\"\n >\n <!-- @slot Slot for subtitle -->\n <slot name=\"subtitle\" />\n </div>\n </div>\n <div\n v-if=\"$slots.right\"\n data-qa=\"dt-recipe-callbox__right-wrapper\"\n class=\"d-recipe-callbox__right\"\n >\n <!-- @slot Slot for right icons -->\n <slot name=\"right\" />\n </div>\n </div>\n <div\n v-if=\"$slots.bottom\"\n data-qa=\"dt-recipe-callbox__bottom-wrapper\"\n class=\"d-recipe-callbox__main-content-bottom\"\n >\n <slot name=\"bottom\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from './callbox_constants';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport DtBadge from '@/components/badge/badge.vue';\nimport { DtIconPause } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeCallbox',\n\n components: { DtBadge, DtAvatar, DtIconPause },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Text for the badge element\n */\n badgeText: {\n type: String,\n default: '',\n },\n\n /**\n * Color for the badge element\n * @values null, warning\n */\n badgeColor: {\n type: String,\n default: null,\n validator: (color) => color === null || Object.keys(CALLBOX_BADGE_COLORS).includes(color),\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar's full name, used to extract initials\n * to display if `avatarSrc` is empty.\n */\n avatarFullName: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox title\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox border color\n * @values default, ai, critical\n */\n borderColor: {\n type: String,\n default: 'default',\n validator: (color) => Object.keys(CALLBOX_BORDER_COLORS).includes(color),\n },\n\n /**\n * Makes the callbox avatar and title clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls the avatars overlay icon\n */\n isOnHold: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Callbox click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n computed: {\n shouldShowAvatar () {\n return this.avatarFullName || this.avatarSrc;\n },\n\n badgeClass () {\n return CALLBOX_BADGE_COLORS[this.badgeColor];\n },\n\n borderClass () {\n return CALLBOX_BORDER_COLORS[this.borderColor];\n },\n },\n\n methods: {\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtBadge","DtAvatar","DtIconPause","color","CALLBOX_BADGE_COLORS","CALLBOX_BORDER_COLORS","e","_hoisted_2","_hoisted_3","_createElementBlock","_normalizeClass","_ctx","_normalizeStyle","_openBlock","_hoisted_1","_renderSlot","_createElementVNode","$options","$props","_createBlock","_component_dt_avatar","_createVNode","_component_dt_icon_pause","_withDirectives","_resolveDynamicComponent","_hoisted_4","_component_dt_badge","_hoisted_5","_hoisted_6","_hoisted_7"],"mappings":"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"}
1
+ {"version":3,"file":"callbox.cjs","sources":["../../../recipes/leftbar/callbox/callbox.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-recipe-callbox\"\n :class=\"[$attrs.class, 'd-recipe-callbox']\"\n :style=\"$attrs.style\"\n >\n <div\n v-if=\"$slots.video\"\n data-qa=\"dt-recipe-callbox__video-wrapper\"\n class=\"d-recipe-callbox__video\"\n >\n <!-- @slot Slot for video stream -->\n <slot name=\"video\" />\n </div>\n <div\n data-qa=\"dt-recipe-callbox__main-content\"\n :class=\"['d-recipe-callbox__main-content', borderClass, { 'd-recipe-callbox--clickable': clickable }]\"\n >\n <div\n class=\"d-recipe-callbox__main-content-top\"\n >\n <dt-avatar\n v-if=\"shouldShowAvatar\"\n avatar-class=\"d-recipe-callbox__avatar\"\n :image-src=\"avatarSrc\"\n image-alt=\"\"\n :full-name=\"avatarFullName\"\n :seed=\"avatarSeed\"\n :clickable=\"clickable\"\n size=\"sm\"\n @click=\"handleClick\"\n >\n <template\n v-if=\"isOnHold\"\n #overlayIcon\n >\n <dt-icon-pause />\n </template>\n </dt-avatar>\n <div class=\"d-recipe-callbox__content\">\n <component\n :is=\"clickable ? 'button' : 'span'\"\n v-dt-tooltip=\"title\"\n data-qa=\"dt-recipe-callbox__title\"\n class=\"d-recipe-callbox__content-title\"\n tabindex=\"0\"\n @click=\"handleClick\"\n >\n {{ title }}\n </component>\n <div\n v-if=\"$slots.badge || badgeText\"\n data-qa=\"dt-recipe-callbox__badge-wrapper\"\n class=\"d-recipe-callbox__content-badge\"\n >\n <!-- @slot Slot for call center badge -->\n <slot name=\"badge\">\n <dt-badge\n :class=\"badgeClass\"\n :text=\"badgeText\"\n />\n </slot>\n </div>\n <div\n v-if=\"$slots.subtitle\"\n data-qa=\"dt-recipe-callbox__subtitle-wrapper\"\n class=\"d-recipe-callbox__content-subtitle\"\n >\n <!-- @slot Slot for subtitle -->\n <slot name=\"subtitle\" />\n </div>\n </div>\n <div\n v-if=\"$slots.end || $slots.right\"\n data-qa=\"dt-recipe-callbox__right-wrapper\"\n class=\"d-recipe-callbox__right\"\n >\n <!-- @slot Slot for end icons -->\n <slot\n v-if=\"$slots.end\"\n name=\"end\"\n />\n <!-- @slot @deprecated Use end -->\n <slot\n v-else\n name=\"right\"\n />\n </div>\n </div>\n <div\n v-if=\"$slots.blockEnd || $slots.bottom\"\n data-qa=\"dt-recipe-callbox__bottom-wrapper\"\n class=\"d-recipe-callbox__main-content-bottom\"\n >\n <!-- @slot Slot for block-end content -->\n <slot\n v-if=\"$slots.blockEnd\"\n name=\"blockEnd\"\n />\n <!-- @slot @deprecated Use blockEnd -->\n <slot\n v-else\n name=\"bottom\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from './callbox_constants';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport DtBadge from '@/components/badge/badge.vue';\nimport { DtIconPause } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeCallbox',\n\n components: { DtBadge, DtAvatar, DtIconPause },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Text for the badge element\n */\n badgeText: {\n type: String,\n default: '',\n },\n\n /**\n * Color for the badge element\n * @values null, warning\n */\n badgeColor: {\n type: String,\n default: null,\n validator: (color) => color === null || Object.keys(CALLBOX_BADGE_COLORS).includes(color),\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar's full name, used to extract initials\n * to display if `avatarSrc` is empty.\n */\n avatarFullName: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox title\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox border color\n * @values default, ai, critical\n */\n borderColor: {\n type: String,\n default: 'default',\n validator: (color) => Object.keys(CALLBOX_BORDER_COLORS).includes(color),\n },\n\n /**\n * Makes the callbox avatar and title clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls the avatars overlay icon\n */\n isOnHold: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Callbox click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n computed: {\n shouldShowAvatar () {\n return this.avatarFullName || this.avatarSrc;\n },\n\n badgeClass () {\n return CALLBOX_BADGE_COLORS[this.badgeColor];\n },\n\n borderClass () {\n return CALLBOX_BORDER_COLORS[this.borderColor];\n },\n },\n\n methods: {\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtBadge","DtAvatar","DtIconPause","color","CALLBOX_BADGE_COLORS","CALLBOX_BORDER_COLORS","e","_hoisted_2","_hoisted_3","_createElementBlock","_normalizeClass","_ctx","_normalizeStyle","_openBlock","_hoisted_1","_renderSlot","_createElementVNode","$options","$props","_createBlock","_component_dt_avatar","_createVNode","_component_dt_icon_pause","_withDirectives","_resolveDynamicComponent","_hoisted_4","_component_dt_badge","_hoisted_5","_hoisted_6","_hoisted_7"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { CALLBOX_BORDER_COLORS as n, CALLBOX_BADGE_COLORS as _ } from "./callbox-constants.js";
2
- import h from "../avatar/avatar.js";
3
- import k from "../badge/badge.js";
4
- import { DtIconPause as C } from "@dialpad/dialtone-icons/vue3";
5
- import { resolveComponent as r, resolveDirective as y, openBlock as a, createElementBlock as l, normalizeStyle as x, normalizeClass as s, renderSlot as i, createCommentVNode as o, createElementVNode as d, createBlock as b, createSlots as S, withCtx as m, createVNode as u, withDirectives as O, resolveDynamicComponent as D, createTextVNode as B, toDisplayString as w } from "vue";
1
+ import { CALLBOX_BORDER_COLORS as n, CALLBOX_BADGE_COLORS as b } from "./callbox-constants.js";
2
+ import g from "../avatar/avatar.js";
3
+ import h from "../badge/badge.js";
4
+ import { DtIconPause as y } from "@dialpad/dialtone-icons/vue3";
5
+ import { resolveComponent as i, resolveDirective as C, openBlock as a, createElementBlock as o, normalizeStyle as S, normalizeClass as r, renderSlot as l, createCommentVNode as c, createElementVNode as d, createBlock as _, createSlots as x, withCtx as m, createVNode as u, withDirectives as O, resolveDynamicComponent as D, createTextVNode as B, toDisplayString as w } from "vue";
6
6
  import { _ as q } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
7
- const A = {
7
+ const E = {
8
8
  compatConfig: { MODE: 3 },
9
9
  name: "DtRecipeCallbox",
10
- components: { DtBadge: k, DtAvatar: h, DtIconPause: C },
10
+ components: { DtBadge: h, DtAvatar: g, DtIconPause: y },
11
11
  inheritAttrs: !1,
12
12
  props: {
13
13
  /**
@@ -24,7 +24,7 @@ const A = {
24
24
  badgeColor: {
25
25
  type: String,
26
26
  default: null,
27
- validator: (e) => e === null || Object.keys(_).includes(e)
27
+ validator: (e) => e === null || Object.keys(b).includes(e)
28
28
  },
29
29
  /**
30
30
  * Optional avatar image url.
@@ -95,7 +95,7 @@ const A = {
95
95
  return this.avatarFullName || this.avatarSrc;
96
96
  },
97
97
  badgeClass() {
98
- return _[this.badgeColor];
98
+ return b[this.badgeColor];
99
99
  },
100
100
  borderClass() {
101
101
  return n[this.borderColor];
@@ -106,43 +106,43 @@ const A = {
106
106
  this.clickable && this.$emit("click", e);
107
107
  }
108
108
  }
109
- }, N = {
109
+ }, A = {
110
110
  key: 0,
111
111
  "data-qa": "dt-recipe-callbox__video-wrapper",
112
112
  class: "d-recipe-callbox__video"
113
- }, L = { class: "d-recipe-callbox__main-content-top" }, E = { class: "d-recipe-callbox__content" }, R = {
113
+ }, N = { class: "d-recipe-callbox__main-content-top" }, $ = { class: "d-recipe-callbox__content" }, L = {
114
114
  key: 0,
115
115
  "data-qa": "dt-recipe-callbox__badge-wrapper",
116
116
  class: "d-recipe-callbox__content-badge"
117
- }, T = {
117
+ }, R = {
118
118
  key: 1,
119
119
  "data-qa": "dt-recipe-callbox__subtitle-wrapper",
120
120
  class: "d-recipe-callbox__content-subtitle"
121
- }, V = {
121
+ }, T = {
122
122
  key: 1,
123
123
  "data-qa": "dt-recipe-callbox__right-wrapper",
124
124
  class: "d-recipe-callbox__right"
125
- }, z = {
125
+ }, V = {
126
126
  key: 0,
127
127
  "data-qa": "dt-recipe-callbox__bottom-wrapper",
128
128
  class: "d-recipe-callbox__main-content-bottom"
129
129
  };
130
- function F(e, j, t, H, I, c) {
131
- const p = r("dt-icon-pause"), v = r("dt-avatar"), f = r("dt-badge"), g = y("dt-tooltip");
132
- return a(), l("div", {
130
+ function z(e, F, t, j, H, s) {
131
+ const p = i("dt-icon-pause"), v = i("dt-avatar"), k = i("dt-badge"), f = C("dt-tooltip");
132
+ return a(), o("div", {
133
133
  "data-qa": "dt-recipe-callbox",
134
- class: s([e.$attrs.class, "d-recipe-callbox"]),
135
- style: x(e.$attrs.style)
134
+ class: r([e.$attrs.class, "d-recipe-callbox"]),
135
+ style: S(e.$attrs.style)
136
136
  }, [
137
- e.$slots.video ? (a(), l("div", N, [
138
- i(e.$slots, "video")
139
- ])) : o("", !0),
137
+ e.$slots.video ? (a(), o("div", A, [
138
+ l(e.$slots, "video")
139
+ ])) : c("", !0),
140
140
  d("div", {
141
141
  "data-qa": "dt-recipe-callbox__main-content",
142
- class: s(["d-recipe-callbox__main-content", c.borderClass, { "d-recipe-callbox--clickable": t.clickable }])
142
+ class: r(["d-recipe-callbox__main-content", s.borderClass, { "d-recipe-callbox--clickable": t.clickable }])
143
143
  }, [
144
- d("div", L, [
145
- c.shouldShowAvatar ? (a(), b(v, {
144
+ d("div", N, [
145
+ s.shouldShowAvatar ? (a(), _(v, {
146
146
  key: 0,
147
147
  "avatar-class": "d-recipe-callbox__avatar",
148
148
  "image-src": t.avatarSrc,
@@ -151,8 +151,8 @@ function F(e, j, t, H, I, c) {
151
151
  seed: t.avatarSeed,
152
152
  clickable: t.clickable,
153
153
  size: "sm",
154
- onClick: c.handleClick
155
- }, S({ _: 2 }, [
154
+ onClick: s.handleClick
155
+ }, x({ _: 2 }, [
156
156
  t.isOnHold ? {
157
157
  name: "overlayIcon",
158
158
  fn: m(() => [
@@ -160,44 +160,44 @@ function F(e, j, t, H, I, c) {
160
160
  ]),
161
161
  key: "0"
162
162
  } : void 0
163
- ]), 1032, ["image-src", "full-name", "seed", "clickable", "onClick"])) : o("", !0),
164
- d("div", E, [
165
- O((a(), b(D(t.clickable ? "button" : "span"), {
163
+ ]), 1032, ["image-src", "full-name", "seed", "clickable", "onClick"])) : c("", !0),
164
+ d("div", $, [
165
+ O((a(), _(D(t.clickable ? "button" : "span"), {
166
166
  "data-qa": "dt-recipe-callbox__title",
167
167
  class: "d-recipe-callbox__content-title",
168
168
  tabindex: "0",
169
- onClick: c.handleClick
169
+ onClick: s.handleClick
170
170
  }, {
171
171
  default: m(() => [
172
172
  B(w(t.title), 1)
173
173
  ]),
174
174
  _: 1
175
175
  }, 8, ["onClick"])), [
176
- [g, t.title]
176
+ [f, t.title]
177
177
  ]),
178
- e.$slots.badge || t.badgeText ? (a(), l("div", R, [
179
- i(e.$slots, "badge", {}, () => [
180
- u(f, {
181
- class: s(c.badgeClass),
178
+ e.$slots.badge || t.badgeText ? (a(), o("div", L, [
179
+ l(e.$slots, "badge", {}, () => [
180
+ u(k, {
181
+ class: r(s.badgeClass),
182
182
  text: t.badgeText
183
183
  }, null, 8, ["class", "text"])
184
184
  ])
185
- ])) : o("", !0),
186
- e.$slots.subtitle ? (a(), l("div", T, [
187
- i(e.$slots, "subtitle")
188
- ])) : o("", !0)
185
+ ])) : c("", !0),
186
+ e.$slots.subtitle ? (a(), o("div", R, [
187
+ l(e.$slots, "subtitle")
188
+ ])) : c("", !0)
189
189
  ]),
190
- e.$slots.right ? (a(), l("div", V, [
191
- i(e.$slots, "right")
192
- ])) : o("", !0)
190
+ e.$slots.end || e.$slots.right ? (a(), o("div", T, [
191
+ e.$slots.end ? l(e.$slots, "end", { key: 0 }) : l(e.$slots, "right", { key: 1 })
192
+ ])) : c("", !0)
193
193
  ]),
194
- e.$slots.bottom ? (a(), l("div", z, [
195
- i(e.$slots, "bottom")
196
- ])) : o("", !0)
194
+ e.$slots.blockEnd || e.$slots.bottom ? (a(), o("div", V, [
195
+ e.$slots.blockEnd ? l(e.$slots, "blockEnd", { key: 0 }) : l(e.$slots, "bottom", { key: 1 })
196
+ ])) : c("", !0)
197
197
  ], 2)
198
198
  ], 6);
199
199
  }
200
- const K = /* @__PURE__ */ q(A, [["render", F]]);
200
+ const K = /* @__PURE__ */ q(E, [["render", z]]);
201
201
  export {
202
202
  K as default
203
203
  };
@@ -1 +1 @@
1
- {"version":3,"file":"callbox.js","sources":["../../../recipes/leftbar/callbox/callbox.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-recipe-callbox\"\n :class=\"[$attrs.class, 'd-recipe-callbox']\"\n :style=\"$attrs.style\"\n >\n <div\n v-if=\"$slots.video\"\n data-qa=\"dt-recipe-callbox__video-wrapper\"\n class=\"d-recipe-callbox__video\"\n >\n <!-- @slot Slot for video stream -->\n <slot name=\"video\" />\n </div>\n <div\n data-qa=\"dt-recipe-callbox__main-content\"\n :class=\"['d-recipe-callbox__main-content', borderClass, { 'd-recipe-callbox--clickable': clickable }]\"\n >\n <div\n class=\"d-recipe-callbox__main-content-top\"\n >\n <dt-avatar\n v-if=\"shouldShowAvatar\"\n avatar-class=\"d-recipe-callbox__avatar\"\n :image-src=\"avatarSrc\"\n image-alt=\"\"\n :full-name=\"avatarFullName\"\n :seed=\"avatarSeed\"\n :clickable=\"clickable\"\n size=\"sm\"\n @click=\"handleClick\"\n >\n <template\n v-if=\"isOnHold\"\n #overlayIcon\n >\n <dt-icon-pause />\n </template>\n </dt-avatar>\n <div class=\"d-recipe-callbox__content\">\n <component\n :is=\"clickable ? 'button' : 'span'\"\n v-dt-tooltip=\"title\"\n data-qa=\"dt-recipe-callbox__title\"\n class=\"d-recipe-callbox__content-title\"\n tabindex=\"0\"\n @click=\"handleClick\"\n >\n {{ title }}\n </component>\n <div\n v-if=\"$slots.badge || badgeText\"\n data-qa=\"dt-recipe-callbox__badge-wrapper\"\n class=\"d-recipe-callbox__content-badge\"\n >\n <!-- @slot Slot for call center badge -->\n <slot name=\"badge\">\n <dt-badge\n :class=\"badgeClass\"\n :text=\"badgeText\"\n />\n </slot>\n </div>\n <div\n v-if=\"$slots.subtitle\"\n data-qa=\"dt-recipe-callbox__subtitle-wrapper\"\n class=\"d-recipe-callbox__content-subtitle\"\n >\n <!-- @slot Slot for subtitle -->\n <slot name=\"subtitle\" />\n </div>\n </div>\n <div\n v-if=\"$slots.right\"\n data-qa=\"dt-recipe-callbox__right-wrapper\"\n class=\"d-recipe-callbox__right\"\n >\n <!-- @slot Slot for right icons -->\n <slot name=\"right\" />\n </div>\n </div>\n <div\n v-if=\"$slots.bottom\"\n data-qa=\"dt-recipe-callbox__bottom-wrapper\"\n class=\"d-recipe-callbox__main-content-bottom\"\n >\n <slot name=\"bottom\" />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from './callbox_constants';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport DtBadge from '@/components/badge/badge.vue';\nimport { DtIconPause } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeCallbox',\n\n components: { DtBadge, DtAvatar, DtIconPause },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Text for the badge element\n */\n badgeText: {\n type: String,\n default: '',\n },\n\n /**\n * Color for the badge element\n * @values null, warning\n */\n badgeColor: {\n type: String,\n default: null,\n validator: (color) => color === null || Object.keys(CALLBOX_BADGE_COLORS).includes(color),\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar's full name, used to extract initials\n * to display if `avatarSrc` is empty.\n */\n avatarFullName: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox title\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox border color\n * @values default, ai, critical\n */\n borderColor: {\n type: String,\n default: 'default',\n validator: (color) => Object.keys(CALLBOX_BORDER_COLORS).includes(color),\n },\n\n /**\n * Makes the callbox avatar and title clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls the avatars overlay icon\n */\n isOnHold: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Callbox click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n computed: {\n shouldShowAvatar () {\n return this.avatarFullName || this.avatarSrc;\n },\n\n badgeClass () {\n return CALLBOX_BADGE_COLORS[this.badgeColor];\n },\n\n borderClass () {\n return CALLBOX_BORDER_COLORS[this.borderColor];\n },\n },\n\n methods: {\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtBadge","DtAvatar","DtIconPause","color","CALLBOX_BADGE_COLORS","CALLBOX_BORDER_COLORS","_hoisted_2","_hoisted_3","_createElementBlock","_normalizeClass","_ctx","_normalizeStyle","_openBlock","_hoisted_1","_renderSlot","_createElementVNode","$options","$props","_createBlock","_component_dt_avatar","_createVNode","_component_dt_icon_pause","_withDirectives","_resolveDynamicComponent","_hoisted_4","_component_dt_badge","_hoisted_5","_hoisted_6","_hoisted_7"],"mappings":"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"}
1
+ {"version":3,"file":"callbox.js","sources":["../../../recipes/leftbar/callbox/callbox.vue"],"sourcesContent":["<template>\n <div\n data-qa=\"dt-recipe-callbox\"\n :class=\"[$attrs.class, 'd-recipe-callbox']\"\n :style=\"$attrs.style\"\n >\n <div\n v-if=\"$slots.video\"\n data-qa=\"dt-recipe-callbox__video-wrapper\"\n class=\"d-recipe-callbox__video\"\n >\n <!-- @slot Slot for video stream -->\n <slot name=\"video\" />\n </div>\n <div\n data-qa=\"dt-recipe-callbox__main-content\"\n :class=\"['d-recipe-callbox__main-content', borderClass, { 'd-recipe-callbox--clickable': clickable }]\"\n >\n <div\n class=\"d-recipe-callbox__main-content-top\"\n >\n <dt-avatar\n v-if=\"shouldShowAvatar\"\n avatar-class=\"d-recipe-callbox__avatar\"\n :image-src=\"avatarSrc\"\n image-alt=\"\"\n :full-name=\"avatarFullName\"\n :seed=\"avatarSeed\"\n :clickable=\"clickable\"\n size=\"sm\"\n @click=\"handleClick\"\n >\n <template\n v-if=\"isOnHold\"\n #overlayIcon\n >\n <dt-icon-pause />\n </template>\n </dt-avatar>\n <div class=\"d-recipe-callbox__content\">\n <component\n :is=\"clickable ? 'button' : 'span'\"\n v-dt-tooltip=\"title\"\n data-qa=\"dt-recipe-callbox__title\"\n class=\"d-recipe-callbox__content-title\"\n tabindex=\"0\"\n @click=\"handleClick\"\n >\n {{ title }}\n </component>\n <div\n v-if=\"$slots.badge || badgeText\"\n data-qa=\"dt-recipe-callbox__badge-wrapper\"\n class=\"d-recipe-callbox__content-badge\"\n >\n <!-- @slot Slot for call center badge -->\n <slot name=\"badge\">\n <dt-badge\n :class=\"badgeClass\"\n :text=\"badgeText\"\n />\n </slot>\n </div>\n <div\n v-if=\"$slots.subtitle\"\n data-qa=\"dt-recipe-callbox__subtitle-wrapper\"\n class=\"d-recipe-callbox__content-subtitle\"\n >\n <!-- @slot Slot for subtitle -->\n <slot name=\"subtitle\" />\n </div>\n </div>\n <div\n v-if=\"$slots.end || $slots.right\"\n data-qa=\"dt-recipe-callbox__right-wrapper\"\n class=\"d-recipe-callbox__right\"\n >\n <!-- @slot Slot for end icons -->\n <slot\n v-if=\"$slots.end\"\n name=\"end\"\n />\n <!-- @slot @deprecated Use end -->\n <slot\n v-else\n name=\"right\"\n />\n </div>\n </div>\n <div\n v-if=\"$slots.blockEnd || $slots.bottom\"\n data-qa=\"dt-recipe-callbox__bottom-wrapper\"\n class=\"d-recipe-callbox__main-content-bottom\"\n >\n <!-- @slot Slot for block-end content -->\n <slot\n v-if=\"$slots.blockEnd\"\n name=\"blockEnd\"\n />\n <!-- @slot @deprecated Use blockEnd -->\n <slot\n v-else\n name=\"bottom\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS } from './callbox_constants';\nimport DtAvatar from '@/components/avatar/avatar.vue';\nimport DtBadge from '@/components/badge/badge.vue';\nimport { DtIconPause } from '@dialpad/dialtone-icons/vue3';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeCallbox',\n\n components: { DtBadge, DtAvatar, DtIconPause },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Text for the badge element\n */\n badgeText: {\n type: String,\n default: '',\n },\n\n /**\n * Color for the badge element\n * @values null, warning\n */\n badgeColor: {\n type: String,\n default: null,\n validator: (color) => color === null || Object.keys(CALLBOX_BADGE_COLORS).includes(color),\n },\n\n /**\n * Optional avatar image url.\n * If not provided it will use the initial of the name.\n */\n avatarSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar's full name, used to extract initials\n * to display if `avatarSrc` is empty.\n */\n avatarFullName: {\n type: String,\n default: '',\n },\n\n /**\n * Avatar seed, set this to the user's ID to get the same avatar background gradient each time it is displayed.\n */\n avatarSeed: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox title\n */\n title: {\n type: String,\n default: '',\n },\n\n /**\n * Callbox border color\n * @values default, ai, critical\n */\n borderColor: {\n type: String,\n default: 'default',\n validator: (color) => Object.keys(CALLBOX_BORDER_COLORS).includes(color),\n },\n\n /**\n * Makes the callbox avatar and title clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Controls the avatars overlay icon\n */\n isOnHold: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Callbox click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n computed: {\n shouldShowAvatar () {\n return this.avatarFullName || this.avatarSrc;\n },\n\n badgeClass () {\n return CALLBOX_BADGE_COLORS[this.badgeColor];\n },\n\n borderClass () {\n return CALLBOX_BORDER_COLORS[this.borderColor];\n },\n },\n\n methods: {\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtBadge","DtAvatar","DtIconPause","color","CALLBOX_BADGE_COLORS","CALLBOX_BORDER_COLORS","_hoisted_2","_hoisted_3","_createElementBlock","_normalizeClass","_ctx","_normalizeStyle","_openBlock","_hoisted_1","_renderSlot","_createElementVNode","$options","$props","_createBlock","_component_dt_avatar","_createVNode","_component_dt_icon_pause","_withDirectives","_resolveDynamicComponent","_hoisted_4","_component_dt_badge","_hoisted_5","_hoisted_6","_hoisted_7"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("../combobox-with-popover/combobox-with-popover.cjs"),b=require("../input/input.cjs"),C=require("../chip/chip.cjs"),x=require("../validation-messages/validation-messages.cjs"),y=require("../../common/validators/index.cjs"),h=require("../../common/utils/index.cjs"),I=require("../popover/popover-constants.cjs"),p=require("./combobox-multi-select-constants.cjs"),s=require("vue"),w=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),_={compatConfig:{MODE:3},name:"DtRecipeComboboxMultiSelect",components:{DtRecipeComboboxWithPopover:f.default,DtInput:b.default,DtChip:C.default,DtValidationMessages:x.default},inheritAttrs:!1,props:{label:{type:String,required:!0},labelVisible:{type:Boolean,default:!0},description:{type:String,default:""},placeholder:{type:String,default:"Select one or start typing"},inputMessages:{type:Array,default:()=>[],validator:e=>y.validationMessageValidator(e)},showInputMessages:{type:Boolean,default:!0},loading:{type:Boolean,default:!1},loadingMessage:{type:String,default:"loading..."},showList:{type:Boolean,default:null},listMaxHeight:{type:String,default:"300px"},selectedItems:{type:Array,default:function(){return[]}},maxSelected:{type:Number,default:0},maxSelectedMessage:{type:Array,default:function(){return[]}},hasSuggestionList:{type:Boolean,default:!0},size:{type:String,default:"md",validator:e=>Object.values(p.MULTI_SELECT_SIZES).includes(e)},appendTo:{type:[HTMLElement,String],default:"body",validator:e=>I.POPOVER_APPEND_TO_VALUES.includes(e)||e instanceof HTMLElement},transition:{type:String,default:"fade"},collapseOnFocusOut:{type:Boolean,default:!1},listMaxWidth:{type:String,default:""},reservedRightSpace:{type:Number,default:64},chipMaxWidth:{type:String,default:""},inputClass:{type:[String,Object,Array],default:""},inputWrapperClass:{type:[String,Object,Array],default:""},disabled:{type:Boolean,default:!1}},emits:["input","select","remove","max-selected","keyup","keydown","combobox-highlight"],data(){return{value:"",popoverOffset:[0,4],showValidationMessages:!1,resizeWindowObserver:null,initialInputHeight:null,CHIP_SIZES:p.CHIP_SIZES,hasSlotContent:h.hasSlotContent,inputFocused:!1,hideInputText:!1}},computed:{inputPlaceHolder(){var e;return((e=this.selectedItems)==null?void 0:e.length)>0?"":this.placeholder},chipListeners(){return{keydown:e=>{this.onChipKeyDown(e),this.$emit("keydown",e)}}},inputListeners(){return{...h.extractVueListeners(this.$attrs),onInput:e=>{this.$emit("input",e),this.hasSuggestionList&&this.showComboboxList()},onKeydown:e=>{this.onInputKeyDown(e)},onKeyup:e=>{this.$emit("keyup",e)},onClick:()=>{this.hasSuggestionList&&this.showComboboxList()}}},chipWrapperClass(){return{[`d-recipe-combobox-multi-select__chip-wrapper-${this.size}--collapsed`]:!this.inputFocused&&this.collapseOnFocusOut}}},watch:{selectedItems:{deep:!0,handler:async function(){await this.initSelectedItems()}},chipMaxWidth:{async handler(){await this.initSelectedItems()}},async label(){await this.$nextTick(),this.setChipsTopPosition()},async description(){await this.$nextTick(),this.setChipsTopPosition()},size:{async handler(){await this.$nextTick();const e=this.getInput();this.revertInputPadding(e),this.initialInputHeight=e.getBoundingClientRect().height,this.setInputPadding(),this.setChipsTopPosition()}}},async mounted(){this.setInitialInputHeight(),this.resizeWindowObserver=new ResizeObserver(async()=>{this.setChipsTopPosition(),this.setInputPadding()}),this.resizeWindowObserver.observe(document.body),await this.initSelectedItems()},beforeUnmount(){var e;(e=this.resizeWindowObserver)==null||e.unobserve(document.body)},methods:{extractNonListeners:h.extractNonListeners,comboboxHighlight(e){this.$emit("combobox-highlight",e)},async initSelectedItems(){await this.$nextTick(),this.setInputPadding(),this.setChipsTopPosition(),this.setInputMinWidth(),this.checkMaxSelected()},onChipRemove(e){var t;this.$emit("remove",e),(t=this.$refs.input)==null||t.focus()},onComboboxSelect(e){this.loading||(this.value="",this.$emit("select",e))},showComboboxList(){var e;this.showList==null&&((e=this.$refs.comboboxWithPopover)==null||e.showComboboxList())},closeComboboxList(){var e;this.showList==null&&((e=this.$refs.comboboxWithPopover)==null||e.closeComboboxList())},getChips(){return!this.selectedItems.length||!this.$refs.chips?null:this.selectedItems.map(t=>this.$refs.chips.find(i=>{var n,o,r;return((r=(o=(n=h.returnFirstEl(i.$el))==null?void 0:n.querySelector(".d-chip__label"))==null?void 0:o.textContent)==null?void 0:r.trim())===t})).filter(Boolean).map(t=>h.returnFirstEl(t.$el))},getChipButtons(){const e=this.getChips();return e&&e.map(t=>h.returnFirstEl(t).querySelector("button"))},getLastChipButton(){const e=this.getChipButtons();return e&&e[e.length-1]},getLastChip(){const e=this.getChips();return e&&e[e.length-1]},getFirstChip(){const e=this.getChips();return e&&e[0]},getInput(){var e;return(e=this.$refs.input)==null?void 0:e.$refs.input},onChipKeyDown(e){var i;const t=(i=e.code)==null?void 0:i.toLowerCase();t==="arrowleft"?this.navigateBetweenChips(e.target,!0):t==="arrowright"&&(e.target.id===this.getLastChipButton().id?this.moveFromChipToInput():this.navigateBetweenChips(e.target,!1))},onInputKeyDown(e){var i;const t=(i=e.code)==null?void 0:i.toLowerCase();if(this.selectedItems.length>0&&e.target.selectionStart===0){if(e.target.selectionEnd!==e.target.selectionStart)return;(t==="backspace"||t==="arrowleft")&&this.moveFromInputToChip()}},moveFromInputToChip(){var e;this.getLastChipButton().focus(),(e=this.$refs.input)==null||e.blur(),this.closeComboboxList()},moveFromChipToInput(){var e;this.getLastChipButton().blur(),(e=this.$refs.input)==null||e.focus(),this.showComboboxList()},navigateBetweenChips(e,t){var n;const i=this.getChipButtons().indexOf(e),l=t?i-1:i+1;l<0||l>=((n=this.$refs.chips)==null?void 0:n.length)||(this.getChipButtons()[i].blur(),this.getChipButtons()[l].focus(),this.closeComboboxList())},setChipsTopPosition(){const e=this.getInput();if(!e)return;const t=this.$refs.inputSlotWrapper,i=e.getBoundingClientRect().top-t.getBoundingClientRect().top,l=this.$refs.chipsWrapper;l.style.top=i-p.CHIP_TOP_POSITION[this.size]+"px"},setInputPadding(){const e=this.getLastChip(),t=this.getInput(),i=this.$refs.chipsWrapper;if(!t||(this.revertInputPadding(t),this.popoverOffset=[0,4],!e)||this.collapseOnFocusOut&&!this.inputFocused)return;const l=e.offsetLeft+this.getFullWidth(e),n=t.getBoundingClientRect().width-l;n>this.reservedRightSpace?t.style.paddingLeft=l+"px":t.style.paddingLeft="4px";const o=i.getBoundingClientRect().height-4,r=e.getBoundingClientRect().height-4,u=n>this.reservedRightSpace?e.offsetTop+2:o+r-9;t.style.paddingTop=`${u}px`},revertInputPadding(e){e.style.paddingLeft="",e.style.paddingTop="",e.style.paddingBottom=""},getFullWidth(e){const t=window.getComputedStyle(e);return e.offsetWidth+parseInt(t.marginLeft)+parseInt(t.marginRight)},setInputMinWidth(){const e=this.getFirstChip(),t=this.getInput();t&&(e?t.style.minWidth=this.getFullWidth(e)+4+"px":t.style.minWidth="")},checkMaxSelected(){this.maxSelected!==0&&(this.selectedItems.length>this.maxSelected?(this.showValidationMessages=!0,this.$emit("max-selected")):this.showValidationMessages=!1)},setInitialInputHeight(){const e=this.getInput();e&&(this.initialInputHeight=e.getBoundingClientRect().height)},async handleInputFocusIn(){this.inputFocused=!0,this.collapseOnFocusOut&&(this.hideInputText=!1,await this.$nextTick(),this.setInputPadding())},async handleInputFocusOut(){if(this.inputFocused=!1,this.collapseOnFocusOut){this.hideInputText=!0;const e=this.getInput();if(!e||!e.style.paddingTop)return;this.revertInputPadding(e)}}}},S={ref:"header"},v={key:1,class:"d-recipe-combobox-multi-select__list--loading"},L={ref:"footer"};function M(e,t,i,l,n,o){const r=s.resolveComponent("dt-chip"),u=s.resolveComponent("dt-input"),c=s.resolveComponent("dt-validation-messages"),d=s.resolveComponent("dt-recipe-combobox-with-popover");return s.openBlock(),s.createBlock(d,s.mergeProps({ref:"comboboxWithPopover",label:i.label,"show-list":i.showList,"max-height":i.listMaxHeight,"max-width":i.listMaxWidth,"popover-offset":n.popoverOffset,"has-suggestion-list":i.hasSuggestionList,"content-width":"anchor","append-to":i.appendTo,transition:i.transition},o.extractNonListeners(e.$attrs),{onSelect:o.onComboboxSelect,onHighlight:o.comboboxHighlight}),s.createSlots({input:s.withCtx(({onInput:g})=>[s.createElementVNode("span",{ref:"inputSlotWrapper",class:"d-recipe-combobox-multi-select__input-wrapper",onFocusin:t[1]||(t[1]=(...a)=>o.handleInputFocusIn&&o.handleInputFocusIn(...a)),onFocusout:t[2]||(t[2]=(...a)=>o.handleInputFocusOut&&o.handleInputFocusOut(...a))},[s.createElementVNode("span",{ref:"chipsWrapper",class:s.normalizeClass(["d-recipe-combobox-multi-select__chip-wrapper",o.chipWrapperClass])},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(i.selectedItems,a=>(s.openBlock(),s.createBlock(r,s.mergeProps({ref_for:!0,ref:"chips",key:a,"label-class":["d-chip__label"],class:["d-recipe-combobox-multi-select__chip",{"d-recipe-combobox-multi-select__chip--truncate":!!i.chipMaxWidth}],style:{maxWidth:i.chipMaxWidth},size:n.CHIP_SIZES[i.size],disabled:i.disabled},s.toHandlers(o.chipListeners),{onKeydown:s.withKeys(m=>o.onChipRemove(a),["backspace"]),onClose:m=>o.onChipRemove(a)}),{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(a),1)]),_:2},1040,["class","style","size","disabled","onKeydown","onClose"]))),128))],2),s.createVNode(u,s.mergeProps({ref:"input",modelValue:n.value,"onUpdate:modelValue":t[0]||(t[0]=a=>n.value=a),class:"d-recipe-combobox-multi-select__input","input-class":[i.inputClass,{"d-recipe-combobox-multi-select__input--hidden":n.hideInputText}],"input-wrapper-class":i.inputWrapperClass,disabled:i.disabled,"aria-label":i.label,label:i.labelVisible?i.label:"",description:i.description,placeholder:o.inputPlaceHolder,"show-messages":i.showInputMessages,messages:i.inputMessages,size:i.size},o.inputListeners,{onInput:g}),null,16,["modelValue","input-class","input-wrapper-class","disabled","aria-label","label","description","placeholder","show-messages","messages","size","onInput"]),s.createVNode(c,{"validation-messages":i.maxSelectedMessage,"show-messages":n.showValidationMessages},null,8,["validation-messages","show-messages"])],544)]),list:s.withCtx(()=>[s.createElementVNode("div",{ref:"list",class:"d-recipe-combobox-multi-select__list",onMousedown:t[3]||(t[3]=s.withModifiers(()=>{},["prevent"]))},[i.loading?(s.openBlock(),s.createElementBlock("div",v,s.toDisplayString(i.loadingMessage),1)):s.renderSlot(e.$slots,"list",{key:0})],544)]),_:2},[n.hasSlotContent(e.$slots.header)?{name:"header",fn:s.withCtx(()=>[s.createElementVNode("div",S,[s.renderSlot(e.$slots,"header")],512)]),key:"0"}:void 0,n.hasSlotContent(e.$slots.footer)?{name:"footer",fn:s.withCtx(()=>[s.createElementVNode("div",L,[s.renderSlot(e.$slots,"footer")],512)]),key:"1"}:void 0]),1040,["label","show-list","max-height","max-width","popover-offset","has-suggestion-list","append-to","transition","onSelect","onHighlight"])}const W=w._(_,[["render",M]]);exports.default=W;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("../combobox-with-popover/combobox-with-popover.cjs"),b=require("../input/input.cjs"),C=require("../chip/chip.cjs"),x=require("../validation-messages/validation-messages.cjs"),y=require("../../common/validators/index.cjs"),h=require("../../common/utils/index.cjs"),I=require("../popover/popover-constants.cjs"),c=require("./combobox-multi-select-constants.cjs"),s=require("vue"),w=require("../../_plugin-vue_export-helper-BRilXfQE.cjs"),S={compatConfig:{MODE:3},name:"DtRecipeComboboxMultiSelect",components:{DtRecipeComboboxWithPopover:f.default,DtInput:b.default,DtChip:C.default,DtValidationMessages:x.default},inheritAttrs:!1,props:{label:{type:String,required:!0},labelVisible:{type:Boolean,default:!0},description:{type:String,default:""},placeholder:{type:String,default:"Select one or start typing"},inputMessages:{type:Array,default:()=>[],validator:e=>y.validationMessageValidator(e)},showInputMessages:{type:Boolean,default:!0},loading:{type:Boolean,default:!1},loadingMessage:{type:String,default:"loading..."},showList:{type:Boolean,default:null},listMaxHeight:{type:String,default:"300px"},selectedItems:{type:Array,default:function(){return[]}},maxSelected:{type:Number,default:0},maxSelectedMessage:{type:Array,default:function(){return[]}},hasSuggestionList:{type:Boolean,default:!0},size:{type:String,default:"md",validator:e=>Object.values(c.MULTI_SELECT_SIZES).includes(e)},appendTo:{type:[HTMLElement,String],default:"body",validator:e=>I.POPOVER_APPEND_TO_VALUES.includes(e)||e instanceof HTMLElement},transition:{type:String,default:"fade"},collapseOnFocusOut:{type:Boolean,default:!1},listMaxWidth:{type:String,default:""},reservedRightSpace:{type:Number,default:64},chipMaxWidth:{type:String,default:""},inputClass:{type:[String,Object,Array],default:""},inputWrapperClass:{type:[String,Object,Array],default:""},disabled:{type:Boolean,default:!1}},emits:["input","select","remove","max-selected","keyup","keydown","combobox-highlight"],data(){return{value:"",popoverOffset:[0,4],showValidationMessages:!1,resizeWindowObserver:null,initialInputHeight:null,CHIP_SIZES:c.CHIP_SIZES,hasSlotContent:h.hasSlotContent,inputFocused:!1,hideInputText:!1}},computed:{inputPlaceHolder(){var e;return((e=this.selectedItems)==null?void 0:e.length)>0?"":this.placeholder},chipListeners(){return{keydown:e=>{this.onChipKeyDown(e),this.$emit("keydown",e)}}},inputListeners(){return{...h.extractVueListeners(this.$attrs),onInput:e=>{this.$emit("input",e),this.hasSuggestionList&&this.showComboboxList()},onKeydown:e=>{this.onInputKeyDown(e)},onKeyup:e=>{this.$emit("keyup",e)},onClick:()=>{this.hasSuggestionList&&this.showComboboxList()}}},chipWrapperClass(){return{[`d-recipe-combobox-multi-select__chip-wrapper-${this.size}--collapsed`]:!this.inputFocused&&this.collapseOnFocusOut}}},watch:{selectedItems:{deep:!0,handler:async function(){await this.initSelectedItems()}},chipMaxWidth:{async handler(){await this.initSelectedItems()}},async label(){await this.$nextTick(),this.setChipsTopPosition()},async description(){await this.$nextTick(),this.setChipsTopPosition()},size:{async handler(){await this.$nextTick();const e=this.getInput();this.revertInputPadding(e),this.initialInputHeight=e.getBoundingClientRect().height,this.setInputPadding(),this.setChipsTopPosition()}}},async mounted(){this.setInitialInputHeight(),this.resizeWindowObserver=new ResizeObserver(async()=>{this.setChipsTopPosition(),this.setInputPadding()}),this.resizeWindowObserver.observe(document.body),await this.initSelectedItems()},beforeUnmount(){var e;(e=this.resizeWindowObserver)==null||e.unobserve(document.body)},methods:{extractNonListeners:h.extractNonListeners,comboboxHighlight(e){this.$emit("combobox-highlight",e)},async initSelectedItems(){await this.$nextTick(),this.setInputPadding(),this.setChipsTopPosition(),this.setInputMinWidth(),this.checkMaxSelected()},onChipRemove(e){var t;this.$emit("remove",e),(t=this.$refs.input)==null||t.focus()},onComboboxSelect(e){this.loading||(this.value="",this.$emit("select",e))},showComboboxList(){var e;this.showList==null&&((e=this.$refs.comboboxWithPopover)==null||e.showComboboxList())},closeComboboxList(){var e;this.showList==null&&((e=this.$refs.comboboxWithPopover)==null||e.closeComboboxList())},getChips(){return!this.selectedItems.length||!this.$refs.chips?null:this.selectedItems.map(t=>this.$refs.chips.find(i=>{var o,n,r;return((r=(n=(o=h.returnFirstEl(i.$el))==null?void 0:o.querySelector(".d-chip__label"))==null?void 0:n.textContent)==null?void 0:r.trim())===t})).filter(Boolean).map(t=>h.returnFirstEl(t.$el))},getChipButtons(){const e=this.getChips();return e&&e.map(t=>h.returnFirstEl(t).querySelector("button"))},getLastChipButton(){const e=this.getChipButtons();return e&&e[e.length-1]},getLastChip(){const e=this.getChips();return e&&e[e.length-1]},getFirstChip(){const e=this.getChips();return e&&e[0]},getInput(){var e;return(e=this.$refs.input)==null?void 0:e.$refs.input},onChipKeyDown(e){var i;const t=(i=e.code)==null?void 0:i.toLowerCase();t==="arrowleft"?this.navigateBetweenChips(e.target,!0):t==="arrowright"&&(e.target.id===this.getLastChipButton().id?this.moveFromChipToInput():this.navigateBetweenChips(e.target,!1))},onInputKeyDown(e){var i;const t=(i=e.code)==null?void 0:i.toLowerCase();if(this.selectedItems.length>0&&e.target.selectionStart===0){if(e.target.selectionEnd!==e.target.selectionStart)return;(t==="backspace"||t==="arrowleft")&&this.moveFromInputToChip()}},moveFromInputToChip(){var e;this.getLastChipButton().focus(),(e=this.$refs.input)==null||e.blur(),this.closeComboboxList()},moveFromChipToInput(){var e;this.getLastChipButton().blur(),(e=this.$refs.input)==null||e.focus(),this.showComboboxList()},navigateBetweenChips(e,t){var o;const i=this.getChipButtons().indexOf(e),l=t?i-1:i+1;l<0||l>=((o=this.$refs.chips)==null?void 0:o.length)||(this.getChipButtons()[i].blur(),this.getChipButtons()[l].focus(),this.closeComboboxList())},setChipsTopPosition(){const e=this.getInput();if(!e)return;const t=this.$refs.inputSlotWrapper,i=e.getBoundingClientRect().top-t.getBoundingClientRect().top,l=this.$refs.chipsWrapper;l.style.top=i-c.CHIP_TOP_POSITION[this.size]+"px"},setInputPadding(){const e=this.getLastChip(),t=this.getInput(),i=this.$refs.chipsWrapper;if(!t||(this.revertInputPadding(t),this.popoverOffset=[0,4],!e)||this.collapseOnFocusOut&&!this.inputFocused)return;const l=e.offsetLeft+this.getFullWidth(e),o=t.getBoundingClientRect().width-l;o>this.reservedRightSpace?t.style.paddingInlineStart=l+"px":t.style.paddingInlineStart="4px";const n=i.getBoundingClientRect().height-4,r=e.getBoundingClientRect().height-4,u=o>this.reservedRightSpace?e.offsetTop+2:n+r-9;t.style.paddingBlockStart=`${u}px`},revertInputPadding(e){e.style.paddingInlineStart="",e.style.paddingBlockStart="",e.style.paddingBlockEnd=""},getFullWidth(e){const t=window.getComputedStyle(e);return e.offsetWidth+parseInt(t.marginLeft)+parseInt(t.marginRight)},setInputMinWidth(){const e=this.getFirstChip(),t=this.getInput();t&&(e?t.style.minWidth=this.getFullWidth(e)+4+"px":t.style.minWidth="")},checkMaxSelected(){this.maxSelected!==0&&(this.selectedItems.length>this.maxSelected?(this.showValidationMessages=!0,this.$emit("max-selected")):this.showValidationMessages=!1)},setInitialInputHeight(){const e=this.getInput();e&&(this.initialInputHeight=e.getBoundingClientRect().height)},async handleInputFocusIn(){this.inputFocused=!0,this.collapseOnFocusOut&&(this.hideInputText=!1,await this.$nextTick(),this.setInputPadding())},async handleInputFocusOut(){if(this.inputFocused=!1,this.collapseOnFocusOut){this.hideInputText=!0;const e=this.getInput();if(!e||!e.style.paddingTop)return;this.revertInputPadding(e)}}}},_={ref:"header"},v={key:1,class:"d-recipe-combobox-multi-select__list--loading"},L={ref:"footer"};function B(e,t,i,l,o,n){const r=s.resolveComponent("dt-chip"),u=s.resolveComponent("dt-input"),p=s.resolveComponent("dt-validation-messages"),d=s.resolveComponent("dt-recipe-combobox-with-popover");return s.openBlock(),s.createBlock(d,s.mergeProps({ref:"comboboxWithPopover",label:i.label,"show-list":i.showList,"max-height":i.listMaxHeight,"max-width":i.listMaxWidth,"popover-offset":o.popoverOffset,"has-suggestion-list":i.hasSuggestionList,"content-width":"anchor","append-to":i.appendTo,transition:i.transition},n.extractNonListeners(e.$attrs),{onSelect:n.onComboboxSelect,onHighlight:n.comboboxHighlight}),s.createSlots({input:s.withCtx(({onInput:g})=>[s.createElementVNode("span",{ref:"inputSlotWrapper",class:"d-recipe-combobox-multi-select__input-wrapper",onFocusin:t[1]||(t[1]=(...a)=>n.handleInputFocusIn&&n.handleInputFocusIn(...a)),onFocusout:t[2]||(t[2]=(...a)=>n.handleInputFocusOut&&n.handleInputFocusOut(...a))},[s.createElementVNode("span",{ref:"chipsWrapper",class:s.normalizeClass(["d-recipe-combobox-multi-select__chip-wrapper",n.chipWrapperClass])},[(s.openBlock(!0),s.createElementBlock(s.Fragment,null,s.renderList(i.selectedItems,a=>(s.openBlock(),s.createBlock(r,s.mergeProps({ref_for:!0,ref:"chips",key:a,"label-class":["d-chip__label"],class:["d-recipe-combobox-multi-select__chip",{"d-recipe-combobox-multi-select__chip--truncate":!!i.chipMaxWidth}],style:{maxWidth:i.chipMaxWidth},size:o.CHIP_SIZES[i.size],disabled:i.disabled},s.toHandlers(n.chipListeners),{onKeydown:s.withKeys(m=>n.onChipRemove(a),["backspace"]),onClose:m=>n.onChipRemove(a)}),{default:s.withCtx(()=>[s.createTextVNode(s.toDisplayString(a),1)]),_:2},1040,["class","style","size","disabled","onKeydown","onClose"]))),128))],2),s.createVNode(u,s.mergeProps({ref:"input",modelValue:o.value,"onUpdate:modelValue":t[0]||(t[0]=a=>o.value=a),class:"d-recipe-combobox-multi-select__input","input-class":[i.inputClass,{"d-recipe-combobox-multi-select__input--hidden":o.hideInputText}],"input-wrapper-class":i.inputWrapperClass,disabled:i.disabled,"aria-label":i.label,label:i.labelVisible?i.label:"",description:i.description,placeholder:n.inputPlaceHolder,"show-messages":i.showInputMessages,messages:i.inputMessages,size:i.size},n.inputListeners,{onInput:g}),null,16,["modelValue","input-class","input-wrapper-class","disabled","aria-label","label","description","placeholder","show-messages","messages","size","onInput"]),s.createVNode(p,{"validation-messages":i.maxSelectedMessage,"show-messages":o.showValidationMessages},null,8,["validation-messages","show-messages"])],544)]),list:s.withCtx(()=>[s.createElementVNode("div",{ref:"list",class:"d-recipe-combobox-multi-select__list",onMousedown:t[3]||(t[3]=s.withModifiers(()=>{},["prevent"]))},[i.loading?(s.openBlock(),s.createElementBlock("div",v,s.toDisplayString(i.loadingMessage),1)):s.renderSlot(e.$slots,"list",{key:0})],544)]),_:2},[o.hasSlotContent(e.$slots.header)?{name:"header",fn:s.withCtx(()=>[s.createElementVNode("div",_,[s.renderSlot(e.$slots,"header")],512)]),key:"0"}:void 0,o.hasSlotContent(e.$slots.footer)?{name:"footer",fn:s.withCtx(()=>[s.createElementVNode("div",L,[s.renderSlot(e.$slots,"footer")],512)]),key:"1"}:void 0]),1040,["label","show-list","max-height","max-width","popover-offset","has-suggestion-list","append-to","transition","onSelect","onHighlight"])}const M=w._(S,[["render",B]]);exports.default=M;
2
2
  //# sourceMappingURL=combobox-multi-select.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"combobox-multi-select.cjs","sources":["../../../recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue"],"sourcesContent":["<!-- eslint-disable vue/no-static-inline-styles -->\n<template>\n <dt-recipe-combobox-with-popover\n ref=\"comboboxWithPopover\"\n :label=\"label\"\n :show-list=\"showList\"\n :max-height=\"listMaxHeight\"\n :max-width=\"listMaxWidth\"\n :popover-offset=\"popoverOffset\"\n :has-suggestion-list=\"hasSuggestionList\"\n content-width=\"anchor\"\n :append-to=\"appendTo\"\n :transition=\"transition\"\n v-bind=\"extractNonListeners($attrs)\"\n @select=\"onComboboxSelect\"\n @highlight=\"comboboxHighlight\"\n >\n <template #input=\"{ onInput }\">\n <span\n ref=\"inputSlotWrapper\"\n class=\"d-recipe-combobox-multi-select__input-wrapper\"\n @focusin=\"handleInputFocusIn\"\n @focusout=\"handleInputFocusOut\"\n >\n <span\n ref=\"chipsWrapper\"\n :class=\"['d-recipe-combobox-multi-select__chip-wrapper', chipWrapperClass]\"\n >\n <dt-chip\n v-for=\"item in selectedItems\"\n ref=\"chips\"\n :key=\"item\"\n :label-class=\"['d-chip__label']\"\n :class=\"[\n 'd-recipe-combobox-multi-select__chip',\n { 'd-recipe-combobox-multi-select__chip--truncate': !!chipMaxWidth },\n ]\"\n :style=\"{ maxWidth: chipMaxWidth }\"\n :size=\"CHIP_SIZES[size]\"\n :disabled=\"disabled\"\n v-on=\"chipListeners\"\n @keydown.backspace=\"onChipRemove(item)\"\n @close=\"onChipRemove(item)\"\n >\n {{ item }}\n </dt-chip>\n </span>\n\n <dt-input\n ref=\"input\"\n v-model=\"value\"\n class=\"d-recipe-combobox-multi-select__input\"\n :input-class=\"[\n inputClass, {\n 'd-recipe-combobox-multi-select__input--hidden': hideInputText,\n }]\"\n :input-wrapper-class=\"inputWrapperClass\"\n :disabled=\"disabled\"\n :aria-label=\"label\"\n :label=\"labelVisible ? label : ''\"\n :description=\"description\"\n :placeholder=\"inputPlaceHolder\"\n :show-messages=\"showInputMessages\"\n :messages=\"inputMessages\"\n :size=\"size\"\n v-bind=\"inputListeners\"\n @input=\"onInput\"\n />\n\n <dt-validation-messages\n :validation-messages=\"maxSelectedMessage\"\n :show-messages=\"showValidationMessages\"\n />\n </span>\n </template>\n\n <!-- @slot slot for popover header -->\n <template\n v-if=\"hasSlotContent($slots.header)\"\n #header\n >\n <div ref=\"header\">\n <slot name=\"header\" />\n </div>\n </template>\n\n <!-- @slot slot for popover list -->\n <template #list>\n <div\n ref=\"list\"\n class=\"d-recipe-combobox-multi-select__list\"\n @mousedown.prevent\n >\n <slot\n v-if=\"!loading\"\n name=\"list\"\n />\n <div\n v-else\n class=\"d-recipe-combobox-multi-select__list--loading\"\n >\n {{ loadingMessage }}\n </div>\n </div>\n </template>\n\n <!-- @slot slot for popover footer -->\n <template\n v-if=\"hasSlotContent($slots.footer)\"\n #footer\n >\n <div ref=\"footer\">\n <slot name=\"footer\" />\n </div>\n </template>\n </dt-recipe-combobox-with-popover>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport DtRecipeComboboxWithPopover from '@/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue';\nimport DtInput from '@/components/input/input.vue';\nimport DtChip from '@/components/chip/chip.vue';\nimport DtValidationMessages from '@/components/validation_messages/validation_messages.vue';\nimport { validationMessageValidator } from '@/common/validators';\nimport { extractVueListeners, extractNonListeners, hasSlotContent, returnFirstEl } from '@/common/utils';\nimport {\n POPOVER_APPEND_TO_VALUES,\n} from '@/components/popover/popover_constants';\nimport {\n MULTI_SELECT_SIZES,\n CHIP_SIZES,\n CHIP_TOP_POSITION,\n} from './combobox_multi_select_constants';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeComboboxMultiSelect',\n\n components: {\n DtRecipeComboboxWithPopover,\n DtInput,\n DtChip,\n DtValidationMessages,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Input placeholder\n */\n placeholder: {\n type: String,\n default: 'Select one or start typing',\n },\n\n /**\n * Input validation messages\n */\n inputMessages: {\n type: Array,\n default: () => [],\n validator: inputMessages => {\n return validationMessageValidator(inputMessages);\n },\n },\n\n /**\n * Show input validation message\n */\n showInputMessages: {\n type: Boolean,\n default: true,\n },\n\n // @TODO: https://dialpad.atlassian.net/browse/DP-52324\n // type: {\n // type: String,\n // values: ['input', 'select'],\n // default: 'select',\n // },\n\n /**\n * Determines if the list is loading\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The message when the list is loading\n */\n loadingMessage: {\n type: String,\n default: 'loading...',\n },\n\n /**\n * Determines when to show the list element and also controls the aria-expanded attribute.\n * Leaving this null will have the combobox trigger on input focus by default.\n * If you set this value, the default trigger behavior will be disabled and you can\n * control it as you need.\n */\n showList: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n listMaxHeight: {\n type: String,\n default: '300px',\n },\n\n /**\n * The selected items\n */\n selectedItems: {\n type: Array,\n default: function () { return []; },\n },\n\n /**\n * Would be the maximum number of selections you can make. 0 is unlimited\n */\n maxSelected: {\n type: Number,\n default: 0,\n },\n\n /**\n * Max select message when the max selections is exceeded with the structure:\n * `[{\"message\": string, \"type\": VALIDATION_MESSAGE_TYPES }]`\n */\n maxSelectedMessage: {\n type: Array,\n default: function () { return []; },\n },\n\n /**\n * Displays the list when the combobox is focused, before the user has typed anything.\n * When this is enabled the list will not close after selection.\n */\n hasSuggestionList: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the chip, one of `xs`, `sm`, `md`\n */\n size: {\n type: String,\n default: 'md',\n validator: (t) => Object.values(MULTI_SELECT_SIZES).includes(t),\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n\n /**\n * Determines whether the combobox should collapse to a single when losing focus.\n * @type {boolean}\n */\n collapseOnFocusOut: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|em\n */\n listMaxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Amount of reserved space (in px) on the right side of the input\n * before the chips and the input caret jump to the next line.\n * default is 64\n */\n reservedRightSpace: {\n type: Number,\n default: 64,\n },\n\n /**\n * Determines the maximum width of a single chip. If the text within this chip exceeds the value\n * it will be truncated with ellipses.\n * Possible units rem|px|em\n */\n chipMaxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the input element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n inputClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the input wrapper element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n inputWrapperClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * When true, disables the underlying input.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native input event\n *\n * @event input\n * @type {String }\n */\n 'input',\n\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when item removed\n *\n * @event remove\n * @type {String}\n */\n 'remove',\n\n /**\n * Event fired when max selected items limit is reached\n *\n * @event max-selected\n * @type {Object}\n */\n 'max-selected',\n\n /**\n * Native keyup event\n *\n * @event keyup\n * @type {KeyboardEvent}\n */\n 'keyup',\n\n /**\n * Native keydown event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n\n /**\n * Event fired when combobox item is highlighted\n *\n * @event combobox-highlight\n * @type {Object}\n */\n 'combobox-highlight',\n ],\n\n data () {\n return {\n value: '',\n popoverOffset: [0, 4],\n showValidationMessages: false,\n resizeWindowObserver: null,\n initialInputHeight: null,\n CHIP_SIZES,\n hasSlotContent,\n inputFocused: false,\n hideInputText: false,\n };\n },\n\n computed: {\n inputPlaceHolder () {\n return this.selectedItems?.length > 0 ? '' : this.placeholder;\n },\n\n chipListeners () {\n return {\n keydown: event => {\n this.onChipKeyDown(event);\n this.$emit('keydown', event);\n },\n };\n },\n\n inputListeners () {\n return {\n ...extractVueListeners(this.$attrs),\n onInput: event => {\n this.$emit('input', event);\n if (this.hasSuggestionList) {\n this.showComboboxList();\n }\n },\n\n onKeydown: event => {\n this.onInputKeyDown(event);\n },\n\n onKeyup: event => {\n this.$emit('keyup', event);\n },\n\n onClick: () => {\n if (this.hasSuggestionList) {\n this.showComboboxList();\n }\n },\n };\n },\n\n chipWrapperClass () {\n return {\n [`d-recipe-combobox-multi-select__chip-wrapper-${this.size}--collapsed`]: !this.inputFocused && this.collapseOnFocusOut,\n };\n },\n },\n\n watch: {\n selectedItems: {\n deep: true,\n handler: async function () {\n await this.initSelectedItems();\n },\n },\n\n chipMaxWidth: {\n async handler () {\n await this.initSelectedItems();\n },\n },\n\n async label () {\n await this.$nextTick();\n // Adjust the chips position if label changed\n this.setChipsTopPosition();\n },\n\n async description () {\n await this.$nextTick();\n // Adjust the chips position if description changed\n this.setChipsTopPosition();\n },\n\n size: {\n async handler () {\n await this.$nextTick();\n const input = this.getInput();\n this.revertInputPadding(input);\n this.initialInputHeight = input.getBoundingClientRect().height;\n this.setInputPadding();\n this.setChipsTopPosition();\n },\n },\n },\n\n async mounted () {\n this.setInitialInputHeight();\n // Recalculate chip position and input padding when resizing window\n this.resizeWindowObserver = new ResizeObserver(async () => {\n this.setChipsTopPosition();\n this.setInputPadding();\n });\n this.resizeWindowObserver.observe(document.body);\n\n await this.initSelectedItems();\n },\n\n beforeUnmount () {\n this.resizeWindowObserver?.unobserve(document.body);\n },\n\n methods: {\n extractNonListeners,\n comboboxHighlight (highlightIndex) {\n this.$emit('combobox-highlight', highlightIndex);\n },\n\n async initSelectedItems () {\n await this.$nextTick();\n this.setInputPadding();\n this.setChipsTopPosition();\n this.setInputMinWidth();\n this.checkMaxSelected();\n },\n\n onChipRemove (item) {\n this.$emit('remove', item);\n this.$refs.input?.focus();\n },\n\n onComboboxSelect (i) {\n if (this.loading) return;\n this.value = '';\n this.$emit('select', i);\n },\n\n showComboboxList () {\n if (this.showList != null) { return; }\n this.$refs.comboboxWithPopover?.showComboboxList();\n },\n\n closeComboboxList () {\n if (this.showList != null) { return; }\n this.$refs.comboboxWithPopover?.closeComboboxList();\n },\n\n getChips () {\n if (!this.selectedItems.length || !this.$refs.chips) return null;\n\n // use the order from selectedItems to not rely on DOM order which may be stale\n const chips = this.selectedItems.map(item => {\n return this.$refs.chips.find(chip => {\n const chipLabel = returnFirstEl(chip.$el)?.querySelector('.d-chip__label')?.textContent?.trim();\n return chipLabel === item;\n });\n });\n return chips.filter(Boolean).map(chip => returnFirstEl(chip.$el));\n },\n\n getChipButtons () {\n const chips = this.getChips();\n return chips && chips.map(chip => returnFirstEl(chip).querySelector('button'));\n },\n\n getLastChipButton () {\n const chipButtons = this.getChipButtons();\n return chipButtons && chipButtons[chipButtons.length - 1];\n },\n\n getLastChip () {\n const chips = this.getChips();\n return chips && chips[chips.length - 1];\n },\n\n getFirstChip () {\n const chips = this.getChips();\n return chips && chips[0];\n },\n\n getInput () {\n return this.$refs.input?.$refs.input;\n },\n\n onChipKeyDown (event) {\n const key = event.code?.toLowerCase();\n if (key === 'arrowleft') {\n // Move to the previous chip\n this.navigateBetweenChips(event.target, true);\n } else if (key === 'arrowright') {\n if (event.target.id === this.getLastChipButton().id) {\n // Move to the input if it's the last chip\n this.moveFromChipToInput();\n } else {\n // Move to the next chip\n this.navigateBetweenChips(event.target, false);\n }\n }\n },\n\n onInputKeyDown (event) {\n const key = event.code?.toLowerCase();\n // If the cursor is at the start of the text,\n // press 'backspace' or 'left' focuses the last chip\n if (this.selectedItems.length > 0 && event.target.selectionStart === 0) {\n // if there is selected text, do not focus the last chip\n if (event.target.selectionEnd !== event.target.selectionStart) {\n return;\n }\n if (key === 'backspace' || key === 'arrowleft') {\n this.moveFromInputToChip();\n }\n }\n },\n\n moveFromInputToChip () {\n this.getLastChipButton().focus();\n this.$refs.input?.blur();\n this.closeComboboxList();\n },\n\n moveFromChipToInput () {\n this.getLastChipButton().blur();\n this.$refs.input?.focus();\n this.showComboboxList();\n },\n\n navigateBetweenChips (target, toLeft) {\n const from = this.getChipButtons().indexOf(target);\n const to = toLeft ? from - 1 : from + 1;\n if (to < 0 || to >= this.$refs.chips?.length) {\n return;\n }\n this.getChipButtons()[from].blur();\n this.getChipButtons()[to].focus();\n this.closeComboboxList();\n },\n\n setChipsTopPosition () {\n // To place the chips in the input box\n // The chip \"top\" position should be the same line as the input box\n const input = this.getInput();\n if (!input) return;\n const inputSlotWrapper = this.$refs.inputSlotWrapper;\n const top = input.getBoundingClientRect().top -\n inputSlotWrapper.getBoundingClientRect().top;\n const chipsWrapper = this.$refs.chipsWrapper;\n chipsWrapper.style.top = (top - CHIP_TOP_POSITION[this.size]) + 'px';\n },\n\n setInputPadding () {\n const lastChip = this.getLastChip();\n const input = this.getInput();\n const chipsWrapper = this.$refs.chipsWrapper;\n if (!input) return;\n this.revertInputPadding(input);\n this.popoverOffset = [0, 4];\n if (!lastChip) return;\n // Avoid adding extra padding when the input is not focused if collapseOnFocusOut is true\n // This ensures the input returns to its original state when resizing\n if (this.collapseOnFocusOut && !this.inputFocused) return;\n\n // Get the position of the last chip\n // The input cursor should be the same \"top\" as that chip and next besides it\n const left = lastChip.offsetLeft + this.getFullWidth(lastChip);\n const spaceLeft = input.getBoundingClientRect().width - left;\n // input.style.paddingLeft = left + 'px';\n\n if (spaceLeft > this.reservedRightSpace) {\n input.style.paddingLeft = left + 'px';\n } else {\n input.style.paddingLeft = '4px';\n }\n\n // Get the chip wrapper height minus the 4px padding\n const chipsWrapperHeight = chipsWrapper.getBoundingClientRect().height - 4;\n const lastChipHeight = lastChip.getBoundingClientRect().height - 4;\n\n // Get lastChip offsetTop plus 2px of the input padding.\n const top = spaceLeft > this.reservedRightSpace\n ? lastChip.offsetTop + 2\n : (chipsWrapperHeight + lastChipHeight - 9);\n\n input.style.paddingTop = `${top}px`;\n },\n\n revertInputPadding (input) {\n input.style.paddingLeft = '';\n input.style.paddingTop = '';\n input.style.paddingBottom = '';\n },\n\n getFullWidth (el) {\n const styles = window.getComputedStyle(el);\n return el.offsetWidth + parseInt(styles.marginLeft) + parseInt(styles.marginRight);\n },\n\n setInputMinWidth () {\n // Ensure the width of the input is \"slightly bigger\" than the width of a single chip\n const firstChip = this.getFirstChip();\n const input = this.getInput();\n if (!input) return;\n if (firstChip) {\n // Add 4px buffer for typing room\n input.style.minWidth = (this.getFullWidth(firstChip) + 4) + 'px';\n } else {\n input.style.minWidth = '';\n }\n },\n\n checkMaxSelected () {\n if (this.maxSelected === 0) return;\n if (this.selectedItems.length > this.maxSelected) {\n this.showValidationMessages = true;\n this.$emit('max-selected');\n } else {\n this.showValidationMessages = false;\n }\n },\n\n setInitialInputHeight () {\n const input = this.getInput();\n if (!input) return;\n this.initialInputHeight = input.getBoundingClientRect().height;\n },\n\n async handleInputFocusIn () {\n this.inputFocused = true;\n if (this.collapseOnFocusOut) {\n this.hideInputText = false;\n await this.$nextTick();\n this.setInputPadding();\n }\n },\n\n async handleInputFocusOut () {\n this.inputFocused = false;\n if (this.collapseOnFocusOut) {\n this.hideInputText = true;\n const input = this.getInput();\n if (!input) return;\n // Hide the input text when is not on first line\n if (!input.style.paddingTop) {\n return;\n }\n this.revertInputPadding(input);\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtRecipeComboboxWithPopover","DtInput","DtChip","DtValidationMessages","inputMessages","validationMessageValidator","t","MULTI_SELECT_SIZES","appendTo","POPOVER_APPEND_TO_VALUES","CHIP_SIZES","hasSlotContent","_a","event","extractVueListeners","input","extractNonListeners","highlightIndex","item","i","chip","returnFirstEl","chips","chipButtons","key","target","toLeft","from","to","inputSlotWrapper","top","chipsWrapper","CHIP_TOP_POSITION","lastChip","left","spaceLeft","chipsWrapperHeight","lastChipHeight","el","styles","firstChip","_hoisted_1","_hoisted_3","_openBlock","_createBlock","_component_dt_recipe_combobox_with_popover","_mergeProps","$props","$data","$options","_ctx","_withCtx","onInput","_createElementVNode","args","_createElementBlock","_Fragment","_renderList","_component_dt_chip","_toHandlers","_withKeys","$event","_createVNode","_component_dt_input","_component_dt_validation_messages","_hoisted_2","_toDisplayString","_renderSlot"],"mappings":"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"}
1
+ {"version":3,"file":"combobox-multi-select.cjs","sources":["../../../recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue"],"sourcesContent":["<!-- eslint-disable vue/no-static-inline-styles -->\n<template>\n <dt-recipe-combobox-with-popover\n ref=\"comboboxWithPopover\"\n :label=\"label\"\n :show-list=\"showList\"\n :max-height=\"listMaxHeight\"\n :max-width=\"listMaxWidth\"\n :popover-offset=\"popoverOffset\"\n :has-suggestion-list=\"hasSuggestionList\"\n content-width=\"anchor\"\n :append-to=\"appendTo\"\n :transition=\"transition\"\n v-bind=\"extractNonListeners($attrs)\"\n @select=\"onComboboxSelect\"\n @highlight=\"comboboxHighlight\"\n >\n <template #input=\"{ onInput }\">\n <span\n ref=\"inputSlotWrapper\"\n class=\"d-recipe-combobox-multi-select__input-wrapper\"\n @focusin=\"handleInputFocusIn\"\n @focusout=\"handleInputFocusOut\"\n >\n <span\n ref=\"chipsWrapper\"\n :class=\"['d-recipe-combobox-multi-select__chip-wrapper', chipWrapperClass]\"\n >\n <dt-chip\n v-for=\"item in selectedItems\"\n ref=\"chips\"\n :key=\"item\"\n :label-class=\"['d-chip__label']\"\n :class=\"[\n 'd-recipe-combobox-multi-select__chip',\n { 'd-recipe-combobox-multi-select__chip--truncate': !!chipMaxWidth },\n ]\"\n :style=\"{ maxWidth: chipMaxWidth }\"\n :size=\"CHIP_SIZES[size]\"\n :disabled=\"disabled\"\n v-on=\"chipListeners\"\n @keydown.backspace=\"onChipRemove(item)\"\n @close=\"onChipRemove(item)\"\n >\n {{ item }}\n </dt-chip>\n </span>\n\n <dt-input\n ref=\"input\"\n v-model=\"value\"\n class=\"d-recipe-combobox-multi-select__input\"\n :input-class=\"[\n inputClass, {\n 'd-recipe-combobox-multi-select__input--hidden': hideInputText,\n }]\"\n :input-wrapper-class=\"inputWrapperClass\"\n :disabled=\"disabled\"\n :aria-label=\"label\"\n :label=\"labelVisible ? label : ''\"\n :description=\"description\"\n :placeholder=\"inputPlaceHolder\"\n :show-messages=\"showInputMessages\"\n :messages=\"inputMessages\"\n :size=\"size\"\n v-bind=\"inputListeners\"\n @input=\"onInput\"\n />\n\n <dt-validation-messages\n :validation-messages=\"maxSelectedMessage\"\n :show-messages=\"showValidationMessages\"\n />\n </span>\n </template>\n\n <!-- @slot slot for popover header -->\n <template\n v-if=\"hasSlotContent($slots.header)\"\n #header\n >\n <div ref=\"header\">\n <slot name=\"header\" />\n </div>\n </template>\n\n <!-- @slot slot for popover list -->\n <template #list>\n <div\n ref=\"list\"\n class=\"d-recipe-combobox-multi-select__list\"\n @mousedown.prevent\n >\n <slot\n v-if=\"!loading\"\n name=\"list\"\n />\n <div\n v-else\n class=\"d-recipe-combobox-multi-select__list--loading\"\n >\n {{ loadingMessage }}\n </div>\n </div>\n </template>\n\n <!-- @slot slot for popover footer -->\n <template\n v-if=\"hasSlotContent($slots.footer)\"\n #footer\n >\n <div ref=\"footer\">\n <slot name=\"footer\" />\n </div>\n </template>\n </dt-recipe-combobox-with-popover>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport DtRecipeComboboxWithPopover from '@/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue';\nimport DtInput from '@/components/input/input.vue';\nimport DtChip from '@/components/chip/chip.vue';\nimport DtValidationMessages from '@/components/validation_messages/validation_messages.vue';\nimport { validationMessageValidator } from '@/common/validators';\nimport { extractVueListeners, extractNonListeners, hasSlotContent, returnFirstEl } from '@/common/utils';\nimport {\n POPOVER_APPEND_TO_VALUES,\n} from '@/components/popover/popover_constants';\nimport {\n MULTI_SELECT_SIZES,\n CHIP_SIZES,\n CHIP_TOP_POSITION,\n} from './combobox_multi_select_constants';\n\nexport default {\n compatConfig: { MODE: 3 },\n name: 'DtRecipeComboboxMultiSelect',\n\n components: {\n DtRecipeComboboxWithPopover,\n DtInput,\n DtChip,\n DtValidationMessages,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * String to use for the input label.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Determines visibility of input label.\n * @values true, false\n */\n labelVisible: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Description for the input\n */\n description: {\n type: String,\n default: '',\n },\n\n /**\n * Input placeholder\n */\n placeholder: {\n type: String,\n default: 'Select one or start typing',\n },\n\n /**\n * Input validation messages\n */\n inputMessages: {\n type: Array,\n default: () => [],\n validator: inputMessages => {\n return validationMessageValidator(inputMessages);\n },\n },\n\n /**\n * Show input validation message\n */\n showInputMessages: {\n type: Boolean,\n default: true,\n },\n\n // @TODO: https://dialpad.atlassian.net/browse/DP-52324\n // type: {\n // type: String,\n // values: ['input', 'select'],\n // default: 'select',\n // },\n\n /**\n * Determines if the list is loading\n */\n loading: {\n type: Boolean,\n default: false,\n },\n\n /**\n * The message when the list is loading\n */\n loadingMessage: {\n type: String,\n default: 'loading...',\n },\n\n /**\n * Determines when to show the list element and also controls the aria-expanded attribute.\n * Leaving this null will have the combobox trigger on input focus by default.\n * If you set this value, the default trigger behavior will be disabled and you can\n * control it as you need.\n */\n showList: {\n type: Boolean,\n default: null,\n },\n\n /**\n * Determines maximum height for the popover before overflow.\n * Possible units rem|px|em\n */\n listMaxHeight: {\n type: String,\n default: '300px',\n },\n\n /**\n * The selected items\n */\n selectedItems: {\n type: Array,\n default: function () { return []; },\n },\n\n /**\n * Would be the maximum number of selections you can make. 0 is unlimited\n */\n maxSelected: {\n type: Number,\n default: 0,\n },\n\n /**\n * Max select message when the max selections is exceeded with the structure:\n * `[{\"message\": string, \"type\": VALIDATION_MESSAGE_TYPES }]`\n */\n maxSelectedMessage: {\n type: Array,\n default: function () { return []; },\n },\n\n /**\n * Displays the list when the combobox is focused, before the user has typed anything.\n * When this is enabled the list will not close after selection.\n */\n hasSuggestionList: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Size of the chip, one of `xs`, `sm`, `md`\n */\n size: {\n type: String,\n default: 'md',\n validator: (t) => Object.values(MULTI_SELECT_SIZES).includes(t),\n },\n\n /**\n * Sets the element to which the popover is going to append to.\n * 'body' will append to the nearest body (supports shadow DOM).\n * @values 'body', 'parent', HTMLElement,\n */\n appendTo: {\n type: [HTMLElement, String],\n default: 'body',\n validator: appendTo => {\n return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n (appendTo instanceof HTMLElement);\n },\n },\n\n /**\n * Named transition when the content display is toggled.\n * @see DtLazyShow\n */\n transition: {\n type: String,\n default: 'fade',\n },\n\n /**\n * Determines whether the combobox should collapse to a single when losing focus.\n * @type {boolean}\n */\n collapseOnFocusOut: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Determines maximum width for the popover before overflow.\n * Possible units rem|px|em\n */\n listMaxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Amount of reserved space (in px) on the right side of the input\n * before the chips and the input caret jump to the next line.\n * default is 64\n */\n reservedRightSpace: {\n type: Number,\n default: 64,\n },\n\n /**\n * Determines the maximum width of a single chip. If the text within this chip exceeds the value\n * it will be truncated with ellipses.\n * Possible units rem|px|em\n */\n chipMaxWidth: {\n type: String,\n default: '',\n },\n\n /**\n * Additional class name for the input element.\n * Can accept String, Object, and Array, i.e. has the\n * same API as Vue's built-in handling of the class attribute.\n */\n inputClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * Additional class name for the input wrapper element.\n * Can accept all of String, Object, and Array, i.e. has the\n * same api as Vue's built-in handling of the class attribute.\n */\n inputWrapperClass: {\n type: [String, Object, Array],\n default: '',\n },\n\n /**\n * When true, disables the underlying input.\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n emits: [\n /**\n * Native input event\n *\n * @event input\n * @type {String }\n */\n 'input',\n\n /**\n * Event fired when item selected\n *\n * @event select\n * @type {Number}\n */\n 'select',\n\n /**\n * Event fired when item removed\n *\n * @event remove\n * @type {String}\n */\n 'remove',\n\n /**\n * Event fired when max selected items limit is reached\n *\n * @event max-selected\n * @type {Object}\n */\n 'max-selected',\n\n /**\n * Native keyup event\n *\n * @event keyup\n * @type {KeyboardEvent}\n */\n 'keyup',\n\n /**\n * Native keydown event\n *\n * @event keydown\n * @type {KeyboardEvent}\n */\n 'keydown',\n\n /**\n * Event fired when combobox item is highlighted\n *\n * @event combobox-highlight\n * @type {Object}\n */\n 'combobox-highlight',\n ],\n\n data () {\n return {\n value: '',\n popoverOffset: [0, 4],\n showValidationMessages: false,\n resizeWindowObserver: null,\n initialInputHeight: null,\n CHIP_SIZES,\n hasSlotContent,\n inputFocused: false,\n hideInputText: false,\n };\n },\n\n computed: {\n inputPlaceHolder () {\n return this.selectedItems?.length > 0 ? '' : this.placeholder;\n },\n\n chipListeners () {\n return {\n keydown: event => {\n this.onChipKeyDown(event);\n this.$emit('keydown', event);\n },\n };\n },\n\n inputListeners () {\n return {\n ...extractVueListeners(this.$attrs),\n onInput: event => {\n this.$emit('input', event);\n if (this.hasSuggestionList) {\n this.showComboboxList();\n }\n },\n\n onKeydown: event => {\n this.onInputKeyDown(event);\n },\n\n onKeyup: event => {\n this.$emit('keyup', event);\n },\n\n onClick: () => {\n if (this.hasSuggestionList) {\n this.showComboboxList();\n }\n },\n };\n },\n\n chipWrapperClass () {\n return {\n [`d-recipe-combobox-multi-select__chip-wrapper-${this.size}--collapsed`]: !this.inputFocused && this.collapseOnFocusOut,\n };\n },\n },\n\n watch: {\n selectedItems: {\n deep: true,\n handler: async function () {\n await this.initSelectedItems();\n },\n },\n\n chipMaxWidth: {\n async handler () {\n await this.initSelectedItems();\n },\n },\n\n async label () {\n await this.$nextTick();\n // Adjust the chips position if label changed\n this.setChipsTopPosition();\n },\n\n async description () {\n await this.$nextTick();\n // Adjust the chips position if description changed\n this.setChipsTopPosition();\n },\n\n size: {\n async handler () {\n await this.$nextTick();\n const input = this.getInput();\n this.revertInputPadding(input);\n this.initialInputHeight = input.getBoundingClientRect().height;\n this.setInputPadding();\n this.setChipsTopPosition();\n },\n },\n },\n\n async mounted () {\n this.setInitialInputHeight();\n // Recalculate chip position and input padding when resizing window\n this.resizeWindowObserver = new ResizeObserver(async () => {\n this.setChipsTopPosition();\n this.setInputPadding();\n });\n this.resizeWindowObserver.observe(document.body);\n\n await this.initSelectedItems();\n },\n\n beforeUnmount () {\n this.resizeWindowObserver?.unobserve(document.body);\n },\n\n methods: {\n extractNonListeners,\n comboboxHighlight (highlightIndex) {\n this.$emit('combobox-highlight', highlightIndex);\n },\n\n async initSelectedItems () {\n await this.$nextTick();\n this.setInputPadding();\n this.setChipsTopPosition();\n this.setInputMinWidth();\n this.checkMaxSelected();\n },\n\n onChipRemove (item) {\n this.$emit('remove', item);\n this.$refs.input?.focus();\n },\n\n onComboboxSelect (i) {\n if (this.loading) return;\n this.value = '';\n this.$emit('select', i);\n },\n\n showComboboxList () {\n if (this.showList != null) { return; }\n this.$refs.comboboxWithPopover?.showComboboxList();\n },\n\n closeComboboxList () {\n if (this.showList != null) { return; }\n this.$refs.comboboxWithPopover?.closeComboboxList();\n },\n\n getChips () {\n if (!this.selectedItems.length || !this.$refs.chips) return null;\n\n // use the order from selectedItems to not rely on DOM order which may be stale\n const chips = this.selectedItems.map(item => {\n return this.$refs.chips.find(chip => {\n const chipLabel = returnFirstEl(chip.$el)?.querySelector('.d-chip__label')?.textContent?.trim();\n return chipLabel === item;\n });\n });\n return chips.filter(Boolean).map(chip => returnFirstEl(chip.$el));\n },\n\n getChipButtons () {\n const chips = this.getChips();\n return chips && chips.map(chip => returnFirstEl(chip).querySelector('button'));\n },\n\n getLastChipButton () {\n const chipButtons = this.getChipButtons();\n return chipButtons && chipButtons[chipButtons.length - 1];\n },\n\n getLastChip () {\n const chips = this.getChips();\n return chips && chips[chips.length - 1];\n },\n\n getFirstChip () {\n const chips = this.getChips();\n return chips && chips[0];\n },\n\n getInput () {\n return this.$refs.input?.$refs.input;\n },\n\n onChipKeyDown (event) {\n const key = event.code?.toLowerCase();\n if (key === 'arrowleft') {\n // Move to the previous chip\n this.navigateBetweenChips(event.target, true);\n } else if (key === 'arrowright') {\n if (event.target.id === this.getLastChipButton().id) {\n // Move to the input if it's the last chip\n this.moveFromChipToInput();\n } else {\n // Move to the next chip\n this.navigateBetweenChips(event.target, false);\n }\n }\n },\n\n onInputKeyDown (event) {\n const key = event.code?.toLowerCase();\n // If the cursor is at the start of the text,\n // press 'backspace' or 'left' focuses the last chip\n if (this.selectedItems.length > 0 && event.target.selectionStart === 0) {\n // if there is selected text, do not focus the last chip\n if (event.target.selectionEnd !== event.target.selectionStart) {\n return;\n }\n if (key === 'backspace' || key === 'arrowleft') {\n this.moveFromInputToChip();\n }\n }\n },\n\n moveFromInputToChip () {\n this.getLastChipButton().focus();\n this.$refs.input?.blur();\n this.closeComboboxList();\n },\n\n moveFromChipToInput () {\n this.getLastChipButton().blur();\n this.$refs.input?.focus();\n this.showComboboxList();\n },\n\n navigateBetweenChips (target, toLeft) {\n const from = this.getChipButtons().indexOf(target);\n const to = toLeft ? from - 1 : from + 1;\n if (to < 0 || to >= this.$refs.chips?.length) {\n return;\n }\n this.getChipButtons()[from].blur();\n this.getChipButtons()[to].focus();\n this.closeComboboxList();\n },\n\n setChipsTopPosition () {\n // To place the chips in the input box\n // The chip \"top\" position should be the same line as the input box\n const input = this.getInput();\n if (!input) return;\n const inputSlotWrapper = this.$refs.inputSlotWrapper;\n const top = input.getBoundingClientRect().top -\n inputSlotWrapper.getBoundingClientRect().top;\n const chipsWrapper = this.$refs.chipsWrapper;\n chipsWrapper.style.top = (top - CHIP_TOP_POSITION[this.size]) + 'px';\n },\n\n setInputPadding () {\n const lastChip = this.getLastChip();\n const input = this.getInput();\n const chipsWrapper = this.$refs.chipsWrapper;\n if (!input) return;\n this.revertInputPadding(input);\n this.popoverOffset = [0, 4];\n if (!lastChip) return;\n // Avoid adding extra padding when the input is not focused if collapseOnFocusOut is true\n // This ensures the input returns to its original state when resizing\n if (this.collapseOnFocusOut && !this.inputFocused) return;\n\n // Get the position of the last chip\n // The input cursor should be the same \"top\" as that chip and next besides it\n const left = lastChip.offsetLeft + this.getFullWidth(lastChip);\n const spaceLeft = input.getBoundingClientRect().width - left;\n // input.style.paddingLeft = left + 'px';\n\n if (spaceLeft > this.reservedRightSpace) {\n input.style.paddingInlineStart = left + 'px';\n } else {\n input.style.paddingInlineStart = '4px';\n }\n\n // Get the chip wrapper height minus the 4px padding\n const chipsWrapperHeight = chipsWrapper.getBoundingClientRect().height - 4;\n const lastChipHeight = lastChip.getBoundingClientRect().height - 4;\n\n // Get lastChip offsetTop plus 2px of the input padding.\n const top = spaceLeft > this.reservedRightSpace\n ? lastChip.offsetTop + 2\n : (chipsWrapperHeight + lastChipHeight - 9);\n\n input.style.paddingBlockStart = `${top}px`;\n },\n\n revertInputPadding (input) {\n input.style.paddingInlineStart = '';\n input.style.paddingBlockStart = '';\n input.style.paddingBlockEnd = '';\n },\n\n getFullWidth (el) {\n const styles = window.getComputedStyle(el);\n return el.offsetWidth + parseInt(styles.marginLeft) + parseInt(styles.marginRight);\n },\n\n setInputMinWidth () {\n // Ensure the width of the input is \"slightly bigger\" than the width of a single chip\n const firstChip = this.getFirstChip();\n const input = this.getInput();\n if (!input) return;\n if (firstChip) {\n // Add 4px buffer for typing room\n input.style.minWidth = (this.getFullWidth(firstChip) + 4) + 'px';\n } else {\n input.style.minWidth = '';\n }\n },\n\n checkMaxSelected () {\n if (this.maxSelected === 0) return;\n if (this.selectedItems.length > this.maxSelected) {\n this.showValidationMessages = true;\n this.$emit('max-selected');\n } else {\n this.showValidationMessages = false;\n }\n },\n\n setInitialInputHeight () {\n const input = this.getInput();\n if (!input) return;\n this.initialInputHeight = input.getBoundingClientRect().height;\n },\n\n async handleInputFocusIn () {\n this.inputFocused = true;\n if (this.collapseOnFocusOut) {\n this.hideInputText = false;\n await this.$nextTick();\n this.setInputPadding();\n }\n },\n\n async handleInputFocusOut () {\n this.inputFocused = false;\n if (this.collapseOnFocusOut) {\n this.hideInputText = true;\n const input = this.getInput();\n if (!input) return;\n // Hide the input text when is not on first line\n if (!input.style.paddingTop) {\n return;\n }\n this.revertInputPadding(input);\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtRecipeComboboxWithPopover","DtInput","DtChip","DtValidationMessages","inputMessages","validationMessageValidator","t","MULTI_SELECT_SIZES","appendTo","POPOVER_APPEND_TO_VALUES","CHIP_SIZES","hasSlotContent","_a","event","extractVueListeners","input","extractNonListeners","highlightIndex","item","i","chip","returnFirstEl","chips","chipButtons","key","target","toLeft","from","to","inputSlotWrapper","top","chipsWrapper","CHIP_TOP_POSITION","lastChip","left","spaceLeft","chipsWrapperHeight","lastChipHeight","el","styles","firstChip","_hoisted_1","_hoisted_3","_openBlock","_createBlock","_component_dt_recipe_combobox_with_popover","_mergeProps","$props","$data","$options","_ctx","_withCtx","onInput","_createElementVNode","args","_createElementBlock","_Fragment","_renderList","_component_dt_chip","_toHandlers","_withKeys","$event","_createVNode","_component_dt_input","_component_dt_validation_messages","_hoisted_2","_toDisplayString","_renderSlot"],"mappings":"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"}