@douyinfe/semi-foundation 2.97.0 → 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/codeHighlight/codeHighlight.scss +1 -1
- package/datePicker/foundation.ts +7 -0
- package/datePicker/inputFoundation.ts +5 -0
- package/form/foundation.ts +48 -4
- 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/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 +8 -8
- 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.js +49 -3
- package/lib/cjs/hotKeys/hotKeys.css +2 -2
- package/lib/cjs/image/image.css +2 -2
- package/lib/cjs/input/input.css +8 -8
- package/lib/cjs/input/textarea.css +2 -2
- 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 +2 -2
- package/lib/cjs/notification/notification.css +4 -4
- 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/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/table/foundation.d.ts +36 -0
- package/lib/cjs/table/foundation.js +162 -28
- 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 +2 -2
- package/lib/cjs/tagInput/tagInput.css +2 -2
- 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/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 +8 -8
- 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.js +49 -3
- package/lib/es/hotKeys/hotKeys.css +2 -2
- package/lib/es/image/image.css +2 -2
- package/lib/es/input/input.css +8 -8
- package/lib/es/input/textarea.css +2 -2
- 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 +2 -2
- package/lib/es/notification/notification.css +4 -4
- 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/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/table/foundation.d.ts +36 -0
- package/lib/es/table/foundation.js +162 -28
- 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 +2 -2
- package/lib/es/tagInput/tagInput.css +2 -2
- 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/package.json +19 -4
- package/scrollList/itemFoundation.ts +12 -0
- package/slider/foundation.ts +55 -15
- package/slider/rtl.scss +62 -0
- package/slider/slider.scss +2 -0
- package/table/foundation.ts +197 -29
- package/table/table.scss +17 -0
- 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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _throttle from "lodash/throttle";
|
|
1
2
|
import _get from "lodash/get";
|
|
2
3
|
import _pick from "lodash/pick";
|
|
3
4
|
import _difference from "lodash/difference";
|
|
@@ -18,6 +19,27 @@ export default class TreeFoundation extends BaseFoundation {
|
|
|
18
19
|
dragging: false
|
|
19
20
|
});
|
|
20
21
|
};
|
|
22
|
+
// Throttle drag over state updates to improve performance during fast dragging
|
|
23
|
+
// 16ms ≈ 60fps, ensuring smooth updates without excessive re-renders
|
|
24
|
+
this.throttledDragOverUpdate = _throttle(dropPosition => {
|
|
25
|
+
this._adapter.updateState({
|
|
26
|
+
dropPosition
|
|
27
|
+
});
|
|
28
|
+
}, 16);
|
|
29
|
+
}
|
|
30
|
+
destroy() {
|
|
31
|
+
super.destroy();
|
|
32
|
+
// Cancel any pending throttled updates
|
|
33
|
+
if (this.throttledDragOverUpdate) {
|
|
34
|
+
this.throttledDragOverUpdate.cancel();
|
|
35
|
+
}
|
|
36
|
+
// Clear pending delayed drag enter timers to avoid updates after unmount
|
|
37
|
+
if (this.delayedDragEnterLogic) {
|
|
38
|
+
Object.keys(this.delayedDragEnterLogic).forEach(key => {
|
|
39
|
+
clearTimeout(this.delayedDragEnterLogic[key]);
|
|
40
|
+
});
|
|
41
|
+
this.delayedDragEnterLogic = null;
|
|
42
|
+
}
|
|
21
43
|
}
|
|
22
44
|
_isMultiple() {
|
|
23
45
|
return this.getProp('multiple');
|
|
@@ -587,30 +609,35 @@ export default class TreeFoundation extends BaseFoundation {
|
|
|
587
609
|
if (dragNodesKeys.has(eventKey)) {
|
|
588
610
|
return;
|
|
589
611
|
}
|
|
590
|
-
// Update the drag position
|
|
612
|
+
// Update the drag position with throttle to improve performance
|
|
591
613
|
if (dragNode && eventKey === dragOverNodeKey) {
|
|
592
614
|
const newPos = calcDropRelativePosition(e, treeNode);
|
|
593
615
|
if (dropPosition === newPos) {
|
|
594
616
|
return;
|
|
595
617
|
}
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
});
|
|
618
|
+
// Use throttled update to reduce re-renders during fast dragging
|
|
619
|
+
this.throttledDragOverUpdate(newPos);
|
|
599
620
|
}
|
|
600
621
|
this.triggerDragEvent('onDragOver', e, treeNode);
|
|
601
622
|
}
|
|
602
623
|
handleNodeDragLeave(e, treeNode) {
|
|
624
|
+
// Cancel pending throttled updates when leaving a node
|
|
625
|
+
this.throttledDragOverUpdate.cancel();
|
|
603
626
|
this._adapter.updateState({
|
|
604
627
|
dragOverNodeKey: ''
|
|
605
628
|
});
|
|
606
629
|
this.triggerDragEvent('onDragLeave', e, treeNode);
|
|
607
630
|
}
|
|
608
631
|
handleNodeDragEnd(e, treeNode) {
|
|
632
|
+
// Flush any pending throttled updates before clearing drag state
|
|
633
|
+
this.throttledDragOverUpdate.flush();
|
|
609
634
|
this.clearDragState();
|
|
610
635
|
this.triggerDragEvent('onDragEnd', e, treeNode);
|
|
611
636
|
this._adapter.setDragNode(null);
|
|
612
637
|
}
|
|
613
638
|
handleNodeDrop(e, treeNode, dragNode) {
|
|
639
|
+
// Flush any pending throttled updates to ensure accurate drop position
|
|
640
|
+
this.throttledDragOverUpdate.flush();
|
|
614
641
|
const {
|
|
615
642
|
dropPosition,
|
|
616
643
|
dragNodesKeys
|
package/lib/es/tree/tree.css
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
transform: scale(var(--semi-transform_scale-none));
|
|
51
51
|
font-size: 14px;
|
|
52
52
|
line-height: 20px;
|
|
53
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
53
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
54
54
|
word-break: break-word;
|
|
55
55
|
color: var(--semi-color-text-0);
|
|
56
56
|
position: relative;
|
|
@@ -481,8 +481,15 @@ export default class TreeSelectFoundation extends BaseFoundation {
|
|
|
481
481
|
showFilteredOnly,
|
|
482
482
|
filterTreeNode,
|
|
483
483
|
treeNodeFilterProp,
|
|
484
|
-
keyMaps
|
|
484
|
+
keyMaps,
|
|
485
|
+
remote
|
|
485
486
|
} = this.getProps();
|
|
487
|
+
// When remote is true, skip local filtering, only update inputValue and trigger onSearch callback
|
|
488
|
+
if (remote) {
|
|
489
|
+
this._adapter.notifySearch(sugInput, [], []);
|
|
490
|
+
this._adapter.rePositionDropdown();
|
|
491
|
+
return;
|
|
492
|
+
}
|
|
486
493
|
const realFilterProp = treeNodeFilterProp !== 'label' ? treeNodeFilterProp : _get(keyMaps, 'label', 'label');
|
|
487
494
|
const newExpandedKeys = new Set(expandedKeys);
|
|
488
495
|
let filteredNodes = [];
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
align-items: center;
|
|
15
15
|
position: relative;
|
|
16
16
|
cursor: pointer;
|
|
17
|
+
/**
|
|
18
|
+
* Enable wrapping selected tags in trigger.
|
|
19
|
+
* Only takes effect in multiple + searchPosition="trigger" mode (class added by component).
|
|
20
|
+
*/
|
|
17
21
|
}
|
|
18
22
|
.semi-tree-select:hover {
|
|
19
23
|
background-color: var(--semi-color-fill-1);
|
|
@@ -92,7 +96,7 @@
|
|
|
92
96
|
.semi-tree-select-selection {
|
|
93
97
|
font-size: 14px;
|
|
94
98
|
line-height: 20px;
|
|
95
|
-
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;
|
|
96
100
|
height: 100%;
|
|
97
101
|
display: inline-flex;
|
|
98
102
|
align-items: center;
|
|
@@ -200,6 +204,34 @@
|
|
|
200
204
|
.semi-tree-select-multiple .semi-tree-select-selection-placeholder {
|
|
201
205
|
padding-left: 8px;
|
|
202
206
|
}
|
|
207
|
+
.semi-tree-select-triggerTagWrap {
|
|
208
|
+
max-width: 100%;
|
|
209
|
+
}
|
|
210
|
+
.semi-tree-select-triggerTagWrap .semi-tree-select-selection {
|
|
211
|
+
min-width: 0;
|
|
212
|
+
}
|
|
213
|
+
.semi-tree-select-triggerTagWrap.semi-tree-select-multiple {
|
|
214
|
+
height: auto;
|
|
215
|
+
}
|
|
216
|
+
.semi-tree-select-triggerTagWrap.semi-tree-select-multiple .semi-tree-select-selection {
|
|
217
|
+
height: auto;
|
|
218
|
+
min-height: 30px;
|
|
219
|
+
overflow: visible;
|
|
220
|
+
}
|
|
221
|
+
.semi-tree-select-triggerTagWrap.semi-tree-select-multiple.semi-tree-select-small .semi-tree-select-selection {
|
|
222
|
+
min-height: 22px;
|
|
223
|
+
}
|
|
224
|
+
.semi-tree-select-triggerTagWrap.semi-tree-select-multiple.semi-tree-select-large .semi-tree-select-selection {
|
|
225
|
+
min-height: 38px;
|
|
226
|
+
}
|
|
227
|
+
.semi-tree-select-triggerTagWrap .semi-tagInput {
|
|
228
|
+
min-width: 0;
|
|
229
|
+
max-width: 100%;
|
|
230
|
+
flex: 1 1 auto;
|
|
231
|
+
}
|
|
232
|
+
.semi-tree-select-triggerTagWrap .semi-tagInput .semi-tagInput-wrapper-input {
|
|
233
|
+
max-width: 100%;
|
|
234
|
+
}
|
|
203
235
|
.semi-tree-select-small {
|
|
204
236
|
min-height: 24px;
|
|
205
237
|
line-height: 24px;
|
|
@@ -211,7 +243,7 @@
|
|
|
211
243
|
.semi-tree-select-large .semi-tree-select-selection {
|
|
212
244
|
font-size: 16px;
|
|
213
245
|
line-height: 22px;
|
|
214
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
246
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
215
247
|
}
|
|
216
248
|
.semi-tree-select-arrow {
|
|
217
249
|
display: inline-flex;
|
|
@@ -228,7 +260,7 @@
|
|
|
228
260
|
font-weight: 600;
|
|
229
261
|
font-size: 14px;
|
|
230
262
|
line-height: 20px;
|
|
231
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
263
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
232
264
|
color: var(--semi-color-text-2);
|
|
233
265
|
flex-shrink: 0;
|
|
234
266
|
white-space: nowrap;
|
|
@@ -263,7 +295,7 @@
|
|
|
263
295
|
font-weight: 600;
|
|
264
296
|
font-size: 14px;
|
|
265
297
|
line-height: 20px;
|
|
266
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
298
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
267
299
|
margin: 0px 12px;
|
|
268
300
|
}
|
|
269
301
|
.semi-tree-select-prefix-icon, .semi-tree-select-suffix-icon {
|
|
@@ -258,7 +258,6 @@ $module: #{$prefix}-tree-select;
|
|
|
258
258
|
|
|
259
259
|
&-multiple {
|
|
260
260
|
display: inline-flex;
|
|
261
|
-
|
|
262
261
|
.#{$module}-selection {
|
|
263
262
|
padding-left: $spacing-treeSelect_selection_multiple-paddingLeft;
|
|
264
263
|
padding-right: 0;
|
|
@@ -269,6 +268,55 @@ $module: #{$prefix}-tree-select;
|
|
|
269
268
|
}
|
|
270
269
|
}
|
|
271
270
|
|
|
271
|
+
/**
|
|
272
|
+
* Enable wrapping selected tags in trigger.
|
|
273
|
+
* Only takes effect in multiple + searchPosition="trigger" mode (class added by component).
|
|
274
|
+
*/
|
|
275
|
+
&-triggerTagWrap {
|
|
276
|
+
// Prevent trigger from expanding beyond its container
|
|
277
|
+
max-width: 100%;
|
|
278
|
+
|
|
279
|
+
.#{$module}-selection {
|
|
280
|
+
// Allow selection area to shrink so inner TagInput can wrap
|
|
281
|
+
min-width: 0;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
&.#{$module}-multiple {
|
|
285
|
+
// multiple tags may wrap to multiple lines
|
|
286
|
+
height: auto;
|
|
287
|
+
|
|
288
|
+
.#{$module}-selection {
|
|
289
|
+
// allow height to grow when wrapping
|
|
290
|
+
height: auto;
|
|
291
|
+
min-height: $height-treeSelect_default - 2 * $width-treeSelect-border;
|
|
292
|
+
overflow: visible;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
&.#{$module}-small {
|
|
296
|
+
.#{$module}-selection {
|
|
297
|
+
min-height: $height-treeSelect_small - 2 * $width-treeSelect-border;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
&.#{$module}-large {
|
|
302
|
+
.#{$module}-selection {
|
|
303
|
+
min-height: $height-treeSelect_large - 2 * $width-treeSelect-border;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Make TagInput shrinkable as a flex item, and constrain measured input width
|
|
309
|
+
.#{$prefix}-tagInput {
|
|
310
|
+
min-width: 0;
|
|
311
|
+
max-width: 100%;
|
|
312
|
+
flex: 1 1 auto;
|
|
313
|
+
|
|
314
|
+
.#{$prefix}-tagInput-wrapper-input {
|
|
315
|
+
max-width: 100%;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
272
320
|
&-small {
|
|
273
321
|
min-height: $height-treeSelect_small;
|
|
274
322
|
line-height: $font-treeSelect_small-lineHeight;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
color: var(--semi-color-text-0);
|
|
6
6
|
font-size: 14px;
|
|
7
7
|
line-height: 20px;
|
|
8
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
8
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
9
9
|
}
|
|
10
10
|
.semi-typography.semi-typography-secondary {
|
|
11
11
|
color: var(--semi-color-text-1);
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
.semi-typography-small {
|
|
46
46
|
font-size: 12px;
|
|
47
47
|
line-height: 16px;
|
|
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
|
font-weight: 400;
|
|
50
50
|
}
|
|
51
51
|
.semi-typography-small.semi-typography-paragraph {
|
|
@@ -146,7 +146,7 @@ h1.semi-typography,
|
|
|
146
146
|
.semi-typography-h1.semi-typography {
|
|
147
147
|
font-size: 32px;
|
|
148
148
|
line-height: 44px;
|
|
149
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
149
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
150
150
|
font-weight: 600;
|
|
151
151
|
margin: 0;
|
|
152
152
|
}
|
|
@@ -175,7 +175,7 @@ h2.semi-typography,
|
|
|
175
175
|
.semi-typography-h2.semi-typography {
|
|
176
176
|
font-size: 28px;
|
|
177
177
|
line-height: 40px;
|
|
178
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
178
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
179
179
|
font-weight: 600;
|
|
180
180
|
margin: 0;
|
|
181
181
|
}
|
|
@@ -204,7 +204,7 @@ h3.semi-typography,
|
|
|
204
204
|
.semi-typography-h3.semi-typography {
|
|
205
205
|
font-size: 24px;
|
|
206
206
|
line-height: 32px;
|
|
207
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
207
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
208
208
|
font-weight: 600;
|
|
209
209
|
margin: 0;
|
|
210
210
|
}
|
|
@@ -233,7 +233,7 @@ h4.semi-typography,
|
|
|
233
233
|
.semi-typography-h4.semi-typography {
|
|
234
234
|
font-size: 20px;
|
|
235
235
|
line-height: 28px;
|
|
236
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
236
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
237
237
|
font-weight: 600;
|
|
238
238
|
margin: 0;
|
|
239
239
|
}
|
|
@@ -262,7 +262,7 @@ h5.semi-typography,
|
|
|
262
262
|
.semi-typography-h5.semi-typography {
|
|
263
263
|
font-size: 18px;
|
|
264
264
|
line-height: 24px;
|
|
265
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
265
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
266
266
|
font-weight: 600;
|
|
267
267
|
margin: 0;
|
|
268
268
|
}
|
|
@@ -291,7 +291,7 @@ h6.semi-typography,
|
|
|
291
291
|
.semi-typography-h6.semi-typography {
|
|
292
292
|
font-size: 16px;
|
|
293
293
|
line-height: 22px;
|
|
294
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
294
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
295
295
|
font-weight: 600;
|
|
296
296
|
margin: 0;
|
|
297
297
|
}
|
package/lib/es/upload/upload.css
CHANGED
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
.semi-upload-file-list-title {
|
|
89
89
|
font-size: 12px;
|
|
90
90
|
line-height: 16px;
|
|
91
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
91
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
92
92
|
color: var(--semi-color-text-2);
|
|
93
93
|
margin-bottom: 4px;
|
|
94
94
|
}
|
|
@@ -164,14 +164,14 @@
|
|
|
164
164
|
display: inline-block;
|
|
165
165
|
font-size: 14px;
|
|
166
166
|
line-height: 20px;
|
|
167
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
167
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
168
168
|
font-weight: 600;
|
|
169
169
|
color: var(--semi-color-text-0);
|
|
170
170
|
}
|
|
171
171
|
.semi-upload-file-card-info-size {
|
|
172
172
|
font-size: 12px;
|
|
173
173
|
line-height: 16px;
|
|
174
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
174
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
175
175
|
font-weight: 400;
|
|
176
176
|
margin-left: 8px;
|
|
177
177
|
color: var(--semi-color-text-2);
|
|
@@ -185,7 +185,7 @@
|
|
|
185
185
|
.semi-upload-file-card-info-validate-message {
|
|
186
186
|
font-size: 12px;
|
|
187
187
|
line-height: 16px;
|
|
188
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
188
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
189
189
|
display: flex;
|
|
190
190
|
align-items: center;
|
|
191
191
|
color: var(--semi-color-text-0);
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
.semi-upload-file-card-info-retry {
|
|
194
194
|
font-size: 12px;
|
|
195
195
|
line-height: 16px;
|
|
196
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
196
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
197
197
|
color: var(--semi-color-primary);
|
|
198
198
|
cursor: pointer;
|
|
199
199
|
margin-left: 8px;
|
|
@@ -468,7 +468,7 @@
|
|
|
468
468
|
cursor: pointer;
|
|
469
469
|
font-size: 14px;
|
|
470
470
|
line-height: 20px;
|
|
471
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
471
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
472
472
|
margin-bottom: 4px;
|
|
473
473
|
color: var(--semi-color-text-0);
|
|
474
474
|
}
|
|
@@ -482,7 +482,7 @@
|
|
|
482
482
|
cursor: pointer;
|
|
483
483
|
font-size: 12px;
|
|
484
484
|
line-height: 16px;
|
|
485
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
485
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
486
486
|
color: var(--semi-color-text-0);
|
|
487
487
|
}
|
|
488
488
|
.semi-upload-drag-area-sub-text:hover {
|
|
@@ -494,7 +494,7 @@
|
|
|
494
494
|
.semi-upload-drag-area-tips {
|
|
495
495
|
font-size: 12px;
|
|
496
496
|
line-height: 16px;
|
|
497
|
-
font-family: "Inter", -apple-system, BlinkMacSystemFont, "
|
|
497
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
498
498
|
font-weight: 600;
|
|
499
499
|
}
|
|
500
500
|
.semi-upload-drag-area-tips-legal {
|
package/lib/es/utils/Store.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ declare class Store<T = Record<string, any>> {
|
|
|
2
2
|
_state: T;
|
|
3
3
|
_listeners: any[];
|
|
4
4
|
constructor(initialState: T);
|
|
5
|
-
subscribe(listener: (state: T) => () => void): () => void;
|
|
5
|
+
subscribe(listener: (state: T) => void | (() => void)): () => void;
|
|
6
6
|
setState(state: T): void;
|
|
7
7
|
getState(): T;
|
|
8
8
|
}
|
package/lib/es/utils/Store.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-foundation",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.98.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "rimraf lib",
|
|
@@ -10053,6 +10053,21 @@
|
|
|
10053
10053
|
"import": "./lib/es/slider/foundation.js",
|
|
10054
10054
|
"require": "./lib/cjs/slider/foundation.js"
|
|
10055
10055
|
},
|
|
10056
|
+
"./lib/es/slider/rtl.scss": {
|
|
10057
|
+
"import": "./lib/es/slider/rtl.scss",
|
|
10058
|
+
"require": "./lib/cjs/slider/rtl.scss",
|
|
10059
|
+
"default": "./lib/es/slider/rtl.scss"
|
|
10060
|
+
},
|
|
10061
|
+
"./lib/cjs/slider/rtl.scss": {
|
|
10062
|
+
"import": "./lib/es/slider/rtl.scss",
|
|
10063
|
+
"require": "./lib/cjs/slider/rtl.scss",
|
|
10064
|
+
"default": "./lib/es/slider/rtl.scss"
|
|
10065
|
+
},
|
|
10066
|
+
"./slider/rtl.scss": {
|
|
10067
|
+
"import": "./lib/es/slider/rtl.scss",
|
|
10068
|
+
"require": "./lib/cjs/slider/rtl.scss",
|
|
10069
|
+
"default": "./lib/es/slider/rtl.scss"
|
|
10070
|
+
},
|
|
10056
10071
|
"./lib/es/slider/slider.css": {
|
|
10057
10072
|
"import": "./lib/es/slider/slider.css",
|
|
10058
10073
|
"require": "./lib/cjs/slider/slider.css",
|
|
@@ -14210,8 +14225,8 @@
|
|
|
14210
14225
|
}
|
|
14211
14226
|
},
|
|
14212
14227
|
"dependencies": {
|
|
14213
|
-
"@douyinfe/semi-animation": "2.
|
|
14214
|
-
"@douyinfe/semi-json-viewer-core": "2.
|
|
14228
|
+
"@douyinfe/semi-animation": "2.98.0",
|
|
14229
|
+
"@douyinfe/semi-json-viewer-core": "2.98.0",
|
|
14215
14230
|
"@mdx-js/mdx": "^3.0.1",
|
|
14216
14231
|
"async-validator": "^3.5.0",
|
|
14217
14232
|
"classnames": "^2.2.6",
|
|
@@ -14232,7 +14247,7 @@
|
|
|
14232
14247
|
"*.scss",
|
|
14233
14248
|
"*.css"
|
|
14234
14249
|
],
|
|
14235
|
-
"gitHead": "
|
|
14250
|
+
"gitHead": "e33a947a4e0745a7ad15d3e773355cc19d23b174",
|
|
14236
14251
|
"devDependencies": {
|
|
14237
14252
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
14238
14253
|
"@babel/preset-env": "^7.15.8",
|
|
@@ -91,6 +91,12 @@ export default class ItemFoundation<P = Record<string, any>, S = Record<string,
|
|
|
91
91
|
const lastRect = lastNode.getBoundingClientRect();
|
|
92
92
|
|
|
93
93
|
const listHeight = lastRect.height * list.length;
|
|
94
|
+
// Guard against environments where layout is not computed
|
|
95
|
+
// (e.g. jsdom returns all-zero rects), which would otherwise
|
|
96
|
+
// make `baseTop += listHeight` a no-op and loop forever.
|
|
97
|
+
if (listHeight <= 0) {
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
94
100
|
let baseTop = lastRect.top;
|
|
95
101
|
let count = 0;
|
|
96
102
|
|
|
@@ -127,6 +133,12 @@ export default class ItemFoundation<P = Record<string, any>, S = Record<string,
|
|
|
127
133
|
const firstRect = firstNode.getBoundingClientRect();
|
|
128
134
|
|
|
129
135
|
const listHeight = firstRect.height * list.length;
|
|
136
|
+
// Guard against environments where layout is not computed
|
|
137
|
+
// (e.g. jsdom returns all-zero rects), which would otherwise
|
|
138
|
+
// make `baseTop -= listHeight` a no-op and loop forever.
|
|
139
|
+
if (listHeight <= 0) {
|
|
140
|
+
return 0;
|
|
141
|
+
}
|
|
130
142
|
|
|
131
143
|
let baseTop = firstRect.top;
|
|
132
144
|
let count = 0;
|
package/slider/foundation.ts
CHANGED
|
@@ -147,6 +147,8 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
147
147
|
getMinAndMaxPercent = (value: number | number[]) => {
|
|
148
148
|
// debugger
|
|
149
149
|
const { range, min, max } = this._adapter.getProps();
|
|
150
|
+
// Percent always increases with value, independent of visual direction.
|
|
151
|
+
// UI layer decides whether to use `left` or `right` to place elements.
|
|
150
152
|
const minPercent = range ? (value[0] - min) / (max - min) : (value as number - min) / (max - min);
|
|
151
153
|
const maxPercent = range ? (value[1] - min) / (max - min) : 1;
|
|
152
154
|
return { min: this._checkValidity(minPercent), max: this._checkValidity(maxPercent) };
|
|
@@ -264,6 +266,8 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
264
266
|
|
|
265
267
|
// Returns the length of the distance to the left
|
|
266
268
|
const { vertical, verticalReverse, range } = this._adapter.getProps();
|
|
269
|
+
const direction = this._adapter.getContext('direction');
|
|
270
|
+
const isRTL = direction === 'rtl' && !vertical;
|
|
267
271
|
const value = this._adapter.getState('currentValue');
|
|
268
272
|
const currentPos = this.transValueToPos(value);
|
|
269
273
|
const { sliderX, sliderY, sliderWidth, sliderHeight } = this._adapter.getSliderLengths();
|
|
@@ -272,6 +276,9 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
272
276
|
let startPos;
|
|
273
277
|
if (vertical && verticalReverse) {
|
|
274
278
|
startPos = sliderY + len;
|
|
279
|
+
} else if (isRTL) {
|
|
280
|
+
// In RTL mode, start from right (sliderX + sliderWidth)
|
|
281
|
+
startPos = sliderX + len;
|
|
275
282
|
} else {
|
|
276
283
|
startPos = vertical ? sliderY : sliderX;
|
|
277
284
|
}
|
|
@@ -279,13 +286,16 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
279
286
|
let endPos;
|
|
280
287
|
if (vertical && verticalReverse) {
|
|
281
288
|
endPos = sliderY;
|
|
289
|
+
} else if (isRTL) {
|
|
290
|
+
// In RTL mode, end at left (sliderX)
|
|
291
|
+
endPos = sliderX;
|
|
282
292
|
} else {
|
|
283
293
|
endPos = vertical ? sliderY + sliderHeight : sliderX + sliderWidth;
|
|
284
294
|
}
|
|
285
295
|
// endPos = chooseMovePos === 'min' && isDrag && range ? currentPos[1] : endPos;
|
|
286
296
|
|
|
287
297
|
|
|
288
|
-
if (vertical && verticalReverse) {
|
|
298
|
+
if ((vertical && verticalReverse) || isRTL) {
|
|
289
299
|
if (position >= startPos) {
|
|
290
300
|
position = startPos;
|
|
291
301
|
} else if (position <= endPos) {
|
|
@@ -310,6 +320,8 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
310
320
|
const pos = this.checkMeetMinMax(mousePos);
|
|
311
321
|
const { min, max, currentValue } = this._adapter.getStates();
|
|
312
322
|
const { range, vertical, step, verticalReverse } = this._adapter.getProps();
|
|
323
|
+
const direction = this._adapter.getContext('direction');
|
|
324
|
+
const isRTL = direction === 'rtl' && !vertical;
|
|
313
325
|
const { sliderX, sliderY, sliderWidth, sliderHeight } = this._adapter.getSliderLengths();
|
|
314
326
|
const startPos = vertical ? sliderY : sliderX;
|
|
315
327
|
const len = vertical ? sliderHeight : sliderWidth;
|
|
@@ -317,6 +329,9 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
317
329
|
if (vertical && verticalReverse) {
|
|
318
330
|
//isMin = !isMin;
|
|
319
331
|
stepValue = ((startPos + len - pos) / len) * (max - min) + min;
|
|
332
|
+
} else if (isRTL) {
|
|
333
|
+
// In RTL mode, position is calculated from right to left
|
|
334
|
+
stepValue = ((startPos + len - pos) / len) * (max - min) + min;
|
|
320
335
|
} else {
|
|
321
336
|
stepValue = ((pos - startPos) / len) * (max - min) + min;
|
|
322
337
|
}
|
|
@@ -347,13 +362,29 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
347
362
|
transValueToPos = (value: SliderProps['value']) => {
|
|
348
363
|
const { min, max } = this._adapter.getStates();
|
|
349
364
|
const { vertical, range, verticalReverse } = this._adapter.getProps();
|
|
365
|
+
const direction = this._adapter.getContext('direction');
|
|
366
|
+
const isRTL = direction === 'rtl' && !vertical;
|
|
350
367
|
const { sliderX, sliderY, sliderWidth, sliderHeight } = this._adapter.getSliderLengths();
|
|
368
|
+
|
|
351
369
|
const startPos = vertical ? sliderY : sliderX;
|
|
352
370
|
const len = vertical ? sliderHeight : sliderWidth;
|
|
371
|
+
|
|
372
|
+
const transSingle = (val: number) => {
|
|
373
|
+
const percent = (val - min) / (max - min);
|
|
374
|
+
if (vertical && verticalReverse) {
|
|
375
|
+
// Reverse direction in vertical mode
|
|
376
|
+
return startPos + len - percent * len;
|
|
377
|
+
}
|
|
378
|
+
if (isRTL) {
|
|
379
|
+
// Reverse direction in horizontal RTL
|
|
380
|
+
return startPos + len - percent * len;
|
|
381
|
+
}
|
|
382
|
+
return startPos + percent * len;
|
|
383
|
+
};
|
|
353
384
|
if (range) {
|
|
354
|
-
return [(
|
|
385
|
+
return [transSingle(value[0]), transSingle(value[1])];
|
|
355
386
|
} else {
|
|
356
|
-
return (
|
|
387
|
+
return transSingle(value as number);
|
|
357
388
|
}
|
|
358
389
|
};
|
|
359
390
|
|
|
@@ -649,22 +680,34 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
649
680
|
|
|
650
681
|
handleKeyDown = (event: any, handler: 'min'| 'max') => {
|
|
651
682
|
const { min, max, currentValue } = this.getStates();
|
|
652
|
-
const { step, range } = this.getProps();
|
|
683
|
+
const { step, range, vertical } = this.getProps();
|
|
684
|
+
const direction = this._adapter.getContext('direction');
|
|
685
|
+
const isRTL = direction === 'rtl' && !vertical;
|
|
653
686
|
let outputValue;
|
|
654
687
|
switch (event.key) {
|
|
655
688
|
case "ArrowLeft":
|
|
656
689
|
case "ArrowDown":
|
|
657
|
-
|
|
690
|
+
// In RTL mode, ArrowLeft and ArrowDown should increase value
|
|
691
|
+
outputValue = isRTL ?
|
|
692
|
+
this._handleValueIncreaseWithKeyBoard(step, handler) :
|
|
693
|
+
this._handleValueDecreaseWithKeyBoard(step, handler);
|
|
658
694
|
break;
|
|
659
695
|
case "ArrowRight":
|
|
660
696
|
case "ArrowUp":
|
|
661
|
-
|
|
697
|
+
// In RTL mode, ArrowRight and ArrowUp should decrease value
|
|
698
|
+
outputValue = isRTL ?
|
|
699
|
+
this._handleValueDecreaseWithKeyBoard(step, handler) :
|
|
700
|
+
this._handleValueIncreaseWithKeyBoard(step, handler);
|
|
662
701
|
break;
|
|
663
702
|
case "PageUp":
|
|
664
|
-
outputValue =
|
|
703
|
+
outputValue = isRTL ?
|
|
704
|
+
this._handleValueDecreaseWithKeyBoard(10 * step, handler) :
|
|
705
|
+
this._handleValueIncreaseWithKeyBoard(10 * step, handler);
|
|
665
706
|
break;
|
|
666
707
|
case "PageDown":
|
|
667
|
-
outputValue =
|
|
708
|
+
outputValue = isRTL ?
|
|
709
|
+
this._handleValueIncreaseWithKeyBoard(10 * step, handler) :
|
|
710
|
+
this._handleValueDecreaseWithKeyBoard(10 * step, handler);
|
|
668
711
|
break;
|
|
669
712
|
case "Home":
|
|
670
713
|
outputValue = this._handleHomeKey(handler);
|
|
@@ -775,13 +818,10 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
|
|
|
775
818
|
const currentPos = this.transValueToPos(currentValue);
|
|
776
819
|
let isMin = true;
|
|
777
820
|
if (Array.isArray(currentPos)) {
|
|
778
|
-
//
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
) {
|
|
783
|
-
isMin = false;
|
|
784
|
-
}
|
|
821
|
+
// Choose the nearest handle regardless of ordering (LTR/RTL/verticalReverse)
|
|
822
|
+
const distToFirst = Math.abs(pagePos - currentPos[0]);
|
|
823
|
+
const distToSecond = Math.abs(pagePos - currentPos[1]);
|
|
824
|
+
isMin = distToFirst <= distToSecond;
|
|
785
825
|
}
|
|
786
826
|
if (vertical && verticalReverse) {
|
|
787
827
|
isMin = !isMin;
|