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