Checkbox.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. var __create = Object.create;
  2. var __defProp = Object.defineProperty;
  3. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  4. var __getOwnPropNames = Object.getOwnPropertyNames;
  5. var __getProtoOf = Object.getPrototypeOf;
  6. var __hasOwnProp = Object.prototype.hasOwnProperty;
  7. var __export = (target, all) => {
  8. for (var name2 in all)
  9. __defProp(target, name2, { get: all[name2], enumerable: true });
  10. };
  11. var __copyProps = (to, from, except, desc) => {
  12. if (from && typeof from === "object" || typeof from === "function") {
  13. for (let key of __getOwnPropNames(from))
  14. if (!__hasOwnProp.call(to, key) && key !== except)
  15. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  16. }
  17. return to;
  18. };
  19. var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  20. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  21. mod
  22. ));
  23. var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  24. var stdin_exports = {};
  25. __export(stdin_exports, {
  26. default: () => stdin_default
  27. });
  28. module.exports = __toCommonJS(stdin_exports);
  29. var import_vue = require("vue");
  30. var import_vue2 = require("vue");
  31. var import_utils = require("../utils");
  32. var import_CheckboxGroup = require("../checkbox-group/CheckboxGroup");
  33. var import_use = require("@vant/use");
  34. var import_use_expose = require("../composables/use-expose");
  35. var import_Checker = __toESM(require("./Checker"));
  36. const [name, bem] = (0, import_utils.createNamespace)("checkbox");
  37. const checkboxProps = (0, import_utils.extend)({}, import_Checker.checkerProps, {
  38. bindGroup: import_utils.truthProp
  39. });
  40. var stdin_default = (0, import_vue2.defineComponent)({
  41. name,
  42. props: checkboxProps,
  43. emits: ["change", "update:modelValue"],
  44. setup(props, {
  45. emit,
  46. slots
  47. }) {
  48. const {
  49. parent
  50. } = (0, import_use.useParent)(import_CheckboxGroup.CHECKBOX_GROUP_KEY);
  51. const setParentValue = (checked2) => {
  52. const {
  53. name: name2
  54. } = props;
  55. const {
  56. max,
  57. modelValue
  58. } = parent.props;
  59. const value = modelValue.slice();
  60. if (checked2) {
  61. const overlimit = max && value.length >= max;
  62. if (!overlimit && !value.includes(name2)) {
  63. value.push(name2);
  64. if (props.bindGroup) {
  65. parent.updateValue(value);
  66. }
  67. }
  68. } else {
  69. const index = value.indexOf(name2);
  70. if (index !== -1) {
  71. value.splice(index, 1);
  72. if (props.bindGroup) {
  73. parent.updateValue(value);
  74. }
  75. }
  76. }
  77. };
  78. const checked = (0, import_vue2.computed)(() => {
  79. if (parent && props.bindGroup) {
  80. return parent.props.modelValue.indexOf(props.name) !== -1;
  81. }
  82. return !!props.modelValue;
  83. });
  84. const toggle = (newValue = !checked.value) => {
  85. if (parent && props.bindGroup) {
  86. setParentValue(newValue);
  87. } else {
  88. emit("update:modelValue", newValue);
  89. }
  90. };
  91. (0, import_vue2.watch)(() => props.modelValue, (value) => emit("change", value));
  92. (0, import_use_expose.useExpose)({
  93. toggle,
  94. props,
  95. checked
  96. });
  97. (0, import_use.useCustomFieldValue)(() => props.modelValue);
  98. return () => (0, import_vue.createVNode)(import_Checker.default, (0, import_vue.mergeProps)({
  99. "bem": bem,
  100. "role": "checkbox",
  101. "parent": parent,
  102. "checked": checked.value,
  103. "onToggle": toggle
  104. }, props), (0, import_utils.pick)(slots, ["default", "icon"]));
  105. }
  106. });