@carbon/vue 3.0.27 → 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.
- package/dist/carbon-vue-3.common.js +144 -23
- package/dist/carbon-vue-3.common.js.map +1 -1
- package/dist/carbon-vue-3.umd.js +144 -23
- package/dist/carbon-vue-3.umd.js.map +1 -1
- package/dist/carbon-vue-3.umd.min.js +1 -1
- package/dist/carbon-vue-3.umd.min.js.map +1 -1
- package/dist/web-types.json +18 -2
- package/package.json +1 -1
- package/src/components/CvDropdown/CvDropdown.vue +25 -5
- package/src/components/CvUIShell/CvContent.vue +7 -1
- package/src/components/CvUIShell/CvHeaderMenu.vue +2 -1
- package/src/components/CvUIShell/CvHeaderMenuItem.vue +8 -3
- package/src/components/CvUIShell/CvHeaderNav.vue +10 -1
- package/src/components/CvUIShell/CvHeaderPanel.vue +42 -0
- package/src/components/CvUIShell/CvSideNav.vue +36 -0
- package/src/components/CvUIShell/CvUIShell.stories.mdx +19 -15
package/dist/carbon-vue-3.umd.js
CHANGED
|
@@ -9572,6 +9572,13 @@ var _hoisted_7 = ["aria-disabled"];
|
|
|
9572
9572
|
});
|
|
9573
9573
|
var el = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(null);
|
|
9574
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
|
+
}
|
|
9575
9582
|
open.value = false;
|
|
9576
9583
|
}
|
|
9577
9584
|
(0,index_esm/* onClickOutside */.X2)(el, onClickOut);
|
|
@@ -9618,8 +9625,14 @@ var _hoisted_7 = ["aria-disabled"];
|
|
|
9618
9625
|
}
|
|
9619
9626
|
}
|
|
9620
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
|
+
}
|
|
9621
9635
|
open.value = false;
|
|
9622
|
-
doFocus();
|
|
9623
9636
|
}
|
|
9624
9637
|
var button = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(null);
|
|
9625
9638
|
var listBox = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(null);
|
|
@@ -9631,8 +9644,10 @@ var _hoisted_7 = ["aria-disabled"];
|
|
|
9631
9644
|
open.value = false;
|
|
9632
9645
|
} else if (ev.target === null || (_listBox$value = listBox.value) !== null && _listBox$value !== void 0 && _listBox$value.contains(ev.target)) {
|
|
9633
9646
|
// list has focus, close and return focus to dropdown
|
|
9647
|
+
if (button.value && typeof button.value.focus === 'function') {
|
|
9648
|
+
button.value.focus();
|
|
9649
|
+
}
|
|
9634
9650
|
open.value = false;
|
|
9635
|
-
doFocus();
|
|
9636
9651
|
ev.preventDefault();
|
|
9637
9652
|
}
|
|
9638
9653
|
}
|
|
@@ -9641,9 +9656,6 @@ var _hoisted_7 = ["aria-disabled"];
|
|
|
9641
9656
|
if (props.disabled) {
|
|
9642
9657
|
ev.preventDefault();
|
|
9643
9658
|
} else {
|
|
9644
|
-
open.value = !open.value;
|
|
9645
|
-
doFocus(); // open or close (Some browsers do not focus on button when clicked)
|
|
9646
|
-
|
|
9647
9659
|
var target = ev.target;
|
|
9648
9660
|
while (!target.classList.contains("".concat(settings/* carbonPrefix */.s, "--dropdown-link")) && (_dropList$value2 = dropList.value) !== null && _dropList$value2 !== void 0 && _dropList$value2.contains(target)) {
|
|
9649
9661
|
var _dropList$value2;
|
|
@@ -9652,6 +9664,14 @@ var _hoisted_7 = ["aria-disabled"];
|
|
|
9652
9664
|
if (target.classList.contains("".concat(settings/* carbonPrefix */.s, "--dropdown-link"))) {
|
|
9653
9665
|
var targetItemEl = target.parentNode;
|
|
9654
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)
|
|
9655
9675
|
}
|
|
9656
9676
|
}
|
|
9657
9677
|
}
|
|
@@ -19973,18 +19993,24 @@ var settings = __webpack_require__(7284);
|
|
|
19973
19993
|
tagType: {
|
|
19974
19994
|
type: String,
|
|
19975
19995
|
default: 'main'
|
|
19996
|
+
},
|
|
19997
|
+
id: {
|
|
19998
|
+
type: String,
|
|
19999
|
+
default: 'main-content'
|
|
19976
20000
|
}
|
|
19977
20001
|
},
|
|
19978
20002
|
setup: function setup(__props) {
|
|
19979
20003
|
return function (_ctx, _cache) {
|
|
19980
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), {
|
|
19981
|
-
|
|
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"
|
|
19982
20008
|
}, {
|
|
19983
20009
|
default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
|
|
19984
20010
|
return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderSlot)(_ctx.$slots, "default")];
|
|
19985
20011
|
}),
|
|
19986
20012
|
_: 3
|
|
19987
|
-
}, 8, ["class"]);
|
|
20013
|
+
}, 8, ["id", "class"]);
|
|
19988
20014
|
};
|
|
19989
20015
|
}
|
|
19990
20016
|
});
|
|
@@ -20488,6 +20514,7 @@ var _hoisted_2 = ["aria-label", "aria-labelledby"];
|
|
|
20488
20514
|
ref_key: "el",
|
|
20489
20515
|
ref: el,
|
|
20490
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",
|
|
20491
20518
|
onMouseenter: _cache[1] || (_cache[1] = function ($event) {
|
|
20492
20519
|
return doHoverToggle(true);
|
|
20493
20520
|
}),
|
|
@@ -20499,9 +20526,9 @@ var _hoisted_2 = ["aria-label", "aria-labelledby"];
|
|
|
20499
20526
|
"aria-expanded": data.expanded ? 'true' : 'false',
|
|
20500
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")),
|
|
20501
20528
|
href: "javascript:void(0)",
|
|
20502
|
-
role: "menuitem",
|
|
20503
20529
|
tabindex: "0",
|
|
20504
20530
|
"aria-label": _ctx.$attrs.ariaLabel,
|
|
20531
|
+
role: "button",
|
|
20505
20532
|
onClick: doToggle,
|
|
20506
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"])],
|
|
20507
20534
|
onKeyup: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withKeys)((0,external_commonjs_vue_commonjs2_vue_root_Vue_.withModifiers)(doToggle, ["prevent"]), ["space"]),
|
|
@@ -20724,7 +20751,10 @@ var cvLink = __webpack_require__(6272);
|
|
|
20724
20751
|
|
|
20725
20752
|
|
|
20726
20753
|
|
|
20727
|
-
var _hoisted_1 =
|
|
20754
|
+
var _hoisted_1 = {
|
|
20755
|
+
class: "cv-header-menu-item",
|
|
20756
|
+
role: "none"
|
|
20757
|
+
};
|
|
20728
20758
|
|
|
20729
20759
|
|
|
20730
20760
|
|
|
@@ -20738,7 +20768,7 @@ var _hoisted_1 = ["role"];
|
|
|
20738
20768
|
},
|
|
20739
20769
|
role: {
|
|
20740
20770
|
type: String,
|
|
20741
|
-
default:
|
|
20771
|
+
default: 'menuitem'
|
|
20742
20772
|
}
|
|
20743
20773
|
}, cvLink/* props */.xk),
|
|
20744
20774
|
setup: function setup(__props) {
|
|
@@ -20748,14 +20778,15 @@ var _hoisted_1 = ["role"];
|
|
|
20748
20778
|
var activePage = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(function () {
|
|
20749
20779
|
return props.active && props.ariaCurrent !== 'page';
|
|
20750
20780
|
});
|
|
20781
|
+
var tabindex = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(function () {
|
|
20782
|
+
return props.role === 'menuitem' ? '0' : undefined;
|
|
20783
|
+
});
|
|
20751
20784
|
return function (_ctx, _cache) {
|
|
20752
|
-
return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("li", {
|
|
20753
|
-
class: "cv-header-menu-item",
|
|
20754
|
-
role: __props.role
|
|
20755
|
-
}, [((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)), {
|
|
20756
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)],
|
|
20757
|
-
|
|
20758
|
-
|
|
20787
|
+
"aria-current": __props.ariaCurrent,
|
|
20788
|
+
role: __props.role,
|
|
20789
|
+
tabindex: tabindex.value
|
|
20759
20790
|
}), {
|
|
20760
20791
|
default: (0,external_commonjs_vue_commonjs2_vue_root_Vue_.withCtx)(function () {
|
|
20761
20792
|
return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("span", {
|
|
@@ -20763,7 +20794,7 @@ var _hoisted_1 = ["role"];
|
|
|
20763
20794
|
}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderSlot)(_ctx.$slots, "default")], 2)];
|
|
20764
20795
|
}),
|
|
20765
20796
|
_: 3
|
|
20766
|
-
}, 16, ["class", "aria-current"
|
|
20797
|
+
}, 16, ["class", "aria-current", "role", "tabindex"]))]);
|
|
20767
20798
|
};
|
|
20768
20799
|
}
|
|
20769
20800
|
});
|
|
@@ -20855,17 +20886,27 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
20855
20886
|
"default": function() { return /* binding */ CvHeaderNav; }
|
|
20856
20887
|
});
|
|
20857
20888
|
|
|
20889
|
+
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.object.assign.js
|
|
20890
|
+
var es_object_assign = __webpack_require__(9218);
|
|
20858
20891
|
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
|
|
20859
20892
|
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(9274);
|
|
20860
20893
|
// EXTERNAL MODULE: ./src/global/settings.js
|
|
20861
20894
|
var settings = __webpack_require__(7284);
|
|
20862
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
|
|
20863
20896
|
|
|
20864
|
-
var _hoisted_1 = ["ariaLabeldBy"];
|
|
20865
20897
|
|
|
20866
|
-
|
|
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__, {
|
|
20867
20904
|
__name: 'CvHeaderNav',
|
|
20868
20905
|
props: {
|
|
20906
|
+
ariaLabel: {
|
|
20907
|
+
type: String,
|
|
20908
|
+
default: undefined
|
|
20909
|
+
},
|
|
20869
20910
|
ariaLabelledBy: {
|
|
20870
20911
|
type: String,
|
|
20871
20912
|
default: undefined
|
|
@@ -20878,11 +20919,13 @@ var _hoisted_1 = ["ariaLabeldBy"];
|
|
|
20878
20919
|
}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementVNode)("ul", {
|
|
20879
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")),
|
|
20880
20921
|
role: "menubar",
|
|
20881
|
-
|
|
20922
|
+
"aria-orientation": "horizontal",
|
|
20923
|
+
"aria-label": __props.ariaLabel || _ctx.$attrs['aria-label'],
|
|
20924
|
+
"aria-labelledby": __props.ariaLabelledBy || _ctx.$attrs['aria-labelledby']
|
|
20882
20925
|
}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1)], 2);
|
|
20883
20926
|
};
|
|
20884
20927
|
}
|
|
20885
|
-
});
|
|
20928
|
+
}));
|
|
20886
20929
|
;// ./src/components/CvUIShell/CvHeaderNav.vue?vue&type=script&setup=true&lang=js
|
|
20887
20930
|
|
|
20888
20931
|
;// ./src/components/CvUIShell/CvHeaderNav.vue
|
|
@@ -20909,6 +20952,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
20909
20952
|
|
|
20910
20953
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js + 2 modules
|
|
20911
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);
|
|
20912
20959
|
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
|
|
20913
20960
|
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(9274);
|
|
20914
20961
|
// EXTERNAL MODULE: ./src/global/settings.js
|
|
@@ -20918,7 +20965,9 @@ var event_bus = __webpack_require__(9294);
|
|
|
20918
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
|
|
20919
20966
|
|
|
20920
20967
|
|
|
20921
|
-
|
|
20968
|
+
|
|
20969
|
+
|
|
20970
|
+
var _hoisted_1 = ["id", "aria-hidden", "inert"];
|
|
20922
20971
|
|
|
20923
20972
|
|
|
20924
20973
|
|
|
@@ -21000,6 +21049,29 @@ var _hoisted_1 = ["id", "aria-hidden"];
|
|
|
21000
21049
|
}, function () {
|
|
21001
21050
|
panelExpanded.value = props.expanded;
|
|
21002
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
|
+
}
|
|
21003
21075
|
var emit = __emit;
|
|
21004
21076
|
(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(panelExpanded, function (current) {
|
|
21005
21077
|
emit('update:expanded', current);
|
|
@@ -21007,6 +21079,18 @@ var _hoisted_1 = ["id", "aria-hidden"];
|
|
|
21007
21079
|
id: props.id,
|
|
21008
21080
|
expanded: current
|
|
21009
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
|
+
});
|
|
21010
21094
|
});
|
|
21011
21095
|
return function (_ctx, _cache) {
|
|
21012
21096
|
return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createElementBlock)("div", {
|
|
@@ -21015,6 +21099,7 @@ var _hoisted_1 = ["id", "aria-hidden"];
|
|
|
21015
21099
|
ref: el,
|
|
21016
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)]),
|
|
21017
21101
|
"aria-hidden": !panelExpanded.value ? 'true' : 'false',
|
|
21102
|
+
inert: !panelExpanded.value,
|
|
21018
21103
|
onFocusout: onFocusout,
|
|
21019
21104
|
onMousedown: onMouseDown
|
|
21020
21105
|
}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.renderSlot)(_ctx.$slots, "default")], 42, _hoisted_1);
|
|
@@ -21047,6 +21132,10 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
21047
21132
|
|
|
21048
21133
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js + 2 modules
|
|
21049
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);
|
|
21050
21139
|
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.string.fixed.js
|
|
21051
21140
|
var es_string_fixed = __webpack_require__(9607);
|
|
21052
21141
|
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
|
|
@@ -21145,7 +21234,9 @@ var event_bus = __webpack_require__(9294);
|
|
|
21145
21234
|
|
|
21146
21235
|
|
|
21147
21236
|
|
|
21148
|
-
|
|
21237
|
+
|
|
21238
|
+
|
|
21239
|
+
var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden", "inert"];
|
|
21149
21240
|
|
|
21150
21241
|
|
|
21151
21242
|
|
|
@@ -21223,6 +21314,30 @@ var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden"
|
|
|
21223
21314
|
}, function () {
|
|
21224
21315
|
panelExpanded.value = props.expanded;
|
|
21225
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
|
+
}
|
|
21226
21341
|
var emit = __emit;
|
|
21227
21342
|
var isPanelExpanded = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(function () {
|
|
21228
21343
|
return panelExpanded.value || expandedViaHoverState.value;
|
|
@@ -21233,6 +21348,11 @@ var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden"
|
|
|
21233
21348
|
id: props.id,
|
|
21234
21349
|
expanded: current
|
|
21235
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
|
+
});
|
|
21236
21356
|
});
|
|
21237
21357
|
var isChildOfHeader = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(function () {
|
|
21238
21358
|
return !!bus.value;
|
|
@@ -21265,6 +21385,7 @@ var CvSideNavvue_type_script_setup_true_lang_js_hoisted_1 = ["id", "aria-hidden"
|
|
|
21265
21385
|
ref: el,
|
|
21266
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)]),
|
|
21267
21387
|
"aria-hidden": !panelExpanded.value && !__props.fixed ? 'true' : 'false',
|
|
21388
|
+
inert: !panelExpanded.value && !__props.fixed,
|
|
21268
21389
|
onFocusout: onFocusout,
|
|
21269
21390
|
onMousedown: onMouseDown,
|
|
21270
21391
|
onMouseenter: _cache[0] || (_cache[0] = function ($event) {
|