@dialpad/dialtone-vue 2.130.4 → 2.131.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.
@@ -82,6 +82,7 @@ const lib_timePill = require("./lib/time-pill.cjs");
82
82
  const lib_settingsMenuButton = require("./lib/settings-menu-button.cjs");
83
83
  const lib_contactInfo = require("./lib/contact-info.cjs");
84
84
  const lib_callbox = require("./lib/callbox.cjs");
85
+ const lib_contactCentersRow = require("./lib/contact-centers-row.cjs");
85
86
  const lib_contactRow = require("./lib/contact-row.cjs");
86
87
  const lib_generalRow = require("./lib/general-row.cjs");
87
88
  const lib_groupRow = require("./lib/group-row.cjs");
@@ -122,6 +123,8 @@ require("@tiptap/suggestion");
122
123
  require("@tiptap/extension-mention");
123
124
  require("@dialpad/dialtone-icons/vue2/hash");
124
125
  require("@dialpad/dialtone-icons/vue2/lock");
126
+ require("@dialpad/dialtone-icons/vue2/headphones");
127
+ require("@dialpad/dialtone-icons/vue2/chevron-down");
125
128
  exports.DEFAULT_VALIDATION_MESSAGE_TYPE = common_constants.DEFAULT_VALIDATION_MESSAGE_TYPE;
126
129
  exports.DESCRIPTION_SIZE_TYPES = common_constants.DESCRIPTION_SIZE_TYPES;
127
130
  exports.VALIDATION_MESSAGE_TYPES = common_constants.VALIDATION_MESSAGE_TYPES;
@@ -360,6 +363,7 @@ exports.DtRecipeContactInfo = lib_contactInfo.DtRecipeContactInfo;
360
363
  exports.CALLBOX_BADGE_COLORS = lib_callbox.CALLBOX_BADGE_COLORS;
361
364
  exports.CALLBOX_BORDER_COLORS = lib_callbox.CALLBOX_BORDER_COLORS;
362
365
  exports.DtRecipeCallbox = lib_callbox.DtRecipeCallbox;
366
+ exports.DtRecipeContactCentersRow = lib_contactCentersRow.DtRecipeContactCentersRow;
363
367
  exports.DtRecipeContactRow = lib_contactRow.DtRecipeContactRow;
364
368
  exports.DtRecipeGeneralRow = lib_generalRow.DtRecipeGeneralRow;
365
369
  exports.LEFTBAR_GENERAL_ROW_CONTACT_CENTER_COLORS = lib_generalRow.LEFTBAR_GENERAL_ROW_CONTACT_CENTER_COLORS;
@@ -1 +1 @@
1
- {"version":3,"file":"dialtone-vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"dialtone-vue.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -80,6 +80,7 @@ import { DtRecipeTimePill } from "./lib/time-pill.js";
80
80
  import { DtRecipeSettingsMenuButton } from "./lib/settings-menu-button.js";
81
81
  import { DtRecipeContactInfo } from "./lib/contact-info.js";
82
82
  import { CALLBOX_BADGE_COLORS, CALLBOX_BORDER_COLORS, DtRecipeCallbox } from "./lib/callbox.js";
83
+ import { DtRecipeContactCentersRow } from "./lib/contact-centers-row.js";
83
84
  import { DtRecipeContactRow } from "./lib/contact-row.js";
84
85
  import { DtRecipeGeneralRow, LEFTBAR_GENERAL_ROW_CONTACT_CENTER_COLORS, LEFTBAR_GENERAL_ROW_CONTACT_CENTER_VALIDATION_ERROR, LEFTBAR_GENERAL_ROW_ICON_MAPPING, LEFTBAR_GENERAL_ROW_ICON_SIZES, LEFTBAR_GENERAL_ROW_TYPES } from "./lib/general-row.js";
85
86
  import { DtRecipeGroupRow } from "./lib/group-row.js";
@@ -120,6 +121,8 @@ import "@tiptap/suggestion";
120
121
  import "@tiptap/extension-mention";
121
122
  import "@dialpad/dialtone-icons/vue2/hash";
122
123
  import "@dialpad/dialtone-icons/vue2/lock";
124
+ import "@dialpad/dialtone-icons/vue2/headphones";
125
+ import "@dialpad/dialtone-icons/vue2/chevron-down";
123
126
  export {
124
127
  AVATAR_COLORS,
125
128
  AVATAR_GROUP_VALIDATOR,
@@ -210,6 +213,7 @@ export {
210
213
  DtRecipeCallbox,
211
214
  DtRecipeComboboxMultiSelect,
212
215
  DtRecipeComboboxWithPopover,
216
+ DtRecipeContactCentersRow,
213
217
  DtRecipeContactInfo,
214
218
  DtRecipeContactRow,
215
219
  DtRecipeEditor,
@@ -1 +1 @@
1
- {"version":3,"file":"dialtone-vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"dialtone-vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const DtIconHeadphones = require("@dialpad/dialtone-icons/vue2/headphones");
4
+ const DtIconChevronDown = require("@dialpad/dialtone-icons/vue2/chevron-down");
5
+ const lib_emojiTextWrapper = require("./emoji-text-wrapper.cjs");
6
+ const common_utils = require("../common/utils.cjs");
7
+ const _pluginVue2_normalizer = require("../chunks/_plugin-vue2_normalizer-1aBeR4AK.js");
8
+ const lib_button = require("./button.cjs");
9
+ const lib_badge = require("./badge.cjs");
10
+ require("../common/emoji.cjs");
11
+ require("emoji-regex");
12
+ require("emoji-toolkit/emoji_strategy.json");
13
+ require("../chunks/icon_constants-QYpmdE0R.js");
14
+ require("@dialpad/dialtone-icons/icons.json");
15
+ require("./emoji.cjs");
16
+ require("./skeleton.cjs");
17
+ require("../common/constants.cjs");
18
+ require("vue");
19
+ require("../chunks/link_constants-Huj7D_hm.js");
20
+ require("./icon.cjs");
21
+ require("@dialpad/dialtone-icons/vue2");
22
+ const _sfc_main = {
23
+ name: "DtRecipeGeneralRow",
24
+ components: {
25
+ DtButton: lib_button.DtButton,
26
+ DtBadge: lib_badge.DtBadge,
27
+ DtEmojiTextWrapper: lib_emojiTextWrapper.DtEmojiTextWrapper,
28
+ DtIconHeadphones,
29
+ DtIconChevronDown
30
+ },
31
+ inheritAttrs: false,
32
+ props: {
33
+ /**
34
+ * Will be read out by a screen reader upon focus of this row. If not defined "description" will be read.
35
+ */
36
+ ariaLabel: {
37
+ type: String,
38
+ default: ""
39
+ },
40
+ /**
41
+ * Text displayed next to the icon. Required.
42
+ */
43
+ description: {
44
+ type: String,
45
+ required: true
46
+ },
47
+ /**
48
+ * Determines if the row is selected
49
+ */
50
+ selected: {
51
+ type: Boolean,
52
+ default: false
53
+ },
54
+ /**
55
+ * Number of unread messages
56
+ */
57
+ unreadCount: {
58
+ type: Number,
59
+ default: 0
60
+ },
61
+ /**
62
+ * Aria label for the menu button.
63
+ */
64
+ menuButtonAriaLabel: {
65
+ type: String,
66
+ required: true
67
+ }
68
+ },
69
+ emits: [
70
+ /**
71
+ * Native click event on the row itself
72
+ *
73
+ * @event click
74
+ * @type {PointerEvent | KeyboardEvent}
75
+ */
76
+ "click",
77
+ /**
78
+ * Menu button clicked
79
+ *
80
+ * @event call
81
+ * @type {PointerEvent | KeyboardEvent}
82
+ */
83
+ "click-menu"
84
+ ],
85
+ data() {
86
+ return {
87
+ labelWidth: "auto"
88
+ };
89
+ },
90
+ computed: {
91
+ leftbarContactCentersRowClasses() {
92
+ return [
93
+ "dt-leftbar-row",
94
+ "dt-leftbar-row--contact-centers",
95
+ {
96
+ "dt-leftbar-row--unread-count": this.showUnreadCount,
97
+ "dt-leftbar-row--selected": this.selected
98
+ }
99
+ ];
100
+ },
101
+ getAriaLabel() {
102
+ return this.ariaLabel ? this.ariaLabel : common_utils.safeConcatStrings([this.description, this.unreadCountTooltip]);
103
+ },
104
+ showUnreadCount() {
105
+ return this.unreadCount > 0;
106
+ }
107
+ },
108
+ watch: {
109
+ $props: {
110
+ deep: true,
111
+ handler() {
112
+ this.adjustLabelWidth();
113
+ }
114
+ }
115
+ },
116
+ mounted() {
117
+ this.resizeObserver = new ResizeObserver(this.adjustLabelWidth);
118
+ this.resizeObserver.observe(this.$el);
119
+ this.adjustLabelWidth();
120
+ },
121
+ beforeDestroy: function() {
122
+ this.resizeObserver.disconnect();
123
+ },
124
+ methods: {
125
+ adjustLabelWidth() {
126
+ var _a, _b, _c, _d, _e, _f;
127
+ const labelWidth = ((_b = (_a = this.$el) == null ? void 0 : _a.querySelector(".dt-leftbar-row__primary")) == null ? void 0 : _b.clientWidth) || 0;
128
+ const omegaWidth = ((_d = (_c = this.$el) == null ? void 0 : _c.querySelector(".dt-leftbar-row__omega")) == null ? void 0 : _d.clientWidth) || 0;
129
+ const alphaWidth = ((_f = (_e = this.$el) == null ? void 0 : _e.querySelector(".dt-leftbar-row__alpha")) == null ? void 0 : _f.clientWidth) || 0;
130
+ const paddings = 12;
131
+ this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + "px";
132
+ }
133
+ }
134
+ };
135
+ var _sfc_render = function render() {
136
+ var _vm = this, _c = _vm._self._c;
137
+ return _c("div", { class: [
138
+ "dt-leftbar-row__container",
139
+ { "dt-leftbar-row__container--off-duty": _vm.$slots.timer }
140
+ ] }, [_c("div", { class: _vm.leftbarContactCentersRowClasses, attrs: { "data-qa": "dt-recipe-contact-centers-row" } }, [_c("a", _vm._g(_vm._b({ staticClass: "dt-leftbar-row__primary", attrs: { "data-qa": _vm.$attrs["data-qa"] ?? "dt-leftbar-row-link", "aria-label": _vm.getAriaLabel, "title": _vm.description, "href": _vm.$attrs.href ?? "javascript:void(0)" } }, "a", _vm.$attrs, false), _vm.$listeners), [_c("div", { staticClass: "dt-leftbar-row__alpha" }, [_c("dt-icon-headphones", { attrs: { "size": "300", "data-qa": "dt-leftbar-row-icon" } })], 1), _c("div", { staticClass: "dt-leftbar-row__label", style: `flex-basis: ${_vm.labelWidth}` }, [_c("dt-emoji-text-wrapper", { staticClass: "dt-leftbar-row__description", attrs: { "data-qa": "dt-leftbar-row-description", "size": "200" } }, [_vm._v(" " + _vm._s(_vm.description) + " ")])], 1)]), _c("div", { staticClass: "dt-leftbar-row__omega" }, [_vm._t("right"), _c("div", { staticClass: "dt-leftbar-row__action-container" }, [_vm.showUnreadCount ? _c("dt-badge", { staticClass: "dt-leftbar-row__unread-badge", attrs: { "data-qa": "dt-leftbar-row-unread-badge", "kind": "count", "type": "bulletin" } }, [_vm._v(" " + _vm._s(_vm.unreadCount) + " ")]) : _vm._e(), _c("dt-button", { staticClass: "dt-leftbar-row__action", attrs: { "data-qa": "dt-leftbar-row-action-button", "aria-label": _vm.menuButtonAriaLabel, "importance": "clear", "size": "xs", "circle": "" }, on: { "click": function($event) {
141
+ $event.stopPropagation();
142
+ return _vm.$emit("click-menu", $event);
143
+ } }, scopedSlots: _vm._u([{ key: "icon", fn: function() {
144
+ return [_c("dt-icon-chevron-down", { attrs: { "size": "100" } })];
145
+ }, proxy: true }]) })], 1)], 2)]), _c("div", { staticClass: "dt-leftbar-row__bottom" }, [_vm._t("timer")], 2)]);
146
+ };
147
+ var _sfc_staticRenderFns = [];
148
+ var __component__ = /* @__PURE__ */ _pluginVue2_normalizer.normalizeComponent(
149
+ _sfc_main,
150
+ _sfc_render,
151
+ _sfc_staticRenderFns,
152
+ false,
153
+ null,
154
+ "f44e0386",
155
+ null,
156
+ null
157
+ );
158
+ const contact_centers_row = __component__.exports;
159
+ exports.DtRecipeContactCentersRow = contact_centers_row;
160
+ //# sourceMappingURL=contact-centers-row.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-centers-row.cjs","sources":["../../recipes/leftbar/contact_centers_row/contact_centers_row.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n 'dt-leftbar-row__container',\n { 'dt-leftbar-row__container--off-duty': $slots.timer },\n ]\"\n >\n <div\n :class=\"leftbarContactCentersRowClasses\"\n data-qa=\"dt-recipe-contact-centers-row\"\n >\n <a\n class=\"dt-leftbar-row__primary\"\n :data-qa=\"$attrs['data-qa'] ?? 'dt-leftbar-row-link'\"\n :aria-label=\"getAriaLabel\"\n :title=\"description\"\n :href=\"$attrs.href ?? 'javascript:void(0)'\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <div class=\"dt-leftbar-row__alpha\">\n <dt-icon-headphones\n size=\"300\"\n data-qa=\"dt-leftbar-row-icon\"\n />\n </div>\n <div\n class=\"dt-leftbar-row__label\"\n :style=\"`flex-basis: ${labelWidth}`\"\n >\n <dt-emoji-text-wrapper\n class=\"dt-leftbar-row__description\"\n data-qa=\"dt-leftbar-row-description\"\n size=\"200\"\n >\n {{ description }}\n </dt-emoji-text-wrapper>\n </div>\n </a>\n <div class=\"dt-leftbar-row__omega\">\n <slot name=\"right\" />\n <div class=\"dt-leftbar-row__action-container\">\n <dt-badge\n v-if=\"showUnreadCount\"\n class=\"dt-leftbar-row__unread-badge\"\n data-qa=\"dt-leftbar-row-unread-badge\"\n kind=\"count\"\n type=\"bulletin\"\n >\n {{ unreadCount }}\n </dt-badge>\n <dt-button\n class=\"dt-leftbar-row__action\"\n data-qa=\"dt-leftbar-row-action-button\"\n :aria-label=\"menuButtonAriaLabel\"\n importance=\"clear\"\n size=\"xs\"\n circle\n @click.stop=\"$emit('click-menu', $event)\"\n >\n <template #icon>\n <dt-icon-chevron-down size=\"100\" />\n </template>\n </dt-button>\n </div>\n </div>\n </div>\n <div class=\"dt-leftbar-row__bottom\">\n <slot name=\"timer\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { DtBadge } from '@/components/badge';\nimport { DtButton } from '@/components/button';\nimport DtIconHeadphones from '@dialpad/dialtone-icons/vue2/headphones';\nimport DtIconChevronDown from '@dialpad/dialtone-icons/vue2/chevron-down';\nimport DtEmojiTextWrapper from '@/components/emoji_text_wrapper/emoji_text_wrapper.vue';\nimport { safeConcatStrings } from '@/common/utils';\n\nexport default {\n name: 'DtRecipeGeneralRow',\n\n components: {\n DtButton,\n DtBadge,\n DtEmojiTextWrapper,\n DtIconHeadphones,\n DtIconChevronDown,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Will be read out by a screen reader upon focus of this row. If not defined \"description\" will be read.\n */\n ariaLabel: {\n type: String,\n default: '',\n },\n\n /**\n * Text displayed next to the icon. Required.\n */\n description: {\n type: String,\n required: true,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages\n */\n unreadCount: {\n type: Number,\n default: 0,\n },\n\n /**\n * Aria label for the menu button.\n */\n menuButtonAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Menu button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click-menu',\n ],\n\n data () {\n return {\n labelWidth: 'auto',\n };\n },\n\n computed: {\n leftbarContactCentersRowClasses () {\n return [\n 'dt-leftbar-row',\n 'dt-leftbar-row--contact-centers',\n {\n 'dt-leftbar-row--unread-count': this.showUnreadCount,\n 'dt-leftbar-row--selected': this.selected,\n },\n ];\n },\n\n getAriaLabel () {\n return this.ariaLabel\n ? this.ariaLabel\n : safeConcatStrings([this.description, this.unreadCountTooltip]);\n },\n\n showUnreadCount () {\n return this.unreadCount > 0;\n },\n },\n\n watch: {\n $props: {\n deep: true,\n handler () {\n this.adjustLabelWidth();\n },\n },\n },\n\n mounted () {\n this.resizeObserver = new ResizeObserver(this.adjustLabelWidth);\n this.resizeObserver.observe(this.$el);\n this.adjustLabelWidth();\n },\n\n beforeDestroy: function () {\n this.resizeObserver.disconnect();\n },\n\n methods: {\n adjustLabelWidth () {\n const labelWidth = this.$el?.querySelector('.dt-leftbar-row__primary')?.clientWidth || 0;\n const omegaWidth = this.$el?.querySelector('.dt-leftbar-row__omega')?.clientWidth || 0;\n const alphaWidth = this.$el?.querySelector('.dt-leftbar-row__alpha')?.clientWidth || 0;\n const paddings = 12;\n this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + 'px';\n },\n },\n};\n</script>\n\n<style lang=\"less\" scoped>\n@import \"../style/leftbar_row.less\";\n</style>\n"],"names":["DtButton","DtBadge","DtEmojiTextWrapper","safeConcatStrings"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiFA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA,UAAAA,WAAA;AAAA,IACA,SAAAC,UAAA;AAAA,IACA,oBAAAC,qBAAA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,kCAAA;AACA,aAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,UACA,gCAAA,KAAA;AAAA,UACA,4BAAA,KAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,aAAA,KAAA,YACA,KAAA,YACAC,aAAA,kBAAA,CAAA,KAAA,aAAA,KAAA,kBAAA,CAAA;AAAA,IACA;AAAA,IAEA,kBAAA;AACA,aAAA,KAAA,cAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AACA,aAAA,iBAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AACA,SAAA,iBAAA,IAAA,eAAA,KAAA,gBAAA;AACA,SAAA,eAAA,QAAA,KAAA,GAAA;AACA,SAAA,iBAAA;AAAA,EACA;AAAA,EAEA,eAAA,WAAA;AACA,SAAA,eAAA;EACA;AAAA,EAEA,SAAA;AAAA,IACA,mBAAA;;AACA,YAAA,eAAA,gBAAA,QAAA,mBAAA,cAAA,gCAAA,mBAAA,gBAAA;AACA,YAAA,eAAA,gBAAA,QAAA,mBAAA,cAAA,8BAAA,mBAAA,gBAAA;AACA,YAAA,eAAA,gBAAA,QAAA,mBAAA,cAAA,8BAAA,mBAAA,gBAAA;AACA,YAAA,WAAA;AACA,WAAA,aAAA,cAAA,aAAA,aAAA,YAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,160 @@
1
+ import DtIconHeadphones from "@dialpad/dialtone-icons/vue2/headphones";
2
+ import DtIconChevronDown from "@dialpad/dialtone-icons/vue2/chevron-down";
3
+ import { DtEmojiTextWrapper } from "./emoji-text-wrapper.js";
4
+ import { safeConcatStrings } from "../common/utils.js";
5
+ import { normalizeComponent } from "../chunks/_plugin-vue2_normalizer-sOSkiPF3.js";
6
+ import { DtButton } from "./button.js";
7
+ import { DtBadge } from "./badge.js";
8
+ import "../common/emoji.js";
9
+ import "emoji-regex";
10
+ import "emoji-toolkit/emoji_strategy.json";
11
+ import "../chunks/icon_constants-Dy4MEUJL.js";
12
+ import "@dialpad/dialtone-icons/icons.json";
13
+ import "./emoji.js";
14
+ import "./skeleton.js";
15
+ import "../common/constants.js";
16
+ import "vue";
17
+ import "../chunks/link_constants-nWVlXQBs.js";
18
+ import "./icon.js";
19
+ import "@dialpad/dialtone-icons/vue2";
20
+ const _sfc_main = {
21
+ name: "DtRecipeGeneralRow",
22
+ components: {
23
+ DtButton,
24
+ DtBadge,
25
+ DtEmojiTextWrapper,
26
+ DtIconHeadphones,
27
+ DtIconChevronDown
28
+ },
29
+ inheritAttrs: false,
30
+ props: {
31
+ /**
32
+ * Will be read out by a screen reader upon focus of this row. If not defined "description" will be read.
33
+ */
34
+ ariaLabel: {
35
+ type: String,
36
+ default: ""
37
+ },
38
+ /**
39
+ * Text displayed next to the icon. Required.
40
+ */
41
+ description: {
42
+ type: String,
43
+ required: true
44
+ },
45
+ /**
46
+ * Determines if the row is selected
47
+ */
48
+ selected: {
49
+ type: Boolean,
50
+ default: false
51
+ },
52
+ /**
53
+ * Number of unread messages
54
+ */
55
+ unreadCount: {
56
+ type: Number,
57
+ default: 0
58
+ },
59
+ /**
60
+ * Aria label for the menu button.
61
+ */
62
+ menuButtonAriaLabel: {
63
+ type: String,
64
+ required: true
65
+ }
66
+ },
67
+ emits: [
68
+ /**
69
+ * Native click event on the row itself
70
+ *
71
+ * @event click
72
+ * @type {PointerEvent | KeyboardEvent}
73
+ */
74
+ "click",
75
+ /**
76
+ * Menu button clicked
77
+ *
78
+ * @event call
79
+ * @type {PointerEvent | KeyboardEvent}
80
+ */
81
+ "click-menu"
82
+ ],
83
+ data() {
84
+ return {
85
+ labelWidth: "auto"
86
+ };
87
+ },
88
+ computed: {
89
+ leftbarContactCentersRowClasses() {
90
+ return [
91
+ "dt-leftbar-row",
92
+ "dt-leftbar-row--contact-centers",
93
+ {
94
+ "dt-leftbar-row--unread-count": this.showUnreadCount,
95
+ "dt-leftbar-row--selected": this.selected
96
+ }
97
+ ];
98
+ },
99
+ getAriaLabel() {
100
+ return this.ariaLabel ? this.ariaLabel : safeConcatStrings([this.description, this.unreadCountTooltip]);
101
+ },
102
+ showUnreadCount() {
103
+ return this.unreadCount > 0;
104
+ }
105
+ },
106
+ watch: {
107
+ $props: {
108
+ deep: true,
109
+ handler() {
110
+ this.adjustLabelWidth();
111
+ }
112
+ }
113
+ },
114
+ mounted() {
115
+ this.resizeObserver = new ResizeObserver(this.adjustLabelWidth);
116
+ this.resizeObserver.observe(this.$el);
117
+ this.adjustLabelWidth();
118
+ },
119
+ beforeDestroy: function() {
120
+ this.resizeObserver.disconnect();
121
+ },
122
+ methods: {
123
+ adjustLabelWidth() {
124
+ var _a, _b, _c, _d, _e, _f;
125
+ const labelWidth = ((_b = (_a = this.$el) == null ? void 0 : _a.querySelector(".dt-leftbar-row__primary")) == null ? void 0 : _b.clientWidth) || 0;
126
+ const omegaWidth = ((_d = (_c = this.$el) == null ? void 0 : _c.querySelector(".dt-leftbar-row__omega")) == null ? void 0 : _d.clientWidth) || 0;
127
+ const alphaWidth = ((_f = (_e = this.$el) == null ? void 0 : _e.querySelector(".dt-leftbar-row__alpha")) == null ? void 0 : _f.clientWidth) || 0;
128
+ const paddings = 12;
129
+ this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + "px";
130
+ }
131
+ }
132
+ };
133
+ var _sfc_render = function render() {
134
+ var _vm = this, _c = _vm._self._c;
135
+ return _c("div", { class: [
136
+ "dt-leftbar-row__container",
137
+ { "dt-leftbar-row__container--off-duty": _vm.$slots.timer }
138
+ ] }, [_c("div", { class: _vm.leftbarContactCentersRowClasses, attrs: { "data-qa": "dt-recipe-contact-centers-row" } }, [_c("a", _vm._g(_vm._b({ staticClass: "dt-leftbar-row__primary", attrs: { "data-qa": _vm.$attrs["data-qa"] ?? "dt-leftbar-row-link", "aria-label": _vm.getAriaLabel, "title": _vm.description, "href": _vm.$attrs.href ?? "javascript:void(0)" } }, "a", _vm.$attrs, false), _vm.$listeners), [_c("div", { staticClass: "dt-leftbar-row__alpha" }, [_c("dt-icon-headphones", { attrs: { "size": "300", "data-qa": "dt-leftbar-row-icon" } })], 1), _c("div", { staticClass: "dt-leftbar-row__label", style: `flex-basis: ${_vm.labelWidth}` }, [_c("dt-emoji-text-wrapper", { staticClass: "dt-leftbar-row__description", attrs: { "data-qa": "dt-leftbar-row-description", "size": "200" } }, [_vm._v(" " + _vm._s(_vm.description) + " ")])], 1)]), _c("div", { staticClass: "dt-leftbar-row__omega" }, [_vm._t("right"), _c("div", { staticClass: "dt-leftbar-row__action-container" }, [_vm.showUnreadCount ? _c("dt-badge", { staticClass: "dt-leftbar-row__unread-badge", attrs: { "data-qa": "dt-leftbar-row-unread-badge", "kind": "count", "type": "bulletin" } }, [_vm._v(" " + _vm._s(_vm.unreadCount) + " ")]) : _vm._e(), _c("dt-button", { staticClass: "dt-leftbar-row__action", attrs: { "data-qa": "dt-leftbar-row-action-button", "aria-label": _vm.menuButtonAriaLabel, "importance": "clear", "size": "xs", "circle": "" }, on: { "click": function($event) {
139
+ $event.stopPropagation();
140
+ return _vm.$emit("click-menu", $event);
141
+ } }, scopedSlots: _vm._u([{ key: "icon", fn: function() {
142
+ return [_c("dt-icon-chevron-down", { attrs: { "size": "100" } })];
143
+ }, proxy: true }]) })], 1)], 2)]), _c("div", { staticClass: "dt-leftbar-row__bottom" }, [_vm._t("timer")], 2)]);
144
+ };
145
+ var _sfc_staticRenderFns = [];
146
+ var __component__ = /* @__PURE__ */ normalizeComponent(
147
+ _sfc_main,
148
+ _sfc_render,
149
+ _sfc_staticRenderFns,
150
+ false,
151
+ null,
152
+ "f44e0386",
153
+ null,
154
+ null
155
+ );
156
+ const contact_centers_row = __component__.exports;
157
+ export {
158
+ contact_centers_row as DtRecipeContactCentersRow
159
+ };
160
+ //# sourceMappingURL=contact-centers-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact-centers-row.js","sources":["../../recipes/leftbar/contact_centers_row/contact_centers_row.vue"],"sourcesContent":["<template>\n <div\n :class=\"[\n 'dt-leftbar-row__container',\n { 'dt-leftbar-row__container--off-duty': $slots.timer },\n ]\"\n >\n <div\n :class=\"leftbarContactCentersRowClasses\"\n data-qa=\"dt-recipe-contact-centers-row\"\n >\n <a\n class=\"dt-leftbar-row__primary\"\n :data-qa=\"$attrs['data-qa'] ?? 'dt-leftbar-row-link'\"\n :aria-label=\"getAriaLabel\"\n :title=\"description\"\n :href=\"$attrs.href ?? 'javascript:void(0)'\"\n v-bind=\"$attrs\"\n v-on=\"$listeners\"\n >\n <div class=\"dt-leftbar-row__alpha\">\n <dt-icon-headphones\n size=\"300\"\n data-qa=\"dt-leftbar-row-icon\"\n />\n </div>\n <div\n class=\"dt-leftbar-row__label\"\n :style=\"`flex-basis: ${labelWidth}`\"\n >\n <dt-emoji-text-wrapper\n class=\"dt-leftbar-row__description\"\n data-qa=\"dt-leftbar-row-description\"\n size=\"200\"\n >\n {{ description }}\n </dt-emoji-text-wrapper>\n </div>\n </a>\n <div class=\"dt-leftbar-row__omega\">\n <slot name=\"right\" />\n <div class=\"dt-leftbar-row__action-container\">\n <dt-badge\n v-if=\"showUnreadCount\"\n class=\"dt-leftbar-row__unread-badge\"\n data-qa=\"dt-leftbar-row-unread-badge\"\n kind=\"count\"\n type=\"bulletin\"\n >\n {{ unreadCount }}\n </dt-badge>\n <dt-button\n class=\"dt-leftbar-row__action\"\n data-qa=\"dt-leftbar-row-action-button\"\n :aria-label=\"menuButtonAriaLabel\"\n importance=\"clear\"\n size=\"xs\"\n circle\n @click.stop=\"$emit('click-menu', $event)\"\n >\n <template #icon>\n <dt-icon-chevron-down size=\"100\" />\n </template>\n </dt-button>\n </div>\n </div>\n </div>\n <div class=\"dt-leftbar-row__bottom\">\n <slot name=\"timer\" />\n </div>\n </div>\n</template>\n\n<script>\nimport { DtBadge } from '@/components/badge';\nimport { DtButton } from '@/components/button';\nimport DtIconHeadphones from '@dialpad/dialtone-icons/vue2/headphones';\nimport DtIconChevronDown from '@dialpad/dialtone-icons/vue2/chevron-down';\nimport DtEmojiTextWrapper from '@/components/emoji_text_wrapper/emoji_text_wrapper.vue';\nimport { safeConcatStrings } from '@/common/utils';\n\nexport default {\n name: 'DtRecipeGeneralRow',\n\n components: {\n DtButton,\n DtBadge,\n DtEmojiTextWrapper,\n DtIconHeadphones,\n DtIconChevronDown,\n },\n\n inheritAttrs: false,\n\n props: {\n /**\n * Will be read out by a screen reader upon focus of this row. If not defined \"description\" will be read.\n */\n ariaLabel: {\n type: String,\n default: '',\n },\n\n /**\n * Text displayed next to the icon. Required.\n */\n description: {\n type: String,\n required: true,\n },\n\n /**\n * Determines if the row is selected\n */\n selected: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Number of unread messages\n */\n unreadCount: {\n type: Number,\n default: 0,\n },\n\n /**\n * Aria label for the menu button.\n */\n menuButtonAriaLabel: {\n type: String,\n required: true,\n },\n },\n\n emits: [\n /**\n * Native click event on the row itself\n *\n * @event click\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click',\n\n /**\n * Menu button clicked\n *\n * @event call\n * @type {PointerEvent | KeyboardEvent}\n */\n 'click-menu',\n ],\n\n data () {\n return {\n labelWidth: 'auto',\n };\n },\n\n computed: {\n leftbarContactCentersRowClasses () {\n return [\n 'dt-leftbar-row',\n 'dt-leftbar-row--contact-centers',\n {\n 'dt-leftbar-row--unread-count': this.showUnreadCount,\n 'dt-leftbar-row--selected': this.selected,\n },\n ];\n },\n\n getAriaLabel () {\n return this.ariaLabel\n ? this.ariaLabel\n : safeConcatStrings([this.description, this.unreadCountTooltip]);\n },\n\n showUnreadCount () {\n return this.unreadCount > 0;\n },\n },\n\n watch: {\n $props: {\n deep: true,\n handler () {\n this.adjustLabelWidth();\n },\n },\n },\n\n mounted () {\n this.resizeObserver = new ResizeObserver(this.adjustLabelWidth);\n this.resizeObserver.observe(this.$el);\n this.adjustLabelWidth();\n },\n\n beforeDestroy: function () {\n this.resizeObserver.disconnect();\n },\n\n methods: {\n adjustLabelWidth () {\n const labelWidth = this.$el?.querySelector('.dt-leftbar-row__primary')?.clientWidth || 0;\n const omegaWidth = this.$el?.querySelector('.dt-leftbar-row__omega')?.clientWidth || 0;\n const alphaWidth = this.$el?.querySelector('.dt-leftbar-row__alpha')?.clientWidth || 0;\n const paddings = 12;\n this.labelWidth = labelWidth - (omegaWidth + alphaWidth + paddings) + 'px';\n },\n },\n};\n</script>\n\n<style lang=\"less\" scoped>\n@import \"../style/leftbar_row.less\";\n</style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAiFA,MAAA,YAAA;AAAA,EACA,MAAA;AAAA,EAEA,YAAA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,cAAA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA,IAIA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAKA,qBAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAQA;AAAA,EACA;AAAA,EAEA,OAAA;AACA,WAAA;AAAA,MACA,YAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AAAA,IACA,kCAAA;AACA,aAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,UACA,gCAAA,KAAA;AAAA,UACA,4BAAA,KAAA;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IAEA,eAAA;AACA,aAAA,KAAA,YACA,KAAA,YACA,kBAAA,CAAA,KAAA,aAAA,KAAA,kBAAA,CAAA;AAAA,IACA;AAAA,IAEA,kBAAA;AACA,aAAA,KAAA,cAAA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,OAAA;AAAA,IACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AACA,aAAA,iBAAA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAAA,EAEA,UAAA;AACA,SAAA,iBAAA,IAAA,eAAA,KAAA,gBAAA;AACA,SAAA,eAAA,QAAA,KAAA,GAAA;AACA,SAAA,iBAAA;AAAA,EACA;AAAA,EAEA,eAAA,WAAA;AACA,SAAA,eAAA;EACA;AAAA,EAEA,SAAA;AAAA,IACA,mBAAA;;AACA,YAAA,eAAA,gBAAA,QAAA,mBAAA,cAAA,gCAAA,mBAAA,gBAAA;AACA,YAAA,eAAA,gBAAA,QAAA,mBAAA,cAAA,8BAAA,mBAAA,gBAAA;AACA,YAAA,eAAA,gBAAA,QAAA,mBAAA,cAAA,8BAAA,mBAAA,gBAAA;AACA,YAAA,WAAA;AACA,WAAA,aAAA,cAAA,aAAA,aAAA,YAAA;AAAA,IACA;AAAA,EACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/style.css CHANGED
@@ -454,6 +454,25 @@
454
454
  line-height: var(--dt-font-line-height-400);
455
455
  font-weight: var(--dt-font-weight-medium);
456
456
  }
457
+ .dt-leftbar-row__container--off-duty[data-v-ca5d7362] {
458
+ border-radius: var(--dt-size-radius-500);
459
+ background-color: var(--dt-badge-color-background-critical);
460
+ border: var(--dt-size-100) solid var(--dt-color-border-subtle);
461
+ }
462
+ .dt-leftbar-row__container--off-duty[data-v-ca5d7362] .dt-leftbar-row__primary {
463
+ margin: calc(var(--dt-size-100) * -1);
464
+ }
465
+ .dt-leftbar-row--contact-centers[data-v-ca5d7362] .dt-leftbar-row__alpha {
466
+ padding-right: var(--dt-space-450);
467
+ padding-left: var(--dt-space-450);
468
+ }
469
+ .dt-leftbar-row--contact-centers .dt-leftbar-row__action-container[data-v-ca5d7362] {
470
+ display: inline-flex;
471
+ align-items: center;
472
+ justify-content: flex-end;
473
+ min-width: var(--dt-size-600);
474
+ height: var(--dt-size-500);
475
+ }
457
476
  .dt-leftbar-row[data-v-ca5d7362] .dt-leftbar-row__description {
458
477
  display: block;
459
478
  font-weight: var(--leftbar-row-description-font-weight);
@@ -535,6 +554,297 @@
535
554
  opacity: 90%;
536
555
  }
537
556
  }
557
+ .dt-leftbar-row[data-v-f44e0386] {
558
+ --leftbar-row-color-foreground: var(--dt-theme-sidebar-color-foreground);
559
+ --leftbar-row-color-background: var(--dt-theme-sidebar-row-color-background);
560
+ --leftbar-row-radius: var(--dt-size-radius-pill);
561
+ --leftbar-row-opacity: 100%;
562
+ --leftbar-row-alpha-color-foreground: var(--dt-theme-sidebar-icon-color-foreground);
563
+ --leftbar-row-alpha-width: calc(var(--dt-size-300) * 10);
564
+ --leftbar-row-alpha-height: calc(var(--dt-size-300) * 9);
565
+ --leftbar-row-omega-height: var(--leftbar-row-alpha-height);
566
+ --leftbar-row-unread-badge-display: inline-flex;
567
+ --leftbar-row-description-color-foreground: var(--dt-theme-sidebar-color-foreground);
568
+ --leftbar-row-description-font-weight: var(--dt-font-weight-normal);
569
+ --leftbar-row-description-font-size: var(--dt-font-size-200);
570
+ --leftbar-row-description-line-height: var(--dt-font-line-height-200);
571
+ --leftbar-row-status-color-foreground: var(--dt-theme-sidebar-status-color-foreground);
572
+ --leftbar-row-status-font-size: var(--dt-font-size-100);
573
+ --leftbar-row-status-line-height: var(--dt-font-line-height-100);
574
+ --leftbar-row-action-position-right: var(--dt-size-400);
575
+ --leftbar-row-action-position-bottom: 50%;
576
+ --leftbar-row-action-width: var(--dt-size-550);
577
+ --leftbar-row-action-height: var(--leftbar-row-action-width);
578
+ position: relative;
579
+ opacity: var(--leftbar-row-opacity);
580
+ display: flex;
581
+ background-color: var(--dt-theme-sidebar-row-color-background);
582
+ border-radius: var(--leftbar-row-radius);
583
+ transition-duration: var(--td200);
584
+ transition-property: background-color, border, box-shadow;
585
+ transition-timing-function: var(--ttf-out-quint);
586
+ cursor: pointer;
587
+ }
588
+ .dt-leftbar-row[data-v-f44e0386]:not(.dt-leftbar-row--no-action):hover,
589
+ .dt-leftbar-row[data-v-f44e0386]:not(.dt-leftbar-row--no-action):focus-within {
590
+ --leftbar-row-unread-badge-display: none;
591
+ }
592
+ .dt-leftbar-row[data-v-f44e0386]:not(.dt-leftbar-row--no-action):hover .dt-leftbar-row__action,
593
+ .dt-leftbar-row[data-v-f44e0386]:not(.dt-leftbar-row--no-action):focus-within .dt-leftbar-row__action {
594
+ display: inline-flex;
595
+ }
596
+ .dt-leftbar-row[data-v-f44e0386]:not(.dt-leftbar-row--no-action):hover .dt-leftbar-row__action-button,
597
+ .dt-leftbar-row[data-v-f44e0386]:not(.dt-leftbar-row--no-action):focus-within .dt-leftbar-row__action-button {
598
+ opacity: 1;
599
+ }
600
+ .dt-leftbar-row[data-v-f44e0386]:hover,
601
+ .dt-leftbar-row[data-v-f44e0386]:focus-within {
602
+ --leftbar-row-color-background: var(--dt-theme-sidebar-row-color-background-hover);
603
+ }
604
+ .dt-leftbar-row[data-v-f44e0386]:hover .d-presence,
605
+ .dt-leftbar-row[data-v-f44e0386]:focus-within .d-presence {
606
+ --presence-color-border-base: var(--dt-color-black-200);
607
+ }
608
+ .dt-leftbar-row[data-v-f44e0386]:hover .d-avatar__count,
609
+ .dt-leftbar-row[data-v-f44e0386]:focus-within .d-avatar__count {
610
+ --avatar-count-color-shadow: var(--dt-theme-sidebar-selected-row-color-background);
611
+ }
612
+ .dt-leftbar-row--has-unread[data-v-f44e0386] {
613
+ --leftbar-row-description-font-weight: var(--dt-font-weight-bold);
614
+ --leftbar-row-description-color-foreground: var(--dt-theme-sidebar-color-foreground-unread);
615
+ --leftbar-row-alpha-color-foreground: var(--dt-theme-sidebar-color-foreground-unread);
616
+ }
617
+ .dt-leftbar-row--unread-count[data-v-f44e0386] .dt-leftbar-row__action {
618
+ display: none;
619
+ }
620
+ .dt-leftbar-row--muted[data-v-f44e0386] {
621
+ --leftbar-row-opacity: 60%;
622
+ }
623
+ .dt-leftbar-row--selected[data-v-f44e0386] {
624
+ --leftbar-row-color-background: var(--dt-theme-sidebar-selected-row-color-background);
625
+ --leftbar-row-description-color-foreground: var(--dt-theme-sidebar-selected-row-color-foreground);
626
+ }
627
+ .dt-leftbar-row--selected[data-v-f44e0386] .d-presence {
628
+ --presence-color-border-base: var(--dt-color-black-200);
629
+ }
630
+ .dt-leftbar-row--selected[data-v-f44e0386] .d-avatar__count {
631
+ --avatar-count-color-shadow: var(--dt-theme-sidebar-selected-row-color-background);
632
+ }
633
+ .dt-leftbar-row__is-typing[data-v-f44e0386] {
634
+ --is-typing-size-shape: var(--dt-size-550);
635
+ height: var(--is-typing-size-shape);
636
+ width: var(--is-typing-size-shape);
637
+ position: absolute;
638
+ display: flex;
639
+ align-items: center;
640
+ justify-content: center;
641
+ gap: 2px;
642
+ border-radius: var(--dt-size-radius-pill);
643
+ opacity: 0.75;
644
+ }
645
+ .dt-leftbar-row__is-typing span[data-v-f44e0386] {
646
+ transition: all 500ms ease;
647
+ background: var(--dt-color-surface-strong);
648
+ height: 4px;
649
+ width: 4px;
650
+ display: inline-block;
651
+ padding: 0;
652
+ opacity: 0.3;
653
+ border-radius: var(--dt-size-radius-pill);
654
+ animation: wave-f44e0386 1.5s ease infinite;
655
+ }
656
+ .dt-leftbar-row__is-typing span[data-v-f44e0386]:nth-child(1) {
657
+ animation-delay: 0ms;
658
+ }
659
+ .dt-leftbar-row__is-typing span[data-v-f44e0386]:nth-child(2) {
660
+ animation-delay: var(--td100);
661
+ }
662
+ .dt-leftbar-row__is-typing span[data-v-f44e0386]:nth-child(3) {
663
+ animation-delay: var(--td200);
664
+ }
665
+ .dt-leftbar-row__primary[data-v-f44e0386] {
666
+ display: flex;
667
+ align-items: center;
668
+ flex: 1;
669
+ width: 100%;
670
+ text-align: left;
671
+ background-color: var(--leftbar-row-color-background);
672
+ color: var(--leftbar-row-color-foreground);
673
+ text-decoration: none;
674
+ appearance: none;
675
+ font-size: inherit;
676
+ line-height: inherit;
677
+ margin: 0;
678
+ border: 0;
679
+ padding: 0;
680
+ border-radius: var(--leftbar-row-radius);
681
+ }
682
+ .dt-leftbar-row__primary[data-v-f44e0386]:active {
683
+ --leftbar-row-color-background: var(--dt-theme-sidebar-row-color-background-active);
684
+ }
685
+ .dt-leftbar-row__primary[data-v-f44e0386]:focus-visible {
686
+ box-shadow: var(--dt-shadow-focus-inset);
687
+ }
688
+ .dt-leftbar-row__action-button[data-v-f44e0386] {
689
+ opacity: 0;
690
+ width: var(--leftbar-row-action-width);
691
+ height: var(--leftbar-row-action-height);
692
+ }
693
+ .dt-leftbar-row__alpha[data-v-f44e0386] {
694
+ color: var(--leftbar-row-alpha-color-foreground);
695
+ display: flex;
696
+ box-sizing: border-box;
697
+ justify-content: center;
698
+ align-items: center;
699
+ padding-left: var(--dt-space-400);
700
+ padding-right: var(--dt-space-400);
701
+ width: var(--leftbar-row-alpha-width);
702
+ height: var(--leftbar-row-alpha-height);
703
+ border-radius: var(--leftbar-row-radius) 0 0 var(--leftbar-row-radius);
704
+ }
705
+ .dt-leftbar-row__label[data-v-f44e0386] {
706
+ flex: 0 1;
707
+ min-width: 0;
708
+ }
709
+ .dt-leftbar-row__omega[data-v-f44e0386] {
710
+ position: absolute;
711
+ display: flex;
712
+ right: var(--leftbar-row-action-position-right);
713
+ top: var(--leftbar-row-action-position-bottom);
714
+ transform: translateY(calc(var(--leftbar-row-action-position-bottom) * -1));
715
+ gap: var(--dt-space-300);
716
+ justify-content: flex-end;
717
+ align-items: center;
718
+ box-sizing: border-box;
719
+ border-radius: var(--leftbar-row-radius);
720
+ }
721
+ .dt-leftbar-row__unread-badge[data-v-f44e0386] {
722
+ display: var(--leftbar-row-unread-badge-display);
723
+ }
724
+ .dt-leftbar-row__active-voice[data-v-f44e0386] {
725
+ color: var(--dt-color-purple-400);
726
+ display: inline-flex;
727
+ -webkit-animation-name: opacity-pulsate-f44e0386;
728
+ -webkit-animation-duration: 1s;
729
+ -webkit-animation-iteration-count: infinite;
730
+ -webkit-animation-fill-mode: both;
731
+ -moz-animation-name: opacity-pulsate-f44e0386;
732
+ -moz-animation-duration: 1s;
733
+ -moz-animation-iteration-count: infinite;
734
+ -moz-animation-fill-mode: both;
735
+ animation-name: opacity-pulsate-f44e0386;
736
+ animation-duration: 1s;
737
+ animation-iteration-count: infinite;
738
+ animation-fill-mode: both;
739
+ }
740
+ .dt-leftbar-row__dnd[data-v-f44e0386] {
741
+ padding-top: var(--dt-space-200);
742
+ padding-right: var(--dt-space-300);
743
+ color: var(--dt-color-foreground-tertiary);
744
+ font-size: var(--dt-font-size-100);
745
+ line-height: var(--dt-font-line-height-400);
746
+ font-weight: var(--dt-font-weight-medium);
747
+ }
748
+ .dt-leftbar-row__container--off-duty[data-v-f44e0386] {
749
+ border-radius: var(--dt-size-radius-500);
750
+ background-color: var(--dt-badge-color-background-critical);
751
+ border: var(--dt-size-100) solid var(--dt-color-border-subtle);
752
+ }
753
+ .dt-leftbar-row__container--off-duty[data-v-f44e0386] .dt-leftbar-row__primary {
754
+ margin: calc(var(--dt-size-100) * -1);
755
+ }
756
+ .dt-leftbar-row--contact-centers[data-v-f44e0386] .dt-leftbar-row__alpha {
757
+ padding-right: var(--dt-space-450);
758
+ padding-left: var(--dt-space-450);
759
+ }
760
+ .dt-leftbar-row--contact-centers .dt-leftbar-row__action-container[data-v-f44e0386] {
761
+ display: inline-flex;
762
+ align-items: center;
763
+ justify-content: flex-end;
764
+ min-width: var(--dt-size-600);
765
+ height: var(--dt-size-500);
766
+ }
767
+ .dt-leftbar-row[data-v-f44e0386] .dt-leftbar-row__description {
768
+ display: block;
769
+ font-weight: var(--leftbar-row-description-font-weight);
770
+ font-size: var(--leftbar-row-description-font-size);
771
+ line-height: var(--leftbar-row-description-line-height);
772
+ color: var(--leftbar-row-description-color-foreground);
773
+ overflow: hidden;
774
+ text-overflow: ellipsis;
775
+ white-space: nowrap;
776
+ }
777
+ .dt-leftbar-row[data-v-f44e0386] .dt-leftbar-row__status {
778
+ display: block;
779
+ color: var(--leftbar-row-status-color-foreground);
780
+ font-size: var(--leftbar-row-status-font-size);
781
+ line-height: var(--leftbar-row-status-line-height);
782
+ padding-bottom: var(--dt-space-100);
783
+ overflow: hidden;
784
+ text-overflow: ellipsis;
785
+ white-space: nowrap;
786
+ }
787
+ .dt-leftbar-row[data-v-f44e0386] .dt-leftbar-row__meta-context ~ .dt-leftbar-row__meta-custom:not(:empty):before {
788
+ content: ' • ';
789
+ color: var(--dt-theme-sidebar-status-color-foreground);
790
+ }
791
+ .dt-leftbar-row__icon-cc[data-v-f44e0386] {
792
+ border-radius: var(--dt-size-200);
793
+ width: calc(var(--dt-size-300) * 3.5);
794
+ height: calc(var(--dt-size-300) * 3.5);
795
+ }
796
+ .opacity-pulsate[data-v-f44e0386] {
797
+ -webkit-animation-name: opacity-pulsate-f44e0386;
798
+ -webkit-animation-duration: 1s;
799
+ -webkit-animation-iteration-count: infinite;
800
+ -webkit-animation-fill-mode: both;
801
+ -moz-animation-name: opacity-pulsate-f44e0386;
802
+ -moz-animation-duration: 1s;
803
+ -moz-animation-iteration-count: infinite;
804
+ -moz-animation-fill-mode: both;
805
+ animation-name: opacity-pulsate-f44e0386;
806
+ animation-duration: 1s;
807
+ animation-iteration-count: infinite;
808
+ animation-fill-mode: both;
809
+ }
810
+ @-webkit-keyframes opacity-pulsate-f44e0386 {
811
+ 0%,
812
+ 100% {
813
+ opacity: 0.2;
814
+ }
815
+ 50% {
816
+ opacity: 1;
817
+ }
818
+ }
819
+ @-moz-keyframes opacity-pulsate-f44e0386 {
820
+ 0%,
821
+ 100% {
822
+ opacity: 0.2;
823
+ }
824
+ 50% {
825
+ opacity: 1;
826
+ }
827
+ }
828
+ @keyframes opacity-pulsate-f44e0386 {
829
+ 0%,
830
+ 100% {
831
+ opacity: 0.2;
832
+ }
833
+ 50% {
834
+ opacity: 1;
835
+ }
836
+ }
837
+ @keyframes wave-f44e0386 {
838
+ 0%,
839
+ 50%,
840
+ 100% {
841
+ transform: translate(0, 0);
842
+ }
843
+ 10% {
844
+ transform: translate(0, -5px);
845
+ opacity: 90%;
846
+ }
847
+ }
538
848
  .dt-recipe-callbox[data-v-ef08f46e] {
539
849
  padding: 0;
540
850
  color: var(--dt-color-foreground-primary);
@@ -65,6 +65,7 @@ export * from "./recipes/conversation_view/time_pill";
65
65
  export * from "./recipes/header/settings_menu_button";
66
66
  export * from "./recipes/item_layout/contact_info";
67
67
  export * from "./recipes/leftbar/callbox";
68
+ export * from "./recipes/leftbar/contact_centers_row";
68
69
  export * from "./recipes/leftbar/contact_row";
69
70
  export * from "./recipes/leftbar/general_row";
70
71
  export * from "./recipes/leftbar/group_row";
@@ -0,0 +1,90 @@
1
+ declare const _default: import("vue").DefineComponent<{
2
+ /**
3
+ * Will be read out by a screen reader upon focus of this row. If not defined "description" will be read.
4
+ */
5
+ ariaLabel: {
6
+ type: StringConstructor;
7
+ default: string;
8
+ };
9
+ /**
10
+ * Text displayed next to the icon. Required.
11
+ */
12
+ description: {
13
+ type: StringConstructor;
14
+ required: true;
15
+ };
16
+ /**
17
+ * Determines if the row is selected
18
+ */
19
+ selected: {
20
+ type: BooleanConstructor;
21
+ default: boolean;
22
+ };
23
+ /**
24
+ * Number of unread messages
25
+ */
26
+ unreadCount: {
27
+ type: NumberConstructor;
28
+ default: number;
29
+ };
30
+ /**
31
+ * Aria label for the menu button.
32
+ */
33
+ menuButtonAriaLabel: {
34
+ type: StringConstructor;
35
+ required: true;
36
+ };
37
+ }, {}, {
38
+ labelWidth: string;
39
+ }, {
40
+ leftbarContactCentersRowClasses(): (string | {
41
+ 'dt-leftbar-row--unread-count': boolean;
42
+ 'dt-leftbar-row--selected': any;
43
+ })[];
44
+ getAriaLabel(): any;
45
+ showUnreadCount(): boolean;
46
+ }, {
47
+ adjustLabelWidth(): void;
48
+ }, import("vue/types/v3-component-options.js").ComponentOptionsMixin, import("vue/types/v3-component-options.js").ComponentOptionsMixin, ("click" | "click-menu")[], string, Readonly<import("vue").ExtractPropTypes<{
49
+ /**
50
+ * Will be read out by a screen reader upon focus of this row. If not defined "description" will be read.
51
+ */
52
+ ariaLabel: {
53
+ type: StringConstructor;
54
+ default: string;
55
+ };
56
+ /**
57
+ * Text displayed next to the icon. Required.
58
+ */
59
+ description: {
60
+ type: StringConstructor;
61
+ required: true;
62
+ };
63
+ /**
64
+ * Determines if the row is selected
65
+ */
66
+ selected: {
67
+ type: BooleanConstructor;
68
+ default: boolean;
69
+ };
70
+ /**
71
+ * Number of unread messages
72
+ */
73
+ unreadCount: {
74
+ type: NumberConstructor;
75
+ default: number;
76
+ };
77
+ /**
78
+ * Aria label for the menu button.
79
+ */
80
+ menuButtonAriaLabel: {
81
+ type: StringConstructor;
82
+ required: true;
83
+ };
84
+ }>>, {
85
+ ariaLabel: string;
86
+ selected: boolean;
87
+ unreadCount: number;
88
+ }>;
89
+ export default _default;
90
+ //# sourceMappingURL=contact_centers_row.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contact_centers_row.vue.d.ts","sourceRoot":"","sources":["../../../../../recipes/leftbar/contact_centers_row/contact_centers_row.vue.js"],"names":[],"mappings":";IAuBI;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;;;;;;;;;;;;;IAlCH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG;;;;;IAMH;;OAEG"}
@@ -0,0 +1,2 @@
1
+ export { default as DtRecipeContactCentersRow } from "./contact_centers_row.vue";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../recipes/leftbar/contact_centers_row/index.js"],"names":[],"mappings":""}
@@ -231,9 +231,9 @@ declare const _default: import("vue").DefineComponent<{
231
231
  selected: boolean;
232
232
  avatarSrc: string;
233
233
  avatarSeed: string;
234
- hasUnreads: boolean;
235
234
  unreadCount: string;
236
235
  unreadCountTooltip: string;
236
+ hasUnreads: boolean;
237
237
  hasCallButton: boolean;
238
238
  callButtonTooltip: string;
239
239
  isTyping: boolean;
@@ -264,9 +264,9 @@ declare const _default: import("vue").DefineComponent<{
264
264
  iconSize: string;
265
265
  muted: boolean;
266
266
  selected: boolean;
267
- hasUnreads: boolean;
268
267
  unreadCount: string;
269
268
  unreadCountTooltip: string;
269
+ hasUnreads: boolean;
270
270
  activeVoiceChat: boolean;
271
271
  dndText: string;
272
272
  dndTextTooltip: string;
@@ -104,9 +104,9 @@ declare const _default: import("vue").DefineComponent<{
104
104
  };
105
105
  }>>, {
106
106
  selected: boolean;
107
- hasUnreads: boolean;
108
107
  unreadCount: string;
109
108
  unreadCountTooltip: string;
109
+ hasUnreads: boolean;
110
110
  isTyping: boolean;
111
111
  groupCountText: string;
112
112
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dialpad/dialtone-vue",
3
- "version": "2.130.4",
3
+ "version": "2.131.0",
4
4
  "description": "Vue component library for Dialpad's design system Dialtone",
5
5
  "files": [
6
6
  "dist"
@@ -81,8 +81,8 @@
81
81
  "vue-tsc": "^1.8.25",
82
82
  "yo": "^5.0.0",
83
83
  "yorkie": "^2.0.0",
84
- "@dialpad/dialtone-css": "8.31.1",
85
- "@dialpad/generator-dialtone": "0.1.0"
84
+ "@dialpad/generator-dialtone": "0.1.0",
85
+ "@dialpad/dialtone-css": "8.31.1"
86
86
  },
87
87
  "peerDependencies": {
88
88
  "vue": ">=2.6",