UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

187 lines (179 loc) 8.88 kB
/** * xdesign v1.0.6 * (c) 2023 xdesign * @license MIT */ 'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _slicedToArray = require('@babel/runtime/helpers/slicedToArray'); var _defineProperty = require('@babel/runtime/helpers/defineProperty'); var vue = require('vue'); var checkbox_props = require('./props.js'); var hooks_useVModel = require('../hooks/useVModel.js'); var hooks_useRipple = require('../hooks/useRipple.js'); var hooks_tnode = require('../hooks/tnode.js'); var hooks_useConfig = require('../hooks/useConfig.js'); var checkbox_constants = require('./constants.js'); var checkbox_hooks_useCheckboxLazyLoad = require('./hooks/useCheckboxLazyLoad.js'); var checkbox_hooks_useKeyboard = require('./hooks/useKeyboard.js'); var hooks_useDisabled = require('../hooks/useDisabled.js'); require('lodash/kebabCase'); require('../hooks/useKeepAnimation.js'); require('../config-provider/useConfig.js'); require('lodash/isFunction'); require('lodash/cloneDeep'); require('lodash/isString'); require('../config-provider/context.js'); require('lodash/mergeWith'); require('lodash/merge'); require('../_common/js/global-config/default-config.js'); require('../_common/js/global-config/locale/en_US.js'); require('../_chunks/dep-8d10b59f.js'); require('lodash/isArray'); require('../utils/set-style.js'); require('lodash/camelCase'); require('../utils/render-tnode.js'); require('lodash/isEmpty'); require('lodash/isObject'); require('../_common/js/utils/observe.js'); require('lodash/isBoolean'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray); var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var _Checkbox = vue.defineComponent({ name: "XCheckbox", props: _objectSpread(_objectSpread({}, checkbox_props["default"]), {}, { needRipple: Boolean, stopLabelTrigger: Boolean, index: Number, data: Object }), setup: function setup(props2) { var labelRef = vue.ref(); if (props2.needRipple) { hooks_useRipple["default"](labelRef); } var _useCommonClassName = hooks_useConfig.useCommonClassName(), STATUS = _useCommonClassName.STATUS; var _toRefs = vue.toRefs(props2), checked = _toRefs.checked, modelValue = _toRefs.modelValue, lazyLoad = _toRefs.lazyLoad; var _useVModel = hooks_useVModel["default"](checked, modelValue, props2.defaultChecked, props2.onChange, "checked"), _useVModel2 = _slicedToArray__default["default"](_useVModel, 2), innerChecked = _useVModel2[0], setInnerChecked = _useVModel2[1]; var checkboxGroupData = vue.inject(checkbox_constants.CheckboxGroupInjectionKey, void 0); var tName = vue.ref(); vue.watch(function () { return [props2.name, checkboxGroupData === null || checkboxGroupData === void 0 ? void 0 : checkboxGroupData.value.name].join("_"); }, function () { var name = props2.name || (checkboxGroupData === null || checkboxGroupData === void 0 ? void 0 : checkboxGroupData.value.name); if (name) { tName.value = name; } }, { immediate: true }); var tChecked = vue.ref(false); var getChecked = function getChecked() { var value = props2.value, checkAll = props2.checkAll; if (checkAll) return checkboxGroupData === null || checkboxGroupData === void 0 ? void 0 : checkboxGroupData.value.isCheckAll; return checkboxGroupData !== null && checkboxGroupData !== void 0 && checkboxGroupData.value ? checkboxGroupData.value.checkedValues.includes(value) : innerChecked.value; }; vue.watch(function () { var _checkboxGroupData$va; return [innerChecked.value, checkboxGroupData === null || checkboxGroupData === void 0 ? void 0 : checkboxGroupData.value.isCheckAll, checkboxGroupData === null || checkboxGroupData === void 0 || (_checkboxGroupData$va = checkboxGroupData.value.checkedValues) === null || _checkboxGroupData$va === void 0 ? void 0 : _checkboxGroupData$va.join(",")]; }, function () { tChecked.value = getChecked(); }, { immediate: true }); var beforeDisabled = vue.computed(function () { if (!props2.checkAll && !tChecked.value && checkboxGroupData !== null && checkboxGroupData !== void 0 && checkboxGroupData.value.maxExceeded) { return true; } return null; }); var afterDisabled = vue.computed(function () { return checkboxGroupData === null || checkboxGroupData === void 0 ? void 0 : checkboxGroupData.value.disabled; }); var isDisabled = hooks_useDisabled.useDisabled({ beforeDisabled: beforeDisabled, afterDisabled: afterDisabled }); var tIndeterminate = vue.ref(false); vue.watch(function () { return [props2.checkAll, props2.indeterminate, checkboxGroupData === null || checkboxGroupData === void 0 ? void 0 : checkboxGroupData.value.indeterminate]; }, function () { tIndeterminate.value = props2.checkAll ? checkboxGroupData === null || checkboxGroupData === void 0 ? void 0 : checkboxGroupData.value.indeterminate : props2.indeterminate; }, { immediate: true }); var COMPONENT_NAME = hooks_useConfig.usePrefixClass("checkbox"); var labelClasses = vue.ref({}); vue.watch([tChecked, isDisabled, tIndeterminate], function () { var _ref; labelClasses.value = ["".concat(COMPONENT_NAME.value), (_ref = {}, _defineProperty__default["default"](_ref, STATUS.value.checked, tChecked.value), _defineProperty__default["default"](_ref, STATUS.value.disabled, isDisabled.value), _defineProperty__default["default"](_ref, STATUS.value.indeterminate, tIndeterminate.value), _ref)]; }, { immediate: true }); var handleChange = function handleChange(e) { if (props2.readonly) return; var checked2 = !tChecked.value; setInnerChecked(checked2, { e: e }); if (checkboxGroupData !== null && checkboxGroupData !== void 0 && checkboxGroupData.value.handleCheckboxChange) { checkboxGroupData.value.onCheckedChange({ checked: checked2, checkAll: props2.checkAll, e: e, option: props2 }); } }; var renderContent = hooks_tnode.useContent(); var handleLabelClick = function handleLabelClick(e) { if (props2.stopLabelTrigger) e.preventDefault(); }; var _useCheckboxLazyLoad = checkbox_hooks_useCheckboxLazyLoad.useCheckboxLazyLoad(labelRef, lazyLoad), showCheckbox = _useCheckboxLazyLoad.showCheckbox; var _useKeyboard = checkbox_hooks_useKeyboard.useKeyboardEvent(handleChange), onCheckboxFocus = _useKeyboard.onCheckboxFocus, onCheckboxBlur = _useKeyboard.onCheckboxBlur; return function () { return vue.createVNode("label", { "ref": labelRef, "class": labelClasses.value, "tabindex": isDisabled.value ? void 0 : "0", "onFocus": onCheckboxFocus, "onBlur": onCheckboxBlur }, [!showCheckbox.value ? null : [vue.createVNode("input", { "type": "checkbox", "tabindex": "-1", "class": "".concat(COMPONENT_NAME.value, "__former"), "disabled": isDisabled.value, "readonly": props2.readonly, "indeterminate": tIndeterminate.value, "name": tName.value, "value": props2.value ? props2.value : void 0, "checked": tChecked.value, "onChange": handleChange, "key": "input" }, null), vue.createVNode("span", { "class": "".concat(COMPONENT_NAME.value, "__input"), "key": "input-span" }, null), vue.createVNode("span", { "class": "".concat(COMPONENT_NAME.value, "__label"), "key": "label", "onClick": handleLabelClick }, [renderContent("default", "label")])]]); }; } }); exports["default"] = _Checkbox; //# sourceMappingURL=checkbox.js.map