rsuite 6.1.3 → 6.2.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/CHANGELOG.md +18 -0
- package/Timeline/styles/index.css +11 -0
- package/Timeline/styles/index.scss +13 -0
- package/Uploader/styles/index.css +3 -0
- package/Uploader/styles/index.scss +3 -0
- package/cjs/AutoComplete/AutoComplete.d.ts +2 -0
- package/cjs/AutoComplete/AutoComplete.js +3 -1
- package/cjs/CheckTree/utils.js +2 -1
- package/cjs/Form/Form.d.ts +37 -0
- package/cjs/Form/Form.js +16 -1
- package/cjs/Form/hooks/useFormValidate.d.ts +2 -0
- package/cjs/Form/hooks/useFormValidate.js +117 -1
- package/cjs/Form/index.d.ts +1 -0
- package/cjs/Form/resolvers.d.ts +59 -0
- package/cjs/Form/resolvers.js +4 -0
- package/cjs/Timeline/Timeline.d.ts +5 -0
- package/cjs/Timeline/Timeline.js +13 -6
- package/cjs/Tree/hooks/useFlattenTree.js +5 -8
- package/cjs/Uploader/Uploader.d.ts +2 -0
- package/cjs/Uploader/Uploader.js +48 -2
- package/cjs/internals/Picker/PickerIndicator.js +13 -11
- package/cjs/toaster/toaster.js +38 -3
- package/dist/rsuite-no-reset.css +14 -0
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite.css +14 -0
- package/dist/rsuite.js +9 -9
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/AutoComplete/AutoComplete.d.ts +2 -0
- package/esm/AutoComplete/AutoComplete.js +3 -1
- package/esm/CheckTree/utils.js +2 -1
- package/esm/Form/Form.d.ts +37 -0
- package/esm/Form/Form.js +16 -1
- package/esm/Form/hooks/useFormValidate.d.ts +2 -0
- package/esm/Form/hooks/useFormValidate.js +117 -1
- package/esm/Form/index.d.ts +1 -0
- package/esm/Form/resolvers.d.ts +59 -0
- package/esm/Form/resolvers.js +2 -0
- package/esm/Timeline/Timeline.d.ts +5 -0
- package/esm/Timeline/Timeline.js +13 -6
- package/esm/Tree/hooks/useFlattenTree.js +5 -8
- package/esm/Uploader/Uploader.d.ts +2 -0
- package/esm/Uploader/Uploader.js +48 -2
- package/esm/internals/Picker/PickerIndicator.js +13 -11
- package/esm/toaster/toaster.js +38 -3
- package/package.json +1 -1
package/dist/rsuite.css
CHANGED
|
@@ -14919,6 +14919,17 @@ blockquote.rs-text{
|
|
|
14919
14919
|
height:auto;
|
|
14920
14920
|
min-height:var(--rs-time-line-tail-min-height);
|
|
14921
14921
|
}
|
|
14922
|
+
.rs-timeline-reverse.rs-timeline-endless .rs-timeline-item:first-child .rs-timeline-item-tail{
|
|
14923
|
+
top:0;
|
|
14924
|
+
bottom:0;
|
|
14925
|
+
height:auto;
|
|
14926
|
+
}
|
|
14927
|
+
|
|
14928
|
+
.rs-timeline-reverse.rs-timeline-endless .rs-timeline-item:last-child .rs-timeline-item-tail{
|
|
14929
|
+
height:calc(var(--rs-time-line-dot-center-gap) + var(--rs-time-line-dot-side-length));
|
|
14930
|
+
min-height:0;
|
|
14931
|
+
}
|
|
14932
|
+
|
|
14922
14933
|
.rs-timeline-item:only-child .rs-timeline-item-tail{
|
|
14923
14934
|
display:none;
|
|
14924
14935
|
}
|
|
@@ -15628,6 +15639,7 @@ blockquote.rs-text{
|
|
|
15628
15639
|
text-overflow:ellipsis;
|
|
15629
15640
|
white-space:nowrap;
|
|
15630
15641
|
flex:1 1 auto;
|
|
15642
|
+
min-width:0;
|
|
15631
15643
|
}
|
|
15632
15644
|
.rs-uploader[data-list-type=text] .rs-uploader-file-item-size{
|
|
15633
15645
|
flex:0 0 auto;
|
|
@@ -15674,6 +15686,7 @@ blockquote.rs-text{
|
|
|
15674
15686
|
.rs-uploader[data-list-type=picture]{
|
|
15675
15687
|
display:inline-flex;
|
|
15676
15688
|
flex-direction:row;
|
|
15689
|
+
flex-wrap:wrap;
|
|
15677
15690
|
gap:var(--rs-uploader-item-spacing);
|
|
15678
15691
|
}
|
|
15679
15692
|
.rs-uploader[data-list-type=picture] .rs-uploader-trigger-btn{
|
|
@@ -15708,6 +15721,7 @@ blockquote.rs-text{
|
|
|
15708
15721
|
}
|
|
15709
15722
|
.rs-uploader[data-list-type=picture] .rs-uploader-file-items{
|
|
15710
15723
|
display:inline-flex;
|
|
15724
|
+
flex-wrap:wrap;
|
|
15711
15725
|
gap:var(--rs-uploader-item-spacing);
|
|
15712
15726
|
}
|
|
15713
15727
|
.rs-uploader[data-list-type=picture] .rs-uploader-file-item{
|
package/dist/rsuite.js
CHANGED
|
@@ -1192,7 +1192,7 @@ eval("\n\nexports.__esModule = true;\nexports.getAnimationEnd = getAnimationEnd;
|
|
|
1192
1192
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
1193
1193
|
|
|
1194
1194
|
"use strict";
|
|
1195
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _pick = _interopRequireDefault(__webpack_require__(/*! lodash/pick */ \"./node_modules/lodash/pick.js\"));\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _Combobox = _interopRequireDefault(__webpack_require__(/*! ./Combobox */ \"./src/AutoComplete/Combobox.tsx\"));\nvar _Plaintext = _interopRequireDefault(__webpack_require__(/*! ../internals/Plaintext */ \"./src/internals/Plaintext/index.tsx\"));\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _utils2 = __webpack_require__(/*! ./utils */ \"./src/AutoComplete/utils.ts\");\nvar _Picker = __webpack_require__(/*! ../internals/Picker */ \"./src/internals/Picker/index.ts\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/AutoComplete/AutoComplete.tsx\";\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\n/**\n * Autocomplete function of input field.\n * @see https://rsuitejs.com/components/auto-complete\n *\n * TODO: Remove unnecessary .rs-auto-complete element\n * TODO: role=combobox and aria-autocomplete on input element\n */\n// Use type assertion to avoid type error with required properties\nconst AutoComplete = (0, _utils.forwardRef)((props, ref) => {\n const {\n propsWithDefaults\n } = (0, _hooks.useCustom)('AutoComplete', props);\n const {\n as,\n disabled,\n className,\n placement = 'bottomStart',\n selectOnEnter = true,\n classPrefix = 'auto-complete',\n defaultValue = '',\n popupAutoWidth = true,\n popupClassName,\n popupStyle,\n data,\n value: valueProp,\n open,\n style,\n size,\n id,\n readOnly,\n plaintext,\n renderListbox,\n renderOption,\n onSelect,\n filterBy,\n onKeyDown,\n onChange,\n onClose,\n onOpen,\n onFocus,\n onBlur,\n onMenuFocus,\n ...rest\n } = propsWithDefaults;\n const datalist = (0, _utils2.transformData)(data);\n const [value, setValue] = (0, _hooks.useControlled)(valueProp, defaultValue);\n const [focus, setFocus] = (0, _react.useState)(false);\n const items = datalist?.filter((0, _utils2.shouldDisplay)(filterBy, value)) || [];\n const hasItems = items.length > 0;\n const {\n trigger,\n overlay,\n root\n } = (0, _Picker.usePickerRef)(ref);\n const isMounted = (0, _hooks.useIsMounted)();\n\n // Used to hover the focuse item when trigger `onKeydown`\n const {\n focusItemValue,\n setFocusItemValue,\n onKeyDown: handleKeyDown\n } = (0, _Picker.useFocusItemValue)(value, {\n data: datalist,\n focusToOption: false,\n callback: onMenuFocus,\n target: () => overlay.current\n });\n const handleKeyDownEvent = event => {\n if (!overlay.current) {\n return;\n }\n (0, _Picker.onMenuKeyDown)(event, {\n enter: selectOnEnter ? selectFocusMenuItem : undefined,\n esc: handleClose\n });\n handleKeyDown(event);\n onKeyDown?.(event);\n };\n const selectFocusMenuItem = event => {\n if (!focusItemValue) {\n return;\n }\n const focusItem = datalist.find(item => item?.value === focusItemValue);\n setValue(focusItemValue);\n setFocusItemValue(focusItemValue);\n handleSelect(focusItem, event);\n if (value !== focusItemValue) {\n handleChangeValue(focusItemValue, event);\n }\n handleClose();\n };\n const handleSelect = (0, _hooks.useEventCallback)((item, event) => {\n onSelect?.(item.value, item, event);\n });\n const handleChangeValue = (0, _hooks.useEventCallback)((value, event) => {\n onChange?.(value, event);\n });\n const handleChange = (value, event) => {\n setFocusItemValue('');\n setValue(value);\n setFocus(true);\n handleChangeValue(value, event);\n };\n const handleClose = (0, _hooks.useEventCallback)(() => {\n if (isMounted()) {\n setFocus(false);\n onClose?.();\n }\n });\n const handleOpen = (0, _hooks.useEventCallback)(() => {\n setFocus(true);\n onOpen?.();\n });\n const handleItemSelect = (0, _hooks.useEventCallback)((nextItemValue, item, event) => {\n setValue(nextItemValue);\n setFocusItemValue(nextItemValue);\n handleSelect(item, event);\n if (value !== nextItemValue) {\n handleChangeValue(nextItemValue, event);\n }\n handleClose();\n });\n const handleInputFocus = (0, _hooks.useEventCallback)(event => {\n onFocus?.(event);\n handleOpen();\n });\n const handleInputBlur = (0, _hooks.useEventCallback)(event => {\n setTimeout(handleClose, 300);\n onBlur?.(event);\n });\n const {\n withPrefix,\n merge\n } = (0, _hooks.useStyles)(classPrefix);\n const classes = merge(className, withPrefix({\n disabled\n }));\n const [htmlInputProps, restProps] = (0, _utils.partitionHTMLProps)((0, _omit.default)(rest, _Picker.triggerPropKeys));\n const renderPopup = (positionProps, speakerRef) => {\n const {\n className\n } = positionProps;\n const classes = merge(className, popupClassName);\n const listbox = /*#__PURE__*/_react.default.createElement(_Picker.Listbox, {\n classPrefix: \"auto-complete-menu\",\n listItemClassPrefix: \"auto-complete-item\",\n listItemAs: _Picker.ListItem,\n focusItemValue: focusItemValue,\n onSelect: handleItemSelect,\n renderOption: renderOption,\n data: items,\n query: value,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber:
|
|
1195
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _pick = _interopRequireDefault(__webpack_require__(/*! lodash/pick */ \"./node_modules/lodash/pick.js\"));\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _Combobox = _interopRequireDefault(__webpack_require__(/*! ./Combobox */ \"./src/AutoComplete/Combobox.tsx\"));\nvar _Plaintext = _interopRequireDefault(__webpack_require__(/*! ../internals/Plaintext */ \"./src/internals/Plaintext/index.tsx\"));\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _utils2 = __webpack_require__(/*! ./utils */ \"./src/AutoComplete/utils.ts\");\nvar _Picker = __webpack_require__(/*! ../internals/Picker */ \"./src/internals/Picker/index.ts\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/AutoComplete/AutoComplete.tsx\";\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\n/**\n * Autocomplete function of input field.\n * @see https://rsuitejs.com/components/auto-complete\n *\n * TODO: Remove unnecessary .rs-auto-complete element\n * TODO: role=combobox and aria-autocomplete on input element\n */\n// Use type assertion to avoid type error with required properties\nconst AutoComplete = (0, _utils.forwardRef)((props, ref) => {\n const {\n propsWithDefaults\n } = (0, _hooks.useCustom)('AutoComplete', props);\n const {\n as,\n disabled,\n className,\n placement = 'bottomStart',\n selectOnEnter = true,\n classPrefix = 'auto-complete',\n defaultValue = '',\n popupAutoWidth = true,\n popupClassName,\n popupStyle,\n data,\n value: valueProp,\n open,\n style,\n size,\n id,\n readOnly,\n plaintext,\n renderListbox,\n renderOption,\n onSelect,\n filterBy,\n onKeyDown,\n onChange,\n onClose,\n onOpen,\n onFocus,\n onBlur,\n onMenuFocus,\n inputRef,\n ...rest\n } = propsWithDefaults;\n const datalist = (0, _utils2.transformData)(data);\n const [value, setValue] = (0, _hooks.useControlled)(valueProp, defaultValue);\n const [focus, setFocus] = (0, _react.useState)(false);\n const items = datalist?.filter((0, _utils2.shouldDisplay)(filterBy, value)) || [];\n const hasItems = items.length > 0;\n const {\n trigger,\n overlay,\n root\n } = (0, _Picker.usePickerRef)(ref);\n const isMounted = (0, _hooks.useIsMounted)();\n\n // Used to hover the focuse item when trigger `onKeydown`\n const {\n focusItemValue,\n setFocusItemValue,\n onKeyDown: handleKeyDown\n } = (0, _Picker.useFocusItemValue)(value, {\n data: datalist,\n focusToOption: false,\n callback: onMenuFocus,\n target: () => overlay.current\n });\n const handleKeyDownEvent = event => {\n if (!overlay.current) {\n return;\n }\n (0, _Picker.onMenuKeyDown)(event, {\n enter: selectOnEnter ? selectFocusMenuItem : undefined,\n esc: handleClose\n });\n handleKeyDown(event);\n onKeyDown?.(event);\n };\n const selectFocusMenuItem = event => {\n if (!focusItemValue) {\n return;\n }\n const focusItem = datalist.find(item => item?.value === focusItemValue);\n setValue(focusItemValue);\n setFocusItemValue(focusItemValue);\n handleSelect(focusItem, event);\n if (value !== focusItemValue) {\n handleChangeValue(focusItemValue, event);\n }\n handleClose();\n };\n const handleSelect = (0, _hooks.useEventCallback)((item, event) => {\n onSelect?.(item.value, item, event);\n });\n const handleChangeValue = (0, _hooks.useEventCallback)((value, event) => {\n onChange?.(value, event);\n });\n const handleChange = (value, event) => {\n setFocusItemValue('');\n setValue(value);\n setFocus(true);\n handleChangeValue(value, event);\n };\n const handleClose = (0, _hooks.useEventCallback)(() => {\n if (isMounted()) {\n setFocus(false);\n onClose?.();\n }\n });\n const handleOpen = (0, _hooks.useEventCallback)(() => {\n setFocus(true);\n onOpen?.();\n });\n const handleItemSelect = (0, _hooks.useEventCallback)((nextItemValue, item, event) => {\n setValue(nextItemValue);\n setFocusItemValue(nextItemValue);\n handleSelect(item, event);\n if (value !== nextItemValue) {\n handleChangeValue(nextItemValue, event);\n }\n handleClose();\n });\n const handleInputFocus = (0, _hooks.useEventCallback)(event => {\n onFocus?.(event);\n handleOpen();\n });\n const handleInputBlur = (0, _hooks.useEventCallback)(event => {\n setTimeout(handleClose, 300);\n onBlur?.(event);\n });\n const {\n withPrefix,\n merge\n } = (0, _hooks.useStyles)(classPrefix);\n const classes = merge(className, withPrefix({\n disabled\n }));\n const [htmlInputProps, restProps] = (0, _utils.partitionHTMLProps)((0, _omit.default)(rest, _Picker.triggerPropKeys));\n const renderPopup = (positionProps, speakerRef) => {\n const {\n className\n } = positionProps;\n const classes = merge(className, popupClassName);\n const listbox = /*#__PURE__*/_react.default.createElement(_Picker.Listbox, {\n classPrefix: \"auto-complete-menu\",\n listItemClassPrefix: \"auto-complete-item\",\n listItemAs: _Picker.ListItem,\n focusItemValue: focusItemValue,\n onSelect: handleItemSelect,\n renderOption: renderOption,\n data: items,\n query: value,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 239,\n columnNumber: 7\n }\n });\n return /*#__PURE__*/_react.default.createElement(_Picker.PickerPopup, {\n ref: (0, _utils.mergeRefs)(overlay, speakerRef),\n className: classes,\n onKeyDown: handleKeyDownEvent,\n target: trigger,\n style: popupStyle,\n autoWidth: popupAutoWidth,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 252,\n columnNumber: 7\n }\n }, renderListbox ? renderListbox(listbox) : listbox);\n };\n if (plaintext) {\n return /*#__PURE__*/_react.default.createElement(_Plaintext.default, {\n ref: ref,\n localeKey: \"unfilled\",\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 267,\n columnNumber: 7\n }\n }, typeof value === 'undefined' ? defaultValue : value);\n }\n const expanded = open || focus && hasItems;\n const triggerProps = {\n ...(0, _pick.default)(props, _Picker.triggerPropKeys),\n open: expanded\n };\n return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, (0, _extends2.default)({\n as: as,\n id: id,\n ref: trigger,\n placement: placement,\n triggerProps: triggerProps,\n trigger: ['click', 'focus'],\n speaker: renderPopup,\n className: classes,\n style: style,\n rootRef: root,\n responsive: false\n }, restProps, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 281,\n columnNumber: 5\n }\n }), /*#__PURE__*/_react.default.createElement(_Combobox.default, (0, _extends2.default)({}, htmlInputProps, {\n disabled: disabled,\n value: value,\n size: size,\n readOnly: readOnly,\n expanded: expanded,\n focusItemValue: focusItemValue,\n onBlur: handleInputBlur,\n onFocus: handleInputFocus,\n onChange: handleChange,\n onKeyDown: handleKeyDownEvent,\n inputRef: inputRef,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 295,\n columnNumber: 7\n }\n })));\n});\nAutoComplete.displayName = 'AutoComplete';\nvar _default = exports[\"default\"] = AutoComplete;\n\n//# sourceURL=webpack://rsuite/./src/AutoComplete/AutoComplete.tsx?");
|
|
1196
1196
|
|
|
1197
1197
|
/***/ }),
|
|
1198
1198
|
|
|
@@ -2116,7 +2116,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
|
|
|
2116
2116
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2117
2117
|
|
|
2118
2118
|
"use strict";
|
|
2119
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports.getCheckTreeDefaultValue = getCheckTreeDefaultValue;\nexports.getDisabledState = getDisabledState;\nexports.getFormattedTree = getFormattedTree;\nexports.getNodeCheckState = getNodeCheckState;\nexports.getSelectedItems = getSelectedItems;\nexports.hasGrandchild = hasGrandchild;\nexports.isAllSiblingNodeUncheckable = isAllSiblingNodeUncheckable;\nexports.isEveryChildChecked = isEveryChildChecked;\nexports.isEveryFirstLevelNodeUncheckable = isEveryFirstLevelNodeUncheckable;\nexports.isNodeUncheckable = isNodeUncheckable;\nexports.isSomeChildChecked = isSomeChildChecked;\nvar _isUndefined2 = _interopRequireDefault(__webpack_require__(/*! lodash/isUndefined */ \"./node_modules/lodash/isUndefined.js\"));\nvar _isNil2 = _interopRequireDefault(__webpack_require__(/*! lodash/isNil */ \"./node_modules/lodash/isNil.js\"));\nvar _constants = __webpack_require__(/*! ../internals/constants */ \"./src/internals/constants/index.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _utils2 = __webpack_require__(/*! ../Tree/utils */ \"./src/Tree/utils/index.ts\");\n/**\n * Retrieves the children of a given parent node from a flattened node map.\n * Filters out uncheckable children.\n * Note: Does NOT filter disabled children - disabled children are still considered in check state calculations\n */\nfunction getChildrenByFlattenNodes(nodes, parent) {\n if (!(0, _isNil2.default)(parent.refKey) && (0, _isNil2.default)(nodes[parent.refKey])) {\n return [];\n }\n return Object.values(nodes).filter(item => item?.parent?.refKey === parent.refKey && item.refKey && !nodes[item.refKey].uncheckable);\n}\n\n/**\n * Checks if every child of a given parent node is checked.\n * Disabled children are ignored in this check.\n */\nfunction isEveryChildChecked(parent, options) {\n const {\n nodes,\n childrenKey,\n disabledItemValues = [],\n valueKey = 'value'\n } = options;\n if ((0, _isNil2.default)(parent.refKey) || (0, _isNil2.default)(nodes[parent.refKey])) {\n return false;\n }\n const children = getChildrenByFlattenNodes(nodes, parent);\n if (!children.length) {\n return nodes[parent.refKey].check ?? false;\n }\n\n // Filter out disabled children\n const enabledChildren = children.filter(child => {\n const isDisabled = getDisabledState(nodes, child, {\n disabledItemValues,\n valueKey\n });\n return !isDisabled;\n });\n\n // If all children are disabled, return the parent's own check state\n if (enabledChildren.length === 0) {\n return nodes[parent.refKey].check ?? false;\n }\n\n // Check if all enabled children are checked\n return enabledChildren.every(child => {\n if (child?.[childrenKey]?.length > 0) {\n // fix: #3559\n return isEveryChildChecked(child, {\n nodes,\n childrenKey,\n disabledItemValues,\n valueKey\n });\n }\n return !(0, _isNil2.default)(child.refKey) && nodes[child.refKey].check;\n });\n}\n\n/**\n * Checks if any child node is checked.\n * Disabled children are ignored in this check.\n */\nfunction isSomeChildChecked(nodes, parent, childrenKey, disabledItemValues = [], valueKey = 'value') {\n if (!(0, _isNil2.default)(parent.refKey) && (0, _isNil2.default)(nodes[parent.refKey])) {\n return false;\n }\n const children = getChildrenByFlattenNodes(nodes, parent);\n return children.some(child => {\n // Skip disabled children\n const isDisabled = getDisabledState(nodes, child, {\n disabledItemValues,\n valueKey\n });\n if (isDisabled) {\n return false; // Disabled children don't count as \"some checked\"\n }\n if (child?.[childrenKey]?.length > 0) {\n return isSomeChildChecked(nodes, child, childrenKey, disabledItemValues, valueKey);\n }\n return !(0, _isNil2.default)(child.refKey) && nodes[child.refKey].check;\n });\n}\n\n/**\n * Checks if any node in the data has a grandchild.\n */\nfunction hasGrandchild(data, childrenKey) {\n return data.some(node => Array.isArray(node[childrenKey]));\n}\n\n/**\n * Checks if all sibling nodes of a given node are uncheckable.\n */\nfunction isAllSiblingNodeUncheckable(node, nodes, uncheckableItemValues, valueKey) {\n const list = [];\n const parentNodeRefKey = node.parent ? node.parent.refKey : '';\n Object.keys(nodes).forEach(refKey => {\n const curNode = nodes[refKey];\n if ((0, _isNil2.default)(node.parent) && (0, _isNil2.default)(curNode.parent)) {\n list.push(curNode);\n } else if (curNode.parent?.refKey === parentNodeRefKey) {\n list.push(curNode);\n }\n });\n return list.every(node => isNodeUncheckable(node, {\n uncheckableItemValues,\n valueKey\n }));\n}\n\n/**\n * Checks if every first-level node is uncheckable based on the provided criteria.\n */\nfunction isEveryFirstLevelNodeUncheckable(nodes, uncheckableItemValues, valueKey) {\n const list = [];\n Object.keys(nodes).forEach(refKey => {\n const curNode = nodes[refKey];\n if (!curNode.parent) {\n list.push(curNode);\n }\n });\n return list.every(node => isNodeUncheckable(node, {\n uncheckableItemValues,\n valueKey\n }));\n}\n\n/**\n * Checks if a node is uncheckable.\n */\nfunction isNodeUncheckable(node, props) {\n const {\n uncheckableItemValues = [],\n valueKey\n } = props;\n return uncheckableItemValues.some(value => node[valueKey] === value);\n}\nfunction getFormattedTree(nodes, data, props) {\n const {\n childrenKey,\n cascade,\n disabledItemValues,\n valueKey\n } = props;\n return data.map(node => {\n const formatted = {\n ...node\n };\n const curNode = nodes[node.refKey];\n if (curNode) {\n const checkState = !(0, _isUndefined2.default)(cascade) ? getNodeCheckState(curNode, {\n cascade,\n nodes,\n childrenKey,\n disabledItemValues,\n valueKey\n }) : undefined;\n formatted.check = curNode.check;\n formatted.uncheckable = curNode.uncheckable;\n (0, _utils.attachParent)(formatted, curNode.parent);\n formatted.checkState = checkState;\n if (node[childrenKey]?.length > 0) {\n formatted[childrenKey] = getFormattedTree(nodes, formatted[childrenKey], props);\n }\n }\n return formatted;\n });\n}\n\n/**\n * Determines the disabled state of a tree node.\n * If a parent node is disabled, all its children should also be disabled.\n */\nfunction getDisabledState(nodes, node, props) {\n const {\n disabledItemValues = [],\n valueKey\n } = props;\n if (!(0, _isNil2.default)(node.refKey) && (0, _isNil2.default)(nodes[node.refKey])) {\n return false;\n }\n\n // Check if the current node is disabled\n const isCurrentNodeDisabled = disabledItemValues.some(value => node.refKey && (0, _utils.shallowEqual)(nodes[node.refKey][valueKey], value));\n if (isCurrentNodeDisabled) {\n return true;\n }\n\n // Check if any parent node is disabled\n let currentNode = node;\n while (currentNode.parent) {\n const parentNode = currentNode.parent;\n const parentRefKey = parentNode.refKey;\n if (!(0, _isNil2.default)(parentRefKey) && !(0, _isNil2.default)(nodes[parentRefKey]) && disabledItemValues.some(value => (0, _utils.shallowEqual)(nodes[parentRefKey][valueKey], value))) {\n return true;\n }\n currentNode = parentNode;\n }\n return false;\n}\n\n/**\n * Returns the default value for the check tree.\n */\nfunction getCheckTreeDefaultValue(value, uncheckableItemValues) {\n if (Array.isArray(value) && Array.isArray(uncheckableItemValues)) {\n
|
|
2119
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports.getCheckTreeDefaultValue = getCheckTreeDefaultValue;\nexports.getDisabledState = getDisabledState;\nexports.getFormattedTree = getFormattedTree;\nexports.getNodeCheckState = getNodeCheckState;\nexports.getSelectedItems = getSelectedItems;\nexports.hasGrandchild = hasGrandchild;\nexports.isAllSiblingNodeUncheckable = isAllSiblingNodeUncheckable;\nexports.isEveryChildChecked = isEveryChildChecked;\nexports.isEveryFirstLevelNodeUncheckable = isEveryFirstLevelNodeUncheckable;\nexports.isNodeUncheckable = isNodeUncheckable;\nexports.isSomeChildChecked = isSomeChildChecked;\nvar _isUndefined2 = _interopRequireDefault(__webpack_require__(/*! lodash/isUndefined */ \"./node_modules/lodash/isUndefined.js\"));\nvar _isNil2 = _interopRequireDefault(__webpack_require__(/*! lodash/isNil */ \"./node_modules/lodash/isNil.js\"));\nvar _constants = __webpack_require__(/*! ../internals/constants */ \"./src/internals/constants/index.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _utils2 = __webpack_require__(/*! ../Tree/utils */ \"./src/Tree/utils/index.ts\");\n/**\n * Retrieves the children of a given parent node from a flattened node map.\n * Filters out uncheckable children.\n * Note: Does NOT filter disabled children - disabled children are still considered in check state calculations\n */\nfunction getChildrenByFlattenNodes(nodes, parent) {\n if (!(0, _isNil2.default)(parent.refKey) && (0, _isNil2.default)(nodes[parent.refKey])) {\n return [];\n }\n return Object.values(nodes).filter(item => item?.parent?.refKey === parent.refKey && item.refKey && !nodes[item.refKey].uncheckable);\n}\n\n/**\n * Checks if every child of a given parent node is checked.\n * Disabled children are ignored in this check.\n */\nfunction isEveryChildChecked(parent, options) {\n const {\n nodes,\n childrenKey,\n disabledItemValues = [],\n valueKey = 'value'\n } = options;\n if ((0, _isNil2.default)(parent.refKey) || (0, _isNil2.default)(nodes[parent.refKey])) {\n return false;\n }\n const children = getChildrenByFlattenNodes(nodes, parent);\n if (!children.length) {\n return nodes[parent.refKey].check ?? false;\n }\n\n // Filter out disabled children\n const enabledChildren = children.filter(child => {\n const isDisabled = getDisabledState(nodes, child, {\n disabledItemValues,\n valueKey\n });\n return !isDisabled;\n });\n\n // If all children are disabled, return the parent's own check state\n if (enabledChildren.length === 0) {\n return nodes[parent.refKey].check ?? false;\n }\n\n // Check if all enabled children are checked\n return enabledChildren.every(child => {\n if (child?.[childrenKey]?.length > 0) {\n // fix: #3559\n return isEveryChildChecked(child, {\n nodes,\n childrenKey,\n disabledItemValues,\n valueKey\n });\n }\n return !(0, _isNil2.default)(child.refKey) && nodes[child.refKey].check;\n });\n}\n\n/**\n * Checks if any child node is checked.\n * Disabled children are ignored in this check.\n */\nfunction isSomeChildChecked(nodes, parent, childrenKey, disabledItemValues = [], valueKey = 'value') {\n if (!(0, _isNil2.default)(parent.refKey) && (0, _isNil2.default)(nodes[parent.refKey])) {\n return false;\n }\n const children = getChildrenByFlattenNodes(nodes, parent);\n return children.some(child => {\n // Skip disabled children\n const isDisabled = getDisabledState(nodes, child, {\n disabledItemValues,\n valueKey\n });\n if (isDisabled) {\n return false; // Disabled children don't count as \"some checked\"\n }\n if (child?.[childrenKey]?.length > 0) {\n return isSomeChildChecked(nodes, child, childrenKey, disabledItemValues, valueKey);\n }\n return !(0, _isNil2.default)(child.refKey) && nodes[child.refKey].check;\n });\n}\n\n/**\n * Checks if any node in the data has a grandchild.\n */\nfunction hasGrandchild(data, childrenKey) {\n return data.some(node => Array.isArray(node[childrenKey]));\n}\n\n/**\n * Checks if all sibling nodes of a given node are uncheckable.\n */\nfunction isAllSiblingNodeUncheckable(node, nodes, uncheckableItemValues, valueKey) {\n const list = [];\n const parentNodeRefKey = node.parent ? node.parent.refKey : '';\n Object.keys(nodes).forEach(refKey => {\n const curNode = nodes[refKey];\n if ((0, _isNil2.default)(node.parent) && (0, _isNil2.default)(curNode.parent)) {\n list.push(curNode);\n } else if (curNode.parent?.refKey === parentNodeRefKey) {\n list.push(curNode);\n }\n });\n return list.every(node => isNodeUncheckable(node, {\n uncheckableItemValues,\n valueKey\n }));\n}\n\n/**\n * Checks if every first-level node is uncheckable based on the provided criteria.\n */\nfunction isEveryFirstLevelNodeUncheckable(nodes, uncheckableItemValues, valueKey) {\n const list = [];\n Object.keys(nodes).forEach(refKey => {\n const curNode = nodes[refKey];\n if (!curNode.parent) {\n list.push(curNode);\n }\n });\n return list.every(node => isNodeUncheckable(node, {\n uncheckableItemValues,\n valueKey\n }));\n}\n\n/**\n * Checks if a node is uncheckable.\n */\nfunction isNodeUncheckable(node, props) {\n const {\n uncheckableItemValues = [],\n valueKey\n } = props;\n return uncheckableItemValues.some(value => node[valueKey] === value);\n}\nfunction getFormattedTree(nodes, data, props) {\n const {\n childrenKey,\n cascade,\n disabledItemValues,\n valueKey\n } = props;\n return data.map(node => {\n const formatted = {\n ...node\n };\n const curNode = nodes[node.refKey];\n if (curNode) {\n const checkState = !(0, _isUndefined2.default)(cascade) ? getNodeCheckState(curNode, {\n cascade,\n nodes,\n childrenKey,\n disabledItemValues,\n valueKey\n }) : undefined;\n formatted.check = curNode.check;\n formatted.uncheckable = curNode.uncheckable;\n (0, _utils.attachParent)(formatted, curNode.parent);\n formatted.checkState = checkState;\n if (node[childrenKey]?.length > 0) {\n formatted[childrenKey] = getFormattedTree(nodes, formatted[childrenKey], props);\n }\n }\n return formatted;\n });\n}\n\n/**\n * Determines the disabled state of a tree node.\n * If a parent node is disabled, all its children should also be disabled.\n */\nfunction getDisabledState(nodes, node, props) {\n const {\n disabledItemValues = [],\n valueKey\n } = props;\n if (!(0, _isNil2.default)(node.refKey) && (0, _isNil2.default)(nodes[node.refKey])) {\n return false;\n }\n\n // Check if the current node is disabled\n const isCurrentNodeDisabled = disabledItemValues.some(value => node.refKey && (0, _utils.shallowEqual)(nodes[node.refKey][valueKey], value));\n if (isCurrentNodeDisabled) {\n return true;\n }\n\n // Check if any parent node is disabled\n let currentNode = node;\n while (currentNode.parent) {\n const parentNode = currentNode.parent;\n const parentRefKey = parentNode.refKey;\n if (!(0, _isNil2.default)(parentRefKey) && !(0, _isNil2.default)(nodes[parentRefKey]) && disabledItemValues.some(value => (0, _utils.shallowEqual)(nodes[parentRefKey][valueKey], value))) {\n return true;\n }\n currentNode = parentNode;\n }\n return false;\n}\n\n/**\n * Returns the default value for the check tree.\n */\nfunction getCheckTreeDefaultValue(value, uncheckableItemValues) {\n if (Array.isArray(value) && Array.isArray(uncheckableItemValues)) {\n const filtered = value.filter(v => !uncheckableItemValues.includes(v));\n return filtered.length === value.length ? value : filtered;\n }\n return value;\n}\n\n/**\n * Retrieves the selected items from the given nodes.\n */\nfunction getSelectedItems(nodes, values) {\n const checkedItems = [];\n values.forEach(value => {\n const refKey = (0, _utils2.formatNodeRefKey)(value);\n const node = nodes[refKey];\n if (!(0, _isNil2.default)(node)) {\n checkedItems.push(node);\n }\n });\n return checkedItems;\n}\n/**\n * Calculates the check state of a node in a check tree.\n */\nfunction getNodeCheckState(node, options) {\n const {\n nodes,\n cascade,\n childrenKey,\n disabledItemValues = [],\n valueKey = 'value'\n } = options;\n if (node.refKey === undefined) {\n return _constants.CHECK_STATE.UNCHECK;\n }\n if ((0, _isNil2.default)(nodes[node.refKey])) {\n return _constants.CHECK_STATE.UNCHECK;\n }\n if (!node[childrenKey] || !node[childrenKey].length || !cascade) {\n nodes[node.refKey].checkAll = false;\n return node.check ? _constants.CHECK_STATE.CHECK : _constants.CHECK_STATE.UNCHECK;\n }\n if (isEveryChildChecked(node, {\n nodes,\n childrenKey,\n disabledItemValues,\n valueKey\n })) {\n nodes[node.refKey].checkAll = true;\n nodes[node.refKey].check = true;\n return _constants.CHECK_STATE.CHECK;\n }\n if (isSomeChildChecked(nodes, node, childrenKey, disabledItemValues, valueKey)) {\n nodes[node.refKey].checkAll = false;\n return _constants.CHECK_STATE.INDETERMINATE;\n }\n return _constants.CHECK_STATE.UNCHECK;\n}\n\n//# sourceURL=webpack://rsuite/./src/CheckTree/utils.ts?");
|
|
2120
2120
|
|
|
2121
2121
|
/***/ }),
|
|
2122
2122
|
|
|
@@ -2897,7 +2897,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
|
|
|
2897
2897
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2898
2898
|
|
|
2899
2899
|
"use strict";
|
|
2900
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _FormControl = _interopRequireDefault(__webpack_require__(/*! ../FormControl */ \"./src/FormControl/index.tsx\"));\nvar _FormControlLabel = _interopRequireDefault(__webpack_require__(/*! ../FormControlLabel */ \"./src/FormControlLabel/index.tsx\"));\nvar _FormErrorMessage = _interopRequireDefault(__webpack_require__(/*! ../FormErrorMessage */ \"./src/FormErrorMessage/index.tsx\"));\nvar _FormGroup = _interopRequireDefault(__webpack_require__(/*! ../FormGroup */ \"./src/FormGroup/index.tsx\"));\nvar _FormHelpText = _interopRequireDefault(__webpack_require__(/*! ../FormHelpText */ \"./src/FormHelpText/index.tsx\"));\nvar _FormStack = _interopRequireDefault(__webpack_require__(/*! ../FormStack */ \"./src/FormStack/index.tsx\"));\nvar _Box = _interopRequireDefault(__webpack_require__(/*! ../internals/Box */ \"./src/internals/Box/index.tsx\"));\nvar _useSchemaModel = _interopRequireDefault(__webpack_require__(/*! ./hooks/useSchemaModel */ \"./src/Form/hooks/useSchemaModel.ts\"));\nvar _useFormValidate = _interopRequireDefault(__webpack_require__(/*! ./hooks/useFormValidate */ \"./src/Form/hooks/useFormValidate.ts\"));\nvar _useFormValue = _interopRequireDefault(__webpack_require__(/*! ./hooks/useFormValue */ \"./src/Form/hooks/useFormValue.ts\"));\nvar _useFormRef = _interopRequireDefault(__webpack_require__(/*! ./hooks/useFormRef */ \"./src/Form/hooks/useFormRef.ts\"));\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _schemaTyped = __webpack_require__(/*! schema-typed */ \"./node_modules/schema-typed/es/index.js\");\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _FormContext = __webpack_require__(/*! ./FormContext */ \"./src/Form/FormContext.tsx\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Form/Form.tsx\";\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nconst defaultSchema = (0, _schemaTyped.SchemaModel)({});\nconst Subcomponents = {\n Stack: _FormStack.default,\n Control: _FormControl.default,\n Label: _FormControlLabel.default,\n ErrorMessage: _FormErrorMessage.default,\n Group: _FormGroup.default,\n Text: _FormHelpText.default,\n /**\n * @deprecated Use `Form.Label` instead\n */\n ControlLabel: _FormControlLabel.default,\n /**\n * @deprecated Use `Form.Text` instead\n */\n HelpText: _FormHelpText.default\n};\n\n/**\n * The `Form` component is a form interface for collecting and validating user input.\n * @see https://rsuitejs.com/components/form\n */\nconst Form = (0, _utils.forwardRef)((props, ref) => {\n const {\n propsWithDefaults\n } = (0, _hooks.useCustom)('Form', props);\n const {\n checkTrigger = 'change',\n errorFromContext = true,\n formDefaultValue = {},\n formValue: controlledFormValue,\n formError: controlledFormError,\n nestedField = false,\n fluid,\n layout,\n model: formModel = defaultSchema,\n readOnly,\n plaintext,\n children,\n disabled,\n onSubmit,\n onReset,\n onCheck,\n onError,\n onChange,\n ...rest\n } = propsWithDefaults;\n const {\n getCombinedModel,\n pushFieldRule,\n removeFieldRule\n } = (0, _useSchemaModel.default)(formModel, nestedField);\n const {\n formValue,\n onRemoveValue,\n setFieldValue,\n resetFormValue\n } = (0, _useFormValue.default)(controlledFormValue, {\n formDefaultValue,\n nestedField\n });\n const formValidateProps = {\n formValue,\n getCombinedModel,\n onCheck,\n onError,\n nestedField\n };\n const {\n formError,\n onRemoveError,\n check,\n checkAsync,\n checkForField,\n checkFieldForNextValue,\n checkForFieldAsync,\n checkFieldAsyncForNextValue,\n cleanErrors,\n resetErrors,\n cleanErrorForField\n } = (0, _useFormValidate.default)(controlledFormError, formValidateProps);\n const submit = (0, _hooks.useEventCallback)(event => {\n // Check the form before submitting\n if (check()) {\n onSubmit?.(formValue, event);\n }\n });\n const reset = (0, _hooks.useEventCallback)(event => {\n resetErrors();\n const resetValue = resetFormValue();\n if (resetValue) {\n onChange?.(resetValue);\n }\n onReset?.(resetValue, event);\n });\n const handleSubmit = (0, _hooks.useEventCallback)(event => {\n event?.preventDefault?.();\n event?.stopPropagation?.();\n\n // Prevent submission when the form is disabled, readOnly, or plaintext\n if (disabled || readOnly || plaintext) {\n return;\n }\n submit(event);\n });\n const handleReset = (0, _hooks.useEventCallback)(event => {\n event?.preventDefault?.();\n event?.stopPropagation?.();\n\n // Prevent reset when the form is disabled, readOnly, or plaintext\n if (disabled || readOnly || plaintext) {\n return;\n }\n reset(event);\n });\n const imperativeMethods = {\n check,\n checkForField,\n checkAsync,\n checkForFieldAsync,\n cleanErrors,\n cleanErrorForField,\n reset,\n resetErrors,\n submit\n };\n const formRef = (0, _useFormRef.default)(ref, {\n imperativeMethods\n });\n const removeFieldValue = (0, _hooks.useEventCallback)(name => {\n const formValue = onRemoveValue(name);\n onChange?.(formValue);\n });\n const removeFieldError = (0, _hooks.useEventCallback)(name => {\n onRemoveError(name);\n });\n const onFieldChange = (0, _hooks.useEventCallback)((name, value, event) => {\n const nextFormValue = setFieldValue(name, value);\n onChange?.(nextFormValue, event);\n });\n const formContextValue = {\n errorFromContext,\n checkTrigger,\n plaintext,\n readOnly,\n disabled,\n formError,\n nestedField,\n pushFieldRule,\n removeFieldValue,\n removeFieldError,\n removeFieldRule,\n onFieldChange,\n checkFieldForNextValue,\n checkFieldAsyncForNextValue\n };\n const formChild = (0, _react.useMemo)(() => {\n return fluid || layout ? /*#__PURE__*/_react.default.createElement(_FormStack.default, {\n fluid: fluid,\n layout: layout,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber:
|
|
2900
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _FormControl = _interopRequireDefault(__webpack_require__(/*! ../FormControl */ \"./src/FormControl/index.tsx\"));\nvar _FormControlLabel = _interopRequireDefault(__webpack_require__(/*! ../FormControlLabel */ \"./src/FormControlLabel/index.tsx\"));\nvar _FormErrorMessage = _interopRequireDefault(__webpack_require__(/*! ../FormErrorMessage */ \"./src/FormErrorMessage/index.tsx\"));\nvar _FormGroup = _interopRequireDefault(__webpack_require__(/*! ../FormGroup */ \"./src/FormGroup/index.tsx\"));\nvar _FormHelpText = _interopRequireDefault(__webpack_require__(/*! ../FormHelpText */ \"./src/FormHelpText/index.tsx\"));\nvar _FormStack = _interopRequireDefault(__webpack_require__(/*! ../FormStack */ \"./src/FormStack/index.tsx\"));\nvar _Box = _interopRequireDefault(__webpack_require__(/*! ../internals/Box */ \"./src/internals/Box/index.tsx\"));\nvar _useSchemaModel = _interopRequireDefault(__webpack_require__(/*! ./hooks/useSchemaModel */ \"./src/Form/hooks/useSchemaModel.ts\"));\nvar _useFormValidate = _interopRequireDefault(__webpack_require__(/*! ./hooks/useFormValidate */ \"./src/Form/hooks/useFormValidate.ts\"));\nvar _useFormValue = _interopRequireDefault(__webpack_require__(/*! ./hooks/useFormValue */ \"./src/Form/hooks/useFormValue.ts\"));\nvar _useFormRef = _interopRequireDefault(__webpack_require__(/*! ./hooks/useFormRef */ \"./src/Form/hooks/useFormRef.ts\"));\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _schemaTyped = __webpack_require__(/*! schema-typed */ \"./node_modules/schema-typed/es/index.js\");\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _FormContext = __webpack_require__(/*! ./FormContext */ \"./src/Form/FormContext.tsx\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Form/Form.tsx\";\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nconst defaultSchema = (0, _schemaTyped.SchemaModel)({});\nconst Subcomponents = {\n Stack: _FormStack.default,\n Control: _FormControl.default,\n Label: _FormControlLabel.default,\n ErrorMessage: _FormErrorMessage.default,\n Group: _FormGroup.default,\n Text: _FormHelpText.default,\n /**\n * @deprecated Use `Form.Label` instead\n */\n ControlLabel: _FormControlLabel.default,\n /**\n * @deprecated Use `Form.Text` instead\n */\n HelpText: _FormHelpText.default\n};\n\n/**\n * The `Form` component is a form interface for collecting and validating user input.\n * @see https://rsuitejs.com/components/form\n */\nconst Form = (0, _utils.forwardRef)((props, ref) => {\n const {\n propsWithDefaults\n } = (0, _hooks.useCustom)('Form', props);\n const {\n checkTrigger = 'change',\n errorFromContext = true,\n formDefaultValue = {},\n formValue: controlledFormValue,\n formError: controlledFormError,\n nestedField = false,\n fluid,\n layout,\n model: formModel = defaultSchema,\n resolver,\n readOnly,\n plaintext,\n children,\n disabled,\n onSubmit,\n onReset,\n onCheck,\n onError,\n onChange,\n ...rest\n } = propsWithDefaults;\n const {\n getCombinedModel,\n pushFieldRule,\n removeFieldRule\n } = (0, _useSchemaModel.default)(formModel, nestedField);\n const {\n formValue,\n onRemoveValue,\n setFieldValue,\n resetFormValue\n } = (0, _useFormValue.default)(controlledFormValue, {\n formDefaultValue,\n nestedField\n });\n const formValidateProps = {\n formValue,\n getCombinedModel,\n onCheck,\n onError,\n nestedField,\n resolver\n };\n const {\n formError,\n onRemoveError,\n check,\n checkAsync,\n checkForField,\n checkFieldForNextValue,\n checkForFieldAsync,\n checkFieldAsyncForNextValue,\n cleanErrors,\n resetErrors,\n cleanErrorForField\n } = (0, _useFormValidate.default)(controlledFormError, formValidateProps);\n const submit = (0, _hooks.useEventCallback)(event => {\n if (resolver) {\n // When a resolver is provided, always use the async validation path so that\n // both sync and async resolvers are handled correctly.\n checkAsync().then(({\n hasError\n }) => {\n if (!hasError) {\n onSubmit?.(formValue, event);\n }\n });\n return;\n }\n\n // Check the form before submitting\n if (check()) {\n onSubmit?.(formValue, event);\n }\n });\n const reset = (0, _hooks.useEventCallback)(event => {\n resetErrors();\n const resetValue = resetFormValue();\n if (resetValue) {\n onChange?.(resetValue);\n }\n onReset?.(resetValue, event);\n });\n const handleSubmit = (0, _hooks.useEventCallback)(event => {\n event?.preventDefault?.();\n event?.stopPropagation?.();\n\n // Prevent submission when the form is disabled, readOnly, or plaintext\n if (disabled || readOnly || plaintext) {\n return;\n }\n submit(event);\n });\n const handleReset = (0, _hooks.useEventCallback)(event => {\n event?.preventDefault?.();\n event?.stopPropagation?.();\n\n // Prevent reset when the form is disabled, readOnly, or plaintext\n if (disabled || readOnly || plaintext) {\n return;\n }\n reset(event);\n });\n const imperativeMethods = {\n check,\n checkForField,\n checkAsync,\n checkForFieldAsync,\n cleanErrors,\n cleanErrorForField,\n reset,\n resetErrors,\n submit\n };\n const formRef = (0, _useFormRef.default)(ref, {\n imperativeMethods\n });\n const removeFieldValue = (0, _hooks.useEventCallback)(name => {\n const formValue = onRemoveValue(name);\n onChange?.(formValue);\n });\n const removeFieldError = (0, _hooks.useEventCallback)(name => {\n onRemoveError(name);\n });\n const onFieldChange = (0, _hooks.useEventCallback)((name, value, event) => {\n const nextFormValue = setFieldValue(name, value);\n onChange?.(nextFormValue, event);\n });\n const formContextValue = {\n errorFromContext,\n checkTrigger,\n plaintext,\n readOnly,\n disabled,\n formError,\n nestedField,\n pushFieldRule,\n removeFieldValue,\n removeFieldError,\n removeFieldRule,\n onFieldChange,\n checkFieldForNextValue,\n checkFieldAsyncForNextValue\n };\n const formChild = (0, _react.useMemo)(() => {\n return fluid || layout ? /*#__PURE__*/_react.default.createElement(_FormStack.default, {\n fluid: fluid,\n layout: layout,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 348,\n columnNumber: 7\n }\n }, children) : children;\n }, [fluid, children, layout]);\n return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({\n as: \"form\",\n \"data-rs\": \"form\",\n \"data-disabled\": disabled,\n \"data-readonly\": readOnly,\n \"data-plaintext\": plaintext,\n ref: formRef,\n onSubmit: handleSubmit,\n onReset: handleReset\n }, rest, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 357,\n columnNumber: 5\n }\n }), /*#__PURE__*/_react.default.createElement(_FormContext.FormProvider, {\n value: formContextValue,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 368,\n columnNumber: 7\n }\n }, /*#__PURE__*/_react.default.createElement(_FormContext.FormValueProvider, {\n value: formValue,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 369,\n columnNumber: 9\n }\n }, formChild)));\n}, Subcomponents);\nForm.displayName = 'Form';\nvar _default = exports[\"default\"] = Form;\n\n//# sourceURL=webpack://rsuite/./src/Form/Form.tsx?");
|
|
2901
2901
|
|
|
2902
2902
|
/***/ }),
|
|
2903
2903
|
|
|
@@ -2930,7 +2930,7 @@ eval("\n\nexports.__esModule = true;\nexports[\"default\"] = useFormRef;\nvar _r
|
|
|
2930
2930
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2931
2931
|
|
|
2932
2932
|
"use strict";
|
|
2933
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = useFormValidate;\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _set = _interopRequireDefault(__webpack_require__(/*! lodash/set */ \"./node_modules/lodash/set.js\"));\nvar _hooks = __webpack_require__(/*! ../../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _nameToPath = __webpack_require__(/*! ../../useFormControl/utils/nameToPath */ \"./src/useFormControl/utils/nameToPath.ts\");\nfunction useFormValidate(_formError, props) {\n const {\n formValue,\n getCombinedModel,\n onCheck,\n onError,\n nestedField\n } = props;\n const [realFormError, setFormError] = (0, _hooks.useControlled)(_formError, {});\n const checkOptions = {\n nestedObject: nestedField\n };\n const realFormErrorRef = (0, _react.useRef)(realFormError);\n realFormErrorRef.current = realFormError;\n\n /**\n * Validate the form data and return a boolean.\n * The error message after verification is returned in the callback.\n * @param callback\n */\n const check = (0, _hooks.useEventCallback)(callback => {\n const formError = {};\n let errorCount = 0;\n const model = getCombinedModel();\n const checkField = (key, type, value, formErrorObj) => {\n model.setSchemaOptionsForAllType(formValue || {});\n const checkResult = type.check(value, formValue, key);\n if (checkResult.hasError === true) {\n errorCount += 1;\n formErrorObj[key] = checkResult?.errorMessage || checkResult;\n }\n\n // Check nested object\n if (type?.objectTypeSchemaSpec) {\n Object.entries(type.objectTypeSchemaSpec).forEach(([nestedKey, nestedType]) => {\n formErrorObj[key] = formErrorObj[key] || {\n object: {}\n };\n checkField(nestedKey, nestedType, value?.[nestedKey], formErrorObj[key].object);\n });\n }\n };\n Object.entries(model.getSchemaSpec()).forEach(([key, type]) => {\n checkField(key, type, formValue[key], formError);\n });\n setFormError(formError);\n onCheck?.(formError);\n callback?.(formError);\n if (errorCount > 0) {\n onError?.(formError);\n return false;\n }\n return true;\n });\n const checkFieldForNextValue = (0, _hooks.useEventCallback)((fieldName, nextValue, callback) => {\n const model = getCombinedModel();\n const resultOfCurrentField = model.checkForField(fieldName, nextValue, checkOptions);\n let nextFormError = {\n ...realFormError\n };\n /**\n * when using proxy of schema-typed, we need to use getCheckResult to get all errors,\n * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,\n * so nestedField does not support proxy here\n */\n if (nestedField) {\n nextFormError = (0, _set.default)(nextFormError, (0, _nameToPath.nameToPath)(fieldName), resultOfCurrentField);\n setFormError(nextFormError);\n onCheck?.(nextFormError);\n callback?.(resultOfCurrentField);\n if (resultOfCurrentField.hasError) {\n onError?.(nextFormError);\n }\n return !resultOfCurrentField.hasError;\n } else {\n const allResults = model.getCheckResult();\n let hasError = false;\n Object.keys(allResults).forEach(key => {\n const currentResult = allResults[key];\n if (currentResult.hasError) {\n nextFormError[key] = currentResult.errorMessage || currentResult;\n hasError = true;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {\n [key]: _,\n ...rest\n } = nextFormError;\n nextFormError = rest;\n }\n });\n setFormError(nextFormError);\n onCheck?.(nextFormError);\n callback?.(resultOfCurrentField);\n if (hasError) {\n onError?.(nextFormError);\n }\n return !hasError;\n }\n });\n /**\n * Check the data field\n * @param fieldName\n * @param callback\n */\n const checkForField = (0, _hooks.useEventCallback)((fieldName, callback) => {\n return checkFieldForNextValue(fieldName, formValue || {}, callback);\n });\n\n /**\n * Check form data asynchronously and return a Promise\n */\n const checkAsync = (0, _hooks.useEventCallback)(() => {\n const promises = [];\n const keys = [];\n const model = getCombinedModel();\n Object.keys(model.getSchemaSpec()).forEach(key => {\n keys.push(key);\n promises.push(model.checkForFieldAsync(key, formValue || {}, checkOptions));\n });\n return Promise.all(promises).then(values => {\n const formError = {};\n let errorCount = 0;\n for (let i = 0; i < values.length; i++) {\n if (values[i].hasError) {\n errorCount += 1;\n formError[keys[i]] = values[i].errorMessage;\n }\n }\n onCheck?.(formError);\n setFormError(formError);\n if (errorCount > 0) {\n onError?.(formError);\n }\n return {\n hasError: errorCount > 0,\n formError\n };\n });\n });\n const checkFieldAsyncForNextValue = (0, _hooks.useEventCallback)((fieldName, nextValue) => {\n const model = getCombinedModel();\n return model.checkForFieldAsync(fieldName, nextValue, checkOptions).then(resultOfCurrentField => {\n let nextFormError = {\n ...realFormError\n };\n /**\n * when using proxy of schema-typed, we need to use getCheckResult to get all errors,\n * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,\n * so nestedField does not support proxy here\n */\n\n if (nestedField) {\n nextFormError = (0, _set.default)(nextFormError, (0, _nameToPath.nameToPath)(fieldName), resultOfCurrentField);\n onCheck?.(nextFormError);\n setFormError(nextFormError);\n if (resultOfCurrentField.hasError) {\n onError?.(nextFormError);\n }\n return resultOfCurrentField;\n } else {\n const allResults = model.getCheckResult();\n let hasError = false;\n Object.keys(allResults).forEach(key => {\n const currentResult = allResults[key];\n if (currentResult.hasError) {\n nextFormError[key] = currentResult.errorMessage || currentResult;\n hasError = true;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {\n [key]: _,\n ...rest\n } = nextFormError;\n nextFormError = rest;\n }\n });\n setFormError(nextFormError);\n onCheck?.(nextFormError);\n if (hasError) {\n onError?.(nextFormError);\n }\n return resultOfCurrentField;\n }\n });\n });\n\n /**\n * Asynchronously check form fields and return Promise\n * @param fieldName\n */\n const checkForFieldAsync = (0, _hooks.useEventCallback)(fieldName => {\n return checkFieldAsyncForNextValue(fieldName, formValue || {});\n });\n const onRemoveError = (0, _react.useCallback)(name => {\n /**\n * when this function is called when the children component is unmount,\n * it's an old render frame so use Ref to get future error\n */\n const formError = (0, _omit.default)(realFormErrorRef.current, [nestedField ? (0, _nameToPath.nameToPath)(name) : name]);\n realFormErrorRef.current = formError;\n setFormError(formError);\n onCheck?.(formError);\n return formError;\n }, [nestedField, onCheck, setFormError]);\n const cleanErrors = (0, _hooks.useEventCallback)(() => {\n setFormError({});\n });\n const resetErrors = (0, _hooks.useEventCallback)((formError = {}) => {\n setFormError(formError);\n });\n const cleanErrorForField = (0, _hooks.useEventCallback)(fieldName => {\n setFormError((0, _omit.default)(realFormError, [nestedField ? (0, _nameToPath.nameToPath)(fieldName) : fieldName]));\n });\n return {\n formError: realFormError,\n check,\n checkForField,\n checkFieldForNextValue,\n checkAsync,\n checkForFieldAsync,\n checkFieldAsyncForNextValue,\n cleanErrors,\n resetErrors,\n cleanErrorForField,\n onRemoveError\n };\n}\n\n//# sourceURL=webpack://rsuite/./src/Form/hooks/useFormValidate.ts?");
|
|
2933
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = useFormValidate;\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _set = _interopRequireDefault(__webpack_require__(/*! lodash/set */ \"./node_modules/lodash/set.js\"));\nvar _hooks = __webpack_require__(/*! ../../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _nameToPath = __webpack_require__(/*! ../../useFormControl/utils/nameToPath */ \"./src/useFormControl/utils/nameToPath.ts\");\nfunction useFormValidate(_formError, props) {\n const {\n formValue,\n getCombinedModel,\n onCheck,\n onError,\n nestedField,\n resolver\n } = props;\n const [realFormError, setFormError] = (0, _hooks.useControlled)(_formError, {});\n const checkOptions = {\n nestedObject: nestedField\n };\n const realFormErrorRef = (0, _react.useRef)(realFormError);\n realFormErrorRef.current = realFormError;\n\n /**\n * Returns true when an error value is considered non-empty (i.e. the field has an error).\n */\n const isValidError = error => error !== undefined && error !== null && error !== '';\n\n /**\n * Merges resolver errors into the current form error state, removing entries that\n * are no longer invalid according to the latest resolver result.\n */\n const mergeResolverErrors = (current, resolverErrors) => {\n const next = {\n ...current\n };\n Object.keys({\n ...current,\n ...resolverErrors\n }).forEach(key => {\n if (isValidError(resolverErrors[key])) {\n next[key] = resolverErrors[key];\n } else {\n delete next[key];\n }\n });\n return next;\n };\n\n /**\n * Validate the form data and return a boolean.\n * The error message after verification is returned in the callback.\n *\n * When a `resolver` is provided and the resolver returns a Promise (async resolver),\n * this method cannot resolve the result synchronously. In that case it returns `false`\n * immediately and you should use `checkAsync()` instead.\n * @param callback\n */\n const check = (0, _hooks.useEventCallback)(callback => {\n if (resolver) {\n const result = resolver(formValue || {});\n\n // Async resolver: cannot handle synchronously\n if (result instanceof Promise) {\n if (true) {\n console.warn('[rsuite] The `resolver` provided to <Form> returns a Promise. ' + 'Use `checkAsync()` or rely on `onSubmit` for async validation.');\n }\n return false;\n }\n const {\n errors\n } = result;\n const hasError = Object.keys(errors).length > 0;\n setFormError(errors);\n onCheck?.(errors);\n callback?.(errors);\n if (hasError) {\n onError?.(errors);\n }\n return !hasError;\n }\n const formError = {};\n let errorCount = 0;\n const model = getCombinedModel();\n const checkField = (key, type, value, formErrorObj) => {\n model.setSchemaOptionsForAllType(formValue || {});\n const checkResult = type.check(value, formValue, key);\n if (checkResult.hasError === true) {\n errorCount += 1;\n formErrorObj[key] = checkResult?.errorMessage || checkResult;\n }\n\n // Check nested object\n if (type?.objectTypeSchemaSpec) {\n Object.entries(type.objectTypeSchemaSpec).forEach(([nestedKey, nestedType]) => {\n formErrorObj[key] = formErrorObj[key] || {\n object: {}\n };\n checkField(nestedKey, nestedType, value?.[nestedKey], formErrorObj[key].object);\n });\n }\n };\n Object.entries(model.getSchemaSpec()).forEach(([key, type]) => {\n checkField(key, type, formValue[key], formError);\n });\n setFormError(formError);\n onCheck?.(formError);\n callback?.(formError);\n if (errorCount > 0) {\n onError?.(formError);\n return false;\n }\n return true;\n });\n const checkFieldForNextValue = (0, _hooks.useEventCallback)((fieldName, nextValue, callback) => {\n if (resolver) {\n const result = resolver(nextValue);\n if (result instanceof Promise) {\n if (true) {\n console.warn('[rsuite] The `resolver` provided to <Form> returns a Promise. ' + 'Use `checkAsync()` or `checkForFieldAsync()` for async validation.');\n }\n return false;\n }\n const {\n errors\n } = result;\n const fieldError = errors[fieldName];\n const hasFieldError = isValidError(fieldError);\n // Merge resolver errors with existing errors, clearing fields that now pass\n const nextFormError = mergeResolverErrors(realFormError, errors);\n setFormError(nextFormError);\n onCheck?.(nextFormError);\n const callbackResult = {\n hasError: hasFieldError,\n errorMessage: fieldError\n };\n callback?.(hasFieldError ? callbackResult : {\n hasError: false\n });\n if (Object.keys(nextFormError).length > 0) {\n onError?.(nextFormError);\n }\n return !hasFieldError;\n }\n const model = getCombinedModel();\n const resultOfCurrentField = model.checkForField(fieldName, nextValue, checkOptions);\n let nextFormError = {\n ...realFormError\n };\n /**\n * when using proxy of schema-typed, we need to use getCheckResult to get all errors,\n * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,\n * so nestedField does not support proxy here\n */\n if (nestedField) {\n nextFormError = (0, _set.default)(nextFormError, (0, _nameToPath.nameToPath)(fieldName), resultOfCurrentField);\n setFormError(nextFormError);\n onCheck?.(nextFormError);\n callback?.(resultOfCurrentField);\n if (resultOfCurrentField.hasError) {\n onError?.(nextFormError);\n }\n return !resultOfCurrentField.hasError;\n } else {\n const allResults = model.getCheckResult();\n let hasError = false;\n Object.keys(allResults).forEach(key => {\n const currentResult = allResults[key];\n if (currentResult.hasError) {\n nextFormError[key] = currentResult.errorMessage || currentResult;\n hasError = true;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {\n [key]: _,\n ...rest\n } = nextFormError;\n nextFormError = rest;\n }\n });\n setFormError(nextFormError);\n onCheck?.(nextFormError);\n callback?.(resultOfCurrentField);\n if (hasError) {\n onError?.(nextFormError);\n }\n return !hasError;\n }\n });\n /**\n * Check the data field\n * @param fieldName\n * @param callback\n */\n const checkForField = (0, _hooks.useEventCallback)((fieldName, callback) => {\n return checkFieldForNextValue(fieldName, formValue || {}, callback);\n });\n\n /**\n * Check form data asynchronously and return a Promise\n */\n const checkAsync = (0, _hooks.useEventCallback)(() => {\n if (resolver) {\n return Promise.resolve(resolver(formValue || {})).then(({\n errors\n }) => {\n const hasError = Object.keys(errors).length > 0;\n onCheck?.(errors);\n setFormError(errors);\n if (hasError) {\n onError?.(errors);\n }\n return {\n hasError,\n formError: errors\n };\n });\n }\n const promises = [];\n const keys = [];\n const model = getCombinedModel();\n Object.keys(model.getSchemaSpec()).forEach(key => {\n keys.push(key);\n promises.push(model.checkForFieldAsync(key, formValue || {}, checkOptions));\n });\n return Promise.all(promises).then(values => {\n const formError = {};\n let errorCount = 0;\n for (let i = 0; i < values.length; i++) {\n if (values[i].hasError) {\n errorCount += 1;\n formError[keys[i]] = values[i].errorMessage;\n }\n }\n onCheck?.(formError);\n setFormError(formError);\n if (errorCount > 0) {\n onError?.(formError);\n }\n return {\n hasError: errorCount > 0,\n formError\n };\n });\n });\n const checkFieldAsyncForNextValue = (0, _hooks.useEventCallback)((fieldName, nextValue) => {\n if (resolver) {\n return Promise.resolve(resolver(nextValue)).then(({\n errors\n }) => {\n const fieldError = errors[fieldName];\n const hasFieldError = isValidError(fieldError);\n const nextFormError = mergeResolverErrors(realFormError, errors);\n onCheck?.(nextFormError);\n setFormError(nextFormError);\n if (Object.keys(nextFormError).length > 0) {\n onError?.(nextFormError);\n }\n return {\n hasError: hasFieldError,\n errorMessage: fieldError\n };\n });\n }\n const model = getCombinedModel();\n return model.checkForFieldAsync(fieldName, nextValue, checkOptions).then(resultOfCurrentField => {\n let nextFormError = {\n ...realFormError\n };\n /**\n * when using proxy of schema-typed, we need to use getCheckResult to get all errors,\n * but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,\n * so nestedField does not support proxy here\n */\n\n if (nestedField) {\n nextFormError = (0, _set.default)(nextFormError, (0, _nameToPath.nameToPath)(fieldName), resultOfCurrentField);\n onCheck?.(nextFormError);\n setFormError(nextFormError);\n if (resultOfCurrentField.hasError) {\n onError?.(nextFormError);\n }\n return resultOfCurrentField;\n } else {\n const allResults = model.getCheckResult();\n let hasError = false;\n Object.keys(allResults).forEach(key => {\n const currentResult = allResults[key];\n if (currentResult.hasError) {\n nextFormError[key] = currentResult.errorMessage || currentResult;\n hasError = true;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {\n [key]: _,\n ...rest\n } = nextFormError;\n nextFormError = rest;\n }\n });\n setFormError(nextFormError);\n onCheck?.(nextFormError);\n if (hasError) {\n onError?.(nextFormError);\n }\n return resultOfCurrentField;\n }\n });\n });\n\n /**\n * Asynchronously check form fields and return Promise\n * @param fieldName\n */\n const checkForFieldAsync = (0, _hooks.useEventCallback)(fieldName => {\n return checkFieldAsyncForNextValue(fieldName, formValue || {});\n });\n const onRemoveError = (0, _react.useCallback)(name => {\n /**\n * when this function is called when the children component is unmount,\n * it's an old render frame so use Ref to get future error\n */\n const formError = (0, _omit.default)(realFormErrorRef.current, [nestedField ? (0, _nameToPath.nameToPath)(name) : name]);\n realFormErrorRef.current = formError;\n setFormError(formError);\n onCheck?.(formError);\n return formError;\n }, [nestedField, onCheck, setFormError]);\n const cleanErrors = (0, _hooks.useEventCallback)(() => {\n setFormError({});\n });\n const resetErrors = (0, _hooks.useEventCallback)((formError = {}) => {\n setFormError(formError);\n });\n const cleanErrorForField = (0, _hooks.useEventCallback)(fieldName => {\n setFormError((0, _omit.default)(realFormError, [nestedField ? (0, _nameToPath.nameToPath)(fieldName) : fieldName]));\n });\n return {\n formError: realFormError,\n check,\n checkForField,\n checkFieldForNextValue,\n checkAsync,\n checkForFieldAsync,\n checkFieldAsyncForNextValue,\n cleanErrors,\n resetErrors,\n cleanErrorForField,\n onRemoveError\n };\n}\n\n//# sourceURL=webpack://rsuite/./src/Form/hooks/useFormValidate.ts?");
|
|
2934
2934
|
|
|
2935
2935
|
/***/ }),
|
|
2936
2936
|
|
|
@@ -5988,7 +5988,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
|
|
|
5988
5988
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
5989
5989
|
|
|
5990
5990
|
"use strict";
|
|
5991
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\nvar _some = _interopRequireDefault(__webpack_require__(/*! lodash/some */ \"./node_modules/lodash/some.js\"));\nvar _TimelineItem = _interopRequireDefault(__webpack_require__(/*! ./TimelineItem */ \"./src/Timeline/TimelineItem.tsx\"));\nvar _Box = _interopRequireDefault(__webpack_require__(/*! ../internals/Box */ \"./src/internals/Box/index.tsx\"));\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Timeline/Timeline.tsx\";\nconst ACTIVE_FIRST = index => index === 0;\nconst ACTIVE_LAST = (index, totalItemsCount) => index === totalItemsCount - 1;\nconst SubcomponentsAndStaticMethods = {\n Item: _TimelineItem.default,\n ACTIVE_FIRST,\n ACTIVE_LAST\n};\n\n/**\n * The `Timeline` component is used to display a list of items in chronological order.\n *\n * @see https://rsuitejs.com/components/timeline\n */\nconst Timeline = (0, _utils.forwardRef)((props, ref) => {\n const {\n propsWithDefaults\n } = (0, _hooks.useCustom)('Timeline', props);\n const {\n as = 'ul',\n children,\n classPrefix = 'timeline',\n className,\n align = 'left',\n endless,\n isItemActive = ACTIVE_LAST,\n ...rest\n } = propsWithDefaults;\n const {\n merge,\n withPrefix\n } = (0, _hooks.useStyles)(classPrefix);\n const count = _utils.rch.count(children);\n const withTime = (0, _some.default)(_react.default.Children.toArray(children), item => item?.props?.time);\n const classes = merge(className, withPrefix(`align-${align}`, {\n endless,\n 'with-time': withTime\n }));\n return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({\n as: as,\n ref: ref,\n className: classes\n }, rest, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber:
|
|
5991
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\nvar _some = _interopRequireDefault(__webpack_require__(/*! lodash/some */ \"./node_modules/lodash/some.js\"));\nvar _TimelineItem = _interopRequireDefault(__webpack_require__(/*! ./TimelineItem */ \"./src/Timeline/TimelineItem.tsx\"));\nvar _Box = _interopRequireDefault(__webpack_require__(/*! ../internals/Box */ \"./src/internals/Box/index.tsx\"));\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Timeline/Timeline.tsx\";\nconst ACTIVE_FIRST = index => index === 0;\nconst ACTIVE_LAST = (index, totalItemsCount) => index === totalItemsCount - 1;\nconst SubcomponentsAndStaticMethods = {\n Item: _TimelineItem.default,\n ACTIVE_FIRST,\n ACTIVE_LAST\n};\n\n/**\n * The `Timeline` component is used to display a list of items in chronological order.\n *\n * @see https://rsuitejs.com/components/timeline\n */\nconst Timeline = (0, _utils.forwardRef)((props, ref) => {\n const {\n propsWithDefaults\n } = (0, _hooks.useCustom)('Timeline', props);\n const {\n as = 'ul',\n children,\n classPrefix = 'timeline',\n className,\n align = 'left',\n endless,\n reverse,\n isItemActive = ACTIVE_LAST,\n ...rest\n } = propsWithDefaults;\n const {\n merge,\n withPrefix\n } = (0, _hooks.useStyles)(classPrefix);\n const count = _utils.rch.count(children);\n const withTime = (0, _some.default)(_react.default.Children.toArray(children), item => item?.props?.time);\n const classes = merge(className, withPrefix(`align-${align}`, {\n endless,\n 'with-time': withTime,\n reverse\n }));\n const childrenArray = _react.default.Children.toArray(children);\n const orderedChildren = reverse ? [...childrenArray].reverse() : childrenArray;\n return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({\n as: as,\n ref: ref,\n className: classes\n }, rest, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 7\n }\n }), orderedChildren.map((child, domIndex) => {\n const logicalIndex = reverse ? count - 1 - domIndex : domIndex;\n return /*#__PURE__*/_react.default.cloneElement(child, {\n last: logicalIndex + 1 === count,\n INTERNAL_active: isItemActive(logicalIndex, count),\n align\n });\n }));\n}, SubcomponentsAndStaticMethods);\nTimeline.displayName = 'Timeline';\nvar _default = exports[\"default\"] = Timeline;\n\n//# sourceURL=webpack://rsuite/./src/Timeline/Timeline.tsx?");
|
|
5992
5992
|
|
|
5993
5993
|
/***/ }),
|
|
5994
5994
|
|
|
@@ -6131,7 +6131,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
|
|
|
6131
6131
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
6132
6132
|
|
|
6133
6133
|
"use strict";
|
|
6134
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _isNil = _interopRequireDefault(__webpack_require__(/*! lodash/isNil */ \"./node_modules/lodash/isNil.js\"));\nvar _useForceUpdate = _interopRequireDefault(__webpack_require__(/*! ./useForceUpdate */ \"./src/Tree/hooks/useForceUpdate.ts\"));\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _utils = __webpack_require__(/*! ../../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _utils2 = __webpack_require__(/*! ../utils */ \"./src/Tree/utils/index.ts\");\n/**\n * Custom hook that flattens a tree data structure into a map of nodes.\n *\n */\nfunction useFlattenTree(data, options) {\n const {\n value,\n labelKey,\n valueKey,\n childrenKey,\n uncheckableItemValues = [],\n disabledItemValues = [],\n cascade,\n multiple,\n callback\n } = options;\n const forceUpdate = (0, _useForceUpdate.default)();\n const flattenedNodes = (0, _react.useRef)({});\n const seenValues = (0, _react.useRef)(new Set());\n const updateTreeNodeCheckState = (0, _react.useCallback)((value = []) => {\n // Reset values to false\n Object.keys(flattenedNodes.current).forEach(refKey => {\n const node = flattenedNodes.current[refKey];\n\n // Check if this node or any of its parents is disabled\n const isNodeDisabled = disabledItemValues.some(disabledValue => (0, _utils.shallowEqual)(node[valueKey], disabledValue));\n let hasDisabledParent = false;\n let currentNode = node;\n while (currentNode.parent && !hasDisabledParent) {\n const parentRefKey = currentNode.parent.refKey;\n if (parentRefKey && flattenedNodes.current[parentRefKey]) {\n const parentValue = flattenedNodes.current[parentRefKey][valueKey];\n if (disabledItemValues.some(disabledValue => (0, _utils.shallowEqual)(parentValue, disabledValue))) {\n hasDisabledParent = true;\n }\n }\n currentNode = currentNode.parent;\n }\n\n // Skip disabled nodes - they should not be affected by cascade or value changes\n if (isNodeDisabled || hasDisabledParent) {\n return;\n }\n if (cascade && !(0, _isNil.default)(node.parent) && !(0, _isNil.default)(node.parent.refKey)) {\n node.check = flattenedNodes.current[node.parent.refKey].check;\n } else {\n node.check = false;\n }\n value.forEach(nodeVal => {\n if ((0, _utils.shallowEqual)(flattenedNodes.current[refKey][valueKey], nodeVal) && !uncheckableItemValues.some(uncheckableValue => (0, _utils.shallowEqual)(nodeVal, uncheckableValue))) {\n flattenedNodes.current[refKey].check = true;\n }\n });\n });\n }, [cascade, uncheckableItemValues, disabledItemValues, valueKey]);\n const flattenTreeData = (0, _react.useCallback)((treeData, parent, layer = 1) => {\n if (!Array.isArray(treeData) || treeData.length === 0) {\n return [];\n }\n treeData.map(node => {\n const value = node[valueKey];\n\n // Check for duplicate values\n if (seenValues.current.has(value)) {\n console.error(`[rsuite] The value '${value}' is duplicated. Each node in the tree data must have a unique value.`);\n }\n seenValues.current.add(value);\n const refKey = (0, _utils2.formatNodeRefKey)(value);\n node.refKey = refKey;\n flattenedNodes.current[refKey] = {\n layer,\n [labelKey]: node[labelKey],\n [valueKey]: node[valueKey],\n uncheckable: uncheckableItemValues.some(value => (0, _utils.shallowEqual)(node[valueKey], value)),\n ...node\n };\n if (parent) {\n flattenedNodes.current[refKey].parent = (0, _omit.default)(parent, 'parent', 'children');\n }\n flattenTreeData(node[childrenKey], node, layer + 1);\n });\n callback?.(flattenedNodes.current);\n forceUpdate();\n }, [callback, forceUpdate, valueKey, labelKey, uncheckableItemValues, childrenKey]);\n (0, _react.useEffect)(() => {\n
|
|
6134
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _omit = _interopRequireDefault(__webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\"));\nvar _isNil = _interopRequireDefault(__webpack_require__(/*! lodash/isNil */ \"./node_modules/lodash/isNil.js\"));\nvar _useForceUpdate = _interopRequireDefault(__webpack_require__(/*! ./useForceUpdate */ \"./src/Tree/hooks/useForceUpdate.ts\"));\nvar _react = __webpack_require__(/*! react */ \"react\");\nvar _utils = __webpack_require__(/*! ../../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _utils2 = __webpack_require__(/*! ../utils */ \"./src/Tree/utils/index.ts\");\n/**\n * Custom hook that flattens a tree data structure into a map of nodes.\n *\n */\nfunction useFlattenTree(data, options) {\n const {\n value,\n labelKey,\n valueKey,\n childrenKey,\n uncheckableItemValues = [],\n disabledItemValues = [],\n cascade,\n multiple,\n callback\n } = options;\n const forceUpdate = (0, _useForceUpdate.default)();\n const flattenedNodes = (0, _react.useRef)({});\n const seenValues = (0, _react.useRef)(new Set());\n const updateTreeNodeCheckState = (0, _react.useCallback)((value = []) => {\n // Reset values to false\n Object.keys(flattenedNodes.current).forEach(refKey => {\n const node = flattenedNodes.current[refKey];\n\n // Check if this node or any of its parents is disabled\n const isNodeDisabled = disabledItemValues.some(disabledValue => (0, _utils.shallowEqual)(node[valueKey], disabledValue));\n let hasDisabledParent = false;\n let currentNode = node;\n while (currentNode.parent && !hasDisabledParent) {\n const parentRefKey = currentNode.parent.refKey;\n if (parentRefKey && flattenedNodes.current[parentRefKey]) {\n const parentValue = flattenedNodes.current[parentRefKey][valueKey];\n if (disabledItemValues.some(disabledValue => (0, _utils.shallowEqual)(parentValue, disabledValue))) {\n hasDisabledParent = true;\n }\n }\n currentNode = currentNode.parent;\n }\n\n // Skip disabled nodes - they should not be affected by cascade or value changes\n if (isNodeDisabled || hasDisabledParent) {\n return;\n }\n if (cascade && !(0, _isNil.default)(node.parent) && !(0, _isNil.default)(node.parent.refKey)) {\n node.check = flattenedNodes.current[node.parent.refKey].check;\n } else {\n node.check = false;\n }\n value.forEach(nodeVal => {\n if ((0, _utils.shallowEqual)(flattenedNodes.current[refKey][valueKey], nodeVal) && !uncheckableItemValues.some(uncheckableValue => (0, _utils.shallowEqual)(nodeVal, uncheckableValue))) {\n flattenedNodes.current[refKey].check = true;\n }\n });\n });\n }, [cascade, uncheckableItemValues, disabledItemValues, valueKey]);\n const flattenTreeData = (0, _react.useCallback)((treeData, parent, layer = 1) => {\n if (!Array.isArray(treeData) || treeData.length === 0) {\n return [];\n }\n treeData.map(node => {\n const value = node[valueKey];\n\n // Check for duplicate values\n if (seenValues.current.has(value)) {\n console.error(`[rsuite] The value '${value}' is duplicated. Each node in the tree data must have a unique value.`);\n }\n seenValues.current.add(value);\n const refKey = (0, _utils2.formatNodeRefKey)(value);\n node.refKey = refKey;\n flattenedNodes.current[refKey] = {\n layer,\n [labelKey]: node[labelKey],\n [valueKey]: node[valueKey],\n uncheckable: uncheckableItemValues.some(value => (0, _utils.shallowEqual)(node[valueKey], value)),\n ...node\n };\n if (parent) {\n flattenedNodes.current[refKey].parent = (0, _omit.default)(parent, 'parent', 'children');\n }\n flattenTreeData(node[childrenKey], node, layer + 1);\n });\n callback?.(flattenedNodes.current);\n forceUpdate();\n }, [callback, forceUpdate, valueKey, labelKey, uncheckableItemValues, childrenKey]);\n (0, _react.useEffect)(() => {\n flattenedNodes.current = {};\n seenValues.current.clear();\n flattenTreeData(data);\n if (multiple) {\n updateTreeNodeCheckState(value);\n forceUpdate();\n }\n }, [data]);\n (0, _react.useEffect)(() => {\n if (multiple) {\n updateTreeNodeCheckState(value);\n forceUpdate();\n }\n }, [value]);\n return flattenedNodes.current;\n}\nvar _default = exports[\"default\"] = useFlattenTree;\n\n//# sourceURL=webpack://rsuite/./src/Tree/hooks/useFlattenTree.ts?");
|
|
6135
6135
|
|
|
6136
6136
|
/***/ }),
|
|
6137
6137
|
|
|
@@ -6428,7 +6428,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
|
|
|
6428
6428
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
6429
6429
|
|
|
6430
6430
|
"use strict";
|
|
6431
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _find = _interopRequireDefault(__webpack_require__(/*! lodash/find */ \"./node_modules/lodash/find.js\"));\nvar _UploadFileItem = _interopRequireDefault(__webpack_require__(/*! ./UploadFileItem */ \"./src/Uploader/UploadFileItem.tsx\"));\nvar _Plaintext = _interopRequireDefault(__webpack_require__(/*! ../internals/Plaintext */ \"./src/internals/Plaintext/index.tsx\"));\nvar _ajaxUpload = _interopRequireDefault(__webpack_require__(/*! ./utils/ajaxUpload */ \"./src/Uploader/utils/ajaxUpload.ts\"));\nvar _UploadTrigger = _interopRequireDefault(__webpack_require__(/*! ./UploadTrigger */ \"./src/Uploader/UploadTrigger.tsx\"));\nvar _Box = _interopRequireDefault(__webpack_require__(/*! ../internals/Box */ \"./src/internals/Box/index.tsx\"));\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Uploader/Uploader.tsx\";\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\n// Define several states of the file during the upload process.\n\nconst getFiles = event => {\n if (typeof event?.['dataTransfer'] === 'object') {\n return event?.['dataTransfer']?.files;\n }\n if (event.target) {\n return event.target['files'];\n }\n return [];\n};\nconst createFile = file => {\n const {\n fileKey\n } = file;\n return {\n ...file,\n fileKey: fileKey || (0, _utils.guid)(),\n progress: 0\n };\n};\nfunction fileListReducer(files, action) {\n switch (action.type) {\n // Add one or more files\n case 'push':\n return [...files, ...action.files];\n\n // Remove a file by `fileKey`\n case 'remove':\n return files.filter(f => f.fileKey !== action.fileKey);\n\n // Update a file\n case 'updateFile':\n return files.map(file => {\n return file.fileKey === action.file.fileKey ? action.file : file;\n });\n\n // Initialization file list\n case 'init':\n return action.files?.map(file => {\n // The state of the file needs to be preserved when the `fileList` is controlled.\n return files.find(f => f.fileKey === file.fileKey) || createFile(file);\n }) || [];\n default:\n throw new Error();\n }\n}\nconst useFileList = (defaultFileList = []) => {\n const fileListRef = (0, _react.useRef)(defaultFileList.map(createFile));\n const fileListUpdateCallback = (0, _react.useRef)(null);\n const [fileList, dispatch] = (0, _react.useReducer)(fileListReducer, fileListRef.current);\n fileListRef.current = fileList;\n (0, _react.useEffect)(() => {\n fileListUpdateCallback.current?.(fileList);\n fileListUpdateCallback.current = null;\n }, [fileList]);\n (0, _hooks.useWillUnmount)(() => {\n fileListUpdateCallback.current = null;\n });\n const dispatchCallback = (0, _react.useCallback)((action, callback) => {\n dispatch(action);\n fileListUpdateCallback.current = callback;\n }, []);\n return [fileListRef, dispatchCallback];\n};\n\n/**\n * The `Uploader` component is used to upload files.\n *\n * @see https://rsuitejs.com/components/uploader\n */\nconst Uploader = (0, _utils.forwardRef)((props, ref) => {\n const {\n propsWithDefaults\n } = (0, _hooks.useCustom)('Uploader', props);\n const {\n as,\n classPrefix = 'uploader',\n className,\n listType = 'text',\n defaultFileList,\n fileList: fileListProp,\n fileListVisible = true,\n locale,\n style,\n draggable,\n name = 'file',\n multiple = false,\n disabled = false,\n readOnly,\n plaintext,\n accept,\n children,\n toggleAs,\n removable = true,\n disabledFileItem,\n maxPreviewFileSize,\n method = 'POST',\n autoUpload = true,\n action,\n headers,\n withCredentials = false,\n disableMultipart,\n timeout = 0,\n data = {},\n onRemove,\n onUpload,\n shouldUpload,\n shouldQueueUpdate,\n renderFileInfo,\n renderThumbnail,\n onPreview,\n onChange,\n onSuccess,\n onError,\n onProgress,\n onReupload,\n ...rest\n } = propsWithDefaults;\n const {\n merge,\n withPrefix,\n prefix\n } = (0, _hooks.useStyles)(classPrefix);\n const classes = merge(className, withPrefix());\n const rootRef = (0, _react.useRef)(null);\n const xhrs = (0, _react.useRef)({});\n const trigger = (0, _react.useRef)(null);\n const [fileList, dispatch] = useFileList(fileListProp || defaultFileList);\n (0, _react.useEffect)(() => {\n if (typeof fileListProp !== 'undefined') {\n // Force reset fileList in reducer, when `fileListProp` is updated\n dispatch({\n type: 'init',\n files: fileListProp\n });\n }\n }, [dispatch, fileListProp]);\n const updateFileStatus = (0, _react.useCallback)(nextFile => {\n dispatch({\n type: 'updateFile',\n file: nextFile\n });\n }, [dispatch]);\n\n /**\n * Clear the value in input.\n */\n const cleanInputValue = (0, _react.useCallback)(() => {\n trigger.current?.clearInput();\n }, []);\n\n /**\n * Callback for successful file upload.\n * @param file\n * @param response\n * @param event\n * @param xhr\n */\n const handleAjaxUploadSuccess = (0, _react.useCallback)((file, response, event, xhr) => {\n const nextFile = {\n ...file,\n status: 'finished',\n progress: 100\n };\n updateFileStatus(nextFile);\n onSuccess?.(response, nextFile, event, xhr);\n }, [onSuccess, updateFileStatus]);\n\n /**\n * Callback for file upload error.\n * @param file\n * @param status\n * @param event\n * @param xhr\n */\n const handleAjaxUploadError = (0, _react.useCallback)((file, status, event, xhr) => {\n const nextFile = {\n ...file,\n status: 'error'\n };\n updateFileStatus(nextFile);\n onError?.(status, nextFile, event, xhr);\n }, [onError, updateFileStatus]);\n\n /**\n * Callback for file upload progress update.\n * @param file\n * @param percent\n * @param event\n * @param xhr\n */\n const handleAjaxUploadProgress = (0, _react.useCallback)((file, percent, event, xhr) => {\n const nextFile = {\n ...file,\n status: 'uploading',\n progress: percent\n };\n updateFileStatus(nextFile);\n onProgress?.(percent, nextFile, event, xhr);\n }, [onProgress, updateFileStatus]);\n\n /**\n * Upload a single file.\n * @param file\n */\n const handleUploadFile = (0, _hooks.useEventCallback)(file => {\n const {\n xhr,\n data: uploadData\n } = (0, _ajaxUpload.default)({\n name,\n timeout,\n headers,\n data,\n method,\n withCredentials,\n disableMultipart,\n file: file.blobFile,\n url: action,\n onError: handleAjaxUploadError.bind(null, file),\n onSuccess: handleAjaxUploadSuccess.bind(null, file),\n onProgress: handleAjaxUploadProgress.bind(null, file)\n });\n updateFileStatus({\n ...file,\n status: 'uploading'\n });\n if (file.fileKey) {\n xhrs.current[file.fileKey] = xhr;\n }\n onUpload?.(file, uploadData, xhr);\n });\n const handleAjaxUpload = (0, _hooks.useEventCallback)(() => {\n fileList.current.forEach(file => {\n const checkState = shouldUpload?.(file);\n if (checkState instanceof Promise) {\n checkState.then(res => {\n if (res) {\n handleUploadFile(file);\n }\n });\n return;\n } else if (checkState === false) {\n return;\n }\n if (file.status === 'inited') {\n handleUploadFile(file);\n }\n });\n cleanInputValue();\n });\n const handleUploadTriggerChange = (0, _hooks.useEventCallback)(event => {\n const files = getFiles(event);\n const newFileList = [];\n Array.from(files).forEach(file => {\n newFileList.push({\n blobFile: file,\n name: file.name,\n status: 'inited',\n fileKey: (0, _utils.guid)()\n });\n });\n const nextFileList = [...fileList.current, ...newFileList];\n const checkState = shouldQueueUpdate?.(nextFileList, newFileList);\n if (checkState === false) {\n cleanInputValue();\n return;\n }\n const upload = () => {\n onChange?.(nextFileList, event);\n if (rootRef.current) {\n dispatch({\n type: 'push',\n files: newFileList\n }, () => {\n autoUpload && handleAjaxUpload();\n });\n }\n };\n if (checkState instanceof Promise) {\n checkState.then(res => {\n res && upload();\n });\n return;\n }\n upload();\n });\n const handleRemoveFile = (0, _hooks.useEventCallback)((fileKey, event) => {\n const file = (0, _find.default)(fileList.current, f => f.fileKey === fileKey);\n const nextFileList = fileList.current.filter(f => f.fileKey !== fileKey);\n if (xhrs.current?.[file.fileKey]?.readyState !== 4) {\n xhrs.current[file.fileKey]?.abort();\n }\n dispatch({\n type: 'remove',\n fileKey\n });\n onRemove?.(file);\n onChange?.(nextFileList, event);\n cleanInputValue();\n });\n const handleReupload = (0, _hooks.useEventCallback)(file => {\n autoUpload && handleUploadFile(file);\n onReupload?.(file);\n });\n\n // public API\n const start = (0, _react.useCallback)(file => {\n if (file) {\n handleUploadFile(file);\n return;\n }\n handleAjaxUpload();\n }, [handleAjaxUpload, handleUploadFile]);\n (0, _react.useImperativeHandle)(ref, () => ({\n root: rootRef.current,\n start\n }));\n const renderList = [/*#__PURE__*/_react.default.createElement(_UploadTrigger.default, (0, _extends2.default)({}, rest, {\n locale: locale,\n name: name,\n key: \"trigger\",\n multiple: multiple,\n draggable: draggable,\n disabled: disabled,\n readOnly: readOnly,\n accept: accept,\n ref: trigger,\n onChange: handleUploadTriggerChange,\n as: toggleAs,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 534,\n columnNumber: 5\n }\n }), children)];\n if (fileListVisible) {\n renderList.push(/*#__PURE__*/_react.default.createElement(\"div\", {\n key: \"items\",\n className: prefix('file-items'),\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 554,\n columnNumber: 7\n }\n }, fileList.current.map((file, index) => /*#__PURE__*/_react.default.createElement(_UploadFileItem.default, {\n locale: locale,\n key: file.fileKey || index,\n file: file,\n maxPreviewFileSize: maxPreviewFileSize,\n listType: listType,\n disabled: disabledFileItem,\n onPreview: onPreview,\n onReupload: handleReupload,\n onCancel: handleRemoveFile,\n renderFileInfo: renderFileInfo,\n renderThumbnail: renderThumbnail,\n removable: removable && !readOnly && !plaintext,\n allowReupload: !readOnly && !plaintext,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 556,\n columnNumber: 11\n }\n }))));\n }\n const dataAttributes = {\n 'data-list-type': listType,\n 'data-draggable': draggable\n };\n if (plaintext) {\n return /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0, _extends2.default)({\n localeKey: \"notUploaded\",\n className: classes\n }, dataAttributes, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 583,\n columnNumber: 7\n }\n }), fileList.current.length ? renderList[1] : null);\n }\n if (listType === 'picture') {\n renderList.reverse();\n }\n return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({\n as: as,\n ref: rootRef,\n className: classes,\n style: style\n }, dataAttributes, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 594,\n columnNumber: 5\n }\n }), renderList);\n});\nUploader.displayName = 'Uploader';\nvar _default = exports[\"default\"] = Uploader;\n\n//# sourceURL=webpack://rsuite/./src/Uploader/Uploader.tsx?");
|
|
6431
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireWildcard(__webpack_require__(/*! react */ \"react\"));\nvar _find = _interopRequireDefault(__webpack_require__(/*! lodash/find */ \"./node_modules/lodash/find.js\"));\nvar _UploadFileItem = _interopRequireDefault(__webpack_require__(/*! ./UploadFileItem */ \"./src/Uploader/UploadFileItem.tsx\"));\nvar _Plaintext = _interopRequireDefault(__webpack_require__(/*! ../internals/Plaintext */ \"./src/internals/Plaintext/index.tsx\"));\nvar _ajaxUpload = _interopRequireDefault(__webpack_require__(/*! ./utils/ajaxUpload */ \"./src/Uploader/utils/ajaxUpload.ts\"));\nvar _UploadTrigger = _interopRequireDefault(__webpack_require__(/*! ./UploadTrigger */ \"./src/Uploader/UploadTrigger.tsx\"));\nvar _Box = _interopRequireDefault(__webpack_require__(/*! ../internals/Box */ \"./src/internals/Box/index.tsx\"));\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nvar _hooks = __webpack_require__(/*! ../internals/hooks */ \"./src/internals/hooks/index.ts\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/Uploader/Uploader.tsx\";\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\n// Define several states of the file during the upload process.\n\nconst getFiles = event => {\n if (typeof event?.['dataTransfer'] === 'object') {\n return event?.['dataTransfer']?.files;\n }\n if (event.target) {\n return event.target['files'];\n }\n return [];\n};\nconst createFile = file => {\n const {\n fileKey\n } = file;\n return {\n ...file,\n fileKey: fileKey || (0, _utils.guid)(),\n progress: 0\n };\n};\nfunction fileListReducer(files, action) {\n switch (action.type) {\n // Add one or more files\n case 'push':\n return [...files, ...action.files];\n\n // Remove a file by `fileKey`\n case 'remove':\n return files.filter(f => f.fileKey !== action.fileKey);\n\n // Update a file\n case 'updateFile':\n return files.map(file => {\n return file.fileKey === action.file.fileKey ? action.file : file;\n });\n\n // Initialization file list\n case 'init':\n return action.files?.map(file => {\n // The state of the file needs to be preserved when the `fileList` is controlled.\n return files.find(f => f.fileKey === file.fileKey) || createFile(file);\n }) || [];\n default:\n throw new Error();\n }\n}\nconst useFileList = (defaultFileList = []) => {\n const fileListRef = (0, _react.useRef)(defaultFileList.map(createFile));\n const fileListUpdateCallback = (0, _react.useRef)(null);\n const [fileList, dispatch] = (0, _react.useReducer)(fileListReducer, fileListRef.current);\n fileListRef.current = fileList;\n (0, _react.useEffect)(() => {\n fileListUpdateCallback.current?.(fileList);\n fileListUpdateCallback.current = null;\n }, [fileList]);\n (0, _hooks.useWillUnmount)(() => {\n fileListUpdateCallback.current = null;\n });\n const dispatchCallback = (0, _react.useCallback)((action, callback) => {\n dispatch(action);\n fileListUpdateCallback.current = callback;\n }, []);\n return [fileListRef, dispatchCallback];\n};\n\n/**\n * The `Uploader` component is used to upload files.\n *\n * @see https://rsuitejs.com/components/uploader\n */\nconst Uploader = (0, _utils.forwardRef)((props, ref) => {\n const {\n propsWithDefaults\n } = (0, _hooks.useCustom)('Uploader', props);\n const {\n as,\n classPrefix = 'uploader',\n className,\n listType = 'text',\n defaultFileList,\n fileList: fileListProp,\n fileListVisible = true,\n locale,\n style,\n draggable,\n name = 'file',\n multiple = false,\n disabled = false,\n readOnly,\n plaintext,\n accept,\n children,\n toggleAs,\n removable = true,\n disabledFileItem,\n maxPreviewFileSize,\n method = 'POST',\n autoUpload = true,\n action,\n headers,\n withCredentials = false,\n disableMultipart,\n timeout = 0,\n data = {},\n onRemove,\n onUpload,\n shouldUpload,\n shouldQueueUpdate,\n renderFileInfo,\n renderThumbnail,\n onPreview,\n onChange,\n onSuccess,\n onError,\n onProgress,\n onReupload,\n onCompletion,\n ...rest\n } = propsWithDefaults;\n const {\n merge,\n withPrefix,\n prefix\n } = (0, _hooks.useStyles)(classPrefix);\n const classes = merge(className, withPrefix());\n const rootRef = (0, _react.useRef)(null);\n const xhrs = (0, _react.useRef)({});\n const trigger = (0, _react.useRef)(null);\n const uploadingCount = (0, _react.useRef)(0);\n const uploadResults = (0, _react.useRef)({\n completed: [],\n failed: []\n });\n const [fileList, dispatch] = useFileList(fileListProp || defaultFileList);\n (0, _react.useEffect)(() => {\n if (typeof fileListProp !== 'undefined') {\n // Force reset fileList in reducer, when `fileListProp` is updated\n dispatch({\n type: 'init',\n files: fileListProp\n });\n }\n }, [dispatch, fileListProp]);\n const updateFileStatus = (0, _react.useCallback)(nextFile => {\n dispatch({\n type: 'updateFile',\n file: nextFile\n });\n }, [dispatch]);\n\n /**\n * Clear the value in input.\n */\n const cleanInputValue = (0, _react.useCallback)(() => {\n trigger.current?.clearInput();\n }, []);\n\n /**\n * Callback for successful file upload.\n * @param file\n * @param response\n * @param event\n * @param xhr\n */\n const handleAjaxUploadSuccess = (0, _react.useCallback)((file, response, event, xhr) => {\n const nextFile = {\n ...file,\n status: 'finished',\n progress: 100\n };\n updateFileStatus(nextFile);\n onSuccess?.(response, nextFile, event, xhr);\n uploadingCount.current--;\n uploadResults.current.completed.push(nextFile);\n if (uploadingCount.current === 0) {\n onCompletion?.(uploadResults.current.completed, uploadResults.current.failed);\n uploadResults.current = {\n completed: [],\n failed: []\n };\n }\n }, [onCompletion, onSuccess, updateFileStatus]);\n\n /**\n * Callback for file upload error.\n * @param file\n * @param status\n * @param event\n * @param xhr\n */\n const handleAjaxUploadError = (0, _react.useCallback)((file, status, event, xhr) => {\n const nextFile = {\n ...file,\n status: 'error'\n };\n updateFileStatus(nextFile);\n onError?.(status, nextFile, event, xhr);\n uploadingCount.current--;\n uploadResults.current.failed.push(nextFile);\n if (uploadingCount.current === 0) {\n onCompletion?.(uploadResults.current.completed, uploadResults.current.failed);\n uploadResults.current = {\n completed: [],\n failed: []\n };\n }\n }, [onCompletion, onError, updateFileStatus]);\n\n /**\n * Callback for file upload progress update.\n * @param file\n * @param percent\n * @param event\n * @param xhr\n */\n const handleAjaxUploadProgress = (0, _react.useCallback)((file, percent, event, xhr) => {\n const nextFile = {\n ...file,\n status: 'uploading',\n progress: percent\n };\n updateFileStatus(nextFile);\n onProgress?.(percent, nextFile, event, xhr);\n }, [onProgress, updateFileStatus]);\n\n /**\n * Upload a single file.\n * @param file\n */\n const handleUploadFile = (0, _hooks.useEventCallback)(file => {\n const {\n xhr,\n data: uploadData\n } = (0, _ajaxUpload.default)({\n name,\n timeout,\n headers,\n data,\n method,\n withCredentials,\n disableMultipart,\n file: file.blobFile,\n url: action,\n onError: handleAjaxUploadError.bind(null, file),\n onSuccess: handleAjaxUploadSuccess.bind(null, file),\n onProgress: handleAjaxUploadProgress.bind(null, file)\n });\n updateFileStatus({\n ...file,\n status: 'uploading'\n });\n if (file.fileKey) {\n xhrs.current[file.fileKey] = xhr;\n }\n onUpload?.(file, uploadData, xhr);\n });\n const handleAjaxUpload = (0, _hooks.useEventCallback)(() => {\n fileList.current.forEach(file => {\n const checkState = shouldUpload?.(file);\n if (checkState instanceof Promise) {\n uploadingCount.current++;\n checkState.then(res => {\n if (res) {\n handleUploadFile(file);\n } else {\n uploadingCount.current--;\n if (uploadingCount.current === 0) {\n onCompletion?.(uploadResults.current.completed, uploadResults.current.failed);\n uploadResults.current = {\n completed: [],\n failed: []\n };\n }\n }\n });\n return;\n } else if (checkState === false) {\n return;\n }\n if (file.status === 'inited') {\n uploadingCount.current++;\n handleUploadFile(file);\n }\n });\n cleanInputValue();\n });\n const handleUploadTriggerChange = (0, _hooks.useEventCallback)(event => {\n const files = getFiles(event);\n const newFileList = [];\n Array.from(files).forEach(file => {\n newFileList.push({\n blobFile: file,\n name: file.name,\n status: 'inited',\n fileKey: (0, _utils.guid)()\n });\n });\n const nextFileList = [...fileList.current, ...newFileList];\n const checkState = shouldQueueUpdate?.(nextFileList, newFileList);\n if (checkState === false) {\n cleanInputValue();\n return;\n }\n const upload = () => {\n onChange?.(nextFileList, event);\n if (rootRef.current) {\n dispatch({\n type: 'push',\n files: newFileList\n }, () => {\n autoUpload && handleAjaxUpload();\n });\n }\n };\n if (checkState instanceof Promise) {\n checkState.then(res => {\n res && upload();\n });\n return;\n }\n upload();\n });\n const handleRemoveFile = (0, _hooks.useEventCallback)((fileKey, event) => {\n const file = (0, _find.default)(fileList.current, f => f.fileKey === fileKey);\n const nextFileList = fileList.current.filter(f => f.fileKey !== fileKey);\n if (xhrs.current?.[file.fileKey]?.readyState !== 4) {\n xhrs.current[file.fileKey]?.abort();\n uploadingCount.current--;\n uploadResults.current.failed.push(file);\n if (uploadingCount.current === 0) {\n onCompletion?.(uploadResults.current.completed, uploadResults.current.failed);\n uploadResults.current = {\n completed: [],\n failed: []\n };\n }\n }\n dispatch({\n type: 'remove',\n fileKey\n });\n onRemove?.(file);\n onChange?.(nextFileList, event);\n cleanInputValue();\n });\n const handleReupload = (0, _hooks.useEventCallback)(file => {\n uploadingCount.current++;\n autoUpload && handleUploadFile(file);\n onReupload?.(file);\n });\n\n // public API\n const start = (0, _react.useCallback)(file => {\n if (file) {\n uploadingCount.current++;\n handleUploadFile(file);\n return;\n }\n handleAjaxUpload();\n }, [handleAjaxUpload, handleUploadFile]);\n (0, _react.useImperativeHandle)(ref, () => ({\n root: rootRef.current,\n start\n }));\n const renderList = [/*#__PURE__*/_react.default.createElement(_UploadTrigger.default, (0, _extends2.default)({}, rest, {\n locale: locale,\n name: name,\n key: \"trigger\",\n multiple: multiple,\n draggable: draggable,\n disabled: disabled,\n readOnly: readOnly,\n accept: accept,\n ref: trigger,\n onChange: handleUploadTriggerChange,\n as: toggleAs,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 574,\n columnNumber: 5\n }\n }), children)];\n if (fileListVisible) {\n renderList.push(/*#__PURE__*/_react.default.createElement(\"div\", {\n key: \"items\",\n className: prefix('file-items'),\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 594,\n columnNumber: 7\n }\n }, fileList.current.map((file, index) => /*#__PURE__*/_react.default.createElement(_UploadFileItem.default, {\n locale: locale,\n key: file.fileKey || index,\n file: file,\n maxPreviewFileSize: maxPreviewFileSize,\n listType: listType,\n disabled: disabledFileItem,\n onPreview: onPreview,\n onReupload: handleReupload,\n onCancel: handleRemoveFile,\n renderFileInfo: renderFileInfo,\n renderThumbnail: renderThumbnail,\n removable: removable && !readOnly && !plaintext,\n allowReupload: !readOnly && !plaintext,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 596,\n columnNumber: 11\n }\n }))));\n }\n const dataAttributes = {\n 'data-list-type': listType,\n 'data-draggable': draggable\n };\n if (plaintext) {\n return /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0, _extends2.default)({\n localeKey: \"notUploaded\",\n className: classes\n }, dataAttributes, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 623,\n columnNumber: 7\n }\n }), fileList.current.length ? renderList[1] : null);\n }\n if (listType === 'picture') {\n renderList.reverse();\n }\n return /*#__PURE__*/_react.default.createElement(_Box.default, (0, _extends2.default)({\n as: as,\n ref: rootRef,\n className: classes,\n style: style\n }, dataAttributes, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 634,\n columnNumber: 5\n }\n }), renderList);\n});\nUploader.displayName = 'Uploader';\nvar _default = exports[\"default\"] = Uploader;\n\n//# sourceURL=webpack://rsuite/./src/Uploader/Uploader.tsx?");
|
|
6432
6432
|
|
|
6433
6433
|
/***/ }),
|
|
6434
6434
|
|
|
@@ -6890,7 +6890,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he
|
|
|
6890
6890
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
6891
6891
|
|
|
6892
6892
|
"use strict";
|
|
6893
|
-
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\nvar _Icon = _interopRequireDefault(__webpack_require__(/*! @rsuite/icons/Icon */ \"./node_modules/@rsuite/icons/esm/Icon.js\"));\nvar _InputGroup = _interopRequireDefault(__webpack_require__(/*! ../../InputGroup */ \"./src/InputGroup/index.tsx\"));\nvar _CloseButton = _interopRequireDefault(__webpack_require__(/*! ../CloseButton */ \"./src/internals/CloseButton/index.tsx\"));\nvar _Loader = _interopRequireDefault(__webpack_require__(/*! ../../Loader */ \"./src/Loader/index.tsx\"));\nvar _hooks = __webpack_require__(/*! ../hooks */ \"./src/internals/hooks/index.ts\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/internals/Picker/PickerIndicator.tsx\";\nconst PickerIndicator = ({\n loading,\n caretAs,\n onClose,\n showCleanButton,\n as: Component = _InputGroup.default.Addon,\n disabled,\n size\n}) => {\n const {\n getLocale\n } = (0, _hooks.useCustom)();\n const {\n clear\n } = getLocale('common');\n const {\n prefix\n } = (0, _hooks.useStyles)('picker');\n const addon = () => {\n if (loading) {\n return /*#__PURE__*/_react.default.createElement(_Loader.default, {\n className: prefix('loader'),\n \"data-testid\": \"spinner\",\n size: size === 'xs' ? 'xs' : 'sm',\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 35,\n columnNumber: 9\n }\n });\n }\n
|
|
6893
|
+
eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"react\"));\nvar _Icon = _interopRequireDefault(__webpack_require__(/*! @rsuite/icons/Icon */ \"./node_modules/@rsuite/icons/esm/Icon.js\"));\nvar _InputGroup = _interopRequireDefault(__webpack_require__(/*! ../../InputGroup */ \"./src/InputGroup/index.tsx\"));\nvar _CloseButton = _interopRequireDefault(__webpack_require__(/*! ../CloseButton */ \"./src/internals/CloseButton/index.tsx\"));\nvar _Loader = _interopRequireDefault(__webpack_require__(/*! ../../Loader */ \"./src/Loader/index.tsx\"));\nvar _hooks = __webpack_require__(/*! ../hooks */ \"./src/internals/hooks/index.ts\");\nvar _jsxFileName = \"/home/runner/work/rsuite/rsuite/src/internals/Picker/PickerIndicator.tsx\";\nconst PickerIndicator = ({\n loading,\n caretAs,\n onClose,\n showCleanButton,\n as: Component = _InputGroup.default.Addon,\n disabled,\n size\n}) => {\n const {\n getLocale\n } = (0, _hooks.useCustom)();\n const {\n clear\n } = getLocale('common');\n const {\n prefix\n } = (0, _hooks.useStyles)('picker');\n const addon = () => {\n if (loading) {\n return /*#__PURE__*/_react.default.createElement(_Loader.default, {\n className: prefix('loader'),\n \"data-testid\": \"spinner\",\n size: size === 'xs' ? 'xs' : 'sm',\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 35,\n columnNumber: 9\n }\n });\n }\n const caret = caretAs && /*#__PURE__*/_react.default.createElement(_Icon.default, {\n as: caretAs,\n className: prefix('caret-icon'),\n \"data-testid\": \"caret\",\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 44,\n columnNumber: 7\n }\n });\n const cleanButton = showCleanButton && !disabled && /*#__PURE__*/_react.default.createElement(_CloseButton.default, {\n className: prefix('clean'),\n tabIndex: -1,\n locale: {\n closeLabel: clear\n },\n onClick: onClose,\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 47,\n columnNumber: 7\n }\n });\n if (caret && cleanButton) {\n return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, caret, cleanButton);\n }\n return cleanButton || caret || null;\n };\n const props = Component === _InputGroup.default.Addon ? {\n disabled\n } : undefined;\n return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, props, {\n __self: void 0,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 69,\n columnNumber: 10\n }\n }), addon());\n};\nvar _default = exports[\"default\"] = PickerIndicator;\n\n//# sourceURL=webpack://rsuite/./src/internals/Picker/PickerIndicator.tsx?");
|
|
6894
6894
|
|
|
6895
6895
|
/***/ }),
|
|
6896
6896
|
|
|
@@ -8452,7 +8452,7 @@ eval("\n\nexports.__esModule = true;\nexports.render = render;\nvar _client = __
|
|
|
8452
8452
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
8453
8453
|
|
|
8454
8454
|
"use strict";
|
|
8455
|
-
eval("\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _ToastContainer = _interopRequireWildcard(__webpack_require__(/*! ./ToastContainer */ \"./src/toaster/ToastContainer.tsx\"));\nvar _symbols = __webpack_require__(/*! ../internals/symbols */ \"./src/internals/symbols.ts\");\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nconst containers = new Map();\n\n/**\n * Create a container instance.\n * @param placement\n * @param props\n */\nasync function createContainer(placement, props) {\n const [container, containerId] = await _ToastContainer.default.getInstance(props);\n
|
|
8455
|
+
eval("\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\nvar _ToastContainer = _interopRequireWildcard(__webpack_require__(/*! ./ToastContainer */ \"./src/toaster/ToastContainer.tsx\"));\nvar _symbols = __webpack_require__(/*! ../internals/symbols */ \"./src/internals/symbols.ts\");\nvar _utils = __webpack_require__(/*! ../internals/utils */ \"./src/internals/utils/index.ts\");\nfunction _interopRequireWildcard(e, t) { if (\"function\" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) \"default\" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }\nconst containers = new Map();\n\n/**\n * Track in-progress container creation promises keyed by `${containerId}_${placement}`.\n * This prevents duplicate containers from being created when `push` is called multiple\n * times synchronously (e.g. inside a loop) before the first container has mounted.\n */\nconst pendingContainerPromises = new Map();\n\n/**\n * Create a container instance.\n * @param placement\n * @param props\n */\nasync function createContainer(placement, props) {\n const [container, containerId] = await _ToastContainer.default.getInstance(props);\n const key = `${containerId}_${placement}`;\n containers.set(key, container);\n pendingContainerPromises.delete(key);\n return container;\n}\n\n/**\n * Get the container by ID. Use default ID when ID is not available.\n * @param containerId\n * @param placement\n */\nfunction getContainer(containerId, placement) {\n return containers.get(`${containerId}_${placement}`);\n}\nconst toaster = message => toaster.push(message);\ntoaster.push = (message, options = {}) => {\n const {\n placement = 'topCenter',\n container = _ToastContainer.defaultToasterContainer,\n ...restOptions\n } = options;\n const containerElement = typeof container === 'function' ? container() : container;\n if (containerElement) {\n // Pre-assign the container ID so subsequent synchronous calls can find it\n // before the async container creation has completed.\n if (!containerElement[_symbols.RSUITE_TOASTER_ID]) {\n containerElement[_symbols.RSUITE_TOASTER_ID] = (0, _utils.guid)();\n }\n const containerElementId = containerElement[_symbols.RSUITE_TOASTER_ID];\n const key = `${containerElementId}_${placement}`;\n const existedContainer = getContainer(containerElementId, placement);\n if (existedContainer) {\n return existedContainer.current?.push(message, restOptions);\n }\n\n // A container creation for this placement may already be in progress (e.g. when `push`\n // is called multiple times synchronously in a loop). Reuse that promise instead of\n // creating a second container.\n const pendingPromise = pendingContainerPromises.get(key);\n if (pendingPromise) {\n return pendingPromise.then(ref => ref.current?.push(message, restOptions));\n }\n const newOptions = {\n ...options,\n container: containerElement,\n placement\n };\n const containerPromise = createContainer(placement, newOptions);\n\n // Register the pending promise before any async work begins so that subsequent\n // synchronous `push` calls for the same placement chain onto it.\n pendingContainerPromises.set(key, containerPromise);\n return containerPromise.then(ref => ref.current?.push(message, restOptions));\n }\n const newOptions = {\n ...options,\n container: containerElement,\n placement\n };\n return createContainer(placement, newOptions).then(ref => {\n return ref.current?.push(message, restOptions);\n });\n};\ntoaster.remove = key => {\n containers.forEach(c => c.current?.remove(key));\n};\ntoaster.clear = () => {\n containers.forEach(c => c.current?.clear());\n};\nvar _default = exports[\"default\"] = toaster;\n\n//# sourceURL=webpack://rsuite/./src/toaster/toaster.tsx?");
|
|
8456
8456
|
|
|
8457
8457
|
/***/ }),
|
|
8458
8458
|
|