@douyinfe/semi-foundation 2.96.1 → 2.98.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/cascader/foundation.ts +74 -19
- package/codeHighlight/codeHighlight.scss +1 -1
- package/datePicker/datePicker.scss +100 -5
- package/datePicker/foundation.ts +7 -0
- package/datePicker/inputFoundation.ts +5 -0
- package/form/foundation.ts +55 -7
- package/form/utils.ts +7 -2
- package/image/previewImageFoundation.ts +34 -3
- package/image/previewInnerFoundation.ts +15 -4
- package/input/textarea.scss +35 -0
- package/inputNumber/foundation.ts +119 -3
- package/jsonViewer/jsonViewer.scss +2 -2
- package/lib/cjs/aiChatInput/aiChatInput.css +7 -7
- package/lib/cjs/anchor/anchor.css +3 -3
- package/lib/cjs/autoComplete/autoComplete.css +1 -1
- package/lib/cjs/avatar/avatar.css +5 -5
- package/lib/cjs/badge/badge.css +1 -1
- package/lib/cjs/breadcrumb/breadcrumb.css +2 -2
- package/lib/cjs/calendar/calendar.css +9 -9
- package/lib/cjs/cascader/cascader.css +6 -6
- package/lib/cjs/cascader/foundation.d.ts +12 -0
- package/lib/cjs/cascader/foundation.js +68 -23
- package/lib/cjs/checkbox/checkbox.css +2 -2
- package/lib/cjs/codeHighlight/codeHighlight.css +1 -1
- package/lib/cjs/codeHighlight/codeHighlight.scss +1 -1
- package/lib/cjs/collapse/collapse.css +2 -2
- package/lib/cjs/datePicker/datePicker.css +75 -13
- package/lib/cjs/datePicker/datePicker.scss +100 -5
- package/lib/cjs/datePicker/foundation.d.ts +5 -0
- package/lib/cjs/datePicker/foundation.js +2 -0
- package/lib/cjs/datePicker/inputFoundation.d.ts +5 -0
- package/lib/cjs/descriptions/descriptions.css +6 -6
- package/lib/cjs/dropdown/dropdown.css +2 -2
- package/lib/cjs/form/form.css +4 -4
- package/lib/cjs/form/foundation.d.ts +1 -1
- package/lib/cjs/form/foundation.js +55 -9
- package/lib/cjs/form/utils.js +5 -2
- package/lib/cjs/hotKeys/hotKeys.css +2 -2
- package/lib/cjs/image/image.css +2 -2
- package/lib/cjs/image/previewImageFoundation.d.ts +4 -0
- package/lib/cjs/image/previewImageFoundation.js +33 -2
- package/lib/cjs/image/previewInnerFoundation.d.ts +1 -0
- package/lib/cjs/image/previewInnerFoundation.js +17 -4
- package/lib/cjs/input/input.css +8 -8
- package/lib/cjs/input/textarea.css +19 -2
- package/lib/cjs/input/textarea.scss +35 -0
- package/lib/cjs/inputNumber/foundation.d.ts +15 -0
- package/lib/cjs/inputNumber/foundation.js +113 -3
- package/lib/cjs/jsonViewer/jsonViewer.css +2 -2
- package/lib/cjs/jsonViewer/jsonViewer.scss +2 -2
- package/lib/cjs/list/list.css +1 -1
- package/lib/cjs/modal/modal.css +1 -1
- package/lib/cjs/navigation/navigation.css +4 -3
- package/lib/cjs/navigation/navigation.scss +1 -0
- package/lib/cjs/navigation/variables.scss +1 -1
- package/lib/cjs/notification/notification.css +4 -4
- package/lib/cjs/overflowList/foundation.d.ts +1 -0
- package/lib/cjs/overflowList/foundation.js +51 -1
- package/lib/cjs/pagination/pagination.css +5 -5
- package/lib/cjs/popconfirm/popconfirm.css +1 -1
- package/lib/cjs/popover/popover.css +1 -1
- package/lib/cjs/radio/radio.css +2 -2
- package/lib/cjs/scrollList/itemFoundation.js +12 -0
- package/lib/cjs/scrollList/scrollList.css +2 -2
- package/lib/cjs/select/foundation.d.ts +1 -1
- package/lib/cjs/select/foundation.js +28 -2
- package/lib/cjs/select/select.css +6 -6
- package/lib/cjs/sideSheet/sideSheet.css +2 -2
- package/lib/cjs/sidebar/sidebar.css +11 -11
- package/lib/cjs/slider/foundation.js +46 -12
- package/lib/cjs/slider/rtl.scss +62 -0
- package/lib/cjs/slider/slider.css +45 -0
- package/lib/cjs/slider/slider.scss +2 -0
- package/lib/cjs/steps/steps.css +11 -11
- package/lib/cjs/switch/switch.css +1 -0
- package/lib/cjs/switch/switch.scss +1 -0
- package/lib/cjs/switch/variables.scss +2 -1
- package/lib/cjs/table/foundation.d.ts +36 -0
- package/lib/cjs/table/foundation.js +164 -29
- package/lib/cjs/table/table.css +10 -2
- package/lib/cjs/table/table.scss +17 -0
- package/lib/cjs/tabs/tabs.css +2 -2
- package/lib/cjs/tag/tag.css +28 -2
- package/lib/cjs/tag/tag.scss +33 -0
- package/lib/cjs/tagInput/tagInput.css +19 -2
- package/lib/cjs/tagInput/tagInput.scss +18 -0
- package/lib/cjs/timePicker/constants.d.ts +1 -0
- package/lib/cjs/timePicker/foundation.d.ts +7 -1
- package/lib/cjs/timePicker/foundation.js +62 -11
- package/lib/cjs/timePicker/timePicker.css +1 -1
- package/lib/cjs/timeline/timeline.css +2 -2
- package/lib/cjs/toast/toast.css +1 -1
- package/lib/cjs/tooltip/foundation.js +8 -5
- package/lib/cjs/tooltip/tooltip.css +1 -1
- package/lib/cjs/transfer/constants.d.ts +3 -1
- package/lib/cjs/transfer/constants.js +3 -1
- package/lib/cjs/transfer/foundation.d.ts +3 -0
- package/lib/cjs/transfer/foundation.js +4 -0
- package/lib/cjs/transfer/transfer.css +14 -5
- package/lib/cjs/transfer/transfer.scss +10 -0
- package/lib/cjs/tree/foundation.d.ts +3 -0
- package/lib/cjs/tree/foundation.js +31 -4
- package/lib/cjs/tree/tree.css +1 -1
- package/lib/cjs/treeSelect/foundation.d.ts +1 -0
- package/lib/cjs/treeSelect/foundation.js +8 -1
- package/lib/cjs/treeSelect/treeSelect.css +36 -4
- package/lib/cjs/treeSelect/treeSelect.scss +49 -1
- package/lib/cjs/typography/typography.css +8 -8
- package/lib/cjs/upload/upload.css +8 -8
- package/lib/cjs/utils/Store.d.ts +1 -1
- package/lib/cjs/utils/Store.js +1 -0
- package/lib/es/aiChatInput/aiChatInput.css +7 -7
- package/lib/es/anchor/anchor.css +3 -3
- package/lib/es/autoComplete/autoComplete.css +1 -1
- package/lib/es/avatar/avatar.css +5 -5
- package/lib/es/badge/badge.css +1 -1
- package/lib/es/breadcrumb/breadcrumb.css +2 -2
- package/lib/es/calendar/calendar.css +9 -9
- package/lib/es/cascader/cascader.css +6 -6
- package/lib/es/cascader/foundation.d.ts +12 -0
- package/lib/es/cascader/foundation.js +68 -23
- package/lib/es/checkbox/checkbox.css +2 -2
- package/lib/es/codeHighlight/codeHighlight.css +1 -1
- package/lib/es/codeHighlight/codeHighlight.scss +1 -1
- package/lib/es/collapse/collapse.css +2 -2
- package/lib/es/datePicker/datePicker.css +75 -13
- package/lib/es/datePicker/datePicker.scss +100 -5
- package/lib/es/datePicker/foundation.d.ts +5 -0
- package/lib/es/datePicker/foundation.js +2 -0
- package/lib/es/datePicker/inputFoundation.d.ts +5 -0
- package/lib/es/descriptions/descriptions.css +6 -6
- package/lib/es/dropdown/dropdown.css +2 -2
- package/lib/es/form/form.css +4 -4
- package/lib/es/form/foundation.d.ts +1 -1
- package/lib/es/form/foundation.js +55 -9
- package/lib/es/form/utils.js +5 -2
- package/lib/es/hotKeys/hotKeys.css +2 -2
- package/lib/es/image/image.css +2 -2
- package/lib/es/image/previewImageFoundation.d.ts +4 -0
- package/lib/es/image/previewImageFoundation.js +33 -2
- package/lib/es/image/previewInnerFoundation.d.ts +1 -0
- package/lib/es/image/previewInnerFoundation.js +17 -4
- package/lib/es/input/input.css +8 -8
- package/lib/es/input/textarea.css +19 -2
- package/lib/es/input/textarea.scss +35 -0
- package/lib/es/inputNumber/foundation.d.ts +15 -0
- package/lib/es/inputNumber/foundation.js +113 -3
- package/lib/es/jsonViewer/jsonViewer.css +2 -2
- package/lib/es/jsonViewer/jsonViewer.scss +2 -2
- package/lib/es/list/list.css +1 -1
- package/lib/es/modal/modal.css +1 -1
- package/lib/es/navigation/navigation.css +4 -3
- package/lib/es/navigation/navigation.scss +1 -0
- package/lib/es/navigation/variables.scss +1 -1
- package/lib/es/notification/notification.css +4 -4
- package/lib/es/overflowList/foundation.d.ts +1 -0
- package/lib/es/overflowList/foundation.js +51 -1
- package/lib/es/pagination/pagination.css +5 -5
- package/lib/es/popconfirm/popconfirm.css +1 -1
- package/lib/es/popover/popover.css +1 -1
- package/lib/es/radio/radio.css +2 -2
- package/lib/es/scrollList/itemFoundation.js +12 -0
- package/lib/es/scrollList/scrollList.css +2 -2
- package/lib/es/select/foundation.d.ts +1 -1
- package/lib/es/select/foundation.js +28 -2
- package/lib/es/select/select.css +6 -6
- package/lib/es/sideSheet/sideSheet.css +2 -2
- package/lib/es/sidebar/sidebar.css +11 -11
- package/lib/es/slider/foundation.js +46 -12
- package/lib/es/slider/rtl.scss +62 -0
- package/lib/es/slider/slider.css +45 -0
- package/lib/es/slider/slider.scss +2 -0
- package/lib/es/steps/steps.css +11 -11
- package/lib/es/switch/switch.css +1 -0
- package/lib/es/switch/switch.scss +1 -0
- package/lib/es/switch/variables.scss +2 -1
- package/lib/es/table/foundation.d.ts +36 -0
- package/lib/es/table/foundation.js +164 -29
- package/lib/es/table/table.css +10 -2
- package/lib/es/table/table.scss +17 -0
- package/lib/es/tabs/tabs.css +2 -2
- package/lib/es/tag/tag.css +28 -2
- package/lib/es/tag/tag.scss +33 -0
- package/lib/es/tagInput/tagInput.css +19 -2
- package/lib/es/tagInput/tagInput.scss +18 -0
- package/lib/es/timePicker/constants.d.ts +1 -0
- package/lib/es/timePicker/foundation.d.ts +7 -1
- package/lib/es/timePicker/foundation.js +62 -11
- package/lib/es/timePicker/timePicker.css +1 -1
- package/lib/es/timeline/timeline.css +2 -2
- package/lib/es/toast/toast.css +1 -1
- package/lib/es/tooltip/foundation.js +8 -5
- package/lib/es/tooltip/tooltip.css +1 -1
- package/lib/es/transfer/constants.d.ts +3 -1
- package/lib/es/transfer/constants.js +3 -1
- package/lib/es/transfer/foundation.d.ts +3 -0
- package/lib/es/transfer/foundation.js +4 -0
- package/lib/es/transfer/transfer.css +14 -5
- package/lib/es/transfer/transfer.scss +10 -0
- package/lib/es/tree/foundation.d.ts +3 -0
- package/lib/es/tree/foundation.js +31 -4
- package/lib/es/tree/tree.css +1 -1
- package/lib/es/treeSelect/foundation.d.ts +1 -0
- package/lib/es/treeSelect/foundation.js +8 -1
- package/lib/es/treeSelect/treeSelect.css +36 -4
- package/lib/es/treeSelect/treeSelect.scss +49 -1
- package/lib/es/typography/typography.css +8 -8
- package/lib/es/upload/upload.css +8 -8
- package/lib/es/utils/Store.d.ts +1 -1
- package/lib/es/utils/Store.js +1 -0
- package/navigation/navigation.scss +1 -0
- package/navigation/variables.scss +1 -1
- package/overflowList/foundation.ts +48 -2
- package/package.json +19 -4
- package/scrollList/itemFoundation.ts +12 -0
- package/select/foundation.ts +27 -2
- package/slider/foundation.ts +55 -15
- package/slider/rtl.scss +62 -0
- package/slider/slider.scss +2 -0
- package/switch/switch.scss +1 -0
- package/switch/variables.scss +2 -1
- package/table/foundation.ts +199 -30
- package/table/table.scss +17 -0
- package/tag/tag.scss +33 -0
- package/tagInput/tagInput.scss +18 -0
- package/timePicker/constants.ts +2 -0
- package/timePicker/foundation.ts +62 -10
- package/tooltip/foundation.ts +8 -5
- package/transfer/constants.ts +3 -1
- package/transfer/foundation.ts +8 -1
- package/transfer/transfer.scss +10 -0
- package/tree/foundation.ts +34 -5
- package/treeSelect/foundation.ts +10 -1
- package/treeSelect/treeSelect.scss +49 -1
- package/utils/Store.ts +2 -1
package/lib/cjs/form/utils.js
CHANGED
|
@@ -142,6 +142,7 @@ function mergeProps(props) {
|
|
|
142
142
|
wrapperCol,
|
|
143
143
|
initValue,
|
|
144
144
|
validate,
|
|
145
|
+
validator,
|
|
145
146
|
/**
|
|
146
147
|
* error、warning、default、success
|
|
147
148
|
*/
|
|
@@ -173,7 +174,7 @@ function mergeProps(props) {
|
|
|
173
174
|
pure,
|
|
174
175
|
id
|
|
175
176
|
} = _a,
|
|
176
|
-
rest = __rest(_a, ["field", "label", "labelPosition", "labelWidth", "labelAlign", "labelCol", "wrapperCol", "initValue", "validate", "validateStatus", "trigger", "allowEmptyString", "allowEmpty", "emptyValue", "rules", "onChange", "keepState", "transform", "name", "fieldClassName", "fieldStyle", "noLabel", "noErrorMessage", "isInInputGroup", "stopValidateWithError", "convert", "showValidateIcon", "helpText", "extraText", "extraTextPosition", "pure", "id"]);
|
|
177
|
+
rest = __rest(_a, ["field", "label", "labelPosition", "labelWidth", "labelAlign", "labelCol", "wrapperCol", "initValue", "validate", "validator", "validateStatus", "trigger", "allowEmptyString", "allowEmpty", "emptyValue", "rules", "onChange", "keepState", "transform", "name", "fieldClassName", "fieldStyle", "noLabel", "noErrorMessage", "isInInputGroup", "stopValidateWithError", "convert", "showValidateIcon", "helpText", "extraText", "extraTextPosition", "pure", "id"]);
|
|
177
178
|
// Form中的任何类型组件,初始值都统一通过initValue字段来传入,同时将可能会导致组件行为错误的props抽取出来,防止透传到组件中
|
|
178
179
|
// For any type of field component in Form, the initial value is uniformly passed in through the initValue field.
|
|
179
180
|
// At the same time, the props that may cause component behavior errors are extracted to prevent transparent transmission to the component.
|
|
@@ -185,6 +186,8 @@ function mergeProps(props) {
|
|
|
185
186
|
}
|
|
186
187
|
const required = isRequired(rules);
|
|
187
188
|
emptyValue = typeof emptyValue !== 'undefined' ? emptyValue : '';
|
|
189
|
+
// `validator` is the recommended name; `validate` is kept as a deprecated alias.
|
|
190
|
+
const finalValidate = validator || validate;
|
|
188
191
|
return {
|
|
189
192
|
field,
|
|
190
193
|
label,
|
|
@@ -197,7 +200,7 @@ function mergeProps(props) {
|
|
|
197
200
|
noErrorMessage,
|
|
198
201
|
isInInputGroup,
|
|
199
202
|
initValue,
|
|
200
|
-
validate,
|
|
203
|
+
validate: finalValidate,
|
|
201
204
|
validateStatus,
|
|
202
205
|
trigger,
|
|
203
206
|
allowEmptyString,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
.semi-hotKeys-content {
|
|
16
16
|
font-size: 12px;
|
|
17
17
|
line-height: 16px;
|
|
18
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
18
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
19
19
|
border-radius: 2px;
|
|
20
20
|
height: 20px;
|
|
21
21
|
padding: 2px 8px;
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
.semi-hotKeys-split {
|
|
27
27
|
font-size: 12px;
|
|
28
28
|
line-height: 16px;
|
|
29
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
29
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
30
30
|
margin: 0 3px;
|
|
31
31
|
color: var(--semi-color-text-0);
|
|
32
32
|
}
|
package/lib/cjs/image/image.css
CHANGED
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
font-weight: normal;
|
|
97
97
|
font-size: 14px;
|
|
98
98
|
line-height: 20px;
|
|
99
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
99
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
100
100
|
color: var(--semi-color-white);
|
|
101
101
|
height: 60px;
|
|
102
102
|
display: flex;
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
color: var(--semi-color-white);
|
|
144
144
|
font-size: 16px;
|
|
145
145
|
line-height: 22px;
|
|
146
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
146
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
147
147
|
margin: 0 12px;
|
|
148
148
|
}
|
|
149
149
|
.semi-image-preview-footer .semi-icon {
|
|
@@ -41,6 +41,10 @@ export default class PreviewImageFoundation<P = Record<string, any>, S = Record<
|
|
|
41
41
|
originImageHeight: any;
|
|
42
42
|
containerWidth: number;
|
|
43
43
|
containerHeight: number;
|
|
44
|
+
private _initialZoomApplied;
|
|
45
|
+
private _initialZoomAppliedSrc;
|
|
46
|
+
private _syncInitialZoomFlagWithSrc;
|
|
47
|
+
private _clampZoom;
|
|
44
48
|
init(): void;
|
|
45
49
|
_isImageVertical: () => boolean;
|
|
46
50
|
_getContainerBoundingRectSize: () => void;
|
|
@@ -19,6 +19,28 @@ class PreviewImageFoundation extends _foundation.default {
|
|
|
19
19
|
this.originImageHeight = null;
|
|
20
20
|
this.containerWidth = 0;
|
|
21
21
|
this.containerHeight = 0;
|
|
22
|
+
// initialZoom should only be applied once per image src (first initialization)
|
|
23
|
+
this._initialZoomApplied = false;
|
|
24
|
+
this._initialZoomAppliedSrc = undefined;
|
|
25
|
+
this._syncInitialZoomFlagWithSrc = () => {
|
|
26
|
+
const src = this.getProp("src");
|
|
27
|
+
if (src !== this._initialZoomAppliedSrc) {
|
|
28
|
+
this._initialZoomAppliedSrc = src;
|
|
29
|
+
this._initialZoomApplied = false;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
this._clampZoom = zoom => {
|
|
33
|
+
const {
|
|
34
|
+
maxZoom,
|
|
35
|
+
minZoom
|
|
36
|
+
} = this.getProps();
|
|
37
|
+
const max = typeof maxZoom === 'number' ? maxZoom : 5;
|
|
38
|
+
const min = typeof minZoom === 'number' ? minZoom : 0.1;
|
|
39
|
+
if (typeof zoom !== 'number' || !Number.isFinite(zoom)) {
|
|
40
|
+
return min;
|
|
41
|
+
}
|
|
42
|
+
return Math.min(max, Math.max(min, zoom));
|
|
43
|
+
};
|
|
22
44
|
this._isImageVertical = () => this.getProp("rotation") % 180 !== 0;
|
|
23
45
|
this._getContainerBoundingRectSize = () => {
|
|
24
46
|
const containerDOM = this._adapter.getContainer();
|
|
@@ -46,13 +68,20 @@ class PreviewImageFoundation extends _foundation.default {
|
|
|
46
68
|
};
|
|
47
69
|
this._getInitialZoom = () => {
|
|
48
70
|
const {
|
|
49
|
-
ratio
|
|
71
|
+
ratio,
|
|
72
|
+
initialZoom
|
|
50
73
|
} = this.getProps();
|
|
51
74
|
let _zoom = 1;
|
|
75
|
+
// initialZoom is only used for the first initialization of each src
|
|
76
|
+
this._syncInitialZoomFlagWithSrc();
|
|
77
|
+
if (!this._initialZoomApplied && typeof initialZoom === 'number' && Number.isFinite(initialZoom) && initialZoom > 0) {
|
|
78
|
+
this._initialZoomApplied = true;
|
|
79
|
+
return this._clampZoom(initialZoom);
|
|
80
|
+
}
|
|
52
81
|
if (ratio === 'adaptation') {
|
|
53
82
|
_zoom = this._getAdaptationZoom();
|
|
54
83
|
}
|
|
55
|
-
return _zoom;
|
|
84
|
+
return this._clampZoom(_zoom);
|
|
56
85
|
};
|
|
57
86
|
this.setLoading = loading => {
|
|
58
87
|
this._adapter.setLoading(loading);
|
|
@@ -69,6 +98,8 @@ class PreviewImageFoundation extends _foundation.default {
|
|
|
69
98
|
} = e.target;
|
|
70
99
|
this.originImageHeight = h;
|
|
71
100
|
this.originImageWidth = w;
|
|
101
|
+
// New image is loaded; allow initialZoom to be applied once for this src
|
|
102
|
+
this._syncInitialZoomFlagWithSrc();
|
|
72
103
|
this.setState({
|
|
73
104
|
loading: false
|
|
74
105
|
});
|
|
@@ -204,11 +204,12 @@ class PreviewInnerFoundation extends _foundation.default {
|
|
|
204
204
|
const {
|
|
205
205
|
zoom
|
|
206
206
|
} = _this.getStates();
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
_this._adapter.
|
|
207
|
+
const nextZoom = _this._clampZoom(newZoom);
|
|
208
|
+
if (zoom !== nextZoom) {
|
|
209
|
+
notify && _this._adapter.notifyZoom(nextZoom, nextZoom > zoom);
|
|
210
|
+
_this._adapter.changeImageZoom(nextZoom, e);
|
|
210
211
|
_this.setState({
|
|
211
|
-
zoom:
|
|
212
|
+
zoom: nextZoom
|
|
212
213
|
});
|
|
213
214
|
}
|
|
214
215
|
};
|
|
@@ -327,6 +328,18 @@ class PreviewInnerFoundation extends _foundation.default {
|
|
|
327
328
|
this.preloadSingleImage();
|
|
328
329
|
}
|
|
329
330
|
};
|
|
331
|
+
this._clampZoom = zoom => {
|
|
332
|
+
const {
|
|
333
|
+
maxZoom,
|
|
334
|
+
minZoom
|
|
335
|
+
} = this.getProps();
|
|
336
|
+
const max = typeof maxZoom === 'number' ? maxZoom : 5;
|
|
337
|
+
const min = typeof minZoom === 'number' ? minZoom : 0.1;
|
|
338
|
+
if (typeof zoom !== 'number' || !Number.isFinite(zoom)) {
|
|
339
|
+
return min;
|
|
340
|
+
}
|
|
341
|
+
return Math.min(max, Math.max(min, zoom));
|
|
342
|
+
};
|
|
330
343
|
}
|
|
331
344
|
beforeShow() {
|
|
332
345
|
this._adapter.registerKeyDownListener();
|
package/lib/cjs/input/input.css
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
box-shadow: none;
|
|
30
30
|
font-size: 14px;
|
|
31
31
|
line-height: 20px;
|
|
32
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
32
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
33
33
|
background-color: var(--semi-color-fill-0);
|
|
34
34
|
border: 1px transparent solid;
|
|
35
35
|
border-radius: var(--semi-border-radius-small);
|
|
@@ -45,21 +45,21 @@
|
|
|
45
45
|
height: 32px;
|
|
46
46
|
font-size: 14px;
|
|
47
47
|
line-height: 20px;
|
|
48
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
48
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
49
49
|
line-height: 30px;
|
|
50
50
|
}
|
|
51
51
|
.semi-input-wrapper-small {
|
|
52
52
|
height: 24px;
|
|
53
53
|
font-size: 14px;
|
|
54
54
|
line-height: 20px;
|
|
55
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
55
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
56
56
|
line-height: 22px;
|
|
57
57
|
}
|
|
58
58
|
.semi-input-wrapper-large {
|
|
59
59
|
height: 40px;
|
|
60
60
|
font-size: 16px;
|
|
61
61
|
line-height: 22px;
|
|
62
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
62
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
63
63
|
line-height: 38px;
|
|
64
64
|
}
|
|
65
65
|
.semi-input-wrapper:hover {
|
|
@@ -357,21 +357,21 @@
|
|
|
357
357
|
height: 38px;
|
|
358
358
|
font-size: 16px;
|
|
359
359
|
line-height: 22px;
|
|
360
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
360
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
361
361
|
line-height: 38px;
|
|
362
362
|
}
|
|
363
363
|
.semi-input-small {
|
|
364
364
|
height: 22px;
|
|
365
365
|
font-size: 14px;
|
|
366
366
|
line-height: 20px;
|
|
367
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
367
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
368
368
|
line-height: 22px;
|
|
369
369
|
}
|
|
370
370
|
.semi-input-default {
|
|
371
371
|
height: 30px;
|
|
372
372
|
font-size: 14px;
|
|
373
373
|
line-height: 20px;
|
|
374
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
374
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
375
375
|
line-height: 30px;
|
|
376
376
|
}
|
|
377
377
|
.semi-input-disabled {
|
|
@@ -429,7 +429,7 @@
|
|
|
429
429
|
color: var(--semi-color-text-2);
|
|
430
430
|
font-size: 14px;
|
|
431
431
|
line-height: 20px;
|
|
432
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
432
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
433
433
|
flex-shrink: 0;
|
|
434
434
|
}
|
|
435
435
|
.semi-input-prepend-icon, .semi-input-prepend-text, .semi-input-append-icon, .semi-input-append-text {
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
background-color: var(--semi-color-fill-0);
|
|
13
13
|
transition: background-color var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none), border var(--semi-transition_duration-none) var(--semi-transition_function-easeIn) var(--semi-transition_delay-none);
|
|
14
14
|
}
|
|
15
|
+
.semi-input-textarea-wrapper-resizeX {
|
|
16
|
+
display: inline-block;
|
|
17
|
+
width: fit-content;
|
|
18
|
+
max-width: 100%;
|
|
19
|
+
}
|
|
15
20
|
.semi-input-textarea-wrapper:hover {
|
|
16
21
|
background-color: var(--semi-color-fill-1);
|
|
17
22
|
}
|
|
@@ -32,6 +37,9 @@
|
|
|
32
37
|
color: var(--semi-color-text-2);
|
|
33
38
|
right: 4px;
|
|
34
39
|
height: 32px;
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
35
43
|
}
|
|
36
44
|
.semi-input-textarea-wrapper .semi-input-clearbtn > svg {
|
|
37
45
|
pointer-events: none;
|
|
@@ -99,7 +107,7 @@
|
|
|
99
107
|
box-shadow: none;
|
|
100
108
|
font-size: 14px;
|
|
101
109
|
line-height: 20px;
|
|
102
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
110
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
103
111
|
background-color: transparent;
|
|
104
112
|
border: 0 solid transparent;
|
|
105
113
|
vertical-align: bottom;
|
|
@@ -134,11 +142,12 @@
|
|
|
134
142
|
}
|
|
135
143
|
.semi-input-textarea-autosize {
|
|
136
144
|
overflow: hidden;
|
|
145
|
+
resize: none;
|
|
137
146
|
}
|
|
138
147
|
.semi-input-textarea-counter {
|
|
139
148
|
font-size: 12px;
|
|
140
149
|
line-height: 16px;
|
|
141
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
150
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
142
151
|
display: flex;
|
|
143
152
|
flex-direction: column;
|
|
144
153
|
justify-content: center;
|
|
@@ -176,6 +185,14 @@
|
|
|
176
185
|
padding: 0;
|
|
177
186
|
align-items: flex-start;
|
|
178
187
|
}
|
|
188
|
+
.semi-input-textarea-wrapper-withLineNumber.semi-input-textarea-wrapper-resizeX {
|
|
189
|
+
display: inline-flex;
|
|
190
|
+
width: fit-content;
|
|
191
|
+
max-width: 100%;
|
|
192
|
+
}
|
|
193
|
+
.semi-input-textarea-wrapper-withLineNumber.semi-input-textarea-wrapper-resizeX .semi-input-textarea-content {
|
|
194
|
+
flex: 0 0 auto;
|
|
195
|
+
}
|
|
179
196
|
.semi-input-textarea-wrapper-withLineNumber .semi-input-textarea-lineNumber {
|
|
180
197
|
flex-shrink: 0;
|
|
181
198
|
padding: 5px 12px;
|
|
@@ -16,6 +16,21 @@ $module: #{$prefix}-input;
|
|
|
16
16
|
transition: background-color $transition_duration-input-bg $transition_function-input-bg $transition_delay-input-bg,
|
|
17
17
|
border $transition_duration-input-border $transition_function-input-border $transition_delay-input-border;
|
|
18
18
|
|
|
19
|
+
// When native resize changes textarea width, wrapper (border/clear/counter) should follow.
|
|
20
|
+
// Default wrapper is `width: 100%`, so it won't grow with textarea. Enable shrink-to-fit.
|
|
21
|
+
&-resizeX {
|
|
22
|
+
// Keep original textarea wrapper formatting (stacking counter, etc.),
|
|
23
|
+
// only shrink-to-fit width so border follows horizontal resize.
|
|
24
|
+
// Using inline-flex here may change internal layout and cause clear/counter misalignment.
|
|
25
|
+
display: inline-block;
|
|
26
|
+
width: fit-content;
|
|
27
|
+
max-width: 100%;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&-resizeY {
|
|
31
|
+
// Keep default width behavior; vertical resize doesn't require wrapper width change.
|
|
32
|
+
}
|
|
33
|
+
|
|
19
34
|
&:hover {
|
|
20
35
|
background-color: $color-input_default-bg-hover;
|
|
21
36
|
}
|
|
@@ -40,6 +55,10 @@ $module: #{$prefix}-input;
|
|
|
40
55
|
color: $color-textarea-icon-default;
|
|
41
56
|
right: $spacing-textarea-icon-right;
|
|
42
57
|
height: $height-textarea-default;
|
|
58
|
+
// Center the icon within the clearbtn area
|
|
59
|
+
display: flex;
|
|
60
|
+
align-items: center;
|
|
61
|
+
justify-content: center;
|
|
43
62
|
|
|
44
63
|
& > svg {
|
|
45
64
|
pointer-events: none;
|
|
@@ -130,6 +149,7 @@ $module: #{$prefix}-input;
|
|
|
130
149
|
|
|
131
150
|
.#{$module}-textarea {
|
|
132
151
|
position: relative;
|
|
152
|
+
// resize is now controlled by resize prop, default to none for backward compatibility
|
|
133
153
|
resize: none;
|
|
134
154
|
// min-height: $height-input_default;
|
|
135
155
|
padding: $spacing-textarea-paddingY $spacing-textarea-paddingX;
|
|
@@ -177,6 +197,8 @@ $module: #{$prefix}-input;
|
|
|
177
197
|
|
|
178
198
|
&-autosize {
|
|
179
199
|
overflow: hidden;
|
|
200
|
+
// When autosize is enabled, force resize to none to avoid conflicts
|
|
201
|
+
resize: none;
|
|
180
202
|
}
|
|
181
203
|
|
|
182
204
|
&-counter {
|
|
@@ -235,6 +257,19 @@ $module: #{$prefix}-input;
|
|
|
235
257
|
padding: 0;
|
|
236
258
|
align-items: flex-start;
|
|
237
259
|
|
|
260
|
+
&.#{$module}-textarea-wrapper-resizeX {
|
|
261
|
+
// Keep line number + textarea layout, but let width shrink-to-fit
|
|
262
|
+
display: inline-flex;
|
|
263
|
+
width: fit-content;
|
|
264
|
+
max-width: 100%;
|
|
265
|
+
|
|
266
|
+
.#{$module}-textarea-content {
|
|
267
|
+
flex: 0 0 auto;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Do not force a minimum width here; allow the control to fit narrow containers.
|
|
271
|
+
}
|
|
272
|
+
|
|
238
273
|
.#{$module}-textarea-lineNumber {
|
|
239
274
|
flex-shrink: 0;
|
|
240
275
|
padding: $spacing-textarea-paddingY $spacing-textarea-paddingX;
|
|
@@ -80,6 +80,21 @@ declare class InputNumberFoundation extends BaseFoundation<InputNumberAdapter> {
|
|
|
80
80
|
_getPrecLen(num: string | number): number;
|
|
81
81
|
_adjustPrec(num: string | number): string;
|
|
82
82
|
formatCurrency(value: number | string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Check if scientific notation is enabled
|
|
85
|
+
*/
|
|
86
|
+
_isScientificNotation(): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Get scientific notation threshold
|
|
89
|
+
* @returns {number} threshold for digit count
|
|
90
|
+
*/
|
|
91
|
+
_getScientificNotationThreshold(): number;
|
|
92
|
+
/**
|
|
93
|
+
* Convert number to scientific notation if exceeds threshold
|
|
94
|
+
* @param {number} num
|
|
95
|
+
* @returns {string}
|
|
96
|
+
*/
|
|
97
|
+
_toScientificNotation(num: number): string;
|
|
83
98
|
/**
|
|
84
99
|
* format number to string
|
|
85
100
|
* @param {string|number} value
|
|
@@ -132,8 +132,18 @@ class InputNumberFoundation extends _foundation.default {
|
|
|
132
132
|
handleInputFocus(e) {
|
|
133
133
|
const value = this.getState('value');
|
|
134
134
|
if (value !== '') {
|
|
135
|
-
//
|
|
136
|
-
|
|
135
|
+
// When scientific notation is enabled, convert to full number on focus
|
|
136
|
+
if (this._isScientificNotation() && !this._isCurrency()) {
|
|
137
|
+
const strVal = (0, _toString2.default)(value);
|
|
138
|
+
const isScientificStr = /e/i.test(strVal) && /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)[eE][+-]?\d+$/.test(strVal.trim());
|
|
139
|
+
if (isScientificStr) {
|
|
140
|
+
const parsedNum = this.doParse(strVal, false, false, false);
|
|
141
|
+
if (this.isValidNumber(parsedNum)) {
|
|
142
|
+
const fullNumberStr = this.doFormat(parsedNum, true, false);
|
|
143
|
+
this._adapter.setValue(fullNumberStr);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
137
147
|
}
|
|
138
148
|
this._adapter.recordCursorPosition();
|
|
139
149
|
this._adapter.setFocusing(true, null);
|
|
@@ -236,6 +246,35 @@ class InputNumberFoundation extends _foundation.default {
|
|
|
236
246
|
}
|
|
237
247
|
numHasChanged = true;
|
|
238
248
|
}
|
|
249
|
+
// Fix issue #38: When input contains non-numeric characters (e.g., "1000CNY"),
|
|
250
|
+
// doParse returns NaN, but we should still apply max/min limit if a number
|
|
251
|
+
// can be extracted from the input or if currentNumber is out of range.
|
|
252
|
+
if (!this.isValidNumber(parsedNum)) {
|
|
253
|
+
// Try to extract a number from the input using parseFloat
|
|
254
|
+
// (parseFloat can extract numbers from strings like "1000CNY" -> 1000)
|
|
255
|
+
const extractedNum = parseFloat(currentValue);
|
|
256
|
+
if (!isNaN(extractedNum)) {
|
|
257
|
+
const limitedNum = this.fetchMinOrMax(extractedNum);
|
|
258
|
+
if (limitedNum !== currentNumber) {
|
|
259
|
+
willSetNum = limitedNum;
|
|
260
|
+
if (!this.isControlled()) {
|
|
261
|
+
currentNumber = willSetNum;
|
|
262
|
+
}
|
|
263
|
+
numHasChanged = true;
|
|
264
|
+
}
|
|
265
|
+
} else if (typeof currentNumber === 'number' && !isNaN(currentNumber)) {
|
|
266
|
+
// If we can't extract a number but currentNumber exists and is out of range,
|
|
267
|
+
// apply the max/min limit to currentNumber
|
|
268
|
+
const limitedNum = this.fetchMinOrMax(currentNumber);
|
|
269
|
+
if (limitedNum !== currentNumber) {
|
|
270
|
+
willSetNum = limitedNum;
|
|
271
|
+
if (!this.isControlled()) {
|
|
272
|
+
currentNumber = willSetNum;
|
|
273
|
+
}
|
|
274
|
+
numHasChanged = true;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
239
278
|
const currentFormattedNum = this.doFormat(currentNumber, true, true);
|
|
240
279
|
if (currentFormattedNum !== currentValue) {
|
|
241
280
|
willSetVal = currentFormattedNum;
|
|
@@ -407,7 +446,11 @@ class InputNumberFoundation extends _foundation.default {
|
|
|
407
446
|
curNum = max;
|
|
408
447
|
}
|
|
409
448
|
// console.log('scale: ', scale, 'curNum: ', curNum);
|
|
410
|
-
|
|
449
|
+
// NOTE:
|
|
450
|
+
// In non-currency mode, `needAdjustCurrency=true` is used by blur/init formatting paths.
|
|
451
|
+
// Step operations often happen while focused, and should keep full-number display.
|
|
452
|
+
// Currency mode still needs `needAdjustCurrency=true` to format currency strings.
|
|
453
|
+
return this.doFormat(curNum, true, this._isCurrency());
|
|
411
454
|
}
|
|
412
455
|
minus(step, event) {
|
|
413
456
|
const pressShift = event && event.shiftKey;
|
|
@@ -457,6 +500,52 @@ class InputNumberFoundation extends _foundation.default {
|
|
|
457
500
|
const formatted = formatter.format(Number(formattedValue));
|
|
458
501
|
return showCurrencySymbol ? formatted : formatted.replace(this._currencySymbol, '').trim();
|
|
459
502
|
}
|
|
503
|
+
/**
|
|
504
|
+
* Check if scientific notation is enabled
|
|
505
|
+
*/
|
|
506
|
+
_isScientificNotation() {
|
|
507
|
+
const {
|
|
508
|
+
scientificNotation
|
|
509
|
+
} = this.getProps();
|
|
510
|
+
return scientificNotation === true || typeof scientificNotation === 'object' && scientificNotation !== null;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Get scientific notation threshold
|
|
514
|
+
* @returns {number} threshold for digit count
|
|
515
|
+
*/
|
|
516
|
+
_getScientificNotationThreshold() {
|
|
517
|
+
const {
|
|
518
|
+
scientificNotation
|
|
519
|
+
} = this.getProps();
|
|
520
|
+
if (typeof scientificNotation === 'object' && scientificNotation !== null) {
|
|
521
|
+
const t = scientificNotation.threshold;
|
|
522
|
+
return typeof t === 'number' && Number.isFinite(t) && t >= 1 ? t : 15;
|
|
523
|
+
}
|
|
524
|
+
return 15; // Default threshold: 15 digits
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* Convert number to scientific notation if exceeds threshold
|
|
528
|
+
* @param {number} num
|
|
529
|
+
* @returns {string}
|
|
530
|
+
*/
|
|
531
|
+
_toScientificNotation(num) {
|
|
532
|
+
const threshold = this._getScientificNotationThreshold();
|
|
533
|
+
const absNum = Math.abs(num);
|
|
534
|
+
const numStr = String(absNum);
|
|
535
|
+
// Count significant digits (excluding decimal point, sign, exponent symbol and leading zeros)
|
|
536
|
+
// If JS already stringifies it with exponent (contains e/E), it is eligible for scientific notation display.
|
|
537
|
+
const hasExp = /e/i.test(numStr);
|
|
538
|
+
const significantDigits = numStr.replace(/[.\-+eE]/g, '').replace(/^0+/, '');
|
|
539
|
+
// Check if number exceeds threshold
|
|
540
|
+
if ((hasExp || significantDigits.length >= threshold) && absNum !== 0) {
|
|
541
|
+
// Prefer preserving coefficient digits up to threshold (total significant digits = fractionDigits + 1)
|
|
542
|
+
const fractionDigits = Math.max(0, Math.min(100, Math.floor(threshold) - 1));
|
|
543
|
+
const exp = num.toExponential(fractionDigits);
|
|
544
|
+
// Remove trailing zeros in the coefficient
|
|
545
|
+
return exp.replace(/(\.\d*?)0+e/, '$1e').replace(/\.e/, 'e');
|
|
546
|
+
}
|
|
547
|
+
return String(num);
|
|
548
|
+
}
|
|
460
549
|
/**
|
|
461
550
|
* format number to string
|
|
462
551
|
* @param {string|number} value
|
|
@@ -482,6 +571,14 @@ class InputNumberFoundation extends _foundation.default {
|
|
|
482
571
|
} else {
|
|
483
572
|
str = (0, _toString2.default)(value);
|
|
484
573
|
}
|
|
574
|
+
// Apply scientific notation for long numbers in blur state
|
|
575
|
+
// needAdjustCurrency indicates blur state (when true, we're formatting for display after blur)
|
|
576
|
+
if (this._isScientificNotation() && needAdjustCurrency && !this._isCurrency()) {
|
|
577
|
+
const numValue = typeof value === 'number' ? value : parseFloat(str);
|
|
578
|
+
if (!isNaN(numValue) && isFinite(numValue)) {
|
|
579
|
+
str = this._toScientificNotation(numValue);
|
|
580
|
+
}
|
|
581
|
+
}
|
|
485
582
|
if (typeof formatter === 'function') {
|
|
486
583
|
str = formatter(str);
|
|
487
584
|
}
|
|
@@ -545,6 +642,19 @@ class InputNumberFoundation extends _foundation.default {
|
|
|
545
642
|
const parsedValue = parser(value);
|
|
546
643
|
value = typeof parsedValue === 'number' ? (0, _toString2.default)(parsedValue) : parsedValue;
|
|
547
644
|
}
|
|
645
|
+
// Support scientific notation parsing (e.g., "1.23e+15", "1.23E-10", ".5e3", "1.e3")
|
|
646
|
+
if (typeof value === 'string' && /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)[eE][+-]?\d+$/.test(value.trim())) {
|
|
647
|
+
const scientificNum = parseFloat(value.trim());
|
|
648
|
+
if (!isNaN(scientificNum)) {
|
|
649
|
+
if (needAdjustMaxMin) {
|
|
650
|
+
return this.fetchMinOrMax(scientificNum);
|
|
651
|
+
}
|
|
652
|
+
if (needAdjustPrec) {
|
|
653
|
+
return (0, _toNumber2.default)(this._adjustPrec(scientificNum));
|
|
654
|
+
}
|
|
655
|
+
return scientificNum;
|
|
656
|
+
}
|
|
657
|
+
}
|
|
548
658
|
if (needCheckPrec && typeof value === 'string') {
|
|
549
659
|
const zeroIsValid = value.indexOf('.') === -1 || value.indexOf('.') > -1 && (value === '0' || value.lastIndexOf('0') < value.length - 1);
|
|
550
660
|
const dotIsValid = value.lastIndexOf('.') < value.length - 1 && value.split('').filter(v => v === '.').length < 2;
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
color: rgba(var(--semi-blue-7), 1);
|
|
54
54
|
}
|
|
55
55
|
.semi-json-viewer-view-line {
|
|
56
|
-
font-family:
|
|
56
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, "Fira Code", Consolas, "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace;
|
|
57
57
|
font-weight: normal;
|
|
58
58
|
font-size: 12px;
|
|
59
59
|
font-feature-settings: "liga" 0, "calt" 0;
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
white-space: pre-wrap !important;
|
|
65
65
|
}
|
|
66
66
|
.semi-json-viewer-line-number {
|
|
67
|
-
font-family:
|
|
67
|
+
font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, "Fira Code", Consolas, "Liberation Mono", "DejaVu Sans Mono", "Courier New", monospace;
|
|
68
68
|
font-weight: normal;
|
|
69
69
|
font-size: 12px;
|
|
70
70
|
font-feature-settings: "liga" 0, "calt" 0;
|
|
@@ -64,7 +64,7 @@ $module: #{$prefix}-json-viewer;
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
&-view-line {
|
|
67
|
-
font-family:
|
|
67
|
+
font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Monaco, 'Fira Code', Consolas, 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
|
|
68
68
|
font-weight: normal;
|
|
69
69
|
font-size: 12px;
|
|
70
70
|
font-feature-settings: 'liga' 0, 'calt' 0;
|
|
@@ -76,7 +76,7 @@ $module: #{$prefix}-json-viewer;
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
&-line-number {
|
|
79
|
-
font-family:
|
|
79
|
+
font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Monaco, 'Fira Code', Consolas, 'Liberation Mono', 'DejaVu Sans Mono', 'Courier New', monospace;
|
|
80
80
|
font-weight: normal;
|
|
81
81
|
font-size: 12px;
|
|
82
82
|
font-feature-settings: 'liga' 0, 'calt' 0;
|
package/lib/cjs/list/list.css
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.semi-list {
|
|
5
5
|
font-size: 14px;
|
|
6
6
|
line-height: 20px;
|
|
7
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
7
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
8
8
|
}
|
|
9
9
|
.semi-list-items {
|
|
10
10
|
margin: 0;
|
package/lib/cjs/modal/modal.css
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
.semi-modal {
|
|
5
5
|
font-size: 14px;
|
|
6
6
|
line-height: 20px;
|
|
7
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
7
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
8
8
|
position: relative;
|
|
9
9
|
margin: 80px auto;
|
|
10
10
|
color: var(--semi-color-text-0);
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
margin-bottom: 8px;
|
|
65
65
|
font-size: 14px;
|
|
66
66
|
line-height: 20px;
|
|
67
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
67
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
68
68
|
font-weight: 400;
|
|
69
69
|
color: var(--semi-color-text-0);
|
|
70
70
|
width: 100%;
|
|
@@ -358,7 +358,7 @@
|
|
|
358
358
|
.semi-navigation-header-text {
|
|
359
359
|
font-size: 18px;
|
|
360
360
|
line-height: 24px;
|
|
361
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
361
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
362
362
|
font-weight: 600;
|
|
363
363
|
display: inline-flex;
|
|
364
364
|
color: var(--semi-color-text-0);
|
|
@@ -544,7 +544,7 @@
|
|
|
544
544
|
transition: padding-left 100ms ease-out, width 200ms cubic-bezier(0.62, 0.05, 0.36, 0.95);
|
|
545
545
|
}
|
|
546
546
|
.semi-navigation-vertical .semi-navigation-footer {
|
|
547
|
-
color: var(--semi-color-text-
|
|
547
|
+
color: var(--semi-color-text-1);
|
|
548
548
|
padding-left: 8px;
|
|
549
549
|
padding-right: 8px;
|
|
550
550
|
}
|
|
@@ -556,6 +556,7 @@
|
|
|
556
556
|
.semi-navigation-vertical .semi-navigation-footer .semi-navigation-collapse-btn > .semi-button {
|
|
557
557
|
padding-left: 8px;
|
|
558
558
|
padding-right: 8px;
|
|
559
|
+
color: var(--semi-color-text-1);
|
|
559
560
|
}
|
|
560
561
|
.semi-navigation-vertical .semi-navigation-footer-collapsed {
|
|
561
562
|
justify-content: center;
|