Commit 68e9b1003beb19b3c9f6c2f34af6d343c8aaace0
1 parent
98ca354f
update DatePicker
update DatePicker
Showing
10 changed files
with
67 additions
and
67 deletions
Show diff stats
package.json
1 | { | 1 | { |
2 | "name": "iview", | 2 | "name": "iview", |
3 | - "version": "0.9.11-rc-3", | 3 | + "version": "0.9.11-rc-4", |
4 | "title": "iView", | 4 | "title": "iView", |
5 | "description": "A high quality UI components Library with Vue.js", | 5 | "description": "A high quality UI components Library with Vue.js", |
6 | "homepage": "http://www.iviewui.com", | 6 | "homepage": "http://www.iviewui.com", |
src/components/date-picker/base/date-table.vue
@@ -224,6 +224,7 @@ | @@ -224,6 +224,7 @@ | ||
224 | this.$emit('on-pick', newDate); | 224 | this.$emit('on-pick', newDate); |
225 | } | 225 | } |
226 | } | 226 | } |
227 | + this.$emit('on-pick-click'); | ||
227 | }, | 228 | }, |
228 | handleMouseMove (event) { | 229 | handleMouseMove (event) { |
229 | if (!this.rangeState.selecting) return; | 230 | if (!this.rangeState.selecting) return; |
src/components/date-picker/base/month-table.vue
src/components/date-picker/base/year-table.vue
src/components/date-picker/panel/date-range.vue
@@ -39,7 +39,8 @@ | @@ -39,7 +39,8 @@ | ||
39 | selection-mode="range" | 39 | selection-mode="range" |
40 | :disabled-date="disabledDate" | 40 | :disabled-date="disabledDate" |
41 | @on-changerange="handleChangeRange" | 41 | @on-changerange="handleChangeRange" |
42 | - @on-pick="handleRangePick"></date-table> | 42 | + @on-pick="handleRangePick" |
43 | + @on-pick-click="handlePickClick"></date-table> | ||
43 | <year-table | 44 | <year-table |
44 | v-ref:left-year-table | 45 | v-ref:left-year-table |
45 | v-show="leftCurrentView === 'year'" | 46 | v-show="leftCurrentView === 'year'" |
@@ -47,7 +48,8 @@ | @@ -47,7 +48,8 @@ | ||
47 | :date="leftTableDate" | 48 | :date="leftTableDate" |
48 | selection-mode="range" | 49 | selection-mode="range" |
49 | :disabled-date="disabledDate" | 50 | :disabled-date="disabledDate" |
50 | - @on-pick="handleLeftYearPick"></year-table> | 51 | + @on-pick="handleLeftYearPick" |
52 | + @on-pick-click="handlePickClick"></year-table> | ||
51 | <month-table | 53 | <month-table |
52 | v-ref:left-month-table | 54 | v-ref:left-month-table |
53 | v-show="leftCurrentView === 'month'" | 55 | v-show="leftCurrentView === 'month'" |
@@ -55,7 +57,8 @@ | @@ -55,7 +57,8 @@ | ||
55 | :date="leftTableDate" | 57 | :date="leftTableDate" |
56 | selection-mode="range" | 58 | selection-mode="range" |
57 | :disabled-date="disabledDate" | 59 | :disabled-date="disabledDate" |
58 | - @on-pick="handleLeftMonthPick"></month-table> | 60 | + @on-pick="handleLeftMonthPick" |
61 | + @on-pick-click="handlePickClick"></month-table> | ||
59 | </div> | 62 | </div> |
60 | <div :class="[prefixCls + '-content', prefixCls + '-content-right']"> | 63 | <div :class="[prefixCls + '-content', prefixCls + '-content-right']"> |
61 | <div :class="[datePrefixCls + '-header']" v-show="rightCurrentView !== 'time'"> | 64 | <div :class="[datePrefixCls + '-header']" v-show="rightCurrentView !== 'time'"> |
@@ -89,7 +92,8 @@ | @@ -89,7 +92,8 @@ | ||
89 | selection-mode="range" | 92 | selection-mode="range" |
90 | :disabled-date="disabledDate" | 93 | :disabled-date="disabledDate" |
91 | @on-changerange="handleChangeRange" | 94 | @on-changerange="handleChangeRange" |
92 | - @on-pick="handleRangePick"></date-table> | 95 | + @on-pick="handleRangePick" |
96 | + @on-pick-click="handlePickClick"></date-table> | ||
93 | <year-table | 97 | <year-table |
94 | v-ref:right-year-table | 98 | v-ref:right-year-table |
95 | v-show="rightCurrentView === 'year'" | 99 | v-show="rightCurrentView === 'year'" |
@@ -97,7 +101,8 @@ | @@ -97,7 +101,8 @@ | ||
97 | :date="rightTableDate" | 101 | :date="rightTableDate" |
98 | selection-mode="range" | 102 | selection-mode="range" |
99 | :disabled-date="disabledDate" | 103 | :disabled-date="disabledDate" |
100 | - @on-pick="handleRightYearPick"></year-table> | 104 | + @on-pick="handleRightYearPick" |
105 | + @on-pick-click="handlePickClick"></year-table> | ||
101 | <month-table | 106 | <month-table |
102 | v-ref:right-month-table | 107 | v-ref:right-month-table |
103 | v-show="rightCurrentView === 'month'" | 108 | v-show="rightCurrentView === 'month'" |
@@ -105,7 +110,8 @@ | @@ -105,7 +110,8 @@ | ||
105 | :date="rightTableDate" | 110 | :date="rightTableDate" |
106 | selection-mode="range" | 111 | selection-mode="range" |
107 | :disabled-date="disabledDate" | 112 | :disabled-date="disabledDate" |
108 | - @on-pick="handleRightMonthPick"></month-table> | 113 | + @on-pick="handleRightMonthPick" |
114 | + @on-pick-click="handlePickClick"></month-table> | ||
109 | </div> | 115 | </div> |
110 | <Confirm | 116 | <Confirm |
111 | v-if="confirm" | 117 | v-if="confirm" |
src/components/date-picker/panel/date.vue
@@ -39,7 +39,8 @@ | @@ -39,7 +39,8 @@ | ||
39 | :value="value" | 39 | :value="value" |
40 | :selection-mode="selectionMode" | 40 | :selection-mode="selectionMode" |
41 | :disabled-date="disabledDate" | 41 | :disabled-date="disabledDate" |
42 | - @on-pick="handleDatePick"></date-table> | 42 | + @on-pick="handleDatePick" |
43 | + @on-pick-click="handlePickClick"></date-table> | ||
43 | <year-table | 44 | <year-table |
44 | v-ref:year-table | 45 | v-ref:year-table |
45 | v-show="currentView === 'year'" | 46 | v-show="currentView === 'year'" |
@@ -47,7 +48,8 @@ | @@ -47,7 +48,8 @@ | ||
47 | :date="date" | 48 | :date="date" |
48 | :selection-mode="selectionMode" | 49 | :selection-mode="selectionMode" |
49 | :disabled-date="disabledDate" | 50 | :disabled-date="disabledDate" |
50 | - @on-pick="handleYearPick"></year-table> | 51 | + @on-pick="handleYearPick" |
52 | + @on-pick-click="handlePickClick"></year-table> | ||
51 | <month-table | 53 | <month-table |
52 | v-ref:month-table | 54 | v-ref:month-table |
53 | v-show="currentView === 'month'" | 55 | v-show="currentView === 'month'" |
@@ -55,7 +57,8 @@ | @@ -55,7 +57,8 @@ | ||
55 | :date="date" | 57 | :date="date" |
56 | :selection-mode="selectionMode" | 58 | :selection-mode="selectionMode" |
57 | :disabled-date="disabledDate" | 59 | :disabled-date="disabledDate" |
58 | - @on-pick="handleMonthPick"></month-table> | 60 | + @on-pick="handleMonthPick" |
61 | + @on-pick-click="handlePickClick"></month-table> | ||
59 | </div> | 62 | </div> |
60 | <Confirm | 63 | <Confirm |
61 | v-if="confirm" | 64 | v-if="confirm" |
src/components/date-picker/panel/mixin.js
@@ -19,6 +19,9 @@ export default { | @@ -19,6 +19,9 @@ export default { | ||
19 | }, | 19 | }, |
20 | handlePickSuccess () { | 20 | handlePickSuccess () { |
21 | this.$emit('on-pick-success'); | 21 | this.$emit('on-pick-success'); |
22 | + }, | ||
23 | + handlePickClick () { | ||
24 | + this.$emit('on-pick-click'); | ||
22 | } | 25 | } |
23 | } | 26 | } |
24 | } | 27 | } |
25 | \ No newline at end of file | 28 | \ No newline at end of file |
src/components/date-picker/picker.vue
@@ -181,11 +181,17 @@ | @@ -181,11 +181,17 @@ | ||
181 | type: String, | 181 | type: String, |
182 | default: '' | 182 | default: '' |
183 | }, | 183 | }, |
184 | - align: { | 184 | +// align: { |
185 | +// validator (value) { | ||
186 | +// return oneOf(value, ['left', 'center', 'right']); | ||
187 | +// }, | ||
188 | +// default: 'left' | ||
189 | +// }, | ||
190 | + placement: { | ||
185 | validator (value) { | 191 | validator (value) { |
186 | - return oneOf(value, ['left', 'center', 'right']); | 192 | + return oneOf(value, ['top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end']); |
187 | }, | 193 | }, |
188 | - default: 'left' | 194 | + default: 'bottom-start' |
189 | }, | 195 | }, |
190 | options: { | 196 | options: { |
191 | type: Object | 197 | type: Object |
@@ -197,7 +203,8 @@ | @@ -197,7 +203,8 @@ | ||
197 | showClose: false, | 203 | showClose: false, |
198 | visible: false, | 204 | visible: false, |
199 | picker: null, | 205 | picker: null, |
200 | - internalValue: '' | 206 | + internalValue: '', |
207 | + disableClickOutSide: false // fixed when click a date,trigger clickoutside to close picker | ||
201 | } | 208 | } |
202 | }, | 209 | }, |
203 | computed: { | 210 | computed: { |
@@ -207,9 +214,9 @@ | @@ -207,9 +214,9 @@ | ||
207 | iconType () { | 214 | iconType () { |
208 | return this.showClose ? 'ios-close' : 'ios-calendar-outline'; | 215 | return this.showClose ? 'ios-close' : 'ios-calendar-outline'; |
209 | }, | 216 | }, |
210 | - placement () { | ||
211 | - return PLACEMENT_MAP[this.align]; | ||
212 | - }, | 217 | +// placement () { |
218 | +// return PLACEMENT_MAP[this.align]; | ||
219 | +// }, | ||
213 | selectionMode() { | 220 | selectionMode() { |
214 | if (this.type === 'month') { | 221 | if (this.type === 'month') { |
215 | return 'month'; | 222 | return 'month'; |
@@ -251,7 +258,8 @@ | @@ -251,7 +258,8 @@ | ||
251 | }, | 258 | }, |
252 | methods: { | 259 | methods: { |
253 | handleClose () { | 260 | handleClose () { |
254 | - this.visible = false; | 261 | + if (!this.disableClickOutSide) this.visible = false; |
262 | + this.disableClickOutSide = false; | ||
255 | }, | 263 | }, |
256 | handleFocus () { | 264 | handleFocus () { |
257 | if (this.readonly) return; | 265 | if (this.readonly) return; |
@@ -361,6 +369,7 @@ | @@ -361,6 +369,7 @@ | ||
361 | // this.emitChange(this.value); | 369 | // this.emitChange(this.value); |
362 | this.visible = false; | 370 | this.visible = false; |
363 | }); | 371 | }); |
372 | + this.picker.$on('on-pick-click', () => this.disableClickOutSide = true); | ||
364 | 373 | ||
365 | // todo $on('on-time-range') | 374 | // todo $on('on-time-range') |
366 | } | 375 | } |
test/routers/date.vue
1 | <template> | 1 | <template> |
2 | - <div style="margin: 50px"> | ||
3 | - <i-button @click="type = 'year'">year</i-button> | ||
4 | - <i-button @click="type = 'month'">month</i-button> | ||
5 | - <br> | ||
6 | - <row> | ||
7 | - <i-col span="8"> | ||
8 | - <!--<i-button @click="setDate">set date</i-button>--> | ||
9 | - <date-picker | ||
10 | - type="month" | ||
11 | - style="width:200px" | ||
12 | - placeholder="请选择日期" | ||
13 | - :value.sync="value" | ||
14 | - @on-change="change" | ||
15 | - :confirm="false" | ||
16 | - :options="options" | ||
17 | - open | ||
18 | - @on-open-change="change2"> | ||
19 | - </date-picker> | ||
20 | - </i-col> | ||
21 | - <i-col span="8"> | ||
22 | - <date-picker | ||
23 | - type="daterange" | ||
24 | - style="width:300px" | ||
25 | - placeholder="请选择日期" | ||
26 | - :value.sync="value2" | ||
27 | - align="right" | ||
28 | - :editable="true" | ||
29 | - @on-change="change" | ||
30 | - :confirm="true" | ||
31 | - :options="options2"></date-picker> | ||
32 | - </i-col> | ||
33 | - </row> | 2 | + <div style="margin: 50px;position: relative"> |
3 | + <Card> | ||
4 | + <row> | ||
5 | + <i-col span="12"> | ||
6 | + <date-picker type="date" placeholder="选择日期" style="width: 200px;"></date-picker> | ||
7 | + </i-col> | ||
8 | + <i-col span="12"> | ||
9 | + <date-picker type="daterange" placeholder="选择日期" style="width: 200px;"></date-picker> | ||
10 | + </i-col> | ||
11 | + </row> | ||
12 | + fdsfs | ||
13 | + </Card> | ||
34 | </div> | 14 | </div> |
35 | </template> | 15 | </template> |
36 | <script> | 16 | <script> |
test/routers/dropdown.vue
1 | <template> | 1 | <template> |
2 | - <Dropdown @on-visible-change="v"> | 2 | + <Dropdown trigger="click"> |
3 | <a href="javascript:void(0)"> | 3 | <a href="javascript:void(0)"> |
4 | - 下拉菜单 | 4 | + 北京小吃 |
5 | <Icon type="arrow-down-b"></Icon> | 5 | <Icon type="arrow-down-b"></Icon> |
6 | </a> | 6 | </a> |
7 | <Dropdown-menu slot="list"> | 7 | <Dropdown-menu slot="list"> |
8 | <Dropdown-item>驴打滚</Dropdown-item> | 8 | <Dropdown-item>驴打滚</Dropdown-item> |
9 | <Dropdown-item>炸酱面</Dropdown-item> | 9 | <Dropdown-item>炸酱面</Dropdown-item> |
10 | - <Dropdown-item disabled>豆汁儿</Dropdown-item> | 10 | + <Dropdown-item>豆汁儿</Dropdown-item> |
11 | + <Dropdown placement="right-start"> | ||
12 | + <Dropdown-item> | ||
13 | + 北京烤鸭 | ||
14 | + <Icon type="ios-arrow-right"></Icon> | ||
15 | + </Dropdown-item> | ||
16 | + <Dropdown-menu slot="list"> | ||
17 | + <Dropdown-item>挂炉烤鸭</Dropdown-item> | ||
18 | + <Dropdown-item>焖炉烤鸭</Dropdown-item> | ||
19 | + </Dropdown-menu> | ||
20 | + </Dropdown> | ||
11 | <Dropdown-item>冰糖葫芦</Dropdown-item> | 21 | <Dropdown-item>冰糖葫芦</Dropdown-item> |
12 | - <Dropdown-item divided>北京烤鸭</Dropdown-item> | ||
13 | - </Dropdown-menu> | ||
14 | - </Dropdown> | ||
15 | - <Dropdown style="margin-left: 20px"> | ||
16 | - <i-button type="primary"> | ||
17 | - 下拉菜单 | ||
18 | - <Icon type="arrow-down-b"></Icon> | ||
19 | - </i-button> | ||
20 | - <Dropdown-menu slot="list"> | ||
21 | - <Dropdown-item>驴打滚</Dropdown-item> | ||
22 | - <Dropdown-item>炸酱面</Dropdown-item> | ||
23 | - <Dropdown-item disabled>豆汁儿</Dropdown-item> | ||
24 | - <Dropdown-item>冰糖葫芦</Dropdown-item> | ||
25 | - <Dropdown-item divided>北京烤鸭</Dropdown-item> | ||
26 | </Dropdown-menu> | 22 | </Dropdown-menu> |
27 | </Dropdown> | 23 | </Dropdown> |
28 | </template> | 24 | </template> |