@douyinfe/semi-foundation 2.24.2 → 2.25.0-alpha.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/anchor/anchor.scss +6 -0
- package/anchor/foundation.ts +7 -6
- package/anchor/linkFoundation.ts +0 -1
- package/anchor/variables.scss +4 -0
- package/autoComplete/autoComplete.scss +2 -0
- package/autoComplete/foundation.ts +23 -20
- package/autoComplete/optionFoundation.ts +0 -2
- package/avatar/animation.scss +19 -0
- package/avatar/avatar.scss +314 -1
- package/avatar/constants.ts +21 -4
- package/avatar/foundation.ts +21 -4
- package/avatar/variables.scss +66 -10
- package/badge/badge.scss +13 -0
- package/badge/constants.ts +1 -1
- package/badge/variables.scss +4 -0
- package/base/foundation.ts +2 -3
- package/breadcrumb/breadcrumb.scss +10 -4
- package/breadcrumb/foundation.ts +0 -1
- package/breadcrumb/variables.scss +4 -0
- package/button/button.scss +88 -21
- package/button/iconButton.scss +1 -0
- package/button/splitButtonGroup.scss +10 -9
- package/button/variables.scss +13 -0
- package/calendar/calendar.scss +1 -1
- package/calendar/eventUtil.ts +14 -10
- package/calendar/foundation.ts +9 -9
- package/carousel/carousel.scss +4 -0
- package/carousel/foundation.ts +12 -7
- package/cascader/cascader.scss +66 -23
- package/cascader/constants.ts +5 -1
- package/cascader/foundation.ts +111 -63
- package/cascader/util.ts +64 -10
- package/cascader/variables.scss +5 -1
- package/checkbox/checkbox.scss +0 -1
- package/checkbox/checkboxFoundation.ts +1 -2
- package/checkbox/checkboxGroupFoundation.ts +0 -1
- package/collapse/foundation.ts +1 -0
- package/datePicker/_utils/getDefaultFormatToken.ts +1 -0
- package/datePicker/_utils/getInsetInputFormatToken.ts +1 -0
- package/datePicker/_utils/getInsetInputValueFromInsetInputStr.ts +1 -0
- package/datePicker/_utils/getYears.ts +8 -4
- package/datePicker/_utils/isValidTimeZone.ts +3 -0
- package/datePicker/constants.ts +1 -1
- package/datePicker/datePicker.scss +170 -21
- package/datePicker/foundation.ts +175 -150
- package/datePicker/inputFoundation.ts +34 -16
- package/datePicker/monthFoundation.ts +0 -1
- package/datePicker/monthsGridFoundation.ts +52 -32
- package/datePicker/variables.scss +13 -4
- package/datePicker/yearAndMonthFoundation.ts +68 -21
- package/descriptions/constants.ts +2 -1
- package/descriptions/descriptions.scss +20 -0
- package/descriptions/foundation.ts +36 -0
- package/descriptions/variables.scss +10 -0
- package/dropdown/constants.ts +1 -1
- package/dropdown/dropdown.scss +5 -0
- package/dropdown/foundation.ts +4 -3
- package/dropdown/menuFoundation.ts +3 -3
- package/form/constants.ts +2 -1
- package/form/form.scss +5 -2
- package/form/foundation.ts +12 -10
- package/form/interface.ts +5 -6
- package/form/utils.ts +39 -16
- package/form/variables.scss +3 -0
- package/grid/grid.scss +1 -1
- package/image/constants.ts +5 -1
- package/image/image.scss +9 -5
- package/image/previewFooterFoundation.ts +1 -4
- package/image/previewFoundation.ts +1 -1
- package/image/previewImageFoundation.ts +61 -70
- package/image/previewInnerFoundation.ts +93 -47
- package/image/utils.ts +18 -20
- package/image/variables.scss +1 -1
- package/input/foundation.ts +2 -4
- package/input/input.scss +48 -3
- package/input/textarea.scss +34 -0
- package/input/textareaFoundation.ts +42 -18
- package/input/variables.scss +7 -0
- package/inputNumber/foundation.ts +0 -5
- package/inputNumber/inputNumber.scss +9 -0
- package/lib/cjs/anchor/anchor.css +5 -0
- package/lib/cjs/anchor/anchor.scss +6 -0
- package/lib/cjs/anchor/constants.js +1 -3
- package/lib/cjs/anchor/foundation.js +20 -80
- package/lib/cjs/anchor/linkFoundation.js +3 -16
- package/lib/cjs/anchor/variables.scss +4 -0
- package/lib/cjs/autoComplete/autoComplete.css +1 -0
- package/lib/cjs/autoComplete/autoComplete.scss +2 -0
- package/lib/cjs/autoComplete/constants.js +3 -6
- package/lib/cjs/autoComplete/foundation.d.ts +3 -1
- package/lib/cjs/autoComplete/foundation.js +37 -149
- package/lib/cjs/autoComplete/optionFoundation.js +2 -14
- package/lib/cjs/avatar/animation.scss +19 -0
- package/lib/cjs/avatar/avatar.css +261 -0
- package/lib/cjs/avatar/avatar.scss +314 -1
- package/lib/cjs/avatar/constants.js +1 -4
- package/lib/cjs/avatar/foundation.d.ts +3 -0
- package/lib/cjs/avatar/foundation.js +21 -19
- package/lib/cjs/avatar/variables.scss +66 -10
- package/lib/cjs/backtop/constants.js +1 -3
- package/lib/cjs/backtop/foundation.d.ts +2 -2
- package/lib/cjs/backtop/foundation.js +0 -21
- package/lib/cjs/badge/badge.css +10 -0
- package/lib/cjs/badge/badge.scss +13 -0
- package/lib/cjs/badge/constants.js +2 -4
- package/lib/cjs/badge/variables.scss +4 -0
- package/lib/cjs/banner/constants.js +1 -3
- package/lib/cjs/banner/foundation.js +0 -7
- package/lib/cjs/base/constants.js +2 -4
- package/lib/cjs/base/foundation.d.ts +3 -3
- package/lib/cjs/base/foundation.js +12 -46
- package/lib/cjs/base/index.js +0 -3
- package/lib/cjs/breadcrumb/breadcrumb.css +5 -3
- package/lib/cjs/breadcrumb/breadcrumb.scss +10 -4
- package/lib/cjs/breadcrumb/constants.js +1 -3
- package/lib/cjs/breadcrumb/foundation.js +0 -13
- package/lib/cjs/breadcrumb/itemFoundation.js +0 -7
- package/lib/cjs/breadcrumb/variables.scss +4 -0
- package/lib/cjs/button/button.css +32 -5
- package/lib/cjs/button/button.scss +88 -21
- package/lib/cjs/button/constants.js +1 -3
- package/lib/cjs/button/iconButton.css +1 -0
- package/lib/cjs/button/iconButton.scss +1 -0
- package/lib/cjs/button/splitButtonGroup.scss +10 -9
- package/lib/cjs/button/variables.scss +13 -0
- package/lib/cjs/calendar/calendar.css +2 -2
- package/lib/cjs/calendar/calendar.scss +1 -1
- package/lib/cjs/calendar/constants.js +1 -3
- package/lib/cjs/calendar/eventUtil.d.ts +7 -6
- package/lib/cjs/calendar/eventUtil.js +15 -83
- package/lib/cjs/calendar/foundation.d.ts +4 -4
- package/lib/cjs/calendar/foundation.js +32 -128
- package/lib/cjs/card/constants.js +1 -3
- package/lib/cjs/carousel/carousel.css +4 -0
- package/lib/cjs/carousel/carousel.scss +4 -0
- package/lib/cjs/carousel/constants.js +9 -11
- package/lib/cjs/carousel/foundation.d.ts +2 -0
- package/lib/cjs/carousel/foundation.js +7 -52
- package/lib/cjs/cascader/cascader.css +45 -4
- package/lib/cjs/cascader/cascader.scss +66 -23
- package/lib/cjs/cascader/constants.d.ts +3 -0
- package/lib/cjs/cascader/constants.js +9 -8
- package/lib/cjs/cascader/foundation.d.ts +27 -8
- package/lib/cjs/cascader/foundation.js +122 -300
- package/lib/cjs/cascader/util.d.ts +9 -1
- package/lib/cjs/cascader/util.js +69 -33
- package/lib/cjs/cascader/variables.scss +5 -1
- package/lib/cjs/checkbox/checkbox.css +0 -1
- package/lib/cjs/checkbox/checkbox.scss +0 -1
- package/lib/cjs/checkbox/checkboxFoundation.js +1 -38
- package/lib/cjs/checkbox/checkboxGroupFoundation.js +1 -23
- package/lib/cjs/checkbox/constants.js +13 -15
- package/lib/cjs/collapse/constants.js +1 -3
- package/lib/cjs/collapse/foundation.d.ts +2 -1
- package/lib/cjs/collapse/foundation.js +2 -13
- package/lib/cjs/collapsible/constants.js +1 -3
- package/lib/cjs/collapsible/foundation.js +0 -9
- package/lib/cjs/datePicker/_utils/formatter.js +4 -10
- package/lib/cjs/datePicker/_utils/getDayOfWeek.d.ts +1 -1
- package/lib/cjs/datePicker/_utils/getDayOfWeek.js +0 -4
- package/lib/cjs/datePicker/_utils/getDefaultFormatToken.d.ts +1 -0
- package/lib/cjs/datePicker/_utils/getDefaultFormatToken.js +2 -6
- package/lib/cjs/datePicker/_utils/getDefaultPickerDate.d.ts +1 -1
- package/lib/cjs/datePicker/_utils/getDefaultPickerDate.js +0 -15
- package/lib/cjs/datePicker/_utils/getFullDateOffset.js +0 -7
- package/lib/cjs/datePicker/_utils/getInsetInputFormatToken.js +2 -6
- package/lib/cjs/datePicker/_utils/getInsetInputValueFromInsetInputStr.js +1 -6
- package/lib/cjs/datePicker/_utils/getMonthTable.d.ts +1 -1
- package/lib/cjs/datePicker/_utils/getMonthTable.js +7 -18
- package/lib/cjs/datePicker/_utils/getMonthsInYear.js +1 -3
- package/lib/cjs/datePicker/_utils/getYears.d.ts +1 -1
- package/lib/cjs/datePicker/_utils/getYears.js +9 -7
- package/lib/cjs/datePicker/_utils/index.js +0 -13
- package/lib/cjs/datePicker/_utils/isAfter.js +0 -4
- package/lib/cjs/datePicker/_utils/isBefore.js +0 -4
- package/lib/cjs/datePicker/_utils/isBetween.js +0 -4
- package/lib/cjs/datePicker/_utils/isDate.js +0 -1
- package/lib/cjs/datePicker/_utils/isSameDay.js +0 -4
- package/lib/cjs/datePicker/_utils/isTimestamp.js +0 -4
- package/lib/cjs/datePicker/_utils/isUnixTimestamp.js +0 -4
- package/lib/cjs/datePicker/_utils/isValidDate.js +0 -1
- package/lib/cjs/datePicker/_utils/isValidTimeZone.d.ts +1 -0
- package/lib/cjs/datePicker/_utils/isValidTimeZone.js +9 -0
- package/lib/cjs/datePicker/_utils/isWithinInterval.js +0 -4
- package/lib/cjs/datePicker/_utils/parser.js +0 -10
- package/lib/cjs/datePicker/constants.d.ts +1 -1
- package/lib/cjs/datePicker/constants.js +28 -31
- package/lib/cjs/datePicker/datePicker.css +88 -13
- package/lib/cjs/datePicker/datePicker.scss +170 -21
- package/lib/cjs/datePicker/foundation.d.ts +79 -50
- package/lib/cjs/datePicker/foundation.js +173 -441
- package/lib/cjs/datePicker/inputFoundation.d.ts +15 -6
- package/lib/cjs/datePicker/inputFoundation.js +35 -98
- package/lib/cjs/datePicker/monthFoundation.d.ts +1 -1
- package/lib/cjs/datePicker/monthFoundation.js +2 -28
- package/lib/cjs/datePicker/monthsGridFoundation.d.ts +18 -13
- package/lib/cjs/datePicker/monthsGridFoundation.js +70 -247
- package/lib/cjs/datePicker/variables.scss +13 -4
- package/lib/cjs/datePicker/yearAndMonthFoundation.d.ts +68 -13
- package/lib/cjs/datePicker/yearAndMonthFoundation.js +55 -42
- package/lib/cjs/descriptions/constants.d.ts +1 -0
- package/lib/cjs/descriptions/constants.js +3 -4
- package/lib/cjs/descriptions/descriptions.css +15 -0
- package/lib/cjs/descriptions/descriptions.scss +20 -0
- package/lib/cjs/descriptions/foundation.d.ts +7 -0
- package/lib/cjs/descriptions/foundation.js +45 -0
- package/lib/cjs/descriptions/variables.scss +10 -0
- package/lib/cjs/divider/constants.js +1 -3
- package/lib/cjs/dropdown/constants.js +4 -7
- package/lib/cjs/dropdown/dropdown.css +4 -0
- package/lib/cjs/dropdown/dropdown.scss +5 -0
- package/lib/cjs/dropdown/foundation.js +9 -25
- package/lib/cjs/dropdown/menuFoundation.js +9 -28
- package/lib/cjs/empty/constants.js +1 -3
- package/lib/cjs/form/constants.d.ts +1 -0
- package/lib/cjs/form/constants.js +3 -4
- package/lib/cjs/form/form.css +4 -0
- package/lib/cjs/form/form.scss +5 -2
- package/lib/cjs/form/foundation.d.ts +4 -4
- package/lib/cjs/form/foundation.js +84 -214
- package/lib/cjs/form/interface.d.ts +10 -10
- package/lib/cjs/form/utils.d.ts +10 -1
- package/lib/cjs/form/utils.js +85 -93
- package/lib/cjs/form/variables.scss +3 -0
- package/lib/cjs/grid/constants.js +1 -3
- package/lib/cjs/grid/grid.css +1 -1
- package/lib/cjs/grid/grid.scss +1 -1
- package/lib/cjs/highlight/constants.js +1 -3
- package/lib/cjs/icons/constants.js +1 -3
- package/lib/cjs/image/constants.d.ts +4 -1
- package/lib/cjs/image/constants.js +7 -5
- package/lib/cjs/image/image.css +4 -2
- package/lib/cjs/image/image.scss +9 -5
- package/lib/cjs/image/imageFoundation.js +4 -18
- package/lib/cjs/image/previewFooterFoundation.d.ts +0 -1
- package/lib/cjs/image/previewFooterFoundation.js +0 -14
- package/lib/cjs/image/previewFoundation.js +0 -11
- package/lib/cjs/image/previewImageFoundation.d.ts +9 -24
- package/lib/cjs/image/previewImageFoundation.js +79 -164
- package/lib/cjs/image/previewInnerFoundation.d.ts +19 -15
- package/lib/cjs/image/previewInnerFoundation.js +108 -114
- package/lib/cjs/image/utils.d.ts +1 -1
- package/lib/cjs/image/utils.js +46 -35
- package/lib/cjs/image/variables.scss +1 -1
- package/lib/cjs/input/constants.js +1 -3
- package/lib/cjs/input/foundation.js +19 -104
- package/lib/cjs/input/input.css +45 -1
- package/lib/cjs/input/input.scss +48 -3
- package/lib/cjs/input/textarea.css +20 -0
- package/lib/cjs/input/textarea.scss +34 -0
- package/lib/cjs/input/textareaFoundation.d.ts +1 -1
- package/lib/cjs/input/textareaFoundation.js +58 -101
- package/lib/cjs/input/util/calculateNodeHeight.js +6 -18
- package/lib/cjs/input/util/getSizingData.js +7 -11
- package/lib/cjs/input/variables.scss +7 -0
- package/lib/cjs/inputNumber/constants.js +0 -2
- package/lib/cjs/inputNumber/foundation.js +28 -197
- package/lib/cjs/inputNumber/inputNumber.css +4 -0
- package/lib/cjs/inputNumber/inputNumber.scss +9 -0
- package/lib/cjs/layout/constants.js +1 -3
- package/lib/cjs/list/constants.js +1 -3
- package/lib/cjs/modal/constants.js +1 -3
- package/lib/cjs/modal/modal.css +8 -0
- package/lib/cjs/modal/modal.scss +10 -1
- package/lib/cjs/modal/modalContentFoundation.js +0 -20
- package/lib/cjs/modal/modalFoundation.d.ts +8 -4
- package/lib/cjs/modal/modalFoundation.js +40 -15
- package/lib/cjs/modal/variables.scss +6 -1
- package/lib/cjs/navigation/NavItem.js +0 -12
- package/lib/cjs/navigation/constants.js +1 -4
- package/lib/cjs/navigation/foundation.js +3 -70
- package/lib/cjs/navigation/itemFoundation.js +3 -22
- package/lib/cjs/navigation/subNavFoundation.js +7 -42
- package/lib/cjs/notification/constants.js +3 -6
- package/lib/cjs/notification/notification.css +18 -0
- package/lib/cjs/notification/notification.scss +21 -1
- package/lib/cjs/notification/notificationFoundation.d.ts +6 -6
- package/lib/cjs/notification/notificationFoundation.js +0 -16
- package/lib/cjs/notification/notificationListFoundation.d.ts +4 -1
- package/lib/cjs/notification/notificationListFoundation.js +15 -18
- package/lib/cjs/overflowList/constants.d.ts +6 -4
- package/lib/cjs/overflowList/constants.js +3 -3
- package/lib/cjs/overflowList/foundation.d.ts +3 -1
- package/lib/cjs/overflowList/foundation.js +59 -68
- package/lib/cjs/pagination/constants.js +1 -3
- package/lib/cjs/pagination/foundation.d.ts +5 -3
- package/lib/cjs/pagination/foundation.js +36 -93
- package/lib/cjs/pagination/pagination.css +23 -0
- package/lib/cjs/pagination/pagination.scss +29 -0
- package/lib/cjs/pagination/variables.scss +1 -0
- package/lib/cjs/popconfirm/constants.js +2 -4
- package/lib/cjs/popconfirm/popconfirm.css +4 -24
- package/lib/cjs/popconfirm/popconfirm.scss +4 -16
- package/lib/cjs/popconfirm/popconfirmFoundation.d.ts +4 -0
- package/lib/cjs/popconfirm/popconfirmFoundation.js +17 -19
- package/lib/cjs/popconfirm/rtl.scss +0 -13
- package/lib/cjs/popconfirm/variables.scss +0 -4
- package/lib/cjs/popover/constants.d.ts +1 -1
- package/lib/cjs/popover/constants.js +3 -6
- package/lib/cjs/popover/popover.css +2 -0
- package/lib/cjs/popover/popover.scss +2 -0
- package/lib/cjs/progress/constants.js +1 -3
- package/lib/cjs/progress/generates.d.ts +2 -2
- package/lib/cjs/progress/generates.js +33 -74
- package/lib/cjs/radio/constants.js +13 -15
- package/lib/cjs/radio/radio.css +3 -0
- package/lib/cjs/radio/radio.scss +6 -3
- package/lib/cjs/radio/radioFoundation.js +0 -14
- package/lib/cjs/radio/radioGroupFoundation.js +3 -23
- package/lib/cjs/radio/radioInnerFoundation.js +1 -19
- package/lib/cjs/radio/variables.scss +4 -0
- package/lib/cjs/rating/constants.js +1 -3
- package/lib/cjs/rating/foundation.js +10 -62
- package/lib/cjs/scrollList/constants.js +2 -4
- package/lib/cjs/scrollList/foundation.js +0 -4
- package/lib/cjs/scrollList/itemFoundation.js +8 -61
- package/lib/cjs/scrollList/scrollTo.js +2 -5
- package/lib/cjs/select/constants.js +3 -6
- package/lib/cjs/select/foundation.d.ts +8 -6
- package/lib/cjs/select/foundation.js +172 -434
- package/lib/cjs/select/option.scss +1 -1
- package/lib/cjs/select/optionFoundation.js +2 -14
- package/lib/cjs/select/select.css +50 -0
- package/lib/cjs/select/select.scss +74 -5
- package/lib/cjs/select/variables.scss +9 -6
- package/lib/cjs/sideSheet/constants.js +2 -4
- package/lib/cjs/sideSheet/sideSheet.css +30 -0
- package/lib/cjs/sideSheet/sideSheet.scss +38 -0
- package/lib/cjs/sideSheet/sideSheetFoundation.d.ts +1 -0
- package/lib/cjs/sideSheet/sideSheetFoundation.js +0 -18
- package/lib/cjs/sideSheet/variables.scss +7 -0
- package/lib/cjs/skeleton/constants.js +1 -3
- package/lib/cjs/skeleton/skeleton.css +3 -2
- package/lib/cjs/skeleton/skeleton.scss +1 -0
- package/lib/cjs/skeleton/variables.scss +2 -2
- package/lib/cjs/slider/constants.d.ts +1 -0
- package/lib/cjs/slider/constants.js +8 -9
- package/lib/cjs/slider/foundation.d.ts +13 -2
- package/lib/cjs/slider/foundation.js +30 -226
- package/lib/cjs/slider/slider.css +25 -11
- package/lib/cjs/slider/slider.scss +16 -1
- package/lib/cjs/slider/variables.scss +15 -9
- package/lib/cjs/space/constants.js +1 -3
- package/lib/cjs/spin/constants.js +1 -3
- package/lib/cjs/spin/foundation.js +3 -13
- package/lib/cjs/spin/spin.css +3 -0
- package/lib/cjs/spin/spin.scss +3 -0
- package/lib/cjs/steps/bacisSteps.scss +10 -3
- package/lib/cjs/steps/constants.js +2 -4
- package/lib/cjs/steps/fillSteps.scss +7 -7
- package/lib/cjs/steps/steps.css +27 -22
- package/lib/cjs/steps/variables.scss +3 -3
- package/lib/cjs/switch/constants.js +13 -15
- package/lib/cjs/switch/foundation.js +1 -21
- package/lib/cjs/switch/switch.css +10 -0
- package/lib/cjs/switch/switch.scss +13 -2
- package/lib/cjs/table/bodyFoundation.js +1 -34
- package/lib/cjs/table/cellFoundation.js +0 -5
- package/lib/cjs/table/constants.d.ts +0 -1
- package/lib/cjs/table/constants.js +13 -18
- package/lib/cjs/table/foundation.d.ts +26 -16
- package/lib/cjs/table/foundation.js +79 -308
- package/lib/cjs/table/rtl.scss +33 -2
- package/lib/cjs/table/table.css +100 -64
- package/lib/cjs/table/table.scss +66 -8
- package/lib/cjs/table/tableRowFoundation.js +0 -12
- package/lib/cjs/table/tableSelectionCellFoundation.js +0 -6
- package/lib/cjs/table/utils.d.ts +6 -4
- package/lib/cjs/table/utils.js +27 -160
- package/lib/cjs/table/variables.scss +6 -3
- package/lib/cjs/tabs/constants.js +21 -23
- package/lib/cjs/tabs/foundation.js +2 -40
- package/lib/cjs/tabs/tabs.css +207 -7
- package/lib/cjs/tabs/tabs.scss +339 -24
- package/lib/cjs/tag/constants.js +1 -4
- package/lib/cjs/tag/tag.css +34 -1
- package/lib/cjs/tag/tag.scss +43 -4
- package/lib/cjs/tag/variables.scss +5 -0
- package/lib/cjs/tagInput/constants.js +1 -3
- package/lib/cjs/tagInput/foundation.d.ts +7 -4
- package/lib/cjs/tagInput/foundation.js +64 -88
- package/lib/cjs/tagInput/tagInput.css +35 -9
- package/lib/cjs/tagInput/tagInput.scss +41 -12
- package/lib/cjs/tagInput/utils/getSplitedArray.js +0 -11
- package/lib/cjs/tagInput/variables.scss +2 -0
- package/lib/cjs/timePicker/ComboxFoundation.js +6 -41
- package/lib/cjs/timePicker/constants.js +3 -6
- package/lib/cjs/timePicker/foundation.d.ts +2 -2
- package/lib/cjs/timePicker/foundation.js +28 -107
- package/lib/cjs/timePicker/inputFoundation.js +4 -25
- package/lib/cjs/timePicker/timePicker.css +15 -0
- package/lib/cjs/timePicker/timePicker.scss +22 -1
- package/lib/cjs/timePicker/utils/index.js +12 -51
- package/lib/cjs/timePicker/utils/localeDate.js +0 -10
- package/lib/cjs/timeline/constants.js +2 -4
- package/lib/cjs/toast/animation.scss +3 -0
- package/lib/cjs/toast/constants.js +3 -6
- package/lib/cjs/toast/toast.css +35 -3
- package/lib/cjs/toast/toast.scss +43 -3
- package/lib/cjs/toast/toastFoundation.d.ts +5 -4
- package/lib/cjs/toast/toastFoundation.js +0 -14
- package/lib/cjs/toast/toastListFoundation.d.ts +5 -0
- package/lib/cjs/toast/toastListFoundation.js +10 -22
- package/lib/cjs/toast/variables.scss +14 -0
- package/lib/cjs/tooltip/constants.d.ts +1 -1
- package/lib/cjs/tooltip/constants.js +2 -4
- package/lib/cjs/tooltip/foundation.d.ts +5 -2
- package/lib/cjs/tooltip/foundation.js +143 -336
- package/lib/cjs/tooltip/tooltip.css +7 -0
- package/lib/cjs/tooltip/tooltip.scss +9 -0
- package/lib/cjs/transfer/constants.js +1 -3
- package/lib/cjs/transfer/foundation.d.ts +1 -1
- package/lib/cjs/transfer/foundation.js +4 -69
- package/lib/cjs/transfer/transfer.css +4 -0
- package/lib/cjs/transfer/transfer.scss +7 -0
- package/lib/cjs/transfer/transferUtils.js +5 -27
- package/lib/cjs/tree/constants.js +2 -4
- package/lib/cjs/tree/foundation.d.ts +14 -9
- package/lib/cjs/tree/foundation.js +60 -183
- package/lib/cjs/tree/rtl.scss +19 -11
- package/lib/cjs/tree/tree.css +147 -65
- package/lib/cjs/tree/tree.scss +112 -17
- package/lib/cjs/tree/treeUtil.d.ts +17 -8
- package/lib/cjs/tree/treeUtil.js +102 -195
- package/lib/cjs/tree/variables.scss +3 -2
- package/lib/cjs/treeSelect/constants.js +3 -5
- package/lib/cjs/treeSelect/foundation.d.ts +26 -13
- package/lib/cjs/treeSelect/foundation.js +153 -248
- package/lib/cjs/treeSelect/treeSelect.css +55 -10
- package/lib/cjs/treeSelect/treeSelect.scss +76 -20
- package/lib/cjs/treeSelect/variables.scss +4 -2
- package/lib/cjs/typography/constants.d.ts +1 -0
- package/lib/cjs/typography/constants.js +2 -3
- package/lib/cjs/typography/formatNumeral.d.ts +3 -3
- package/lib/cjs/typography/formatNumeral.js +22 -43
- package/lib/cjs/typography/typography.css +135 -2
- package/lib/cjs/typography/typography.scss +151 -8
- package/lib/cjs/typography/variables.scss +52 -0
- package/lib/cjs/upload/constants.js +2 -4
- package/lib/cjs/upload/fileCardFoundation.d.ts +9 -0
- package/lib/cjs/upload/fileCardFoundation.js +18 -0
- package/lib/cjs/upload/foundation.d.ts +14 -5
- package/lib/cjs/upload/foundation.js +107 -247
- package/lib/cjs/upload/upload.css +9 -0
- package/lib/cjs/upload/upload.scss +8 -0
- package/lib/cjs/upload/utils.js +14 -33
- package/lib/cjs/utils/Event.js +1 -21
- package/lib/cjs/utils/FocusHandle.d.ts +1 -1
- package/lib/cjs/utils/FocusHandle.js +6 -35
- package/lib/cjs/utils/Logger.js +0 -21
- package/lib/cjs/utils/Store.js +0 -10
- package/lib/cjs/utils/a11y.js +18 -43
- package/lib/cjs/utils/array.d.ts +2 -2
- package/lib/cjs/utils/array.js +2 -9
- package/lib/cjs/utils/arrayMove.js +0 -1
- package/lib/cjs/utils/classnames.js +0 -12
- package/lib/cjs/utils/date-fns-extra.d.ts +28 -17
- package/lib/cjs/utils/date-fns-extra.js +82 -51
- package/lib/cjs/utils/dom.d.ts +1 -1
- package/lib/cjs/utils/dom.js +0 -13
- package/lib/cjs/utils/function.js +0 -2
- package/lib/cjs/utils/getDataAttr.js +1 -3
- package/lib/cjs/utils/getHighlight.js +5 -26
- package/lib/cjs/utils/getMotionObjFromProps.js +4 -16
- package/lib/cjs/utils/index.js +0 -4
- package/lib/cjs/utils/isBothNaN.js +0 -2
- package/lib/cjs/utils/isElement.js +0 -1
- package/lib/cjs/utils/isEnterPress.js +0 -5
- package/lib/cjs/utils/isEscPress.js +0 -5
- package/lib/cjs/utils/isNullOrUndefined.js +0 -1
- package/lib/cjs/utils/isNumber.js +0 -1
- package/lib/cjs/utils/isObject.js +0 -1
- package/lib/cjs/utils/isPromise.js +0 -3
- package/lib/cjs/utils/isString.js +0 -1
- package/lib/cjs/utils/keyCode.js +0 -105
- package/lib/cjs/utils/log.js +0 -5
- package/lib/cjs/utils/number.js +0 -2
- package/lib/cjs/utils/object.d.ts +4 -4
- package/lib/cjs/utils/object.js +10 -36
- package/lib/cjs/utils/set.js +0 -8
- package/lib/cjs/utils/shallowEqualObjects.js +0 -7
- package/lib/cjs/utils/touchPolyfill.js +1 -8
- package/lib/cjs/utils/type.d.ts +3 -3
- package/lib/cjs/utils/uuid.js +4 -11
- package/lib/cjs/utils/warning.js +1 -2
- package/lib/es/anchor/anchor.css +5 -0
- package/lib/es/anchor/anchor.scss +6 -0
- package/lib/es/anchor/constants.js +1 -1
- package/lib/es/anchor/foundation.js +20 -73
- package/lib/es/anchor/linkFoundation.js +3 -12
- package/lib/es/anchor/variables.scss +4 -0
- package/lib/es/autoComplete/autoComplete.css +1 -0
- package/lib/es/autoComplete/autoComplete.scss +2 -0
- package/lib/es/autoComplete/constants.js +3 -3
- package/lib/es/autoComplete/foundation.d.ts +3 -1
- package/lib/es/autoComplete/foundation.js +37 -142
- package/lib/es/autoComplete/optionFoundation.js +2 -10
- package/lib/es/avatar/animation.scss +19 -0
- package/lib/es/avatar/avatar.css +261 -0
- package/lib/es/avatar/avatar.scss +314 -1
- package/lib/es/avatar/constants.js +1 -2
- package/lib/es/avatar/foundation.d.ts +3 -0
- package/lib/es/avatar/foundation.js +21 -14
- package/lib/es/avatar/variables.scss +66 -10
- package/lib/es/backtop/constants.js +1 -1
- package/lib/es/backtop/foundation.d.ts +2 -2
- package/lib/es/backtop/foundation.js +0 -16
- package/lib/es/badge/badge.css +10 -0
- package/lib/es/badge/badge.scss +13 -0
- package/lib/es/badge/constants.js +2 -2
- package/lib/es/badge/variables.scss +4 -0
- package/lib/es/banner/constants.js +1 -1
- package/lib/es/banner/foundation.js +0 -3
- package/lib/es/base/constants.js +2 -2
- package/lib/es/base/foundation.d.ts +3 -3
- package/lib/es/base/foundation.js +11 -44
- package/lib/es/breadcrumb/breadcrumb.css +5 -3
- package/lib/es/breadcrumb/breadcrumb.scss +10 -4
- package/lib/es/breadcrumb/constants.js +1 -1
- package/lib/es/breadcrumb/foundation.js +0 -8
- package/lib/es/breadcrumb/itemFoundation.js +0 -3
- package/lib/es/breadcrumb/variables.scss +4 -0
- package/lib/es/button/button.css +32 -5
- package/lib/es/button/button.scss +88 -21
- package/lib/es/button/constants.js +1 -1
- package/lib/es/button/iconButton.css +1 -0
- package/lib/es/button/iconButton.scss +1 -0
- package/lib/es/button/splitButtonGroup.scss +10 -9
- package/lib/es/button/variables.scss +13 -0
- package/lib/es/calendar/calendar.css +2 -2
- package/lib/es/calendar/calendar.scss +1 -1
- package/lib/es/calendar/constants.js +1 -1
- package/lib/es/calendar/eventUtil.d.ts +7 -6
- package/lib/es/calendar/eventUtil.js +15 -45
- package/lib/es/calendar/foundation.d.ts +4 -4
- package/lib/es/calendar/foundation.js +32 -122
- package/lib/es/card/constants.js +1 -1
- package/lib/es/carousel/carousel.css +4 -0
- package/lib/es/carousel/carousel.scss +4 -0
- package/lib/es/carousel/constants.js +9 -9
- package/lib/es/carousel/foundation.d.ts +2 -0
- package/lib/es/carousel/foundation.js +7 -47
- package/lib/es/cascader/cascader.css +45 -4
- package/lib/es/cascader/cascader.scss +66 -23
- package/lib/es/cascader/constants.d.ts +3 -0
- package/lib/es/cascader/constants.js +7 -5
- package/lib/es/cascader/foundation.d.ts +27 -8
- package/lib/es/cascader/foundation.js +125 -286
- package/lib/es/cascader/util.d.ts +9 -1
- package/lib/es/cascader/util.js +65 -24
- package/lib/es/cascader/variables.scss +5 -1
- package/lib/es/checkbox/checkbox.css +0 -1
- package/lib/es/checkbox/checkbox.scss +0 -1
- package/lib/es/checkbox/checkboxFoundation.js +1 -34
- package/lib/es/checkbox/checkboxGroupFoundation.js +1 -20
- package/lib/es/checkbox/constants.js +13 -13
- package/lib/es/collapse/constants.js +1 -1
- package/lib/es/collapse/foundation.d.ts +2 -1
- package/lib/es/collapse/foundation.js +2 -9
- package/lib/es/collapsible/constants.js +1 -1
- package/lib/es/collapsible/foundation.js +0 -7
- package/lib/es/datePicker/_utils/formatter.js +4 -8
- package/lib/es/datePicker/_utils/getDayOfWeek.d.ts +1 -1
- package/lib/es/datePicker/_utils/getDayOfWeek.js +0 -3
- package/lib/es/datePicker/_utils/getDefaultFormatToken.d.ts +1 -0
- package/lib/es/datePicker/_utils/getDefaultFormatToken.js +2 -3
- package/lib/es/datePicker/_utils/getDefaultPickerDate.d.ts +1 -1
- package/lib/es/datePicker/_utils/getDefaultPickerDate.js +0 -10
- package/lib/es/datePicker/_utils/getFullDateOffset.js +0 -3
- package/lib/es/datePicker/_utils/getInsetInputFormatToken.js +2 -5
- package/lib/es/datePicker/_utils/getInsetInputValueFromInsetInputStr.js +1 -5
- package/lib/es/datePicker/_utils/getMonthTable.d.ts +1 -1
- package/lib/es/datePicker/_utils/getMonthTable.js +8 -18
- package/lib/es/datePicker/_utils/getMonthsInYear.js +1 -2
- package/lib/es/datePicker/_utils/getYears.d.ts +1 -1
- package/lib/es/datePicker/_utils/getYears.js +9 -6
- package/lib/es/datePicker/_utils/isBetween.js +0 -1
- package/lib/es/datePicker/_utils/isValidTimeZone.d.ts +1 -0
- package/lib/es/datePicker/_utils/isValidTimeZone.js +3 -0
- package/lib/es/datePicker/_utils/parser.js +0 -8
- package/lib/es/datePicker/constants.d.ts +1 -1
- package/lib/es/datePicker/constants.js +28 -28
- package/lib/es/datePicker/datePicker.css +88 -13
- package/lib/es/datePicker/datePicker.scss +170 -21
- package/lib/es/datePicker/foundation.d.ts +79 -50
- package/lib/es/datePicker/foundation.js +173 -426
- package/lib/es/datePicker/inputFoundation.d.ts +15 -6
- package/lib/es/datePicker/inputFoundation.js +35 -85
- package/lib/es/datePicker/monthFoundation.d.ts +1 -1
- package/lib/es/datePicker/monthFoundation.js +3 -22
- package/lib/es/datePicker/monthsGridFoundation.d.ts +18 -13
- package/lib/es/datePicker/monthsGridFoundation.js +70 -231
- package/lib/es/datePicker/variables.scss +13 -4
- package/lib/es/datePicker/yearAndMonthFoundation.d.ts +68 -13
- package/lib/es/datePicker/yearAndMonthFoundation.js +55 -37
- package/lib/es/descriptions/constants.d.ts +1 -0
- package/lib/es/descriptions/constants.js +3 -2
- package/lib/es/descriptions/descriptions.css +15 -0
- package/lib/es/descriptions/descriptions.scss +20 -0
- package/lib/es/descriptions/foundation.d.ts +7 -0
- package/lib/es/descriptions/foundation.js +37 -0
- package/lib/es/descriptions/variables.scss +10 -0
- package/lib/es/divider/constants.js +1 -1
- package/lib/es/dropdown/constants.js +4 -4
- package/lib/es/dropdown/dropdown.css +4 -0
- package/lib/es/dropdown/dropdown.scss +5 -0
- package/lib/es/dropdown/foundation.js +9 -20
- package/lib/es/dropdown/menuFoundation.js +9 -23
- package/lib/es/empty/constants.js +1 -1
- package/lib/es/form/constants.d.ts +1 -0
- package/lib/es/form/constants.js +3 -2
- package/lib/es/form/form.css +4 -0
- package/lib/es/form/form.scss +5 -2
- package/lib/es/form/foundation.d.ts +4 -4
- package/lib/es/form/foundation.js +84 -203
- package/lib/es/form/interface.d.ts +10 -10
- package/lib/es/form/utils.d.ts +10 -1
- package/lib/es/form/utils.js +83 -86
- package/lib/es/form/variables.scss +3 -0
- package/lib/es/grid/constants.js +1 -1
- package/lib/es/grid/grid.css +1 -1
- package/lib/es/grid/grid.scss +1 -1
- package/lib/es/highlight/constants.js +1 -1
- package/lib/es/icons/constants.js +1 -1
- package/lib/es/image/constants.d.ts +4 -1
- package/lib/es/image/constants.js +5 -2
- package/lib/es/image/image.css +4 -2
- package/lib/es/image/image.scss +9 -5
- package/lib/es/image/imageFoundation.js +4 -13
- package/lib/es/image/previewFooterFoundation.d.ts +0 -1
- package/lib/es/image/previewFooterFoundation.js +0 -10
- package/lib/es/image/previewFoundation.js +0 -7
- package/lib/es/image/previewImageFoundation.d.ts +9 -24
- package/lib/es/image/previewImageFoundation.js +79 -156
- package/lib/es/image/previewInnerFoundation.d.ts +19 -15
- package/lib/es/image/previewInnerFoundation.js +108 -107
- package/lib/es/image/utils.d.ts +1 -1
- package/lib/es/image/utils.js +46 -27
- package/lib/es/image/variables.scss +1 -1
- package/lib/es/input/constants.js +1 -1
- package/lib/es/input/foundation.js +19 -96
- package/lib/es/input/input.css +45 -1
- package/lib/es/input/input.scss +48 -3
- package/lib/es/input/textarea.css +20 -0
- package/lib/es/input/textarea.scss +34 -0
- package/lib/es/input/textareaFoundation.d.ts +1 -1
- package/lib/es/input/textareaFoundation.js +58 -91
- package/lib/es/input/util/calculateNodeHeight.js +6 -18
- package/lib/es/input/util/getSizingData.js +7 -11
- package/lib/es/input/variables.scss +7 -0
- package/lib/es/inputNumber/foundation.js +28 -188
- package/lib/es/inputNumber/inputNumber.css +4 -0
- package/lib/es/inputNumber/inputNumber.scss +9 -0
- package/lib/es/layout/constants.js +1 -1
- package/lib/es/list/constants.js +1 -1
- package/lib/es/modal/constants.js +1 -1
- package/lib/es/modal/modal.css +8 -0
- package/lib/es/modal/modal.scss +10 -1
- package/lib/es/modal/modalContentFoundation.js +0 -15
- package/lib/es/modal/modalFoundation.d.ts +8 -4
- package/lib/es/modal/modalFoundation.js +40 -11
- package/lib/es/modal/variables.scss +6 -1
- package/lib/es/navigation/NavItem.js +0 -8
- package/lib/es/navigation/constants.js +2 -2
- package/lib/es/navigation/foundation.js +3 -63
- package/lib/es/navigation/itemFoundation.js +3 -19
- package/lib/es/navigation/subNavFoundation.js +7 -38
- package/lib/es/notification/constants.js +4 -4
- package/lib/es/notification/notification.css +18 -0
- package/lib/es/notification/notification.scss +21 -1
- package/lib/es/notification/notificationFoundation.d.ts +6 -6
- package/lib/es/notification/notificationFoundation.js +0 -11
- package/lib/es/notification/notificationListFoundation.d.ts +4 -1
- package/lib/es/notification/notificationListFoundation.js +15 -14
- package/lib/es/overflowList/constants.d.ts +6 -4
- package/lib/es/overflowList/constants.js +3 -1
- package/lib/es/overflowList/foundation.d.ts +3 -1
- package/lib/es/overflowList/foundation.js +59 -64
- package/lib/es/pagination/constants.js +1 -1
- package/lib/es/pagination/foundation.d.ts +5 -3
- package/lib/es/pagination/foundation.js +36 -90
- package/lib/es/pagination/pagination.css +23 -0
- package/lib/es/pagination/pagination.scss +29 -0
- package/lib/es/pagination/variables.scss +1 -0
- package/lib/es/popconfirm/constants.js +2 -2
- package/lib/es/popconfirm/popconfirm.css +4 -24
- package/lib/es/popconfirm/popconfirm.scss +4 -16
- package/lib/es/popconfirm/popconfirmFoundation.d.ts +4 -0
- package/lib/es/popconfirm/popconfirmFoundation.js +17 -14
- package/lib/es/popconfirm/rtl.scss +0 -13
- package/lib/es/popconfirm/variables.scss +0 -4
- package/lib/es/popover/constants.d.ts +1 -1
- package/lib/es/popover/constants.js +3 -3
- package/lib/es/popover/popover.css +2 -0
- package/lib/es/popover/popover.scss +2 -0
- package/lib/es/progress/constants.js +1 -1
- package/lib/es/progress/generates.d.ts +2 -2
- package/lib/es/progress/generates.js +33 -73
- package/lib/es/radio/constants.js +13 -13
- package/lib/es/radio/radio.css +3 -0
- package/lib/es/radio/radio.scss +6 -3
- package/lib/es/radio/radioFoundation.js +0 -9
- package/lib/es/radio/radioGroupFoundation.js +3 -19
- package/lib/es/radio/radioInnerFoundation.js +1 -15
- package/lib/es/radio/variables.scss +4 -0
- package/lib/es/rating/constants.js +1 -1
- package/lib/es/rating/foundation.js +10 -55
- package/lib/es/scrollList/constants.js +2 -2
- package/lib/es/scrollList/itemFoundation.js +8 -60
- package/lib/es/scrollList/scrollTo.js +2 -4
- package/lib/es/select/constants.js +3 -3
- package/lib/es/select/foundation.d.ts +8 -6
- package/lib/es/select/foundation.js +172 -420
- package/lib/es/select/option.scss +1 -1
- package/lib/es/select/optionFoundation.js +2 -10
- package/lib/es/select/select.css +50 -0
- package/lib/es/select/select.scss +74 -5
- package/lib/es/select/variables.scss +9 -6
- package/lib/es/sideSheet/constants.js +2 -2
- package/lib/es/sideSheet/sideSheet.css +30 -0
- package/lib/es/sideSheet/sideSheet.scss +38 -0
- package/lib/es/sideSheet/sideSheetFoundation.d.ts +1 -0
- package/lib/es/sideSheet/sideSheetFoundation.js +0 -12
- package/lib/es/sideSheet/variables.scss +7 -0
- package/lib/es/skeleton/constants.js +1 -1
- package/lib/es/skeleton/skeleton.css +3 -2
- package/lib/es/skeleton/skeleton.scss +1 -0
- package/lib/es/skeleton/variables.scss +2 -2
- package/lib/es/slider/constants.d.ts +1 -0
- package/lib/es/slider/constants.js +8 -7
- package/lib/es/slider/foundation.d.ts +13 -2
- package/lib/es/slider/foundation.js +30 -219
- package/lib/es/slider/slider.css +25 -11
- package/lib/es/slider/slider.scss +16 -1
- package/lib/es/slider/variables.scss +15 -9
- package/lib/es/space/constants.js +1 -1
- package/lib/es/spin/constants.js +1 -1
- package/lib/es/spin/foundation.js +3 -11
- package/lib/es/spin/spin.css +3 -0
- package/lib/es/spin/spin.scss +3 -0
- package/lib/es/steps/bacisSteps.scss +10 -3
- package/lib/es/steps/constants.js +2 -2
- package/lib/es/steps/fillSteps.scss +7 -7
- package/lib/es/steps/steps.css +27 -22
- package/lib/es/steps/variables.scss +3 -3
- package/lib/es/switch/constants.js +13 -13
- package/lib/es/switch/foundation.js +1 -16
- package/lib/es/switch/switch.css +10 -0
- package/lib/es/switch/switch.scss +13 -2
- package/lib/es/table/bodyFoundation.js +1 -25
- package/lib/es/table/cellFoundation.js +0 -1
- package/lib/es/table/constants.d.ts +0 -1
- package/lib/es/table/constants.js +13 -16
- package/lib/es/table/foundation.d.ts +26 -16
- package/lib/es/table/foundation.js +79 -313
- package/lib/es/table/rtl.scss +33 -2
- package/lib/es/table/table.css +100 -64
- package/lib/es/table/table.scss +66 -8
- package/lib/es/table/tableRowFoundation.js +1 -9
- package/lib/es/table/tableSelectionCellFoundation.js +0 -2
- package/lib/es/table/utils.d.ts +6 -4
- package/lib/es/table/utils.js +25 -119
- package/lib/es/table/variables.scss +6 -3
- package/lib/es/tabs/constants.js +21 -21
- package/lib/es/tabs/foundation.js +2 -35
- package/lib/es/tabs/tabs.css +207 -7
- package/lib/es/tabs/tabs.scss +339 -24
- package/lib/es/tag/constants.js +1 -2
- package/lib/es/tag/tag.css +34 -1
- package/lib/es/tag/tag.scss +43 -4
- package/lib/es/tag/variables.scss +5 -0
- package/lib/es/tagInput/constants.js +1 -1
- package/lib/es/tagInput/foundation.d.ts +7 -4
- package/lib/es/tagInput/foundation.js +64 -78
- package/lib/es/tagInput/tagInput.css +35 -9
- package/lib/es/tagInput/tagInput.scss +41 -12
- package/lib/es/tagInput/utils/getSplitedArray.js +0 -7
- package/lib/es/tagInput/variables.scss +2 -0
- package/lib/es/timePicker/ComboxFoundation.js +6 -32
- package/lib/es/timePicker/constants.js +3 -3
- package/lib/es/timePicker/foundation.d.ts +2 -2
- package/lib/es/timePicker/foundation.js +30 -101
- package/lib/es/timePicker/inputFoundation.js +4 -22
- package/lib/es/timePicker/timePicker.css +15 -0
- package/lib/es/timePicker/timePicker.scss +22 -1
- package/lib/es/timePicker/utils/index.js +12 -30
- package/lib/es/timePicker/utils/localeDate.js +0 -8
- package/lib/es/timeline/constants.js +2 -2
- package/lib/es/toast/animation.scss +3 -0
- package/lib/es/toast/constants.js +4 -4
- package/lib/es/toast/toast.css +35 -3
- package/lib/es/toast/toast.scss +43 -3
- package/lib/es/toast/toastFoundation.d.ts +5 -4
- package/lib/es/toast/toastFoundation.js +0 -9
- package/lib/es/toast/toastListFoundation.d.ts +5 -0
- package/lib/es/toast/toastListFoundation.js +10 -18
- package/lib/es/toast/variables.scss +14 -0
- package/lib/es/tooltip/constants.d.ts +1 -1
- package/lib/es/tooltip/constants.js +2 -2
- package/lib/es/tooltip/foundation.d.ts +5 -2
- package/lib/es/tooltip/foundation.js +143 -332
- package/lib/es/tooltip/tooltip.css +7 -0
- package/lib/es/tooltip/tooltip.scss +9 -0
- package/lib/es/transfer/constants.js +1 -1
- package/lib/es/transfer/foundation.d.ts +1 -1
- package/lib/es/transfer/foundation.js +5 -62
- package/lib/es/transfer/transfer.css +4 -0
- package/lib/es/transfer/transfer.scss +7 -0
- package/lib/es/transfer/transferUtils.js +5 -21
- package/lib/es/tree/constants.js +2 -2
- package/lib/es/tree/foundation.d.ts +14 -9
- package/lib/es/tree/foundation.js +60 -176
- package/lib/es/tree/rtl.scss +19 -11
- package/lib/es/tree/tree.css +147 -65
- package/lib/es/tree/tree.scss +112 -17
- package/lib/es/tree/treeUtil.d.ts +17 -8
- package/lib/es/tree/treeUtil.js +102 -161
- package/lib/es/tree/variables.scss +3 -2
- package/lib/es/treeSelect/constants.js +3 -3
- package/lib/es/treeSelect/foundation.d.ts +26 -13
- package/lib/es/treeSelect/foundation.js +155 -235
- package/lib/es/treeSelect/treeSelect.css +55 -10
- package/lib/es/treeSelect/treeSelect.scss +76 -20
- package/lib/es/treeSelect/variables.scss +4 -2
- package/lib/es/typography/constants.d.ts +1 -0
- package/lib/es/typography/constants.js +2 -1
- package/lib/es/typography/formatNumeral.d.ts +3 -3
- package/lib/es/typography/formatNumeral.js +22 -40
- package/lib/es/typography/typography.css +135 -2
- package/lib/es/typography/typography.scss +151 -8
- package/lib/es/typography/variables.scss +52 -0
- package/lib/es/upload/constants.js +2 -2
- package/lib/es/upload/fileCardFoundation.d.ts +9 -0
- package/lib/es/upload/fileCardFoundation.js +10 -0
- package/lib/es/upload/foundation.d.ts +14 -5
- package/lib/es/upload/foundation.js +107 -240
- package/lib/es/upload/upload.css +9 -0
- package/lib/es/upload/upload.scss +8 -0
- package/lib/es/upload/utils.js +14 -28
- package/lib/es/utils/Event.js +1 -17
- package/lib/es/utils/FocusHandle.d.ts +1 -1
- package/lib/es/utils/FocusHandle.js +6 -32
- package/lib/es/utils/Logger.js +0 -20
- package/lib/es/utils/Store.js +0 -9
- package/lib/es/utils/a11y.js +18 -31
- package/lib/es/utils/array.d.ts +2 -2
- package/lib/es/utils/array.js +2 -7
- package/lib/es/utils/classnames.js +0 -10
- package/lib/es/utils/date-fns-extra.d.ts +28 -17
- package/lib/es/utils/date-fns-extra.js +78 -40
- package/lib/es/utils/dom.d.ts +1 -1
- package/lib/es/utils/dom.js +0 -9
- package/lib/es/utils/function.js +0 -1
- package/lib/es/utils/getDataAttr.js +1 -2
- package/lib/es/utils/getHighlight.js +5 -26
- package/lib/es/utils/getMotionObjFromProps.js +4 -12
- package/lib/es/utils/isBothNaN.js +0 -1
- package/lib/es/utils/isEnterPress.js +0 -2
- package/lib/es/utils/isEscPress.js +0 -2
- package/lib/es/utils/keyCode.js +0 -104
- package/lib/es/utils/log.js +0 -3
- package/lib/es/utils/object.d.ts +4 -4
- package/lib/es/utils/object.js +10 -29
- package/lib/es/utils/set.js +0 -5
- package/lib/es/utils/shallowEqualObjects.js +0 -6
- package/lib/es/utils/touchPolyfill.js +1 -6
- package/lib/es/utils/type.d.ts +3 -3
- package/lib/es/utils/uuid.js +4 -10
- package/lib/es/utils/warning.js +1 -1
- package/modal/modal.scss +10 -1
- package/modal/modalContentFoundation.ts +3 -3
- package/modal/modalFoundation.ts +32 -7
- package/modal/variables.scss +6 -1
- package/navigation/NavItem.ts +0 -2
- package/navigation/foundation.ts +1 -3
- package/navigation/itemFoundation.ts +0 -1
- package/navigation/subNavFoundation.ts +3 -2
- package/notification/notification.scss +21 -1
- package/notification/notificationFoundation.ts +3 -3
- package/notification/notificationListFoundation.ts +14 -4
- package/overflowList/constants.ts +4 -2
- package/overflowList/foundation.ts +51 -33
- package/package.json +6 -5
- package/pagination/foundation.ts +13 -3
- package/pagination/pagination.scss +29 -0
- package/pagination/variables.scss +1 -0
- package/popconfirm/popconfirm.scss +4 -16
- package/popconfirm/popconfirmFoundation.ts +20 -2
- package/popconfirm/rtl.scss +0 -13
- package/popconfirm/variables.scss +0 -4
- package/popover/constants.ts +1 -1
- package/popover/popover.scss +2 -0
- package/radio/radio.scss +6 -3
- package/radio/radioFoundation.ts +1 -1
- package/radio/radioGroupFoundation.ts +0 -1
- package/radio/radioInnerFoundation.ts +0 -1
- package/radio/variables.scss +4 -0
- package/rating/foundation.ts +0 -1
- package/select/foundation.ts +70 -32
- package/select/option.scss +1 -1
- package/select/optionFoundation.ts +0 -2
- package/select/select.scss +74 -5
- package/select/variables.scss +9 -6
- package/sideSheet/sideSheet.scss +38 -0
- package/sideSheet/sideSheetFoundation.ts +3 -2
- package/sideSheet/variables.scss +7 -0
- package/skeleton/skeleton.scss +1 -0
- package/skeleton/variables.scss +2 -2
- package/slider/constants.ts +1 -0
- package/slider/foundation.ts +25 -29
- package/slider/slider.scss +16 -1
- package/slider/variables.scss +15 -9
- package/spin/spin.scss +3 -0
- package/steps/bacisSteps.scss +10 -3
- package/steps/fillSteps.scss +7 -7
- package/steps/variables.scss +3 -3
- package/switch/foundation.ts +2 -4
- package/switch/switch.scss +13 -2
- package/table/bodyFoundation.ts +0 -1
- package/table/constants.ts +0 -3
- package/table/foundation.ts +33 -31
- package/table/rtl.scss +33 -2
- package/table/table.scss +66 -8
- package/table/tableRowFoundation.ts +0 -1
- package/table/utils.ts +23 -43
- package/table/variables.scss +6 -3
- package/tabs/foundation.ts +2 -2
- package/tabs/tabs.scss +339 -24
- package/tag/constants.ts +19 -2
- package/tag/tag.scss +43 -4
- package/tag/variables.scss +5 -0
- package/tagInput/foundation.ts +57 -3
- package/tagInput/tagInput.scss +41 -12
- package/tagInput/variables.scss +2 -0
- package/timePicker/foundation.ts +27 -18
- package/timePicker/inputFoundation.ts +0 -2
- package/timePicker/timePicker.scss +22 -1
- package/timePicker/utils/index.ts +3 -2
- package/toast/animation.scss +3 -0
- package/toast/toast.scss +43 -3
- package/toast/toastFoundation.ts +4 -6
- package/toast/toastListFoundation.ts +13 -3
- package/toast/variables.scss +14 -0
- package/tooltip/constants.ts +1 -1
- package/tooltip/foundation.ts +96 -58
- package/tooltip/tooltip.scss +9 -0
- package/transfer/foundation.ts +0 -1
- package/transfer/transfer.scss +7 -0
- package/tree/foundation.ts +38 -33
- package/tree/rtl.scss +19 -11
- package/tree/tree.scss +112 -17
- package/tree/treeUtil.ts +64 -32
- package/tree/variables.scss +3 -2
- package/treeSelect/foundation.ts +132 -70
- package/treeSelect/treeSelect.scss +76 -20
- package/treeSelect/variables.scss +4 -2
- package/typography/constants.ts +1 -0
- package/typography/formatNumeral.ts +2 -5
- package/typography/typography.scss +151 -8
- package/typography/variables.scss +52 -0
- package/upload/fileCardFoundation.ts +17 -0
- package/upload/foundation.ts +85 -10
- package/upload/upload.scss +8 -0
- package/utils/Event.ts +0 -1
- package/utils/a11y.ts +6 -6
- package/utils/array.ts +4 -4
- package/utils/date-fns-extra.ts +83 -22
- package/utils/function.ts +0 -1
- package/utils/getDataAttr.ts +1 -1
- package/utils/getMotionObjFromProps.ts +3 -2
- package/utils/object.ts +0 -3
|
@@ -19,24 +19,22 @@ const defaultRect = {
|
|
|
19
19
|
export default class Tooltip extends BaseFoundation {
|
|
20
20
|
constructor(adapter) {
|
|
21
21
|
var _this;
|
|
22
|
-
|
|
23
22
|
super(Object.assign({}, adapter));
|
|
24
23
|
_this = this;
|
|
25
|
-
|
|
26
24
|
this.removePortal = () => {
|
|
27
25
|
this._adapter.removePortal();
|
|
28
26
|
};
|
|
29
|
-
|
|
27
|
+
this.setDisplayNone = (displayNone, cb) => {
|
|
28
|
+
this._adapter.setDisplayNone(displayNone, cb);
|
|
29
|
+
};
|
|
30
30
|
this.onResize = () => {
|
|
31
31
|
// this.log('resize');
|
|
32
32
|
// rePosition when window resize
|
|
33
33
|
this.calcPosition();
|
|
34
34
|
};
|
|
35
|
-
|
|
36
35
|
this.delayShow = () => {
|
|
37
36
|
const mouseEnterDelay = this.getProp('mouseEnterDelay');
|
|
38
37
|
this.clearDelayTimer();
|
|
39
|
-
|
|
40
38
|
if (mouseEnterDelay > 0) {
|
|
41
39
|
this._timer = setTimeout(() => {
|
|
42
40
|
this.show();
|
|
@@ -46,42 +44,37 @@ export default class Tooltip extends BaseFoundation {
|
|
|
46
44
|
this.show();
|
|
47
45
|
}
|
|
48
46
|
};
|
|
49
|
-
|
|
50
47
|
this.show = () => {
|
|
51
48
|
const content = this.getProp('content');
|
|
52
49
|
const trigger = this.getProp('trigger');
|
|
53
50
|
const clickTriggerToHide = this.getProp('clickTriggerToHide');
|
|
54
51
|
const {
|
|
55
|
-
visible
|
|
52
|
+
visible,
|
|
53
|
+
displayNone
|
|
56
54
|
} = this.getStates();
|
|
57
|
-
|
|
55
|
+
if (displayNone) {
|
|
56
|
+
this.setDisplayNone(false);
|
|
57
|
+
}
|
|
58
58
|
if (visible) {
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
|
-
|
|
62
61
|
this.clearDelayTimer();
|
|
63
62
|
/**
|
|
64
63
|
* If you emit an event in setState callback, you need to place the event listener function before setState to execute.
|
|
65
64
|
* This is to avoid event registration being executed later than setState callback when setState is executed in setTimeout.
|
|
66
65
|
* internal-issues:1402#note_38969412
|
|
67
66
|
*/
|
|
68
|
-
|
|
69
67
|
this._adapter.on('portalInserted', () => {
|
|
70
68
|
this.calcPosition();
|
|
71
69
|
});
|
|
72
|
-
|
|
73
70
|
this._adapter.on('positionUpdated', () => {
|
|
74
71
|
this._togglePortalVisible(true);
|
|
75
72
|
});
|
|
76
|
-
|
|
77
73
|
this._adapter.insertPortal(content, {
|
|
78
74
|
left: -9999,
|
|
79
75
|
top: -9999
|
|
80
76
|
}); // offscreen rendering
|
|
81
|
-
|
|
82
|
-
|
|
83
77
|
if (trigger === 'custom') {
|
|
84
|
-
// eslint-disable-next-line
|
|
85
78
|
this._adapter.registerClickOutsideHandler(() => {});
|
|
86
79
|
}
|
|
87
80
|
/**
|
|
@@ -93,14 +86,10 @@ export default class Tooltip extends BaseFoundation {
|
|
|
93
86
|
* Because the handler needs to be bound to the document. If you bind during the constructor phase
|
|
94
87
|
* When there are multiple container instances in a page, one click triggers the handler of multiple containers
|
|
95
88
|
*/
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (trigger === 'click' || clickTriggerToHide) {
|
|
89
|
+
if (trigger === 'click' || clickTriggerToHide || trigger === 'contextMenu') {
|
|
99
90
|
this._adapter.registerClickOutsideHandler(this.hide);
|
|
100
91
|
}
|
|
101
|
-
|
|
102
92
|
this._bindScrollEvent();
|
|
103
|
-
|
|
104
93
|
this._bindResizeEvent();
|
|
105
94
|
};
|
|
106
95
|
/**
|
|
@@ -116,22 +105,18 @@ export default class Tooltip extends BaseFoundation {
|
|
|
116
105
|
* - decide whether to automatically adjust the position according to the current position and the boundingClient of wrapper
|
|
117
106
|
* - adjust the current style according to the current position, the boundingClient of trigger and motion.handle Style
|
|
118
107
|
*/
|
|
119
|
-
|
|
120
|
-
|
|
121
108
|
this.calcPosition = function (triggerRect, wrapperRect, containerRect) {
|
|
122
109
|
let shouldUpdatePos = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
123
110
|
triggerRect = (_isEmpty(triggerRect) ? _this._adapter.getTriggerBounding() : triggerRect) || Object.assign({}, defaultRect);
|
|
124
111
|
containerRect = (_isEmpty(containerRect) ? _this._adapter.getPopupContainerRect() : containerRect) || Object.assign({}, defaultRect);
|
|
125
|
-
wrapperRect = (_isEmpty(wrapperRect) ? _this._adapter.getWrapperBounding() : wrapperRect) || Object.assign({}, defaultRect);
|
|
126
|
-
|
|
112
|
+
wrapperRect = (_isEmpty(wrapperRect) ? _this._adapter.getWrapperBounding() : wrapperRect) || Object.assign({}, defaultRect);
|
|
113
|
+
// console.log('containerRect: ', containerRect, 'triggerRect: ', triggerRect, 'wrapperRect: ', wrapperRect);
|
|
127
114
|
let style = _this.calcPosStyle({
|
|
128
115
|
triggerRect,
|
|
129
116
|
wrapperRect,
|
|
130
117
|
containerRect
|
|
131
118
|
});
|
|
132
|
-
|
|
133
119
|
let position = _this.getProp('position');
|
|
134
|
-
|
|
135
120
|
if (_this.getProp('autoAdjustOverflow')) {
|
|
136
121
|
// console.log('style: ', style, '\ntriggerRect: ', triggerRect, '\nwrapperRect: ', wrapperRect);
|
|
137
122
|
const {
|
|
@@ -139,7 +124,6 @@ export default class Tooltip extends BaseFoundation {
|
|
|
139
124
|
isHeightOverFlow,
|
|
140
125
|
isWidthOverFlow
|
|
141
126
|
} = _this.adjustPosIfNeed(position, style, triggerRect, wrapperRect, containerRect);
|
|
142
|
-
|
|
143
127
|
if (position !== adjustedPos || isHeightOverFlow || isWidthOverFlow) {
|
|
144
128
|
position = adjustedPos;
|
|
145
129
|
style = _this.calcPosStyle({
|
|
@@ -152,21 +136,17 @@ export default class Tooltip extends BaseFoundation {
|
|
|
152
136
|
});
|
|
153
137
|
}
|
|
154
138
|
}
|
|
155
|
-
|
|
156
139
|
if (shouldUpdatePos && _this._mounted) {
|
|
157
140
|
// this._adapter.updatePlacementAttr(style.position);
|
|
158
141
|
_this._adapter.setPosition(Object.assign(Object.assign({}, style), {
|
|
159
142
|
position
|
|
160
143
|
}));
|
|
161
144
|
}
|
|
162
|
-
|
|
163
145
|
return style;
|
|
164
146
|
};
|
|
165
|
-
|
|
166
147
|
this.delayHide = () => {
|
|
167
148
|
const mouseLeaveDelay = this.getProp('mouseLeaveDelay');
|
|
168
149
|
this.clearDelayTimer();
|
|
169
|
-
|
|
170
150
|
if (mouseLeaveDelay > 0) {
|
|
171
151
|
this._timer = setTimeout(() => {
|
|
172
152
|
// console.log('delayHide for ', mouseLeaveDelay, ' ms, ', ...args);
|
|
@@ -177,36 +157,26 @@ export default class Tooltip extends BaseFoundation {
|
|
|
177
157
|
this.hide();
|
|
178
158
|
}
|
|
179
159
|
};
|
|
180
|
-
|
|
181
160
|
this.hide = () => {
|
|
182
161
|
this.clearDelayTimer();
|
|
183
|
-
|
|
184
162
|
this._togglePortalVisible(false);
|
|
185
|
-
|
|
186
163
|
this._adapter.off('portalInserted');
|
|
187
|
-
|
|
188
164
|
this._adapter.off('positionUpdated');
|
|
189
165
|
};
|
|
190
|
-
|
|
191
166
|
this.handleContainerKeydown = event => {
|
|
192
167
|
const {
|
|
193
168
|
guardFocus,
|
|
194
169
|
closeOnEsc
|
|
195
170
|
} = this.getProps();
|
|
196
|
-
|
|
197
171
|
switch (event && event.key) {
|
|
198
172
|
case "Escape":
|
|
199
173
|
closeOnEsc && this._handleEscKeyDown(event);
|
|
200
174
|
break;
|
|
201
|
-
|
|
202
175
|
case "Tab":
|
|
203
176
|
if (guardFocus) {
|
|
204
177
|
const container = this._adapter.getContainer();
|
|
205
|
-
|
|
206
178
|
const focusableElements = this._adapter.getFocusableElements(container);
|
|
207
|
-
|
|
208
179
|
const focusableNum = focusableElements.length;
|
|
209
|
-
|
|
210
180
|
if (focusableNum) {
|
|
211
181
|
// Shift + Tab will move focus backward
|
|
212
182
|
if (event.shiftKey) {
|
|
@@ -216,104 +186,78 @@ export default class Tooltip extends BaseFoundation {
|
|
|
216
186
|
}
|
|
217
187
|
}
|
|
218
188
|
}
|
|
219
|
-
|
|
220
189
|
break;
|
|
221
|
-
|
|
222
190
|
default:
|
|
223
191
|
break;
|
|
224
192
|
}
|
|
225
193
|
};
|
|
226
|
-
|
|
227
194
|
this._timer = null;
|
|
228
195
|
}
|
|
229
|
-
|
|
230
196
|
init() {
|
|
231
197
|
const {
|
|
232
198
|
wrapperId
|
|
233
199
|
} = this.getProps();
|
|
234
200
|
this._mounted = true;
|
|
235
|
-
|
|
236
201
|
this._bindEvent();
|
|
237
|
-
|
|
238
202
|
this._shouldShow();
|
|
239
|
-
|
|
240
203
|
this._initContainerPosition();
|
|
241
|
-
|
|
242
204
|
if (!wrapperId) {
|
|
243
205
|
this._adapter.setId();
|
|
244
206
|
}
|
|
245
207
|
}
|
|
246
|
-
|
|
247
208
|
destroy() {
|
|
248
209
|
this._mounted = false;
|
|
249
210
|
this.unBindEvent();
|
|
250
211
|
}
|
|
251
|
-
|
|
252
212
|
_bindEvent() {
|
|
253
213
|
const trigger = this.getProp('trigger'); // get trigger type
|
|
254
|
-
|
|
255
214
|
const {
|
|
256
215
|
triggerEventSet,
|
|
257
216
|
portalEventSet
|
|
258
217
|
} = this._generateEvent(trigger);
|
|
259
|
-
|
|
260
218
|
this._bindTriggerEvent(triggerEventSet);
|
|
261
|
-
|
|
262
219
|
this._bindPortalEvent(portalEventSet);
|
|
263
|
-
|
|
264
220
|
this._bindResizeEvent();
|
|
265
221
|
}
|
|
266
|
-
|
|
267
222
|
unBindEvent() {
|
|
268
223
|
this._adapter.unregisterClickOutsideHandler();
|
|
269
|
-
|
|
270
224
|
this.unBindResizeEvent();
|
|
271
225
|
this.unBindScrollEvent();
|
|
226
|
+
clearTimeout(this._timer);
|
|
272
227
|
}
|
|
273
|
-
|
|
274
228
|
_bindTriggerEvent(triggerEventSet) {
|
|
275
229
|
this._adapter.registerTriggerEvent(triggerEventSet);
|
|
276
230
|
}
|
|
277
|
-
|
|
278
231
|
_bindPortalEvent(portalEventSet) {
|
|
279
232
|
this._adapter.registerPortalEvent(portalEventSet);
|
|
280
233
|
}
|
|
281
|
-
|
|
282
234
|
_bindResizeEvent() {
|
|
283
235
|
this._adapter.registerResizeHandler(this.onResize);
|
|
284
236
|
}
|
|
285
|
-
|
|
286
237
|
unBindResizeEvent() {
|
|
287
238
|
this._adapter.unregisterResizeHandler(this.onResize);
|
|
288
239
|
}
|
|
289
|
-
|
|
290
240
|
_adjustPos() {
|
|
291
241
|
let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
292
242
|
let isVertical = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
293
243
|
let adjustType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'reverse';
|
|
294
244
|
let concatPos = arguments.length > 3 ? arguments[3] : undefined;
|
|
295
|
-
|
|
296
245
|
switch (adjustType) {
|
|
297
246
|
case 'reverse':
|
|
298
247
|
return this._reversePos(position, isVertical);
|
|
299
|
-
|
|
300
248
|
case 'expand':
|
|
301
249
|
// only happens when position is top/bottom/left/right
|
|
302
250
|
return this._expandPos(position, concatPos);
|
|
303
|
-
|
|
304
251
|
case 'reduce':
|
|
305
252
|
// only happens when position other than top/bottom/left/right
|
|
306
253
|
return this._reducePos(position);
|
|
307
|
-
|
|
308
254
|
default:
|
|
309
255
|
return this._reversePos(position, isVertical);
|
|
310
256
|
}
|
|
311
257
|
}
|
|
312
|
-
|
|
313
258
|
_reversePos() {
|
|
314
259
|
let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
315
260
|
let isVertical = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
316
|
-
|
|
317
261
|
if (isVertical) {
|
|
318
262
|
if (REGS.TOP.test(position)) {
|
|
319
263
|
return position.replace('top', 'bottom').replace('Top', 'Bottom');
|
|
@@ -325,33 +269,27 @@ export default class Tooltip extends BaseFoundation {
|
|
|
325
269
|
} else if (REGS.RIGHT.test(position)) {
|
|
326
270
|
return position.replace('right', 'left').replace('Right', 'Left');
|
|
327
271
|
}
|
|
328
|
-
|
|
329
272
|
return position;
|
|
330
273
|
}
|
|
331
|
-
|
|
332
274
|
_expandPos() {
|
|
333
275
|
let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
334
276
|
let concatPos = arguments.length > 1 ? arguments[1] : undefined;
|
|
335
277
|
return position.concat(concatPos);
|
|
336
278
|
}
|
|
337
|
-
|
|
338
279
|
_reducePos() {
|
|
339
280
|
let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
340
281
|
// if cur position consists of two directions, remove the last position
|
|
341
282
|
const found = ['Top', 'Bottom', 'Left', 'Right'].find(pos => position.endsWith(pos));
|
|
342
283
|
return found ? position.replace(found, '') : position;
|
|
343
284
|
}
|
|
344
|
-
|
|
345
285
|
clearDelayTimer() {
|
|
346
286
|
if (this._timer) {
|
|
347
287
|
clearTimeout(this._timer);
|
|
348
288
|
this._timer = null;
|
|
349
289
|
}
|
|
350
290
|
}
|
|
351
|
-
|
|
352
291
|
_generateEvent(types) {
|
|
353
292
|
const eventNames = this._adapter.getEventName();
|
|
354
|
-
|
|
355
293
|
const triggerEventSet = {
|
|
356
294
|
// bind esc keydown on trigger for a11y
|
|
357
295
|
[eventNames.keydown]: event => {
|
|
@@ -359,184 +297,167 @@ export default class Tooltip extends BaseFoundation {
|
|
|
359
297
|
}
|
|
360
298
|
};
|
|
361
299
|
let portalEventSet = {};
|
|
362
|
-
|
|
363
300
|
switch (types) {
|
|
364
301
|
case 'focus':
|
|
365
302
|
triggerEventSet[eventNames.focus] = () => {
|
|
366
303
|
this.delayShow();
|
|
367
304
|
};
|
|
368
|
-
|
|
369
305
|
triggerEventSet[eventNames.blur] = () => {
|
|
370
306
|
this.delayHide();
|
|
371
307
|
};
|
|
372
|
-
|
|
373
308
|
portalEventSet = triggerEventSet;
|
|
374
309
|
break;
|
|
375
|
-
|
|
376
310
|
case 'click':
|
|
377
311
|
triggerEventSet[eventNames.click] = () => {
|
|
378
312
|
// this.delayShow();
|
|
379
313
|
this.show();
|
|
380
314
|
};
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
315
|
+
portalEventSet = {};
|
|
316
|
+
// Click outside needs special treatment, can not be directly tied to the trigger Element, need to be bound to the document
|
|
384
317
|
break;
|
|
385
|
-
|
|
386
318
|
case 'hover':
|
|
387
319
|
triggerEventSet[eventNames.mouseEnter] = () => {
|
|
388
320
|
// console.log(e);
|
|
389
321
|
this.setCache('isClickToHide', false);
|
|
390
|
-
this.delayShow();
|
|
322
|
+
this.delayShow();
|
|
323
|
+
// this.show('trigger');
|
|
391
324
|
};
|
|
392
325
|
|
|
393
326
|
triggerEventSet[eventNames.mouseLeave] = () => {
|
|
394
327
|
// console.log(e);
|
|
395
|
-
this.delayHide();
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
328
|
+
this.delayHide();
|
|
329
|
+
// this.hide('trigger');
|
|
330
|
+
};
|
|
331
|
+
// bind focus to hover trigger for a11y
|
|
399
332
|
triggerEventSet[eventNames.focus] = () => {
|
|
400
333
|
const {
|
|
401
334
|
disableFocusListener
|
|
402
335
|
} = this.getProps();
|
|
403
336
|
!disableFocusListener && this.delayShow();
|
|
404
337
|
};
|
|
405
|
-
|
|
406
338
|
triggerEventSet[eventNames.blur] = () => {
|
|
407
339
|
const {
|
|
408
340
|
disableFocusListener
|
|
409
341
|
} = this.getProps();
|
|
410
342
|
!disableFocusListener && this.delayHide();
|
|
411
343
|
};
|
|
412
|
-
|
|
413
344
|
portalEventSet = Object.assign({}, triggerEventSet);
|
|
414
|
-
|
|
415
345
|
if (this.getProp('clickToHide')) {
|
|
416
346
|
portalEventSet[eventNames.click] = () => {
|
|
417
347
|
this.setCache('isClickToHide', true);
|
|
418
348
|
this.hide();
|
|
419
349
|
};
|
|
420
|
-
|
|
421
350
|
portalEventSet[eventNames.mouseEnter] = () => {
|
|
422
351
|
if (this.getCache('isClickToHide')) {
|
|
423
352
|
return;
|
|
424
353
|
}
|
|
425
|
-
|
|
426
354
|
this.delayShow();
|
|
427
355
|
};
|
|
428
356
|
}
|
|
429
|
-
|
|
430
357
|
break;
|
|
431
|
-
|
|
432
358
|
case 'custom':
|
|
433
359
|
// when trigger type is 'custom', no need to bind eventHandler
|
|
434
360
|
// show/hide completely depend on props.visible which change by user
|
|
435
361
|
break;
|
|
436
|
-
|
|
362
|
+
case 'contextMenu':
|
|
363
|
+
triggerEventSet[eventNames.contextMenu] = e => {
|
|
364
|
+
e.preventDefault();
|
|
365
|
+
this.show();
|
|
366
|
+
};
|
|
367
|
+
// Click outside needs special treatment, can not be directly tied to the trigger Element, need to be bound to the document
|
|
368
|
+
break;
|
|
437
369
|
default:
|
|
438
370
|
break;
|
|
439
371
|
}
|
|
440
|
-
|
|
441
372
|
return {
|
|
442
373
|
triggerEventSet,
|
|
443
374
|
portalEventSet
|
|
444
375
|
};
|
|
445
376
|
}
|
|
446
|
-
|
|
447
377
|
_shouldShow() {
|
|
448
378
|
const visible = this.getProp('visible');
|
|
449
|
-
|
|
450
379
|
if (visible) {
|
|
451
380
|
this.show();
|
|
452
|
-
} else {
|
|
381
|
+
} else {
|
|
382
|
+
// this.hide();
|
|
453
383
|
}
|
|
454
384
|
}
|
|
455
|
-
|
|
456
385
|
_togglePortalVisible(isVisible) {
|
|
457
386
|
const nowVisible = this.getState('visible');
|
|
458
|
-
|
|
459
387
|
if (nowVisible !== isVisible) {
|
|
460
388
|
this._adapter.togglePortalVisible(isVisible, () => {
|
|
461
389
|
if (isVisible) {
|
|
462
390
|
this._adapter.setInitialFocus();
|
|
463
391
|
}
|
|
464
|
-
|
|
465
392
|
this._adapter.notifyVisibleChange(isVisible);
|
|
466
393
|
});
|
|
467
394
|
}
|
|
468
395
|
}
|
|
469
|
-
|
|
470
396
|
_roundPixel(pixel) {
|
|
471
397
|
if (typeof pixel === 'number') {
|
|
472
398
|
return Math.round(pixel);
|
|
473
399
|
}
|
|
474
|
-
|
|
475
400
|
return pixel;
|
|
476
401
|
}
|
|
477
|
-
|
|
478
402
|
calcTransformOrigin(position, triggerRect, translateX, translateY) {
|
|
479
|
-
// eslint-disable-next-line
|
|
480
403
|
if (position && triggerRect && translateX != null && translateY != null) {
|
|
481
404
|
if (this.getProp('transformFromCenter')) {
|
|
482
405
|
if (['topLeft', 'bottomLeft'].includes(position)) {
|
|
483
|
-
return
|
|
406
|
+
return `${this._roundPixel(triggerRect.width / 2)}px ${-translateY * 100}%`;
|
|
484
407
|
}
|
|
485
|
-
|
|
486
408
|
if (['topRight', 'bottomRight'].includes(position)) {
|
|
487
|
-
return
|
|
409
|
+
return `calc(100% - ${this._roundPixel(triggerRect.width / 2)}px) ${-translateY * 100}%`;
|
|
488
410
|
}
|
|
489
|
-
|
|
490
411
|
if (['leftTop', 'rightTop'].includes(position)) {
|
|
491
|
-
return
|
|
412
|
+
return `${-translateX * 100}% ${this._roundPixel(triggerRect.height / 2)}px`;
|
|
492
413
|
}
|
|
493
|
-
|
|
494
414
|
if (['leftBottom', 'rightBottom'].includes(position)) {
|
|
495
|
-
return
|
|
415
|
+
return `${-translateX * 100}% calc(100% - ${this._roundPixel(triggerRect.height / 2)}px)`;
|
|
496
416
|
}
|
|
497
417
|
}
|
|
498
|
-
|
|
499
|
-
return "".concat(-translateX * 100, "% ").concat(-translateY * 100, "%");
|
|
418
|
+
return `${-translateX * 100}% ${-translateY * 100}%`;
|
|
500
419
|
}
|
|
501
|
-
|
|
502
420
|
return null;
|
|
503
421
|
}
|
|
504
|
-
|
|
505
422
|
calcPosStyle(props) {
|
|
423
|
+
var _a;
|
|
506
424
|
const {
|
|
507
425
|
spacing,
|
|
508
426
|
isOverFlow
|
|
509
427
|
} = props;
|
|
428
|
+
const {
|
|
429
|
+
innerWidth
|
|
430
|
+
} = window;
|
|
510
431
|
const triggerRect = (_isEmpty(props.triggerRect) ? props.triggerRect : this._adapter.getTriggerBounding()) || Object.assign({}, defaultRect);
|
|
511
432
|
const containerRect = (_isEmpty(props.containerRect) ? props.containerRect : this._adapter.getPopupContainerRect()) || Object.assign({}, defaultRect);
|
|
512
|
-
const wrapperRect = (_isEmpty(props.wrapperRect) ? props.wrapperRect : this._adapter.getWrapperBounding()) || Object.assign({}, defaultRect);
|
|
513
|
-
|
|
514
|
-
const
|
|
515
|
-
|
|
516
|
-
const SPACING = spacing != null ? spacing : this.getProp('spacing');
|
|
433
|
+
const wrapperRect = (_isEmpty(props.wrapperRect) ? props.wrapperRect : this._adapter.getWrapperBounding()) || Object.assign({}, defaultRect);
|
|
434
|
+
const position = props.position != null ? props.position : this.getProp('position');
|
|
435
|
+
const RAW_SPACING = spacing != null ? spacing : this.getProp('spacing');
|
|
517
436
|
const {
|
|
518
437
|
arrowPointAtCenter,
|
|
519
438
|
showArrow,
|
|
520
439
|
arrowBounding
|
|
521
440
|
} = this.getProps();
|
|
522
441
|
const pointAtCenter = showArrow && arrowPointAtCenter;
|
|
523
|
-
|
|
442
|
+
let SPACING = RAW_SPACING;
|
|
443
|
+
let ANO_SPACING = 0;
|
|
444
|
+
if (typeof RAW_SPACING !== 'number') {
|
|
445
|
+
// extended spacing api with {x: number, y: number}, the axes of the spacing is determined based on the position
|
|
446
|
+
const isTopOrBottom = position.includes('top') || position.includes('bottom');
|
|
447
|
+
SPACING = isTopOrBottom ? RAW_SPACING.y : RAW_SPACING.x;
|
|
448
|
+
ANO_SPACING = isTopOrBottom ? RAW_SPACING.x : RAW_SPACING.y;
|
|
449
|
+
}
|
|
524
450
|
const horizontalArrowWidth = _get(arrowBounding, 'width', 24);
|
|
525
|
-
|
|
526
451
|
const verticalArrowHeight = _get(arrowBounding, 'width', 24);
|
|
527
|
-
|
|
528
452
|
const arrowOffsetY = _get(arrowBounding, 'offsetY', 0);
|
|
529
|
-
|
|
530
453
|
const positionOffsetX = 6;
|
|
531
|
-
const positionOffsetY = 6;
|
|
454
|
+
const positionOffsetY = 6;
|
|
455
|
+
// You must use left/top when rendering, using right/bottom does not render the element position correctly
|
|
532
456
|
// Use left/top + translate to achieve tooltip positioning perfectly without knowing the size of the tooltip expansion layer
|
|
533
|
-
|
|
534
457
|
let left;
|
|
535
458
|
let top;
|
|
536
459
|
let translateX = 0; // Container x-direction translation distance
|
|
537
|
-
|
|
538
460
|
let translateY = 0; // Container y-direction translation distance
|
|
539
|
-
|
|
540
461
|
const middleX = triggerRect.left + triggerRect.width / 2;
|
|
541
462
|
const middleY = triggerRect.top + triggerRect.height / 2;
|
|
542
463
|
const offsetXWithArrow = positionOffsetX + horizontalArrowWidth / 2;
|
|
@@ -549,142 +470,133 @@ export default class Tooltip extends BaseFoundation {
|
|
|
549
470
|
const isWidthOverFlow = isOverFlow && isOverFlow[1];
|
|
550
471
|
const isTriggerNearLeft = middleX - containerRect.left < containerRect.right - middleX;
|
|
551
472
|
const isTriggerNearTop = middleY - containerRect.top < containerRect.bottom - middleY;
|
|
552
|
-
|
|
473
|
+
const isWrapperWidthOverflow = wrapperRect.width > innerWidth;
|
|
474
|
+
const scaled = Math.abs((wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.width) - ((_a = this._adapter.getContainer()) === null || _a === void 0 ? void 0 : _a.clientWidth)) > 1;
|
|
475
|
+
if (scaled) {
|
|
476
|
+
SPACING = SPACING * wrapperRect.width / this._adapter.getContainer().clientWidth;
|
|
477
|
+
}
|
|
553
478
|
switch (position) {
|
|
554
479
|
case 'top':
|
|
555
480
|
// left = middleX;
|
|
556
481
|
// top = triggerRect.top - SPACING;
|
|
557
|
-
left = isWidthOverFlow ? isTriggerNearLeft ? containerRect.left + wrapperRect.width / 2 : containerRect.right - wrapperRect.width / 2 + offsetWidth : middleX;
|
|
482
|
+
left = isWidthOverFlow ? isTriggerNearLeft ? containerRect.left + wrapperRect.width / 2 : containerRect.right - wrapperRect.width / 2 + offsetWidth : middleX + ANO_SPACING;
|
|
558
483
|
top = isHeightOverFlow ? containerRect.bottom + offsetHeight : triggerRect.top - SPACING;
|
|
559
484
|
translateX = -0.5;
|
|
560
485
|
translateY = -1;
|
|
561
486
|
break;
|
|
562
|
-
|
|
563
487
|
case 'topLeft':
|
|
564
488
|
// left = pointAtCenter ? middleX - offsetXWithArrow : triggerRect.left;
|
|
565
489
|
// top = triggerRect.top - SPACING;
|
|
566
|
-
left = isWidthOverFlow ? containerRect.left : pointAtCenter ? middleX - offsetXWithArrow : triggerRect.left;
|
|
490
|
+
left = isWidthOverFlow ? isWrapperWidthOverflow ? containerRect.left : containerRect.right - wrapperRect.width : pointAtCenter ? middleX - offsetXWithArrow + ANO_SPACING : triggerRect.left + ANO_SPACING;
|
|
567
491
|
top = isHeightOverFlow ? containerRect.bottom + offsetHeight : triggerRect.top - SPACING;
|
|
568
492
|
translateY = -1;
|
|
569
493
|
break;
|
|
570
|
-
|
|
571
494
|
case 'topRight':
|
|
572
495
|
// left = pointAtCenter ? middleX + offsetXWithArrow : triggerRect.right;
|
|
573
496
|
// top = triggerRect.top - SPACING;
|
|
574
|
-
left = isWidthOverFlow ? containerRect.right + offsetWidth : pointAtCenter ? middleX + offsetXWithArrow : triggerRect.right;
|
|
497
|
+
left = isWidthOverFlow ? containerRect.right + offsetWidth : pointAtCenter ? middleX + offsetXWithArrow + ANO_SPACING : triggerRect.right + ANO_SPACING;
|
|
575
498
|
top = isHeightOverFlow ? containerRect.bottom + offsetHeight : triggerRect.top - SPACING;
|
|
576
499
|
translateY = -1;
|
|
577
500
|
translateX = -1;
|
|
578
501
|
break;
|
|
579
|
-
|
|
580
502
|
case 'left':
|
|
581
503
|
// left = triggerRect.left - SPACING;
|
|
582
504
|
// top = middleY;
|
|
583
505
|
// left = isWidthOverFlow? containerRect.right - SPACING : triggerRect.left - SPACING;
|
|
584
506
|
left = isWidthOverFlow ? containerRect.right + offsetWidth - SPACING + offsetXWithArrow : triggerRect.left - SPACING;
|
|
585
|
-
top = isHeightOverFlow ? isTriggerNearTop ? containerRect.top + wrapperRect.height / 2 : containerRect.bottom - wrapperRect.height / 2 + offsetHeight : middleY;
|
|
507
|
+
top = isHeightOverFlow ? isTriggerNearTop ? containerRect.top + wrapperRect.height / 2 : containerRect.bottom - wrapperRect.height / 2 + offsetHeight : middleY + ANO_SPACING;
|
|
586
508
|
translateX = -1;
|
|
587
509
|
translateY = -0.5;
|
|
588
510
|
break;
|
|
589
|
-
|
|
590
511
|
case 'leftTop':
|
|
591
512
|
// left = triggerRect.left - SPACING;
|
|
592
513
|
// top = pointAtCenter ? middleY - offsetYWithArrow : triggerRect.top;
|
|
593
514
|
left = isWidthOverFlow ? containerRect.right + offsetWidth - SPACING + offsetXWithArrow : triggerRect.left - SPACING;
|
|
594
|
-
top = isHeightOverFlow ? containerRect.top : pointAtCenter ? middleY - offsetYWithArrow : triggerRect.top;
|
|
515
|
+
top = isHeightOverFlow ? containerRect.top : pointAtCenter ? middleY - offsetYWithArrow + ANO_SPACING : triggerRect.top + ANO_SPACING;
|
|
595
516
|
translateX = -1;
|
|
596
517
|
break;
|
|
597
|
-
|
|
598
518
|
case 'leftBottom':
|
|
599
519
|
// left = triggerRect.left - SPACING;
|
|
600
520
|
// top = pointAtCenter ? middleY + offsetYWithArrow : triggerRect.bottom;
|
|
601
521
|
left = isWidthOverFlow ? containerRect.right + offsetWidth - SPACING + offsetXWithArrow : triggerRect.left - SPACING;
|
|
602
|
-
top = isHeightOverFlow ? containerRect.bottom + offsetHeight : pointAtCenter ? middleY + offsetYWithArrow : triggerRect.bottom;
|
|
522
|
+
top = isHeightOverFlow ? containerRect.bottom + offsetHeight : pointAtCenter ? middleY + offsetYWithArrow + ANO_SPACING : triggerRect.bottom + ANO_SPACING;
|
|
603
523
|
translateX = -1;
|
|
604
524
|
translateY = -1;
|
|
605
525
|
break;
|
|
606
|
-
|
|
607
526
|
case 'bottom':
|
|
608
527
|
// left = middleX;
|
|
609
528
|
// top = triggerRect.top + triggerRect.height + SPACING;
|
|
610
|
-
left = isWidthOverFlow ? isTriggerNearLeft ? containerRect.left + wrapperRect.width / 2 : containerRect.right - wrapperRect.width / 2 + offsetWidth : middleX;
|
|
529
|
+
left = isWidthOverFlow ? isTriggerNearLeft ? containerRect.left + wrapperRect.width / 2 : containerRect.right - wrapperRect.width / 2 + offsetWidth : middleX + ANO_SPACING;
|
|
611
530
|
top = isHeightOverFlow ? containerRect.top + offsetYWithArrow - SPACING : triggerRect.top + triggerRect.height + SPACING;
|
|
612
531
|
translateX = -0.5;
|
|
613
532
|
break;
|
|
614
|
-
|
|
615
533
|
case 'bottomLeft':
|
|
616
534
|
// left = pointAtCenter ? middleX - offsetXWithArrow : triggerRect.left;
|
|
617
535
|
// top = triggerRect.bottom + SPACING;
|
|
618
|
-
left = isWidthOverFlow ? containerRect.left : pointAtCenter ? middleX - offsetXWithArrow : triggerRect.left;
|
|
536
|
+
left = isWidthOverFlow ? isWrapperWidthOverflow ? containerRect.left : containerRect.right - wrapperRect.width : pointAtCenter ? middleX - offsetXWithArrow + ANO_SPACING : triggerRect.left + ANO_SPACING;
|
|
619
537
|
top = isHeightOverFlow ? containerRect.top + offsetYWithArrow - SPACING : triggerRect.top + triggerRect.height + SPACING;
|
|
620
538
|
break;
|
|
621
|
-
|
|
622
539
|
case 'bottomRight':
|
|
623
540
|
// left = pointAtCenter ? middleX + offsetXWithArrow : triggerRect.right;
|
|
624
541
|
// top = triggerRect.bottom + SPACING;
|
|
625
|
-
left = isWidthOverFlow ? containerRect.right + offsetWidth : pointAtCenter ? middleX + offsetXWithArrow : triggerRect.right;
|
|
542
|
+
left = isWidthOverFlow ? containerRect.right + offsetWidth : pointAtCenter ? middleX + offsetXWithArrow + ANO_SPACING : triggerRect.right + ANO_SPACING;
|
|
626
543
|
top = isHeightOverFlow ? containerRect.top + offsetYWithArrow - SPACING : triggerRect.top + triggerRect.height + SPACING;
|
|
627
544
|
translateX = -1;
|
|
628
545
|
break;
|
|
629
|
-
|
|
630
546
|
case 'right':
|
|
631
547
|
// left = triggerRect.right + SPACING;
|
|
632
548
|
// top = middleY;
|
|
633
549
|
left = isWidthOverFlow ? containerRect.left - SPACING + offsetXWithArrow : triggerRect.right + SPACING;
|
|
634
|
-
top = isHeightOverFlow ? isTriggerNearTop ? containerRect.top + wrapperRect.height / 2 : containerRect.bottom - wrapperRect.height / 2 + offsetHeight : middleY;
|
|
550
|
+
top = isHeightOverFlow ? isTriggerNearTop ? containerRect.top + wrapperRect.height / 2 : containerRect.bottom - wrapperRect.height / 2 + offsetHeight : middleY + ANO_SPACING;
|
|
635
551
|
translateY = -0.5;
|
|
636
552
|
break;
|
|
637
|
-
|
|
638
553
|
case 'rightTop':
|
|
639
554
|
// left = triggerRect.right + SPACING;
|
|
640
555
|
// top = pointAtCenter ? middleY - offsetYWithArrow : triggerRect.top;
|
|
641
556
|
left = isWidthOverFlow ? containerRect.left - SPACING + offsetXWithArrow : triggerRect.right + SPACING;
|
|
642
|
-
top = isHeightOverFlow ? containerRect.top : pointAtCenter ? middleY - offsetYWithArrow : triggerRect.top;
|
|
557
|
+
top = isHeightOverFlow ? containerRect.top : pointAtCenter ? middleY - offsetYWithArrow + ANO_SPACING : triggerRect.top + ANO_SPACING;
|
|
643
558
|
break;
|
|
644
|
-
|
|
645
559
|
case 'rightBottom':
|
|
646
560
|
// left = triggerRect.right + SPACING;
|
|
647
561
|
// top = pointAtCenter ? middleY + offsetYWithArrow : triggerRect.bottom;
|
|
648
562
|
left = isWidthOverFlow ? containerRect.left - SPACING + offsetXWithArrow : triggerRect.right + SPACING;
|
|
649
|
-
top = isHeightOverFlow ? containerRect.bottom + offsetHeight : pointAtCenter ? middleY + offsetYWithArrow : triggerRect.bottom;
|
|
563
|
+
top = isHeightOverFlow ? containerRect.bottom + offsetHeight : pointAtCenter ? middleY + offsetYWithArrow + ANO_SPACING : triggerRect.bottom + ANO_SPACING;
|
|
650
564
|
translateY = -1;
|
|
651
565
|
break;
|
|
652
|
-
|
|
653
566
|
case 'leftTopOver':
|
|
654
567
|
left = triggerRect.left - SPACING;
|
|
655
568
|
top = triggerRect.top - SPACING;
|
|
656
569
|
break;
|
|
657
|
-
|
|
658
570
|
case 'rightTopOver':
|
|
659
571
|
left = triggerRect.right + SPACING;
|
|
660
572
|
top = triggerRect.top - SPACING;
|
|
661
573
|
translateX = -1;
|
|
662
574
|
break;
|
|
663
|
-
|
|
664
575
|
case 'leftBottomOver':
|
|
665
576
|
left = triggerRect.left - SPACING;
|
|
666
577
|
top = triggerRect.bottom + SPACING;
|
|
667
578
|
translateY = -1;
|
|
668
579
|
break;
|
|
669
|
-
|
|
670
580
|
case 'rightBottomOver':
|
|
671
581
|
left = triggerRect.right + SPACING;
|
|
672
582
|
top = triggerRect.bottom + SPACING;
|
|
673
583
|
translateX = -1;
|
|
674
584
|
translateY = -1;
|
|
675
585
|
break;
|
|
676
|
-
|
|
677
586
|
default:
|
|
678
587
|
break;
|
|
679
588
|
}
|
|
680
|
-
|
|
681
589
|
const transformOrigin = this.calcTransformOrigin(position, triggerRect, translateX, translateY); // Transform origin
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
590
|
+
const _containerIsBody = this._adapter.containerIsBody();
|
|
591
|
+
// Calculate container positioning relative to window
|
|
686
592
|
left = left - containerRect.left;
|
|
687
593
|
top = top - containerRect.top;
|
|
594
|
+
if (scaled) {
|
|
595
|
+
left /= wrapperRect.width / this._adapter.getContainer().clientWidth;
|
|
596
|
+
}
|
|
597
|
+
if (scaled) {
|
|
598
|
+
top /= wrapperRect.height / this._adapter.getContainer().clientHeight;
|
|
599
|
+
}
|
|
688
600
|
/**
|
|
689
601
|
* container为body时,如果position不为relative或absolute,这时trigger计算出的top/left会根据html定位(initial containing block)
|
|
690
602
|
* 此时如果body有margin,则计算出的位置相对于body会有问题 fix issue #1368
|
|
@@ -692,106 +604,85 @@ export default class Tooltip extends BaseFoundation {
|
|
|
692
604
|
* When container is body, if position is not relative or absolute, then the top/left calculated by trigger will be positioned according to html
|
|
693
605
|
* At this time, if the body has a margin, the calculated position will have a problem relative to the body fix issue #1368
|
|
694
606
|
*/
|
|
695
|
-
|
|
696
607
|
if (_containerIsBody && !this._adapter.containerIsRelativeOrAbsolute()) {
|
|
697
|
-
const documentEleRect = this._adapter.getDocumentElementBounding();
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
608
|
+
const documentEleRect = this._adapter.getDocumentElementBounding();
|
|
609
|
+
// Represents the left of the body relative to html
|
|
610
|
+
left += containerRect.left - documentEleRect.left;
|
|
611
|
+
// Represents the top of the body relative to html
|
|
702
612
|
top += containerRect.top - documentEleRect.top;
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
|
|
613
|
+
}
|
|
614
|
+
// ContainerRect.scrollLeft to solve the inner scrolling of the container
|
|
706
615
|
left = _containerIsBody ? left : left + containerRect.scrollLeft;
|
|
707
616
|
top = _containerIsBody ? top : top + containerRect.scrollTop;
|
|
708
617
|
const triggerHeight = triggerRect.height;
|
|
709
|
-
|
|
710
618
|
if (this.getProp('showArrow') && !arrowPointAtCenter && triggerHeight <= (verticalArrowHeight / 2 + arrowOffsetY) * 2) {
|
|
711
619
|
const offsetY = triggerHeight / 2 - (arrowOffsetY + verticalArrowHeight / 2);
|
|
712
|
-
|
|
713
620
|
if ((position.includes('Top') || position.includes('Bottom')) && !position.includes('Over')) {
|
|
714
621
|
top = position.includes('Top') ? top + offsetY : top - offsetY;
|
|
715
622
|
}
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
|
|
623
|
+
}
|
|
624
|
+
// The left/top value here must be rounded, otherwise it will cause the small triangle to shake
|
|
719
625
|
const style = {
|
|
720
626
|
left: this._roundPixel(left),
|
|
721
627
|
top: this._roundPixel(top)
|
|
722
628
|
};
|
|
723
|
-
let transform = '';
|
|
724
|
-
|
|
629
|
+
let transform = '';
|
|
725
630
|
if (translateX != null) {
|
|
726
|
-
transform +=
|
|
631
|
+
transform += `translateX(${translateX * 100}%) `;
|
|
727
632
|
Object.defineProperty(style, 'translateX', {
|
|
728
633
|
enumerable: false,
|
|
729
634
|
value: translateX
|
|
730
635
|
});
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
|
|
636
|
+
}
|
|
734
637
|
if (translateY != null) {
|
|
735
|
-
transform +=
|
|
638
|
+
transform += `translateY(${translateY * 100}%) `;
|
|
736
639
|
Object.defineProperty(style, 'translateY', {
|
|
737
640
|
enumerable: false,
|
|
738
641
|
value: translateY
|
|
739
642
|
});
|
|
740
|
-
}
|
|
741
|
-
|
|
742
|
-
|
|
643
|
+
}
|
|
743
644
|
if (transformOrigin != null) {
|
|
744
645
|
style.transformOrigin = transformOrigin;
|
|
745
646
|
}
|
|
746
|
-
|
|
747
647
|
if (transform) {
|
|
748
648
|
style.transform = transform;
|
|
749
649
|
}
|
|
750
|
-
|
|
751
650
|
return style;
|
|
752
651
|
}
|
|
753
|
-
|
|
754
652
|
isLR() {
|
|
755
653
|
let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
756
654
|
return position.includes('left') || position.includes('right');
|
|
757
655
|
}
|
|
758
|
-
|
|
759
656
|
isTB() {
|
|
760
657
|
let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
761
658
|
return position.includes('top') || position.includes('bottom');
|
|
762
659
|
}
|
|
763
|
-
|
|
764
660
|
isReverse(rowSpace, reverseSpace, size) {
|
|
765
661
|
// 原空间不足,反向空间足够
|
|
766
662
|
// Insufficient original space, enough reverse space
|
|
767
663
|
return rowSpace < size && reverseSpace > size;
|
|
768
664
|
}
|
|
769
|
-
|
|
770
665
|
isOverFlow(rowSpace, reverseSpace, size) {
|
|
771
666
|
// 原空间且反向空间都不足
|
|
772
667
|
// The original space and the reverse space are not enough
|
|
773
668
|
return rowSpace < size && reverseSpace < size;
|
|
774
669
|
}
|
|
775
|
-
|
|
776
670
|
isHalfOverFlow(posSpace, negSpace, size) {
|
|
777
671
|
// 正半空间或者负半空间不足,即表示有遮挡,需要偏移
|
|
778
672
|
// Insufficient positive half space or negative half space means that there is occlusion and needs to be offset
|
|
779
673
|
return posSpace < size || negSpace < size;
|
|
780
674
|
}
|
|
781
|
-
|
|
782
675
|
isHalfAllEnough(posSpace, negSpace, size) {
|
|
783
676
|
// 正半空间和负半空间都足够,即表示可以从 topLeft/topRight 变成 top
|
|
784
677
|
// Both positive and negative half-spaces are sufficient, which means you can change from topLeft/topRight to top
|
|
785
678
|
return posSpace >= size || negSpace >= size;
|
|
786
679
|
}
|
|
787
|
-
|
|
788
680
|
getReverse(viewOverFlow, containerOverFlow, shouldReverseView, shouldReverseContainer) {
|
|
789
681
|
/**
|
|
790
682
|
* 基于视口和容器一起判断,以下几种情况允许从原方向转到反方向,以判断是否应该由top->bottom为例子
|
|
791
683
|
*
|
|
792
684
|
* 1. 视口上下空间不足 且 容器上空间❌下空间✅
|
|
793
|
-
* 2. 视口上空间❌下空间✅
|
|
794
|
-
* 3. 视口上空间❌下空间✅ 且 容器上空间❌下空间✅
|
|
685
|
+
* 2. 视口上空间❌下空间✅
|
|
795
686
|
*
|
|
796
687
|
* Based on the judgment of the viewport and the container, the following situations are allowed to turn from the original direction to the opposite direction
|
|
797
688
|
* to judge whether it should be top->bottom as an example
|
|
@@ -799,17 +690,15 @@ export default class Tooltip extends BaseFoundation {
|
|
|
799
690
|
* 2. The space above the viewport ❌ the space below ✅ and the space above and below the container is insufficient
|
|
800
691
|
* 3. Viewport upper space ❌ lower space✅ and container upper space ❌ lower space✅
|
|
801
692
|
*/
|
|
802
|
-
return viewOverFlow && shouldReverseContainer || shouldReverseView
|
|
803
|
-
}
|
|
804
|
-
|
|
805
|
-
|
|
693
|
+
return viewOverFlow && shouldReverseContainer || shouldReverseView;
|
|
694
|
+
}
|
|
695
|
+
// place the dom correctly
|
|
806
696
|
adjustPosIfNeed(position, style, triggerRect, wrapperRect, containerRect) {
|
|
807
697
|
const {
|
|
808
698
|
innerWidth,
|
|
809
699
|
innerHeight
|
|
810
700
|
} = window;
|
|
811
701
|
const {
|
|
812
|
-
spacing,
|
|
813
702
|
margin
|
|
814
703
|
} = this.getProps();
|
|
815
704
|
const marginLeft = typeof margin === 'number' ? margin : margin.marginLeft;
|
|
@@ -818,7 +707,15 @@ export default class Tooltip extends BaseFoundation {
|
|
|
818
707
|
const marginBottom = typeof margin === 'number' ? margin : margin.marginBottom;
|
|
819
708
|
let isHeightOverFlow = false;
|
|
820
709
|
let isWidthOverFlow = false;
|
|
821
|
-
|
|
710
|
+
const raw_spacing = this.getProp('spacing');
|
|
711
|
+
let spacing = raw_spacing;
|
|
712
|
+
let ano_spacing = 0;
|
|
713
|
+
if (typeof raw_spacing !== 'number') {
|
|
714
|
+
// extended spacing api with {x: number, y: number}, the axes of the spacing is determined based on the position
|
|
715
|
+
const isTopOrBottom = position.includes('top') || position.includes('bottom');
|
|
716
|
+
spacing = isTopOrBottom ? raw_spacing.y : raw_spacing.x;
|
|
717
|
+
ano_spacing = isTopOrBottom ? raw_spacing.x : raw_spacing.y;
|
|
718
|
+
}
|
|
822
719
|
if (wrapperRect.width > 0 && wrapperRect.height > 0) {
|
|
823
720
|
// let clientLeft = left + translateX * wrapperRect.width - containerRect.scrollLeft;
|
|
824
721
|
// let clientTop = top + translateY * wrapperRect.height - containerRect.scrollTop;
|
|
@@ -839,26 +736,26 @@ export default class Tooltip extends BaseFoundation {
|
|
|
839
736
|
const restClientRight = innerWidth - clientRight;
|
|
840
737
|
const restClientBottom = innerHeight - clientBottom;
|
|
841
738
|
const widthIsBigger = wrapperRect.width > triggerRect.width;
|
|
842
|
-
const heightIsBigger = wrapperRect.height > triggerRect.height;
|
|
739
|
+
const heightIsBigger = wrapperRect.height > triggerRect.height;
|
|
740
|
+
// The wrapperR ect.top|bottom equivalent cannot be directly used here for comparison, which is easy to cause jitter
|
|
843
741
|
// 基于视口的微调判断
|
|
844
742
|
// Fine-tuning judgment based on viewport
|
|
845
|
-
|
|
846
743
|
const shouldViewReverseTop = clientTop - marginTop < wrapperRect.height + spacing && restClientBottom - marginBottom > wrapperRect.height + spacing;
|
|
847
744
|
const shouldViewReverseLeft = clientLeft - marginLeft < wrapperRect.width + spacing && restClientRight - marginRight > wrapperRect.width + spacing;
|
|
848
745
|
const shouldViewReverseBottom = restClientBottom - marginBottom < wrapperRect.height + spacing && clientTop - marginTop > wrapperRect.height + spacing;
|
|
849
746
|
const shouldViewReverseRight = restClientRight - marginRight < wrapperRect.width + spacing && clientLeft - marginLeft > wrapperRect.width + spacing;
|
|
850
747
|
const shouldViewReverseTopOver = restClientTop - marginBottom < wrapperRect.height + spacing && clientBottom - marginTop > wrapperRect.height + spacing;
|
|
851
748
|
const shouldViewReverseBottomOver = clientBottom - marginTop < wrapperRect.height + spacing && restClientTop - marginBottom > wrapperRect.height + spacing;
|
|
852
|
-
const shouldViewReverseTopSide = restClientTop < wrapperRect.height && clientBottom > wrapperRect.height;
|
|
853
|
-
const shouldViewReverseBottomSide = clientBottom < wrapperRect.height && restClientTop > wrapperRect.height;
|
|
854
|
-
const shouldViewReverseLeftSide = restClientLeft < wrapperRect.width && clientRight > wrapperRect.width;
|
|
855
|
-
const shouldViewReverseRightSide = clientRight < wrapperRect.width && restClientLeft > wrapperRect.width;
|
|
749
|
+
const shouldViewReverseTopSide = restClientTop < wrapperRect.height + ano_spacing && clientBottom > wrapperRect.height + ano_spacing;
|
|
750
|
+
const shouldViewReverseBottomSide = clientBottom < wrapperRect.height + ano_spacing && restClientTop > wrapperRect.height + ano_spacing;
|
|
751
|
+
const shouldViewReverseLeftSide = restClientLeft < wrapperRect.width + ano_spacing && clientRight > wrapperRect.width + ano_spacing;
|
|
752
|
+
const shouldViewReverseRightSide = clientRight < wrapperRect.width + ano_spacing && restClientLeft > wrapperRect.width + ano_spacing;
|
|
856
753
|
const shouldReverseTopOver = restClientTop < wrapperRect.height + spacing && clientBottom > wrapperRect.height + spacing;
|
|
857
754
|
const shouldReverseBottomOver = clientBottom < wrapperRect.height + spacing && restClientTop > wrapperRect.height + spacing;
|
|
858
755
|
const shouldReverseLeftOver = restClientLeft < wrapperRect.width && clientRight > wrapperRect.width;
|
|
859
|
-
const shouldReverseRightOver = clientRight < wrapperRect.width && restClientLeft > wrapperRect.width;
|
|
756
|
+
const shouldReverseRightOver = clientRight < wrapperRect.width && restClientLeft > wrapperRect.width;
|
|
757
|
+
// 基于容器的微调判断
|
|
860
758
|
// Fine-tuning judgment based on container
|
|
861
|
-
|
|
862
759
|
const clientTopInContainer = clientTop - containerRect.top;
|
|
863
760
|
const clientLeftInContainer = clientLeft - containerRect.left;
|
|
864
761
|
const clientBottomInContainer = clientTopInContainer + triggerRect.height;
|
|
@@ -866,288 +763,229 @@ export default class Tooltip extends BaseFoundation {
|
|
|
866
763
|
const restClientBottomInContainer = containerRect.bottom - clientBottom;
|
|
867
764
|
const restClientRightInContainer = containerRect.right - clientRight;
|
|
868
765
|
const restClientTopInContainer = restClientBottomInContainer + triggerRect.height;
|
|
869
|
-
const restClientLeftInContainer = restClientRightInContainer + triggerRect.width;
|
|
766
|
+
const restClientLeftInContainer = restClientRightInContainer + triggerRect.width;
|
|
767
|
+
// 当原空间不足,反向空间足够时,可以反向。
|
|
870
768
|
// When the original space is insufficient and the reverse space is sufficient, the reverse can be performed.
|
|
871
|
-
|
|
872
769
|
const shouldContainerReverseTop = this.isReverse(clientTopInContainer - marginTop, restClientBottomInContainer - marginBottom, wrapperRect.height + spacing);
|
|
873
770
|
const shouldContainerReverseLeft = this.isReverse(clientLeftInContainer - marginLeft, restClientRightInContainer - marginRight, wrapperRect.width + spacing);
|
|
874
771
|
const shouldContainerReverseBottom = this.isReverse(restClientBottomInContainer - marginBottom, clientTopInContainer - marginTop, wrapperRect.height + spacing);
|
|
875
772
|
const shouldContainerReverseRight = this.isReverse(restClientRightInContainer - marginRight, clientLeftInContainer - marginLeft, wrapperRect.width + spacing);
|
|
876
773
|
const shouldContainerReverseTopOver = this.isReverse(restClientTopInContainer - marginBottom, clientBottomInContainer - marginTop, wrapperRect.height + spacing);
|
|
877
774
|
const shouldContainerReverseBottomOver = this.isReverse(clientBottomInContainer - marginTop, restClientTopInContainer - marginBottom, wrapperRect.height + spacing);
|
|
878
|
-
const shouldContainerReverseTopSide = this.isReverse(restClientTopInContainer, clientBottomInContainer, wrapperRect.height);
|
|
879
|
-
const shouldContainerReverseBottomSide = this.isReverse(clientBottomInContainer, restClientTopInContainer, wrapperRect.height);
|
|
880
|
-
const shouldContainerReverseLeftSide = this.isReverse(restClientLeftInContainer, clientRightInContainer, wrapperRect.width);
|
|
881
|
-
const shouldContainerReverseRightSide = this.isReverse(clientRightInContainer, restClientLeftInContainer, wrapperRect.width);
|
|
775
|
+
const shouldContainerReverseTopSide = this.isReverse(restClientTopInContainer, clientBottomInContainer, wrapperRect.height + ano_spacing);
|
|
776
|
+
const shouldContainerReverseBottomSide = this.isReverse(clientBottomInContainer, restClientTopInContainer, wrapperRect.height + ano_spacing);
|
|
777
|
+
const shouldContainerReverseLeftSide = this.isReverse(restClientLeftInContainer, clientRightInContainer, wrapperRect.width + ano_spacing);
|
|
778
|
+
const shouldContainerReverseRightSide = this.isReverse(clientRightInContainer, restClientLeftInContainer, wrapperRect.width + ano_spacing);
|
|
882
779
|
const halfHeight = triggerRect.height / 2;
|
|
883
|
-
const halfWidth = triggerRect.width / 2;
|
|
780
|
+
const halfWidth = triggerRect.width / 2;
|
|
781
|
+
// 视口, 原空间与反向空间是否都不足判断
|
|
884
782
|
// Viewport, whether the original space and the reverse space are insufficient to judge
|
|
885
|
-
|
|
886
783
|
const isViewYOverFlow = this.isOverFlow(clientTop - marginTop, restClientBottom - marginBottom, wrapperRect.height + spacing);
|
|
887
784
|
const isViewXOverFlow = this.isOverFlow(clientLeft - marginLeft, restClientRight - marginRight, wrapperRect.width + spacing);
|
|
888
785
|
const isViewYOverFlowSide = this.isOverFlow(clientBottom - marginTop, restClientTop - marginBottom, wrapperRect.height + spacing);
|
|
889
786
|
const isViewXOverFlowSide = this.isOverFlow(clientRight - marginLeft, restClientLeft - marginRight, wrapperRect.width + spacing);
|
|
890
|
-
const isViewYOverFlowSideHalf = this.isHalfOverFlow(clientBottom - halfHeight, restClientTop - halfHeight, wrapperRect.height / 2);
|
|
891
|
-
const isViewXOverFlowSideHalf = this.isHalfOverFlow(clientRight - halfWidth, restClientLeft - halfWidth, wrapperRect.width / 2);
|
|
892
|
-
const isViewYEnoughSideHalf = this.isHalfAllEnough(clientBottom - halfHeight, restClientTop - halfHeight, wrapperRect.height / 2);
|
|
893
|
-
const isViewXEnoughSideHalf = this.isHalfAllEnough(clientRight - halfWidth, restClientLeft - halfWidth, wrapperRect.width / 2);
|
|
787
|
+
const isViewYOverFlowSideHalf = this.isHalfOverFlow(clientBottom - halfHeight, restClientTop - halfHeight, (wrapperRect.height + ano_spacing) / 2);
|
|
788
|
+
const isViewXOverFlowSideHalf = this.isHalfOverFlow(clientRight - halfWidth, restClientLeft - halfWidth, (wrapperRect.width + ano_spacing) / 2);
|
|
789
|
+
const isViewYEnoughSideHalf = this.isHalfAllEnough(clientBottom - halfHeight, restClientTop - halfHeight, (wrapperRect.height + ano_spacing) / 2);
|
|
790
|
+
const isViewXEnoughSideHalf = this.isHalfAllEnough(clientRight - halfWidth, restClientLeft - halfWidth, (wrapperRect.width + ano_spacing) / 2);
|
|
791
|
+
// 容器, 原空间与反向空间是否都不足判断
|
|
894
792
|
// container, whether the original space and the reverse space are insufficient to judge
|
|
895
|
-
|
|
896
793
|
const isContainerYOverFlow = this.isOverFlow(clientTopInContainer - marginTop, restClientBottomInContainer - marginBottom, wrapperRect.height + spacing);
|
|
897
794
|
const isContainerXOverFlow = this.isOverFlow(clientLeftInContainer - marginLeft, restClientRightInContainer - marginRight, wrapperRect.width + spacing);
|
|
898
795
|
const isContainerYOverFlowSide = this.isOverFlow(clientBottomInContainer - marginTop, restClientTopInContainer - marginBottom, wrapperRect.height + spacing);
|
|
899
796
|
const isContainerXOverFlowSide = this.isOverFlow(clientRightInContainer - marginLeft, restClientLeftInContainer - marginRight, wrapperRect.width + spacing);
|
|
900
|
-
const isContainerYOverFlowSideHalf = this.isHalfOverFlow(clientBottomInContainer - halfHeight, restClientTopInContainer - halfHeight, wrapperRect.height / 2);
|
|
901
|
-
const isContainerXOverFlowSideHalf = this.isHalfOverFlow(clientRightInContainer - halfWidth, restClientLeftInContainer - halfWidth, wrapperRect.width / 2);
|
|
902
|
-
const isContainerYEnoughSideHalf = this.isHalfAllEnough(clientBottomInContainer - halfHeight, restClientTopInContainer - halfHeight, wrapperRect.height / 2);
|
|
903
|
-
const isContainerXEnoughSideHalf = this.isHalfAllEnough(clientRightInContainer - halfWidth, restClientLeftInContainer - halfWidth, wrapperRect.width / 2);
|
|
797
|
+
const isContainerYOverFlowSideHalf = this.isHalfOverFlow(clientBottomInContainer - halfHeight, restClientTopInContainer - halfHeight, (wrapperRect.height + ano_spacing) / 2);
|
|
798
|
+
const isContainerXOverFlowSideHalf = this.isHalfOverFlow(clientRightInContainer - halfWidth, restClientLeftInContainer - halfWidth, (wrapperRect.width + ano_spacing) / 2);
|
|
799
|
+
const isContainerYEnoughSideHalf = this.isHalfAllEnough(clientBottomInContainer - halfHeight, restClientTopInContainer - halfHeight, (wrapperRect.height + ano_spacing) / 2);
|
|
800
|
+
const isContainerXEnoughSideHalf = this.isHalfAllEnough(clientRightInContainer - halfWidth, restClientLeftInContainer - halfWidth, (wrapperRect.width + ano_spacing) / 2);
|
|
801
|
+
// 综合 viewport + container 判断微调,即视口 + 容器都放置不行时才能考虑位置调整
|
|
904
802
|
// Comprehensive viewport + container judgment fine-tuning, that is, the position adjustment can only be considered when the viewport + container cannot be placed.
|
|
905
|
-
|
|
906
803
|
const shouldReverseTop = this.getReverse(isViewYOverFlow, isContainerYOverFlow, shouldViewReverseTop, shouldContainerReverseTop);
|
|
907
804
|
const shouldReverseLeft = this.getReverse(isViewXOverFlow, isContainerXOverFlow, shouldViewReverseLeft, shouldContainerReverseLeft);
|
|
908
805
|
const shouldReverseBottom = this.getReverse(isViewYOverFlow, isContainerYOverFlow, shouldViewReverseBottom, shouldContainerReverseBottom);
|
|
909
|
-
const shouldReverseRight = this.getReverse(isViewXOverFlow, isContainerXOverFlow, shouldViewReverseRight, shouldContainerReverseRight);
|
|
806
|
+
const shouldReverseRight = this.getReverse(isViewXOverFlow, isContainerXOverFlow, shouldViewReverseRight, shouldContainerReverseRight);
|
|
807
|
+
// const shouldReverseTopOver = this.getReverse(isViewYOverFlowSide, isContainerYOverFlowSide, shouldViewReverseTopOver, shouldContainerReverseTopOver);
|
|
910
808
|
// const shouldReverseBottomOver = this.getReverse(isViewYOverFlowSide, isContainerYOverFlowSide, shouldViewReverseBottomOver, shouldContainerReverseBottomOver);
|
|
911
|
-
|
|
912
809
|
const shouldReverseTopSide = this.getReverse(isViewYOverFlowSide, isContainerYOverFlowSide, shouldViewReverseTopSide, shouldContainerReverseTopSide);
|
|
913
810
|
const shouldReverseBottomSide = this.getReverse(isViewYOverFlowSide, isContainerYOverFlowSide, shouldViewReverseBottomSide, shouldContainerReverseBottomSide);
|
|
914
811
|
const shouldReverseLeftSide = this.getReverse(isViewXOverFlowSide, isContainerXOverFlowSide, shouldViewReverseLeftSide, shouldContainerReverseLeftSide);
|
|
915
812
|
const shouldReverseRightSide = this.getReverse(isViewXOverFlowSide, isContainerXOverFlowSide, shouldViewReverseRightSide, shouldContainerReverseRightSide);
|
|
916
813
|
const isYOverFlowSideHalf = isViewYOverFlowSideHalf && isContainerYOverFlowSideHalf;
|
|
917
814
|
const isXOverFlowSideHalf = isViewXOverFlowSideHalf && isContainerXOverFlowSideHalf;
|
|
918
|
-
|
|
919
815
|
switch (position) {
|
|
920
816
|
case 'top':
|
|
921
817
|
if (shouldReverseTop) {
|
|
922
818
|
position = this._adjustPos(position, true);
|
|
923
819
|
}
|
|
924
|
-
|
|
925
820
|
if (isXOverFlowSideHalf && (shouldReverseLeftSide || shouldReverseRightSide)) {
|
|
926
821
|
position = this._adjustPos(position, true, 'expand', shouldReverseLeftSide ? 'Right' : 'Left');
|
|
927
822
|
}
|
|
928
|
-
|
|
929
823
|
break;
|
|
930
|
-
|
|
931
824
|
case 'topLeft':
|
|
932
825
|
if (shouldReverseTop) {
|
|
933
826
|
position = this._adjustPos(position, true);
|
|
934
827
|
}
|
|
935
|
-
|
|
936
828
|
if (shouldReverseLeftSide && widthIsBigger) {
|
|
937
|
-
position = this._adjustPos(position
|
|
829
|
+
position = this._adjustPos(position);
|
|
938
830
|
}
|
|
939
|
-
|
|
940
831
|
if (isWidthOverFlow && (isViewXEnoughSideHalf || isContainerXEnoughSideHalf)) {
|
|
941
832
|
position = this._adjustPos(position, true, 'reduce');
|
|
942
833
|
}
|
|
943
|
-
|
|
944
834
|
break;
|
|
945
|
-
|
|
946
835
|
case 'topRight':
|
|
947
836
|
if (shouldReverseTop) {
|
|
948
837
|
position = this._adjustPos(position, true);
|
|
949
838
|
}
|
|
950
|
-
|
|
951
839
|
if (shouldReverseRightSide && widthIsBigger) {
|
|
952
840
|
position = this._adjustPos(position);
|
|
953
841
|
}
|
|
954
|
-
|
|
955
842
|
if (isWidthOverFlow && (isViewXEnoughSideHalf || isContainerXEnoughSideHalf)) {
|
|
956
843
|
position = this._adjustPos(position, true, 'reduce');
|
|
957
844
|
}
|
|
958
|
-
|
|
959
845
|
break;
|
|
960
|
-
|
|
961
846
|
case 'left':
|
|
962
847
|
if (shouldReverseLeft) {
|
|
963
848
|
position = this._adjustPos(position);
|
|
964
849
|
}
|
|
965
|
-
|
|
966
850
|
if (isYOverFlowSideHalf && (shouldReverseTopSide || shouldReverseBottomSide)) {
|
|
967
851
|
position = this._adjustPos(position, false, 'expand', shouldReverseTopSide ? 'Bottom' : 'Top');
|
|
968
852
|
}
|
|
969
|
-
|
|
970
853
|
break;
|
|
971
|
-
|
|
972
854
|
case 'leftTop':
|
|
973
855
|
if (shouldReverseLeft) {
|
|
974
856
|
position = this._adjustPos(position);
|
|
975
857
|
}
|
|
976
|
-
|
|
977
858
|
if (shouldReverseTopSide && heightIsBigger) {
|
|
978
859
|
position = this._adjustPos(position, true);
|
|
979
860
|
}
|
|
980
|
-
|
|
981
861
|
if (isHeightOverFlow && (isViewYEnoughSideHalf || isContainerYEnoughSideHalf)) {
|
|
982
862
|
position = this._adjustPos(position, false, 'reduce');
|
|
983
863
|
}
|
|
984
|
-
|
|
985
864
|
break;
|
|
986
|
-
|
|
987
865
|
case 'leftBottom':
|
|
988
866
|
if (shouldReverseLeft) {
|
|
989
867
|
position = this._adjustPos(position);
|
|
990
868
|
}
|
|
991
|
-
|
|
992
869
|
if (shouldReverseBottomSide && heightIsBigger) {
|
|
993
870
|
position = this._adjustPos(position, true);
|
|
994
871
|
}
|
|
995
|
-
|
|
996
872
|
if (isHeightOverFlow && (isViewYEnoughSideHalf || isContainerYEnoughSideHalf)) {
|
|
997
873
|
position = this._adjustPos(position, false, 'reduce');
|
|
998
874
|
}
|
|
999
|
-
|
|
1000
875
|
break;
|
|
1001
|
-
|
|
1002
876
|
case 'bottom':
|
|
1003
877
|
if (shouldReverseBottom) {
|
|
1004
878
|
position = this._adjustPos(position, true);
|
|
1005
879
|
}
|
|
1006
|
-
|
|
1007
880
|
if (isXOverFlowSideHalf && (shouldReverseLeftSide || shouldReverseRightSide)) {
|
|
1008
881
|
position = this._adjustPos(position, true, 'expand', shouldReverseLeftSide ? 'Right' : 'Left');
|
|
1009
882
|
}
|
|
1010
|
-
|
|
1011
883
|
break;
|
|
1012
|
-
|
|
1013
884
|
case 'bottomLeft':
|
|
1014
885
|
if (shouldReverseBottom) {
|
|
1015
886
|
position = this._adjustPos(position, true);
|
|
1016
887
|
}
|
|
1017
|
-
|
|
1018
888
|
if (shouldReverseLeftSide && widthIsBigger) {
|
|
1019
889
|
position = this._adjustPos(position);
|
|
1020
890
|
}
|
|
1021
|
-
|
|
1022
891
|
if (isWidthOverFlow && (isViewXEnoughSideHalf || isContainerXEnoughSideHalf)) {
|
|
1023
892
|
position = this._adjustPos(position, true, 'reduce');
|
|
1024
893
|
}
|
|
1025
|
-
|
|
1026
894
|
break;
|
|
1027
|
-
|
|
1028
895
|
case 'bottomRight':
|
|
1029
896
|
if (shouldReverseBottom) {
|
|
1030
897
|
position = this._adjustPos(position, true);
|
|
1031
898
|
}
|
|
1032
|
-
|
|
1033
899
|
if (shouldReverseRightSide && widthIsBigger) {
|
|
1034
900
|
position = this._adjustPos(position);
|
|
1035
901
|
}
|
|
1036
|
-
|
|
1037
902
|
if (isWidthOverFlow && (isViewXEnoughSideHalf || isContainerXEnoughSideHalf)) {
|
|
1038
903
|
position = this._adjustPos(position, true, 'reduce');
|
|
1039
904
|
}
|
|
1040
|
-
|
|
1041
905
|
break;
|
|
1042
|
-
|
|
1043
906
|
case 'right':
|
|
1044
907
|
if (shouldReverseRight) {
|
|
1045
908
|
position = this._adjustPos(position);
|
|
1046
909
|
}
|
|
1047
|
-
|
|
1048
910
|
if (isYOverFlowSideHalf && (shouldReverseTopSide || shouldReverseBottomSide)) {
|
|
1049
911
|
position = this._adjustPos(position, false, 'expand', shouldReverseTopSide ? 'Bottom' : 'Top');
|
|
1050
912
|
}
|
|
1051
|
-
|
|
1052
913
|
break;
|
|
1053
|
-
|
|
1054
914
|
case 'rightTop':
|
|
1055
915
|
if (shouldReverseRight) {
|
|
1056
916
|
position = this._adjustPos(position);
|
|
1057
917
|
}
|
|
1058
|
-
|
|
1059
918
|
if (shouldReverseTopSide && heightIsBigger) {
|
|
1060
919
|
position = this._adjustPos(position, true);
|
|
1061
920
|
}
|
|
1062
|
-
|
|
1063
921
|
if (isHeightOverFlow && (isViewYEnoughSideHalf || isContainerYEnoughSideHalf)) {
|
|
1064
922
|
position = this._adjustPos(position, false, 'reduce');
|
|
1065
923
|
}
|
|
1066
|
-
|
|
1067
924
|
break;
|
|
1068
|
-
|
|
1069
925
|
case 'rightBottom':
|
|
1070
926
|
if (shouldReverseRight) {
|
|
1071
927
|
position = this._adjustPos(position);
|
|
1072
928
|
}
|
|
1073
|
-
|
|
1074
929
|
if (shouldReverseBottomSide && heightIsBigger) {
|
|
1075
930
|
position = this._adjustPos(position, true);
|
|
1076
931
|
}
|
|
1077
|
-
|
|
1078
932
|
if (isHeightOverFlow && (isViewYEnoughSideHalf || isContainerYEnoughSideHalf)) {
|
|
1079
933
|
position = this._adjustPos(position, false, 'reduce');
|
|
1080
934
|
}
|
|
1081
|
-
|
|
1082
935
|
break;
|
|
1083
|
-
|
|
1084
936
|
case 'leftTopOver':
|
|
1085
937
|
if (shouldReverseTopOver) {
|
|
1086
938
|
position = this._adjustPos(position, true);
|
|
1087
939
|
}
|
|
1088
|
-
|
|
1089
940
|
if (shouldReverseLeftOver) {
|
|
1090
941
|
position = this._adjustPos(position);
|
|
1091
942
|
}
|
|
1092
|
-
|
|
1093
943
|
break;
|
|
1094
|
-
|
|
1095
944
|
case 'leftBottomOver':
|
|
1096
945
|
if (shouldReverseBottomOver) {
|
|
1097
946
|
position = this._adjustPos(position, true);
|
|
1098
947
|
}
|
|
1099
|
-
|
|
1100
948
|
if (shouldReverseLeftOver) {
|
|
1101
949
|
position = this._adjustPos(position);
|
|
1102
950
|
}
|
|
1103
|
-
|
|
1104
951
|
break;
|
|
1105
|
-
|
|
1106
952
|
case 'rightTopOver':
|
|
1107
953
|
if (shouldReverseTopOver) {
|
|
1108
954
|
position = this._adjustPos(position, true);
|
|
1109
955
|
}
|
|
1110
|
-
|
|
1111
956
|
if (shouldReverseRightOver) {
|
|
1112
957
|
position = this._adjustPos(position);
|
|
1113
958
|
}
|
|
1114
|
-
|
|
1115
959
|
break;
|
|
1116
|
-
|
|
1117
960
|
case 'rightBottomOver':
|
|
1118
961
|
if (shouldReverseBottomOver) {
|
|
1119
962
|
position = this._adjustPos(position, true);
|
|
1120
963
|
}
|
|
1121
|
-
|
|
1122
964
|
if (shouldReverseRightOver) {
|
|
1123
965
|
position = this._adjustPos(position);
|
|
1124
966
|
}
|
|
1125
|
-
|
|
1126
967
|
break;
|
|
1127
|
-
|
|
1128
968
|
default:
|
|
1129
969
|
break;
|
|
1130
|
-
}
|
|
970
|
+
}
|
|
971
|
+
// 判断溢出 Judgment overflow
|
|
1131
972
|
// 上下方向 top and bottom
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
973
|
if (this.isTB(position)) {
|
|
1135
|
-
isHeightOverFlow = isViewYOverFlow && isContainerYOverFlow;
|
|
974
|
+
isHeightOverFlow = isViewYOverFlow && isContainerYOverFlow;
|
|
975
|
+
// Related PR: https://github.com/DouyinFE/semi-design/pull/1297
|
|
1136
976
|
// If clientRight or restClientRight less than 0, means that the left and right parts of the trigger are blocked
|
|
1137
977
|
// Then the display of the wrapper will also be affected, make width overflow to offset the wrapper
|
|
1138
|
-
|
|
1139
978
|
if (position === 'top' || position === 'bottom') {
|
|
1140
979
|
isWidthOverFlow = isViewXOverFlowSideHalf && isContainerXOverFlowSideHalf || clientRight < 0 || restClientRight < 0;
|
|
1141
980
|
} else {
|
|
1142
981
|
isWidthOverFlow = isViewXOverFlowSide && isContainerXOverFlowSide || clientRight < 0 || restClientRight < 0;
|
|
1143
982
|
}
|
|
1144
|
-
}
|
|
1145
|
-
|
|
1146
|
-
|
|
983
|
+
}
|
|
984
|
+
// 左右方向 left and right
|
|
1147
985
|
if (this.isLR(position)) {
|
|
1148
|
-
isWidthOverFlow = isViewXOverFlow && isContainerXOverFlow;
|
|
986
|
+
isWidthOverFlow = isViewXOverFlow && isContainerXOverFlow;
|
|
987
|
+
// If clientTop or restClientTop less than 0, means that the top and bottom parts of the trigger are blocked
|
|
1149
988
|
// Then the display of the wrapper will also be affected, make height overflow to offset the wrapper
|
|
1150
|
-
|
|
1151
989
|
if (position === 'left' || position === 'right') {
|
|
1152
990
|
isHeightOverFlow = isViewYOverFlowSideHalf && isContainerYOverFlowSideHalf || clientTop < 0 || restClientTop < 0;
|
|
1153
991
|
} else {
|
|
@@ -1155,55 +993,44 @@ export default class Tooltip extends BaseFoundation {
|
|
|
1155
993
|
}
|
|
1156
994
|
}
|
|
1157
995
|
}
|
|
1158
|
-
|
|
1159
996
|
return {
|
|
1160
997
|
position,
|
|
1161
998
|
isHeightOverFlow,
|
|
1162
999
|
isWidthOverFlow
|
|
1163
1000
|
};
|
|
1164
1001
|
}
|
|
1165
|
-
|
|
1166
1002
|
_bindScrollEvent() {
|
|
1167
|
-
this._adapter.registerScrollHandler(() => this.calcPosition());
|
|
1003
|
+
this._adapter.registerScrollHandler(() => this.calcPosition());
|
|
1004
|
+
// Capture scroll events on the window to determine whether the current scrolling area (e.target) will affect the positioning of the pop-up layer relative to the viewport when scrolling
|
|
1168
1005
|
// (By determining whether the e.target contains the triggerDom of the current tooltip) If so, the pop-up layer will also be affected and needs to be repositioned
|
|
1169
|
-
|
|
1170
1006
|
}
|
|
1171
1007
|
|
|
1172
1008
|
unBindScrollEvent() {
|
|
1173
1009
|
this._adapter.unregisterScrollHandler();
|
|
1174
1010
|
}
|
|
1175
|
-
|
|
1176
1011
|
_initContainerPosition() {
|
|
1177
1012
|
this._adapter.updateContainerPosition();
|
|
1178
1013
|
}
|
|
1179
|
-
|
|
1180
1014
|
_handleTriggerKeydown(event) {
|
|
1181
1015
|
const {
|
|
1182
1016
|
closeOnEsc,
|
|
1183
1017
|
disableArrowKeyDown
|
|
1184
1018
|
} = this.getProps();
|
|
1185
|
-
|
|
1186
1019
|
const container = this._adapter.getContainer();
|
|
1187
|
-
|
|
1188
1020
|
const focusableElements = this._adapter.getFocusableElements(container);
|
|
1189
|
-
|
|
1190
1021
|
const focusableNum = focusableElements.length;
|
|
1191
|
-
|
|
1192
1022
|
switch (event && event.key) {
|
|
1193
1023
|
case "Escape":
|
|
1194
1024
|
handlePrevent(event);
|
|
1195
1025
|
closeOnEsc && this._handleEscKeyDown(event);
|
|
1196
1026
|
break;
|
|
1197
|
-
|
|
1198
1027
|
case "ArrowUp":
|
|
1199
1028
|
// when disableArrowKeyDown is true, disable tooltip's arrow keyboard event action
|
|
1200
1029
|
!disableArrowKeyDown && focusableNum && this._handleTriggerArrowUpKeydown(focusableElements, event);
|
|
1201
1030
|
break;
|
|
1202
|
-
|
|
1203
1031
|
case "ArrowDown":
|
|
1204
1032
|
!disableArrowKeyDown && focusableNum && this._handleTriggerArrowDownKeydown(focusableElements, event);
|
|
1205
1033
|
break;
|
|
1206
|
-
|
|
1207
1034
|
default:
|
|
1208
1035
|
break;
|
|
1209
1036
|
}
|
|
@@ -1217,18 +1044,14 @@ export default class Tooltip extends BaseFoundation {
|
|
|
1217
1044
|
* 如果 trigger 是 focus 或者 hover,则它绑定了 onFocus,这里我们如果重新 focus 的话,popup 会再次打开
|
|
1218
1045
|
* 因此 returnFocusOnClose 只支持 click trigger
|
|
1219
1046
|
*/
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
_focusTrigger() {
|
|
1047
|
+
focusTrigger() {
|
|
1223
1048
|
const {
|
|
1224
1049
|
trigger,
|
|
1225
1050
|
returnFocusOnClose,
|
|
1226
1051
|
preventScroll
|
|
1227
1052
|
} = this.getProps();
|
|
1228
|
-
|
|
1229
1053
|
if (returnFocusOnClose && trigger !== 'custom') {
|
|
1230
1054
|
const triggerNode = this._adapter.getTriggerNode();
|
|
1231
|
-
|
|
1232
1055
|
if (triggerNode && 'focus' in triggerNode) {
|
|
1233
1056
|
triggerNode.focus({
|
|
1234
1057
|
preventScroll
|
|
@@ -1236,32 +1059,24 @@ export default class Tooltip extends BaseFoundation {
|
|
|
1236
1059
|
}
|
|
1237
1060
|
}
|
|
1238
1061
|
}
|
|
1239
|
-
|
|
1240
1062
|
_handleEscKeyDown(event) {
|
|
1241
1063
|
const {
|
|
1242
1064
|
trigger
|
|
1243
1065
|
} = this.getProps();
|
|
1244
|
-
|
|
1245
1066
|
if (trigger !== 'custom') {
|
|
1246
1067
|
// Move the focus into the trigger first and then close the pop-up layer
|
|
1247
1068
|
// to avoid the problem of opening the pop-up layer again when the focus returns to the trigger in the case of hover and focus
|
|
1248
|
-
this.
|
|
1249
|
-
|
|
1069
|
+
this.focusTrigger();
|
|
1250
1070
|
this.hide();
|
|
1251
1071
|
}
|
|
1252
|
-
|
|
1253
1072
|
this._adapter.notifyEscKeydown(event);
|
|
1254
1073
|
}
|
|
1255
|
-
|
|
1256
1074
|
_handleContainerTabKeyDown(focusableElements, event) {
|
|
1257
1075
|
const {
|
|
1258
1076
|
preventScroll
|
|
1259
1077
|
} = this.getProps();
|
|
1260
|
-
|
|
1261
1078
|
const activeElement = this._adapter.getActiveElement();
|
|
1262
|
-
|
|
1263
1079
|
const isLastCurrentFocus = focusableElements[focusableElements.length - 1] === activeElement;
|
|
1264
|
-
|
|
1265
1080
|
if (isLastCurrentFocus) {
|
|
1266
1081
|
focusableElements[0].focus({
|
|
1267
1082
|
preventScroll
|
|
@@ -1274,11 +1089,8 @@ export default class Tooltip extends BaseFoundation {
|
|
|
1274
1089
|
const {
|
|
1275
1090
|
preventScroll
|
|
1276
1091
|
} = this.getProps();
|
|
1277
|
-
|
|
1278
1092
|
const activeElement = this._adapter.getActiveElement();
|
|
1279
|
-
|
|
1280
1093
|
const isFirstCurrentFocus = focusableElements[0] === activeElement;
|
|
1281
|
-
|
|
1282
1094
|
if (isFirstCurrentFocus) {
|
|
1283
1095
|
focusableElements[focusableElements.length - 1].focus({
|
|
1284
1096
|
preventScroll
|
|
@@ -1306,5 +1118,4 @@ export default class Tooltip extends BaseFoundation {
|
|
|
1306
1118
|
});
|
|
1307
1119
|
event.preventDefault(); // prevent browser default scroll behavior
|
|
1308
1120
|
}
|
|
1309
|
-
|
|
1310
1121
|
}
|