@douyinfe/semi-foundation 2.28.0 → 2.29.0-beta.0

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 (35) hide show
  1. package/datePicker/foundation.ts +1 -1
  2. package/datePicker/inputFoundation.ts +13 -3
  3. package/datePicker/monthsGridFoundation.ts +38 -17
  4. package/form/form.scss +1 -1
  5. package/input/input.scss +4 -0
  6. package/lib/cjs/datePicker/foundation.d.ts +1 -1
  7. package/lib/cjs/datePicker/inputFoundation.d.ts +11 -3
  8. package/lib/cjs/datePicker/monthsGridFoundation.d.ts +13 -8
  9. package/lib/cjs/datePicker/monthsGridFoundation.js +20 -3
  10. package/lib/cjs/form/form.css +1 -0
  11. package/lib/cjs/form/form.scss +1 -1
  12. package/lib/cjs/input/input.css +3 -0
  13. package/lib/cjs/input/input.scss +4 -0
  14. package/lib/cjs/select/select.css +1 -0
  15. package/lib/cjs/select/select.scss +2 -0
  16. package/lib/cjs/slider/slider.css +16 -11
  17. package/lib/cjs/slider/slider.scss +6 -1
  18. package/lib/cjs/slider/variables.scss +13 -9
  19. package/lib/es/datePicker/foundation.d.ts +1 -1
  20. package/lib/es/datePicker/inputFoundation.d.ts +11 -3
  21. package/lib/es/datePicker/monthsGridFoundation.d.ts +13 -8
  22. package/lib/es/datePicker/monthsGridFoundation.js +20 -3
  23. package/lib/es/form/form.css +1 -0
  24. package/lib/es/form/form.scss +1 -1
  25. package/lib/es/input/input.css +3 -0
  26. package/lib/es/input/input.scss +4 -0
  27. package/lib/es/select/select.css +1 -0
  28. package/lib/es/select/select.scss +2 -0
  29. package/lib/es/slider/slider.css +16 -11
  30. package/lib/es/slider/slider.scss +6 -1
  31. package/lib/es/slider/variables.scss +13 -9
  32. package/package.json +2 -2
  33. package/select/select.scss +2 -0
  34. package/slider/slider.scss +6 -1
  35. package/slider/variables.scss +13 -9
@@ -168,7 +168,7 @@ export interface DatePickerFoundationProps extends ElementProps, RenderProps, Ev
168
168
  dateFnsLocale?: any;
169
169
  localeCode?: string;
170
170
  rangeSeparator?: string;
171
- insetInput?: boolean;
171
+ insetInput?: DateInputFoundationProps['insetInput'];
172
172
  preventScroll?: boolean
173
173
  }
174
174
 
@@ -38,9 +38,19 @@ export interface DateInputElementProps {
38
38
  prefix?: any
39
39
  }
40
40
 
41
+ export interface InsetInputProps {
42
+ placeholder?: {
43
+ dateStart?: string;
44
+ dateEnd?: string;
45
+ timeStart?: string;
46
+ timeEnd?: string
47
+ }
48
+ // showClear?: boolean
49
+ }
50
+
41
51
  export interface DateInputFoundationProps extends DateInputElementProps, DateInputEventHandlerProps {
42
52
  [x: string]: any;
43
- value?: BaseValueType[];
53
+ value?: Date[];
44
54
  disabled?: boolean;
45
55
  type?: Type;
46
56
  showClear?: boolean;
@@ -51,7 +61,7 @@ export interface DateInputFoundationProps extends DateInputElementProps, DateInp
51
61
  prefixCls?: string;
52
62
  rangeSeparator?: string;
53
63
  panelType?: PanelType;
54
- insetInput?: boolean;
64
+ insetInput?: boolean | InsetInputProps;
55
65
  insetInputValue?: InsetInputValue;
56
66
  density?: typeof strings.DENSITY_SET[number];
57
67
  defaultPickerValue?: ValueType
@@ -81,7 +91,7 @@ export interface InsetInputChangeProps {
81
91
  insetInputValue: InsetInputValue
82
92
  }
83
93
 
84
- export interface DateInputAdapter extends DefaultAdapter {
94
+ export interface DateInputAdapter extends DefaultAdapter<DateInputFoundationProps, Record<string, any>> {
85
95
  updateIsFocusing: (isFocusing: boolean) => void;
86
96
  notifyClick: DateInputFoundationProps['onClick'];
87
97
  notifyChange: DateInputFoundationProps['onChange'];
@@ -20,7 +20,7 @@ import { includes, isSet, isEqual, isFunction } from 'lodash';
20
20
  import { zonedTimeToUtc } from '../utils/date-fns-extra';
21
21
  import { getDefaultFormatTokenByType } from './_utils/getDefaultFormatToken';
22
22
  import isNullOrUndefined from '../utils/isNullOrUndefined';
23
- import { BaseValueType, PresetPosition, ValueType } from './foundation';
23
+ import { BaseValueType, DateInputFoundationProps, PresetPosition, ValueType } from './foundation';
24
24
  import { MonthDayInfo } from './monthFoundation';
25
25
  import { ArrayElement } from '../utils/type';
26
26
 
@@ -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;
@@ -89,14 +90,18 @@ export interface MonthsGridFoundationProps extends MonthsGridElementProps {
89
90
  isAnotherPanelHasOpened?: (currentRangeInput: 'rangeStart' | 'rangeEnd') => boolean;
90
91
  focusRecordsRef?: any;
91
92
  triggerRender?: (props: Record<string, any>) => any;
92
- insetInput: boolean;
93
+ insetInput: DateInputFoundationProps['insetInput'];
93
94
  presetPosition?: PresetPosition;
94
95
  renderQuickControls?: any;
95
96
  renderDateInput?: any
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/form/form.scss CHANGED
@@ -257,11 +257,11 @@ $rating: #{$prefix}-rating;
257
257
  margin-bottom: 0;
258
258
  padding-top: $spacing-form_field_group_vertical-paddingTop;
259
259
  padding-bottom: $spacing-form_field_group_vertical-paddingBottom;
260
+ overflow: hidden;
260
261
  }
261
262
  }
262
263
 
263
264
  .#{$form}-field-group {
264
-
265
265
  &[x-label-pos="top"] {
266
266
  }
267
267
 
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,
@@ -136,7 +136,7 @@ export interface DatePickerFoundationProps extends ElementProps, RenderProps, Ev
136
136
  dateFnsLocale?: any;
137
137
  localeCode?: string;
138
138
  rangeSeparator?: string;
139
- insetInput?: boolean;
139
+ insetInput?: DateInputFoundationProps['insetInput'];
140
140
  preventScroll?: boolean;
141
141
  }
142
142
  export interface DatePickerFoundationState {
@@ -19,9 +19,17 @@ export interface DateInputElementProps {
19
19
  insetLabel?: any;
20
20
  prefix?: any;
21
21
  }
22
+ export interface InsetInputProps {
23
+ placeholder?: {
24
+ dateStart?: string;
25
+ dateEnd?: string;
26
+ timeStart?: string;
27
+ timeEnd?: string;
28
+ };
29
+ }
22
30
  export interface DateInputFoundationProps extends DateInputElementProps, DateInputEventHandlerProps {
23
31
  [x: string]: any;
24
- value?: BaseValueType[];
32
+ value?: Date[];
25
33
  disabled?: boolean;
26
34
  type?: Type;
27
35
  showClear?: boolean;
@@ -32,7 +40,7 @@ export interface DateInputFoundationProps extends DateInputElementProps, DateInp
32
40
  prefixCls?: string;
33
41
  rangeSeparator?: string;
34
42
  panelType?: PanelType;
35
- insetInput?: boolean;
43
+ insetInput?: boolean | InsetInputProps;
36
44
  insetInputValue?: InsetInputValue;
37
45
  density?: typeof strings.DENSITY_SET[number];
38
46
  defaultPickerValue?: ValueType;
@@ -58,7 +66,7 @@ export interface InsetInputChangeProps {
58
66
  format: string;
59
67
  insetInputValue: InsetInputValue;
60
68
  }
61
- export interface DateInputAdapter extends DefaultAdapter {
69
+ export interface DateInputAdapter extends DefaultAdapter<DateInputFoundationProps, Record<string, any>> {
62
70
  updateIsFocusing: (isFocusing: boolean) => void;
63
71
  notifyClick: DateInputFoundationProps['onClick'];
64
72
  notifyChange: DateInputFoundationProps['onChange'];
@@ -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 { DateInputFoundationProps, 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;
@@ -52,13 +53,17 @@ export interface MonthsGridFoundationProps extends MonthsGridElementProps {
52
53
  isAnotherPanelHasOpened?: (currentRangeInput: 'rangeStart' | 'rangeEnd') => boolean;
53
54
  focusRecordsRef?: any;
54
55
  triggerRender?: (props: Record<string, any>) => any;
55
- insetInput: boolean;
56
+ insetInput: DateInputFoundationProps['insetInput'];
56
57
  presetPosition?: PresetPosition;
57
58
  renderQuickControls?: any;
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);
@@ -173,6 +173,7 @@
173
173
  margin-bottom: 0;
174
174
  padding-top: 12px;
175
175
  padding-bottom: 12px;
176
+ overflow: hidden;
176
177
  }
177
178
  .semi-form-vertical .semi-form-field-group .semi-form-field {
178
179
  margin-top: 0;
@@ -257,11 +257,11 @@ $rating: #{$prefix}-rating;
257
257
  margin-bottom: 0;
258
258
  padding-top: $spacing-form_field_group_vertical-paddingTop;
259
259
  padding-bottom: $spacing-form_field_group_vertical-paddingBottom;
260
+ overflow: hidden;
260
261
  }
261
262
  }
262
263
 
263
264
  .#{$form}-field-group {
264
-
265
265
  &[x-label-pos="top"] {
266
266
  }
267
267
 
@@ -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';
@@ -2,8 +2,8 @@
2
2
  /* sizing */
3
3
  /* spacing */
4
4
  .semi-slider {
5
- padding: 0 13px;
6
- margin: 0;
5
+ padding: 0px 13px;
6
+ margin: 0px;
7
7
  }
8
8
  .semi-slider-wrapper {
9
9
  box-sizing: border-box;
@@ -15,8 +15,8 @@
15
15
  }
16
16
  .semi-slider-rail {
17
17
  box-sizing: border-box;
18
- margin: 0;
19
- padding: 0;
18
+ margin: 0px;
19
+ padding: 0px;
20
20
  color: rgba(0, 0, 0, 0.65);
21
21
  font-size: 14px;
22
22
  font-variant: tabular-nums;
@@ -45,7 +45,7 @@
45
45
  border-radius: 50%;
46
46
  cursor: pointer;
47
47
  transition: background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);
48
- transform: scale(var(--semi-transform_scale-small));
48
+ transform: var(--semi-transform_scale-small) translateX(-50%) translateY(0px);
49
49
  }
50
50
  .semi-slider-handle:focus-visible {
51
51
  outline: 2px solid var(--semi-color-primary-light-active);
@@ -81,6 +81,7 @@
81
81
  background-color: var(--semi-color-white);
82
82
  border-radius: 50%;
83
83
  cursor: pointer;
84
+ transform: translateX(0px);
84
85
  }
85
86
  .semi-slider-dot-active {
86
87
  background-color: var(--semi-color-white);
@@ -88,7 +89,7 @@
88
89
  .semi-slider-marks {
89
90
  position: absolute;
90
91
  top: 23px;
91
- left: 0;
92
+ left: 0px;
92
93
  width: 100%;
93
94
  font-size: 14px;
94
95
  }
@@ -103,7 +104,7 @@
103
104
  .semi-slider-marks-reverse {
104
105
  position: absolute;
105
106
  top: 23px;
106
- left: 0;
107
+ left: 0px;
107
108
  width: 100%;
108
109
  font-size: 14px;
109
110
  }
@@ -127,10 +128,10 @@
127
128
  display: inline-block;
128
129
  }
129
130
  .semi-slider-boundary-min {
130
- left: 0;
131
+ left: 0px;
131
132
  }
132
133
  .semi-slider-boundary-max {
133
- right: 0;
134
+ right: 0px;
134
135
  }
135
136
  .semi-slider-boundary-show {
136
137
  visibility: visible;
@@ -156,11 +157,15 @@
156
157
  .semi-slider-vertical-wrapper .semi-slider-rail {
157
158
  width: 4px;
158
159
  height: 100%;
159
- top: 0;
160
+ top: 0px;
160
161
  }
161
162
  .semi-slider-vertical-wrapper .semi-slider-handle {
162
- margin-top: 0;
163
+ margin-top: 0px;
163
164
  margin-left: -10px;
165
+ transform: var(--semi-transform_scale-small) translateY(-50%) translateX(0px);
166
+ }
167
+ .semi-slider-vertical-wrapper .semi-slider-dot {
168
+ transform: translateY(0px);
164
169
  }
165
170
 
166
171
  .semi-slider-disabled {
@@ -57,7 +57,7 @@ $module: #{$prefix}-slider;
57
57
  border-radius: 50%;
58
58
  cursor: pointer;
59
59
  transition: background-color $transition_duration_slider_handle-bg $transition_function-slider-handle-bg $transition_delay-slider_handle-bg;
60
- transform: scale($transform_scale-slider_handle);
60
+ transform: $transform_scale-slider_handle translateX(-50%) translateY($spacing-slider_handle-translateY);
61
61
  &:focus-visible {
62
62
  outline: $width-slider_handle-focus solid $color-slider_handle-focus;
63
63
  }
@@ -101,6 +101,7 @@ $module: #{$prefix}-slider;
101
101
  //border: 1px solid $color-control-bg-default;
102
102
  border-radius: 50%;
103
103
  cursor: pointer;
104
+ transform: translateX($spacing-slider_dot-translateX);
104
105
  }
105
106
 
106
107
  &-dot-active {
@@ -196,6 +197,10 @@ $module: #{$prefix}-slider;
196
197
  .#{$module}-handle {
197
198
  margin-top: $spacing-slider_vertical_handle-marginTop;
198
199
  margin-left: $spacing-slider_vertical_handle-marginLeft;
200
+ transform: $transform_scale-slider_handle translateY(-50%) translateX($spacing-slider_vertical_handle-translateX);
201
+ }
202
+ .#{$module}-dot{
203
+ transform: translateY($spacing-slider_vertical_dot-translateY);
199
204
  }
200
205
  }
201
206
 
@@ -18,26 +18,30 @@ $color-slider_handle-focus: var(--semi-color-primary-light-active); // 圆形按
18
18
 
19
19
  // Spacing
20
20
  $spacing-slider-paddingX: 13px; // 滑动条整体水平内边距
21
- $spacing-slider-paddingY: 0; // 滑动条整体垂直内边距
22
- $spacing-slider-margin: 0; // 滑动条整体外边距
23
- $spacing-slider_rail-margin: 0; // 滑动条轨道外边距
24
- $spacing-slider_rail-padding: 0; // 滑动条轨道内边距
21
+ $spacing-slider-paddingY: 0px; // 滑动条整体垂直内边距
22
+ $spacing-slider-margin: 0px; // 滑动条整体外边距
23
+ $spacing-slider_rail-margin: 0px; // 滑动条轨道外边距
24
+ $spacing-slider_rail-padding: 0px; // 滑动条轨道内边距
25
25
  $spacing-slider_rail-top: 14px; // 滑动条未填充轨道顶部距离
26
26
  $spacing-slider_handle-marginTop: 4px; // 滑动条圆形按钮顶部外边距
27
27
  $spacing-slider_track-top: 14px; // 滑动条已填充轨道顶部距离
28
28
  $spacing-slider_tooltip-top: -40px; // 滑动条工具提示顶部距离
29
29
  $spacing-slider_dot-top: 14px; // 滑动条圆形刻度点顶部距离
30
30
  $spacing-slider_marks-top: 23px; // 滑动条刻度标签顶部距离
31
- $spacing-slider_marks-left: 0; // 滑动条刻度标签左侧距离
31
+ $spacing-slider_marks-left: 0px; // 滑动条刻度标签左侧距离
32
32
  $spacing-slider_boundary-top: 30px;
33
- $spacing-slider_boundary_min-left: 0;
34
- $spacing-slider_boundary_max-right: 0;
33
+ $spacing-slider_boundary_min-left: 0px;
34
+ $spacing-slider_boundary_max-right: 0px;
35
35
  $spacing-slider_vertical_marks-marginTop: -30px; // 垂直滑动条刻度标签顶部外边距
36
36
  $spacing-slider_vertical_marks-marginLeft: 29px; // 垂直滑动条刻度标签左侧外边距
37
37
  $spacing-slider_vertical_marks-reverse-marginLeft: -26px; // 垂直滑动条刻度标签左侧外边距(标签在左侧时)
38
- $spacing-slider_vertical_rail-top: 0; // 垂直滑动条轨道顶部距离
39
- $spacing-slider_vertical_handle-marginTop: 0; // 垂直滑动条原型按钮顶部外边距
38
+ $spacing-slider_vertical_rail-top: 0px; // 垂直滑动条轨道顶部距离
39
+ $spacing-slider_vertical_handle-marginTop: 0px; // 垂直滑动条原型按钮顶部外边距
40
40
  $spacing-slider_vertical_handle-marginLeft: -10px; // 垂直滑动条原型按钮左侧外边距
41
+ $spacing-slider_handle-translateY: 0px; // 水平滑动条原型按钮垂直偏移量
42
+ $spacing-slider_vertical_handle-translateX: 0px; // 垂直滑动条原型按钮水平偏移量
43
+ $spacing-slider_dot-translateX: 0px; // 水平滑动条圆形刻度点水平偏移量
44
+ $spacing-slider_vertical_dot-translateY: 0px; // 垂直滑动条圆形刻度点垂直偏移量
41
45
 
42
46
  // Radius
43
47
  $radius-slider_rail: var(--semi-border-radius-small); // 滚动条未填充轨道圆角
@@ -136,7 +136,7 @@ export interface DatePickerFoundationProps extends ElementProps, RenderProps, Ev
136
136
  dateFnsLocale?: any;
137
137
  localeCode?: string;
138
138
  rangeSeparator?: string;
139
- insetInput?: boolean;
139
+ insetInput?: DateInputFoundationProps['insetInput'];
140
140
  preventScroll?: boolean;
141
141
  }
142
142
  export interface DatePickerFoundationState {
@@ -19,9 +19,17 @@ export interface DateInputElementProps {
19
19
  insetLabel?: any;
20
20
  prefix?: any;
21
21
  }
22
+ export interface InsetInputProps {
23
+ placeholder?: {
24
+ dateStart?: string;
25
+ dateEnd?: string;
26
+ timeStart?: string;
27
+ timeEnd?: string;
28
+ };
29
+ }
22
30
  export interface DateInputFoundationProps extends DateInputElementProps, DateInputEventHandlerProps {
23
31
  [x: string]: any;
24
- value?: BaseValueType[];
32
+ value?: Date[];
25
33
  disabled?: boolean;
26
34
  type?: Type;
27
35
  showClear?: boolean;
@@ -32,7 +40,7 @@ export interface DateInputFoundationProps extends DateInputElementProps, DateInp
32
40
  prefixCls?: string;
33
41
  rangeSeparator?: string;
34
42
  panelType?: PanelType;
35
- insetInput?: boolean;
43
+ insetInput?: boolean | InsetInputProps;
36
44
  insetInputValue?: InsetInputValue;
37
45
  density?: typeof strings.DENSITY_SET[number];
38
46
  defaultPickerValue?: ValueType;
@@ -58,7 +66,7 @@ export interface InsetInputChangeProps {
58
66
  format: string;
59
67
  insetInputValue: InsetInputValue;
60
68
  }
61
- export interface DateInputAdapter extends DefaultAdapter {
69
+ export interface DateInputAdapter extends DefaultAdapter<DateInputFoundationProps, Record<string, any>> {
62
70
  updateIsFocusing: (isFocusing: boolean) => void;
63
71
  notifyClick: DateInputFoundationProps['onClick'];
64
72
  notifyChange: DateInputFoundationProps['onChange'];
@@ -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 { DateInputFoundationProps, 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;
@@ -52,13 +53,17 @@ export interface MonthsGridFoundationProps extends MonthsGridElementProps {
52
53
  isAnotherPanelHasOpened?: (currentRangeInput: 'rangeStart' | 'rangeEnd') => boolean;
53
54
  focusRecordsRef?: any;
54
55
  triggerRender?: (props: Record<string, any>) => any;
55
- insetInput: boolean;
56
+ insetInput: DateInputFoundationProps['insetInput'];
56
57
  presetPosition?: PresetPosition;
57
58
  renderQuickControls?: any;
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);
@@ -173,6 +173,7 @@
173
173
  margin-bottom: 0;
174
174
  padding-top: 12px;
175
175
  padding-bottom: 12px;
176
+ overflow: hidden;
176
177
  }
177
178
  .semi-form-vertical .semi-form-field-group .semi-form-field {
178
179
  margin-top: 0;
@@ -257,11 +257,11 @@ $rating: #{$prefix}-rating;
257
257
  margin-bottom: 0;
258
258
  padding-top: $spacing-form_field_group_vertical-paddingTop;
259
259
  padding-bottom: $spacing-form_field_group_vertical-paddingBottom;
260
+ overflow: hidden;
260
261
  }
261
262
  }
262
263
 
263
264
  .#{$form}-field-group {
264
-
265
265
  &[x-label-pos="top"] {
266
266
  }
267
267
 
@@ -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';
@@ -2,8 +2,8 @@
2
2
  /* sizing */
3
3
  /* spacing */
4
4
  .semi-slider {
5
- padding: 0 13px;
6
- margin: 0;
5
+ padding: 0px 13px;
6
+ margin: 0px;
7
7
  }
8
8
  .semi-slider-wrapper {
9
9
  box-sizing: border-box;
@@ -15,8 +15,8 @@
15
15
  }
16
16
  .semi-slider-rail {
17
17
  box-sizing: border-box;
18
- margin: 0;
19
- padding: 0;
18
+ margin: 0px;
19
+ padding: 0px;
20
20
  color: rgba(0, 0, 0, 0.65);
21
21
  font-size: 14px;
22
22
  font-variant: tabular-nums;
@@ -45,7 +45,7 @@
45
45
  border-radius: 50%;
46
46
  cursor: pointer;
47
47
  transition: background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);
48
- transform: scale(var(--semi-transform_scale-small));
48
+ transform: var(--semi-transform_scale-small) translateX(-50%) translateY(0px);
49
49
  }
50
50
  .semi-slider-handle:focus-visible {
51
51
  outline: 2px solid var(--semi-color-primary-light-active);
@@ -81,6 +81,7 @@
81
81
  background-color: var(--semi-color-white);
82
82
  border-radius: 50%;
83
83
  cursor: pointer;
84
+ transform: translateX(0px);
84
85
  }
85
86
  .semi-slider-dot-active {
86
87
  background-color: var(--semi-color-white);
@@ -88,7 +89,7 @@
88
89
  .semi-slider-marks {
89
90
  position: absolute;
90
91
  top: 23px;
91
- left: 0;
92
+ left: 0px;
92
93
  width: 100%;
93
94
  font-size: 14px;
94
95
  }
@@ -103,7 +104,7 @@
103
104
  .semi-slider-marks-reverse {
104
105
  position: absolute;
105
106
  top: 23px;
106
- left: 0;
107
+ left: 0px;
107
108
  width: 100%;
108
109
  font-size: 14px;
109
110
  }
@@ -127,10 +128,10 @@
127
128
  display: inline-block;
128
129
  }
129
130
  .semi-slider-boundary-min {
130
- left: 0;
131
+ left: 0px;
131
132
  }
132
133
  .semi-slider-boundary-max {
133
- right: 0;
134
+ right: 0px;
134
135
  }
135
136
  .semi-slider-boundary-show {
136
137
  visibility: visible;
@@ -156,11 +157,15 @@
156
157
  .semi-slider-vertical-wrapper .semi-slider-rail {
157
158
  width: 4px;
158
159
  height: 100%;
159
- top: 0;
160
+ top: 0px;
160
161
  }
161
162
  .semi-slider-vertical-wrapper .semi-slider-handle {
162
- margin-top: 0;
163
+ margin-top: 0px;
163
164
  margin-left: -10px;
165
+ transform: var(--semi-transform_scale-small) translateY(-50%) translateX(0px);
166
+ }
167
+ .semi-slider-vertical-wrapper .semi-slider-dot {
168
+ transform: translateY(0px);
164
169
  }
165
170
 
166
171
  .semi-slider-disabled {
@@ -57,7 +57,7 @@ $module: #{$prefix}-slider;
57
57
  border-radius: 50%;
58
58
  cursor: pointer;
59
59
  transition: background-color $transition_duration_slider_handle-bg $transition_function-slider-handle-bg $transition_delay-slider_handle-bg;
60
- transform: scale($transform_scale-slider_handle);
60
+ transform: $transform_scale-slider_handle translateX(-50%) translateY($spacing-slider_handle-translateY);
61
61
  &:focus-visible {
62
62
  outline: $width-slider_handle-focus solid $color-slider_handle-focus;
63
63
  }
@@ -101,6 +101,7 @@ $module: #{$prefix}-slider;
101
101
  //border: 1px solid $color-control-bg-default;
102
102
  border-radius: 50%;
103
103
  cursor: pointer;
104
+ transform: translateX($spacing-slider_dot-translateX);
104
105
  }
105
106
 
106
107
  &-dot-active {
@@ -196,6 +197,10 @@ $module: #{$prefix}-slider;
196
197
  .#{$module}-handle {
197
198
  margin-top: $spacing-slider_vertical_handle-marginTop;
198
199
  margin-left: $spacing-slider_vertical_handle-marginLeft;
200
+ transform: $transform_scale-slider_handle translateY(-50%) translateX($spacing-slider_vertical_handle-translateX);
201
+ }
202
+ .#{$module}-dot{
203
+ transform: translateY($spacing-slider_vertical_dot-translateY);
199
204
  }
200
205
  }
201
206
 
@@ -18,26 +18,30 @@ $color-slider_handle-focus: var(--semi-color-primary-light-active); // 圆形按
18
18
 
19
19
  // Spacing
20
20
  $spacing-slider-paddingX: 13px; // 滑动条整体水平内边距
21
- $spacing-slider-paddingY: 0; // 滑动条整体垂直内边距
22
- $spacing-slider-margin: 0; // 滑动条整体外边距
23
- $spacing-slider_rail-margin: 0; // 滑动条轨道外边距
24
- $spacing-slider_rail-padding: 0; // 滑动条轨道内边距
21
+ $spacing-slider-paddingY: 0px; // 滑动条整体垂直内边距
22
+ $spacing-slider-margin: 0px; // 滑动条整体外边距
23
+ $spacing-slider_rail-margin: 0px; // 滑动条轨道外边距
24
+ $spacing-slider_rail-padding: 0px; // 滑动条轨道内边距
25
25
  $spacing-slider_rail-top: 14px; // 滑动条未填充轨道顶部距离
26
26
  $spacing-slider_handle-marginTop: 4px; // 滑动条圆形按钮顶部外边距
27
27
  $spacing-slider_track-top: 14px; // 滑动条已填充轨道顶部距离
28
28
  $spacing-slider_tooltip-top: -40px; // 滑动条工具提示顶部距离
29
29
  $spacing-slider_dot-top: 14px; // 滑动条圆形刻度点顶部距离
30
30
  $spacing-slider_marks-top: 23px; // 滑动条刻度标签顶部距离
31
- $spacing-slider_marks-left: 0; // 滑动条刻度标签左侧距离
31
+ $spacing-slider_marks-left: 0px; // 滑动条刻度标签左侧距离
32
32
  $spacing-slider_boundary-top: 30px;
33
- $spacing-slider_boundary_min-left: 0;
34
- $spacing-slider_boundary_max-right: 0;
33
+ $spacing-slider_boundary_min-left: 0px;
34
+ $spacing-slider_boundary_max-right: 0px;
35
35
  $spacing-slider_vertical_marks-marginTop: -30px; // 垂直滑动条刻度标签顶部外边距
36
36
  $spacing-slider_vertical_marks-marginLeft: 29px; // 垂直滑动条刻度标签左侧外边距
37
37
  $spacing-slider_vertical_marks-reverse-marginLeft: -26px; // 垂直滑动条刻度标签左侧外边距(标签在左侧时)
38
- $spacing-slider_vertical_rail-top: 0; // 垂直滑动条轨道顶部距离
39
- $spacing-slider_vertical_handle-marginTop: 0; // 垂直滑动条原型按钮顶部外边距
38
+ $spacing-slider_vertical_rail-top: 0px; // 垂直滑动条轨道顶部距离
39
+ $spacing-slider_vertical_handle-marginTop: 0px; // 垂直滑动条原型按钮顶部外边距
40
40
  $spacing-slider_vertical_handle-marginLeft: -10px; // 垂直滑动条原型按钮左侧外边距
41
+ $spacing-slider_handle-translateY: 0px; // 水平滑动条原型按钮垂直偏移量
42
+ $spacing-slider_vertical_handle-translateX: 0px; // 垂直滑动条原型按钮水平偏移量
43
+ $spacing-slider_dot-translateX: 0px; // 水平滑动条圆形刻度点水平偏移量
44
+ $spacing-slider_vertical_dot-translateY: 0px; // 垂直滑动条圆形刻度点垂直偏移量
41
45
 
42
46
  // Radius
43
47
  $radius-slider_rail: var(--semi-border-radius-small); // 滚动条未填充轨道圆角
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-foundation",
3
- "version": "2.28.0",
3
+ "version": "2.29.0-beta.0",
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": "4b12cb8b712ec0dd1e8adee7ba0c9f5a9f4799f2",
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';
@@ -57,7 +57,7 @@ $module: #{$prefix}-slider;
57
57
  border-radius: 50%;
58
58
  cursor: pointer;
59
59
  transition: background-color $transition_duration_slider_handle-bg $transition_function-slider-handle-bg $transition_delay-slider_handle-bg;
60
- transform: scale($transform_scale-slider_handle);
60
+ transform: $transform_scale-slider_handle translateX(-50%) translateY($spacing-slider_handle-translateY);
61
61
  &:focus-visible {
62
62
  outline: $width-slider_handle-focus solid $color-slider_handle-focus;
63
63
  }
@@ -101,6 +101,7 @@ $module: #{$prefix}-slider;
101
101
  //border: 1px solid $color-control-bg-default;
102
102
  border-radius: 50%;
103
103
  cursor: pointer;
104
+ transform: translateX($spacing-slider_dot-translateX);
104
105
  }
105
106
 
106
107
  &-dot-active {
@@ -196,6 +197,10 @@ $module: #{$prefix}-slider;
196
197
  .#{$module}-handle {
197
198
  margin-top: $spacing-slider_vertical_handle-marginTop;
198
199
  margin-left: $spacing-slider_vertical_handle-marginLeft;
200
+ transform: $transform_scale-slider_handle translateY(-50%) translateX($spacing-slider_vertical_handle-translateX);
201
+ }
202
+ .#{$module}-dot{
203
+ transform: translateY($spacing-slider_vertical_dot-translateY);
199
204
  }
200
205
  }
201
206
 
@@ -18,26 +18,30 @@ $color-slider_handle-focus: var(--semi-color-primary-light-active); // 圆形按
18
18
 
19
19
  // Spacing
20
20
  $spacing-slider-paddingX: 13px; // 滑动条整体水平内边距
21
- $spacing-slider-paddingY: 0; // 滑动条整体垂直内边距
22
- $spacing-slider-margin: 0; // 滑动条整体外边距
23
- $spacing-slider_rail-margin: 0; // 滑动条轨道外边距
24
- $spacing-slider_rail-padding: 0; // 滑动条轨道内边距
21
+ $spacing-slider-paddingY: 0px; // 滑动条整体垂直内边距
22
+ $spacing-slider-margin: 0px; // 滑动条整体外边距
23
+ $spacing-slider_rail-margin: 0px; // 滑动条轨道外边距
24
+ $spacing-slider_rail-padding: 0px; // 滑动条轨道内边距
25
25
  $spacing-slider_rail-top: 14px; // 滑动条未填充轨道顶部距离
26
26
  $spacing-slider_handle-marginTop: 4px; // 滑动条圆形按钮顶部外边距
27
27
  $spacing-slider_track-top: 14px; // 滑动条已填充轨道顶部距离
28
28
  $spacing-slider_tooltip-top: -40px; // 滑动条工具提示顶部距离
29
29
  $spacing-slider_dot-top: 14px; // 滑动条圆形刻度点顶部距离
30
30
  $spacing-slider_marks-top: 23px; // 滑动条刻度标签顶部距离
31
- $spacing-slider_marks-left: 0; // 滑动条刻度标签左侧距离
31
+ $spacing-slider_marks-left: 0px; // 滑动条刻度标签左侧距离
32
32
  $spacing-slider_boundary-top: 30px;
33
- $spacing-slider_boundary_min-left: 0;
34
- $spacing-slider_boundary_max-right: 0;
33
+ $spacing-slider_boundary_min-left: 0px;
34
+ $spacing-slider_boundary_max-right: 0px;
35
35
  $spacing-slider_vertical_marks-marginTop: -30px; // 垂直滑动条刻度标签顶部外边距
36
36
  $spacing-slider_vertical_marks-marginLeft: 29px; // 垂直滑动条刻度标签左侧外边距
37
37
  $spacing-slider_vertical_marks-reverse-marginLeft: -26px; // 垂直滑动条刻度标签左侧外边距(标签在左侧时)
38
- $spacing-slider_vertical_rail-top: 0; // 垂直滑动条轨道顶部距离
39
- $spacing-slider_vertical_handle-marginTop: 0; // 垂直滑动条原型按钮顶部外边距
38
+ $spacing-slider_vertical_rail-top: 0px; // 垂直滑动条轨道顶部距离
39
+ $spacing-slider_vertical_handle-marginTop: 0px; // 垂直滑动条原型按钮顶部外边距
40
40
  $spacing-slider_vertical_handle-marginLeft: -10px; // 垂直滑动条原型按钮左侧外边距
41
+ $spacing-slider_handle-translateY: 0px; // 水平滑动条原型按钮垂直偏移量
42
+ $spacing-slider_vertical_handle-translateX: 0px; // 垂直滑动条原型按钮水平偏移量
43
+ $spacing-slider_dot-translateX: 0px; // 水平滑动条圆形刻度点水平偏移量
44
+ $spacing-slider_vertical_dot-translateY: 0px; // 垂直滑动条圆形刻度点垂直偏移量
41
45
 
42
46
  // Radius
43
47
  $radius-slider_rail: var(--semi-border-radius-small); // 滚动条未填充轨道圆角