Checkbox.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _vue = require("vue");
  8. var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
  9. var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
  10. var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
  11. var _classNames3 = _interopRequireDefault(require("../_util/classNames"));
  12. var _Checkbox = _interopRequireDefault(require("../vc-checkbox/Checkbox"));
  13. var _propsUtil = require("../_util/props-util");
  14. var _warning = _interopRequireDefault(require("../_util/warning"));
  15. var _FormItemContext = require("../form/FormItemContext");
  16. var _useConfigInject2 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
  17. var _interface = require("./interface");
  18. var _excluded = ["indeterminate", "skipGroup", "id"],
  19. _excluded2 = ["onMouseenter", "onMouseleave", "onInput", "class", "style"];
  20. var _default = (0, _vue.defineComponent)({
  21. compatConfig: {
  22. MODE: 3
  23. },
  24. name: 'ACheckbox',
  25. inheritAttrs: false,
  26. __ANT_CHECKBOX: true,
  27. props: (0, _interface.checkboxProps)(),
  28. // emits: ['change', 'update:checked'],
  29. setup: function setup(props, _ref) {
  30. var emit = _ref.emit,
  31. attrs = _ref.attrs,
  32. slots = _ref.slots,
  33. expose = _ref.expose;
  34. var formItemContext = (0, _FormItemContext.useInjectFormItemContext)();
  35. var _useConfigInject = (0, _useConfigInject2.default)('checkbox', props),
  36. prefixCls = _useConfigInject.prefixCls,
  37. direction = _useConfigInject.direction;
  38. var checkboxGroup = (0, _vue.inject)(_interface.CheckboxGroupContextKey, undefined);
  39. var uniId = Symbol('checkboxUniId');
  40. (0, _vue.watchEffect)(function () {
  41. if (!props.skipGroup && checkboxGroup) {
  42. checkboxGroup.registerValue(uniId, props.value);
  43. }
  44. });
  45. (0, _vue.onBeforeUnmount)(function () {
  46. if (checkboxGroup) {
  47. checkboxGroup.cancelValue(uniId);
  48. }
  49. });
  50. (0, _vue.onMounted)(function () {
  51. (0, _warning.default)(props.checked !== undefined || checkboxGroup || props.value === undefined, 'Checkbox', '`value` is not validate prop, do you mean `checked`?');
  52. });
  53. var handleChange = function handleChange(event) {
  54. var targetChecked = event.target.checked;
  55. emit('update:checked', targetChecked);
  56. emit('change', event);
  57. };
  58. var checkboxRef = (0, _vue.ref)();
  59. var focus = function focus() {
  60. var _checkboxRef$value;
  61. (_checkboxRef$value = checkboxRef.value) === null || _checkboxRef$value === void 0 ? void 0 : _checkboxRef$value.focus();
  62. };
  63. var blur = function blur() {
  64. var _checkboxRef$value2;
  65. (_checkboxRef$value2 = checkboxRef.value) === null || _checkboxRef$value2 === void 0 ? void 0 : _checkboxRef$value2.blur();
  66. };
  67. expose({
  68. focus: focus,
  69. blur: blur
  70. });
  71. return function () {
  72. var _slots$default, _classNames;
  73. var children = (0, _propsUtil.flattenChildren)((_slots$default = slots.default) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots));
  74. var indeterminate = props.indeterminate,
  75. skipGroup = props.skipGroup,
  76. _props$id = props.id,
  77. id = _props$id === void 0 ? formItemContext.id.value : _props$id,
  78. restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
  79. var onMouseenter = attrs.onMouseenter,
  80. onMouseleave = attrs.onMouseleave,
  81. onInput = attrs.onInput,
  82. className = attrs.class,
  83. style = attrs.style,
  84. restAttrs = (0, _objectWithoutProperties2.default)(attrs, _excluded2);
  85. var checkboxProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
  86. id: id,
  87. prefixCls: prefixCls.value
  88. }, restAttrs);
  89. if (checkboxGroup && !skipGroup) {
  90. checkboxProps.onChange = function () {
  91. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  92. args[_key] = arguments[_key];
  93. }
  94. emit.apply(void 0, ['change'].concat(args));
  95. checkboxGroup.toggleOption({
  96. label: children,
  97. value: props.value
  98. });
  99. };
  100. checkboxProps.name = checkboxGroup.name.value;
  101. checkboxProps.checked = checkboxGroup.mergedValue.value.indexOf(props.value) !== -1;
  102. checkboxProps.disabled = props.disabled || checkboxGroup.disabled.value;
  103. checkboxProps.indeterminate = indeterminate;
  104. } else {
  105. checkboxProps.onChange = handleChange;
  106. }
  107. var classString = (0, _classNames3.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-wrapper"), true), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-rtl"), direction.value === 'rtl'), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-wrapper-checked"), checkboxProps.checked), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls.value, "-wrapper-disabled"), checkboxProps.disabled), _classNames), className);
  108. var checkboxClass = (0, _classNames3.default)((0, _defineProperty2.default)({}, "".concat(prefixCls.value, "-indeterminate"), indeterminate));
  109. return (0, _vue.createVNode)("label", {
  110. "class": classString,
  111. "style": style,
  112. "onMouseenter": onMouseenter,
  113. "onMouseleave": onMouseleave
  114. }, [(0, _vue.createVNode)(_Checkbox.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, checkboxProps), {}, {
  115. "class": checkboxClass,
  116. "ref": checkboxRef
  117. }), null), children.length ? (0, _vue.createVNode)("span", null, [children]) : null]);
  118. };
  119. }
  120. });
  121. exports.default = _default;