@douyinfe/semi-foundation 2.28.0 → 2.28.2
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.
- package/datePicker/foundation.ts +4 -0
- package/datePicker/monthsGridFoundation.ts +36 -15
- package/input/input.scss +4 -0
- package/lib/cjs/datePicker/foundation.d.ts +2 -0
- package/lib/cjs/datePicker/foundation.js +4 -1
- package/lib/cjs/datePicker/monthsGridFoundation.d.ts +12 -7
- package/lib/cjs/datePicker/monthsGridFoundation.js +20 -3
- package/lib/cjs/input/input.css +3 -0
- package/lib/cjs/input/input.scss +4 -0
- package/lib/cjs/select/select.css +1 -0
- package/lib/cjs/select/select.scss +2 -0
- package/lib/cjs/table/table.css +7 -6
- package/lib/cjs/table/table.scss +1 -0
- package/lib/cjs/table/variables.scss +3 -3
- package/lib/es/datePicker/foundation.d.ts +2 -0
- package/lib/es/datePicker/foundation.js +4 -1
- package/lib/es/datePicker/monthsGridFoundation.d.ts +12 -7
- package/lib/es/datePicker/monthsGridFoundation.js +20 -3
- package/lib/es/input/input.css +3 -0
- package/lib/es/input/input.scss +4 -0
- package/lib/es/select/select.css +1 -0
- package/lib/es/select/select.scss +2 -0
- package/lib/es/table/table.css +7 -6
- package/lib/es/table/table.scss +1 -0
- package/lib/es/table/variables.scss +3 -3
- package/package.json +2 -2
- package/select/select.scss +2 -0
- package/table/table.scss +1 -0
- package/table/variables.scss +3 -3
package/datePicker/foundation.ts
CHANGED
|
@@ -175,12 +175,14 @@ export interface DatePickerFoundationProps extends ElementProps, RenderProps, Ev
|
|
|
175
175
|
export interface DatePickerFoundationState {
|
|
176
176
|
panelShow: boolean;
|
|
177
177
|
isRange: boolean;
|
|
178
|
+
/** value of trigger input */
|
|
178
179
|
inputValue: string;
|
|
179
180
|
value: Date[];
|
|
180
181
|
cachedSelectedValue: Date[];
|
|
181
182
|
prevTimeZone: string | number;
|
|
182
183
|
rangeInputFocus: RangeType;
|
|
183
184
|
autofocus: boolean;
|
|
185
|
+
/** value of inset input */
|
|
184
186
|
insetInputValue: InsetInputValue;
|
|
185
187
|
triggerDisabled: boolean
|
|
186
188
|
}
|
|
@@ -248,7 +250,9 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
|
|
|
248
250
|
|
|
249
251
|
const result = this.parseWithTimezone(_value, timeZone, prevTimeZone);
|
|
250
252
|
this._adapter.updatePrevTimezone(prevTimeZone);
|
|
253
|
+
// reset input value when value update
|
|
251
254
|
this._adapter.updateInputValue(null);
|
|
255
|
+
this._adapter.updateInsetInputValue(null);
|
|
252
256
|
this._adapter.updateValue(result);
|
|
253
257
|
this.resetCachedSelectedValue(result);
|
|
254
258
|
this.initRangeInputFocus(result);
|
|
@@ -55,7 +55,8 @@ export type YearMonthChangeType = 'prevMonth' | 'nextMonth' | 'prevYear' | 'next
|
|
|
55
55
|
|
|
56
56
|
export interface MonthsGridFoundationProps extends MonthsGridElementProps {
|
|
57
57
|
type?: Type;
|
|
58
|
-
|
|
58
|
+
/** may be null if selection is not complete when type is dateRange or dateTimeRange */
|
|
59
|
+
defaultValue?: (Date | null)[];
|
|
59
60
|
defaultPickerValue?: ValueType;
|
|
60
61
|
multiple?: boolean;
|
|
61
62
|
max?: number;
|
|
@@ -96,7 +97,11 @@ export interface MonthsGridFoundationProps extends MonthsGridElementProps {
|
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
export interface MonthInfo {
|
|
100
|
+
/** The date displayed in the current date panel, update when switching year and month */
|
|
99
101
|
pickerDate: Date;
|
|
102
|
+
/**
|
|
103
|
+
* Default date or selected date (when selected)
|
|
104
|
+
*/
|
|
100
105
|
showDate: Date;
|
|
101
106
|
isTimePickerOpen: boolean;
|
|
102
107
|
isYearPickerOpen: boolean
|
|
@@ -167,22 +172,22 @@ export default class MonthsGridFoundation extends BaseFoundation<MonthsGridAdapt
|
|
|
167
172
|
}
|
|
168
173
|
}
|
|
169
174
|
|
|
170
|
-
updateSelectedFromProps(values:
|
|
175
|
+
updateSelectedFromProps(values: (Date | null)[], refreshPicker = true) {
|
|
171
176
|
const type: Type = this.getProp('type');
|
|
172
177
|
const { selected, rangeStart, rangeEnd } = this.getStates();
|
|
173
|
-
if (values &&
|
|
178
|
+
if (values && values?.length) {
|
|
174
179
|
switch (type) {
|
|
175
180
|
case 'date':
|
|
176
|
-
this._initDatePickerFromValue(values
|
|
181
|
+
this._initDatePickerFromValue(values, refreshPicker);
|
|
177
182
|
break;
|
|
178
183
|
case 'dateRange':
|
|
179
|
-
this._initDateRangePickerFromValue(values
|
|
184
|
+
this._initDateRangePickerFromValue(values);
|
|
180
185
|
break;
|
|
181
186
|
case 'dateTime':
|
|
182
|
-
this._initDateTimePickerFromValue(values
|
|
187
|
+
this._initDateTimePickerFromValue(values);
|
|
183
188
|
break;
|
|
184
189
|
case 'dateTimeRange':
|
|
185
|
-
this._initDateTimeRangePickerFormValue(values
|
|
190
|
+
this._initDateTimeRangePickerFormValue(values);
|
|
186
191
|
break;
|
|
187
192
|
default:
|
|
188
193
|
break;
|
|
@@ -222,7 +227,7 @@ export default class MonthsGridFoundation extends BaseFoundation<MonthsGridAdapt
|
|
|
222
227
|
}
|
|
223
228
|
}
|
|
224
229
|
|
|
225
|
-
_initDatePickerFromValue(values:
|
|
230
|
+
_initDatePickerFromValue(values: Date[], refreshPicker = true) {
|
|
226
231
|
const monthLeft = this.getState('monthLeft');
|
|
227
232
|
const newMonthLeft = { ...monthLeft };
|
|
228
233
|
// REMOVE:
|
|
@@ -244,16 +249,32 @@ export default class MonthsGridFoundation extends BaseFoundation<MonthsGridAdapt
|
|
|
244
249
|
this._adapter.updateDaySelected(newSelected);
|
|
245
250
|
}
|
|
246
251
|
|
|
247
|
-
_initDateRangePickerFromValue(values:
|
|
252
|
+
_initDateRangePickerFromValue(values: (Date | null)[], withTime = false) {
|
|
248
253
|
// init month panel
|
|
249
|
-
const monthLeft = this.getState('monthLeft');
|
|
250
|
-
const monthRight = this.getState('monthRight');
|
|
254
|
+
const monthLeft = this.getState('monthLeft') as MonthsGridFoundationState['monthLeft'];
|
|
255
|
+
const monthRight = this.getState('monthRight') as MonthsGridFoundationState['monthRight'];
|
|
251
256
|
const adjustResult = this._autoAdjustMonth(
|
|
252
257
|
{ ...monthLeft, pickerDate: values[0] || monthLeft.pickerDate },
|
|
253
258
|
{ ...monthRight, pickerDate: values[1] || monthRight.pickerDate }
|
|
254
259
|
);
|
|
255
|
-
|
|
256
|
-
|
|
260
|
+
|
|
261
|
+
const validValue = Array.isArray(values) && values.filter(item => item).length > 1;
|
|
262
|
+
if (validValue) {
|
|
263
|
+
this.handleShowDateAndTime(strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
|
|
264
|
+
this.handleShowDateAndTime(strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate);
|
|
265
|
+
} else {
|
|
266
|
+
const selectedDate = values.find(item => item) as Date;
|
|
267
|
+
// 如果日期不完整且输入日期不在面板范围内,则更新面板
|
|
268
|
+
if (selectedDate) {
|
|
269
|
+
const notLeftPanelDate = Math.abs(differenceInCalendarMonths(selectedDate, monthLeft.pickerDate)) > 0;
|
|
270
|
+
const notRightPanelDate = Math.abs(differenceInCalendarMonths(selectedDate, monthRight.pickerDate)) > 0;
|
|
271
|
+
|
|
272
|
+
if (notLeftPanelDate && notRightPanelDate) {
|
|
273
|
+
this.handleShowDateAndTime(strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
|
|
274
|
+
this.handleShowDateAndTime(strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
257
278
|
|
|
258
279
|
// init range
|
|
259
280
|
const formatToken = withTime ? strings.FORMAT_DATE_TIME : strings.FORMAT_FULL_DATE;
|
|
@@ -268,11 +289,11 @@ export default class MonthsGridFoundation extends BaseFoundation<MonthsGridAdapt
|
|
|
268
289
|
this._adapter.setHoverDay(rangeEnd);
|
|
269
290
|
}
|
|
270
291
|
|
|
271
|
-
_initDateTimePickerFromValue(values:
|
|
292
|
+
_initDateTimePickerFromValue(values: Date[]) {
|
|
272
293
|
this._initDatePickerFromValue(values);
|
|
273
294
|
}
|
|
274
295
|
|
|
275
|
-
_initDateTimeRangePickerFormValue(values:
|
|
296
|
+
_initDateTimeRangePickerFormValue(values: (Date | null)[]) {
|
|
276
297
|
this._initDateRangePickerFromValue(values, true);
|
|
277
298
|
}
|
|
278
299
|
|
package/input/input.scss
CHANGED
|
@@ -142,12 +142,14 @@ export interface DatePickerFoundationProps extends ElementProps, RenderProps, Ev
|
|
|
142
142
|
export interface DatePickerFoundationState {
|
|
143
143
|
panelShow: boolean;
|
|
144
144
|
isRange: boolean;
|
|
145
|
+
/** value of trigger input */
|
|
145
146
|
inputValue: string;
|
|
146
147
|
value: Date[];
|
|
147
148
|
cachedSelectedValue: Date[];
|
|
148
149
|
prevTimeZone: string | number;
|
|
149
150
|
rangeInputFocus: RangeType;
|
|
150
151
|
autofocus: boolean;
|
|
152
|
+
/** value of inset input */
|
|
151
153
|
insetInputValue: InsetInputValue;
|
|
152
154
|
triggerDisabled: boolean;
|
|
153
155
|
}
|
|
@@ -124,10 +124,13 @@ class DatePickerFoundation extends _foundation.default {
|
|
|
124
124
|
|
|
125
125
|
const result = this.parseWithTimezone(_value, timeZone, prevTimeZone);
|
|
126
126
|
|
|
127
|
-
this._adapter.updatePrevTimezone(prevTimeZone);
|
|
127
|
+
this._adapter.updatePrevTimezone(prevTimeZone); // reset input value when value update
|
|
128
|
+
|
|
128
129
|
|
|
129
130
|
this._adapter.updateInputValue(null);
|
|
130
131
|
|
|
132
|
+
this._adapter.updateInsetInputValue(null);
|
|
133
|
+
|
|
131
134
|
this._adapter.updateValue(result);
|
|
132
135
|
|
|
133
136
|
this.resetCachedSelectedValue(result);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BaseFoundation, { DefaultAdapter } from '../base/foundation';
|
|
2
2
|
import { strings } from './constants';
|
|
3
3
|
import { WeekStartNumber } from './_utils/getMonthTable';
|
|
4
|
-
import {
|
|
4
|
+
import { PresetPosition, ValueType } from './foundation';
|
|
5
5
|
import { MonthDayInfo } from './monthFoundation';
|
|
6
6
|
import { ArrayElement } from '../utils/type';
|
|
7
7
|
declare type Type = ArrayElement<typeof strings.TYPE_SET>;
|
|
@@ -15,7 +15,8 @@ export declare type PanelType = 'left' | 'right';
|
|
|
15
15
|
export declare type YearMonthChangeType = 'prevMonth' | 'nextMonth' | 'prevYear' | 'nextYear';
|
|
16
16
|
export interface MonthsGridFoundationProps extends MonthsGridElementProps {
|
|
17
17
|
type?: Type;
|
|
18
|
-
|
|
18
|
+
/** may be null if selection is not complete when type is dateRange or dateTimeRange */
|
|
19
|
+
defaultValue?: (Date | null)[];
|
|
19
20
|
defaultPickerValue?: ValueType;
|
|
20
21
|
multiple?: boolean;
|
|
21
22
|
max?: number;
|
|
@@ -58,7 +59,11 @@ export interface MonthsGridFoundationProps extends MonthsGridElementProps {
|
|
|
58
59
|
renderDateInput?: any;
|
|
59
60
|
}
|
|
60
61
|
export interface MonthInfo {
|
|
62
|
+
/** The date displayed in the current date panel, update when switching year and month */
|
|
61
63
|
pickerDate: Date;
|
|
64
|
+
/**
|
|
65
|
+
* Default date or selected date (when selected)
|
|
66
|
+
*/
|
|
62
67
|
showDate: Date;
|
|
63
68
|
isTimePickerOpen: boolean;
|
|
64
69
|
isYearPickerOpen: boolean;
|
|
@@ -101,12 +106,12 @@ export default class MonthsGridFoundation extends BaseFoundation<MonthsGridAdapt
|
|
|
101
106
|
constructor(adapter: MonthsGridAdapter);
|
|
102
107
|
init(): void;
|
|
103
108
|
initDefaultPickerValue(): void;
|
|
104
|
-
updateSelectedFromProps(values:
|
|
109
|
+
updateSelectedFromProps(values: (Date | null)[], refreshPicker?: boolean): void;
|
|
105
110
|
calcDisabledTime(panelType: PanelType): any;
|
|
106
|
-
_initDatePickerFromValue(values:
|
|
107
|
-
_initDateRangePickerFromValue(values:
|
|
108
|
-
_initDateTimePickerFromValue(values:
|
|
109
|
-
_initDateTimeRangePickerFormValue(values:
|
|
111
|
+
_initDatePickerFromValue(values: Date[], refreshPicker?: boolean): void;
|
|
112
|
+
_initDateRangePickerFromValue(values: (Date | null)[], withTime?: boolean): void;
|
|
113
|
+
_initDateTimePickerFromValue(values: Date[]): void;
|
|
114
|
+
_initDateTimeRangePickerFormValue(values: (Date | null)[]): void;
|
|
110
115
|
destroy(): void;
|
|
111
116
|
/**
|
|
112
117
|
* sync change another panel month when change months from the else yam panel
|
|
@@ -79,7 +79,7 @@ class MonthsGridFoundation extends _foundation.default {
|
|
|
79
79
|
rangeEnd
|
|
80
80
|
} = this.getStates();
|
|
81
81
|
|
|
82
|
-
if (values && values.length) {
|
|
82
|
+
if (values && (values === null || values === void 0 ? void 0 : values.length)) {
|
|
83
83
|
switch (type) {
|
|
84
84
|
case 'date':
|
|
85
85
|
this._initDatePickerFromValue(values, refreshPicker);
|
|
@@ -191,8 +191,25 @@ class MonthsGridFoundation extends _foundation.default {
|
|
|
191
191
|
pickerDate: values[1] || monthRight.pickerDate
|
|
192
192
|
}));
|
|
193
193
|
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
const validValue = Array.isArray(values) && values.filter(item => item).length > 1;
|
|
195
|
+
|
|
196
|
+
if (validValue) {
|
|
197
|
+
this.handleShowDateAndTime(_constants.strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
|
|
198
|
+
this.handleShowDateAndTime(_constants.strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate);
|
|
199
|
+
} else {
|
|
200
|
+
const selectedDate = values.find(item => item); // 如果日期不完整且输入日期不在面板范围内,则更新面板
|
|
201
|
+
|
|
202
|
+
if (selectedDate) {
|
|
203
|
+
const notLeftPanelDate = Math.abs((0, _dateFns.differenceInCalendarMonths)(selectedDate, monthLeft.pickerDate)) > 0;
|
|
204
|
+
const notRightPanelDate = Math.abs((0, _dateFns.differenceInCalendarMonths)(selectedDate, monthRight.pickerDate)) > 0;
|
|
205
|
+
|
|
206
|
+
if (notLeftPanelDate && notRightPanelDate) {
|
|
207
|
+
this.handleShowDateAndTime(_constants.strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
|
|
208
|
+
this.handleShowDateAndTime(_constants.strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
} // init range
|
|
212
|
+
|
|
196
213
|
|
|
197
214
|
const formatToken = withTime ? _constants.strings.FORMAT_DATE_TIME : _constants.strings.FORMAT_FULL_DATE;
|
|
198
215
|
let rangeStart = values[0] && (0, _dateFns.format)(values[0], formatToken);
|
package/lib/cjs/input/input.css
CHANGED
package/lib/cjs/input/input.scss
CHANGED
|
@@ -463,6 +463,8 @@ $overflowList: #{$prefix}-overflow-list;
|
|
|
463
463
|
padding-top: $spacing-select_loading_wrapper-paddingTop;
|
|
464
464
|
padding-bottom: $spacing-select_loading_wrapper-paddingBottom;
|
|
465
465
|
cursor: not-allowed;
|
|
466
|
+
// make sure that spin align vertical, no need to make 20px as a spacing token here
|
|
467
|
+
height: 20px;
|
|
466
468
|
}
|
|
467
469
|
|
|
468
470
|
@import './rtl.scss';
|
package/lib/cjs/table/table.css
CHANGED
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
z-index: 102;
|
|
87
87
|
}
|
|
88
88
|
.semi-table-header-sticky .semi-table-thead > .semi-table-row > .semi-table-row-head {
|
|
89
|
-
background-color: var(--semi-color-bg-
|
|
89
|
+
background-color: var(--semi-color-bg-1);
|
|
90
90
|
}
|
|
91
91
|
.semi-table-body {
|
|
92
92
|
overflow: auto;
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
width: 48px;
|
|
104
104
|
}
|
|
105
105
|
.semi-table-thead > .semi-table-row > .semi-table-row-head {
|
|
106
|
-
background-color:
|
|
106
|
+
background-color: var(--semi-color-bg-1);
|
|
107
107
|
color: var(--semi-color-text-2);
|
|
108
108
|
font-weight: 600;
|
|
109
109
|
text-align: left;
|
|
@@ -120,10 +120,10 @@
|
|
|
120
120
|
.semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-left, .semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-right {
|
|
121
121
|
z-index: 101;
|
|
122
122
|
position: sticky;
|
|
123
|
-
background-color: var(--semi-color-bg-
|
|
123
|
+
background-color: var(--semi-color-bg-1);
|
|
124
124
|
}
|
|
125
125
|
.semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-left::before, .semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-right::before {
|
|
126
|
-
background-color:
|
|
126
|
+
background-color: var(--semi-color-bg-1);
|
|
127
127
|
content: "";
|
|
128
128
|
position: absolute;
|
|
129
129
|
left: 0;
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
background-color: var(--semi-color-fill-0);
|
|
201
201
|
}
|
|
202
202
|
.semi-table-tbody > .semi-table-row:hover > .semi-table-row-cell.semi-table-cell-fixed-left, .semi-table-tbody > .semi-table-row:hover > .semi-table-row-cell.semi-table-cell-fixed-right {
|
|
203
|
-
background-color: var(--semi-color-bg-
|
|
203
|
+
background-color: var(--semi-color-bg-1);
|
|
204
204
|
}
|
|
205
205
|
.semi-table-tbody > .semi-table-row:hover > .semi-table-row-cell.semi-table-cell-fixed-left::before, .semi-table-tbody > .semi-table-row:hover > .semi-table-row-cell.semi-table-cell-fixed-right::before {
|
|
206
206
|
background-color: var(--semi-color-fill-0);
|
|
@@ -224,6 +224,7 @@
|
|
|
224
224
|
box-sizing: border-box;
|
|
225
225
|
position: relative;
|
|
226
226
|
vertical-align: middle;
|
|
227
|
+
background-color: var(--semi-color-bg-1);
|
|
227
228
|
}
|
|
228
229
|
.semi-table-tbody > .semi-table-row > .semi-table-row-cell.resizing {
|
|
229
230
|
border-right: 2px solid var(--semi-color-primary);
|
|
@@ -234,7 +235,7 @@
|
|
|
234
235
|
.semi-table-tbody > .semi-table-row > .semi-table-cell-fixed-left, .semi-table-tbody > .semi-table-row > .semi-table-cell-fixed-right {
|
|
235
236
|
z-index: 101;
|
|
236
237
|
position: sticky;
|
|
237
|
-
background-color: var(--semi-color-bg-
|
|
238
|
+
background-color: var(--semi-color-bg-1);
|
|
238
239
|
}
|
|
239
240
|
.semi-table-tbody > .semi-table-row > .semi-table-cell-fixed-left-last {
|
|
240
241
|
border-right: 1px solid var(--semi-color-border);
|
package/lib/cjs/table/table.scss
CHANGED
|
@@ -238,6 +238,7 @@ $module: #{$prefix}-table;
|
|
|
238
238
|
box-sizing: border-box;
|
|
239
239
|
position: relative;
|
|
240
240
|
vertical-align: middle;
|
|
241
|
+
background-color: $color-table_body-bg-default;
|
|
241
242
|
|
|
242
243
|
&.resizing {
|
|
243
244
|
border-right: $width-table_resizer_border solid $color-table_resizer-bg-default;
|
|
@@ -47,18 +47,18 @@ $height-table_pagination_outer_min: 60px; // 表格分页器高度
|
|
|
47
47
|
// Color no need to change
|
|
48
48
|
$color-table_panel-bg-default: var(--semi-color-primary); // 操作区域样式默认背景颜色
|
|
49
49
|
$color-table_panel-text-default: var(--semi-color-primary-light-active); // 操作区域样式默认文字颜色
|
|
50
|
-
$color-table-bg-default: var(--semi-color-bg-
|
|
50
|
+
$color-table-bg-default: var(--semi-color-bg-1); // 单元格默认背景颜色
|
|
51
51
|
$color-table-text-default: var(--semi-color-text-0); // 单元格默认文字颜色
|
|
52
52
|
|
|
53
53
|
$color-table-border-default: var(--semi-color-border); // 表格描边颜色
|
|
54
54
|
$color-table_shadow-bg-default: var(--semi-color-shadow); // 表格滚动后阴影颜色
|
|
55
55
|
$color-table_shadow-border-default: var(--semi-color-border); // 表格拟阴影 描边颜色
|
|
56
|
-
$color-table_th-bg-default:
|
|
56
|
+
$color-table_th-bg-default: var(--semi-color-bg-1); // 表头背景色
|
|
57
57
|
$color-table_th-border-default: var(--semi-color-border); // 表头底部分割线颜色
|
|
58
58
|
$color-table_th-text-default: var(--semi-color-text-2); // 表头文字颜色
|
|
59
59
|
|
|
60
60
|
$color-table_pl-bg-default: transparent;
|
|
61
|
-
$color-table_body-bg-default: var(--semi-color-bg-
|
|
61
|
+
$color-table_body-bg-default: var(--semi-color-bg-1); // 表格背景颜色 - 默认
|
|
62
62
|
$color-table_body-bg-hover: var(--semi-color-fill-0); // 表格背景颜色 - 悬浮
|
|
63
63
|
$color-table_footer-bg-default: var(--semi-color-fill-0); // 表格 footer 背景颜色 - 默认
|
|
64
64
|
$color-table_row_expanded-bg-default: var(--semi-color-fill-0); // 表格展开行背景颜色 - 默认
|
|
@@ -142,12 +142,14 @@ export interface DatePickerFoundationProps extends ElementProps, RenderProps, Ev
|
|
|
142
142
|
export interface DatePickerFoundationState {
|
|
143
143
|
panelShow: boolean;
|
|
144
144
|
isRange: boolean;
|
|
145
|
+
/** value of trigger input */
|
|
145
146
|
inputValue: string;
|
|
146
147
|
value: Date[];
|
|
147
148
|
cachedSelectedValue: Date[];
|
|
148
149
|
prevTimeZone: string | number;
|
|
149
150
|
rangeInputFocus: RangeType;
|
|
150
151
|
autofocus: boolean;
|
|
152
|
+
/** value of inset input */
|
|
151
153
|
insetInputValue: InsetInputValue;
|
|
152
154
|
triggerDisabled: boolean;
|
|
153
155
|
}
|
|
@@ -100,10 +100,13 @@ export default class DatePickerFoundation extends BaseFoundation {
|
|
|
100
100
|
|
|
101
101
|
const result = this.parseWithTimezone(_value, timeZone, prevTimeZone);
|
|
102
102
|
|
|
103
|
-
this._adapter.updatePrevTimezone(prevTimeZone);
|
|
103
|
+
this._adapter.updatePrevTimezone(prevTimeZone); // reset input value when value update
|
|
104
|
+
|
|
104
105
|
|
|
105
106
|
this._adapter.updateInputValue(null);
|
|
106
107
|
|
|
108
|
+
this._adapter.updateInsetInputValue(null);
|
|
109
|
+
|
|
107
110
|
this._adapter.updateValue(result);
|
|
108
111
|
|
|
109
112
|
this.resetCachedSelectedValue(result);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BaseFoundation, { DefaultAdapter } from '../base/foundation';
|
|
2
2
|
import { strings } from './constants';
|
|
3
3
|
import { WeekStartNumber } from './_utils/getMonthTable';
|
|
4
|
-
import {
|
|
4
|
+
import { PresetPosition, ValueType } from './foundation';
|
|
5
5
|
import { MonthDayInfo } from './monthFoundation';
|
|
6
6
|
import { ArrayElement } from '../utils/type';
|
|
7
7
|
declare type Type = ArrayElement<typeof strings.TYPE_SET>;
|
|
@@ -15,7 +15,8 @@ export declare type PanelType = 'left' | 'right';
|
|
|
15
15
|
export declare type YearMonthChangeType = 'prevMonth' | 'nextMonth' | 'prevYear' | 'nextYear';
|
|
16
16
|
export interface MonthsGridFoundationProps extends MonthsGridElementProps {
|
|
17
17
|
type?: Type;
|
|
18
|
-
|
|
18
|
+
/** may be null if selection is not complete when type is dateRange or dateTimeRange */
|
|
19
|
+
defaultValue?: (Date | null)[];
|
|
19
20
|
defaultPickerValue?: ValueType;
|
|
20
21
|
multiple?: boolean;
|
|
21
22
|
max?: number;
|
|
@@ -58,7 +59,11 @@ export interface MonthsGridFoundationProps extends MonthsGridElementProps {
|
|
|
58
59
|
renderDateInput?: any;
|
|
59
60
|
}
|
|
60
61
|
export interface MonthInfo {
|
|
62
|
+
/** The date displayed in the current date panel, update when switching year and month */
|
|
61
63
|
pickerDate: Date;
|
|
64
|
+
/**
|
|
65
|
+
* Default date or selected date (when selected)
|
|
66
|
+
*/
|
|
62
67
|
showDate: Date;
|
|
63
68
|
isTimePickerOpen: boolean;
|
|
64
69
|
isYearPickerOpen: boolean;
|
|
@@ -101,12 +106,12 @@ export default class MonthsGridFoundation extends BaseFoundation<MonthsGridAdapt
|
|
|
101
106
|
constructor(adapter: MonthsGridAdapter);
|
|
102
107
|
init(): void;
|
|
103
108
|
initDefaultPickerValue(): void;
|
|
104
|
-
updateSelectedFromProps(values:
|
|
109
|
+
updateSelectedFromProps(values: (Date | null)[], refreshPicker?: boolean): void;
|
|
105
110
|
calcDisabledTime(panelType: PanelType): any;
|
|
106
|
-
_initDatePickerFromValue(values:
|
|
107
|
-
_initDateRangePickerFromValue(values:
|
|
108
|
-
_initDateTimePickerFromValue(values:
|
|
109
|
-
_initDateTimeRangePickerFormValue(values:
|
|
111
|
+
_initDatePickerFromValue(values: Date[], refreshPicker?: boolean): void;
|
|
112
|
+
_initDateRangePickerFromValue(values: (Date | null)[], withTime?: boolean): void;
|
|
113
|
+
_initDateTimePickerFromValue(values: Date[]): void;
|
|
114
|
+
_initDateTimeRangePickerFormValue(values: (Date | null)[]): void;
|
|
110
115
|
destroy(): void;
|
|
111
116
|
/**
|
|
112
117
|
* sync change another panel month when change months from the else yam panel
|
|
@@ -58,7 +58,7 @@ export default class MonthsGridFoundation extends BaseFoundation {
|
|
|
58
58
|
rangeEnd
|
|
59
59
|
} = this.getStates();
|
|
60
60
|
|
|
61
|
-
if (values && values.length) {
|
|
61
|
+
if (values && (values === null || values === void 0 ? void 0 : values.length)) {
|
|
62
62
|
switch (type) {
|
|
63
63
|
case 'date':
|
|
64
64
|
this._initDatePickerFromValue(values, refreshPicker);
|
|
@@ -170,8 +170,25 @@ export default class MonthsGridFoundation extends BaseFoundation {
|
|
|
170
170
|
pickerDate: values[1] || monthRight.pickerDate
|
|
171
171
|
}));
|
|
172
172
|
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
const validValue = Array.isArray(values) && values.filter(item => item).length > 1;
|
|
174
|
+
|
|
175
|
+
if (validValue) {
|
|
176
|
+
this.handleShowDateAndTime(strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
|
|
177
|
+
this.handleShowDateAndTime(strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate);
|
|
178
|
+
} else {
|
|
179
|
+
const selectedDate = values.find(item => item); // 如果日期不完整且输入日期不在面板范围内,则更新面板
|
|
180
|
+
|
|
181
|
+
if (selectedDate) {
|
|
182
|
+
const notLeftPanelDate = Math.abs(differenceInCalendarMonths(selectedDate, monthLeft.pickerDate)) > 0;
|
|
183
|
+
const notRightPanelDate = Math.abs(differenceInCalendarMonths(selectedDate, monthRight.pickerDate)) > 0;
|
|
184
|
+
|
|
185
|
+
if (notLeftPanelDate && notRightPanelDate) {
|
|
186
|
+
this.handleShowDateAndTime(strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
|
|
187
|
+
this.handleShowDateAndTime(strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
} // init range
|
|
191
|
+
|
|
175
192
|
|
|
176
193
|
const formatToken = withTime ? strings.FORMAT_DATE_TIME : strings.FORMAT_FULL_DATE;
|
|
177
194
|
let rangeStart = values[0] && format(values[0], formatToken);
|
package/lib/es/input/input.css
CHANGED
package/lib/es/input/input.scss
CHANGED
package/lib/es/select/select.css
CHANGED
|
@@ -463,6 +463,8 @@ $overflowList: #{$prefix}-overflow-list;
|
|
|
463
463
|
padding-top: $spacing-select_loading_wrapper-paddingTop;
|
|
464
464
|
padding-bottom: $spacing-select_loading_wrapper-paddingBottom;
|
|
465
465
|
cursor: not-allowed;
|
|
466
|
+
// make sure that spin align vertical, no need to make 20px as a spacing token here
|
|
467
|
+
height: 20px;
|
|
466
468
|
}
|
|
467
469
|
|
|
468
470
|
@import './rtl.scss';
|
package/lib/es/table/table.css
CHANGED
|
@@ -86,7 +86,7 @@
|
|
|
86
86
|
z-index: 102;
|
|
87
87
|
}
|
|
88
88
|
.semi-table-header-sticky .semi-table-thead > .semi-table-row > .semi-table-row-head {
|
|
89
|
-
background-color: var(--semi-color-bg-
|
|
89
|
+
background-color: var(--semi-color-bg-1);
|
|
90
90
|
}
|
|
91
91
|
.semi-table-body {
|
|
92
92
|
overflow: auto;
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
width: 48px;
|
|
104
104
|
}
|
|
105
105
|
.semi-table-thead > .semi-table-row > .semi-table-row-head {
|
|
106
|
-
background-color:
|
|
106
|
+
background-color: var(--semi-color-bg-1);
|
|
107
107
|
color: var(--semi-color-text-2);
|
|
108
108
|
font-weight: 600;
|
|
109
109
|
text-align: left;
|
|
@@ -120,10 +120,10 @@
|
|
|
120
120
|
.semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-left, .semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-right {
|
|
121
121
|
z-index: 101;
|
|
122
122
|
position: sticky;
|
|
123
|
-
background-color: var(--semi-color-bg-
|
|
123
|
+
background-color: var(--semi-color-bg-1);
|
|
124
124
|
}
|
|
125
125
|
.semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-left::before, .semi-table-thead > .semi-table-row > .semi-table-row-head.semi-table-cell-fixed-right::before {
|
|
126
|
-
background-color:
|
|
126
|
+
background-color: var(--semi-color-bg-1);
|
|
127
127
|
content: "";
|
|
128
128
|
position: absolute;
|
|
129
129
|
left: 0;
|
|
@@ -200,7 +200,7 @@
|
|
|
200
200
|
background-color: var(--semi-color-fill-0);
|
|
201
201
|
}
|
|
202
202
|
.semi-table-tbody > .semi-table-row:hover > .semi-table-row-cell.semi-table-cell-fixed-left, .semi-table-tbody > .semi-table-row:hover > .semi-table-row-cell.semi-table-cell-fixed-right {
|
|
203
|
-
background-color: var(--semi-color-bg-
|
|
203
|
+
background-color: var(--semi-color-bg-1);
|
|
204
204
|
}
|
|
205
205
|
.semi-table-tbody > .semi-table-row:hover > .semi-table-row-cell.semi-table-cell-fixed-left::before, .semi-table-tbody > .semi-table-row:hover > .semi-table-row-cell.semi-table-cell-fixed-right::before {
|
|
206
206
|
background-color: var(--semi-color-fill-0);
|
|
@@ -224,6 +224,7 @@
|
|
|
224
224
|
box-sizing: border-box;
|
|
225
225
|
position: relative;
|
|
226
226
|
vertical-align: middle;
|
|
227
|
+
background-color: var(--semi-color-bg-1);
|
|
227
228
|
}
|
|
228
229
|
.semi-table-tbody > .semi-table-row > .semi-table-row-cell.resizing {
|
|
229
230
|
border-right: 2px solid var(--semi-color-primary);
|
|
@@ -234,7 +235,7 @@
|
|
|
234
235
|
.semi-table-tbody > .semi-table-row > .semi-table-cell-fixed-left, .semi-table-tbody > .semi-table-row > .semi-table-cell-fixed-right {
|
|
235
236
|
z-index: 101;
|
|
236
237
|
position: sticky;
|
|
237
|
-
background-color: var(--semi-color-bg-
|
|
238
|
+
background-color: var(--semi-color-bg-1);
|
|
238
239
|
}
|
|
239
240
|
.semi-table-tbody > .semi-table-row > .semi-table-cell-fixed-left-last {
|
|
240
241
|
border-right: 1px solid var(--semi-color-border);
|
package/lib/es/table/table.scss
CHANGED
|
@@ -238,6 +238,7 @@ $module: #{$prefix}-table;
|
|
|
238
238
|
box-sizing: border-box;
|
|
239
239
|
position: relative;
|
|
240
240
|
vertical-align: middle;
|
|
241
|
+
background-color: $color-table_body-bg-default;
|
|
241
242
|
|
|
242
243
|
&.resizing {
|
|
243
244
|
border-right: $width-table_resizer_border solid $color-table_resizer-bg-default;
|
|
@@ -47,18 +47,18 @@ $height-table_pagination_outer_min: 60px; // 表格分页器高度
|
|
|
47
47
|
// Color no need to change
|
|
48
48
|
$color-table_panel-bg-default: var(--semi-color-primary); // 操作区域样式默认背景颜色
|
|
49
49
|
$color-table_panel-text-default: var(--semi-color-primary-light-active); // 操作区域样式默认文字颜色
|
|
50
|
-
$color-table-bg-default: var(--semi-color-bg-
|
|
50
|
+
$color-table-bg-default: var(--semi-color-bg-1); // 单元格默认背景颜色
|
|
51
51
|
$color-table-text-default: var(--semi-color-text-0); // 单元格默认文字颜色
|
|
52
52
|
|
|
53
53
|
$color-table-border-default: var(--semi-color-border); // 表格描边颜色
|
|
54
54
|
$color-table_shadow-bg-default: var(--semi-color-shadow); // 表格滚动后阴影颜色
|
|
55
55
|
$color-table_shadow-border-default: var(--semi-color-border); // 表格拟阴影 描边颜色
|
|
56
|
-
$color-table_th-bg-default:
|
|
56
|
+
$color-table_th-bg-default: var(--semi-color-bg-1); // 表头背景色
|
|
57
57
|
$color-table_th-border-default: var(--semi-color-border); // 表头底部分割线颜色
|
|
58
58
|
$color-table_th-text-default: var(--semi-color-text-2); // 表头文字颜色
|
|
59
59
|
|
|
60
60
|
$color-table_pl-bg-default: transparent;
|
|
61
|
-
$color-table_body-bg-default: var(--semi-color-bg-
|
|
61
|
+
$color-table_body-bg-default: var(--semi-color-bg-1); // 表格背景颜色 - 默认
|
|
62
62
|
$color-table_body-bg-hover: var(--semi-color-fill-0); // 表格背景颜色 - 悬浮
|
|
63
63
|
$color-table_footer-bg-default: var(--semi-color-fill-0); // 表格 footer 背景颜色 - 默认
|
|
64
64
|
$color-table_row_expanded-bg-default: var(--semi-color-fill-0); // 表格展开行背景颜色 - 默认
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-foundation",
|
|
3
|
-
"version": "2.28.
|
|
3
|
+
"version": "2.28.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build:lib": "node ./scripts/compileLib.js",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"*.scss",
|
|
24
24
|
"*.css"
|
|
25
25
|
],
|
|
26
|
-
"gitHead": "
|
|
26
|
+
"gitHead": "d9651593e39ad3333e0f138a678460e959d01bbd",
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
29
29
|
"@babel/preset-env": "^7.15.8",
|
package/select/select.scss
CHANGED
|
@@ -463,6 +463,8 @@ $overflowList: #{$prefix}-overflow-list;
|
|
|
463
463
|
padding-top: $spacing-select_loading_wrapper-paddingTop;
|
|
464
464
|
padding-bottom: $spacing-select_loading_wrapper-paddingBottom;
|
|
465
465
|
cursor: not-allowed;
|
|
466
|
+
// make sure that spin align vertical, no need to make 20px as a spacing token here
|
|
467
|
+
height: 20px;
|
|
466
468
|
}
|
|
467
469
|
|
|
468
470
|
@import './rtl.scss';
|
package/table/table.scss
CHANGED
|
@@ -238,6 +238,7 @@ $module: #{$prefix}-table;
|
|
|
238
238
|
box-sizing: border-box;
|
|
239
239
|
position: relative;
|
|
240
240
|
vertical-align: middle;
|
|
241
|
+
background-color: $color-table_body-bg-default;
|
|
241
242
|
|
|
242
243
|
&.resizing {
|
|
243
244
|
border-right: $width-table_resizer_border solid $color-table_resizer-bg-default;
|
package/table/variables.scss
CHANGED
|
@@ -47,18 +47,18 @@ $height-table_pagination_outer_min: 60px; // 表格分页器高度
|
|
|
47
47
|
// Color no need to change
|
|
48
48
|
$color-table_panel-bg-default: var(--semi-color-primary); // 操作区域样式默认背景颜色
|
|
49
49
|
$color-table_panel-text-default: var(--semi-color-primary-light-active); // 操作区域样式默认文字颜色
|
|
50
|
-
$color-table-bg-default: var(--semi-color-bg-
|
|
50
|
+
$color-table-bg-default: var(--semi-color-bg-1); // 单元格默认背景颜色
|
|
51
51
|
$color-table-text-default: var(--semi-color-text-0); // 单元格默认文字颜色
|
|
52
52
|
|
|
53
53
|
$color-table-border-default: var(--semi-color-border); // 表格描边颜色
|
|
54
54
|
$color-table_shadow-bg-default: var(--semi-color-shadow); // 表格滚动后阴影颜色
|
|
55
55
|
$color-table_shadow-border-default: var(--semi-color-border); // 表格拟阴影 描边颜色
|
|
56
|
-
$color-table_th-bg-default:
|
|
56
|
+
$color-table_th-bg-default: var(--semi-color-bg-1); // 表头背景色
|
|
57
57
|
$color-table_th-border-default: var(--semi-color-border); // 表头底部分割线颜色
|
|
58
58
|
$color-table_th-text-default: var(--semi-color-text-2); // 表头文字颜色
|
|
59
59
|
|
|
60
60
|
$color-table_pl-bg-default: transparent;
|
|
61
|
-
$color-table_body-bg-default: var(--semi-color-bg-
|
|
61
|
+
$color-table_body-bg-default: var(--semi-color-bg-1); // 表格背景颜色 - 默认
|
|
62
62
|
$color-table_body-bg-hover: var(--semi-color-fill-0); // 表格背景颜色 - 悬浮
|
|
63
63
|
$color-table_footer-bg-default: var(--semi-color-fill-0); // 表格 footer 背景颜色 - 默认
|
|
64
64
|
$color-table_row_expanded-bg-default: var(--semi-color-fill-0); // 表格展开行背景颜色 - 默认
|