@dialpad/dialtone-vue 3.41.0-beta.4 → 3.41.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.
package/CHANGELOG.md CHANGED
@@ -1,36 +1,15 @@
1
- # [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
-
3
-
4
- ### Bug Fixes
5
-
6
- * hack [#2](https://github.com/dialpad/dialtone-vue/issues/2) ([ffde2de](https://github.com/dialpad/dialtone-vue/commit/ffde2ded6a2b12622322aed47b07fbd834adb6e6))
7
-
8
- # [3.41.0-beta.3](https://github.com/dialpad/dialtone-vue/compare/v3.41.0-beta.2...v3.41.0-beta.3) (2023-01-26)
9
-
10
-
11
- ### Bug Fixes
12
-
13
- * hack it up ([46df0d7](https://github.com/dialpad/dialtone-vue/commit/46df0d7327194fab77341fe96acf56a6177578f9))
14
-
15
- # [3.41.0-beta.2](https://github.com/dialpad/dialtone-vue/compare/v3.41.0-beta.1...v3.41.0-beta.2) (2023-01-26)
16
-
17
-
18
- ### Bug Fixes
19
-
20
- * watch appendTo ([e36ca98](https://github.com/dialpad/dialtone-vue/commit/e36ca98e1460cf3f22399b03cde6882f2d6e6a7c))
21
-
22
- # [3.41.0-beta.1](https://github.com/dialpad/dialtone-vue/compare/v3.40.0...v3.41.0-beta.1) (2023-01-26)
1
+ # [3.41.0](https://github.com/dialpad/dialtone-vue/compare/v3.40.0...v3.41.0) (2023-01-26)
23
2
 
24
3
 
25
4
  ### Bug Fixes
26
5
 
27
6
  * **Notice:** incorrect validation - vue 3 ([#716](https://github.com/dialpad/dialtone-vue/issues/716)) ([39aa989](https://github.com/dialpad/dialtone-vue/commit/39aa989f5b12864b4a91e7dfea52d41ba15cc316))
7
+ * **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))
28
8
 
29
9
 
30
10
  ### Features
31
11
 
32
12
  * **Modal:** add style variants of banner ([#714](https://github.com/dialpad/dialtone-vue/issues/714)) ([b759869](https://github.com/dialpad/dialtone-vue/commit/b759869f26cda41ee8fb1c93a43be6cf7af5ef2d))
33
- * **Popover:** shadow dom external anchor logic ([b20e258](https://github.com/dialpad/dialtone-vue/commit/b20e258e5d167931f64e4e51ea6db3c5df3a1a90))
34
13
 
35
14
  # [3.40.0](https://github.com/dialpad/dialtone-vue/compare/v3.39.0...v3.40.0) (2023-01-24)
36
15
 
@@ -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
  });
@@ -6339,11 +6347,11 @@ function dropdownvue_type_template_id_878a8588_render(_ctx, _cache, $props, $set
6339
6347
  }
6340
6348
  ;// CONCATENATED MODULE: ./components/dropdown/dropdown.vue?vue&type=template&id=878a8588
6341
6349
 
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
6350
+ ;// 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=31e5c1c0
6343
6351
 
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) {
6352
+ const popovervue_type_template_id_31e5c1c0_hoisted_1 = ["aria-hidden"];
6353
+ const popovervue_type_template_id_31e5c1c0_hoisted_2 = ["id", "tabindex"];
6354
+ function popovervue_type_template_id_31e5c1c0_render(_ctx, _cache, $props, $setup, $data, $options) {
6347
6355
  const _component_popover_header_footer = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("popover-header-footer");
6348
6356
 
6349
6357
  const _component_sr_only_close_button = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("sr-only-close-button");
@@ -6357,7 +6365,7 @@ function popovervue_type_template_id_3758d616_render(_ctx, _cache, $props, $setu
6357
6365
  class: "d-modal--transparent",
6358
6366
  "aria-hidden": $props.modal && $data.isOpen ? 'false' : 'true',
6359
6367
  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), {
6368
+ }, null, 8, popovervue_type_template_id_31e5c1c0_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
6369
  ref: "popover",
6362
6370
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(['d-popover', {
6363
6371
  'd-popover__anchor--opened': $data.isOpen
@@ -6389,7 +6397,7 @@ function popovervue_type_template_id_3758d616_render(_ctx, _cache, $props, $setu
6389
6397
  'aria-controls': $props.id,
6390
6398
  'aria-haspopup': $props.role
6391
6399
  }
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)({
6400
+ })], 40, popovervue_type_template_id_31e5c1c0_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
6401
  id: $props.id,
6394
6402
  ref: "content",
6395
6403
  role: $props.role,
@@ -6452,7 +6460,7 @@ function popovervue_type_template_id_3758d616_render(_ctx, _cache, $props, $setu
6452
6460
  _: 3
6453
6461
  }, 8, ["class"]))]);
6454
6462
  }
6455
- ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=template&id=3758d616
6463
+ ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=template&id=31e5c1c0
6456
6464
 
6457
6465
  ;// CONCATENATED MODULE: ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js
6458
6466
  function getWindow(node) {
@@ -11556,23 +11564,23 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11556
11564
  });
11557
11565
  },
11558
11566
 
11559
- appendTo(appendTo) {
11567
+ sticky(sticky) {
11560
11568
  var _this$tip3;
11561
11569
 
11562
11570
  (_this$tip3 = this.tip) === null || _this$tip3 === void 0 ? void 0 : _this$tip3.setProps({
11563
- appendTo
11571
+ sticky
11564
11572
  });
11565
11573
  },
11566
11574
 
11567
- sticky(sticky) {
11575
+ fallbackPlacements() {
11568
11576
  var _this$tip4;
11569
11577
 
11570
11578
  (_this$tip4 = this.tip) === null || _this$tip4 === void 0 ? void 0 : _this$tip4.setProps({
11571
- sticky
11579
+ popperOptions: this.popperOptions()
11572
11580
  });
11573
11581
  },
11574
11582
 
11575
- fallbackPlacements() {
11583
+ tether() {
11576
11584
  var _this$tip5;
11577
11585
 
11578
11586
  (_this$tip5 = this.tip) === null || _this$tip5 === void 0 ? void 0 : _this$tip5.setProps({
@@ -11580,18 +11588,10 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11580
11588
  });
11581
11589
  },
11582
11590
 
11583
- tether() {
11591
+ placement(placement) {
11584
11592
  var _this$tip6;
11585
11593
 
11586
11594
  (_this$tip6 = this.tip) === null || _this$tip6 === void 0 ? void 0 : _this$tip6.setProps({
11587
- popperOptions: this.popperOptions()
11588
- });
11589
- },
11590
-
11591
- placement(placement) {
11592
- var _this$tip7;
11593
-
11594
- (_this$tip7 = this.tip) === null || _this$tip7 === void 0 ? void 0 : _this$tip7.setProps({
11595
11595
  placement
11596
11596
  });
11597
11597
  },
@@ -11628,7 +11628,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11628
11628
  },
11629
11629
 
11630
11630
  mounted() {
11631
- const externalAnchorEl = this.externalAnchor ? this.$refs.anchor.getRootNode().querySelector(`#${this.externalAnchor}`) : null;
11631
+ const externalAnchorEl = document.getElementById(this.externalAnchor);
11632
11632
  this.anchorEl = externalAnchorEl !== null && externalAnchorEl !== void 0 ? externalAnchorEl : this.$refs.anchor.children[0];
11633
11633
  this.popoverContentEl = this.$refs.content.$el;
11634
11634
 
@@ -11638,9 +11638,9 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11638
11638
  },
11639
11639
 
11640
11640
  beforeUnmount() {
11641
- var _this$tip8;
11641
+ var _this$tip7;
11642
11642
 
11643
- (_this$tip8 = this.tip) === null || _this$tip8 === void 0 ? void 0 : _this$tip8.destroy();
11643
+ (_this$tip7 = this.tip) === null || _this$tip7 === void 0 ? void 0 : _this$tip7.destroy();
11644
11644
  this.removeReferences();
11645
11645
  this.removeEventListeners();
11646
11646
  },
@@ -11665,7 +11665,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11665
11665
 
11666
11666
  calculateAnchorZindex() {
11667
11667
  // if a modal is currently active render at modal-element z-index, otherwise at popover z-index
11668
- if (this.$el.getRootNode().querySelector('.d-modal[aria-hidden="false"], .d-modal--transparent[aria-hidden="false"]') || this.anchorEl.closest('.d-zi-drawer')) {
11668
+ if (document.querySelector('.d-modal[aria-hidden="false"], .d-modal--transparent[aria-hidden="false"]')) {
11669
11669
  return 650;
11670
11670
  } else {
11671
11671
  return 300;
@@ -11759,7 +11759,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11759
11759
  * Prevents scrolling only when the popover is set to modal
11760
11760
  **/
11761
11761
  preventScrolling(e) {
11762
- if (!this.modal) return;
11762
+ if (!this.modal || this.$refs.content.$el.contains(e.target)) return;
11763
11763
  e.preventDefault();
11764
11764
  },
11765
11765
 
@@ -11780,7 +11780,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11780
11780
  },
11781
11781
 
11782
11782
  async onLeaveTransitionComplete() {
11783
- var _this$tip9;
11783
+ var _this$tip8;
11784
11784
 
11785
11785
  if (this.modal) {
11786
11786
  await this.focusFirstElement(this.$refs.anchor); // await next tick in case the user wants to change focus themselves.
@@ -11788,7 +11788,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11788
11788
  await this.$nextTick();
11789
11789
  }
11790
11790
 
11791
- (_this$tip9 = this.tip) === null || _this$tip9 === void 0 ? void 0 : _this$tip9.unmount();
11791
+ (_this$tip8 = this.tip) === null || _this$tip8 === void 0 ? void 0 : _this$tip8.unmount();
11792
11792
  this.$emit('opened', false);
11793
11793
 
11794
11794
  if (this.open !== null) {
@@ -11887,15 +11887,13 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11887
11887
  },
11888
11888
 
11889
11889
  initTippyInstance() {
11890
- var _this$anchorEl2, _this$anchorEl2$getRo;
11891
-
11892
11890
  this.tip = tippy_utils_createTippy(this.anchorEl, {
11893
11891
  popperOptions: this.popperOptions(),
11894
11892
  contentElement: this.popoverContentEl,
11895
11893
  placement: this.placement,
11896
11894
  offset: this.offset,
11897
11895
  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,
11896
+ appendTo: this.appendTo,
11899
11897
  interactive: true,
11900
11898
  trigger: 'manual',
11901
11899
  // We have to manage hideOnClick functionality manually to handle
@@ -11916,10 +11914,10 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11916
11914
  });
11917
11915
  ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=script&lang=js
11918
11916
 
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
11917
+ ;// 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=31e5c1c0&lang=less
11920
11918
  // extracted by mini-css-extract-plugin
11921
11919
 
11922
- ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=style&index=0&id=3758d616&lang=less
11920
+ ;// CONCATENATED MODULE: ./components/popover/popover.vue?vue&type=style&index=0&id=31e5c1c0&lang=less
11923
11921
 
11924
11922
  ;// CONCATENATED MODULE: ./components/popover/popover.vue
11925
11923
 
@@ -11929,7 +11927,7 @@ const popover_header_footer_exports_ = /*#__PURE__*/(0,exportHelper/* default */
11929
11927
  ;
11930
11928
 
11931
11929
 
11932
- const popover_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(popovervue_type_script_lang_js, [['render',popovervue_type_template_id_3758d616_render]])
11930
+ const popover_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(popovervue_type_script_lang_js, [['render',popovervue_type_template_id_31e5c1c0_render]])
11933
11931
 
11934
11932
  /* harmony default export */ const popover = (popover_exports_);
11935
11933
  ;// CONCATENATED MODULE: ./components/popover/index.js
@@ -15698,31 +15696,34 @@ function tabvue_type_template_id_af343bac_render(_ctx, _cache, $props, $setup, $
15698
15696
  const tab_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tabvue_type_script_lang_js, [['render',tabvue_type_template_id_af343bac_render]])
15699
15697
 
15700
15698
  /* 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
15699
+ ;// 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
15700
 
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) {
15701
+ const tab_panelvue_type_template_id_2cfdc9e8_hoisted_1 = ["id", "tabindex", "aria-labelledby", "aria-hidden"];
15702
+ function tab_panelvue_type_template_id_2cfdc9e8_render(_ctx, _cache, $props, $setup, $data, $options) {
15705
15703
  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
15704
  id: `dt-panel-${$props.id}`,
15707
15705
  role: "tabpanel",
15708
- tabindex: "0",
15706
+ tabindex: $data.isFirstElementFocusable ? -1 : 0,
15709
15707
  "aria-labelledby": `dt-tab-${$props.tabId}`,
15710
15708
  "aria-hidden": `${$options.hidePanel}`,
15711
15709
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)([{
15712
15710
  'd-d-none': $options.hidePanel
15713
15711
  }, $props.tabPanelClass]),
15714
15712
  "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]]);
15713
+ }, [(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
15714
  }
15717
- ;// CONCATENATED MODULE: ./components/tabs/tab_panel.vue?vue&type=template&id=572b0140
15715
+ ;// CONCATENATED MODULE: ./components/tabs/tab_panel.vue?vue&type=template&id=2cfdc9e8
15718
15716
 
15719
15717
  ;// 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
15718
+
15720
15719
  /**
15721
15720
  * Tabs allow users to navigation between grouped content in different views while within the same page context.
15722
15721
  * @see https://dialpad.design/components/tabs.html
15723
15722
  */
15723
+
15724
15724
  /* harmony default export */ const tab_panelvue_type_script_lang_js = ({
15725
15725
  name: 'DtTabPanel',
15726
+ mixins: [modal],
15726
15727
  inject: ['groupContext'],
15727
15728
  props: {
15728
15729
  /**
@@ -15758,12 +15759,24 @@ function tab_panelvue_type_template_id_572b0140_render(_ctx, _cache, $props, $se
15758
15759
  default: ''
15759
15760
  }
15760
15761
  },
15762
+
15763
+ data() {
15764
+ return {
15765
+ isFirstElementFocusable: false
15766
+ };
15767
+ },
15768
+
15761
15769
  computed: {
15762
15770
  hidePanel() {
15763
15771
  return this.groupContext.selected !== this.id || this.hidden;
15764
15772
  }
15765
15773
 
15774
+ },
15775
+
15776
+ async mounted() {
15777
+ this.isFirstElementFocusable = !!(await this.getFirstFocusableElement(this.$el));
15766
15778
  }
15779
+
15767
15780
  });
15768
15781
  ;// CONCATENATED MODULE: ./components/tabs/tab_panel.vue?vue&type=script&lang=js
15769
15782
 
@@ -15773,7 +15786,7 @@ function tab_panelvue_type_template_id_572b0140_render(_ctx, _cache, $props, $se
15773
15786
 
15774
15787
 
15775
15788
  ;
15776
- const tab_panel_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tab_panelvue_type_script_lang_js, [['render',tab_panelvue_type_template_id_572b0140_render]])
15789
+ const tab_panel_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(tab_panelvue_type_script_lang_js, [['render',tab_panelvue_type_template_id_2cfdc9e8_render]])
15777
15790
 
15778
15791
  /* harmony default export */ const tab_panel = (tab_panel_exports_);
15779
15792
  ;// CONCATENATED MODULE: ./components/tabs/index.js
@@ -18058,17 +18071,17 @@ const root_layout_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(root_l
18058
18071
  ;// CONCATENATED MODULE: ./components/root_layout/index.js
18059
18072
 
18060
18073
 
18061
- ;// 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=27b9863b
18074
+ ;// 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=6b1072ea
18062
18075
 
18063
- const combobox_with_popovervue_type_template_id_27b9863b_hoisted_1 = ["id"];
18064
- const combobox_with_popovervue_type_template_id_27b9863b_hoisted_2 = {
18076
+ const combobox_with_popovervue_type_template_id_6b1072ea_hoisted_1 = ["id"];
18077
+ const combobox_with_popovervue_type_template_id_6b1072ea_hoisted_2 = {
18065
18078
  ref: "header"
18066
18079
  };
18067
- const combobox_with_popovervue_type_template_id_27b9863b_hoisted_3 = ["onMouseleave", "onFocusout"];
18068
- const combobox_with_popovervue_type_template_id_27b9863b_hoisted_4 = {
18080
+ const combobox_with_popovervue_type_template_id_6b1072ea_hoisted_3 = ["onMouseleave", "onFocusout"];
18081
+ const combobox_with_popovervue_type_template_id_6b1072ea_hoisted_4 = {
18069
18082
  ref: "footer"
18070
18083
  };
18071
- function combobox_with_popovervue_type_template_id_27b9863b_render(_ctx, _cache, $props, $setup, $data, $options) {
18084
+ function combobox_with_popovervue_type_template_id_6b1072ea_render(_ctx, _cache, $props, $setup, $data, $options) {
18072
18085
  const _component_combobox_loading_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-loading-list");
18073
18086
 
18074
18087
  const _component_combobox_empty_list = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("combobox-empty-list");
@@ -18091,7 +18104,6 @@ function combobox_with_popovervue_type_template_id_27b9863b_render(_ctx, _cache,
18091
18104
  "on-end-of-list": $props.onEndOfList,
18092
18105
  "list-rendered-outside": true,
18093
18106
  "list-id": $props.listId,
18094
- "append-to": $props.appendTo,
18095
18107
  "data-qa": "dt-combobox"
18096
18108
  }, $options.comboboxListeners), {
18097
18109
  input: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref => {
@@ -18108,7 +18120,7 @@ function combobox_with_popovervue_type_template_id_27b9863b_render(_ctx, _cache,
18108
18120
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "input", {
18109
18121
  inputProps: inputProps,
18110
18122
  onInput: $options.handleDisplayList
18111
- })], 40, combobox_with_popovervue_type_template_id_27b9863b_hoisted_1)];
18123
+ })], 40, combobox_with_popovervue_type_template_id_6b1072ea_hoisted_1)];
18112
18124
  }),
18113
18125
  list: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(_ref2 => {
18114
18126
  let {
@@ -18153,22 +18165,22 @@ function combobox_with_popovervue_type_template_id_27b9863b_render(_ctx, _cache,
18153
18165
  }), null, 16, ["message"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "list", {
18154
18166
  key: 2,
18155
18167
  listProps: listProps
18156
- })], 42, combobox_with_popovervue_type_template_id_27b9863b_hoisted_3)]),
18168
+ })], 42, combobox_with_popovervue_type_template_id_6b1072ea_hoisted_3)]),
18157
18169
  _: 2
18158
18170
  }, [_ctx.$slots.header ? {
18159
18171
  name: "headerContent",
18160
- 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_27b9863b_hoisted_2, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "header")], 512)]),
18172
+ 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_6b1072ea_hoisted_2, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "header")], 512)]),
18161
18173
  key: "0"
18162
18174
  } : undefined, _ctx.$slots.footer ? {
18163
18175
  name: "footerContent",
18164
- 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_27b9863b_hoisted_4, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "footer")], 512)]),
18176
+ 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_6b1072ea_hoisted_4, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "footer")], 512)]),
18165
18177
  key: "1"
18166
18178
  } : undefined]), 1032, ["open", "max-height", "max-width", "offset", "sticky", "external-anchor", "content-width", "visually-hidden-close-label", "visually-hidden-close", "onOpened"])];
18167
18179
  }),
18168
18180
  _: 3
18169
- }, 16, ["loading", "label", "label-visible", "size", "description", "empty-list", "empty-state-message", "show-list", "on-beginning-of-list", "on-end-of-list", "list-id", "append-to"]);
18181
+ }, 16, ["loading", "label", "label-visible", "size", "description", "empty-list", "empty-state-message", "show-list", "on-beginning-of-list", "on-end-of-list", "list-id"]);
18170
18182
  }
18171
- ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=27b9863b
18183
+ ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/combobox_with_popover.vue?vue&type=template&id=6b1072ea
18172
18184
 
18173
18185
  ;// 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
18174
18186
 
@@ -18179,7 +18191,6 @@ function combobox_with_popovervue_type_template_id_27b9863b_render(_ctx, _cache,
18179
18191
 
18180
18192
 
18181
18193
 
18182
-
18183
18194
  /* harmony default export */ const combobox_with_popovervue_type_script_lang_js = ({
18184
18195
  name: 'DtRecipeComboboxWithPopover',
18185
18196
  components: {
@@ -18338,18 +18349,6 @@ function combobox_with_popovervue_type_template_id_27b9863b_render(_ctx, _cache,
18338
18349
  default: false
18339
18350
  },
18340
18351
 
18341
- /**
18342
- * Sets the element to which the popover is going to append to.
18343
- * @values 'parent', HTMLElement,
18344
- */
18345
- appendTo: {
18346
- type: [HTMLElement, String],
18347
- default: () => document.body,
18348
- validator: appendTo => {
18349
- return POPOVER_APPEND_TO_VALUES.includes(appendTo) || appendTo instanceof HTMLElement;
18350
- }
18351
- },
18352
-
18353
18352
  /**
18354
18353
  * Displays the list when the combobox is focused, before the user has typed anything.
18355
18354
  * When this is enabled the list will not close after selection.
@@ -18541,32 +18540,32 @@ function combobox_with_popovervue_type_template_id_27b9863b_render(_ctx, _cache,
18541
18540
 
18542
18541
 
18543
18542
  ;
18544
- const combobox_with_popover_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(combobox_with_popovervue_type_script_lang_js, [['render',combobox_with_popovervue_type_template_id_27b9863b_render]])
18543
+ const combobox_with_popover_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(combobox_with_popovervue_type_script_lang_js, [['render',combobox_with_popovervue_type_template_id_6b1072ea_render]])
18545
18544
 
18546
18545
  /* harmony default export */ const combobox_with_popover = (combobox_with_popover_exports_);
18547
18546
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_with_popover/index.js
18548
18547
 
18549
- ;// 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_multi_select/combobox_multi_select.vue?vue&type=template&id=e2856cc6
18548
+ ;// 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_multi_select/combobox_multi_select.vue?vue&type=template&id=5e05b863
18550
18549
 
18551
- const combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_1 = {
18550
+ const combobox_multi_selectvue_type_template_id_5e05b863_hoisted_1 = {
18552
18551
  ref: "inputSlotWrapper",
18553
18552
  class: "d-ps-relative d-d-block"
18554
18553
  };
18555
- const combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_2 = {
18554
+ const combobox_multi_selectvue_type_template_id_5e05b863_hoisted_2 = {
18556
18555
  ref: "chipsWrapper",
18557
18556
  class: "d-ps-absolute d-mx2"
18558
18557
  };
18559
- const combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_3 = {
18558
+ const combobox_multi_selectvue_type_template_id_5e05b863_hoisted_3 = {
18560
18559
  ref: "header"
18561
18560
  };
18562
- const combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_4 = {
18561
+ const combobox_multi_selectvue_type_template_id_5e05b863_hoisted_4 = {
18563
18562
  key: 1,
18564
18563
  class: "d-ta-center d-py16"
18565
18564
  };
18566
- const combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_5 = {
18565
+ const combobox_multi_selectvue_type_template_id_5e05b863_hoisted_5 = {
18567
18566
  ref: "footer"
18568
18567
  };
18569
- function combobox_multi_selectvue_type_template_id_e2856cc6_render(_ctx, _cache, $props, $setup, $data, $options) {
18568
+ function combobox_multi_selectvue_type_template_id_5e05b863_render(_ctx, _cache, $props, $setup, $data, $options) {
18570
18569
  const _component_dt_chip = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-chip");
18571
18570
 
18572
18571
  const _component_dt_input = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("dt-input");
@@ -18584,7 +18583,6 @@ function combobox_multi_selectvue_type_template_id_e2856cc6_render(_ctx, _cache,
18584
18583
  "has-suggestion-list": $props.hasSuggestionList,
18585
18584
  "visually-hidden-close-label": _ctx.visuallyHiddenCloseLabel,
18586
18585
  "visually-hidden-close": _ctx.visuallyHiddenClose,
18587
- "append-to": $props.appendTo,
18588
18586
  "content-width": "anchor",
18589
18587
  onSelect: $options.onComboboxSelect
18590
18588
  }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createSlots)({
@@ -18592,7 +18590,7 @@ function combobox_multi_selectvue_type_template_id_e2856cc6_render(_ctx, _cache,
18592
18590
  let {
18593
18591
  onInput
18594
18592
  } = _ref;
18595
- return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_2, [((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)($props.selectedItems, item => {
18593
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", combobox_multi_selectvue_type_template_id_5e05b863_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("span", combobox_multi_selectvue_type_template_id_5e05b863_hoisted_2, [((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)($props.selectedItems, item => {
18596
18594
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_dt_chip, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
18597
18595
  ref_for: true,
18598
18596
  ref: "chips",
@@ -18634,19 +18632,19 @@ function combobox_multi_selectvue_type_template_id_e2856cc6_render(_ctx, _cache,
18634
18632
  onMousedown: _cache[1] || (_cache[1] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)(() => {}, ["prevent"]))
18635
18633
  }, [!$props.loading ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "list", {
18636
18634
  key: 0
18637
- }) : ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_4, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($props.loadingMessage), 1))], 544)]),
18635
+ }) : ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", combobox_multi_selectvue_type_template_id_5e05b863_hoisted_4, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)($props.loadingMessage), 1))], 544)]),
18638
18636
  _: 2
18639
18637
  }, [_ctx.$slots.header ? {
18640
18638
  name: "header",
18641
- fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_3, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "header")], 512)]),
18639
+ fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", combobox_multi_selectvue_type_template_id_5e05b863_hoisted_3, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "header")], 512)]),
18642
18640
  key: "0"
18643
18641
  } : undefined, _ctx.$slots.footer ? {
18644
18642
  name: "footer",
18645
- fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", combobox_multi_selectvue_type_template_id_e2856cc6_hoisted_5, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "footer")], 512)]),
18643
+ fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(() => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", combobox_multi_selectvue_type_template_id_5e05b863_hoisted_5, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "footer")], 512)]),
18646
18644
  key: "1"
18647
- } : undefined]), 1032, ["label", "show-list", "max-height", "popover-offset", "has-suggestion-list", "visually-hidden-close-label", "visually-hidden-close", "append-to", "onSelect"]);
18645
+ } : undefined]), 1032, ["label", "show-list", "max-height", "popover-offset", "has-suggestion-list", "visually-hidden-close-label", "visually-hidden-close", "onSelect"]);
18648
18646
  }
18649
- ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue?vue&type=template&id=e2856cc6
18647
+ ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_multi_select/combobox_multi_select.vue?vue&type=template&id=5e05b863
18650
18648
 
18651
18649
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_multi_select/combobox_multi_select_story_constants.js
18652
18650
  // The item list for default story
@@ -18763,7 +18761,6 @@ const CHIP_BOTTOM_POSITION = {
18763
18761
 
18764
18762
 
18765
18763
 
18766
-
18767
18764
  /* harmony default export */ const combobox_multi_selectvue_type_script_lang_js = ({
18768
18765
  name: 'DtRecipeComboboxMultiSelect',
18769
18766
  components: {
@@ -18818,18 +18815,6 @@ const CHIP_BOTTOM_POSITION = {
18818
18815
  }
18819
18816
  },
18820
18817
 
18821
- /**
18822
- * Sets the element to which the popover is going to append to.
18823
- * @values 'parent', HTMLElement,
18824
- */
18825
- appendTo: {
18826
- type: [HTMLElement, String],
18827
- default: () => document.body,
18828
- validator: appendTo => {
18829
- return POPOVER_APPEND_TO_VALUES.includes(appendTo) || appendTo instanceof HTMLElement;
18830
- }
18831
- },
18832
-
18833
18818
  /**
18834
18819
  * Show input validation message
18835
18820
  */
@@ -19251,7 +19236,7 @@ const CHIP_BOTTOM_POSITION = {
19251
19236
 
19252
19237
 
19253
19238
  ;
19254
- const combobox_multi_select_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(combobox_multi_selectvue_type_script_lang_js, [['render',combobox_multi_selectvue_type_template_id_e2856cc6_render]])
19239
+ const combobox_multi_select_exports_ = /*#__PURE__*/(0,exportHelper/* default */.Z)(combobox_multi_selectvue_type_script_lang_js, [['render',combobox_multi_selectvue_type_template_id_5e05b863_render]])
19255
19240
 
19256
19241
  /* harmony default export */ const combobox_multi_select = (combobox_multi_select_exports_);
19257
19242
  ;// CONCATENATED MODULE: ./recipes/comboboxes/combobox_multi_select/index.js