Commit 68e9b1003beb19b3c9f6c2f34af6d343c8aaace0
1 parent
98ca354f
update DatePicker
update DatePicker
Showing
10 changed files
with
67 additions
and
67 deletions
Show diff stats
package.json
src/components/date-picker/base/date-table.vue
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 | 39 | selection-mode="range" |
40 | 40 | :disabled-date="disabledDate" |
41 | 41 | @on-changerange="handleChangeRange" |
42 | - @on-pick="handleRangePick"></date-table> | |
42 | + @on-pick="handleRangePick" | |
43 | + @on-pick-click="handlePickClick"></date-table> | |
43 | 44 | <year-table |
44 | 45 | v-ref:left-year-table |
45 | 46 | v-show="leftCurrentView === 'year'" |
... | ... | @@ -47,7 +48,8 @@ |
47 | 48 | :date="leftTableDate" |
48 | 49 | selection-mode="range" |
49 | 50 | :disabled-date="disabledDate" |
50 | - @on-pick="handleLeftYearPick"></year-table> | |
51 | + @on-pick="handleLeftYearPick" | |
52 | + @on-pick-click="handlePickClick"></year-table> | |
51 | 53 | <month-table |
52 | 54 | v-ref:left-month-table |
53 | 55 | v-show="leftCurrentView === 'month'" |
... | ... | @@ -55,7 +57,8 @@ |
55 | 57 | :date="leftTableDate" |
56 | 58 | selection-mode="range" |
57 | 59 | :disabled-date="disabledDate" |
58 | - @on-pick="handleLeftMonthPick"></month-table> | |
60 | + @on-pick="handleLeftMonthPick" | |
61 | + @on-pick-click="handlePickClick"></month-table> | |
59 | 62 | </div> |
60 | 63 | <div :class="[prefixCls + '-content', prefixCls + '-content-right']"> |
61 | 64 | <div :class="[datePrefixCls + '-header']" v-show="rightCurrentView !== 'time'"> |
... | ... | @@ -89,7 +92,8 @@ |
89 | 92 | selection-mode="range" |
90 | 93 | :disabled-date="disabledDate" |
91 | 94 | @on-changerange="handleChangeRange" |
92 | - @on-pick="handleRangePick"></date-table> | |
95 | + @on-pick="handleRangePick" | |
96 | + @on-pick-click="handlePickClick"></date-table> | |
93 | 97 | <year-table |
94 | 98 | v-ref:right-year-table |
95 | 99 | v-show="rightCurrentView === 'year'" |
... | ... | @@ -97,7 +101,8 @@ |
97 | 101 | :date="rightTableDate" |
98 | 102 | selection-mode="range" |
99 | 103 | :disabled-date="disabledDate" |
100 | - @on-pick="handleRightYearPick"></year-table> | |
104 | + @on-pick="handleRightYearPick" | |
105 | + @on-pick-click="handlePickClick"></year-table> | |
101 | 106 | <month-table |
102 | 107 | v-ref:right-month-table |
103 | 108 | v-show="rightCurrentView === 'month'" |
... | ... | @@ -105,7 +110,8 @@ |
105 | 110 | :date="rightTableDate" |
106 | 111 | selection-mode="range" |
107 | 112 | :disabled-date="disabledDate" |
108 | - @on-pick="handleRightMonthPick"></month-table> | |
113 | + @on-pick="handleRightMonthPick" | |
114 | + @on-pick-click="handlePickClick"></month-table> | |
109 | 115 | </div> |
110 | 116 | <Confirm |
111 | 117 | v-if="confirm" | ... | ... |
src/components/date-picker/panel/date.vue
... | ... | @@ -39,7 +39,8 @@ |
39 | 39 | :value="value" |
40 | 40 | :selection-mode="selectionMode" |
41 | 41 | :disabled-date="disabledDate" |
42 | - @on-pick="handleDatePick"></date-table> | |
42 | + @on-pick="handleDatePick" | |
43 | + @on-pick-click="handlePickClick"></date-table> | |
43 | 44 | <year-table |
44 | 45 | v-ref:year-table |
45 | 46 | v-show="currentView === 'year'" |
... | ... | @@ -47,7 +48,8 @@ |
47 | 48 | :date="date" |
48 | 49 | :selection-mode="selectionMode" |
49 | 50 | :disabled-date="disabledDate" |
50 | - @on-pick="handleYearPick"></year-table> | |
51 | + @on-pick="handleYearPick" | |
52 | + @on-pick-click="handlePickClick"></year-table> | |
51 | 53 | <month-table |
52 | 54 | v-ref:month-table |
53 | 55 | v-show="currentView === 'month'" |
... | ... | @@ -55,7 +57,8 @@ |
55 | 57 | :date="date" |
56 | 58 | :selection-mode="selectionMode" |
57 | 59 | :disabled-date="disabledDate" |
58 | - @on-pick="handleMonthPick"></month-table> | |
60 | + @on-pick="handleMonthPick" | |
61 | + @on-pick-click="handlePickClick"></month-table> | |
59 | 62 | </div> |
60 | 63 | <Confirm |
61 | 64 | v-if="confirm" | ... | ... |
src/components/date-picker/panel/mixin.js
src/components/date-picker/picker.vue
... | ... | @@ -181,11 +181,17 @@ |
181 | 181 | type: String, |
182 | 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 | 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 | 196 | options: { |
191 | 197 | type: Object |
... | ... | @@ -197,7 +203,8 @@ |
197 | 203 | showClose: false, |
198 | 204 | visible: false, |
199 | 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 | 210 | computed: { |
... | ... | @@ -207,9 +214,9 @@ |
207 | 214 | iconType () { |
208 | 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 | 220 | selectionMode() { |
214 | 221 | if (this.type === 'month') { |
215 | 222 | return 'month'; |
... | ... | @@ -251,7 +258,8 @@ |
251 | 258 | }, |
252 | 259 | methods: { |
253 | 260 | handleClose () { |
254 | - this.visible = false; | |
261 | + if (!this.disableClickOutSide) this.visible = false; | |
262 | + this.disableClickOutSide = false; | |
255 | 263 | }, |
256 | 264 | handleFocus () { |
257 | 265 | if (this.readonly) return; |
... | ... | @@ -361,6 +369,7 @@ |
361 | 369 | // this.emitChange(this.value); |
362 | 370 | this.visible = false; |
363 | 371 | }); |
372 | + this.picker.$on('on-pick-click', () => this.disableClickOutSide = true); | |
364 | 373 | |
365 | 374 | // todo $on('on-time-range') |
366 | 375 | } | ... | ... |
test/routers/date.vue
1 | 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 | 14 | </div> |
35 | 15 | </template> |
36 | 16 | <script> | ... | ... |
test/routers/dropdown.vue
1 | 1 | <template> |
2 | - <Dropdown @on-visible-change="v"> | |
2 | + <Dropdown trigger="click"> | |
3 | 3 | <a href="javascript:void(0)"> |
4 | - 下拉菜单 | |
4 | + 北京小吃 | |
5 | 5 | <Icon type="arrow-down-b"></Icon> |
6 | 6 | </a> |
7 | 7 | <Dropdown-menu slot="list"> |
8 | 8 | <Dropdown-item>驴打滚</Dropdown-item> |
9 | 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 | 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 | 22 | </Dropdown-menu> |
27 | 23 | </Dropdown> |
28 | 24 | </template> | ... | ... |