tdesign-vue
Version:
333 lines (325 loc) • 12.8 kB
JavaScript
/**
* tdesign v1.15.0
* (c) 2026 tdesign
* @license MIT
*/
;
Object.defineProperty(exports, '__esModule', { value: true });
var helper = require('../_chunks/dep-4009cfe4.js');
var _typeof = require('@babel/runtime/helpers/typeof');
var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
var VueCompositionAPI = require('@vue/composition-api');
var utils_helper = require('../utils/helper.js');
var checkbox_checkbox = require('./checkbox.js');
var checkbox_checkboxGroupProps = require('./checkbox-group-props.js');
var checkbox_constants = require('./constants.js');
var checkbox_store = require('./store.js');
var intersection = require('../_chunks/dep-993ef18d.js');
var isUndefined = require('../_chunks/dep-721fcdf6.js');
var isObject = require('../_chunks/dep-2bc87cc8.js');
var hooks_slots = require('../hooks/slots.js');
var hooks_useConfig = require('../hooks/useConfig.js');
var hooks_useVModel = require('../hooks/useVModel.js');
require('@babel/runtime/helpers/objectWithoutProperties');
require('@babel/runtime/helpers/defineProperty');
require('../_chunks/dep-9c5b91d3.js');
require('../_chunks/dep-9a74c2be.js');
require('../_chunks/dep-689d381f.js');
require('../_chunks/dep-3b2292ce.js');
require('../_chunks/dep-10fcb46d.js');
require('../_chunks/dep-803744d9.js');
require('../_chunks/dep-ba7f5924.js');
require('../_chunks/dep-84027b7f.js');
require('../_chunks/dep-49400b00.js');
require('../_chunks/dep-f1081d8e.js');
require('./props.js');
require('./hooks/useKeyboardEvent.js');
require('../_common/js/common.js');
require('../hooks/useFormDisabled.js');
require('../hooks/useElementLazyRender.js');
require('../_common/js/utils/observe.js');
require('../utils/render-tnode.js');
require('@babel/runtime/helpers/readOnlyError');
require('vue');
require('../_chunks/dep-2c592e99.js');
require('@babel/runtime/helpers/classCallCheck');
require('@babel/runtime/helpers/createClass');
require('../_chunks/dep-d7516e38.js');
require('../_chunks/dep-7c84d9a0.js');
require('../_chunks/dep-733a2279.js');
require('../_chunks/dep-8d206316.js');
require('../_chunks/dep-d844c9ed.js');
require('../_chunks/dep-f020448d.js');
require('../_chunks/dep-f77d6ad5.js');
require('../_chunks/dep-f5b14344.js');
require('../_chunks/dep-36c2788b.js');
require('../_chunks/dep-fa353fbb.js');
require('../_chunks/dep-efe55b82.js');
require('../_chunks/dep-010db548.js');
require('../config-provider/useConfig.js');
require('../_chunks/dep-8eddb350.js');
require('../_common/js/global-config/default-config.js');
require('../_common/js/global-config/locale/zh_CN.js');
require('../_chunks/dep-0c37520c.js');
require('../_chunks/dep-c13dcbfd.js');
require('dayjs');
require('../_chunks/dep-6f4e680e.js');
require('../_chunks/dep-bb0ececf.js');
require('../_chunks/dep-6eba4d23.js');
require('../_chunks/dep-9dae8101.js');
require('../_chunks/dep-c05a9033.js');
require('../_chunks/dep-7da70ee1.js');
require('../_chunks/dep-124386d4.js');
require('../_chunks/dep-d66ab3a4.js');
require('../_chunks/dep-d4d8c513.js');
require('../_common/js/global-config/t.js');
require('../_chunks/dep-a2217d56.js');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
var _CheckboxGroup = VueCompositionAPI.defineComponent({
name: "TCheckboxGroup",
props: checkbox_checkboxGroupProps["default"],
setup: function setup(props2) {
var COMPONENT_NAME = hooks_useConfig.usePrefixClass("checkbox-group");
var _createCheckboxStore = checkbox_store.createCheckboxStore(),
checkboxStore = _createCheckboxStore.checkboxStore,
storeKey = _createCheckboxStore.storeKey;
checkboxStore.init();
var isArray = Array.isArray;
var _toRefs = VueCompositionAPI.toRefs(props2),
value = _toRefs.value,
disabled = _toRefs.disabled,
name = _toRefs.name,
options = _toRefs.options;
var _useVModel = hooks_useVModel.useVModel(value, props2.defaultValue, props2.onChange),
_useVModel2 = _slicedToArray__default["default"](_useVModel, 2),
innerValue = _useVModel2[0],
setInnerValue = _useVModel2[1];
var optionList = VueCompositionAPI.ref([]);
var intersectionLen = VueCompositionAPI.computed(function () {
if (!isArray(innerValue.value)) return 0;
var values = optionList.value.map(function (item) {
return item.value;
});
var n = intersection.intersection(innerValue.value, values);
return n.length;
});
var isCheckAll = VueCompositionAPI.computed(function () {
var optionItems = optionList.value.filter(function (item) {
return !item.disabled && !item.checkAll;
}).map(function (t) {
return t.value;
});
var intersectionValues = intersection.intersection(optionItems, innerValue.value);
return intersectionValues.length === optionItems.length;
});
var indeterminate = VueCompositionAPI.computed(function () {
return !isCheckAll.value && intersectionLen.value < optionList.value.length && intersectionLen.value !== 0;
});
var maxExceeded = VueCompositionAPI.computed(function () {
return !isUndefined.isUndefined(props2.max) && innerValue.value.length === props2.max;
});
VueCompositionAPI.watch([disabled, maxExceeded, name], function (_ref) {
var _ref2 = _slicedToArray__default["default"](_ref, 3),
disabled2 = _ref2[0],
maxExceeded2 = _ref2[1],
checkboxName = _ref2[2];
checkboxStore.updateCheckbox({
disabled: disabled2,
maxExceeded: maxExceeded2,
checkboxName: checkboxName
});
});
VueCompositionAPI.watch([options], function () {
VueCompositionAPI.nextTick(function () {
checkboxStore.updateCheckbox({
disabled: disabled.value,
maxExceeded: maxExceeded.value,
checkboxName: name.value
});
});
});
VueCompositionAPI.onMounted(function () {
checkboxStore.updateCheckbox({
disabled: disabled.value,
maxExceeded: maxExceeded.value,
checkboxName: name.value
});
});
VueCompositionAPI.watchEffect(function () {
if (!props2.options) return [];
optionList.value = props2.options.map(function (item) {
return isObject.isObject(item) ? item : {
label: String(item),
value: item
};
});
});
var getAllCheckboxValue = function getAllCheckboxValue() {
var val = /* @__PURE__ */new Set();
for (var i = 0, len = optionList.value.length; i < len; i++) {
var item = optionList.value[i];
if (item.checkAll) continue;
if (item.disabled) continue;
val.add(item.value);
if (maxExceeded.value) break;
}
return _toConsumableArray__default["default"](val);
};
var onCheckAllChange = function onCheckAllChange(checked, context) {
var value2 = checked ? getAllCheckboxValue() : [];
setInnerValue(value2, {
e: context.e,
type: checked ? "check" : "uncheck",
current: void 0,
option: void 0
});
};
var handleCheckboxChange = function handleCheckboxChange(data) {
var currentValue = data.option.value;
if (!isArray(innerValue.value)) {
console.warn("TDesign CheckboxGroup Warn: `value` must be an array, instead of ".concat(_typeof__default["default"](innerValue.value)));
return;
}
var val = _toConsumableArray__default["default"](innerValue.value);
if (data.checked) {
val.push(currentValue);
} else {
var i = val.indexOf(currentValue);
val.splice(i, 1);
}
setInnerValue(val, {
e: data.e,
current: data.option.value,
option: data.option,
type: data.checked ? "check" : "uncheck"
});
};
var onCheckedChange = function onCheckedChange(p) {
var checked = p.checked,
checkAll = p.checkAll,
e = p.e;
if (checkAll) {
onCheckAllChange(checked, {
e: e
});
} else {
handleCheckboxChange(p);
}
};
var getChildComponentSlots = hooks_slots.useChildComponentSlots();
var getOptionListBySlots = function getOptionListBySlots() {
var nodes = getChildComponentSlots("Checkbox");
var arr = [];
nodes === null || nodes === void 0 || nodes.forEach(function (node) {
var option = node.componentOptions.propsData;
if (!option) return;
if (option["check-all"] === "" || option["check-all"] === true) {
option.checkAll = true;
}
arr.push(option);
});
return arr;
};
VueCompositionAPI.provide(checkbox_constants.CheckboxGroupInjectionKey, VueCompositionAPI.computed(function () {
return {
handleCheckboxChange: handleCheckboxChange,
onCheckedChange: onCheckedChange
};
}));
VueCompositionAPI.watch(function () {
return _toConsumableArray__default["default"](innerValue.value);
}, function (val, oldValue) {
VueCompositionAPI.nextTick(function () {
checkboxStore.updateChecked({
checked: val,
oldChecked: oldValue,
isCheckAll: isCheckAll.value,
indeterminate: indeterminate.value
});
});
}, {
immediate: true
});
VueCompositionAPI.watch([isCheckAll, indeterminate, options], function (_ref3) {
var _ref4 = _slicedToArray__default["default"](_ref3, 2),
isCheckAll2 = _ref4[0],
indeterminate2 = _ref4[1];
VueCompositionAPI.nextTick(function () {
checkboxStore.updateChecked({
checked: innerValue.value,
isCheckAll: isCheckAll2,
indeterminate: indeterminate2
});
});
});
var _addStoreKeyToCheckbox = function addStoreKeyToCheckbox(nodes) {
if (!nodes) return;
for (var i = 0, len = nodes.length; i < len; i++) {
var _vNode$children;
var vNode = nodes[i];
var componentName = utils_helper.getVNodeComponentName(vNode);
if (vNode.componentOptions && componentName && componentName === utils_helper.getVueComponentName(checkbox_checkbox["default"])) {
vNode.componentOptions.propsData.storeKey = storeKey;
}
if ((_vNode$children = vNode.children) !== null && _vNode$children !== void 0 && _vNode$children.length) {
_addStoreKeyToCheckbox(vNode.children);
}
}
};
return {
storeKey: storeKey,
optionList: optionList,
innerValue: innerValue,
COMPONENT_NAME: COMPONENT_NAME,
getOptionListBySlots: getOptionListBySlots,
addStoreKeyToCheckbox: _addStoreKeyToCheckbox
};
},
render: function render() {
var _this$options,
_this = this;
var h = arguments[0];
var children = null;
if ((_this$options = this.options) !== null && _this$options !== void 0 && _this$options.length) {
var _this$optionList;
children = (_this$optionList = this.optionList) === null || _this$optionList === void 0 ? void 0 : _this$optionList.map(function (option, index) {
var _option$value, _this$innerValue;
return h(checkbox_checkbox["default"], helper.helper([{
"key": (_option$value = option.value) !== null && _option$value !== void 0 ? _option$value : index,
"attrs": {
"lazyLoad": _this.lazyLoad
}
}, {
"props": option
}, {
"attrs": {
"index": index,
"data": option,
"checked": ((_this$innerValue = _this.innerValue) === null || _this$innerValue === void 0 ? void 0 : _this$innerValue.includes(option.value)) || false,
"storeKey": _this.storeKey
},
"scopedSlots": _this.$scopedSlots
}]));
});
} else {
var _this$$scopedSlots$de, _this$$scopedSlots;
var nodes = (_this$$scopedSlots$de = (_this$$scopedSlots = this.$scopedSlots)["default"]) === null || _this$$scopedSlots$de === void 0 ? void 0 : _this$$scopedSlots$de.call(_this$$scopedSlots, null);
this.optionList = this.getOptionListBySlots();
this.addStoreKeyToCheckbox(nodes);
children = nodes;
}
return h("div", {
"class": this.COMPONENT_NAME,
"attrs": {
"role": "group",
"aria-label": "checkbox-group"
}
}, [children]);
}
});
exports["default"] = _CheckboxGroup;
//# sourceMappingURL=group.js.map