@douyinfe/semi-foundation 2.36.0-beta.0 → 2.36.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/calendar/foundation.ts +2 -1
- package/lib/cjs/anchor/constants.js +0 -2
- package/lib/cjs/anchor/foundation.js +10 -73
- package/lib/cjs/anchor/linkFoundation.js +4 -16
- package/lib/cjs/autoComplete/constants.js +0 -3
- package/lib/cjs/autoComplete/foundation.d.ts +1 -1
- package/lib/cjs/autoComplete/foundation.js +25 -139
- package/lib/cjs/autoComplete/optionFoundation.js +4 -14
- package/lib/cjs/avatar/constants.js +0 -2
- package/lib/cjs/avatar/foundation.js +0 -17
- package/lib/cjs/backtop/constants.js +0 -2
- package/lib/cjs/backtop/foundation.d.ts +2 -2
- package/lib/cjs/backtop/foundation.js +0 -21
- package/lib/cjs/badge/constants.js +0 -2
- package/lib/cjs/banner/constants.js +0 -2
- package/lib/cjs/banner/foundation.js +0 -7
- package/lib/cjs/base/constants.js +2 -4
- package/lib/cjs/base/foundation.d.ts +1 -1
- package/lib/cjs/base/foundation.js +12 -46
- package/lib/cjs/base/index.js +0 -3
- package/lib/cjs/breadcrumb/constants.js +0 -2
- package/lib/cjs/breadcrumb/foundation.js +1 -12
- package/lib/cjs/breadcrumb/itemFoundation.js +0 -7
- package/lib/cjs/button/constants.js +0 -2
- package/lib/cjs/calendar/constants.js +0 -2
- package/lib/cjs/calendar/eventUtil.d.ts +1 -1
- package/lib/cjs/calendar/eventUtil.js +2 -74
- package/lib/cjs/calendar/foundation.d.ts +2 -2
- package/lib/cjs/calendar/foundation.js +28 -123
- package/lib/cjs/card/constants.js +0 -2
- package/lib/cjs/carousel/constants.js +0 -2
- package/lib/cjs/carousel/foundation.js +2 -52
- package/lib/cjs/cascader/constants.js +0 -3
- package/lib/cjs/cascader/foundation.d.ts +4 -4
- package/lib/cjs/cascader/foundation.js +28 -242
- package/lib/cjs/cascader/util.js +6 -24
- package/lib/cjs/checkbox/checkboxFoundation.js +2 -38
- package/lib/cjs/checkbox/checkboxGroupFoundation.js +2 -23
- package/lib/cjs/checkbox/constants.js +0 -2
- package/lib/cjs/collapse/constants.js +0 -2
- package/lib/cjs/collapse/foundation.d.ts +1 -1
- package/lib/cjs/collapse/foundation.js +2 -13
- package/lib/cjs/collapsible/constants.js +0 -2
- package/lib/cjs/collapsible/foundation.js +0 -9
- package/lib/cjs/datePicker/_utils/formatter.js +4 -10
- package/lib/cjs/datePicker/_utils/getDayOfWeek.d.ts +1 -1
- package/lib/cjs/datePicker/_utils/getDayOfWeek.js +0 -4
- package/lib/cjs/datePicker/_utils/getDefaultFormatToken.js +0 -5
- package/lib/cjs/datePicker/_utils/getDefaultPickerDate.d.ts +1 -1
- package/lib/cjs/datePicker/_utils/getDefaultPickerDate.js +0 -15
- package/lib/cjs/datePicker/_utils/getFullDateOffset.js +0 -7
- package/lib/cjs/datePicker/_utils/getInsetInputFormatToken.js +0 -5
- package/lib/cjs/datePicker/_utils/getInsetInputValueFromInsetInputStr.js +0 -6
- package/lib/cjs/datePicker/_utils/getMonthTable.d.ts +1 -1
- package/lib/cjs/datePicker/_utils/getMonthTable.js +3 -14
- package/lib/cjs/datePicker/_utils/getMonthsInYear.js +0 -2
- package/lib/cjs/datePicker/_utils/getYears.js +0 -4
- package/lib/cjs/datePicker/_utils/index.js +0 -13
- package/lib/cjs/datePicker/_utils/isAfter.js +0 -4
- package/lib/cjs/datePicker/_utils/isBefore.js +0 -4
- package/lib/cjs/datePicker/_utils/isBetween.js +0 -4
- package/lib/cjs/datePicker/_utils/isDate.js +0 -1
- package/lib/cjs/datePicker/_utils/isSameDay.js +0 -4
- package/lib/cjs/datePicker/_utils/isTimestamp.js +0 -4
- package/lib/cjs/datePicker/_utils/isUnixTimestamp.js +0 -4
- package/lib/cjs/datePicker/_utils/isValidDate.js +0 -1
- package/lib/cjs/datePicker/_utils/isValidTimeZone.js +0 -1
- package/lib/cjs/datePicker/_utils/isWithinInterval.js +0 -4
- package/lib/cjs/datePicker/_utils/parser.js +0 -10
- package/lib/cjs/datePicker/constants.js +0 -3
- package/lib/cjs/datePicker/foundation.d.ts +24 -24
- package/lib/cjs/datePicker/foundation.js +22 -333
- package/lib/cjs/datePicker/inputFoundation.d.ts +3 -3
- package/lib/cjs/datePicker/inputFoundation.js +5 -86
- package/lib/cjs/datePicker/monthFoundation.d.ts +1 -1
- package/lib/cjs/datePicker/monthFoundation.js +3 -28
- package/lib/cjs/datePicker/monthsGridFoundation.d.ts +3 -3
- package/lib/cjs/datePicker/monthsGridFoundation.js +43 -238
- package/lib/cjs/datePicker/yearAndMonthFoundation.d.ts +1 -1
- package/lib/cjs/datePicker/yearAndMonthFoundation.js +12 -38
- package/lib/cjs/descriptions/constants.js +0 -2
- package/lib/cjs/divider/constants.js +0 -2
- package/lib/cjs/dropdown/constants.js +0 -3
- package/lib/cjs/dropdown/foundation.js +4 -23
- package/lib/cjs/dropdown/menuFoundation.js +8 -27
- package/lib/cjs/empty/constants.js +0 -2
- package/lib/cjs/form/constants.js +0 -2
- package/lib/cjs/form/foundation.js +75 -206
- package/lib/cjs/form/interface.d.ts +5 -5
- package/lib/cjs/form/utils.js +47 -77
- package/lib/cjs/grid/constants.js +0 -2
- package/lib/cjs/highlight/constants.js +0 -2
- package/lib/cjs/icons/constants.js +0 -2
- package/lib/cjs/image/constants.js +0 -2
- package/lib/cjs/image/imageFoundation.js +4 -18
- package/lib/cjs/image/previewFooterFoundation.js +0 -13
- package/lib/cjs/image/previewFoundation.js +0 -11
- package/lib/cjs/image/previewImageFoundation.js +6 -80
- package/lib/cjs/image/previewInnerFoundation.js +12 -77
- package/lib/cjs/image/utils.js +0 -14
- package/lib/cjs/input/constants.js +0 -2
- package/lib/cjs/input/foundation.js +17 -101
- package/lib/cjs/input/textareaFoundation.js +20 -85
- package/lib/cjs/input/util/calculateNodeHeight.js +6 -18
- package/lib/cjs/input/util/getSizingData.js +7 -11
- package/lib/cjs/inputNumber/constants.js +0 -2
- package/lib/cjs/inputNumber/foundation.js +29 -192
- package/lib/cjs/layout/constants.js +0 -2
- package/lib/cjs/list/constants.js +0 -2
- package/lib/cjs/modal/constants.js +0 -2
- package/lib/cjs/modal/modalContentFoundation.js +0 -20
- package/lib/cjs/modal/modalFoundation.d.ts +2 -2
- package/lib/cjs/modal/modalFoundation.js +2 -22
- package/lib/cjs/navigation/NavItem.js +0 -10
- package/lib/cjs/navigation/constants.js +0 -3
- package/lib/cjs/navigation/foundation.js +3 -67
- package/lib/cjs/navigation/itemFoundation.js +3 -21
- package/lib/cjs/navigation/subNavFoundation.js +4 -40
- package/lib/cjs/notification/constants.js +0 -3
- package/lib/cjs/notification/notificationFoundation.d.ts +3 -3
- package/lib/cjs/notification/notificationFoundation.js +0 -16
- package/lib/cjs/notification/notificationListFoundation.js +7 -17
- package/lib/cjs/overflowList/constants.js +0 -2
- package/lib/cjs/overflowList/foundation.js +11 -41
- package/lib/cjs/pagination/constants.js +0 -2
- package/lib/cjs/pagination/foundation.d.ts +3 -3
- package/lib/cjs/pagination/foundation.js +21 -90
- package/lib/cjs/popconfirm/constants.js +0 -2
- package/lib/cjs/popconfirm/popconfirmFoundation.js +1 -21
- package/lib/cjs/popover/constants.js +0 -3
- package/lib/cjs/progress/constants.js +0 -2
- package/lib/cjs/progress/generates.d.ts +2 -2
- package/lib/cjs/progress/generates.js +19 -60
- package/lib/cjs/radio/constants.js +0 -2
- package/lib/cjs/radio/radioFoundation.js +0 -14
- package/lib/cjs/radio/radioGroupFoundation.js +4 -23
- package/lib/cjs/radio/radioInnerFoundation.js +2 -19
- package/lib/cjs/rating/constants.js +0 -2
- package/lib/cjs/rating/foundation.js +11 -61
- package/lib/cjs/scrollList/constants.js +0 -2
- package/lib/cjs/scrollList/foundation.js +0 -4
- package/lib/cjs/scrollList/itemFoundation.js +8 -61
- package/lib/cjs/scrollList/scrollTo.js +2 -5
- package/lib/cjs/select/constants.js +0 -3
- package/lib/cjs/select/foundation.d.ts +2 -2
- package/lib/cjs/select/foundation.js +122 -425
- package/lib/cjs/select/optionFoundation.js +4 -14
- package/lib/cjs/sideSheet/constants.js +0 -2
- package/lib/cjs/sideSheet/sideSheetFoundation.js +0 -18
- package/lib/cjs/skeleton/constants.js +0 -2
- package/lib/cjs/slider/constants.js +0 -2
- package/lib/cjs/slider/foundation.d.ts +1 -1
- package/lib/cjs/slider/foundation.js +25 -204
- package/lib/cjs/space/constants.js +0 -2
- package/lib/cjs/spin/constants.js +0 -2
- package/lib/cjs/spin/foundation.js +3 -13
- package/lib/cjs/steps/constants.js +0 -2
- package/lib/cjs/switch/constants.js +0 -2
- package/lib/cjs/switch/foundation.js +2 -18
- package/lib/cjs/table/bodyFoundation.js +2 -34
- package/lib/cjs/table/cellFoundation.js +0 -5
- package/lib/cjs/table/constants.js +7 -8
- package/lib/cjs/table/foundation.d.ts +17 -14
- package/lib/cjs/table/foundation.js +71 -302
- package/lib/cjs/table/tableRowFoundation.js +0 -11
- package/lib/cjs/table/tableSelectionCellFoundation.js +0 -6
- package/lib/cjs/table/utils.d.ts +2 -2
- package/lib/cjs/table/utils.js +5 -118
- package/lib/cjs/tabs/constants.js +0 -2
- package/lib/cjs/tabs/foundation.js +2 -40
- package/lib/cjs/tag/constants.js +1 -2
- package/lib/cjs/tagInput/constants.js +0 -2
- package/lib/cjs/tagInput/foundation.d.ts +4 -4
- package/lib/cjs/tagInput/foundation.js +4 -94
- package/lib/cjs/tagInput/utils/getSplitedArray.js +0 -11
- package/lib/cjs/timePicker/ComboxFoundation.js +4 -39
- package/lib/cjs/timePicker/constants.js +0 -3
- package/lib/cjs/timePicker/foundation.d.ts +1 -1
- package/lib/cjs/timePicker/foundation.js +3 -97
- package/lib/cjs/timePicker/inputFoundation.js +6 -25
- package/lib/cjs/timePicker/utils/index.js +6 -45
- package/lib/cjs/timePicker/utils/localeDate.js +0 -10
- package/lib/cjs/timeline/constants.js +0 -2
- package/lib/cjs/toast/constants.js +0 -3
- package/lib/cjs/toast/toastFoundation.d.ts +3 -3
- package/lib/cjs/toast/toastFoundation.js +0 -14
- package/lib/cjs/toast/toastListFoundation.js +4 -22
- package/lib/cjs/tooltip/constants.js +0 -2
- package/lib/cjs/tooltip/foundation.d.ts +1 -1
- package/lib/cjs/tooltip/foundation.js +63 -291
- package/lib/cjs/transfer/constants.js +0 -2
- package/lib/cjs/transfer/foundation.d.ts +1 -1
- package/lib/cjs/transfer/foundation.js +4 -68
- package/lib/cjs/transfer/transferUtils.js +5 -27
- package/lib/cjs/tree/constants.js +0 -2
- package/lib/cjs/tree/foundation.d.ts +3 -3
- package/lib/cjs/tree/foundation.js +34 -150
- package/lib/cjs/tree/treeUtil.js +54 -173
- package/lib/cjs/treeSelect/constants.js +0 -2
- package/lib/cjs/treeSelect/foundation.d.ts +7 -7
- package/lib/cjs/treeSelect/foundation.js +18 -192
- package/lib/cjs/typography/constants.js +0 -2
- package/lib/cjs/typography/formatNumeral.d.ts +3 -3
- package/lib/cjs/typography/formatNumeral.js +16 -32
- package/lib/cjs/upload/constants.js +0 -2
- package/lib/cjs/upload/foundation.d.ts +5 -5
- package/lib/cjs/upload/foundation.js +36 -245
- package/lib/cjs/upload/utils.js +10 -29
- package/lib/cjs/utils/Event.js +2 -21
- package/lib/cjs/utils/FocusHandle.d.ts +1 -1
- package/lib/cjs/utils/FocusHandle.js +6 -35
- package/lib/cjs/utils/Logger.js +0 -21
- package/lib/cjs/utils/Store.js +0 -10
- package/lib/cjs/utils/a11y.js +18 -43
- package/lib/cjs/utils/array.d.ts +1 -1
- package/lib/cjs/utils/array.js +0 -7
- package/lib/cjs/utils/arrayMove.js +0 -1
- package/lib/cjs/utils/classnames.js +0 -12
- package/lib/cjs/utils/date-fns-extra.js +0 -35
- package/lib/cjs/utils/dom.d.ts +1 -1
- package/lib/cjs/utils/dom.js +0 -13
- package/lib/cjs/utils/function.js +0 -1
- package/lib/cjs/utils/getDataAttr.js +0 -2
- package/lib/cjs/utils/getHighlight.js +5 -26
- package/lib/cjs/utils/getMotionObjFromProps.js +0 -12
- package/lib/cjs/utils/index.js +0 -4
- package/lib/cjs/utils/isBothNaN.js +0 -2
- package/lib/cjs/utils/isElement.js +0 -1
- package/lib/cjs/utils/isEnterPress.js +0 -5
- package/lib/cjs/utils/isEscPress.js +0 -5
- package/lib/cjs/utils/isNullOrUndefined.js +0 -1
- package/lib/cjs/utils/isNumber.js +0 -1
- package/lib/cjs/utils/isObject.js +0 -1
- package/lib/cjs/utils/isPromise.js +0 -3
- package/lib/cjs/utils/isString.js +0 -1
- package/lib/cjs/utils/keyCode.js +0 -105
- package/lib/cjs/utils/log.js +0 -5
- package/lib/cjs/utils/number.js +0 -2
- package/lib/cjs/utils/object.d.ts +4 -4
- package/lib/cjs/utils/object.js +12 -34
- package/lib/cjs/utils/set.js +0 -8
- package/lib/cjs/utils/shallowEqualObjects.js +0 -7
- package/lib/cjs/utils/touchPolyfill.js +0 -7
- package/lib/cjs/utils/type.d.ts +3 -3
- package/lib/cjs/utils/uuid.js +2 -9
- package/lib/cjs/utils/warning.js +0 -1
- package/lib/es/anchor/foundation.js +10 -66
- package/lib/es/anchor/linkFoundation.js +4 -12
- package/lib/es/autoComplete/foundation.d.ts +1 -1
- package/lib/es/autoComplete/foundation.js +24 -132
- package/lib/es/autoComplete/optionFoundation.js +4 -10
- package/lib/es/avatar/foundation.js +0 -12
- package/lib/es/backtop/foundation.d.ts +2 -2
- package/lib/es/backtop/foundation.js +0 -16
- package/lib/es/banner/foundation.js +0 -3
- package/lib/es/base/constants.js +2 -2
- package/lib/es/base/foundation.d.ts +1 -1
- package/lib/es/base/foundation.js +11 -44
- package/lib/es/breadcrumb/foundation.js +0 -7
- package/lib/es/breadcrumb/itemFoundation.js +0 -3
- package/lib/es/calendar/eventUtil.d.ts +1 -1
- package/lib/es/calendar/eventUtil.js +2 -36
- package/lib/es/calendar/foundation.d.ts +2 -2
- package/lib/es/calendar/foundation.js +28 -117
- package/lib/es/carousel/foundation.js +2 -47
- package/lib/es/cascader/constants.js +0 -1
- package/lib/es/cascader/foundation.d.ts +4 -4
- package/lib/es/cascader/foundation.js +30 -226
- package/lib/es/cascader/util.js +6 -15
- package/lib/es/checkbox/checkboxFoundation.js +2 -34
- package/lib/es/checkbox/checkboxGroupFoundation.js +2 -20
- package/lib/es/collapse/foundation.d.ts +1 -1
- package/lib/es/collapse/foundation.js +2 -9
- package/lib/es/collapsible/foundation.js +0 -7
- package/lib/es/datePicker/_utils/formatter.js +4 -8
- package/lib/es/datePicker/_utils/getDayOfWeek.d.ts +1 -1
- package/lib/es/datePicker/_utils/getDayOfWeek.js +0 -3
- package/lib/es/datePicker/_utils/getDefaultFormatToken.js +0 -2
- package/lib/es/datePicker/_utils/getDefaultPickerDate.d.ts +1 -1
- package/lib/es/datePicker/_utils/getDefaultPickerDate.js +0 -10
- package/lib/es/datePicker/_utils/getFullDateOffset.js +0 -3
- package/lib/es/datePicker/_utils/getInsetInputFormatToken.js +0 -4
- package/lib/es/datePicker/_utils/getInsetInputValueFromInsetInputStr.js +0 -5
- package/lib/es/datePicker/_utils/getMonthTable.d.ts +1 -1
- package/lib/es/datePicker/_utils/getMonthTable.js +4 -14
- package/lib/es/datePicker/_utils/getMonthsInYear.js +0 -1
- package/lib/es/datePicker/_utils/getYears.js +0 -3
- package/lib/es/datePicker/_utils/isBetween.js +0 -1
- package/lib/es/datePicker/_utils/parser.js +0 -8
- package/lib/es/datePicker/foundation.d.ts +24 -24
- package/lib/es/datePicker/foundation.js +22 -318
- package/lib/es/datePicker/inputFoundation.d.ts +3 -3
- package/lib/es/datePicker/inputFoundation.js +5 -74
- package/lib/es/datePicker/monthFoundation.d.ts +1 -1
- package/lib/es/datePicker/monthFoundation.js +4 -22
- package/lib/es/datePicker/monthsGridFoundation.d.ts +3 -3
- package/lib/es/datePicker/monthsGridFoundation.js +42 -222
- package/lib/es/datePicker/yearAndMonthFoundation.d.ts +1 -1
- package/lib/es/datePicker/yearAndMonthFoundation.js +12 -36
- package/lib/es/dropdown/foundation.js +4 -18
- package/lib/es/dropdown/menuFoundation.js +8 -22
- package/lib/es/form/foundation.js +74 -195
- package/lib/es/form/interface.d.ts +5 -5
- package/lib/es/form/utils.js +47 -70
- package/lib/es/image/imageFoundation.js +4 -13
- package/lib/es/image/previewFooterFoundation.js +0 -9
- package/lib/es/image/previewFoundation.js +0 -7
- package/lib/es/image/previewImageFoundation.js +6 -72
- package/lib/es/image/previewInnerFoundation.js +12 -70
- package/lib/es/image/utils.js +0 -6
- package/lib/es/input/foundation.js +17 -93
- package/lib/es/input/textareaFoundation.js +20 -75
- package/lib/es/input/util/calculateNodeHeight.js +6 -18
- package/lib/es/input/util/getSizingData.js +7 -11
- package/lib/es/inputNumber/foundation.js +28 -183
- package/lib/es/modal/modalContentFoundation.js +0 -15
- package/lib/es/modal/modalFoundation.d.ts +2 -2
- package/lib/es/modal/modalFoundation.js +2 -17
- package/lib/es/navigation/NavItem.js +0 -6
- package/lib/es/navigation/constants.js +1 -1
- package/lib/es/navigation/foundation.js +2 -60
- package/lib/es/navigation/itemFoundation.js +3 -18
- package/lib/es/navigation/subNavFoundation.js +4 -36
- package/lib/es/notification/constants.js +1 -1
- package/lib/es/notification/notificationFoundation.d.ts +3 -3
- package/lib/es/notification/notificationFoundation.js +0 -11
- package/lib/es/notification/notificationListFoundation.js +6 -13
- package/lib/es/overflowList/foundation.js +11 -37
- package/lib/es/pagination/foundation.d.ts +3 -3
- package/lib/es/pagination/foundation.js +20 -87
- package/lib/es/popconfirm/popconfirmFoundation.js +1 -16
- package/lib/es/progress/generates.d.ts +2 -2
- package/lib/es/progress/generates.js +19 -59
- package/lib/es/radio/radioFoundation.js +0 -9
- package/lib/es/radio/radioGroupFoundation.js +4 -19
- package/lib/es/radio/radioInnerFoundation.js +2 -15
- package/lib/es/rating/foundation.js +10 -54
- package/lib/es/scrollList/itemFoundation.js +8 -60
- package/lib/es/scrollList/scrollTo.js +2 -4
- package/lib/es/select/foundation.d.ts +2 -2
- package/lib/es/select/foundation.js +122 -411
- package/lib/es/select/optionFoundation.js +4 -10
- package/lib/es/sideSheet/sideSheetFoundation.js +0 -12
- package/lib/es/slider/foundation.d.ts +1 -1
- package/lib/es/slider/foundation.js +24 -197
- package/lib/es/spin/foundation.js +3 -11
- package/lib/es/switch/foundation.js +2 -13
- package/lib/es/table/bodyFoundation.js +2 -25
- package/lib/es/table/cellFoundation.js +0 -1
- package/lib/es/table/constants.js +6 -6
- package/lib/es/table/foundation.d.ts +17 -14
- package/lib/es/table/foundation.js +71 -309
- package/lib/es/table/tableRowFoundation.js +2 -9
- package/lib/es/table/tableSelectionCellFoundation.js +0 -2
- package/lib/es/table/utils.d.ts +2 -2
- package/lib/es/table/utils.js +5 -81
- package/lib/es/tabs/foundation.js +2 -35
- package/lib/es/tagInput/foundation.d.ts +4 -4
- package/lib/es/tagInput/foundation.js +4 -84
- package/lib/es/tagInput/utils/getSplitedArray.js +0 -7
- package/lib/es/timePicker/ComboxFoundation.js +4 -30
- package/lib/es/timePicker/foundation.d.ts +1 -1
- package/lib/es/timePicker/foundation.js +4 -90
- package/lib/es/timePicker/inputFoundation.js +6 -22
- package/lib/es/timePicker/utils/index.js +6 -25
- package/lib/es/timePicker/utils/localeDate.js +0 -8
- package/lib/es/toast/constants.js +1 -1
- package/lib/es/toast/toastFoundation.d.ts +3 -3
- package/lib/es/toast/toastFoundation.js +0 -9
- package/lib/es/toast/toastListFoundation.js +4 -18
- package/lib/es/tooltip/foundation.d.ts +1 -1
- package/lib/es/tooltip/foundation.js +63 -288
- package/lib/es/transfer/foundation.d.ts +1 -1
- package/lib/es/transfer/foundation.js +6 -62
- package/lib/es/transfer/transferUtils.js +5 -21
- package/lib/es/tree/foundation.d.ts +3 -3
- package/lib/es/tree/foundation.js +34 -143
- package/lib/es/tree/treeUtil.js +54 -139
- package/lib/es/treeSelect/foundation.d.ts +7 -7
- package/lib/es/treeSelect/foundation.js +20 -179
- package/lib/es/typography/formatNumeral.d.ts +3 -3
- package/lib/es/typography/formatNumeral.js +16 -29
- package/lib/es/upload/foundation.d.ts +5 -5
- package/lib/es/upload/foundation.js +36 -238
- package/lib/es/upload/utils.js +10 -24
- package/lib/es/utils/Event.js +2 -17
- package/lib/es/utils/FocusHandle.d.ts +1 -1
- package/lib/es/utils/FocusHandle.js +6 -32
- package/lib/es/utils/Logger.js +0 -20
- package/lib/es/utils/Store.js +0 -9
- package/lib/es/utils/a11y.js +18 -31
- package/lib/es/utils/array.d.ts +1 -1
- package/lib/es/utils/array.js +0 -5
- package/lib/es/utils/classnames.js +0 -10
- package/lib/es/utils/date-fns-extra.js +0 -27
- package/lib/es/utils/dom.d.ts +1 -1
- package/lib/es/utils/dom.js +0 -9
- package/lib/es/utils/getDataAttr.js +0 -1
- package/lib/es/utils/getHighlight.js +5 -26
- package/lib/es/utils/getMotionObjFromProps.js +0 -8
- package/lib/es/utils/isBothNaN.js +0 -1
- package/lib/es/utils/isEnterPress.js +0 -2
- package/lib/es/utils/isEscPress.js +0 -2
- package/lib/es/utils/keyCode.js +0 -104
- package/lib/es/utils/log.js +0 -3
- package/lib/es/utils/object.d.ts +4 -4
- package/lib/es/utils/object.js +12 -28
- package/lib/es/utils/set.js +0 -5
- package/lib/es/utils/shallowEqualObjects.js +0 -6
- package/lib/es/utils/touchPolyfill.js +0 -5
- package/lib/es/utils/type.d.ts +3 -3
- package/lib/es/utils/uuid.js +2 -8
- package/package.json +2 -2
- package/table/foundation.ts +7 -10
- package/upload/foundation.ts +8 -8
|
@@ -4,30 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _toPath2 = _interopRequireDefault(require("lodash/toPath"));
|
|
9
|
-
|
|
10
8
|
var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
|
|
11
|
-
|
|
12
9
|
var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined"));
|
|
13
|
-
|
|
14
10
|
var _foundation = _interopRequireDefault(require("../base/foundation"));
|
|
15
|
-
|
|
16
11
|
var ObjectUtil = _interopRequireWildcard(require("../utils/object"));
|
|
17
|
-
|
|
18
12
|
var _isPromise = _interopRequireDefault(require("../utils/isPromise"));
|
|
19
|
-
|
|
20
13
|
var _utils = require("./utils");
|
|
21
|
-
|
|
22
14
|
var _scrollIntoViewIfNeeded = _interopRequireDefault(require("scroll-into-view-if-needed"));
|
|
23
|
-
|
|
24
15
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
-
|
|
26
16
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
|
-
|
|
28
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
-
|
|
30
18
|
/* eslint-disable prefer-const, max-len */
|
|
19
|
+
|
|
31
20
|
class FormFoundation extends _foundation.default {
|
|
32
21
|
constructor(adapter) {
|
|
33
22
|
super(Object.assign({}, adapter));
|
|
@@ -39,26 +28,24 @@ class FormFoundation extends _foundation.default {
|
|
|
39
28
|
这里也需要读一次initValue,因为Form级别可设置初始值,Field级别也可设置初始值.
|
|
40
29
|
Form中设置的字段,不一定会存在Field实体,所以不能完全依赖register时刻来设置初始值
|
|
41
30
|
*/
|
|
42
|
-
|
|
43
31
|
let {
|
|
44
32
|
initValues
|
|
45
33
|
} = this._adapter.getProps();
|
|
46
|
-
|
|
47
34
|
initValues = this._adapter.cloneDeep(initValues);
|
|
48
35
|
this.data = {
|
|
49
36
|
values: initValues ? initValues : {},
|
|
50
37
|
errors: {},
|
|
51
|
-
touched: {}
|
|
38
|
+
touched: {}
|
|
39
|
+
// invalid: false,
|
|
52
40
|
// dirty: false,
|
|
53
|
-
|
|
54
|
-
|
|
41
|
+
};
|
|
42
|
+
// Map store all fields
|
|
55
43
|
// key: fieldName
|
|
56
44
|
// value: { field, fieldApi, keepState, initValue}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
45
|
+
this.fields = new Map();
|
|
46
|
+
// Record all registered fields
|
|
47
|
+
this.registered = {};
|
|
48
|
+
// Record all registered ArrayField
|
|
62
49
|
this.registeredArrayField = new Map();
|
|
63
50
|
this.register = this.register.bind(this);
|
|
64
51
|
this.unRegister = this.unRegister.bind(this);
|
|
@@ -81,23 +68,20 @@ class FormFoundation extends _foundation.default {
|
|
|
81
68
|
this.getFieldExist = this.getFieldExist.bind(this);
|
|
82
69
|
this.scrollToField = this.scrollToField.bind(this);
|
|
83
70
|
}
|
|
84
|
-
|
|
85
71
|
init() {
|
|
86
72
|
this._adapter.initFormId();
|
|
87
73
|
}
|
|
88
|
-
|
|
89
74
|
getField(field) {
|
|
90
75
|
const targetField = this.fields.get(field);
|
|
91
76
|
return targetField;
|
|
92
77
|
}
|
|
93
|
-
|
|
94
78
|
register(field, fieldState, fieldStuff) {
|
|
95
79
|
// determine if this field has been register before
|
|
96
80
|
const registered = this.registered[field];
|
|
97
81
|
this.registered[field] = true;
|
|
98
82
|
this.fields.set(field, fieldStuff);
|
|
99
|
-
|
|
100
|
-
|
|
83
|
+
if (fieldStuff.keepState) {
|
|
84
|
+
// TODO support keepState
|
|
101
85
|
} else {
|
|
102
86
|
const allowEmpty = fieldStuff.allowEmpty || false;
|
|
103
87
|
const opts = {
|
|
@@ -105,24 +89,22 @@ class FormFoundation extends _foundation.default {
|
|
|
105
89
|
notUpdate: false,
|
|
106
90
|
allowEmpty
|
|
107
91
|
};
|
|
108
|
-
let fieldValue = fieldState.value;
|
|
109
|
-
|
|
92
|
+
let fieldValue = fieldState.value;
|
|
93
|
+
// When allowEmpty is false, 'is equivalent to undefined, and the key of the field does not need to be reflected on values
|
|
110
94
|
if (!allowEmpty && fieldValue === '') {
|
|
111
95
|
fieldValue = undefined;
|
|
112
96
|
}
|
|
113
|
-
|
|
114
97
|
this.updateStateValue(field, fieldValue, opts);
|
|
115
|
-
|
|
116
98
|
if (fieldState.error) {
|
|
117
99
|
this.updateStateError(field, fieldState.error, opts);
|
|
118
100
|
}
|
|
119
|
-
}
|
|
120
|
-
|
|
101
|
+
}
|
|
102
|
+
// this.log(this.fields);
|
|
121
103
|
}
|
|
122
104
|
|
|
123
105
|
unRegister(field) {
|
|
124
|
-
const targetField = this.fields.get(field);
|
|
125
|
-
|
|
106
|
+
const targetField = this.fields.get(field);
|
|
107
|
+
// delete data
|
|
126
108
|
try {
|
|
127
109
|
if (!targetField.keepState) {
|
|
128
110
|
ObjectUtil.remove(this.data.values, field);
|
|
@@ -131,50 +113,40 @@ class FormFoundation extends _foundation.default {
|
|
|
131
113
|
}
|
|
132
114
|
} catch (error) {
|
|
133
115
|
console.error(`some thing wrong when unregister field:${field}`);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
116
|
+
}
|
|
117
|
+
// delete field
|
|
137
118
|
this.fields.delete(field);
|
|
138
|
-
|
|
139
119
|
this._adapter.notifyChange(this.data);
|
|
140
|
-
|
|
141
120
|
this._adapter.forceUpdate();
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
|
|
121
|
+
}
|
|
122
|
+
// in order to slove byted-issue-289
|
|
145
123
|
registerArrayField(arrayFieldPath, val) {
|
|
146
124
|
this.updateArrayField(arrayFieldPath, {
|
|
147
125
|
updateKey: new Date().valueOf(),
|
|
148
126
|
initValue: val
|
|
149
127
|
});
|
|
150
128
|
}
|
|
151
|
-
|
|
152
129
|
unRegisterArrayField(arrayField) {
|
|
153
130
|
this.registeredArrayField.delete(arrayField);
|
|
154
131
|
}
|
|
155
|
-
|
|
156
132
|
getArrayField(arrayField) {
|
|
157
133
|
return this.registeredArrayField.get(arrayField);
|
|
158
134
|
}
|
|
159
|
-
|
|
160
135
|
updateArrayField(arrayField, updateValue) {
|
|
161
136
|
const mergeVal = Object.assign(Object.assign({}, this.registeredArrayField.get(arrayField)), updateValue);
|
|
162
137
|
this.registeredArrayField.set(arrayField, mergeVal);
|
|
163
138
|
}
|
|
164
|
-
|
|
165
139
|
validate(fieldPaths) {
|
|
166
140
|
const {
|
|
167
141
|
validateFields
|
|
168
142
|
} = this.getProps();
|
|
169
|
-
|
|
170
143
|
if (validateFields && (0, _isFunction2.default)(validateFields)) {
|
|
171
144
|
return this._formValidate();
|
|
172
145
|
} else {
|
|
173
146
|
return this._fieldsValidate(fieldPaths);
|
|
174
147
|
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
|
|
148
|
+
}
|
|
149
|
+
// form level validate
|
|
178
150
|
_formValidate() {
|
|
179
151
|
const {
|
|
180
152
|
values
|
|
@@ -184,14 +156,12 @@ class FormFoundation extends _foundation.default {
|
|
|
184
156
|
} = this.getProps();
|
|
185
157
|
return new Promise((resolve, reject) => {
|
|
186
158
|
let maybePromisedErrors;
|
|
187
|
-
|
|
188
159
|
try {
|
|
189
160
|
maybePromisedErrors = validateFields(values);
|
|
190
161
|
} catch (errors) {
|
|
191
162
|
// error throw by sync validate directly
|
|
192
163
|
maybePromisedErrors = errors;
|
|
193
164
|
}
|
|
194
|
-
|
|
195
165
|
if (!maybePromisedErrors) {
|
|
196
166
|
resolve(values);
|
|
197
167
|
this.injectErrorToField({});
|
|
@@ -203,55 +173,42 @@ class FormFoundation extends _foundation.default {
|
|
|
203
173
|
this.injectErrorToField({});
|
|
204
174
|
} else {
|
|
205
175
|
this.data.errors = result;
|
|
206
|
-
|
|
207
176
|
this._adapter.notifyChange(this.data);
|
|
208
|
-
|
|
209
177
|
this.injectErrorToField(result);
|
|
210
|
-
|
|
211
178
|
this._adapter.forceUpdate();
|
|
212
|
-
|
|
213
179
|
this._autoScroll(100);
|
|
214
|
-
|
|
215
180
|
reject(result);
|
|
216
181
|
}
|
|
217
182
|
}, errors => {
|
|
218
183
|
// validate failed
|
|
219
184
|
// this._adapter.notifyChange(this.data);
|
|
220
185
|
this._autoScroll(100);
|
|
221
|
-
|
|
222
186
|
reject(errors);
|
|
223
187
|
});
|
|
224
188
|
} else {
|
|
225
189
|
// TODO: current design, returning an empty object will be considered a checksum failure and will be rejected. Only returning an empty string will be considered a success, consider resetting it in 1.0?
|
|
226
190
|
this.data.errors = maybePromisedErrors;
|
|
227
191
|
this.injectErrorToField(maybePromisedErrors);
|
|
228
|
-
|
|
229
192
|
this._adapter.notifyChange(this.data);
|
|
230
|
-
|
|
231
193
|
this._adapter.forceUpdate();
|
|
232
|
-
|
|
233
194
|
this._autoScroll(100);
|
|
234
|
-
|
|
235
195
|
reject(maybePromisedErrors);
|
|
236
196
|
}
|
|
237
197
|
});
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
|
|
198
|
+
}
|
|
199
|
+
// field level validate
|
|
241
200
|
_fieldsValidate(fieldPaths) {
|
|
242
201
|
const {
|
|
243
202
|
values
|
|
244
|
-
} = this.data;
|
|
245
|
-
|
|
203
|
+
} = this.data;
|
|
204
|
+
// When there is no custom validation function at Form level, perform validation of each Field
|
|
246
205
|
return new Promise((resolve, reject) => {
|
|
247
206
|
let promiseSet = [];
|
|
248
|
-
|
|
249
207
|
const targetFields = this._getOperateFieldMap(fieldPaths);
|
|
250
|
-
|
|
251
208
|
targetFields.forEach((field, fieldPath) => {
|
|
252
209
|
// Call each fieldApi for verification
|
|
253
|
-
const fieldValue = this.getValue(fieldPath);
|
|
254
|
-
|
|
210
|
+
const fieldValue = this.getValue(fieldPath);
|
|
211
|
+
// When centralized verification, no need to trigger forceUpdate and notify
|
|
255
212
|
const opts = {
|
|
256
213
|
notNotify: true,
|
|
257
214
|
notUpdate: true
|
|
@@ -263,37 +220,29 @@ class FormFoundation extends _foundation.default {
|
|
|
263
220
|
Promise.all(promiseSet).then(() => {
|
|
264
221
|
// After the centralized verification is completed, trigger notify and forceUpdate once.
|
|
265
222
|
this._adapter.notifyChange(this.data);
|
|
266
|
-
|
|
267
223
|
this._adapter.forceUpdate();
|
|
268
|
-
|
|
269
224
|
const errors = this.getError();
|
|
270
|
-
|
|
271
225
|
if (this._isValid(targetFields)) {
|
|
272
226
|
resolve(values);
|
|
273
227
|
} else {
|
|
274
228
|
this._autoScroll();
|
|
275
|
-
|
|
276
229
|
reject(errors);
|
|
277
230
|
}
|
|
278
231
|
});
|
|
279
232
|
});
|
|
280
233
|
}
|
|
281
|
-
|
|
282
234
|
submit() {
|
|
283
235
|
const {
|
|
284
236
|
values
|
|
285
|
-
} = this.data;
|
|
286
|
-
|
|
237
|
+
} = this.data;
|
|
238
|
+
// validate form
|
|
287
239
|
this.validate().then(resolveValues => {
|
|
288
240
|
// if valid do submit
|
|
289
241
|
const _values = this._adapter.cloneDeep(resolveValues);
|
|
290
|
-
|
|
291
242
|
this._adapter.notifySubmit(_values);
|
|
292
243
|
}).catch(errors => {
|
|
293
244
|
const _errors = this._adapter.cloneDeep(errors);
|
|
294
|
-
|
|
295
245
|
const _values = this._adapter.cloneDeep(values);
|
|
296
|
-
|
|
297
246
|
this._adapter.notifySubmitFail(_errors, _values);
|
|
298
247
|
});
|
|
299
248
|
}
|
|
@@ -310,8 +259,6 @@ class FormFoundation extends _foundation.default {
|
|
|
310
259
|
* activity.a => activity.a[0]、activity.a[1]
|
|
311
260
|
*
|
|
312
261
|
*/
|
|
313
|
-
|
|
314
|
-
|
|
315
262
|
_getNestedField(path) {
|
|
316
263
|
const allRegisterField = this.fields;
|
|
317
264
|
const allFieldPath = [...allRegisterField].map(item => item[0]);
|
|
@@ -319,27 +266,23 @@ class FormFoundation extends _foundation.default {
|
|
|
319
266
|
allFieldPath.forEach(item => {
|
|
320
267
|
let itemPath = (0, _toPath2.default)(item);
|
|
321
268
|
let targetPath = (0, _toPath2.default)(path);
|
|
322
|
-
|
|
323
269
|
if (targetPath.every((path, i) => targetPath[i] === itemPath[i])) {
|
|
324
270
|
const realField = allRegisterField.get(item);
|
|
325
271
|
nestedFieldPath.set(item, realField);
|
|
326
272
|
}
|
|
327
273
|
});
|
|
328
274
|
return nestedFieldPath;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
|
|
275
|
+
}
|
|
276
|
+
// get all operate fields, called by validate() / reset()
|
|
332
277
|
_getOperateFieldMap(fieldPaths) {
|
|
333
278
|
let targetFields = new Map();
|
|
334
|
-
|
|
335
279
|
if (!(0, _isUndefined2.default)(fieldPaths)) {
|
|
336
280
|
// reset or validate specific fields
|
|
337
281
|
fieldPaths.forEach(path => {
|
|
338
|
-
const field = this.fields.get(path);
|
|
339
|
-
|
|
282
|
+
const field = this.fields.get(path);
|
|
283
|
+
// may be undefined, if exists two fields like 'a[0]'、'a[1]', but user directly call reset(['a']) / validate(['a'])
|
|
340
284
|
if ((0, _isUndefined2.default)(field)) {
|
|
341
285
|
const nestedFields = this._getNestedField(path);
|
|
342
|
-
|
|
343
286
|
targetFields = new Map([...targetFields, ...nestedFields]);
|
|
344
287
|
} else {
|
|
345
288
|
targetFields.set(path, field);
|
|
@@ -349,29 +292,21 @@ class FormFoundation extends _foundation.default {
|
|
|
349
292
|
// reset or validate all fields
|
|
350
293
|
targetFields = this.fields;
|
|
351
294
|
}
|
|
352
|
-
|
|
353
295
|
return targetFields;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
|
|
296
|
+
}
|
|
297
|
+
// Reset the entire form, reset all fields and remove validation results
|
|
357
298
|
reset(fieldPaths) {
|
|
358
299
|
const targetFields = this._getOperateFieldMap(fieldPaths);
|
|
359
|
-
|
|
360
300
|
targetFields.forEach(field => {
|
|
361
301
|
field.fieldApi.reset();
|
|
362
302
|
});
|
|
363
|
-
|
|
364
303
|
if (this.registeredArrayField.size) {
|
|
365
304
|
this._resetArrayField();
|
|
366
305
|
}
|
|
367
|
-
|
|
368
306
|
this._adapter.notifyChange(this.data);
|
|
369
|
-
|
|
370
307
|
this._adapter.forceUpdate();
|
|
371
|
-
|
|
372
308
|
this._adapter.notifyReset();
|
|
373
309
|
}
|
|
374
|
-
|
|
375
310
|
_resetArrayField() {
|
|
376
311
|
/*
|
|
377
312
|
When Reset, arrayField needs to be processed separately. Restore the key/value of arrayField in formState according to the initial value
|
|
@@ -390,10 +325,9 @@ class FormFoundation extends _foundation.default {
|
|
|
390
325
|
updateKey: new Date().valueOf()
|
|
391
326
|
});
|
|
392
327
|
});
|
|
393
|
-
}
|
|
328
|
+
}
|
|
329
|
+
// After calling the form's custom validateFields function, reject the returned error to the corresponding field
|
|
394
330
|
// 调用了Form的自定义validateFields函数后,将返回的错误展示到对应的field中
|
|
395
|
-
|
|
396
|
-
|
|
397
331
|
injectErrorToField(errors) {
|
|
398
332
|
this.fields.forEach(field => {
|
|
399
333
|
const fieldError = ObjectUtil.get(errors, field.field);
|
|
@@ -404,55 +338,45 @@ class FormFoundation extends _foundation.default {
|
|
|
404
338
|
field.fieldApi.setError(fieldError, opts);
|
|
405
339
|
});
|
|
406
340
|
}
|
|
407
|
-
|
|
408
341
|
getValue(field, opts) {
|
|
409
342
|
const isAllField = typeof field === 'undefined';
|
|
410
343
|
const needClone = opts && opts.needClone;
|
|
411
344
|
let result, fieldValue;
|
|
412
|
-
|
|
413
345
|
switch (true) {
|
|
414
346
|
case !isAllField && !needClone:
|
|
415
347
|
result = ObjectUtil.get(this.data.values, field);
|
|
416
348
|
break;
|
|
417
|
-
|
|
418
349
|
case !isAllField && needClone:
|
|
419
350
|
fieldValue = ObjectUtil.get(this.data.values, field);
|
|
420
351
|
result = this._adapter.cloneDeep(fieldValue);
|
|
421
352
|
break;
|
|
422
|
-
|
|
423
353
|
case isAllField && !needClone:
|
|
424
354
|
result = Object.assign({}, this.data.values);
|
|
425
355
|
break;
|
|
426
|
-
|
|
427
356
|
case isAllField && needClone:
|
|
428
357
|
result = this._adapter.cloneDeep(this.data.values);
|
|
429
358
|
break;
|
|
430
|
-
|
|
431
359
|
default:
|
|
432
360
|
break;
|
|
433
361
|
}
|
|
434
|
-
|
|
435
362
|
return result;
|
|
436
363
|
}
|
|
437
|
-
|
|
438
364
|
setValues(values, _ref) {
|
|
439
365
|
let {
|
|
440
366
|
isOverride = false
|
|
441
367
|
} = _ref;
|
|
442
|
-
|
|
443
368
|
const _values = this._adapter.cloneDeep(values);
|
|
444
|
-
|
|
445
369
|
this.fields.forEach(field => {
|
|
446
|
-
const value = ObjectUtil.get(_values, field.field);
|
|
370
|
+
const value = ObjectUtil.get(_values, field.field);
|
|
371
|
+
// When calling setValues to override the values, only need to trigger onValueChange and onChange once, so setNotNotify of setValue to true
|
|
447
372
|
// 调用setValues进行值的覆盖时,只需要回调一次onValueChange、onChange即可,所以此处将setValue的notNotify置为true
|
|
448
|
-
|
|
449
373
|
const opts = {
|
|
450
374
|
notNotify: true,
|
|
451
375
|
notUpdate: true
|
|
452
376
|
};
|
|
453
377
|
field.fieldApi.setValue(value, opts);
|
|
454
|
-
});
|
|
455
|
-
|
|
378
|
+
});
|
|
379
|
+
// if there exists any arrayField component in this form
|
|
456
380
|
if (this.registeredArrayField.size) {
|
|
457
381
|
const arrayFieldPaths = [...this.registeredArrayField.keys()];
|
|
458
382
|
arrayFieldPaths.forEach(path => {
|
|
@@ -460,24 +384,19 @@ class FormFoundation extends _foundation.default {
|
|
|
460
384
|
updateKey: new Date().valueOf()
|
|
461
385
|
});
|
|
462
386
|
});
|
|
463
|
-
}
|
|
387
|
+
}
|
|
388
|
+
// When isOverride is true, there may be a non-existent field in the values passed in, directly synchronized to formState.values
|
|
464
389
|
// 当isOverride为true,传入的values中可能存在不存在的field时,直接将其同步到formState.values中
|
|
465
|
-
|
|
466
|
-
|
|
467
390
|
if (isOverride) {
|
|
468
391
|
this.data.values = _values;
|
|
469
|
-
}
|
|
392
|
+
}
|
|
393
|
+
// After completing the assignment, the unified callback can be done once.
|
|
470
394
|
// 在完成赋值后,统一回调一次即可
|
|
471
|
-
|
|
472
|
-
|
|
473
395
|
this._adapter.notifyChange(this.data);
|
|
474
|
-
|
|
475
396
|
this._adapter.notifyValueChange(this.data.values, Object.assign({}, values));
|
|
476
|
-
|
|
477
397
|
this._adapter.forceUpdate();
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
|
|
398
|
+
}
|
|
399
|
+
// update formState value
|
|
481
400
|
updateStateValue(field, value, opts, callback) {
|
|
482
401
|
const notNotify = opts && opts.notNotify;
|
|
483
402
|
const notUpdate = opts && opts.notUpdate;
|
|
@@ -488,9 +407,8 @@ class FormFoundation extends _foundation.default {
|
|
|
488
407
|
* When F orm.allow Empty is true, all fields and keys will appear in the formS tate.values. If the value is empty, it is undefined
|
|
489
408
|
* When F orm.allow Empty is false, only fields with values will key appear in the formS tate.values
|
|
490
409
|
*/
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
410
|
+
const formAllowEmpty = this.getProp('allowEmpty');
|
|
411
|
+
// priority at Field level
|
|
494
412
|
const allowEmpty = fieldAllowEmpty ? fieldAllowEmpty : formAllowEmpty;
|
|
495
413
|
ObjectUtil.set(this.data.values, field, value, allowEmpty);
|
|
496
414
|
/**
|
|
@@ -500,76 +418,62 @@ class FormFoundation extends _foundation.default {
|
|
|
500
418
|
* register时,Field中同步initValue到FormState时调用的setValue不应该触发notify
|
|
501
419
|
* 但需要触发forceUpdate,否则useFormState、useFieldState初始渲染会有问题
|
|
502
420
|
*/
|
|
503
|
-
|
|
504
421
|
if (!notNotify) {
|
|
505
422
|
this._adapter.notifyChange(this.data);
|
|
506
|
-
|
|
507
423
|
this._adapter.notifyValueChange(this.data.values, {
|
|
508
424
|
[field]: value
|
|
509
425
|
});
|
|
510
426
|
}
|
|
511
|
-
|
|
512
427
|
if (!notUpdate) {
|
|
513
428
|
this._adapter.forceUpdate(callback);
|
|
514
429
|
}
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
|
|
430
|
+
}
|
|
431
|
+
// get touched from formState
|
|
518
432
|
getTouched(field) {
|
|
519
433
|
if (typeof field === 'undefined') {
|
|
520
434
|
return this.data.touched;
|
|
521
435
|
}
|
|
522
|
-
|
|
523
436
|
return ObjectUtil.get(this.data.touched, field);
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
|
|
437
|
+
}
|
|
438
|
+
// update formState touched
|
|
527
439
|
updateStateTouched(field, isTouched, opts, callback) {
|
|
528
440
|
const notNotify = opts && opts.notNotify;
|
|
529
441
|
const notUpdate = opts && opts.notUpdate;
|
|
530
442
|
ObjectUtil.set(this.data.touched, field, isTouched);
|
|
531
|
-
|
|
532
443
|
if (!notNotify) {
|
|
533
444
|
this._adapter.notifyChange(this.data);
|
|
534
445
|
}
|
|
535
|
-
|
|
536
446
|
if (!notUpdate) {
|
|
537
447
|
this._adapter.forceUpdate(callback);
|
|
538
448
|
}
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
|
|
449
|
+
}
|
|
450
|
+
// get error from formState
|
|
542
451
|
getError(field) {
|
|
543
452
|
if (typeof field === 'undefined') {
|
|
544
453
|
return this.data.errors;
|
|
545
454
|
}
|
|
546
|
-
|
|
547
455
|
return ObjectUtil.get(this.data.errors, field);
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
|
|
456
|
+
}
|
|
457
|
+
// update formState error
|
|
551
458
|
updateStateError(field, error, opts, callback) {
|
|
552
459
|
const notNotify = opts && opts.notNotify;
|
|
553
460
|
const notUpdate = opts && opts.notUpdate;
|
|
554
|
-
ObjectUtil.set(this.data.errors, field, error);
|
|
461
|
+
ObjectUtil.set(this.data.errors, field, error);
|
|
462
|
+
// The setError caused by centralized validation does not need to trigger notify, otherwise it will be called too frequently, as many times as there are fields
|
|
555
463
|
// 集中validate时,引起的setError不需要触发notify,否则会过于频繁调用,有多少个field就调用了多少次
|
|
556
|
-
|
|
557
464
|
if (!notNotify) {
|
|
558
465
|
this._adapter.notifyChange(this.data);
|
|
559
466
|
}
|
|
560
|
-
|
|
561
467
|
if (!notUpdate) {
|
|
562
468
|
this._adapter.forceUpdate(callback);
|
|
563
469
|
}
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
|
|
470
|
+
}
|
|
471
|
+
// For internal use in the FormApi Operating Field
|
|
567
472
|
getFieldSetterApi() {
|
|
568
473
|
const setValue = (field, value, opts) => {
|
|
569
|
-
const fieldApi = this.fields.get(field) ? this.fields.get(field).fieldApi : undefined;
|
|
570
|
-
|
|
474
|
+
const fieldApi = this.fields.get(field) ? this.fields.get(field).fieldApi : undefined;
|
|
475
|
+
// DeepClone the value entered from the outside to avoid unexpected errors caused by not isolating the scope to the greatest extent. This setValue will be called in eg: ArrayField
|
|
571
476
|
const newValue = this._adapter.cloneDeep(value);
|
|
572
|
-
|
|
573
477
|
if (fieldApi) {
|
|
574
478
|
// If there is a corresponding Field entity, call FieldApi to update the value
|
|
575
479
|
fieldApi.setValue(newValue, opts);
|
|
@@ -580,7 +484,6 @@ class FormFoundation extends _foundation.default {
|
|
|
580
484
|
// When the user directly calls formA pi.set Value ('peoples', [2,3])
|
|
581
485
|
this.updateStateValue(field, newValue, opts, () => {
|
|
582
486
|
let nestedFields = this._getNestedField(field);
|
|
583
|
-
|
|
584
487
|
if (nestedFields.size) {
|
|
585
488
|
nestedFields.forEach(fieldStaff => {
|
|
586
489
|
let fieldPath = fieldStaff.field;
|
|
@@ -592,8 +495,8 @@ class FormFoundation extends _foundation.default {
|
|
|
592
495
|
fieldStaff.fieldApi.setValue(newFieldVal, nestedBatchUpdateOpts);
|
|
593
496
|
});
|
|
594
497
|
}
|
|
595
|
-
});
|
|
596
|
-
|
|
498
|
+
});
|
|
499
|
+
// If the reset happens to be, then update the updateKey corresponding to ArrayField to render it again
|
|
597
500
|
if (this.getArrayField(field)) {
|
|
598
501
|
this.updateArrayField(field, {
|
|
599
502
|
updateKey: new Date().valueOf()
|
|
@@ -601,18 +504,14 @@ class FormFoundation extends _foundation.default {
|
|
|
601
504
|
}
|
|
602
505
|
}
|
|
603
506
|
};
|
|
604
|
-
|
|
605
507
|
const setError = (field, error, opts) => {
|
|
606
508
|
const fieldApi = this.fields.get(field) ? this.fields.get(field).fieldApi : undefined;
|
|
607
|
-
|
|
608
509
|
const newError = this._adapter.cloneDeep(error);
|
|
609
|
-
|
|
610
510
|
if (fieldApi) {
|
|
611
511
|
fieldApi.setError(newError, opts);
|
|
612
512
|
} else {
|
|
613
513
|
this.updateStateError(field, newError, opts, () => {
|
|
614
514
|
let nestedFields = this._getNestedField(field);
|
|
615
|
-
|
|
616
515
|
if (nestedFields.size) {
|
|
617
516
|
nestedFields.forEach(fieldStaff => {
|
|
618
517
|
let fieldPath = fieldStaff.field;
|
|
@@ -625,7 +524,6 @@ class FormFoundation extends _foundation.default {
|
|
|
625
524
|
});
|
|
626
525
|
}
|
|
627
526
|
});
|
|
628
|
-
|
|
629
527
|
if (this.getArrayField(field)) {
|
|
630
528
|
this.updateArrayField(field, {
|
|
631
529
|
updateKey: new Date().valueOf()
|
|
@@ -633,16 +531,14 @@ class FormFoundation extends _foundation.default {
|
|
|
633
531
|
}
|
|
634
532
|
}
|
|
635
533
|
};
|
|
636
|
-
|
|
637
534
|
const setTouched = (field, isTouched, opts) => {
|
|
638
|
-
const fieldApi = this.fields.get(field) ? this.fields.get(field).fieldApi : undefined;
|
|
639
|
-
|
|
535
|
+
const fieldApi = this.fields.get(field) ? this.fields.get(field).fieldApi : undefined;
|
|
536
|
+
// touched is boolean variable, no need to exec deepClone like setValue
|
|
640
537
|
if (fieldApi) {
|
|
641
538
|
fieldApi.setTouched(isTouched, opts);
|
|
642
539
|
} else {
|
|
643
540
|
this.updateStateTouched(field, isTouched, opts, () => {
|
|
644
541
|
let nestedFields = this._getNestedField(field);
|
|
645
|
-
|
|
646
542
|
if (nestedFields.size) {
|
|
647
543
|
nestedFields.forEach(fieldStaff => {
|
|
648
544
|
let fieldPath = fieldStaff.field;
|
|
@@ -655,7 +551,6 @@ class FormFoundation extends _foundation.default {
|
|
|
655
551
|
});
|
|
656
552
|
}
|
|
657
553
|
});
|
|
658
|
-
|
|
659
554
|
if (this.getArrayField(field)) {
|
|
660
555
|
this.updateArrayField(field, {
|
|
661
556
|
updateKey: new Date().valueOf()
|
|
@@ -663,15 +558,13 @@ class FormFoundation extends _foundation.default {
|
|
|
663
558
|
}
|
|
664
559
|
}
|
|
665
560
|
};
|
|
666
|
-
|
|
667
561
|
return {
|
|
668
562
|
setValue,
|
|
669
563
|
setError,
|
|
670
564
|
setTouched
|
|
671
565
|
};
|
|
672
|
-
}
|
|
673
|
-
|
|
674
|
-
|
|
566
|
+
}
|
|
567
|
+
// For Field and ArrayField to read and modify FormState
|
|
675
568
|
getModifyFormStateApi() {
|
|
676
569
|
return {
|
|
677
570
|
register: this.register,
|
|
@@ -691,9 +584,8 @@ class FormFoundation extends _foundation.default {
|
|
|
691
584
|
getArrayField: this.getArrayField,
|
|
692
585
|
updateArrayField: this.updateArrayField
|
|
693
586
|
};
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
|
|
587
|
+
}
|
|
588
|
+
// Form APIs for external use, exposed to the user
|
|
697
589
|
getFormApi() {
|
|
698
590
|
const fieldSetterApi = this.getFieldSetterApi();
|
|
699
591
|
return Object.assign(Object.assign({}, fieldSetterApi), {
|
|
@@ -718,13 +610,10 @@ class FormFoundation extends _foundation.default {
|
|
|
718
610
|
scrollToField: (field, scrollOpts) => this.scrollToField(field, scrollOpts)
|
|
719
611
|
});
|
|
720
612
|
}
|
|
721
|
-
|
|
722
613
|
getFormState() {
|
|
723
614
|
let needClone = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
724
|
-
|
|
725
615
|
// NOTES:这里如果直接返回this.data,forceUpdate 触发 Form rerender 时,通过context传下去的formState会被认为是同一个对象【应该是浅对比的原因】
|
|
726
616
|
// 使用了useFormState相关的component都不会触发重新渲染。所以使用...复制一次
|
|
727
|
-
|
|
728
617
|
/*
|
|
729
618
|
The reason for distinguishing deepClone: When semi is calling getFormState for internal consumption,
|
|
730
619
|
the value of formState will not be modified, so deep cloning is not necessary, which can reduce performance loss
|
|
@@ -739,10 +628,8 @@ class FormFoundation extends _foundation.default {
|
|
|
739
628
|
return this._adapter.cloneDeep(this.data);
|
|
740
629
|
}
|
|
741
630
|
}
|
|
742
|
-
|
|
743
631
|
_isValid(targetFields) {
|
|
744
632
|
let valid = true;
|
|
745
|
-
|
|
746
633
|
if (!targetFields) {
|
|
747
634
|
valid = Boolean(ObjectUtil.empty(this.data.errors));
|
|
748
635
|
} else {
|
|
@@ -750,62 +637,49 @@ class FormFoundation extends _foundation.default {
|
|
|
750
637
|
const targetFieldStr = [...targetFields.keys()];
|
|
751
638
|
targetFieldStr.forEach(fieldStr => {
|
|
752
639
|
const fieldError = ObjectUtil.get(this.data.errors, fieldStr);
|
|
753
|
-
|
|
754
640
|
if (!(0, _utils.isValid)(fieldError)) {
|
|
755
641
|
valid = false;
|
|
756
642
|
}
|
|
757
643
|
});
|
|
758
644
|
}
|
|
759
|
-
|
|
760
645
|
return valid;
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
|
|
646
|
+
}
|
|
647
|
+
// get form.props.initValues
|
|
764
648
|
getInitValues() {
|
|
765
649
|
return this._adapter.getInitValues();
|
|
766
650
|
}
|
|
767
|
-
|
|
768
651
|
getInitValue(field) {
|
|
769
652
|
if (typeof field === 'undefined') {
|
|
770
653
|
return this._adapter.getInitValues();
|
|
771
654
|
}
|
|
772
|
-
|
|
773
655
|
return ObjectUtil.get(this._adapter.getInitValues(), field);
|
|
774
656
|
}
|
|
775
|
-
|
|
776
657
|
getFormProps(keys) {
|
|
777
658
|
return this._adapter.getFormProps(keys);
|
|
778
659
|
}
|
|
779
|
-
|
|
780
660
|
getFieldExist(field) {
|
|
781
661
|
return Boolean(this.fields.has(field));
|
|
782
662
|
}
|
|
783
|
-
|
|
784
663
|
_autoScroll(timeout) {
|
|
785
664
|
const {
|
|
786
665
|
autoScrollToError
|
|
787
666
|
} = this.getFormProps();
|
|
788
|
-
|
|
789
667
|
if (!autoScrollToError) {
|
|
790
668
|
return;
|
|
791
669
|
}
|
|
792
|
-
|
|
793
670
|
let scrollOpts = {
|
|
794
671
|
behavior: 'smooth',
|
|
795
672
|
block: 'start'
|
|
796
673
|
};
|
|
797
674
|
typeof autoScrollToError === 'object' ? scrollOpts = autoScrollToError : null;
|
|
798
|
-
|
|
799
675
|
if (timeout) {
|
|
800
676
|
setTimeout(() => this._getErrorFieldAndScroll(scrollOpts), 100);
|
|
801
677
|
} else {
|
|
802
678
|
this._getErrorFieldAndScroll(scrollOpts);
|
|
803
679
|
}
|
|
804
680
|
}
|
|
805
|
-
|
|
806
681
|
_getErrorFieldAndScroll(scrollOpts) {
|
|
807
682
|
const errorDOM = this._adapter.getAllErrorDOM();
|
|
808
|
-
|
|
809
683
|
if (errorDOM && errorDOM.length) {
|
|
810
684
|
try {
|
|
811
685
|
const fieldDom = errorDOM[0].parentNode.parentNode;
|
|
@@ -813,20 +687,15 @@ class FormFoundation extends _foundation.default {
|
|
|
813
687
|
} catch (error) {}
|
|
814
688
|
}
|
|
815
689
|
}
|
|
816
|
-
|
|
817
690
|
scrollToField(field) {
|
|
818
691
|
let scrollOpts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
819
692
|
behavior: 'smooth',
|
|
820
693
|
block: 'start'
|
|
821
694
|
};
|
|
822
|
-
|
|
823
695
|
if (this.getFieldExist(field)) {
|
|
824
696
|
const fieldDOM = this._adapter.getFieldDOM(field);
|
|
825
|
-
|
|
826
697
|
(0, _scrollIntoViewIfNeeded.default)(fieldDOM, scrollOpts);
|
|
827
698
|
}
|
|
828
699
|
}
|
|
829
|
-
|
|
830
700
|
}
|
|
831
|
-
|
|
832
701
|
exports.default = FormFoundation;
|