From 588d2a40e7d1ae53ddb8bda9ddeb1ce0ffd983e1 Mon Sep 17 00:00:00 2001 From: QiuShuiBai <1125097005@qq.com> Date: Wed, 16 Oct 2024 14:43:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20picker=20=E5=A2=9E=E5=8A=A0=20fullyStop?= =?UTF-8?q?=20=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/pages/picker-modal/basic-picker.mpx | 3 +- .../src/common/mixins/picker-popup/index.ts | 41 ++++++++++++++++++- .../components/cascade-picker-modal/index.mpx | 4 +- .../components/cascade-picker-popup/index.mpx | 4 +- .../src/components/cascade-picker/index.mpx | 4 +- .../components/date-picker-popup/index.mpx | 4 +- .../src/components/date-picker/index.mpx | 4 +- .../src/components/picker-modal/index.mpx | 6 +-- .../src/components/picker-popup/index.mpx | 4 +- .../src/components/picker/index.mpx | 4 +- .../components/time-picker-popup/index.mpx | 4 +- .../src/components/time-picker/index.mpx | 4 +- 12 files changed, 63 insertions(+), 23 deletions(-) diff --git a/example/pages/picker-modal/basic-picker.mpx b/example/pages/picker-modal/basic-picker.mpx index 49c1008..8f54e93 100644 --- a/example/pages/picker-modal/basic-picker.mpx +++ b/example/pages/picker-modal/basic-picker.mpx @@ -7,6 +7,7 @@ content="content 内容" list="{{ dataList }}" selected-index="{{ selectedIndex }}" + fully-stop="{{ true }}" bindchange="onChange" bindcolumnChange="onColumnChange" bindtoggle="onToggle" @@ -49,7 +50,7 @@ createComponent({ data: { selectedIndex: [0, 1, 0], dataList: [ - [ { text: '剧毒', value: '剧毒' }, { text: '蚂蚁', value: '蚂蚁' }, { text: '幽鬼', value: '幽鬼' } ], + [ { text: '剧毒', value: '剧毒' }, { text: '蚂蚁', value: '蚂蚁' }, { text: '幽鬼', value: '幽鬼' }, { text: '剧毒1', value: '剧毒1' }, { text: '蚂蚁1', value: '蚂蚁1' }, { text: '幽鬼1', value: '幽鬼1' }, { text: '剧毒2', value: '剧毒2' }, { text: '蚂蚁2', value: '蚂蚁2' }, { text: '幽鬼2', value: '幽鬼2' } ], [ { text: '输出', value: '输出' }, { text: '控制', value: '控制' }, { text: '核心', value: '核心' } ], [ { text: '梅肯', value: '梅肯' }, { text: '假腿', value: '假腿' }, { text: '飞鞋', value: '飞鞋' } ] ], diff --git a/packages/mpx-cube-ui/src/common/mixins/picker-popup/index.ts b/packages/mpx-cube-ui/src/common/mixins/picker-popup/index.ts index eff008b..03c0001 100644 --- a/packages/mpx-cube-ui/src/common/mixins/picker-popup/index.ts +++ b/packages/mpx-cube-ui/src/common/mixins/picker-popup/index.ts @@ -5,9 +5,41 @@ const EVENT_VALUE_CHANGE = 'valueChange' const EVENT_CANCEL = 'cancel' const EVENT_CHANGE = 'change' const EVENT_COLUMN_CHANGE = 'columnChange' - +const EVENT_PICK_START = 'pickstart' +const EVENT_PICK_END = 'pickend' export default getMixin({ + properties: { + // 点击确认时,是否需要滚动选项完全停止 + fullyStop: { + type: Boolean, + value: false + } + }, + data: { + pickStartCount: 0 + }, methods: { + // 不能通过 pickstart 及 pickend 来判断 + // web 单独点击时,不触发 pickstart 事件,只派发 change 和 pickend 事件 + // 小程序点击当前选中值时,派发 pickstart,但不派发 pickend 事件 + // 这令人头大的差异 !! + onPickstart(e) { + if (this.fullyStop) { + if (this.pickStartCount < 0) { + this.pickStartCount = 0 + } + this.pickStartCount++ + } + // 当滚动选择开始时候触发事件 + this.triggerEvent(EVENT_PICK_START, e.detail) + }, + onPickend(e) { + if (this.fullyStop) { + this.pickStartCount-- + } + // 当滚动选择结束时候触发事件 + this.triggerEvent(EVENT_PICK_END, e.detail) + }, onColumnChange(e) { // 列变化事件,某列选中的 value 及 index 任意一个变化后触发事件 // @arg event.detail = { column, index, text, value } @@ -29,6 +61,13 @@ export default getMixin({ this.triggerEvent(EVENT_CHANGE, e.detail) }, onConfirm() { + if (this.fullyStop) { + if (this.pickStartCount > 0) { + return + } + this.pickStartCount = 0 + } + this.hide() const { selectedIndex, selectedVal, diff --git a/packages/mpx-cube-ui/src/components/cascade-picker-modal/index.mpx b/packages/mpx-cube-ui/src/components/cascade-picker-modal/index.mpx index 1efdcde..f0ff4b5 100644 --- a/packages/mpx-cube-ui/src/components/cascade-picker-modal/index.mpx +++ b/packages/mpx-cube-ui/src/components/cascade-picker-modal/index.mpx @@ -30,8 +30,8 @@ theme-type="{{ themeType }}" bind:change="onChange" bind:columnChange="onColumnChange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend" + bind:pickstart="onPickstart" + bind:pickend="onPickend" bind:pendingChange="onPendingChange" /> diff --git a/packages/mpx-cube-ui/src/components/cascade-picker-popup/index.mpx b/packages/mpx-cube-ui/src/components/cascade-picker-popup/index.mpx index d76b76e..579a299 100644 --- a/packages/mpx-cube-ui/src/components/cascade-picker-popup/index.mpx +++ b/packages/mpx-cube-ui/src/components/cascade-picker-popup/index.mpx @@ -24,8 +24,8 @@ theme-type="{{ themeType }}" bind:change="onChange" bind:columnChange="onColumnChange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend" + bind:pickstart="onPickstart" + bind:pickend="onPickend" bind:pendingChange="onPendingChange" /> diff --git a/packages/mpx-cube-ui/src/components/cascade-picker/index.mpx b/packages/mpx-cube-ui/src/components/cascade-picker/index.mpx index 5396e9f..3d96836 100644 --- a/packages/mpx-cube-ui/src/components/cascade-picker/index.mpx +++ b/packages/mpx-cube-ui/src/components/cascade-picker/index.mpx @@ -7,8 +7,8 @@ immediate-change="{{ immediateChange }}" theme-type="{{ themeType }}" bind:columnChange="onColumnChange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend" + bind:pickstart="onPickstart" + bind:pickend="onPickend" /> diff --git a/packages/mpx-cube-ui/src/components/date-picker-popup/index.mpx b/packages/mpx-cube-ui/src/components/date-picker-popup/index.mpx index 99d571e..0f18c90 100644 --- a/packages/mpx-cube-ui/src/components/date-picker-popup/index.mpx +++ b/packages/mpx-cube-ui/src/components/date-picker-popup/index.mpx @@ -27,8 +27,8 @@ theme-type="{{ themeType }}" bind:columnChange="onColumnChange" bind:change="onChange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend" + bind:pickstart="onPickstart" + bind:pickend="onPickend" /> diff --git a/packages/mpx-cube-ui/src/components/date-picker/index.mpx b/packages/mpx-cube-ui/src/components/date-picker/index.mpx index 90076fc..3b4927f 100644 --- a/packages/mpx-cube-ui/src/components/date-picker/index.mpx +++ b/packages/mpx-cube-ui/src/components/date-picker/index.mpx @@ -7,8 +7,8 @@ immediate-change="{{ immediateChange }}" theme-type="{{ themeType }}" bind:columnChange="onColumnChange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend" + bind:pickstart="onPickstart" + bind:pickend="onPickend" /> diff --git a/packages/mpx-cube-ui/src/components/picker-modal/index.mpx b/packages/mpx-cube-ui/src/components/picker-modal/index.mpx index 5001531..092efee 100644 --- a/packages/mpx-cube-ui/src/components/picker-modal/index.mpx +++ b/packages/mpx-cube-ui/src/components/picker-modal/index.mpx @@ -13,7 +13,7 @@ cancel-text="{{ cancelText }}" cancel-btn-align="{{ cancelBtnAlign }}" no-built-in-btns="{{ noBuiltInBtns }}" - hide-on-confirm="{{ hideOnConfirm }}" + hide-on-confirm="{{ hideOnConfirm && !fullyStop }}" hide-on-cancel="{{ hideOnCancel }}" hide-on-close="{{ hideOnClose }}" theme-type="{{ themeType }}" @@ -33,8 +33,8 @@ theme-type="{{ themeType }}" bind:change="onChange" bind:columnChange="onColumnChange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend" + bind:pickstart="onPickstart" + bind:pickend="onPickend" /> diff --git a/packages/mpx-cube-ui/src/components/picker-popup/index.mpx b/packages/mpx-cube-ui/src/components/picker-popup/index.mpx index e10e99a..762f6f2 100644 --- a/packages/mpx-cube-ui/src/components/picker-popup/index.mpx +++ b/packages/mpx-cube-ui/src/components/picker-popup/index.mpx @@ -22,8 +22,8 @@ theme-type="{{ themeType }}" bind:change="onChange" bind:columnChange="onColumnChange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend" + bind:pickstart="onPickstart" + bind:pickend="onPickend" /> diff --git a/packages/mpx-cube-ui/src/components/picker/index.mpx b/packages/mpx-cube-ui/src/components/picker/index.mpx index 2ee9328..e44d408 100644 --- a/packages/mpx-cube-ui/src/components/picker/index.mpx +++ b/packages/mpx-cube-ui/src/components/picker/index.mpx @@ -8,8 +8,8 @@ immediate-change="{{ immediateChange }}" value="{{ finalIndex }}" bind:change="onPickchange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend"> + bind:pickstart="onPickstart" + bind:pickend="onPickend"> diff --git a/packages/mpx-cube-ui/src/components/time-picker/index.mpx b/packages/mpx-cube-ui/src/components/time-picker/index.mpx index 35e942e..40769d6 100644 --- a/packages/mpx-cube-ui/src/components/time-picker/index.mpx +++ b/packages/mpx-cube-ui/src/components/time-picker/index.mpx @@ -8,8 +8,8 @@ theme-type="{{ themeType }}" bind:change="onChange" bind:columnChange="onColumnChange" - bind:pickstart@wx="onPickstart" - bind:pickend@wx="onPickend" + bind:pickstart="onPickstart" + bind:pickend="onPickend" />