yanzhen-design-vue
Version:
68 lines (67 loc) • 2.37 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const utilsVue = require("@yanzhen-libs/utils-vue");
const utils = require("@yanzhen-libs/utils");
const selectCommonProps = require("../../../select/src/hooks/select-common-props.cjs");
require("../constants/index.cjs");
const option = require("../constants/option.cjs");
function cascaderOptionsProps() {
return selectCommonProps.optionsProps([...option.cascaderOptionType]);
}
function useCascaderItemProps() {
return utilsVue.buildProps({
value: {
type: utilsVue.definePropType([String, Number])
},
avatar: String,
label: String,
type: String
});
}
const cascaderMap = /* @__PURE__ */ new WeakMap();
function useCascaderOptions(props) {
const key = utilsVue.useProp("options");
if (cascaderMap.has(key)) {
return cascaderMap.get(key);
}
const options = utilsVue.useOptions([...option.cascaderOptionType]);
cascaderMap.set(key, options);
function handleOptionsProxy(target, mode = "city") {
const childrenKey = "children";
return new Proxy(target, {
get(target2, p, receiver) {
const value = Reflect.get(target2, p, receiver);
if (utils.isNumeral(p)) {
return new Proxy(value, {
get(target3, p2, receiver2) {
if (childrenKey === p2) {
let children = target3[childrenKey];
switch (mode) {
case "city":
children = target3[childrenKey];
if (props.mode === "province") return [];
if (!utils.isEmptyArray(children)) {
return handleOptionsProxy(children, "district");
}
break;
case "district":
children = target3[childrenKey];
if (props.mode === "city") return [];
break;
}
return children;
}
return Reflect.get(target3, p2, receiver2);
}
});
}
return value;
}
});
}
return handleOptionsProxy(vue.unref(options.value));
}
exports.cascaderOptionsProps = cascaderOptionsProps;
exports.useCascaderItemProps = useCascaderItemProps;
exports.useCascaderOptions = useCascaderOptions;