@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
250 lines (202 loc) • 8.56 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _shared = require("@fe6/shared");
var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
var _useConfigInject2 = _interopRequireDefault(require("../../_util/hooks/useConfigInject"));
var _Item = _interopRequireDefault(require("./Item"));
var _utils = require("./utils");
var _props = require("./props");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var _default = (0, _vue.defineComponent)({
name: 'ACheckboxCascaderBox',
inheritAttrs: false,
__ANT_CHECKBOX: true,
props: _props.boxProps,
emits: ['update:value', 'change'],
setup: function setup(props, _ref) {
var emit = _ref.emit;
var _useConfigInject = (0, _useConfigInject2.default)('checkbox-cascader', props),
prefixClsNew = _useConfigInject.prefixCls;
var theFields = (0, _vue.computed)(function () {
return _extends(_extends({}, _utils.defaultFields), props.fieldNames);
});
var theValue = (0, _vue.ref)({});
var theOneIdx = (0, _vue.ref)(-1);
var theTwoIdx = (0, _vue.ref)(-1);
var goEmit = function goEmit() {
emit('update:value', theValue.value);
emit('change', theValue.value);
};
var oneChange = function oneChange(status, item) {
if (status) {
if (!(0, _shared.hasOwn)(theValue.value, item[theFields.value.value])) {
theValue.value[item[theFields.value.value]] = {};
}
var theChild = item[theFields.value.children].slice();
if (theChild.length > 0) {
theChild.forEach(function (twoItem) {
var _a;
if (!(0, _shared.hasOwn)((_a = theValue.value) === null || _a === void 0 ? void 0 : _a[item[theFields.value.value]], twoItem[theFields.value.value])) {
theValue.value[item[theFields.value.value]][twoItem[theFields.value.value]] = {};
}
theValue.value[item[theFields.value.value]][twoItem[theFields.value.value]] = twoItem[theFields.value.children].map(function (threeItem) {
return String(threeItem[theFields.value.value]);
});
});
}
} else {
delete theValue.value[item[theFields.value.value]];
}
goEmit();
};
var openOne = function openOne(itemIdx) {
theOneIdx.value = itemIdx;
theTwoIdx.value = -1;
};
var twoChange = function twoChange(status, item) {
var _a;
var theOneCode = props.options[theOneIdx.value][theFields.value.value];
if (status) {
if (!(0, _shared.hasOwn)(theValue.value, theOneCode)) {
theValue.value[theOneCode] = {};
}
if (!(0, _shared.hasOwn)((_a = theValue.value) === null || _a === void 0 ? void 0 : _a.theOneCode, item[theFields.value.value])) {
theValue.value[theOneCode][item[theFields.value.value]] = [];
}
theValue.value[theOneCode][item[theFields.value.value]] = item[theFields.value.children].map(function (threeItem) {
return String(threeItem[theFields.value.value]);
});
} else {
delete theValue.value[theOneCode][item[theFields.value.value]];
if ((0, _shared.isEmpty)(theValue.value[theOneCode])) {
delete theValue.value[theOneCode];
}
}
goEmit();
};
var openTwo = function openTwo(itemIdx) {
theTwoIdx.value = itemIdx;
};
var threeChange = function threeChange(status, item) {
var _a, _b;
var theOneCode = props.options[theOneIdx.value][theFields.value.value];
var theTwoCode = props.options[theOneIdx.value][theFields.value.children][theTwoIdx.value][theFields.value.value];
if (status) {
if (!(0, _shared.hasOwn)(theValue.value, theOneCode)) {
theValue.value[theOneCode] = {};
}
if (!((_b = (_a = theValue.value) === null || _a === void 0 ? void 0 : _a[theOneCode]) === null || _b === void 0 ? void 0 : _b[theTwoCode])) {
theValue.value[theOneCode][theTwoCode] = [];
}
theValue.value[theOneCode][theTwoCode].push(String(item[theFields.value.value]));
} else {
var theIdx = theValue.value[theOneCode][theTwoCode].findIndex(function (threeCode) {
return threeCode === String(item[theFields.value.value]);
});
if (theIdx > -1) {
theValue.value[theOneCode][theTwoCode].splice(theIdx, 1);
if (theValue.value[theOneCode][theTwoCode].length === 0) {
delete theValue.value[theOneCode][theTwoCode];
}
if ((0, _shared.isEmpty)(theValue.value[theOneCode])) {
delete theValue.value[theOneCode];
}
}
}
goEmit();
};
var allChange = function allChange(status) {
if (status) {
props.options.forEach(function (oneItem) {
theValue.value[oneItem[theFields.value.value]] = {};
if ((0, _shared.hasOwn)(oneItem, theFields.value.children) && oneItem[theFields.value.children].length > 0) {
oneItem[theFields.value.children].forEach(function (twoItem) {
theValue.value[oneItem[theFields.value.value]][twoItem[theFields.value.value]] = {};
if ((0, _shared.hasOwn)(twoItem, theFields.value.children) && twoItem[theFields.value.children].length > 0) {
theValue.value[oneItem[theFields.value.value]][twoItem[theFields.value.value]] = twoItem[theFields.value.children].map(function (threeItem) {
return String(threeItem[theFields.value.value]);
});
}
});
}
});
} else {
theValue.value = {};
}
goEmit();
};
(0, _vue.watchEffect)(function () {
if (props.value && !(0, _shared.isEmpty)(props.value)) {
theValue.value = (0, _cloneDeep.default)(props.value);
}
});
return {
prefixClsNew: prefixClsNew,
theFields: theFields,
theValue: theValue,
allChange: allChange,
openOne: openOne,
oneChange: oneChange,
theOneIdx: theOneIdx,
theTwoIdx: theTwoIdx,
twoChange: twoChange,
openTwo: openTwo,
threeChange: threeChange
};
},
render: function render() {
var oneCode = this.theOneIdx > -1 ? this.options[this.theOneIdx][this.theFields.value] : -1;
var twoCode = this.theOneIdx > -1 && this.theTwoIdx > -1 ? this.options[this.theOneIdx][this.theFields.children][this.theTwoIdx][this.theFields.value] : -1;
var twoItem = null;
if (this.theOneIdx > -1) {
twoItem = (0, _vue.createVNode)(_Item.default, {
"showArrow": true,
"preWidth": this.preWidth,
"preHeight": this.preHeight,
"options": this.theOneIdx > -1 ? this.options[this.theOneIdx][this.theFields.children] : [],
"fieldNames": this.theFields,
"onChange": this.twoChange,
"onClick": this.openTwo,
"value": this.theValue,
"level": 2,
"oneCode": oneCode,
"twoCode": twoCode
}, null);
}
var threeItem = null;
if (this.theTwoIdx > -1) {
threeItem = (0, _vue.createVNode)(_Item.default, {
"preWidth": this.preWidth,
"preHeight": this.preHeight,
"options": this.theOneIdx > -1 && this.theTwoIdx > -1 ? this.options[this.theOneIdx][this.theFields.children][this.theTwoIdx][this.theFields.children] : [],
"fieldNames": this.theFields,
"onChange": this.threeChange,
"value": this.theValue,
"level": 3,
"oneCode": oneCode,
"twoCode": twoCode
}, null);
}
return (0, _vue.createVNode)("div", {
"class": this.prefixClsNew
}, [(0, _vue.createVNode)(_Item.default, {
"showArrow": true,
"preWidth": this.preWidth,
"preHeight": this.preHeight,
"options": this.options,
"fieldNames": this.theFields,
"onChange": this.oneChange,
"onClick": this.openOne,
"onAllChange": this.allChange,
"value": this.theValue,
"level": 1,
"oneCode": oneCode
}, null), twoItem, threeItem]);
}
});
exports.default = _default;