@dialpad/dialtone-vue 2.125.0 → 2.125.1
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/_plugin-vue2_normalizer-u6G_3nkj.js +33 -0
- package/dist/chunks/_plugin-vue2_normalizer-u6G_3nkj.js.map +1 -0
- package/dist/chunks/dropdown-SMWaTWyF.js +357 -0
- package/dist/chunks/dropdown-SMWaTWyF.js.map +1 -0
- package/dist/chunks/dropdown_constants-EUcDxBrX.js +9 -0
- package/dist/chunks/dropdown_constants-EUcDxBrX.js.map +1 -0
- package/dist/chunks/icon_constants-OpYAAKwF.js +16 -0
- package/dist/chunks/icon_constants-OpYAAKwF.js.map +1 -0
- package/dist/chunks/index-nIyl_PL6.js +372 -0
- package/dist/chunks/index-nIyl_PL6.js.map +1 -0
- package/dist/chunks/index-o4OMWMuv.js +244 -0
- package/dist/chunks/index-o4OMWMuv.js.map +1 -0
- package/dist/chunks/input-1tm09l_-.js +273 -0
- package/dist/chunks/input-1tm09l_-.js.map +1 -0
- package/dist/chunks/input_group-zcAq3DQl.js +141 -0
- package/dist/chunks/input_group-zcAq3DQl.js.map +1 -0
- package/dist/chunks/keyboard_list_navigation-F0O8nht0.js +197 -0
- package/dist/chunks/keyboard_list_navigation-F0O8nht0.js.map +1 -0
- package/dist/chunks/link_constants-vIUB92L4.js +16 -0
- package/dist/chunks/link_constants-vIUB92L4.js.map +1 -0
- package/dist/chunks/list_item_constants-LTUc74pD.js +13 -0
- package/dist/chunks/list_item_constants-LTUc74pD.js.map +1 -0
- package/dist/chunks/modal-VuMFkZFH.js +82 -0
- package/dist/chunks/modal-VuMFkZFH.js.map +1 -0
- package/dist/chunks/notice_action-9NmtQRai.js +182 -0
- package/dist/chunks/notice_action-9NmtQRai.js.map +1 -0
- package/dist/chunks/notice_constants-c--hBFQw.js +6 -0
- package/dist/chunks/notice_constants-c--hBFQw.js.map +1 -0
- package/dist/chunks/popover_constants-qjlEkroB.js +114 -0
- package/dist/chunks/popover_constants-qjlEkroB.js.map +1 -0
- package/dist/chunks/sr_only_close_button-JGole5Xi.js +86 -0
- package/dist/chunks/sr_only_close_button-JGole5Xi.js.map +1 -0
- package/dist/chunks/stack_constants-u7tNqGtc.js +13 -0
- package/dist/chunks/stack_constants-u7tNqGtc.js.map +1 -0
- package/dist/chunks/tab-Qm9LVkYj.js +346 -0
- package/dist/chunks/tab-Qm9LVkYj.js.map +1 -0
- package/dist/component-documentation.json +1 -1
- package/dist/dialtone-vue.js +354 -10368
- package/dist/dialtone-vue.js.map +1 -1
- package/dist/lib/attachment-carousel.js +250 -0
- package/dist/lib/attachment-carousel.js.map +1 -0
- package/dist/lib/avatar.js +369 -0
- package/dist/lib/avatar.js.map +1 -0
- package/dist/lib/badge.js +169 -0
- package/dist/lib/badge.js.map +1 -0
- package/dist/lib/banner.js +200 -0
- package/dist/lib/banner.js.map +1 -0
- package/dist/lib/breadcrumbs.js +138 -0
- package/dist/lib/breadcrumbs.js.map +1 -0
- package/dist/lib/button-group.js +45 -0
- package/dist/lib/button-group.js.map +1 -0
- package/dist/lib/button.js +328 -0
- package/dist/lib/button.js.map +1 -0
- package/dist/lib/callbar-button-with-popover.js +235 -0
- package/dist/lib/callbar-button-with-popover.js.map +1 -0
- package/dist/lib/callbar-button.js +175 -0
- package/dist/lib/callbar-button.js.map +1 -0
- package/dist/lib/callbox.js +142 -0
- package/dist/lib/callbox.js.map +1 -0
- package/dist/lib/card.js +72 -0
- package/dist/lib/card.js.map +1 -0
- package/dist/lib/checkbox-group.js +117 -0
- package/dist/lib/checkbox-group.js.map +1 -0
- package/dist/lib/checkbox.js +117 -0
- package/dist/lib/checkbox.js.map +1 -0
- package/dist/lib/chip.js +186 -0
- package/dist/lib/chip.js.map +1 -0
- package/dist/lib/codeblock.js +29 -0
- package/dist/lib/codeblock.js.map +1 -0
- package/dist/lib/collapsible.js +313 -0
- package/dist/lib/collapsible.js.map +1 -0
- package/dist/lib/combobox-multi-select.js +433 -0
- package/dist/lib/combobox-multi-select.js.map +1 -0
- package/dist/lib/combobox-with-popover.js +341 -0
- package/dist/lib/combobox-with-popover.js.map +1 -0
- package/dist/lib/combobox.js +19 -0
- package/dist/lib/combobox.js.map +1 -0
- package/dist/lib/constants.js +53 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/contact-info.js +145 -0
- package/dist/lib/contact-info.js.map +1 -0
- package/dist/lib/contact-row.js +203 -0
- package/dist/lib/contact-row.js.map +1 -0
- package/dist/lib/datepicker.js +552 -0
- package/dist/lib/datepicker.js.map +1 -0
- package/dist/lib/dates.js +57 -0
- package/dist/lib/dates.js.map +1 -0
- package/dist/lib/description-list.js +83 -0
- package/dist/lib/description-list.js.map +1 -0
- package/dist/lib/dropdown.js +45 -0
- package/dist/lib/dropdown.js.map +1 -0
- package/dist/lib/editor.js +527 -0
- package/dist/lib/editor.js.map +1 -0
- package/dist/{emoji_picker-kiTOKaq8.js → lib/emoji-picker.js} +30 -12
- package/dist/lib/emoji-picker.js.map +1 -0
- package/dist/lib/emoji-row.js +83 -0
- package/dist/lib/emoji-row.js.map +1 -0
- package/dist/{emoji_text_wrapper-48ClwKvf.js → lib/emoji-text-wrapper.js} +19 -14
- package/dist/lib/emoji-text-wrapper.js.map +1 -0
- package/dist/lib/emoji.js +11 -0
- package/dist/{emoji.js.map → lib/emoji.js.map} +1 -1
- package/dist/lib/feed-item-row.js +207 -0
- package/dist/lib/feed-item-row.js.map +1 -0
- package/dist/lib/feed-pill.js +142 -0
- package/dist/lib/feed-pill.js.map +1 -0
- package/dist/lib/general-row.js +379 -0
- package/dist/lib/general-row.js.map +1 -0
- package/dist/lib/group-row.js +115 -0
- package/dist/lib/group-row.js.map +1 -0
- package/dist/lib/grouped-chip.js +45 -0
- package/dist/lib/grouped-chip.js.map +1 -0
- package/dist/lib/hovercard.js +194 -0
- package/dist/lib/hovercard.js.map +1 -0
- package/dist/lib/icon.js +82 -0
- package/dist/lib/icon.js.map +1 -0
- package/dist/lib/image-viewer.js +171 -0
- package/dist/lib/image-viewer.js.map +1 -0
- package/dist/lib/input-group.js +90 -0
- package/dist/lib/input-group.js.map +1 -0
- package/dist/lib/input.js +455 -0
- package/dist/lib/input.js.map +1 -0
- package/dist/lib/item-layout.js +39 -0
- package/dist/lib/item-layout.js.map +1 -0
- package/dist/lib/ivr-node.js +195 -0
- package/dist/lib/ivr-node.js.map +1 -0
- package/dist/lib/keyboard-shortcut.js +100 -0
- package/dist/lib/keyboard-shortcut.js.map +1 -0
- package/dist/lib/lazy-show.js +77 -0
- package/dist/lib/lazy-show.js.map +1 -0
- package/dist/lib/link.js +69 -0
- package/dist/lib/link.js.map +1 -0
- package/dist/lib/list-item-group.js +59 -0
- package/dist/lib/list-item-group.js.map +1 -0
- package/dist/lib/list-item.js +195 -0
- package/dist/lib/list-item.js.map +1 -0
- package/dist/{message_input.js → lib/message-input.js} +107 -56
- package/dist/lib/message-input.js.map +1 -0
- package/dist/lib/mixins.js +17 -0
- package/dist/lib/mixins.js.map +1 -0
- package/dist/lib/modal.js +324 -0
- package/dist/lib/modal.js.map +1 -0
- package/dist/lib/notice.js +158 -0
- package/dist/lib/notice.js.map +1 -0
- package/dist/lib/pagination.js +142 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/popover.js +779 -0
- package/dist/lib/popover.js.map +1 -0
- package/dist/lib/presence.js +60 -0
- package/dist/lib/presence.js.map +1 -0
- package/dist/lib/radio-group.js +97 -0
- package/dist/lib/radio-group.js.map +1 -0
- package/dist/lib/radio.js +111 -0
- package/dist/lib/radio.js.map +1 -0
- package/dist/lib/rich-text-editor.js +920 -0
- package/dist/lib/rich-text-editor.js.map +1 -0
- package/dist/lib/root-layout.js +127 -0
- package/dist/lib/root-layout.js.map +1 -0
- package/dist/lib/select-menu.js +243 -0
- package/dist/lib/select-menu.js.map +1 -0
- package/dist/lib/settings-menu-button.js +65 -0
- package/dist/lib/settings-menu-button.js.map +1 -0
- package/dist/lib/skeleton.js +574 -0
- package/dist/lib/skeleton.js.map +1 -0
- package/dist/lib/stack.js +118 -0
- package/dist/lib/stack.js.map +1 -0
- package/dist/lib/tabs.js +93 -0
- package/dist/lib/tabs.js.map +1 -0
- package/dist/lib/time-pill.js +43 -0
- package/dist/lib/time-pill.js.map +1 -0
- package/dist/lib/toast.js +226 -0
- package/dist/lib/toast.js.map +1 -0
- package/dist/lib/toggle.js +169 -0
- package/dist/lib/toggle.js.map +1 -0
- package/dist/{directives.js → lib/tooltip-directive.js} +24 -18
- package/dist/lib/tooltip-directive.js.map +1 -0
- package/dist/lib/tooltip.js +376 -0
- package/dist/lib/tooltip.js.map +1 -0
- package/dist/lib/top-banner-info.js +60 -0
- package/dist/lib/top-banner-info.js.map +1 -0
- package/dist/lib/unread-pill.js +61 -0
- package/dist/lib/unread-pill.js.map +1 -0
- package/dist/lib/utils.js +175 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/validation-messages.js +83 -0
- package/dist/lib/validation-messages.js.map +1 -0
- package/dist/lib/validators.js +12 -0
- package/dist/lib/validators.js.map +1 -0
- package/dist/style.css +1 -1
- package/dist/types/common/{constants.d.ts → constants/index.d.ts} +1 -1
- package/dist/types/common/constants/index.d.ts.map +1 -0
- package/dist/types/common/{dates.d.ts → dates/index.d.ts} +1 -1
- package/dist/types/common/dates/index.d.ts.map +1 -0
- package/dist/types/common/{emoji.d.ts → emoji/index.d.ts} +1 -1
- package/dist/types/common/{emoji.d.ts.map → emoji/index.d.ts.map} +1 -1
- package/dist/types/common/{utils.d.ts → utils/index.d.ts} +1 -1
- package/dist/types/common/utils/index.d.ts.map +1 -0
- package/dist/types/common/{validators.d.ts → validators/index.d.ts} +1 -1
- package/dist/types/common/validators/index.d.ts.map +1 -0
- package/dist/types/components/avatar/avatar.vue.d.ts +1 -1
- package/dist/types/components/button/button.vue.d.ts +2 -2
- package/dist/types/components/card/card.vue.d.ts +1 -1
- package/dist/types/components/checkbox/checkbox.vue.d.ts +7 -7
- package/dist/types/components/checkbox/checkbox.vue.d.ts.map +1 -1
- package/dist/types/components/chip/chip.vue.d.ts +2 -2
- package/dist/types/components/collapsible/collapsible.vue.d.ts +3 -3
- package/dist/types/components/combobox/combobox.vue.d.ts +7 -8
- package/dist/types/components/combobox/combobox.vue.d.ts.map +1 -1
- package/dist/types/components/dropdown/dropdown.vue.d.ts +1 -1
- package/dist/types/components/emoji/emoji.vue.d.ts +1 -1
- package/dist/types/components/emoji_picker/modules/emoji_selector.vue.d.ts +1 -219
- package/dist/types/components/icon/icon.vue.d.ts +20 -16
- package/dist/types/components/icon/icon.vue.d.ts.map +1 -1
- package/dist/types/components/icon/icon_constants.d.ts +2 -0
- package/dist/types/components/icon/icon_constants.d.ts.map +1 -1
- package/dist/types/components/icon/index.d.ts +1 -1
- package/dist/types/components/input_group/input_group.vue.d.ts +15 -6
- package/dist/types/components/input_group/input_group.vue.d.ts.map +1 -1
- package/dist/types/components/list_item_group/list_item_group.vue.d.ts +1 -1
- package/dist/types/components/modal/modal.vue.d.ts +7 -2
- package/dist/types/components/modal/modal.vue.d.ts.map +1 -1
- package/dist/types/components/notice/notice_action.vue.d.ts +3 -1
- package/dist/types/components/notice/notice_action.vue.d.ts.map +1 -1
- package/dist/types/components/popover/popover_header_footer.vue.d.ts +1 -1
- package/dist/types/components/radio/radio.vue.d.ts +2 -12
- package/dist/types/components/radio/radio.vue.d.ts.map +1 -1
- package/dist/types/components/skeleton/skeleton-list-item.vue.d.ts +1 -1
- package/dist/types/components/skeleton/skeleton-paragraph.vue.d.ts +3 -3
- package/dist/types/components/skeleton/skeleton-shape.vue.d.ts +2 -2
- package/dist/types/components/skeleton/skeleton-text.vue.d.ts +8 -3
- package/dist/types/components/skeleton/skeleton-text.vue.d.ts.map +1 -1
- package/dist/types/components/skeleton/skeleton.vue.d.ts +1 -1
- package/dist/types/components/toggle/toggle.vue.d.ts +1 -1
- package/dist/types/components/tooltip/tooltip.vue.d.ts +2 -2
- package/dist/types/index.d.ts +36 -29
- package/dist/types/recipes/buttons/callbar_button/callbar_button.vue.d.ts +1 -1
- package/dist/types/recipes/buttons/callbar_button_with_popover/callbar_button_with_popover.vue.d.ts +2 -2
- package/dist/types/recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue.d.ts +1 -1
- package/dist/types/recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue.d.ts +2 -2
- package/package.json +18 -58
- package/CHANGELOG.json +0 -1
- package/CHANGELOG.md +0 -2904
- package/dist/dialtone-vue.cjs +0 -6
- package/dist/dialtone-vue.cjs.map +0 -1
- package/dist/directives.cjs +0 -2
- package/dist/directives.cjs.map +0 -1
- package/dist/directives.js.map +0 -1
- package/dist/emoji.cjs +0 -2
- package/dist/emoji.cjs.map +0 -1
- package/dist/emoji.js +0 -36
- package/dist/emoji_picker-kiTOKaq8.js.map +0 -1
- package/dist/emoji_picker-njWWAm6V.cjs +0 -2
- package/dist/emoji_picker-njWWAm6V.cjs.map +0 -1
- package/dist/emoji_text_wrapper-48ClwKvf.js.map +0 -1
- package/dist/emoji_text_wrapper-ZlynvHnd.cjs +0 -2
- package/dist/emoji_text_wrapper-ZlynvHnd.cjs.map +0 -1
- package/dist/index-OF94C6nQ.js +0 -142834
- package/dist/index-OF94C6nQ.js.map +0 -1
- package/dist/index-Wx7Jagcr.cjs +0 -2
- package/dist/index-Wx7Jagcr.cjs.map +0 -1
- package/dist/message_input.cjs +0 -2
- package/dist/message_input.cjs.map +0 -1
- package/dist/message_input.js.map +0 -1
- package/dist/rich_text_editor-RVMsCB8N.cjs +0 -98
- package/dist/rich_text_editor-RVMsCB8N.cjs.map +0 -1
- package/dist/rich_text_editor-eMvTs_Gp.js +0 -16479
- package/dist/rich_text_editor-eMvTs_Gp.js.map +0 -1
- package/dist/tooltip-88U5vFMA.js +0 -2517
- package/dist/tooltip-88U5vFMA.js.map +0 -1
- package/dist/tooltip-i2wxFIIi.cjs +0 -22
- package/dist/tooltip-i2wxFIIi.cjs.map +0 -1
- package/dist/types/common/constants.d.ts.map +0 -1
- package/dist/types/common/dates.d.ts.map +0 -1
- package/dist/types/common/utils.d.ts.map +0 -1
- package/dist/types/common/validators.d.ts.map +0 -1
- package/dist/types/components/emoji_picker/emojis/index.d.ts +0 -50
- package/dist/types/components/emoji_picker/emojis/index.d.ts.map +0 -1
- package/dist/types/directives.d.ts +0 -2
- package/dist/types/directives.d.ts.map +0 -1
- package/dist/types/emoji.d.ts +0 -5
- package/dist/types/emoji.d.ts.map +0 -1
- package/dist/types/message_input.d.ts +0 -3
- package/dist/types/message_input.d.ts.map +0 -1
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { n as i } from "../chunks/_plugin-vue2_normalizer-u6G_3nkj.js";
|
|
2
|
+
import { DtImageViewer as c } from "./image-viewer.js";
|
|
3
|
+
import { DtButton as o } from "./button.js";
|
|
4
|
+
import { DtIcon as l } from "./icon.js";
|
|
5
|
+
import "../chunks/modal-VuMFkZFH.js";
|
|
6
|
+
import "./constants.js";
|
|
7
|
+
import "@linusborg/vue-simple-portal";
|
|
8
|
+
import "vue";
|
|
9
|
+
import "../chunks/link_constants-vIUB92L4.js";
|
|
10
|
+
import "@dialpad/dialtone-icons/vue2";
|
|
11
|
+
import "../chunks/icon_constants-OpYAAKwF.js";
|
|
12
|
+
import "@dialpad/dialtone-icons/icons.json";
|
|
13
|
+
import "./skeleton.js";
|
|
14
|
+
const n = {
|
|
15
|
+
name: "DtProgressBar",
|
|
16
|
+
props: {
|
|
17
|
+
progressbarAriaLabel: {
|
|
18
|
+
type: String,
|
|
19
|
+
required: !0
|
|
20
|
+
},
|
|
21
|
+
progress: {
|
|
22
|
+
type: Number,
|
|
23
|
+
default: 20
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
data: () => ({
|
|
27
|
+
circleCircumference: 50
|
|
28
|
+
}),
|
|
29
|
+
computed: {
|
|
30
|
+
cssVars() {
|
|
31
|
+
return {
|
|
32
|
+
"--stroke-dashoffset": this.circleCircumference - this.circleCircumference * this.progress / 100,
|
|
33
|
+
"--stroke-dasharray": this.circleCircumference
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
mounted() {
|
|
38
|
+
this.circleCircumference = this.$refs.progressbarCircle.getTotalLength();
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
var m = function() {
|
|
42
|
+
var e = this, t = e._self._c;
|
|
43
|
+
return t("div", { attrs: { role: "progressbar", "aria-label": e.progressbarAriaLabel, tabindex: "-1", "aria-valuenow": e.progress, "aria-valuemin": "0", "aria-valuemax": "100" } }, [t("svg", { staticClass: "progress-bar", style: e.cssVars }, [t("circle", { ref: "progressbarCircle", staticClass: "progress-bar__circle", attrs: { r: "8", cx: "12", cy: "12" } }), t("circle", { staticClass: "progress-bar__circle", attrs: { r: "8", cx: "12", cy: "12" } })])]);
|
|
44
|
+
}, u = [], d = /* @__PURE__ */ i(
|
|
45
|
+
n,
|
|
46
|
+
m,
|
|
47
|
+
u,
|
|
48
|
+
!1,
|
|
49
|
+
null,
|
|
50
|
+
null,
|
|
51
|
+
null,
|
|
52
|
+
null
|
|
53
|
+
);
|
|
54
|
+
const h = d.exports, p = {
|
|
55
|
+
name: "DtImageCarousel",
|
|
56
|
+
components: {
|
|
57
|
+
DtImageViewer: c,
|
|
58
|
+
DtButton: o,
|
|
59
|
+
DtIcon: l,
|
|
60
|
+
DtProgressBar: h
|
|
61
|
+
},
|
|
62
|
+
props: {
|
|
63
|
+
mediaItem: {
|
|
64
|
+
type: Object,
|
|
65
|
+
required: !0
|
|
66
|
+
},
|
|
67
|
+
index: {
|
|
68
|
+
type: Number,
|
|
69
|
+
required: !0
|
|
70
|
+
},
|
|
71
|
+
closeAriaLabel: {
|
|
72
|
+
type: String,
|
|
73
|
+
required: !0
|
|
74
|
+
},
|
|
75
|
+
clickToOpenAriaLabel: {
|
|
76
|
+
type: String,
|
|
77
|
+
required: !0
|
|
78
|
+
},
|
|
79
|
+
progressbarAriaLabel: {
|
|
80
|
+
type: String,
|
|
81
|
+
required: !0
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
emits: [
|
|
85
|
+
/**
|
|
86
|
+
* Emitted when media close button is clicked to remove the image
|
|
87
|
+
*
|
|
88
|
+
* @event remove-media
|
|
89
|
+
* @type {Number}
|
|
90
|
+
*/
|
|
91
|
+
"remove-media"
|
|
92
|
+
],
|
|
93
|
+
methods: {
|
|
94
|
+
removeMediaItem(r) {
|
|
95
|
+
this.$emit("remove-media", r);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
var f = function() {
|
|
100
|
+
var e = this, t = e._self._c;
|
|
101
|
+
return t("li", { staticClass: "dt-attachment-image" }, [t("dt-image-viewer", { attrs: { "image-button-class": "dt-attachment-image__image-viewer", "image-src": e.mediaItem.path, "image-alt": e.mediaItem.altText, "close-aria-label": e.closeAriaLabel, "aria-label": e.clickToOpenAriaLabel } }), t("div", { staticClass: "dt-attachment-image__top-right" }, [e.mediaItem.isUploading ? t("dt-progress-bar", { staticClass: "dt-attachment-image__progress-bar", attrs: { progress: e.mediaItem.progress, "progressbar-aria-label": e.progressbarAriaLabel } }) : e._e(), t("dt-button", { staticClass: "dt-attachment-image__close-button", attrs: { id: `closeButton-${e.index}`, tabindex: "0", circle: "", size: "xs", importance: "clear", "aria-label": e.closeAriaLabel }, on: { click: function(a) {
|
|
102
|
+
return e.removeMediaItem(e.index);
|
|
103
|
+
} }, scopedSlots: e._u([{ key: "icon", fn: function() {
|
|
104
|
+
return [t("dt-icon", { attrs: { name: "close", size: "200" } })];
|
|
105
|
+
}, proxy: !0 }]) })], 1)], 1);
|
|
106
|
+
}, _ = [], g = /* @__PURE__ */ i(
|
|
107
|
+
p,
|
|
108
|
+
f,
|
|
109
|
+
_,
|
|
110
|
+
!1,
|
|
111
|
+
null,
|
|
112
|
+
null,
|
|
113
|
+
null,
|
|
114
|
+
null
|
|
115
|
+
);
|
|
116
|
+
const b = g.exports, w = 64, v = {
|
|
117
|
+
name: "DtRecipeAttachmentCarousel",
|
|
118
|
+
components: {
|
|
119
|
+
DtButton: o,
|
|
120
|
+
DtIcon: l,
|
|
121
|
+
DtImageCarousel: b
|
|
122
|
+
},
|
|
123
|
+
mixins: [],
|
|
124
|
+
/* inheritAttrs: false is generally an option we want to set on library
|
|
125
|
+
components. This allows any attributes passed in that are not recognized
|
|
126
|
+
as props to be passed down to another element or component using v-bind:$attrs
|
|
127
|
+
more info: https://vuejs.org/v2/api/#inheritAttrs */
|
|
128
|
+
// inheritAttrs: false,
|
|
129
|
+
props: {
|
|
130
|
+
/**
|
|
131
|
+
* media - object array of media objects
|
|
132
|
+
* @type {Array}
|
|
133
|
+
*
|
|
134
|
+
* Object: {
|
|
135
|
+
* path: String,
|
|
136
|
+
* altText: String | null,
|
|
137
|
+
* }
|
|
138
|
+
*/
|
|
139
|
+
mediaList: {
|
|
140
|
+
type: Array,
|
|
141
|
+
default: () => []
|
|
142
|
+
},
|
|
143
|
+
closeAriaLabel: {
|
|
144
|
+
type: String,
|
|
145
|
+
required: !0
|
|
146
|
+
},
|
|
147
|
+
clickToOpenAriaLabel: {
|
|
148
|
+
type: String,
|
|
149
|
+
required: !0
|
|
150
|
+
},
|
|
151
|
+
progressbarAriaLabel: {
|
|
152
|
+
type: String,
|
|
153
|
+
required: !0
|
|
154
|
+
},
|
|
155
|
+
leftArrowAriaLabel: {
|
|
156
|
+
type: String,
|
|
157
|
+
required: !0
|
|
158
|
+
},
|
|
159
|
+
rightArrowAriaLabel: {
|
|
160
|
+
type: String,
|
|
161
|
+
required: !0
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
emits: [
|
|
165
|
+
/**
|
|
166
|
+
* Emitted when popover is shown or hidden
|
|
167
|
+
*
|
|
168
|
+
* @event remove-media
|
|
169
|
+
* @type {Number}
|
|
170
|
+
*/
|
|
171
|
+
"remove-media"
|
|
172
|
+
],
|
|
173
|
+
data() {
|
|
174
|
+
return {
|
|
175
|
+
showCloseButton: {},
|
|
176
|
+
showRightArrow: !0,
|
|
177
|
+
showLeftArrow: !1,
|
|
178
|
+
isMounted: !1
|
|
179
|
+
};
|
|
180
|
+
},
|
|
181
|
+
computed: {
|
|
182
|
+
filteredMediaList() {
|
|
183
|
+
return this.mediaList.filter((r) => r.type === "image" || r.type === "video");
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
mounted: function() {
|
|
187
|
+
this.showLeftArrow = this.$refs.carousel.scrollLeft > 0, this.showRightArrow = this.$refs.carousel.scrollWidth > this.$refs.carousel.clientWidth;
|
|
188
|
+
},
|
|
189
|
+
methods: {
|
|
190
|
+
onItemFocus(r) {
|
|
191
|
+
r.currentTarget.scrollIntoView({ behavior: "smooth" });
|
|
192
|
+
},
|
|
193
|
+
mediaComponent(r) {
|
|
194
|
+
switch (r) {
|
|
195
|
+
case "image":
|
|
196
|
+
return "dt-image-carousel";
|
|
197
|
+
default:
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
removeMediaItem(r) {
|
|
202
|
+
this.showRightArrow = this.$refs.carousel.scrollWidth > this.$refs.carousel.clientWidth + w, this.$emit("remove-media", r);
|
|
203
|
+
},
|
|
204
|
+
closeButton(r, e) {
|
|
205
|
+
this.showCloseButton[e] = r;
|
|
206
|
+
},
|
|
207
|
+
handleScroll() {
|
|
208
|
+
const r = this.$refs.carousel;
|
|
209
|
+
this.showLeftArrow = r.scrollLeft > 0, this.showRightArrow = r.scrollLeft + r.clientWidth !== r.scrollWidth;
|
|
210
|
+
},
|
|
211
|
+
leftScroll() {
|
|
212
|
+
this.$refs.carousel.scrollTo({
|
|
213
|
+
left: this.$refs.carousel.scrollLeft - 100,
|
|
214
|
+
behavior: "smooth"
|
|
215
|
+
});
|
|
216
|
+
},
|
|
217
|
+
rightScroll() {
|
|
218
|
+
this.$refs.carousel.scrollTo({
|
|
219
|
+
left: this.$refs.carousel.scrollLeft + 100,
|
|
220
|
+
behavior: "smooth"
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
var A = function() {
|
|
226
|
+
var e = this, t = e._self._c;
|
|
227
|
+
return t("div", { staticClass: "dt-attachment-carousel", attrs: { role: "presentation" } }, [e.mediaList.length > 0 ? t("ul", { ref: "carousel", staticClass: "dt-attachment-carousel__media-list", on: { scroll: e.handleScroll } }, e._l(e.filteredMediaList, function(a, s) {
|
|
228
|
+
return t(e.mediaComponent(a.type), { key: `media-${s}`, tag: "component", attrs: { index: s, "media-item": a, "close-aria-label": e.closeAriaLabel, "click-to-open-aria-label": e.clickToOpenAriaLabel, "progressbar-aria-label": e.progressbarAriaLabel }, on: { "remove-media": function(C) {
|
|
229
|
+
return e.removeMediaItem(s);
|
|
230
|
+
}, focusin: e.onItemFocus } });
|
|
231
|
+
}), 1) : e._e(), t("dt-button", { directives: [{ name: "show", rawName: "v-show", value: e.showLeftArrow, expression: "showLeftArrow" }], staticClass: "dt-attachment-carousel__arrow dt-attachment-carousel__arrow--left", attrs: { tabindex: "-1", "aria-label": e.leftArrowAriaLabel, circle: "", size: "xs", importance: "clear" }, on: { click: e.leftScroll }, scopedSlots: e._u([{ key: "icon", fn: function() {
|
|
232
|
+
return [t("dt-icon", { attrs: { name: "arrow-left", size: "100" } })];
|
|
233
|
+
}, proxy: !0 }]) }), t("dt-button", { directives: [{ name: "show", rawName: "v-show", value: e.showRightArrow, expression: "showRightArrow" }], staticClass: "dt-attachment-carousel__arrow dt-attachment-carousel__arrow--right", attrs: { tabindex: "-1", "aria-label": e.rightArrowAriaLabel, circle: "", size: "xs", importance: "clear" }, on: { click: e.rightScroll }, scopedSlots: e._u([{ key: "icon", fn: function() {
|
|
234
|
+
return [t("dt-icon", { attrs: { name: "arrow-right", size: "100" } })];
|
|
235
|
+
}, proxy: !0 }]) })], 1);
|
|
236
|
+
}, L = [], y = /* @__PURE__ */ i(
|
|
237
|
+
v,
|
|
238
|
+
A,
|
|
239
|
+
L,
|
|
240
|
+
!1,
|
|
241
|
+
null,
|
|
242
|
+
null,
|
|
243
|
+
null,
|
|
244
|
+
null
|
|
245
|
+
);
|
|
246
|
+
const F = y.exports;
|
|
247
|
+
export {
|
|
248
|
+
F as DtRecipeAttachmentCarousel
|
|
249
|
+
};
|
|
250
|
+
//# sourceMappingURL=attachment-carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachment-carousel.js","sources":["../../recipes/conversation_view/attachment_carousel/media_components/progress_bar.vue","../../recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue","../../recipes/conversation_view/attachment_carousel/attachment_carousel.vue"],"sourcesContent":["<script>\nexport default {\n name: 'DtProgressBar',\n props: {\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n\n progress: {\n type: Number,\n default: 20,\n },\n },\n\n data: () => ({\n circleCircumference: 50,\n }),\n\n computed: {\n cssVars () {\n return {\n '--stroke-dashoffset':\n (this.circleCircumference - (this.circleCircumference * this.progress / 100)),\n\n '--stroke-dasharray': this.circleCircumference,\n };\n },\n },\n\n mounted () {\n this.circleCircumference = this.$refs.progressbarCircle.getTotalLength();\n },\n};\n</script>\n\n<template>\n <div\n role=\"progressbar\"\n :aria-label=\"progressbarAriaLabel\"\n tabindex=\"-1\"\n :aria-valuenow=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <svg\n class=\"progress-bar\"\n :style=\"cssVars\"\n >\n <circle\n ref=\"progressbarCircle\"\n r=\"8\"\n cx=\"12\"\n cy=\"12\"\n class=\"progress-bar__circle\"\n />\n <circle\n r=\"8\"\n cx=\"12\"\n cy=\"12\"\n class=\"progress-bar__circle\"\n />\n </svg>\n </div>\n</template>\n\n<style lang=\"less\">\n.progress-bar {\n width: var(--dt-size-550);\n height: var(--dt-size-550);\n}\n\n.progress-bar__circle {\n fill: none;\n stroke-width: 2;\n stroke-dasharray: var(--stroke-dasharray);\n}\n\n.progress-bar__circle:nth-child(1) {\n stroke-dashoffset: 0;\n stroke: var(--dt-color-black-100);\n}\n\n.progress-bar__circle:nth-child(2) {\n stroke-dashoffset: var(--stroke-dashoffset);\n stroke: var(--dt-color-purple-500);\n transition: stroke-dashoffset 500ms linear;\n}\n</style>\n","<template>\n <li\n class=\"dt-attachment-image\"\n >\n <dt-image-viewer\n image-button-class=\"dt-attachment-image__image-viewer\"\n :image-src=\"mediaItem.path\"\n :image-alt=\"mediaItem.altText\"\n :close-aria-label=\"closeAriaLabel\"\n :aria-label=\"clickToOpenAriaLabel\"\n />\n\n <!-- Loader / Close button -->\n <div\n class=\"dt-attachment-image__top-right\"\n >\n <dt-progress-bar\n v-if=\"mediaItem.isUploading\"\n class=\"dt-attachment-image__progress-bar\"\n :progress=\"mediaItem.progress\"\n :progressbar-aria-label=\"progressbarAriaLabel\"\n />\n <dt-button\n :id=\"`closeButton-${index}`\"\n tabindex=\"0\"\n class=\"dt-attachment-image__close-button\"\n circle\n size=\"xs\"\n importance=\"clear\"\n :aria-label=\"closeAriaLabel\"\n @click=\"removeMediaItem(index)\"\n >\n <template #icon>\n <dt-icon\n name=\"close\"\n size=\"200\"\n />\n </template>\n </dt-button>\n </div>\n </li>\n</template>\n\n<script>\nimport { DtImageViewer } from '@/components/image_viewer';\nimport { DtButton } from '@/components/button';\nimport { DtIcon } from '@/components/icon';\n\nimport DtProgressBar from './progress_bar.vue';\n\nexport default {\n name: 'DtImageCarousel',\n\n components: {\n DtImageViewer,\n DtButton,\n DtIcon,\n DtProgressBar,\n },\n\n props: {\n mediaItem: {\n type: Object,\n required: true,\n },\n\n index: {\n type: Number,\n required: true,\n },\n\n closeAriaLabel: {\n type: String,\n required: true,\n },\n\n clickToOpenAriaLabel: {\n type: String,\n required: true,\n },\n\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Emitted when media close button is clicked to remove the image\n *\n * @event remove-media\n * @type {Number}\n */\n 'remove-media',\n ],\n\n methods: {\n removeMediaItem (index) {\n this.$emit('remove-media', index);\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-attachment-image {\n position: relative;\n\n &:focus-within .dt-attachment-image__close-button, &:hover .dt-attachment-image__close-button {\n opacity: 1;\n }\n}\n.dt-attachment-image__image-viewer {\n height: var(--dt-size-700);\n width: var(--dt-size-700);\n border: var(--dt-space-100) solid;\n border-radius: var(--br4);\n border-width: var(--dt-size-350);\n border-color: var(--dt-color-border-subtle);\n object-fit: cover;\n}\n.dt-attachment-image__top-right {\n position: absolute;\n top: var(--dt-size-100);\n right: var(--dt-size-100);\n}\n.dt-attachment-image__close-button {\n opacity: 0;\n position: absolute;\n top: inherit;\n right: inherit;\n color: var(--dt-color-neutral-white);\n background-color: var(--dt-color-black-400);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-200);\n border-color: var(--dt-color-neutral-white);\n}\n.dt-attachment-image__progress-bar {\n position: absolute;\n top: inherit;\n right: inherit;\n background-color: var(--dt-color-neutral-white);\n border-radius: 50%;\n display: flex;\n transform: rotate(-90deg);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-200);\n border-color: var(--dt-color-border-subtle);\n}\n</style>\n","<template>\n <div\n class=\"dt-attachment-carousel\"\n role=\"presentation\"\n >\n <ul\n v-if=\"mediaList.length > 0\"\n ref=\"carousel\"\n class=\"dt-attachment-carousel__media-list\"\n @scroll=\"handleScroll\"\n >\n <!-- media list -->\n <component\n :is=\"mediaComponent(mediaItem.type)\"\n v-for=\"(mediaItem, index) in filteredMediaList\"\n :key=\"`media-${index}`\"\n :index=\"index\"\n :media-item=\"mediaItem\"\n :close-aria-label=\"closeAriaLabel\"\n :click-to-open-aria-label=\"clickToOpenAriaLabel\"\n :progressbar-aria-label=\"progressbarAriaLabel\"\n @remove-media=\"removeMediaItem(index)\"\n @focusin=\"onItemFocus\"\n />\n </ul>\n\n <!-- Carousel Arrows -->\n <dt-button\n v-show=\"showLeftArrow\"\n tabindex=\"-1\"\n :aria-label=\"leftArrowAriaLabel\"\n class=\"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--left\"\n circle\n size=\"xs\"\n importance=\"clear\"\n @click=\"leftScroll\"\n >\n <template #icon>\n <dt-icon\n name=\"arrow-left\"\n size=\"100\"\n />\n </template>\n </dt-button>\n <dt-button\n v-show=\"showRightArrow\"\n tabindex=\"-1\"\n :aria-label=\"rightArrowAriaLabel\"\n class=\"dt-attachment-carousel__arrow dt-attachment-carousel__arrow--right\"\n circle\n size=\"xs\"\n importance=\"clear\"\n @click=\"rightScroll\"\n >\n <template #icon>\n <dt-icon\n name=\"arrow-right\"\n size=\"100\"\n />\n </template>\n </dt-button>\n </div>\n</template>\n\n<script>\nimport { DtIcon } from '@/components/icon';\nimport { DtButton } from '@/components/button';\n\nimport DtImageCarousel from './media_components/image_carousel.vue';\n\nconst MEDIA_ITEM_WIDTH = 64;\n\nexport default {\n name: 'DtRecipeAttachmentCarousel',\n\n components: {\n DtButton,\n DtIcon,\n DtImageCarousel,\n },\n\n mixins: [],\n\n /* inheritAttrs: false is generally an option we want to set on library\n components. This allows any attributes passed in that are not recognized\n as props to be passed down to another element or component using v-bind:$attrs\n more info: https://vuejs.org/v2/api/#inheritAttrs */\n // inheritAttrs: false,\n\n props: {\n /**\n * media - object array of media objects\n * @type {Array}\n *\n * Object: {\n * path: String,\n * altText: String | null,\n * }\n */\n mediaList: {\n type: Array,\n default: () => [],\n },\n\n closeAriaLabel: {\n type: String,\n required: true,\n },\n\n clickToOpenAriaLabel: {\n type: String,\n required: true,\n },\n\n progressbarAriaLabel: {\n type: String,\n required: true,\n },\n\n leftArrowAriaLabel: {\n type: String,\n required: true,\n },\n\n rightArrowAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Emitted when popover is shown or hidden\n *\n * @event remove-media\n * @type {Number}\n */\n 'remove-media',\n ],\n\n data () {\n return {\n showCloseButton: {},\n showRightArrow: true,\n showLeftArrow: false,\n isMounted: false,\n };\n },\n\n computed: {\n filteredMediaList () {\n return this.mediaList.filter((mediaItem) => mediaItem.type === 'image' || mediaItem.type === 'video');\n },\n },\n\n mounted: function () {\n this.showLeftArrow = this.$refs.carousel.scrollLeft > 0;\n this.showRightArrow = this.$refs.carousel.scrollWidth > this.$refs.carousel.clientWidth;\n },\n\n methods: {\n onItemFocus (e) {\n e.currentTarget.scrollIntoView({ behavior: 'smooth' });\n },\n\n mediaComponent (type) {\n switch (type) {\n case 'image':\n return 'dt-image-carousel';\n default:\n // unknown media type\n return null;\n }\n },\n\n removeMediaItem (index) {\n // make sure the carousel arrows is updated. 64 is the width of each media item\n this.showRightArrow = this.$refs.carousel.scrollWidth > (this.$refs.carousel.clientWidth + MEDIA_ITEM_WIDTH);\n this.$emit('remove-media', index);\n },\n\n closeButton (val, index) {\n this.showCloseButton[index] = val;\n },\n\n handleScroll () {\n const carousel = this.$refs.carousel;\n this.showLeftArrow = carousel.scrollLeft > 0;\n this.showRightArrow = !((carousel.scrollLeft + carousel.clientWidth) === carousel.scrollWidth);\n },\n\n leftScroll () {\n this.$refs.carousel.scrollTo({\n left: this.$refs.carousel.scrollLeft - 100,\n behavior: 'smooth',\n });\n },\n\n rightScroll () {\n this.$refs.carousel.scrollTo({\n left: this.$refs.carousel.scrollLeft + 100,\n behavior: 'smooth',\n });\n },\n },\n};\n</script>\n\n<style lang=\"less\">\n.dt-attachment-carousel {\n position: relative;\n max-height: 100px;\n width: var(--dt-space-1000);\n}\n\n.dt-attachment-carousel__media-list {\n display: flex;\n flex-direction: row;\n padding-left: 0px;\n overflow-x: scroll;\n &::-webkit-scrollbar {\n display: none;\n }\n}\n\n.dt-attachment-carousel__arrow {\n position: absolute;\n opacity: 0;\n\n .dt-attachment-carousel:hover & {\n opacity: 1;\n }\n background-color: var(--dt-color-neutral-white);\n top: var(--dt-space-30-percent);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-100);\n border-color: var(--bc-default);\n}\n.dt-attachment-carousel__arrow--left {\n left: var(--dt-space-300);\n}\n.dt-attachment-carousel__arrow--right {\n right: var(--dt-space-300);\n}\n\n.dt-attachment-carousel__image-viewer {\n height: var(--dt-size-700);\n width: var(--dt-size-700);\n border-radius: var(--br4);\n border: var(--dt-space-100) solid;\n border-width: var(--dt-size-350);\n border-color: var(--dt-color-border-subtle);\n}\n</style>\n"],"names":["_sfc_main","DtImageViewer","DtButton","DtIcon","DtProgressBar","index","MEDIA_ITEM_WIDTH","DtImageCarousel","mediaItem","e","type","val","carousel"],"mappings":";;;;;;;;;;;;;AACA,MAAAA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,IACA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,MAAA,OAAA;AAAA,IACA,qBAAA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,UAAA;AACA,aAAA;AAAA,QACA,uBACA,KAAA,sBAAA,KAAA,sBAAA,KAAA,WAAA;AAAA,QAEA,sBAAA,KAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AACA,SAAA,sBAAA,KAAA,MAAA,kBAAA,eAAA;AAAA,EACA;AACA;;;;;;;;;;;;;;qBCiBAA,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,QAAAC;AAAA,IACA,eAAAC;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,OAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,gBAAAC,GAAA;AACA,WAAA,MAAA,gBAAAA,CAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;qBChCAC,IAAA,IAEAN,IAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAE;AAAA,IACA,QAAAC;AAAA,IACA,iBAAAI;AAAA,EACA;AAAA,EAEA,QAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAUA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,MAAA,CAAA;AAAA,IACA;AAAA,IAEA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,sBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,oBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,IAEA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,iBAAA,CAAA;AAAA,MACA,gBAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,oBAAA;AACA,aAAA,KAAA,UAAA,OAAA,CAAAC,MAAAA,EAAA,SAAA,WAAAA,EAAA,SAAA,OAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,SAAA,WAAA;AACA,SAAA,gBAAA,KAAA,MAAA,SAAA,aAAA,GACA,KAAA,iBAAA,KAAA,MAAA,SAAA,cAAA,KAAA,MAAA,SAAA;AAAA,EACA;AAAA,EAEA,SAAA;AAAA,IACA,YAAAC,GAAA;AACA,MAAAA,EAAA,cAAA,eAAA,EAAA,UAAA,SAAA,CAAA;AAAA,IACA;AAAA,IAEA,eAAAC,GAAA;AACA,cAAAA,GAAA;AAAA,QACA,KAAA;AACA,iBAAA;AAAA,QACA;AAEA,iBAAA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,gBAAAL,GAAA;AAEA,WAAA,iBAAA,KAAA,MAAA,SAAA,cAAA,KAAA,MAAA,SAAA,cAAAC,GACA,KAAA,MAAA,gBAAAD,CAAA;AAAA,IACA;AAAA,IAEA,YAAAM,GAAAN,GAAA;AACA,WAAA,gBAAAA,CAAA,IAAAM;AAAA,IACA;AAAA,IAEA,eAAA;AACA,YAAAC,IAAA,KAAA,MAAA;AACA,WAAA,gBAAAA,EAAA,aAAA,GACA,KAAA,iBAAAA,EAAA,aAAAA,EAAA,gBAAAA,EAAA;AAAA,IACA;AAAA,IAEA,aAAA;AACA,WAAA,MAAA,SAAA,SAAA;AAAA,QACA,MAAA,KAAA,MAAA,SAAA,aAAA;AAAA,QACA,UAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,IAEA,cAAA;AACA,WAAA,MAAA,SAAA,SAAA;AAAA,QACA,MAAA,KAAA,MAAA,SAAA,aAAA;AAAA,QACA,UAAA;AAAA,MACA,CAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import { getUniqueString as l, getRandomElement as o } from "./utils.js";
|
|
2
|
+
import d from "@dialpad/dialtone-icons/icons.json";
|
|
3
|
+
import { I as c } from "../chunks/icon_constants-OpYAAKwF.js";
|
|
4
|
+
import { n as m } from "../chunks/_plugin-vue2_normalizer-u6G_3nkj.js";
|
|
5
|
+
import { DtPresence as u } from "./presence.js";
|
|
6
|
+
import { DtIcon as v } from "./icon.js";
|
|
7
|
+
import "./constants.js";
|
|
8
|
+
import "vue";
|
|
9
|
+
import "@dialpad/dialtone-icons/vue2";
|
|
10
|
+
import "./skeleton.js";
|
|
11
|
+
const s = {
|
|
12
|
+
xs: "d-avatar--xs",
|
|
13
|
+
sm: "d-avatar--sm",
|
|
14
|
+
md: "d-avatar--md",
|
|
15
|
+
lg: "d-avatar--lg",
|
|
16
|
+
xl: "d-avatar--xl"
|
|
17
|
+
}, f = {
|
|
18
|
+
default: "",
|
|
19
|
+
icon: "d-avatar__icon",
|
|
20
|
+
initials: "d-avatar__initials"
|
|
21
|
+
}, p = {
|
|
22
|
+
md: "d-avatar__presence--md",
|
|
23
|
+
lg: "d-avatar__presence--lg"
|
|
24
|
+
}, i = {
|
|
25
|
+
NONE: "",
|
|
26
|
+
BUSY: "busy",
|
|
27
|
+
AWAY: "away",
|
|
28
|
+
OFFLINE: "offline",
|
|
29
|
+
ACTIVE: "active"
|
|
30
|
+
}, _ = {
|
|
31
|
+
xs: "100",
|
|
32
|
+
sm: "200",
|
|
33
|
+
md: "300",
|
|
34
|
+
lg: "500",
|
|
35
|
+
xl: "600"
|
|
36
|
+
}, g = [
|
|
37
|
+
"100",
|
|
38
|
+
"200",
|
|
39
|
+
"300",
|
|
40
|
+
"400",
|
|
41
|
+
"500",
|
|
42
|
+
"600",
|
|
43
|
+
"700",
|
|
44
|
+
"800",
|
|
45
|
+
"900",
|
|
46
|
+
"1000",
|
|
47
|
+
"1100",
|
|
48
|
+
"1200",
|
|
49
|
+
"1300",
|
|
50
|
+
"1400",
|
|
51
|
+
"1500",
|
|
52
|
+
"1600",
|
|
53
|
+
"1700",
|
|
54
|
+
"1800"
|
|
55
|
+
], n = (a) => a > 1;
|
|
56
|
+
function I() {
|
|
57
|
+
return [void 0, ...d];
|
|
58
|
+
}
|
|
59
|
+
const h = (a) => {
|
|
60
|
+
if (typeof a != "string" || !a.trim())
|
|
61
|
+
return "";
|
|
62
|
+
const e = a.trim().split(/\s+/g);
|
|
63
|
+
return e.length === 1 ? e.join("").substring(0, 2) : e.filter((t, r) => r === 0 || r === e.length - 1).map((t) => t.slice(0, 1).toUpperCase()).join("");
|
|
64
|
+
}, S = I(), y = {
|
|
65
|
+
name: "DtAvatar",
|
|
66
|
+
components: { DtPresence: u, DtIcon: v },
|
|
67
|
+
inheritAttrs: !1,
|
|
68
|
+
props: {
|
|
69
|
+
/**
|
|
70
|
+
* Id of the avatar content wrapper element
|
|
71
|
+
*/
|
|
72
|
+
id: {
|
|
73
|
+
type: String,
|
|
74
|
+
default() {
|
|
75
|
+
return l();
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
/**
|
|
79
|
+
* Pass in a seed to get the random color generation based on that string. For example if you pass in a
|
|
80
|
+
* user ID as the string it will return the same randomly generated colors every time for that user.
|
|
81
|
+
*/
|
|
82
|
+
seed: {
|
|
83
|
+
type: String,
|
|
84
|
+
default: void 0
|
|
85
|
+
},
|
|
86
|
+
/**
|
|
87
|
+
* Set the avatar background to a specific color. If undefined will randomize the color which can be deterministic
|
|
88
|
+
* if the seed prop is set.
|
|
89
|
+
*/
|
|
90
|
+
color: {
|
|
91
|
+
type: String,
|
|
92
|
+
default: void 0
|
|
93
|
+
},
|
|
94
|
+
/**
|
|
95
|
+
* The size of the avatar
|
|
96
|
+
* @values xs, sm, md, lg, xl
|
|
97
|
+
*/
|
|
98
|
+
size: {
|
|
99
|
+
type: String,
|
|
100
|
+
default: "md",
|
|
101
|
+
validator: (a) => Object.keys(s).includes(a)
|
|
102
|
+
},
|
|
103
|
+
/**
|
|
104
|
+
* Used to customize the avatar container
|
|
105
|
+
*/
|
|
106
|
+
avatarClass: {
|
|
107
|
+
type: [String, Array, Object],
|
|
108
|
+
default: ""
|
|
109
|
+
},
|
|
110
|
+
/**
|
|
111
|
+
* Set classes on the avatar canvas. Wrapper around the core avatar image.
|
|
112
|
+
*/
|
|
113
|
+
canvasClass: {
|
|
114
|
+
type: [String, Array, Object],
|
|
115
|
+
default: ""
|
|
116
|
+
},
|
|
117
|
+
/**
|
|
118
|
+
* Pass through classes. Used to customize the avatar icon
|
|
119
|
+
*/
|
|
120
|
+
iconClass: {
|
|
121
|
+
type: [String, Array, Object],
|
|
122
|
+
default: ""
|
|
123
|
+
},
|
|
124
|
+
/**
|
|
125
|
+
* Determines whether to show the presence indicator for
|
|
126
|
+
* Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',
|
|
127
|
+
* or 'active'. By default, it's null and nothing is shown.
|
|
128
|
+
* @values null, busy, away, offline, active
|
|
129
|
+
*/
|
|
130
|
+
presence: {
|
|
131
|
+
type: String,
|
|
132
|
+
default: i.NONE,
|
|
133
|
+
validator: (a) => Object.values(i).includes(a)
|
|
134
|
+
},
|
|
135
|
+
/**
|
|
136
|
+
* A set of props to be passed into the presence component.
|
|
137
|
+
*/
|
|
138
|
+
presenceProps: {
|
|
139
|
+
type: Object,
|
|
140
|
+
default: () => ({})
|
|
141
|
+
},
|
|
142
|
+
/**
|
|
143
|
+
* Determines whether to show a group avatar.
|
|
144
|
+
* Limit to 2 digits max, more than 99 will be rendered as “99+”.
|
|
145
|
+
* if the number is 1 or less it would just show the regular avatar as if group had not been set.
|
|
146
|
+
*/
|
|
147
|
+
group: {
|
|
148
|
+
type: Number,
|
|
149
|
+
default: void 0,
|
|
150
|
+
validator: (a) => n(a)
|
|
151
|
+
},
|
|
152
|
+
/**
|
|
153
|
+
* The icon that overlays the avatar
|
|
154
|
+
*/
|
|
155
|
+
overlayIcon: {
|
|
156
|
+
type: String,
|
|
157
|
+
default: ""
|
|
158
|
+
},
|
|
159
|
+
/**
|
|
160
|
+
* The text that overlays the avatar
|
|
161
|
+
*/
|
|
162
|
+
overlayText: {
|
|
163
|
+
type: String,
|
|
164
|
+
default: ""
|
|
165
|
+
},
|
|
166
|
+
/**
|
|
167
|
+
* Used to customize the avatar overlay
|
|
168
|
+
*/
|
|
169
|
+
overlayClass: {
|
|
170
|
+
type: [String, Array, Object],
|
|
171
|
+
default: ""
|
|
172
|
+
},
|
|
173
|
+
/**
|
|
174
|
+
* Source of the image
|
|
175
|
+
*/
|
|
176
|
+
imageSrc: {
|
|
177
|
+
type: String,
|
|
178
|
+
default: ""
|
|
179
|
+
},
|
|
180
|
+
/**
|
|
181
|
+
* Alt attribute of the image, required if imageSrc is provided.
|
|
182
|
+
* Can be set to '' (empty string) if the image is described
|
|
183
|
+
* in text nearby
|
|
184
|
+
*/
|
|
185
|
+
imageAlt: {
|
|
186
|
+
type: String,
|
|
187
|
+
default: void 0
|
|
188
|
+
},
|
|
189
|
+
/**
|
|
190
|
+
* Icon name to be displayed on the avatar
|
|
191
|
+
*/
|
|
192
|
+
iconName: {
|
|
193
|
+
type: String,
|
|
194
|
+
default: void 0,
|
|
195
|
+
validator: (a) => S.includes(a)
|
|
196
|
+
},
|
|
197
|
+
/**
|
|
198
|
+
* Icon size to be displayed on the avatar
|
|
199
|
+
* @values 100, 200, 300, 400, 500, 600, 700, 800
|
|
200
|
+
*/
|
|
201
|
+
iconSize: {
|
|
202
|
+
type: String,
|
|
203
|
+
default: "",
|
|
204
|
+
validator: (a) => !a || Object.keys(c).includes(a)
|
|
205
|
+
},
|
|
206
|
+
/**
|
|
207
|
+
* Full name used to extract initials.
|
|
208
|
+
*/
|
|
209
|
+
fullName: {
|
|
210
|
+
type: String,
|
|
211
|
+
default: ""
|
|
212
|
+
},
|
|
213
|
+
/**
|
|
214
|
+
* Makes the avatar focusable and clickable,
|
|
215
|
+
* emits a click event when clicked.
|
|
216
|
+
*/
|
|
217
|
+
clickable: {
|
|
218
|
+
type: Boolean,
|
|
219
|
+
default: !1
|
|
220
|
+
},
|
|
221
|
+
/**
|
|
222
|
+
* Descriptive label for the icon.
|
|
223
|
+
* To avoid a11y issues, set this prop if clickable and iconName are set.
|
|
224
|
+
*/
|
|
225
|
+
iconAriaLabel: {
|
|
226
|
+
type: String,
|
|
227
|
+
default: void 0
|
|
228
|
+
}
|
|
229
|
+
},
|
|
230
|
+
emits: [
|
|
231
|
+
/**
|
|
232
|
+
* Avatar click event
|
|
233
|
+
*
|
|
234
|
+
* @event click
|
|
235
|
+
* @type {PointerEvent | KeyboardEvent}
|
|
236
|
+
*/
|
|
237
|
+
"click"
|
|
238
|
+
],
|
|
239
|
+
data() {
|
|
240
|
+
return {
|
|
241
|
+
AVATAR_SIZE_MODIFIERS: s,
|
|
242
|
+
AVATAR_KIND_MODIFIERS: f,
|
|
243
|
+
AVATAR_PRESENCE_SIZE_MODIFIERS: p,
|
|
244
|
+
AVATAR_ICON_SIZES: _,
|
|
245
|
+
imageLoadedSuccessfully: null,
|
|
246
|
+
formattedInitials: "",
|
|
247
|
+
initializing: !1
|
|
248
|
+
};
|
|
249
|
+
},
|
|
250
|
+
computed: {
|
|
251
|
+
isNotIconType() {
|
|
252
|
+
return !this.iconName;
|
|
253
|
+
},
|
|
254
|
+
avatarClasses() {
|
|
255
|
+
return [
|
|
256
|
+
"d-avatar",
|
|
257
|
+
s[this.validatedSize],
|
|
258
|
+
this.avatarClass,
|
|
259
|
+
{
|
|
260
|
+
"d-avatar--group": this.showGroup,
|
|
261
|
+
[`d-avatar--color-${this.getColor()}`]: this.isNotIconType,
|
|
262
|
+
"d-avatar--clickable": this.clickable
|
|
263
|
+
}
|
|
264
|
+
];
|
|
265
|
+
},
|
|
266
|
+
overlayClasses() {
|
|
267
|
+
return [
|
|
268
|
+
"d-avatar__overlay",
|
|
269
|
+
this.overlayClass
|
|
270
|
+
];
|
|
271
|
+
},
|
|
272
|
+
showGroup() {
|
|
273
|
+
return n(this.group);
|
|
274
|
+
},
|
|
275
|
+
formattedGroup() {
|
|
276
|
+
return this.group > 99 ? "99+" : this.group;
|
|
277
|
+
},
|
|
278
|
+
validatedSize() {
|
|
279
|
+
return this.group ? "xs" : this.size;
|
|
280
|
+
},
|
|
281
|
+
showImage() {
|
|
282
|
+
return this.imageLoadedSuccessfully !== !1 && this.imageSrc;
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
watch: {
|
|
286
|
+
fullName: {
|
|
287
|
+
immediate: !0,
|
|
288
|
+
handler() {
|
|
289
|
+
this.formatInitials();
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
size: {
|
|
293
|
+
immediate: !0,
|
|
294
|
+
handler() {
|
|
295
|
+
this.formatInitials();
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
group: {
|
|
299
|
+
immediate: !0,
|
|
300
|
+
handler() {
|
|
301
|
+
this.formatInitials();
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
imageSrc(a) {
|
|
305
|
+
this.imageLoadedSuccessfully = null, a && (this.validateProps(), this.setImageListeners());
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
mounted() {
|
|
309
|
+
this.validateProps(), this.setImageListeners();
|
|
310
|
+
},
|
|
311
|
+
methods: {
|
|
312
|
+
async setImageListeners() {
|
|
313
|
+
await this.$nextTick();
|
|
314
|
+
const a = this.$refs.avatarImage;
|
|
315
|
+
a && (a.addEventListener("load", () => this._loadedImageEventHandler(a), { once: !0 }), a.addEventListener("error", () => this._erroredImageEventHandler(a), { once: !0 }));
|
|
316
|
+
},
|
|
317
|
+
formatInitials() {
|
|
318
|
+
const a = h(this.fullName);
|
|
319
|
+
this.validatedSize === "xs" ? this.formattedInitials = "" : this.validatedSize === "sm" ? this.formattedInitials = a[0] : this.formattedInitials = a;
|
|
320
|
+
},
|
|
321
|
+
getColor() {
|
|
322
|
+
return this.color ?? o(g, this.seed);
|
|
323
|
+
},
|
|
324
|
+
_loadedImageEventHandler(a) {
|
|
325
|
+
this.imageLoadedSuccessfully = !0, a.classList.remove("d-d-none");
|
|
326
|
+
},
|
|
327
|
+
_erroredImageEventHandler(a) {
|
|
328
|
+
this.imageLoadedSuccessfully = !1, a.classList.add("d-d-none");
|
|
329
|
+
},
|
|
330
|
+
validateProps() {
|
|
331
|
+
this.imageSrc && this.imageAlt === void 0 && console.error('image-alt required if image-src is provided. Can be set to "" (empty string) if the image is described in text nearby');
|
|
332
|
+
},
|
|
333
|
+
handleClick(a) {
|
|
334
|
+
this.clickable && this.$emit("click", a);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
var A = function() {
|
|
339
|
+
var e = this, t = e._self._c;
|
|
340
|
+
return t(e.clickable ? "button" : "div", { tag: "component", class: e.avatarClasses, attrs: { id: e.id, "data-qa": "dt-avatar" }, on: { click: e.handleClick } }, [t("div", { ref: "canvas", class: [
|
|
341
|
+
e.canvasClass,
|
|
342
|
+
"d-avatar__canvas",
|
|
343
|
+
{ "d-avatar--image-loaded": e.imageLoadedSuccessfully }
|
|
344
|
+
] }, [e.showImage ? t("img", { ref: "avatarImage", staticClass: "d-avatar__image", attrs: { "data-qa": "dt-avatar-image", src: e.imageSrc, alt: e.imageAlt } }) : e.iconName ? t("dt-icon", { class: [e.iconClass, e.AVATAR_KIND_MODIFIERS.icon], attrs: { name: e.iconName, "aria-label": e.iconAriaLabel, size: e.iconSize || e.AVATAR_ICON_SIZES[e.size], "data-qa": "dt-avatar-icon" } }) : t("span", { class: [e.AVATAR_KIND_MODIFIERS.initials] }, [e._v(" " + e._s(e.formattedInitials) + " ")])], 1), e.overlayIcon || e.overlayText ? t("div", { class: e.overlayClasses }, [e.overlayIcon ? t("dt-icon", { staticClass: "d-avatar__overlay-icon", attrs: { name: e.overlayIcon } }) : e.overlayText ? t("p", { staticClass: "d-avatar__overlay-text" }, [e._v(" " + e._s(e.overlayText) + " ")]) : e._e()], 1) : e._e(), e.showGroup ? t("span", { staticClass: "d-avatar__count", attrs: { "data-qa": "dt-avatar-count" } }, [e._v(e._s(e.formattedGroup))]) : e._e(), e.presence && !e.showGroup ? t("dt-presence", e._b({ class: [
|
|
345
|
+
"d-avatar__presence",
|
|
346
|
+
e.AVATAR_PRESENCE_SIZE_MODIFIERS[e.size]
|
|
347
|
+
], attrs: { presence: e.presence, "data-qa": "dt-presence" } }, "dt-presence", e.presenceProps, !1)) : e._e()], 1);
|
|
348
|
+
}, E = [], C = /* @__PURE__ */ m(
|
|
349
|
+
y,
|
|
350
|
+
A,
|
|
351
|
+
E,
|
|
352
|
+
!1,
|
|
353
|
+
null,
|
|
354
|
+
null,
|
|
355
|
+
null,
|
|
356
|
+
null
|
|
357
|
+
);
|
|
358
|
+
const V = C.exports;
|
|
359
|
+
export {
|
|
360
|
+
g as AVATAR_COLORS,
|
|
361
|
+
n as AVATAR_GROUP_VALIDATOR,
|
|
362
|
+
_ as AVATAR_ICON_SIZES,
|
|
363
|
+
f as AVATAR_KIND_MODIFIERS,
|
|
364
|
+
p as AVATAR_PRESENCE_SIZE_MODIFIERS,
|
|
365
|
+
i as AVATAR_PRESENCE_STATES,
|
|
366
|
+
s as AVATAR_SIZE_MODIFIERS,
|
|
367
|
+
V as DtAvatar
|
|
368
|
+
};
|
|
369
|
+
//# sourceMappingURL=avatar.js.map
|