meixioacomponent 1.1.49 → 1.1.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/lib/meixioacomponent.common.js +337 -52
  2. package/lib/meixioacomponent.umd.js +337 -52
  3. package/lib/meixioacomponent.umd.min.js +7 -7
  4. package/package.json +1 -1
  5. package/packages/components/base/baseArea/api.js +7 -0
  6. package/packages/components/base/baseArea/areaConfig.js +4 -3
  7. package/packages/components/base/baseArea/baseAreaV2.vue +157 -0
  8. package/packages/components/base/baseArea/index.js +2 -1
  9. package/packages/components/base/elDatePicker/basic/date-table.vue +441 -441
  10. package/packages/components/base/elDatePicker/basic/month-table.vue +269 -269
  11. package/packages/components/base/elDatePicker/basic/time-spinner.vue +304 -304
  12. package/packages/components/base/elDatePicker/basic/year-table.vue +111 -111
  13. package/packages/components/base/elDatePicker/index.js +6 -6
  14. package/packages/components/base/elDatePicker/index.vue +27 -27
  15. package/packages/components/base/elDatePicker/panel/date-range.vue +680 -680
  16. package/packages/components/base/elDatePicker/panel/date.vue +609 -609
  17. package/packages/components/base/elDatePicker/panel/month-range.vue +289 -289
  18. package/packages/components/base/elDatePicker/panel/time-range.vue +248 -248
  19. package/packages/components/base/elDatePicker/panel/time-select.vue +178 -178
  20. package/packages/components/base/elDatePicker/panel/time.vue +186 -186
  21. package/packages/components/base/elDatePicker/picker/date-picker.js +55 -55
  22. package/packages/components/base/elDatePicker/picker/time-picker.js +39 -39
  23. package/packages/components/base/elDatePicker/picker/time-select.js +21 -21
  24. package/packages/components/base/elDatePicker/picker.vue +956 -956
  25. package/packages/components/proForm/proForm/pro_form.vue +6 -4
@@ -1,289 +1,289 @@
1
- <template>
2
- <transition name="el-zoom-in-top" @after-leave="$emit('dodestroy')">
3
- <div
4
- v-show="visible"
5
- class="el-picker-panel el-date-range-picker el-popper"
6
- :class="[{
7
- 'has-sidebar': $slots.sidebar || shortcuts
8
- }, popperClass]">
9
- <div class="el-picker-panel__body-wrapper">
10
- <slot name="sidebar" class="el-picker-panel__sidebar"></slot>
11
- <div class="el-picker-panel__sidebar" v-if="shortcuts">
12
- <button
13
- type="button"
14
- class="el-picker-panel__shortcut"
15
- v-for="(shortcut, key) in shortcuts"
16
- :key="key"
17
- @click="handleShortcutClick(shortcut)">{{shortcut.text}}</button>
18
- </div>
19
- <div class="el-picker-panel__body">
20
- <div class="el-picker-panel__content el-date-range-picker__content is-left">
21
- <div class="el-date-range-picker__header">
22
- <button
23
- type="button"
24
- @click="leftPrevYear"
25
- class="el-picker-panel__icon-btn el-icon-d-arrow-left"></button>
26
- <button
27
- type="button"
28
- v-if="unlinkPanels"
29
- @click="leftNextYear"
30
- :disabled="!enableYearArrow"
31
- :class="{ 'is-disabled': !enableYearArrow }"
32
- class="el-picker-panel__icon-btn el-icon-d-arrow-right"></button>
33
- <div>{{ leftLabel }}</div>
34
- </div>
35
- <month-table
36
- selection-mode="range"
37
- :date="leftDate"
38
- :default-value="defaultValue"
39
- :min-date="minDate"
40
- :max-date="maxDate"
41
- :range-state="rangeState"
42
- :disabled-date="disabledDate"
43
- @changerange="handleChangeRange"
44
- @pick="handleRangePick">
45
- </month-table>
46
- </div>
47
- <div class="el-picker-panel__content el-date-range-picker__content is-right">
48
- <div class="el-date-range-picker__header">
49
- <button
50
- type="button"
51
- v-if="unlinkPanels"
52
- @click="rightPrevYear"
53
- :disabled="!enableYearArrow"
54
- :class="{ 'is-disabled': !enableYearArrow }"
55
- class="el-picker-panel__icon-btn el-icon-d-arrow-left"></button>
56
- <button
57
- type="button"
58
- @click="rightNextYear"
59
- class="el-picker-panel__icon-btn el-icon-d-arrow-right"></button>
60
- <div>{{ rightLabel }}</div>
61
- </div>
62
- <month-table
63
- selection-mode="range"
64
- :date="rightDate"
65
- :default-value="defaultValue"
66
- :min-date="minDate"
67
- :max-date="maxDate"
68
- :range-state="rangeState"
69
- :disabled-date="disabledDate"
70
- @changerange="handleChangeRange"
71
- @pick="handleRangePick">
72
- </month-table>
73
- </div>
74
- </div>
75
- </div>
76
- </div>
77
- </transition>
78
- </template>
79
-
80
- <script type="text/babel">
81
- import {
82
- isDate,
83
- modifyWithTimeString,
84
- prevYear,
85
- nextYear,
86
- nextMonth
87
- } from 'element-ui/src/utils/date-util';
88
- import Clickoutside from 'element-ui/src/utils/clickoutside';
89
- import Locale from 'element-ui/src/mixins/locale';
90
- import MonthTable from '../basic/month-table';
91
- import ElInput from 'element-ui/packages/input';
92
- import ElButton from 'element-ui/packages/button';
93
-
94
- const calcDefaultValue = (defaultValue) => {
95
- if (Array.isArray(defaultValue)) {
96
- return [new Date(defaultValue[0]), new Date(defaultValue[1])];
97
- } else if (defaultValue) {
98
- return [new Date(defaultValue), nextMonth(new Date(defaultValue))];
99
- } else {
100
- return [new Date(), nextMonth(new Date())];
101
- }
102
- };
103
- export default {
104
- mixins: [Locale],
105
-
106
- directives: { Clickoutside },
107
-
108
- computed: {
109
- btnDisabled() {
110
- return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));
111
- },
112
-
113
- leftLabel() {
114
- return this.leftDate.getFullYear() + ' ' + this.t('el.datepicker.year');
115
- },
116
-
117
- rightLabel() {
118
- return this.rightDate.getFullYear() + ' ' + this.t('el.datepicker.year');
119
- },
120
-
121
- leftYear() {
122
- return this.leftDate.getFullYear();
123
- },
124
-
125
- rightYear() {
126
- return this.rightDate.getFullYear() === this.leftDate.getFullYear() ? this.leftDate.getFullYear() + 1 : this.rightDate.getFullYear();
127
- },
128
-
129
- enableYearArrow() {
130
- return this.unlinkPanels && this.rightYear > this.leftYear + 1;
131
- }
132
- },
133
-
134
- data() {
135
- return {
136
- popperClass: '',
137
- value: [],
138
- defaultValue: null,
139
- defaultTime: null,
140
- minDate: '',
141
- maxDate: '',
142
- leftDate: new Date(),
143
- rightDate: nextYear(new Date()),
144
- rangeState: {
145
- endDate: null,
146
- selecting: false,
147
- row: null,
148
- column: null
149
- },
150
- shortcuts: '',
151
- visible: '',
152
- disabledDate: '',
153
- format: '',
154
- arrowControl: false,
155
- unlinkPanels: false
156
- };
157
- },
158
-
159
- watch: {
160
- value(newVal) {
161
- if (!newVal) {
162
- this.minDate = null;
163
- this.maxDate = null;
164
- } else if (Array.isArray(newVal)) {
165
- this.minDate = isDate(newVal[0]) ? new Date(newVal[0]) : null;
166
- this.maxDate = isDate(newVal[1]) ? new Date(newVal[1]) : null;
167
- if (this.minDate) {
168
- this.leftDate = this.minDate;
169
- if (this.unlinkPanels && this.maxDate) {
170
- const minDateYear = this.minDate.getFullYear();
171
- const maxDateYear = this.maxDate.getFullYear();
172
- this.rightDate = minDateYear === maxDateYear
173
- ? nextYear(this.maxDate)
174
- : this.maxDate;
175
- } else {
176
- this.rightDate = nextYear(this.leftDate);
177
- }
178
- } else {
179
- this.leftDate = calcDefaultValue(this.defaultValue)[0];
180
- this.rightDate = nextYear(this.leftDate);
181
- }
182
- }
183
- },
184
-
185
- defaultValue(val) {
186
- if (!Array.isArray(this.value)) {
187
- const [left, right] = calcDefaultValue(val);
188
- this.leftDate = left;
189
- this.rightDate = val && val[1] && left.getFullYear() !== right.getFullYear() && this.unlinkPanels
190
- ? right
191
- : nextYear(this.leftDate);
192
- }
193
- }
194
- },
195
-
196
- methods: {
197
- handleClear() {
198
- this.minDate = null;
199
- this.maxDate = null;
200
- this.leftDate = calcDefaultValue(this.defaultValue)[0];
201
- this.rightDate = nextYear(this.leftDate);
202
- this.$emit('pick', null);
203
- },
204
-
205
- handleChangeRange(val) {
206
- this.minDate = val.minDate;
207
- this.maxDate = val.maxDate;
208
- this.rangeState = val.rangeState;
209
- },
210
-
211
- handleRangePick(val, close = true) {
212
- const defaultTime = this.defaultTime || [];
213
- const minDate = modifyWithTimeString(val.minDate, defaultTime[0]);
214
- const maxDate = modifyWithTimeString(val.maxDate, defaultTime[1]);
215
- if (this.maxDate === maxDate && this.minDate === minDate) {
216
- return;
217
- }
218
- this.onPick && this.onPick(val);
219
- this.maxDate = maxDate;
220
- this.minDate = minDate;
221
-
222
- // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57
223
- setTimeout(() => {
224
- this.maxDate = maxDate;
225
- this.minDate = minDate;
226
- }, 10);
227
- if (!close) return;
228
- this.handleConfirm();
229
- },
230
-
231
- handleShortcutClick(shortcut) {
232
- if (shortcut.onClick) {
233
- shortcut.onClick(this);
234
- }
235
- },
236
-
237
- // leftPrev*, rightNext* need to take care of `unlinkPanels`
238
- leftPrevYear() {
239
- this.leftDate = prevYear(this.leftDate);
240
- if (!this.unlinkPanels) {
241
- this.rightDate = prevYear(this.rightDate);
242
- }
243
- },
244
-
245
- rightNextYear() {
246
- if (!this.unlinkPanels) {
247
- this.leftDate = nextYear(this.leftDate);
248
- }
249
- this.rightDate = nextYear(this.rightDate);
250
- },
251
-
252
- // leftNext*, rightPrev* are called when `unlinkPanels` is true
253
- leftNextYear() {
254
- this.leftDate = nextYear(this.leftDate);
255
- },
256
-
257
- rightPrevYear() {
258
- this.rightDate = prevYear(this.rightDate);
259
- },
260
-
261
- handleConfirm(visible = false) {
262
- if (this.isValidValue([this.minDate, this.maxDate])) {
263
- this.$emit('pick', [this.minDate, this.maxDate], visible);
264
- }
265
- },
266
-
267
- isValidValue(value) {
268
- return Array.isArray(value) &&
269
- value && value[0] && value[1] &&
270
- isDate(value[0]) && isDate(value[1]) &&
271
- value[0].getTime() <= value[1].getTime() && (
272
- typeof this.disabledDate === 'function'
273
- ? !this.disabledDate(value[0]) && !this.disabledDate(value[1])
274
- : true
275
- );
276
- },
277
-
278
- resetView() {
279
- // NOTE: this is a hack to reset {min, max}Date on picker open.
280
- // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
281
- // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
282
- this.minDate = this.value && isDate(this.value[0]) ? new Date(this.value[0]) : null;
283
- this.maxDate = this.value && isDate(this.value[0]) ? new Date(this.value[1]) : null;
284
- }
285
- },
286
-
287
- components: { MonthTable, ElInput, ElButton }
288
- };
289
- </script>
1
+ <template>
2
+ <transition name="el-zoom-in-top" @after-leave="$emit('dodestroy')">
3
+ <div
4
+ v-show="visible"
5
+ class="el-picker-panel el-date-range-picker el-popper"
6
+ :class="[{
7
+ 'has-sidebar': $slots.sidebar || shortcuts
8
+ }, popperClass]">
9
+ <div class="el-picker-panel__body-wrapper">
10
+ <slot name="sidebar" class="el-picker-panel__sidebar"></slot>
11
+ <div class="el-picker-panel__sidebar" v-if="shortcuts">
12
+ <button
13
+ type="button"
14
+ class="el-picker-panel__shortcut"
15
+ v-for="(shortcut, key) in shortcuts"
16
+ :key="key"
17
+ @click="handleShortcutClick(shortcut)">{{shortcut.text}}</button>
18
+ </div>
19
+ <div class="el-picker-panel__body">
20
+ <div class="el-picker-panel__content el-date-range-picker__content is-left">
21
+ <div class="el-date-range-picker__header">
22
+ <button
23
+ type="button"
24
+ @click="leftPrevYear"
25
+ class="el-picker-panel__icon-btn el-icon-d-arrow-left"></button>
26
+ <button
27
+ type="button"
28
+ v-if="unlinkPanels"
29
+ @click="leftNextYear"
30
+ :disabled="!enableYearArrow"
31
+ :class="{ 'is-disabled': !enableYearArrow }"
32
+ class="el-picker-panel__icon-btn el-icon-d-arrow-right"></button>
33
+ <div>{{ leftLabel }}</div>
34
+ </div>
35
+ <month-table
36
+ selection-mode="range"
37
+ :date="leftDate"
38
+ :default-value="defaultValue"
39
+ :min-date="minDate"
40
+ :max-date="maxDate"
41
+ :range-state="rangeState"
42
+ :disabled-date="disabledDate"
43
+ @changerange="handleChangeRange"
44
+ @pick="handleRangePick">
45
+ </month-table>
46
+ </div>
47
+ <div class="el-picker-panel__content el-date-range-picker__content is-right">
48
+ <div class="el-date-range-picker__header">
49
+ <button
50
+ type="button"
51
+ v-if="unlinkPanels"
52
+ @click="rightPrevYear"
53
+ :disabled="!enableYearArrow"
54
+ :class="{ 'is-disabled': !enableYearArrow }"
55
+ class="el-picker-panel__icon-btn el-icon-d-arrow-left"></button>
56
+ <button
57
+ type="button"
58
+ @click="rightNextYear"
59
+ class="el-picker-panel__icon-btn el-icon-d-arrow-right"></button>
60
+ <div>{{ rightLabel }}</div>
61
+ </div>
62
+ <month-table
63
+ selection-mode="range"
64
+ :date="rightDate"
65
+ :default-value="defaultValue"
66
+ :min-date="minDate"
67
+ :max-date="maxDate"
68
+ :range-state="rangeState"
69
+ :disabled-date="disabledDate"
70
+ @changerange="handleChangeRange"
71
+ @pick="handleRangePick">
72
+ </month-table>
73
+ </div>
74
+ </div>
75
+ </div>
76
+ </div>
77
+ </transition>
78
+ </template>
79
+
80
+ <script type="text/babel">
81
+ import {
82
+ isDate,
83
+ modifyWithTimeString,
84
+ prevYear,
85
+ nextYear,
86
+ nextMonth
87
+ } from 'element-ui/src/utils/date-util';
88
+ import Clickoutside from 'element-ui/src/utils/clickoutside';
89
+ import Locale from 'element-ui/src/mixins/locale';
90
+ import MonthTable from '../basic/month-table';
91
+ import ElInput from 'element-ui/packages/input';
92
+ import ElButton from 'element-ui/packages/button';
93
+
94
+ const calcDefaultValue = (defaultValue) => {
95
+ if (Array.isArray(defaultValue)) {
96
+ return [new Date(defaultValue[0]), new Date(defaultValue[1])];
97
+ } else if (defaultValue) {
98
+ return [new Date(defaultValue), nextMonth(new Date(defaultValue))];
99
+ } else {
100
+ return [new Date(), nextMonth(new Date())];
101
+ }
102
+ };
103
+ export default {
104
+ mixins: [Locale],
105
+
106
+ directives: { Clickoutside },
107
+
108
+ computed: {
109
+ btnDisabled() {
110
+ return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));
111
+ },
112
+
113
+ leftLabel() {
114
+ return this.leftDate.getFullYear() + ' ' + this.t('el.datepicker.year');
115
+ },
116
+
117
+ rightLabel() {
118
+ return this.rightDate.getFullYear() + ' ' + this.t('el.datepicker.year');
119
+ },
120
+
121
+ leftYear() {
122
+ return this.leftDate.getFullYear();
123
+ },
124
+
125
+ rightYear() {
126
+ return this.rightDate.getFullYear() === this.leftDate.getFullYear() ? this.leftDate.getFullYear() + 1 : this.rightDate.getFullYear();
127
+ },
128
+
129
+ enableYearArrow() {
130
+ return this.unlinkPanels && this.rightYear > this.leftYear + 1;
131
+ }
132
+ },
133
+
134
+ data() {
135
+ return {
136
+ popperClass: '',
137
+ value: [],
138
+ defaultValue: null,
139
+ defaultTime: null,
140
+ minDate: '',
141
+ maxDate: '',
142
+ leftDate: new Date(),
143
+ rightDate: nextYear(new Date()),
144
+ rangeState: {
145
+ endDate: null,
146
+ selecting: false,
147
+ row: null,
148
+ column: null
149
+ },
150
+ shortcuts: '',
151
+ visible: '',
152
+ disabledDate: '',
153
+ format: '',
154
+ arrowControl: false,
155
+ unlinkPanels: false
156
+ };
157
+ },
158
+
159
+ watch: {
160
+ value(newVal) {
161
+ if (!newVal) {
162
+ this.minDate = null;
163
+ this.maxDate = null;
164
+ } else if (Array.isArray(newVal)) {
165
+ this.minDate = isDate(newVal[0]) ? new Date(newVal[0]) : null;
166
+ this.maxDate = isDate(newVal[1]) ? new Date(newVal[1]) : null;
167
+ if (this.minDate) {
168
+ this.leftDate = this.minDate;
169
+ if (this.unlinkPanels && this.maxDate) {
170
+ const minDateYear = this.minDate.getFullYear();
171
+ const maxDateYear = this.maxDate.getFullYear();
172
+ this.rightDate = minDateYear === maxDateYear
173
+ ? nextYear(this.maxDate)
174
+ : this.maxDate;
175
+ } else {
176
+ this.rightDate = nextYear(this.leftDate);
177
+ }
178
+ } else {
179
+ this.leftDate = calcDefaultValue(this.defaultValue)[0];
180
+ this.rightDate = nextYear(this.leftDate);
181
+ }
182
+ }
183
+ },
184
+
185
+ defaultValue(val) {
186
+ if (!Array.isArray(this.value)) {
187
+ const [left, right] = calcDefaultValue(val);
188
+ this.leftDate = left;
189
+ this.rightDate = val && val[1] && left.getFullYear() !== right.getFullYear() && this.unlinkPanels
190
+ ? right
191
+ : nextYear(this.leftDate);
192
+ }
193
+ }
194
+ },
195
+
196
+ methods: {
197
+ handleClear() {
198
+ this.minDate = null;
199
+ this.maxDate = null;
200
+ this.leftDate = calcDefaultValue(this.defaultValue)[0];
201
+ this.rightDate = nextYear(this.leftDate);
202
+ this.$emit('pick', null);
203
+ },
204
+
205
+ handleChangeRange(val) {
206
+ this.minDate = val.minDate;
207
+ this.maxDate = val.maxDate;
208
+ this.rangeState = val.rangeState;
209
+ },
210
+
211
+ handleRangePick(val, close = true) {
212
+ const defaultTime = this.defaultTime || [];
213
+ const minDate = modifyWithTimeString(val.minDate, defaultTime[0]);
214
+ const maxDate = modifyWithTimeString(val.maxDate, defaultTime[1]);
215
+ if (this.maxDate === maxDate && this.minDate === minDate) {
216
+ return;
217
+ }
218
+ this.onPick && this.onPick(val);
219
+ this.maxDate = maxDate;
220
+ this.minDate = minDate;
221
+
222
+ // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57
223
+ setTimeout(() => {
224
+ this.maxDate = maxDate;
225
+ this.minDate = minDate;
226
+ }, 10);
227
+ if (!close) return;
228
+ this.handleConfirm();
229
+ },
230
+
231
+ handleShortcutClick(shortcut) {
232
+ if (shortcut.onClick) {
233
+ shortcut.onClick(this);
234
+ }
235
+ },
236
+
237
+ // leftPrev*, rightNext* need to take care of `unlinkPanels`
238
+ leftPrevYear() {
239
+ this.leftDate = prevYear(this.leftDate);
240
+ if (!this.unlinkPanels) {
241
+ this.rightDate = prevYear(this.rightDate);
242
+ }
243
+ },
244
+
245
+ rightNextYear() {
246
+ if (!this.unlinkPanels) {
247
+ this.leftDate = nextYear(this.leftDate);
248
+ }
249
+ this.rightDate = nextYear(this.rightDate);
250
+ },
251
+
252
+ // leftNext*, rightPrev* are called when `unlinkPanels` is true
253
+ leftNextYear() {
254
+ this.leftDate = nextYear(this.leftDate);
255
+ },
256
+
257
+ rightPrevYear() {
258
+ this.rightDate = prevYear(this.rightDate);
259
+ },
260
+
261
+ handleConfirm(visible = false) {
262
+ if (this.isValidValue([this.minDate, this.maxDate])) {
263
+ this.$emit('pick', [this.minDate, this.maxDate], visible);
264
+ }
265
+ },
266
+
267
+ isValidValue(value) {
268
+ return Array.isArray(value) &&
269
+ value && value[0] && value[1] &&
270
+ isDate(value[0]) && isDate(value[1]) &&
271
+ value[0].getTime() <= value[1].getTime() && (
272
+ typeof this.disabledDate === 'function'
273
+ ? !this.disabledDate(value[0]) && !this.disabledDate(value[1])
274
+ : true
275
+ );
276
+ },
277
+
278
+ resetView() {
279
+ // NOTE: this is a hack to reset {min, max}Date on picker open.
280
+ // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
281
+ // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
282
+ this.minDate = this.value && isDate(this.value[0]) ? new Date(this.value[0]) : null;
283
+ this.maxDate = this.value && isDate(this.value[0]) ? new Date(this.value[1]) : null;
284
+ }
285
+ },
286
+
287
+ components: { MonthTable, ElInput, ElButton }
288
+ };
289
+ </script>