|
10 | 10 | <cube-button @click="showPicker">Picker</cube-button> |
11 | 11 | ``` |
12 | 12 | ```js |
13 | | - const col1Data = [{ text: '剧毒', value: '剧毒'}, { text: '蚂蚁', value: '蚂蚁' }, { text: '幽鬼', value: '幽鬼' }] |
| 13 | + const col1Data = [{ text: '剧毒', value: '剧毒'}, { text: '蚂蚁', value: '蚂蚁' }, |
| 14 | + { text: '幽鬼', value: '幽鬼' }] |
14 | 15 | export default { |
15 | 16 | mounted () { |
16 | 17 | this.picker = this.$createPicker({ |
17 | | - title: 'Picker selectors - single column', |
| 18 | + title: 'Picker', |
18 | 19 | data: [col1Data], |
19 | | - onSelect: (selectedText, selectedIndex) => { |
| 20 | + onSelect: (selectedVal, selectedIndex, selectedText) => { |
20 | 21 | this.$createDialog({ |
21 | 22 | type: 'warn', |
22 | | - content: `selected content:${selectedText.join(',')} <br/> selected index: ${selectedIndex.join(',')}`, |
| 23 | + content: `Selected Item: <br/> - value: ${selectedVal.join(', ')} <br/> |
| 24 | + - index: ${selectedIndex.join(', ')} <br/> - text: ${selectedText.join(' ')}`, |
23 | 25 | icon: 'cubeic-alert' |
24 | 26 | }).show() |
25 | 27 | }, |
26 | 28 | onCancel: () => { |
27 | 29 | this.$createToast({ |
28 | 30 | type: 'correct', |
29 | | - txt: 'Clicked cancel button', |
| 31 | + txt: 'Picker canceled', |
30 | 32 | time: 1000 |
31 | 33 | }).show() |
32 | 34 | } |
|
40 | 42 | } |
41 | 43 | ``` |
42 | 44 |
|
43 | | -- Multi-column selectors |
| 45 | +- Multi-column Picker |
44 | 46 |
|
45 | 47 | ```html |
46 | | - <cube-button @click="showPicker">Picker - multiple Columns</cube-button> |
| 48 | + <cube-button @click="showPicker">Multi-column Picker</cube-button> |
47 | 49 | ``` |
48 | 50 | ```js |
49 | | - const col1Data = [{ text: '剧毒', value: '剧毒'}, { text: '蚂蚁', value: '蚂蚁' }, { text: '幽鬼', value: '幽鬼' }] |
50 | | - const col2Data = [{ text: '输出', value: '输出' }, { text: '控制', value: '控制' }, { text: '核心', value: '核心' |
51 | | - }, { text: '爆发', value: '爆发' }, { text: '辅助', value: '辅助' }, { text: '打野', value: '打野' }, { text: '逃生', value: '逃生' }, { text: '先手', value: '先手' }] |
52 | | - const col3Data = [{ text: '梅肯', value: '梅肯'}, { text: '秘法鞋', value: '秘法鞋' }, { text: '假腿', value: '假腿' }, { text: '飞鞋', value: '飞鞋' }, { text: '辉耀', value: '辉耀' }, { text: '金箍棒', value: '金箍棒' }] |
| 51 | + const col1Data = [{ text: '剧毒', value: '剧毒'}, { text: '蚂蚁', value: '蚂蚁' }, |
| 52 | + { text: '幽鬼', value: '幽鬼' }] |
| 53 | + const col2Data = [{ text: '输出', value: '输出' }, { text: '控制', value: '控制' }, |
| 54 | + { text: '核心', value: '核心'}, { text: '爆发', value: '爆发' }, { text: '辅助', value: '辅助' }, |
| 55 | + { text: '打野', value: '打野' }, { text: '逃生', value: '逃生' }, { text: '先手', value: '先手' }] |
| 56 | + const col3Data = [{ text: '梅肯', value: '梅肯'}, { text: '秘法鞋', value: '秘法鞋' }, |
| 57 | + { text: '假腿', value: '假腿' }, { text: '飞鞋', value: '飞鞋' }, { text: '辉耀', value: '辉耀' }, |
| 58 | + { text: '金箍棒', value: '金箍棒' }] |
53 | 59 | export default { |
54 | 60 | mounted () { |
55 | 61 | this.picker = this.$createPicker({ |
56 | | - title: 'Picker selectors - multiple columns', |
57 | | - data: [col1Data, col2Data, col3Data] |
| 62 | + title: 'Multi-column Picker', |
| 63 | + data: [col1Data, col2Data, col3Data], |
| 64 | + onSelect: (selectedVal, selectedIndex, selectedText) => { |
| 65 | + this.$createDialog({ |
| 66 | + type: 'warn', |
| 67 | + content: `Selected Item: <br/> - value: ${selectedVal.join(', ')} <br/> |
| 68 | + - index: ${selectedIndex.join(', ')} <br/> - text: ${selectedText.join(' ')}`, |
| 69 | + icon: 'cubeic-alert' |
| 70 | + }).show() |
| 71 | + }, |
| 72 | + onCancel: () => { |
| 73 | + this.$createToast({ |
| 74 | + type: 'correct', |
| 75 | + txt: 'Picker canceled', |
| 76 | + time: 1000 |
| 77 | + }).show() |
| 78 | + } |
58 | 79 | }) |
59 | 80 | }, |
60 | 81 | methods: { |
|
67 | 88 |
|
68 | 89 | `data` receives an array, whose length determines the columns of `picker`. |
69 | 90 |
|
70 | | -- Linkage selectors |
| 91 | +- Linkage Picker |
71 | 92 |
|
72 | 93 | ```html |
73 | | - <cube-button @click="showPicker">Picker - linkage</cube-button> |
| 94 | + <cube-button @click="showPicker">Linkage Picker</cube-button> |
74 | 95 | ``` |
75 | 96 | ```js |
76 | 97 | import { provinceList, cityList, areaList } from '../data/area' |
|
83 | 104 | }, |
84 | 105 | mounted () { |
85 | 106 | this.picker = this.$createPicker({ |
86 | | - title: 'Picker - linkage data', |
| 107 | + title: 'Linkage Picker', |
87 | 108 | data: this.linkageData, |
88 | 109 | onChange: (i, newIndex) => { |
89 | 110 | if (newIndex !== this.tempIndex[i]) { |
90 | 111 | for (let j = 2; j > i; j--) { |
91 | 112 | this.tempIndex.splice(j, 1, 0) |
92 | | - this.picker.scrollTo(j, 0) |
| 113 | + this.linkagePicker.scrollTo(j, 0) |
93 | 114 | } |
94 | 115 |
|
95 | 116 | this.tempIndex.splice(i, 1, newIndex) |
96 | | - this.picker.setData(this.linkageData, this.tempIndex) |
| 117 | + this.linkagePicker.setData(this.linkageData, this.tempIndex) |
97 | 118 | } |
98 | 119 | }, |
99 | | - onSelect: (selectedText, selectedIndex) => { |
| 120 | + onSelect: (selectedVal, selectedIndex, selectedText) => { |
100 | 121 | this.$createDialog({ |
101 | 122 | type: 'warn', |
102 | | - content: `selected content:${selectedText.join(',')} <br/> selected index: ${selectedIndex.join(',')}`, |
| 123 | + content: `Selected Item: <br/> - value: ${selectedVal.join(', ')} <br/> |
| 124 | + - index: ${selectedIndex.join(', ')} <br/> - text: ${selectedText.join(' ')}`, |
103 | 125 | icon: 'cubeic-alert' |
104 | 126 | }).show() |
105 | 127 | }, |
106 | 128 | onCancel: () => { |
107 | 129 | this.$createToast({ |
108 | 130 | type: 'correct', |
109 | | - txt: 'Clicked cancel button', |
| 131 | + txt: 'Picker canceled', |
110 | 132 | time: 1000 |
111 | 133 | }).show() |
112 | 134 | } |
|
139 | 161 | - Instance method `setData` |
140 | 162 |
|
141 | 163 | ```html |
142 | | - <cube-button @click="showPicker">Picker - setData</cube-button> |
| 164 | + <cube-button @click="showPicker">SetData Picker</cube-button> |
143 | 165 | ``` |
144 | 166 | ```js |
145 | | - const col1Data = [{ text: '剧毒', value: '剧毒'}, { text: '蚂蚁', value: '蚂蚁' }, { text: '幽鬼', value: '幽鬼' }] |
146 | | - const col2Data = [{ text: '梅肯', value: '梅肯'}, { text: '秘法鞋', value: '秘法鞋' }, { text: '假腿', value: '假腿' }, { text: '飞鞋', value: '飞鞋' }, { text: '辉耀', value: '辉耀' }, { text: '金箍棒', value: '金箍棒' }] |
147 | | - const col3Data = [{ text: '输出', value: '输出'}, { text: '控制', value: '控制' }, { text: '核心', value: '核心' }, { text: '爆发', value: '爆发'}, { text: '辅助', value: '辅助' }] |
| 167 | + const col1Data = [{ text: '剧毒', value: '剧毒'}, { text: '蚂蚁', value: '蚂蚁' }, |
| 168 | + { text: '幽鬼', value: '幽鬼' }] |
| 169 | + const col2Data = [{ text: '梅肯', value: '梅肯'}, { text: '秘法鞋', value: '秘法鞋' }, |
| 170 | + { text: '假腿', value: '假腿' }, { text: '飞鞋', value: '飞鞋' }, { text: '辉耀', value: '辉耀' }, |
| 171 | + { text: '金箍棒', value: '金箍棒' }] |
| 172 | + const col3Data = [{ text: '输出', value: '输出'}, { text: '控制', value: '控制' }, |
| 173 | + { text: '核心', value: '核心' }, { text: '爆发', value: '爆发'}, { text: '辅助', value: '辅助' }] |
148 | 174 | export default { |
149 | 175 | mounted () { |
150 | 176 | this.picker = this.$createPicker({ |
151 | | - title: 'Picker-setData', |
152 | | - onSelect: (selectedText, selectedIndex) => { |
| 177 | + title: 'Use SetData', |
| 178 | + onSelect: (selectedVal, selectedIndex, selectedText) => { |
153 | 179 | this.$createDialog({ |
154 | 180 | type: 'warn', |
155 | | - content: `selected content:${selectedText.join(',')} <br/> selectedIndex: ${selectedIndex.join(',')}`, |
| 181 | + content: `Selected Item: <br/> - value: ${selectedVal.join(', ')} <br/> |
| 182 | + - index: ${selectedIndex.join(', ')} <br/> - text: ${selectedText.join(' ')}`, |
156 | 183 | icon: 'cubeic-alert' |
157 | 184 | }).show() |
158 | 185 | }, |
159 | 186 | onCancel: () => { |
160 | 187 | this.$createToast({ |
161 | 188 | type: 'correct', |
162 | | - txt: 'Clicked cancel button', |
| 189 | + txt: 'Picker canceled', |
163 | 190 | time: 1000 |
164 | 191 | }).show() |
165 | 192 | } |
|
175 | 202 | ``` |
176 | 203 |
|
177 | 204 | Instance method `setData` accepts two parameters, both of whom are arrays. The first is data that the roller displays and the second is indexs of selected values. |
| 205 | + |
| 206 | +- Extended component: Date Picker |
178 | 207 |
|
| 208 | + Besides use directly, we could extend many common pickers based on the raw Picker, such as Date Picker and Time Picker. As for Extended pickers, the method of API calling is also recommended. Take Date Picker as an example, We wrote a post-packaging Date Picker component ([source code](https://github.com/didi/cube-ui/blob/dev/example/components/date-picker.vue)) at first. And after `createAPI` for this component, it could be used as following. |
| 209 | + |
| 210 | + ```html |
| 211 | + <cube-button @click="showDatePicker">Date Picker</cube-button> |
| 212 | + ``` |
| 213 | + ```js |
| 214 | + import Vue from 'vue' |
| 215 | + import createAPI from '@/modules/create-api' |
| 216 | + import DatePicker from 'example/components/date-picker.vue' |
| 217 | + |
| 218 | + createAPI(Vue, DatePicker, ['select', 'cancel'], false) |
| 219 | + |
| 220 | + export default { |
| 221 | + mounted () { |
| 222 | + this.datePicker = this.$createDatePicker({ |
| 223 | + min: [2008, 8, 8], |
| 224 | + max: [2020, 10, 20], |
| 225 | + onSelect: (selectedVal, selectedIndex, selectedText) => { |
| 226 | + this.$createDialog({ |
| 227 | + type: 'warn', |
| 228 | + content: `Selected Item: <br/> - value: ${selectedVal.join(', ')} <br/> |
| 229 | + - index: ${selectedIndex.join(', ')} <br/> - text: ${selectedText.join(' ')}`, |
| 230 | + icon: 'cubeic-alert' |
| 231 | + }).show() |
| 232 | + }, |
| 233 | + onCancel: () => { |
| 234 | + this.$createToast({ |
| 235 | + type: 'correct', |
| 236 | + txt: 'Picker canceled', |
| 237 | + time: 1000 |
| 238 | + }).show() |
| 239 | + } |
| 240 | + }) |
| 241 | + }, |
| 242 | + methods: { |
| 243 | + showDatePicker () { |
| 244 | + this.datePicker.show() |
| 245 | + } |
| 246 | + } |
| 247 | + } |
| 248 | + ``` |
| 249 | + |
179 | 250 | ### Props configuration |
180 | 251 |
|
181 | 252 | | Attribute | Description | Type | Accepted Values | Default | |
|
195 | 266 |
|
196 | 267 | ### Events |
197 | 268 |
|
198 | | -| Event Name | Description | Parameters 1 | Parameters 2 | |
199 | | -| - | - | - | - | |
200 | | -| select | triggers when clicking the confirm button | selectedVal: Array, values of each columns in current selected item | selectedIndex: Array, indexes of each columns in current selected item | |
| 269 | +| Event Name | Description | Parameters 1 | Parameters 2 | Parameters 3 | |
| 270 | +| - | - | - | - | - | |
| 271 | +| select | triggers when clicking the confirm button | selectedVal: Array, values of each columns in current selected item | selectedIndex: Array, indexes of each columns in current selected item | selectedText: Array, texts of each columns in current selected item | |
201 | 272 | | change | triggers when the roller scrolls | index: Number, index of current scrolling roller | selectedIndex: Number, index of selected item in current column | |
202 | 273 | | value-change | triggers when confirmed value changes| selectedVal: Array, values of each columns in current confirmed item | selectedIndex: Array, indexes of each columns in current confirmed item | |
203 | 274 | | cancel | triggers when clicking the cancel button | - | - | |
|
0 commit comments