From 093afd3be27ea5e9692839845b69bd56e2405518 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期二, 13 八月 2024 23:49:45 +0800
Subject: [PATCH] 204.8.13

---
 miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.js |   35 ++++++++++++++++++++++-------------
 1 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.js b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.js
index 0494989..fa46f23 100644
--- a/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.js
+++ b/miniprogram_npm/tdesign-miniprogram/checkbox/checkbox.js
@@ -26,13 +26,17 @@
                 linked(parent) {
                     const { value, disabled, borderless } = parent.data;
                     const valueSet = new Set(value);
+                    const checkedFromParent = valueSet.has(this.data.value);
                     const data = {
-                        disabled: disabled || this.data.disabled,
+                        _disabled: this.data.disabled == null ? disabled : this.data.disabled,
                     };
                     if (borderless) {
                         data.borderless = true;
                     }
-                    data.checked = valueSet.has(this.data.value);
+                    data.checked = this.data.checked || checkedFromParent;
+                    if (this.data.checked) {
+                        parent.updateValue(this.data);
+                    }
                     if (this.data.checkAll) {
                         data.checked = valueSet.size > 0;
                     }
@@ -46,13 +50,16 @@
         this.properties = Object.assign(Object.assign({}, Props), { theme: {
                 type: String,
                 value: 'default',
-            }, borderless: {
-                type: Boolean,
-                value: false,
             } });
         this.data = {
             prefix,
             classPrefix: name,
+            _disabled: false,
+        };
+        this.observers = {
+            disabled(v) {
+                this.setData({ _disabled: v });
+            },
         };
         this.controlledProps = [
             {
@@ -61,24 +68,26 @@
             },
         ];
         this.methods = {
-            onChange(e) {
-                const { disabled, readonly } = this.data;
-                if (disabled || readonly)
-                    return;
+            handleTap(e) {
+                const { _disabled, readonly, contentDisabled } = this.data;
                 const { target } = e.currentTarget.dataset;
-                const { contentDisabled } = this.data;
-                if (target === 'text' && contentDisabled) {
+                if (_disabled || readonly || (target === 'text' && contentDisabled))
                     return;
-                }
+                const { value, label } = this.data;
                 const checked = !this.data.checked;
                 const parent = this.$parent;
                 if (parent) {
                     parent.updateValue(Object.assign(Object.assign({}, this.data), { checked }));
                 }
                 else {
-                    this._trigger('change', { checked });
+                    this._trigger('change', { context: { value, label }, checked });
                 }
             },
+            setDisabled(disabled) {
+                this.setData({
+                    _disabled: this.data.disabled || disabled,
+                });
+            },
         };
     }
 };

--
Gitblit v1.9.3