@dialpad/dialtone-vue 3.41.0-beta.4 → 3.42.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ # [3.42.0-beta.1](https://github.com/dialpad/dialtone-vue/compare/v3.41.0...v3.42.0-beta.1) (2023-01-27)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * consolelog tests ([0d53fff](https://github.com/dialpad/dialtone-vue/commit/0d53fff3fa5b83883d1f8bec693675afeefd93b2))
7
+ * hack [#2](https://github.com/dialpad/dialtone-vue/issues/2) ([ffde2de](https://github.com/dialpad/dialtone-vue/commit/ffde2ded6a2b12622322aed47b07fbd834adb6e6))
8
+ * hack it up ([46df0d7](https://github.com/dialpad/dialtone-vue/commit/46df0d7327194fab77341fe96acf56a6177578f9))
9
+ * **Popover:** fix prevent scroll logic ([#723](https://github.com/dialpad/dialtone-vue/issues/723)) ([03e1b2b](https://github.com/dialpad/dialtone-vue/commit/03e1b2b924f9e9a49bf8f563a138fa393c9c2f0f))
10
+ * watch appendTo ([e36ca98](https://github.com/dialpad/dialtone-vue/commit/e36ca98e1460cf3f22399b03cde6882f2d6e6a7c))
11
+
12
+
13
+ ### Features
14
+
15
+ * **Popover:** shadow dom external anchor logic ([b20e258](https://github.com/dialpad/dialtone-vue/commit/b20e258e5d167931f64e4e51ea6db3c5df3a1a90))
16
+
1
17
  # [3.41.0-beta.4](https://github.com/dialpad/dialtone-vue/compare/v3.41.0-beta.3...v3.41.0-beta.4) (2023-01-26)
2
18
 
3
19
 
@@ -25,12 +41,19 @@
25
41
  ### Bug Fixes
26
42
 
27
43
  * **Notice:** incorrect validation - vue 3 ([#716](https://github.com/dialpad/dialtone-vue/issues/716)) ([39aa989](https://github.com/dialpad/dialtone-vue/commit/39aa989f5b12864b4a91e7dfea52d41ba15cc316))
44
+ <<<<<<< HEAD
45
+ =======
46
+ * **Tab:** fix focus management with focusable elements inside the panel ([#721](https://github.com/dialpad/dialtone-vue/issues/721)) ([b689472](https://github.com/dialpad/dialtone-vue/commit/b689472a3624eb6ea1d03ebb94ac8befe91159b5))
47
+ >>>>>>> staging-vue3
28
48
 
29
49
 
30
50
  ### Features
31
51
 
32
52
  * **Modal:** add style variants of banner ([#714](https://github.com/dialpad/dialtone-vue/issues/714)) ([b759869](https://github.com/dialpad/dialtone-vue/commit/b759869f26cda41ee8fb1c93a43be6cf7af5ef2d))
53
+ <<<<<<< HEAD
33
54
  * **Popover:** shadow dom external anchor logic ([b20e258](https://github.com/dialpad/dialtone-vue/commit/b20e258e5d167931f64e4e51ea6db3c5df3a1a90))
55
+ =======
56
+ >>>>>>> staging-vue3
34
57
 
35
58
  # [3.40.0](https://github.com/dialpad/dialtone-vue/compare/v3.39.0...v3.40.0) (2023-01-24)
36
59
 
@@ -2962,17 +2962,25 @@ const focusableElementsList = `button,[href],input,select,textarea,details,[tabi
2962
2962
  /* harmony default export */ const modal = ({
2963
2963
  methods: {
2964
2964
  /**
2965
- * set focus to the first focusable element in your component, includes tabindex="-1".
2965
+ * get the first focusable element in your component, includes tabindex="-1".
2966
2966
  * @param {object} el - optional - ref of dom element to trap focus on.
2967
2967
  * will default to the root node of the vue component
2968
2968
  */
2969
- async focusFirstElement(el) {
2969
+ async getFirstFocusableElement(el) {
2970
2970
  await this.$nextTick();
2971
2971
 
2972
2972
  const focusableElements = this._getFocusableElements(el, true);
2973
2973
 
2974
- const elToFocus = this._getFirstFocusElement(focusableElements);
2974
+ return this._getFirstFocusElement(focusableElements);
2975
+ },
2975
2976
 
2977
+ /**
2978
+ * set focus to the first focusable element in your component, includes tabindex="-1".
2979
+ * @param {object} el - optional - ref of dom element to trap focus on.
2980
+ * will default to the root node of the vue component
2981
+ */
2982
+ async focusFirstElement(el) {
2983
+ const elToFocus = await this.getFirstFocusableElement(el);
2976
2984
  elToFocus === null || elToFocus === void 0 ? void 0 : elToFocus.focus({
2977
2985
  preventScroll: true
2978
2986
  });
@@ -3647,19 +3655,19 @@ const card_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(cardvue_type_
3647
3655
  /* harmony default export */ const card = (card_exports_);
3648
3656
  ;// CONCATENATED MODULE: ./components/card/index.js
3649
3657
 
3650
- ;// 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/combobox/combobox.vue?vue&type=template&id=3595da7e
3658
+ ;// 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/combobox/combobox.vue?vue&type=template&id=5b8afaf4
3651
3659
 
3652
- const comboboxvue_type_template_id_3595da7e_hoisted_1 = {
3660
+ const comboboxvue_type_template_id_5b8afaf4_hoisted_1 = {
3653
3661
  "data-qa": "dt-combobox-input-wrapper"
3654
3662
  };
3655
- function comboboxvue_type_template_id_3595da7e_render(_ctx, _cache, $props, $setup, $data, $options) {
3663
+ function comboboxvue_type_template_id_5b8afaf4_render(_ctx, _cache, $props, $setup, $data, $options) {
3656
3664
  const _component_combobox_loading_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-loading-list");
3657
3665
 
3658
3666
  const _component_combobox_empty_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-empty-list");
3659
3667
 
3660
3668
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", {
3661
3669
  onKeydown: [_cache[3] || (_cache[3] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => $options.onKeyValidation($event, 'onEscapeKey'), ["stop"]), ["esc"])), _cache[4] || (_cache[4] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => $options.onKeyValidation($event, 'onEnterKey'), ["exact"]), ["enter"])), _cache[5] || (_cache[5] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => $options.onKeyValidation($event, 'onUpKey'), ["stop", "prevent"]), ["up"])), _cache[6] || (_cache[6] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => $options.onKeyValidation($event, 'onDownKey'), ["stop", "prevent"]), ["down"])), _cache[7] || (_cache[7] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => $options.onKeyValidation($event, 'onHomeKey'), ["stop", "prevent"]), ["home"])), _cache[8] || (_cache[8] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => $options.onKeyValidation($event, 'onEndKey'), ["stop", "prevent"]), ["end"]))]
3662
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", comboboxvue_type_template_id_3595da7e_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "input", {
3670
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", comboboxvue_type_template_id_5b8afaf4_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "input", {
3663
3671
  inputProps: $options.inputProps
3664
3672
  })]), $props.showList ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", {
3665
3673
  key: 0,
@@ -3691,7 +3699,7 @@ function comboboxvue_type_template_id_3595da7e_render(_ctx, _cache, $props, $set
3691
3699
  clearHighlightIndex: $options.clearHighlightIndex
3692
3700
  })], 544)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 32);
3693
3701
  }
3694
- ;// CONCATENATED MODULE: ./components/combobox/combobox.vue?vue&type=template&id=3595da7e
3702
+ ;// CONCATENATED MODULE: ./components/combobox/combobox.vue?vue&type=template&id=5b8afaf4
3695
3703
 
3696
3704
  ;// CONCATENATED MODULE: ./common/mixins/dom.js
3697
3705
  /* harmony default export */ const dom = ({
@@ -4009,6 +4017,7 @@ const ERROR_INVALID_LIST_ELEMENT = 'listElementKey is required or the referenced
4009
4017
  },
4010
4018
 
4011
4019
  setHighlightIndex(num) {
4020
+ console.log('setting highlight index to ' + num);
4012
4021
  this[indexKey] = num;
4013
4022
  this[idKey] = this._getItemId(num);
4014
4023
 
@@ -4018,6 +4027,7 @@ const ERROR_INVALID_LIST_ELEMENT = 'listElementKey is required or the referenced
4018
4027
  },
4019
4028
 
4020
4029
  setHighlightId(id) {
4030
+ console.log('setting highlight id to ' + id);
4021
4031
  this[idKey] = id;
4022
4032
  this[indexKey] = this._getItemIndex(id);
4023
4033
 
@@ -5641,6 +5651,7 @@ const LABEL_SIZES = {
5641
5651
  var _this$outsideRendered2;
5642
5652
 
5643
5653
  this.outsideRenderedListRef = contentRef;
5654
+ console.log(this.outsideRenderedListRef);
5644
5655
  (_this$outsideRendered2 = this.outsideRenderedListRef) === null || _this$outsideRendered2 === void 0 ? void 0 : _this$outsideRendered2.addEventListener('mousemove', this.onMouseHighlight);
5645
5656
  this.$emit('opened', open);
5646
5657
 
@@ -5684,7 +5695,7 @@ const LABEL_SIZES = {
5684
5695
 
5685
5696
 
5686
5697
  ;
5687
- const combobox_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(comboboxvue_type_script_lang_js, [['render',comboboxvue_type_template_id_3595da7e_render]])
5698
+ const combobox_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(comboboxvue_type_script_lang_js, [['render',comboboxvue_type_template_id_5b8afaf4_render]])
5688
5699
 
5689
5700
  /* harmony default export */ const combobox = (combobox_exports_);
5690
5701
  ;// CONCATENATED MODULE: ./components/combobox/index.js
@@ -6339,11 +6350,11 @@ function dropdownvue_type_template_id_878a8588_render(_ctx, _cache, $props, $set
6339
6350
  }
6340
6351
  ;// CONCATENATED MODULE: ./components/dropdown/dropdown.vue?vue&type=template&id=878a8588
6341
6352
 
6342
- ;// 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/popover/popover.vue?vue&type=template&id=3758d616
6353
+ ;// 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/popover/popover.vue?vue&type=template&id=3aa43aea
6343
6354
 
6344
- const popovervue_type_template_id_3758d616_hoisted_1 = ["aria-hidden"];
6345
- const popovervue_type_template_id_3758d616_hoisted_2 = ["id", "tabindex"];
6346
- function popovervue_type_template_id_3758d616_render(_ctx, _cache, $props, $setup, $data, $options) {
6355
+ const popovervue_type_template_id_3aa43aea_hoisted_1 = ["aria-hidden"];
6356
+ const popovervue_type_template_id_3aa43aea_hoisted_2 = ["id", "tabindex"];
6357
+ function popovervue_type_template_id_3aa43aea_render(_ctx, _cache, $props, $setup, $data, $options) {
6347
6358
  const _component_popover_header_footer = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("popover-header-footer");
6348
6359
 
6349
6360
  const _component_sr_only_close_button = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("sr-only-close-button");
@@ -6357,7 +6368,7 @@ function popovervue_type_template_id_3758d616_render(_ctx, _cache, $props, $setu
6357
6368
  class: "d-modal--transparent",
6358
6369
  "aria-hidden": $props.modal && $data.isOpen ? 'false' : 'true',
6359
6370
  onClick: _cache[0] || (_cache[0] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)(() => {}, ["prevent", "stop"]))
6360
- }, null, 8, popovervue_type_template_id_3758d616_hoisted_1)])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), ((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.elementType), {
6371
+ }, null, 8, popovervue_type_template_id_3aa43aea_hoisted_1)])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), ((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.elementType), {
6361
6372
  ref: "popover",
6362
6373
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(['d-popover', {
6363
6374
  'd-popover__anchor--opened': $data.isOpen
@@ -6389,7 +6400,7 @@ function popovervue_type_template_id_3758d616_render(_ctx, _cache, $props, $setu
6389
6400
  'aria-controls': $props.id,
6390
6401
  'aria-haspopup': $props.role
6391
6402
  }
6392
- })], 40, popovervue_type_template_id_3758d616_hoisted_2), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_lazy_show, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
6403
+ })], 40, popovervue_type_template_id_3aa43aea_hoisted_2), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_dt_lazy_show, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
6393
6404
  id: $props.id,
6394
6405
  ref: "content",
6395
6406
  role: $props.role,
@@ -6452,7 +6463,7 @@ function popovervue_type_template_id_3758d616_render(_ctx, _cache, $props, $setu
6452
6463
  _: 3
6453
6464
  }, 8, ["class"]))]);
6454
6465
  }
6455
- ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=template&id=3758d616
6466
+ ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=template&id=3aa43aea
6456
6467
 
6457
6468
  ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js
6458
6469
  function getWindow(node) {
@@ -11557,10 +11568,10 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11557
11568
  },
11558
11569
 
11559
11570
  appendTo(appendTo) {
11560
- var _this$tip3;
11571
+ var _this$tip3, _this$anchorEl, _this$anchorEl$getRoo;
11561
11572
 
11562
11573
  (_this$tip3 = this.tip) === null || _this$tip3 === void 0 ? void 0 : _this$tip3.setProps({
11563
- appendTo
11574
+ appendTo: this.appendTo === document.body ? (_this$anchorEl = this.anchorEl) === null || _this$anchorEl === void 0 ? void 0 : (_this$anchorEl$getRoo = _this$anchorEl.getRootNode()) === null || _this$anchorEl$getRoo === void 0 ? void 0 : _this$anchorEl$getRoo.querySelector('body') : this.appendTo
11564
11575
  });
11565
11576
  },
11566
11577
 
@@ -11619,9 +11630,11 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11619
11630
  isOpen(isOpen, isPrev) {
11620
11631
  if (isOpen) {
11621
11632
  this.initTippyInstance();
11633
+ this.preventScrolling();
11622
11634
  } else if (!isOpen && isPrev !== isOpen) {
11623
11635
  this.removeEventListeners();
11624
11636
  this.tip.hide();
11637
+ this.enableScrolling();
11625
11638
  }
11626
11639
  }
11627
11640
 
@@ -11680,9 +11693,9 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11680
11693
 
11681
11694
 
11682
11695
  if (this.open === null || this.open === undefined) {
11683
- var _this$anchorEl;
11696
+ var _this$anchorEl2;
11684
11697
 
11685
- if (!this.anchorEl.contains(e.target) && !this.anchorEl.isEqualNode(e.target) || (_this$anchorEl = this.anchorEl) !== null && _this$anchorEl !== void 0 && _this$anchorEl.disabled) {
11698
+ if (!this.anchorEl.contains(e.target) && !this.anchorEl.isEqualNode(e.target) || (_this$anchorEl2 = this.anchorEl) !== null && _this$anchorEl2 !== void 0 && _this$anchorEl2.disabled) {
11686
11699
  return;
11687
11700
  }
11688
11701
 
@@ -11730,10 +11743,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11730
11743
  },
11731
11744
 
11732
11745
  addEventListeners() {
11733
- window.addEventListener('dt-popover-close', this.closePopover);
11734
- window.addEventListener('wheel', this.preventScrolling, {
11735
- passive: false
11736
- }); // align popover content width when contentWidth is 'anchor'
11746
+ window.addEventListener('dt-popover-close', this.closePopover); // align popover content width when contentWidth is 'anchor'
11737
11747
 
11738
11748
  if (this.contentWidth === 'anchor') {
11739
11749
  window.addEventListener('resize', this.onResize);
@@ -11742,9 +11752,6 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11742
11752
 
11743
11753
  removeEventListeners() {
11744
11754
  window.removeEventListener('dt-popover-close', this.closePopover);
11745
- window.removeEventListener('wheel', this.preventScrolling, {
11746
- passive: false
11747
- });
11748
11755
 
11749
11756
  if (this.contentWidth === 'anchor') {
11750
11757
  window.removeEventListener('resize', this.onResize);
@@ -11756,11 +11763,40 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11756
11763
  },
11757
11764
 
11758
11765
  /*
11759
- * Prevents scrolling only when the popover is set to modal
11766
+ * Prevents scrolling outside of the currently opened modal popover by:
11767
+ * - when anchor is not within another popover: setting the body to overflow: hidden
11768
+ * - when anchor is within another popover: set the popover dialog container to it's non-modal z-index
11769
+ * since it is no longer the active modal. This puts it underneath the overlay and prevents scrolling.
11760
11770
  **/
11761
- preventScrolling(e) {
11762
- if (!this.modal) return;
11763
- e.preventDefault();
11771
+ async preventScrolling() {
11772
+ await this.$nextTick();
11773
+
11774
+ if (this.modal) {
11775
+ const element = this.anchorEl.closest('body, .tippy-box');
11776
+
11777
+ if (element.tagName.toLowerCase() === 'body') {
11778
+ element.classList.add('d-of-hidden');
11779
+ } else {
11780
+ element.classList.add('d-zi-popover');
11781
+ }
11782
+ }
11783
+ },
11784
+
11785
+ /*
11786
+ * Resets the prevent scrolling properties set in preventScrolling() back to normal.
11787
+ **/
11788
+ async enableScrolling() {
11789
+ await this.$nextTick();
11790
+
11791
+ if (this.modal) {
11792
+ const element = this.anchorEl.closest('body, .tippy-box');
11793
+
11794
+ if (element.tagName.toLowerCase() === 'body') {
11795
+ element.classList.remove('d-of-hidden');
11796
+ } else {
11797
+ element.classList.remove('d-zi-popover');
11798
+ }
11799
+ }
11764
11800
  },
11765
11801
 
11766
11802
  removeReferences() {
@@ -11887,7 +11923,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11887
11923
  },
11888
11924
 
11889
11925
  initTippyInstance() {
11890
- var _this$anchorEl2, _this$anchorEl2$getRo;
11926
+ var _this$anchorEl3, _this$anchorEl3$getRo;
11891
11927
 
11892
11928
  this.tip = tippy_utils_createTippy(this.anchorEl, {
11893
11929
  popperOptions: this.popperOptions(),
@@ -11895,7 +11931,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11895
11931
  placement: this.placement,
11896
11932
  offset: this.offset,
11897
11933
  sticky: this.sticky,
11898
- appendTo: this.appendTo === document.body ? (_this$anchorEl2 = this.anchorEl) === null || _this$anchorEl2 === void 0 ? void 0 : (_this$anchorEl2$getRo = _this$anchorEl2.getRootNode()) === null || _this$anchorEl2$getRo === void 0 ? void 0 : _this$anchorEl2$getRo.querySelector('body') : this.appendTo,
11934
+ appendTo: this.appendTo === document.body ? (_this$anchorEl3 = this.anchorEl) === null || _this$anchorEl3 === void 0 ? void 0 : (_this$anchorEl3$getRo = _this$anchorEl3.getRootNode()) === null || _this$anchorEl3$getRo === void 0 ? void 0 : _this$anchorEl3$getRo.querySelector('body') : this.appendTo,
11899
11935
  interactive: true,
11900
11936
  trigger: 'manual',
11901
11937
  // We have to manage hideOnClick functionality manually to handle
@@ -11916,10 +11952,10 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11916
11952
  });
11917
11953
  ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=script&lang=js
11918
11954
 
11919
- ;// 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/popover/popover.vue?vue&type=style&index=0&id=3758d616&lang=less
11955
+ ;// 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/popover/popover.vue?vue&type=style&index=0&id=3aa43aea&lang=less
11920
11956
  // extracted by mini-css-extract-plugin
11921
11957
 
11922
- ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=style&index=0&id=3758d616&lang=less
11958
+ ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=style&index=0&id=3aa43aea&lang=less
11923
11959
 
11924
11960
  ;// CONCATENATED MODULE: ./components/popover/popover.vue
11925
11961
 
@@ -11929,7 +11965,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11929
11965
  ;
11930
11966
 
11931
11967
 
11932
- const popover_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(popovervue_type_script_lang_js, [['render',popovervue_type_template_id_3758d616_render]])
11968
+ const popover_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(popovervue_type_script_lang_js, [['render',popovervue_type_template_id_3aa43aea_render]])
11933
11969
 
11934
11970
  /* harmony default export */ const popover = (popover_exports_);
11935
11971
  ;// CONCATENATED MODULE: ./components/popover/index.js
@@ -15698,31 +15734,34 @@ function tabvue_type_template_id_af343bac_render(_ctx, _cache, $props, $setup, $
15698
15734
  const tab_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tabvue_type_script_lang_js, [['render',tabvue_type_template_id_af343bac_render]])
15699
15735
 
15700
15736
  /* harmony default export */ const tab = (tab_exports_);
15701
- ;// 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/tabs/tab_panel.vue?vue&type=template&id=572b0140
15737
+ ;// 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/tabs/tab_panel.vue?vue&type=template&id=2cfdc9e8
15702
15738
 
15703
- const tab_panelvue_type_template_id_572b0140_hoisted_1 = ["id", "aria-labelledby", "aria-hidden"];
15704
- function tab_panelvue_type_template_id_572b0140_render(_ctx, _cache, $props, $setup, $data, $options) {
15739
+ const tab_panelvue_type_template_id_2cfdc9e8_hoisted_1 = ["id", "tabindex", "aria-labelledby", "aria-hidden"];
15740
+ function tab_panelvue_type_template_id_2cfdc9e8_render(_ctx, _cache, $props, $setup, $data, $options) {
15705
15741
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withDirectives)(((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", {
15706
15742
  id: `dt-panel-${$props.id}`,
15707
15743
  role: "tabpanel",
15708
- tabindex: "0",
15744
+ tabindex: $data.isFirstElementFocusable ? -1 : 0,
15709
15745
  "aria-labelledby": `dt-tab-${$props.tabId}`,
15710
15746
  "aria-hidden": `${$options.hidePanel}`,
15711
15747
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)([{
15712
15748
  'd-d-none': $options.hidePanel
15713
15749
  }, $props.tabPanelClass]),
15714
15750
  "data-qa": "dt-tab-panel"
15715
- }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default")], 10, tab_panelvue_type_template_id_572b0140_hoisted_1)), [[external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.vShow, !$props.hidden]]);
15751
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default")], 10, tab_panelvue_type_template_id_2cfdc9e8_hoisted_1)), [[external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.vShow, !$props.hidden]]);
15716
15752
  }
15717
- ;// CONCATENATED MODULE: ./components/tabs/tab_panel.vue?vue&type=template&id=572b0140
15753
+ ;// CONCATENATED MODULE: ./components/tabs/tab_panel.vue?vue&type=template&id=2cfdc9e8
15718
15754
 
15719
15755
  ;// 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/tabs/tab_panel.vue?vue&type=script&lang=js
15756
+
15720
15757
  /**
15721
15758
  * Tabs allow users to navigation between grouped content in different views while within the same page context.
15722
15759
  * @see https://dialpad.design/components/tabs.html
15723
15760
  */
15761
+
15724
15762
  /* harmony default export */ const tab_panelvue_type_script_lang_js = ({
15725
15763
  name: 'DtTabPanel',
15764
+ mixins: [modal],
15726
15765
  inject: ['groupContext'],
15727
15766
  props: {
15728
15767
  /**
@@ -15758,12 +15797,24 @@ function tab_panelvue_type_template_id_572b0140_render(_ctx, _cache, $props, $se
15758
15797
  default: ''
15759
15798
  }
15760
15799
  },
15800
+
15801
+ data() {
15802
+ return {
15803
+ isFirstElementFocusable: false
15804
+ };
15805
+ },
15806
+
15761
15807
  computed: {
15762
15808
  hidePanel() {
15763
15809
  return this.groupContext.selected !== this.id || this.hidden;
15764
15810
  }
15765
15811
 
15812
+ },
15813
+
15814
+ async mounted() {
15815
+ this.isFirstElementFocusable = !!(await this.getFirstFocusableElement(this.$el));
15766
15816
  }
15817
+
15767
15818
  });
15768
15819
  ;// CONCATENATED MODULE: ./components/tabs/tab_panel.vue?vue&type=script&lang=js
15769
15820
 
@@ -15773,7 +15824,7 @@ function tab_panelvue_type_template_id_572b0140_render(_ctx, _cache, $props, $se
15773
15824
 
15774
15825
 
15775
15826
  ;
15776
- const tab_panel_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tab_panelvue_type_script_lang_js, [['render',tab_panelvue_type_template_id_572b0140_render]])
15827
+ const tab_panel_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tab_panelvue_type_script_lang_js, [['render',tab_panelvue_type_template_id_2cfdc9e8_render]])
15777
15828
 
15778
15829
  /* harmony default export */ const tab_panel = (tab_panel_exports_);
15779
15830
  ;// CONCATENATED MODULE: ./components/tabs/index.js