@carbon/vue 3.0.26 → 3.0.29

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.
@@ -5914,7 +5914,7 @@ const __exports__ = CvDataTableSkeletonvue_type_script_setup_true_lang_js;
5914
5914
 
5915
5915
  /***/ }),
5916
5916
 
5917
- /***/ 9026:
5917
+ /***/ 8285:
5918
5918
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
5919
5919
 
5920
5920
  "use strict";
@@ -8778,9 +8778,9 @@ var monthSelectPlugin_monthToStr = function monthToStr(monthNumber, shorthand, l
8778
8778
 
8779
8779
  var _hoisted_1 = ["id", "data-date-picker", "data-date-picker-type"];
8780
8780
  var _hoisted_2 = ["for"];
8781
- var _hoisted_3 = ["id", "data-invalid", "disabled", "data-date-picker-input-from", "pattern", "placeholder"];
8781
+ var _hoisted_3 = ["id", "aria-description", "data-invalid", "disabled", "data-date-picker-input-from", "pattern", "placeholder"];
8782
8782
  var _hoisted_4 = ["for"];
8783
- var _hoisted_5 = ["id", "data-date-picker-input-to", "data-invalid", "disabled", "pattern", "placeholder"];
8783
+ var _hoisted_5 = ["id", "aria-description", "data-date-picker-input-to", "data-invalid", "disabled", "pattern", "placeholder"];
8784
8784
 
8785
8785
 
8786
8786
 
@@ -9102,7 +9102,8 @@ var _hoisted_5 = ["id", "data-date-picker-input-to", "data-invalid", "disabled",
9102
9102
  ref: date,
9103
9103
  type: "text",
9104
9104
  "data-date-picker-input": "",
9105
- role: "datepicker",
9105
+ "data-testid": "datepicker",
9106
+ "aria-description": __props.placeholder,
9106
9107
  "data-invalid": isInvalid.value || null,
9107
9108
  disabled: __props.disabled || null,
9108
9109
  "data-date-picker-input-from": "".concat(getKind.value === 'range'),
@@ -9137,7 +9138,8 @@ var _hoisted_5 = ["id", "data-date-picker-input-to", "data-invalid", "disabled",
9137
9138
  ref: todate,
9138
9139
  type: "text",
9139
9140
  "data-date-picker-input": "",
9140
- role: "todatepicker",
9141
+ "data-testid": "todatepicker",
9142
+ "aria-description": __props.placeholder,
9141
9143
  "data-date-picker-input-to": "".concat(__props.kind === 'range'),
9142
9144
  "data-invalid": isInvalid.value || null,
9143
9145
  disabled: __props.disabled || null,
@@ -9162,10 +9164,10 @@ var _hoisted_5 = ["id", "data-date-picker-input-to", "data-invalid", "disabled",
9162
9164
  });
9163
9165
  ;// ./src/components/CvDatePicker/CvDatePicker.vue?vue&type=script&setup=true&lang=js
9164
9166
 
9165
- ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-64.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.use[1]!./node_modules/@vue/cli-service/node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.use[3]!./node_modules/@vue/cli-service/node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/CvDatePicker/CvDatePicker.vue?vue&type=style&index=0&id=8eb50384&lang=scss
9167
+ ;// ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-64.use[0]!./node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-64.use[1]!./node_modules/@vue/cli-service/node_modules/vue-loader/dist/stylePostLoader.js!./node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-64.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-64.use[3]!./node_modules/@vue/cli-service/node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/CvDatePicker/CvDatePicker.vue?vue&type=style&index=0&id=3cc101f2&lang=scss
9166
9168
  // extracted by mini-css-extract-plugin
9167
9169
 
9168
- ;// ./src/components/CvDatePicker/CvDatePicker.vue?vue&type=style&index=0&id=8eb50384&lang=scss
9170
+ ;// ./src/components/CvDatePicker/CvDatePicker.vue?vue&type=style&index=0&id=3cc101f2&lang=scss
9169
9171
 
9170
9172
  ;// ./src/components/CvDatePicker/CvDatePicker.vue
9171
9173
 
@@ -9570,6 +9572,13 @@ var _hoisted_7 = ["aria-disabled"];
9570
9572
  });
9571
9573
  var el = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(null);
9572
9574
  function onClickOut() {
9575
+ // Move focus to button if focus is inside dropdown list
9576
+ var dropListEl = dropList.value;
9577
+ if (dropListEl && dropListEl.contains(document.activeElement)) {
9578
+ if (button.value && typeof button.value.focus === 'function') {
9579
+ button.value.focus();
9580
+ }
9581
+ }
9573
9582
  open.value = false;
9574
9583
  }
9575
9584
  (0,index_esm/* onClickOutside */.X2)(el, onClickOut);
@@ -9616,8 +9625,14 @@ var _hoisted_7 = ["aria-disabled"];
9616
9625
  }
9617
9626
  }
9618
9627
  function onEsc() {
9628
+ // Move focus to button if focus is inside dropdown list
9629
+ var dropListEl = dropList.value;
9630
+ if (dropListEl && dropListEl.contains(document.activeElement)) {
9631
+ if (button.value && typeof button.value.focus === 'function') {
9632
+ button.value.focus();
9633
+ }
9634
+ }
9619
9635
  open.value = false;
9620
- doFocus();
9621
9636
  }
9622
9637
  var button = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(null);
9623
9638
  var listBox = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(null);
@@ -9629,8 +9644,10 @@ var _hoisted_7 = ["aria-disabled"];
9629
9644
  open.value = false;
9630
9645
  } else if (ev.target === null || (_listBox$value = listBox.value) !== null && _listBox$value !== void 0 && _listBox$value.contains(ev.target)) {
9631
9646
  // list has focus, close and return focus to dropdown
9647
+ if (button.value && typeof button.value.focus === 'function') {
9648
+ button.value.focus();
9649
+ }
9632
9650
  open.value = false;
9633
- doFocus();
9634
9651
  ev.preventDefault();
9635
9652
  }
9636
9653
  }
@@ -9639,9 +9656,6 @@ var _hoisted_7 = ["aria-disabled"];
9639
9656
  if (props.disabled) {
9640
9657
  ev.preventDefault();
9641
9658
  } else {
9642
- open.value = !open.value;
9643
- doFocus(); // open or close (Some browsers do not focus on button when clicked)
9644
-
9645
9659
  var target = ev.target;
9646
9660
  while (!target.classList.contains("".concat(settings/* carbonPrefix */.s, "--dropdown-link")) && (_dropList$value2 = dropList.value) !== null && _dropList$value2 !== void 0 && _dropList$value2.contains(target)) {
9647
9661
  var _dropList$value2;
@@ -9650,6 +9664,14 @@ var _hoisted_7 = ["aria-disabled"];
9650
9664
  if (target.classList.contains("".concat(settings/* carbonPrefix */.s, "--dropdown-link"))) {
9651
9665
  var targetItemEl = target.parentNode;
9652
9666
  dataValue.value = targetItemEl.getAttribute('data-value');
9667
+ // Move focus to button before closing
9668
+ if (button.value && typeof button.value.focus === 'function') {
9669
+ button.value.focus();
9670
+ }
9671
+ open.value = false;
9672
+ } else {
9673
+ open.value = !open.value;
9674
+ doFocus(); // open or close (Some browsers do not focus on button when clicked)
9653
9675
  }
9654
9676
  }
9655
9677
  }
@@ -19971,18 +19993,24 @@ var settings = __webpack_require__(7284);
19971
19993
  tagType: {
19972
19994
  type: String,
19973
19995
  default: 'main'
19996
+ },
19997
+ id: {
19998
+ type: String,
19999
+ default: 'main-content'
19974
20000
  }
19975
20001
  },
19976
20002
  setup: function setup(__props) {
19977
20003
  return function (_ctx, _cache) {
19978
20004
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createBlock)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveDynamicComponent)(__props.tagType), {
19979
- class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.normalizeClass)("".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--content"))
20005
+ id: __props.id,
20006
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.normalizeClass)("".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--content")),
20007
+ tabindex: "-1"
19980
20008
  }, {
19981
20009
  default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
19982
20010
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderSlot)(_ctx.$slots, "default")];
19983
20011
  }),
19984
20012
  _: 3
19985
- }, 8, ["class"]);
20013
+ }, 8, ["id", "class"]);
19986
20014
  };
19987
20015
  }
19988
20016
  });
@@ -20204,7 +20232,7 @@ var _hoisted_1 = ["id"];
20204
20232
  var found = data.panelControllers.find(function (item) {
20205
20233
  return item.ariaControls === srcComponent.id;
20206
20234
  });
20207
- if (srcComponent.el !== srcEvent.relatedTarget && !srcComponent.el.contains(srcEvent.relatedTarget) && found && found.el !== srcEvent.relatedTarget) {
20235
+ if (srcComponent.el.value !== srcEvent.relatedTarget && !srcComponent.el.value.contains(srcEvent.relatedTarget) && found && found.el.value !== srcEvent.relatedTarget) {
20208
20236
  onCvPanelControlToggle(found, false);
20209
20237
  }
20210
20238
  }
@@ -20486,6 +20514,7 @@ var _hoisted_2 = ["aria-label", "aria-labelledby"];
20486
20514
  ref_key: "el",
20487
20515
  ref: el,
20488
20516
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.normalizeClass)("cv-header-menu ".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--header__submenu")),
20517
+ role: "menuitem",
20489
20518
  onMouseenter: _cache[1] || (_cache[1] = function ($event) {
20490
20519
  return doHoverToggle(true);
20491
20520
  }),
@@ -20497,9 +20526,9 @@ var _hoisted_2 = ["aria-label", "aria-labelledby"];
20497
20526
  "aria-expanded": data.expanded ? 'true' : 'false',
20498
20527
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.normalizeClass)("".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--header__menu-item ").concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--header__menu-title")),
20499
20528
  href: "javascript:void(0)",
20500
- role: "menuitem",
20501
20529
  tabindex: "0",
20502
20530
  "aria-label": _ctx.$attrs.ariaLabel,
20531
+ role: "button",
20503
20532
  onClick: doToggle,
20504
20533
  onKeydown: [_cache[0] || (_cache[0] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.withModifiers)(function () {}, ["prevent"]), ["space"])), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.withModifiers)(doToggle, ["prevent"]), ["enter"])],
20505
20534
  onKeyup: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.withModifiers)(doToggle, ["prevent"]), ["space"]),
@@ -20722,7 +20751,10 @@ var cvLink = __webpack_require__(6272);
20722
20751
 
20723
20752
 
20724
20753
 
20725
- var _hoisted_1 = ["role"];
20754
+ var _hoisted_1 = {
20755
+ class: "cv-header-menu-item",
20756
+ role: "none"
20757
+ };
20726
20758
 
20727
20759
 
20728
20760
 
@@ -20736,7 +20768,7 @@ var _hoisted_1 = ["role"];
20736
20768
  },
20737
20769
  role: {
20738
20770
  type: String,
20739
- default: undefined
20771
+ default: 'menuitem'
20740
20772
  }
20741
20773
  }, cvLink/* props */.xk),
20742
20774
  setup: function setup(__props) {
@@ -20746,14 +20778,15 @@ var _hoisted_1 = ["role"];
20746
20778
  var activePage = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(function () {
20747
20779
  return props.active && props.ariaCurrent !== 'page';
20748
20780
  });
20781
+ var tabindex = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(function () {
20782
+ return props.role === 'menuitem' ? '0' : undefined;
20783
+ });
20749
20784
  return function (_ctx, _cache) {
20750
- return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("li", {
20751
- class: "cv-header-menu-item",
20752
- role: __props.role
20753
- }, [((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createBlock)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveDynamicComponent)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(tagType)), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.mergeProps)((0,objectSpread2/* default */.A)((0,objectSpread2/* default */.A)({}, _ctx.$attrs), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(linkProps)), {
20785
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("li", _hoisted_1, [((0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createBlock)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveDynamicComponent)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(tagType)), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.mergeProps)((0,objectSpread2/* default */.A)((0,objectSpread2/* default */.A)({}, _ctx.$attrs), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(linkProps)), {
20754
20786
  class: ["".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--header__menu-item"), (0,defineProperty/* default */.A)({}, "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--header__menu-item--current"), activePage.value)],
20755
- role: "menuitem",
20756
- "aria-current": __props.ariaCurrent
20787
+ "aria-current": __props.ariaCurrent,
20788
+ role: __props.role,
20789
+ tabindex: tabindex.value
20757
20790
  }), {
20758
20791
  default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
20759
20792
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
@@ -20761,7 +20794,7 @@ var _hoisted_1 = ["role"];
20761
20794
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderSlot)(_ctx.$slots, "default")], 2)];
20762
20795
  }),
20763
20796
  _: 3
20764
- }, 16, ["class", "aria-current"]))], 8, _hoisted_1);
20797
+ }, 16, ["class", "aria-current", "role", "tabindex"]))]);
20765
20798
  };
20766
20799
  }
20767
20800
  });
@@ -20853,17 +20886,27 @@ __webpack_require__.d(__webpack_exports__, {
20853
20886
  "default": function() { return /* binding */ CvHeaderNav; }
20854
20887
  });
20855
20888
 
20889
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.assign.js
20890
+ var es_object_assign = __webpack_require__(9218);
20856
20891
  // EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
20857
20892
  var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(9274);
20858
20893
  // EXTERNAL MODULE: ./src/global/settings.js
20859
20894
  var settings = __webpack_require__(7284);
20860
20895
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/cli-service/node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/CvUIShell/CvHeaderNav.vue?vue&type=script&setup=true&lang=js
20861
20896
 
20862
- var _hoisted_1 = ["ariaLabeldBy"];
20863
20897
 
20864
- /* harmony default export */ var CvHeaderNavvue_type_script_setup_true_lang_js = ({
20898
+ var _hoisted_1 = ["aria-label", "aria-labelledby"];
20899
+
20900
+ var __default__ = {
20901
+ inheritAttrs: false
20902
+ };
20903
+ /* harmony default export */ var CvHeaderNavvue_type_script_setup_true_lang_js = (/*@__PURE__*/Object.assign(__default__, {
20865
20904
  __name: 'CvHeaderNav',
20866
20905
  props: {
20906
+ ariaLabel: {
20907
+ type: String,
20908
+ default: undefined
20909
+ },
20867
20910
  ariaLabelledBy: {
20868
20911
  type: String,
20869
20912
  default: undefined
@@ -20876,11 +20919,13 @@ var _hoisted_1 = ["ariaLabeldBy"];
20876
20919
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("ul", {
20877
20920
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.normalizeClass)("".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--header__menu-bar")),
20878
20921
  role: "menubar",
20879
- ariaLabeldBy: __props.ariaLabelledBy
20922
+ "aria-orientation": "horizontal",
20923
+ "aria-label": __props.ariaLabel || _ctx.$attrs['aria-label'],
20924
+ "aria-labelledby": __props.ariaLabelledBy || _ctx.$attrs['aria-labelledby']
20880
20925
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1)], 2);
20881
20926
  };
20882
20927
  }
20883
- });
20928
+ }));
20884
20929
  ;// ./src/components/CvUIShell/CvHeaderNav.vue?vue&type=script&setup=true&lang=js
20885
20930
 
20886
20931
  ;// ./src/components/CvUIShell/CvHeaderNav.vue
@@ -20907,6 +20952,10 @@ __webpack_require__.d(__webpack_exports__, {
20907
20952
 
20908
20953
  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js + 2 modules
20909
20954
  var defineProperty = __webpack_require__(9635);
20955
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js
20956
+ var es_object_to_string = __webpack_require__(5086);
20957
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js
20958
+ var web_dom_collections_for_each = __webpack_require__(8379);
20910
20959
  // EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
20911
20960
  var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(9274);
20912
20961
  // EXTERNAL MODULE: ./src/global/settings.js
@@ -20916,7 +20965,9 @@ var event_bus = __webpack_require__(9294);
20916
20965
  ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/cli-service/node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/CvUIShell/CvHeaderPanel.vue?vue&type=script&setup=true&lang=js
20917
20966
 
20918
20967
 
20919
- var _hoisted_1 = ["id", "aria-hidden"];
20968
+
20969
+
20970
+ var _hoisted_1 = ["id", "aria-hidden", "inert"];
20920
20971
 
20921
20972
 
20922
20973
 
@@ -20998,6 +21049,29 @@ var _hoisted_1 = ["id", "aria-hidden"];
20998
21049
  }, function () {
20999
21050
  panelExpanded.value = props.expanded;
21000
21051
  });
21052
+ function manageFocusableElements(isExpanded) {
21053
+ if (!el.value) return;
21054
+ var focusableElements = el.value.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])');
21055
+ focusableElements.forEach(function (element) {
21056
+ if (isExpanded) {
21057
+ // Restore original tabindex when expanded
21058
+ var originalTabindex = element.getAttribute('data-original-tabindex');
21059
+ if (originalTabindex !== null) {
21060
+ if (originalTabindex === 'null') {
21061
+ element.removeAttribute('tabindex');
21062
+ } else {
21063
+ element.setAttribute('tabindex', originalTabindex);
21064
+ }
21065
+ element.removeAttribute('data-original-tabindex');
21066
+ }
21067
+ } else {
21068
+ // Store original tabindex and set to -1 when collapsed
21069
+ var currentTabindex = element.getAttribute('tabindex');
21070
+ element.setAttribute('data-original-tabindex', currentTabindex || 'null');
21071
+ element.setAttribute('tabindex', '-1');
21072
+ }
21073
+ });
21074
+ }
21001
21075
  var emit = __emit;
21002
21076
  (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(panelExpanded, function (current) {
21003
21077
  emit('update:expanded', current);
@@ -21005,6 +21079,18 @@ var _hoisted_1 = ["id", "aria-hidden"];
21005
21079
  id: props.id,
21006
21080
  expanded: current
21007
21081
  });
21082
+
21083
+ // Manage focusable elements
21084
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(function () {
21085
+ manageFocusableElements(current);
21086
+ });
21087
+ });
21088
+
21089
+ // Initial setup of focusable elements
21090
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(function () {
21091
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(function () {
21092
+ manageFocusableElements(panelExpanded.value);
21093
+ });
21008
21094
  });
21009
21095
  return function (_ctx, _cache) {
21010
21096
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", {
@@ -21013,6 +21099,7 @@ var _hoisted_1 = ["id", "aria-hidden"];
21013
21099
  ref: el,
21014
21100
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.normalizeClass)(["cv-header-panel", "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--header-panel"), (0,defineProperty/* default */.A)({}, "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--header-panel--expanded"), panelExpanded.value)]),
21015
21101
  "aria-hidden": !panelExpanded.value ? 'true' : 'false',
21102
+ inert: !panelExpanded.value,
21016
21103
  onFocusout: onFocusout,
21017
21104
  onMousedown: onMouseDown
21018
21105
  }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderSlot)(_ctx.$slots, "default")], 42, _hoisted_1);
@@ -21045,6 +21132,10 @@ __webpack_require__.d(__webpack_exports__, {
21045
21132
 
21046
21133
  // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js + 2 modules
21047
21134
  var defineProperty = __webpack_require__(9635);
21135
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.to-string.js
21136
+ var es_object_to_string = __webpack_require__(5086);
21137
+ // EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom-collections.for-each.js
21138
+ var web_dom_collections_for_each = __webpack_require__(8379);
21048
21139
  // EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.fixed.js
21049
21140
  var es_string_fixed = __webpack_require__(9607);
21050
21141
  // EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
@@ -21143,7 +21234,9 @@ var event_bus = __webpack_require__(9294);
21143
21234
 
21144
21235
 
21145
21236
 
21146
- var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden"];
21237
+
21238
+
21239
+ var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden", "inert"];
21147
21240
 
21148
21241
 
21149
21242
 
@@ -21221,6 +21314,30 @@ var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden"
21221
21314
  }, function () {
21222
21315
  panelExpanded.value = props.expanded;
21223
21316
  });
21317
+ // Manage focusable elements when panel visibility changes
21318
+ function manageFocusableElements(isExpanded, isFixed) {
21319
+ if (!el.value || isFixed) return;
21320
+ var focusableElements = el.value.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])');
21321
+ focusableElements.forEach(function (element) {
21322
+ if (isExpanded) {
21323
+ // Restore original tabindex when expanded
21324
+ var originalTabindex = element.getAttribute('data-original-tabindex');
21325
+ if (originalTabindex !== null) {
21326
+ if (originalTabindex === 'null') {
21327
+ element.removeAttribute('tabindex');
21328
+ } else {
21329
+ element.setAttribute('tabindex', originalTabindex);
21330
+ }
21331
+ element.removeAttribute('data-original-tabindex');
21332
+ }
21333
+ } else {
21334
+ // Store original tabindex and set to -1 when collapsed
21335
+ var currentTabindex = element.getAttribute('tabindex');
21336
+ element.setAttribute('data-original-tabindex', currentTabindex || 'null');
21337
+ element.setAttribute('tabindex', '-1');
21338
+ }
21339
+ });
21340
+ }
21224
21341
  var emit = __emit;
21225
21342
  var isPanelExpanded = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(function () {
21226
21343
  return panelExpanded.value || expandedViaHoverState.value;
@@ -21231,6 +21348,11 @@ var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden"
21231
21348
  id: props.id,
21232
21349
  expanded: current
21233
21350
  });
21351
+
21352
+ // Manage focusable elements for non-fixed nav
21353
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(function () {
21354
+ manageFocusableElements(current, props.fixed);
21355
+ });
21234
21356
  });
21235
21357
  var isChildOfHeader = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(function () {
21236
21358
  return !!bus.value;
@@ -21263,6 +21385,7 @@ var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden"
21263
21385
  ref: el,
21264
21386
  class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.normalizeClass)(["cv-side-nav", "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--side-nav"), "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--side-nav__navigation"), (_ref2 = {}, (0,defineProperty/* default */.A)(_ref2, "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--side-nav--expanded"), panelExpanded.value), (0,defineProperty/* default */.A)(_ref2, "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--side-nav--rail"), __props.rail), (0,defineProperty/* default */.A)(_ref2, "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--side-nav--collapsed"), !panelExpanded.value && __props.fixed), (0,defineProperty/* default */.A)(_ref2, "".concat((0,external_commonjs_vue_commonjs2_vue_root_Vue_.unref)(settings/* carbonPrefix */.s), "--side-nav--ux"), isChildOfHeader.value), _ref2)]),
21265
21387
  "aria-hidden": !panelExpanded.value && !__props.fixed ? 'true' : 'false',
21388
+ inert: !panelExpanded.value && !__props.fixed,
21266
21389
  onFocusout: onFocusout,
21267
21390
  onMousedown: onMouseDown,
21268
21391
  onMouseenter: _cache[0] || (_cache[0] = function ($event) {
@@ -42242,7 +42365,7 @@ var map = {
42242
42365
  "./CvDataTable/CvDataTableHeading.vue": 2335,
42243
42366
  "./CvDataTable/CvDataTableRow.vue": 6428,
42244
42367
  "./CvDataTable/CvDataTableSkeleton.vue": 2446,
42245
- "./CvDatePicker/CvDatePicker.vue": 9026,
42368
+ "./CvDatePicker/CvDatePicker.vue": 8285,
42246
42369
  "./CvDatePicker/CvDatePickerSkeleton.vue": 333,
42247
42370
  "./CvDropdown/CvDropdown.vue": 306,
42248
42371
  "./CvDropdown/CvDropdownItem.vue": 8073,
@@ -43125,6 +43248,7 @@ __webpack_require__.d(__webpack_exports__, {
43125
43248
  CvToggle: function() { return /* reexport */ CvToggle["default"]; },
43126
43249
  CvToggleSkeleton: function() { return /* reexport */ CvToggle_Skeleton["default"]; },
43127
43250
  CvTooltip: function() { return /* reexport */ CvTooltip["default"]; },
43251
+ PanelFocusTestComponent: function() { return /* reexport */ PanelFocusTestComponent; },
43128
43252
  "default": function() { return /* binding */ entry_lib; }
43129
43253
  });
43130
43254
 
@@ -43232,7 +43356,7 @@ var CvDataTableRow = __webpack_require__(6428);
43232
43356
  // EXTERNAL MODULE: ./src/components/CvDataTable/CvDataTableSkeleton.vue + 2 modules
43233
43357
  var CvDataTableSkeleton = __webpack_require__(2446);
43234
43358
  // EXTERNAL MODULE: ./src/components/CvDatePicker/CvDatePicker.vue + 15 modules
43235
- var CvDatePicker = __webpack_require__(9026);
43359
+ var CvDatePicker = __webpack_require__(8285);
43236
43360
  // EXTERNAL MODULE: ./src/components/CvDatePicker/CvDatePickerSkeleton.vue + 4 modules
43237
43361
  var CvDatePickerSkeleton = __webpack_require__(333);
43238
43362
  // EXTERNAL MODULE: ./src/components/CvDropdown/CvDropdown.vue + 2 modules
@@ -43403,6 +43527,94 @@ var CvSwitcher = __webpack_require__(7170);
43403
43527
  var CvSwitcherItem = __webpack_require__(6202);
43404
43528
  // EXTERNAL MODULE: ./src/components/CvUIShell/CvSwitcherItemLink.vue + 2 modules
43405
43529
  var CvSwitcherItemLink = __webpack_require__(1139);
43530
+ // EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
43531
+ var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(9274);
43532
+ ;// ./node_modules/thread-loader/dist/cjs.js!./node_modules/@vue/cli-plugin-babel/node_modules/babel-loader/lib/index.js??clonedRuleSet-82.use[1]!./node_modules/@vue/cli-service/node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/components/CvUIShell/__tests__/PanelFocusTestComponent.vue?vue&type=script&setup=true&lang=js
43533
+
43534
+
43535
+
43536
+
43537
+
43538
+
43539
+
43540
+ /* harmony default export */ var PanelFocusTestComponentvue_type_script_setup_true_lang_js = ({
43541
+ __name: 'PanelFocusTestComponent',
43542
+ setup: function setup(__props) {
43543
+ return function (_ctx, _cache) {
43544
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)(external_commonjs_vue_commonjs2_vue_root_Vue_.Fragment, null, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(CvHeader["default"], null, {
43545
+ "header-global": (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43546
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(CvHeaderGlobalAction["default"], {
43547
+ "data-testid": "action-button",
43548
+ "aria-label": "List links",
43549
+ "aria-controls": "links-panel",
43550
+ label: "Links"
43551
+ }, {
43552
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43553
+ return _cache[0] || (_cache[0] = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)(" Links ")]);
43554
+ }),
43555
+ _: 1
43556
+ })];
43557
+ }),
43558
+ "right-panels": (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43559
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(CvHeaderPanel["default"], {
43560
+ id: "links-panel",
43561
+ "data-testid": "links-panel"
43562
+ }, {
43563
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43564
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(CvSwitcher["default"], null, {
43565
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43566
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(CvSwitcherItem["default"], null, {
43567
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43568
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(CvSwitcherItemLink["default"], {
43569
+ href: "javascript:void(0)",
43570
+ "data-testid": "link-1",
43571
+ selected: ""
43572
+ }, {
43573
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43574
+ return _cache[1] || (_cache[1] = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)(" Selected app ")]);
43575
+ }),
43576
+ _: 1
43577
+ })];
43578
+ }),
43579
+ _: 1
43580
+ }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(CvSwitcherItem["default"], null, {
43581
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43582
+ return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createVNode)(CvSwitcherItemLink["default"], {
43583
+ href: "javascript:void(0)",
43584
+ "data-testid": "link-2"
43585
+ }, {
43586
+ default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
43587
+ return _cache[2] || (_cache[2] = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createTextVNode)(" Other app ")]);
43588
+ }),
43589
+ _: 1
43590
+ })];
43591
+ }),
43592
+ _: 1
43593
+ })];
43594
+ }),
43595
+ _: 1
43596
+ })];
43597
+ }),
43598
+ _: 1
43599
+ })];
43600
+ }),
43601
+ _: 1
43602
+ }), _cache[3] || (_cache[3] = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("input", {
43603
+ type: "text",
43604
+ "data-testid": "outer-input"
43605
+ }, null, -1))], 64);
43606
+ };
43607
+ }
43608
+ });
43609
+ ;// ./src/components/CvUIShell/__tests__/PanelFocusTestComponent.vue?vue&type=script&setup=true&lang=js
43610
+
43611
+ ;// ./src/components/CvUIShell/__tests__/PanelFocusTestComponent.vue
43612
+
43613
+
43614
+
43615
+ const __exports__ = PanelFocusTestComponentvue_type_script_setup_true_lang_js;
43616
+
43617
+ /* harmony default export */ var PanelFocusTestComponent = (__exports__);
43406
43618
  ;// ./src/index.js
43407
43619
 
43408
43620
 
@@ -43588,6 +43800,7 @@ var components = ctx.keys().map(function (k) {
43588
43800
 
43589
43801
 
43590
43802
 
43803
+
43591
43804
 
43592
43805
 
43593
43806
  ;// ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js