@douyinfe/semi-ui 2.28.0-alpha.0 → 2.28.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/dist/css/semi.css +227 -0
- package/dist/css/semi.min.css +1 -1
- package/dist/umd/semi-ui.js +2393 -2068
- package/dist/umd/semi-ui.js.map +1 -1
- package/dist/umd/semi-ui.min.js +1 -1
- package/dist/umd/semi-ui.min.js.map +1 -1
- package/lib/cjs/_portal/index.js +2 -2
- package/lib/cjs/_utils/index.js +3 -1
- package/lib/cjs/anchor/index.js +9 -9
- package/lib/cjs/anchor/link.js +8 -8
- package/lib/cjs/autoComplete/index.js +8 -4
- package/lib/cjs/autoComplete/option.js +7 -7
- package/lib/cjs/avatar/avatarGroup.js +7 -7
- package/lib/cjs/avatar/index.js +12 -12
- package/lib/cjs/badge/index.js +8 -8
- package/lib/cjs/banner/index.js +12 -12
- package/lib/cjs/breadcrumb/index.js +12 -12
- package/lib/cjs/breadcrumb/item.js +8 -8
- package/lib/cjs/button/Button.js +9 -9
- package/lib/cjs/button/buttonGroup.js +5 -5
- package/lib/cjs/button/splitButtonGroup.js +1 -1
- package/lib/cjs/calendar/dayCalendar.js +13 -13
- package/lib/cjs/calendar/dayCol.js +17 -17
- package/lib/cjs/calendar/monthCalendar.js +38 -38
- package/lib/cjs/calendar/rangeCalendar.js +27 -27
- package/lib/cjs/calendar/timeCol.js +6 -6
- package/lib/cjs/calendar/weekCalendar.js +27 -27
- package/lib/cjs/card/cardGroup.js +2 -2
- package/lib/cjs/card/index.js +16 -16
- package/lib/cjs/card/meta.js +5 -5
- package/lib/cjs/carousel/CarouselArrow.js +6 -6
- package/lib/cjs/carousel/CarouselIndicator.js +6 -6
- package/lib/cjs/carousel/index.js +12 -12
- package/lib/cjs/cascader/index.d.ts +5 -2
- package/lib/cjs/cascader/index.js +40 -38
- package/lib/cjs/cascader/item.d.ts +15 -1
- package/lib/cjs/cascader/item.js +64 -32
- package/lib/cjs/checkbox/checkbox.js +14 -14
- package/lib/cjs/checkbox/checkboxGroup.js +4 -4
- package/lib/cjs/checkbox/checkboxInner.js +6 -6
- package/lib/cjs/collapse/item.js +9 -9
- package/lib/cjs/collapsible/index.js +3 -3
- package/lib/cjs/configProvider/index.js +1 -1
- package/lib/cjs/datePicker/dateInput.js +16 -16
- package/lib/cjs/datePicker/datePicker.js +9 -9
- package/lib/cjs/datePicker/footer.js +1 -1
- package/lib/cjs/datePicker/index.js +1 -1
- package/lib/cjs/datePicker/month.js +2 -2
- package/lib/cjs/datePicker/monthsGrid.js +27 -27
- package/lib/cjs/datePicker/navigation.js +1 -1
- package/lib/cjs/datePicker/quickControl.js +14 -14
- package/lib/cjs/datePicker/yearAndMonth.js +4 -4
- package/lib/cjs/descriptions/index.js +3 -3
- package/lib/cjs/descriptions/item.js +5 -5
- package/lib/cjs/divider/index.js +7 -7
- package/lib/cjs/dropdown/dropdownDivider.js +1 -1
- package/lib/cjs/dropdown/dropdownItem.js +7 -7
- package/lib/cjs/dropdown/dropdownMenu.js +1 -1
- package/lib/cjs/dropdown/dropdownTitle.js +2 -2
- package/lib/cjs/dropdown/index.js +3 -3
- package/lib/cjs/empty/index.js +7 -7
- package/lib/cjs/form/arrayField.js +1 -1
- package/lib/cjs/form/baseForm.d.ts +2 -0
- package/lib/cjs/form/baseForm.js +2 -2
- package/lib/cjs/form/errorMessage.js +1 -1
- package/lib/cjs/form/field.d.ts +2 -0
- package/lib/cjs/form/group.js +2 -2
- package/lib/cjs/form/hoc/withField.js +16 -16
- package/lib/cjs/form/label.js +9 -9
- package/lib/cjs/form/slot.js +5 -5
- package/lib/cjs/grid/col.js +11 -11
- package/lib/cjs/grid/row.js +4 -4
- package/lib/cjs/highlight/index.js +1 -1
- package/lib/cjs/iconButton/index.js +5 -5
- package/lib/cjs/image/image.js +10 -10
- package/lib/cjs/image/preview.js +3 -3
- package/lib/cjs/image/previewFooter.js +12 -12
- package/lib/cjs/image/previewHeader.js +3 -3
- package/lib/cjs/image/previewImage.js +7 -7
- package/lib/cjs/image/previewInner.js +7 -7
- package/lib/cjs/input/index.js +38 -38
- package/lib/cjs/input/inputGroup.js +7 -7
- package/lib/cjs/input/textarea.js +14 -14
- package/lib/cjs/inputNumber/index.js +11 -11
- package/lib/cjs/layout/Sider.d.ts +1 -1
- package/lib/cjs/layout/Sider.js +4 -4
- package/lib/cjs/layout/index.js +3 -3
- package/lib/cjs/list/index.js +11 -11
- package/lib/cjs/list/item.js +6 -6
- package/lib/cjs/modal/ConfirmModal.js +7 -7
- package/lib/cjs/modal/Modal.js +4 -4
- package/lib/cjs/modal/ModalContent.js +24 -24
- package/lib/cjs/modal/useModal/index.js +1 -1
- package/lib/cjs/navigation/CollapseButton.js +1 -1
- package/lib/cjs/navigation/Footer.js +2 -2
- package/lib/cjs/navigation/Header.js +5 -5
- package/lib/cjs/navigation/Item.js +16 -16
- package/lib/cjs/navigation/SubNav.js +14 -14
- package/lib/cjs/navigation/index.js +8 -8
- package/lib/cjs/notification/index.js +3 -3
- package/lib/cjs/notification/notice.js +12 -12
- package/lib/cjs/overflowList/index.d.ts +1 -1
- package/lib/cjs/overflowList/index.js +32 -35
- package/lib/cjs/overflowList/intersectionObserver.js +3 -1
- package/lib/cjs/pagination/index.js +26 -26
- package/lib/cjs/popconfirm/index.js +9 -9
- package/lib/cjs/popover/index.js +2 -2
- package/lib/cjs/progress/index.js +14 -14
- package/lib/cjs/radio/radio.js +22 -22
- package/lib/cjs/radio/radioGroup.js +5 -5
- package/lib/cjs/radio/radioInner.js +7 -7
- package/lib/cjs/rating/index.js +5 -5
- package/lib/cjs/rating/item.js +11 -11
- package/lib/cjs/scrollList/index.js +5 -5
- package/lib/cjs/scrollList/scrollItem.js +13 -13
- package/lib/cjs/select/index.d.ts +11 -0
- package/lib/cjs/select/index.js +297 -116
- package/lib/cjs/select/option.js +7 -7
- package/lib/cjs/sideSheet/SideSheetContent.js +10 -10
- package/lib/cjs/sideSheet/index.js +7 -7
- package/lib/cjs/skeleton/index.js +1 -1
- package/lib/cjs/skeleton/item.js +4 -4
- package/lib/cjs/slider/index.js +28 -28
- package/lib/cjs/space/index.js +12 -12
- package/lib/cjs/spin/icon.js +2 -2
- package/lib/cjs/spin/index.js +6 -6
- package/lib/cjs/steps/basicStep.js +14 -14
- package/lib/cjs/steps/basicSteps.js +6 -6
- package/lib/cjs/steps/fillStep.js +10 -10
- package/lib/cjs/steps/fillSteps.js +4 -4
- package/lib/cjs/steps/navStep.js +5 -5
- package/lib/cjs/steps/navSteps.js +2 -2
- package/lib/cjs/table/Body/BaseRow.js +5 -5
- package/lib/cjs/table/Body/ExpandedRow.js +3 -3
- package/lib/cjs/table/Body/SectionRow.js +1 -1
- package/lib/cjs/table/Body/index.js +8 -8
- package/lib/cjs/table/ColGroup.js +2 -2
- package/lib/cjs/table/ColumnFilter.js +3 -3
- package/lib/cjs/table/ColumnSelection.js +2 -2
- package/lib/cjs/table/ColumnSorter.js +7 -7
- package/lib/cjs/table/CustomExpandIcon.js +2 -2
- package/lib/cjs/table/HeadTable.js +3 -3
- package/lib/cjs/table/Table.js +20 -20
- package/lib/cjs/table/TableCell.js +8 -8
- package/lib/cjs/table/TableHeader.js +1 -1
- package/lib/cjs/table/TableHeaderRow.js +8 -8
- package/lib/cjs/table/TablePagination.js +3 -3
- package/lib/cjs/tabs/TabBar.js +31 -49
- package/lib/cjs/tabs/TabItem.d.ts +18 -0
- package/lib/cjs/tabs/TabItem.js +95 -0
- package/lib/cjs/tabs/TabPane.js +3 -3
- package/lib/cjs/tabs/index.d.ts +2 -1
- package/lib/cjs/tabs/index.js +5 -2
- package/lib/cjs/tag/group.js +5 -5
- package/lib/cjs/tag/index.js +13 -13
- package/lib/cjs/tagInput/index.d.ts +6 -2
- package/lib/cjs/tagInput/index.js +37 -34
- package/lib/cjs/timePicker/Combobox.js +4 -4
- package/lib/cjs/timePicker/TimeInput.js +4 -4
- package/lib/cjs/timePicker/TimePicker.js +8 -8
- package/lib/cjs/timeline/index.js +8 -8
- package/lib/cjs/timeline/item.js +7 -7
- package/lib/cjs/toast/index.js +5 -5
- package/lib/cjs/toast/toast.js +9 -9
- package/lib/cjs/tooltip/index.js +7 -7
- package/lib/cjs/transfer/index.js +31 -31
- package/lib/cjs/tree/autoSizer.js +1 -1
- package/lib/cjs/tree/index.js +6 -6
- package/lib/cjs/tree/interface.d.ts +1 -0
- package/lib/cjs/tree/nodeList.js +1 -1
- package/lib/cjs/tree/treeNode.js +26 -26
- package/lib/cjs/treeSelect/index.js +41 -41
- package/lib/cjs/typography/base.js +14 -14
- package/lib/cjs/typography/copyable.js +3 -3
- package/lib/cjs/typography/paragraph.js +1 -1
- package/lib/cjs/typography/title.js +1 -1
- package/lib/cjs/typography/util.js +1 -1
- package/lib/cjs/upload/fileCard.js +32 -32
- package/lib/cjs/upload/index.js +37 -37
- package/lib/es/_portal/index.js +2 -2
- package/lib/es/_utils/index.js +3 -1
- package/lib/es/anchor/index.js +9 -9
- package/lib/es/anchor/link.js +8 -8
- package/lib/es/autoComplete/index.js +8 -4
- package/lib/es/autoComplete/option.js +7 -7
- package/lib/es/avatar/avatarGroup.js +7 -7
- package/lib/es/avatar/index.js +12 -12
- package/lib/es/badge/index.js +8 -8
- package/lib/es/banner/index.js +12 -12
- package/lib/es/breadcrumb/index.js +12 -12
- package/lib/es/breadcrumb/item.js +8 -8
- package/lib/es/button/Button.js +9 -9
- package/lib/es/button/buttonGroup.js +5 -5
- package/lib/es/button/splitButtonGroup.js +1 -1
- package/lib/es/calendar/dayCalendar.js +13 -13
- package/lib/es/calendar/dayCol.js +17 -17
- package/lib/es/calendar/monthCalendar.js +38 -38
- package/lib/es/calendar/rangeCalendar.js +27 -27
- package/lib/es/calendar/timeCol.js +6 -6
- package/lib/es/calendar/weekCalendar.js +27 -27
- package/lib/es/card/cardGroup.js +2 -2
- package/lib/es/card/index.js +16 -16
- package/lib/es/card/meta.js +5 -5
- package/lib/es/carousel/CarouselArrow.js +6 -6
- package/lib/es/carousel/CarouselIndicator.js +6 -6
- package/lib/es/carousel/index.js +12 -12
- package/lib/es/cascader/index.d.ts +5 -2
- package/lib/es/cascader/index.js +40 -38
- package/lib/es/cascader/item.d.ts +15 -1
- package/lib/es/cascader/item.js +64 -32
- package/lib/es/checkbox/checkbox.js +14 -14
- package/lib/es/checkbox/checkboxGroup.js +4 -4
- package/lib/es/checkbox/checkboxInner.js +6 -6
- package/lib/es/collapse/item.js +9 -9
- package/lib/es/collapsible/index.js +3 -3
- package/lib/es/configProvider/index.js +1 -1
- package/lib/es/datePicker/dateInput.js +16 -16
- package/lib/es/datePicker/datePicker.js +9 -9
- package/lib/es/datePicker/footer.js +1 -1
- package/lib/es/datePicker/index.js +1 -1
- package/lib/es/datePicker/month.js +2 -2
- package/lib/es/datePicker/monthsGrid.js +27 -27
- package/lib/es/datePicker/navigation.js +1 -1
- package/lib/es/datePicker/quickControl.js +14 -14
- package/lib/es/datePicker/yearAndMonth.js +4 -4
- package/lib/es/descriptions/index.js +3 -3
- package/lib/es/descriptions/item.js +5 -5
- package/lib/es/divider/index.js +7 -7
- package/lib/es/dropdown/dropdownDivider.js +1 -1
- package/lib/es/dropdown/dropdownItem.js +7 -7
- package/lib/es/dropdown/dropdownMenu.js +1 -1
- package/lib/es/dropdown/dropdownTitle.js +2 -2
- package/lib/es/dropdown/index.js +3 -3
- package/lib/es/empty/index.js +7 -7
- package/lib/es/form/arrayField.js +1 -1
- package/lib/es/form/baseForm.d.ts +2 -0
- package/lib/es/form/baseForm.js +2 -2
- package/lib/es/form/errorMessage.js +1 -1
- package/lib/es/form/field.d.ts +2 -0
- package/lib/es/form/group.js +2 -2
- package/lib/es/form/hoc/withField.js +16 -16
- package/lib/es/form/label.js +9 -9
- package/lib/es/form/slot.js +5 -5
- package/lib/es/grid/col.js +11 -11
- package/lib/es/grid/row.js +4 -4
- package/lib/es/highlight/index.js +1 -1
- package/lib/es/iconButton/index.js +5 -5
- package/lib/es/image/image.js +10 -10
- package/lib/es/image/preview.js +3 -3
- package/lib/es/image/previewFooter.js +12 -12
- package/lib/es/image/previewHeader.js +3 -3
- package/lib/es/image/previewImage.js +7 -7
- package/lib/es/image/previewInner.js +7 -7
- package/lib/es/input/index.js +38 -38
- package/lib/es/input/inputGroup.js +7 -7
- package/lib/es/input/textarea.js +14 -14
- package/lib/es/inputNumber/index.js +11 -11
- package/lib/es/layout/Sider.d.ts +1 -1
- package/lib/es/layout/Sider.js +4 -4
- package/lib/es/layout/index.js +3 -3
- package/lib/es/list/index.js +11 -11
- package/lib/es/list/item.js +6 -6
- package/lib/es/modal/ConfirmModal.js +7 -7
- package/lib/es/modal/Modal.js +4 -4
- package/lib/es/modal/ModalContent.js +24 -24
- package/lib/es/modal/useModal/index.js +1 -1
- package/lib/es/navigation/CollapseButton.js +1 -1
- package/lib/es/navigation/Footer.js +2 -2
- package/lib/es/navigation/Header.js +5 -5
- package/lib/es/navigation/Item.js +16 -16
- package/lib/es/navigation/SubNav.js +14 -14
- package/lib/es/navigation/index.js +8 -8
- package/lib/es/notification/index.js +3 -3
- package/lib/es/notification/notice.js +12 -12
- package/lib/es/overflowList/index.d.ts +1 -1
- package/lib/es/overflowList/index.js +31 -35
- package/lib/es/overflowList/intersectionObserver.js +2 -1
- package/lib/es/pagination/index.js +26 -26
- package/lib/es/popconfirm/index.js +9 -9
- package/lib/es/popover/index.js +2 -2
- package/lib/es/progress/index.js +14 -14
- package/lib/es/radio/radio.js +22 -22
- package/lib/es/radio/radioGroup.js +5 -5
- package/lib/es/radio/radioInner.js +7 -7
- package/lib/es/rating/index.js +5 -5
- package/lib/es/rating/item.js +11 -11
- package/lib/es/scrollList/index.js +5 -5
- package/lib/es/scrollList/scrollItem.js +13 -13
- package/lib/es/select/index.d.ts +11 -0
- package/lib/es/select/index.js +288 -112
- package/lib/es/select/option.js +7 -7
- package/lib/es/sideSheet/SideSheetContent.js +10 -10
- package/lib/es/sideSheet/index.js +7 -7
- package/lib/es/skeleton/index.js +1 -1
- package/lib/es/skeleton/item.js +4 -4
- package/lib/es/slider/index.js +28 -28
- package/lib/es/space/index.js +12 -12
- package/lib/es/spin/icon.js +2 -2
- package/lib/es/spin/index.js +6 -6
- package/lib/es/steps/basicStep.js +14 -14
- package/lib/es/steps/basicSteps.js +6 -6
- package/lib/es/steps/fillStep.js +10 -10
- package/lib/es/steps/fillSteps.js +4 -4
- package/lib/es/steps/navStep.js +5 -5
- package/lib/es/steps/navSteps.js +2 -2
- package/lib/es/table/Body/BaseRow.js +5 -5
- package/lib/es/table/Body/ExpandedRow.js +3 -3
- package/lib/es/table/Body/SectionRow.js +1 -1
- package/lib/es/table/Body/index.js +8 -8
- package/lib/es/table/ColGroup.js +2 -2
- package/lib/es/table/ColumnFilter.js +3 -3
- package/lib/es/table/ColumnSelection.js +2 -2
- package/lib/es/table/ColumnSorter.js +7 -7
- package/lib/es/table/CustomExpandIcon.js +2 -2
- package/lib/es/table/HeadTable.js +3 -3
- package/lib/es/table/Table.js +20 -20
- package/lib/es/table/TableCell.js +8 -8
- package/lib/es/table/TableHeader.js +1 -1
- package/lib/es/table/TableHeaderRow.js +8 -8
- package/lib/es/table/TablePagination.js +3 -3
- package/lib/es/tabs/TabBar.js +30 -50
- package/lib/es/tabs/TabItem.d.ts +18 -0
- package/lib/es/tabs/TabItem.js +78 -0
- package/lib/es/tabs/TabPane.js +3 -3
- package/lib/es/tabs/index.d.ts +2 -1
- package/lib/es/tabs/index.js +4 -2
- package/lib/es/tag/group.js +5 -5
- package/lib/es/tag/index.js +13 -13
- package/lib/es/tagInput/index.d.ts +6 -2
- package/lib/es/tagInput/index.js +37 -34
- package/lib/es/timePicker/Combobox.js +4 -4
- package/lib/es/timePicker/TimeInput.js +4 -4
- package/lib/es/timePicker/TimePicker.js +8 -8
- package/lib/es/timeline/index.js +8 -8
- package/lib/es/timeline/item.js +7 -7
- package/lib/es/toast/index.js +5 -5
- package/lib/es/toast/toast.js +9 -9
- package/lib/es/tooltip/index.js +7 -7
- package/lib/es/transfer/index.js +31 -31
- package/lib/es/tree/autoSizer.js +1 -1
- package/lib/es/tree/index.js +6 -6
- package/lib/es/tree/interface.d.ts +1 -0
- package/lib/es/tree/nodeList.js +1 -1
- package/lib/es/tree/treeNode.js +26 -26
- package/lib/es/treeSelect/index.js +41 -41
- package/lib/es/typography/base.js +14 -14
- package/lib/es/typography/copyable.js +3 -3
- package/lib/es/typography/paragraph.js +1 -1
- package/lib/es/typography/title.js +1 -1
- package/lib/es/typography/util.js +1 -1
- package/lib/es/upload/fileCard.js +32 -32
- package/lib/es/upload/index.js +37 -37
- package/package.json +8 -8
package/lib/cjs/select/index.js
CHANGED
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
+
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
9
|
+
|
|
8
10
|
var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
|
|
9
11
|
|
|
10
12
|
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
@@ -35,9 +37,15 @@ var _index = _interopRequireDefault(require("../tag/index"));
|
|
|
35
37
|
|
|
36
38
|
var _group = _interopRequireDefault(require("../tag/group"));
|
|
37
39
|
|
|
40
|
+
var _index2 = _interopRequireDefault(require("../overflowList/index"));
|
|
41
|
+
|
|
42
|
+
var _index3 = _interopRequireDefault(require("../space/index"));
|
|
43
|
+
|
|
44
|
+
var _text = _interopRequireDefault(require("../typography/text"));
|
|
45
|
+
|
|
38
46
|
var _localeConsumer = _interopRequireDefault(require("../locale/localeConsumer"));
|
|
39
47
|
|
|
40
|
-
var
|
|
48
|
+
var _index4 = _interopRequireDefault(require("../popover/index"));
|
|
41
49
|
|
|
42
50
|
var _constants2 = require("@douyinfe/semi-foundation/lib/cjs/popover/constants");
|
|
43
51
|
|
|
@@ -49,7 +57,7 @@ var _utils = require("./utils");
|
|
|
49
57
|
|
|
50
58
|
var _virtualRow = _interopRequireDefault(require("./virtualRow"));
|
|
51
59
|
|
|
52
|
-
var
|
|
60
|
+
var _index5 = _interopRequireDefault(require("../input/index"));
|
|
53
61
|
|
|
54
62
|
var _option = _interopRequireDefault(require("./option"));
|
|
55
63
|
|
|
@@ -155,7 +163,8 @@ class Select extends _baseComponent.default {
|
|
|
155
163
|
optionGroups: [],
|
|
156
164
|
isHovering: false,
|
|
157
165
|
isFocusInContainer: false,
|
|
158
|
-
isFullTags: false
|
|
166
|
+
isFullTags: false,
|
|
167
|
+
overflowItemCount: 0
|
|
159
168
|
};
|
|
160
169
|
/* Generate random string */
|
|
161
170
|
|
|
@@ -380,6 +389,11 @@ class Select extends _baseComponent.default {
|
|
|
380
389
|
isFocus
|
|
381
390
|
});
|
|
382
391
|
},
|
|
392
|
+
updateOverflowItemCount: overflowItemCount => {
|
|
393
|
+
this.setState({
|
|
394
|
+
overflowItemCount
|
|
395
|
+
});
|
|
396
|
+
},
|
|
383
397
|
focusTrigger: () => {
|
|
384
398
|
try {
|
|
385
399
|
const {
|
|
@@ -410,13 +424,13 @@ class Select extends _baseComponent.default {
|
|
|
410
424
|
},
|
|
411
425
|
updateScrollTop: index => {
|
|
412
426
|
// eslint-disable-next-line max-len
|
|
413
|
-
let optionClassName =
|
|
427
|
+
let optionClassName = `.${prefixcls}-option-selected`;
|
|
414
428
|
|
|
415
429
|
if (index !== undefined) {
|
|
416
|
-
optionClassName =
|
|
430
|
+
optionClassName = `.${prefixcls}-option:nth-child(${index})`;
|
|
417
431
|
}
|
|
418
432
|
|
|
419
|
-
let destNode = document.querySelector(
|
|
433
|
+
let destNode = document.querySelector(`#${prefixcls}-${this.selectOptionListID} ${optionClassName}`);
|
|
420
434
|
|
|
421
435
|
if (Array.isArray(destNode)) {
|
|
422
436
|
// eslint-disable-next-line prefer-destructuring
|
|
@@ -476,9 +490,9 @@ class Select extends _baseComponent.default {
|
|
|
476
490
|
filter
|
|
477
491
|
} = this.props;
|
|
478
492
|
const inputPropsCls = (0, _get2.default)(inputProps, 'className');
|
|
479
|
-
const inputcls = (0, _classnames.default)(
|
|
480
|
-
[
|
|
481
|
-
[
|
|
493
|
+
const inputcls = (0, _classnames.default)(`${prefixcls}-input`, {
|
|
494
|
+
[`${prefixcls}-input-single`]: !multiple,
|
|
495
|
+
[`${prefixcls}-input-multiple`]: multiple
|
|
482
496
|
}, inputPropsCls);
|
|
483
497
|
const {
|
|
484
498
|
inputValue,
|
|
@@ -494,15 +508,15 @@ class Select extends _baseComponent.default {
|
|
|
494
508
|
|
|
495
509
|
if (multiple) {
|
|
496
510
|
style = {
|
|
497
|
-
width: inputValue ?
|
|
511
|
+
width: inputValue ? `${inputValue.length * 16}px` : '2px'
|
|
498
512
|
};
|
|
499
513
|
selectInputProps.style = style;
|
|
500
514
|
}
|
|
501
515
|
|
|
502
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
516
|
+
return /*#__PURE__*/_react.default.createElement(_index5.default, Object.assign({
|
|
503
517
|
ref: this.inputRef,
|
|
504
518
|
size: size,
|
|
505
|
-
"aria-activedescendant": focusIndex !== -1 ?
|
|
519
|
+
"aria-activedescendant": focusIndex !== -1 ? `${this.selectID}-option-${focusIndex}` : '',
|
|
506
520
|
onFocus: e => {
|
|
507
521
|
// if multiple and filter, when use tab key to let select get focus
|
|
508
522
|
// need to manual update state isFocus to let the focus style take effect
|
|
@@ -560,7 +574,7 @@ class Select extends _baseComponent.default {
|
|
|
560
574
|
}
|
|
561
575
|
|
|
562
576
|
renderLoading() {
|
|
563
|
-
const loadingWrapperCls =
|
|
577
|
+
const loadingWrapperCls = `${prefixcls}-loading-wrapper`;
|
|
564
578
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
565
579
|
className: loadingWrapperCls
|
|
566
580
|
}, /*#__PURE__*/_react.default.createElement(_spin.default, null));
|
|
@@ -601,7 +615,7 @@ class Select extends _baseComponent.default {
|
|
|
601
615
|
key: option.key || option.label + option.value + optionIndex,
|
|
602
616
|
renderOptionItem: renderOptionItem,
|
|
603
617
|
inputValue: inputValue,
|
|
604
|
-
id:
|
|
618
|
+
id: `${this.selectID}-option-${optionIndex}`
|
|
605
619
|
}), option.label);
|
|
606
620
|
}
|
|
607
621
|
|
|
@@ -625,7 +639,7 @@ class Select extends _baseComponent.default {
|
|
|
625
639
|
}), /*#__PURE__*/_react.default.createElement(_localeConsumer.default, {
|
|
626
640
|
componentName: "Select"
|
|
627
641
|
}, locale => /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
628
|
-
className:
|
|
642
|
+
className: `${prefixcls}-create-tips`
|
|
629
643
|
}, locale.createText), option.value)));
|
|
630
644
|
|
|
631
645
|
return defaultCreateItem;
|
|
@@ -729,42 +743,42 @@ class Select extends _baseComponent.default {
|
|
|
729
743
|
minWidth: dropdownMinWidth
|
|
730
744
|
}, dropdownStyle);
|
|
731
745
|
const optionListCls = (0, _classnames.default)({
|
|
732
|
-
[
|
|
733
|
-
[
|
|
746
|
+
[`${prefixcls}-option-list`]: true,
|
|
747
|
+
[`${prefixcls}-option-list-chosen`]: selections.size
|
|
734
748
|
});
|
|
735
749
|
const isEmpty = !options.length || !options.some(item => item._show);
|
|
736
750
|
return (
|
|
737
751
|
/*#__PURE__*/
|
|
738
752
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
739
753
|
_react.default.createElement("div", {
|
|
740
|
-
id:
|
|
754
|
+
id: `${prefixcls}-${this.selectOptionListID}`,
|
|
741
755
|
className: (0, _classnames.default)({
|
|
742
756
|
// When emptyContent is null and the option is empty, there is no need for the drop-down option for the user,
|
|
743
757
|
// so there is no need to set padding through this className
|
|
744
|
-
[
|
|
758
|
+
[`${prefixcls}-option-list-wrapper`]: !(isEmpty && emptyContent === null)
|
|
745
759
|
}, dropdownClassName),
|
|
746
760
|
style: style,
|
|
747
761
|
ref: this.setOptionContainerEl,
|
|
748
762
|
onKeyDown: e => this.foundation.handleContainerKeyDown(e)
|
|
749
763
|
}, outerTopSlot ? /*#__PURE__*/_react.default.createElement("div", {
|
|
750
|
-
className:
|
|
764
|
+
className: `${prefixcls}-option-list-outer-top-slot`,
|
|
751
765
|
onMouseEnter: () => this.foundation.handleSlotMouseEnter()
|
|
752
766
|
}, outerTopSlot) : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
753
767
|
style: {
|
|
754
|
-
maxHeight:
|
|
768
|
+
maxHeight: `${maxHeight}px`
|
|
755
769
|
},
|
|
756
770
|
className: optionListCls,
|
|
757
771
|
role: "listbox",
|
|
758
772
|
"aria-multiselectable": multiple,
|
|
759
773
|
onScroll: e => this.foundation.handleListScroll(e)
|
|
760
774
|
}, innerTopSlot ? /*#__PURE__*/_react.default.createElement("div", {
|
|
761
|
-
className:
|
|
775
|
+
className: `${prefixcls}-option-list-inner-top-slot`,
|
|
762
776
|
onMouseEnter: () => this.foundation.handleSlotMouseEnter()
|
|
763
777
|
}, innerTopSlot) : null, loading ? this.renderLoading() : isEmpty ? this.renderEmpty() : listContent, innerBottomSlot ? /*#__PURE__*/_react.default.createElement("div", {
|
|
764
|
-
className:
|
|
778
|
+
className: `${prefixcls}-option-list-inner-bottom-slot`,
|
|
765
779
|
onMouseEnter: () => this.foundation.handleSlotMouseEnter()
|
|
766
780
|
}, innerBottomSlot) : null), outerBottomSlot ? /*#__PURE__*/_react.default.createElement("div", {
|
|
767
|
-
className:
|
|
781
|
+
className: `${prefixcls}-option-list-outer-bottom-slot`,
|
|
768
782
|
onMouseEnter: () => this.foundation.handleSlotMouseEnter()
|
|
769
783
|
}, outerBottomSlot) : null)
|
|
770
784
|
);
|
|
@@ -794,13 +808,13 @@ class Select extends _baseComponent.default {
|
|
|
794
808
|
}
|
|
795
809
|
|
|
796
810
|
const spanCls = (0, _classnames.default)({
|
|
797
|
-
[
|
|
798
|
-
[
|
|
799
|
-
[
|
|
800
|
-
[
|
|
811
|
+
[`${prefixcls}-selection-text`]: true,
|
|
812
|
+
[`${prefixcls}-selection-placeholder`]: !renderText && renderText !== 0,
|
|
813
|
+
[`${prefixcls}-selection-text-hide`]: inputValue && showInput,
|
|
814
|
+
[`${prefixcls}-selection-text-inactive`]: !inputValue && showInput // Stack Input & RenderText(opacity 0.4)
|
|
801
815
|
|
|
802
816
|
});
|
|
803
|
-
const contentWrapperCls =
|
|
817
|
+
const contentWrapperCls = `${prefixcls}-content-wrapper`;
|
|
804
818
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
805
819
|
className: contentWrapperCls
|
|
806
820
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
@@ -809,22 +823,172 @@ class Select extends _baseComponent.default {
|
|
|
809
823
|
}, renderText || renderText === 0 ? renderText : placeholder), filterable && showInput ? this.renderInput() : null));
|
|
810
824
|
}
|
|
811
825
|
|
|
812
|
-
|
|
826
|
+
renderTag(item, i, isCollapseItem) {
|
|
827
|
+
const {
|
|
828
|
+
size,
|
|
829
|
+
disabled: selectDisabled
|
|
830
|
+
} = this.props;
|
|
831
|
+
let {
|
|
832
|
+
renderSelectedItem
|
|
833
|
+
} = this.props;
|
|
834
|
+
const label = item[0];
|
|
835
|
+
const {
|
|
836
|
+
value
|
|
837
|
+
} = item[1];
|
|
838
|
+
const disabled = item[1].disabled || selectDisabled;
|
|
839
|
+
|
|
840
|
+
const onClose = (tagContent, e) => {
|
|
841
|
+
if (e && typeof e.preventDefault === 'function') {
|
|
842
|
+
e.preventDefault(); // make sure that tag will not hidden immediately in controlled mode
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
this.foundation.removeTag({
|
|
846
|
+
label,
|
|
847
|
+
value
|
|
848
|
+
});
|
|
849
|
+
};
|
|
850
|
+
|
|
851
|
+
if (typeof renderSelectedItem === 'undefined') {
|
|
852
|
+
renderSelectedItem = optionNode => ({
|
|
853
|
+
isRenderInTag: true,
|
|
854
|
+
content: optionNode.label
|
|
855
|
+
});
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
const {
|
|
859
|
+
content,
|
|
860
|
+
isRenderInTag
|
|
861
|
+
} = renderSelectedItem(item[1], {
|
|
862
|
+
index: i,
|
|
863
|
+
disabled,
|
|
864
|
+
onClose
|
|
865
|
+
});
|
|
866
|
+
const basic = {
|
|
867
|
+
disabled,
|
|
868
|
+
closable: !disabled,
|
|
869
|
+
onClose
|
|
870
|
+
};
|
|
871
|
+
const realContent = isCollapseItem && !(0, _isFunction2.default)(this.props.renderSelectedItem) ? /*#__PURE__*/_react.default.createElement(_text.default, {
|
|
872
|
+
size: 'small',
|
|
873
|
+
ellipsis: {
|
|
874
|
+
rows: 1,
|
|
875
|
+
showTooltip: {
|
|
876
|
+
type: 'popover',
|
|
877
|
+
opts: {
|
|
878
|
+
style: {
|
|
879
|
+
width: 'auto',
|
|
880
|
+
fontSize: 12
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
}, content) : content;
|
|
886
|
+
|
|
887
|
+
if (isRenderInTag) {
|
|
888
|
+
return /*#__PURE__*/_react.default.createElement(_index.default, Object.assign({}, basic, {
|
|
889
|
+
color: "white",
|
|
890
|
+
size: size || 'large',
|
|
891
|
+
key: value,
|
|
892
|
+
style: {
|
|
893
|
+
maxWidth: '100%'
|
|
894
|
+
}
|
|
895
|
+
}), realContent);
|
|
896
|
+
} else {
|
|
897
|
+
return /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
898
|
+
key: value
|
|
899
|
+
}, realContent);
|
|
900
|
+
}
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
renderNTag(n, restTags) {
|
|
904
|
+
const {
|
|
905
|
+
size,
|
|
906
|
+
showRestTagsPopover,
|
|
907
|
+
restTagsPopoverProps
|
|
908
|
+
} = this.props;
|
|
909
|
+
|
|
910
|
+
let nTag = /*#__PURE__*/_react.default.createElement(_index.default, {
|
|
911
|
+
closable: false,
|
|
912
|
+
size: size || 'large',
|
|
913
|
+
color: 'grey',
|
|
914
|
+
className: `${prefixcls}-content-wrapper-collapse-tag`,
|
|
915
|
+
key: `_+${n}`,
|
|
916
|
+
style: {
|
|
917
|
+
marginRight: 0,
|
|
918
|
+
flexShrink: 0
|
|
919
|
+
}
|
|
920
|
+
}, "+", n);
|
|
921
|
+
|
|
922
|
+
if (showRestTagsPopover) {
|
|
923
|
+
nTag = /*#__PURE__*/_react.default.createElement(_index4.default, Object.assign({
|
|
924
|
+
showArrow: true,
|
|
925
|
+
content: /*#__PURE__*/_react.default.createElement(_index3.default, {
|
|
926
|
+
spacing: 2,
|
|
927
|
+
wrap: true,
|
|
928
|
+
style: {
|
|
929
|
+
maxWidth: '400px'
|
|
930
|
+
}
|
|
931
|
+
}, restTags.map((tag, index) => this.renderTag(tag, index))),
|
|
932
|
+
trigger: "hover",
|
|
933
|
+
position: "top",
|
|
934
|
+
autoAdjustOverflow: true
|
|
935
|
+
}, restTagsPopoverProps, {
|
|
936
|
+
key: `_+${n}_Popover`
|
|
937
|
+
}), nTag);
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
return nTag;
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
renderOverflow(items, index) {
|
|
944
|
+
const isCollapse = true;
|
|
945
|
+
return items.length && items[0] ? this.renderTag(items[0], index, isCollapse) : null;
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
handleOverflow(items) {
|
|
949
|
+
const {
|
|
950
|
+
overflowItemCount,
|
|
951
|
+
selections
|
|
952
|
+
} = this.state;
|
|
953
|
+
const {
|
|
954
|
+
maxTagCount
|
|
955
|
+
} = this.props;
|
|
956
|
+
const maxVisibleCount = selections.size - maxTagCount;
|
|
957
|
+
const newOverFlowItemCount = maxVisibleCount > 0 ? maxVisibleCount + items.length - 1 : items.length - 1;
|
|
958
|
+
|
|
959
|
+
if (items.length > 1 && overflowItemCount !== newOverFlowItemCount) {
|
|
960
|
+
this.foundation.updateOverflowItemCount(selections.size, newOverFlowItemCount);
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
renderCollapsedTags(selections, length) {
|
|
965
|
+
const {
|
|
966
|
+
overflowItemCount
|
|
967
|
+
} = this.state;
|
|
968
|
+
const normalTags = typeof length === 'number' ? selections.slice(0, length) : selections;
|
|
969
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
970
|
+
className: `${prefixcls}-content-wrapper-collapse`
|
|
971
|
+
}, /*#__PURE__*/_react.default.createElement(_index2.default, {
|
|
972
|
+
items: normalTags,
|
|
973
|
+
overflowRenderer: overflowItems => this.renderOverflow(overflowItems, length - 1),
|
|
974
|
+
onOverflow: overflowItems => this.handleOverflow(overflowItems),
|
|
975
|
+
visibleItemRenderer: (item, index) => this.renderTag(item, index)
|
|
976
|
+
}), overflowItemCount > 0 && this.renderNTag(overflowItemCount, selections.slice(selections.length - overflowItemCount)));
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
renderOneLineTags(selectedItems, n) {
|
|
813
980
|
let {
|
|
814
981
|
renderSelectedItem
|
|
815
982
|
} = this.props;
|
|
816
983
|
const {
|
|
817
984
|
showRestTagsPopover,
|
|
818
985
|
restTagsPopoverProps,
|
|
819
|
-
placeholder,
|
|
820
986
|
maxTagCount
|
|
821
987
|
} = this.props;
|
|
822
988
|
const {
|
|
823
|
-
inputValue,
|
|
824
989
|
isFullTags
|
|
825
990
|
} = this.state;
|
|
826
|
-
|
|
827
|
-
const selectedItems = [...selections];
|
|
991
|
+
let tagContent;
|
|
828
992
|
|
|
829
993
|
if (typeof renderSelectedItem === 'undefined') {
|
|
830
994
|
renderSelectedItem = optionNode => ({
|
|
@@ -833,74 +997,87 @@ class Select extends _baseComponent.default {
|
|
|
833
997
|
});
|
|
834
998
|
}
|
|
835
999
|
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
if (!(0, _isNumber2.default)(maxTagCount)) {
|
|
841
|
-
// maxTagCount is not set, all tags are displayed
|
|
842
|
-
mapItems = selectedItems;
|
|
843
|
-
tags = mapItems.map((item, i) => {
|
|
1000
|
+
if (showRestTagsPopover) {
|
|
1001
|
+
// showRestTagsPopover = true,
|
|
1002
|
+
const mapItems = isFullTags ? selectedItems : selectedItems.slice(0, maxTagCount);
|
|
1003
|
+
const tags = mapItems.map((item, i) => {
|
|
844
1004
|
return this.getTagItem(item, i, renderSelectedItem);
|
|
845
1005
|
});
|
|
846
|
-
tagContent =
|
|
1006
|
+
tagContent = /*#__PURE__*/_react.default.createElement(_group.default, {
|
|
1007
|
+
tagList: tags,
|
|
1008
|
+
maxTagCount: n,
|
|
1009
|
+
restCount: isFullTags ? undefined : selectedItems.length - maxTagCount,
|
|
1010
|
+
size: "large",
|
|
1011
|
+
mode: "custom",
|
|
1012
|
+
showPopover: showRestTagsPopover,
|
|
1013
|
+
popoverProps: restTagsPopoverProps,
|
|
1014
|
+
onPlusNMouseEnter: () => {
|
|
1015
|
+
this.foundation.updateIsFullTags();
|
|
1016
|
+
}
|
|
1017
|
+
});
|
|
847
1018
|
} else {
|
|
848
|
-
// maxTagCount is set
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
1019
|
+
// If maxTagCount is set, showRestTagsPopover is false/undefined,
|
|
1020
|
+
// then there is no popover when hovering, no extra Tags are displayed,
|
|
1021
|
+
// only the tags and restCount displayed in the trigger need to be passed in
|
|
1022
|
+
const mapItems = selectedItems.slice(0, maxTagCount);
|
|
1023
|
+
const tags = mapItems.map((item, i) => {
|
|
1024
|
+
return this.getTagItem(item, i, renderSelectedItem);
|
|
1025
|
+
});
|
|
1026
|
+
tagContent = /*#__PURE__*/_react.default.createElement(_group.default, {
|
|
1027
|
+
tagList: tags,
|
|
1028
|
+
maxTagCount: n,
|
|
1029
|
+
restCount: selectedItems.length - maxTagCount,
|
|
1030
|
+
size: "large",
|
|
1031
|
+
mode: "custom"
|
|
1032
|
+
});
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
return tagContent;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
renderMultipleSelection(selections, filterable) {
|
|
1039
|
+
let {
|
|
1040
|
+
renderSelectedItem
|
|
1041
|
+
} = this.props;
|
|
1042
|
+
const {
|
|
1043
|
+
placeholder,
|
|
1044
|
+
maxTagCount,
|
|
1045
|
+
expandRestTagsOnClick,
|
|
1046
|
+
ellipsisTrigger
|
|
1047
|
+
} = this.props;
|
|
1048
|
+
const {
|
|
1049
|
+
inputValue,
|
|
1050
|
+
isOpen
|
|
1051
|
+
} = this.state;
|
|
1052
|
+
const selectedItems = [...selections];
|
|
1053
|
+
|
|
1054
|
+
if (typeof renderSelectedItem === 'undefined') {
|
|
1055
|
+
renderSelectedItem = optionNode => ({
|
|
1056
|
+
isRenderInTag: true,
|
|
1057
|
+
content: optionNode.label
|
|
1058
|
+
});
|
|
885
1059
|
}
|
|
886
1060
|
|
|
887
1061
|
const contentWrapperCls = (0, _classnames.default)({
|
|
888
|
-
[
|
|
889
|
-
[
|
|
890
|
-
[
|
|
1062
|
+
[`${prefixcls}-content-wrapper`]: true,
|
|
1063
|
+
[`${prefixcls}-content-wrapper-one-line`]: maxTagCount && !isOpen,
|
|
1064
|
+
[`${prefixcls}-content-wrapper-empty`]: !selectedItems.length
|
|
891
1065
|
});
|
|
892
1066
|
const spanCls = (0, _classnames.default)({
|
|
893
|
-
[
|
|
894
|
-
[
|
|
895
|
-
[
|
|
896
|
-
|
|
1067
|
+
[`${prefixcls}-selection-text`]: true,
|
|
1068
|
+
[`${prefixcls}-selection-placeholder`]: !selectedItems.length,
|
|
1069
|
+
[`${prefixcls}-selection-text-hide`]: selectedItems && selectedItems.length
|
|
897
1070
|
});
|
|
898
1071
|
const placeholderText = placeholder && !inputValue ? /*#__PURE__*/_react.default.createElement("span", {
|
|
899
1072
|
className: spanCls
|
|
900
1073
|
}, placeholder) : null;
|
|
1074
|
+
const n = selectedItems.length > maxTagCount ? maxTagCount : undefined;
|
|
1075
|
+
const NotOneLine = !maxTagCount;
|
|
1076
|
+
const oneLineTags = ellipsisTrigger ? this.renderCollapsedTags(selectedItems, n) : this.renderOneLineTags(selectedItems, n);
|
|
1077
|
+
const tagContent = NotOneLine || expandRestTagsOnClick && isOpen ? selectedItems.map((item, i) => this.renderTag(item, i)) : oneLineTags;
|
|
901
1078
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
902
1079
|
className: contentWrapperCls
|
|
903
|
-
},
|
|
1080
|
+
}, selectedItems && selectedItems.length ? tagContent : placeholderText, !filterable ? null : this.renderInput()));
|
|
904
1081
|
}
|
|
905
1082
|
|
|
906
1083
|
onMouseEnter(e) {
|
|
@@ -955,9 +1132,9 @@ class Select extends _baseComponent.default {
|
|
|
955
1132
|
suffix
|
|
956
1133
|
} = this.props;
|
|
957
1134
|
const suffixWrapperCls = (0, _classnames.default)({
|
|
958
|
-
[
|
|
959
|
-
[
|
|
960
|
-
[
|
|
1135
|
+
[`${prefixcls}-suffix`]: true,
|
|
1136
|
+
[`${prefixcls}-suffix-text`]: suffix && (0, _isString2.default)(suffix),
|
|
1137
|
+
[`${prefixcls}-suffix-icon`]: (0, _utils2.isSemiIcon)(suffix)
|
|
961
1138
|
});
|
|
962
1139
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
963
1140
|
className: suffixWrapperCls,
|
|
@@ -973,10 +1150,10 @@ class Select extends _baseComponent.default {
|
|
|
973
1150
|
} = this.props;
|
|
974
1151
|
const labelNode = prefix || insetLabel;
|
|
975
1152
|
const prefixWrapperCls = (0, _classnames.default)({
|
|
976
|
-
[
|
|
977
|
-
[
|
|
978
|
-
[
|
|
979
|
-
[
|
|
1153
|
+
[`${prefixcls}-prefix`]: true,
|
|
1154
|
+
[`${prefixcls}-inset-label`]: insetLabel,
|
|
1155
|
+
[`${prefixcls}-prefix-text`]: labelNode && (0, _isString2.default)(labelNode),
|
|
1156
|
+
[`${prefixcls}-prefix-icon`]: (0, _utils2.isSemiIcon)(labelNode)
|
|
980
1157
|
});
|
|
981
1158
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
982
1159
|
className: prefixWrapperCls,
|
|
@@ -1018,26 +1195,26 @@ class Select extends _baseComponent.default {
|
|
|
1018
1195
|
const filterable = Boolean(filter); // filter(boolean || function)
|
|
1019
1196
|
|
|
1020
1197
|
const selectionCls = useCustomTrigger ? (0, _classnames.default)(className) : (0, _classnames.default)(prefixcls, className, {
|
|
1021
|
-
[
|
|
1022
|
-
[
|
|
1023
|
-
[
|
|
1024
|
-
[
|
|
1025
|
-
[
|
|
1026
|
-
[
|
|
1027
|
-
[
|
|
1028
|
-
[
|
|
1029
|
-
[
|
|
1030
|
-
[
|
|
1031
|
-
[
|
|
1032
|
-
[
|
|
1033
|
-
[
|
|
1198
|
+
[`${prefixcls}-open`]: isOpen,
|
|
1199
|
+
[`${prefixcls}-focus`]: isFocus,
|
|
1200
|
+
[`${prefixcls}-disabled`]: disabled,
|
|
1201
|
+
[`${prefixcls}-single`]: !multiple,
|
|
1202
|
+
[`${prefixcls}-multiple`]: multiple,
|
|
1203
|
+
[`${prefixcls}-filterable`]: filterable,
|
|
1204
|
+
[`${prefixcls}-small`]: size === 'small',
|
|
1205
|
+
[`${prefixcls}-large`]: size === 'large',
|
|
1206
|
+
[`${prefixcls}-error`]: validateStatus === 'error',
|
|
1207
|
+
[`${prefixcls}-warning`]: validateStatus === 'warning',
|
|
1208
|
+
[`${prefixcls}-no-arrow`]: !showArrow,
|
|
1209
|
+
[`${prefixcls}-with-prefix`]: prefix || insetLabel,
|
|
1210
|
+
[`${prefixcls}-with-suffix`]: suffix
|
|
1034
1211
|
});
|
|
1035
1212
|
const showClear = this.props.showClear && (selections.size || inputValue) && !disabled && (isHovering || isOpen);
|
|
1036
1213
|
const arrowContent = showArrow ? /*#__PURE__*/_react.default.createElement("div", {
|
|
1037
|
-
className:
|
|
1214
|
+
className: `${prefixcls}-arrow`,
|
|
1038
1215
|
"x-semi-prop": "arrowIcon"
|
|
1039
1216
|
}, arrowIcon) : /*#__PURE__*/_react.default.createElement("div", {
|
|
1040
|
-
className:
|
|
1217
|
+
className: `${prefixcls}-arrow-empty`
|
|
1041
1218
|
});
|
|
1042
1219
|
const clear = clearIcon ? clearIcon : /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, null);
|
|
1043
1220
|
const inner = useCustomTrigger ? /*#__PURE__*/_react.default.createElement(_trigger.default, {
|
|
@@ -1055,11 +1232,11 @@ class Select extends _baseComponent.default {
|
|
|
1055
1232
|
}, prefix || insetLabel ? this.renderPrefix() : null), /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
1056
1233
|
key: "selection"
|
|
1057
1234
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
1058
|
-
className: (0, _classnames.default)(
|
|
1235
|
+
className: (0, _classnames.default)(`${prefixcls}-selection`)
|
|
1059
1236
|
}, multiple ? this.renderMultipleSelection(selections, filterable) : this.renderSingleSelection(selections, filterable))), /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
1060
1237
|
key: "clearicon"
|
|
1061
1238
|
}, showClear ? /*#__PURE__*/_react.default.createElement("div", {
|
|
1062
|
-
className: (0, _classnames.default)(
|
|
1239
|
+
className: (0, _classnames.default)(`${prefixcls}-clear`),
|
|
1063
1240
|
onClick: this.onClear
|
|
1064
1241
|
}, clear) : arrowContent), /*#__PURE__*/_react.default.createElement(_react.Fragment, {
|
|
1065
1242
|
key: "suffix"
|
|
@@ -1082,7 +1259,7 @@ class Select extends _baseComponent.default {
|
|
|
1082
1259
|
role: "combobox",
|
|
1083
1260
|
"aria-disabled": disabled,
|
|
1084
1261
|
"aria-expanded": isOpen,
|
|
1085
|
-
"aria-controls":
|
|
1262
|
+
"aria-controls": `${prefixcls}-${this.selectOptionListID}`,
|
|
1086
1263
|
"aria-haspopup": "listbox",
|
|
1087
1264
|
"aria-label": selections.size ? 'selected' : '',
|
|
1088
1265
|
"aria-invalid": this.props['aria-invalid'],
|
|
@@ -1096,7 +1273,7 @@ class Select extends _baseComponent.default {
|
|
|
1096
1273
|
style: style,
|
|
1097
1274
|
id: this.selectID,
|
|
1098
1275
|
tabIndex: tabIndex,
|
|
1099
|
-
"aria-activedescendant": focusIndex !== -1 ?
|
|
1276
|
+
"aria-activedescendant": focusIndex !== -1 ? `${this.selectID}-option-${focusIndex}` : '',
|
|
1100
1277
|
onMouseEnter: this.onMouseEnter,
|
|
1101
1278
|
onMouseLeave: this.onMouseLeave,
|
|
1102
1279
|
onFocus: e => this.foundation.handleTriggerFocus(e),
|
|
@@ -1130,7 +1307,7 @@ class Select extends _baseComponent.default {
|
|
|
1130
1307
|
} = this.state;
|
|
1131
1308
|
const optionList = this.renderOptions(children);
|
|
1132
1309
|
const selection = this.renderSelection();
|
|
1133
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
1310
|
+
return /*#__PURE__*/_react.default.createElement(_index4.default, {
|
|
1134
1311
|
getPopupContainer: getPopupContainer,
|
|
1135
1312
|
motion: motion,
|
|
1136
1313
|
margin: dropdownMargin,
|
|
@@ -1169,6 +1346,7 @@ Select.propTypes = {
|
|
|
1169
1346
|
children: _propTypes.default.node,
|
|
1170
1347
|
clearIcon: _propTypes.default.node,
|
|
1171
1348
|
defaultValue: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.array, _propTypes.default.object]),
|
|
1349
|
+
ellipsisTrigger: _propTypes.default.bool,
|
|
1172
1350
|
value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.array, _propTypes.default.object]),
|
|
1173
1351
|
placeholder: _propTypes.default.node,
|
|
1174
1352
|
onChange: _propTypes.default.func,
|
|
@@ -1185,6 +1363,7 @@ Select.propTypes = {
|
|
|
1185
1363
|
size: _propTypes.default.oneOf(_constants.strings.SIZE_SET),
|
|
1186
1364
|
disabled: _propTypes.default.bool,
|
|
1187
1365
|
emptyContent: _propTypes.default.node,
|
|
1366
|
+
expandRestTagsOnClick: _propTypes.default.bool,
|
|
1188
1367
|
onDropdownVisibleChange: _propTypes.default.func,
|
|
1189
1368
|
zIndex: _propTypes.default.number,
|
|
1190
1369
|
position: _propTypes.default.oneOf(_constants.strings.POSITION_SET),
|
|
@@ -1279,7 +1458,9 @@ Select.defaultProps = {
|
|
|
1279
1458
|
"aria-label": ''
|
|
1280
1459
|
}),
|
|
1281
1460
|
showRestTagsPopover: false,
|
|
1282
|
-
restTagsPopoverProps: {}
|
|
1461
|
+
restTagsPopoverProps: {},
|
|
1462
|
+
expandRestTagsOnClick: false,
|
|
1463
|
+
ellipsisTrigger: false // Radio selection is different from the default renderSelectedItem for multiple selection, so it is not declared here
|
|
1283
1464
|
// renderSelectedItem: (optionNode) => optionNode.label,
|
|
1284
1465
|
// The default creator rendering is related to i18, so it is not declared here
|
|
1285
1466
|
// renderCreateItem: (input) => input
|