@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.
@@ -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
- defaultValue?: ValueType;
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: ValueType, refreshPicker = true) {
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 && (values as BaseValueType[]).length) {
178
+ if (values && values?.length) {
174
179
  switch (type) {
175
180
  case 'date':
176
- this._initDatePickerFromValue(values as BaseValueType[], refreshPicker);
181
+ this._initDatePickerFromValue(values, refreshPicker);
177
182
  break;
178
183
  case 'dateRange':
179
- this._initDateRangePickerFromValue(values as BaseValueType[]);
184
+ this._initDateRangePickerFromValue(values);
180
185
  break;
181
186
  case 'dateTime':
182
- this._initDateTimePickerFromValue(values as BaseValueType[]);
187
+ this._initDateTimePickerFromValue(values);
183
188
  break;
184
189
  case 'dateTimeRange':
185
- this._initDateTimeRangePickerFormValue(values as BaseValueType[]);
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: BaseValueType[], refreshPicker = true) {
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: BaseValueType[], withTime = false) {
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
- this.handleShowDateAndTime(strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
256
- this.handleShowDateAndTime(strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate);
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: BaseValueType[]) {
292
+ _initDateTimePickerFromValue(values: Date[]) {
272
293
  this._initDatePickerFromValue(values);
273
294
  }
274
295
 
275
- _initDateTimeRangePickerFormValue(values: BaseValueType[]) {
296
+ _initDateTimeRangePickerFormValue(values: (Date | null)[]) {
276
297
  this._initDateRangePickerFromValue(values, true);
277
298
  }
278
299
 
package/input/input.scss CHANGED
@@ -623,6 +623,10 @@ $module: #{$prefix}-input;
623
623
  }
624
624
  }
625
625
 
626
+ .#{$prefix}-select{
627
+ overflow-y: visible;
628
+ }
629
+
626
630
  .#{$prefix}-input-number,
627
631
  .#{$prefix}-datepicker,
628
632
  .#{$prefix}-timepicker,
@@ -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 { BaseValueType, PresetPosition, ValueType } from './foundation';
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
- defaultValue?: ValueType;
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: ValueType, refreshPicker?: boolean): void;
109
+ updateSelectedFromProps(values: (Date | null)[], refreshPicker?: boolean): void;
105
110
  calcDisabledTime(panelType: PanelType): any;
106
- _initDatePickerFromValue(values: BaseValueType[], refreshPicker?: boolean): void;
107
- _initDateRangePickerFromValue(values: BaseValueType[], withTime?: boolean): void;
108
- _initDateTimePickerFromValue(values: BaseValueType[]): void;
109
- _initDateTimeRangePickerFormValue(values: BaseValueType[]): void;
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
- this.handleShowDateAndTime(_constants.strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
195
- this.handleShowDateAndTime(_constants.strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate); // init range
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);
@@ -486,6 +486,9 @@
486
486
  top: 1px;
487
487
  bottom: 1px;
488
488
  }
489
+ .semi-input-group .semi-select {
490
+ overflow-y: visible;
491
+ }
489
492
  .semi-input-group .semi-input-number,
490
493
  .semi-input-group .semi-datepicker,
491
494
  .semi-input-group .semi-timepicker,
@@ -623,6 +623,10 @@ $module: #{$prefix}-input;
623
623
  }
624
624
  }
625
625
 
626
+ .#{$prefix}-select{
627
+ overflow-y: visible;
628
+ }
629
+
626
630
  .#{$prefix}-input-number,
627
631
  .#{$prefix}-datepicker,
628
632
  .#{$prefix}-timepicker,
@@ -431,6 +431,7 @@
431
431
  padding-top: 8px;
432
432
  padding-bottom: 8px;
433
433
  cursor: not-allowed;
434
+ height: 20px;
434
435
  }
435
436
 
436
437
  .semi-rtl .semi-select,
@@ -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';
@@ -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-2);
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: transparent;
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-2);
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: transparent;
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-2);
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-2);
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);
@@ -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-2); // 单元格默认背景颜色
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: transparent; // 表头背景色
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-2); // 表格背景颜色 - 默认
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 { BaseValueType, PresetPosition, ValueType } from './foundation';
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
- defaultValue?: ValueType;
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: ValueType, refreshPicker?: boolean): void;
109
+ updateSelectedFromProps(values: (Date | null)[], refreshPicker?: boolean): void;
105
110
  calcDisabledTime(panelType: PanelType): any;
106
- _initDatePickerFromValue(values: BaseValueType[], refreshPicker?: boolean): void;
107
- _initDateRangePickerFromValue(values: BaseValueType[], withTime?: boolean): void;
108
- _initDateTimePickerFromValue(values: BaseValueType[]): void;
109
- _initDateTimeRangePickerFormValue(values: BaseValueType[]): void;
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
- this.handleShowDateAndTime(strings.PANEL_TYPE_LEFT, adjustResult.monthLeft.pickerDate);
174
- this.handleShowDateAndTime(strings.PANEL_TYPE_RIGHT, adjustResult.monthRight.pickerDate); // init range
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);
@@ -486,6 +486,9 @@
486
486
  top: 1px;
487
487
  bottom: 1px;
488
488
  }
489
+ .semi-input-group .semi-select {
490
+ overflow-y: visible;
491
+ }
489
492
  .semi-input-group .semi-input-number,
490
493
  .semi-input-group .semi-datepicker,
491
494
  .semi-input-group .semi-timepicker,
@@ -623,6 +623,10 @@ $module: #{$prefix}-input;
623
623
  }
624
624
  }
625
625
 
626
+ .#{$prefix}-select{
627
+ overflow-y: visible;
628
+ }
629
+
626
630
  .#{$prefix}-input-number,
627
631
  .#{$prefix}-datepicker,
628
632
  .#{$prefix}-timepicker,
@@ -431,6 +431,7 @@
431
431
  padding-top: 8px;
432
432
  padding-bottom: 8px;
433
433
  cursor: not-allowed;
434
+ height: 20px;
434
435
  }
435
436
 
436
437
  .semi-rtl .semi-select,
@@ -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';
@@ -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-2);
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: transparent;
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-2);
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: transparent;
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-2);
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-2);
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);
@@ -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-2); // 单元格默认背景颜色
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: transparent; // 表头背景色
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-2); // 表格背景颜色 - 默认
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.0",
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": "4465cecb0aa8f51f0c559eb829eeec8b567e1876",
26
+ "gitHead": "d9651593e39ad3333e0f138a678460e959d01bbd",
27
27
  "devDependencies": {
28
28
  "@babel/plugin-transform-runtime": "^7.15.8",
29
29
  "@babel/preset-env": "^7.15.8",
@@ -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;
@@ -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-2); // 单元格默认背景颜色
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: transparent; // 表头背景色
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-2); // 表格背景颜色 - 默认
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); // 表格展开行背景颜色 - 默认