@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.
@@ -1199,6 +1199,7 @@ __webpack_require__.d(__webpack_exports__, {
1199
1199
  "DtRecipeIvrNode": () => (/* reexport */ ivr_node),
1200
1200
  "DtRecipeTopBannerInfo": () => (/* reexport */ top_banner_info),
1201
1201
  "DtRootLayout": () => (/* reexport */ root_layout),
1202
+ "DtScroller": () => (/* reexport */ DtScroller),
1202
1203
  "DtSelectMenu": () => (/* reexport */ select_menu),
1203
1204
  "DtSkeleton": () => (/* reexport */ skeleton_skeleton),
1204
1205
  "DtSkeletonListItem": () => (/* reexport */ skeleton_list_item),
@@ -1291,7 +1292,7 @@ if (typeof window !== 'undefined') {
1291
1292
 
1292
1293
  ;// CONCATENATED MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
1293
1294
  const external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject = require("vue");
1294
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
1295
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
1295
1296
 
1296
1297
  const _hoisted_1 = ["id"];
1297
1298
  const _hoisted_2 = {
@@ -1300,7 +1301,7 @@ const _hoisted_2 = {
1300
1301
  };
1301
1302
  const _hoisted_3 = {
1302
1303
  key: 0,
1303
- class: "d-avatar__count",
1304
+ class: "d-avatar__count d-zi-base1",
1304
1305
  "data-qa": "dt-avatar-count"
1305
1306
  };
1306
1307
  function render(_ctx, _cache, $props, $setup, $data, $options) {
@@ -1313,18 +1314,18 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
1313
1314
  "data-qa": "dt-avatar"
1314
1315
  }, [(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", {
1315
1316
  key: 0
1316
- }) : $options.showInitials ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("span", {
1317
+ }) : (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", {
1317
1318
  key: 1,
1318
- class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)($data.AVATAR_KIND_MODIFIERS.initials)
1319
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["d-ps-absolute d-zi-base", $data.AVATAR_KIND_MODIFIERS.initials])
1319
1320
  }, (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)({
1320
1321
  key: 1,
1321
1322
  presence: $props.presence,
1322
- class: ['d-avatar__presence', $data.AVATAR_PRESENCE_SIZE_MODIFIERS[$props.size]]
1323
+ class: ["d-zi-base1", ['d-avatar__presence', $data.AVATAR_PRESENCE_SIZE_MODIFIERS[$props.size]]]
1323
1324
  }, $props.presenceProps, {
1324
1325
  "data-qa": "dt-presence"
1325
1326
  }), null, 16, ["presence", "class"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 14, _hoisted_1);
1326
1327
  }
1327
- ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=template&id=0795f071
1328
+ ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=template&id=ac8c0ad8
1328
1329
 
1329
1330
  ;// CONCATENATED MODULE: ./common/constants.js
1330
1331
  /* TODO: Move and sort these in a constants directory
@@ -1400,7 +1401,8 @@ const DEFAULT_PREFIX = 'dt';
1400
1401
 
1401
1402
  const seedrandom = __webpack_require__(377);
1402
1403
 
1403
- let UNIQUE_ID_COUNTER = 0; // selector to find focusable not hidden inputs
1404
+ let UNIQUE_ID_COUNTER = 0;
1405
+ let TIMER; // selector to find focusable not hidden inputs
1404
1406
 
1405
1407
  const FOCUSABLE_SELECTOR_NOT_HIDDEN = 'input:not([type=hidden]):not(:disabled)'; // selector to find focusable not disables elements
1406
1408
 
@@ -1524,7 +1526,7 @@ function hasSlotContent(slot) {
1524
1526
  */
1525
1527
 
1526
1528
  const kebabCaseToPascalCase = string => {
1527
- return string.toLowerCase().split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
1529
+ return string === null || string === void 0 ? void 0 : string.toLowerCase().split('-').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
1528
1530
  };
1529
1531
  /**
1530
1532
  * Transform a string from PascalCase to kebab-case
@@ -1542,6 +1544,17 @@ const extractVueListeners = attrs => {
1542
1544
  });
1543
1545
  return Object.fromEntries(listeners);
1544
1546
  };
1547
+ /*
1548
+ * Set's a global timer to debounce the execution of a function.
1549
+ * @param { object } func - the function that is going to be called after timeout
1550
+ * @param { number } [timeout=300] timeout
1551
+ * */
1552
+
1553
+ function debounce(func) {
1554
+ let timeout = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 300;
1555
+ clearTimeout(TIMER);
1556
+ TIMER = setTimeout(func, timeout);
1557
+ }
1545
1558
  /* harmony default export */ const utils = ({
1546
1559
  getUniqueString,
1547
1560
  getRandomElement,
@@ -1552,7 +1565,8 @@ const extractVueListeners = attrs => {
1552
1565
  htmlFragment,
1553
1566
  flushPromises,
1554
1567
  kebabCaseToPascalCase,
1555
- extractVueListeners
1568
+ extractVueListeners,
1569
+ debounce
1556
1570
  });
1557
1571
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
1558
1572
 
@@ -1657,6 +1671,13 @@ const AVATAR_PRESENCE_SIZE_MODIFIERS = {
1657
1671
  md: 'd-avatar__presence--md',
1658
1672
  lg: 'd-avatar__presence--lg'
1659
1673
  };
1674
+ const AVATAR_PRESENCE_STATES = {
1675
+ NONE: null,
1676
+ BUSY: 'busy',
1677
+ AWAY: 'away',
1678
+ OFFLINE: 'offline',
1679
+ ACTIVE: 'active'
1680
+ };
1660
1681
  const AVATAR_ICON_SIZES = {
1661
1682
  xs: '100',
1662
1683
  sm: '200',
@@ -1744,7 +1765,10 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1744
1765
  */
1745
1766
  presence: {
1746
1767
  type: String,
1747
- default: null
1768
+ default: AVATAR_PRESENCE_STATES.NONE,
1769
+ validator: state => {
1770
+ return Object.values(AVATAR_PRESENCE_STATES).includes(state);
1771
+ }
1748
1772
  },
1749
1773
 
1750
1774
  /**
@@ -1786,13 +1810,14 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1786
1810
  data() {
1787
1811
  return {
1788
1812
  // initials, image or icon
1789
- kind: 'image',
1813
+ kind: null,
1790
1814
  AVATAR_SIZE_MODIFIERS: AVATAR_SIZE_MODIFIERS,
1791
1815
  AVATAR_KIND_MODIFIERS: AVATAR_KIND_MODIFIERS,
1792
1816
  AVATAR_PRESENCE_SIZE_MODIFIERS: AVATAR_PRESENCE_SIZE_MODIFIERS,
1793
1817
  imageLoadedSuccessfully: null,
1794
1818
  slottedInitials: '',
1795
- formattedInitials: ''
1819
+ formattedInitials: '',
1820
+ initializing: false
1796
1821
  };
1797
1822
  },
1798
1823
 
@@ -1805,11 +1830,11 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1805
1830
  },
1806
1831
 
1807
1832
  showDefaultSlot() {
1808
- return this.kind !== 'initials' && this.imageLoadedSuccessfully !== false;
1833
+ return this.kind !== 'initials' || this.kind === 'image' && this.imageLoadedSuccessfully === true;
1809
1834
  },
1810
1835
 
1811
1836
  showInitials() {
1812
- return this.kind === 'initials' || this.initials;
1837
+ return this.kind === 'initials' || this.kind === 'image' && this.initials;
1813
1838
  },
1814
1839
 
1815
1840
  showGroup() {
@@ -1842,28 +1867,27 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1842
1867
  },
1843
1868
 
1844
1869
  updated() {
1845
- if (this.kind === 'initials') {
1846
- this.slottedInitials = this.$el.children[0].textContent;
1847
- this.formatInitials(this.slottedInitials);
1848
- }
1870
+ this.init();
1849
1871
  },
1850
1872
 
1851
1873
  methods: {
1852
- init() {
1874
+ async init() {
1875
+ if (this.initializing) return;
1876
+ this.kind = null;
1877
+ await this.$nextTick();
1853
1878
  const firstChild = this.$refs.canvas.children[0] || this.$refs.canvas;
1854
-
1855
- if (!firstChild) {
1856
- return;
1857
- }
1858
-
1879
+ this.formatInitials(this.initials);
1859
1880
  this.setKind(firstChild);
1860
1881
  this.kindHandler(firstChild);
1882
+ this.initializing = true;
1883
+ await this.$nextTick();
1884
+ this.initializing = false;
1861
1885
  },
1862
1886
 
1863
1887
  kindHandler(el) {
1864
1888
  switch (this.kind) {
1865
1889
  case 'image':
1866
- el.classList.add('d-avatar__image');
1890
+ el.classList.add('d-avatar__image', 'd-zi-base1');
1867
1891
  this.validateImageAttrsPresence();
1868
1892
  this.setImageListeners(el);
1869
1893
  break;
@@ -1873,25 +1897,27 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1873
1897
  break;
1874
1898
 
1875
1899
  case 'initials':
1900
+ if (!el.textContent) return;
1876
1901
  this.slottedInitials = el.textContent;
1877
- this.formatInitials(this.slottedInitials);
1902
+ this.formatInitials(this.slottedInitials.trim() || this.initials);
1878
1903
  break;
1879
1904
  }
1880
1905
  },
1881
1906
 
1882
1907
  setImageListeners(el) {
1883
- el.addEventListener('error', () => {
1884
- this.formatInitials(this.initials);
1885
- this.imageLoadedSuccessfully = false;
1908
+ el.addEventListener('load', () => this._loadedImageEventHandler(el), {
1909
+ once: true
1886
1910
  });
1887
- el.addEventListener('load', () => {
1888
- el.classList.add('d-avatar--image-loaded');
1889
- this.imageLoadedSuccessfully = true;
1911
+ el.addEventListener('error', () => this._erroredImageEventHandler(el), {
1912
+ once: true
1890
1913
  });
1891
1914
  },
1892
1915
 
1893
1916
  formatInitials(initials) {
1894
- if (!initials) return;
1917
+ if (!initials) {
1918
+ this.formattedInitials = '';
1919
+ return;
1920
+ }
1895
1921
 
1896
1922
  if (this.validatedSize === 'xs') {
1897
1923
  this.formattedInitials = '';
@@ -1903,7 +1929,7 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1903
1929
  },
1904
1930
 
1905
1931
  setKind(element) {
1906
- if (this.isSvgType(element)) {
1932
+ if (this.isIconType(element)) {
1907
1933
  this.kind = 'icon';
1908
1934
  return;
1909
1935
  }
@@ -1916,7 +1942,7 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1916
1942
  this.kind = 'initials';
1917
1943
  },
1918
1944
 
1919
- isSvgType(element) {
1945
+ isIconType(element) {
1920
1946
  var _element$tagName;
1921
1947
 
1922
1948
  return (element === null || element === void 0 ? void 0 : (_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toUpperCase()) === 'SVG';
@@ -1962,16 +1988,28 @@ const AVATAR_GROUP_VALIDATOR = group => group > 1;
1962
1988
  if (isSrcMissing || isAltMissing) {
1963
1989
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.warn)('src and alt attributes are required for image avatars', this);
1964
1990
  }
1991
+ },
1992
+
1993
+ _loadedImageEventHandler(el) {
1994
+ this.imageLoadedSuccessfully = true;
1995
+ el.classList.remove('d-d-none');
1996
+ el.classList.add('d-avatar--image-loaded');
1997
+ },
1998
+
1999
+ _erroredImageEventHandler(el) {
2000
+ this.imageLoadedSuccessfully = false;
2001
+ el.classList.remove('d-avatar--image-loaded');
2002
+ el.classList.add('d-d-none');
1965
2003
  }
1966
2004
 
1967
2005
  }
1968
2006
  });
1969
2007
  ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=script&lang=js
1970
2008
 
1971
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.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
2009
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.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
1972
2010
  // extracted by mini-css-extract-plugin
1973
2011
 
1974
- ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=style&index=0&id=0795f071&lang=less
2012
+ ;// CONCATENATED MODULE: ./components/avatar/avatar.vue?vue&type=style&index=0&id=ac8c0ad8&lang=less
1975
2013
 
1976
2014
  ;// CONCATENATED MODULE: ./components/avatar/avatar.vue
1977
2015
 
@@ -3038,7 +3076,7 @@ const notice_action_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(noti
3038
3076
 
3039
3077
  /* harmony default export */ const notice_action = (notice_action_exports_);
3040
3078
  ;// CONCATENATED MODULE: ./common/mixins/modal.js
3041
- const focusableAttrs = ':not(:disabled):not([aria-disabled="true"])';
3079
+ const focusableAttrs = ':not(:disabled):not([aria-disabled="true"]):not([role="presentation"])';
3042
3080
  const tabbableAttrs = `${focusableAttrs}:not([tabindex="-1"])`;
3043
3081
  const focusableElementsList = `button,[href],input,select,textarea,details,[tabindex]`;
3044
3082
  /**
@@ -7045,7 +7083,7 @@ function orderModifiers(modifiers) {
7045
7083
  }, []);
7046
7084
  }
7047
7085
  ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/utils/debounce.js
7048
- function debounce(fn) {
7086
+ function debounce_debounce(fn) {
7049
7087
  var pending;
7050
7088
  return function () {
7051
7089
  if (!pending) {
@@ -7230,7 +7268,7 @@ function popperGenerator(generatorOptions) {
7230
7268
  },
7231
7269
  // Async and optimistically optimized update – it will not be executed if
7232
7270
  // not necessary (debounced to run at most once-per-tick)
7233
- update: debounce(function () {
7271
+ update: debounce_debounce(function () {
7234
7272
  return new Promise(function (resolve) {
7235
7273
  instance.forceUpdate();
7236
7274
  resolve(state);
@@ -11036,7 +11074,6 @@ const getArrowDetected = fn => ({
11036
11074
  ;// CONCATENATED MODULE: ./components/popover/tippy_utils.js
11037
11075
 
11038
11076
 
11039
-
11040
11077
  const BASE_TIPPY_DIRECTIONS = ['bottom', 'bottom-start', 'bottom-end', 'right', 'right-start', 'right-end', 'left', 'left-start', 'left-end', 'top', 'top-start', 'top-end'];
11041
11078
  const TIPPY_STICKY_VALUES = [true, false, 'reference', 'popper'];
11042
11079
  const tippy_utils_createTippy = (anchorElement, options) => {
@@ -11085,24 +11122,17 @@ const getPopperOptions = function () {
11085
11122
  };
11086
11123
  };
11087
11124
 
11088
- const createAnchor = (anchorWrapper, tabIndex) => {
11125
+ const createAnchor = anchorWrapper => {
11089
11126
  const span = document.createElement('span');
11090
- span.setAttribute('tabindex', tabIndex);
11091
11127
  span.innerText = anchorWrapper.innerText || '';
11092
11128
  anchorWrapper.innerText = '';
11093
11129
  anchorWrapper.appendChild(span);
11094
11130
  return span;
11095
11131
  };
11096
11132
 
11097
- const getAnchor = function (anchorWrapper) {
11098
- let tabIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0';
11133
+ const getAnchor = anchorWrapper => {
11099
11134
  const anchor = anchorWrapper === null || anchorWrapper === void 0 ? void 0 : anchorWrapper.children[0];
11100
11135
  if (!anchor) return createAnchor(anchorWrapper);
11101
-
11102
- if (!findFirstFocusableNode(anchor)) {
11103
- anchor.setAttribute('tabindex', tabIndex);
11104
- }
11105
-
11106
11136
  return anchor;
11107
11137
  };
11108
11138
  const getContentWrapper = content => {
@@ -17413,16 +17443,17 @@ const toggle_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(togglevue_t
17413
17443
  /* harmony default export */ const toggle = (toggle_exports_);
17414
17444
  ;// CONCATENATED MODULE: ./components/toggle/index.js
17415
17445
 
17416
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
17446
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
17417
17447
 
17418
- const tooltipvue_type_template_id_52eb174c_hoisted_1 = {
17448
+ const tooltipvue_type_template_id_1868931e_hoisted_1 = {
17419
17449
  "data-qa": "dt-tooltip-container"
17420
17450
  };
17421
- function tooltipvue_type_template_id_52eb174c_render(_ctx, _cache, $props, $setup, $data, $options) {
17451
+ function tooltipvue_type_template_id_1868931e_render(_ctx, _cache, $props, $setup, $data, $options) {
17422
17452
  const _component_dt_lazy_show = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-lazy-show");
17423
17453
 
17424
- 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", {
17454
+ 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", {
17425
17455
  ref: "anchor",
17456
+ tabindex: "-1",
17426
17457
  role: "presentation",
17427
17458
  "data-qa": "dt-tooltip-anchor",
17428
17459
  onFocusin: _cache[0] || (_cache[0] = function () {
@@ -17457,7 +17488,7 @@ function tooltipvue_type_template_id_52eb174c_render(_ctx, _cache, $props, $setu
17457
17488
  _: 3
17458
17489
  }, 16, ["id", "show", "appear", "transition", "class"])]);
17459
17490
  }
17460
- ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=template&id=52eb174c
17491
+ ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=template&id=1868931e
17461
17492
 
17462
17493
  ;// CONCATENATED MODULE: ./components/tooltip/tooltip_constants.js
17463
17494
  /*
@@ -17811,10 +17842,10 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
17811
17842
  });
17812
17843
  ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=script&lang=js
17813
17844
 
17814
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.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
17845
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.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
17815
17846
  // extracted by mini-css-extract-plugin
17816
17847
 
17817
- ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=style&index=0&id=52eb174c&lang=less
17848
+ ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue?vue&type=style&index=0&id=1868931e&lang=less
17818
17849
 
17819
17850
  ;// CONCATENATED MODULE: ./components/tooltip/tooltip.vue
17820
17851
 
@@ -17824,7 +17855,7 @@ const TOOLTIP_HIDE_ON_CLICK_VARIANTS = [true, false, 'toggle'];
17824
17855
  ;
17825
17856
 
17826
17857
 
17827
- const tooltip_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tooltipvue_type_script_lang_js, [['render',tooltipvue_type_template_id_52eb174c_render]])
17858
+ const tooltip_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tooltipvue_type_script_lang_js, [['render',tooltipvue_type_template_id_1868931e_render]])
17828
17859
 
17829
17860
  /* harmony default export */ const tooltip = (tooltip_exports_);
17830
17861
  ;// CONCATENATED MODULE: ./components/tooltip/index.js
@@ -18518,249 +18549,1577 @@ const stack_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(stackvue_typ
18518
18549
  /* harmony default export */ const stack = (stack_exports_);
18519
18550
  ;// CONCATENATED MODULE: ./components/stack/index.js
18520
18551
 
18521
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
18522
-
18523
- const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_1 = ["id"];
18524
- const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_2 = {
18525
- ref: "header"
18526
- };
18527
- const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_3 = ["onMouseleave", "onFocusout"];
18528
- const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_4 = {
18529
- ref: "footer"
18530
- };
18531
- function combobox_with_popovervue_type_template_id_bdafd0f4_render(_ctx, _cache, $props, $setup, $data, $options) {
18532
- const _component_combobox_loading_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-loading-list");
18533
-
18534
- const _component_combobox_empty_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-empty-list");
18535
-
18536
- const _component_dt_popover = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-popover");
18537
-
18538
- const _component_dt_combobox = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-combobox");
18539
-
18540
- 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)({
18541
- ref: "combobox",
18542
- loading: $props.loading,
18543
- label: $props.label,
18544
- "label-visible": $props.labelVisible,
18545
- size: $props.size,
18546
- description: $props.description,
18547
- "empty-list": $props.emptyList,
18548
- "empty-state-message": $props.emptyStateMessage,
18549
- "show-list": $data.isListShown,
18550
- "on-beginning-of-list": $props.onBeginningOfList,
18551
- "on-end-of-list": $props.onEndOfList,
18552
- "list-rendered-outside": true,
18553
- "list-id": $props.listId,
18554
- "data-qa": "dt-combobox"
18555
- }, $options.comboboxListeners), {
18556
- input: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref => {
18557
- let {
18558
- inputProps
18559
- } = _ref;
18560
- return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
18561
- id: $data.externalAnchor,
18562
- ref: "input",
18563
- onFocusin: _cache[0] || (_cache[0] = function () {
18564
- return $options.onFocusIn && $options.onFocusIn(...arguments);
18565
- }),
18566
- 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"]))]
18567
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "input", {
18568
- inputProps: inputProps,
18569
- onInput: $options.handleDisplayList
18570
- })], 40, combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_1)];
18571
- }),
18572
- list: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref2 => {
18573
- let {
18574
- opened,
18575
- listProps,
18576
- clearHighlightIndex
18577
- } = _ref2;
18578
- return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_popover, {
18579
- ref: "popover",
18580
- open: $data.isListShown,
18581
- "onUpdate:open": _cache[3] || (_cache[3] = $event => $data.isListShown = $event),
18582
- "hide-on-click": false,
18583
- "max-height": $props.maxHeight,
18584
- "max-width": $props.maxWidth,
18585
- offset: $props.popoverOffset,
18586
- sticky: $props.popoverSticky,
18587
- placement: "bottom-start",
18588
- "initial-focus-element": "none",
18589
- padding: "none",
18590
- role: "listbox",
18591
- "external-anchor": $data.externalAnchor,
18592
- "content-width": $props.contentWidth,
18593
- "content-appear": true,
18594
- "content-tabindex": null,
18595
- modal: false,
18596
- "auto-focus": false,
18597
- "append-to": $props.appendTo,
18598
- "visually-hidden-close-label": _ctx.visuallyHiddenCloseLabel,
18599
- "visually-hidden-close": _ctx.visuallyHiddenClose,
18600
- onOpened: opened
18601
- }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createSlots)({
18602
- content: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
18603
- ref: "listWrapper",
18604
- class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)([$data.DROPDOWN_PADDING_CLASSES[$props.padding], $props.listClass]),
18605
- onMouseleave: clearHighlightIndex,
18606
- onFocusout: clearHighlightIndex
18607
- }, [$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)({
18608
- key: 0
18609
- }, 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)({
18610
- key: 1
18611
- }, listProps, {
18612
- message: $props.emptyStateMessage
18613
- }), null, 16, ["message"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "list", {
18614
- key: 2,
18615
- listProps: listProps
18616
- })], 42, combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_3)]),
18617
- _: 2
18618
- }, [$data.hasSlotContent(_ctx.$slots.header) ? {
18619
- name: "headerContent",
18620
- 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)]),
18621
- key: "0"
18622
- } : undefined, $data.hasSlotContent(_ctx.$slots.footer) ? {
18623
- name: "footerContent",
18624
- 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)]),
18625
- key: "1"
18626
- } : undefined]), 1032, ["open", "max-height", "max-width", "offset", "sticky", "external-anchor", "content-width", "append-to", "visually-hidden-close-label", "visually-hidden-close", "onOpened"])];
18627
- }),
18628
- _: 3
18629
- }, 16, ["loading", "label", "label-visible", "size", "description", "empty-list", "empty-state-message", "show-list", "on-beginning-of-list", "on-end-of-list", "list-id"]);
18630
- }
18631
- ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=bdafd0f4
18632
-
18633
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
18634
- /* eslint-disable vuejs-accessibility/no-static-element-interactions */
18635
-
18636
-
18637
-
18638
-
18639
-
18640
-
18641
-
18552
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
18642
18553
 
18643
18554
 
18644
- /* harmony default export */ const combobox_with_popovervue_type_script_lang_js = ({
18645
- name: 'DtRecipeComboboxWithPopover',
18646
- components: {
18647
- DtCombobox: combobox,
18648
- DtPopover: popover,
18649
- ComboboxLoadingList: combobox_loading_list,
18650
- ComboboxEmptyList: combobox_empty_list
18651
- },
18652
- mixins: [sr_only_close_button],
18555
+ /* harmony default export */ const core_scrollervue_type_script_setup_true_lang_js = ({
18556
+ __name: 'core-scroller',
18653
18557
  props: {
18654
18558
  /**
18655
- * String to use for the input label.
18656
- */
18657
- label: {
18658
- type: String,
18559
+ * List of items you want to display in the scroller.
18560
+ */
18561
+ items: {
18562
+ type: Array,
18659
18563
  required: true
18660
18564
  },
18661
18565
 
18662
18566
  /**
18663
- * Determines visibility of input label.
18664
- * @values true, false
18665
- */
18666
- labelVisible: {
18667
- type: Boolean,
18668
- default: true
18567
+ *
18568
+ * Field used to identify items and optimize managing rendered views
18569
+ */
18570
+ keyField: {
18571
+ type: String,
18572
+ default: 'id'
18669
18573
  },
18670
18574
 
18671
18575
  /**
18672
- * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`
18673
- * @values null, xs, sm, md, lg, xl
18674
- */
18675
- size: {
18576
+ * Direction of the scroller. Can be either `vertical` or `horizontal`.
18577
+ */
18578
+ direction: {
18676
18579
  type: String,
18677
- default: null,
18678
- validator: t => Object.values(LABEL_SIZES).includes(t)
18580
+ default: 'vertical',
18581
+ validator: value => ['vertical', 'horizontal'].includes(value)
18679
18582
  },
18680
18583
 
18681
18584
  /**
18682
- * Description for the input
18683
- */
18684
- description: {
18685
- type: String,
18686
- default: ''
18585
+ * Size of the items in the list.
18586
+ * If it is set to null (the default value), it will use variable size mode.
18587
+ */
18588
+ itemSize: {
18589
+ type: Number,
18590
+ default: null
18687
18591
  },
18688
18592
 
18689
18593
  /**
18690
- * Determines when to show the list element and also controls the aria-expanded attribute.
18691
- * Leaving this null will have the combobox trigger on input focus by default.
18692
- * If you set this value, the default trigger behavior will be disabled and you can
18693
- * control it as you need.
18694
- */
18695
- showList: {
18696
- type: Boolean,
18594
+ * Minimum size used if the height (or width in horizontal mode) of an item is unknown.
18595
+ */
18596
+ minItemSize: {
18597
+ type: [Number, String],
18697
18598
  default: null
18698
18599
  },
18699
18600
 
18700
18601
  /**
18701
- * Sets an ID on the list element of the component. Used by several aria attributes
18702
- * as well as when deriving the IDs for each item.
18703
- */
18704
- listId: {
18602
+ * Field used to get the item's size in variable size mode.
18603
+ */
18604
+ sizeField: {
18705
18605
  type: String,
18706
-
18707
- default() {
18708
- return getUniqueString();
18709
- }
18710
-
18606
+ default: 'size'
18711
18607
  },
18712
18608
 
18713
18609
  /**
18714
- * Additional class for the wrapper list element.
18715
- */
18716
- listClass: {
18717
- type: [String, Array, Object],
18718
- default: ''
18610
+ * Amount of pixel to add to edges of the scrolling visible area to start rendering items further away.
18611
+ */
18612
+ buffer: {
18613
+ type: Number,
18614
+ default: 200
18719
18615
  },
18720
18616
 
18721
18617
  /**
18722
- * A method that will be called when the selection goes past the beginning of the list.
18723
- */
18724
- onBeginningOfList: {
18725
- type: Function,
18726
- default: null
18618
+ * If true, the hover state will be skipped.
18619
+ * This can be useful if you want to use the hover state for other purposes.
18620
+ */
18621
+ skipHover: {
18622
+ type: Boolean,
18623
+ default: false
18727
18624
  },
18728
18625
 
18729
18626
  /**
18730
- * A method that will be called when the selection goes past the end of the list.
18731
- */
18732
- onEndOfList: {
18733
- type: Function,
18734
- default: null
18627
+ * The element to render as the list's wrapper.
18628
+ */
18629
+ listTag: {
18630
+ type: String,
18631
+ default: 'div'
18735
18632
  },
18736
18633
 
18737
18634
  /**
18738
- * Determines maximum height for the popover before overflow.
18739
- * Possible units rem|px|em
18740
- */
18741
- maxHeight: {
18635
+ * The element to render as the list item.
18636
+ */
18637
+ itemTag: {
18742
18638
  type: String,
18743
- default: ''
18639
+ default: 'div'
18744
18640
  },
18745
18641
 
18746
18642
  /**
18747
- * Determines maximum width for the popover before overflow.
18748
- * Possible units rem|px|%|em
18749
- */
18750
- maxWidth: {
18751
- type: String,
18643
+ * The custom classes added to the item list wrapper.
18644
+ */
18645
+ listClass: {
18646
+ type: [String, Object, Array],
18752
18647
  default: ''
18753
18648
  },
18754
18649
 
18755
18650
  /**
18756
- * Vertical padding size around the list element.
18757
- */
18758
- padding: {
18759
- type: String,
18760
- default: 'small',
18761
- validator: padding => {
18762
- return Object.keys(DROPDOWN_PADDING_CLASSES).some(item => item === padding);
18763
- }
18651
+ * The custom classes added to each item.
18652
+ */
18653
+ itemClass: {
18654
+ type: [String, Object, Array],
18655
+ default: ''
18656
+ }
18657
+ },
18658
+ emits: ['scroll-start', 'scroll-end'],
18659
+
18660
+ setup(__props, _ref) {
18661
+ let {
18662
+ expose,
18663
+ emit
18664
+ } = _ref;
18665
+ const props = __props;
18666
+ const views = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.reactive)(new Map());
18667
+ const reactiveItems = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.reactive)(props.items);
18668
+ const unusedViews = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.reactive)(new Map());
18669
+ const updateTimeout = null;
18670
+ const pool = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)([]);
18671
+ const hoverKey = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(null);
18672
+ const ready = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(false);
18673
+ const scroller = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(null);
18674
+ let startIndex = 0;
18675
+ let endIndex = 0;
18676
+ let scrollDirty = false;
18677
+ let lastUpdateScrollPosition = 0;
18678
+ let sortTimer = null;
18679
+ let computedMinItemSize = null;
18680
+ let totalSize = 0;
18681
+ let uid = 0;
18682
+ const sizes = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
18683
+ if (props.itemSize === null) {
18684
+ const sizes = {
18685
+ '-1': {
18686
+ accumulator: 0
18687
+ }
18688
+ };
18689
+ const items = props.items;
18690
+ const field = props.sizeField;
18691
+ const minItemSize = props.minItemSize;
18692
+ let computedMinSize = 10000;
18693
+ let accumulator = 0;
18694
+ let current;
18695
+
18696
+ for (let i = 0, l = items.length; i < l; i++) {
18697
+ current = items[i][field] || minItemSize;
18698
+
18699
+ if (current < computedMinSize) {
18700
+ computedMinSize = current;
18701
+ }
18702
+
18703
+ accumulator += current;
18704
+ sizes[i] = {
18705
+ accumulator,
18706
+ size: current
18707
+ };
18708
+ }
18709
+
18710
+ computedMinItemSize = computedMinSize;
18711
+ return sizes;
18712
+ }
18713
+
18714
+ return [];
18715
+ });
18716
+ const simpleArray = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
18717
+ return props.items.length && typeof props.items[0] !== 'object';
18718
+ });
18719
+ const itemIndexByKey = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
18720
+ const result = {};
18721
+
18722
+ for (let i = 0, l = props.items.length; i < l; i++) {
18723
+ result[props.items[i][props.keyField]] = i;
18724
+ }
18725
+
18726
+ return result;
18727
+ });
18728
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(reactiveItems, () => {
18729
+ _updateVisibleItems(true);
18730
+ });
18731
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(sizes, () => {
18732
+ _updateVisibleItems(false);
18733
+ }, {
18734
+ deep: true
18735
+ });
18736
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.onMounted)(() => {
18737
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.nextTick)(() => {
18738
+ // In SSR mode, render the real number of visible items
18739
+ _updateVisibleItems(true);
18740
+
18741
+ ready.value = true;
18742
+ });
18743
+ });
18744
+
18745
+ const _addView = (pool, index, item, key, type) => {
18746
+ const nr = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.markRaw)({
18747
+ id: uid++,
18748
+ index,
18749
+ used: true,
18750
+ key,
18751
+ type
18752
+ });
18753
+ const view = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.shallowReactive)({
18754
+ item,
18755
+ position: 0,
18756
+ nr
18757
+ });
18758
+ pool.value.push(view);
18759
+ return view;
18760
+ };
18761
+
18762
+ const _unuseView = function (view) {
18763
+ let fake = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
18764
+ const _unusedViews = unusedViews;
18765
+ const type = view.nr.type;
18766
+
18767
+ let unusedPool = _unusedViews.get(type);
18768
+
18769
+ if (!unusedPool) {
18770
+ unusedPool = [];
18771
+
18772
+ _unusedViews.set(type, unusedPool);
18773
+ }
18774
+
18775
+ unusedPool.push(view);
18776
+
18777
+ if (!fake) {
18778
+ view.nr.used = false;
18779
+ view.position = -9999;
18780
+ }
18781
+ };
18782
+
18783
+ const _getScroll = () => {
18784
+ const isVertical = props.direction === 'vertical';
18785
+ let scrollState;
18786
+
18787
+ if (isVertical) {
18788
+ scrollState = {
18789
+ start: scroller.value.scrollTop,
18790
+ end: scroller.value.scrollTop + scroller.value.clientHeight
18791
+ };
18792
+ } else {
18793
+ scrollState = {
18794
+ start: scroller.value.scrollLeft,
18795
+ end: scroller.value.scrollLeft + scroller.value.clientWidth
18796
+ };
18797
+ }
18798
+
18799
+ return scrollState;
18800
+ };
18801
+
18802
+ const _itemsLimitError = () => {
18803
+ setTimeout(() => {
18804
+ // eslint-disable-next-line max-len
18805
+ 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
18806
+
18807
+ 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.');
18808
+ });
18809
+ throw new Error('Rendered items limit reached');
18810
+ };
18811
+
18812
+ const _sortViews = () => {
18813
+ pool.value.sort((viewA, viewB) => viewA.nr.index - viewB.nr.index);
18814
+ };
18815
+
18816
+ const _updateVisibleItems = function (checkItem) {
18817
+ let checkPositionDiff = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
18818
+ const itemSize = props.itemSize;
18819
+ const minItemSize = computedMinItemSize;
18820
+ const keyField = simpleArray.value ? null : props.keyField;
18821
+ const items = props.items;
18822
+ const count = items.length;
18823
+ const _sizes = sizes.value;
18824
+ const _views = views;
18825
+ const _unusedViews = unusedViews;
18826
+ const _pool = pool;
18827
+ const _itemIndexByKey = itemIndexByKey;
18828
+
18829
+ let _startIndex, _endIndex;
18830
+
18831
+ let _totalSize;
18832
+
18833
+ let visibleStartIndex, visibleEndIndex;
18834
+
18835
+ if (!count) {
18836
+ _startIndex = _endIndex = visibleStartIndex = visibleEndIndex = _totalSize = 0;
18837
+ } else {
18838
+ const scroll = _getScroll(); // Skip update if use hasn't scrolled enough
18839
+
18840
+
18841
+ if (checkPositionDiff) {
18842
+ let positionDiff = scroll.start - lastUpdateScrollPosition.value;
18843
+ if (positionDiff < 0) positionDiff = -positionDiff;
18844
+
18845
+ if (itemSize === null && positionDiff < minItemSize.value || positionDiff < itemSize) {
18846
+ return {
18847
+ continuous: true
18848
+ };
18849
+ }
18850
+ }
18851
+
18852
+ lastUpdateScrollPosition = scroll.start;
18853
+ const _buffer = props.buffer;
18854
+ scroll.start -= _buffer;
18855
+ scroll.end += _buffer; // Variable size mode
18856
+
18857
+ if (itemSize === null) {
18858
+ var _sizes3;
18859
+
18860
+ let h;
18861
+ let a = 0;
18862
+ let b = count - 1;
18863
+ let i = ~~(count / 2);
18864
+ let oldI; // Searching for _startIndex
18865
+
18866
+ do {
18867
+ var _sizes$i, _sizes2;
18868
+
18869
+ oldI = i;
18870
+ h = (_sizes$i = _sizes[i]) === null || _sizes$i === void 0 ? void 0 : _sizes$i.accumulator;
18871
+
18872
+ if (h < scroll.start) {
18873
+ a = i;
18874
+ } else if (i < count - 1 && ((_sizes2 = _sizes[i + 1]) === null || _sizes2 === void 0 ? void 0 : _sizes2.accumulator) > scroll.start) {
18875
+ b = i;
18876
+ }
18877
+
18878
+ i = ~~((a + b) / 2);
18879
+ } while (i !== oldI);
18880
+
18881
+ i < 0 && (i = 0);
18882
+ _startIndex = i; // For container style
18883
+
18884
+ _totalSize = (_sizes3 = _sizes[count - 1]) === null || _sizes3 === void 0 ? void 0 : _sizes3.accumulator; // Searching for _endIndex
18885
+
18886
+ for (_endIndex = i; _endIndex < count && ((_sizes$_endIndex = _sizes[_endIndex]) === null || _sizes$_endIndex === void 0 ? void 0 : _sizes$_endIndex.accumulator) < scroll.end; _endIndex++) {
18887
+ var _sizes$_endIndex;
18888
+
18889
+ ;
18890
+ }
18891
+
18892
+ if (_endIndex === -1) {
18893
+ _endIndex = items.length - 1;
18894
+ } else {
18895
+ _endIndex++; // Bounds
18896
+
18897
+ _endIndex > count && (_endIndex = count);
18898
+ } // search visible _startIndex
18899
+
18900
+
18901
+ for (visibleStartIndex = startIndex; visibleStartIndex < count && ((_sizes$visibleStartIn = _sizes[visibleStartIndex]) === null || _sizes$visibleStartIn === void 0 ? void 0 : _sizes$visibleStartIn.accumulator) < scroll.start; visibleStartIndex++) {
18902
+ var _sizes$visibleStartIn;
18903
+
18904
+ ;
18905
+ } // search visible endIndex
18906
+
18907
+
18908
+ for (visibleEndIndex = visibleStartIndex; visibleEndIndex < count && ((_sizes$visibleEndInde = _sizes[visibleEndIndex]) === null || _sizes$visibleEndInde === void 0 ? void 0 : _sizes$visibleEndInde.accumulator) < scroll.end; visibleEndIndex++) {
18909
+ var _sizes$visibleEndInde;
18910
+
18911
+ ;
18912
+ }
18913
+ } else {
18914
+ // Fixed size mode
18915
+ _startIndex = ~~(scroll.start / itemSize);
18916
+ const remainer = _startIndex % 1;
18917
+ _startIndex -= remainer;
18918
+ _endIndex = Math.ceil(scroll.end / itemSize);
18919
+ visibleStartIndex = Math.max(0, Math.floor(scroll.start / itemSize));
18920
+ visibleEndIndex = Math.floor(scroll.end / itemSize); // Bounds
18921
+
18922
+ _startIndex < 0 && (_startIndex = 0);
18923
+ _endIndex > count && (_endIndex = count);
18924
+ visibleStartIndex < 0 && (visibleStartIndex = 0);
18925
+ visibleEndIndex > count && (visibleEndIndex = count);
18926
+ _totalSize = Math.ceil(count / 1) * itemSize;
18927
+ }
18928
+ } // items limit 1000
18929
+
18930
+
18931
+ if (_endIndex - _startIndex > 1000) {
18932
+ _itemsLimitError();
18933
+ }
18934
+
18935
+ totalSize = _totalSize;
18936
+ let view;
18937
+ const continuous = _startIndex <= endIndex && _endIndex >= _startIndex; // Unuse views that are no longer visible
18938
+
18939
+ if (continuous) {
18940
+ for (let i = 0, l = _pool.value.length; i < l; i++) {
18941
+ var _view;
18942
+
18943
+ view = _pool.value[i];
18944
+
18945
+ if ((_view = view) !== null && _view !== void 0 && _view.nr.used) {
18946
+ // Update view item index
18947
+ if (checkItem) {
18948
+ view.nr.index = _itemIndexByKey[view.item[keyField]];
18949
+ } // Check if index is still in visible range
18950
+
18951
+
18952
+ if (view.nr.index == null || view.nr.index < _startIndex || view.nr.index >= _endIndex) {
18953
+ _unuseView(view);
18954
+ }
18955
+ }
18956
+ }
18957
+ }
18958
+
18959
+ const unusedIndex = continuous ? null : new Map();
18960
+ let item, type;
18961
+ let v;
18962
+
18963
+ for (let i = _startIndex; i < _endIndex; i++) {
18964
+ var _item, _sizes$i2;
18965
+
18966
+ item = items[i];
18967
+ const key = keyField ? (_item = item) === null || _item === void 0 ? void 0 : _item[keyField] : item;
18968
+
18969
+ if (key == null) {
18970
+ throw new Error(`Key is ${key} on item (keyField is '${keyField}')`);
18971
+ }
18972
+
18973
+ view = _views.get(key);
18974
+
18975
+ if (!itemSize && !((_sizes$i2 = _sizes[i]) !== null && _sizes$i2 !== void 0 && _sizes$i2.size)) {
18976
+ if (view) _unuseView(view);
18977
+ continue;
18978
+ }
18979
+
18980
+ type = item.type;
18981
+
18982
+ let unusedPool = _unusedViews.get(type);
18983
+
18984
+ let newlyUsedView = false; // No view assigned to item
18985
+
18986
+ if (!view) {
18987
+ if (continuous) {
18988
+ // Reuse existing view
18989
+ if (unusedPool && unusedPool.length) {
18990
+ view = unusedPool.pop();
18991
+ } else {
18992
+ view = _addView(_pool, i, item, key, type);
18993
+ }
18994
+ } else {
18995
+ // Use existing view
18996
+ // We don't care if they are already used
18997
+ // because we are not in continous scrolling
18998
+ v = unusedIndex.get(type) || 0;
18999
+
19000
+ if (!unusedPool || v >= unusedPool.length) {
19001
+ view = _addView(_pool, i, item, key, type);
19002
+
19003
+ _unuseView(view, true);
19004
+
19005
+ unusedPool = _unusedViews.get(type);
19006
+ }
19007
+
19008
+ view = unusedPool[v];
19009
+ unusedIndex.set(type, v + 1);
19010
+ } // Assign view to item
19011
+
19012
+
19013
+ _views.delete(view.nr.key);
19014
+
19015
+ view.nr.used = true;
19016
+ view.nr.index = i;
19017
+ view.nr.key = key;
19018
+ view.nr.type = type;
19019
+
19020
+ _views.set(key, view);
19021
+
19022
+ newlyUsedView = true;
19023
+ } else {
19024
+ // View already assigned to item
19025
+ if (!view.nr.used) {
19026
+ view.nr.used = true;
19027
+ newlyUsedView = true;
19028
+
19029
+ if (unusedPool) {
19030
+ const index = unusedPool.indexOf(view);
19031
+ if (index !== -1) unusedPool.splice(index, 1);
19032
+ }
19033
+ }
19034
+ } // Always set item in case it's a new object with the same key
19035
+
19036
+
19037
+ view.item = item;
19038
+
19039
+ if (newlyUsedView) {
19040
+ if (i === items.length - 1) emit('scroll-end');
19041
+ if (i === 0) emit('scroll-start');
19042
+ } // Update position
19043
+
19044
+
19045
+ if (itemSize === null) {
19046
+ var _sizes4;
19047
+
19048
+ view.position = (_sizes4 = _sizes[i - 1]) === null || _sizes4 === void 0 ? void 0 : _sizes4.accumulator;
19049
+ view.offset = 0;
19050
+ } else {
19051
+ view.position = Math.floor(i) * itemSize;
19052
+ view.offset = i % 1 * itemSize;
19053
+ }
19054
+ }
19055
+
19056
+ startIndex = _startIndex;
19057
+ endIndex = _endIndex; // After the user has finished scrolling
19058
+ // Sort views so text selection is correct
19059
+
19060
+ clearTimeout(sortTimer);
19061
+ sortTimer = setTimeout(_sortViews, 300);
19062
+ return {
19063
+ continuous
19064
+ };
19065
+ };
19066
+
19067
+ const _scrollToPosition = position => {
19068
+ const direction = props.direction === 'vertical' ? {
19069
+ scroll: 'scrollTop',
19070
+ start: 'top'
19071
+ } : {
19072
+ scroll: 'scrollLeft',
19073
+ start: 'left'
19074
+ };
19075
+ const viewport = scroller.value;
19076
+ const scrollDirection = direction.scroll;
19077
+ viewport[scrollDirection] = position;
19078
+ };
19079
+
19080
+ const scrollToItem = index => {
19081
+ let scroll;
19082
+
19083
+ if (props.itemSize === null) {
19084
+ var _sizes$value;
19085
+
19086
+ scroll = index > 0 ? (_sizes$value = sizes.value[index - 1]) === null || _sizes$value === void 0 ? void 0 : _sizes$value.accumulator : 0;
19087
+ } else {
19088
+ scroll = Math.floor(index) * props.itemSize;
19089
+ }
19090
+
19091
+ _scrollToPosition(scroll);
19092
+ };
19093
+
19094
+ const handleScroll = () => {
19095
+ if (!scrollDirty) {
19096
+ scrollDirty = true;
19097
+ if (updateTimeout) return;
19098
+
19099
+ const requestUpdate = () => requestAnimationFrame(() => {
19100
+ scrollDirty = false;
19101
+
19102
+ _updateVisibleItems(false, true);
19103
+ });
19104
+
19105
+ requestUpdate();
19106
+ }
19107
+ };
19108
+
19109
+ expose({
19110
+ scrollToItem
19111
+ });
19112
+ return (_ctx, _cache) => {
19113
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", {
19114
+ ref_key: "scroller",
19115
+ ref: scroller,
19116
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["vue-recycle-scroller", {
19117
+ ready: ready.value,
19118
+ [`direction-${__props.direction}`]: true
19119
+ }]),
19120
+ onScrollPassive: handleScroll
19121
+ }, [((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), {
19122
+ ref: "wrapper",
19123
+ style: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeStyle)({
19124
+ [__props.direction === 'vertical' ? 'minHeight' : 'minWidth']: `${(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)(totalSize)}px`
19125
+ }),
19126
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["vue-recycle-scroller__item-wrapper", __props.listClass])
19127
+ }, {
19128
+ 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 => {
19129
+ 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)({
19130
+ key: view.nr.id,
19131
+ style: ready.value ? {
19132
+ transform: `translate${__props.direction === 'vertical' ? 'Y' : 'X'}(${view.position}px) translate${__props.direction === 'vertical' ? 'X' : 'Y'}(${view.offset}px)`,
19133
+ width: undefined,
19134
+ height: undefined
19135
+ } : null,
19136
+ class: ["vue-recycle-scroller__item-view", [__props.itemClass, {
19137
+ hover: !__props.skipHover && hoverKey.value === view.nr.key
19138
+ }]]
19139
+ }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toHandlers)(__props.skipHover ? {} : {
19140
+ mouseenter: () => {
19141
+ hoverKey.value = view.nr.key;
19142
+ },
19143
+ mouseleave: () => {
19144
+ hoverKey.value = null;
19145
+ }
19146
+ })), {
19147
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default", {
19148
+ item: view.item,
19149
+ index: view.nr.index,
19150
+ active: view.nr.used
19151
+ })]),
19152
+ _: 2
19153
+ }, 1040, ["style", "class"]);
19154
+ }), 128))]),
19155
+ _: 3
19156
+ }, 8, ["style", "class"]))], 34);
19157
+ };
19158
+ }
19159
+
19160
+ });
19161
+ ;// CONCATENATED MODULE: ./components/scroller/modules/core-scroller.vue?vue&type=script&setup=true&lang=js
19162
+
19163
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.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
19164
+ // extracted by mini-css-extract-plugin
19165
+
19166
+ ;// CONCATENATED MODULE: ./components/scroller/modules/core-scroller.vue?vue&type=style&index=0&id=d2aff5e0&lang=css
19167
+
19168
+ ;// CONCATENATED MODULE: ./components/scroller/modules/core-scroller.vue
19169
+
19170
+
19171
+
19172
+ ;
19173
+
19174
+ const core_scroller_exports_ = core_scrollervue_type_script_setup_true_lang_js;
19175
+
19176
+ /* harmony default export */ const core_scroller = (core_scroller_exports_);
19177
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
19178
+
19179
+ function dynamic_scrollervue_type_template_id_419ca1d0_render(_ctx, _cache, $props, $setup, $data, $options) {
19180
+ const _component_dt_scroller_item = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-scroller-item");
19181
+
19182
+ const _component_core_scroller = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("core-scroller");
19183
+
19184
+ 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)({
19185
+ ref: "scroller",
19186
+ items: $options.itemsWithSize,
19187
+ "min-item-size": $props.minItemSize,
19188
+ direction: $props.direction,
19189
+ "key-field": "id",
19190
+ "list-tag": $props.listTag,
19191
+ "item-tag": $props.itemTag
19192
+ }, _ctx.$attrs), {
19193
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref => {
19194
+ let {
19195
+ item: itemWithSize,
19196
+ index,
19197
+ active
19198
+ } = _ref;
19199
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_scroller_item, {
19200
+ item: itemWithSize,
19201
+ active: active,
19202
+ "size-dependencies": [itemWithSize.message],
19203
+ "data-index": index
19204
+ }, {
19205
+ 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)({
19206
+ item: itemWithSize.item,
19207
+ index,
19208
+ active,
19209
+ itemWithSize
19210
+ })))]),
19211
+ _: 2
19212
+ }, 1032, ["item", "active", "size-dependencies", "data-index"])];
19213
+ }),
19214
+ _: 3
19215
+ }, 16, ["items", "min-item-size", "direction", "list-tag", "item-tag"]);
19216
+ }
19217
+ ;// CONCATENATED MODULE: ./components/scroller/modules/dynamic-scroller.vue?vue&type=template&id=419ca1d0
19218
+
19219
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/modules/scroller-item.vue?vue&type=script&lang=js
19220
+
19221
+ /* harmony default export */ const scroller_itemvue_type_script_lang_js = ({
19222
+ name: 'DtScrollerItem',
19223
+ inject: ['vscrollData', 'vscrollParent', 'vscrollResizeObserver'],
19224
+ props: {
19225
+ // eslint-disable-next-line vue/require-prop-types
19226
+ item: {
19227
+ required: true
19228
+ },
19229
+ watchData: {
19230
+ type: Boolean,
19231
+ default: false
19232
+ },
19233
+
19234
+ /**
19235
+ * Indicates if the view is actively used to display an item.
19236
+ */
19237
+ active: {
19238
+ type: Boolean,
19239
+ required: true
19240
+ },
19241
+ index: {
19242
+ type: Number,
19243
+ default: undefined
19244
+ },
19245
+ sizeDependencies: {
19246
+ type: [Array, Object],
19247
+ default: null
19248
+ },
19249
+ tag: {
19250
+ type: String,
19251
+ default: 'div'
19252
+ }
19253
+ },
19254
+ computed: {
19255
+ id() {
19256
+ if (this.vscrollData.simpleArray) return this.index; // eslint-disable-next-line no-prototype-builtins
19257
+
19258
+ if (this.vscrollData.keyField in this.item) return this.item[this.vscrollData.keyField];
19259
+ throw new Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`);
19260
+ },
19261
+
19262
+ size() {
19263
+ return this.vscrollData.sizes[this.id] || 0;
19264
+ },
19265
+
19266
+ finalActive() {
19267
+ return this.active && this.vscrollData.active;
19268
+ }
19269
+
19270
+ },
19271
+ watch: {
19272
+ watchData: 'updateWatchData',
19273
+
19274
+ id(value, oldValue) {
19275
+ this.$el.$_vs_id = this.id;
19276
+
19277
+ if (!this.size) {
19278
+ this.onDataUpdate();
19279
+ }
19280
+
19281
+ if (this.$_sizeObserved) {
19282
+ // In case the old item had the same size, it won't trigger the ResizeObserver
19283
+ // since we are reusing the same DOM node
19284
+ const oldSize = this.vscrollData.sizes[oldValue];
19285
+ const size = this.vscrollData.sizes[value];
19286
+
19287
+ if (oldSize != null && oldSize !== size) {
19288
+ this.applySize(oldSize);
19289
+ }
19290
+ }
19291
+ },
19292
+
19293
+ finalActive(value) {
19294
+ if (!this.size) {
19295
+ if (value) {
19296
+ if (!this.vscrollParent.$_undefinedMap[this.id]) {
19297
+ this.vscrollParent.$_undefinedSizes++;
19298
+ this.vscrollParent.$_undefinedMap[this.id] = true;
19299
+ }
19300
+ } else {
19301
+ if (this.vscrollParent.$_undefinedMap[this.id]) {
19302
+ this.vscrollParent.$_undefinedSizes--;
19303
+ this.vscrollParent.$_undefinedMap[this.id] = false;
19304
+ }
19305
+ }
19306
+ }
19307
+
19308
+ if (this.vscrollResizeObserver) {
19309
+ if (value) {
19310
+ this.observeSize();
19311
+ } else {
19312
+ this.unobserveSize();
19313
+ }
19314
+ } else if (value && this.$_pendingVScrollUpdate === this.id) {
19315
+ this.updateSize();
19316
+ }
19317
+ }
19318
+
19319
+ },
19320
+
19321
+ created() {
19322
+ if (this.$isServer) return;
19323
+ this.$_forceNextVScrollUpdate = null;
19324
+ this.updateWatchData();
19325
+
19326
+ if (!this.vscrollResizeObserver) {
19327
+ for (const k in this.sizeDependencies) {
19328
+ this.$watch(() => this.sizeDependencies[k], this.onDataUpdate);
19329
+ }
19330
+ }
19331
+ },
19332
+
19333
+ mounted() {
19334
+ if (this.finalActive) {
19335
+ this.updateSize();
19336
+ this.observeSize();
19337
+ }
19338
+ },
19339
+
19340
+ beforeUnmount() {
19341
+ this.unobserveSize();
19342
+ },
19343
+
19344
+ methods: {
19345
+ updateSize() {
19346
+ if (this.finalActive) {
19347
+ if (this.$_pendingSizeUpdate !== this.id) {
19348
+ this.$_pendingSizeUpdate = this.id;
19349
+ this.$_forceNextVScrollUpdate = null;
19350
+ this.$_pendingVScrollUpdate = null;
19351
+ this.computeSize(this.id);
19352
+ }
19353
+ } else {
19354
+ this.$_forceNextVScrollUpdate = this.id;
19355
+ }
19356
+ },
19357
+
19358
+ updateWatchData() {
19359
+ if (this.watchData && !this.vscrollResizeObserver) {
19360
+ this.$_watchData = this.$watch('item', () => {
19361
+ this.onDataUpdate();
19362
+ }, {
19363
+ deep: true
19364
+ });
19365
+ } else if (this.$_watchData) {
19366
+ this.$_watchData();
19367
+ this.$_watchData = null;
19368
+ }
19369
+ },
19370
+
19371
+ onVscrollUpdate(_ref) {
19372
+ let {
19373
+ force
19374
+ } = _ref;
19375
+
19376
+ // If not active, sechedule a size update when it becomes active
19377
+ if (!this.finalActive && force) {
19378
+ this.$_pendingVScrollUpdate = this.id;
19379
+ }
19380
+
19381
+ if (this.$_forceNextVScrollUpdate === this.id || force || !this.size) {
19382
+ this.updateSize();
19383
+ }
19384
+ },
19385
+
19386
+ onDataUpdate() {
19387
+ this.updateSize();
19388
+ },
19389
+
19390
+ computeSize(id) {
19391
+ this.$nextTick(() => {
19392
+ if (this.id === id) {
19393
+ const width = this.$el.offsetWidth;
19394
+ const height = this.$el.offsetHeight;
19395
+ this.applyWidthHeight(width, height);
19396
+ }
19397
+
19398
+ this.$_pendingSizeUpdate = null;
19399
+ });
19400
+ },
19401
+
19402
+ applyWidthHeight(width, height) {
19403
+ const size = ~~(this.vscrollParent.direction === 'vertical' ? height : width);
19404
+
19405
+ if (size && this.size !== size) {
19406
+ this.applySize(size);
19407
+ }
19408
+ },
19409
+
19410
+ applySize(size) {
19411
+ if (this.vscrollParent.$_undefinedMap[this.id]) {
19412
+ this.vscrollParent.$_undefinedSizes--;
19413
+ this.vscrollParent.$_undefinedMap[this.id] = undefined;
19414
+ }
19415
+
19416
+ this.vscrollData.sizes[this.id] = size;
19417
+ },
19418
+
19419
+ observeSize() {
19420
+ if (!this.vscrollResizeObserver) return;
19421
+ if (this.$_sizeObserved) return;
19422
+ this.vscrollResizeObserver.observe(this.$el);
19423
+ this.$el.$_vs_id = this.id;
19424
+ this.$el.$_vs_onResize = this.onResize;
19425
+ this.$_sizeObserved = true;
19426
+ },
19427
+
19428
+ unobserveSize() {
19429
+ if (!this.vscrollResizeObserver) return;
19430
+ if (!this.$_sizeObserved) return;
19431
+ this.vscrollResizeObserver.unobserve(this.$el);
19432
+ this.$el.$_vs_onResize = undefined;
19433
+ this.$_sizeObserved = false;
19434
+ },
19435
+
19436
+ onResize(id, width, height) {
19437
+ if (this.id === id) {
19438
+ this.applyWidthHeight(width, height);
19439
+ }
19440
+ }
19441
+
19442
+ },
19443
+
19444
+ render() {
19445
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.h)(this.tag, this.$slots.default());
19446
+ }
19447
+
19448
+ });
19449
+ ;// CONCATENATED MODULE: ./components/scroller/modules/scroller-item.vue?vue&type=script&lang=js
19450
+
19451
+ ;// CONCATENATED MODULE: ./components/scroller/modules/scroller-item.vue
19452
+
19453
+
19454
+
19455
+ const scroller_item_exports_ = scroller_itemvue_type_script_lang_js;
19456
+
19457
+ /* harmony default export */ const scroller_item = (scroller_item_exports_);
19458
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/modules/dynamic-scroller.vue?vue&type=script&lang=js
19459
+
19460
+
19461
+ /* harmony default export */ const dynamic_scrollervue_type_script_lang_js = ({
19462
+ name: 'DynamicScroller',
19463
+ components: {
19464
+ CoreScroller: core_scroller,
19465
+ DtScrollerItem: scroller_item
19466
+ },
19467
+
19468
+ provide() {
19469
+ if (typeof ResizeObserver !== 'undefined') {
19470
+ this.$_resizeObserver = new ResizeObserver(entries => {
19471
+ requestAnimationFrame(() => {
19472
+ if (!Array.isArray(entries)) {
19473
+ return;
19474
+ }
19475
+
19476
+ for (const entry of entries) {
19477
+ if (entry.target && entry.target.$_vs_onResize) {
19478
+ let width, height;
19479
+
19480
+ if (entry.borderBoxSize) {
19481
+ const resizeObserverSize = entry.borderBoxSize[0];
19482
+ width = resizeObserverSize.inlineSize;
19483
+ height = resizeObserverSize.blockSize;
19484
+ } else {
19485
+ // @TODO remove when contentRect is deprecated
19486
+ width = entry.contentRect.width;
19487
+ height = entry.contentRect.height;
19488
+ }
19489
+
19490
+ entry.target.$_vs_onResize(entry.target.$_vs_id, width, height);
19491
+ }
19492
+ }
19493
+ });
19494
+ });
19495
+ }
19496
+
19497
+ return {
19498
+ vscrollData: this.vscrollData,
19499
+ vscrollParent: this,
19500
+ vscrollResizeObserver: this.$_resizeObserver
19501
+ };
19502
+ },
19503
+
19504
+ inheritAttrs: false,
19505
+ props: {
19506
+ /*
19507
+ * The items to render.
19508
+ * If the items are simple arrays, the index will be used as the key.
19509
+ * If the items are objects, the keyField will be used as the key.
19510
+ */
19511
+ items: {
19512
+ type: Array,
19513
+ required: true
19514
+ },
19515
+
19516
+ /*
19517
+ * Indicates if the items are dynamic.
19518
+ * If true, the items will be wrapped in a DtScrollerItem component.
19519
+ * This is required for dynamic items to be able to react to changes in their size.
19520
+ */
19521
+ dynamic: {
19522
+ type: Boolean,
19523
+ default: false
19524
+ },
19525
+
19526
+ /*
19527
+ * The key field to use for the items.
19528
+ * Only used if the items are objects.
19529
+ */
19530
+ keyField: {
19531
+ type: String,
19532
+ default: 'id'
19533
+ },
19534
+
19535
+ /*
19536
+ * The direction of the scroller.
19537
+ * Can be either 'vertical' or 'horizontal'.
19538
+ */
19539
+ direction: {
19540
+ type: String,
19541
+ default: 'vertical',
19542
+ validator: value => ['vertical', 'horizontal'].includes(value)
19543
+ },
19544
+
19545
+ /*
19546
+ * The tag to use for the list.
19547
+ */
19548
+ listTag: {
19549
+ type: String,
19550
+ default: 'div'
19551
+ },
19552
+
19553
+ /*
19554
+ * The tag to use for the items.
19555
+ */
19556
+ itemTag: {
19557
+ type: String,
19558
+ default: 'div'
19559
+ },
19560
+
19561
+ /*
19562
+ * Display height (or width in horizontal mode) of the items in pixels
19563
+ * used to calculate the scroll size and position.
19564
+ * Is required for the initial render of items in DYNAMIC size mode.
19565
+ */
19566
+ minItemSize: {
19567
+ type: [Number, String]
19568
+ }
19569
+ },
19570
+
19571
+ data() {
19572
+ return {
19573
+ vscrollData: {
19574
+ active: true,
19575
+ sizes: {},
19576
+ keyField: this.keyField,
19577
+ simpleArray: false
19578
+ }
19579
+ };
19580
+ },
19581
+
19582
+ computed: {
19583
+ simpleArray() {
19584
+ return this.items.length && typeof this.items[0] !== 'object';
19585
+ },
19586
+
19587
+ itemsWithSize() {
19588
+ const result = [];
19589
+ const {
19590
+ items,
19591
+ keyField,
19592
+ simpleArray
19593
+ } = this;
19594
+ const sizes = this.vscrollData.sizes;
19595
+ const l = items.length;
19596
+
19597
+ for (let i = 0; i < l; i++) {
19598
+ const item = items[i];
19599
+ const id = simpleArray ? i : item[keyField];
19600
+ let size = sizes[id];
19601
+
19602
+ if (typeof size === 'undefined' && !this.$_undefinedMap[id]) {
19603
+ size = 0;
19604
+ }
19605
+
19606
+ result.push({
19607
+ item,
19608
+ id,
19609
+ size
19610
+ });
19611
+ }
19612
+
19613
+ return result;
19614
+ }
19615
+
19616
+ },
19617
+ watch: {
19618
+ simpleArray: {
19619
+ handler(value) {
19620
+ this.vscrollData.simpleArray = value;
19621
+ },
19622
+
19623
+ immediate: true
19624
+ },
19625
+
19626
+ itemsWithSize(next, prev) {
19627
+ const scrollTop = this.$el.scrollTop; // Calculate total diff between prev and next sizes
19628
+ // over current scroll top. Then add it to scrollTop to
19629
+ // avoid jumping the contents that the user is seeing.
19630
+
19631
+ let prevActiveTop = 0;
19632
+ let activeTop = 0;
19633
+ const length = Math.min(next.length, prev.length);
19634
+
19635
+ for (let i = 0; i < length; i++) {
19636
+ if (prevActiveTop >= scrollTop) {
19637
+ break;
19638
+ }
19639
+
19640
+ prevActiveTop += prev[i].size || this.minItemSize;
19641
+ activeTop += next[i].size || this.minItemSize;
19642
+ }
19643
+
19644
+ const offset = activeTop - prevActiveTop;
19645
+
19646
+ if (offset === 0) {
19647
+ return;
19648
+ }
19649
+
19650
+ this.$el.scrollTop += offset;
19651
+ }
19652
+
19653
+ },
19654
+
19655
+ beforeCreate() {
19656
+ this.$_updates = [];
19657
+ this.$_undefinedSizes = 0;
19658
+ this.$_undefinedMap = {};
19659
+ },
19660
+
19661
+ activated() {
19662
+ this.vscrollData.active = true;
19663
+ },
19664
+
19665
+ deactivated() {
19666
+ this.vscrollData.active = false;
19667
+ },
19668
+
19669
+ methods: {
19670
+ scrollToItem(index) {
19671
+ const scroller = this.$refs.scroller;
19672
+ if (scroller) scroller.scrollToItem(index);
19673
+ }
19674
+
19675
+ }
19676
+ });
19677
+ ;// CONCATENATED MODULE: ./components/scroller/modules/dynamic-scroller.vue?vue&type=script&lang=js
19678
+
19679
+ ;// CONCATENATED MODULE: ./components/scroller/modules/dynamic-scroller.vue
19680
+
19681
+
19682
+
19683
+
19684
+ ;
19685
+ const dynamic_scroller_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(dynamic_scrollervue_type_script_lang_js, [['render',dynamic_scrollervue_type_template_id_419ca1d0_render]])
19686
+
19687
+ /* harmony default export */ const dynamic_scroller = (dynamic_scroller_exports_);
19688
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./components/scroller/DtScroller.vue?vue&type=script&setup=true&lang=js
19689
+
19690
+
19691
+
19692
+
19693
+ /* harmony default export */ const DtScrollervue_type_script_setup_true_lang_js = ({
19694
+ __name: 'DtScroller',
19695
+ props: {
19696
+ /**
19697
+ * The direction of the scroller.
19698
+ * @values vertical, horizontal
19699
+ */
19700
+ direction: {
19701
+ type: String,
19702
+ default: 'vertical',
19703
+ validator: value => ['vertical', 'horizontal'].includes(value)
19704
+ },
19705
+
19706
+ /**
19707
+ * Indicates if the items need to react to changes in their size.
19708
+ * If disabled the itemSize prop is required and you will get improved performance.
19709
+ * If enabled the minItemSize prop is required and you
19710
+ * will have reduced performance but the ability to reactively size list items
19711
+ * @values true, false
19712
+ */
19713
+ dynamic: {
19714
+ type: Boolean,
19715
+ default: false
19716
+ },
19717
+
19718
+ /**
19719
+ * Display height (or width in horizontal mode) of the items in pixels
19720
+ * used to calculate the scroll size and position.
19721
+ * Required if DYNAMIC is false
19722
+ */
19723
+ itemSize: {
19724
+ type: Number,
19725
+ default: null
19726
+ },
19727
+
19728
+ /**
19729
+ * The tag to use for the items.
19730
+ */
19731
+ itemTag: {
19732
+ type: String,
19733
+ default: 'div'
19734
+ },
19735
+
19736
+ /**
19737
+ * The items to render.
19738
+ * If the items are simple arrays, the index will be used as the key.
19739
+ * If the items are objects, the keyField will be used as the key.
19740
+ * @example items: [ 'item1', 'item2', 'item3' ]
19741
+ * @example items: [ { id: 1, name: 'item1' }, { id: 2, name: 'item2' }, { id: 3, name: 'item3' } ]
19742
+ */
19743
+ items: {
19744
+ type: Array,
19745
+ required: true
19746
+ },
19747
+
19748
+ /**
19749
+ * The key field to use for the items.
19750
+ * If the items are objects, the scroller needs to be able to identify them.
19751
+ * By default it will look for an id field on the items.
19752
+ * This can be configured with this prop if you are using another field name.
19753
+ */
19754
+ keyField: {
19755
+ type: String,
19756
+ default: 'id'
19757
+ },
19758
+
19759
+ /**
19760
+ * The tag to use for the list.
19761
+ */
19762
+ listTag: {
19763
+ type: String,
19764
+ default: 'div'
19765
+ },
19766
+
19767
+ /**
19768
+ * Minimum size used if the height (or width in horizontal mode) of a item is unknown.
19769
+ * Is required for the initial render of items in DYNAMIC size mode.
19770
+ */
19771
+ minItemSize: {
19772
+ type: [Number, String],
19773
+ default: null
19774
+ },
19775
+
19776
+ /**
19777
+ * The height of the scroller.
19778
+ * Can be a number (in pixels) or a string (in CSS units).
19779
+ */
19780
+ scrollerHeight: {
19781
+ type: [String, Number],
19782
+ default: '100%'
19783
+ },
19784
+
19785
+ /**
19786
+ * The width of the scroller.
19787
+ * Can be a number (in pixels) or a string (in CSS units).
19788
+ */
19789
+ scrollerWidth: {
19790
+ type: [String, Number],
19791
+ default: '100%'
19792
+ }
19793
+ },
19794
+ emits: ['scroll-start', 'scroll-end'],
19795
+
19796
+ setup(__props, _ref) {
19797
+ let {
19798
+ expose,
19799
+ emit: emits
19800
+ } = _ref;
19801
+ const props = __props;
19802
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.provide)('emit', emits);
19803
+ const scroller = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(null);
19804
+ const computedStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
19805
+ return {
19806
+ width: typeof props.scrollerWidth === 'number' ? `${props.scrollerWidth}px` : props.scrollerWidth,
19807
+ height: typeof props.scrollerHeight === 'number' ? `${props.scrollerHeight}px` : props.scrollerHeight
19808
+ };
19809
+ });
19810
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(props, () => {
19811
+ validateProps();
19812
+ }, {
19813
+ deep: true,
19814
+ immediate: true
19815
+ });
19816
+
19817
+ function scrollToItem(index) {
19818
+ if (scroller.value) scroller.value.scrollToItem(index);
19819
+ }
19820
+
19821
+ function validateProps() {
19822
+ if (props.dynamic && !props.minItemSize) {
19823
+ console.error('DtScroller error: \'minItemSize\' is required on \'dynamic\' mode.');
19824
+ }
19825
+
19826
+ if (!props.dynamic && !props.itemSize) {
19827
+ console.error('DtScroller error: \'itemSize\' is required.');
19828
+ }
19829
+ }
19830
+
19831
+ expose({
19832
+ scrollToItem
19833
+ });
19834
+ return (_ctx, _cache) => {
19835
+ 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), {
19836
+ ref_key: "scroller",
19837
+ ref: scroller,
19838
+ "data-qa": "dt-scroller",
19839
+ items: __props.items,
19840
+ "item-size": __props.itemSize,
19841
+ "min-item-size": __props.minItemSize,
19842
+ direction: __props.direction,
19843
+ "key-field": "id",
19844
+ "list-tag": __props.listTag,
19845
+ "item-tag": __props.itemTag,
19846
+ style: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeStyle)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)(computedStyle)),
19847
+ tabindex: "0",
19848
+ onScrollStart: _cache[0] || (_cache[0] = $event => _ctx.$emit('scroll-start')),
19849
+ onScrollEnd: _cache[1] || (_cache[1] = $event => _ctx.$emit('scroll-end'))
19850
+ }, {
19851
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref2 => {
19852
+ let {
19853
+ item,
19854
+ index,
19855
+ active
19856
+ } = _ref2;
19857
+ 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)({
19858
+ item: item,
19859
+ index,
19860
+ active
19861
+ })))];
19862
+ }),
19863
+ _: 3
19864
+ }, 40, ["items", "item-size", "min-item-size", "direction", "list-tag", "item-tag", "style"]);
19865
+ };
19866
+ }
19867
+
19868
+ });
19869
+ ;// CONCATENATED MODULE: ./components/scroller/DtScroller.vue?vue&type=script&setup=true&lang=js
19870
+
19871
+ ;// CONCATENATED MODULE: ./components/scroller/DtScroller.vue
19872
+
19873
+
19874
+
19875
+ const DtScroller_exports_ = DtScrollervue_type_script_setup_true_lang_js;
19876
+
19877
+ /* harmony default export */ const DtScroller = (DtScroller_exports_);
19878
+ ;// CONCATENATED MODULE: ./components/scroller/index.js
19879
+
19880
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
19881
+
19882
+ const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_1 = ["id"];
19883
+ const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_2 = {
19884
+ ref: "header"
19885
+ };
19886
+ const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_3 = ["onMouseleave", "onFocusout"];
19887
+ const combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_4 = {
19888
+ ref: "footer"
19889
+ };
19890
+ function combobox_with_popovervue_type_template_id_bdafd0f4_render(_ctx, _cache, $props, $setup, $data, $options) {
19891
+ const _component_combobox_loading_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-loading-list");
19892
+
19893
+ const _component_combobox_empty_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-empty-list");
19894
+
19895
+ const _component_dt_popover = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-popover");
19896
+
19897
+ const _component_dt_combobox = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-combobox");
19898
+
19899
+ 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)({
19900
+ ref: "combobox",
19901
+ loading: $props.loading,
19902
+ label: $props.label,
19903
+ "label-visible": $props.labelVisible,
19904
+ size: $props.size,
19905
+ description: $props.description,
19906
+ "empty-list": $props.emptyList,
19907
+ "empty-state-message": $props.emptyStateMessage,
19908
+ "show-list": $data.isListShown,
19909
+ "on-beginning-of-list": $props.onBeginningOfList,
19910
+ "on-end-of-list": $props.onEndOfList,
19911
+ "list-rendered-outside": true,
19912
+ "list-id": $props.listId,
19913
+ "data-qa": "dt-combobox"
19914
+ }, $options.comboboxListeners), {
19915
+ input: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref => {
19916
+ let {
19917
+ inputProps
19918
+ } = _ref;
19919
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
19920
+ id: $data.externalAnchor,
19921
+ ref: "input",
19922
+ onFocusin: _cache[0] || (_cache[0] = function () {
19923
+ return $options.onFocusIn && $options.onFocusIn(...arguments);
19924
+ }),
19925
+ 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"]))]
19926
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "input", {
19927
+ inputProps: inputProps,
19928
+ onInput: $options.handleDisplayList
19929
+ })], 40, combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_1)];
19930
+ }),
19931
+ list: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref2 => {
19932
+ let {
19933
+ opened,
19934
+ listProps,
19935
+ clearHighlightIndex
19936
+ } = _ref2;
19937
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_popover, {
19938
+ ref: "popover",
19939
+ open: $data.isListShown,
19940
+ "onUpdate:open": _cache[3] || (_cache[3] = $event => $data.isListShown = $event),
19941
+ "hide-on-click": false,
19942
+ "max-height": $props.maxHeight,
19943
+ "max-width": $props.maxWidth,
19944
+ offset: $props.popoverOffset,
19945
+ sticky: $props.popoverSticky,
19946
+ placement: "bottom-start",
19947
+ "initial-focus-element": "none",
19948
+ padding: "none",
19949
+ role: "listbox",
19950
+ "external-anchor": $data.externalAnchor,
19951
+ "content-width": $props.contentWidth,
19952
+ "content-appear": true,
19953
+ "content-tabindex": null,
19954
+ modal: false,
19955
+ "auto-focus": false,
19956
+ "append-to": $props.appendTo,
19957
+ "visually-hidden-close-label": _ctx.visuallyHiddenCloseLabel,
19958
+ "visually-hidden-close": _ctx.visuallyHiddenClose,
19959
+ onOpened: opened
19960
+ }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createSlots)({
19961
+ content: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
19962
+ ref: "listWrapper",
19963
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)([$data.DROPDOWN_PADDING_CLASSES[$props.padding], $props.listClass]),
19964
+ onMouseleave: clearHighlightIndex,
19965
+ onFocusout: clearHighlightIndex
19966
+ }, [$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)({
19967
+ key: 0
19968
+ }, 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)({
19969
+ key: 1
19970
+ }, listProps, {
19971
+ message: $props.emptyStateMessage
19972
+ }), null, 16, ["message"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "list", {
19973
+ key: 2,
19974
+ listProps: listProps
19975
+ })], 42, combobox_with_popovervue_type_template_id_bdafd0f4_hoisted_3)]),
19976
+ _: 2
19977
+ }, [$data.hasSlotContent(_ctx.$slots.header) ? {
19978
+ name: "headerContent",
19979
+ 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)]),
19980
+ key: "0"
19981
+ } : undefined, $data.hasSlotContent(_ctx.$slots.footer) ? {
19982
+ name: "footerContent",
19983
+ 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)]),
19984
+ key: "1"
19985
+ } : undefined]), 1032, ["open", "max-height", "max-width", "offset", "sticky", "external-anchor", "content-width", "append-to", "visually-hidden-close-label", "visually-hidden-close", "onOpened"])];
19986
+ }),
19987
+ _: 3
19988
+ }, 16, ["loading", "label", "label-visible", "size", "description", "empty-list", "empty-state-message", "show-list", "on-beginning-of-list", "on-end-of-list", "list-id"]);
19989
+ }
19990
+ ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=bdafd0f4
19991
+
19992
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
19993
+ /* eslint-disable vuejs-accessibility/no-static-element-interactions */
19994
+
19995
+
19996
+
19997
+
19998
+
19999
+
20000
+
20001
+
20002
+
20003
+ /* harmony default export */ const combobox_with_popovervue_type_script_lang_js = ({
20004
+ name: 'DtRecipeComboboxWithPopover',
20005
+ components: {
20006
+ DtCombobox: combobox,
20007
+ DtPopover: popover,
20008
+ ComboboxLoadingList: combobox_loading_list,
20009
+ ComboboxEmptyList: combobox_empty_list
20010
+ },
20011
+ mixins: [sr_only_close_button],
20012
+ props: {
20013
+ /**
20014
+ * String to use for the input label.
20015
+ */
20016
+ label: {
20017
+ type: String,
20018
+ required: true
20019
+ },
20020
+
20021
+ /**
20022
+ * Determines visibility of input label.
20023
+ * @values true, false
20024
+ */
20025
+ labelVisible: {
20026
+ type: Boolean,
20027
+ default: true
20028
+ },
20029
+
20030
+ /**
20031
+ * Size of the input, one of `xs`, `sm`, `md`, `lg`, `xl`
20032
+ * @values null, xs, sm, md, lg, xl
20033
+ */
20034
+ size: {
20035
+ type: String,
20036
+ default: null,
20037
+ validator: t => Object.values(LABEL_SIZES).includes(t)
20038
+ },
20039
+
20040
+ /**
20041
+ * Description for the input
20042
+ */
20043
+ description: {
20044
+ type: String,
20045
+ default: ''
20046
+ },
20047
+
20048
+ /**
20049
+ * Determines when to show the list element and also controls the aria-expanded attribute.
20050
+ * Leaving this null will have the combobox trigger on input focus by default.
20051
+ * If you set this value, the default trigger behavior will be disabled and you can
20052
+ * control it as you need.
20053
+ */
20054
+ showList: {
20055
+ type: Boolean,
20056
+ default: null
20057
+ },
20058
+
20059
+ /**
20060
+ * Sets an ID on the list element of the component. Used by several aria attributes
20061
+ * as well as when deriving the IDs for each item.
20062
+ */
20063
+ listId: {
20064
+ type: String,
20065
+
20066
+ default() {
20067
+ return getUniqueString();
20068
+ }
20069
+
20070
+ },
20071
+
20072
+ /**
20073
+ * Additional class for the wrapper list element.
20074
+ */
20075
+ listClass: {
20076
+ type: [String, Array, Object],
20077
+ default: ''
20078
+ },
20079
+
20080
+ /**
20081
+ * A method that will be called when the selection goes past the beginning of the list.
20082
+ */
20083
+ onBeginningOfList: {
20084
+ type: Function,
20085
+ default: null
20086
+ },
20087
+
20088
+ /**
20089
+ * A method that will be called when the selection goes past the end of the list.
20090
+ */
20091
+ onEndOfList: {
20092
+ type: Function,
20093
+ default: null
20094
+ },
20095
+
20096
+ /**
20097
+ * Determines maximum height for the popover before overflow.
20098
+ * Possible units rem|px|em
20099
+ */
20100
+ maxHeight: {
20101
+ type: String,
20102
+ default: ''
20103
+ },
20104
+
20105
+ /**
20106
+ * Determines maximum width for the popover before overflow.
20107
+ * Possible units rem|px|%|em
20108
+ */
20109
+ maxWidth: {
20110
+ type: String,
20111
+ default: ''
20112
+ },
20113
+
20114
+ /**
20115
+ * Vertical padding size around the list element.
20116
+ */
20117
+ padding: {
20118
+ type: String,
20119
+ default: 'small',
20120
+ validator: padding => {
20121
+ return Object.keys(DROPDOWN_PADDING_CLASSES).some(item => item === padding);
20122
+ }
18764
20123
  },
18765
20124
 
18766
20125
  /**
@@ -20799,35 +22158,49 @@ const grouped_chip_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(group
20799
22158
  /* harmony default export */ const grouped_chip = (grouped_chip_exports_);
20800
22159
  ;// CONCATENATED MODULE: ./recipes/chips/grouped_chip/index.js
20801
22160
 
20802
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
22161
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
20803
22162
 
20804
- const general_rowvue_type_template_id_06ebf262_hoisted_1 = {
22163
+ const general_rowvue_type_template_id_46f0cd86_hoisted_1 = ["aria-label", "title"];
22164
+ const general_rowvue_type_template_id_46f0cd86_hoisted_2 = {
20805
22165
  class: "dt-leftbar-row__alpha"
20806
22166
  };
20807
- const general_rowvue_type_template_id_06ebf262_hoisted_2 = {
22167
+ const general_rowvue_type_template_id_46f0cd86_hoisted_3 = {
22168
+ key: 0,
22169
+ class: "dt-leftbar-row__is-typing"
22170
+ };
22171
+
22172
+ const general_rowvue_type_template_id_46f0cd86_hoisted_4 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", null, null, -1);
22173
+
22174
+ const general_rowvue_type_template_id_46f0cd86_hoisted_5 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", null, null, -1);
22175
+
22176
+ const general_rowvue_type_template_id_46f0cd86_hoisted_6 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", null, null, -1);
22177
+
22178
+ 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];
22179
+ const general_rowvue_type_template_id_46f0cd86_hoisted_8 = {
20808
22180
  class: "dt-leftbar-row__label"
20809
22181
  };
20810
- const general_rowvue_type_template_id_06ebf262_hoisted_3 = {
22182
+ const _hoisted_9 = {
20811
22183
  class: "dt-leftbar-row__omega"
20812
22184
  };
20813
- const general_rowvue_type_template_id_06ebf262_hoisted_4 = {
20814
- key: 0,
22185
+ const _hoisted_10 = {
20815
22186
  class: "dt-leftbar-row__dnd"
20816
22187
  };
20817
- const general_rowvue_type_template_id_06ebf262_hoisted_5 = {
22188
+ const _hoisted_11 = {
20818
22189
  key: 1,
20819
22190
  class: "dt-leftbar-row__active-voice"
20820
22191
  };
20821
- const general_rowvue_type_template_id_06ebf262_hoisted_6 = {
22192
+ const _hoisted_12 = {
20822
22193
  key: 0,
20823
22194
  class: "dt-leftbar-row__action",
20824
22195
  "data-qa": "dt-leftbar-row-action"
20825
22196
  };
20826
- function general_rowvue_type_template_id_06ebf262_render(_ctx, _cache, $props, $setup, $data, $options) {
22197
+ function general_rowvue_type_template_id_46f0cd86_render(_ctx, _cache, $props, $setup, $data, $options) {
20827
22198
  const _component_dt_recipe_leftbar_general_row_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-recipe-leftbar-general-row-icon");
20828
22199
 
20829
22200
  const _component_dt_emoji_text_wrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-emoji-text-wrapper");
20830
22201
 
22202
+ const _component_dt_tooltip = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-tooltip");
22203
+
20831
22204
  const _component_dt_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-icon");
20832
22205
 
20833
22206
  const _component_dt_badge = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-badge");
@@ -20839,47 +22212,74 @@ function general_rowvue_type_template_id_06ebf262_render(_ctx, _cache, $props, $
20839
22212
  "data-qa": "dt-leftbar-row"
20840
22213
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("button", (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
20841
22214
  class: "dt-leftbar-row__primary",
20842
- "data-qa": "dt-leftbar-row-link"
20843
- }, _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, {
22215
+ "data-qa": "dt-leftbar-row-link",
22216
+ "aria-label": $options.getAriaLabel,
22217
+ title: $props.description
22218
+ }, _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", {
22219
+ key: 1
22220
+ }, () => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_recipe_leftbar_general_row_icon, {
22221
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)({
22222
+ 'd-o50': $props.isTyping
22223
+ }),
20844
22224
  type: $options.getIcon,
20845
22225
  color: $props.color,
20846
22226
  "data-qa": "dt-leftbar-row-icon"
20847
- }, 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, {
22227
+ }, 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, {
20848
22228
  class: "dt-leftbar-row__description",
20849
22229
  "data-qa": "dt-leftbar-row-description"
20850
22230
  }, {
20851
22231
  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)]),
20852
22232
  _: 1
20853
- })])]), (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, {
22233
+ })])]), (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, {
22234
+ key: 0,
22235
+ placement: "top",
22236
+ message: $props.dndTextTooltip
22237
+ }, {
22238
+ 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)]),
22239
+ _: 1
22240
+ }, 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, {
20854
22241
  size: "300",
20855
22242
  name: "activity"
20856
- })])) : !!$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, {
22243
+ })])) : !!$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, {
20857
22244
  key: 2,
20858
- kind: "count",
20859
- type: "bulletin",
20860
- "data-qa": "dt-leftbar-row-unread-badge"
22245
+ message: $props.unreadCountTooltip,
22246
+ placement: "top"
20861
22247
  }, {
20862
- 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)]),
22248
+ anchor: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_badge, {
22249
+ kind: "count",
22250
+ type: "bulletin",
22251
+ "data-qa": "dt-leftbar-row-unread-badge"
22252
+ }, {
22253
+ 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)]),
22254
+ _: 1
22255
+ })]),
20863
22256
  _: 1
20864
- })) : (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, {
20865
- class: "dt-leftbar-row__action-button",
20866
- "data-qa": "dt-leftbar-row-action-call-button",
20867
- circle: "",
20868
- size: "xs",
20869
- kind: "inverted",
20870
- onFocus: _cache[0] || (_cache[0] = $event => $data.actionFocused = true),
20871
- onBlur: _cache[1] || (_cache[1] = $event => $data.actionFocused = false),
20872
- onMouseout: _cache[2] || (_cache[2] = $event => $data.actionFocused = false),
20873
- onClick: _cache[3] || (_cache[3] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => _ctx.$emit('call', $event), ["stop"]))
22257
+ }, 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, {
22258
+ message: $props.callButtonTooltip,
22259
+ placement: "top"
20874
22260
  }, {
20875
- icon: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_icon, {
20876
- name: "phone",
20877
- size: "200"
20878
- })]),
22261
+ anchor: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_button, {
22262
+ class: "dt-leftbar-row__action-button",
22263
+ "data-qa": "dt-leftbar-row-action-call-button",
22264
+ circle: "",
22265
+ size: "xs",
22266
+ kind: "inverted",
22267
+ "aria-label": $props.callButtonTooltip,
22268
+ onFocus: _cache[0] || (_cache[0] = $event => $data.actionFocused = true),
22269
+ onBlur: _cache[1] || (_cache[1] = $event => $data.actionFocused = false),
22270
+ onMouseleave: _cache[2] || (_cache[2] = $event => $data.actionFocused = false),
22271
+ onClick: _cache[3] || (_cache[3] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => _ctx.$emit('call', $event), ["stop"]))
22272
+ }, {
22273
+ icon: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_icon, {
22274
+ name: "phone",
22275
+ size: "200"
22276
+ })]),
22277
+ _: 1
22278
+ }, 8, ["aria-label"])]),
20879
22279
  _: 1
20880
- })])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 2);
22280
+ }, 8, ["message"])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 2);
20881
22281
  }
20882
- ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=template&id=06ebf262
22282
+ ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=template&id=46f0cd86
20883
22283
 
20884
22284
  ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row_constants.js
20885
22285
  const LEFTBAR_GENERAL_ROW_TYPES = {
@@ -20889,6 +22289,9 @@ const LEFTBAR_GENERAL_ROW_TYPES = {
20889
22289
  THREADS: 'threads',
20890
22290
  LOCKED_CHANNEL: 'locked channel',
20891
22291
  CONTACT_CENTER: 'contact center',
22292
+ QUICK_START: 'quick start',
22293
+ COACHING_GROUP: 'coaching group',
22294
+ COACHING_CENTER: 'coaching center',
20892
22295
  DIALBOT: 'dialbot',
20893
22296
  ASSIGNED: 'assigned',
20894
22297
  DIGITAL: 'digital'
@@ -20899,6 +22302,9 @@ const LEFTBAR_GENERAL_ROW_ICON_MAPPING = {
20899
22302
  [LEFTBAR_GENERAL_ROW_TYPES.CHANNELS]: 'hash',
20900
22303
  [LEFTBAR_GENERAL_ROW_TYPES.THREADS]: 'thread',
20901
22304
  [LEFTBAR_GENERAL_ROW_TYPES.LOCKED_CHANNEL]: 'lock',
22305
+ [LEFTBAR_GENERAL_ROW_TYPES.QUICK_START]: 'sparkle',
22306
+ [LEFTBAR_GENERAL_ROW_TYPES.COACHING_GROUP]: 'users',
22307
+ [LEFTBAR_GENERAL_ROW_TYPES.COACHING_CENTER]: 'external-link',
20902
22308
  'locked channel unread': 'lock-filled',
20903
22309
  'channel unread': 'hash-bold',
20904
22310
  [LEFTBAR_GENERAL_ROW_TYPES.ASSIGNED]: 'at-sign',
@@ -21431,12 +22837,12 @@ const emoji_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(emojivue_typ
21431
22837
  const emoji_text_wrapper_exports_ = emoji_text_wrappervue_type_script_lang_js;
21432
22838
 
21433
22839
  /* harmony default export */ const emoji_text_wrapper = (emoji_text_wrapper_exports_);
21434
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
22840
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
21435
22841
 
21436
- function leftbar_general_row_iconvue_type_template_id_06ed62b0_render(_ctx, _cache, $props, $setup, $data, $options) {
22842
+ function leftbar_general_row_iconvue_type_template_id_27d28559_render(_ctx, _cache, $props, $setup, $data, $options) {
21437
22843
  const _component_dt_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-icon");
21438
22844
 
21439
- const _component_icon_dialpad_glyph = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("icon-dialpad-glyph");
22845
+ const _component_icon_dialbot = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("icon-dialbot");
21440
22846
 
21441
22847
  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, {
21442
22848
  key: 0,
@@ -21448,45 +22854,43 @@ function leftbar_general_row_iconvue_type_template_id_06ed62b0_render(_ctx, _cac
21448
22854
  }, 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", {
21449
22855
  key: 2,
21450
22856
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)($options.dialbotClasses)
21451
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_icon_dialpad_glyph, {
21452
- class: "d-svg--size18",
21453
- color: "white"
22857
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_icon_dialbot, {
22858
+ class: "d-svg--size24"
21454
22859
  })], 2)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true);
21455
22860
  }
21456
- ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/leftbar_general_row_icon.vue?vue&type=template&id=06ed62b0
22861
+ ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/leftbar_general_row_icon.vue?vue&type=template&id=27d28559
21457
22862
 
21458
- ;// 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
22863
+ ;// 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
21459
22864
 
21460
22865
 
21461
- const IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_1 = {
22866
+ const IconDialbotvue_type_template_id_afc48fb0_hoisted_1 = {
21462
22867
  "aria-hidden": "true",
21463
22868
  focusable: "false",
21464
- "aria-label": "Dialpad Glyph",
21465
- class: "d-svg d-svg--system d-svg__dialpadGlyph",
21466
- viewBox: "0 0 24 24"
22869
+ "aria-label": "Dialbot",
22870
+ class: "d-svg d-svg--native d-svg__dialbot",
22871
+ width: "358",
22872
+ height: "358",
22873
+ viewBox: "0 0 358 358",
22874
+ fill: "none"
21467
22875
  }
21468
- const IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_2 = /*#__PURE__*/(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("path", {
21469
- "fill-rule": "evenodd",
21470
- "clip-rule": "evenodd",
21471
- 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"
21472
- }, null, -1)
21473
- const IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_3 = [
21474
- IconDialpadGlyphvue_type_template_id_85d2b6f4_hoisted_2
22876
+ 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)
22877
+ const IconDialbotvue_type_template_id_afc48fb0_hoisted_6 = [
22878
+ IconDialbotvue_type_template_id_afc48fb0_hoisted_2
21475
22879
  ]
21476
22880
 
21477
- function IconDialpadGlyphvue_type_template_id_85d2b6f4_render(_ctx, _cache) {
21478
- 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))
22881
+ function IconDialbotvue_type_template_id_afc48fb0_render(_ctx, _cache) {
22882
+ 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))
21479
22883
  }
21480
- ;// CONCATENATED MODULE: ./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialpadGlyph.vue?vue&type=template&id=85d2b6f4
22884
+ ;// CONCATENATED MODULE: ./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialbot.vue?vue&type=template&id=afc48fb0
21481
22885
 
21482
- ;// CONCATENATED MODULE: ./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialpadGlyph.vue
22886
+ ;// CONCATENATED MODULE: ./node_modules/@dialpad/dialtone/lib/dist/vue/icons/IconDialbot.vue
21483
22887
 
21484
22888
  const script = {}
21485
22889
 
21486
22890
  ;
21487
- const IconDialpadGlyph_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(script, [['render',IconDialpadGlyphvue_type_template_id_85d2b6f4_render]])
22891
+ const IconDialbot_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(script, [['render',IconDialbotvue_type_template_id_afc48fb0_render]])
21488
22892
 
21489
- /* harmony default export */ const IconDialpadGlyph = (IconDialpadGlyph_exports_);
22893
+ /* harmony default export */ const IconDialbot = (IconDialbot_exports_);
21490
22894
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
21491
22895
 
21492
22896
 
@@ -21495,7 +22899,7 @@ const IconDialpadGlyph_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(s
21495
22899
  name: 'DtRecipeLeftbarGeneralRowIcon',
21496
22900
  components: {
21497
22901
  DtIcon: icon,
21498
- IconDialpadGlyph: IconDialpadGlyph
22902
+ IconDialbot: IconDialbot
21499
22903
  },
21500
22904
  props: {
21501
22905
  type: {
@@ -21529,7 +22933,7 @@ const IconDialpadGlyph_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(s
21529
22933
  },
21530
22934
 
21531
22935
  dialbotClasses() {
21532
- return ['d-bar-circle', 'd-bgc-purple-400', 'd-w24', 'd-h24', 'd-d-flex', 'd-ai-center', 'd-jc-center'];
22936
+ return ['d-w24', 'd-h24', 'd-d-flex', 'd-ai-center', 'd-jc-center'];
21533
22937
  }
21534
22938
 
21535
22939
  }
@@ -21542,7 +22946,7 @@ const IconDialpadGlyph_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(s
21542
22946
 
21543
22947
 
21544
22948
  ;
21545
- 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]])
22949
+ 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]])
21546
22950
 
21547
22951
  /* harmony default export */ const leftbar_general_row_icon = (leftbar_general_row_icon_exports_);
21548
22952
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
@@ -21553,6 +22957,7 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21553
22957
 
21554
22958
 
21555
22959
 
22960
+
21556
22961
  /* harmony default export */ const general_rowvue_type_script_lang_js = ({
21557
22962
  name: 'DtRecipeGeneralRow',
21558
22963
  components: {
@@ -21560,6 +22965,7 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21560
22965
  DtBadge: badge,
21561
22966
  DtIcon: icon,
21562
22967
  DtButton: button_button,
22968
+ DtTooltip: tooltip,
21563
22969
  DtRecipeLeftbarGeneralRowIcon: leftbar_general_row_icon
21564
22970
  },
21565
22971
  inheritAttrs: false,
@@ -21577,13 +22983,22 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21577
22983
  },
21578
22984
 
21579
22985
  /**
21580
- * Text displayed next to the icon
22986
+ * Will be read out by a screen reader upon focus of this row. If not defined "description" will be read.
21581
22987
  */
21582
- description: {
22988
+ ariaLabel: {
21583
22989
  type: String,
21584
22990
  default: ''
21585
22991
  },
21586
22992
 
22993
+ /**
22994
+ * Text displayed next to the icon. Required. Even if you are overriding this field using the label slot
22995
+ * you still must input this as it will be displayed as the "title" attribute for the row.
22996
+ */
22997
+ description: {
22998
+ type: String,
22999
+ required: true
23000
+ },
23001
+
21587
23002
  /**
21588
23003
  * Determines the color of the contact center icon
21589
23004
  */
@@ -21612,6 +23027,14 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21612
23027
  default: null
21613
23028
  },
21614
23029
 
23030
+ /**
23031
+ * Text shown when the unread count is hovered.
23032
+ */
23033
+ unreadCountTooltip: {
23034
+ type: String,
23035
+ default: ''
23036
+ },
23037
+
21615
23038
  /**
21616
23039
  * Determines if the row is selected
21617
23040
  */
@@ -21645,12 +23068,36 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21645
23068
  default: ''
21646
23069
  },
21647
23070
 
23071
+ /**
23072
+ * Text shown in tooltip when you hover the dndText
23073
+ */
23074
+ dndTextTooltip: {
23075
+ type: String,
23076
+ default: ''
23077
+ },
23078
+
21648
23079
  /**
21649
23080
  * Whether the row should have a call button. Usually only applicable to individual contact rows.
21650
23081
  */
21651
23082
  hasCallButton: {
21652
23083
  type: Boolean,
21653
23084
  default: false
23085
+ },
23086
+
23087
+ /**
23088
+ * Text shown when the call button is hovered.
23089
+ */
23090
+ callButtonTooltip: {
23091
+ type: String,
23092
+ default: ''
23093
+ },
23094
+
23095
+ /**
23096
+ * Shows an "is typing" animation over the avatar when true.
23097
+ */
23098
+ isTyping: {
23099
+ type: Boolean,
23100
+ default: false
21654
23101
  }
21655
23102
  },
21656
23103
  emits: [
@@ -21695,6 +23142,10 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21695
23142
 
21696
23143
  generalRowListeners() {
21697
23144
  return extractVueListeners(this.$attrs);
23145
+ },
23146
+
23147
+ getAriaLabel() {
23148
+ return this.ariaLabel ? this.ariaLabel : `${this.description} ${this.unreadCountTooltip} ${this.dndTextTooltip}`;
21698
23149
  }
21699
23150
 
21700
23151
  },
@@ -21720,10 +23171,10 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21720
23171
  });
21721
23172
  ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=script&lang=js
21722
23173
 
21723
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.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
23174
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-32.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-32.use[1]!./node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-32.use[2]!./node_modules/less-loader/dist/cjs.js??clonedRuleSet-32.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
21724
23175
  // extracted by mini-css-extract-plugin
21725
23176
 
21726
- ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=style&index=0&id=06ebf262&lang=less
23177
+ ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue?vue&type=style&index=0&id=46f0cd86&lang=less
21727
23178
 
21728
23179
  ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/general_row.vue
21729
23180
 
@@ -21733,41 +23184,45 @@ const leftbar_general_row_icon_exports_ = /*#__PURE__*/(0,exportHelper/* default
21733
23184
  ;
21734
23185
 
21735
23186
 
21736
- const general_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(general_rowvue_type_script_lang_js, [['render',general_rowvue_type_template_id_06ebf262_render]])
23187
+ const general_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(general_rowvue_type_script_lang_js, [['render',general_rowvue_type_template_id_46f0cd86_render]])
21737
23188
 
21738
23189
  /* harmony default export */ const general_row = (general_row_exports_);
21739
23190
  ;// CONCATENATED MODULE: ./recipes/leftbar/general_row/index.js
21740
23191
 
21741
23192
 
21742
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
23193
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
21743
23194
 
21744
- const group_rowvue_type_template_id_29f5cb33_hoisted_1 = ["src", "alt"];
21745
- function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $setup, $data, $options) {
23195
+ const group_rowvue_type_template_id_af6d6b56_hoisted_1 = ["src", "alt"];
23196
+ function group_rowvue_type_template_id_af6d6b56_render(_ctx, _cache, $props, $setup, $data, $options) {
21746
23197
  const _component_dt_avatar = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-avatar");
21747
23198
 
21748
23199
  const _component_dt_recipe_general_row = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-recipe-general-row");
21749
23200
 
21750
23201
  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, {
21751
23202
  description: $props.names,
23203
+ "aria-label": `${$props.groupCountText} ${$props.names}`,
21752
23204
  "unread-count": $props.unreadCount,
21753
23205
  "has-unreads": $props.hasUnreads,
21754
- selected: $props.selected
23206
+ "unread-count-tooltip": $props.unreadCountTooltip,
23207
+ selected: $props.selected,
23208
+ "is-typing": $props.isTyping
21755
23209
  }, {
21756
23210
  left: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_avatar, {
21757
23211
  initials: $props.avatarInitials,
21758
23212
  group: $props.groupCount
21759
23213
  }, {
21760
- default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("img", {
23214
+ 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", {
23215
+ key: 0,
21761
23216
  "data-qa": "dt-avatar-image",
21762
23217
  src: $props.avatarSrc,
21763
23218
  alt: $props.avatarInitials
21764
- }, null, 8, group_rowvue_type_template_id_29f5cb33_hoisted_1)]),
23219
+ }, null, 8, group_rowvue_type_template_id_af6d6b56_hoisted_1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)]),
21765
23220
  _: 1
21766
23221
  }, 8, ["initials", "group"])]),
21767
23222
  _: 1
21768
- }, 8, ["description", "unread-count", "has-unreads", "selected"]);
23223
+ }, 8, ["description", "aria-label", "unread-count", "has-unreads", "unread-count-tooltip", "selected", "is-typing"]);
21769
23224
  }
21770
- ;// CONCATENATED MODULE: ./recipes/leftbar/group_row/group_row.vue?vue&type=template&id=29f5cb33
23225
+ ;// CONCATENATED MODULE: ./recipes/leftbar/group_row/group_row.vue?vue&type=template&id=af6d6b56
21771
23226
 
21772
23227
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
21773
23228
 
@@ -21807,12 +23262,20 @@ function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $se
21807
23262
  required: true
21808
23263
  },
21809
23264
 
23265
+ /**
23266
+ * Screen reader will read out the number of users in the group using this text. Ex: "2 users"
23267
+ */
23268
+ groupCountText: {
23269
+ type: String,
23270
+ default: ''
23271
+ },
23272
+
21810
23273
  /**
21811
23274
  * Names of the group members
21812
23275
  */
21813
23276
  names: {
21814
23277
  type: String,
21815
- default: ''
23278
+ required: true
21816
23279
  },
21817
23280
 
21818
23281
  /**
@@ -21823,6 +23286,14 @@ function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $se
21823
23286
  default: null
21824
23287
  },
21825
23288
 
23289
+ /**
23290
+ * Text shown when the unread count is hovered.
23291
+ */
23292
+ unreadCountTooltip: {
23293
+ type: String,
23294
+ default: null
23295
+ },
23296
+
21826
23297
  /**
21827
23298
  * Styles the row with an increased font weight to convey it has unreads. This must be true to see
21828
23299
  * the unread count badge.
@@ -21838,6 +23309,14 @@ function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $se
21838
23309
  selected: {
21839
23310
  type: Boolean,
21840
23311
  default: false
23312
+ },
23313
+
23314
+ /**
23315
+ * Shows an "is typing" animation over the avatar when true.
23316
+ */
23317
+ isTyping: {
23318
+ type: Boolean,
23319
+ default: false
21841
23320
  }
21842
23321
  },
21843
23322
  emits: [
@@ -21857,18 +23336,18 @@ function group_rowvue_type_template_id_29f5cb33_render(_ctx, _cache, $props, $se
21857
23336
 
21858
23337
 
21859
23338
  ;
21860
- const group_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(group_rowvue_type_script_lang_js, [['render',group_rowvue_type_template_id_29f5cb33_render]])
23339
+ const group_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(group_rowvue_type_script_lang_js, [['render',group_rowvue_type_template_id_af6d6b56_render]])
21861
23340
 
21862
23341
  /* harmony default export */ const group_row = (group_row_exports_);
21863
23342
  ;// CONCATENATED MODULE: ./recipes/leftbar/group_row/index.js
21864
23343
 
21865
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
23344
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
21866
23345
 
21867
- const contact_rowvue_type_template_id_8a190578_hoisted_1 = ["src", "alt"];
21868
- const contact_rowvue_type_template_id_8a190578_hoisted_2 = {
23346
+ const contact_rowvue_type_template_id_69299a5d_hoisted_1 = ["src", "alt"];
23347
+ const contact_rowvue_type_template_id_69299a5d_hoisted_2 = {
21869
23348
  class: "dt-leftbar-row__status"
21870
23349
  };
21871
- function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $setup, $data, $options) {
23350
+ function contact_rowvue_type_template_id_69299a5d_render(_ctx, _cache, $props, $setup, $data, $options) {
21872
23351
  const _component_dt_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-icon");
21873
23352
 
21874
23353
  const _component_dt_avatar = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-avatar");
@@ -21879,10 +23358,14 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21879
23358
 
21880
23359
  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)({
21881
23360
  "unread-count": $props.unreadCount,
23361
+ description: `${$props.name} ${$props.presenceText} ${$props.userStatus}`,
21882
23362
  "has-unreads": $props.hasUnreads,
21883
23363
  selected: $props.selected,
21884
23364
  "has-call-button": true,
21885
- muted: $props.muted
23365
+ muted: $props.muted,
23366
+ "is-typing": $props.isTyping,
23367
+ "call-button-tooltip": $props.callButtonTooltip,
23368
+ "unread-count-tooltip": $props.unreadCountTooltip
21886
23369
  }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toHandlers)($options.contactRowListeners), {
21887
23370
  onCall: _cache[0] || (_cache[0] = $event => _ctx.$emit('call', $event))
21888
23371
  }), {
@@ -21896,7 +23379,7 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21896
23379
  "data-qa": "dt-avatar-image",
21897
23380
  src: $props.avatarSrc,
21898
23381
  alt: $props.name
21899
- }, 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, {
23382
+ }, 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, {
21900
23383
  key: 1,
21901
23384
  name: "user",
21902
23385
  size: "200"
@@ -21912,7 +23395,7 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21912
23395
  }, {
21913
23396
  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)]),
21914
23397
  _: 1
21915
- }), (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", {
23398
+ }), (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", {
21916
23399
  key: 0,
21917
23400
  "data-qa": "dt-leftbar-row-presence-text",
21918
23401
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(['dt-leftbar-row__meta-context', $options.presenceColorClass])
@@ -21927,9 +23410,9 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21927
23410
  _: 1
21928
23411
  })) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)])]),
21929
23412
  _: 1
21930
- }, 16, ["unread-count", "has-unreads", "selected", "muted"]);
23413
+ }, 16, ["unread-count", "description", "has-unreads", "selected", "muted", "is-typing", "call-button-tooltip", "unread-count-tooltip"]);
21931
23414
  }
21932
- ;// CONCATENATED MODULE: ./recipes/leftbar/contact_row/contact_row.vue?vue&type=template&id=8a190578
23415
+ ;// CONCATENATED MODULE: ./recipes/leftbar/contact_row/contact_row.vue?vue&type=template&id=69299a5d
21933
23416
 
21934
23417
  ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.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
21935
23418
 
@@ -21937,7 +23420,6 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21937
23420
 
21938
23421
 
21939
23422
 
21940
-
21941
23423
  /* harmony default export */ const contact_rowvue_type_script_lang_js = ({
21942
23424
  name: 'DtRecipeGroupRow',
21943
23425
  components: {
@@ -21958,15 +23440,14 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
21958
23440
 
21959
23441
  /**
21960
23442
  * Determines whether to show the presence indicator for
21961
- * Avatar - accepts PRESENCE_STATES values: 'active', 'busy', 'away', 'offline'. defaults to active.
21962
- * @values active, busy, away, offline
23443
+ * Avatar - accepts PRESENCE_STATES values: 'busy', 'away', 'offline',
23444
+ * or 'active'. By default, it's null and nothing is shown.
23445
+ * defer validation to avatar component.
23446
+ * @values null, busy, away, offline, active
21963
23447
  */
21964
23448
  avatarPresence: {
21965
23449
  type: String,
21966
- default: PRESENCE_STATES.ACTIVE,
21967
- validator: role => {
21968
- return PRESENCE_STATES_LIST.includes(role);
21969
- }
23450
+ default: null
21970
23451
  },
21971
23452
 
21972
23453
  /**
@@ -22040,6 +23521,30 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
22040
23521
  noInitials: {
22041
23522
  type: Boolean,
22042
23523
  default: false
23524
+ },
23525
+
23526
+ /**
23527
+ * Shows an "is typing" animation over the avatar when true.
23528
+ */
23529
+ isTyping: {
23530
+ type: Boolean,
23531
+ default: false
23532
+ },
23533
+
23534
+ /**
23535
+ * Text shown when the call button is hovered.
23536
+ */
23537
+ callButtonTooltip: {
23538
+ type: String,
23539
+ default: ''
23540
+ },
23541
+
23542
+ /**
23543
+ * Text shown when the unread count is hovered.
23544
+ */
23545
+ unreadCountTooltip: {
23546
+ type: String,
23547
+ default: ''
22043
23548
  }
22044
23549
  },
22045
23550
  emits: [
@@ -22087,7 +23592,7 @@ function contact_rowvue_type_template_id_8a190578_render(_ctx, _cache, $props, $
22087
23592
 
22088
23593
 
22089
23594
  ;
22090
- const contact_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(contact_rowvue_type_script_lang_js, [['render',contact_rowvue_type_template_id_8a190578_render]])
23595
+ const contact_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(contact_rowvue_type_script_lang_js, [['render',contact_rowvue_type_template_id_69299a5d_render]])
22091
23596
 
22092
23597
  /* harmony default export */ const contact_row = (contact_row_exports_);
22093
23598
  ;// CONCATENATED MODULE: ./recipes/leftbar/contact_row/index.js
@@ -22133,6 +23638,7 @@ const contact_row_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(contac
22133
23638
 
22134
23639
 
22135
23640
 
23641
+
22136
23642
 
22137
23643
 
22138
23644
  /// Recipes