layui-vue/es/selectOption/index2.js
2022-11-14 11:59:26 +08:00

81 lines
2.8 KiB
JavaScript

import { w as withInstall } from "../badge/index2.js";
import { defineComponent, inject, ref, computed, withDirectives, openBlock, createElementBlock, normalizeClass, unref, createBlock, isRef, createCommentVNode, renderSlot, createTextVNode, toDisplayString, vShow } from "vue";
import { a as _sfc_main$1 } from "../checkbox/index2.js";
const __default__ = {
name: "LaySelectOption"
};
const _sfc_main = defineComponent({
...__default__,
props: {
label: { default: "" },
value: null,
disabled: { type: Boolean, default: false },
keyword: { default: "" }
},
setup(__props) {
const props = __props;
const searchValue = inject("searchValue");
const selectRef = inject("selectRef");
const selectedValue = inject("selectedValue");
const multiple = inject("multiple");
const checkboxRef = ref();
const handleSelect = () => {
var _a;
if (multiple.value) {
if (!props.disabled) {
(_a = checkboxRef.value) == null ? void 0 : _a.toggle();
}
} else {
if (!props.disabled) {
selectRef.value.hide();
selectedValue.value = props.value;
}
}
};
const selected = computed(() => {
if (multiple.value) {
return selectedValue.value.indexOf(props.value) != -1;
} else {
return selectedValue.value === props.value;
}
});
const display = computed(() => {
var _a, _b;
return ((_a = props.keyword) == null ? void 0 : _a.toString().indexOf(searchValue.value)) > -1 || ((_b = props.label) == null ? void 0 : _b.toString().indexOf(searchValue.value)) > -1;
});
const classes = computed(() => {
return [
"layui-select-option",
{
"layui-this": selected.value,
"layui-disabled": props.disabled
}
];
});
return (_ctx, _cache) => {
return withDirectives((openBlock(), createElementBlock("dd", {
class: normalizeClass(unref(classes)),
onClick: handleSelect
}, [
unref(multiple) ? (openBlock(), createBlock(_sfc_main$1, {
key: 0,
skin: "primary",
ref_key: "checkboxRef",
ref: checkboxRef,
modelValue: unref(selectedValue),
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(selectedValue) ? selectedValue.value = $event : null),
disabled: __props.disabled,
value: __props.value
}, null, 8, ["modelValue", "disabled", "value"])) : createCommentVNode("", true),
renderSlot(_ctx.$slots, "default", {}, () => [
createTextVNode(toDisplayString(__props.label), 1)
])
], 2)), [
[vShow, unref(display)]
]);
};
}
});
const component = withInstall(_sfc_main);
export { _sfc_main as _, component as c };