use-checkbox-event.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var constants = require('../constants.js');
  5. var useFormItem = require('../../../form/src/hooks/use-form-item.js');
  6. var error = require('../../../../utils/error.js');
  7. var event = require('../../../../constants/event.js');
  8. const useCheckboxEvent = (props, {
  9. model,
  10. isLimitExceeded,
  11. hasOwnLabel,
  12. isDisabled,
  13. isLabeledByFormItem
  14. }) => {
  15. const checkboxGroup = vue.inject(constants.checkboxGroupContextKey, void 0);
  16. const { formItem } = useFormItem.useFormItem();
  17. const { emit } = vue.getCurrentInstance();
  18. function getLabeledValue(value) {
  19. var _a, _b, _c, _d;
  20. return [true, props.trueValue, props.trueLabel].includes(value) ? (_b = (_a = props.trueValue) != null ? _a : props.trueLabel) != null ? _b : true : (_d = (_c = props.falseValue) != null ? _c : props.falseLabel) != null ? _d : false;
  21. }
  22. function emitChangeEvent(checked, e) {
  23. emit(event.CHANGE_EVENT, getLabeledValue(checked), e);
  24. }
  25. function handleChange(e) {
  26. if (isLimitExceeded.value)
  27. return;
  28. const target = e.target;
  29. emit(event.CHANGE_EVENT, getLabeledValue(target.checked), e);
  30. }
  31. async function onClickRoot(e) {
  32. if (isLimitExceeded.value)
  33. return;
  34. if (!hasOwnLabel.value && !isDisabled.value && isLabeledByFormItem.value) {
  35. const eventTargets = e.composedPath();
  36. const hasLabel = eventTargets.some((item) => item.tagName === "LABEL");
  37. if (!hasLabel) {
  38. model.value = getLabeledValue([false, props.falseValue, props.falseLabel].includes(model.value));
  39. await vue.nextTick();
  40. emitChangeEvent(model.value, e);
  41. }
  42. }
  43. }
  44. const validateEvent = vue.computed(() => (checkboxGroup == null ? void 0 : checkboxGroup.validateEvent) || props.validateEvent);
  45. vue.watch(() => props.modelValue, () => {
  46. if (validateEvent.value) {
  47. formItem == null ? void 0 : formItem.validate("change").catch((err) => error.debugWarn(err));
  48. }
  49. });
  50. return {
  51. handleChange,
  52. onClickRoot
  53. };
  54. };
  55. exports.useCheckboxEvent = useCheckboxEvent;
  56. //# sourceMappingURL=use-checkbox-event.js.map