@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
71 lines (66 loc) • 2.22 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
require('../../../hooks/index.js');
require('../../../utils/index.js');
var optionGroup = require('./option-group.js');
var tokens = require('./tokens.js');
var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
var index = require('../../../hooks/use-namespace/index.js');
var error = require('../../../utils/error.js');
const __default__ = vue.defineComponent({
name: "VsOptionGroup"
});
const _sfc_main = vue.defineComponent({
...__default__,
props: optionGroup.optionGroupProps,
setup(__props) {
const ns = index.useNamespace("option-group");
const select = vue.inject(tokens.selectContextKey);
if (!select) {
error.throwError(
"Option Group",
"`option-group` component must be called inside `select` component"
);
}
const visible = vue.ref(true);
const options = vue.ref(/* @__PURE__ */ new Map());
const optionsArray = vue.computed(() => Array.from(options.value.values()));
vue.watch(
() => select.queryChange,
() => {
visible.value = optionsArray.value.some((option) => option.visible === true);
},
{ flush: "post" }
);
vue.provide(tokens.optionGroupRegisterKey, (option) => {
options.value.set(option.value, option);
return {
unregister() {
options.value.delete(option.value);
}
};
});
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock(
"div",
{
class: vue.normalizeClass([vue.unref(ns).b(), vue.unref(ns).is("hidden", !visible.value)])
},
[
vue.createElementVNode(
"h5",
null,
vue.toDisplayString(_ctx.label),
1
),
vue.renderSlot(_ctx.$slots, "default")
],
2
);
};
}
});
var OptionGroup = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "/home/runner/work/vuesax-alpha/vuesax-alpha/packages/components/select/src/option-group.vue"]]);
exports["default"] = OptionGroup;
//# sourceMappingURL=option-group2.js.map