UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

250 lines (202 loc) 8.56 kB
"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;