feat: Pickerview选择器新增immediate-change属性,目前微信和支付宝小程序支持。

This commit is contained in:
weisheng 2024-06-09 14:56:06 +08:00
parent 61004d30ed
commit 3428ae1788
20 changed files with 57 additions and 10 deletions

View File

@ -236,6 +236,7 @@ function handleChange({ value }) {
| panel-height | 可滚动面板的高度 | number | - | 378 | - |
| time-filter | type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据 | function | - | - | - |
| hide-second | type 为 'datetime' 或 'datetimerange' 时有效,是否不展示秒修改 | boolean | - | false | - |
| immediate-change | type 为 'datetime' 或 'datetimerange' 时有是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 | boolean | - | false | $LOWEST_VERSION$ |
## Events

View File

@ -398,6 +398,8 @@ function handleConfirm4({ value }) {
| safe-area-inset-bottom | 弹出面板是否设置底部安全距离iphone X 类型的机型) | boolean | - | true | - |
| prop | 表单域 `model` 字段名,在使用表单校验功能的情况下,该属性是必填的 | string | - | - | - |
| rules | 表单验证规则,结合`wd-form`组件使用 | `FormItemRule []` | - | `[]` | - |
| immediate-change | type 为 'datetime' 或 'datetimerange' 时有是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 | boolean | - | false | $LOWEST_VERSION$ |
### FormItemRule 数据结构

View File

@ -133,6 +133,7 @@ const filter = (type, values) => {
| maxHour | 最大小时time类型时生效 | number | - | 23 | - |
| minMinute | 最小分钟time类型时生效 | number | - | 0 | - |
| maxMinute | 最大分钟time类型时生效 | number | - | 59 | - |
| immediate-change | 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 | boolean | - | false | $LOWEST_VERSION$ |
## Events
| 事件名称 | 说明 | 参数 | 最低版本 |

View File

@ -296,6 +296,7 @@ const displayFormatTabLabel = (items) => {
| ellipsis | 是否超出隐藏 | boolean | - | false | - |
| prop | 表单域 `model` 字段名,在使用表单校验功能的情况下,该属性是必填的 | string | - | - | - |
| rules | 表单验证规则,结合`wd-form`组件使用 | `FormItemRule []` | - | `[]` | - |
| immediate-change | 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 | boolean | - | false | $LOWEST_VERSION$ |
### FormItemRule 数据结构

View File

@ -114,6 +114,10 @@ const onChangeDistrict = (pickerView, value, columnIndex, resolve) => {
| value-key | 选项对象中value对应的 key | string | - | value | - |
| label-key | 选项对象中,展示的文本对应的 key | string | - | label | - |
| column-change | 接收 pickerView 实例、选中项、当前修改列的下标、resolve 作为入参,根据选中项和列下标进行判断,通过 pickerView 实例暴露出来的 `setColumnData` 方法修改其他列的数据源。 | function | - | - | - |
| immediate-change | 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 | boolean | - | false | $LOWEST_VERSION$ |
## Methods

View File

@ -262,6 +262,7 @@ function handleConfirm({ value }) {
| ellipsis | 是否超出隐藏 | boolean | - | false | - |
| prop | 表单域 `model` 字段名,在使用表单校验功能的情况下,该属性是必填的 | string | - | - | - |
| rules | 表单验证规则,结合`wd-form`组件使用 | `FormItemRule []` | - | `[]` | - |
| immediate-change | 是否在手指松开时立即触发picker-view的 change 事件。若不开启则会在滚动动画结束后触发 change 事件1.2.25版本起提供,仅微信小程序和支付宝小程序支持。 | boolean | - | false | $LOWEST_VERSION$ |
### FormItemRule 数据结构

View File

@ -5,7 +5,11 @@
</demo-block>
<demo-block :title="`禁用选项,数值: ${value2}`">
<wd-picker-view v-model="value2" :immediate-change="true" :columns="columns2" @change="(e) => onChange(2, e)" />
<wd-picker-view v-model="value2" :columns="columns2" @change="(e) => onChange(2, e)" />
</demo-block>
<demo-block :title="`立即触发 change数值: ${value6}`">
<wd-picker-view v-model="value6" :immediate-change="true" :columns="columns2" @change="(e) => onChange(2, e)" />
</demo-block>
<demo-block :title="`加载中,数值: ${value3}`">
@ -70,6 +74,8 @@ const value1 = ref<string>('选项1')
const columns1 = ref(['选项1', '选项2', '选项3', '选项4', '选项5', '选项6', '选项7'])
const value2 = ref<string>('选项1')
const value6 = ref<string>('选项1')
const columns2 = ref([
{ label: '选项1' },
{ label: '选项2' },

View File

@ -40,6 +40,7 @@
v-model="timeValue"
:columns="timeData"
:columns-height="125"
:immediate-change="immediateChange"
@change="handleTimeChange"
@pickstart="handlePickStart"
@pickend="handlePickEnd"

View File

@ -27,7 +27,11 @@ export const monthPanelProps = {
panelHeight: makeRequiredProp(Number),
// type 为 'datetime' 或 'datetimerange' 时有效,用于过滤时间选择器的数据
timeFilter: Function as PropType<CalendarTimeFilter>,
hideSecond: makeBooleanProp(false)
hideSecond: makeBooleanProp(false),
/**
* picker-view的 change change 1.2.25
*/
immediateChange: makeBooleanProp(false)
}
export type MonthPanelProps = ExtractPropTypes<typeof monthPanelProps>

View File

@ -61,7 +61,11 @@ export const calendarViewProps = {
/**
* type 'datetime' 'datetimerange'
*/
hideSecond: makeBooleanProp(false)
hideSecond: makeBooleanProp(false),
/**
* picker-view的 change change 1.2.25
*/
immediateChange: makeBooleanProp(false)
}
export type CalendarViewProps = ExtractPropTypes<typeof calendarViewProps>

View File

@ -31,6 +31,7 @@
:show-panel-title="showPanelTitle"
:default-time="formatDefauleTime"
:panel-height="panelHeight"
:immediate-change="immediateChange"
:time-filter="timeFilter"
:hide-second="hideSecond"
@change="handleChange"

View File

@ -1,10 +1,10 @@
/*
* @Author: weisheng
* @Date: 2024-03-15 20:40:34
* @LastEditTime: 2024-03-18 13:37:40
* @LastEditTime: 2024-06-09 14:38:57
* @LastEditors: weisheng
* @Description:
* @FilePath: \wot-design-uni\src\uni_modules\wot-design-uni\components\wd-calendar\types.ts
* @FilePath: /wot-design-uni/src/uni_modules/wot-design-uni/components/wd-calendar/types.ts
*
*/
import type { PropType } from 'vue'
@ -180,7 +180,11 @@ export const calendarProps = {
/**
* value
*/
customValueClass: makeStringProp('')
customValueClass: makeStringProp(''),
/**
* picker-view的 change change 1.2.25
*/
immediateChange: makeBooleanProp(false)
}
export type CalendarDisplayFormat = (value: number | number[], type: CalendarType) => string

View File

@ -93,6 +93,7 @@
:time-filter="timeFilter"
:hide-second="hideSecond"
:show-panel-title="!range(type)"
:immediate-change="immediateChange"
@change="handleChange"
/>
</view>

View File

@ -86,6 +86,10 @@ export const datetimePickerViewProps = {
* time类型时生效
*/
maxMinute: makeNumberProp(59),
/**
* picker-view的 change change 1.2.25
*/
immediateChange: makeBooleanProp(false),
startSymbol: makeBooleanProp(false)
}

View File

@ -1,9 +1,10 @@
<template>
<view>
<wd-picker-view
ref="datePickerview"
:custom-class="customClass"
:custom-style="customStyle"
ref="datePickerview"
:immediate-change="immediateChange"
v-model="pickerValue"
:columns="columns"
:columns-height="columnsHeight"

View File

@ -166,7 +166,11 @@ export const datetimePickerProps = {
/**
* value
*/
customValueClass: makeStringProp('')
customValueClass: makeStringProp(''),
/**
* picker-view的 change change 1.2.25
*/
immediateChange: makeBooleanProp(false)
}
export type DatetimePickerDisplayFormat = (items: Record<string, any>[]) => string

View File

@ -102,6 +102,7 @@
:max-minute="maxMinute"
:min-minute="minMinute"
:start-symbol="true"
:immediate-change="immediateChange"
@change="onChangeStart"
@pickstart="onPickStart"
@pickend="onPickEnd"
@ -128,6 +129,7 @@
:max-minute="maxMinute"
:min-minute="minMinute"
:start-symbol="false"
:immediate-change="immediateChange"
@change="onChangeEnd"
@pickstart="onPickStart"
@pickend="onPickEnd"

View File

@ -39,7 +39,7 @@ export const pickerViewProps = {
*/
labelKey: makeStringProp('label'),
/**
* change change 1.2.25
* picker-view的 change change 1.2.25
*/
immediateChange: makeBooleanProp(false),
/**

View File

@ -143,7 +143,11 @@ export const pickerProps = {
/**
* wd-form组件使用
*/
rules: makeArrayProp<FormItemRule>()
rules: makeArrayProp<FormItemRule>(),
/**
* change change 1.2.25
*/
immediateChange: makeBooleanProp(false)
}
export type PickerProps = ExtractPropTypes<typeof pickerProps>

View File

@ -57,6 +57,7 @@
:columns-height="columnsHeight"
:value-key="valueKey"
:label-key="labelKey"
:immediate-change="immediateChange"
@change="pickerViewChange"
@pickstart="onPickStart"
@pickend="onPickEnd"