@dialpad/dialtone-vue 3.47.0 → 3.49.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.
@@ -1209,6 +1209,7 @@ __webpack_require__.d(__webpack_exports__, {
1209
1209
  "DtRecipeIvrNode": () => (/* reexport */ ivr_node),
1210
1210
  "DtRecipeTopBannerInfo": () => (/* reexport */ top_banner_info),
1211
1211
  "DtRootLayout": () => (/* reexport */ root_layout),
1212
+ "DtScroller": () => (/* reexport */ DtScroller),
1212
1213
  "DtSelectMenu": () => (/* reexport */ select_menu),
1213
1214
  "DtSkeleton": () => (/* reexport */ skeleton_skeleton),
1214
1215
  "DtSkeletonListItem": () => (/* reexport */ skeleton_list_item),
@@ -1301,7 +1302,7 @@ if (typeof window !== 'undefined') {
1301
1302
 
1302
1303
  ;// CONCATENATED MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
1303
1304
  const external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject = require("vue");
1304
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/avatar/avatar.vue?vue&type=template&id=0795f071
1305
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/avatar/avatar.vue?vue&type=template&id=ac8c0ad8
1305
1306
 
1306
1307
  const _hoisted_1 = ["id"];
1307
1308
  const _hoisted_2 = {
@@ -1310,7 +1311,7 @@ const _hoisted_2 = {
1310
1311
  };
1311
1312
  const _hoisted_3 = {
1312
1313
  key: 0,
1313
- class: "d-avatar__count",
1314
+ class: "d-avatar__count d-zi-base1",
1314
1315
  "data-qa": "dt-avatar-count"
1315
1316
  };
1316
1317
  function render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -1323,18 +1324,18 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1323
1324
  "data-qa": "dt-avatar"
1324
1325
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", _hoisted_2, [$options.showDefaultSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default", {
1325
1326
  key: 0
1326
- }) : $options.showInitials ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("span", {
1327
+ }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), $options.showInitials ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("span", {
1327
1328
  key: 1,
1328
- class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)($data.AVATAR_KIND_MODIFIERS.initials)
1329
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["d-ps-absolute d-zi-base", $data.AVATAR_KIND_MODIFIERS.initials])
1329
1330
  }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($data.formattedInitials), 3)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 512), $options.showGroup ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("span", _hoisted_3, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($options.formattedGroup), 1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), $props.presence && !$options.showGroup ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_presence, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
1330
1331
  key: 1,
1331
1332
  presence: $props.presence,
1332
- class: ['d-avatar__presence', $data.AVATAR_PRESENCE_SIZE_MODIFIERS[$props.size]]
1333
+ class: ["d-zi-base1", ['d-avatar__presence', $data.AVATAR_PRESENCE_SIZE_MODIFIERS[$props.size]]]
1333
1334
  }, $props.presenceProps, {
1334
1335
  "data-qa": "dt-presence"
1335
1336
  }), null, 16, ["presence", "class"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 14, _hoisted_1);
1336
1337
  }
1337
- ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=template&id=0795f071
1338
+ ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=template&id=ac8c0ad8
1338
1339
 
1339
1340
  ;// CONCATENATED MODULE: ./common/constants.js
1340
1341
  /* TODO: Move and sort these in a constants directory
@@ -1410,7 +1411,8 @@ const DEFAULT_PREFIX = 'dt';
1410
1411
 
1411
1412
  const seedrandom = __webpack_require__(377);
1412
1413
 
1413
- let UNIQUE_ID_COUNTER = 0; // selector to find focusable not hidden inputs
1414
+ let UNIQUE_ID_COUNTER = 0;
1415
+ let TIMER; // selector to find focusable not hidden inputs
1414
1416
 
1415
1417
  const FOCUSABLE_SELECTOR_NOT_HIDDEN = 'input:not([type=hidden]):not(:disabled)'; // selector to find focusable not disables elements
1416
1418
 
@@ -1534,7 +1536,7 @@ function hasSlotContent(slot) {
1534
1536
  */
1535
1537
 
1536
1538
  const kebabCaseToPascalCase = string => {
1537
- return string.toLowerCase().split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
1539
+ return string === null || string === void 0 ? void 0 : string.toLowerCase().split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
1538
1540
  };
1539
1541
  /**
1540
1542
  * Transform a string from PascalCase to kebab-case
@@ -1552,6 +1554,17 @@ const extractVueListeners = attrs => {
1552
1554
  });
1553
1555
  return Object.fromEntries(listeners);
1554
1556
  };
1557
+ /*
1558
+ * Set's a global timer to debounce the execution of a function.
1559
+ * @param { object } func - the function that is going to be called after timeout
1560
+ * @param { number } [timeout=300] timeout
1561
+ * */
1562
+
1563
+ function debounce(func) {
1564
+ let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;
1565
+ clearTimeout(TIMER);
1566
+ TIMER = setTimeout(func, timeout);
1567
+ }
1555
1568
  /* harmony default export */ const utils = ({
1556
1569
  getUniqueString,
1557
1570
  getRandomElement,
@@ -1562,7 +1575,8 @@ const extractVueListeners = attrs => {
1562
1575
  htmlFragment,
1563
1576
  flushPromises,
1564
1577
  kebabCaseToPascalCase,
1565
- extractVueListeners
1578
+ extractVueListeners,
1579
+ debounce
1566
1580
  });
1567
1581
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/presence/presence.vue?vue&type=template&id=77957bb3
1568
1582
 
@@ -1667,6 +1681,13 @@ const AVATAR_PRESENCE_SIZE_MODIFIERS = {
1667
1681
  md: 'd-avatar__presence--md',
1668
1682
  lg: 'd-avatar__presence--lg'
1669
1683
  };
1684
+ const AVATAR_PRESENCE_STATES = {
1685
+ NONE: null,
1686
+ BUSY: 'busy',
1687
+ AWAY: 'away',
1688
+ OFFLINE: 'offline',
1689
+ ACTIVE: 'active'
1690
+ };
1670
1691
  const AVATAR_ICON_SIZES = {
1671
1692
  xs: '100',
1672
1693
  sm: '200',
@@ -1754,7 +1775,10 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1754
1775
  */
1755
1776
  presence: {
1756
1777
  type: String,
1757
- default: null
1778
+ default: AVATAR_PRESENCE_STATES.NONE,
1779
+ validator: state => {
1780
+ return Object.values(AVATAR_PRESENCE_STATES).includes(state);
1781
+ }
1758
1782
  },
1759
1783
 
1760
1784
  /**
@@ -1796,13 +1820,14 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1796
1820
  data() {
1797
1821
  return {
1798
1822
  // initials, image or icon
1799
- kind: 'image',
1823
+ kind: null,
1800
1824
  AVATAR_SIZE_MODIFIERS: AVATAR_SIZE_MODIFIERS,
1801
1825
  AVATAR_KIND_MODIFIERS: AVATAR_KIND_MODIFIERS,
1802
1826
  AVATAR_PRESENCE_SIZE_MODIFIERS: AVATAR_PRESENCE_SIZE_MODIFIERS,
1803
1827
  imageLoadedSuccessfully: null,
1804
1828
  slottedInitials: '',
1805
- formattedInitials: ''
1829
+ formattedInitials: '',
1830
+ initializing: false
1806
1831
  };
1807
1832
  },
1808
1833
 
@@ -1815,11 +1840,11 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1815
1840
  },
1816
1841
 
1817
1842
  showDefaultSlot() {
1818
- return this.kind !== 'initials' && this.imageLoadedSuccessfully !== false;
1843
+ return this.kind !== 'initials' || this.kind === 'image' && this.imageLoadedSuccessfully === true;
1819
1844
  },
1820
1845
 
1821
1846
  showInitials() {
1822
- return this.kind === 'initials' || this.initials;
1847
+ return this.kind === 'initials' || this.kind === 'image' && this.initials;
1823
1848
  },
1824
1849
 
1825
1850
  showGroup() {
@@ -1852,28 +1877,27 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1852
1877
  },
1853
1878
 
1854
1879
  updated() {
1855
- if (this.kind === 'initials') {
1856
- this.slottedInitials = this.$el.children[0].textContent;
1857
- this.formatInitials(this.slottedInitials);
1858
- }
1880
+ this.init();
1859
1881
  },
1860
1882
 
1861
1883
  methods: {
1862
- init() {
1884
+ async init() {
1885
+ if (this.initializing) return;
1886
+ this.kind = null;
1887
+ await this.$nextTick();
1863
1888
  const firstChild = this.$refs.canvas.children[0] || this.$refs.canvas;
1864
-
1865
- if (!firstChild) {
1866
- return;
1867
- }
1868
-
1889
+ this.formatInitials(this.initials);
1869
1890
  this.setKind(firstChild);
1870
1891
  this.kindHandler(firstChild);
1892
+ this.initializing = true;
1893
+ await this.$nextTick();
1894
+ this.initializing = false;
1871
1895
  },
1872
1896
 
1873
1897
  kindHandler(el) {
1874
1898
  switch (this.kind) {
1875
1899
  case 'image':
1876
- el.classList.add('d-avatar__image');
1900
+ el.classList.add('d-avatar__image', 'd-zi-base1');
1877
1901
  this.validateImageAttrsPresence();
1878
1902
  this.setImageListeners(el);
1879
1903
  break;
@@ -1883,25 +1907,27 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1883
1907
  break;
1884
1908
 
1885
1909
  case 'initials':
1910
+ if (!el.textContent) return;
1886
1911
  this.slottedInitials = el.textContent;
1887
- this.formatInitials(this.slottedInitials);
1912
+ this.formatInitials(this.slottedInitials.trim() || this.initials);
1888
1913
  break;
1889
1914
  }
1890
1915
  },
1891
1916
 
1892
1917
  setImageListeners(el) {
1893
- el.addEventListener('error', () => {
1894
- this.formatInitials(this.initials);
1895
- this.imageLoadedSuccessfully = false;
1918
+ el.addEventListener('load', () => this._loadedImageEventHandler(el), {
1919
+ once: true
1896
1920
  });
1897
- el.addEventListener('load', () => {
1898
- el.classList.add('d-avatar--image-loaded');
1899
- this.imageLoadedSuccessfully = true;
1921
+ el.addEventListener('error', () => this._erroredImageEventHandler(el), {
1922
+ once: true
1900
1923
  });
1901
1924
  },
1902
1925
 
1903
1926
  formatInitials(initials) {
1904
- if (!initials) return;
1927
+ if (!initials) {
1928
+ this.formattedInitials = '';
1929
+ return;
1930
+ }
1905
1931
 
1906
1932
  if (this.validatedSize === 'xs') {
1907
1933
  this.formattedInitials = '';
@@ -1913,7 +1939,7 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1913
1939
  },
1914
1940
 
1915
1941
  setKind(element) {
1916
- if (this.isSvgType(element)) {
1942
+ if (this.isIconType(element)) {
1917
1943
  this.kind = 'icon';
1918
1944
  return;
1919
1945
  }
@@ -1926,7 +1952,7 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1926
1952
  this.kind = 'initials';
1927
1953
  },
1928
1954
 
1929
- isSvgType(element) {
1955
+ isIconType(element) {
1930
1956
  var _element$tagName;
1931
1957
 
1932
1958
  return (element === null || element === void 0 ? void 0 : (_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toUpperCase()) === 'SVG';
@@ -1972,16 +1998,28 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1972
1998
  if (isSrcMissing || isAltMissing) {
1973
1999
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.warn)('src and alt attributes are required for image avatars', this);
1974
2000
  }
2001
+ },
2002
+
2003
+ _loadedImageEventHandler(el) {
2004
+ this.imageLoadedSuccessfully = true;
2005
+ el.classList.remove('d-d-none');
2006
+ el.classList.add('d-avatar--image-loaded');
2007
+ },
2008
+
2009
+ _erroredImageEventHandler(el) {
2010
+ this.imageLoadedSuccessfully = false;
2011
+ el.classList.remove('d-avatar--image-loaded');
2012
+ el.classList.add('d-d-none');
1975
2013
  }
1976
2014
 
1977
2015
  }
1978
2016
  });
1979
2017
  ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=script&lang=js
1980
2018
 
1981
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-74.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-74.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-74.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-74.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/avatar/avatar.vue?vue&type=style&index=0&id=0795f071&lang=less
2019
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-74.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-74.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-74.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-74.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/avatar/avatar.vue?vue&type=style&index=0&id=ac8c0ad8&lang=less
1982
2020
  // extracted by mini-css-extract-plugin
1983
2021
 
1984
- ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=style&index=0&id=0795f071&lang=less
2022
+ ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=style&index=0&id=ac8c0ad8&lang=less
1985
2023
 
1986
2024
  ;// CONCATENATED MODULE: ./components/avatar/avatar.vue
1987
2025
 
@@ -3048,7 +3086,7 @@ const notice_action_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(noti
3048
3086
 
3049
3087
  /* harmony default export */ const notice_action = (notice_action_exports_);
3050
3088
  ;// CONCATENATED MODULE: ./common/mixins/modal.js
3051
- const focusableAttrs = ':not(:disabled):not([aria-disabled="true"])';
3089
+ const focusableAttrs = ':not(:disabled):not([aria-disabled="true"]):not([role="presentation"])';
3052
3090
  const tabbableAttrs = `${focusableAttrs}:not([tabindex="-1"])`;
3053
3091
  const focusableElementsList = `button,[href],input,select,textarea,details,[tabindex]`;
3054
3092
  /**
@@ -7055,7 +7093,7 @@ function orderModifiers(modifiers) {
7055
7093
  }, []);
7056
7094
  }
7057
7095
  ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/debounce.js
7058
- function debounce(fn) {
7096
+ function debounce_debounce(fn) {
7059
7097
  var pending;
7060
7098
  return function () {
7061
7099
  if (!pending) {
@@ -7240,7 +7278,7 @@ function popperGenerator(generatorOptions) {
7240
7278
  },
7241
7279
  // Async and optimistically optimized update – it will not be executed if
7242
7280
  // not necessary (debounced to run at most once-per-tick)
7243
- update: debounce(function () {
7281
+ update: debounce_debounce(function () {
7244
7282
  return new Promise(function (resolve) {
7245
7283
  instance.forceUpdate();
7246
7284
  resolve(state);
@@ -11046,7 +11084,6 @@ const getArrowDetected = fn => ({
11046
11084
  ;// CONCATENATED MODULE: ./components/popover/tippy_utils.js
11047
11085
 
11048
11086
 
11049
-
11050
11087
  const BASE_TIPPY_DIRECTIONS = ['bottom', 'bottom-start', 'bottom-end', 'right', 'right-start', 'right-end', 'left', 'left-start', 'left-end', 'top', 'top-start', 'top-end'];
11051
11088
  const TIPPY_STICKY_VALUES = [true, false, 'reference', 'popper'];
11052
11089
  const tippy_utils_createTippy = (anchorElement, options) => {
@@ -11095,24 +11132,17 @@ const getPopperOptions = function () {
11095
11132
  };
11096
11133
  };
11097
11134
 
11098
- const createAnchor = (anchorWrapper, tabIndex) => {
11135
+ const createAnchor = anchorWrapper => {
11099
11136
  const span = document.createElement('span');
11100
- span.setAttribute('tabindex', tabIndex);
11101
11137
  span.innerText = anchorWrapper.innerText || '';
11102
11138
  anchorWrapper.innerText = '';
11103
11139
  anchorWrapper.appendChild(span);
11104
11140
  return span;
11105
11141
  };
11106
11142
 
11107
- const getAnchor = function (anchorWrapper) {
11108
- let tabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0';
11143
+ const getAnchor = anchorWrapper => {
11109
11144
  const anchor = anchorWrapper === null || anchorWrapper === void 0 ? void 0 : anchorWrapper.children[0];
11110
11145
  if (!anchor) return createAnchor(anchorWrapper);
11111
-
11112
- if (!findFirstFocusableNode(anchor)) {
11113
- anchor.setAttribute('tabindex', tabIndex);
11114
- }
11115
-
11116
11146
  return anchor;
11117
11147
  };
11118
11148
  const getContentWrapper = content => {
@@ -17423,16 +17453,17 @@ const toggle_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(togglevue_t
17423
17453
  /* harmony default export */ const toggle = (toggle_exports_);
17424
17454
  ;// CONCATENATED MODULE: ./components/toggle/index.js
17425
17455
 
17426
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/tooltip/tooltip.vue?vue&type=template&id=52eb174c
17456
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/tooltip/tooltip.vue?vue&type=template&id=1868931e
17427
17457
 
17428
- const tooltipvue_type_template_id_52eb174c_hoisted_1 = {
17458
+ const tooltipvue_type_template_id_1868931e_hoisted_1 = {
17429
17459
  "data-qa": "dt-tooltip-container"
17430
17460
  };
17431
- function tooltipvue_type_template_id_52eb174c_render(_ctx, _cache, $props, $setup, $data, $options) {
17461
+ function tooltipvue_type_template_id_1868931e_render(_ctx, _cache, $props, $setup, $data, $options) {
17432
17462
  const _component_dt_lazy_show = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-lazy-show");
17433
17463
 
17434
- return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", tooltipvue_type_template_id_52eb174c_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("a", {
17464
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", tooltipvue_type_template_id_1868931e_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("a", {
17435
17465
  ref: "anchor",
17466
+ tabindex: "-1",
17436
17467
  role: "presentation",
17437
17468
  "data-qa": "dt-tooltip-anchor",
17438
17469
  onFocusin: _cache[0] || (_cache[0] = function () {
@@ -17467,7 +17498,7 @@ function tooltipvue_type_template_id_52eb174c_render(_ctx, _cache, $props, $setu
17467
17498
  _: 3
17468
17499
  }, 16, ["id", "show", "appear", "transition", "class"])]);
17469
17500
  }
17470
- ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=template&id=52eb174c
17501
+ ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=template&id=1868931e
17471
17502
 
17472
17503
  ;// CONCATENATED MODULE: ./components/tooltip/tooltip_constants.js
17473
17504
  /*
@@ -17821,10 +17852,10 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
17821
17852
  });
17822
17853
  ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=script&lang=js
17823
17854
 
17824
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-74.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-74.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-74.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-74.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/tooltip/tooltip.vue?vue&type=style&index=0&id=52eb174c&lang=less
17855
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-74.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-74.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-74.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-74.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/tooltip/tooltip.vue?vue&type=style&index=0&id=1868931e&lang=less
17825
17856
  // extracted by mini-css-extract-plugin
17826
17857
 
17827
- ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=style&index=0&id=52eb174c&lang=less
17858
+ ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=style&index=0&id=1868931e&lang=less
17828
17859
 
17829
17860
  ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue
17830
17861
 
@@ -17834,7 +17865,7 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
17834
17865
  ;
17835
17866
 
17836
17867
 
17837
- const tooltip_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tooltipvue_type_script_lang_js, [['render',tooltipvue_type_template_id_52eb174c_render]])
17868
+ const tooltip_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tooltipvue_type_script_lang_js, [['render',tooltipvue_type_template_id_1868931e_render]])
17838
17869
 
17839
17870
  /* harmony default export */ const tooltip = (tooltip_exports_);
17840
17871
  ;// CONCATENATED MODULE: ./components/tooltip/index.js
@@ -18528,249 +18559,1577 @@ const stack_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(stackvue_typ
18528
18559
  /* harmony default export */ const stack = (stack_exports_);
18529
18560
  ;// CONCATENATED MODULE: ./components/stack/index.js
18530
18561
 
18531
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=bdafd0f4
18532
-
18533
- const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_1 = ["id"];
18534
- const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_2 = {
18535
- ref: "header"
18536
- };
18537
- const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_3 = ["onMouseleave", "onFocusout"];
18538
- const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_4 = {
18539
- ref: "footer"
18540
- };
18541
- function combobox_with_popovervue_type_template_id_bdafd0f4_render(_ctx, _cache, $props, $setup, $data, $options) {
18542
- const _component_combobox_loading_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-loading-list");
18543
-
18544
- const _component_combobox_empty_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-empty-list");
18545
-
18546
- const _component_dt_popover = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-popover");
18547
-
18548
- const _component_dt_combobox = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-combobox");
18549
-
18550
- return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_combobox, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
18551
- ref: "combobox",
18552
- loading: $props.loading,
18553
- label: $props.label,
18554
- "label-visible": $props.labelVisible,
18555
- size: $props.size,
18556
- description: $props.description,
18557
- "empty-list": $props.emptyList,
18558
- "empty-state-message": $props.emptyStateMessage,
18559
- "show-list": $data.isListShown,
18560
- "on-beginning-of-list": $props.onBeginningOfList,
18561
- "on-end-of-list": $props.onEndOfList,
18562
- "list-rendered-outside": true,
18563
- "list-id": $props.listId,
18564
- "data-qa": "dt-combobox"
18565
- }, $options.comboboxListeners), {
18566
- input: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref => {
18567
- let {
18568
- inputProps
18569
- } = _ref;
18570
- return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
18571
- id: $data.externalAnchor,
18572
- ref: "input",
18573
- onFocusin: _cache[0] || (_cache[0] = function () {
18574
- return $options.onFocusIn && $options.onFocusIn(...arguments);
18575
- }),
18576
- onKeydown: [_cache[1] || (_cache[1] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)($event => $options.openOnArrowKeyPress($event), ["up"])), _cache[2] || (_cache[2] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)($event => $options.openOnArrowKeyPress($event), ["down"]))]
18577
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "input", {
18578
- inputProps: inputProps,
18579
- onInput: $options.handleDisplayList
18580
- })], 40, combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_1)];
18581
- }),
18582
- list: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref2 => {
18583
- let {
18584
- opened,
18585
- listProps,
18586
- clearHighlightIndex
18587
- } = _ref2;
18588
- return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_popover, {
18589
- ref: "popover",
18590
- open: $data.isListShown,
18591
- "onUpdate:open": _cache[3] || (_cache[3] = $event => $data.isListShown = $event),
18592
- "hide-on-click": false,
18593
- "max-height": $props.maxHeight,
18594
- "max-width": $props.maxWidth,
18595
- offset: $props.popoverOffset,
18596
- sticky: $props.popoverSticky,
18597
- placement: "bottom-start",
18598
- "initial-focus-element": "none",
18599
- padding: "none",
18600
- role: "listbox",
18601
- "external-anchor": $data.externalAnchor,
18602
- "content-width": $props.contentWidth,
18603
- "content-appear": true,
18604
- "content-tabindex": null,
18605
- modal: false,
18606
- "auto-focus": false,
18607
- "append-to": $props.appendTo,
18608
- "visually-hidden-close-label": _ctx.visuallyHiddenCloseLabel,
18609
- "visually-hidden-close": _ctx.visuallyHiddenClose,
18610
- onOpened: opened
18611
- }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createSlots)({
18612
- content: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
18613
- ref: "listWrapper",
18614
- class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)([$data.DROPDOWN_PADDING_CLASSES[$props.padding], $props.listClass]),
18615
- onMouseleave: clearHighlightIndex,
18616
- onFocusout: clearHighlightIndex
18617
- }, [$props.loading ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_combobox_loading_list, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeProps)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
18618
- key: 0
18619
- }, listProps)), null, 16)) : $props.emptyList && $props.emptyStateMessage ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_combobox_empty_list, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
18620
- key: 1
18621
- }, listProps, {
18622
- message: $props.emptyStateMessage
18623
- }), null, 16, ["message"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "list", {
18624
- key: 2,
18625
- listProps: listProps
18626
- })], 42, combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_3)]),
18627
- _: 2
18628
- }, [$data.hasSlotContent(_ctx.$slots.header) ? {
18629
- name: "headerContent",
18630
- fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_2, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "header")], 512)]),
18631
- key: "0"
18632
- } : undefined, $data.hasSlotContent(_ctx.$slots.footer) ? {
18633
- name: "footerContent",
18634
- fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_4, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "footer")], 512)]),
18635
- key: "1"
18636
- } : undefined]), 1032, ["open", "max-height", "max-width", "offset", "sticky", "external-anchor", "content-width", "append-to", "visually-hidden-close-label", "visually-hidden-close", "onOpened"])];
18637
- }),
18638
- _: 3
18639
- }, 16, ["loading", "label", "label-visible", "size", "description", "empty-list", "empty-state-message", "show-list", "on-beginning-of-list", "on-end-of-list", "list-id"]);
18640
- }
18641
- ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=bdafd0f4
18642
-
18643
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=script&lang=js
18644
- /* eslint-disable vuejs-accessibility/no-static-element-interactions */
18645
-
18646
-
18647
-
18648
-
18649
-
18650
-
18651
-
18562
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/modules/core-scroller.vue?vue&type=script&setup=true&lang=js
18652
18563
 
18653
18564
 
18654
- /* harmony default export */ const combobox_with_popovervue_type_script_lang_js = ({
18655
- name: 'DtRecipeComboboxWithPopover',
18656
- components: {
18657
- DtCombobox: combobox,
18658
- DtPopover: popover,
18659
- ComboboxLoadingList: combobox_loading_list,
18660
- ComboboxEmptyList: combobox_empty_list
18661
- },
18662
- mixins: [sr_only_close_button],
18565
+ /* harmony default export */ const core_scrollervue_type_script_setup_true_lang_js = ({
18566
+ __name: 'core-scroller',
18663
18567
  props: {
18664
18568
  /**
18665
- * String to use for the input label.
18666
- */
18667
- label: {
18668
- type: String,
18569
+ * List of items you want to display in the scroller.
18570
+ */
18571
+ items: {
18572
+ type: Array,
18669
18573
  required: true
18670
18574
  },
18671
18575
 
18672
18576
  /**
18673
- * Determines visibility of input label.
18674
- * @values true, false
18675
- */
18676
- labelVisible: {
18677
- type: Boolean,
18678
- default: true
18577
+ *
18578
+ * Field used to identify items and optimize managing rendered views
18579
+ */
18580
+ keyField: {
18581
+ type: String,
18582
+ default: 'id'
18679
18583
  },
18680
18584
 
18681
18585
  /**
18682
- * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`
18683
- * @values null, xs, sm, md, lg, xl
18684
- */
18685
- size: {
18586
+ * Direction of the scroller. Can be either `vertical` or `horizontal`.
18587
+ */
18588
+ direction: {
18686
18589
  type: String,
18687
- default: null,
18688
- validator: t => Object.values(LABEL_SIZES).includes(t)
18590
+ default: 'vertical',
18591
+ validator: value => ['vertical', 'horizontal'].includes(value)
18689
18592
  },
18690
18593
 
18691
18594
  /**
18692
- * Description for the input
18693
- */
18694
- description: {
18695
- type: String,
18696
- default: ''
18595
+ * Size of the items in the list.
18596
+ * If it is set to null (the default value), it will use variable size mode.
18597
+ */
18598
+ itemSize: {
18599
+ type: Number,
18600
+ default: null
18697
18601
  },
18698
18602
 
18699
18603
  /**
18700
- * Determines when to show the list element and also controls the aria-expanded attribute.
18701
- * Leaving this null will have the combobox trigger on input focus by default.
18702
- * If you set this value, the default trigger behavior will be disabled and you can
18703
- * control it as you need.
18704
- */
18705
- showList: {
18706
- type: Boolean,
18604
+ * Minimum size used if the height (or width in horizontal mode) of an item is unknown.
18605
+ */
18606
+ minItemSize: {
18607
+ type: [Number, String],
18707
18608
  default: null
18708
18609
  },
18709
18610
 
18710
18611
  /**
18711
- * Sets an ID on the list element of the component. Used by several aria attributes
18712
- * as well as when deriving the IDs for each item.
18713
- */
18714
- listId: {
18612
+ * Field used to get the item's size in variable size mode.
18613
+ */
18614
+ sizeField: {
18715
18615
  type: String,
18716
-
18717
- default() {
18718
- return getUniqueString();
18719
- }
18720
-
18616
+ default: 'size'
18721
18617
  },
18722
18618
 
18723
18619
  /**
18724
- * Additional class for the wrapper list element.
18725
- */
18726
- listClass: {
18727
- type: [String, Array, Object],
18728
- default: ''
18620
+ * Amount of pixel to add to edges of the scrolling visible area to start rendering items further away.
18621
+ */
18622
+ buffer: {
18623
+ type: Number,
18624
+ default: 200
18729
18625
  },
18730
18626
 
18731
18627
  /**
18732
- * A method that will be called when the selection goes past the beginning of the list.
18733
- */
18734
- onBeginningOfList: {
18735
- type: Function,
18736
- default: null
18628
+ * If true, the hover state will be skipped.
18629
+ * This can be useful if you want to use the hover state for other purposes.
18630
+ */
18631
+ skipHover: {
18632
+ type: Boolean,
18633
+ default: false
18737
18634
  },
18738
18635
 
18739
18636
  /**
18740
- * A method that will be called when the selection goes past the end of the list.
18741
- */
18742
- onEndOfList: {
18743
- type: Function,
18744
- default: null
18637
+ * The element to render as the list's wrapper.
18638
+ */
18639
+ listTag: {
18640
+ type: String,
18641
+ default: 'div'
18745
18642
  },
18746
18643
 
18747
18644
  /**
18748
- * Determines maximum height for the popover before overflow.
18749
- * Possible units rem|px|em
18750
- */
18751
- maxHeight: {
18645
+ * The element to render as the list item.
18646
+ */
18647
+ itemTag: {
18752
18648
  type: String,
18753
- default: ''
18649
+ default: 'div'
18754
18650
  },
18755
18651
 
18756
18652
  /**
18757
- * Determines maximum width for the popover before overflow.
18758
- * Possible units rem|px|%|em
18759
- */
18760
- maxWidth: {
18761
- type: String,
18653
+ * The custom classes added to the item list wrapper.
18654
+ */
18655
+ listClass: {
18656
+ type: [String, Object, Array],
18762
18657
  default: ''
18763
18658
  },
18764
18659
 
18765
18660
  /**
18766
- * Vertical padding size around the list element.
18767
- */
18768
- padding: {
18769
- type: String,
18770
- default: 'small',
18771
- validator: padding => {
18772
- return Object.keys(DROPDOWN_PADDING_CLASSES).some(item => item === padding);
18773
- }
18661
+ * The custom classes added to each item.
18662
+ */
18663
+ itemClass: {
18664
+ type: [String, Object, Array],
18665
+ default: ''
18666
+ }
18667
+ },
18668
+ emits: ['scroll-start', 'scroll-end'],
18669
+
18670
+ setup(__props, _ref) {
18671
+ let {
18672
+ expose,
18673
+ emit
18674
+ } = _ref;
18675
+ const props = __props;
18676
+ const views = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.reactive)(new Map());
18677
+ const reactiveItems = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.reactive)(props.items);
18678
+ const unusedViews = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.reactive)(new Map());
18679
+ const updateTimeout = null;
18680
+ const pool = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)([]);
18681
+ const hoverKey = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(null);
18682
+ const ready = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(false);
18683
+ const scroller = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(null);
18684
+ let startIndex = 0;
18685
+ let endIndex = 0;
18686
+ let scrollDirty = false;
18687
+ let lastUpdateScrollPosition = 0;
18688
+ let sortTimer = null;
18689
+ let computedMinItemSize = null;
18690
+ let totalSize = 0;
18691
+ let uid = 0;
18692
+ const sizes = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
18693
+ if (props.itemSize === null) {
18694
+ const sizes = {
18695
+ '-1': {
18696
+ accumulator: 0
18697
+ }
18698
+ };
18699
+ const items = props.items;
18700
+ const field = props.sizeField;
18701
+ const minItemSize = props.minItemSize;
18702
+ let computedMinSize = 10000;
18703
+ let accumulator = 0;
18704
+ let current;
18705
+
18706
+ for (let i = 0, l = items.length; i < l; i++) {
18707
+ current = items[i][field] || minItemSize;
18708
+
18709
+ if (current < computedMinSize) {
18710
+ computedMinSize = current;
18711
+ }
18712
+
18713
+ accumulator += current;
18714
+ sizes[i] = {
18715
+ accumulator,
18716
+ size: current
18717
+ };
18718
+ }
18719
+
18720
+ computedMinItemSize = computedMinSize;
18721
+ return sizes;
18722
+ }
18723
+
18724
+ return [];
18725
+ });
18726
+ const simpleArray = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
18727
+ return props.items.length && typeof props.items[0] !== 'object';
18728
+ });
18729
+ const itemIndexByKey = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
18730
+ const result = {};
18731
+
18732
+ for (let i = 0, l = props.items.length; i < l; i++) {
18733
+ result[props.items[i][props.keyField]] = i;
18734
+ }
18735
+
18736
+ return result;
18737
+ });
18738
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(reactiveItems, () => {
18739
+ _updateVisibleItems(true);
18740
+ });
18741
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(sizes, () => {
18742
+ _updateVisibleItems(false);
18743
+ }, {
18744
+ deep: true
18745
+ });
18746
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.onMounted)(() => {
18747
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.nextTick)(() => {
18748
+ // In SSR mode, render the real number of visible items
18749
+ _updateVisibleItems(true);
18750
+
18751
+ ready.value = true;
18752
+ });
18753
+ });
18754
+
18755
+ const _addView = (pool, index, item, key, type) => {
18756
+ const nr = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.markRaw)({
18757
+ id: uid++,
18758
+ index,
18759
+ used: true,
18760
+ key,
18761
+ type
18762
+ });
18763
+ const view = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.shallowReactive)({
18764
+ item,
18765
+ position: 0,
18766
+ nr
18767
+ });
18768
+ pool.value.push(view);
18769
+ return view;
18770
+ };
18771
+
18772
+ const _unuseView = function (view) {
18773
+ let fake = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
18774
+ const _unusedViews = unusedViews;
18775
+ const type = view.nr.type;
18776
+
18777
+ let unusedPool = _unusedViews.get(type);
18778
+
18779
+ if (!unusedPool) {
18780
+ unusedPool = [];
18781
+
18782
+ _unusedViews.set(type, unusedPool);
18783
+ }
18784
+
18785
+ unusedPool.push(view);
18786
+
18787
+ if (!fake) {
18788
+ view.nr.used = false;
18789
+ view.position = -9999;
18790
+ }
18791
+ };
18792
+
18793
+ const _getScroll = () => {
18794
+ const isVertical = props.direction === 'vertical';
18795
+ let scrollState;
18796
+
18797
+ if (isVertical) {
18798
+ scrollState = {
18799
+ start: scroller.value.scrollTop,
18800
+ end: scroller.value.scrollTop + scroller.value.clientHeight
18801
+ };
18802
+ } else {
18803
+ scrollState = {
18804
+ start: scroller.value.scrollLeft,
18805
+ end: scroller.value.scrollLeft + scroller.value.clientWidth
18806
+ };
18807
+ }
18808
+
18809
+ return scrollState;
18810
+ };
18811
+
18812
+ const _itemsLimitError = () => {
18813
+ setTimeout(() => {
18814
+ // eslint-disable-next-line max-len
18815
+ console.error('It seems the scroller element isn\'t scrolling, so it tries to render all the items at once.', 'Scroller:', scroller); // eslint-disable-next-line max-len
18816
+
18817
+ console.error('Make sure the scroller has a fixed height (or width) and \'overflow-y\' (or \'overflow-x\') set to \'auto\' so it can scroll correctly and only render the items visible in the scroll viewport.');
18818
+ });
18819
+ throw new Error('Rendered items limit reached');
18820
+ };
18821
+
18822
+ const _sortViews = () => {
18823
+ pool.value.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);
18824
+ };
18825
+
18826
+ const _updateVisibleItems = function (checkItem) {
18827
+ let checkPositionDiff = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
18828
+ const itemSize = props.itemSize;
18829
+ const minItemSize = computedMinItemSize;
18830
+ const keyField = simpleArray.value ? null : props.keyField;
18831
+ const items = props.items;
18832
+ const count = items.length;
18833
+ const _sizes = sizes.value;
18834
+ const _views = views;
18835
+ const _unusedViews = unusedViews;
18836
+ const _pool = pool;
18837
+ const _itemIndexByKey = itemIndexByKey;
18838
+
18839
+ let _startIndex, _endIndex;
18840
+
18841
+ let _totalSize;
18842
+
18843
+ let visibleStartIndex, visibleEndIndex;
18844
+
18845
+ if (!count) {
18846
+ _startIndex = _endIndex = visibleStartIndex = visibleEndIndex = _totalSize = 0;
18847
+ } else {
18848
+ const scroll = _getScroll(); // Skip update if use hasn't scrolled enough
18849
+
18850
+
18851
+ if (checkPositionDiff) {
18852
+ let positionDiff = scroll.start - lastUpdateScrollPosition.value;
18853
+ if (positionDiff < 0) positionDiff = -positionDiff;
18854
+
18855
+ if (itemSize === null && positionDiff < minItemSize.value || positionDiff < itemSize) {
18856
+ return {
18857
+ continuous: true
18858
+ };
18859
+ }
18860
+ }
18861
+
18862
+ lastUpdateScrollPosition = scroll.start;
18863
+ const _buffer = props.buffer;
18864
+ scroll.start -= _buffer;
18865
+ scroll.end += _buffer; // Variable size mode
18866
+
18867
+ if (itemSize === null) {
18868
+ var _sizes3;
18869
+
18870
+ let h;
18871
+ let a = 0;
18872
+ let b = count - 1;
18873
+ let i = ~~(count / 2);
18874
+ let oldI; // Searching for _startIndex
18875
+
18876
+ do {
18877
+ var _sizes$i, _sizes2;
18878
+
18879
+ oldI = i;
18880
+ h = (_sizes$i = _sizes[i]) === null || _sizes$i === void 0 ? void 0 : _sizes$i.accumulator;
18881
+
18882
+ if (h < scroll.start) {
18883
+ a = i;
18884
+ } else if (i < count - 1 && ((_sizes2 = _sizes[i + 1]) === null || _sizes2 === void 0 ? void 0 : _sizes2.accumulator) > scroll.start) {
18885
+ b = i;
18886
+ }
18887
+
18888
+ i = ~~((a + b) / 2);
18889
+ } while (i !== oldI);
18890
+
18891
+ i < 0 && (i = 0);
18892
+ _startIndex = i; // For container style
18893
+
18894
+ _totalSize = (_sizes3 = _sizes[count - 1]) === null || _sizes3 === void 0 ? void 0 : _sizes3.accumulator; // Searching for _endIndex
18895
+
18896
+ for (_endIndex = i; _endIndex < count && ((_sizes$_endIndex = _sizes[_endIndex]) === null || _sizes$_endIndex === void 0 ? void 0 : _sizes$_endIndex.accumulator) < scroll.end; _endIndex++) {
18897
+ var _sizes$_endIndex;
18898
+
18899
+ ;
18900
+ }
18901
+
18902
+ if (_endIndex === -1) {
18903
+ _endIndex = items.length - 1;
18904
+ } else {
18905
+ _endIndex++; // Bounds
18906
+
18907
+ _endIndex > count && (_endIndex = count);
18908
+ } // search visible _startIndex
18909
+
18910
+
18911
+ for (visibleStartIndex = startIndex; visibleStartIndex < count && ((_sizes$visibleStartIn = _sizes[visibleStartIndex]) === null || _sizes$visibleStartIn === void 0 ? void 0 : _sizes$visibleStartIn.accumulator) < scroll.start; visibleStartIndex++) {
18912
+ var _sizes$visibleStartIn;
18913
+
18914
+ ;
18915
+ } // search visible endIndex
18916
+
18917
+
18918
+ for (visibleEndIndex = visibleStartIndex; visibleEndIndex < count && ((_sizes$visibleEndInde = _sizes[visibleEndIndex]) === null || _sizes$visibleEndInde === void 0 ? void 0 : _sizes$visibleEndInde.accumulator) < scroll.end; visibleEndIndex++) {
18919
+ var _sizes$visibleEndInde;
18920
+
18921
+ ;
18922
+ }
18923
+ } else {
18924
+ // Fixed size mode
18925
+ _startIndex = ~~(scroll.start / itemSize);
18926
+ const remainer = _startIndex % 1;
18927
+ _startIndex -= remainer;
18928
+ _endIndex = Math.ceil(scroll.end / itemSize);
18929
+ visibleStartIndex = Math.max(0, Math.floor(scroll.start / itemSize));
18930
+ visibleEndIndex = Math.floor(scroll.end / itemSize); // Bounds
18931
+
18932
+ _startIndex < 0 && (_startIndex = 0);
18933
+ _endIndex > count && (_endIndex = count);
18934
+ visibleStartIndex < 0 && (visibleStartIndex = 0);
18935
+ visibleEndIndex > count && (visibleEndIndex = count);
18936
+ _totalSize = Math.ceil(count / 1) * itemSize;
18937
+ }
18938
+ } // items limit 1000
18939
+
18940
+
18941
+ if (_endIndex - _startIndex > 1000) {
18942
+ _itemsLimitError();
18943
+ }
18944
+
18945
+ totalSize = _totalSize;
18946
+ let view;
18947
+ const continuous = _startIndex <= endIndex && _endIndex >= _startIndex; // Unuse views that are no longer visible
18948
+
18949
+ if (continuous) {
18950
+ for (let i = 0, l = _pool.value.length; i < l; i++) {
18951
+ var _view;
18952
+
18953
+ view = _pool.value[i];
18954
+
18955
+ if ((_view = view) !== null && _view !== void 0 && _view.nr.used) {
18956
+ // Update view item index
18957
+ if (checkItem) {
18958
+ view.nr.index = _itemIndexByKey[view.item[keyField]];
18959
+ } // Check if index is still in visible range
18960
+
18961
+
18962
+ if (view.nr.index == null || view.nr.index < _startIndex || view.nr.index >= _endIndex) {
18963
+ _unuseView(view);
18964
+ }
18965
+ }
18966
+ }
18967
+ }
18968
+
18969
+ const unusedIndex = continuous ? null : new Map();
18970
+ let item, type;
18971
+ let v;
18972
+
18973
+ for (let i = _startIndex; i < _endIndex; i++) {
18974
+ var _item, _sizes$i2;
18975
+
18976
+ item = items[i];
18977
+ const key = keyField ? (_item = item) === null || _item === void 0 ? void 0 : _item[keyField] : item;
18978
+
18979
+ if (key == null) {
18980
+ throw new Error(`Key is ${key} on item (keyField is '${keyField}')`);
18981
+ }
18982
+
18983
+ view = _views.get(key);
18984
+
18985
+ if (!itemSize && !((_sizes$i2 = _sizes[i]) !== null && _sizes$i2 !== void 0 && _sizes$i2.size)) {
18986
+ if (view) _unuseView(view);
18987
+ continue;
18988
+ }
18989
+
18990
+ type = item.type;
18991
+
18992
+ let unusedPool = _unusedViews.get(type);
18993
+
18994
+ let newlyUsedView = false; // No view assigned to item
18995
+
18996
+ if (!view) {
18997
+ if (continuous) {
18998
+ // Reuse existing view
18999
+ if (unusedPool && unusedPool.length) {
19000
+ view = unusedPool.pop();
19001
+ } else {
19002
+ view = _addView(_pool, i, item, key, type);
19003
+ }
19004
+ } else {
19005
+ // Use existing view
19006
+ // We don't care if they are already used
19007
+ // because we are not in continous scrolling
19008
+ v = unusedIndex.get(type) || 0;
19009
+
19010
+ if (!unusedPool || v >= unusedPool.length) {
19011
+ view = _addView(_pool, i, item, key, type);
19012
+
19013
+ _unuseView(view, true);
19014
+
19015
+ unusedPool = _unusedViews.get(type);
19016
+ }
19017
+
19018
+ view = unusedPool[v];
19019
+ unusedIndex.set(type, v + 1);
19020
+ } // Assign view to item
19021
+
19022
+
19023
+ _views.delete(view.nr.key);
19024
+
19025
+ view.nr.used = true;
19026
+ view.nr.index = i;
19027
+ view.nr.key = key;
19028
+ view.nr.type = type;
19029
+
19030
+ _views.set(key, view);
19031
+
19032
+ newlyUsedView = true;
19033
+ } else {
19034
+ // View already assigned to item
19035
+ if (!view.nr.used) {
19036
+ view.nr.used = true;
19037
+ newlyUsedView = true;
19038
+
19039
+ if (unusedPool) {
19040
+ const index = unusedPool.indexOf(view);
19041
+ if (index !== -1) unusedPool.splice(index, 1);
19042
+ }
19043
+ }
19044
+ } // Always set item in case it's a new object with the same key
19045
+
19046
+
19047
+ view.item = item;
19048
+
19049
+ if (newlyUsedView) {
19050
+ if (i === items.length - 1) emit('scroll-end');
19051
+ if (i === 0) emit('scroll-start');
19052
+ } // Update position
19053
+
19054
+
19055
+ if (itemSize === null) {
19056
+ var _sizes4;
19057
+
19058
+ view.position = (_sizes4 = _sizes[i - 1]) === null || _sizes4 === void 0 ? void 0 : _sizes4.accumulator;
19059
+ view.offset = 0;
19060
+ } else {
19061
+ view.position = Math.floor(i) * itemSize;
19062
+ view.offset = i % 1 * itemSize;
19063
+ }
19064
+ }
19065
+
19066
+ startIndex = _startIndex;
19067
+ endIndex = _endIndex; // After the user has finished scrolling
19068
+ // Sort views so text selection is correct
19069
+
19070
+ clearTimeout(sortTimer);
19071
+ sortTimer = setTimeout(_sortViews, 300);
19072
+ return {
19073
+ continuous
19074
+ };
19075
+ };
19076
+
19077
+ const _scrollToPosition = position => {
19078
+ const direction = props.direction === 'vertical' ? {
19079
+ scroll: 'scrollTop',
19080
+ start: 'top'
19081
+ } : {
19082
+ scroll: 'scrollLeft',
19083
+ start: 'left'
19084
+ };
19085
+ const viewport = scroller.value;
19086
+ const scrollDirection = direction.scroll;
19087
+ viewport[scrollDirection] = position;
19088
+ };
19089
+
19090
+ const scrollToItem = index => {
19091
+ let scroll;
19092
+
19093
+ if (props.itemSize === null) {
19094
+ var _sizes$value;
19095
+
19096
+ scroll = index > 0 ? (_sizes$value = sizes.value[index - 1]) === null || _sizes$value === void 0 ? void 0 : _sizes$value.accumulator : 0;
19097
+ } else {
19098
+ scroll = Math.floor(index) * props.itemSize;
19099
+ }
19100
+
19101
+ _scrollToPosition(scroll);
19102
+ };
19103
+
19104
+ const handleScroll = () => {
19105
+ if (!scrollDirty) {
19106
+ scrollDirty = true;
19107
+ if (updateTimeout) return;
19108
+
19109
+ const requestUpdate = () => requestAnimationFrame(() => {
19110
+ scrollDirty = false;
19111
+
19112
+ _updateVisibleItems(false, true);
19113
+ });
19114
+
19115
+ requestUpdate();
19116
+ }
19117
+ };
19118
+
19119
+ expose({
19120
+ scrollToItem
19121
+ });
19122
+ return (_ctx, _cache) => {
19123
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", {
19124
+ ref_key: "scroller",
19125
+ ref: scroller,
19126
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["vue-recycle-scroller", {
19127
+ ready: ready.value,
19128
+ [`direction-${__props.direction}`]: true
19129
+ }]),
19130
+ onScrollPassive: handleScroll
19131
+ }, [((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveDynamicComponent)(__props.listTag), {
19132
+ ref: "wrapper",
19133
+ style: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeStyle)({
19134
+ [__props.direction === 'vertical' ? 'minHeight' : 'minWidth']: `${(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)(totalSize)}px`
19135
+ }),
19136
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["vue-recycle-scroller__item-wrapper", __props.listClass])
19137
+ }, {
19138
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)(external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.Fragment, null, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderList)(pool.value, view => {
19139
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveDynamicComponent)(__props.itemTag), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
19140
+ key: view.nr.id,
19141
+ style: ready.value ? {
19142
+ transform: `translate${__props.direction === 'vertical' ? 'Y' : 'X'}(${view.position}px) translate${__props.direction === 'vertical' ? 'X' : 'Y'}(${view.offset}px)`,
19143
+ width: undefined,
19144
+ height: undefined
19145
+ } : null,
19146
+ class: ["vue-recycle-scroller__item-view", [__props.itemClass, {
19147
+ hover: !__props.skipHover && hoverKey.value === view.nr.key
19148
+ }]]
19149
+ }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toHandlers)(__props.skipHover ? {} : {
19150
+ mouseenter: () => {
19151
+ hoverKey.value = view.nr.key;
19152
+ },
19153
+ mouseleave: () => {
19154
+ hoverKey.value = null;
19155
+ }
19156
+ })), {
19157
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default", {
19158
+ item: view.item,
19159
+ index: view.nr.index,
19160
+ active: view.nr.used
19161
+ })]),
19162
+ _: 2
19163
+ }, 1040, ["style", "class"]);
19164
+ }), 128))]),
19165
+ _: 3
19166
+ }, 8, ["style", "class"]))], 34);
19167
+ };
19168
+ }
19169
+
19170
+ });
19171
+ ;// CONCATENATED MODULE: ./components/scroller/modules/core-scroller.vue?vue&type=script&setup=true&lang=js
19172
+
19173
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-54.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-54.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-54.use[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/modules/core-scroller.vue?vue&type=style&index=0&id=d2aff5e0&lang=css
19174
+ // extracted by mini-css-extract-plugin
19175
+
19176
+ ;// CONCATENATED MODULE: ./components/scroller/modules/core-scroller.vue?vue&type=style&index=0&id=d2aff5e0&lang=css
19177
+
19178
+ ;// CONCATENATED MODULE: ./components/scroller/modules/core-scroller.vue
19179
+
19180
+
19181
+
19182
+ ;
19183
+
19184
+ const core_scroller_exports_ = core_scrollervue_type_script_setup_true_lang_js;
19185
+
19186
+ /* harmony default export */ const core_scroller = (core_scroller_exports_);
19187
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/modules/dynamic-scroller.vue?vue&type=template&id=419ca1d0
19188
+
19189
+ function dynamic_scrollervue_type_template_id_419ca1d0_render(_ctx, _cache, $props, $setup, $data, $options) {
19190
+ const _component_dt_scroller_item = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-scroller-item");
19191
+
19192
+ const _component_core_scroller = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("core-scroller");
19193
+
19194
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_core_scroller, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
19195
+ ref: "scroller",
19196
+ items: $options.itemsWithSize,
19197
+ "min-item-size": $props.minItemSize,
19198
+ direction: $props.direction,
19199
+ "key-field": "id",
19200
+ "list-tag": $props.listTag,
19201
+ "item-tag": $props.itemTag
19202
+ }, _ctx.$attrs), {
19203
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref => {
19204
+ let {
19205
+ item: itemWithSize,
19206
+ index,
19207
+ active
19208
+ } = _ref;
19209
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_scroller_item, {
19210
+ item: itemWithSize,
19211
+ active: active,
19212
+ "size-dependencies": [itemWithSize.message],
19213
+ "data-index": index
19214
+ }, {
19215
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default", (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeProps)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.guardReactiveProps)({
19216
+ item: itemWithSize.item,
19217
+ index,
19218
+ active,
19219
+ itemWithSize
19220
+ })))]),
19221
+ _: 2
19222
+ }, 1032, ["item", "active", "size-dependencies", "data-index"])];
19223
+ }),
19224
+ _: 3
19225
+ }, 16, ["items", "min-item-size", "direction", "list-tag", "item-tag"]);
19226
+ }
19227
+ ;// CONCATENATED MODULE: ./components/scroller/modules/dynamic-scroller.vue?vue&type=template&id=419ca1d0
19228
+
19229
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/modules/scroller-item.vue?vue&type=script&lang=js
19230
+
19231
+ /* harmony default export */ const scroller_itemvue_type_script_lang_js = ({
19232
+ name: 'DtScrollerItem',
19233
+ inject: ['vscrollData', 'vscrollParent', 'vscrollResizeObserver'],
19234
+ props: {
19235
+ // eslint-disable-next-line vue/require-prop-types
19236
+ item: {
19237
+ required: true
19238
+ },
19239
+ watchData: {
19240
+ type: Boolean,
19241
+ default: false
19242
+ },
19243
+
19244
+ /**
19245
+ * Indicates if the view is actively used to display an item.
19246
+ */
19247
+ active: {
19248
+ type: Boolean,
19249
+ required: true
19250
+ },
19251
+ index: {
19252
+ type: Number,
19253
+ default: undefined
19254
+ },
19255
+ sizeDependencies: {
19256
+ type: [Array, Object],
19257
+ default: null
19258
+ },
19259
+ tag: {
19260
+ type: String,
19261
+ default: 'div'
19262
+ }
19263
+ },
19264
+ computed: {
19265
+ id() {
19266
+ if (this.vscrollData.simpleArray) return this.index; // eslint-disable-next-line no-prototype-builtins
19267
+
19268
+ if (this.vscrollData.keyField in this.item) return this.item[this.vscrollData.keyField];
19269
+ throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`);
19270
+ },
19271
+
19272
+ size() {
19273
+ return this.vscrollData.sizes[this.id] || 0;
19274
+ },
19275
+
19276
+ finalActive() {
19277
+ return this.active && this.vscrollData.active;
19278
+ }
19279
+
19280
+ },
19281
+ watch: {
19282
+ watchData: 'updateWatchData',
19283
+
19284
+ id(value, oldValue) {
19285
+ this.$el.$_vs_id = this.id;
19286
+
19287
+ if (!this.size) {
19288
+ this.onDataUpdate();
19289
+ }
19290
+
19291
+ if (this.$_sizeObserved) {
19292
+ // In case the old item had the same size, it won't trigger the ResizeObserver
19293
+ // since we are reusing the same DOM node
19294
+ const oldSize = this.vscrollData.sizes[oldValue];
19295
+ const size = this.vscrollData.sizes[value];
19296
+
19297
+ if (oldSize != null && oldSize !== size) {
19298
+ this.applySize(oldSize);
19299
+ }
19300
+ }
19301
+ },
19302
+
19303
+ finalActive(value) {
19304
+ if (!this.size) {
19305
+ if (value) {
19306
+ if (!this.vscrollParent.$_undefinedMap[this.id]) {
19307
+ this.vscrollParent.$_undefinedSizes++;
19308
+ this.vscrollParent.$_undefinedMap[this.id] = true;
19309
+ }
19310
+ } else {
19311
+ if (this.vscrollParent.$_undefinedMap[this.id]) {
19312
+ this.vscrollParent.$_undefinedSizes--;
19313
+ this.vscrollParent.$_undefinedMap[this.id] = false;
19314
+ }
19315
+ }
19316
+ }
19317
+
19318
+ if (this.vscrollResizeObserver) {
19319
+ if (value) {
19320
+ this.observeSize();
19321
+ } else {
19322
+ this.unobserveSize();
19323
+ }
19324
+ } else if (value && this.$_pendingVScrollUpdate === this.id) {
19325
+ this.updateSize();
19326
+ }
19327
+ }
19328
+
19329
+ },
19330
+
19331
+ created() {
19332
+ if (this.$isServer) return;
19333
+ this.$_forceNextVScrollUpdate = null;
19334
+ this.updateWatchData();
19335
+
19336
+ if (!this.vscrollResizeObserver) {
19337
+ for (const k in this.sizeDependencies) {
19338
+ this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);
19339
+ }
19340
+ }
19341
+ },
19342
+
19343
+ mounted() {
19344
+ if (this.finalActive) {
19345
+ this.updateSize();
19346
+ this.observeSize();
19347
+ }
19348
+ },
19349
+
19350
+ beforeUnmount() {
19351
+ this.unobserveSize();
19352
+ },
19353
+
19354
+ methods: {
19355
+ updateSize() {
19356
+ if (this.finalActive) {
19357
+ if (this.$_pendingSizeUpdate !== this.id) {
19358
+ this.$_pendingSizeUpdate = this.id;
19359
+ this.$_forceNextVScrollUpdate = null;
19360
+ this.$_pendingVScrollUpdate = null;
19361
+ this.computeSize(this.id);
19362
+ }
19363
+ } else {
19364
+ this.$_forceNextVScrollUpdate = this.id;
19365
+ }
19366
+ },
19367
+
19368
+ updateWatchData() {
19369
+ if (this.watchData && !this.vscrollResizeObserver) {
19370
+ this.$_watchData = this.$watch('item', () => {
19371
+ this.onDataUpdate();
19372
+ }, {
19373
+ deep: true
19374
+ });
19375
+ } else if (this.$_watchData) {
19376
+ this.$_watchData();
19377
+ this.$_watchData = null;
19378
+ }
19379
+ },
19380
+
19381
+ onVscrollUpdate(_ref) {
19382
+ let {
19383
+ force
19384
+ } = _ref;
19385
+
19386
+ // If not active, sechedule a size update when it becomes active
19387
+ if (!this.finalActive && force) {
19388
+ this.$_pendingVScrollUpdate = this.id;
19389
+ }
19390
+
19391
+ if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {
19392
+ this.updateSize();
19393
+ }
19394
+ },
19395
+
19396
+ onDataUpdate() {
19397
+ this.updateSize();
19398
+ },
19399
+
19400
+ computeSize(id) {
19401
+ this.$nextTick(() => {
19402
+ if (this.id === id) {
19403
+ const width = this.$el.offsetWidth;
19404
+ const height = this.$el.offsetHeight;
19405
+ this.applyWidthHeight(width, height);
19406
+ }
19407
+
19408
+ this.$_pendingSizeUpdate = null;
19409
+ });
19410
+ },
19411
+
19412
+ applyWidthHeight(width, height) {
19413
+ const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);
19414
+
19415
+ if (size && this.size !== size) {
19416
+ this.applySize(size);
19417
+ }
19418
+ },
19419
+
19420
+ applySize(size) {
19421
+ if (this.vscrollParent.$_undefinedMap[this.id]) {
19422
+ this.vscrollParent.$_undefinedSizes--;
19423
+ this.vscrollParent.$_undefinedMap[this.id] = undefined;
19424
+ }
19425
+
19426
+ this.vscrollData.sizes[this.id] = size;
19427
+ },
19428
+
19429
+ observeSize() {
19430
+ if (!this.vscrollResizeObserver) return;
19431
+ if (this.$_sizeObserved) return;
19432
+ this.vscrollResizeObserver.observe(this.$el);
19433
+ this.$el.$_vs_id = this.id;
19434
+ this.$el.$_vs_onResize = this.onResize;
19435
+ this.$_sizeObserved = true;
19436
+ },
19437
+
19438
+ unobserveSize() {
19439
+ if (!this.vscrollResizeObserver) return;
19440
+ if (!this.$_sizeObserved) return;
19441
+ this.vscrollResizeObserver.unobserve(this.$el);
19442
+ this.$el.$_vs_onResize = undefined;
19443
+ this.$_sizeObserved = false;
19444
+ },
19445
+
19446
+ onResize(id, width, height) {
19447
+ if (this.id === id) {
19448
+ this.applyWidthHeight(width, height);
19449
+ }
19450
+ }
19451
+
19452
+ },
19453
+
19454
+ render() {
19455
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.h)(this.tag, this.$slots.default());
19456
+ }
19457
+
19458
+ });
19459
+ ;// CONCATENATED MODULE: ./components/scroller/modules/scroller-item.vue?vue&type=script&lang=js
19460
+
19461
+ ;// CONCATENATED MODULE: ./components/scroller/modules/scroller-item.vue
19462
+
19463
+
19464
+
19465
+ const scroller_item_exports_ = scroller_itemvue_type_script_lang_js;
19466
+
19467
+ /* harmony default export */ const scroller_item = (scroller_item_exports_);
19468
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/modules/dynamic-scroller.vue?vue&type=script&lang=js
19469
+
19470
+
19471
+ /* harmony default export */ const dynamic_scrollervue_type_script_lang_js = ({
19472
+ name: 'DynamicScroller',
19473
+ components: {
19474
+ CoreScroller: core_scroller,
19475
+ DtScrollerItem: scroller_item
19476
+ },
19477
+
19478
+ provide() {
19479
+ if (typeof ResizeObserver !== 'undefined') {
19480
+ this.$_resizeObserver = new ResizeObserver(entries => {
19481
+ requestAnimationFrame(() => {
19482
+ if (!Array.isArray(entries)) {
19483
+ return;
19484
+ }
19485
+
19486
+ for (const entry of entries) {
19487
+ if (entry.target && entry.target.$_vs_onResize) {
19488
+ let width, height;
19489
+
19490
+ if (entry.borderBoxSize) {
19491
+ const resizeObserverSize = entry.borderBoxSize[0];
19492
+ width = resizeObserverSize.inlineSize;
19493
+ height = resizeObserverSize.blockSize;
19494
+ } else {
19495
+ // @TODO remove when contentRect is deprecated
19496
+ width = entry.contentRect.width;
19497
+ height = entry.contentRect.height;
19498
+ }
19499
+
19500
+ entry.target.$_vs_onResize(entry.target.$_vs_id, width, height);
19501
+ }
19502
+ }
19503
+ });
19504
+ });
19505
+ }
19506
+
19507
+ return {
19508
+ vscrollData: this.vscrollData,
19509
+ vscrollParent: this,
19510
+ vscrollResizeObserver: this.$_resizeObserver
19511
+ };
19512
+ },
19513
+
19514
+ inheritAttrs: false,
19515
+ props: {
19516
+ /*
19517
+ * The items to render.
19518
+ * If the items are simple arrays, the index will be used as the key.
19519
+ * If the items are objects, the keyField will be used as the key.
19520
+ */
19521
+ items: {
19522
+ type: Array,
19523
+ required: true
19524
+ },
19525
+
19526
+ /*
19527
+ * Indicates if the items are dynamic.
19528
+ * If true, the items will be wrapped in a DtScrollerItem component.
19529
+ * This is required for dynamic items to be able to react to changes in their size.
19530
+ */
19531
+ dynamic: {
19532
+ type: Boolean,
19533
+ default: false
19534
+ },
19535
+
19536
+ /*
19537
+ * The key field to use for the items.
19538
+ * Only used if the items are objects.
19539
+ */
19540
+ keyField: {
19541
+ type: String,
19542
+ default: 'id'
19543
+ },
19544
+
19545
+ /*
19546
+ * The direction of the scroller.
19547
+ * Can be either 'vertical' or 'horizontal'.
19548
+ */
19549
+ direction: {
19550
+ type: String,
19551
+ default: 'vertical',
19552
+ validator: value => ['vertical', 'horizontal'].includes(value)
19553
+ },
19554
+
19555
+ /*
19556
+ * The tag to use for the list.
19557
+ */
19558
+ listTag: {
19559
+ type: String,
19560
+ default: 'div'
19561
+ },
19562
+
19563
+ /*
19564
+ * The tag to use for the items.
19565
+ */
19566
+ itemTag: {
19567
+ type: String,
19568
+ default: 'div'
19569
+ },
19570
+
19571
+ /*
19572
+ * Display height (or width in horizontal mode) of the items in pixels
19573
+ * used to calculate the scroll size and position.
19574
+ * Is required for the initial render of items in DYNAMIC size mode.
19575
+ */
19576
+ minItemSize: {
19577
+ type: [Number, String]
19578
+ }
19579
+ },
19580
+
19581
+ data() {
19582
+ return {
19583
+ vscrollData: {
19584
+ active: true,
19585
+ sizes: {},
19586
+ keyField: this.keyField,
19587
+ simpleArray: false
19588
+ }
19589
+ };
19590
+ },
19591
+
19592
+ computed: {
19593
+ simpleArray() {
19594
+ return this.items.length && typeof this.items[0] !== 'object';
19595
+ },
19596
+
19597
+ itemsWithSize() {
19598
+ const result = [];
19599
+ const {
19600
+ items,
19601
+ keyField,
19602
+ simpleArray
19603
+ } = this;
19604
+ const sizes = this.vscrollData.sizes;
19605
+ const l = items.length;
19606
+
19607
+ for (let i = 0; i < l; i++) {
19608
+ const item = items[i];
19609
+ const id = simpleArray ? i : item[keyField];
19610
+ let size = sizes[id];
19611
+
19612
+ if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {
19613
+ size = 0;
19614
+ }
19615
+
19616
+ result.push({
19617
+ item,
19618
+ id,
19619
+ size
19620
+ });
19621
+ }
19622
+
19623
+ return result;
19624
+ }
19625
+
19626
+ },
19627
+ watch: {
19628
+ simpleArray: {
19629
+ handler(value) {
19630
+ this.vscrollData.simpleArray = value;
19631
+ },
19632
+
19633
+ immediate: true
19634
+ },
19635
+
19636
+ itemsWithSize(next, prev) {
19637
+ const scrollTop = this.$el.scrollTop; // Calculate total diff between prev and next sizes
19638
+ // over current scroll top. Then add it to scrollTop to
19639
+ // avoid jumping the contents that the user is seeing.
19640
+
19641
+ let prevActiveTop = 0;
19642
+ let activeTop = 0;
19643
+ const length = Math.min(next.length, prev.length);
19644
+
19645
+ for (let i = 0; i < length; i++) {
19646
+ if (prevActiveTop >= scrollTop) {
19647
+ break;
19648
+ }
19649
+
19650
+ prevActiveTop += prev[i].size || this.minItemSize;
19651
+ activeTop += next[i].size || this.minItemSize;
19652
+ }
19653
+
19654
+ const offset = activeTop - prevActiveTop;
19655
+
19656
+ if (offset === 0) {
19657
+ return;
19658
+ }
19659
+
19660
+ this.$el.scrollTop += offset;
19661
+ }
19662
+
19663
+ },
19664
+
19665
+ beforeCreate() {
19666
+ this.$_updates = [];
19667
+ this.$_undefinedSizes = 0;
19668
+ this.$_undefinedMap = {};
19669
+ },
19670
+
19671
+ activated() {
19672
+ this.vscrollData.active = true;
19673
+ },
19674
+
19675
+ deactivated() {
19676
+ this.vscrollData.active = false;
19677
+ },
19678
+
19679
+ methods: {
19680
+ scrollToItem(index) {
19681
+ const scroller = this.$refs.scroller;
19682
+ if (scroller) scroller.scrollToItem(index);
19683
+ }
19684
+
19685
+ }
19686
+ });
19687
+ ;// CONCATENATED MODULE: ./components/scroller/modules/dynamic-scroller.vue?vue&type=script&lang=js
19688
+
19689
+ ;// CONCATENATED MODULE: ./components/scroller/modules/dynamic-scroller.vue
19690
+
19691
+
19692
+
19693
+
19694
+ ;
19695
+ const dynamic_scroller_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(dynamic_scrollervue_type_script_lang_js, [['render',dynamic_scrollervue_type_template_id_419ca1d0_render]])
19696
+
19697
+ /* harmony default export */ const dynamic_scroller = (dynamic_scroller_exports_);
19698
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/DtScroller.vue?vue&type=script&setup=true&lang=js
19699
+
19700
+
19701
+
19702
+
19703
+ /* harmony default export */ const DtScrollervue_type_script_setup_true_lang_js = ({
19704
+ __name: 'DtScroller',
19705
+ props: {
19706
+ /**
19707
+ * The direction of the scroller.
19708
+ * @values vertical, horizontal
19709
+ */
19710
+ direction: {
19711
+ type: String,
19712
+ default: 'vertical',
19713
+ validator: value => ['vertical', 'horizontal'].includes(value)
19714
+ },
19715
+
19716
+ /**
19717
+ * Indicates if the items need to react to changes in their size.
19718
+ * If disabled the itemSize prop is required and you will get improved performance.
19719
+ * If enabled the minItemSize prop is required and you
19720
+ * will have reduced performance but the ability to reactively size list items
19721
+ * @values true, false
19722
+ */
19723
+ dynamic: {
19724
+ type: Boolean,
19725
+ default: false
19726
+ },
19727
+
19728
+ /**
19729
+ * Display height (or width in horizontal mode) of the items in pixels
19730
+ * used to calculate the scroll size and position.
19731
+ * Required if DYNAMIC is false
19732
+ */
19733
+ itemSize: {
19734
+ type: Number,
19735
+ default: null
19736
+ },
19737
+
19738
+ /**
19739
+ * The tag to use for the items.
19740
+ */
19741
+ itemTag: {
19742
+ type: String,
19743
+ default: 'div'
19744
+ },
19745
+
19746
+ /**
19747
+ * The items to render.
19748
+ * If the items are simple arrays, the index will be used as the key.
19749
+ * If the items are objects, the keyField will be used as the key.
19750
+ * @example items: [ 'item1', 'item2', 'item3' ]
19751
+ * @example items: [ { id: 1, name: 'item1' }, { id: 2, name: 'item2' }, { id: 3, name: 'item3' } ]
19752
+ */
19753
+ items: {
19754
+ type: Array,
19755
+ required: true
19756
+ },
19757
+
19758
+ /**
19759
+ * The key field to use for the items.
19760
+ * If the items are objects, the scroller needs to be able to identify them.
19761
+ * By default it will look for an id field on the items.
19762
+ * This can be configured with this prop if you are using another field name.
19763
+ */
19764
+ keyField: {
19765
+ type: String,
19766
+ default: 'id'
19767
+ },
19768
+
19769
+ /**
19770
+ * The tag to use for the list.
19771
+ */
19772
+ listTag: {
19773
+ type: String,
19774
+ default: 'div'
19775
+ },
19776
+
19777
+ /**
19778
+ * Minimum size used if the height (or width in horizontal mode) of a item is unknown.
19779
+ * Is required for the initial render of items in DYNAMIC size mode.
19780
+ */
19781
+ minItemSize: {
19782
+ type: [Number, String],
19783
+ default: null
19784
+ },
19785
+
19786
+ /**
19787
+ * The height of the scroller.
19788
+ * Can be a number (in pixels) or a string (in CSS units).
19789
+ */
19790
+ scrollerHeight: {
19791
+ type: [String, Number],
19792
+ default: '100%'
19793
+ },
19794
+
19795
+ /**
19796
+ * The width of the scroller.
19797
+ * Can be a number (in pixels) or a string (in CSS units).
19798
+ */
19799
+ scrollerWidth: {
19800
+ type: [String, Number],
19801
+ default: '100%'
19802
+ }
19803
+ },
19804
+ emits: ['scroll-start', 'scroll-end'],
19805
+
19806
+ setup(__props, _ref) {
19807
+ let {
19808
+ expose,
19809
+ emit: emits
19810
+ } = _ref;
19811
+ const props = __props;
19812
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.provide)('emit', emits);
19813
+ const scroller = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(null);
19814
+ const computedStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
19815
+ return {
19816
+ width: typeof props.scrollerWidth === 'number' ? `${props.scrollerWidth}px` : props.scrollerWidth,
19817
+ height: typeof props.scrollerHeight === 'number' ? `${props.scrollerHeight}px` : props.scrollerHeight
19818
+ };
19819
+ });
19820
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(props, () => {
19821
+ validateProps();
19822
+ }, {
19823
+ deep: true,
19824
+ immediate: true
19825
+ });
19826
+
19827
+ function scrollToItem(index) {
19828
+ if (scroller.value) scroller.value.scrollToItem(index);
19829
+ }
19830
+
19831
+ function validateProps() {
19832
+ if (props.dynamic && !props.minItemSize) {
19833
+ console.error('DtScroller error: \'minItemSize\' is required on \'dynamic\' mode.');
19834
+ }
19835
+
19836
+ if (!props.dynamic && !props.itemSize) {
19837
+ console.error('DtScroller error: \'itemSize\' is required.');
19838
+ }
19839
+ }
19840
+
19841
+ expose({
19842
+ scrollToItem
19843
+ });
19844
+ return (_ctx, _cache) => {
19845
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveDynamicComponent)(__props.dynamic ? dynamic_scroller : core_scroller), {
19846
+ ref_key: "scroller",
19847
+ ref: scroller,
19848
+ "data-qa": "dt-scroller",
19849
+ items: __props.items,
19850
+ "item-size": __props.itemSize,
19851
+ "min-item-size": __props.minItemSize,
19852
+ direction: __props.direction,
19853
+ "key-field": "id",
19854
+ "list-tag": __props.listTag,
19855
+ "item-tag": __props.itemTag,
19856
+ style: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeStyle)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)(computedStyle)),
19857
+ tabindex: "0",
19858
+ onScrollStart: _cache[0] || (_cache[0] = $event => _ctx.$emit('scroll-start')),
19859
+ onScrollEnd: _cache[1] || (_cache[1] = $event => _ctx.$emit('scroll-end'))
19860
+ }, {
19861
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref2 => {
19862
+ let {
19863
+ item,
19864
+ index,
19865
+ active
19866
+ } = _ref2;
19867
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default", (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeProps)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.guardReactiveProps)({
19868
+ item: item,
19869
+ index,
19870
+ active
19871
+ })))];
19872
+ }),
19873
+ _: 3
19874
+ }, 40, ["items", "item-size", "min-item-size", "direction", "list-tag", "item-tag", "style"]);
19875
+ };
19876
+ }
19877
+
19878
+ });
19879
+ ;// CONCATENATED MODULE: ./components/scroller/DtScroller.vue?vue&type=script&setup=true&lang=js
19880
+
19881
+ ;// CONCATENATED MODULE: ./components/scroller/DtScroller.vue
19882
+
19883
+
19884
+
19885
+ const DtScroller_exports_ = DtScrollervue_type_script_setup_true_lang_js;
19886
+
19887
+ /* harmony default export */ const DtScroller = (DtScroller_exports_);
19888
+ ;// CONCATENATED MODULE: ./components/scroller/index.js
19889
+
19890
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=bdafd0f4
19891
+
19892
+ const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_1 = ["id"];
19893
+ const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_2 = {
19894
+ ref: "header"
19895
+ };
19896
+ const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_3 = ["onMouseleave", "onFocusout"];
19897
+ const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_4 = {
19898
+ ref: "footer"
19899
+ };
19900
+ function combobox_with_popovervue_type_template_id_bdafd0f4_render(_ctx, _cache, $props, $setup, $data, $options) {
19901
+ const _component_combobox_loading_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-loading-list");
19902
+
19903
+ const _component_combobox_empty_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-empty-list");
19904
+
19905
+ const _component_dt_popover = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-popover");
19906
+
19907
+ const _component_dt_combobox = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-combobox");
19908
+
19909
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_combobox, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
19910
+ ref: "combobox",
19911
+ loading: $props.loading,
19912
+ label: $props.label,
19913
+ "label-visible": $props.labelVisible,
19914
+ size: $props.size,
19915
+ description: $props.description,
19916
+ "empty-list": $props.emptyList,
19917
+ "empty-state-message": $props.emptyStateMessage,
19918
+ "show-list": $data.isListShown,
19919
+ "on-beginning-of-list": $props.onBeginningOfList,
19920
+ "on-end-of-list": $props.onEndOfList,
19921
+ "list-rendered-outside": true,
19922
+ "list-id": $props.listId,
19923
+ "data-qa": "dt-combobox"
19924
+ }, $options.comboboxListeners), {
19925
+ input: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref => {
19926
+ let {
19927
+ inputProps
19928
+ } = _ref;
19929
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
19930
+ id: $data.externalAnchor,
19931
+ ref: "input",
19932
+ onFocusin: _cache[0] || (_cache[0] = function () {
19933
+ return $options.onFocusIn && $options.onFocusIn(...arguments);
19934
+ }),
19935
+ onKeydown: [_cache[1] || (_cache[1] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)($event => $options.openOnArrowKeyPress($event), ["up"])), _cache[2] || (_cache[2] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)($event => $options.openOnArrowKeyPress($event), ["down"]))]
19936
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "input", {
19937
+ inputProps: inputProps,
19938
+ onInput: $options.handleDisplayList
19939
+ })], 40, combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_1)];
19940
+ }),
19941
+ list: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref2 => {
19942
+ let {
19943
+ opened,
19944
+ listProps,
19945
+ clearHighlightIndex
19946
+ } = _ref2;
19947
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_popover, {
19948
+ ref: "popover",
19949
+ open: $data.isListShown,
19950
+ "onUpdate:open": _cache[3] || (_cache[3] = $event => $data.isListShown = $event),
19951
+ "hide-on-click": false,
19952
+ "max-height": $props.maxHeight,
19953
+ "max-width": $props.maxWidth,
19954
+ offset: $props.popoverOffset,
19955
+ sticky: $props.popoverSticky,
19956
+ placement: "bottom-start",
19957
+ "initial-focus-element": "none",
19958
+ padding: "none",
19959
+ role: "listbox",
19960
+ "external-anchor": $data.externalAnchor,
19961
+ "content-width": $props.contentWidth,
19962
+ "content-appear": true,
19963
+ "content-tabindex": null,
19964
+ modal: false,
19965
+ "auto-focus": false,
19966
+ "append-to": $props.appendTo,
19967
+ "visually-hidden-close-label": _ctx.visuallyHiddenCloseLabel,
19968
+ "visually-hidden-close": _ctx.visuallyHiddenClose,
19969
+ onOpened: opened
19970
+ }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createSlots)({
19971
+ content: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
19972
+ ref: "listWrapper",
19973
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)([$data.DROPDOWN_PADDING_CLASSES[$props.padding], $props.listClass]),
19974
+ onMouseleave: clearHighlightIndex,
19975
+ onFocusout: clearHighlightIndex
19976
+ }, [$props.loading ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_combobox_loading_list, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeProps)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
19977
+ key: 0
19978
+ }, listProps)), null, 16)) : $props.emptyList && $props.emptyStateMessage ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_combobox_empty_list, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
19979
+ key: 1
19980
+ }, listProps, {
19981
+ message: $props.emptyStateMessage
19982
+ }), null, 16, ["message"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "list", {
19983
+ key: 2,
19984
+ listProps: listProps
19985
+ })], 42, combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_3)]),
19986
+ _: 2
19987
+ }, [$data.hasSlotContent(_ctx.$slots.header) ? {
19988
+ name: "headerContent",
19989
+ fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_2, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "header")], 512)]),
19990
+ key: "0"
19991
+ } : undefined, $data.hasSlotContent(_ctx.$slots.footer) ? {
19992
+ name: "footerContent",
19993
+ fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_4, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "footer")], 512)]),
19994
+ key: "1"
19995
+ } : undefined]), 1032, ["open", "max-height", "max-width", "offset", "sticky", "external-anchor", "content-width", "append-to", "visually-hidden-close-label", "visually-hidden-close", "onOpened"])];
19996
+ }),
19997
+ _: 3
19998
+ }, 16, ["loading", "label", "label-visible", "size", "description", "empty-list", "empty-state-message", "show-list", "on-beginning-of-list", "on-end-of-list", "list-id"]);
19999
+ }
20000
+ ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=bdafd0f4
20001
+
20002
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=script&lang=js
20003
+ /* eslint-disable vuejs-accessibility/no-static-element-interactions */
20004
+
20005
+
20006
+
20007
+
20008
+
20009
+
20010
+
20011
+
20012
+
20013
+ /* harmony default export */ const combobox_with_popovervue_type_script_lang_js = ({
20014
+ name: 'DtRecipeComboboxWithPopover',
20015
+ components: {
20016
+ DtCombobox: combobox,
20017
+ DtPopover: popover,
20018
+ ComboboxLoadingList: combobox_loading_list,
20019
+ ComboboxEmptyList: combobox_empty_list
20020
+ },
20021
+ mixins: [sr_only_close_button],
20022
+ props: {
20023
+ /**
20024
+ * String to use for the input label.
20025
+ */
20026
+ label: {
20027
+ type: String,
20028
+ required: true
20029
+ },
20030
+
20031
+ /**
20032
+ * Determines visibility of input label.
20033
+ * @values true, false
20034
+ */
20035
+ labelVisible: {
20036
+ type: Boolean,
20037
+ default: true
20038
+ },
20039
+
20040
+ /**
20041
+ * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`
20042
+ * @values null, xs, sm, md, lg, xl
20043
+ */
20044
+ size: {
20045
+ type: String,
20046
+ default: null,
20047
+ validator: t => Object.values(LABEL_SIZES).includes(t)
20048
+ },
20049
+
20050
+ /**
20051
+ * Description for the input
20052
+ */
20053
+ description: {
20054
+ type: String,
20055
+ default: ''
20056
+ },
20057
+
20058
+ /**
20059
+ * Determines when to show the list element and also controls the aria-expanded attribute.
20060
+ * Leaving this null will have the combobox trigger on input focus by default.
20061
+ * If you set this value, the default trigger behavior will be disabled and you can
20062
+ * control it as you need.
20063
+ */
20064
+ showList: {
20065
+ type: Boolean,
20066
+ default: null
20067
+ },
20068
+
20069
+ /**
20070
+ * Sets an ID on the list element of the component. Used by several aria attributes
20071
+ * as well as when deriving the IDs for each item.
20072
+ */
20073
+ listId: {
20074
+ type: String,
20075
+
20076
+ default() {
20077
+ return getUniqueString();
20078
+ }
20079
+
20080
+ },
20081
+
20082
+ /**
20083
+ * Additional class for the wrapper list element.
20084
+ */
20085
+ listClass: {
20086
+ type: [String, Array, Object],
20087
+ default: ''
20088
+ },
20089
+
20090
+ /**
20091
+ * A method that will be called when the selection goes past the beginning of the list.
20092
+ */
20093
+ onBeginningOfList: {
20094
+ type: Function,
20095
+ default: null
20096
+ },
20097
+
20098
+ /**
20099
+ * A method that will be called when the selection goes past the end of the list.
20100
+ */
20101
+ onEndOfList: {
20102
+ type: Function,
20103
+ default: null
20104
+ },
20105
+
20106
+ /**
20107
+ * Determines maximum height for the popover before overflow.
20108
+ * Possible units rem|px|em
20109
+ */
20110
+ maxHeight: {
20111
+ type: String,
20112
+ default: ''
20113
+ },
20114
+
20115
+ /**
20116
+ * Determines maximum width for the popover before overflow.
20117
+ * Possible units rem|px|%|em
20118
+ */
20119
+ maxWidth: {
20120
+ type: String,
20121
+ default: ''
20122
+ },
20123
+
20124
+ /**
20125
+ * Vertical padding size around the list element.
20126
+ */
20127
+ padding: {
20128
+ type: String,
20129
+ default: 'small',
20130
+ validator: padding => {
20131
+ return Object.keys(DROPDOWN_PADDING_CLASSES).some(item => item === padding);
20132
+ }
18774
20133
  },
18775
20134
 
18776
20135
  /**
@@ -20809,35 +22168,49 @@ const grouped_chip_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(group
20809
22168
  /* harmony default export */ const grouped_chip = (grouped_chip_exports_);
20810
22169
  ;// CONCATENATED MODULE: ./recipes/chips/grouped_chip/index.js
20811
22170
 
20812
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/general_row/general_row.vue?vue&type=template&id=06ebf262
22171
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/general_row/general_row.vue?vue&type=template&id=46f0cd86
20813
22172
 
20814
- const general_rowvue_type_template_id_06ebf262_hoisted_1 = {
22173
+ const general_rowvue_type_template_id_46f0cd86_hoisted_1 = ["aria-label", "title"];
22174
+ const general_rowvue_type_template_id_46f0cd86_hoisted_2 = {
20815
22175
  class: "dt-leftbar-row__alpha"
20816
22176
  };
20817
- const general_rowvue_type_template_id_06ebf262_hoisted_2 = {
22177
+ const general_rowvue_type_template_id_46f0cd86_hoisted_3 = {
22178
+ key: 0,
22179
+ class: "dt-leftbar-row__is-typing"
22180
+ };
22181
+
22182
+ const general_rowvue_type_template_id_46f0cd86_hoisted_4 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", null, null, -1);
22183
+
22184
+ const general_rowvue_type_template_id_46f0cd86_hoisted_5 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", null, null, -1);
22185
+
22186
+ const general_rowvue_type_template_id_46f0cd86_hoisted_6 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", null, null, -1);
22187
+
22188
+ const general_rowvue_type_template_id_46f0cd86_hoisted_7 = [general_rowvue_type_template_id_46f0cd86_hoisted_4, general_rowvue_type_template_id_46f0cd86_hoisted_5, general_rowvue_type_template_id_46f0cd86_hoisted_6];
22189
+ const general_rowvue_type_template_id_46f0cd86_hoisted_8 = {
20818
22190
  class: "dt-leftbar-row__label"
20819
22191
  };
20820
- const general_rowvue_type_template_id_06ebf262_hoisted_3 = {
22192
+ const _hoisted_9 = {
20821
22193
  class: "dt-leftbar-row__omega"
20822
22194
  };
20823
- const general_rowvue_type_template_id_06ebf262_hoisted_4 = {
20824
- key: 0,
22195
+ const _hoisted_10 = {
20825
22196
  class: "dt-leftbar-row__dnd"
20826
22197
  };
20827
- const general_rowvue_type_template_id_06ebf262_hoisted_5 = {
22198
+ const _hoisted_11 = {
20828
22199
  key: 1,
20829
22200
  class: "dt-leftbar-row__active-voice"
20830
22201
  };
20831
- const general_rowvue_type_template_id_06ebf262_hoisted_6 = {
22202
+ const _hoisted_12 = {
20832
22203
  key: 0,
20833
22204
  class: "dt-leftbar-row__action",
20834
22205
  "data-qa": "dt-leftbar-row-action"
20835
22206
  };
20836
- function general_rowvue_type_template_id_06ebf262_render(_ctx, _cache, $props, $setup, $data, $options) {
22207
+ function general_rowvue_type_template_id_46f0cd86_render(_ctx, _cache, $props, $setup, $data, $options) {
20837
22208
  const _component_dt_recipe_leftbar_general_row_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-recipe-leftbar-general-row-icon");
20838
22209
 
20839
22210
  const _component_dt_emoji_text_wrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-emoji-text-wrapper");
20840
22211
 
22212
+ const _component_dt_tooltip = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-tooltip");
22213
+
20841
22214
  const _component_dt_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-icon");
20842
22215
 
20843
22216
  const _component_dt_badge = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-badge");
@@ -20849,47 +22222,74 @@ function general_rowvue_type_template_id_06ebf262_render(_ctx, _cache, $props, $
20849
22222
  "data-qa": "dt-leftbar-row"
20850
22223
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("button", (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
20851
22224
  class: "dt-leftbar-row__primary",
20852
- "data-qa": "dt-leftbar-row-link"
20853
- }, _ctx.$attrs), [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", general_rowvue_type_template_id_06ebf262_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "left", {}, () => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_recipe_leftbar_general_row_icon, {
22225
+ "data-qa": "dt-leftbar-row-link",
22226
+ "aria-label": $options.getAriaLabel,
22227
+ title: $props.description
22228
+ }, _ctx.$attrs), [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", general_rowvue_type_template_id_46f0cd86_hoisted_2, [$props.isTyping ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", general_rowvue_type_template_id_46f0cd86_hoisted_3, general_rowvue_type_template_id_46f0cd86_hoisted_7)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "left", {
22229
+ key: 1
22230
+ }, () => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_recipe_leftbar_general_row_icon, {
22231
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)({
22232
+ 'd-o50': $props.isTyping
22233
+ }),
20854
22234
  type: $options.getIcon,
20855
22235
  color: $props.color,
20856
22236
  "data-qa": "dt-leftbar-row-icon"
20857
- }, null, 8, ["type", "color"])])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", general_rowvue_type_template_id_06ebf262_hoisted_2, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "label", {}, () => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_emoji_text_wrapper, {
22237
+ }, null, 8, ["class", "type", "color"])])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", general_rowvue_type_template_id_46f0cd86_hoisted_8, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "label", {}, () => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_emoji_text_wrapper, {
20858
22238
  class: "dt-leftbar-row__description",
20859
22239
  "data-qa": "dt-leftbar-row-description"
20860
22240
  }, {
20861
22241
  default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createTextVNode)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($props.description), 1)]),
20862
22242
  _: 1
20863
- })])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", general_rowvue_type_template_id_06ebf262_hoisted_3, [$props.dndText ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", general_rowvue_type_template_id_06ebf262_hoisted_4, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($props.dndText), 1)) : $props.activeVoiceChat ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", general_rowvue_type_template_id_06ebf262_hoisted_5, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_icon, {
22243
+ })])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", _hoisted_9, [$props.dndText ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_tooltip, {
22244
+ key: 0,
22245
+ placement: "top",
22246
+ message: $props.dndTextTooltip
22247
+ }, {
22248
+ anchor: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", _hoisted_10, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($props.dndText), 1)]),
22249
+ _: 1
22250
+ }, 8, ["message"])) : $props.activeVoiceChat ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", _hoisted_11, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_icon, {
20864
22251
  size: "300",
20865
22252
  name: "activity"
20866
- })])) : !!$props.unreadCount && $props.hasUnreads ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_badge, {
22253
+ })])) : !!$props.unreadCount && $props.hasUnreads ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_tooltip, {
20867
22254
  key: 2,
20868
- kind: "count",
20869
- type: "bulletin",
20870
- "data-qa": "dt-leftbar-row-unread-badge"
22255
+ message: $props.unreadCountTooltip,
22256
+ placement: "top"
20871
22257
  }, {
20872
- default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createTextVNode)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($props.unreadCount), 1)]),
22258
+ anchor: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_badge, {
22259
+ kind: "count",
22260
+ type: "bulletin",
22261
+ "data-qa": "dt-leftbar-row-unread-badge"
22262
+ }, {
22263
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createTextVNode)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($props.unreadCount), 1)]),
22264
+ _: 1
22265
+ })]),
20873
22266
  _: 1
20874
- })) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)])], 16), $props.hasCallButton ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", general_rowvue_type_template_id_06ebf262_hoisted_6, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_button, {
20875
- class: "dt-leftbar-row__action-button",
20876
- "data-qa": "dt-leftbar-row-action-call-button",
20877
- circle: "",
20878
- size: "xs",
20879
- kind: "inverted",
20880
- onFocus: _cache[0] || (_cache[0] = $event => $data.actionFocused = true),
20881
- onBlur: _cache[1] || (_cache[1] = $event => $data.actionFocused = false),
20882
- onMouseout: _cache[2] || (_cache[2] = $event => $data.actionFocused = false),
20883
- onClick: _cache[3] || (_cache[3] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => _ctx.$emit('call', $event), ["stop"]))
22267
+ }, 8, ["message"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)])], 16, general_rowvue_type_template_id_46f0cd86_hoisted_1), $props.hasCallButton ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", _hoisted_12, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_tooltip, {
22268
+ message: $props.callButtonTooltip,
22269
+ placement: "top"
20884
22270
  }, {
20885
- icon: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_icon, {
20886
- name: "phone",
20887
- size: "200"
20888
- })]),
22271
+ anchor: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_button, {
22272
+ class: "dt-leftbar-row__action-button",
22273
+ "data-qa": "dt-leftbar-row-action-call-button",
22274
+ circle: "",
22275
+ size: "xs",
22276
+ kind: "inverted",
22277
+ "aria-label": $props.callButtonTooltip,
22278
+ onFocus: _cache[0] || (_cache[0] = $event => $data.actionFocused = true),
22279
+ onBlur: _cache[1] || (_cache[1] = $event => $data.actionFocused = false),
22280
+ onMouseleave: _cache[2] || (_cache[2] = $event => $data.actionFocused = false),
22281
+ onClick: _cache[3] || (_cache[3] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => _ctx.$emit('call', $event), ["stop"]))
22282
+ }, {
22283
+ icon: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_icon, {
22284
+ name: "phone",
22285
+ size: "200"
22286
+ })]),
22287
+ _: 1
22288
+ }, 8, ["aria-label"])]),
20889
22289
  _: 1
20890
- })])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 2);
22290
+ }, 8, ["message"])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 2);
20891
22291
  }
20892
- ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=template&id=06ebf262
22292
+ ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=template&id=46f0cd86
20893
22293
 
20894
22294
  ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row_constants.js
20895
22295
  const LEFTBAR_GENERAL_ROW_TYPES = {
@@ -20899,6 +22299,9 @@ const LEFTBAR_GENERAL_ROW_TYPES = {
20899
22299
  THREADS: 'threads',
20900
22300
  LOCKED_CHANNEL: 'locked channel',
20901
22301
  CONTACT_CENTER: 'contact center',
22302
+ QUICK_START: 'quick start',
22303
+ COACHING_GROUP: 'coaching group',
22304
+ COACHING_CENTER: 'coaching center',
20902
22305
  DIALBOT: 'dialbot',
20903
22306
  ASSIGNED: 'assigned',
20904
22307
  DIGITAL: 'digital'
@@ -20909,6 +22312,9 @@ const LEFTBAR_GENERAL_ROW_ICON_MAPPING = {
20909
22312
  [LEFTBAR_GENERAL_ROW_TYPES.CHANNELS]: 'hash',
20910
22313
  [LEFTBAR_GENERAL_ROW_TYPES.THREADS]: 'thread',
20911
22314
  [LEFTBAR_GENERAL_ROW_TYPES.LOCKED_CHANNEL]: 'lock',
22315
+ [LEFTBAR_GENERAL_ROW_TYPES.QUICK_START]: 'sparkle',
22316
+ [LEFTBAR_GENERAL_ROW_TYPES.COACHING_GROUP]: 'users',
22317
+ [LEFTBAR_GENERAL_ROW_TYPES.COACHING_CENTER]: 'external-link',
20912
22318
  'locked channel unread': 'lock-filled',
20913
22319
  'channel unread': 'hash-bold',
20914
22320
  [LEFTBAR_GENERAL_ROW_TYPES.ASSIGNED]: 'at-sign',
@@ -21441,12 +22847,12 @@ const emoji_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(emojivue_typ
21441
22847
  const emoji_text_wrapper_exports_ = emoji_text_wrappervue_type_script_lang_js;
21442
22848
 
21443
22849
  /* harmony default export */ const emoji_text_wrapper = (emoji_text_wrapper_exports_);
21444
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/general_row/leftbar_general_row_icon.vue?vue&type=template&id=06ed62b0
22850
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/general_row/leftbar_general_row_icon.vue?vue&type=template&id=27d28559
21445
22851
 
21446
- function leftbar_general_row_iconvue_type_template_id_06ed62b0_render(_ctx, _cache, $props, $setup, $data, $options) {
22852
+ function leftbar_general_row_iconvue_type_template_id_27d28559_render(_ctx, _cache, $props, $setup, $data, $options) {
21447
22853
  const _component_dt_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-icon");
21448
22854
 
21449
- const _component_icon_dialpad_glyph = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("icon-dialpad-glyph");
22855
+ const _component_icon_dialbot = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("icon-dialbot");
21450
22856
 
21451
22857
  return $options.isIconType ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_icon, {
21452
22858
  key: 0,
@@ -21458,45 +22864,43 @@ function leftbar_general_row_iconvue_type_template_id_06ed62b0_render(_ctx, _cac
21458
22864
  }, null, 2)) : $options.isDialbotType ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", {
21459
22865
  key: 2,
21460
22866
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)($options.dialbotClasses)
21461
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_icon_dialpad_glyph, {
21462
- class: "d-svg--size18",
21463
- color: "white"
22867
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_icon_dialbot, {
22868
+ class: "d-svg--size24"
21464
22869
  })], 2)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true);
21465
22870
  }
21466
- ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/leftbar_general_row_icon.vue?vue&type=template&id=06ed62b0
22871
+ ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/leftbar_general_row_icon.vue?vue&type=template&id=27d28559
21467
22872
 
21468
- ;// CONCATENATED MODULE: ./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialpadGlyph.vue?vue&type=template&id=85d2b6f4
22873
+ ;// CONCATENATED MODULE: ./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialbot.vue?vue&type=template&id=afc48fb0
21469
22874
 
21470
22875
 
21471
- const IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_1 = {
22876
+ const IconDialbotvue_type_template_id_afc48fb0_hoisted_1 = {
21472
22877
  "aria-hidden": "true",
21473
22878
  focusable: "false",
21474
- "aria-label": "Dialpad Glyph",
21475
- class: "d-svg d-svg--system d-svg__dialpadGlyph",
21476
- viewBox: "0 0 24 24"
22879
+ "aria-label": "Dialbot",
22880
+ class: "d-svg d-svg--native d-svg__dialbot",
22881
+ width: "358",
22882
+ height: "358",
22883
+ viewBox: "0 0 358 358",
22884
+ fill: "none"
21477
22885
  }
21478
- const IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_2 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("path", {
21479
- "fill-rule": "evenodd",
21480
- "clip-rule": "evenodd",
21481
- d: "M12.025 11.197V4.18a.077.077 0 0 0-.132-.053L8.91 7.204a5.095 5.095 0 0 0-7.08 4.693 5.095 5.095 0 0 0 5.096 5.094 5.096 5.096 0 0 0 5.049-4.394v7.019c0 .069.083.102.131.053l2.982-3.079c.61.258 1.28.4 1.984.4a5.095 5.095 0 0 0 5.096-5.093 5.095 5.095 0 0 0-5.096-5.093 5.096 5.096 0 0 0-5.048 4.393Z"
21482
- }, null, -1)
21483
- const IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_3 = [
21484
- IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_2
22886
+ const IconDialbotvue_type_template_id_afc48fb0_hoisted_2 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createStaticVNode)("<circle cx=\"179\" cy=\"179\" r=\"179\" fill=\"url(#paint0_linear_1957_89480)\"></circle><path d=\"M179 268.5v-11.933V268.5Zm86.517 0v11.933h19.308l-8.635-17.27-10.673 5.337Zm-16.73-33.459-9.3-7.478-4.797 5.967 3.424 6.848 10.673-5.337ZM179 101.433c42.839 0 77.567 34.728 77.567 77.567h23.866c0-56.02-45.413-101.433-101.433-101.433v23.866ZM101.433 179c0-42.839 34.728-77.567 77.567-77.567V77.567C122.98 77.567 77.567 122.98 77.567 179h23.866ZM179 256.567c-42.839 0-77.567-34.728-77.567-77.567H77.567c0 56.02 45.413 101.433 101.433 101.433v-23.866Zm86.517 0H179v23.866h86.517v-23.866Zm-27.403-16.189 16.729 33.459 21.347-10.674-16.729-33.459-21.347 10.674ZM256.567 179c0 18.396-6.39 35.268-17.08 48.563l18.6 14.955c13.975-17.38 22.346-39.488 22.346-63.518h-23.866Z\" fill=\"white\"></path><path d=\"M226.733 202.867c-6.527 5.701-13.942 10.11-22.243 13.226-8.302 3.116-16.781 4.674-25.437 4.674-8.727 0-17.241-1.558-25.543-4.674-8.301-3.116-15.716-7.525-22.243-13.226v-11.933c4.399 2.651 9.365 4.939 14.9 6.861a112.143 112.143 0 0 0 16.816 4.674c5.747 1.127 11.104 1.691 16.07 1.691 5.038 0 10.395-.564 16.071-1.691a112.209 112.209 0 0 0 16.816-4.674c5.534-1.922 10.465-4.21 14.793-6.861v11.933Z\" fill=\"white\"></path><defs><linearGradient id=\"paint0_linear_1957_89480\" x1=\"0\" y1=\"0\" x2=\"358\" y2=\"358\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#7C52FF\"></stop><stop offset=\"1\" stop-color=\"#F9008E\"></stop></linearGradient></defs>", 4)
22887
+ const IconDialbotvue_type_template_id_afc48fb0_hoisted_6 = [
22888
+ IconDialbotvue_type_template_id_afc48fb0_hoisted_2
21485
22889
  ]
21486
22890
 
21487
- function IconDialpadGlyphvue_type_template_id_85d2b6f4_render(_ctx, _cache) {
21488
- return ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("svg", IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_1, IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_3))
22891
+ function IconDialbotvue_type_template_id_afc48fb0_render(_ctx, _cache) {
22892
+ return ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("svg", IconDialbotvue_type_template_id_afc48fb0_hoisted_1, IconDialbotvue_type_template_id_afc48fb0_hoisted_6))
21489
22893
  }
21490
- ;// CONCATENATED MODULE: ./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialpadGlyph.vue?vue&type=template&id=85d2b6f4
22894
+ ;// CONCATENATED MODULE: ./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialbot.vue?vue&type=template&id=afc48fb0
21491
22895
 
21492
- ;// CONCATENATED MODULE: ./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialpadGlyph.vue
22896
+ ;// CONCATENATED MODULE: ./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialbot.vue
21493
22897
 
21494
22898
  const script = {}
21495
22899
 
21496
22900
  ;
21497
- const IconDialpadGlyph_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(script, [['render',IconDialpadGlyphvue_type_template_id_85d2b6f4_render]])
22901
+ const IconDialbot_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(script, [['render',IconDialbotvue_type_template_id_afc48fb0_render]])
21498
22902
 
21499
- /* harmony default export */ const IconDialpadGlyph = (IconDialpadGlyph_exports_);
22903
+ /* harmony default export */ const IconDialbot = (IconDialbot_exports_);
21500
22904
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/general_row/leftbar_general_row_icon.vue?vue&type=script&lang=js
21501
22905
 
21502
22906
 
@@ -21505,7 +22909,7 @@ const IconDialpadGlyph_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(s
21505
22909
  name: 'DtRecipeLeftbarGeneralRowIcon',
21506
22910
  components: {
21507
22911
  DtIcon: icon,
21508
- IconDialpadGlyph: IconDialpadGlyph
22912
+ IconDialbot: IconDialbot
21509
22913
  },
21510
22914
  props: {
21511
22915
  type: {
@@ -21539,7 +22943,7 @@ const IconDialpadGlyph_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(s
21539
22943
  },
21540
22944
 
21541
22945
  dialbotClasses() {
21542
- return ['d-bar-circle', 'd-bgc-purple-400', 'd-w24', 'd-h24', 'd-d-flex', 'd-ai-center', 'd-jc-center'];
22946
+ return ['d-w24', 'd-h24', 'd-d-flex', 'd-ai-center', 'd-jc-center'];
21543
22947
  }
21544
22948
 
21545
22949
  }
@@ -21552,7 +22956,7 @@ const IconDialpadGlyph_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(s
21552
22956
 
21553
22957
 
21554
22958
  ;
21555
- const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(leftbar_general_row_iconvue_type_script_lang_js, [['render',leftbar_general_row_iconvue_type_template_id_06ed62b0_render]])
22959
+ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(leftbar_general_row_iconvue_type_script_lang_js, [['render',leftbar_general_row_iconvue_type_template_id_27d28559_render]])
21556
22960
 
21557
22961
  /* harmony default export */ const leftbar_general_row_icon = (leftbar_general_row_icon_exports_);
21558
22962
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/general_row/general_row.vue?vue&type=script&lang=js
@@ -21563,6 +22967,7 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21563
22967
 
21564
22968
 
21565
22969
 
22970
+
21566
22971
  /* harmony default export */ const general_rowvue_type_script_lang_js = ({
21567
22972
  name: 'DtRecipeGeneralRow',
21568
22973
  components: {
@@ -21570,6 +22975,7 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21570
22975
  DtBadge: badge,
21571
22976
  DtIcon: icon,
21572
22977
  DtButton: button_button,
22978
+ DtTooltip: tooltip,
21573
22979
  DtRecipeLeftbarGeneralRowIcon: leftbar_general_row_icon
21574
22980
  },
21575
22981
  inheritAttrs: false,
@@ -21587,13 +22993,22 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21587
22993
  },
21588
22994
 
21589
22995
  /**
21590
- * Text displayed next to the icon
22996
+ * Will be read out by a screen reader upon focus of this row. If not defined "description" will be read.
21591
22997
  */
21592
- description: {
22998
+ ariaLabel: {
21593
22999
  type: String,
21594
23000
  default: ''
21595
23001
  },
21596
23002
 
23003
+ /**
23004
+ * Text displayed next to the icon. Required. Even if you are overriding this field using the label slot
23005
+ * you still must input this as it will be displayed as the "title" attribute for the row.
23006
+ */
23007
+ description: {
23008
+ type: String,
23009
+ required: true
23010
+ },
23011
+
21597
23012
  /**
21598
23013
  * Determines the color of the contact center icon
21599
23014
  */
@@ -21622,6 +23037,14 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21622
23037
  default: null
21623
23038
  },
21624
23039
 
23040
+ /**
23041
+ * Text shown when the unread count is hovered.
23042
+ */
23043
+ unreadCountTooltip: {
23044
+ type: String,
23045
+ default: ''
23046
+ },
23047
+
21625
23048
  /**
21626
23049
  * Determines if the row is selected
21627
23050
  */
@@ -21655,12 +23078,36 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21655
23078
  default: ''
21656
23079
  },
21657
23080
 
23081
+ /**
23082
+ * Text shown in tooltip when you hover the dndText
23083
+ */
23084
+ dndTextTooltip: {
23085
+ type: String,
23086
+ default: ''
23087
+ },
23088
+
21658
23089
  /**
21659
23090
  * Whether the row should have a call button. Usually only applicable to individual contact rows.
21660
23091
  */
21661
23092
  hasCallButton: {
21662
23093
  type: Boolean,
21663
23094
  default: false
23095
+ },
23096
+
23097
+ /**
23098
+ * Text shown when the call button is hovered.
23099
+ */
23100
+ callButtonTooltip: {
23101
+ type: String,
23102
+ default: ''
23103
+ },
23104
+
23105
+ /**
23106
+ * Shows an "is typing" animation over the avatar when true.
23107
+ */
23108
+ isTyping: {
23109
+ type: Boolean,
23110
+ default: false
21664
23111
  }
21665
23112
  },
21666
23113
  emits: [
@@ -21705,6 +23152,10 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21705
23152
 
21706
23153
  generalRowListeners() {
21707
23154
  return extractVueListeners(this.$attrs);
23155
+ },
23156
+
23157
+ getAriaLabel() {
23158
+ return this.ariaLabel ? this.ariaLabel : `${this.description} ${this.unreadCountTooltip} ${this.dndTextTooltip}`;
21708
23159
  }
21709
23160
 
21710
23161
  },
@@ -21730,10 +23181,10 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21730
23181
  });
21731
23182
  ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=script&lang=js
21732
23183
 
21733
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-74.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-74.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-74.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-74.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/general_row/general_row.vue?vue&type=style&index=0&id=06ebf262&lang=less
23184
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-74.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-74.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-74.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-74.use[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/general_row/general_row.vue?vue&type=style&index=0&id=46f0cd86&lang=less
21734
23185
  // extracted by mini-css-extract-plugin
21735
23186
 
21736
- ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=style&index=0&id=06ebf262&lang=less
23187
+ ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=style&index=0&id=46f0cd86&lang=less
21737
23188
 
21738
23189
  ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue
21739
23190
 
@@ -21743,41 +23194,45 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21743
23194
  ;
21744
23195
 
21745
23196
 
21746
- const general_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(general_rowvue_type_script_lang_js, [['render',general_rowvue_type_template_id_06ebf262_render]])
23197
+ const general_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(general_rowvue_type_script_lang_js, [['render',general_rowvue_type_template_id_46f0cd86_render]])
21747
23198
 
21748
23199
  /* harmony default export */ const general_row = (general_row_exports_);
21749
23200
  ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/index.js
21750
23201
 
21751
23202
 
21752
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/group_row/group_row.vue?vue&type=template&id=29f5cb33
23203
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/group_row/group_row.vue?vue&type=template&id=af6d6b56
21753
23204
 
21754
- const group_rowvue_type_template_id_29f5cb33_hoisted_1 = ["src", "alt"];
21755
- function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $setup, $data, $options) {
23205
+ const group_rowvue_type_template_id_af6d6b56_hoisted_1 = ["src", "alt"];
23206
+ function group_rowvue_type_template_id_af6d6b56_render(_ctx, _cache, $props, $setup, $data, $options) {
21756
23207
  const _component_dt_avatar = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-avatar");
21757
23208
 
21758
23209
  const _component_dt_recipe_general_row = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-recipe-general-row");
21759
23210
 
21760
23211
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_recipe_general_row, {
21761
23212
  description: $props.names,
23213
+ "aria-label": `${$props.groupCountText} ${$props.names}`,
21762
23214
  "unread-count": $props.unreadCount,
21763
23215
  "has-unreads": $props.hasUnreads,
21764
- selected: $props.selected
23216
+ "unread-count-tooltip": $props.unreadCountTooltip,
23217
+ selected: $props.selected,
23218
+ "is-typing": $props.isTyping
21765
23219
  }, {
21766
23220
  left: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_avatar, {
21767
23221
  initials: $props.avatarInitials,
21768
23222
  group: $props.groupCount
21769
23223
  }, {
21770
- default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("img", {
23224
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [$props.avatarSrc ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("img", {
23225
+ key: 0,
21771
23226
  "data-qa": "dt-avatar-image",
21772
23227
  src: $props.avatarSrc,
21773
23228
  alt: $props.avatarInitials
21774
- }, null, 8, group_rowvue_type_template_id_29f5cb33_hoisted_1)]),
23229
+ }, null, 8, group_rowvue_type_template_id_af6d6b56_hoisted_1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)]),
21775
23230
  _: 1
21776
23231
  }, 8, ["initials", "group"])]),
21777
23232
  _: 1
21778
- }, 8, ["description", "unread-count", "has-unreads", "selected"]);
23233
+ }, 8, ["description", "aria-label", "unread-count", "has-unreads", "unread-count-tooltip", "selected", "is-typing"]);
21779
23234
  }
21780
- ;// CONCATENATED MODULE: ./recipes/leftbar/group_row/group_row.vue?vue&type=template&id=29f5cb33
23235
+ ;// CONCATENATED MODULE: ./recipes/leftbar/group_row/group_row.vue?vue&type=template&id=af6d6b56
21781
23236
 
21782
23237
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/group_row/group_row.vue?vue&type=script&lang=js
21783
23238
 
@@ -21817,12 +23272,20 @@ function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $se
21817
23272
  required: true
21818
23273
  },
21819
23274
 
23275
+ /**
23276
+ * Screen reader will read out the number of users in the group using this text. Ex: "2 users"
23277
+ */
23278
+ groupCountText: {
23279
+ type: String,
23280
+ default: ''
23281
+ },
23282
+
21820
23283
  /**
21821
23284
  * Names of the group members
21822
23285
  */
21823
23286
  names: {
21824
23287
  type: String,
21825
- default: ''
23288
+ required: true
21826
23289
  },
21827
23290
 
21828
23291
  /**
@@ -21833,6 +23296,14 @@ function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $se
21833
23296
  default: null
21834
23297
  },
21835
23298
 
23299
+ /**
23300
+ * Text shown when the unread count is hovered.
23301
+ */
23302
+ unreadCountTooltip: {
23303
+ type: String,
23304
+ default: null
23305
+ },
23306
+
21836
23307
  /**
21837
23308
  * Styles the row with an increased font weight to convey it has unreads. This must be true to see
21838
23309
  * the unread count badge.
@@ -21848,6 +23319,14 @@ function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $se
21848
23319
  selected: {
21849
23320
  type: Boolean,
21850
23321
  default: false
23322
+ },
23323
+
23324
+ /**
23325
+ * Shows an "is typing" animation over the avatar when true.
23326
+ */
23327
+ isTyping: {
23328
+ type: Boolean,
23329
+ default: false
21851
23330
  }
21852
23331
  },
21853
23332
  emits: [
@@ -21867,18 +23346,18 @@ function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $se
21867
23346
 
21868
23347
 
21869
23348
  ;
21870
- const group_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(group_rowvue_type_script_lang_js, [['render',group_rowvue_type_template_id_29f5cb33_render]])
23349
+ const group_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(group_rowvue_type_script_lang_js, [['render',group_rowvue_type_template_id_af6d6b56_render]])
21871
23350
 
21872
23351
  /* harmony default export */ const group_row = (group_row_exports_);
21873
23352
  ;// CONCATENATED MODULE: ./recipes/leftbar/group_row/index.js
21874
23353
 
21875
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/contact_row/contact_row.vue?vue&type=template&id=8a190578
23354
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[3]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/contact_row/contact_row.vue?vue&type=template&id=69299a5d
21876
23355
 
21877
- const contact_rowvue_type_template_id_8a190578_hoisted_1 = ["src", "alt"];
21878
- const contact_rowvue_type_template_id_8a190578_hoisted_2 = {
23356
+ const contact_rowvue_type_template_id_69299a5d_hoisted_1 = ["src", "alt"];
23357
+ const contact_rowvue_type_template_id_69299a5d_hoisted_2 = {
21879
23358
  class: "dt-leftbar-row__status"
21880
23359
  };
21881
- function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $setup, $data, $options) {
23360
+ function contact_rowvue_type_template_id_69299a5d_render(_ctx, _cache, $props, $setup, $data, $options) {
21882
23361
  const _component_dt_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-icon");
21883
23362
 
21884
23363
  const _component_dt_avatar = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-avatar");
@@ -21889,10 +23368,14 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21889
23368
 
21890
23369
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_recipe_general_row, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
21891
23370
  "unread-count": $props.unreadCount,
23371
+ description: `${$props.name} ${$props.presenceText} ${$props.userStatus}`,
21892
23372
  "has-unreads": $props.hasUnreads,
21893
23373
  selected: $props.selected,
21894
23374
  "has-call-button": true,
21895
- muted: $props.muted
23375
+ muted: $props.muted,
23376
+ "is-typing": $props.isTyping,
23377
+ "call-button-tooltip": $props.callButtonTooltip,
23378
+ "unread-count-tooltip": $props.unreadCountTooltip
21896
23379
  }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toHandlers)($options.contactRowListeners), {
21897
23380
  onCall: _cache[0] || (_cache[0] = $event => _ctx.$emit('call', $event))
21898
23381
  }), {
@@ -21906,7 +23389,7 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21906
23389
  "data-qa": "dt-avatar-image",
21907
23390
  src: $props.avatarSrc,
21908
23391
  alt: $props.name
21909
- }, null, 8, contact_rowvue_type_template_id_8a190578_hoisted_1)) : $props.noInitials ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_icon, {
23392
+ }, null, 8, contact_rowvue_type_template_id_69299a5d_hoisted_1)) : $props.noInitials ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_icon, {
21910
23393
  key: 1,
21911
23394
  name: "user",
21912
23395
  size: "200"
@@ -21922,7 +23405,7 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21922
23405
  }, {
21923
23406
  default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createTextVNode)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($props.name), 1)]),
21924
23407
  _: 1
21925
- }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", contact_rowvue_type_template_id_8a190578_hoisted_2, [$props.presenceText ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("span", {
23408
+ }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", contact_rowvue_type_template_id_69299a5d_hoisted_2, [$props.presenceText ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("span", {
21926
23409
  key: 0,
21927
23410
  "data-qa": "dt-leftbar-row-presence-text",
21928
23411
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(['dt-leftbar-row__meta-context', $options.presenceColorClass])
@@ -21937,9 +23420,9 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21937
23420
  _: 1
21938
23421
  })) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)])]),
21939
23422
  _: 1
21940
- }, 16, ["unread-count", "has-unreads", "selected", "muted"]);
23423
+ }, 16, ["unread-count", "description", "has-unreads", "selected", "muted", "is-typing", "call-button-tooltip", "unread-count-tooltip"]);
21941
23424
  }
21942
- ;// CONCATENATED MODULE: ./recipes/leftbar/contact_row/contact_row.vue?vue&type=template&id=8a190578
23425
+ ;// CONCATENATED MODULE: ./recipes/leftbar/contact_row/contact_row.vue?vue&type=template&id=69299a5d
21943
23426
 
21944
23427
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./recipes/leftbar/contact_row/contact_row.vue?vue&type=script&lang=js
21945
23428
 
@@ -21947,7 +23430,6 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21947
23430
 
21948
23431
 
21949
23432
 
21950
-
21951
23433
  /* harmony default export */ const contact_rowvue_type_script_lang_js = ({
21952
23434
  name: 'DtRecipeGroupRow',
21953
23435
  components: {
@@ -21968,15 +23450,14 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21968
23450
 
21969
23451
  /**
21970
23452
  * Determines whether to show the presence indicator for
21971
- * Avatar - accepts PRESENCE_STATES values: 'active', 'busy', 'away', 'offline'. defaults to active.
21972
- * @values active, busy, away, offline
23453
+ * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',
23454
+ * or 'active'. By default, it's null and nothing is shown.
23455
+ * defer validation to avatar component.
23456
+ * @values null, busy, away, offline, active
21973
23457
  */
21974
23458
  avatarPresence: {
21975
23459
  type: String,
21976
- default: PRESENCE_STATES.ACTIVE,
21977
- validator: role => {
21978
- return PRESENCE_STATES_LIST.includes(role);
21979
- }
23460
+ default: null
21980
23461
  },
21981
23462
 
21982
23463
  /**
@@ -22050,6 +23531,30 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
22050
23531
  noInitials: {
22051
23532
  type: Boolean,
22052
23533
  default: false
23534
+ },
23535
+
23536
+ /**
23537
+ * Shows an "is typing" animation over the avatar when true.
23538
+ */
23539
+ isTyping: {
23540
+ type: Boolean,
23541
+ default: false
23542
+ },
23543
+
23544
+ /**
23545
+ * Text shown when the call button is hovered.
23546
+ */
23547
+ callButtonTooltip: {
23548
+ type: String,
23549
+ default: ''
23550
+ },
23551
+
23552
+ /**
23553
+ * Text shown when the unread count is hovered.
23554
+ */
23555
+ unreadCountTooltip: {
23556
+ type: String,
23557
+ default: ''
22053
23558
  }
22054
23559
  },
22055
23560
  emits: [
@@ -22097,7 +23602,7 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
22097
23602
 
22098
23603
 
22099
23604
  ;
22100
- const contact_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(contact_rowvue_type_script_lang_js, [['render',contact_rowvue_type_template_id_8a190578_render]])
23605
+ const contact_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(contact_rowvue_type_script_lang_js, [['render',contact_rowvue_type_template_id_69299a5d_render]])
22101
23606
 
22102
23607
  /* harmony default export */ const contact_row = (contact_row_exports_);
22103
23608
  ;// CONCATENATED MODULE: ./recipes/leftbar/contact_row/index.js
@@ -22143,6 +23648,7 @@ const contact_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(contac
22143
23648
 
22144
23649
 
22145
23650
 
23651
+
22146
23652
 
22147
23653
 
22148
23654
  /// Recipes