@dialpad/dialtone 9.65.0 → 9.66.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/chunks/tokens-base-dark--ozK7f0P.js +4 -0
- package/dist/chunks/tokens-base-dark-V8E4WaJI.js +1 -0
- package/dist/chunks/tokens-base-light-LYlvM3eZ.js +1 -0
- package/dist/chunks/tokens-base-light-ljPrpLe2.js +4 -0
- package/dist/css/dialtone-default-theme.css +57 -55
- package/dist/css/dialtone-default-theme.min.css +1 -1
- package/dist/css/dialtone.css +8 -6
- package/dist/css/dialtone.min.css +1 -1
- package/dist/css/tokens/tokens-base-dark.css +5 -5
- package/dist/css/tokens/tokens-base-light.css +5 -5
- package/dist/css/tokens/tokens-dp-dark.css +44 -44
- package/dist/css/tokens/tokens-dp-light.css +44 -44
- package/dist/css/tokens/tokens-expressive-dark.css +50 -50
- package/dist/css/tokens/tokens-expressive-light.css +50 -50
- package/dist/css/tokens/tokens-expressive-sm-dark.css +50 -50
- package/dist/css/tokens/tokens-expressive-sm-light.css +50 -50
- package/dist/css/tokens/tokens-tmo-dark.css +44 -44
- package/dist/css/tokens/tokens-tmo-light.css +44 -44
- package/dist/themes/dp-dark.cjs +1 -1
- package/dist/themes/dp-dark.js +2 -2
- package/dist/themes/dp-light.cjs +1 -1
- package/dist/themes/dp-light.js +2 -2
- package/dist/themes/expressive-dark.cjs +1 -1
- package/dist/themes/expressive-dark.js +2 -2
- package/dist/themes/expressive-light.cjs +1 -1
- package/dist/themes/expressive-light.js +2 -2
- package/dist/themes/expressive-sm-dark.cjs +1 -1
- package/dist/themes/expressive-sm-dark.js +2 -2
- package/dist/themes/expressive-sm-light.cjs +1 -1
- package/dist/themes/expressive-sm-light.js +2 -2
- package/dist/themes/tmo-dark.cjs +1 -1
- package/dist/themes/tmo-dark.js +2 -2
- package/dist/themes/tmo-light.cjs +1 -1
- package/dist/themes/tmo-light.js +2 -2
- package/dist/tokens/css/tokens-base-dark.css +5 -5
- package/dist/tokens/css/tokens-base-light.css +5 -5
- package/dist/tokens/css/tokens-dp-dark.css +44 -44
- package/dist/tokens/css/tokens-dp-light.css +44 -44
- package/dist/tokens/css/tokens-expressive-dark.css +50 -50
- package/dist/tokens/css/tokens-expressive-light.css +50 -50
- package/dist/tokens/css/tokens-expressive-sm-dark.css +50 -50
- package/dist/tokens/css/tokens-expressive-sm-light.css +50 -50
- package/dist/tokens/css/tokens-tmo-dark.css +44 -44
- package/dist/tokens/css/tokens-tmo-light.css +44 -44
- package/dist/tokens/doc.json +14285 -14285
- package/dist/tokens/less/tokens-base-dark.less +5 -5
- package/dist/tokens/less/tokens-base-light.less +5 -5
- package/dist/tokens/less/tokens-dp-dark.less +44 -44
- package/dist/tokens/less/tokens-dp-light.less +44 -44
- package/dist/tokens/less/tokens-expressive-dark.less +50 -50
- package/dist/tokens/less/tokens-expressive-light.less +50 -50
- package/dist/tokens/less/tokens-expressive-sm-dark.less +50 -50
- package/dist/tokens/less/tokens-expressive-sm-light.less +50 -50
- package/dist/tokens/less/tokens-tmo-dark.less +44 -44
- package/dist/tokens/less/tokens-tmo-light.less +44 -44
- package/dist/tokens/tokens-base-dark.json +5 -5
- package/dist/tokens/tokens-base-light.json +5 -5
- package/dist/tokens/tokens-dp-dark.json +44 -44
- package/dist/tokens/tokens-dp-light.json +44 -44
- package/dist/tokens/tokens-expressive-dark.json +50 -50
- package/dist/tokens/tokens-expressive-light.json +50 -50
- package/dist/tokens/tokens-expressive-sm-dark.json +50 -50
- package/dist/tokens/tokens-expressive-sm-light.json +50 -50
- package/dist/tokens/tokens-tmo-dark.json +44 -44
- package/dist/tokens/tokens-tmo-light.json +44 -44
- package/dist/vue2/chunks/{dropdown-6UoczdUY.js → dropdown-YdCyJ5Dq.js} +77 -41
- package/dist/vue2/chunks/{dropdown-pHxnQPzT.js.map → dropdown-YdCyJ5Dq.js.map} +1 -1
- package/dist/vue2/chunks/{dropdown-pHxnQPzT.js → dropdown-mjrYu_mK.js} +77 -41
- package/dist/vue2/chunks/{dropdown-6UoczdUY.js.map → dropdown-mjrYu_mK.js.map} +1 -1
- package/dist/vue2/chunks/dropdown_constants-2pGCXy7m.js.map +1 -1
- package/dist/vue2/chunks/dropdown_constants-w1MXGC3Z.js.map +1 -1
- package/dist/vue2/chunks/{icon_constants-Dy4MEUJL.js → icon_constants-TdxqLsS2.js} +3 -2
- package/dist/vue2/chunks/icon_constants-TdxqLsS2.js.map +1 -0
- package/dist/vue2/chunks/{icon_constants-QYpmdE0R.js → icon_constants-VEA0wI5C.js} +3 -2
- package/dist/vue2/chunks/icon_constants-VEA0wI5C.js.map +1 -0
- package/dist/vue2/chunks/{index-gj1jEXP4.js → index-DyqUqjvI.js} +122 -87
- package/dist/vue2/chunks/{index-eJ-WWRdf.js.map → index-DyqUqjvI.js.map} +1 -1
- package/dist/vue2/chunks/{index-anN_sx1F.js → index-NYFNZeHH.js} +5 -13
- package/dist/vue2/chunks/{index-anN_sx1F.js.map → index-NYFNZeHH.js.map} +1 -1
- package/dist/vue2/chunks/{index-ODod4Oj_.js → index-i65YVk-U.js} +5 -13
- package/dist/vue2/chunks/{index-ODod4Oj_.js.map → index-i65YVk-U.js.map} +1 -1
- package/dist/vue2/chunks/{index-eJ-WWRdf.js → index-mBWay1Qb.js} +122 -87
- package/dist/vue2/chunks/{index-gj1jEXP4.js.map → index-mBWay1Qb.js.map} +1 -1
- package/dist/vue2/chunks/{input-Axw-wFj2.js → input-Hqw33WBe.js} +3 -9
- package/dist/vue2/chunks/{input-Axw-wFj2.js.map → input-Hqw33WBe.js.map} +1 -1
- package/dist/vue2/chunks/{input-6kbd8Pju.js → input-PhJeBN6r.js} +3 -9
- package/dist/vue2/chunks/{input-6kbd8Pju.js.map → input-PhJeBN6r.js.map} +1 -1
- package/dist/vue2/chunks/{input_group-qVZaS5Bb.js → input_group-ZI7aVGEp.js} +4 -2
- package/dist/vue2/chunks/{input_group-m3cWYUfI.js.map → input_group-ZI7aVGEp.js.map} +1 -1
- package/dist/vue2/chunks/{input_group-m3cWYUfI.js → input_group-pE6ec9R3.js} +4 -2
- package/dist/vue2/chunks/{input_group-qVZaS5Bb.js.map → input_group-pE6ec9R3.js.map} +1 -1
- package/dist/vue2/chunks/{keyboard_list_navigation-ScXhrxya.js → keyboard_list_navigation-YIqTuw1W.js} +6 -5
- package/dist/{vue3/chunks/keyboard_list_navigation-fJnl_Iox.js.map → vue2/chunks/keyboard_list_navigation-YIqTuw1W.js.map} +1 -1
- package/dist/vue2/chunks/{keyboard_list_navigation-fJnl_Iox.js → keyboard_list_navigation-x3D6RcC7.js} +6 -5
- package/dist/vue2/chunks/{keyboard_list_navigation-ScXhrxya.js.map → keyboard_list_navigation-x3D6RcC7.js.map} +1 -1
- package/dist/vue2/chunks/link_constants-AfTWrr-n.js.map +1 -1
- package/dist/vue2/chunks/link_constants-x8NwdqmA.js.map +1 -1
- package/dist/vue2/chunks/list_item_constants-EiqkqZvP.js.map +1 -1
- package/dist/vue2/chunks/list_item_constants-u1xcN9Dd.js.map +1 -1
- package/dist/vue2/chunks/{modal-XOr4kiNZ.js → modal-8X6poIZW.js} +4 -2
- package/dist/{vue3/chunks/modal-XOr4kiNZ.js.map → vue2/chunks/modal-8X6poIZW.js.map} +1 -1
- package/dist/vue2/chunks/{modal-VgxXAQFP.js → modal-OaWxzqNt.js} +4 -2
- package/dist/vue2/chunks/{modal-VgxXAQFP.js.map → modal-OaWxzqNt.js.map} +1 -1
- package/dist/vue2/chunks/{notice_action-IRUoLX2d.js → notice_action-qQr3K2TC.js} +71 -46
- package/dist/vue2/chunks/{notice_action-IRUoLX2d.js.map → notice_action-qQr3K2TC.js.map} +1 -1
- package/dist/vue2/chunks/{notice_action-P6uDyE9x.js → notice_action-tEvvMg7Q.js} +71 -46
- package/dist/vue2/chunks/{notice_action-P6uDyE9x.js.map → notice_action-tEvvMg7Q.js.map} +1 -1
- package/dist/vue2/chunks/notice_constants-7Qt2CQEY.js.map +1 -1
- package/dist/vue2/chunks/notice_constants-UXo9e3bS.js.map +1 -1
- package/dist/vue2/chunks/{popover_constants-WsOUIY-m.js → popover_constants-6YkPPbnk.js} +26 -47
- package/dist/vue2/chunks/{popover_constants-WsOUIY-m.js.map → popover_constants-6YkPPbnk.js.map} +1 -1
- package/dist/vue2/chunks/{popover_constants-XnGWXaxX.js → popover_constants-h9MD6WUt.js} +26 -47
- package/dist/{vue3/chunks/popover_constants-WsOUIY-m.js.map → vue2/chunks/popover_constants-h9MD6WUt.js.map} +1 -1
- package/dist/vue2/chunks/{sr_only_close_button-ZaGdAHz7.js → sr_only_close_button-2Q9Ny1Nc.js} +24 -18
- package/dist/vue2/chunks/{sr_only_close_button-ZaGdAHz7.js.map → sr_only_close_button-2Q9Ny1Nc.js.map} +1 -1
- package/dist/vue2/chunks/{sr_only_close_button-81bHIpPu.js → sr_only_close_button-IjMVfBDE.js} +24 -18
- package/dist/vue2/chunks/{sr_only_close_button-81bHIpPu.js.map → sr_only_close_button-IjMVfBDE.js.map} +1 -1
- package/dist/vue2/chunks/stack_constants-HraCekPm.js.map +1 -1
- package/dist/vue2/chunks/stack_constants-SMzMWnAQ.js.map +1 -1
- package/dist/vue2/chunks/{tab-FcsV5VmK.js → tab-79yMX6m6.js} +86 -68
- package/dist/vue2/chunks/{tab-V4cb44Ry.js.map → tab-79yMX6m6.js.map} +1 -1
- package/dist/vue2/chunks/{tab-V4cb44Ry.js → tab-muPOS7JE.js} +86 -68
- package/dist/vue2/chunks/{tab-FcsV5VmK.js.map → tab-muPOS7JE.js.map} +1 -1
- package/dist/vue2/common/constants.cjs.map +1 -1
- package/dist/vue2/common/constants.js.map +1 -1
- package/dist/vue2/common/dates.cjs +3 -1
- package/dist/vue2/common/dates.cjs.map +1 -1
- package/dist/vue2/common/dates.js +3 -1
- package/dist/vue2/common/dates.js.map +1 -1
- package/dist/vue2/common/emoji.cjs +1 -1
- package/dist/vue2/common/emoji.js +1 -1
- package/dist/vue2/common/mixins.cjs +3 -3
- package/dist/vue2/common/mixins.js +3 -3
- package/dist/vue2/common/utils.cjs +8 -44
- package/dist/vue2/common/utils.cjs.map +1 -1
- package/dist/vue2/common/utils.js +8 -44
- package/dist/vue2/common/utils.js.map +1 -1
- package/dist/vue2/common/validators.cjs.map +1 -1
- package/dist/vue2/common/validators.js.map +1 -1
- package/dist/vue2/component-documentation.json +1 -1
- package/dist/vue2/dialtone-vue.cjs +12 -12
- package/dist/vue2/dialtone-vue.js +12 -12
- package/dist/vue2/lib/attachment-carousel.cjs +172 -48
- package/dist/vue2/lib/attachment-carousel.cjs.map +1 -1
- package/dist/vue2/lib/attachment-carousel.js +172 -48
- package/dist/vue2/lib/attachment-carousel.js.map +1 -1
- package/dist/vue2/lib/avatar.cjs +75 -58
- package/dist/vue2/lib/avatar.cjs.map +1 -1
- package/dist/vue2/lib/avatar.js +75 -58
- package/dist/vue2/lib/avatar.js.map +1 -1
- package/dist/vue2/lib/badge.cjs +31 -20
- package/dist/vue2/lib/badge.cjs.map +1 -1
- package/dist/vue2/lib/badge.js +31 -20
- package/dist/vue2/lib/badge.js.map +1 -1
- package/dist/vue2/lib/banner.cjs +53 -29
- package/dist/vue2/lib/banner.cjs.map +1 -1
- package/dist/vue2/lib/banner.js +53 -29
- package/dist/vue2/lib/banner.js.map +1 -1
- package/dist/vue2/lib/breadcrumbs.cjs +36 -30
- package/dist/vue2/lib/breadcrumbs.cjs.map +1 -1
- package/dist/vue2/lib/breadcrumbs.js +36 -30
- package/dist/vue2/lib/breadcrumbs.js.map +1 -1
- package/dist/vue2/lib/button-group.cjs +7 -14
- package/dist/vue2/lib/button-group.cjs.map +1 -1
- package/dist/vue2/lib/button-group.js +7 -14
- package/dist/vue2/lib/button-group.js.map +1 -1
- package/dist/vue2/lib/button.cjs +55 -62
- package/dist/vue2/lib/button.cjs.map +1 -1
- package/dist/vue2/lib/button.js +55 -62
- package/dist/vue2/lib/button.js.map +1 -1
- package/dist/vue2/lib/callbar-button-with-popover.cjs +91 -23
- package/dist/vue2/lib/callbar-button-with-popover.cjs.map +1 -1
- package/dist/vue2/lib/callbar-button-with-popover.js +91 -23
- package/dist/vue2/lib/callbar-button-with-popover.js.map +1 -1
- package/dist/vue2/lib/callbar-button.cjs +49 -33
- package/dist/vue2/lib/callbar-button.cjs.map +1 -1
- package/dist/vue2/lib/callbar-button.js +49 -33
- package/dist/vue2/lib/callbar-button.js.map +1 -1
- package/dist/vue2/lib/callbox.cjs +78 -15
- package/dist/vue2/lib/callbox.cjs.map +1 -1
- package/dist/vue2/lib/callbox.js +78 -15
- package/dist/vue2/lib/callbox.js.map +1 -1
- package/dist/vue2/lib/card.cjs +16 -23
- package/dist/vue2/lib/card.cjs.map +1 -1
- package/dist/vue2/lib/card.js +16 -23
- package/dist/vue2/lib/card.js.map +1 -1
- package/dist/vue2/lib/checkbox-group.cjs +3 -15
- package/dist/vue2/lib/checkbox-group.cjs.map +1 -1
- package/dist/vue2/lib/checkbox-group.js +3 -15
- package/dist/vue2/lib/checkbox-group.js.map +1 -1
- package/dist/vue2/lib/checkbox.cjs +52 -16
- package/dist/vue2/lib/checkbox.cjs.map +1 -1
- package/dist/vue2/lib/checkbox.js +52 -16
- package/dist/vue2/lib/checkbox.js.map +1 -1
- package/dist/vue2/lib/chip.cjs +58 -26
- package/dist/vue2/lib/chip.cjs.map +1 -1
- package/dist/vue2/lib/chip.js +58 -26
- package/dist/vue2/lib/chip.js.map +1 -1
- package/dist/vue2/lib/codeblock.cjs +4 -11
- package/dist/vue2/lib/codeblock.cjs.map +1 -1
- package/dist/vue2/lib/codeblock.js +4 -11
- package/dist/vue2/lib/codeblock.js.map +1 -1
- package/dist/vue2/lib/collapsible.cjs +91 -34
- package/dist/vue2/lib/collapsible.cjs.map +1 -1
- package/dist/vue2/lib/collapsible.js +91 -34
- package/dist/vue2/lib/collapsible.js.map +1 -1
- package/dist/vue2/lib/combobox-multi-select.cjs +131 -38
- package/dist/vue2/lib/combobox-multi-select.cjs.map +1 -1
- package/dist/vue2/lib/combobox-multi-select.js +131 -38
- package/dist/vue2/lib/combobox-multi-select.js.map +1 -1
- package/dist/vue2/lib/combobox-with-popover.cjs +130 -39
- package/dist/vue2/lib/combobox-with-popover.cjs.map +1 -1
- package/dist/vue2/lib/combobox-with-popover.js +130 -39
- package/dist/vue2/lib/combobox-with-popover.js.map +1 -1
- package/dist/vue2/lib/combobox.cjs +3 -3
- package/dist/vue2/lib/combobox.js +3 -3
- package/dist/vue2/lib/contact-centers-row.cjs +86 -29
- package/dist/vue2/lib/contact-centers-row.cjs.map +1 -1
- package/dist/vue2/lib/contact-centers-row.js +86 -29
- package/dist/vue2/lib/contact-centers-row.js.map +1 -1
- package/dist/vue2/lib/contact-info.cjs +95 -24
- package/dist/vue2/lib/contact-info.cjs.map +1 -1
- package/dist/vue2/lib/contact-info.js +95 -24
- package/dist/vue2/lib/contact-info.js.map +1 -1
- package/dist/vue2/lib/contact-row.cjs +61 -18
- package/dist/vue2/lib/contact-row.cjs.map +1 -1
- package/dist/vue2/lib/contact-row.js +61 -18
- package/dist/vue2/lib/contact-row.js.map +1 -1
- package/dist/vue2/lib/datepicker.cjs +361 -102
- package/dist/vue2/lib/datepicker.cjs.map +1 -1
- package/dist/vue2/lib/datepicker.js +361 -102
- package/dist/vue2/lib/datepicker.js.map +1 -1
- package/dist/vue2/lib/description-list.cjs +11 -12
- package/dist/vue2/lib/description-list.cjs.map +1 -1
- package/dist/vue2/lib/description-list.js +11 -12
- package/dist/vue2/lib/description-list.js.map +1 -1
- package/dist/vue2/lib/dropdown.cjs +13 -17
- package/dist/vue2/lib/dropdown.cjs.map +1 -1
- package/dist/vue2/lib/dropdown.js +13 -17
- package/dist/vue2/lib/dropdown.js.map +1 -1
- package/dist/vue2/lib/editor.cjs +409 -109
- package/dist/vue2/lib/editor.cjs.map +1 -1
- package/dist/vue2/lib/editor.js +409 -109
- package/dist/vue2/lib/editor.js.map +1 -1
- package/dist/vue2/lib/emoji-picker.cjs +512 -234
- package/dist/vue2/lib/emoji-picker.cjs.map +1 -1
- package/dist/vue2/lib/emoji-picker.js +512 -234
- package/dist/vue2/lib/emoji-picker.js.map +1 -1
- package/dist/vue2/lib/emoji-row.cjs +69 -31
- package/dist/vue2/lib/emoji-row.cjs.map +1 -1
- package/dist/vue2/lib/emoji-row.js +69 -31
- package/dist/vue2/lib/emoji-row.js.map +1 -1
- package/dist/vue2/lib/emoji-text-wrapper.cjs +14 -22
- package/dist/vue2/lib/emoji-text-wrapper.cjs.map +1 -1
- package/dist/vue2/lib/emoji-text-wrapper.js +14 -22
- package/dist/vue2/lib/emoji-text-wrapper.js.map +1 -1
- package/dist/vue2/lib/emoji.cjs +40 -13
- package/dist/vue2/lib/emoji.cjs.map +1 -1
- package/dist/vue2/lib/emoji.js +40 -13
- package/dist/vue2/lib/emoji.js.map +1 -1
- package/dist/vue2/lib/empty-state.cjs +27 -12
- package/dist/vue2/lib/empty-state.cjs.map +1 -1
- package/dist/vue2/lib/empty-state.js +27 -12
- package/dist/vue2/lib/empty-state.js.map +1 -1
- package/dist/vue2/lib/feed-item-row.cjs +106 -27
- package/dist/vue2/lib/feed-item-row.cjs.map +1 -1
- package/dist/vue2/lib/feed-item-row.js +106 -27
- package/dist/vue2/lib/feed-item-row.js.map +1 -1
- package/dist/vue2/lib/feed-pill.cjs +90 -35
- package/dist/vue2/lib/feed-pill.cjs.map +1 -1
- package/dist/vue2/lib/feed-pill.js +90 -35
- package/dist/vue2/lib/feed-pill.js.map +1 -1
- package/dist/vue2/lib/general-row.cjs +184 -75
- package/dist/vue2/lib/general-row.cjs.map +1 -1
- package/dist/vue2/lib/general-row.js +184 -75
- package/dist/vue2/lib/general-row.js.map +1 -1
- package/dist/vue2/lib/group-row.cjs +27 -16
- package/dist/vue2/lib/group-row.cjs.map +1 -1
- package/dist/vue2/lib/group-row.js +27 -16
- package/dist/vue2/lib/group-row.js.map +1 -1
- package/dist/vue2/lib/grouped-chip.cjs +68 -20
- package/dist/vue2/lib/grouped-chip.cjs.map +1 -1
- package/dist/vue2/lib/grouped-chip.js +68 -20
- package/dist/vue2/lib/grouped-chip.js.map +1 -1
- package/dist/vue2/lib/hovercard.cjs +71 -41
- package/dist/vue2/lib/hovercard.cjs.map +1 -1
- package/dist/vue2/lib/hovercard.js +71 -41
- package/dist/vue2/lib/hovercard.js.map +1 -1
- package/dist/vue2/lib/icon.cjs +10 -12
- package/dist/vue2/lib/icon.cjs.map +1 -1
- package/dist/vue2/lib/icon.js +10 -12
- package/dist/vue2/lib/icon.js.map +1 -1
- package/dist/vue2/lib/illustration.cjs +9 -12
- package/dist/vue2/lib/illustration.cjs.map +1 -1
- package/dist/vue2/lib/illustration.js +9 -12
- package/dist/vue2/lib/illustration.js.map +1 -1
- package/dist/vue2/lib/image-viewer.cjs +98 -23
- package/dist/vue2/lib/image-viewer.cjs.map +1 -1
- package/dist/vue2/lib/image-viewer.js +98 -23
- package/dist/vue2/lib/image-viewer.js.map +1 -1
- package/dist/vue2/lib/input-group.cjs +24 -14
- package/dist/vue2/lib/input-group.cjs.map +1 -1
- package/dist/vue2/lib/input-group.js +24 -14
- package/dist/vue2/lib/input-group.js.map +1 -1
- package/dist/vue2/lib/input.cjs +108 -40
- package/dist/vue2/lib/input.cjs.map +1 -1
- package/dist/vue2/lib/input.js +108 -40
- package/dist/vue2/lib/input.js.map +1 -1
- package/dist/vue2/lib/item-layout.cjs +42 -11
- package/dist/vue2/lib/item-layout.cjs.map +1 -1
- package/dist/vue2/lib/item-layout.js +42 -11
- package/dist/vue2/lib/item-layout.js.map +1 -1
- package/dist/vue2/lib/ivr-node.cjs +135 -47
- package/dist/vue2/lib/ivr-node.cjs.map +1 -1
- package/dist/vue2/lib/ivr-node.js +135 -47
- package/dist/vue2/lib/ivr-node.js.map +1 -1
- package/dist/vue2/lib/keyboard-shortcut.cjs +35 -23
- package/dist/vue2/lib/keyboard-shortcut.cjs.map +1 -1
- package/dist/vue2/lib/keyboard-shortcut.js +35 -23
- package/dist/vue2/lib/keyboard-shortcut.js.map +1 -1
- package/dist/vue2/lib/lazy-show.cjs +15 -11
- package/dist/vue2/lib/lazy-show.cjs.map +1 -1
- package/dist/vue2/lib/lazy-show.js +15 -11
- package/dist/vue2/lib/lazy-show.js.map +1 -1
- package/dist/vue2/lib/link.cjs +9 -15
- package/dist/vue2/lib/link.cjs.map +1 -1
- package/dist/vue2/lib/link.js +9 -15
- package/dist/vue2/lib/link.js.map +1 -1
- package/dist/vue2/lib/list-item-group.cjs +17 -11
- package/dist/vue2/lib/list-item-group.cjs.map +1 -1
- package/dist/vue2/lib/list-item-group.js +17 -11
- package/dist/vue2/lib/list-item-group.js.map +1 -1
- package/dist/vue2/lib/list-item.cjs +42 -23
- package/dist/vue2/lib/list-item.cjs.map +1 -1
- package/dist/vue2/lib/list-item.js +42 -23
- package/dist/vue2/lib/list-item.js.map +1 -1
- package/dist/vue2/lib/message-input.cjs +367 -97
- package/dist/vue2/lib/message-input.cjs.map +1 -1
- package/dist/vue2/lib/message-input.js +367 -97
- package/dist/vue2/lib/message-input.js.map +1 -1
- package/dist/vue2/lib/modal.cjs +94 -36
- package/dist/vue2/lib/modal.cjs.map +1 -1
- package/dist/vue2/lib/modal.js +94 -36
- package/dist/vue2/lib/modal.js.map +1 -1
- package/dist/vue2/lib/notice.cjs +40 -21
- package/dist/vue2/lib/notice.cjs.map +1 -1
- package/dist/vue2/lib/notice.js +40 -21
- package/dist/vue2/lib/notice.js.map +1 -1
- package/dist/vue2/lib/pagination.cjs +81 -20
- package/dist/vue2/lib/pagination.cjs.map +1 -1
- package/dist/vue2/lib/pagination.js +81 -20
- package/dist/vue2/lib/pagination.js.map +1 -1
- package/dist/vue2/lib/popover.cjs +194 -75
- package/dist/vue2/lib/popover.cjs.map +1 -1
- package/dist/vue2/lib/popover.js +195 -76
- package/dist/vue2/lib/popover.js.map +1 -1
- package/dist/vue2/lib/presence.cjs +23 -22
- package/dist/vue2/lib/presence.cjs.map +1 -1
- package/dist/vue2/lib/presence.js +23 -22
- package/dist/vue2/lib/presence.js.map +1 -1
- package/dist/vue2/lib/radio-group.cjs +2 -11
- package/dist/vue2/lib/radio-group.cjs.map +1 -1
- package/dist/vue2/lib/radio-group.js +2 -11
- package/dist/vue2/lib/radio-group.js.map +1 -1
- package/dist/vue2/lib/radio.cjs +47 -15
- package/dist/vue2/lib/radio.cjs.map +1 -1
- package/dist/vue2/lib/radio.js +47 -15
- package/dist/vue2/lib/radio.js.map +1 -1
- package/dist/vue2/lib/rich-text-editor.cjs +340 -327
- package/dist/vue2/lib/rich-text-editor.cjs.map +1 -1
- package/dist/vue2/lib/rich-text-editor.js +340 -327
- package/dist/vue2/lib/rich-text-editor.js.map +1 -1
- package/dist/vue2/lib/root-layout.cjs +33 -15
- package/dist/vue2/lib/root-layout.cjs.map +1 -1
- package/dist/vue2/lib/root-layout.js +33 -15
- package/dist/vue2/lib/root-layout.js.map +1 -1
- package/dist/vue2/lib/scrollbar-directive.cjs.map +1 -1
- package/dist/vue2/lib/scrollbar-directive.js.map +1 -1
- package/dist/vue2/lib/select-menu.cjs +52 -33
- package/dist/vue2/lib/select-menu.cjs.map +1 -1
- package/dist/vue2/lib/select-menu.js +52 -33
- package/dist/vue2/lib/select-menu.js.map +1 -1
- package/dist/vue2/lib/settings-menu-button.cjs +42 -16
- package/dist/vue2/lib/settings-menu-button.cjs.map +1 -1
- package/dist/vue2/lib/settings-menu-button.js +42 -16
- package/dist/vue2/lib/settings-menu-button.js.map +1 -1
- package/dist/vue2/lib/skeleton.cjs +118 -93
- package/dist/vue2/lib/skeleton.cjs.map +1 -1
- package/dist/vue2/lib/skeleton.js +118 -93
- package/dist/vue2/lib/skeleton.js.map +1 -1
- package/dist/vue2/lib/split-button.cjs +164 -64
- package/dist/vue2/lib/split-button.cjs.map +1 -1
- package/dist/vue2/lib/split-button.js +164 -64
- package/dist/vue2/lib/split-button.js.map +1 -1
- package/dist/vue2/lib/stack.cjs +21 -33
- package/dist/vue2/lib/stack.cjs.map +1 -1
- package/dist/vue2/lib/stack.js +21 -33
- package/dist/vue2/lib/stack.js.map +1 -1
- package/dist/vue2/lib/tabs.cjs +20 -13
- package/dist/vue2/lib/tabs.cjs.map +1 -1
- package/dist/vue2/lib/tabs.js +20 -13
- package/dist/vue2/lib/tabs.js.map +1 -1
- package/dist/vue2/lib/time-pill.cjs +8 -11
- package/dist/vue2/lib/time-pill.cjs.map +1 -1
- package/dist/vue2/lib/time-pill.js +8 -11
- package/dist/vue2/lib/time-pill.js.map +1 -1
- package/dist/vue2/lib/toast.cjs +42 -21
- package/dist/vue2/lib/toast.cjs.map +1 -1
- package/dist/vue2/lib/toast.js +42 -21
- package/dist/vue2/lib/toast.js.map +1 -1
- package/dist/vue2/lib/toggle.cjs +28 -24
- package/dist/vue2/lib/toggle.cjs.map +1 -1
- package/dist/vue2/lib/toggle.js +28 -24
- package/dist/vue2/lib/toggle.js.map +1 -1
- package/dist/vue2/lib/tooltip-directive.cjs +32 -26
- package/dist/vue2/lib/tooltip-directive.cjs.map +1 -1
- package/dist/vue2/lib/tooltip-directive.js +32 -26
- package/dist/vue2/lib/tooltip-directive.js.map +1 -1
- package/dist/vue2/lib/tooltip.cjs +31 -21
- package/dist/vue2/lib/tooltip.cjs.map +1 -1
- package/dist/vue2/lib/tooltip.js +32 -22
- package/dist/vue2/lib/tooltip.js.map +1 -1
- package/dist/vue2/lib/top-banner-info.cjs +18 -21
- package/dist/vue2/lib/top-banner-info.cjs.map +1 -1
- package/dist/vue2/lib/top-banner-info.js +18 -21
- package/dist/vue2/lib/top-banner-info.js.map +1 -1
- package/dist/vue2/lib/unread-pill.cjs +18 -12
- package/dist/vue2/lib/unread-pill.cjs.map +1 -1
- package/dist/vue2/lib/unread-pill.js +18 -12
- package/dist/vue2/lib/unread-pill.js.map +1 -1
- package/dist/vue2/lib/validation-messages.cjs +23 -16
- package/dist/vue2/lib/validation-messages.cjs.map +1 -1
- package/dist/vue2/lib/validation-messages.js +23 -16
- package/dist/vue2/lib/validation-messages.js.map +1 -1
- package/dist/vue2/style.css +5 -0
- package/dist/vue2/types/common/emoji/index.d.ts +2 -59236
- package/dist/vue2/types/common/emoji/index.d.ts.map +1 -1
- package/dist/vue2/types/components/button/button.vue.d.ts +1 -1
- package/dist/vue2/types/components/chip/chip.vue.d.ts +1 -1
- package/dist/vue2/types/components/combobox/combobox.vue.d.ts +1 -1
- package/dist/vue2/types/components/icon/icon.vue.d.ts +2 -2
- package/dist/vue2/types/components/icon/icon_constants.d.ts +1 -1
- package/dist/vue2/types/components/icon/icon_constants.d.ts.map +1 -1
- package/dist/vue2/types/components/illustration/illustration.vue.d.ts +2 -2
- package/dist/vue2/types/components/illustration/illustration_constants.d.ts +1 -1
- package/dist/vue2/types/components/illustration/illustration_constants.d.ts.map +1 -1
- package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts +21 -0
- package/dist/vue2/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/input/input.vue.d.ts +1 -1
- package/dist/vue2/types/components/modal/modal.vue.d.ts +1 -1
- package/dist/vue2/types/components/rich_text_editor/extensions/custom_link/custom_link.d.ts.map +1 -1
- package/dist/vue2/types/components/rich_text_editor/mention_suggestion.d.ts.map +1 -1
- package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts +5 -3
- package/dist/vue2/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/vue2/types/components/split_button/split_button-alpha.vue.d.ts +1 -1
- package/dist/vue2/types/components/toast/toast.vue.d.ts +1 -1
- package/dist/vue2/types/components/tooltip/tooltip.vue.d.ts +1 -1
- package/dist/vue2/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +1 -1
- package/dist/vue2/types/recipes/conversation_view/editor/editor.vue.d.ts +1 -1
- package/dist/vue2/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +1 -1
- package/dist/vue2/types/recipes/conversation_view/message_input/message_input.vue.d.ts +1 -1
- package/dist/vue3/chunks/{dropdown-oA-_Gotg.js → dropdown-6HXkh24e.js} +40 -45
- package/dist/vue3/chunks/{dropdown-p-Azgwov.js.map → dropdown-6HXkh24e.js.map} +1 -1
- package/dist/vue3/chunks/{dropdown-p-Azgwov.js → dropdown-QNvAb160.js} +40 -45
- package/dist/vue3/chunks/{dropdown-oA-_Gotg.js.map → dropdown-QNvAb160.js.map} +1 -1
- package/dist/vue3/chunks/dropdown_constants-2pGCXy7m.js.map +1 -1
- package/dist/vue3/chunks/dropdown_constants-w1MXGC3Z.js.map +1 -1
- package/dist/vue3/chunks/{icon_constants-QYpmdE0R.js → icon_constants-bvhFNOPu.js} +3 -2
- package/dist/vue3/chunks/icon_constants-bvhFNOPu.js.map +1 -0
- package/dist/vue3/chunks/{icon_constants-Dy4MEUJL.js → icon_constants-gIQj4mf7.js} +3 -2
- package/dist/vue3/chunks/icon_constants-gIQj4mf7.js.map +1 -0
- package/dist/vue3/chunks/{index-b_MgDylR.js → index-T15rAIdX.js} +71 -84
- package/dist/vue3/chunks/{index-4qgKeErp.js.map → index-T15rAIdX.js.map} +1 -1
- package/dist/vue3/chunks/{index-GVD15GIB.js → index-dfdrE-3M.js} +3 -12
- package/dist/vue3/chunks/{index-GVD15GIB.js.map → index-dfdrE-3M.js.map} +1 -1
- package/dist/vue3/chunks/{index-lu2o2f4r.js → index-fEp0B-5Z.js} +3 -12
- package/dist/vue3/chunks/{index-lu2o2f4r.js.map → index-fEp0B-5Z.js.map} +1 -1
- package/dist/vue3/chunks/{index-4qgKeErp.js → index-ouh7Bvm-.js} +71 -84
- package/dist/vue3/chunks/{index-b_MgDylR.js.map → index-ouh7Bvm-.js.map} +1 -1
- package/dist/vue3/chunks/{input-NmYDD5bn.js → input-HIysg24t.js} +3 -9
- package/dist/vue3/chunks/{input-NmYDD5bn.js.map → input-HIysg24t.js.map} +1 -1
- package/dist/vue3/chunks/{input-ttnte8zB.js → input-dLLo3Wtg.js} +3 -9
- package/dist/vue3/chunks/{input-ttnte8zB.js.map → input-dLLo3Wtg.js.map} +1 -1
- package/dist/vue3/chunks/{input_group-jWnq2DJT.js → input_group-hV1WT2it.js} +4 -2
- package/dist/vue3/chunks/{input_group-jWnq2DJT.js.map → input_group-hV1WT2it.js.map} +1 -1
- package/dist/vue3/chunks/{input_group-M-D25pOJ.js → input_group-rE6nhye8.js} +4 -2
- package/dist/vue3/chunks/{input_group-M-D25pOJ.js.map → input_group-rE6nhye8.js.map} +1 -1
- package/dist/vue3/chunks/{keyboard_list_navigation-ScXhrxya.js → keyboard_list_navigation-YIqTuw1W.js} +6 -5
- package/dist/{vue2/chunks/keyboard_list_navigation-fJnl_Iox.js.map → vue3/chunks/keyboard_list_navigation-YIqTuw1W.js.map} +1 -1
- package/dist/vue3/chunks/{keyboard_list_navigation-fJnl_Iox.js → keyboard_list_navigation-x3D6RcC7.js} +6 -5
- package/dist/vue3/chunks/{keyboard_list_navigation-ScXhrxya.js.map → keyboard_list_navigation-x3D6RcC7.js.map} +1 -1
- package/dist/vue3/chunks/link_constants-AfTWrr-n.js.map +1 -1
- package/dist/vue3/chunks/link_constants-x8NwdqmA.js.map +1 -1
- package/dist/vue3/chunks/list_item_constants-EiqkqZvP.js.map +1 -1
- package/dist/vue3/chunks/list_item_constants-u1xcN9Dd.js.map +1 -1
- package/dist/vue3/chunks/{modal-XOr4kiNZ.js → modal-8X6poIZW.js} +4 -2
- package/dist/vue3/chunks/{modal-VgxXAQFP.js.map → modal-8X6poIZW.js.map} +1 -1
- package/dist/vue3/chunks/{modal-VgxXAQFP.js → modal-OaWxzqNt.js} +4 -2
- package/dist/{vue2/chunks/modal-XOr4kiNZ.js.map → vue3/chunks/modal-OaWxzqNt.js.map} +1 -1
- package/dist/vue3/chunks/{notice_action-WTucGhvr.js → notice_action-3ed0uIMN.js} +40 -61
- package/dist/vue3/chunks/{notice_action-p-ePanW_.js.map → notice_action-3ed0uIMN.js.map} +1 -1
- package/dist/vue3/chunks/{notice_action-p-ePanW_.js → notice_action-e08Lw5W6.js} +40 -61
- package/dist/vue3/chunks/{notice_action-WTucGhvr.js.map → notice_action-e08Lw5W6.js.map} +1 -1
- package/dist/vue3/chunks/notice_constants-7Qt2CQEY.js.map +1 -1
- package/dist/vue3/chunks/notice_constants-UXo9e3bS.js.map +1 -1
- package/dist/vue3/chunks/{popover_constants-WsOUIY-m.js → popover_constants-6YkPPbnk.js} +26 -47
- package/dist/{vue2/chunks/popover_constants-XnGWXaxX.js.map → vue3/chunks/popover_constants-6YkPPbnk.js.map} +1 -1
- package/dist/vue3/chunks/{popover_constants-XnGWXaxX.js → popover_constants-h9MD6WUt.js} +26 -47
- package/dist/vue3/chunks/{popover_constants-XnGWXaxX.js.map → popover_constants-h9MD6WUt.js.map} +1 -1
- package/dist/vue3/chunks/{sr_only_close_button-3EdsV-dH.js → sr_only_close_button-Ji3Zlts6.js} +4 -4
- package/dist/vue3/chunks/{sr_only_close_button-3EdsV-dH.js.map → sr_only_close_button-Ji3Zlts6.js.map} +1 -1
- package/dist/vue3/chunks/{sr_only_close_button-xGrHFjwA.js → sr_only_close_button-gKr0Vlbz.js} +4 -4
- package/dist/vue3/chunks/{sr_only_close_button-xGrHFjwA.js.map → sr_only_close_button-gKr0Vlbz.js.map} +1 -1
- package/dist/vue3/chunks/stack_constants-HraCekPm.js.map +1 -1
- package/dist/vue3/chunks/stack_constants-SMzMWnAQ.js.map +1 -1
- package/dist/vue3/chunks/{tab-qc3f42Yp.js → tab-X7IvNGTl.js} +46 -49
- package/dist/vue3/chunks/{tab-qc3f42Yp.js.map → tab-X7IvNGTl.js.map} +1 -1
- package/dist/vue3/chunks/{tab-RTDgnD9-.js → tab-aD6t0MNo.js} +46 -49
- package/dist/vue3/chunks/{tab-RTDgnD9-.js.map → tab-aD6t0MNo.js.map} +1 -1
- package/dist/vue3/common/constants.cjs.map +1 -1
- package/dist/vue3/common/constants.js.map +1 -1
- package/dist/vue3/common/dates.cjs +3 -1
- package/dist/vue3/common/dates.cjs.map +1 -1
- package/dist/vue3/common/dates.js +3 -1
- package/dist/vue3/common/dates.js.map +1 -1
- package/dist/vue3/common/emoji.cjs +1 -1
- package/dist/vue3/common/emoji.js +1 -1
- package/dist/vue3/common/mixins.cjs +3 -3
- package/dist/vue3/common/mixins.js +3 -3
- package/dist/vue3/common/utils.cjs +11 -45
- package/dist/vue3/common/utils.cjs.map +1 -1
- package/dist/vue3/common/utils.js +11 -45
- package/dist/vue3/common/utils.js.map +1 -1
- package/dist/vue3/common/validators.cjs.map +1 -1
- package/dist/vue3/common/validators.js.map +1 -1
- package/dist/vue3/component-documentation.json +1 -1
- package/dist/vue3/dialtone-vue.cjs +12 -12
- package/dist/vue3/dialtone-vue.js +12 -12
- package/dist/vue3/lib/attachment-carousel.cjs +87 -108
- package/dist/vue3/lib/attachment-carousel.cjs.map +1 -1
- package/dist/vue3/lib/attachment-carousel.js +87 -108
- package/dist/vue3/lib/attachment-carousel.js.map +1 -1
- package/dist/vue3/lib/avatar.cjs +56 -88
- package/dist/vue3/lib/avatar.cjs.map +1 -1
- package/dist/vue3/lib/avatar.js +56 -88
- package/dist/vue3/lib/avatar.js.map +1 -1
- package/dist/vue3/lib/badge.cjs +15 -31
- package/dist/vue3/lib/badge.cjs.map +1 -1
- package/dist/vue3/lib/badge.js +15 -31
- package/dist/vue3/lib/badge.js.map +1 -1
- package/dist/vue3/lib/banner.cjs +38 -56
- package/dist/vue3/lib/banner.cjs.map +1 -1
- package/dist/vue3/lib/banner.js +38 -56
- package/dist/vue3/lib/banner.js.map +1 -1
- package/dist/vue3/lib/breadcrumbs.cjs +25 -36
- package/dist/vue3/lib/breadcrumbs.cjs.map +1 -1
- package/dist/vue3/lib/breadcrumbs.js +25 -36
- package/dist/vue3/lib/breadcrumbs.js.map +1 -1
- package/dist/vue3/lib/button-group.cjs +2 -7
- package/dist/vue3/lib/button-group.cjs.map +1 -1
- package/dist/vue3/lib/button-group.js +2 -7
- package/dist/vue3/lib/button-group.js.map +1 -1
- package/dist/vue3/lib/button.cjs +44 -69
- package/dist/vue3/lib/button.cjs.map +1 -1
- package/dist/vue3/lib/button.js +44 -69
- package/dist/vue3/lib/button.js.map +1 -1
- package/dist/vue3/lib/callbar-button-with-popover.cjs +68 -81
- package/dist/vue3/lib/callbar-button-with-popover.cjs.map +1 -1
- package/dist/vue3/lib/callbar-button-with-popover.js +68 -81
- package/dist/vue3/lib/callbar-button-with-popover.js.map +1 -1
- package/dist/vue3/lib/callbar-button.cjs +32 -45
- package/dist/vue3/lib/callbar-button.cjs.map +1 -1
- package/dist/vue3/lib/callbar-button.js +32 -45
- package/dist/vue3/lib/callbar-button.js.map +1 -1
- package/dist/vue3/lib/callbox.cjs +38 -57
- package/dist/vue3/lib/callbox.cjs.map +1 -1
- package/dist/vue3/lib/callbox.js +38 -57
- package/dist/vue3/lib/callbox.js.map +1 -1
- package/dist/vue3/lib/card.cjs +13 -33
- package/dist/vue3/lib/card.cjs.map +1 -1
- package/dist/vue3/lib/card.js +13 -33
- package/dist/vue3/lib/card.js.map +1 -1
- package/dist/vue3/lib/checkbox-group.cjs +2 -5
- package/dist/vue3/lib/checkbox-group.cjs.map +1 -1
- package/dist/vue3/lib/checkbox-group.js +2 -5
- package/dist/vue3/lib/checkbox-group.js.map +1 -1
- package/dist/vue3/lib/checkbox.cjs +41 -45
- package/dist/vue3/lib/checkbox.cjs.map +1 -1
- package/dist/vue3/lib/checkbox.js +41 -45
- package/dist/vue3/lib/checkbox.js.map +1 -1
- package/dist/vue3/lib/chip.cjs +38 -53
- package/dist/vue3/lib/chip.cjs.map +1 -1
- package/dist/vue3/lib/chip.js +38 -53
- package/dist/vue3/lib/chip.js.map +1 -1
- package/dist/vue3/lib/codeblock.cjs +4 -6
- package/dist/vue3/lib/codeblock.cjs.map +1 -1
- package/dist/vue3/lib/codeblock.js +4 -6
- package/dist/vue3/lib/codeblock.js.map +1 -1
- package/dist/vue3/lib/collapsible.cjs +62 -76
- package/dist/vue3/lib/collapsible.cjs.map +1 -1
- package/dist/vue3/lib/collapsible.js +62 -76
- package/dist/vue3/lib/collapsible.js.map +1 -1
- package/dist/vue3/lib/combobox-multi-select.cjs +75 -88
- package/dist/vue3/lib/combobox-multi-select.cjs.map +1 -1
- package/dist/vue3/lib/combobox-multi-select.js +75 -88
- package/dist/vue3/lib/combobox-multi-select.js.map +1 -1
- package/dist/vue3/lib/combobox-with-popover.cjs +77 -85
- package/dist/vue3/lib/combobox-with-popover.cjs.map +1 -1
- package/dist/vue3/lib/combobox-with-popover.js +77 -85
- package/dist/vue3/lib/combobox-with-popover.js.map +1 -1
- package/dist/vue3/lib/combobox.cjs +3 -3
- package/dist/vue3/lib/combobox.js +3 -3
- package/dist/vue3/lib/contact-centers-row.cjs +65 -89
- package/dist/vue3/lib/contact-centers-row.cjs.map +1 -1
- package/dist/vue3/lib/contact-centers-row.js +65 -89
- package/dist/vue3/lib/contact-centers-row.js.map +1 -1
- package/dist/vue3/lib/contact-info.cjs +58 -73
- package/dist/vue3/lib/contact-info.cjs.map +1 -1
- package/dist/vue3/lib/contact-info.js +58 -73
- package/dist/vue3/lib/contact-info.js.map +1 -1
- package/dist/vue3/lib/contact-row.cjs +37 -47
- package/dist/vue3/lib/contact-row.cjs.map +1 -1
- package/dist/vue3/lib/contact-row.js +37 -47
- package/dist/vue3/lib/contact-row.js.map +1 -1
- package/dist/vue3/lib/datepicker.cjs +267 -263
- package/dist/vue3/lib/datepicker.cjs.map +1 -1
- package/dist/vue3/lib/datepicker.js +267 -263
- package/dist/vue3/lib/datepicker.js.map +1 -1
- package/dist/vue3/lib/description-list.cjs +9 -14
- package/dist/vue3/lib/description-list.cjs.map +1 -1
- package/dist/vue3/lib/description-list.js +9 -14
- package/dist/vue3/lib/description-list.js.map +1 -1
- package/dist/vue3/lib/dropdown.cjs +6 -6
- package/dist/vue3/lib/dropdown.cjs.map +1 -1
- package/dist/vue3/lib/dropdown.js +6 -6
- package/dist/vue3/lib/dropdown.js.map +1 -1
- package/dist/vue3/lib/editor.cjs +312 -249
- package/dist/vue3/lib/editor.cjs.map +1 -1
- package/dist/vue3/lib/editor.js +312 -249
- package/dist/vue3/lib/editor.js.map +1 -1
- package/dist/vue3/lib/emoji-picker.cjs +387 -419
- package/dist/vue3/lib/emoji-picker.cjs.map +1 -1
- package/dist/vue3/lib/emoji-picker.js +387 -419
- package/dist/vue3/lib/emoji-picker.js.map +1 -1
- package/dist/vue3/lib/emoji-row.cjs +59 -69
- package/dist/vue3/lib/emoji-row.cjs.map +1 -1
- package/dist/vue3/lib/emoji-row.js +59 -69
- package/dist/vue3/lib/emoji-row.js.map +1 -1
- package/dist/vue3/lib/emoji-text-wrapper.cjs +13 -12
- package/dist/vue3/lib/emoji-text-wrapper.cjs.map +1 -1
- package/dist/vue3/lib/emoji-text-wrapper.js +13 -12
- package/dist/vue3/lib/emoji-text-wrapper.js.map +1 -1
- package/dist/vue3/lib/emoji.cjs +19 -23
- package/dist/vue3/lib/emoji.cjs.map +1 -1
- package/dist/vue3/lib/emoji.js +19 -23
- package/dist/vue3/lib/emoji.js.map +1 -1
- package/dist/vue3/lib/empty-state.cjs +20 -30
- package/dist/vue3/lib/empty-state.cjs.map +1 -1
- package/dist/vue3/lib/empty-state.js +20 -30
- package/dist/vue3/lib/empty-state.js.map +1 -1
- package/dist/vue3/lib/feed-item-row.cjs +43 -74
- package/dist/vue3/lib/feed-item-row.cjs.map +1 -1
- package/dist/vue3/lib/feed-item-row.js +43 -74
- package/dist/vue3/lib/feed-item-row.js.map +1 -1
- package/dist/vue3/lib/feed-pill.cjs +45 -55
- package/dist/vue3/lib/feed-pill.cjs.map +1 -1
- package/dist/vue3/lib/feed-pill.js +45 -55
- package/dist/vue3/lib/feed-pill.js.map +1 -1
- package/dist/vue3/lib/general-row.cjs +115 -165
- package/dist/vue3/lib/general-row.cjs.map +1 -1
- package/dist/vue3/lib/general-row.js +115 -165
- package/dist/vue3/lib/general-row.js.map +1 -1
- package/dist/vue3/lib/group-row.cjs +7 -9
- package/dist/vue3/lib/group-row.cjs.map +1 -1
- package/dist/vue3/lib/group-row.js +7 -9
- package/dist/vue3/lib/group-row.js.map +1 -1
- package/dist/vue3/lib/grouped-chip.cjs +27 -48
- package/dist/vue3/lib/grouped-chip.cjs.map +1 -1
- package/dist/vue3/lib/grouped-chip.js +27 -48
- package/dist/vue3/lib/grouped-chip.js.map +1 -1
- package/dist/vue3/lib/hovercard.cjs +25 -33
- package/dist/vue3/lib/hovercard.cjs.map +1 -1
- package/dist/vue3/lib/hovercard.js +25 -33
- package/dist/vue3/lib/hovercard.js.map +1 -1
- package/dist/vue3/lib/icon.cjs +1 -1
- package/dist/vue3/lib/icon.cjs.map +1 -1
- package/dist/vue3/lib/icon.js +1 -1
- package/dist/vue3/lib/icon.js.map +1 -1
- package/dist/vue3/lib/illustration.cjs +2 -1
- package/dist/vue3/lib/illustration.cjs.map +1 -1
- package/dist/vue3/lib/illustration.js +2 -1
- package/dist/vue3/lib/illustration.js.map +1 -1
- package/dist/vue3/lib/image-viewer.cjs +62 -66
- package/dist/vue3/lib/image-viewer.cjs.map +1 -1
- package/dist/vue3/lib/image-viewer.js +62 -66
- package/dist/vue3/lib/image-viewer.js.map +1 -1
- package/dist/vue3/lib/input-group.cjs +15 -19
- package/dist/vue3/lib/input-group.cjs.map +1 -1
- package/dist/vue3/lib/input-group.js +15 -19
- package/dist/vue3/lib/input-group.js.map +1 -1
- package/dist/vue3/lib/input.cjs +76 -104
- package/dist/vue3/lib/input.cjs.map +1 -1
- package/dist/vue3/lib/input.js +76 -104
- package/dist/vue3/lib/input.js.map +1 -1
- package/dist/vue3/lib/item-layout.cjs +10 -27
- package/dist/vue3/lib/item-layout.cjs.map +1 -1
- package/dist/vue3/lib/item-layout.js +10 -27
- package/dist/vue3/lib/item-layout.js.map +1 -1
- package/dist/vue3/lib/ivr-node.cjs +80 -89
- package/dist/vue3/lib/ivr-node.cjs.map +1 -1
- package/dist/vue3/lib/ivr-node.js +80 -89
- package/dist/vue3/lib/ivr-node.js.map +1 -1
- package/dist/vue3/lib/keyboard-shortcut.cjs +26 -31
- package/dist/vue3/lib/keyboard-shortcut.cjs.map +1 -1
- package/dist/vue3/lib/keyboard-shortcut.js +26 -31
- package/dist/vue3/lib/keyboard-shortcut.js.map +1 -1
- package/dist/vue3/lib/lazy-show.cjs +6 -8
- package/dist/vue3/lib/lazy-show.cjs.map +1 -1
- package/dist/vue3/lib/lazy-show.js +6 -8
- package/dist/vue3/lib/lazy-show.js.map +1 -1
- package/dist/vue3/lib/link.cjs +2 -7
- package/dist/vue3/lib/link.cjs.map +1 -1
- package/dist/vue3/lib/link.js +2 -7
- package/dist/vue3/lib/link.js.map +1 -1
- package/dist/vue3/lib/list-item-group.cjs +7 -14
- package/dist/vue3/lib/list-item-group.cjs.map +1 -1
- package/dist/vue3/lib/list-item-group.js +7 -14
- package/dist/vue3/lib/list-item-group.js.map +1 -1
- package/dist/vue3/lib/list-item.cjs +24 -25
- package/dist/vue3/lib/list-item.cjs.map +1 -1
- package/dist/vue3/lib/list-item.js +24 -25
- package/dist/vue3/lib/list-item.js.map +1 -1
- package/dist/vue3/lib/message-input.cjs +239 -277
- package/dist/vue3/lib/message-input.cjs.map +1 -1
- package/dist/vue3/lib/message-input.js +240 -278
- package/dist/vue3/lib/message-input.js.map +1 -1
- package/dist/vue3/lib/modal.cjs +59 -99
- package/dist/vue3/lib/modal.cjs.map +1 -1
- package/dist/vue3/lib/modal.js +59 -99
- package/dist/vue3/lib/modal.js.map +1 -1
- package/dist/vue3/lib/notice.cjs +33 -46
- package/dist/vue3/lib/notice.cjs.map +1 -1
- package/dist/vue3/lib/notice.js +33 -46
- package/dist/vue3/lib/notice.js.map +1 -1
- package/dist/vue3/lib/pagination.cjs +49 -61
- package/dist/vue3/lib/pagination.cjs.map +1 -1
- package/dist/vue3/lib/pagination.js +49 -61
- package/dist/vue3/lib/pagination.js.map +1 -1
- package/dist/vue3/lib/popover.cjs +133 -156
- package/dist/vue3/lib/popover.cjs.map +1 -1
- package/dist/vue3/lib/popover.js +134 -157
- package/dist/vue3/lib/popover.js.map +1 -1
- package/dist/vue3/lib/presence.cjs +9 -17
- package/dist/vue3/lib/presence.cjs.map +1 -1
- package/dist/vue3/lib/presence.js +9 -17
- package/dist/vue3/lib/presence.js.map +1 -1
- package/dist/vue3/lib/radio-group.cjs +1 -1
- package/dist/vue3/lib/radio-group.cjs.map +1 -1
- package/dist/vue3/lib/radio-group.js +1 -1
- package/dist/vue3/lib/radio-group.js.map +1 -1
- package/dist/vue3/lib/radio.cjs +34 -41
- package/dist/vue3/lib/radio.cjs.map +1 -1
- package/dist/vue3/lib/radio.js +34 -41
- package/dist/vue3/lib/radio.js.map +1 -1
- package/dist/vue3/lib/rich-text-editor.cjs +297 -298
- package/dist/vue3/lib/rich-text-editor.cjs.map +1 -1
- package/dist/vue3/lib/rich-text-editor.js +297 -298
- package/dist/vue3/lib/rich-text-editor.js.map +1 -1
- package/dist/vue3/lib/root-layout.cjs +24 -39
- package/dist/vue3/lib/root-layout.cjs.map +1 -1
- package/dist/vue3/lib/root-layout.js +24 -39
- package/dist/vue3/lib/root-layout.js.map +1 -1
- package/dist/vue3/lib/scrollbar-directive.cjs.map +1 -1
- package/dist/vue3/lib/scrollbar-directive.js.map +1 -1
- package/dist/vue3/lib/scroller.cjs +100 -83
- package/dist/vue3/lib/scroller.cjs.map +1 -1
- package/dist/vue3/lib/scroller.js +100 -83
- package/dist/vue3/lib/scroller.js.map +1 -1
- package/dist/vue3/lib/select-menu.cjs +40 -67
- package/dist/vue3/lib/select-menu.cjs.map +1 -1
- package/dist/vue3/lib/select-menu.js +40 -67
- package/dist/vue3/lib/select-menu.js.map +1 -1
- package/dist/vue3/lib/settings-menu-button.cjs +10 -16
- package/dist/vue3/lib/settings-menu-button.cjs.map +1 -1
- package/dist/vue3/lib/settings-menu-button.js +10 -16
- package/dist/vue3/lib/settings-menu-button.js.map +1 -1
- package/dist/vue3/lib/skeleton.cjs +74 -93
- package/dist/vue3/lib/skeleton.cjs.map +1 -1
- package/dist/vue3/lib/skeleton.js +74 -93
- package/dist/vue3/lib/skeleton.js.map +1 -1
- package/dist/vue3/lib/split-button.cjs +68 -74
- package/dist/vue3/lib/split-button.cjs.map +1 -1
- package/dist/vue3/lib/split-button.js +68 -74
- package/dist/vue3/lib/split-button.js.map +1 -1
- package/dist/vue3/lib/stack.cjs +18 -26
- package/dist/vue3/lib/stack.cjs.map +1 -1
- package/dist/vue3/lib/stack.js +18 -26
- package/dist/vue3/lib/stack.js.map +1 -1
- package/dist/vue3/lib/tabs.cjs +3 -7
- package/dist/vue3/lib/tabs.cjs.map +1 -1
- package/dist/vue3/lib/tabs.js +3 -7
- package/dist/vue3/lib/tabs.js.map +1 -1
- package/dist/vue3/lib/time-pill.cjs.map +1 -1
- package/dist/vue3/lib/time-pill.js.map +1 -1
- package/dist/vue3/lib/toast.cjs +35 -51
- package/dist/vue3/lib/toast.cjs.map +1 -1
- package/dist/vue3/lib/toast.js +35 -51
- package/dist/vue3/lib/toast.js.map +1 -1
- package/dist/vue3/lib/toggle.cjs +24 -34
- package/dist/vue3/lib/toggle.cjs.map +1 -1
- package/dist/vue3/lib/toggle.js +24 -34
- package/dist/vue3/lib/toggle.js.map +1 -1
- package/dist/vue3/lib/tooltip-directive.cjs +26 -19
- package/dist/vue3/lib/tooltip-directive.cjs.map +1 -1
- package/dist/vue3/lib/tooltip-directive.js +26 -19
- package/dist/vue3/lib/tooltip-directive.js.map +1 -1
- package/dist/vue3/lib/tooltip.cjs +21 -32
- package/dist/vue3/lib/tooltip.cjs.map +1 -1
- package/dist/vue3/lib/tooltip.js +22 -33
- package/dist/vue3/lib/tooltip.js.map +1 -1
- package/dist/vue3/lib/top-banner-info.cjs +8 -23
- package/dist/vue3/lib/top-banner-info.cjs.map +1 -1
- package/dist/vue3/lib/top-banner-info.js +8 -23
- package/dist/vue3/lib/top-banner-info.js.map +1 -1
- package/dist/vue3/lib/unread-pill.cjs +8 -11
- package/dist/vue3/lib/unread-pill.cjs.map +1 -1
- package/dist/vue3/lib/unread-pill.js +8 -11
- package/dist/vue3/lib/unread-pill.js.map +1 -1
- package/dist/vue3/lib/validation-messages.cjs +14 -17
- package/dist/vue3/lib/validation-messages.cjs.map +1 -1
- package/dist/vue3/lib/validation-messages.js +14 -17
- package/dist/vue3/lib/validation-messages.js.map +1 -1
- package/dist/vue3/style.css +5 -0
- package/dist/vue3/types/components/button/button.vue.d.ts +1 -1
- package/dist/vue3/types/components/chip/chip.vue.d.ts +1 -1
- package/dist/vue3/types/components/combobox/combobox.vue.d.ts +1 -1
- package/dist/vue3/types/components/datepicker/modules/month-year-picker.vue.d.ts +1 -1
- package/dist/vue3/types/components/icon/icon.vue.d.ts +2 -2
- package/dist/vue3/types/components/icon/icon_constants.d.ts +1 -1
- package/dist/vue3/types/components/icon/icon_constants.d.ts.map +1 -1
- package/dist/vue3/types/components/illustration/illustration_constants.d.ts +1 -1
- package/dist/vue3/types/components/illustration/illustration_constants.d.ts.map +1 -1
- package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts +21 -0
- package/dist/vue3/types/components/image_viewer/image_viewer.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/input/input.vue.d.ts +1 -1
- package/dist/vue3/types/components/modal/modal.vue.d.ts +1 -1
- package/dist/vue3/types/components/notice/notice.vue.d.ts +1 -1
- package/dist/vue3/types/components/radio/radio.vue.d.ts +1 -1
- package/dist/vue3/types/components/rich_text_editor/extensions/custom_link/custom_link.d.ts.map +1 -1
- package/dist/vue3/types/components/rich_text_editor/mention_suggestion.d.ts.map +1 -1
- package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts +5 -3
- package/dist/vue3/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/vue3/types/components/scroller/modules/scroller_item.vue.d.ts +1 -1
- package/dist/vue3/types/components/split_button/split_button-alpha.vue.d.ts +1 -1
- package/dist/vue3/types/components/tabs/tab.vue.d.ts +1 -1
- package/dist/vue3/types/components/toast/toast.vue.d.ts +2 -2
- package/dist/vue3/types/components/tooltip/tooltip.vue.d.ts +1 -1
- package/dist/vue3/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +1 -1
- package/dist/vue3/types/recipes/conversation_view/editor/editor.vue.d.ts +1 -1
- package/dist/vue3/types/recipes/conversation_view/feed_item_row/feed_item_row.vue.d.ts +1 -1
- package/dist/vue3/types/recipes/conversation_view/message_input/message_input.vue.d.ts +1 -1
- package/package.json +3 -3
- package/dist/chunks/tokens-base-dark-BC3U5KoN.js +0 -4
- package/dist/chunks/tokens-base-dark-zbBpWlfP.js +0 -1
- package/dist/chunks/tokens-base-light-PCrr7t8W.js +0 -4
- package/dist/chunks/tokens-base-light-dvWvBHbM.js +0 -1
- package/dist/vue2/chunks/icon_constants-Dy4MEUJL.js.map +0 -1
- package/dist/vue2/chunks/icon_constants-QYpmdE0R.js.map +0 -1
- package/dist/vue3/chunks/icon_constants-Dy4MEUJL.js.map +0 -1
- package/dist/vue3/chunks/icon_constants-QYpmdE0R.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.cjs","sources":["../../components/avatar/avatar_constants.js","../../common/storybook_utils.js","../../components/avatar/utils.js","../../components/avatar/avatar.vue"],"sourcesContent":["export const AVATAR_SIZE_MODIFIERS = {\n xs: 'd-avatar--xs',\n sm: 'd-avatar--sm',\n md: 'd-avatar--md',\n lg: 'd-avatar--lg',\n xl: 'd-avatar--xl',\n};\n\nexport const AVATAR_KIND_MODIFIERS = {\n default: '',\n icon: 'd-avatar__icon',\n initials: 'd-avatar__initials',\n};\n\nexport const AVATAR_PRESENCE_SIZE_MODIFIERS = {\n md: 'd-avatar__presence--md',\n lg: 'd-avatar__presence--lg',\n};\n\nexport const AVATAR_PRESENCE_STATES = {\n NONE: '',\n BUSY: 'busy',\n AWAY: 'away',\n OFFLINE: 'offline',\n ACTIVE: 'active',\n};\n\nexport const AVATAR_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '300',\n lg: '500',\n xl: '600',\n};\n\nexport const AVATAR_COLORS = [\n '000',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '1000',\n '1100',\n '1200',\n '1300',\n '1400',\n '1500',\n '1600',\n '1700',\n '1800',\n];\n\n// We do not use the color '000' (grey) in the randomized avatar colors, but it can still be set manually.\nexport const AVATAR_RANDOM_COLORS = AVATAR_COLORS.slice(1);\n\nexport const AVATAR_GROUP_VALIDATOR = (group) => group > 1;\n\nexport default {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_ICON_SIZES,\n AVATAR_COLORS,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n};\n","import iconNames from '@dialpad/dialtone-icons/icons.json' with { type: 'json' };\nimport illustrationNames from '@dialpad/dialtone-icons/illustrations.json' with { type: 'json' };\n\n/**\n * Will use a Vue SFC to render the template rather than a template string.\n * This is useful for more complex components that are hard to work with and\n * get messy when rendered via a template string. Will pass args and argTypes\n * into the component so it is able to be live edited with storybook controls addon.\n * @param {object} args storybook control args\n * @param {component} templateComponent vue component template for rendering to storybook.\n * Note this should not be the component itself,\n * but rather the usage of that component.\n * @returns {component} the template component with props and args added.\n */\nexport const createTemplateFromVueFile = (args, argTypes, templateComponent) => ({\n components: { templateComponent },\n setup () {\n return { args };\n },\n template: '<template-component v-bind=\"args\"></template-component>',\n});\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIconNames () {\n return [undefined, ...iconNames];\n}\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIllustrationNames () {\n return [undefined, ...illustrationNames];\n}\n\nexport const generateTemplate = (component,\n { props = [], excludeProps = [], customProps = [], childTemplate } = {}) => {\n if (!component) {\n console.warn('Generate template: Please provide a component');\n return '';\n }\n\n const { name, props: componentProps } = component;\n const finalProps = props.length ? props : Object.keys(componentProps);\n const normalizedName = name.split(/(?=[A-Z])/).join('-').toLowerCase();\n\n const startFragment = `<${normalizedName}`;\n\n const propFragments = finalProps\n .filter(prop => !excludeProps.includes(prop))\n .map(prop => `:${prop}=\"${prop}\"`);\n\n const endFragment = childTemplate ? `>${childTemplate}</${normalizedName}>` : ' />';\n\n return [startFragment, ...propFragments, ...customProps, endFragment].join(' ');\n};\n\nexport default {\n generateTemplate,\n createTemplateFromVueFile,\n getIllustrationNames,\n getIconNames,\n};\n","export const extractInitialsFromName = (fullName) => {\n if (typeof fullName !== 'string' || !fullName.trim()) return '';\n\n const names = fullName.trim().split(/\\s+/g);\n\n return names.length === 1\n ? names.join('').substring(0, 2)\n : names.filter((_, index) => (index === 0 || index === names.length - 1))\n .map(name => name.slice(0, 1).toUpperCase())\n .join('');\n};\n","<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_RANDOM_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["DtPresence","DtIcon","getUniqueString","ICON_SIZE_MODIFIERS","getRandomElement","_openBlock","_createBlock","_resolveDynamicComponent","_createElementVNode","_normalizeClass","_createElementBlock","_toDisplayString","_mergeProps"],"mappings":";;;;;;;;;;;AAAY,MAAC,wBAAwB;AAAA,EACnC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEY,MAAC,wBAAwB;AAAA,EACnC,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AACZ;AAEY,MAAC,iCAAiC;AAAA,EAC5C,IAAI;AAAA,EACJ,IAAI;AACN;AAEY,MAAC,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AACV;AAEY,MAAC,oBAAoB;AAAA,EAC/B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEY,MAAC,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGY,MAAC,uBAAuB,cAAc,MAAM,CAAC;AAE7C,MAAC,yBAAyB,CAAC,UAAU,QAAQ;AClClD,SAAS,eAAgB;AAC9B,SAAO,CAAC,QAAW,GAAG,SAAS;AACjC;AC5BO,MAAM,0BAA0B,CAAC,aAAa;AACnD,MAAI,OAAO,aAAa,YAAY,CAAC,SAAS,KAAI;AAAI,WAAO;AAE7D,QAAM,QAAQ,SAAS,KAAM,EAAC,MAAM,MAAM;AAE1C,SAAO,MAAM,WAAW,IACpB,MAAM,KAAK,EAAE,EAAE,UAAU,GAAG,CAAC,IAC7B,MAAM,OAAO,CAAC,GAAG,UAAW,UAAU,KAAK,UAAU,MAAM,SAAS,CAAE,EACrE,IAAI,UAAQ,KAAK,MAAM,GAAG,CAAC,EAAE,aAAa,EAC1C,KAAK,EAAE;AACd;ACgFA,MAAM,aAAa,aAAY;AAM/B,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY,EAAA,YAAEA,aAAU,YAAA,QAAEC,gBAAQ;AAAA,EAElC,cAAc;AAAA,EAEd,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,IAAI;AAAA,MACF,MAAM;AAAA,MACN,UAAW;AAAE,eAAOC,aAAe,gBAAA;AAAA,MAAK;AAAA,IACzC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,SAAS,OAAO,KAAK,qBAAqB,EAAE,SAAS,IAAI;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,uBAAuB;AAAA,MAChC,WAAW,CAAC,UAAU;AACpB,eAAO,OAAO,OAAO,sBAAsB,EAAE,SAAS,KAAK;AAAA,MAC5D;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA,IACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,UAAU,uBAAuB,KAAK;AAAA,IACnD;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,cAAc;AAAA,MACZ,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,SAAS,WAAW,SAAS,IAAI;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,SAAS,CAAC,QAAQ,OAAO,KAAKC,eAAmB,mBAAA,EAAE,SAAS,IAAI;AAAA,IAC7E;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOL;AAAA,EACD;AAAA,EAED,OAAQ;AACN,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,yBAAyB;AAAA,MACzB,mBAAmB;AAAA,MACnB,cAAc;AAAA;EAEjB;AAAA,EAED,UAAU;AAAA,IACR,gBAAiB;AACf,aAAO,CAAC,KAAK;AAAA,IACd;AAAA,IAED,gBAAiB;AACf,aAAO;AAAA,QACL;AAAA,QACA,sBAAsB,KAAK,aAAa;AAAA,QACxC,KAAK;AAAA,QACL;AAAA,UACE,mBAAmB,KAAK;AAAA,UACxB,CAAC,mBAAmB,KAAK,SAAQ,CAAE,EAAE,GAAG,KAAK;AAAA,UAC7C,uBAAuB,KAAK;AAAA,QAC7B;AAAA;IAEJ;AAAA,IAED,iBAAkB;AAChB,aAAO;AAAA,QACL;AAAA,QACA,KAAK;AAAA;IAER;AAAA,IAED,YAAa;AACX,aAAO,uBAAuB,KAAK,KAAK;AAAA,IACzC;AAAA,IAED,iBAAkB;AAChB,aAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAAA,IACvC;AAAA,IAED,gBAAiB;AAEf,aAAO,KAAK,QAAQ,OAAO,KAAK;AAAA,IACjC;AAAA,IAED,YAAa;AACX,aAAO,KAAK,4BAA4B,SAAS,KAAK;AAAA,IACvD;AAAA,EACF;AAAA,EAED,OAAO;AAAA,IACL,UAAU;AAAA,MACR,WAAW;AAAA,MACX,UAAW;AACT,aAAK,eAAc;AAAA,MACpB;AAAA,IACF;AAAA,IAED,MAAM;AAAA,MACJ,WAAW;AAAA,MACX,UAAW;AACT,aAAK,eAAc;AAAA,MACpB;AAAA,IACF;AAAA,IAED,OAAO;AAAA,MACL,WAAW;AAAA,MACX,UAAW;AACT,aAAK,eAAc;AAAA,MACpB;AAAA,IACF;AAAA,IAED,SAAU,QAAQ;AAChB,WAAK,0BAA0B;AAC/B,UAAI,CAAC;AAAQ;AAEb,WAAK,cAAa;AAClB,WAAK,kBAAiB;AAAA,IACvB;AAAA,EACF;AAAA,EAED,UAAW;AACT,SAAK,cAAa;AAClB,SAAK,kBAAiB;AAAA,EACvB;AAAA,EAED,SAAS;AAAA,IACP,MAAM,oBAAqB;AACzB,YAAM,KAAK;AACX,YAAM,KAAK,KAAK,MAAM;AACtB,UAAI,CAAC;AAAI;AAET,SAAG,iBAAiB,QAAQ,MAAM,KAAK,yBAAyB,EAAE,GAAG,EAAE,MAAM,KAAG,CAAG;AACnF,SAAG,iBAAiB,SAAS,MAAM,KAAK,0BAA0B,EAAE,GAAG,EAAE,MAAM,KAAG,CAAG;AAAA,IACtF;AAAA,IAED,iBAAkB;AAChB,YAAM,WAAW,wBAAwB,KAAK,QAAQ;AAEtD,UAAI,KAAK,kBAAkB,MAAM;AAC/B,aAAK,oBAAoB;AAAA,MAC3B,WAAW,KAAK,kBAAkB,MAAM;AACtC,aAAK,oBAAoB,SAAS,CAAC;AAAA,aAC9B;AACL,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACD;AAAA,IAED,WAAY;AACV,aAAO,KAAK,SAASC,aAAAA,iBAAiB,sBAAsB,KAAK,IAAI;AAAA,IACtE;AAAA,IAED,yBAA0B,IAAI;AAC5B,WAAK,0BAA0B;AAC/B,SAAG,UAAU,OAAO,UAAU;AAAA,IAC/B;AAAA,IAED,0BAA2B,IAAI;AAC7B,WAAK,0BAA0B;AAC/B,SAAG,UAAU,IAAI,UAAU;AAAA,IAC5B;AAAA,IAED,gBAAiB;AACf,UAAI,KAAK,YAAY,KAAK,aAAa,QAAW;AAChD,gBAAQ,MAAM,uHAAuH;AAAA,MACvI;AAAA,IACD;AAAA,IAED,YAAa,GAAG;AACd,UAAI,CAAC,KAAK;AAAW;AACrB,WAAK,MAAM,SAAS,CAAC;AAAA,IACtB;AAAA,EACF;AACH;;;;EA9XQ,OAAM;;;;EAOR,OAAM;AAAA,EACN,WAAQ;;;;;AAzDZ,SAAAC,IAAA,UAAA,GAAAC,IAAAA,YAqEYC,4BApEL,OAAS,YAAA,WAAA,KAAA,GAAA;AAAA,IACb,IAAI,OAAE;AAAA,IACN,0BAAO,SAAa,aAAA;AAAA,IACrB,WAAQ;AAAA,IACP,SAAO,SAAW;AAAA;yBAEnB,MA8BM;AAAA,MA9BNC,IAAAA,mBA8BM,OAAA;AAAA,QA7BJ,KAAI;AAAA,QACH,OAAKC,IAAAA,eAAA;AAAA,UAAY,OAAW;AAAA;sCAAkE,MAAuB,wBAAA;AAAA;;QAO9G,SAAS,8BADjBC,IAOC,mBAAA,OAAA;AAAA;UALC,KAAI;AAAA,UACJ,OAAM;AAAA,UACN,WAAQ;AAAA,UACP,KAAK,OAAQ;AAAA,UACb,KAAK,OAAQ;AAAA,mCAGH,OAAQ,6BADrBJ,IAOE,YAAA,oBAAA;AAAA;UALC,MAAM,OAAQ;AAAA,UACd,cAAY,OAAa;AAAA,UACzB,MAAM,OAAA,YAAY,MAAA,kBAAkB,OAAI,IAAA;AAAA,UACxC,OAAQG,IAAA,eAAA,CAAA,OAAA,WAAW,MAAA,sBAAsB,IAAI,CAAA;AAAA,UAC9C,WAAQ;AAAA,kFAEVC,IAKO,mBAAA,QAAA;AAAA;UAHJ,OAAKD,IAAAA,eAAA,CAAG,MAAqB,sBAAC,QAAQ,CAAA;AAAA,+BAEpC,MAAiB,iBAAA,GAAA,CAAA;AAAA;MAIhB,OAAA,eAAe,OAAW,gCADlCC,IAeM,mBAAA,OAAA;AAAA;QAbH,0BAAO,SAAc,cAAA;AAAA;QAGd,OAAW,gCADnBJ,IAIE,YAAA,oBAAA;AAAA;UAFA,OAAM;AAAA,UACL,MAAM,OAAW;AAAA,iCAGP,OAAW,gCADxBI,IAKI,mBAAA,KALJ,YAKIC,IAAAA,gBADC,OAAW,WAAA,GAAA,CAAA;;MAIV,SAAS,8BADjBD,IAI4B,mBAAA,QAJ5B,YAI4BC,IAAAA,gBAAxB,SAAc,cAAA,GAAA,CAAA;MAEV,OAAA,aAAa,SAAS,aAD9BN,IAAAA,aAAAC,IAAAA,YASE,wBATFM,eASE;AAAA;QAPC,UAAU,OAAQ;AAAA,QAClB,OAAK;AAAA;UAA0C,MAAA,+BAA+B,OAAI,IAAA;AAAA;SAI3E,OAAa,eAAA,EACrB,WAAQ,cAAa,CAAA,GAAA,MAAA,IAAA,CAAA,YAAA,OAAA,CAAA;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"avatar.cjs","sources":["../../components/avatar/avatar_constants.js","../../common/storybook_utils.js","../../components/avatar/utils.js","../../components/avatar/avatar.vue"],"sourcesContent":["export const AVATAR_SIZE_MODIFIERS = {\n xs: 'd-avatar--xs',\n sm: 'd-avatar--sm',\n md: 'd-avatar--md',\n lg: 'd-avatar--lg',\n xl: 'd-avatar--xl',\n};\n\nexport const AVATAR_KIND_MODIFIERS = {\n default: '',\n icon: 'd-avatar__icon',\n initials: 'd-avatar__initials',\n};\n\nexport const AVATAR_PRESENCE_SIZE_MODIFIERS = {\n md: 'd-avatar__presence--md',\n lg: 'd-avatar__presence--lg',\n};\n\nexport const AVATAR_PRESENCE_STATES = {\n NONE: '',\n BUSY: 'busy',\n AWAY: 'away',\n OFFLINE: 'offline',\n ACTIVE: 'active',\n};\n\nexport const AVATAR_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '300',\n lg: '500',\n xl: '600',\n};\n\nexport const AVATAR_COLORS = [\n '000',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '1000',\n '1100',\n '1200',\n '1300',\n '1400',\n '1500',\n '1600',\n '1700',\n '1800',\n];\n\n// We do not use the color '000' (grey) in the randomized avatar colors, but it can still be set manually.\nexport const AVATAR_RANDOM_COLORS = AVATAR_COLORS.slice(1);\n\nexport const AVATAR_GROUP_VALIDATOR = (group) => group > 1;\n\nexport default {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_ICON_SIZES,\n AVATAR_COLORS,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n};\n","const iconNames = require('@dialpad/dialtone-icons/icons.json');\nconst illustrationNames = require('@dialpad/dialtone-icons/illustrations.json');\n\n/**\n * Will use a Vue SFC to render the template rather than a template string.\n * This is useful for more complex components that are hard to work with and\n * get messy when rendered via a template string. Will pass args and argTypes\n * into the component so it is able to be live edited with storybook controls addon.\n * @param {object} args storybook control args\n * @param {component} templateComponent vue component template for rendering to storybook.\n * Note this should not be the component itself,\n * but rather the usage of that component.\n * @returns {component} the template component with props and args added.\n */\nexport const createTemplateFromVueFile = (args, argTypes, templateComponent) => ({\n components: { templateComponent },\n setup () {\n return { args };\n },\n template: '<template-component v-bind=\"args\"></template-component>',\n});\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIconNames () {\n return [undefined, ...iconNames];\n}\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIllustrationNames () {\n return [undefined, ...illustrationNames];\n}\n\nexport const generateTemplate = (component,\n { props = [], excludeProps = [], customProps = [], childTemplate } = {}) => {\n if (!component) {\n console.warn('Generate template: Please provide a component');\n return '';\n }\n\n const { name, props: componentProps } = component;\n const finalProps = props.length ? props : Object.keys(componentProps);\n const normalizedName = name.split(/(?=[A-Z])/).join('-').toLowerCase();\n\n const startFragment = `<${normalizedName}`;\n\n const propFragments = finalProps\n .filter(prop => !excludeProps.includes(prop))\n .map(prop => `:${prop}=\"${prop}\"`);\n\n const endFragment = childTemplate ? `>${childTemplate}</${normalizedName}>` : ' />';\n\n return [startFragment, ...propFragments, ...customProps, endFragment].join(' ');\n};\n\nexport default {\n generateTemplate,\n createTemplateFromVueFile,\n getIllustrationNames,\n getIconNames,\n};\n","export const extractInitialsFromName = (fullName) => {\n if (typeof fullName !== 'string' || !fullName.trim()) return '';\n\n const names = fullName.trim().split(/\\s+/g);\n\n return names.length === 1\n ? names.join('').substring(0, 2)\n : names.filter((_, index) => (index === 0 || index === names.length - 1))\n .map(name => name.slice(0, 1).toUpperCase())\n .join('');\n};\n","<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_RANDOM_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["AVATAR_SIZE_MODIFIERS","xs","sm","md","lg","xl","AVATAR_KIND_MODIFIERS","default","icon","initials","AVATAR_PRESENCE_SIZE_MODIFIERS","AVATAR_PRESENCE_STATES","NONE","BUSY","AWAY","OFFLINE","ACTIVE","AVATAR_ICON_SIZES","AVATAR_COLORS","AVATAR_RANDOM_COLORS","slice","AVATAR_GROUP_VALIDATOR","group","iconNames","vitePluginRequire_1723767262026_94991400","getIconNames","undefined","extractInitialsFromName","fullName","trim","names","split","length","join","substring","filter","_","index","map","name","toUpperCase","ICONS_LIST","_sfc_main","components","DtPresence","DtIcon","inheritAttrs","props","id","type","String","getUniqueString","seed","color","size","validator","Object","keys","includes","avatarClass","Array","canvasClass","iconClass","presence","state","values","presenceProps","Number","overlayIcon","overlayText","overlayClass","imageSrc","imageAlt","iconName","iconSize","ICON_SIZE_MODIFIERS","clickable","Boolean","iconAriaLabel","emits","data","imageLoadedSuccessfully","formattedInitials","initializing","computed","isNotIconType","avatarClasses","validatedSize","showGroup","getColor","overlayClasses","formattedGroup","showImage","watch","immediate","handler","formatInitials","newSrc","validateProps","setImageListeners","mounted","methods","$nextTick","el","$refs","avatarImage","addEventListener","_loadedImageEventHandler","once","_erroredImageEventHandler","getRandomElement","classList","remove","add","console","error","handleClick","e","$emit","class","_openBlock","_createBlock","_resolveDynamicComponent","$props","$options","onClick","_createElementVNode","ref","_normalizeClass","$data","_createElementBlock","src","alt","_component_dt_icon","_hoisted_2","_toDisplayString","_hoisted_3","_component_dt_presence","_mergeProps"],"mappings":"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"}
|
package/dist/vue3/lib/avatar.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getUniqueString, getRandomElement } from "../common/utils.js";
|
|
2
|
-
import
|
|
3
|
-
import { ICON_SIZE_MODIFIERS } from "../chunks/icon_constants-
|
|
2
|
+
import vitePluginRequire_1723767260654_98826691 from "@dialpad/dialtone-icons/icons.json";
|
|
3
|
+
import { ICON_SIZE_MODIFIERS } from "../chunks/icon_constants-gIQj4mf7.js";
|
|
4
4
|
import { resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createElementVNode, createElementBlock, toDisplayString, createCommentVNode, mergeProps } from "vue";
|
|
5
5
|
import { _export_sfc } from "../chunks/_plugin-vue_export-helper-caHeSgYY.js";
|
|
6
6
|
import { DtPresence } from "./presence.js";
|
|
@@ -37,29 +37,10 @@ const AVATAR_ICON_SIZES = {
|
|
|
37
37
|
lg: "500",
|
|
38
38
|
xl: "600"
|
|
39
39
|
};
|
|
40
|
-
const AVATAR_COLORS = [
|
|
41
|
-
"000",
|
|
42
|
-
"100",
|
|
43
|
-
"200",
|
|
44
|
-
"300",
|
|
45
|
-
"400",
|
|
46
|
-
"500",
|
|
47
|
-
"600",
|
|
48
|
-
"700",
|
|
49
|
-
"800",
|
|
50
|
-
"900",
|
|
51
|
-
"1000",
|
|
52
|
-
"1100",
|
|
53
|
-
"1200",
|
|
54
|
-
"1300",
|
|
55
|
-
"1400",
|
|
56
|
-
"1500",
|
|
57
|
-
"1600",
|
|
58
|
-
"1700",
|
|
59
|
-
"1800"
|
|
60
|
-
];
|
|
40
|
+
const AVATAR_COLORS = ["000", "100", "200", "300", "400", "500", "600", "700", "800", "900", "1000", "1100", "1200", "1300", "1400", "1500", "1600", "1700", "1800"];
|
|
61
41
|
const AVATAR_RANDOM_COLORS = AVATAR_COLORS.slice(1);
|
|
62
42
|
const AVATAR_GROUP_VALIDATOR = (group) => group > 1;
|
|
43
|
+
const iconNames = vitePluginRequire_1723767260654_98826691;
|
|
63
44
|
function getIconNames() {
|
|
64
45
|
return [void 0, ...iconNames];
|
|
65
46
|
}
|
|
@@ -72,7 +53,10 @@ const extractInitialsFromName = (fullName) => {
|
|
|
72
53
|
const ICONS_LIST = getIconNames();
|
|
73
54
|
const _sfc_main = {
|
|
74
55
|
name: "DtAvatar",
|
|
75
|
-
components: {
|
|
56
|
+
components: {
|
|
57
|
+
DtPresence,
|
|
58
|
+
DtIcon
|
|
59
|
+
},
|
|
76
60
|
inheritAttrs: false,
|
|
77
61
|
props: {
|
|
78
62
|
/**
|
|
@@ -263,22 +247,14 @@ const _sfc_main = {
|
|
|
263
247
|
return !this.iconName;
|
|
264
248
|
},
|
|
265
249
|
avatarClasses() {
|
|
266
|
-
return [
|
|
267
|
-
"d-avatar",
|
|
268
|
-
|
|
269
|
-
this.
|
|
270
|
-
|
|
271
|
-
"d-avatar--group": this.showGroup,
|
|
272
|
-
[`d-avatar--color-${this.getColor()}`]: this.isNotIconType,
|
|
273
|
-
"d-avatar--clickable": this.clickable
|
|
274
|
-
}
|
|
275
|
-
];
|
|
250
|
+
return ["d-avatar", AVATAR_SIZE_MODIFIERS[this.validatedSize], this.avatarClass, {
|
|
251
|
+
"d-avatar--group": this.showGroup,
|
|
252
|
+
[`d-avatar--color-${this.getColor()}`]: this.isNotIconType,
|
|
253
|
+
"d-avatar--clickable": this.clickable
|
|
254
|
+
}];
|
|
276
255
|
},
|
|
277
256
|
overlayClasses() {
|
|
278
|
-
return [
|
|
279
|
-
"d-avatar__overlay",
|
|
280
|
-
this.overlayClass
|
|
281
|
-
];
|
|
257
|
+
return ["d-avatar__overlay", this.overlayClass];
|
|
282
258
|
},
|
|
283
259
|
showGroup() {
|
|
284
260
|
return AVATAR_GROUP_VALIDATOR(this.group);
|
|
@@ -330,8 +306,12 @@ const _sfc_main = {
|
|
|
330
306
|
const el = this.$refs.avatarImage;
|
|
331
307
|
if (!el)
|
|
332
308
|
return;
|
|
333
|
-
el.addEventListener("load", () => this._loadedImageEventHandler(el), {
|
|
334
|
-
|
|
309
|
+
el.addEventListener("load", () => this._loadedImageEventHandler(el), {
|
|
310
|
+
once: true
|
|
311
|
+
});
|
|
312
|
+
el.addEventListener("error", () => this._erroredImageEventHandler(el), {
|
|
313
|
+
once: true
|
|
314
|
+
});
|
|
335
315
|
},
|
|
336
316
|
formatInitials() {
|
|
337
317
|
const initials = extractInitialsFromName(this.fullName);
|
|
@@ -385,54 +365,42 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
385
365
|
"data-qa": "dt-avatar",
|
|
386
366
|
onClick: $options.handleClick
|
|
387
367
|
}, {
|
|
388
|
-
default: withCtx(() => [
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
$props.overlayIcon
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
}, null, 8, ["name"])) : $props.overlayText ? (openBlock(), createElementBlock("p", _hoisted_2, toDisplayString($props.overlayText), 1)) : createCommentVNode("", true)
|
|
425
|
-
], 2)) : createCommentVNode("", true),
|
|
426
|
-
$options.showGroup ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString($options.formattedGroup), 1)) : createCommentVNode("", true),
|
|
427
|
-
$props.presence && !$options.showGroup ? (openBlock(), createBlock(_component_dt_presence, mergeProps({
|
|
428
|
-
key: 2,
|
|
429
|
-
presence: $props.presence,
|
|
430
|
-
class: [
|
|
431
|
-
"d-avatar__presence",
|
|
432
|
-
$data.AVATAR_PRESENCE_SIZE_MODIFIERS[$props.size]
|
|
433
|
-
]
|
|
434
|
-
}, $props.presenceProps, { "data-qa": "dt-presence" }), null, 16, ["presence", "class"])) : createCommentVNode("", true)
|
|
435
|
-
]),
|
|
368
|
+
default: withCtx(() => [createElementVNode("div", {
|
|
369
|
+
ref: "canvas",
|
|
370
|
+
class: normalizeClass([$props.canvasClass, "d-avatar__canvas", {
|
|
371
|
+
"d-avatar--image-loaded": $data.imageLoadedSuccessfully
|
|
372
|
+
}])
|
|
373
|
+
}, [$options.showImage ? (openBlock(), createElementBlock("img", {
|
|
374
|
+
key: 0,
|
|
375
|
+
ref: "avatarImage",
|
|
376
|
+
class: "d-avatar__image",
|
|
377
|
+
"data-qa": "dt-avatar-image",
|
|
378
|
+
src: $props.imageSrc,
|
|
379
|
+
alt: $props.imageAlt
|
|
380
|
+
}, null, 8, _hoisted_1)) : $props.iconName ? (openBlock(), createBlock(_component_dt_icon, {
|
|
381
|
+
key: 1,
|
|
382
|
+
name: $props.iconName,
|
|
383
|
+
"aria-label": $props.iconAriaLabel,
|
|
384
|
+
size: $props.iconSize || $data.AVATAR_ICON_SIZES[$props.size],
|
|
385
|
+
class: normalizeClass([$props.iconClass, $data.AVATAR_KIND_MODIFIERS.icon]),
|
|
386
|
+
"data-qa": "dt-avatar-icon"
|
|
387
|
+
}, null, 8, ["name", "aria-label", "size", "class"])) : (openBlock(), createElementBlock("span", {
|
|
388
|
+
key: 2,
|
|
389
|
+
class: normalizeClass([$data.AVATAR_KIND_MODIFIERS.initials])
|
|
390
|
+
}, toDisplayString($data.formattedInitials), 3))], 2), $props.overlayIcon || $props.overlayText ? (openBlock(), createElementBlock("div", {
|
|
391
|
+
key: 0,
|
|
392
|
+
class: normalizeClass($options.overlayClasses)
|
|
393
|
+
}, [$props.overlayIcon ? (openBlock(), createBlock(_component_dt_icon, {
|
|
394
|
+
key: 0,
|
|
395
|
+
class: "d-avatar__overlay-icon",
|
|
396
|
+
name: $props.overlayIcon
|
|
397
|
+
}, null, 8, ["name"])) : $props.overlayText ? (openBlock(), createElementBlock("p", _hoisted_2, toDisplayString($props.overlayText), 1)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true), $options.showGroup ? (openBlock(), createElementBlock("span", _hoisted_3, toDisplayString($options.formattedGroup), 1)) : createCommentVNode("", true), $props.presence && !$options.showGroup ? (openBlock(), createBlock(_component_dt_presence, mergeProps({
|
|
398
|
+
key: 2,
|
|
399
|
+
presence: $props.presence,
|
|
400
|
+
class: ["d-avatar__presence", $data.AVATAR_PRESENCE_SIZE_MODIFIERS[$props.size]]
|
|
401
|
+
}, $props.presenceProps, {
|
|
402
|
+
"data-qa": "dt-presence"
|
|
403
|
+
}), null, 16, ["presence", "class"])) : createCommentVNode("", true)]),
|
|
436
404
|
_: 1
|
|
437
405
|
}, 8, ["id", "class", "onClick"]);
|
|
438
406
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avatar.js","sources":["../../components/avatar/avatar_constants.js","../../common/storybook_utils.js","../../components/avatar/utils.js","../../components/avatar/avatar.vue"],"sourcesContent":["export const AVATAR_SIZE_MODIFIERS = {\n xs: 'd-avatar--xs',\n sm: 'd-avatar--sm',\n md: 'd-avatar--md',\n lg: 'd-avatar--lg',\n xl: 'd-avatar--xl',\n};\n\nexport const AVATAR_KIND_MODIFIERS = {\n default: '',\n icon: 'd-avatar__icon',\n initials: 'd-avatar__initials',\n};\n\nexport const AVATAR_PRESENCE_SIZE_MODIFIERS = {\n md: 'd-avatar__presence--md',\n lg: 'd-avatar__presence--lg',\n};\n\nexport const AVATAR_PRESENCE_STATES = {\n NONE: '',\n BUSY: 'busy',\n AWAY: 'away',\n OFFLINE: 'offline',\n ACTIVE: 'active',\n};\n\nexport const AVATAR_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '300',\n lg: '500',\n xl: '600',\n};\n\nexport const AVATAR_COLORS = [\n '000',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '1000',\n '1100',\n '1200',\n '1300',\n '1400',\n '1500',\n '1600',\n '1700',\n '1800',\n];\n\n// We do not use the color '000' (grey) in the randomized avatar colors, but it can still be set manually.\nexport const AVATAR_RANDOM_COLORS = AVATAR_COLORS.slice(1);\n\nexport const AVATAR_GROUP_VALIDATOR = (group) => group > 1;\n\nexport default {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_ICON_SIZES,\n AVATAR_COLORS,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n};\n","import iconNames from '@dialpad/dialtone-icons/icons.json' with { type: 'json' };\nimport illustrationNames from '@dialpad/dialtone-icons/illustrations.json' with { type: 'json' };\n\n/**\n * Will use a Vue SFC to render the template rather than a template string.\n * This is useful for more complex components that are hard to work with and\n * get messy when rendered via a template string. Will pass args and argTypes\n * into the component so it is able to be live edited with storybook controls addon.\n * @param {object} args storybook control args\n * @param {component} templateComponent vue component template for rendering to storybook.\n * Note this should not be the component itself,\n * but rather the usage of that component.\n * @returns {component} the template component with props and args added.\n */\nexport const createTemplateFromVueFile = (args, argTypes, templateComponent) => ({\n components: { templateComponent },\n setup () {\n return { args };\n },\n template: '<template-component v-bind=\"args\"></template-component>',\n});\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIconNames () {\n return [undefined, ...iconNames];\n}\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIllustrationNames () {\n return [undefined, ...illustrationNames];\n}\n\nexport const generateTemplate = (component,\n { props = [], excludeProps = [], customProps = [], childTemplate } = {}) => {\n if (!component) {\n console.warn('Generate template: Please provide a component');\n return '';\n }\n\n const { name, props: componentProps } = component;\n const finalProps = props.length ? props : Object.keys(componentProps);\n const normalizedName = name.split(/(?=[A-Z])/).join('-').toLowerCase();\n\n const startFragment = `<${normalizedName}`;\n\n const propFragments = finalProps\n .filter(prop => !excludeProps.includes(prop))\n .map(prop => `:${prop}=\"${prop}\"`);\n\n const endFragment = childTemplate ? `>${childTemplate}</${normalizedName}>` : ' />';\n\n return [startFragment, ...propFragments, ...customProps, endFragment].join(' ');\n};\n\nexport default {\n generateTemplate,\n createTemplateFromVueFile,\n getIllustrationNames,\n getIconNames,\n};\n","export const extractInitialsFromName = (fullName) => {\n if (typeof fullName !== 'string' || !fullName.trim()) return '';\n\n const names = fullName.trim().split(/\\s+/g);\n\n return names.length === 1\n ? names.join('').substring(0, 2)\n : names.filter((_, index) => (index === 0 || index === names.length - 1))\n .map(name => name.slice(0, 1).toUpperCase())\n .join('');\n};\n","<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_RANDOM_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["_openBlock","_createBlock","_resolveDynamicComponent","_createElementVNode","_normalizeClass","_createElementBlock","_toDisplayString","_mergeProps"],"mappings":";;;;;;;;;AAAY,MAAC,wBAAwB;AAAA,EACnC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEY,MAAC,wBAAwB;AAAA,EACnC,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AACZ;AAEY,MAAC,iCAAiC;AAAA,EAC5C,IAAI;AAAA,EACJ,IAAI;AACN;AAEY,MAAC,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,QAAQ;AACV;AAEY,MAAC,oBAAoB;AAAA,EAC/B,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN;AAEY,MAAC,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGY,MAAC,uBAAuB,cAAc,MAAM,CAAC;AAE7C,MAAC,yBAAyB,CAAC,UAAU,QAAQ;AClClD,SAAS,eAAgB;AAC9B,SAAO,CAAC,QAAW,GAAG,SAAS;AACjC;AC5BO,MAAM,0BAA0B,CAAC,aAAa;AACnD,MAAI,OAAO,aAAa,YAAY,CAAC,SAAS,KAAI;AAAI,WAAO;AAE7D,QAAM,QAAQ,SAAS,KAAM,EAAC,MAAM,MAAM;AAE1C,SAAO,MAAM,WAAW,IACpB,MAAM,KAAK,EAAE,EAAE,UAAU,GAAG,CAAC,IAC7B,MAAM,OAAO,CAAC,GAAG,UAAW,UAAU,KAAK,UAAU,MAAM,SAAS,CAAE,EACrE,IAAI,UAAQ,KAAK,MAAM,GAAG,CAAC,EAAE,aAAa,EAC1C,KAAK,EAAE;AACd;ACgFA,MAAM,aAAa,aAAY;AAM/B,MAAK,YAAU;AAAA,EACb,MAAM;AAAA,EACN,YAAY,EAAE,YAAY,OAAQ;AAAA,EAElC,cAAc;AAAA,EAEd,OAAO;AAAA;AAAA;AAAA;AAAA,IAIL,IAAI;AAAA,MACF,MAAM;AAAA,MACN,UAAW;AAAE,eAAO,gBAAe;AAAA,MAAK;AAAA,IACzC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,SAAS,OAAO,KAAK,qBAAqB,EAAE,SAAS,IAAI;AAAA,IACtE;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,WAAW;AAAA,MACT,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS,uBAAuB;AAAA,MAChC,WAAW,CAAC,UAAU;AACpB,eAAO,OAAO,OAAO,sBAAsB,EAAE,SAAS,KAAK;AAAA,MAC5D;AAAA,IACF;AAAA;AAAA;AAAA;AAAA,IAKD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS,OAAO,CAAA;AAAA,IACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,UAAU,uBAAuB,KAAK;AAAA,IACnD;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,aAAa;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,cAAc;AAAA,MACZ,MAAM,CAAC,QAAQ,OAAO,MAAM;AAAA,MAC5B,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,SAAS,WAAW,SAAS,IAAI;AAAA,IAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,SAAS,CAAC,QAAQ,OAAO,KAAK,mBAAmB,EAAE,SAAS,IAAI;AAAA,IAC7E;AAAA;AAAA;AAAA;AAAA,IAKD,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,eAAe;AAAA,MACb,MAAM;AAAA,MACN,SAAS;AAAA,IACV;AAAA,EACF;AAAA,EAED,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOL;AAAA,EACD;AAAA,EAED,OAAQ;AACN,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,yBAAyB;AAAA,MACzB,mBAAmB;AAAA,MACnB,cAAc;AAAA;EAEjB;AAAA,EAED,UAAU;AAAA,IACR,gBAAiB;AACf,aAAO,CAAC,KAAK;AAAA,IACd;AAAA,IAED,gBAAiB;AACf,aAAO;AAAA,QACL;AAAA,QACA,sBAAsB,KAAK,aAAa;AAAA,QACxC,KAAK;AAAA,QACL;AAAA,UACE,mBAAmB,KAAK;AAAA,UACxB,CAAC,mBAAmB,KAAK,SAAQ,CAAE,EAAE,GAAG,KAAK;AAAA,UAC7C,uBAAuB,KAAK;AAAA,QAC7B;AAAA;IAEJ;AAAA,IAED,iBAAkB;AAChB,aAAO;AAAA,QACL;AAAA,QACA,KAAK;AAAA;IAER;AAAA,IAED,YAAa;AACX,aAAO,uBAAuB,KAAK,KAAK;AAAA,IACzC;AAAA,IAED,iBAAkB;AAChB,aAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK;AAAA,IACvC;AAAA,IAED,gBAAiB;AAEf,aAAO,KAAK,QAAQ,OAAO,KAAK;AAAA,IACjC;AAAA,IAED,YAAa;AACX,aAAO,KAAK,4BAA4B,SAAS,KAAK;AAAA,IACvD;AAAA,EACF;AAAA,EAED,OAAO;AAAA,IACL,UAAU;AAAA,MACR,WAAW;AAAA,MACX,UAAW;AACT,aAAK,eAAc;AAAA,MACpB;AAAA,IACF;AAAA,IAED,MAAM;AAAA,MACJ,WAAW;AAAA,MACX,UAAW;AACT,aAAK,eAAc;AAAA,MACpB;AAAA,IACF;AAAA,IAED,OAAO;AAAA,MACL,WAAW;AAAA,MACX,UAAW;AACT,aAAK,eAAc;AAAA,MACpB;AAAA,IACF;AAAA,IAED,SAAU,QAAQ;AAChB,WAAK,0BAA0B;AAC/B,UAAI,CAAC;AAAQ;AAEb,WAAK,cAAa;AAClB,WAAK,kBAAiB;AAAA,IACvB;AAAA,EACF;AAAA,EAED,UAAW;AACT,SAAK,cAAa;AAClB,SAAK,kBAAiB;AAAA,EACvB;AAAA,EAED,SAAS;AAAA,IACP,MAAM,oBAAqB;AACzB,YAAM,KAAK;AACX,YAAM,KAAK,KAAK,MAAM;AACtB,UAAI,CAAC;AAAI;AAET,SAAG,iBAAiB,QAAQ,MAAM,KAAK,yBAAyB,EAAE,GAAG,EAAE,MAAM,KAAG,CAAG;AACnF,SAAG,iBAAiB,SAAS,MAAM,KAAK,0BAA0B,EAAE,GAAG,EAAE,MAAM,KAAG,CAAG;AAAA,IACtF;AAAA,IAED,iBAAkB;AAChB,YAAM,WAAW,wBAAwB,KAAK,QAAQ;AAEtD,UAAI,KAAK,kBAAkB,MAAM;AAC/B,aAAK,oBAAoB;AAAA,MAC3B,WAAW,KAAK,kBAAkB,MAAM;AACtC,aAAK,oBAAoB,SAAS,CAAC;AAAA,aAC9B;AACL,aAAK,oBAAoB;AAAA,MAC3B;AAAA,IACD;AAAA,IAED,WAAY;AACV,aAAO,KAAK,SAAS,iBAAiB,sBAAsB,KAAK,IAAI;AAAA,IACtE;AAAA,IAED,yBAA0B,IAAI;AAC5B,WAAK,0BAA0B;AAC/B,SAAG,UAAU,OAAO,UAAU;AAAA,IAC/B;AAAA,IAED,0BAA2B,IAAI;AAC7B,WAAK,0BAA0B;AAC/B,SAAG,UAAU,IAAI,UAAU;AAAA,IAC5B;AAAA,IAED,gBAAiB;AACf,UAAI,KAAK,YAAY,KAAK,aAAa,QAAW;AAChD,gBAAQ,MAAM,uHAAuH;AAAA,MACvI;AAAA,IACD;AAAA,IAED,YAAa,GAAG;AACd,UAAI,CAAC,KAAK;AAAW;AACrB,WAAK,MAAM,SAAS,CAAC;AAAA,IACtB;AAAA,EACF;AACH;;;;EA9XQ,OAAM;;;;EAOR,OAAM;AAAA,EACN,WAAQ;;;;;AAzDZ,SAAAA,UAAA,GAAAC,YAqEYC,wBApEL,OAAS,YAAA,WAAA,KAAA,GAAA;AAAA,IACb,IAAI,OAAE;AAAA,IACN,sBAAO,SAAa,aAAA;AAAA,IACrB,WAAQ;AAAA,IACP,SAAO,SAAW;AAAA;qBAEnB,MA8BM;AAAA,MA9BNC,mBA8BM,OAAA;AAAA,QA7BJ,KAAI;AAAA,QACH,OAAKC,eAAA;AAAA,UAAY,OAAW;AAAA;sCAAkE,MAAuB,wBAAA;AAAA;;QAO9G,SAAS,0BADjBC,mBAOC,OAAA;AAAA;UALC,KAAI;AAAA,UACJ,OAAM;AAAA,UACN,WAAQ;AAAA,UACP,KAAK,OAAQ;AAAA,UACb,KAAK,OAAQ;AAAA,mCAGH,OAAQ,yBADrBJ,YAOE,oBAAA;AAAA;UALC,MAAM,OAAQ;AAAA,UACd,cAAY,OAAa;AAAA,UACzB,MAAM,OAAA,YAAY,MAAA,kBAAkB,OAAI,IAAA;AAAA,UACxC,OAAQG,eAAA,CAAA,OAAA,WAAW,MAAA,sBAAsB,IAAI,CAAA;AAAA,UAC9C,WAAQ;AAAA,8EAEVC,mBAKO,QAAA;AAAA;UAHJ,OAAKD,eAAA,CAAG,MAAqB,sBAAC,QAAQ,CAAA;AAAA,2BAEpC,MAAiB,iBAAA,GAAA,CAAA;AAAA;MAIhB,OAAA,eAAe,OAAW,4BADlCC,mBAeM,OAAA;AAAA;QAbH,sBAAO,SAAc,cAAA;AAAA;QAGd,OAAW,4BADnBJ,YAIE,oBAAA;AAAA;UAFA,OAAM;AAAA,UACL,MAAM,OAAW;AAAA,iCAGP,OAAW,4BADxBI,mBAKI,KALJ,YAKIC,gBADC,OAAW,WAAA,GAAA,CAAA;;MAIV,SAAS,0BADjBD,mBAI4B,QAJ5B,YAI4BC,gBAAxB,SAAc,cAAA,GAAA,CAAA;MAEV,OAAA,aAAa,SAAS,aAD9BN,aAAAC,YASE,wBATFM,WASE;AAAA;QAPC,UAAU,OAAQ;AAAA,QAClB,OAAK;AAAA;UAA0C,MAAA,+BAA+B,OAAI,IAAA;AAAA;SAI3E,OAAa,eAAA,EACrB,WAAQ,cAAa,CAAA,GAAA,MAAA,IAAA,CAAA,YAAA,OAAA,CAAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"avatar.js","sources":["../../components/avatar/avatar_constants.js","../../common/storybook_utils.js","../../components/avatar/utils.js","../../components/avatar/avatar.vue"],"sourcesContent":["export const AVATAR_SIZE_MODIFIERS = {\n xs: 'd-avatar--xs',\n sm: 'd-avatar--sm',\n md: 'd-avatar--md',\n lg: 'd-avatar--lg',\n xl: 'd-avatar--xl',\n};\n\nexport const AVATAR_KIND_MODIFIERS = {\n default: '',\n icon: 'd-avatar__icon',\n initials: 'd-avatar__initials',\n};\n\nexport const AVATAR_PRESENCE_SIZE_MODIFIERS = {\n md: 'd-avatar__presence--md',\n lg: 'd-avatar__presence--lg',\n};\n\nexport const AVATAR_PRESENCE_STATES = {\n NONE: '',\n BUSY: 'busy',\n AWAY: 'away',\n OFFLINE: 'offline',\n ACTIVE: 'active',\n};\n\nexport const AVATAR_ICON_SIZES = {\n xs: '100',\n sm: '200',\n md: '300',\n lg: '500',\n xl: '600',\n};\n\nexport const AVATAR_COLORS = [\n '000',\n '100',\n '200',\n '300',\n '400',\n '500',\n '600',\n '700',\n '800',\n '900',\n '1000',\n '1100',\n '1200',\n '1300',\n '1400',\n '1500',\n '1600',\n '1700',\n '1800',\n];\n\n// We do not use the color '000' (grey) in the randomized avatar colors, but it can still be set manually.\nexport const AVATAR_RANDOM_COLORS = AVATAR_COLORS.slice(1);\n\nexport const AVATAR_GROUP_VALIDATOR = (group) => group > 1;\n\nexport default {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_ICON_SIZES,\n AVATAR_COLORS,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n};\n","const iconNames = require('@dialpad/dialtone-icons/icons.json');\nconst illustrationNames = require('@dialpad/dialtone-icons/illustrations.json');\n\n/**\n * Will use a Vue SFC to render the template rather than a template string.\n * This is useful for more complex components that are hard to work with and\n * get messy when rendered via a template string. Will pass args and argTypes\n * into the component so it is able to be live edited with storybook controls addon.\n * @param {object} args storybook control args\n * @param {component} templateComponent vue component template for rendering to storybook.\n * Note this should not be the component itself,\n * but rather the usage of that component.\n * @returns {component} the template component with props and args added.\n */\nexport const createTemplateFromVueFile = (args, argTypes, templateComponent) => ({\n components: { templateComponent },\n setup () {\n return { args };\n },\n template: '<template-component v-bind=\"args\"></template-component>',\n});\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIconNames () {\n return [undefined, ...iconNames];\n}\n\n/**\n * Gets the full list of icon component names from the dialtone package\n * @returns {string[]} icon component names\n */\nexport function getIllustrationNames () {\n return [undefined, ...illustrationNames];\n}\n\nexport const generateTemplate = (component,\n { props = [], excludeProps = [], customProps = [], childTemplate } = {}) => {\n if (!component) {\n console.warn('Generate template: Please provide a component');\n return '';\n }\n\n const { name, props: componentProps } = component;\n const finalProps = props.length ? props : Object.keys(componentProps);\n const normalizedName = name.split(/(?=[A-Z])/).join('-').toLowerCase();\n\n const startFragment = `<${normalizedName}`;\n\n const propFragments = finalProps\n .filter(prop => !excludeProps.includes(prop))\n .map(prop => `:${prop}=\"${prop}\"`);\n\n const endFragment = childTemplate ? `>${childTemplate}</${normalizedName}>` : ' />';\n\n return [startFragment, ...propFragments, ...customProps, endFragment].join(' ');\n};\n\nexport default {\n generateTemplate,\n createTemplateFromVueFile,\n getIllustrationNames,\n getIconNames,\n};\n","export const extractInitialsFromName = (fullName) => {\n if (typeof fullName !== 'string' || !fullName.trim()) return '';\n\n const names = fullName.trim().split(/\\s+/g);\n\n return names.length === 1\n ? names.join('').substring(0, 2)\n : names.filter((_, index) => (index === 0 || index === names.length - 1))\n .map(name => name.slice(0, 1).toUpperCase())\n .join('');\n};\n","<template>\n <component\n :is=\"clickable ? 'button' : 'div'\"\n :id=\"id\"\n :class=\"avatarClasses\"\n data-qa=\"dt-avatar\"\n @click=\"handleClick\"\n >\n <div\n ref=\"canvas\"\n :class=\"[\n canvasClass,\n 'd-avatar__canvas',\n { 'd-avatar--image-loaded': imageLoadedSuccessfully },\n ]\"\n >\n <img\n v-if=\"showImage\"\n ref=\"avatarImage\"\n class=\"d-avatar__image\"\n data-qa=\"dt-avatar-image\"\n :src=\"imageSrc\"\n :alt=\"imageAlt\"\n >\n <dt-icon\n v-else-if=\"iconName\"\n :name=\"iconName\"\n :aria-label=\"iconAriaLabel\"\n :size=\"iconSize || AVATAR_ICON_SIZES[size]\"\n :class=\"[iconClass, AVATAR_KIND_MODIFIERS.icon]\"\n data-qa=\"dt-avatar-icon\"\n />\n <span\n v-else\n :class=\"[AVATAR_KIND_MODIFIERS.initials]\"\n >\n {{ formattedInitials }}\n </span>\n </div>\n <div\n v-if=\"overlayIcon || overlayText\"\n :class=\"overlayClasses\"\n >\n <dt-icon\n v-if=\"overlayIcon\"\n class=\"d-avatar__overlay-icon\"\n :name=\"overlayIcon\"\n />\n <p\n v-else-if=\"overlayText\"\n class=\"d-avatar__overlay-text\"\n >\n {{ overlayText }}\n </p>\n </div>\n <span\n v-if=\"showGroup\"\n class=\"d-avatar__count\"\n data-qa=\"dt-avatar-count\"\n >{{ formattedGroup }}</span>\n <dt-presence\n v-if=\"presence && !showGroup\"\n :presence=\"presence\"\n :class=\"[\n 'd-avatar__presence',\n AVATAR_PRESENCE_SIZE_MODIFIERS[size],\n ]\"\n v-bind=\"presenceProps\"\n data-qa=\"dt-presence\"\n />\n </component>\n</template>\n\n<script>\nimport { getUniqueString, getRandomElement } from '@/common/utils';\nimport { DtPresence } from '../presence';\nimport { DtIcon } from '@/components/icon';\nimport {\n AVATAR_KIND_MODIFIERS,\n AVATAR_SIZE_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_PRESENCE_STATES,\n AVATAR_RANDOM_COLORS,\n AVATAR_GROUP_VALIDATOR,\n AVATAR_ICON_SIZES,\n} from './avatar_constants';\nimport { getIconNames } from '@/common/storybook_utils.js';\nimport { ICON_SIZE_MODIFIERS } from '@/components/icon/icon_constants.js';\nimport { extractInitialsFromName } from './utils';\n\nconst ICONS_LIST = getIconNames();\n\n/**\n * An avatar is a visual representation of a user or object.\n * @see https://dialtone.dialpad.com/components/avatar.html\n */\nexport default {\n name: 'DtAvatar',\n components: { DtPresence, DtIcon },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Id of the avatar content wrapper element\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Pass in a seed to get the random color generation based on that string. For example if you pass in a\n * user ID as the string it will return the same randomly generated colors every time for that user.\n */\n seed: {\n type: String,\n default: undefined,\n },\n\n /**\n * Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic\n * if the seed prop is set.\n */\n color: {\n type: String,\n default: undefined,\n },\n\n /**\n * The size of the avatar\n * @values xs, sm, md, lg, xl\n */\n size: {\n type: String,\n default: 'md',\n validator: (size) => Object.keys(AVATAR_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Used to customize the avatar container\n */\n avatarClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Set classes on the avatar canvas. Wrapper around the core avatar image.\n */\n canvasClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Pass through classes. Used to customize the avatar icon\n */\n iconClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Determines whether to show the presence indicator for\n * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',\n * or 'active'. By default, it's null and nothing is shown.\n * @values null, busy, away, offline, active\n */\n presence: {\n type: String,\n default: AVATAR_PRESENCE_STATES.NONE,\n validator: (state) => {\n return Object.values(AVATAR_PRESENCE_STATES).includes(state);\n },\n },\n\n /**\n * A set of props to be passed into the presence component.\n */\n presenceProps: {\n type: Object,\n default: () => ({}),\n },\n\n /**\n * Determines whether to show a group avatar.\n * Limit to 2 digits max, more than 99 will be rendered as “99+”.\n * if the number is 1 or less it would just show the regular avatar as if group had not been set.\n */\n group: {\n type: Number,\n default: undefined,\n validator: (group) => AVATAR_GROUP_VALIDATOR(group),\n },\n\n /**\n * The icon that overlays the avatar\n */\n overlayIcon: {\n type: String,\n default: '',\n },\n\n /**\n * The text that overlays the avatar\n */\n overlayText: {\n type: String,\n default: '',\n },\n\n /**\n * Used to customize the avatar overlay\n */\n overlayClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Source of the image\n */\n imageSrc: {\n type: String,\n default: '',\n },\n\n /**\n * Alt attribute of the image, required if imageSrc is provided.\n * Can be set to '' (empty string) if the image is described\n * in text nearby\n */\n imageAlt: {\n type: String,\n default: undefined,\n },\n\n /**\n * Icon name to be displayed on the avatar\n */\n iconName: {\n type: String,\n default: undefined,\n validator: (name) => ICONS_LIST.includes(name),\n },\n\n /**\n * Icon size to be displayed on the avatar\n * @values 100, 200, 300, 400, 500, 600, 700, 800\n */\n iconSize: {\n type: String,\n default: '',\n validator: (size) => !size || Object.keys(ICON_SIZE_MODIFIERS).includes(size),\n },\n\n /**\n * Full name used to extract initials.\n */\n fullName: {\n type: String,\n default: '',\n },\n\n /**\n * Makes the avatar focusable and clickable,\n * emits a click event when clicked.\n */\n clickable: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Descriptive label for the icon.\n * To avoid a11y issues, set this prop if clickable and iconName are set.\n */\n iconAriaLabel: {\n type: String,\n default: undefined,\n },\n },\n\n emits: [\n /**\n * Avatar click event\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n ],\n\n data () {\n return {\n AVATAR_SIZE_MODIFIERS,\n AVATAR_KIND_MODIFIERS,\n AVATAR_PRESENCE_SIZE_MODIFIERS,\n AVATAR_ICON_SIZES,\n imageLoadedSuccessfully: null,\n formattedInitials: '',\n initializing: false,\n };\n },\n\n computed: {\n isNotIconType () {\n return !this.iconName;\n },\n\n avatarClasses () {\n return [\n 'd-avatar',\n AVATAR_SIZE_MODIFIERS[this.validatedSize],\n this.avatarClass,\n {\n 'd-avatar--group': this.showGroup,\n [`d-avatar--color-${this.getColor()}`]: this.isNotIconType,\n 'd-avatar--clickable': this.clickable,\n },\n ];\n },\n\n overlayClasses () {\n return [\n 'd-avatar__overlay',\n this.overlayClass,\n ];\n },\n\n showGroup () {\n return AVATAR_GROUP_VALIDATOR(this.group);\n },\n\n formattedGroup () {\n return this.group > 99 ? '99+' : this.group;\n },\n\n validatedSize () {\n // TODO: Group only supports xs size for now. Remove this when we support other sizes.\n return this.group ? 'xs' : this.size;\n },\n\n showImage () {\n return this.imageLoadedSuccessfully !== false && this.imageSrc;\n },\n },\n\n watch: {\n fullName: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n size: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n group: {\n immediate: true,\n handler () {\n this.formatInitials();\n },\n },\n\n imageSrc (newSrc) {\n this.imageLoadedSuccessfully = null;\n if (!newSrc) return;\n\n this.validateProps();\n this.setImageListeners();\n },\n },\n\n mounted () {\n this.validateProps();\n this.setImageListeners();\n },\n\n methods: {\n async setImageListeners () {\n await this.$nextTick();\n const el = this.$refs.avatarImage;\n if (!el) return;\n\n el.addEventListener('load', () => this._loadedImageEventHandler(el), { once: true });\n el.addEventListener('error', () => this._erroredImageEventHandler(el), { once: true });\n },\n\n formatInitials () {\n const initials = extractInitialsFromName(this.fullName);\n\n if (this.validatedSize === 'xs') {\n this.formattedInitials = '';\n } else if (this.validatedSize === 'sm') {\n this.formattedInitials = initials[0];\n } else {\n this.formattedInitials = initials;\n }\n },\n\n getColor () {\n return this.color ?? getRandomElement(AVATAR_RANDOM_COLORS, this.seed);\n },\n\n _loadedImageEventHandler (el) {\n this.imageLoadedSuccessfully = true;\n el.classList.remove('d-d-none');\n },\n\n _erroredImageEventHandler (el) {\n this.imageLoadedSuccessfully = false;\n el.classList.add('d-d-none');\n },\n\n validateProps () {\n if (this.imageSrc && this.imageAlt === undefined) {\n console.error('image-alt required if image-src is provided. Can be set to \"\" (empty string) if the image is described in text nearby');\n }\n },\n\n handleClick (e) {\n if (!this.clickable) return;\n this.$emit('click', e);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n//TODO: Move these classes to dialtone and document.\n.d-avatar--image-loaded {\n background-color: transparent;\n background-image: unset;\n}\n\n.d-avatar__count {\n z-index: var(--zi-base);\n}\n\n.d-avatar__presence {\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay {\n background-color: var(--dt-color-surface-contrast-opaque);\n opacity: var(--dt-opacity-900);\n position: absolute;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dt-size-radius-circle);\n z-index: var(--zi-base);\n}\n\n.d-avatar__overlay-icon {\n color: var(--dt-color-foreground-primary-inverted);\n width: 100%;\n}\n\n.d-avatar__overlay-text {\n color: var(--dt-color-foreground-primary-inverted);\n font-weight: var(--dt-font-weight-bold);\n font-size: var(--dt-font-size-200);\n width: 100%;\n text-align: center;\n}\n\n.d-avatar--clickable {\n --avatar-color-border: transparent;\n\n cursor: pointer;\n padding: 0;\n background-color: transparent;\n\n border-radius: var(--dt-size-radius-circle);\n border: var(--dt-size-border-100) solid var(--avatar-color-border);\n\n &:focus-visible {\n outline: none;\n box-shadow: var(--dt-shadow-focus);\n }\n\n &:hover {\n --avatar-color-border: var(--dt-color-border-default);\n }\n\n &:active {\n --avatar-color-border: var(--dt-color-border-moderate);\n\n transform: scale(0.98);\n }\n}\n</style>\n"],"names":["AVATAR_SIZE_MODIFIERS","xs","sm","md","lg","xl","AVATAR_KIND_MODIFIERS","default","icon","initials","AVATAR_PRESENCE_SIZE_MODIFIERS","AVATAR_PRESENCE_STATES","NONE","BUSY","AWAY","OFFLINE","ACTIVE","AVATAR_ICON_SIZES","AVATAR_COLORS","AVATAR_RANDOM_COLORS","slice","AVATAR_GROUP_VALIDATOR","group","iconNames","vitePluginRequire_1723767262026_94991400","getIconNames","undefined","extractInitialsFromName","fullName","trim","names","split","length","join","substring","filter","_","index","map","name","toUpperCase","ICONS_LIST","_sfc_main","components","DtPresence","DtIcon","inheritAttrs","props","id","type","String","getUniqueString","seed","color","size","validator","Object","keys","includes","avatarClass","Array","canvasClass","iconClass","presence","state","values","presenceProps","Number","overlayIcon","overlayText","overlayClass","imageSrc","imageAlt","iconName","iconSize","ICON_SIZE_MODIFIERS","clickable","Boolean","iconAriaLabel","emits","data","imageLoadedSuccessfully","formattedInitials","initializing","computed","isNotIconType","avatarClasses","validatedSize","showGroup","getColor","overlayClasses","formattedGroup","showImage","watch","immediate","handler","formatInitials","newSrc","validateProps","setImageListeners","mounted","methods","$nextTick","el","$refs","avatarImage","addEventListener","_loadedImageEventHandler","once","_erroredImageEventHandler","getRandomElement","classList","remove","add","console","error","handleClick","e","$emit","class","_openBlock","_createBlock","_resolveDynamicComponent","$props","$options","onClick","_createElementVNode","ref","_normalizeClass","$data","_createElementBlock","src","alt","_component_dt_icon","_hoisted_2","_toDisplayString","_hoisted_3","_component_dt_presence","_mergeProps"],"mappings":"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"}
|
package/dist/vue3/lib/badge.cjs
CHANGED
|
@@ -4,7 +4,7 @@ const vue = require("vue");
|
|
|
4
4
|
const _pluginVue_exportHelper = require("../chunks/_plugin-vue_export-helper-fhnQq0tA.js");
|
|
5
5
|
const lib_icon = require("./icon.cjs");
|
|
6
6
|
require("@dialpad/dialtone-icons/vue3");
|
|
7
|
-
require("../chunks/icon_constants-
|
|
7
|
+
require("../chunks/icon_constants-bvhFNOPu.js");
|
|
8
8
|
require("@dialpad/dialtone-icons/icons.json");
|
|
9
9
|
const BADGE_TYPE_MODIFIERS = {
|
|
10
10
|
default: "",
|
|
@@ -187,37 +187,21 @@ const _hoisted_3 = {
|
|
|
187
187
|
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
188
188
|
const _component_dt_icon = vue.resolveComponent("dt-icon");
|
|
189
189
|
return vue.openBlock(), vue.createElementBlock("span", {
|
|
190
|
-
class: vue.normalizeClass([
|
|
191
|
-
"d-badge"
|
|
192
|
-
|
|
193
|
-
$
|
|
194
|
-
|
|
195
|
-
{ "d-badge--subtle": $props.subtle },
|
|
196
|
-
{ "d-badge--outlined": $props.outlined }
|
|
197
|
-
]),
|
|
190
|
+
class: vue.normalizeClass(["d-badge", $data.BADGE_TYPE_MODIFIERS[$props.type], $data.BADGE_KIND_MODIFIERS[$props.kind], $data.BADGE_DECORATION_MODIFIERS[$props.decoration], {
|
|
191
|
+
"d-badge--subtle": $props.subtle
|
|
192
|
+
}, {
|
|
193
|
+
"d-badge--outlined": $props.outlined
|
|
194
|
+
}]),
|
|
198
195
|
"data-qa": "dt-badge"
|
|
199
|
-
}, [
|
|
200
|
-
$props.
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
class: vue.normalizeClass(["d-badge__label", $props.labelClass])
|
|
209
|
-
}, [
|
|
210
|
-
vue.renderSlot(_ctx.$slots, "default", {}, () => [
|
|
211
|
-
vue.createTextVNode(vue.toDisplayString($props.text), 1)
|
|
212
|
-
])
|
|
213
|
-
], 2),
|
|
214
|
-
$props.iconRight ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, [
|
|
215
|
-
vue.createVNode(_component_dt_icon, {
|
|
216
|
-
name: $props.iconRight,
|
|
217
|
-
size: "200"
|
|
218
|
-
}, null, 8, ["name"])
|
|
219
|
-
])) : vue.createCommentVNode("", true)
|
|
220
|
-
], 2);
|
|
196
|
+
}, [$props.decoration ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1)) : vue.createCommentVNode("", true), $props.iconLeft || $props.type === "ai" ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, [vue.createVNode(_component_dt_icon, {
|
|
197
|
+
name: $props.iconLeft || "dialpad-ai",
|
|
198
|
+
size: "200"
|
|
199
|
+
}, null, 8, ["name"])])) : vue.createCommentVNode("", true), vue.createElementVNode("span", {
|
|
200
|
+
class: vue.normalizeClass(["d-badge__label", $props.labelClass])
|
|
201
|
+
}, [vue.renderSlot(_ctx.$slots, "default", {}, () => [vue.createTextVNode(vue.toDisplayString($props.text), 1)])], 2), $props.iconRight ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, [vue.createVNode(_component_dt_icon, {
|
|
202
|
+
name: $props.iconRight,
|
|
203
|
+
size: "200"
|
|
204
|
+
}, null, 8, ["name"])])) : vue.createCommentVNode("", true)], 2);
|
|
221
205
|
}
|
|
222
206
|
const DtBadge = /* @__PURE__ */ _pluginVue_exportHelper._export_sfc(_sfc_main, [["render", _sfc_render]]);
|
|
223
207
|
exports.BADGE_DECORATION_MODIFIERS = BADGE_DECORATION_MODIFIERS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.cjs","sources":["../../components/badge/badge_constants.js","../../components/badge/badge.vue"],"sourcesContent":["export const BADGE_TYPE_MODIFIERS = {\n default: '',\n info: 'd-badge--info',\n success: 'd-badge--success',\n warning: 'd-badge--warning',\n critical: 'd-badge--critical',\n bulletin: 'd-badge--bulletin',\n ai: 'd-badge--ai',\n};\n\nexport const BADGE_KIND_MODIFIERS = {\n label: '',\n count: 'd-badge--count',\n};\n\nexport const BADGE_DECORATION_MODIFIERS = {\n 'black-400': 'd-badge--decorate-black-400',\n 'black-500': 'd-badge--decorate-black-500',\n 'black-900': 'd-badge--decorate-black-900',\n 'red-200': 'd-badge--decorate-red-200',\n 'red-300': 'd-badge--decorate-red-300',\n 'red-400': 'd-badge--decorate-red-400',\n 'purple-200': 'd-badge--decorate-purple-200',\n 'purple-300': 'd-badge--decorate-purple-300',\n 'purple-400': 'd-badge--decorate-purple-400',\n 'purple-500': 'd-badge--decorate-purple-500',\n 'blue-200': 'd-badge--decorate-blue-200',\n 'blue-300': 'd-badge--decorate-blue-300',\n 'blue-400': 'd-badge--decorate-blue-400',\n 'green-300': 'd-badge--decorate-green-300',\n 'green-400': 'd-badge--decorate-green-400',\n 'green-500': 'd-badge--decorate-green-500',\n 'gold-300': 'd-badge--decorate-gold-300',\n 'gold-400': 'd-badge--decorate-gold-400',\n 'gold-500': 'd-badge--decorate-gold-500',\n 'magenta-200': 'd-badge--decorate-magenta-200',\n 'magenta-300': 'd-badge--decorate-magenta-300',\n 'magenta-400': 'd-badge--decorate-magenta-400',\n};\n","<template>\n <span\n :class=\"[\n 'd-badge',\n BADGE_TYPE_MODIFIERS[type],\n BADGE_KIND_MODIFIERS[kind],\n BADGE_DECORATION_MODIFIERS[decoration],\n { 'd-badge--subtle': subtle },\n { 'd-badge--outlined': outlined },\n ]\"\n data-qa=\"dt-badge\"\n >\n <span\n v-if=\"decoration\"\n class=\"d-badge__decorative\"\n />\n <span\n v-if=\"iconLeft || type === 'ai'\"\n class=\"d-badge__icon-left\"\n >\n <dt-icon\n :name=\"iconLeft || 'dialpad-ai'\"\n size=\"200\"\n />\n </span>\n <span :class=\"['d-badge__label', labelClass]\">\n <!-- @slot Slot for badge content, defaults to text prop -->\n <slot>\n {{ text }}\n </slot>\n </span>\n <span\n v-if=\"iconRight\"\n class=\"d-badge__icon-right\"\n >\n <dt-icon\n :name=\"iconRight\"\n size=\"200\"\n />\n </span>\n </span>\n</template>\n\n<script>\nimport { BADGE_TYPE_MODIFIERS, BADGE_KIND_MODIFIERS, BADGE_DECORATION_MODIFIERS } from './badge_constants';\nimport { DtIcon } from '@/components/icon';\n\n/**\n * A badge is a compact UI element that provides brief, descriptive information about an element.\n * It is terse, ideally one word.\n * @see https://dialtone.dialpad.com/components/badge.html\n */\nexport default {\n name: 'DtBadge',\n\n components: {\n DtIcon,\n },\n\n props: {\n /**\n * Icon on the left side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog. If type:'ai' is set, the ai icon\n * will automatically be shown here, but this can be overridden by setting this prop.\n */\n iconLeft: {\n type: String,\n default: '',\n },\n\n /**\n * Icon on the right side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog\n */\n iconRight: {\n type: String,\n default: '',\n },\n\n /**\n * Text for the badge content\n */\n text: {\n type: String,\n default: '',\n },\n\n /**\n * The kind of badge which determines the styling\n * @values label, count\n */\n kind: {\n type: String,\n default: 'label',\n validator: (kind) => Object.keys(BADGE_KIND_MODIFIERS).includes(kind),\n },\n\n /**\n * Color for the badge background\n * @values default, info, success, warning, critical, bulletin, ai\n */\n type: {\n type: String,\n default: 'default',\n validator: (type) => Object.keys(BADGE_TYPE_MODIFIERS).includes(type),\n },\n\n /**\n * Decoration for the badge. This can be only used with kind: label and type: default\n * with no iconLeft and iconRight\n * @values default, black-400, black-500, black-900, red-200, red-300, red-400, purple-200,\n * purple-300, purple-400, purple-500, blue-200, blue-300, blue-400, green-300, green-400,\n * green-500, gold-300, gold-400, gold-500, magenta-200, magenta-300, magenta-400\n */\n decoration: {\n type: String,\n default: undefined,\n validator: (type) => Object.keys(BADGE_DECORATION_MODIFIERS).includes(type),\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Shows a subtle appearance for the badge\n * Currently only affects the badge when type is bulletin.\n */\n subtle: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Outlines the badge with a border\n */\n outlined: {\n type: Boolean,\n default: false,\n },\n },\n\n data () {\n return {\n BADGE_TYPE_MODIFIERS,\n BADGE_KIND_MODIFIERS,\n BADGE_DECORATION_MODIFIERS,\n };\n },\n\n computed: {\n hasIcons () {\n return this.iconLeft !== '' || this.iconRight !== '';\n },\n },\n\n watch: {\n $props: {\n immediate: true,\n deep: true,\n handler () {\n this.validateProps();\n },\n },\n },\n\n methods: {\n validateProps () {\n this.validateTypePropCombination();\n this.validateDecorationPropCombination();\n },\n\n validateTypePropCombination () {\n if (this.type === 'ai' && this.kind === 'count') {\n console.error('DtBadge error: type: \\'ai\\' with kind: \\'count\\' is an invalid combination.');\n }\n if (this.type !== 'bulletin' && this.subtle) {\n console.error('DtBadge error: subtle can only be used with type \\'bulletin\\'');\n }\n },\n\n validateDecorationPropCombination () {\n if (!this.decoration) return;\n\n if (this.kind !== 'label' || this.type !== 'default') {\n console.error('DtBadge error: decoration prop can only be used with kind: \\'label\\' and type: \\'default\\'.');\n }\n\n if (this.hasIcons) {\n console.error('DtBadge error: decoration prop cannot be used with iconLeft or iconRight.');\n }\n },\n },\n};\n</script>\n"],"names":["DtIcon","_createElementBlock","_normalizeClass","_openBlock","_createVNode","_createElementVNode","_renderSlot"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"badge.cjs","sources":["../../components/badge/badge_constants.js","../../components/badge/badge.vue"],"sourcesContent":["export const BADGE_TYPE_MODIFIERS = {\n default: '',\n info: 'd-badge--info',\n success: 'd-badge--success',\n warning: 'd-badge--warning',\n critical: 'd-badge--critical',\n bulletin: 'd-badge--bulletin',\n ai: 'd-badge--ai',\n};\n\nexport const BADGE_KIND_MODIFIERS = {\n label: '',\n count: 'd-badge--count',\n};\n\nexport const BADGE_DECORATION_MODIFIERS = {\n 'black-400': 'd-badge--decorate-black-400',\n 'black-500': 'd-badge--decorate-black-500',\n 'black-900': 'd-badge--decorate-black-900',\n 'red-200': 'd-badge--decorate-red-200',\n 'red-300': 'd-badge--decorate-red-300',\n 'red-400': 'd-badge--decorate-red-400',\n 'purple-200': 'd-badge--decorate-purple-200',\n 'purple-300': 'd-badge--decorate-purple-300',\n 'purple-400': 'd-badge--decorate-purple-400',\n 'purple-500': 'd-badge--decorate-purple-500',\n 'blue-200': 'd-badge--decorate-blue-200',\n 'blue-300': 'd-badge--decorate-blue-300',\n 'blue-400': 'd-badge--decorate-blue-400',\n 'green-300': 'd-badge--decorate-green-300',\n 'green-400': 'd-badge--decorate-green-400',\n 'green-500': 'd-badge--decorate-green-500',\n 'gold-300': 'd-badge--decorate-gold-300',\n 'gold-400': 'd-badge--decorate-gold-400',\n 'gold-500': 'd-badge--decorate-gold-500',\n 'magenta-200': 'd-badge--decorate-magenta-200',\n 'magenta-300': 'd-badge--decorate-magenta-300',\n 'magenta-400': 'd-badge--decorate-magenta-400',\n};\n","<template>\n <span\n :class=\"[\n 'd-badge',\n BADGE_TYPE_MODIFIERS[type],\n BADGE_KIND_MODIFIERS[kind],\n BADGE_DECORATION_MODIFIERS[decoration],\n { 'd-badge--subtle': subtle },\n { 'd-badge--outlined': outlined },\n ]\"\n data-qa=\"dt-badge\"\n >\n <span\n v-if=\"decoration\"\n class=\"d-badge__decorative\"\n />\n <span\n v-if=\"iconLeft || type === 'ai'\"\n class=\"d-badge__icon-left\"\n >\n <dt-icon\n :name=\"iconLeft || 'dialpad-ai'\"\n size=\"200\"\n />\n </span>\n <span :class=\"['d-badge__label', labelClass]\">\n <!-- @slot Slot for badge content, defaults to text prop -->\n <slot>\n {{ text }}\n </slot>\n </span>\n <span\n v-if=\"iconRight\"\n class=\"d-badge__icon-right\"\n >\n <dt-icon\n :name=\"iconRight\"\n size=\"200\"\n />\n </span>\n </span>\n</template>\n\n<script>\nimport { BADGE_TYPE_MODIFIERS, BADGE_KIND_MODIFIERS, BADGE_DECORATION_MODIFIERS } from './badge_constants';\nimport { DtIcon } from '@/components/icon';\n\n/**\n * A badge is a compact UI element that provides brief, descriptive information about an element.\n * It is terse, ideally one word.\n * @see https://dialtone.dialpad.com/components/badge.html\n */\nexport default {\n name: 'DtBadge',\n\n components: {\n DtIcon,\n },\n\n props: {\n /**\n * Icon on the left side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog. If type:'ai' is set, the ai icon\n * will automatically be shown here, but this can be overridden by setting this prop.\n */\n iconLeft: {\n type: String,\n default: '',\n },\n\n /**\n * Icon on the right side of the badge. Supports any valid icon name from the icon catalog at\n * https://dialtone.dialpad.com/components/icon.html#icon-catalog\n */\n iconRight: {\n type: String,\n default: '',\n },\n\n /**\n * Text for the badge content\n */\n text: {\n type: String,\n default: '',\n },\n\n /**\n * The kind of badge which determines the styling\n * @values label, count\n */\n kind: {\n type: String,\n default: 'label',\n validator: (kind) => Object.keys(BADGE_KIND_MODIFIERS).includes(kind),\n },\n\n /**\n * Color for the badge background\n * @values default, info, success, warning, critical, bulletin, ai\n */\n type: {\n type: String,\n default: 'default',\n validator: (type) => Object.keys(BADGE_TYPE_MODIFIERS).includes(type),\n },\n\n /**\n * Decoration for the badge. This can be only used with kind: label and type: default\n * with no iconLeft and iconRight\n * @values default, black-400, black-500, black-900, red-200, red-300, red-400, purple-200,\n * purple-300, purple-400, purple-500, blue-200, blue-300, blue-400, green-300, green-400,\n * green-500, gold-300, gold-400, gold-500, magenta-200, magenta-300, magenta-400\n */\n decoration: {\n type: String,\n default: undefined,\n validator: (type) => Object.keys(BADGE_DECORATION_MODIFIERS).includes(type),\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Shows a subtle appearance for the badge\n * Currently only affects the badge when type is bulletin.\n */\n subtle: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Outlines the badge with a border\n */\n outlined: {\n type: Boolean,\n default: false,\n },\n },\n\n data () {\n return {\n BADGE_TYPE_MODIFIERS,\n BADGE_KIND_MODIFIERS,\n BADGE_DECORATION_MODIFIERS,\n };\n },\n\n computed: {\n hasIcons () {\n return this.iconLeft !== '' || this.iconRight !== '';\n },\n },\n\n watch: {\n $props: {\n immediate: true,\n deep: true,\n handler () {\n this.validateProps();\n },\n },\n },\n\n methods: {\n validateProps () {\n this.validateTypePropCombination();\n this.validateDecorationPropCombination();\n },\n\n validateTypePropCombination () {\n if (this.type === 'ai' && this.kind === 'count') {\n console.error('DtBadge error: type: \\'ai\\' with kind: \\'count\\' is an invalid combination.');\n }\n if (this.type !== 'bulletin' && this.subtle) {\n console.error('DtBadge error: subtle can only be used with type \\'bulletin\\'');\n }\n },\n\n validateDecorationPropCombination () {\n if (!this.decoration) return;\n\n if (this.kind !== 'label' || this.type !== 'default') {\n console.error('DtBadge error: decoration prop can only be used with kind: \\'label\\' and type: \\'default\\'.');\n }\n\n if (this.hasIcons) {\n console.error('DtBadge error: decoration prop cannot be used with iconLeft or iconRight.');\n }\n },\n },\n};\n</script>\n"],"names":["BADGE_TYPE_MODIFIERS","default","info","success","warning","critical","bulletin","ai","BADGE_KIND_MODIFIERS","label","count","BADGE_DECORATION_MODIFIERS","_sfc_main","name","components","DtIcon","props","iconLeft","type","String","iconRight","text","kind","validator","Object","keys","includes","decoration","undefined","labelClass","Array","subtle","Boolean","outlined","data","computed","hasIcons","watch","$props","immediate","deep","handler","validateProps","methods","validateTypePropCombination","validateDecorationPropCombination","console","error","class","_createElementBlock","_normalizeClass","$data","_openBlock","_hoisted_1","_hoisted_2","_createVNode","_component_dt_icon","size","_createElementVNode","_renderSlot","_ctx","_hoisted_3"],"mappings":"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"}
|