1.5.1 • Published 1 year ago

@wines/select v1.5.1

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

@wines/select

Select 下拉框

用于弹出一个下拉菜单给用户选择操作。

使用指南

在 page.json 中引入组件

{
  "navigationBarTitleText": "Select",
  "usingComponents": {
    "wux-cell": "@wines/cell",
    "wux-cell-group": "@wines/cell-group",
    "wux-select": "@wines/select"
  }
}

示例

该组件主要依靠 JavaScript 主动调用,所以一般只需在 wxml 中添加一个组件,并设置 id 为 #wux-select 或其他,之后在 page.js 中调用 $wuxSelect(context, id) 获取匹配到的第一个组件实例对象。

<wux-select id="wux-select1" />
<wux-select id="wux-select2" />
<wux-select id="wux-select3" />
<view class="page">
	<view class="page__hd">
		<view class="page__title">Select</view>
		<view class="page__desc">下拉框</view>
	</view>
	<view class="page__bd">
		<wux-cell-group>
			<wux-cell
			 title="Single"
			 is-link
			 extra="{{ displayValue1 }}"
			 bind:click="onClick1"
			/>
			<wux-cell
			 title="Multiple"
			 is-link
			 extra="{{ displayValue2 }}"
			 bind:click="onClick2"
			/>
			<wux-cell
			 title="Multiple & max = 3"
			 is-link
			 extra="{{ displayValue3 }}"
			 bind:click="onClick3"
			/>
		</wux-cell-group>
	</view>
</view>
import './index.less';
import { $wuxSelect } from '@wines/select';
import { PopupSelectOptions } from '@wines/popup-select';

Page({
  data: {
    value1: '',
    value2: [] as string[],
    value3: [] as string[],
    displayValue1: '请选择',
    displayValue2: ['请选择'],
    displayValue3: ['请选择'],
    options1: ['法官', '医生', '猎人', '学生', '记者', '其他'],
    options2: [
      {
        title: 'iPhone 3GS',
        value: '001',
      },
      {
        title: 'iPhone 5',
        value: '002',
      },
      {
        title: 'iPhone 5S',
        value: '003',
      },
      {
        title: 'iPhone 6',
        value: '004',
      },
      {
        title: 'iPhone 6S',
        value: '005',
      },
      {
        title: 'iPhone 6P',
        value: '006',
      },
      {
        title: 'iPhone 6SP',
        value: '007',
      },
      {
        title: 'iPhone SE',
        value: '008',
      },
      {
        title: 'iPhone 7',
        value: '009',
      },
    ],
    options3: [
      {
        title: '画画',
        value: '1',
      },
      {
        title: '打球',
        value: '2',
      },
      {
        title: '唱歌',
        value: '3',
      },
      {
        title: '游泳',
        value: '4',
      },
      {
        title: '健身',
        value: '5',
      },
      {
        title: '睡觉',
        value: '6',
      },
    ],
  },
  onClick1() {
    $wuxSelect('#wux-select1').open<'single'>({
      value: this.data.value1,
      options: this.data.options1,
      onConfirm: (value, index: number, options: PopupSelectOptions) => {
        console.log('onConfirm', value, index, options);
        if (index !== -1) {
          this.setData({
            value1: value,
            displayValue1: options[index] as string,
          });
        }
      },
    });
  },
  onClick2() {
    $wuxSelect('#wux-select2').open<'multiple'>({
      value: this.data.value2,
      multiple: true,
      options: this.data.options2,
      onConfirm: (value, index: number[], options: PopupSelectOptions) => {
        console.log('onConfirm', value, index, options);
        this.setData({
          value2: value,
          displayValue2: index.map((n: number) => {
            const item = options[n];
            return typeof item === 'string' ? item : item.title;
          }),
        });
      },
    });
  },
  onClick3() {
    $wuxSelect('#wux-select3').open<'multiple'>({
      value: this.data.value3,
      multiple: true,
      toolbar: {
        title: 'Please choose',
        confirmText: 'ok',
      },
      max: 3,
      options: this.data.options3,
      onChange: (value, index: number[], options: PopupSelectOptions) => {
        console.log('onChange', value, index, options);
        this.setData({
          value3: value,
          displayValue3: index.map((n: number) => {
            const item = options[n];
            return typeof item === 'string' ? item : item.title;
          }),
        });
      },
      onConfirm: (value, index: number[], options: PopupSelectOptions) => {
        console.log('onConfirm', value, index, options);
        this.setData({
          value3: value,
          displayValue3: index.map((n: number) => {
            const item = options[n];
            return typeof item === 'string' ? item : item.title;
          }),
        });
      },
    });
  },
});

API

参数类型描述默认值
optionsobject配置项-
options.prefixClsstring自定义类名前缀wux-select
options.valueany指定当前选中的条目-
options.optionsarray下拉列表[]
options.multipleboolean是否支持多选false
options.maxnumber,stirng最多选择几项,设置为 -1 的时候不限制选择-1
options.toolbarany工具栏配置项{}
options.toolbar.titlestring标题的文字请选择
options.toolbar.cancelTextstring取消按钮的文字取消
options.toolbar.confirmTextstring确定按钮的文字确定
options.onChangefunction选择完成后的回调函数-
options.onConfirmfunction点击确定按钮时的回调函数-
options.onCancelfunction点击取消按钮时的回调函数-

下拉列表:options 参数请参考 RadioCheckbox

1.5.1

1 year ago

1.5.0

1 year ago

1.3.5

2 years ago

1.4.0

2 years ago

1.3.4

3 years ago

1.3.2

3 years ago

1.3.1

3 years ago

1.3.0

3 years ago