@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.
- package/datePicker/foundation.ts +1 -1
- package/datePicker/inputFoundation.ts +13 -3
- package/datePicker/monthsGridFoundation.ts +38 -17
- package/form/form.scss +1 -1
- package/input/input.scss +4 -0
- package/lib/cjs/datePicker/foundation.d.ts +1 -1
- package/lib/cjs/datePicker/inputFoundation.d.ts +11 -3
- package/lib/cjs/datePicker/monthsGridFoundation.d.ts +13 -8
- package/lib/cjs/datePicker/monthsGridFoundation.js +20 -3
- package/lib/cjs/form/form.css +1 -0
- package/lib/cjs/form/form.scss +1 -1
- 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/slider/slider.css +16 -11
- package/lib/cjs/slider/slider.scss +6 -1
- package/lib/cjs/slider/variables.scss +13 -9
- package/lib/es/datePicker/foundation.d.ts +1 -1
- package/lib/es/datePicker/inputFoundation.d.ts +11 -3
- package/lib/es/datePicker/monthsGridFoundation.d.ts +13 -8
- package/lib/es/datePicker/monthsGridFoundation.js +20 -3
- package/lib/es/form/form.css +1 -0
- package/lib/es/form/form.scss +1 -1
- 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/slider/slider.css +16 -11
- package/lib/es/slider/slider.scss +6 -1
- package/lib/es/slider/variables.scss +13 -9
- package/package.json +2 -2
- package/select/select.scss +2 -0
- package/slider/slider.scss +6 -1
- package/slider/variables.scss +13 -9
package/datePicker/foundation.ts
CHANGED
|
@@ -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?:
|
|
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?:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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/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
|
@@ -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?:
|
|
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?:
|
|
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 {
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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/form/form.css
CHANGED
package/lib/cjs/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/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';
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/* sizing */
|
|
3
3
|
/* spacing */
|
|
4
4
|
.semi-slider {
|
|
5
|
-
padding:
|
|
6
|
-
margin:
|
|
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:
|
|
19
|
-
padding:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
131
|
+
left: 0px;
|
|
131
132
|
}
|
|
132
133
|
.semi-slider-boundary-max {
|
|
133
|
-
right:
|
|
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:
|
|
160
|
+
top: 0px;
|
|
160
161
|
}
|
|
161
162
|
.semi-slider-vertical-wrapper .semi-slider-handle {
|
|
162
|
-
margin-top:
|
|
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:
|
|
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:
|
|
22
|
-
$spacing-slider-margin:
|
|
23
|
-
$spacing-slider_rail-margin:
|
|
24
|
-
$spacing-slider_rail-padding:
|
|
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:
|
|
31
|
+
$spacing-slider_marks-left: 0px; // 滑动条刻度标签左侧距离
|
|
32
32
|
$spacing-slider_boundary-top: 30px;
|
|
33
|
-
$spacing-slider_boundary_min-left:
|
|
34
|
-
$spacing-slider_boundary_max-right:
|
|
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:
|
|
39
|
-
$spacing-slider_vertical_handle-marginTop:
|
|
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?:
|
|
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?:
|
|
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 {
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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/form/form.css
CHANGED
package/lib/es/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/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/slider/slider.css
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/* sizing */
|
|
3
3
|
/* spacing */
|
|
4
4
|
.semi-slider {
|
|
5
|
-
padding:
|
|
6
|
-
margin:
|
|
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:
|
|
19
|
-
padding:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
131
|
+
left: 0px;
|
|
131
132
|
}
|
|
132
133
|
.semi-slider-boundary-max {
|
|
133
|
-
right:
|
|
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:
|
|
160
|
+
top: 0px;
|
|
160
161
|
}
|
|
161
162
|
.semi-slider-vertical-wrapper .semi-slider-handle {
|
|
162
|
-
margin-top:
|
|
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:
|
|
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:
|
|
22
|
-
$spacing-slider-margin:
|
|
23
|
-
$spacing-slider_rail-margin:
|
|
24
|
-
$spacing-slider_rail-padding:
|
|
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:
|
|
31
|
+
$spacing-slider_marks-left: 0px; // 滑动条刻度标签左侧距离
|
|
32
32
|
$spacing-slider_boundary-top: 30px;
|
|
33
|
-
$spacing-slider_boundary_min-left:
|
|
34
|
-
$spacing-slider_boundary_max-right:
|
|
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:
|
|
39
|
-
$spacing-slider_vertical_handle-marginTop:
|
|
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.
|
|
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": "
|
|
26
|
+
"gitHead": "4b12cb8b712ec0dd1e8adee7ba0c9f5a9f4799f2",
|
|
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/slider/slider.scss
CHANGED
|
@@ -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:
|
|
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
|
|
package/slider/variables.scss
CHANGED
|
@@ -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:
|
|
22
|
-
$spacing-slider-margin:
|
|
23
|
-
$spacing-slider_rail-margin:
|
|
24
|
-
$spacing-slider_rail-padding:
|
|
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:
|
|
31
|
+
$spacing-slider_marks-left: 0px; // 滑动条刻度标签左侧距离
|
|
32
32
|
$spacing-slider_boundary-top: 30px;
|
|
33
|
-
$spacing-slider_boundary_min-left:
|
|
34
|
-
$spacing-slider_boundary_max-right:
|
|
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:
|
|
39
|
-
$spacing-slider_vertical_handle-marginTop:
|
|
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); // 滚动条未填充轨道圆角
|