@dialpad/dialtone 9.29.0 → 9.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/dialtone.css +2 -2
- package/dist/tokens/css/variables-dark.css +1 -1
- package/dist/tokens/css/variables-expressive-dark.css +937 -0
- package/dist/tokens/css/variables-expressive-light.css +817 -0
- package/dist/tokens/css/{variables-cox-dark.css → variables-expressive-sm-dark.css} +68 -67
- package/dist/tokens/css/{variables-cox-light.css → variables-expressive-sm-light.css} +67 -66
- package/dist/tokens/css/variables-light.css +1 -1
- package/dist/tokens/css/variables-tmo-dark.css +1 -1
- package/dist/tokens/css/variables-tmo-light.css +1 -1
- package/dist/tokens/doc.json +21010 -294
- package/dist/tokens/less/variables-dark.less +1 -1
- package/dist/tokens/less/variables-expressive-dark.less +934 -0
- package/dist/tokens/less/variables-expressive-light.less +814 -0
- package/dist/tokens/less/{variables-cox-dark.less → variables-expressive-sm-dark.less} +67 -66
- package/dist/tokens/less/{variables-cox-light.less → variables-expressive-sm-light.less} +66 -65
- package/dist/tokens/less/variables-light.less +1 -1
- package/dist/tokens/less/variables-tmo-dark.less +1 -1
- package/dist/tokens/less/variables-tmo-light.less +1 -1
- package/dist/vue2/chunks/_plugin-vue2_normalizer-1aBeR4AK.js +59 -0
- package/dist/vue2/chunks/_plugin-vue2_normalizer-1aBeR4AK.js.map +1 -0
- package/dist/vue2/chunks/_plugin-vue2_normalizer-sOSkiPF3.js +60 -0
- package/dist/vue2/chunks/_plugin-vue2_normalizer-sOSkiPF3.js.map +1 -0
- package/dist/vue2/chunks/{dropdown-SMWaTWyF.js → dropdown-DTtcQEFC.js} +131 -84
- package/dist/vue2/chunks/{dropdown-SMWaTWyF.js.map → dropdown-DTtcQEFC.js.map} +1 -1
- package/dist/vue2/chunks/dropdown-IaLNHmVd.js +403 -0
- package/dist/vue2/chunks/{dropdown-zhMEz3bn.js.map → dropdown-IaLNHmVd.js.map} +1 -1
- package/dist/vue2/chunks/dropdown_constants-2pGCXy7m.js +8 -0
- package/dist/vue2/chunks/dropdown_constants-2pGCXy7m.js.map +1 -0
- package/dist/vue2/chunks/dropdown_constants-w1MXGC3Z.js +9 -0
- package/dist/vue2/chunks/dropdown_constants-w1MXGC3Z.js.map +1 -0
- package/dist/vue2/chunks/{icon_constants-OpYAAKwF.js → icon_constants-Dy4MEUJL.js} +7 -6
- package/dist/vue2/chunks/{icon_constants-2S_OSQ1t.js.map → icon_constants-Dy4MEUJL.js.map} +1 -1
- package/dist/vue2/chunks/icon_constants-QYpmdE0R.js +16 -0
- package/dist/{vue3/chunks/icon_constants-2S_OSQ1t.js.map → vue2/chunks/icon_constants-QYpmdE0R.js.map} +1 -1
- package/dist/vue2/chunks/index-DUr1xHR0.js +442 -0
- package/dist/vue2/chunks/{index-2jPosQBn.js.map → index-DUr1xHR0.js.map} +1 -1
- package/dist/vue2/chunks/index-IA-Z8fgm.js +441 -0
- package/dist/vue2/chunks/{index-nIyl_PL6.js.map → index-IA-Z8fgm.js.map} +1 -1
- package/dist/{vue3/chunks/input-4UQWegUk.js → vue2/chunks/input-6kbd8Pju.js} +83 -60
- package/dist/vue2/chunks/{input-o-fc1X4b.js.map → input-6kbd8Pju.js.map} +1 -1
- package/dist/vue2/chunks/input-Axw-wFj2.js +295 -0
- package/dist/vue2/chunks/{input-1tm09l_-.js.map → input-Axw-wFj2.js.map} +1 -1
- package/dist/vue2/chunks/input_group-m3cWYUfI.js +143 -0
- package/dist/vue2/chunks/{input_group-zcAq3DQl.js.map → input_group-m3cWYUfI.js.map} +1 -1
- package/dist/vue2/chunks/{input_group-zcAq3DQl.js → input_group-qVZaS5Bb.js} +27 -24
- package/dist/vue2/chunks/{input_group-j2gTtc1C.js.map → input_group-qVZaS5Bb.js.map} +1 -1
- package/dist/vue2/chunks/keyboard_list_navigation-ScXhrxya.js +284 -0
- package/dist/vue2/chunks/{keyboard_list_navigation-N74Bpdq7.js.map → keyboard_list_navigation-ScXhrxya.js.map} +1 -1
- package/dist/vue2/chunks/keyboard_list_navigation-fJnl_Iox.js +283 -0
- package/dist/{vue3/chunks/keyboard_list_navigation-F0O8nht0.js.map → vue2/chunks/keyboard_list_navigation-fJnl_Iox.js.map} +1 -1
- package/dist/vue2/chunks/link_constants-Huj7D_hm.js +22 -0
- package/dist/vue2/chunks/{link_constants-Kn6kP4i1.js.map → link_constants-Huj7D_hm.js.map} +1 -1
- package/dist/vue2/chunks/link_constants-nWVlXQBs.js +23 -0
- package/dist/{vue3/chunks/link_constants-Kn6kP4i1.js.map → vue2/chunks/link_constants-nWVlXQBs.js.map} +1 -1
- package/dist/vue2/chunks/list_item_constants-EiqkqZvP.js +13 -0
- package/dist/vue2/chunks/{list_item_constants-Tsz5CO1m.js.map → list_item_constants-EiqkqZvP.js.map} +1 -1
- package/dist/vue2/chunks/list_item_constants-u1xcN9Dd.js +14 -0
- package/dist/{vue3/chunks/list_item_constants-Tsz5CO1m.js.map → vue2/chunks/list_item_constants-u1xcN9Dd.js.map} +1 -1
- package/dist/vue2/chunks/modal-VgxXAQFP.js +105 -0
- package/dist/vue2/chunks/{modal-qEzlo0Sj.js.map → modal-VgxXAQFP.js.map} +1 -1
- package/dist/vue2/chunks/modal-XOr4kiNZ.js +106 -0
- package/dist/{vue3/chunks/modal-VuMFkZFH.js.map → vue2/chunks/modal-XOr4kiNZ.js.map} +1 -1
- package/dist/vue2/chunks/notice_action-IRUoLX2d.js +196 -0
- package/dist/vue2/chunks/{notice_action-u3ZKIhit.js.map → notice_action-IRUoLX2d.js.map} +1 -1
- package/dist/vue2/chunks/notice_action-P6uDyE9x.js +195 -0
- package/dist/vue2/chunks/{notice_action-9NmtQRai.js.map → notice_action-P6uDyE9x.js.map} +1 -1
- package/dist/vue2/chunks/notice_constants-7Qt2CQEY.js +7 -0
- package/dist/vue2/chunks/{notice_constants-mC6al2Dm.js.map → notice_constants-7Qt2CQEY.js.map} +1 -1
- package/dist/vue2/chunks/notice_constants-UXo9e3bS.js +6 -0
- package/dist/{vue3/chunks/notice_constants-mC6al2Dm.js.map → vue2/chunks/notice_constants-UXo9e3bS.js.map} +1 -1
- package/dist/vue2/chunks/popover_constants-JwBF9h1Z.js +143 -0
- package/dist/{vue3/chunks/popover_constants-hOEhklvr.js.map → vue2/chunks/popover_constants-JwBF9h1Z.js.map} +1 -1
- package/dist/vue2/chunks/popover_constants-Qkpb0yh2.js +144 -0
- package/dist/vue2/chunks/{popover_constants-hOEhklvr.js.map → popover_constants-Qkpb0yh2.js.map} +1 -1
- package/dist/vue2/chunks/sr_only_close_button-81bHIpPu.js +95 -0
- package/dist/vue2/chunks/{sr_only_close_button-ErijKGYR.js.map → sr_only_close_button-81bHIpPu.js.map} +1 -1
- package/dist/vue2/chunks/sr_only_close_button-ZaGdAHz7.js +94 -0
- package/dist/vue2/chunks/{sr_only_close_button-JGole5Xi.js.map → sr_only_close_button-ZaGdAHz7.js.map} +1 -1
- package/dist/vue2/chunks/stack_constants-HraCekPm.js +15 -0
- package/dist/vue2/chunks/{stack_constants-m9Ickqw0.js.map → stack_constants-HraCekPm.js.map} +1 -1
- package/dist/vue2/chunks/stack_constants-SMzMWnAQ.js +14 -0
- package/dist/{vue3/chunks/stack_constants-m9Ickqw0.js.map → vue2/chunks/stack_constants-SMzMWnAQ.js.map} +1 -1
- package/dist/vue2/chunks/tab-FcsV5VmK.js +386 -0
- package/dist/vue2/chunks/{tab-7hJQSLFx.js.map → tab-FcsV5VmK.js.map} +1 -1
- package/dist/vue2/chunks/tab-V4cb44Ry.js +387 -0
- package/dist/vue2/chunks/{tab-Qm9LVkYj.js.map → tab-V4cb44Ry.js.map} +1 -1
- package/dist/vue2/common/constants.cjs +60 -0
- package/dist/vue2/{lib → common}/constants.cjs.map +1 -1
- package/dist/{vue3/lib → vue2/common}/constants.js +25 -18
- package/dist/vue2/{lib → common}/constants.js.map +1 -1
- package/dist/vue2/common/dates.cjs +72 -0
- package/dist/{vue3/lib → vue2/common}/dates.cjs.map +1 -1
- package/dist/vue2/common/dates.js +72 -0
- package/dist/vue2/{lib → common}/dates.js.map +1 -1
- package/dist/vue2/common/emoji.cjs +163 -0
- package/dist/vue2/common/emoji.cjs.map +1 -0
- package/dist/vue2/common/emoji.js +168 -0
- package/dist/vue2/common/emoji.js.map +1 -0
- package/dist/vue2/common/mixins.cjs +17 -0
- package/dist/vue2/{lib → common}/mixins.cjs.map +1 -1
- package/dist/vue2/common/mixins.js +17 -0
- package/dist/vue2/common/utils.cjs +237 -0
- package/dist/vue2/{lib → common}/utils.cjs.map +1 -1
- package/dist/vue2/common/utils.js +237 -0
- package/dist/vue2/{lib → common}/utils.js.map +1 -1
- package/dist/vue2/common/validators.cjs +23 -0
- package/dist/vue2/{lib → common}/validators.cjs.map +1 -1
- package/dist/vue2/common/validators.js +23 -0
- package/dist/vue2/{lib → common}/validators.js.map +1 -1
- package/dist/vue2/dialtone-vue.cjs +372 -1
- package/dist/vue2/dialtone-vue.cjs.map +1 -1
- package/dist/vue2/dialtone-vue.js +325 -324
- package/dist/vue2/dialtone-vue.js.map +1 -1
- package/dist/vue2/lib/attachment-carousel.cjs +260 -1
- package/dist/vue2/lib/attachment-carousel.cjs.map +1 -1
- package/dist/vue2/lib/attachment-carousel.js +96 -84
- package/dist/vue2/lib/attachment-carousel.js.map +1 -1
- package/dist/vue2/lib/avatar.cjs +399 -1
- package/dist/vue2/lib/avatar.cjs.map +1 -1
- package/dist/vue2/lib/avatar.js +111 -79
- package/dist/vue2/lib/avatar.js.map +1 -1
- package/dist/vue2/lib/badge.cjs +182 -1
- package/dist/vue2/lib/badge.cjs.map +1 -1
- package/dist/vue2/lib/badge.js +53 -38
- package/dist/vue2/lib/badge.js.map +1 -1
- package/dist/vue2/lib/banner.cjs +209 -2
- package/dist/vue2/lib/banner.cjs.map +1 -1
- package/dist/vue2/lib/banner.js +58 -47
- package/dist/vue2/lib/banner.js.map +1 -1
- package/dist/vue2/lib/breadcrumbs.cjs +146 -1
- package/dist/vue2/lib/breadcrumbs.cjs.map +1 -1
- package/dist/vue2/lib/breadcrumbs.js +57 -48
- package/dist/vue2/lib/breadcrumbs.js.map +1 -1
- package/dist/vue2/lib/button-group.cjs +47 -1
- package/dist/vue2/lib/button-group.cjs.map +1 -1
- package/dist/vue2/lib/button-group.js +21 -18
- package/dist/vue2/lib/button-group.js.map +1 -1
- package/dist/vue2/lib/button.cjs +349 -1
- package/dist/vue2/lib/button.cjs.map +1 -1
- package/dist/vue2/lib/button.js +98 -76
- package/dist/vue2/lib/button.js.map +1 -1
- package/dist/vue2/lib/callbar-button-with-popover.cjs +249 -1
- package/dist/vue2/lib/callbar-button-with-popover.cjs.map +1 -1
- package/dist/vue2/lib/callbar-button-with-popover.js +66 -50
- package/dist/vue2/lib/callbar-button-with-popover.js.map +1 -1
- package/dist/vue2/lib/callbar-button.cjs +182 -1
- package/dist/vue2/lib/callbar-button.cjs.map +1 -1
- package/dist/vue2/lib/callbar-button.js +42 -34
- package/dist/vue2/lib/callbar-button.js.map +1 -1
- package/dist/vue2/lib/callbox.cjs +146 -1
- package/dist/vue2/lib/callbox.cjs.map +1 -1
- package/dist/vue2/lib/callbox.js +38 -32
- package/dist/vue2/lib/callbox.js.map +1 -1
- package/dist/vue2/lib/card.cjs +73 -1
- package/dist/vue2/lib/card.cjs.map +1 -1
- package/dist/vue2/lib/card.js +22 -20
- package/dist/vue2/lib/card.js.map +1 -1
- package/dist/vue2/lib/checkbox-group.cjs +129 -1
- package/dist/vue2/lib/checkbox-group.cjs.map +1 -1
- package/dist/vue2/lib/checkbox-group.js +42 -29
- package/dist/vue2/lib/checkbox-group.js.map +1 -1
- package/dist/vue2/lib/checkbox.cjs +127 -1
- package/dist/vue2/lib/checkbox.cjs.map +1 -1
- package/dist/vue2/lib/checkbox.js +46 -35
- package/dist/vue2/lib/checkbox.js.map +1 -1
- package/dist/vue2/lib/chip.cjs +198 -1
- package/dist/vue2/lib/chip.cjs.map +1 -1
- package/dist/vue2/lib/chip.js +59 -45
- package/dist/vue2/lib/chip.js.map +1 -1
- package/dist/vue2/lib/codeblock.cjs +29 -2
- package/dist/vue2/lib/codeblock.cjs.map +1 -1
- package/dist/vue2/lib/codeblock.js +15 -14
- package/dist/vue2/lib/codeblock.js.map +1 -1
- package/dist/vue2/lib/collapsible.cjs +334 -1
- package/dist/vue2/lib/collapsible.cjs.map +1 -1
- package/dist/vue2/lib/collapsible.js +91 -68
- package/dist/vue2/lib/collapsible.js.map +1 -1
- package/dist/vue2/lib/combobox-multi-select.cjs +519 -1
- package/dist/vue2/lib/combobox-multi-select.cjs.map +1 -1
- package/dist/vue2/lib/combobox-multi-select.js +223 -136
- package/dist/vue2/lib/combobox-multi-select.js.map +1 -1
- package/dist/vue2/lib/combobox-with-popover.cjs +384 -1
- package/dist/vue2/lib/combobox-with-popover.cjs.map +1 -1
- package/dist/vue2/lib/combobox-with-popover.js +130 -86
- package/dist/vue2/lib/combobox-with-popover.js.map +1 -1
- package/dist/vue2/lib/combobox.cjs +18 -1
- package/dist/vue2/lib/combobox.cjs.map +1 -1
- package/dist/vue2/lib/combobox.js +9 -9
- package/dist/vue2/lib/contact-info.cjs +145 -1
- package/dist/vue2/lib/contact-info.cjs.map +1 -1
- package/dist/vue2/lib/contact-info.js +34 -32
- package/dist/vue2/lib/contact-info.js.map +1 -1
- package/dist/vue2/lib/contact-row.cjs +205 -1
- package/dist/vue2/lib/contact-row.cjs.map +1 -1
- package/dist/vue2/lib/contact-row.js +42 -39
- package/dist/vue2/lib/contact-row.js.map +1 -1
- package/dist/vue2/lib/datepicker.cjs +662 -1
- package/dist/vue2/lib/datepicker.cjs.map +1 -1
- package/dist/vue2/lib/datepicker.js +330 -218
- package/dist/vue2/lib/datepicker.js.map +1 -1
- package/dist/vue2/lib/description-list.cjs +114 -1
- package/dist/vue2/lib/description-list.cjs.map +1 -1
- package/dist/vue2/lib/description-list.js +51 -19
- package/dist/vue2/lib/description-list.js.map +1 -1
- package/dist/vue2/lib/dropdown.cjs +45 -1
- package/dist/vue2/lib/dropdown.cjs.map +1 -1
- package/dist/vue2/lib/dropdown.js +27 -25
- package/dist/vue2/lib/dropdown.js.map +1 -1
- package/dist/vue2/lib/editor.cjs +555 -1
- package/dist/vue2/lib/editor.cjs.map +1 -1
- package/dist/vue2/lib/editor.js +191 -162
- package/dist/vue2/lib/editor.js.map +1 -1
- package/dist/vue2/lib/emoji-picker.cjs +1063 -1
- package/dist/vue2/lib/emoji-picker.cjs.map +1 -1
- package/dist/vue2/lib/emoji-picker.js +638 -374
- package/dist/vue2/lib/emoji-picker.js.map +1 -1
- package/dist/vue2/lib/emoji-row.cjs +88 -1
- package/dist/vue2/lib/emoji-row.cjs.map +1 -1
- package/dist/vue2/lib/emoji-row.js +46 -40
- package/dist/vue2/lib/emoji-row.js.map +1 -1
- package/dist/vue2/lib/emoji-text-wrapper.cjs +109 -1
- package/dist/vue2/lib/emoji-text-wrapper.cjs.map +1 -1
- package/dist/vue2/lib/emoji-text-wrapper.js +49 -35
- package/dist/vue2/lib/emoji-text-wrapper.js.map +1 -1
- package/dist/vue2/lib/emoji.cjs +145 -1
- package/dist/vue2/lib/emoji.cjs.map +1 -1
- package/dist/vue2/lib/emoji.js +140 -5
- package/dist/vue2/lib/emoji.js.map +1 -1
- package/dist/vue2/lib/feed-item-row.cjs +213 -1
- package/dist/vue2/lib/feed-item-row.cjs.map +1 -1
- package/dist/vue2/lib/feed-item-row.js +71 -63
- package/dist/vue2/lib/feed-item-row.js.map +1 -1
- package/dist/vue2/lib/feed-pill.cjs +149 -1
- package/dist/vue2/lib/feed-pill.cjs.map +1 -1
- package/dist/vue2/lib/feed-pill.js +60 -51
- package/dist/vue2/lib/feed-pill.js.map +1 -1
- package/dist/vue2/lib/general-row.cjs +405 -1
- package/dist/vue2/lib/general-row.cjs.map +1 -1
- package/dist/vue2/lib/general-row.js +133 -106
- package/dist/vue2/lib/general-row.js.map +1 -1
- package/dist/vue2/lib/group-row.cjs +117 -1
- package/dist/vue2/lib/group-row.cjs.map +1 -1
- package/dist/vue2/lib/group-row.js +33 -30
- package/dist/vue2/lib/group-row.js.map +1 -1
- package/dist/vue2/lib/grouped-chip.cjs +45 -1
- package/dist/vue2/lib/grouped-chip.cjs.map +1 -1
- package/dist/vue2/lib/grouped-chip.js +28 -26
- package/dist/vue2/lib/grouped-chip.js.map +1 -1
- package/dist/vue2/lib/hovercard.cjs +227 -1
- package/dist/vue2/lib/hovercard.cjs.map +1 -1
- package/dist/vue2/lib/hovercard.js +98 -63
- package/dist/vue2/lib/hovercard.js.map +1 -1
- package/dist/vue2/lib/icon.cjs +59 -1
- package/dist/vue2/lib/icon.cjs.map +1 -1
- package/dist/vue2/lib/icon.js +22 -20
- package/dist/vue2/lib/icon.js.map +1 -1
- package/dist/vue2/lib/image-viewer.cjs +190 -1
- package/dist/vue2/lib/image-viewer.cjs.map +1 -1
- package/dist/vue2/lib/image-viewer.js +83 -62
- package/dist/vue2/lib/image-viewer.js.map +1 -1
- package/dist/vue2/lib/input-group.cjs +91 -1
- package/dist/vue2/lib/input-group.cjs.map +1 -1
- package/dist/vue2/lib/input-group.js +29 -27
- package/dist/vue2/lib/input-group.js.map +1 -1
- package/dist/vue2/lib/input.cjs +492 -1
- package/dist/vue2/lib/input.cjs.map +1 -1
- package/dist/vue2/lib/input.js +127 -89
- package/dist/vue2/lib/input.js.map +1 -1
- package/dist/vue2/lib/item-layout.cjs +40 -1
- package/dist/vue2/lib/item-layout.cjs.map +1 -1
- package/dist/vue2/lib/item-layout.js +15 -13
- package/dist/vue2/lib/item-layout.js.map +1 -1
- package/dist/vue2/lib/ivr-node.cjs +209 -1
- package/dist/vue2/lib/ivr-node.cjs.map +1 -1
- package/dist/vue2/lib/ivr-node.js +115 -99
- package/dist/vue2/lib/ivr-node.js.map +1 -1
- package/dist/vue2/lib/keyboard-shortcut.cjs +106 -1
- package/dist/vue2/lib/keyboard-shortcut.cjs.map +1 -1
- package/dist/vue2/lib/keyboard-shortcut.js +42 -34
- package/dist/vue2/lib/keyboard-shortcut.js.map +1 -1
- package/dist/vue2/lib/lazy-show.cjs +80 -1
- package/dist/vue2/lib/lazy-show.cjs.map +1 -1
- package/dist/vue2/lib/lazy-show.js +20 -16
- package/dist/vue2/lib/lazy-show.js.map +1 -1
- package/dist/vue2/lib/link.cjs +70 -1
- package/dist/vue2/lib/link.cjs.map +1 -1
- package/dist/vue2/lib/link.js +22 -20
- package/dist/vue2/lib/link.js.map +1 -1
- package/dist/vue2/lib/list-item-group.cjs +60 -1
- package/dist/vue2/lib/list-item-group.cjs.map +1 -1
- package/dist/vue2/lib/list-item-group.js +19 -17
- package/dist/vue2/lib/list-item-group.js.map +1 -1
- package/dist/vue2/lib/list-item.cjs +204 -1
- package/dist/vue2/lib/list-item.cjs.map +1 -1
- package/dist/vue2/lib/list-item.js +67 -56
- package/dist/vue2/lib/list-item.js.map +1 -1
- package/dist/vue2/lib/message-input.cjs +554 -1
- package/dist/vue2/lib/message-input.cjs.map +1 -1
- package/dist/vue2/lib/message-input.js +174 -152
- package/dist/vue2/lib/message-input.js.map +1 -1
- package/dist/vue2/lib/modal.cjs +350 -2
- package/dist/vue2/lib/modal.cjs.map +1 -1
- package/dist/vue2/lib/modal.js +118 -90
- package/dist/vue2/lib/modal.js.map +1 -1
- package/dist/vue2/lib/notice.cjs +159 -1
- package/dist/vue2/lib/notice.cjs.map +1 -1
- package/dist/vue2/lib/notice.js +46 -43
- package/dist/vue2/lib/notice.js.map +1 -1
- package/dist/vue2/lib/pagination.cjs +152 -1
- package/dist/vue2/lib/pagination.cjs.map +1 -1
- package/dist/vue2/lib/pagination.js +60 -48
- package/dist/vue2/lib/pagination.js.map +1 -1
- package/dist/vue2/lib/popover.cjs +956 -1
- package/dist/vue2/lib/popover.cjs.map +1 -1
- package/dist/vue2/lib/popover.js +401 -221
- package/dist/vue2/lib/popover.js.map +1 -1
- package/dist/vue2/lib/presence.cjs +65 -1
- package/dist/vue2/lib/presence.cjs.map +1 -1
- package/dist/vue2/lib/presence.js +32 -26
- package/dist/vue2/lib/presence.js.map +1 -1
- package/dist/vue2/lib/radio-group.cjs +98 -1
- package/dist/vue2/lib/radio-group.cjs.map +1 -1
- package/dist/vue2/lib/radio-group.js +24 -22
- package/dist/vue2/lib/radio-group.js.map +1 -1
- package/dist/vue2/lib/radio.cjs +118 -1
- package/dist/vue2/lib/radio.cjs.map +1 -1
- package/dist/vue2/lib/radio.js +43 -35
- package/dist/vue2/lib/radio.js.map +1 -1
- package/dist/vue2/lib/rich-text-editor.cjs +1138 -1
- package/dist/vue2/lib/rich-text-editor.cjs.map +1 -1
- package/dist/vue2/lib/rich-text-editor.js +574 -387
- package/dist/vue2/lib/rich-text-editor.js.map +1 -1
- package/dist/vue2/lib/root-layout.cjs +130 -1
- package/dist/vue2/lib/root-layout.cjs.map +1 -1
- package/dist/vue2/lib/root-layout.js +28 -24
- package/dist/vue2/lib/root-layout.js.map +1 -1
- package/dist/vue2/lib/select-menu.cjs +282 -1
- package/dist/vue2/lib/select-menu.cjs.map +1 -1
- package/dist/vue2/lib/select-menu.js +101 -61
- package/dist/vue2/lib/select-menu.js.map +1 -1
- package/dist/vue2/lib/settings-menu-button.cjs +65 -1
- package/dist/vue2/lib/settings-menu-button.cjs.map +1 -1
- package/dist/vue2/lib/settings-menu-button.js +26 -24
- package/dist/vue2/lib/settings-menu-button.js.map +1 -1
- package/dist/vue2/lib/skeleton.cjs +612 -1
- package/dist/vue2/lib/skeleton.cjs.map +1 -1
- package/dist/vue2/lib/skeleton.js +174 -135
- package/dist/vue2/lib/skeleton.js.map +1 -1
- package/dist/vue2/lib/stack.cjs +127 -1
- package/dist/vue2/lib/stack.cjs.map +1 -1
- package/dist/vue2/lib/stack.js +66 -56
- package/dist/vue2/lib/stack.js.map +1 -1
- package/dist/vue2/lib/tabs.cjs +99 -1
- package/dist/vue2/lib/tabs.cjs.map +1 -1
- package/dist/vue2/lib/tabs.js +42 -35
- package/dist/vue2/lib/tabs.js.map +1 -1
- package/dist/vue2/lib/time-pill.cjs +47 -1
- package/dist/vue2/lib/time-pill.cjs.map +1 -1
- package/dist/vue2/lib/time-pill.js +21 -16
- package/dist/vue2/lib/time-pill.js.map +1 -1
- package/dist/vue2/lib/toast.cjs +247 -1
- package/dist/vue2/lib/toast.cjs.map +1 -1
- package/dist/vue2/lib/toast.js +78 -55
- package/dist/vue2/lib/toast.js.map +1 -1
- package/dist/vue2/lib/toggle.cjs +177 -1
- package/dist/vue2/lib/toggle.cjs.map +1 -1
- package/dist/vue2/lib/toggle.js +46 -37
- package/dist/vue2/lib/toggle.js.map +1 -1
- package/dist/vue2/lib/tooltip-directive.cjs +87 -1
- package/dist/vue2/lib/tooltip-directive.cjs.map +1 -1
- package/dist/vue2/lib/tooltip-directive.js +55 -41
- package/dist/vue2/lib/tooltip-directive.js.map +1 -1
- package/dist/vue2/lib/tooltip.cjs +436 -1
- package/dist/vue2/lib/tooltip.cjs.map +1 -1
- package/dist/vue2/lib/tooltip.js +152 -90
- package/dist/vue2/lib/tooltip.js.map +1 -1
- package/dist/vue2/lib/top-banner-info.cjs +63 -1
- package/dist/vue2/lib/top-banner-info.cjs.map +1 -1
- package/dist/vue2/lib/top-banner-info.js +22 -18
- package/dist/vue2/lib/top-banner-info.js.map +1 -1
- package/dist/vue2/lib/unread-pill.cjs +63 -1
- package/dist/vue2/lib/unread-pill.cjs.map +1 -1
- package/dist/vue2/lib/unread-pill.js +25 -21
- package/dist/vue2/lib/unread-pill.js.map +1 -1
- package/dist/vue2/lib/validation-messages.cjs +85 -1
- package/dist/vue2/lib/validation-messages.cjs.map +1 -1
- package/dist/vue2/lib/validation-messages.js +32 -29
- package/dist/vue2/lib/validation-messages.js.map +1 -1
- package/dist/vue2/style.css +1214 -1
- package/dist/vue2/types/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.d.ts +2 -2
- package/dist/vue2/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +2 -2
- package/dist/vue3/chunks/_plugin-vue_export-helper-caHeSgYY.js +11 -0
- package/dist/vue3/chunks/_plugin-vue_export-helper-caHeSgYY.js.map +1 -0
- package/dist/vue3/chunks/_plugin-vue_export-helper-fhnQq0tA.js +10 -0
- package/dist/vue3/chunks/_plugin-vue_export-helper-fhnQq0tA.js.map +1 -0
- package/dist/vue3/chunks/{dropdown-eWOvBvwq.js → dropdown-Hn-TeTvZ.js} +151 -104
- package/dist/vue3/chunks/{dropdown-UO3UJalk.js.map → dropdown-Hn-TeTvZ.js.map} +1 -1
- package/dist/vue3/chunks/dropdown-w8Do29L5.js +442 -0
- package/dist/vue3/chunks/{dropdown-eWOvBvwq.js.map → dropdown-w8Do29L5.js.map} +1 -1
- package/dist/vue3/chunks/dropdown_constants-2pGCXy7m.js +8 -0
- package/dist/vue3/chunks/dropdown_constants-2pGCXy7m.js.map +1 -0
- package/dist/vue3/chunks/dropdown_constants-w1MXGC3Z.js +9 -0
- package/dist/vue3/chunks/dropdown_constants-w1MXGC3Z.js.map +1 -0
- package/dist/vue3/chunks/{icon_constants-OpYAAKwF.js → icon_constants-Dy4MEUJL.js} +7 -6
- package/dist/{vue2/chunks/icon_constants-OpYAAKwF.js.map → vue3/chunks/icon_constants-Dy4MEUJL.js.map} +1 -1
- package/dist/vue3/chunks/icon_constants-QYpmdE0R.js +16 -0
- package/dist/vue3/chunks/{icon_constants-OpYAAKwF.js.map → icon_constants-QYpmdE0R.js.map} +1 -1
- package/dist/vue3/chunks/index-We0ixqCH.js +446 -0
- package/dist/vue3/chunks/{index-b4iXYvId.js.map → index-We0ixqCH.js.map} +1 -1
- package/dist/vue3/chunks/index-xVEqMOTr.js +447 -0
- package/dist/vue3/chunks/{index-6tYeqbgP.js.map → index-xVEqMOTr.js.map} +1 -1
- package/dist/{vue2/chunks/input-1tm09l_-.js → vue3/chunks/input-NmYDD5bn.js} +83 -60
- package/dist/vue3/chunks/{input-0Uksk4DP.js.map → input-NmYDD5bn.js.map} +1 -1
- package/dist/vue3/chunks/input-ttnte8zB.js +295 -0
- package/dist/vue3/chunks/{input-4UQWegUk.js.map → input-ttnte8zB.js.map} +1 -1
- package/dist/vue3/chunks/input_group-M-D25pOJ.js +152 -0
- package/dist/vue3/chunks/{input_group-bBKaq3Wi.js.map → input_group-M-D25pOJ.js.map} +1 -1
- package/dist/vue3/chunks/{input_group-bBKaq3Wi.js → input_group-jWnq2DJT.js} +27 -24
- package/dist/vue3/chunks/{input_group-AS760Cp7.js.map → input_group-jWnq2DJT.js.map} +1 -1
- package/dist/vue3/chunks/keyboard_list_navigation-ScXhrxya.js +284 -0
- package/dist/vue3/chunks/{keyboard_list_navigation-N74Bpdq7.js.map → keyboard_list_navigation-ScXhrxya.js.map} +1 -1
- package/dist/vue3/chunks/keyboard_list_navigation-fJnl_Iox.js +283 -0
- package/dist/{vue2/chunks/keyboard_list_navigation-F0O8nht0.js.map → vue3/chunks/keyboard_list_navigation-fJnl_Iox.js.map} +1 -1
- package/dist/vue3/chunks/link_constants-Huj7D_hm.js +22 -0
- package/dist/{vue2/chunks/link_constants-vIUB92L4.js.map → vue3/chunks/link_constants-Huj7D_hm.js.map} +1 -1
- package/dist/vue3/chunks/link_constants-nWVlXQBs.js +23 -0
- package/dist/vue3/chunks/{link_constants-vIUB92L4.js.map → link_constants-nWVlXQBs.js.map} +1 -1
- package/dist/vue3/chunks/list_item_constants-EiqkqZvP.js +13 -0
- package/dist/{vue2/chunks/list_item_constants-LTUc74pD.js.map → vue3/chunks/list_item_constants-EiqkqZvP.js.map} +1 -1
- package/dist/vue3/chunks/list_item_constants-u1xcN9Dd.js +14 -0
- package/dist/vue3/chunks/{list_item_constants-LTUc74pD.js.map → list_item_constants-u1xcN9Dd.js.map} +1 -1
- package/dist/vue3/chunks/modal-VgxXAQFP.js +105 -0
- package/dist/vue3/chunks/{modal-qEzlo0Sj.js.map → modal-VgxXAQFP.js.map} +1 -1
- package/dist/vue3/chunks/modal-XOr4kiNZ.js +106 -0
- package/dist/{vue2/chunks/modal-VuMFkZFH.js.map → vue3/chunks/modal-XOr4kiNZ.js.map} +1 -1
- package/dist/vue3/chunks/notice_action-WTucGhvr.js +222 -0
- package/dist/vue3/chunks/{notice_action-tJfD5Qw1.js.map → notice_action-WTucGhvr.js.map} +1 -1
- package/dist/vue3/chunks/notice_action-p-ePanW_.js +223 -0
- package/dist/vue3/chunks/{notice_action-jO199emq.js.map → notice_action-p-ePanW_.js.map} +1 -1
- package/dist/vue3/chunks/notice_constants-7Qt2CQEY.js +7 -0
- package/dist/{vue2/chunks/notice_constants-c--hBFQw.js.map → vue3/chunks/notice_constants-7Qt2CQEY.js.map} +1 -1
- package/dist/vue3/chunks/notice_constants-UXo9e3bS.js +6 -0
- package/dist/vue3/chunks/{notice_constants-c--hBFQw.js.map → notice_constants-UXo9e3bS.js.map} +1 -1
- package/dist/vue3/chunks/popover_constants-JwBF9h1Z.js +143 -0
- package/dist/{vue2/chunks/popover_constants-qjlEkroB.js.map → vue3/chunks/popover_constants-JwBF9h1Z.js.map} +1 -1
- package/dist/vue3/chunks/popover_constants-Qkpb0yh2.js +144 -0
- package/dist/vue3/chunks/{popover_constants-qjlEkroB.js.map → popover_constants-Qkpb0yh2.js.map} +1 -1
- package/dist/vue3/chunks/{sr_only_close_button-7O-Ev8uM.js → sr_only_close_button-3EdsV-dH.js} +28 -24
- package/dist/vue3/chunks/{sr_only_close_button-iD7s1Pbj.js.map → sr_only_close_button-3EdsV-dH.js.map} +1 -1
- package/dist/vue3/chunks/sr_only_close_button-xGrHFjwA.js +91 -0
- package/dist/vue3/chunks/{sr_only_close_button-7O-Ev8uM.js.map → sr_only_close_button-xGrHFjwA.js.map} +1 -1
- package/dist/vue3/chunks/stack_constants-HraCekPm.js +15 -0
- package/dist/{vue2/chunks/stack_constants-u7tNqGtc.js.map → vue3/chunks/stack_constants-HraCekPm.js.map} +1 -1
- package/dist/vue3/chunks/stack_constants-SMzMWnAQ.js +14 -0
- package/dist/vue3/chunks/{stack_constants-u7tNqGtc.js.map → stack_constants-SMzMWnAQ.js.map} +1 -1
- package/dist/vue3/chunks/tab-RTDgnD9-.js +391 -0
- package/dist/vue3/chunks/{tab-at7WWglk.js.map → tab-RTDgnD9-.js.map} +1 -1
- package/dist/vue3/chunks/tab-qc3f42Yp.js +390 -0
- package/dist/vue3/chunks/{tab-GQZFMq83.js.map → tab-qc3f42Yp.js.map} +1 -1
- package/dist/vue3/common/constants.cjs +60 -0
- package/dist/vue3/{lib → common}/constants.cjs.map +1 -1
- package/dist/{vue2/lib → vue3/common}/constants.js +25 -18
- package/dist/vue3/{lib → common}/constants.js.map +1 -1
- package/dist/vue3/common/dates.cjs +72 -0
- package/dist/{vue2/lib → vue3/common}/dates.cjs.map +1 -1
- package/dist/vue3/common/dates.js +72 -0
- package/dist/vue3/{lib → common}/dates.js.map +1 -1
- package/dist/vue3/common/emoji.cjs +163 -0
- package/dist/vue3/common/emoji.cjs.map +1 -0
- package/dist/vue3/common/emoji.js +168 -0
- package/dist/vue3/common/emoji.js.map +1 -0
- package/dist/vue3/common/mixins.cjs +17 -0
- package/dist/vue3/{lib → common}/mixins.cjs.map +1 -1
- package/dist/vue3/common/mixins.js +17 -0
- package/dist/vue3/common/utils.cjs +243 -0
- package/dist/vue3/{lib → common}/utils.cjs.map +1 -1
- package/dist/vue3/common/utils.js +243 -0
- package/dist/vue3/{lib → common}/utils.js.map +1 -1
- package/dist/vue3/common/validators.cjs +23 -0
- package/dist/vue3/{lib → common}/validators.cjs.map +1 -1
- package/dist/vue3/common/validators.js +23 -0
- package/dist/vue3/{lib → common}/validators.js.map +1 -1
- package/dist/vue3/dialtone-vue.cjs +373 -1
- package/dist/vue3/dialtone-vue.cjs.map +1 -1
- package/dist/vue3/dialtone-vue.js +328 -327
- package/dist/vue3/dialtone-vue.js.map +1 -1
- package/dist/vue3/lib/attachment-carousel.cjs +345 -1
- package/dist/vue3/lib/attachment-carousel.cjs.map +1 -1
- package/dist/vue3/lib/attachment-carousel.js +126 -108
- package/dist/vue3/lib/attachment-carousel.js.map +1 -1
- package/dist/vue3/lib/avatar.cjs +447 -1
- package/dist/vue3/lib/avatar.cjs.map +1 -1
- package/dist/vue3/lib/avatar.js +135 -101
- package/dist/vue3/lib/avatar.js.map +1 -1
- package/dist/vue3/lib/badge.cjs +206 -1
- package/dist/vue3/lib/badge.cjs.map +1 -1
- package/dist/vue3/lib/badge.js +64 -48
- package/dist/vue3/lib/badge.js.map +1 -1
- package/dist/vue3/lib/banner.cjs +242 -2
- package/dist/vue3/lib/banner.cjs.map +1 -1
- package/dist/vue3/lib/banner.js +81 -71
- package/dist/vue3/lib/banner.js.map +1 -1
- package/dist/vue3/lib/breadcrumbs.cjs +150 -1
- package/dist/vue3/lib/breadcrumbs.cjs.map +1 -1
- package/dist/vue3/lib/breadcrumbs.js +60 -52
- package/dist/vue3/lib/breadcrumbs.js.map +1 -1
- package/dist/vue3/lib/button-group.cjs +41 -1
- package/dist/vue3/lib/button-group.cjs.map +1 -1
- package/dist/vue3/lib/button-group.js +15 -14
- package/dist/vue3/lib/button-group.js.map +1 -1
- package/dist/vue3/lib/button.cjs +356 -1
- package/dist/vue3/lib/button.cjs.map +1 -1
- package/dist/vue3/lib/button.js +108 -88
- package/dist/vue3/lib/button.js.map +1 -1
- package/dist/vue3/lib/callbar-button-with-popover.cjs +322 -1
- package/dist/vue3/lib/callbar-button-with-popover.cjs.map +1 -1
- package/dist/vue3/lib/callbar-button-with-popover.js +101 -83
- package/dist/vue3/lib/callbar-button-with-popover.js.map +1 -1
- package/dist/vue3/lib/callbar-button.cjs +200 -1
- package/dist/vue3/lib/callbar-button.cjs.map +1 -1
- package/dist/vue3/lib/callbar-button.js +52 -45
- package/dist/vue3/lib/callbar-button.js.map +1 -1
- package/dist/vue3/lib/callbox.cjs +217 -1
- package/dist/vue3/lib/callbox.cjs.map +1 -1
- package/dist/vue3/lib/callbox.js +80 -67
- package/dist/vue3/lib/callbox.js.map +1 -1
- package/dist/vue3/lib/card.cjs +91 -1
- package/dist/vue3/lib/card.cjs.map +1 -1
- package/dist/vue3/lib/card.js +27 -27
- package/dist/vue3/lib/card.js.map +1 -1
- package/dist/vue3/lib/checkbox-group.cjs +115 -1
- package/dist/vue3/lib/checkbox-group.cjs.map +1 -1
- package/dist/vue3/lib/checkbox-group.js +34 -23
- package/dist/vue3/lib/checkbox-group.js.map +1 -1
- package/dist/vue3/lib/checkbox.cjs +156 -1
- package/dist/vue3/lib/checkbox.cjs.map +1 -1
- package/dist/vue3/lib/checkbox.js +72 -60
- package/dist/vue3/lib/checkbox.js.map +1 -1
- package/dist/vue3/lib/chip.cjs +235 -1
- package/dist/vue3/lib/chip.cjs.map +1 -1
- package/dist/vue3/lib/chip.js +84 -67
- package/dist/vue3/lib/chip.js.map +1 -1
- package/dist/vue3/lib/codeblock.cjs +23 -2
- package/dist/vue3/lib/codeblock.cjs.map +1 -1
- package/dist/vue3/lib/codeblock.js +13 -13
- package/dist/vue3/lib/codeblock.js.map +1 -1
- package/dist/vue3/lib/collapsible.cjs +398 -1
- package/dist/vue3/lib/collapsible.cjs.map +1 -1
- package/dist/vue3/lib/collapsible.js +123 -100
- package/dist/vue3/lib/collapsible.js.map +1 -1
- package/dist/vue3/lib/combobox-multi-select.cjs +589 -1
- package/dist/vue3/lib/combobox-multi-select.cjs.map +1 -1
- package/dist/vue3/lib/combobox-multi-select.js +270 -177
- package/dist/vue3/lib/combobox-multi-select.js.map +1 -1
- package/dist/vue3/lib/combobox-with-popover.cjs +452 -1
- package/dist/vue3/lib/combobox-with-popover.cjs.map +1 -1
- package/dist/vue3/lib/combobox-with-popover.js +172 -127
- package/dist/vue3/lib/combobox-with-popover.js.map +1 -1
- package/dist/vue3/lib/combobox.cjs +18 -1
- package/dist/vue3/lib/combobox.cjs.map +1 -1
- package/dist/vue3/lib/combobox.js +9 -9
- package/dist/vue3/lib/contact-info.cjs +205 -1
- package/dist/vue3/lib/contact-info.cjs.map +1 -1
- package/dist/vue3/lib/contact-info.js +69 -60
- package/dist/vue3/lib/contact-info.js.map +1 -1
- package/dist/vue3/lib/contact-row.cjs +246 -1
- package/dist/vue3/lib/contact-row.cjs.map +1 -1
- package/dist/vue3/lib/contact-row.js +67 -63
- package/dist/vue3/lib/contact-row.js.map +1 -1
- package/dist/vue3/lib/datepicker.cjs +854 -1
- package/dist/vue3/lib/datepicker.cjs.map +1 -1
- package/dist/vue3/lib/datepicker.js +585 -441
- package/dist/vue3/lib/datepicker.js.map +1 -1
- package/dist/vue3/lib/description-list.cjs +116 -1
- package/dist/vue3/lib/description-list.cjs.map +1 -1
- package/dist/vue3/lib/description-list.js +56 -24
- package/dist/vue3/lib/description-list.js.map +1 -1
- package/dist/vue3/lib/dropdown.cjs +36 -1
- package/dist/vue3/lib/dropdown.cjs.map +1 -1
- package/dist/vue3/lib/dropdown.js +22 -21
- package/dist/vue3/lib/dropdown.js.map +1 -1
- package/dist/vue3/lib/editor.cjs +711 -1
- package/dist/vue3/lib/editor.cjs.map +1 -1
- package/dist/vue3/lib/editor.js +271 -235
- package/dist/vue3/lib/editor.js.map +1 -1
- package/dist/vue3/lib/emoji-picker.cjs +1277 -1
- package/dist/vue3/lib/emoji-picker.cjs.map +1 -1
- package/dist/vue3/lib/emoji-picker.js +859 -569
- package/dist/vue3/lib/emoji-picker.js.map +1 -1
- package/dist/vue3/lib/emoji-row.cjs +128 -1
- package/dist/vue3/lib/emoji-row.cjs.map +1 -1
- package/dist/vue3/lib/emoji-row.js +89 -75
- package/dist/vue3/lib/emoji-row.js.map +1 -1
- package/dist/vue3/lib/emoji-text-wrapper.cjs +102 -1
- package/dist/vue3/lib/emoji-text-wrapper.cjs.map +1 -1
- package/dist/vue3/lib/emoji-text-wrapper.js +42 -31
- package/dist/vue3/lib/emoji-text-wrapper.js.map +1 -1
- package/dist/vue3/lib/emoji.cjs +157 -1
- package/dist/vue3/lib/emoji.cjs.map +1 -1
- package/dist/vue3/lib/emoji.js +152 -6
- package/dist/vue3/lib/emoji.js.map +1 -1
- package/dist/vue3/lib/feed-item-row.cjs +296 -1
- package/dist/vue3/lib/feed-item-row.cjs.map +1 -1
- package/dist/vue3/lib/feed-item-row.js +119 -100
- package/dist/vue3/lib/feed-item-row.js.map +1 -1
- package/dist/vue3/lib/feed-pill.cjs +173 -1
- package/dist/vue3/lib/feed-pill.cjs.map +1 -1
- package/dist/vue3/lib/feed-pill.js +70 -57
- package/dist/vue3/lib/feed-pill.js.map +1 -1
- package/dist/vue3/lib/general-row.cjs +518 -1
- package/dist/vue3/lib/general-row.cjs.map +1 -1
- package/dist/vue3/lib/general-row.js +186 -148
- package/dist/vue3/lib/general-row.js.map +1 -1
- package/dist/vue3/lib/group-row.cjs +116 -1
- package/dist/vue3/lib/group-row.cjs.map +1 -1
- package/dist/vue3/lib/group-row.js +37 -35
- package/dist/vue3/lib/group-row.js.map +1 -1
- package/dist/vue3/lib/grouped-chip.cjs +96 -1
- package/dist/vue3/lib/grouped-chip.cjs.map +1 -1
- package/dist/vue3/lib/grouped-chip.js +51 -46
- package/dist/vue3/lib/grouped-chip.js.map +1 -1
- package/dist/vue3/lib/hovercard.cjs +223 -1
- package/dist/vue3/lib/hovercard.cjs.map +1 -1
- package/dist/vue3/lib/hovercard.js +115 -80
- package/dist/vue3/lib/hovercard.js.map +1 -1
- package/dist/vue3/lib/icon.cjs +58 -1
- package/dist/vue3/lib/icon.cjs.map +1 -1
- package/dist/vue3/lib/icon.js +20 -20
- package/dist/vue3/lib/icon.js.map +1 -1
- package/dist/vue3/lib/image-viewer.cjs +243 -1
- package/dist/vue3/lib/image-viewer.cjs.map +1 -1
- package/dist/vue3/lib/image-viewer.js +104 -80
- package/dist/vue3/lib/image-viewer.js.map +1 -1
- package/dist/vue3/lib/input-group.cjs +91 -1
- package/dist/vue3/lib/input-group.cjs.map +1 -1
- package/dist/vue3/lib/input-group.js +41 -39
- package/dist/vue3/lib/input-group.js.map +1 -1
- package/dist/vue3/lib/input.cjs +578 -1
- package/dist/vue3/lib/input.cjs.map +1 -1
- package/dist/vue3/lib/input.js +185 -137
- package/dist/vue3/lib/input.js.map +1 -1
- package/dist/vue3/lib/item-layout.cjs +91 -1
- package/dist/vue3/lib/item-layout.cjs.map +1 -1
- package/dist/vue3/lib/item-layout.js +45 -39
- package/dist/vue3/lib/item-layout.js.map +1 -1
- package/dist/vue3/lib/ivr-node.cjs +263 -1
- package/dist/vue3/lib/ivr-node.cjs.map +1 -1
- package/dist/vue3/lib/ivr-node.js +130 -112
- package/dist/vue3/lib/ivr-node.js.map +1 -1
- package/dist/vue3/lib/keyboard-shortcut.cjs +119 -1
- package/dist/vue3/lib/keyboard-shortcut.cjs.map +1 -1
- package/dist/vue3/lib/keyboard-shortcut.js +58 -48
- package/dist/vue3/lib/keyboard-shortcut.js.map +1 -1
- package/dist/vue3/lib/lazy-show.cjs +82 -1
- package/dist/vue3/lib/lazy-show.cjs.map +1 -1
- package/dist/vue3/lib/lazy-show.js +21 -19
- package/dist/vue3/lib/lazy-show.js.map +1 -1
- package/dist/vue3/lib/link.cjs +43 -1
- package/dist/vue3/lib/link.cjs.map +1 -1
- package/dist/vue3/lib/link.js +20 -19
- package/dist/vue3/lib/link.js.map +1 -1
- package/dist/vue3/lib/list-item-group.cjs +67 -1
- package/dist/vue3/lib/list-item-group.cjs.map +1 -1
- package/dist/vue3/lib/list-item-group.js +24 -22
- package/dist/vue3/lib/list-item-group.js.map +1 -1
- package/dist/vue3/lib/list-item.cjs +216 -1
- package/dist/vue3/lib/list-item.cjs.map +1 -1
- package/dist/vue3/lib/list-item.js +71 -60
- package/dist/vue3/lib/list-item.js.map +1 -1
- package/dist/vue3/lib/message-input.cjs +708 -1
- package/dist/vue3/lib/message-input.cjs.map +1 -1
- package/dist/vue3/lib/message-input.js +232 -206
- package/dist/vue3/lib/message-input.js.map +1 -1
- package/dist/vue3/lib/modal.cjs +444 -2
- package/dist/vue3/lib/modal.cjs.map +1 -1
- package/dist/vue3/lib/modal.js +153 -120
- package/dist/vue3/lib/modal.js.map +1 -1
- package/dist/vue3/lib/notice.cjs +197 -1
- package/dist/vue3/lib/notice.cjs.map +1 -1
- package/dist/vue3/lib/notice.js +66 -63
- package/dist/vue3/lib/notice.js.map +1 -1
- package/dist/vue3/lib/pagination.cjs +205 -1
- package/dist/vue3/lib/pagination.cjs.map +1 -1
- package/dist/vue3/lib/pagination.js +96 -81
- package/dist/vue3/lib/pagination.js.map +1 -1
- package/dist/vue3/lib/popover.cjs +1080 -1
- package/dist/vue3/lib/popover.cjs.map +1 -1
- package/dist/vue3/lib/popover.js +447 -267
- package/dist/vue3/lib/popover.js.map +1 -1
- package/dist/vue3/lib/presence.cjs +70 -1
- package/dist/vue3/lib/presence.cjs.map +1 -1
- package/dist/vue3/lib/presence.js +33 -27
- package/dist/vue3/lib/presence.js.map +1 -1
- package/dist/vue3/lib/radio-group.cjs +88 -1
- package/dist/vue3/lib/radio-group.cjs.map +1 -1
- package/dist/vue3/lib/radio-group.js +18 -18
- package/dist/vue3/lib/radio-group.js.map +1 -1
- package/dist/vue3/lib/radio.cjs +162 -1
- package/dist/vue3/lib/radio.cjs.map +1 -1
- package/dist/vue3/lib/radio.js +66 -57
- package/dist/vue3/lib/radio.js.map +1 -1
- package/dist/vue3/lib/rich-text-editor.cjs +1137 -1
- package/dist/vue3/lib/rich-text-editor.cjs.map +1 -1
- package/dist/vue3/lib/rich-text-editor.js +567 -386
- package/dist/vue3/lib/rich-text-editor.js.map +1 -1
- package/dist/vue3/lib/root-layout.cjs +158 -1
- package/dist/vue3/lib/root-layout.cjs.map +1 -1
- package/dist/vue3/lib/root-layout.js +33 -31
- package/dist/vue3/lib/root-layout.js.map +1 -1
- package/dist/vue3/lib/scroller.cjs +1090 -1
- package/dist/vue3/lib/scroller.cjs.map +1 -1
- package/dist/vue3/lib/scroller.js +668 -345
- package/dist/vue3/lib/scroller.js.map +1 -1
- package/dist/vue3/lib/select-menu.cjs +312 -1
- package/dist/vue3/lib/select-menu.cjs.map +1 -1
- package/dist/vue3/lib/select-menu.js +124 -79
- package/dist/vue3/lib/select-menu.js.map +1 -1
- package/dist/vue3/lib/settings-menu-button.cjs +77 -1
- package/dist/vue3/lib/settings-menu-button.cjs.map +1 -1
- package/dist/vue3/lib/settings-menu-button.js +31 -30
- package/dist/vue3/lib/settings-menu-button.js.map +1 -1
- package/dist/vue3/lib/skeleton.cjs +635 -1
- package/dist/vue3/lib/skeleton.cjs.map +1 -1
- package/dist/vue3/lib/skeleton.js +189 -152
- package/dist/vue3/lib/skeleton.js.map +1 -1
- package/dist/vue3/lib/stack.cjs +123 -1
- package/dist/vue3/lib/stack.cjs.map +1 -1
- package/dist/vue3/lib/stack.js +61 -53
- package/dist/vue3/lib/stack.js.map +1 -1
- package/dist/vue3/lib/tabs.cjs +102 -1
- package/dist/vue3/lib/tabs.cjs.map +1 -1
- package/dist/vue3/lib/tabs.js +47 -41
- package/dist/vue3/lib/tabs.js.map +1 -1
- package/dist/vue3/lib/time-pill.cjs +41 -1
- package/dist/vue3/lib/time-pill.cjs.map +1 -1
- package/dist/vue3/lib/time-pill.js +18 -14
- package/dist/vue3/lib/time-pill.js.map +1 -1
- package/dist/vue3/lib/toast.cjs +281 -1
- package/dist/vue3/lib/toast.cjs.map +1 -1
- package/dist/vue3/lib/toast.js +96 -74
- package/dist/vue3/lib/toast.js.map +1 -1
- package/dist/vue3/lib/toggle.cjs +192 -1
- package/dist/vue3/lib/toggle.cjs.map +1 -1
- package/dist/vue3/lib/toggle.js +60 -49
- package/dist/vue3/lib/toggle.js.map +1 -1
- package/dist/vue3/lib/tooltip-directive.cjs +84 -1
- package/dist/vue3/lib/tooltip-directive.cjs.map +1 -1
- package/dist/vue3/lib/tooltip-directive.js +56 -42
- package/dist/vue3/lib/tooltip-directive.js.map +1 -1
- package/dist/vue3/lib/tooltip.cjs +460 -1
- package/dist/vue3/lib/tooltip.cjs.map +1 -1
- package/dist/vue3/lib/tooltip.js +162 -103
- package/dist/vue3/lib/tooltip.js.map +1 -1
- package/dist/vue3/lib/top-banner-info.cjs +71 -1
- package/dist/vue3/lib/top-banner-info.cjs.map +1 -1
- package/dist/vue3/lib/top-banner-info.js +27 -22
- package/dist/vue3/lib/top-banner-info.js.map +1 -1
- package/dist/vue3/lib/unread-pill.cjs +73 -1
- package/dist/vue3/lib/unread-pill.cjs.map +1 -1
- package/dist/vue3/lib/unread-pill.js +28 -25
- package/dist/vue3/lib/unread-pill.js.map +1 -1
- package/dist/vue3/lib/validation-messages.cjs +89 -1
- package/dist/vue3/lib/validation-messages.cjs.map +1 -1
- package/dist/vue3/lib/validation-messages.js +41 -36
- package/dist/vue3/lib/validation-messages.js.map +1 -1
- package/dist/vue3/style.css +1257 -1
- package/dist/vue3/types/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.d.ts +2 -2
- package/dist/vue3/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +2 -2
- package/package.json +37 -35
- package/dist/vue2/chunks/_plugin-vue2_normalizer-ZK80B3OL.js +0 -2
- package/dist/vue2/chunks/_plugin-vue2_normalizer-ZK80B3OL.js.map +0 -1
- package/dist/vue2/chunks/_plugin-vue2_normalizer-u6G_3nkj.js +0 -33
- package/dist/vue2/chunks/_plugin-vue2_normalizer-u6G_3nkj.js.map +0 -1
- package/dist/vue2/chunks/dropdown-zhMEz3bn.js +0 -2
- package/dist/vue2/chunks/dropdown_constants-EUcDxBrX.js +0 -9
- package/dist/vue2/chunks/dropdown_constants-EUcDxBrX.js.map +0 -1
- package/dist/vue2/chunks/dropdown_constants-KHFvVI2L.js +0 -2
- package/dist/vue2/chunks/dropdown_constants-KHFvVI2L.js.map +0 -1
- package/dist/vue2/chunks/icon_constants-2S_OSQ1t.js +0 -2
- package/dist/vue2/chunks/index-2jPosQBn.js +0 -3
- package/dist/vue2/chunks/index-YkSDT8-g.js +0 -244
- package/dist/vue2/chunks/index-YkSDT8-g.js.map +0 -1
- package/dist/vue2/chunks/index-nIyl_PL6.js +0 -372
- package/dist/vue2/chunks/index-sdfB7Aok.js +0 -2
- package/dist/vue2/chunks/index-sdfB7Aok.js.map +0 -1
- package/dist/vue2/chunks/input-o-fc1X4b.js +0 -2
- package/dist/vue2/chunks/input_group-j2gTtc1C.js +0 -2
- package/dist/vue2/chunks/keyboard_list_navigation-F0O8nht0.js +0 -197
- package/dist/vue2/chunks/keyboard_list_navigation-N74Bpdq7.js +0 -2
- package/dist/vue2/chunks/link_constants-Kn6kP4i1.js +0 -2
- package/dist/vue2/chunks/link_constants-vIUB92L4.js +0 -16
- package/dist/vue2/chunks/list_item_constants-LTUc74pD.js +0 -13
- package/dist/vue2/chunks/list_item_constants-Tsz5CO1m.js +0 -2
- package/dist/vue2/chunks/modal-VuMFkZFH.js +0 -82
- package/dist/vue2/chunks/modal-qEzlo0Sj.js +0 -2
- package/dist/vue2/chunks/notice_action-9NmtQRai.js +0 -182
- package/dist/vue2/chunks/notice_action-u3ZKIhit.js +0 -2
- package/dist/vue2/chunks/notice_constants-c--hBFQw.js +0 -6
- package/dist/vue2/chunks/notice_constants-mC6al2Dm.js +0 -2
- package/dist/vue2/chunks/popover_constants-hOEhklvr.js +0 -2
- package/dist/vue2/chunks/popover_constants-qjlEkroB.js +0 -114
- package/dist/vue2/chunks/sr_only_close_button-ErijKGYR.js +0 -3
- package/dist/vue2/chunks/sr_only_close_button-JGole5Xi.js +0 -86
- package/dist/vue2/chunks/stack_constants-m9Ickqw0.js +0 -2
- package/dist/vue2/chunks/stack_constants-u7tNqGtc.js +0 -13
- package/dist/vue2/chunks/tab-7hJQSLFx.js +0 -2
- package/dist/vue2/chunks/tab-Qm9LVkYj.js +0 -346
- package/dist/vue2/lib/constants.cjs +0 -2
- package/dist/vue2/lib/dates.cjs +0 -2
- package/dist/vue2/lib/dates.js +0 -57
- package/dist/vue2/lib/mixins.cjs +0 -2
- package/dist/vue2/lib/mixins.js +0 -17
- package/dist/vue2/lib/utils.cjs +0 -2
- package/dist/vue2/lib/utils.js +0 -175
- package/dist/vue2/lib/validators.cjs +0 -2
- package/dist/vue2/lib/validators.js +0 -12
- package/dist/vue3/chunks/_plugin-vue_export-helper-6_y-gaV6.js +0 -2
- package/dist/vue3/chunks/_plugin-vue_export-helper-6_y-gaV6.js.map +0 -1
- package/dist/vue3/chunks/_plugin-vue_export-helper-hUChTQA_.js +0 -10
- package/dist/vue3/chunks/_plugin-vue_export-helper-hUChTQA_.js.map +0 -1
- package/dist/vue3/chunks/dropdown-UO3UJalk.js +0 -2
- package/dist/vue3/chunks/dropdown_constants-EUcDxBrX.js +0 -9
- package/dist/vue3/chunks/dropdown_constants-EUcDxBrX.js.map +0 -1
- package/dist/vue3/chunks/dropdown_constants-KHFvVI2L.js +0 -2
- package/dist/vue3/chunks/dropdown_constants-KHFvVI2L.js.map +0 -1
- package/dist/vue3/chunks/icon_constants-2S_OSQ1t.js +0 -2
- package/dist/vue3/chunks/index-6tYeqbgP.js +0 -3
- package/dist/vue3/chunks/index-IBtQ5jRJ.js +0 -2
- package/dist/vue3/chunks/index-IBtQ5jRJ.js.map +0 -1
- package/dist/vue3/chunks/index-b4iXYvId.js +0 -399
- package/dist/vue3/chunks/index-mRmwpCBG.js +0 -256
- package/dist/vue3/chunks/index-mRmwpCBG.js.map +0 -1
- package/dist/vue3/chunks/input-0Uksk4DP.js +0 -2
- package/dist/vue3/chunks/input_group-AS760Cp7.js +0 -2
- package/dist/vue3/chunks/keyboard_list_navigation-F0O8nht0.js +0 -197
- package/dist/vue3/chunks/keyboard_list_navigation-N74Bpdq7.js +0 -2
- package/dist/vue3/chunks/link_constants-Kn6kP4i1.js +0 -2
- package/dist/vue3/chunks/link_constants-vIUB92L4.js +0 -16
- package/dist/vue3/chunks/list_item_constants-LTUc74pD.js +0 -13
- package/dist/vue3/chunks/list_item_constants-Tsz5CO1m.js +0 -2
- package/dist/vue3/chunks/modal-VuMFkZFH.js +0 -82
- package/dist/vue3/chunks/modal-qEzlo0Sj.js +0 -2
- package/dist/vue3/chunks/notice_action-jO199emq.js +0 -2
- package/dist/vue3/chunks/notice_action-tJfD5Qw1.js +0 -209
- package/dist/vue3/chunks/notice_constants-c--hBFQw.js +0 -6
- package/dist/vue3/chunks/notice_constants-mC6al2Dm.js +0 -2
- package/dist/vue3/chunks/popover_constants-hOEhklvr.js +0 -2
- package/dist/vue3/chunks/popover_constants-qjlEkroB.js +0 -114
- package/dist/vue3/chunks/sr_only_close_button-iD7s1Pbj.js +0 -3
- package/dist/vue3/chunks/stack_constants-m9Ickqw0.js +0 -2
- package/dist/vue3/chunks/stack_constants-u7tNqGtc.js +0 -13
- package/dist/vue3/chunks/tab-GQZFMq83.js +0 -367
- package/dist/vue3/chunks/tab-at7WWglk.js +0 -2
- package/dist/vue3/lib/constants.cjs +0 -2
- package/dist/vue3/lib/dates.cjs +0 -2
- package/dist/vue3/lib/dates.js +0 -57
- package/dist/vue3/lib/mixins.cjs +0 -2
- package/dist/vue3/lib/mixins.js +0 -17
- package/dist/vue3/lib/utils.cjs +0 -2
- package/dist/vue3/lib/utils.js +0 -171
- package/dist/vue3/lib/validators.cjs +0 -2
- package/dist/vue3/lib/validators.js +0 -12
- /package/dist/vue2/{lib → common}/mixins.js.map +0 -0
- /package/dist/vue3/{lib → common}/mixins.js.map +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emoji-picker.cjs","sources":["../../components/emoji_picker/modules/emoji_tabset.vue","../../components/emoji_picker/modules/emoji_search.vue","../../components/emoji_picker/modules/emoji_selector.vue","../../components/emoji_picker/emoji_picker_constants.js","../../components/emoji_picker/modules/emoji_description.vue","../../components/emoji_picker/modules/emoji_skin_selector.vue","../../components/emoji_picker/emoji_picker.vue"],"sourcesContent":["<template>\n <div class=\"d-emoji-picker__tabset\">\n <dt-tab-group\n tab-list-class=\"d-emoji-picker__tabset-list\"\n :selected=\"selectedTab\"\n >\n <template #tabs>\n <dt-tab\n v-for=\"(tab, index) in tabs\"\n :id=\"tab.id\"\n :ref=\"`tabsetRef-${index}`\"\n :key=\"tab.id\"\n :panel-id=\"tab.panelId\"\n :label=\"tab.label\"\n aria-controls=\"d-emoji-picker-list\"\n :tabindex=\"index + 1\"\n @click.capture.stop=\"selectTabset(tab.id)\"\n @keydown=\"handleKeyDown($event, tab.id)\"\n >\n <dt-icon\n size=\"400\"\n :name=\"tab.icon\"\n />\n </dt-tab>\n </template>\n </dt-tab-group>\n </div>\n</template>\n\n<script>\nimport DtTabGroup from '@/components/tabs/tab_group.vue';\nimport DtTab from '@/components/tabs/tab.vue';\nimport DtIcon from '@/components/icon/icon.vue';\nimport { EMOJI_PICKER_CATEGORIES } from '@/components/emoji_picker';\n\nexport default {\n name: 'EmojiTabset',\n\n components: {\n DtTabGroup,\n DtTab,\n DtIcon,\n },\n\n props: {\n showRecentlyUsedTab: {\n type: Boolean,\n default: false,\n },\n\n scrollIntoTab: {\n type: Number,\n required: true,\n },\n\n isScrolling: {\n type: Boolean,\n default: false,\n },\n\n emojiFilter: {\n type: String,\n default: '',\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n },\n\n data () {\n return {\n selectedTab: '1',\n tabsetRef: [],\n TABS_DATA: [\n { label: EMOJI_PICKER_CATEGORIES.MOST_RECENTLY_USED, icon: 'clock' },\n { label: EMOJI_PICKER_CATEGORIES.SMILEYS_AND_PEOPLE, icon: 'satisfied' },\n { label: EMOJI_PICKER_CATEGORIES.NATURE, icon: 'living-thing' },\n { label: EMOJI_PICKER_CATEGORIES.FOOD, icon: 'food' },\n { label: EMOJI_PICKER_CATEGORIES.ACTIVITY, icon: 'object' },\n { label: EMOJI_PICKER_CATEGORIES.TRAVEL, icon: 'transportation' },\n { label: EMOJI_PICKER_CATEGORIES.OBJECTS, icon: 'lightbulb' },\n { label: EMOJI_PICKER_CATEGORIES.SYMBOLS, icon: 'heart' },\n { label: EMOJI_PICKER_CATEGORIES.FLAGS, icon: 'flag' },\n ],\n };\n },\n\n computed: {\n tabs () {\n const tabsData = this.showRecentlyUsedTab ? this.TABS_DATA : this.TABS_DATA.slice(1);\n return tabsData.map((tab, index) => ({\n ...tab,\n label: this.tabSetLabels[index],\n id: (index + 1).toString(),\n panelId: (index + 1).toString(),\n }));\n },\n\n isSearching () {\n return this.emojiFilter.length > 0;\n },\n },\n\n watch: {\n scrollIntoTab: function (newVal) {\n if (!this.isScrolling && !this.isSearching) {\n this.selectedTab = (newVal + 1).toString();\n }\n },\n\n isSearching: function (newVal) {\n if (newVal) {\n this.selectedTab = null;\n }\n },\n },\n\n mounted () {\n this.$nextTick(() => {\n this.setTabsetRef();\n });\n },\n\n methods: {\n selectTabset (id) {\n if (!this.isScrolling) {\n this.selectedTab = id;\n }\n this.$emit('selected-tabset', id);\n },\n\n setTabsetRef () {\n this.tabs.forEach((skin, index) => {\n const refKey = `tabsetRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.tabsetRef, index, this.$refs[refKey][0].$el);\n }\n });\n },\n\n focusTabset () {\n if (this.tabsetRef[0]) {\n this.tabsetRef[0].focus();\n }\n },\n\n handleKeyDown (event, tabId) {\n if (event.key === 'Enter') {\n this.selectTabset(tabId);\n if (this.tabsetRef[tabId - 1]) {\n this.tabsetRef[tabId - 1].blur();\n }\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.$emit('focus-skin-selector');\n } else {\n this.$emit('focus-search-input');\n }\n }\n\n if (event.key === 'ArrowDown') {\n this.$emit('focus-search-input');\n }\n },\n },\n};\n</script>\n","<template>\n <div class=\"d-emoji-picker__search d-emoji-picker__alignment\">\n <dt-input\n id=\"searchInput\"\n ref=\"searchInputRef\"\n :placeholder=\"searchPlaceholderLabel\"\n :value=\"modelValue\"\n @input=\"updateModelValue\"\n @keydown.up=\"focusTabset\"\n @keydown.down.prevent=\"focusEmojiSelector\"\n @keydown.enter=\"selectFirstEmoji\"\n >\n <template #leftIcon>\n <dt-icon\n name=\"search\"\n size=\"200\"\n />\n </template>\n <template\n v-if=\"modelValue.length > 0\"\n #rightIcon\n >\n <button\n class=\"d-emoji-picker__search-button\"\n @click=\"clearSearch\"\n @keydown.enter=\"clearSearch\"\n >\n <dt-icon name=\"close\" />\n </button>\n </template>\n </dt-input>\n </div>\n</template>\n\n<script>\nimport { DtInput } from '@/components/input';\nimport { DtIcon } from '@/components/icon';\n\nexport default {\n name: 'EmojiSearch',\n\n components: {\n DtInput,\n DtIcon,\n },\n\n props: {\n searchPlaceholderLabel: {\n type: String,\n required: true,\n },\n\n modelValue: {\n type: String,\n default: '',\n },\n },\n\n mounted () {\n this.focusSearchInput();\n },\n\n methods: {\n updateModelValue (value) {\n this.$emit('update:model-value', value);\n },\n\n focusEmojiSelector () {\n this.$emit('focus-emoji-selector');\n },\n\n focusTabset () {\n this.$emit('focus-tabset');\n },\n\n selectFirstEmoji () {\n this.$emit('select-first-emoji');\n },\n\n clearSearch () {\n this.$emit('update:model-value', '');\n this.focusSearchInput();\n },\n\n focusSearchInput () {\n this.$refs.searchInputRef.focus();\n },\n },\n};\n</script>\n","<template>\n <div\n class=\"d-emoji-picker__selector\"\n >\n <div\n id=\"d-emoji-picker-list\"\n ref=\"listRef\"\n class=\"d-emoji-picker__list\"\n >\n <p\n v-if=\"emojiFilter\"\n class=\"d-emoji-picker__search-label d-emoji-picker__alignment\"\n >\n {{ filteredEmojis.length > 0 ? searchResultsLabel : searchNoResultsLabel }}\n </p>\n <div\n v-else\n ref=\"tabCategoryRef\"\n class=\"d-emoji-picker__category d-emoji-picker__alignment\"\n >\n <p>\n {{ fixedLabel }}\n </p>\n </div>\n <div\n v-for=\"(tabLabel, indexTab) in tabLabels\"\n v-show=\"!emojiFilter\"\n :key=\"indexTab\"\n :ref=\"`tabLabelRef-${indexTab}`\"\n class=\"d-emoji-picker__alignment\"\n >\n <p\n v-if=\"indexTab\"\n >\n {{ tabLabel.label }}\n </p>\n <div\n class=\"d-emoji-picker__tab\"\n >\n <button\n v-for=\"(emoji, indexEmoji) in\n (emojis[tabs[indexTab] + skinTone] ? emojis[tabs[indexTab] + skinTone] : emojis[tabs[indexTab]])\"\n :key=\"emoji.shortname\"\n :ref=\"`emojiRef-${indexTab}`\"\n type=\"button\"\n :aria-label=\"emoji.name\"\n @click=\"$emit('selected-emoji', emoji)\"\n @focusin=\"$emit('highlighted-emoji', emoji)\"\n @focusout=\"$emit('highlighted-emoji', null)\"\n @mouseover=\"$emit('highlighted-emoji', emoji)\"\n @mouseleave=\"$emit('highlighted-emoji', null)\"\n @keydown=\"event => handleKeyDown(event, indexTab, indexEmoji, emoji)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"getImgSrc(emoji.unicode_character)\"\n @error=\"handleImageError\"\n >\n </button>\n </div>\n </div>\n <div\n v-if=\"emojiFilter\"\n class=\"d-emoji-picker__alignment\"\n >\n <div\n class=\"d-emoji-picker__tab \"\n data-qa=\"filtered-emojis\"\n >\n <button\n v-for=\"(emoji, index) in filteredEmojis\"\n :key=\"emoji.shortname\"\n :ref=\"`filteredEmoji-${index}`\"\n type=\"button\"\n :aria-label=\"emoji.name\"\n :class=\"{\n 'hover-emoji': (index === 0 && hoverFirstEmoji),\n }\"\n @click=\"$emit('selected-emoji', emoji)\"\n @focusin=\"$emit('highlighted-emoji', emoji)\"\n @focusout=\"$emit('highlighted-emoji', null)\"\n @mouseover=\"hoverEmoji(emoji)\"\n @mouseleave=\"hoverEmoji(null)\"\n @keydown=\"event => handleKeyDownFilteredEmojis(event, index, emoji)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"`${CDN_URL + emoji.unicode_character}.png`\"\n >\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { emojisGrouped as emojisImported } from '@dialpad/dialtone-emojis';\nimport { CDN_URL, EMOJIS_PER_ROW } from '@/components/emoji_picker';\n\nexport default {\n name: 'EmojiSelector',\n\n props: {\n emojiFilter: {\n type: String,\n default: '',\n },\n\n skinTone: {\n type: String,\n required: true,\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n\n selectedTabset: {\n type: Object,\n required: true,\n },\n\n searchResultsLabel: {\n type: String,\n required: true,\n },\n\n searchNoResultsLabel: {\n type: String,\n required: true,\n },\n\n recentlyUsedEmojis: {\n type: Array,\n default: () => [],\n },\n },\n\n data () {\n return {\n emojiRefs: [],\n emojiFilteredRefs: [],\n isFiltering: false,\n hoverFirstEmoji: true,\n fixedLabel: '',\n filteredEmojis: [],\n TABS_DATA: ['Recently used', 'People', 'Nature', 'Food', 'Activity', 'Travel', 'Objects', 'Symbols', 'Flags'],\n tabLabelObserver: null,\n };\n },\n\n computed: {\n currentEmojis () {\n return [\n ...this.emojis[`People${this.skinTone}`] || [],\n ...this.emojis.Nature || [],\n ...this.emojis.Food || [],\n ...this.emojis[`Activity${this.skinTone}`] || [],\n ...this.emojis.Travel || [],\n ...this.emojis[`Objects${this.skinTone}`] || [],\n ...this.emojis.Symbols || [],\n ...this.emojis.Flags || [],\n ];\n },\n\n emojis () {\n return emojisImported;\n },\n\n CDN_URL () {\n return CDN_URL;\n },\n\n tabLabels () {\n return this.recentlyUsedEmojis.length\n ? this.tabSetLabels.map((label, index) => ({ label, ref: this.$refs[`tabLabelRef-${index}`] }))\n : this.tabSetLabels.slice(1).map((label, index) => ({ label, ref: this.$refs[`tabLabelRef-${index}`] }));\n },\n\n tabs () {\n return this.recentlyUsedEmojis.length ? this.TABS_DATA : this.TABS_DATA.slice(1);\n },\n },\n\n watch: {\n currentEmojis: {\n handler () {\n this.searchByNameAndKeywords();\n },\n\n immediate: true,\n },\n\n recentlyUsedEmojis: {\n handler (newValue) {\n this.emojis['Recently used'] = newValue;\n },\n\n immediate: true,\n },\n\n emojiFilter: {\n handler (newFilter) {\n this.resetScroll();\n if (newFilter) {\n this.isFiltering = true;\n } else {\n this.isFiltering = false;\n this.$emit('highlighted-emoji', null);\n }\n\n this.debouncedSearch();\n },\n },\n\n selectedTabset: {\n handler (newValue) {\n this.scrollToTab(newValue.tabId);\n },\n\n deep: true,\n },\n },\n\n created () {\n this.debouncedSearch = this.debounce(this.searchByNameAndKeywords, 300);\n },\n\n mounted () {\n this.$nextTick(() => {\n this.setupEmojiRefs();\n this.setupFilteredRefs();\n this.setupTabLabelRefs();\n this.setTabLabelObserver();\n });\n },\n\n beforeDestroy () {\n if (this.tabLabelObserver) {\n this.tabLabelObserver.disconnect();\n }\n },\n\n methods: {\n setupTabLabelRefs () {\n this.tabSetLabels?.forEach((label, index) => {\n const refKey = `tabLabelRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.tabLabels, index, { label, ref: this.$refs[refKey] });\n }\n });\n },\n\n setupFilteredRefs () {\n // it is necessary to clean the array before setting the new refs\n this.emojiFilteredRefs = [];\n\n this.filteredEmojis.forEach((emoji, index) => {\n const refKey = `filteredEmoji-${index}`;\n if (this.$refs[refKey]) {\n this.setFilteredRef(this.$refs[refKey], index);\n }\n });\n },\n\n setupEmojiRefs () {\n for (let i = 0; i < this.tabs.length; i++) {\n const refKey = `emojiRef-${i}`;\n if (this.$refs[refKey]) {\n this.$refs[refKey].forEach((el, indexEmoji) => {\n if (el) {\n this.setEmojiRef(el, i, indexEmoji);\n }\n });\n }\n }\n },\n\n searchByNameAndKeywords () {\n const searchStr = this.emojiFilter.toLowerCase();\n this.filteredEmojis = this.currentEmojis.filter(function (obj) {\n const nameIncludesSearchStr = obj.name.toLowerCase().includes(searchStr);\n const keywordsIncludeSearchStr = obj.keywords.some(function (keyword) {\n return keyword.toLowerCase().includes(searchStr);\n });\n return nameIncludesSearchStr || keywordsIncludeSearchStr;\n });\n this.$nextTick(function () {\n if (searchStr) {\n this.hoverEmoji(this.filteredEmojis[0], true);\n this.setupFilteredRefs();\n }\n });\n },\n\n debounce: function (fn, delay) {\n if (delay === undefined) { delay = 300; }\n let timeout;\n return function () {\n const args = []; let len = arguments.length;\n while (len--) args[len] = arguments[len];\n\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn.apply(undefined, args);\n }, delay);\n };\n },\n\n getImgSrc: function (emoji) {\n return this.CDN_URL + emoji + '.png';\n },\n\n handleImageError: function (event) {\n event.target.parentNode.style.display = 'none';\n },\n\n scrollToTab: function (tabIndex, focusFirstEmoji) {\n const vm = this;\n if (focusFirstEmoji === undefined) { focusFirstEmoji = true; }\n const tabLabel = vm.tabLabels[tabIndex - 1];\n const tabElement = tabLabel.ref[0];\n\n vm.$nextTick(function () {\n const container = vm.$refs.listRef;\n const offsetTop = tabIndex === '1' ? 0 : tabElement.offsetTop - 20;\n\n let isScrolling = true;\n let prevScrollTop = container.scrollTop;\n vm.$emit('is-scrolling', true);\n\n container.addEventListener('scroll', function () {\n if (isScrolling) {\n const scrollTop = container.scrollTop;\n if (\n (prevScrollTop < scrollTop && scrollTop >= offsetTop) ||\n (prevScrollTop > scrollTop && scrollTop <= offsetTop)\n ) {\n isScrolling = false;\n vm.$emit('is-scrolling', false);\n }\n prevScrollTop = scrollTop;\n }\n });\n\n container.scrollTop = offsetTop;\n\n if (focusFirstEmoji) {\n vm.focusEmoji(tabIndex - 1, 0);\n }\n });\n },\n\n resetScroll: function () {\n const container = this.$refs.listRef;\n container.scrollTop = 0;\n },\n\n focusEmojiSelector: function () {\n this.focusEmoji(0, 0);\n },\n\n hoverEmoji (emoji, isFirst) {\n if (isFirst === undefined) { isFirst = false; }\n this.hoverFirstEmoji = isFirst;\n this.$emit('highlighted-emoji', emoji);\n },\n\n setEmojiRef: function (el, indexTab, indexEmoji) {\n if (!this.emojiRefs[indexTab]) {\n this.$set(this.emojiRefs, indexTab, []);\n }\n this.$set(this.emojiRefs[indexTab], indexEmoji, el);\n },\n\n setFilteredRef: function (el, index) {\n this.$set(this.emojiFilteredRefs, index, el);\n },\n\n focusEmoji: function (indexTab, indexEmoji) {\n // eslint-disable-next-line max-len\n const emojiRef = this.isFiltering ? this.emojiFilteredRefs[indexEmoji]?.[0] : this.emojiRefs[indexTab] && this.emojiRefs[indexTab][indexEmoji];\n if (emojiRef) {\n emojiRef.focus();\n return true;\n }\n\n return false;\n },\n\n handleKeyDown: function (event, indexTab, indexEmoji, emoji) {\n event.preventDefault();\n\n if (event.key === 'ArrowUp') {\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n if (indexTab === 0) {\n // we are on the first emoji tab, then we should jump to the last row of the last emoji tab\n const numberOfMissingEmojis =\n EMOJIS_PER_ROW - (this.emojiRefs[this.emojiRefs.length - 1].length % EMOJIS_PER_ROW);\n\n const emojiToJump =\n this.emojiRefs[this.emojiRefs.length - 1].length + numberOfMissingEmojis - (EMOJIS_PER_ROW - position);\n\n if (!this.focusEmoji(this.emojiRefs.length - 1, emojiToJump)) {\n // if there is no emoji in this position, jump to the last emoji of the row\n this.focusEmoji(this.emojiRefs.length - 1, this.emojiRefs[this.emojiRefs.length - 1].length - 1);\n }\n return;\n }\n\n // if we are not on the first tab, we should jump to the previous row of the current tab\n if (!this.focusEmoji(indexTab, indexEmoji - EMOJIS_PER_ROW)) {\n // if there is no previous row, we should jump to emoji in the sampe position of the previous tab\n const previousTab = indexTab - 1 < 0 ? 0 : indexTab - 1;\n const emojisInPreviousTab = this.emojiRefs[previousTab].length;\n const lastEmojiPosition = emojisInPreviousTab - (emojisInPreviousTab % EMOJIS_PER_ROW) + position;\n\n if (!this.focusEmoji(previousTab, lastEmojiPosition)) {\n // if there is no emoji in this position, jump to the last emoji of the row\n this.focusEmoji(indexTab - 1, this.emojiRefs[indexTab - 1].length - 1);\n }\n }\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.focusEmoji(indexTab, indexEmoji + EMOJIS_PER_ROW)) {\n // if cannot go down\n\n // Calculate position from cell 0 to cell 8\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n // check if it exists a next row in the current tab\n if (this.emojiRefs?.[indexTab]?.[indexEmoji + (EMOJIS_PER_ROW - position)]) {\n // if it exists, we should focus the last emoji of the next row in the current tab\n this.focusEmoji(indexTab, this.emojiRefs[indexTab].length - 1);\n // if we are at the end of the list it will do nothing\n } else {\n // We don't have next row, we are in the last of the tab, then jump\n // to the next tab but in the equal emoji position in row 0.\n\n if (!this.focusEmoji(indexTab + 1, position)) {\n // We are on the bottom!, should jump to the same position emoji in the first row of the first tabset\n // if it doesn't has, jump to the last\n if (!this.focusEmoji(0, position)) {\n this.focusEmoji(0, this.emojiRefs[0].length - 1);\n }\n }\n }\n }\n }\n\n if (event.key === 'ArrowLeft') {\n this.handleHorizontalNavigation('left', indexTab, indexEmoji);\n }\n\n if (event.key === 'ArrowRight') {\n this.handleHorizontalNavigation('right', indexTab, indexEmoji);\n }\n\n if (event.key === 'Tab') {\n if (this.focusEmoji(indexTab + 1, 0)) {\n this.scrollToTab((indexTab + 1) + 1, false);\n } else {\n // We are on the last emoji tabset, jump to the skin selector\n this.$emit('focus-skin-selector');\n }\n }\n\n if (event.key === 'Tab' && event.shiftKey) {\n if (this.focusEmoji(indexTab, 0) && indexTab > 0) {\n this.scrollToTab(indexTab, true);\n } else {\n this.scrollToTab(1, false);\n this.$emit('focus-search-input');\n }\n }\n\n if (event.key === 'Enter') {\n this.$emit('selected-emoji', emoji);\n }\n },\n\n handleHorizontalNavigation: function (direction, indexTab, indexEmoji) {\n if (this.isFiltering) {\n if (direction === 'left') {\n this.handleArrowLeftFiltered(indexTab, indexEmoji);\n } else if (direction === 'right') {\n this.handleArrowRightFiltered(indexTab, indexEmoji);\n }\n } else {\n if (direction === 'left') {\n this.handleArrowLeft(indexTab, indexEmoji);\n } else if (direction === 'right') {\n this.handleArrowRight(indexTab, indexEmoji);\n }\n }\n },\n\n handleArrowLeftFiltered: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(0, indexEmoji - 1)) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n }\n },\n\n handleArrowRightFiltered: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(0, indexEmoji + 1)) {\n this.focusEmoji(0, 0);\n }\n },\n\n handleArrowLeft: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(indexTab, indexEmoji - 1)) {\n if (this.emojiRefs[indexTab - 1]) {\n this.focusEmoji(indexTab - 1, this.emojiRefs[indexTab - 1].length - 1);\n } else {\n this.focusEmoji(this.emojiRefs.length - 1, this.emojiRefs[this.emojiRefs.length - 1].length - 1);\n }\n }\n },\n\n handleArrowRight: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(indexTab, indexEmoji + 1)) {\n if (!this.focusEmoji(indexTab + 1, 0)) {\n this.focusEmoji(0, 0);\n }\n }\n },\n\n handleKeyDownFilteredEmojis (event, indexEmoji, emoji) {\n event.preventDefault();\n this.hoverFirstEmoji = false;\n\n if (event.key === 'ArrowUp') {\n const position = indexEmoji % EMOJIS_PER_ROW;\n if (!this.focusEmoji(0, indexEmoji - EMOJIS_PER_ROW)) {\n const lastEmojiPosition =\n this.emojiFilteredRefs.length - (this.emojiFilteredRefs.length % EMOJIS_PER_ROW) + position;\n\n this.focusEmoji(0, lastEmojiPosition);\n\n if (!this.focusEmoji(0, lastEmojiPosition)) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n }\n }\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.focusEmoji(0, indexEmoji + EMOJIS_PER_ROW)) {\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n if (this.emojiFilteredRefs?.[indexEmoji + (EMOJIS_PER_ROW - position)]) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n } else {\n this.focusEmoji(0, position);\n }\n }\n }\n\n if (event.key === 'ArrowLeft') {\n this.handleHorizontalNavigation('left', 0, indexEmoji);\n }\n\n if (event.key === 'ArrowRight') {\n this.handleHorizontalNavigation('right', 0, indexEmoji);\n }\n\n if (event.key === 'Tab') {\n this.$emit('focus-skin-selector');\n }\n\n if (event.key === 'Enter') {\n this.$emit('selected-emoji', emoji);\n }\n },\n\n setTabLabelObserver () {\n this.tabLabelObserver = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n const { target } = entry;\n const index = parseInt(target.dataset.index);\n\n if (entry.isIntersecting && target.offsetTop <= this.$refs.tabCategoryRef?.offsetTop + 50) {\n this.fixedLabel = this.tabLabels[index - 1]?.label ?? this.tabLabels[0]?.label;\n this.$emit('scroll-into-tab', index - 1);\n } else if (entry.boundingClientRect.bottom <= this.$refs.tabCategoryRef?.getBoundingClientRect().bottom) {\n this.$emit('scroll-into-tab', index);\n this.fixedLabel = this.tabLabels[index]?.label;\n } else if (index === 1) {\n this.$emit('scroll-into-tab', index);\n this.fixedLabel = this.tabLabels[0]?.label;\n }\n });\n });\n\n this.tabLabelObserver.observe(this.$refs.tabCategoryRef);\n\n Array.from(this.$refs.listRef.children).forEach((child, index) => {\n this.tabLabelObserver.observe(child);\n child.dataset.index = index;\n });\n },\n\n focusLastEmoji () {\n this.focusEmoji(this.tabs.length - 1, 0);\n },\n\n },\n\n};\n</script>\n","export const CDN_URL = 'https://static.dialpadcdn.com/joypixels/png/unicode/32/';\nexport const EMOJIS_PER_ROW = 9;\nexport const EMOJI_PICKER_SKIN_TONE_MODIFIERS = {\n DEFAULT: 'Default',\n LIGHT: 'Light',\n MEDIUM_LIGHT: 'MediumLight',\n MEDIUM: 'Medium',\n MEDIUM_DARK: 'MediumDark',\n DARK: 'Dark',\n};\n\nexport const EMOJI_PICKER_CATEGORIES = {\n MOST_RECENTLY_USED: 'Most recently used',\n SMILEYS_AND_PEOPLE: 'Smileys and people',\n NATURE: 'Nature',\n FOOD: 'Food',\n ACTIVITY: 'Activity',\n TRAVEL: 'Travel',\n OBJECTS: 'Objects',\n SYMBOLS: 'Symbols',\n FLAGS: 'Flags',\n};\n\nexport default {\n EMOJI_PICKER_SKIN_TONE_MODIFIERS,\n EMOJI_PICKER_CATEGORIES,\n};\n","<template>\n <div class=\"d-emoji-picker__data\">\n <img\n v-if=\"emoji\"\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"`${CDN_URL + emoji.unicode_character}.png`\"\n >\n {{ emoji?.name }}\n </div>\n</template>\n\n<script>\nimport { CDN_URL } from '@/components/emoji_picker/emoji_picker_constants';\n\nexport default {\n name: 'EmojiDescription',\n\n props: {\n /**\n * Emoji data\n * @type {Object}\n * @default null\n */\n emoji: {\n type: Object,\n default: () => null,\n },\n },\n\n data () {\n return {\n CDN_URL,\n };\n },\n};\n</script>\n","<template>\n <div data-qa=\"skin-selector\">\n <div\n v-show=\"isOpen\"\n class=\"d-emoji-picker__skin-list\"\n >\n <button\n v-for=\"(skin, index) in skinList\"\n :key=\"skin.name\"\n :ref=\"`skinRef-${index}`\"\n :class=\"{\n 'selected': skinSelected?.skinCode === skin.skinCode,\n }\"\n @click=\"selectSkin(skin)\"\n @keydown=\"event => handleKeyDown(event, skin, index)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"skin.name\"\n :aria-label=\"skin.name\"\n :title=\"skin.name\"\n :src=\"`${cdnUrl + skin.unicode_output}.png`\"\n >\n </button>\n </div>\n <div\n v-show=\"!isOpen\"\n class=\"d-emoji-picker__skin-selected\"\n >\n <dt-tooltip placement=\"top-end\">\n {{ skinSelectorButtonTooltipLabel }}\n <template #anchor>\n <button\n ref=\"skinSelectorRef\"\n :aria-label=\"skinSelectorButtonTooltipLabel\"\n tabindex=\"-1\"\n @click=\"toggleSkinList\"\n @keydown=\"event => handleKeyDown(event)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"skinSelected?.name\"\n :aria-label=\"skinSelected?.name\"\n :title=\"skinSelected?.name\"\n :src=\"`${cdnUrl + skinSelected?.unicode_output}.png`\"\n >\n </button>\n </template>\n </dt-tooltip>\n </div>\n </div>\n</template>\n\n<script>\nimport DtTooltip from '@/components/tooltip/tooltip.vue';\nimport { CDN_URL, EMOJI_PICKER_SKIN_TONE_MODIFIERS } from '@/components/emoji_picker/emoji_picker_constants';\n\nexport default {\n name: 'EmojiSkinSelector',\n\n components: {\n DtTooltip,\n },\n\n props: {\n skinTone: {\n type: String,\n required: true,\n },\n\n isHovering: {\n type: Boolean,\n default: false,\n },\n\n skinSelectorButtonTooltipLabel: {\n type: String,\n required: true,\n },\n },\n\n data () {\n return {\n isOpen: false,\n skinSelected: null,\n skinsRef: [],\n cdnUrl: CDN_URL,\n };\n },\n\n computed: {\n skinPassedIn () {\n return this.skinList.find(skin => skin.skinTone === this.skinTone);\n },\n\n skinList () {\n return [\n {\n name: ':wave_tone1:',\n unicode_output: '1f44b-1f3fb',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.LIGHT,\n skinCode: '_tone1',\n },\n {\n name: ':wave_tone2:',\n unicode_output: '1f44b-1f3fc',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_LIGHT,\n skinCode: '_tone2',\n },\n {\n name: ':wave_tone3:',\n unicode_output: '1f44b-1f3fd',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM,\n skinCode: '_tone3',\n },\n {\n name: ':wave_tone4:',\n unicode_output: '1f44b-1f3fe',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_DARK,\n skinCode: '_tone4',\n },\n {\n name: ':wave_tone5:',\n unicode_output: '1f44b-1f3ff',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.DARK,\n skinCode: '_tone5',\n },\n {\n name: ':wave:',\n unicode_output: '1f44b',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.DEFAULT,\n skinCode: '',\n },\n ];\n },\n },\n\n watch: {\n isHovering (newVal) {\n if (newVal) {\n this.isOpen = false;\n }\n },\n\n skinTone (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.skinSelected = this.skinPassedIn;\n }\n },\n },\n\n mounted () {\n this.skinSelected = this.skinPassedIn;\n this.$nextTick(() => {\n this.setupSkinRefs();\n });\n },\n\n methods: {\n setupSkinRefs () {\n this.skinList.forEach((skin, index) => {\n const refKey = `skinRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.skinsRef, index, this.$refs[refKey][0]);\n }\n });\n },\n\n focusSkinSelector () {\n if (this.$refs.skinSelectorRef) {\n this.$refs.skinSelectorRef.focus();\n }\n },\n\n selectSkin (skin) {\n this.skinSelected = skin;\n this.isOpen = false;\n this.$emit('skin-tone', skin.skinTone);\n this.$nextTick(() => {\n this.focusSkinSelector();\n });\n },\n\n handleKeyDown (event, skin, index) {\n event.preventDefault();\n\n if (event.key === 'ArrowLeft') {\n if (index === 0) this.skinsRef[this.skinsRef.length - 1]?.focus();\n this.skinsRef[index - 1]?.focus();\n }\n\n if (event.key === 'ArrowRight') {\n if (this.skinsRef.length) this.skinsRef[0]?.focus();\n this.skinsRef[index + 1]?.focus();\n }\n\n if (event.key === 'Enter') {\n if (skin) { this.selectSkin(skin); } else {\n this.toggleSkinList();\n }\n }\n\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n this.$emit('focus-last-emoji');\n } else {\n this.$emit('focus-tabset');\n }\n }\n },\n\n toggleSkinList () {\n this.isOpen = !this.isOpen;\n this.$nextTick(() => {\n if (this.skinsRef[0]) {\n this.skinsRef[0].focus();\n }\n });\n },\n },\n};\n</script>\n","<template>\n <div\n class=\"d-emoji-picker\"\n >\n <div class=\"d-emoji-picker--header\">\n <emoji-tabset\n ref=\"tabsetRef\"\n :emoji-filter=\"searchQuery\"\n :show-recently-used-tab=\"showRecentlyUsedTab\"\n :scroll-into-tab=\"scrollIntoTab\"\n :tab-set-labels=\"tabSetLabels\"\n :is-scrolling=\"isScrolling\"\n @focus-search-input=\"$refs.searchInputRef.focusSearchInput()\"\n @focus-skin-selector=\"$refs.skinSelectorRef.focusSkinSelector()\"\n @selected-tabset=\"scrollToSelectedTabset\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n <div class=\"d-emoji-picker--body\">\n <emoji-search\n ref=\"searchInputRef\"\n :model-value=\"searchQuery\"\n :search-placeholder-label=\"searchPlaceholderLabel\"\n @update:model-value=\"newValue => searchQuery = newValue\"\n @select-first-emoji=\"$emit('selected-emoji', highlightedEmoji)\"\n @focus-tabset=\"$refs.tabsetRef.focusTabset()\"\n @focus-emoji-selector=\"$refs.emojiSelectorRef.focusEmojiSelector()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n <emoji-selector\n ref=\"emojiSelectorRef\"\n :emoji-filter=\"searchQuery\"\n :skin-tone=\"skinTone\"\n :tab-set-labels=\"tabSetLabels\"\n :search-results-label=\"searchResultsLabel\"\n :search-no-results-label=\"searchNoResultsLabel\"\n :recently-used-emojis=\"recentlyUsedEmojis\"\n :selected-tabset=\"selectedTabset\"\n @scroll-into-tab=\"updateScrollIntoTab\"\n @is-scrolling=\"updateIsScrolling\"\n @highlighted-emoji=\"updateHighlightedEmoji\"\n @selected-emoji=\"$emit('selected-emoji', $event)\"\n @focus-skin-selector=\"$refs.skinSelectorRef.focusSkinSelector()\"\n @focus-search-input=\"$refs.searchInputRef.focusSearchInput()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n <div class=\"d-emoji-picker--footer\">\n <emoji-description :emoji=\"highlightedEmoji\" />\n <emoji-skin-selector\n ref=\"skinSelectorRef\"\n :is-hovering=\"!!highlightedEmoji\"\n :skin-selector-button-tooltip-label=\"skinSelectorButtonTooltipLabel\"\n :skin-tone=\"skinTone\"\n @skin-tone=\"$emit('skin-tone', $event)\"\n @focus-tabset=\"$refs.tabsetRef.focusTabset()\"\n @focus-last-emoji=\"$refs.emojiSelectorRef.focusLastEmoji()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport EmojiTabset from './modules/emoji_tabset.vue';\nimport EmojiSearch from './modules/emoji_search.vue';\nimport EmojiSelector from './modules/emoji_selector.vue';\nimport EmojiDescription from './modules/emoji_description.vue';\nimport EmojiSkinSelector from './modules/emoji_skin_selector.vue';\n\nexport default {\n name: 'DtEmojiPicker',\n\n components: {\n EmojiTabset,\n EmojiSearch,\n EmojiSelector,\n EmojiDescription,\n EmojiSkinSelector,\n },\n\n props: {\n recentlyUsedEmojis: {\n type: Array,\n },\n\n searchPlaceholderLabel: {\n type: String,\n required: true,\n },\n\n searchResultsLabel: {\n type: String,\n required: true,\n },\n\n searchNoResultsLabel: {\n type: String,\n required: true,\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n\n skinTone: {\n type: String,\n },\n\n skinSelectorButtonTooltipLabel: {\n type: String,\n required: true,\n },\n },\n\n data () {\n return {\n searchQuery: '',\n highlightedEmoji: null,\n selectedTabset: {},\n scrollIntoTab: 0,\n isScrolling: false,\n };\n },\n\n computed: {\n showRecentlyUsedTab () {\n return this.recentlyUsedEmojis?.length > 0;\n },\n },\n\n methods: {\n scrollToSelectedTabset (tabId) {\n this.searchQuery = '';\n this.selectedTabset = { ...this.selectedTabset, tabId };\n },\n\n updateScrollIntoTab (value) {\n this.scrollIntoTab = value;\n },\n\n updateIsScrolling (value) {\n this.isScrolling = value;\n },\n\n updateHighlightedEmoji (emoji) {\n this.highlightedEmoji = emoji;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtTabGroup","DtTab","DtIcon","EMOJI_PICKER_CATEGORIES","tab","index","newVal","id","skin","refKey","event","tabId","DtInput","value","emojisImported","CDN_URL","label","newValue","newFilter","_a","emoji","i","el","indexEmoji","searchStr","obj","nameIncludesSearchStr","keywordsIncludeSearchStr","keyword","fn","delay","timeout","args","len","tabIndex","focusFirstEmoji","vm","tabElement","container","offsetTop","isScrolling","prevScrollTop","scrollTop","isFirst","indexTab","emojiRef","position","EMOJIS_PER_ROW","numberOfMissingEmojis","emojiToJump","previousTab","emojisInPreviousTab","lastEmojiPosition","_b","direction","entries","entry","target","_c","_d","_e","_f","child","EMOJI_PICKER_SKIN_TONE_MODIFIERS","DtTooltip","oldVal","EmojiTabset","EmojiSearch","EmojiSelector","EmojiDescription","EmojiSkinSelector"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"emoji-picker.cjs","sources":["../../components/emoji_picker/modules/emoji_tabset.vue","../../components/emoji_picker/modules/emoji_search.vue","../../components/emoji_picker/modules/emoji_selector.vue","../../components/emoji_picker/emoji_picker_constants.js","../../components/emoji_picker/modules/emoji_description.vue","../../components/emoji_picker/modules/emoji_skin_selector.vue","../../components/emoji_picker/emoji_picker.vue"],"sourcesContent":["<template>\n <div class=\"d-emoji-picker__tabset\">\n <dt-tab-group\n tab-list-class=\"d-emoji-picker__tabset-list\"\n :selected=\"selectedTab\"\n >\n <template #tabs>\n <dt-tab\n v-for=\"(tab, index) in tabs\"\n :id=\"tab.id\"\n :ref=\"`tabsetRef-${index}`\"\n :key=\"tab.id\"\n :panel-id=\"tab.panelId\"\n :label=\"tab.label\"\n aria-controls=\"d-emoji-picker-list\"\n :tabindex=\"index + 1\"\n @click.capture.stop=\"selectTabset(tab.id)\"\n @keydown=\"handleKeyDown($event, tab.id)\"\n >\n <dt-icon\n size=\"400\"\n :name=\"tab.icon\"\n />\n </dt-tab>\n </template>\n </dt-tab-group>\n </div>\n</template>\n\n<script>\nimport DtTabGroup from '@/components/tabs/tab_group.vue';\nimport DtTab from '@/components/tabs/tab.vue';\nimport DtIcon from '@/components/icon/icon.vue';\nimport { EMOJI_PICKER_CATEGORIES } from '@/components/emoji_picker';\n\nexport default {\n name: 'EmojiTabset',\n\n components: {\n DtTabGroup,\n DtTab,\n DtIcon,\n },\n\n props: {\n showRecentlyUsedTab: {\n type: Boolean,\n default: false,\n },\n\n scrollIntoTab: {\n type: Number,\n required: true,\n },\n\n isScrolling: {\n type: Boolean,\n default: false,\n },\n\n emojiFilter: {\n type: String,\n default: '',\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n },\n\n data () {\n return {\n selectedTab: '1',\n tabsetRef: [],\n TABS_DATA: [\n { label: EMOJI_PICKER_CATEGORIES.MOST_RECENTLY_USED, icon: 'clock' },\n { label: EMOJI_PICKER_CATEGORIES.SMILEYS_AND_PEOPLE, icon: 'satisfied' },\n { label: EMOJI_PICKER_CATEGORIES.NATURE, icon: 'living-thing' },\n { label: EMOJI_PICKER_CATEGORIES.FOOD, icon: 'food' },\n { label: EMOJI_PICKER_CATEGORIES.ACTIVITY, icon: 'object' },\n { label: EMOJI_PICKER_CATEGORIES.TRAVEL, icon: 'transportation' },\n { label: EMOJI_PICKER_CATEGORIES.OBJECTS, icon: 'lightbulb' },\n { label: EMOJI_PICKER_CATEGORIES.SYMBOLS, icon: 'heart' },\n { label: EMOJI_PICKER_CATEGORIES.FLAGS, icon: 'flag' },\n ],\n };\n },\n\n computed: {\n tabs () {\n const tabsData = this.showRecentlyUsedTab ? this.TABS_DATA : this.TABS_DATA.slice(1);\n return tabsData.map((tab, index) => ({\n ...tab,\n label: this.tabSetLabels[index],\n id: (index + 1).toString(),\n panelId: (index + 1).toString(),\n }));\n },\n\n isSearching () {\n return this.emojiFilter.length > 0;\n },\n },\n\n watch: {\n scrollIntoTab: function (newVal) {\n if (!this.isScrolling && !this.isSearching) {\n this.selectedTab = (newVal + 1).toString();\n }\n },\n\n isSearching: function (newVal) {\n if (newVal) {\n this.selectedTab = null;\n }\n },\n },\n\n mounted () {\n this.$nextTick(() => {\n this.setTabsetRef();\n });\n },\n\n methods: {\n selectTabset (id) {\n if (!this.isScrolling) {\n this.selectedTab = id;\n }\n this.$emit('selected-tabset', id);\n },\n\n setTabsetRef () {\n this.tabs.forEach((skin, index) => {\n const refKey = `tabsetRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.tabsetRef, index, this.$refs[refKey][0].$el);\n }\n });\n },\n\n focusTabset () {\n if (this.tabsetRef[0]) {\n this.tabsetRef[0].focus();\n }\n },\n\n handleKeyDown (event, tabId) {\n if (event.key === 'Enter') {\n this.selectTabset(tabId);\n if (this.tabsetRef[tabId - 1]) {\n this.tabsetRef[tabId - 1].blur();\n }\n }\n\n if (event.key === 'Tab') {\n event.preventDefault();\n if (event.shiftKey) {\n this.$emit('focus-skin-selector');\n } else {\n this.$emit('focus-search-input');\n }\n }\n\n if (event.key === 'ArrowDown') {\n this.$emit('focus-search-input');\n }\n },\n },\n};\n</script>\n","<template>\n <div class=\"d-emoji-picker__search d-emoji-picker__alignment\">\n <dt-input\n id=\"searchInput\"\n ref=\"searchInputRef\"\n :placeholder=\"searchPlaceholderLabel\"\n :value=\"modelValue\"\n @input=\"updateModelValue\"\n @keydown.up=\"focusTabset\"\n @keydown.down.prevent=\"focusEmojiSelector\"\n @keydown.enter=\"selectFirstEmoji\"\n >\n <template #leftIcon>\n <dt-icon\n name=\"search\"\n size=\"200\"\n />\n </template>\n <template\n v-if=\"modelValue.length > 0\"\n #rightIcon\n >\n <button\n class=\"d-emoji-picker__search-button\"\n @click=\"clearSearch\"\n @keydown.enter=\"clearSearch\"\n >\n <dt-icon name=\"close\" />\n </button>\n </template>\n </dt-input>\n </div>\n</template>\n\n<script>\nimport { DtInput } from '@/components/input';\nimport { DtIcon } from '@/components/icon';\n\nexport default {\n name: 'EmojiSearch',\n\n components: {\n DtInput,\n DtIcon,\n },\n\n props: {\n searchPlaceholderLabel: {\n type: String,\n required: true,\n },\n\n modelValue: {\n type: String,\n default: '',\n },\n },\n\n mounted () {\n this.focusSearchInput();\n },\n\n methods: {\n updateModelValue (value) {\n this.$emit('update:model-value', value);\n },\n\n focusEmojiSelector () {\n this.$emit('focus-emoji-selector');\n },\n\n focusTabset () {\n this.$emit('focus-tabset');\n },\n\n selectFirstEmoji () {\n this.$emit('select-first-emoji');\n },\n\n clearSearch () {\n this.$emit('update:model-value', '');\n this.focusSearchInput();\n },\n\n focusSearchInput () {\n this.$refs.searchInputRef.focus();\n },\n },\n};\n</script>\n","<template>\n <div\n class=\"d-emoji-picker__selector\"\n >\n <div\n id=\"d-emoji-picker-list\"\n ref=\"listRef\"\n class=\"d-emoji-picker__list\"\n >\n <p\n v-if=\"emojiFilter\"\n class=\"d-emoji-picker__search-label d-emoji-picker__alignment\"\n >\n {{ filteredEmojis.length > 0 ? searchResultsLabel : searchNoResultsLabel }}\n </p>\n <div\n v-else\n ref=\"tabCategoryRef\"\n class=\"d-emoji-picker__category d-emoji-picker__alignment\"\n >\n <p>\n {{ fixedLabel }}\n </p>\n </div>\n <div\n v-for=\"(tabLabel, indexTab) in tabLabels\"\n v-show=\"!emojiFilter\"\n :key=\"indexTab\"\n :ref=\"`tabLabelRef-${indexTab}`\"\n class=\"d-emoji-picker__alignment\"\n >\n <p\n v-if=\"indexTab\"\n >\n {{ tabLabel.label }}\n </p>\n <div\n class=\"d-emoji-picker__tab\"\n >\n <button\n v-for=\"(emoji, indexEmoji) in\n (emojis[tabs[indexTab] + skinTone] ? emojis[tabs[indexTab] + skinTone] : emojis[tabs[indexTab]])\"\n :key=\"emoji.shortname\"\n :ref=\"`emojiRef-${indexTab}`\"\n type=\"button\"\n :aria-label=\"emoji.name\"\n @click=\"$emit('selected-emoji', emoji)\"\n @focusin=\"$emit('highlighted-emoji', emoji)\"\n @focusout=\"$emit('highlighted-emoji', null)\"\n @mouseover=\"$emit('highlighted-emoji', emoji)\"\n @mouseleave=\"$emit('highlighted-emoji', null)\"\n @keydown=\"event => handleKeyDown(event, indexTab, indexEmoji, emoji)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"getImgSrc(emoji.unicode_character)\"\n @error=\"handleImageError\"\n >\n </button>\n </div>\n </div>\n <div\n v-if=\"emojiFilter\"\n class=\"d-emoji-picker__alignment\"\n >\n <div\n class=\"d-emoji-picker__tab \"\n data-qa=\"filtered-emojis\"\n >\n <button\n v-for=\"(emoji, index) in filteredEmojis\"\n :key=\"emoji.shortname\"\n :ref=\"`filteredEmoji-${index}`\"\n type=\"button\"\n :aria-label=\"emoji.name\"\n :class=\"{\n 'hover-emoji': (index === 0 && hoverFirstEmoji),\n }\"\n @click=\"$emit('selected-emoji', emoji)\"\n @focusin=\"$emit('highlighted-emoji', emoji)\"\n @focusout=\"$emit('highlighted-emoji', null)\"\n @mouseover=\"hoverEmoji(emoji)\"\n @mouseleave=\"hoverEmoji(null)\"\n @keydown=\"event => handleKeyDownFilteredEmojis(event, index, emoji)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"`${CDN_URL + emoji.unicode_character}.png`\"\n >\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { emojisGrouped as emojisImported } from '@dialpad/dialtone-emojis';\nimport { CDN_URL, EMOJIS_PER_ROW } from '@/components/emoji_picker';\n\nexport default {\n name: 'EmojiSelector',\n\n props: {\n emojiFilter: {\n type: String,\n default: '',\n },\n\n skinTone: {\n type: String,\n required: true,\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n\n selectedTabset: {\n type: Object,\n required: true,\n },\n\n searchResultsLabel: {\n type: String,\n required: true,\n },\n\n searchNoResultsLabel: {\n type: String,\n required: true,\n },\n\n recentlyUsedEmojis: {\n type: Array,\n default: () => [],\n },\n },\n\n data () {\n return {\n emojiRefs: [],\n emojiFilteredRefs: [],\n isFiltering: false,\n hoverFirstEmoji: true,\n fixedLabel: '',\n filteredEmojis: [],\n TABS_DATA: ['Recently used', 'People', 'Nature', 'Food', 'Activity', 'Travel', 'Objects', 'Symbols', 'Flags'],\n tabLabelObserver: null,\n };\n },\n\n computed: {\n currentEmojis () {\n return [\n ...this.emojis[`People${this.skinTone}`] || [],\n ...this.emojis.Nature || [],\n ...this.emojis.Food || [],\n ...this.emojis[`Activity${this.skinTone}`] || [],\n ...this.emojis.Travel || [],\n ...this.emojis[`Objects${this.skinTone}`] || [],\n ...this.emojis.Symbols || [],\n ...this.emojis.Flags || [],\n ];\n },\n\n emojis () {\n return emojisImported;\n },\n\n CDN_URL () {\n return CDN_URL;\n },\n\n tabLabels () {\n return this.recentlyUsedEmojis.length\n ? this.tabSetLabels.map((label, index) => ({ label, ref: this.$refs[`tabLabelRef-${index}`] }))\n : this.tabSetLabels.slice(1).map((label, index) => ({ label, ref: this.$refs[`tabLabelRef-${index}`] }));\n },\n\n tabs () {\n return this.recentlyUsedEmojis.length ? this.TABS_DATA : this.TABS_DATA.slice(1);\n },\n },\n\n watch: {\n currentEmojis: {\n handler () {\n this.searchByNameAndKeywords();\n },\n\n immediate: true,\n },\n\n recentlyUsedEmojis: {\n handler (newValue) {\n this.emojis['Recently used'] = newValue;\n },\n\n immediate: true,\n },\n\n emojiFilter: {\n handler (newFilter) {\n this.resetScroll();\n if (newFilter) {\n this.isFiltering = true;\n } else {\n this.isFiltering = false;\n this.$emit('highlighted-emoji', null);\n }\n\n this.debouncedSearch();\n },\n },\n\n selectedTabset: {\n handler (newValue) {\n this.scrollToTab(newValue.tabId);\n },\n\n deep: true,\n },\n },\n\n created () {\n this.debouncedSearch = this.debounce(this.searchByNameAndKeywords, 300);\n },\n\n mounted () {\n this.$nextTick(() => {\n this.setupEmojiRefs();\n this.setupFilteredRefs();\n this.setupTabLabelRefs();\n this.setTabLabelObserver();\n });\n },\n\n beforeDestroy () {\n if (this.tabLabelObserver) {\n this.tabLabelObserver.disconnect();\n }\n },\n\n methods: {\n setupTabLabelRefs () {\n this.tabSetLabels?.forEach((label, index) => {\n const refKey = `tabLabelRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.tabLabels, index, { label, ref: this.$refs[refKey] });\n }\n });\n },\n\n setupFilteredRefs () {\n // it is necessary to clean the array before setting the new refs\n this.emojiFilteredRefs = [];\n\n this.filteredEmojis.forEach((emoji, index) => {\n const refKey = `filteredEmoji-${index}`;\n if (this.$refs[refKey]) {\n this.setFilteredRef(this.$refs[refKey], index);\n }\n });\n },\n\n setupEmojiRefs () {\n for (let i = 0; i < this.tabs.length; i++) {\n const refKey = `emojiRef-${i}`;\n if (this.$refs[refKey]) {\n this.$refs[refKey].forEach((el, indexEmoji) => {\n if (el) {\n this.setEmojiRef(el, i, indexEmoji);\n }\n });\n }\n }\n },\n\n searchByNameAndKeywords () {\n const searchStr = this.emojiFilter.toLowerCase();\n this.filteredEmojis = this.currentEmojis.filter(function (obj) {\n const nameIncludesSearchStr = obj.name.toLowerCase().includes(searchStr);\n const keywordsIncludeSearchStr = obj.keywords.some(function (keyword) {\n return keyword.toLowerCase().includes(searchStr);\n });\n return nameIncludesSearchStr || keywordsIncludeSearchStr;\n });\n this.$nextTick(function () {\n if (searchStr) {\n this.hoverEmoji(this.filteredEmojis[0], true);\n this.setupFilteredRefs();\n }\n });\n },\n\n debounce: function (fn, delay) {\n if (delay === undefined) { delay = 300; }\n let timeout;\n return function () {\n const args = []; let len = arguments.length;\n while (len--) args[len] = arguments[len];\n\n clearTimeout(timeout);\n timeout = setTimeout(function () {\n fn.apply(undefined, args);\n }, delay);\n };\n },\n\n getImgSrc: function (emoji) {\n return this.CDN_URL + emoji + '.png';\n },\n\n handleImageError: function (event) {\n event.target.parentNode.style.display = 'none';\n },\n\n scrollToTab: function (tabIndex, focusFirstEmoji) {\n const vm = this;\n if (focusFirstEmoji === undefined) { focusFirstEmoji = true; }\n const tabLabel = vm.tabLabels[tabIndex - 1];\n const tabElement = tabLabel.ref[0];\n\n vm.$nextTick(function () {\n const container = vm.$refs.listRef;\n const offsetTop = tabIndex === '1' ? 0 : tabElement.offsetTop - 20;\n\n let isScrolling = true;\n let prevScrollTop = container.scrollTop;\n vm.$emit('is-scrolling', true);\n\n container.addEventListener('scroll', function () {\n if (isScrolling) {\n const scrollTop = container.scrollTop;\n if (\n (prevScrollTop < scrollTop && scrollTop >= offsetTop) ||\n (prevScrollTop > scrollTop && scrollTop <= offsetTop)\n ) {\n isScrolling = false;\n vm.$emit('is-scrolling', false);\n }\n prevScrollTop = scrollTop;\n }\n });\n\n container.scrollTop = offsetTop;\n\n if (focusFirstEmoji) {\n vm.focusEmoji(tabIndex - 1, 0);\n }\n });\n },\n\n resetScroll: function () {\n const container = this.$refs.listRef;\n container.scrollTop = 0;\n },\n\n focusEmojiSelector: function () {\n this.focusEmoji(0, 0);\n },\n\n hoverEmoji (emoji, isFirst) {\n if (isFirst === undefined) { isFirst = false; }\n this.hoverFirstEmoji = isFirst;\n this.$emit('highlighted-emoji', emoji);\n },\n\n setEmojiRef: function (el, indexTab, indexEmoji) {\n if (!this.emojiRefs[indexTab]) {\n this.$set(this.emojiRefs, indexTab, []);\n }\n this.$set(this.emojiRefs[indexTab], indexEmoji, el);\n },\n\n setFilteredRef: function (el, index) {\n this.$set(this.emojiFilteredRefs, index, el);\n },\n\n focusEmoji: function (indexTab, indexEmoji) {\n // eslint-disable-next-line max-len\n const emojiRef = this.isFiltering ? this.emojiFilteredRefs[indexEmoji]?.[0] : this.emojiRefs[indexTab] && this.emojiRefs[indexTab][indexEmoji];\n if (emojiRef) {\n emojiRef.focus();\n return true;\n }\n\n return false;\n },\n\n handleKeyDown: function (event, indexTab, indexEmoji, emoji) {\n event.preventDefault();\n\n if (event.key === 'ArrowUp') {\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n if (indexTab === 0) {\n // we are on the first emoji tab, then we should jump to the last row of the last emoji tab\n const numberOfMissingEmojis =\n EMOJIS_PER_ROW - (this.emojiRefs[this.emojiRefs.length - 1].length % EMOJIS_PER_ROW);\n\n const emojiToJump =\n this.emojiRefs[this.emojiRefs.length - 1].length + numberOfMissingEmojis - (EMOJIS_PER_ROW - position);\n\n if (!this.focusEmoji(this.emojiRefs.length - 1, emojiToJump)) {\n // if there is no emoji in this position, jump to the last emoji of the row\n this.focusEmoji(this.emojiRefs.length - 1, this.emojiRefs[this.emojiRefs.length - 1].length - 1);\n }\n return;\n }\n\n // if we are not on the first tab, we should jump to the previous row of the current tab\n if (!this.focusEmoji(indexTab, indexEmoji - EMOJIS_PER_ROW)) {\n // if there is no previous row, we should jump to emoji in the sampe position of the previous tab\n const previousTab = indexTab - 1 < 0 ? 0 : indexTab - 1;\n const emojisInPreviousTab = this.emojiRefs[previousTab].length;\n const lastEmojiPosition = emojisInPreviousTab - (emojisInPreviousTab % EMOJIS_PER_ROW) + position;\n\n if (!this.focusEmoji(previousTab, lastEmojiPosition)) {\n // if there is no emoji in this position, jump to the last emoji of the row\n this.focusEmoji(indexTab - 1, this.emojiRefs[indexTab - 1].length - 1);\n }\n }\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.focusEmoji(indexTab, indexEmoji + EMOJIS_PER_ROW)) {\n // if cannot go down\n\n // Calculate position from cell 0 to cell 8\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n // check if it exists a next row in the current tab\n if (this.emojiRefs?.[indexTab]?.[indexEmoji + (EMOJIS_PER_ROW - position)]) {\n // if it exists, we should focus the last emoji of the next row in the current tab\n this.focusEmoji(indexTab, this.emojiRefs[indexTab].length - 1);\n // if we are at the end of the list it will do nothing\n } else {\n // We don't have next row, we are in the last of the tab, then jump\n // to the next tab but in the equal emoji position in row 0.\n\n if (!this.focusEmoji(indexTab + 1, position)) {\n // We are on the bottom!, should jump to the same position emoji in the first row of the first tabset\n // if it doesn't has, jump to the last\n if (!this.focusEmoji(0, position)) {\n this.focusEmoji(0, this.emojiRefs[0].length - 1);\n }\n }\n }\n }\n }\n\n if (event.key === 'ArrowLeft') {\n this.handleHorizontalNavigation('left', indexTab, indexEmoji);\n }\n\n if (event.key === 'ArrowRight') {\n this.handleHorizontalNavigation('right', indexTab, indexEmoji);\n }\n\n if (event.key === 'Tab') {\n if (this.focusEmoji(indexTab + 1, 0)) {\n this.scrollToTab((indexTab + 1) + 1, false);\n } else {\n // We are on the last emoji tabset, jump to the skin selector\n this.$emit('focus-skin-selector');\n }\n }\n\n if (event.key === 'Tab' && event.shiftKey) {\n if (this.focusEmoji(indexTab, 0) && indexTab > 0) {\n this.scrollToTab(indexTab, true);\n } else {\n this.scrollToTab(1, false);\n this.$emit('focus-search-input');\n }\n }\n\n if (event.key === 'Enter') {\n this.$emit('selected-emoji', emoji);\n }\n },\n\n handleHorizontalNavigation: function (direction, indexTab, indexEmoji) {\n if (this.isFiltering) {\n if (direction === 'left') {\n this.handleArrowLeftFiltered(indexTab, indexEmoji);\n } else if (direction === 'right') {\n this.handleArrowRightFiltered(indexTab, indexEmoji);\n }\n } else {\n if (direction === 'left') {\n this.handleArrowLeft(indexTab, indexEmoji);\n } else if (direction === 'right') {\n this.handleArrowRight(indexTab, indexEmoji);\n }\n }\n },\n\n handleArrowLeftFiltered: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(0, indexEmoji - 1)) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n }\n },\n\n handleArrowRightFiltered: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(0, indexEmoji + 1)) {\n this.focusEmoji(0, 0);\n }\n },\n\n handleArrowLeft: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(indexTab, indexEmoji - 1)) {\n if (this.emojiRefs[indexTab - 1]) {\n this.focusEmoji(indexTab - 1, this.emojiRefs[indexTab - 1].length - 1);\n } else {\n this.focusEmoji(this.emojiRefs.length - 1, this.emojiRefs[this.emojiRefs.length - 1].length - 1);\n }\n }\n },\n\n handleArrowRight: function (indexTab, indexEmoji) {\n if (!this.focusEmoji(indexTab, indexEmoji + 1)) {\n if (!this.focusEmoji(indexTab + 1, 0)) {\n this.focusEmoji(0, 0);\n }\n }\n },\n\n handleKeyDownFilteredEmojis (event, indexEmoji, emoji) {\n event.preventDefault();\n this.hoverFirstEmoji = false;\n\n if (event.key === 'ArrowUp') {\n const position = indexEmoji % EMOJIS_PER_ROW;\n if (!this.focusEmoji(0, indexEmoji - EMOJIS_PER_ROW)) {\n const lastEmojiPosition =\n this.emojiFilteredRefs.length - (this.emojiFilteredRefs.length % EMOJIS_PER_ROW) + position;\n\n this.focusEmoji(0, lastEmojiPosition);\n\n if (!this.focusEmoji(0, lastEmojiPosition)) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n }\n }\n }\n\n if (event.key === 'ArrowDown') {\n if (!this.focusEmoji(0, indexEmoji + EMOJIS_PER_ROW)) {\n const position = indexEmoji % EMOJIS_PER_ROW;\n\n if (this.emojiFilteredRefs?.[indexEmoji + (EMOJIS_PER_ROW - position)]) {\n this.focusEmoji(0, this.emojiFilteredRefs.length - 1);\n } else {\n this.focusEmoji(0, position);\n }\n }\n }\n\n if (event.key === 'ArrowLeft') {\n this.handleHorizontalNavigation('left', 0, indexEmoji);\n }\n\n if (event.key === 'ArrowRight') {\n this.handleHorizontalNavigation('right', 0, indexEmoji);\n }\n\n if (event.key === 'Tab') {\n this.$emit('focus-skin-selector');\n }\n\n if (event.key === 'Enter') {\n this.$emit('selected-emoji', emoji);\n }\n },\n\n setTabLabelObserver () {\n this.tabLabelObserver = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n const { target } = entry;\n const index = parseInt(target.dataset.index);\n\n if (entry.isIntersecting && target.offsetTop <= this.$refs.tabCategoryRef?.offsetTop + 50) {\n this.fixedLabel = this.tabLabels[index - 1]?.label ?? this.tabLabels[0]?.label;\n this.$emit('scroll-into-tab', index - 1);\n } else if (entry.boundingClientRect.bottom <= this.$refs.tabCategoryRef?.getBoundingClientRect().bottom) {\n this.$emit('scroll-into-tab', index);\n this.fixedLabel = this.tabLabels[index]?.label;\n } else if (index === 1) {\n this.$emit('scroll-into-tab', index);\n this.fixedLabel = this.tabLabels[0]?.label;\n }\n });\n });\n\n this.tabLabelObserver.observe(this.$refs.tabCategoryRef);\n\n Array.from(this.$refs.listRef.children).forEach((child, index) => {\n this.tabLabelObserver.observe(child);\n child.dataset.index = index;\n });\n },\n\n focusLastEmoji () {\n this.focusEmoji(this.tabs.length - 1, 0);\n },\n\n },\n\n};\n</script>\n","export const CDN_URL = 'https://static.dialpadcdn.com/joypixels/png/unicode/32/';\nexport const EMOJIS_PER_ROW = 9;\nexport const EMOJI_PICKER_SKIN_TONE_MODIFIERS = {\n DEFAULT: 'Default',\n LIGHT: 'Light',\n MEDIUM_LIGHT: 'MediumLight',\n MEDIUM: 'Medium',\n MEDIUM_DARK: 'MediumDark',\n DARK: 'Dark',\n};\n\nexport const EMOJI_PICKER_CATEGORIES = {\n MOST_RECENTLY_USED: 'Most recently used',\n SMILEYS_AND_PEOPLE: 'Smileys and people',\n NATURE: 'Nature',\n FOOD: 'Food',\n ACTIVITY: 'Activity',\n TRAVEL: 'Travel',\n OBJECTS: 'Objects',\n SYMBOLS: 'Symbols',\n FLAGS: 'Flags',\n};\n\nexport default {\n EMOJI_PICKER_SKIN_TONE_MODIFIERS,\n EMOJI_PICKER_CATEGORIES,\n};\n","<template>\n <div class=\"d-emoji-picker__data\">\n <img\n v-if=\"emoji\"\n class=\"d-icon d-icon--size-500\"\n :alt=\"emoji.name\"\n :aria-label=\"emoji.name\"\n :title=\"emoji.name\"\n :src=\"`${CDN_URL + emoji.unicode_character}.png`\"\n >\n {{ emoji?.name }}\n </div>\n</template>\n\n<script>\nimport { CDN_URL } from '@/components/emoji_picker/emoji_picker_constants';\n\nexport default {\n name: 'EmojiDescription',\n\n props: {\n /**\n * Emoji data\n * @type {Object}\n * @default null\n */\n emoji: {\n type: Object,\n default: () => null,\n },\n },\n\n data () {\n return {\n CDN_URL,\n };\n },\n};\n</script>\n","<template>\n <div data-qa=\"skin-selector\">\n <div\n v-show=\"isOpen\"\n class=\"d-emoji-picker__skin-list\"\n >\n <button\n v-for=\"(skin, index) in skinList\"\n :key=\"skin.name\"\n :ref=\"`skinRef-${index}`\"\n :class=\"{\n 'selected': skinSelected?.skinCode === skin.skinCode,\n }\"\n @click=\"selectSkin(skin)\"\n @keydown=\"event => handleKeyDown(event, skin, index)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"skin.name\"\n :aria-label=\"skin.name\"\n :title=\"skin.name\"\n :src=\"`${cdnUrl + skin.unicode_output}.png`\"\n >\n </button>\n </div>\n <div\n v-show=\"!isOpen\"\n class=\"d-emoji-picker__skin-selected\"\n >\n <dt-tooltip placement=\"top-end\">\n {{ skinSelectorButtonTooltipLabel }}\n <template #anchor>\n <button\n ref=\"skinSelectorRef\"\n :aria-label=\"skinSelectorButtonTooltipLabel\"\n tabindex=\"-1\"\n @click=\"toggleSkinList\"\n @keydown=\"event => handleKeyDown(event)\"\n >\n <img\n class=\"d-icon d-icon--size-500\"\n :alt=\"skinSelected?.name\"\n :aria-label=\"skinSelected?.name\"\n :title=\"skinSelected?.name\"\n :src=\"`${cdnUrl + skinSelected?.unicode_output}.png`\"\n >\n </button>\n </template>\n </dt-tooltip>\n </div>\n </div>\n</template>\n\n<script>\nimport DtTooltip from '@/components/tooltip/tooltip.vue';\nimport { CDN_URL, EMOJI_PICKER_SKIN_TONE_MODIFIERS } from '@/components/emoji_picker/emoji_picker_constants';\n\nexport default {\n name: 'EmojiSkinSelector',\n\n components: {\n DtTooltip,\n },\n\n props: {\n skinTone: {\n type: String,\n required: true,\n },\n\n isHovering: {\n type: Boolean,\n default: false,\n },\n\n skinSelectorButtonTooltipLabel: {\n type: String,\n required: true,\n },\n },\n\n data () {\n return {\n isOpen: false,\n skinSelected: null,\n skinsRef: [],\n cdnUrl: CDN_URL,\n };\n },\n\n computed: {\n skinPassedIn () {\n return this.skinList.find(skin => skin.skinTone === this.skinTone);\n },\n\n skinList () {\n return [\n {\n name: ':wave_tone1:',\n unicode_output: '1f44b-1f3fb',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.LIGHT,\n skinCode: '_tone1',\n },\n {\n name: ':wave_tone2:',\n unicode_output: '1f44b-1f3fc',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_LIGHT,\n skinCode: '_tone2',\n },\n {\n name: ':wave_tone3:',\n unicode_output: '1f44b-1f3fd',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM,\n skinCode: '_tone3',\n },\n {\n name: ':wave_tone4:',\n unicode_output: '1f44b-1f3fe',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.MEDIUM_DARK,\n skinCode: '_tone4',\n },\n {\n name: ':wave_tone5:',\n unicode_output: '1f44b-1f3ff',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.DARK,\n skinCode: '_tone5',\n },\n {\n name: ':wave:',\n unicode_output: '1f44b',\n skinTone: EMOJI_PICKER_SKIN_TONE_MODIFIERS.DEFAULT,\n skinCode: '',\n },\n ];\n },\n },\n\n watch: {\n isHovering (newVal) {\n if (newVal) {\n this.isOpen = false;\n }\n },\n\n skinTone (newVal, oldVal) {\n if (newVal !== oldVal) {\n this.skinSelected = this.skinPassedIn;\n }\n },\n },\n\n mounted () {\n this.skinSelected = this.skinPassedIn;\n this.$nextTick(() => {\n this.setupSkinRefs();\n });\n },\n\n methods: {\n setupSkinRefs () {\n this.skinList.forEach((skin, index) => {\n const refKey = `skinRef-${index}`;\n if (this.$refs[refKey]) {\n this.$set(this.skinsRef, index, this.$refs[refKey][0]);\n }\n });\n },\n\n focusSkinSelector () {\n if (this.$refs.skinSelectorRef) {\n this.$refs.skinSelectorRef.focus();\n }\n },\n\n selectSkin (skin) {\n this.skinSelected = skin;\n this.isOpen = false;\n this.$emit('skin-tone', skin.skinTone);\n this.$nextTick(() => {\n this.focusSkinSelector();\n });\n },\n\n handleKeyDown (event, skin, index) {\n event.preventDefault();\n\n if (event.key === 'ArrowLeft') {\n if (index === 0) this.skinsRef[this.skinsRef.length - 1]?.focus();\n this.skinsRef[index - 1]?.focus();\n }\n\n if (event.key === 'ArrowRight') {\n if (this.skinsRef.length) this.skinsRef[0]?.focus();\n this.skinsRef[index + 1]?.focus();\n }\n\n if (event.key === 'Enter') {\n if (skin) { this.selectSkin(skin); } else {\n this.toggleSkinList();\n }\n }\n\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n this.$emit('focus-last-emoji');\n } else {\n this.$emit('focus-tabset');\n }\n }\n },\n\n toggleSkinList () {\n this.isOpen = !this.isOpen;\n this.$nextTick(() => {\n if (this.skinsRef[0]) {\n this.skinsRef[0].focus();\n }\n });\n },\n },\n};\n</script>\n","<template>\n <div\n class=\"d-emoji-picker\"\n >\n <div class=\"d-emoji-picker--header\">\n <emoji-tabset\n ref=\"tabsetRef\"\n :emoji-filter=\"searchQuery\"\n :show-recently-used-tab=\"showRecentlyUsedTab\"\n :scroll-into-tab=\"scrollIntoTab\"\n :tab-set-labels=\"tabSetLabels\"\n :is-scrolling=\"isScrolling\"\n @focus-search-input=\"$refs.searchInputRef.focusSearchInput()\"\n @focus-skin-selector=\"$refs.skinSelectorRef.focusSkinSelector()\"\n @selected-tabset=\"scrollToSelectedTabset\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n <div class=\"d-emoji-picker--body\">\n <emoji-search\n ref=\"searchInputRef\"\n :model-value=\"searchQuery\"\n :search-placeholder-label=\"searchPlaceholderLabel\"\n @update:model-value=\"newValue => searchQuery = newValue\"\n @select-first-emoji=\"$emit('selected-emoji', highlightedEmoji)\"\n @focus-tabset=\"$refs.tabsetRef.focusTabset()\"\n @focus-emoji-selector=\"$refs.emojiSelectorRef.focusEmojiSelector()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n <emoji-selector\n ref=\"emojiSelectorRef\"\n :emoji-filter=\"searchQuery\"\n :skin-tone=\"skinTone\"\n :tab-set-labels=\"tabSetLabels\"\n :search-results-label=\"searchResultsLabel\"\n :search-no-results-label=\"searchNoResultsLabel\"\n :recently-used-emojis=\"recentlyUsedEmojis\"\n :selected-tabset=\"selectedTabset\"\n @scroll-into-tab=\"updateScrollIntoTab\"\n @is-scrolling=\"updateIsScrolling\"\n @highlighted-emoji=\"updateHighlightedEmoji\"\n @selected-emoji=\"$emit('selected-emoji', $event)\"\n @focus-skin-selector=\"$refs.skinSelectorRef.focusSkinSelector()\"\n @focus-search-input=\"$refs.searchInputRef.focusSearchInput()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n <div class=\"d-emoji-picker--footer\">\n <emoji-description :emoji=\"highlightedEmoji\" />\n <emoji-skin-selector\n ref=\"skinSelectorRef\"\n :is-hovering=\"!!highlightedEmoji\"\n :skin-selector-button-tooltip-label=\"skinSelectorButtonTooltipLabel\"\n :skin-tone=\"skinTone\"\n @skin-tone=\"$emit('skin-tone', $event)\"\n @focus-tabset=\"$refs.tabsetRef.focusTabset()\"\n @focus-last-emoji=\"$refs.emojiSelectorRef.focusLastEmoji()\"\n @keydown.esc.native=\"$emit('close')\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport EmojiTabset from './modules/emoji_tabset.vue';\nimport EmojiSearch from './modules/emoji_search.vue';\nimport EmojiSelector from './modules/emoji_selector.vue';\nimport EmojiDescription from './modules/emoji_description.vue';\nimport EmojiSkinSelector from './modules/emoji_skin_selector.vue';\n\nexport default {\n name: 'DtEmojiPicker',\n\n components: {\n EmojiTabset,\n EmojiSearch,\n EmojiSelector,\n EmojiDescription,\n EmojiSkinSelector,\n },\n\n props: {\n recentlyUsedEmojis: {\n type: Array,\n },\n\n searchPlaceholderLabel: {\n type: String,\n required: true,\n },\n\n searchResultsLabel: {\n type: String,\n required: true,\n },\n\n searchNoResultsLabel: {\n type: String,\n required: true,\n },\n\n tabSetLabels: {\n type: Array,\n required: true,\n },\n\n skinTone: {\n type: String,\n },\n\n skinSelectorButtonTooltipLabel: {\n type: String,\n required: true,\n },\n },\n\n data () {\n return {\n searchQuery: '',\n highlightedEmoji: null,\n selectedTabset: {},\n scrollIntoTab: 0,\n isScrolling: false,\n };\n },\n\n computed: {\n showRecentlyUsedTab () {\n return this.recentlyUsedEmojis?.length > 0;\n },\n },\n\n methods: {\n scrollToSelectedTabset (tabId) {\n this.searchQuery = '';\n this.selectedTabset = { ...this.selectedTabset, tabId };\n },\n\n updateScrollIntoTab (value) {\n this.scrollIntoTab = value;\n },\n\n updateIsScrolling (value) {\n this.isScrolling = value;\n },\n\n updateHighlightedEmoji (emoji) {\n this.highlightedEmoji = emoji;\n },\n },\n};\n</script>\n"],"names":["_sfc_main","DtTabGroup","DtTab","DtIcon","tab","DtInput","emojisImported","DtTooltip"],"mappings":"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"}
|