@flatbiz/antd 4.2.58 → 4.2.60
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/esm/button-operate/index.js +1 -1
- package/esm/{button-operate-81d86480.js → button-operate-d3b2e543.js} +2 -2
- package/esm/button-operate-d3b2e543.js.map +1 -0
- package/esm/button-wrapper-125fce50.js.map +1 -1
- package/esm/{cell-render-927ade58.js → cell-render-0b27a14b.js} +2 -2
- package/esm/{cell-render-927ade58.js.map → cell-render-0b27a14b.js.map} +1 -1
- package/esm/dropdown-menu-wrapper/index.js +1 -1
- package/esm/dropdown-menu-wrapper-2b4fc43d.js +3 -0
- package/esm/dropdown-menu-wrapper-2b4fc43d.js.map +1 -0
- package/esm/index.js +1 -1
- package/esm/rich-text-viewer/index.js +1 -1
- package/esm/rich-text-viewer-239491ee.js +3 -0
- package/esm/{rich-text-viewer-3bf4569a.js.map → rich-text-viewer-239491ee.js.map} +1 -1
- package/esm/selector-wrapper-search/index.js +2 -1
- package/esm/selector-wrapper-search-c763c481.js +3 -0
- package/esm/selector-wrapper-search-c763c481.js.map +1 -0
- package/esm/switch-confirm-wrapper/index.js +2 -1
- package/esm/switch-confirm-wrapper-984d57c4.js +3 -0
- package/esm/switch-confirm-wrapper-984d57c4.js.map +1 -0
- package/esm/table-cell-render/index.js +1 -1
- package/esm/tree-selector-wrapper/index.js +1 -1
- package/esm/tree-selector-wrapper-8c9a9393.js +3 -0
- package/esm/tree-selector-wrapper-8c9a9393.js.map +1 -0
- package/esm/tree-wrapper/index.js +1 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/index.d.ts +60 -6
- package/package.json +1 -1
- package/esm/button-operate-81d86480.js.map +0 -1
- package/esm/dropdown-menu-wrapper-016a83b6.js +0 -3
- package/esm/dropdown-menu-wrapper-016a83b6.js.map +0 -1
- package/esm/rich-text-viewer-3bf4569a.js +0 -3
- package/esm/selector-wrapper-search-dade1b6b.js +0 -3
- package/esm/selector-wrapper-search-dade1b6b.js.map +0 -1
- package/esm/switch-confirm-wrapper-4857f2a9.js +0 -3
- package/esm/switch-confirm-wrapper-4857f2a9.js.map +0 -1
- package/esm/tree-selector-wrapper-9cd9da23.js +0 -3
- package/esm/tree-selector-wrapper-9cd9da23.js.map +0 -1
package/index.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export type ButtonWrapperProps = Omit<ButtonProps, "onClick"> & {
|
|
|
43
43
|
};
|
|
44
44
|
/**
|
|
45
45
|
* antd Button包装组件
|
|
46
|
-
* 1. 添加按钮 onClick 返回 Promise
|
|
46
|
+
* 1. 添加按钮 onClick 返回 Promise自动loading效果
|
|
47
47
|
* 2. 添加指定时间内重复点击无效(默认间隙时间500ms)
|
|
48
48
|
* @param props
|
|
49
49
|
* @returns
|
|
@@ -127,6 +127,7 @@ export interface DropdownMenuItem extends ButtonProps {
|
|
|
127
127
|
}
|
|
128
128
|
export interface DropdownMenuWrapperProps extends Omit<DropdownProps, "menu"> {
|
|
129
129
|
menuList: Array<DropdownMenuItem | null>;
|
|
130
|
+
/** dropdown 设置弹框根节点在body下 */
|
|
130
131
|
isFixed?: boolean;
|
|
131
132
|
}
|
|
132
133
|
/**
|
|
@@ -134,11 +135,14 @@ export interface DropdownMenuWrapperProps extends Omit<DropdownProps, "menu"> {
|
|
|
134
135
|
* 升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框使用存在问题,所以在 @flatbiz/antd@4.2.49版本修改为使用dialogConfirm组件实现二次弹框确认功能
|
|
135
136
|
* @param props
|
|
136
137
|
* @returns
|
|
138
|
+
* ```
|
|
139
|
+
* 1. Dropdown默认弹框根节点在组件内部,通过isFixed=true可设置弹框根节点在body下
|
|
140
|
+
* ```
|
|
137
141
|
*/
|
|
138
142
|
export declare const DropdownMenuWrapper: (props: DropdownMenuWrapperProps) => JSX.Element;
|
|
139
143
|
export interface ButtonOperateItem extends ButtonWrapperProps {
|
|
140
144
|
hidden?: boolean;
|
|
141
|
-
/** hover
|
|
145
|
+
/** hover 提示文字,isFold=true无效 */
|
|
142
146
|
hoverTips?: string | React.ReactElement;
|
|
143
147
|
/** hover 提示类型 默认:'tooltip' */
|
|
144
148
|
tipsType?: "popover" | "tooltip";
|
|
@@ -1980,7 +1984,7 @@ export type SelectorWrapperSearchProps = Omit<SelectProps, "onSearch" | "notFoun
|
|
|
1980
1984
|
/**
|
|
1981
1985
|
* 参数Key映射
|
|
1982
1986
|
* ```
|
|
1983
|
-
* 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如:
|
|
1987
|
+
* 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如:'a.b.c'
|
|
1984
1988
|
* 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效
|
|
1985
1989
|
* ```
|
|
1986
1990
|
*/
|
|
@@ -2010,6 +2014,7 @@ export type SelectorWrapperSearchProps = Omit<SelectProps, "onSearch" | "notFoun
|
|
|
2010
2014
|
/** 交互文案配置 */
|
|
2011
2015
|
requestMessageConfig?: TRequestStatusProps["messageConfig"];
|
|
2012
2016
|
onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;
|
|
2017
|
+
customKeyword?: string;
|
|
2013
2018
|
};
|
|
2014
2019
|
/**
|
|
2015
2020
|
* 选择器简单包装组件
|
|
@@ -2150,7 +2155,7 @@ export type SwitchConfirmWrapperProps = Omit<SwitchProps, "defaultChecked" | "on
|
|
|
2150
2155
|
*
|
|
2151
2156
|
* @description switch 切换时做二次pop提醒, 非可控组件【内部控制】
|
|
2152
2157
|
* @param props
|
|
2153
|
-
* @param value
|
|
2158
|
+
* @param value
|
|
2154
2159
|
* @param checkedValue:选中状态值
|
|
2155
2160
|
* @param unCheckedValue:非选中状态值
|
|
2156
2161
|
* @param needConfirm:二次pop拦截时机 可不传 同 all close:switch 由开启转换成关闭时pop弹出、open:switch 由开启转换成开启时pop弹出all:switch 一直popnone:switch 不弹出
|
|
@@ -2160,7 +2165,43 @@ export type SwitchConfirmWrapperProps = Omit<SwitchProps, "defaultChecked" | "on
|
|
|
2160
2165
|
* @param serviceConfig onRequest
|
|
2161
2166
|
* @field onRequest 请求函数
|
|
2162
2167
|
* @field message message配置 success defaultError
|
|
2163
|
-
*
|
|
2168
|
+
* ```
|
|
2169
|
+
* 1. 单独使用
|
|
2170
|
+
* <SwitchConfirmWrapper
|
|
2171
|
+
* value={value}
|
|
2172
|
+
* checkedValue={'1'}
|
|
2173
|
+
* unCheckedValue={'2'}
|
|
2174
|
+
* serviceConfig={{
|
|
2175
|
+
* onRequest: async () => {
|
|
2176
|
+
* await sleep(2000);
|
|
2177
|
+
* },
|
|
2178
|
+
* }}
|
|
2179
|
+
* needConfirm={'all'}
|
|
2180
|
+
* popConfirmProps={{
|
|
2181
|
+
* title: '确定要开启吗?',
|
|
2182
|
+
* }}
|
|
2183
|
+
* onChange={(value) => {
|
|
2184
|
+
* setValue(value as string);
|
|
2185
|
+
* }}
|
|
2186
|
+
* />
|
|
2187
|
+
*
|
|
2188
|
+
* 2. 与Form.Item结合使用
|
|
2189
|
+
* <Form.Item name="open">
|
|
2190
|
+
* <SwitchConfirmWrapper
|
|
2191
|
+
* checkedValue={'1'}
|
|
2192
|
+
* unCheckedValue={'2'}
|
|
2193
|
+
* serviceConfig={{
|
|
2194
|
+
* onRequest: async () => {
|
|
2195
|
+
* await sleep(2000);
|
|
2196
|
+
* },
|
|
2197
|
+
* }}
|
|
2198
|
+
* needConfirm={'all'}
|
|
2199
|
+
* popConfirmProps={{
|
|
2200
|
+
* title: '确定要开启吗?',
|
|
2201
|
+
* }}
|
|
2202
|
+
* />
|
|
2203
|
+
* </Form.Item>
|
|
2204
|
+
* ```
|
|
2164
2205
|
*/
|
|
2165
2206
|
export declare const SwitchConfirmWrapper: (props: SwitchConfirmWrapperProps) => JSX.Element;
|
|
2166
2207
|
export type SwitchWrapperValue = string | number | boolean;
|
|
@@ -2548,7 +2589,7 @@ export type TreeSelectorServiceConfig = {
|
|
|
2548
2589
|
*/
|
|
2549
2590
|
onRequestResultAdapter?: (respData: TAny) => TPlainObject[];
|
|
2550
2591
|
};
|
|
2551
|
-
export type TreeSelectorWrapperProps = Omit<TreeSelectProps, "treeExpandedKeys" | "treeData" | "loading" | "onTreeExpand" | "onChange" | "value" | "fieldNames"> & {
|
|
2592
|
+
export type TreeSelectorWrapperProps = Omit<TreeSelectProps, "treeExpandedKeys" | "treeData" | "loading" | "onTreeExpand" | "onChange" | "value" | "fieldNames" | "defaultValue" | "treeDataSimpleMode"> & {
|
|
2552
2593
|
modelKey: string;
|
|
2553
2594
|
fieldNames?: {
|
|
2554
2595
|
label?: string;
|
|
@@ -2587,6 +2628,7 @@ export type TreeSelectorWrapperProps = Omit<TreeSelectProps, "treeExpandedKeys"
|
|
|
2587
2628
|
*/
|
|
2588
2629
|
showAllOption?: true | TPlainObject<string | number>;
|
|
2589
2630
|
/**
|
|
2631
|
+
* @deprecated 已过期,请使用onChange
|
|
2590
2632
|
* 1. 当 treeCheckable = true && treeCheckStrictly = true,如果选择的数据中含有父节点,selectedValue、selectedList返回数据包含父节点
|
|
2591
2633
|
* 2. 当 treeCheckable = true && treeCheckStrictly = false,selectedValue、selectedList返回的数据不包含父节点
|
|
2592
2634
|
* 3. 当 treeCheckable = false,节点选择没有级联关系,selectedValue、selectedList返回的数据就是实际选择
|
|
@@ -2595,10 +2637,20 @@ export type TreeSelectorWrapperProps = Omit<TreeSelectProps, "treeExpandedKeys"
|
|
|
2595
2637
|
* 6. triggerInfo 当前操作节点数据
|
|
2596
2638
|
*/
|
|
2597
2639
|
onChangeHandle?: (selectedValue?: TreeSelectorWrapperValue, selectedData?: TPlainObject[] | TPlainObject, triggerInfo?: TPlainObject) => void;
|
|
2640
|
+
/**
|
|
2641
|
+
* 1. 当 treeCheckable = true && treeCheckStrictly = true,如果选择的数据中含有父节点,selectedValue、selectedList返回数据包含父节点
|
|
2642
|
+
* 2. 当 treeCheckable = true && treeCheckStrictly = false,selectedValue、selectedList返回的数据不包含父节点
|
|
2643
|
+
* 3. 当 treeCheckable = false,节点选择没有级联关系,selectedValue、selectedList返回的数据就是实际选择
|
|
2644
|
+
* 4. selectAllDataList 返回的数据都包含父节点
|
|
2645
|
+
* 5. 使用 onTreeItemAdapter 拼接label数据后,选中回填数据也是拼接后的
|
|
2646
|
+
* 6. triggerInfo 当前操作节点数据
|
|
2647
|
+
*/
|
|
2648
|
+
onChange?: (selectedValue?: TreeSelectorWrapperValue, selectedData?: TPlainObject[] | TPlainObject, triggerInfo?: TPlainObject) => void;
|
|
2598
2649
|
/**
|
|
2599
2650
|
* tree item 数据适配器
|
|
2600
2651
|
*/
|
|
2601
2652
|
onTreeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;
|
|
2653
|
+
/** 自定义异常提示文案 */
|
|
2602
2654
|
requestMessageConfig?: TRequestStatusProps["messageConfig"];
|
|
2603
2655
|
/**
|
|
2604
2656
|
* value格式
|
|
@@ -2628,6 +2680,8 @@ export type TreeSelectorWrapperProps = Omit<TreeSelectProps, "treeExpandedKeys"
|
|
|
2628
2680
|
* treeCheckStrictly = true模式下有效,点击父节点是否选中所有子节点,默认值:true
|
|
2629
2681
|
*/
|
|
2630
2682
|
selectedParentCheckedAllChildrenList?: boolean;
|
|
2683
|
+
/** 有唯一跟节点时,初始化是否展开,默认值:false */
|
|
2684
|
+
initRootExpand?: boolean;
|
|
2631
2685
|
};
|
|
2632
2686
|
/**
|
|
2633
2687
|
* 树选择器包装组件,由于过度封装,部分antd TreeSelect原始功能不支持,不满足情况的请使用antd TreeSelect实现
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button-operate-81d86480.js","sources":["@flatbiz/antd/src/button-operate/button-operate.tsx"],"sourcesContent":["import { MoreOutlined } from '@ant-design/icons';\nimport { isPlainObject, isPromise, isString, isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Divider, Popconfirm, PopconfirmProps, Popover, Space, SpaceProps, Tooltip } from 'antd';\nimport {\n CSSProperties,\n FC,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useMemo,\n useState,\n} from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { DropdownMenuWrapper, DropdownMenuWrapperProps } from '../dropdown-menu-wrapper';\nimport { fbaUtils } from '../fba-utils';\n\nimport { DialogModalProps } from '../dialog-modal';\nimport './style.less';\n\nexport interface ButtonOperateItem extends ButtonWrapperProps {\n hidden?: boolean;\n /** hover 提示文字 */\n hoverTips?: string | React.ReactElement;\n /** hover 提示类型 默认:'tooltip' */\n tipsType?: 'popover' | 'tooltip';\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n /** 是否需要二次弹框确认 */\n needConfirm?: boolean;\n /** 二次弹框确认文案 */\n confirmMessage?: string;\n /* isFold=false & needConfirm=true 有效 */\n popconfirmProps?: Pick<PopconfirmProps, 'placement' | 'okText' | 'cancelText' | 'trigger'>;\n /** 是否折叠合拢 */\n isFold?: boolean;\n /* isFold=true & needConfirm=true 有效 */\n confirmModalProps?: DialogModalProps;\n}\n\nexport interface ButtonOperateProps {\n /**\n * 如果数组中元素为ReactElement类型\n * 1. 一般为antd Button组件,如果组件存在属性hidden=true,则会隐藏\n * 2. 可配置 v-permission 权限值,例如 v-permission=\"add\"\n * 3. 任何confirm、disabled等状态在外部控制\n * 3. 不支持fold效果\n */\n operateList: Array<ButtonOperateItem | null | ReactElement>;\n wrap?: boolean;\n foldIcon?: ReactElement;\n className?: string;\n split?: boolean;\n spaceProps?: SpaceProps;\n /** 间距,默认:10;split=true配置下无效(可通过spaceProps设置间距) */\n gap?: number;\n style?: CSSProperties;\n /** 折叠合拢属性 */\n dropdownMenuProps?: Omit<DropdownMenuWrapperProps, 'menuList'>;\n}\n\nexport const ButtonOperateItemContent = (\n props: Pick<ButtonOperateItem, 'hoverTips' | 'tipsType'> & { content: ReactNode },\n) => {\n if (props.hoverTips) {\n if (props.tipsType === 'popover') {\n return (\n <Popover content={props.hoverTips} zIndex={1000}>\n <span>{props.content}</span>\n </Popover>\n );\n }\n return (\n <Tooltip title={props.hoverTips} zIndex={1000}>\n <span>{props.content}</span>\n </Tooltip>\n );\n }\n if (isValidElement(props.content)) {\n return <Fragment>{props.content}</Fragment>;\n }\n // ButtonOperate item 内部 span 包文案会有动态效果\n return <span>{props.content}</span>;\n};\n\n/**\n * 按钮组合处理组件\n * ```\n * @flatbiz/antd@4.2.49\n * 1. 替换 Fold 中 needConfirm交互,有 Popconfirm 改为 dialogConfirm组件实现二次弹框确认功能\n * 2. 修改原因:升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框组合使用存在问题\n * ```\n */\nexport const ButtonOperate: FC<ButtonOperateProps> = (props) => {\n const [loading, setLoading] = useState(false);\n\n const onConfirm = hooks.useCallbackRef((item: ButtonOperateItem, event) => {\n const result = item.onClick?.(event);\n if (result && isPromise(result)) {\n setLoading(true);\n return result.finally(() => {\n setLoading(false);\n });\n }\n return;\n });\n\n const operateList = props.operateList.filter((item) => {\n if (!item) return false;\n if (isValidElement(item)) {\n if (item.props?.['hidden'] === true) return false;\n const permission = item.props?.['v-permission'];\n if (isString(permission)) {\n return fbaUtils.hasPermission(permission);\n }\n return true;\n }\n if (isPlainObject(item)) {\n if (!fbaUtils.hasPermission(item['permission'])) {\n return false;\n }\n return !item['hidden'];\n }\n return false;\n }) as Array<ButtonOperateItem | ReactElement>;\n\n const viewList = useMemo(() => {\n return operateList.filter((item) => {\n if (isValidElement(item)) {\n return true;\n }\n return !item['isFold'];\n }) as ButtonOperateItem[];\n }, [operateList]);\n\n const foldList = useMemo(() => {\n const filterList = operateList.filter((item) => {\n if (isValidElement(item)) {\n return false;\n }\n return item['isFold'];\n }) as ButtonOperateItem[];\n const result = [] as ButtonOperateItem[];\n filterList.forEach((item) => {\n const target = { ...item };\n // 多余字段渲染到react dom上,出现警告\n delete target.isFold;\n result.push(target);\n });\n return result;\n }, [operateList]);\n\n const gap = props.gap === undefined ? 10 : props.gap;\n const size = !props.split ? gap : 0;\n\n return (\n <div className={classNames('table-operate', props.className)} style={props.style}>\n <Space\n split={props.split ? <Divider type=\"vertical\" /> : null}\n size={size}\n wrap={isUndefined(props.wrap) ? true : props.wrap}\n {...props.spaceProps}\n >\n {viewList.map((item, index) => {\n if (item && isValidElement(item)) {\n return (\n <ButtonOperateItemContent\n content={item}\n hoverTips={item.hoverTips}\n tipsType={item.tipsType}\n key={index}\n />\n );\n }\n const { text, onClick, needConfirm, confirmMessage, popconfirmProps, hoverTips, ...otherProps } =\n item;\n const type = item.type || 'link';\n if (needConfirm && !otherProps.disabled) {\n const danger = !!item.color ? false : true;\n return (\n <Popconfirm\n okText=\"确定\"\n cancelText=\"取消\"\n trigger={['click']}\n placement=\"topRight\"\n arrow={true}\n destroyTooltipOnHide={true}\n {...popconfirmProps}\n title={confirmMessage}\n onConfirm={onConfirm.bind(null, item)}\n key={index}\n okButtonProps={{\n loading,\n }}\n onOpenChange={(_open) => {\n if (!_open) {\n setLoading(false);\n }\n }}\n onCancel={(event) => {\n event?.stopPropagation();\n }}\n >\n <ButtonWrapper\n danger={danger}\n {...otherProps}\n onClick={(event) => {\n event.stopPropagation();\n }}\n type={type}\n >\n <ButtonOperateItemContent\n content={text}\n hoverTips={hoverTips}\n tipsType={item.tipsType}\n key={index}\n />\n </ButtonWrapper>\n </Popconfirm>\n );\n }\n return (\n <ButtonWrapper\n loadingPosition=\"center\"\n {...otherProps}\n type={type}\n onClick={(event) => {\n event.stopPropagation();\n return onClick?.(event);\n }}\n key={index}\n >\n <ButtonOperateItemContent content={text} hoverTips={hoverTips} tipsType={item.tipsType} />\n </ButtonWrapper>\n );\n })}\n {foldList.length > 0 ? (\n <DropdownMenuWrapper menuList={foldList} placement=\"bottomCenter\" {...props.dropdownMenuProps}>\n <Button\n type=\"link\"\n className=\"fold-more-button\"\n onClick={(event) => {\n event.stopPropagation();\n }}\n >\n {props.foldIcon ? props.foldIcon : <MoreOutlined />}\n </Button>\n </DropdownMenuWrapper>\n ) : null}\n </Space>\n </div>\n );\n};\n\nButtonOperate.defaultProps = {\n split: true,\n};\n"],"names":["ButtonOperateItemContent","props","hoverTips","tipsType","_jsx","Popover","content","zIndex","children","Tooltip","title","isValidElement","Fragment","ButtonOperate","_useState","useState","loading","setLoading","onConfirm","_hooks","useCallbackRef","item","event","result","onClick","_isPromise","finally","operateList","filter","_item$props","_item$props2","permission","_isString","fbaUtils","hasPermission","_isPlainObject","viewList","useMemo","foldList","filterList","forEach","target","_extends","isFold","push","gap","undefined","size","split","className","_classNames","style","_jsxs","Space","Divider","type","wrap","_isUndefined","spaceProps","map","index","text","needConfirm","confirmMessage","popconfirmProps","otherProps","_objectWithoutPropertiesLoose","_excluded","disabled","danger","color","_createElement","Popconfirm","okText","cancelText","trigger","placement","arrow","destroyTooltipOnHide","bind","key","okButtonProps","onOpenChange","_open","onCancel","stopPropagation","ButtonWrapper","loadingPosition","length","DropdownMenuWrapper","menuList","dropdownMenuProps","Button","foldIcon","_MoreOutlined","defaultProps"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import{classNames as e}from"@dimjs/utils/cjs/class-names";import r from"@ant-design/icons/es/icons/ExclamationCircleFilled";import{_ as o,a as n}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{hooks as i}from"@wove/react/cjs/hooks";import{Dropdown as t}from"antd";import{Fragment as a,useMemo as s,createElement as l}from"react";import{B as m}from"./button-wrapper-125fce50.js";import{d}from"./dialog-confirm-74fc9337.js";import{f}from"./fba-utils-f9e11d02.js";import{F as u}from"./flex-layout-8d2b668b.js";import{jsxs as c,jsx as p}from"react/jsx-runtime";function v(e){var r=true;var o=false;while(r){if(e.tagName==="HTML"||e.tagName==="BODY"){r=false;o=false}else{var n=window.getComputedStyle(e),i=n.position;if(i==="sticky"){o=true;r=false}else{if(!e||!e.parentNode){r=false}else{e=e.parentNode}}}}return o}var g=["menuList"],h=["text","permission","needConfirm","confirmMessage","hidden","type","confirmModalProps"];var y=function y(C){var k=C.menuList,P=o(C,g);var x=i.useId(undefined,"DropdownMenuWrapper");var w=i.useCallbackRef((function(e,o){o.stopPropagation();if(e.needConfirm){var i;d.open(n({title:c(u,{direction:"horizontal",fullIndex:1,gap:8,children:[p(r,{style:{color:"#faad14"}}),p("span",{children:e.text})]}),content:p(a,{children:e.confirmMessage}),onOk:(i=e.onClick)==null?void 0:i.bind(null,o),okButtonProps:{loadingPosition:"center"}},e.confirmModalProps));return Promise.resolve()}return e.onClick==null?void 0:e.onClick(o)}));var M=document.querySelector("."+x);var j=s((function(){if(C.isFixed||M&&v(M)){return undefined}return M}),[C.isFixed,M]);var b=s((function(){var r=[];k.filter(Boolean).forEach((function(i,t){if(!i)return;var a=i.text,s=i.permission,d=i.needConfirm,u=i.confirmMessage,c=i.hidden,p=i.type,v=i.confirmModalProps,g=o(i,h);if(c)return;if(s&&!f.hasPermission(s))return;var y=p||"link";var C=g.color?false:d;r.push({key:t,label:l(m,n({loadingPosition:"center",size:"small",danger:C},g,{className:e("dmw-item-button",g.className),type:y,key:t,onClick:w.bind(null,n({},i,{needConfirm:d,confirmMessage:u,confirmModalProps:v}))}),a)})}));return r}),[k,w]);return p("div",{className:e("dropdown-menu-wrapper",x),style:{position:"relative"},children:p(t,n({trigger:(P==null?void 0:P.trigger)||["hover"],getPopupContainer:j?function(){return M}:undefined,arrow:{pointAtCenter:true}},P,{overlayStyle:n({zIndex:9},P.overlayStyle),menu:{items:b},children:C.children}))})};export{y as D};
|
|
3
|
-
//# sourceMappingURL=dropdown-menu-wrapper-016a83b6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu-wrapper-016a83b6.js","sources":["@flatbiz/antd/src/dropdown-menu-wrapper/utils.ts","@flatbiz/antd/src/dropdown-menu-wrapper/dropdown-menu-wrapper.tsx"],"sourcesContent":["export function parentsHasSticky(node: Element) {\n let condition = true;\n let result = false;\n while (condition) {\n if (node.tagName === 'HTML' || node.tagName === 'BODY') {\n condition = false;\n result = false;\n } else {\n const { position } = window.getComputedStyle(node);\n if (position === 'sticky') {\n result = true;\n condition = false;\n } else {\n if (!node || !node.parentNode) {\n condition = false;\n } else {\n node = node.parentNode as Element;\n }\n }\n }\n }\n return result;\n}\n","import { ExclamationCircleFilled } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Dropdown, DropdownProps } from 'antd';\nimport { ItemType } from 'antd/lib/menu/hooks/useItems';\nimport { Fragment, ReactElement, useMemo } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { dialogConfirm } from '../dialog-confirm';\nimport { DialogModalProps } from '../dialog-modal';\nimport { fbaUtils } from '../fba-utils';\nimport { FlexLayout } from '../flex-layout';\nimport './style.less';\nimport { parentsHasSticky } from './utils';\n\nexport interface DropdownMenuItem extends ButtonProps {\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n confirmModalProps?: DialogModalProps;\n}\n\nexport interface DropdownMenuWrapperProps extends Omit<DropdownProps, 'menu'> {\n menuList: Array<DropdownMenuItem | null>;\n isFixed?: boolean;\n}\n\n/**\n * DropdownMenuWrapper\n * 升级 antd 5.5.1 后,Dropdown 中 Popconfirm弹框使用存在问题,所以在 @flatbiz/antd@4.2.49版本修改为使用dialogConfirm组件实现二次弹框确认功能\n * @param props\n * @returns\n */\nexport const DropdownMenuWrapper = (props: DropdownMenuWrapperProps) => {\n const { menuList, ...dropdownOtherProps } = props;\n const clsName = hooks.useId(undefined, 'DropdownMenuWrapper');\n\n const onClick = hooks.useCallbackRef((item: DropdownMenuItem, event) => {\n event.stopPropagation();\n if (item.needConfirm) {\n dialogConfirm.open({\n title: (\n <FlexLayout direction=\"horizontal\" fullIndex={1} gap={8}>\n <ExclamationCircleFilled style={{ color: '#faad14' }} />\n <span>{item.text}</span>\n </FlexLayout>\n ),\n content: <Fragment>{item.confirmMessage}</Fragment>,\n onOk: item.onClick?.bind(null, event),\n okButtonProps: {\n loadingPosition: 'center',\n },\n ...item.confirmModalProps,\n });\n return Promise.resolve();\n }\n return item.onClick?.(event);\n });\n\n const target = document.querySelector(`.${clsName}`);\n const container = useMemo(() => {\n if (props.isFixed || (target && parentsHasSticky(target))) {\n return undefined;\n }\n return target;\n }, [props.isFixed, target]);\n\n const menuItems = useMemo(() => {\n const menuItemsNew: ItemType[] = [];\n menuList.filter(Boolean).forEach((item, index) => {\n if (!item) return;\n const {\n text,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n type,\n confirmModalProps,\n ...otherProps\n } = item;\n if (hidden) return;\n if (permission && !fbaUtils.hasPermission(permission)) return;\n const buttonType = type || 'link';\n const danger = otherProps.color ? false : needConfirm;\n menuItemsNew.push({\n key: index,\n label: (\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n danger={danger}\n {...otherProps}\n className={classNames('dmw-item-button', otherProps.className)}\n type={buttonType}\n key={index}\n onClick={onClick.bind(null, {\n ...item,\n needConfirm,\n confirmMessage,\n confirmModalProps,\n })}\n >\n {text}\n </ButtonWrapper>\n ),\n });\n });\n return menuItemsNew;\n }, [menuList, onClick]);\n\n return (\n <div className={classNames('dropdown-menu-wrapper', clsName)} style={{ position: 'relative' }}>\n <Dropdown\n trigger={dropdownOtherProps?.trigger || ['hover']}\n getPopupContainer={container ? () => target as HTMLElement : undefined}\n arrow={{ pointAtCenter: true }}\n {...dropdownOtherProps}\n overlayStyle={{ zIndex: 9, ...dropdownOtherProps.overlayStyle }}\n menu={{ items: menuItems }}\n >\n {props.children}\n </Dropdown>\n </div>\n );\n};\n"],"names":["parentsHasSticky","node","condition","result","tagName","_window$getComputedSt","window","getComputedStyle","position","parentNode","DropdownMenuWrapper","props","menuList","dropdownOtherProps","_objectWithoutPropertiesLoose","_excluded","clsName","_hooks","useId","undefined","onClick","useCallbackRef","item","event","stopPropagation","needConfirm","_item$onClick","dialogConfirm","open","_extends","title","_jsxs","FlexLayout","direction","fullIndex","gap","children","_jsx","_ExclamationCircleFilled","style","color","text","content","Fragment","confirmMessage","onOk","bind","okButtonProps","loadingPosition","confirmModalProps","Promise","resolve","target","document","querySelector","container","useMemo","isFixed","menuItems","menuItemsNew","filter","Boolean","forEach","index","permission","hidden","type","otherProps","_excluded2","fbaUtils","hasPermission","buttonType","danger","push","key","label","_createElement","ButtonWrapper","size","className","_classNames","Dropdown","trigger","getPopupContainer","arrow","pointAtCenter","overlayStyle","zIndex","menu","items"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import e from"@ant-design/icons/es/icons/FullscreenOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{hooks as i}from"@wove/react/cjs/hooks";import{useKeyPress as o}from"ahooks";import{useState as t,useRef as s}from"react";import{fbaHooks as n}from"./fba-hooks/index.js";import{I as a}from"./icon-wrapper-ed5fcacc.js";import{R as l}from"./rich-text-editor-c8bac6d2.js";import{jsxs as c,jsx as u}from"react/jsx-runtime";var f=function f(m){var d=t(false),v=d[0],p=d[1];var b=s();o((function(){return true}),(function(e){if(e.type==="keyup"&&e.key==="Escape"&&v){p(false)}}),{events:["keydown","keyup"]});var k=i.useCallbackRef((function(){p(!v)}));var h=i.useCallbackRef((function(e,r){b.current=r;m.onInit==null?void 0:m.onInit(r)}));n.useEffectCustom((function(){var e;(e=b.current)==null?void 0:e.editorCommands.execCommand("mceAutoResize")}),[m.value]);return c("div",{className:r("fba-editor-viewer",{"fba-editor-viewer-fixed":v},m.className),style:m.style,children:[m.children,m.fullscreen&&m.value&&u("div",{className:"fba-editor-viewer-icon",children:u(a,{hoverTips:m.fullscreenIconTips,icon:u(e,{}),onClick:k})}),u(l,{value:'<div style="overflow: hidden">'+m.value+"</div>",onInit:h,imgPreview:true,disabled:true,init:{plugins:"autoresize",menubar:false,toolbar:"",statusbar:false}})]})};export{f as R};
|
|
3
|
-
//# sourceMappingURL=rich-text-viewer-3bf4569a.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import e from"@ant-design/icons/es/icons/RedoOutlined";import{hooks as r}from"@wove/react/cjs/hooks";import{_ as t,a as n}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isArray as o}from"@dimjs/lang/cjs/is-array";import{get as a}from"@dimjs/utils/cjs/get";import{Select as i,Button as s}from"antd";import{useState as l,useMemo as u}from"react";import{R as c}from"./request-status-03fc60e2.js";import{jsx as d}from"react/jsx-runtime";var f=["showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames","onLabelRenderAdapter"];var v=function v(m){var p=m.showAllOption,h=m.serviceConfig,g=m.onSelectorListChange,q=m.onSelectorRequestError,b=m.requestMessageConfig,C=m.fieldNames,R=m.onLabelRenderAdapter,y=t(m,f);var w=l("request-init"),j=w[0],S=w[1];var A=l(),k=A[0],L=A[1];var O=(C==null?void 0:C.label)||"label";var x=(C==null?void 0:C.value)||"value";var E=(C==null?void 0:C.disabled)||"disabled";var M=(C==null?void 0:C.searchKeyword)||"searchKeyword";var P=h.params;var B=u((function(){var e=p===true;if(p){return{label:e?"全部":p.label,value:e?"":p.value}}return null}),[p]);var I=function e(r){if(h.onRequestResultAdapter){return h.onRequestResultAdapter(r)}if(C!=null&&C.list){var t=a(r,C==null?void 0:C.list);return o(t)?t:[]}return o(r)?r:[]};var K=function e(r){return new Promise((function(e,t){var o,a,i;var s=function(){try{return e()}catch(e){return t(e)}};var l=function(e){try{S("request-error");q==null?void 0:q(e);return s()}catch(e){return t(e)}};try{S("request-progress");return Promise.resolve(h.onRequest==null?void 0:h.onRequest(n({},P,(o={},o[M]=r,o)))).then((function(e){try{a=e;i=I(a);g==null?void 0:g(i);if(O&&x){i=i.map((function(e){return n({},e,{label:e[O],value:e[x],disabled:e[E||"disabled"]})}))}i.forEach((function(e){if(R){e.label=R(e)}}));if(B){i.unshift(B)}L(i);S("request-success");return s()}catch(e){return l(e)}}),l)}catch(e){l(e)}}))};var N=r.useDebounceCallback((function(e){L([]);void K(e)}),300);var _=j==="request-progress";return d(i,n({showSearch:true,allowClear:true,dropdownMatchSelectWidth:false},y,{style:n({width:"100%"},m.style),options:k,filterOption:false,onSearch:N,notFoundContent:d(c,{status:j,loading:_,messageConfig:n({"request-init":"请输入搜索条件"},b),errorButton:d(s,{type:"primary",onClick:K,children:"重新获取数据"})}),suffixIcon:j==="request-error"?d(e,{spin:_,onClick:K}):undefined,loading:_}))};export{v as S};
|
|
3
|
-
//# sourceMappingURL=selector-wrapper-search-dade1b6b.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selector-wrapper-search-dade1b6b.js","sources":["@flatbiz/antd/src/selector-wrapper-search/selector-wrapper-search.tsx"],"sourcesContent":["import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport { LabelValueItem, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select, SelectProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { RequestStatus, TRequestStatus, TRequestStatusProps } from '../request-status';\n\nexport type SelectorWrapperSearchServiceConfig = {\n params?: TPlainObject;\n onRequest: (params?: TAny) => TAny;\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type SelectorWrapperSearchProps = Omit<\n SelectProps,\n 'onSearch' | 'notFoundContent' | 'options' | 'fieldNames' | 'loading'\n> & {\n /**\n * 参数Key映射\n * ```\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * ```\n */\n fieldNames?: { label: string; value: string; disabled?: string; searchKeyword?: string; list?: string };\n /**\n * 请求服务需求的数据\n */\n serviceConfig: SelectorWrapperSearchServiceConfig;\n /**\n * 添加全部选项\n * ```\n * 1. 默认值label=\"全部\",value=\"\"\n * 2. 可配置label、value\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /** selectorList发生变更时触发,每次都会调用 */\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /** 通过服务获取数据异常回调 */\n onSelectorRequestError?: (error: Error) => void;\n /** 交互文案配置 */\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;\n};\n/**\n * 选择器简单包装组件\n * @param props\n * @returns\n * ```\n * 1. 只支持 search + 服务 功能\n * 2. 不会缓存接口数据\n * 3. 不会对value、onChange做任何处理\n * ```\n */\nexport const SelectorWrapperSearch = (props: SelectorWrapperSearchProps) => {\n const {\n showAllOption,\n serviceConfig,\n onSelectorListChange,\n onSelectorRequestError,\n requestMessageConfig,\n fieldNames,\n onLabelRenderAdapter,\n ...otherProps\n } = props;\n const [requestStatus, setRequestStatus] = useState<TRequestStatus>('request-init');\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const optionsItemLabelField = fieldNames?.label || 'label';\n const optionsItemValueField = fieldNames?.value || 'value';\n const optionsItemDisabledField = fieldNames?.disabled || 'disabled';\n const searchKeyword = fieldNames?.searchKeyword || 'searchKeyword';\n const serviceParams = serviceConfig.params;\n\n const allOptionConfig = useMemo(() => {\n const isTrue = showAllOption === true;\n if (showAllOption) {\n return {\n label: isTrue ? '全部' : (showAllOption.label as string),\n value: isTrue ? '' : (showAllOption.value as TAny),\n };\n }\n return null;\n }, [showAllOption]);\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig.onRequestResultAdapter) {\n return serviceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n }\n if (fieldNames?.list) {\n const result = get(respData, fieldNames?.list);\n return isArray(result) ? result : [];\n }\n return isArray(respData) ? respData : [];\n };\n\n const startDataSourceRequest = async (keyword) => {\n try {\n setRequestStatus('request-progress');\n const respData = await serviceConfig.onRequest?.({\n ...serviceParams,\n [searchKeyword]: keyword,\n });\n let respAdapterData = serviceRespDataAdapter(respData);\n onSelectorListChange?.(respAdapterData);\n if (optionsItemLabelField && optionsItemValueField) {\n respAdapterData = respAdapterData.map((item) => {\n return {\n ...item,\n label: item[optionsItemLabelField],\n value: item[optionsItemValueField],\n disabled: item[optionsItemDisabledField || 'disabled'],\n };\n });\n }\n\n respAdapterData.forEach((item) => {\n if (onLabelRenderAdapter) {\n item.label = onLabelRenderAdapter(item);\n }\n });\n\n if (allOptionConfig) {\n respAdapterData.unshift(allOptionConfig);\n }\n setDataSource(respAdapterData);\n setRequestStatus('request-success');\n } catch (error) {\n setRequestStatus('request-error');\n onSelectorRequestError?.(error);\n }\n };\n\n const onSearch = hooks.useDebounceCallback((value: string) => {\n setDataSource([]);\n void startDataSourceRequest(value);\n }, 300);\n\n const loading = requestStatus === 'request-progress';\n return (\n <Select\n showSearch={true}\n allowClear={true}\n dropdownMatchSelectWidth={false}\n {...otherProps}\n style={{ width: '100%', ...props.style }}\n options={dataSource as LabelValueItem[]}\n filterOption={false}\n onSearch={onSearch}\n notFoundContent={\n <RequestStatus\n status={requestStatus}\n loading={loading}\n messageConfig={{\n 'request-init': '请输入搜索条件',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n suffixIcon={\n requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={startDataSourceRequest} />\n ) : undefined\n }\n loading={loading}\n />\n );\n};\n"],"names":["SelectorWrapperSearch","props","showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames","onLabelRenderAdapter","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","requestStatus","setRequestStatus","_useState2","dataSource","setDataSource","optionsItemLabelField","label","optionsItemValueField","value","optionsItemDisabledField","disabled","searchKeyword","serviceParams","params","allOptionConfig","useMemo","isTrue","serviceRespDataAdapter","respData","onRequestResultAdapter","list","result","_get","_isArray","startDataSourceRequest","keyword","Promise","$return","$error","_extends2","_respData","respAdapterData","$Try_1_Post","$boundEx","$Try_1_Catch","error","resolve","onRequest","_extends","then","$await_2","map","item","forEach","unshift","onSearch","_hooks","useDebounceCallback","loading","_jsx","Select","showSearch","allowClear","dropdownMatchSelectWidth","style","width","options","filterOption","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","children","suffixIcon","_RedoOutlined","spin","undefined"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import{_ as e,a as r}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{hooks as n}from"@wove/react/cjs/hooks";import{message as o,Popconfirm as t,Switch as i}from"antd";import{useState as a,useMemo as u}from"react";import{jsx as l}from"react/jsx-runtime";var s=["popConfirmProps","needConfirm","checkedValue","unCheckedValue","onChange","value","serviceConfig","noMessage"];var c=function c(d){var f=d.popConfirmProps,v=d.needConfirm,h=d.checkedValue,m=d.unCheckedValue,p=d.onChange,g=d.value,C=d.serviceConfig,k=d.noMessage,b=e(d,s);var P=f||{},y=P.description,V=P.title,j=P.disabled;var R=a(g===h),q=R[0],w=R[1];var x=a(false),B=x[0],M=x[1];var _=u((function(){return v==="close"&&q||v==="open"&&!q||!v||v==="all"}),[q,v]);var E=n.useCallbackRef((function(){return new Promise((function(e,r){var n,t,i;n=!q?h:m;if(C!=null&&C.onRequest){var a=function(e){return function(n){try{M(false);return e&&e.call(this,n)}catch(e){return r(e)}}.bind(this)}.bind(this);var u=function(){try{return s.call(this)}catch(e){return r(e)}}.bind(this);var l=function(e){try{if(!k){void o.error((e==null?void 0:e.message)||(C==null?void 0:(i=C.message)==null?void 0:i.defaultError)||"状态修改失败!")}return a(u)()}catch(e){return a(r)(e)}};try{M(true);return Promise.resolve(C.onRequest(n)).then((function(e){try{w(!q);p==null?void 0:p(n);if(!k){void o.success((C==null?void 0:(t=C.message)==null?void 0:t.success)||"状态修改成功!")}return a(u)()}catch(e){return l(e)}}),l)}catch(e){l(e)}}else{w(!q);p==null?void 0:p(n);return s.call(this)}function s(){return e()}}))}));if(_){return l(t,{disabled:j,okButtonProps:{loading:B},title:V,description:y,onConfirm:E,children:l(i,r({checked:q},b))})}return l(i,r({checked:q,loading:B},b,{onChange:E}))};export{c as S};
|
|
3
|
-
//# sourceMappingURL=switch-confirm-wrapper-4857f2a9.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"switch-confirm-wrapper-4857f2a9.js","sources":["@flatbiz/antd/src/switch-confirm-wrapper/switch-confirm-wrapper.tsx"],"sourcesContent":["import { TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { message, Popconfirm, PopconfirmProps, Switch, SwitchProps } from 'antd';\nimport { useMemo, useState } from 'react';\n\nexport type SwitchConfirmWrapperValue = string | number | boolean;\nexport type SwitchConfirmWrapperProps = Omit<SwitchProps, 'defaultChecked' | 'onChange'> & {\n value?: SwitchConfirmWrapperValue;\n checkedValue: SwitchConfirmWrapperValue;\n unCheckedValue: SwitchConfirmWrapperValue;\n needConfirm?: 'close' | 'open' | 'all' | 'none';\n noMessage?: boolean;\n onChange?: (value: SwitchConfirmWrapperValue) => void;\n popConfirmProps?: Pick<PopconfirmProps, 'disabled' | 'title' | 'description'>;\n serviceConfig?: {\n onRequest: (value: SwitchConfirmWrapperValue) => TAny;\n message?: {\n success?: string;\n defaultError?: string;\n };\n };\n};\n\n/**\n *\n * @description switch 切换时做二次pop提醒, 非可控组件【内部控制】\n * @param props\n * @param value:初始值\n * @param checkedValue:选中状态值\n * @param unCheckedValue:非选中状态值\n * @param needConfirm:二次pop拦截时机 可不传 同 all close:switch 由开启转换成关闭时pop弹出、open:switch 由开启转换成开启时pop弹出all:switch 一直popnone:switch 不弹出\n * @param noMessage:不采用内置message提示\n * @param onChange:switch 有效切换回掉\n * @param popConfirmProps:popConfirm中参数 disabled title description\n * @param serviceConfig onRequest\n * @field onRequest 请求函数\n * @field message message配置 success defaultError\n * @returns RC\n */\nexport const SwitchConfirmWrapper = (props: SwitchConfirmWrapperProps) => {\n const {\n popConfirmProps,\n needConfirm,\n checkedValue,\n unCheckedValue,\n onChange,\n value,\n serviceConfig,\n noMessage,\n ...otherProps\n } = props;\n const { description, title, disabled } = popConfirmProps || {};\n const [isCheked, setIsCheked] = useState(value === checkedValue);\n const [loading, setLoading] = useState<boolean>(false);\n const showConfirm = useMemo(() => {\n return (\n (needConfirm === 'close' && isCheked) ||\n (needConfirm === 'open' && !isCheked) ||\n !needConfirm ||\n needConfirm === 'all'\n );\n }, [isCheked, needConfirm]);\n\n const onHandleChange = hooks.useCallbackRef(async () => {\n const changeValue = !isCheked ? checkedValue : unCheckedValue;\n if (serviceConfig?.onRequest) {\n try {\n setLoading(true);\n await serviceConfig.onRequest(changeValue);\n setIsCheked(!isCheked);\n onChange?.(changeValue);\n if (!noMessage) {\n void message.success(serviceConfig?.message?.success || '状态修改成功!');\n }\n } catch (error) {\n if (!noMessage) {\n void message.error(error?.message || serviceConfig?.message?.defaultError || '状态修改失败!');\n }\n } finally {\n setLoading(false);\n }\n } else {\n setIsCheked(!isCheked);\n onChange?.(changeValue);\n }\n });\n if (showConfirm) {\n return (\n <Popconfirm\n disabled={disabled}\n okButtonProps={{ loading: loading }}\n title={title}\n description={description}\n onConfirm={onHandleChange}\n >\n <Switch checked={isCheked} {...otherProps} />\n </Popconfirm>\n );\n }\n return <Switch checked={isCheked} loading={loading} {...otherProps} onChange={onHandleChange} />;\n};\n"],"names":["SwitchConfirmWrapper","props","popConfirmProps","needConfirm","checkedValue","unCheckedValue","onChange","value","serviceConfig","noMessage","otherProps","_objectWithoutPropertiesLoose","_excluded","_ref","description","title","disabled","_useState","useState","isCheked","setIsCheked","_useState2","loading","setLoading","showConfirm","useMemo","onHandleChange","_hooks","useCallbackRef","Promise","$return","$error","changeValue","_serviceConfig$messag","_serviceConfig$messag2","onRequest","$Try_1_Finally","$Try_1_Exit","$Try_1_Value","call","this","$boundEx","bind","$Try_1_Post","$If_2","$Try_1_Catch","error","message","defaultError","resolve","then","$await_3","success","_jsx","Popconfirm","okButtonProps","onConfirm","children","Switch","_extends","checked"],"mappings":";6XAuCaA,EAAuB,SAAvBA,EAAwBC,GACnC,IACEC,EASED,EATFC,gBACAC,EAQEF,EARFE,YACAC,EAOEH,EAPFG,aACAC,EAMEJ,EANFI,eACAC,EAKEL,EALFK,SACAC,EAIEN,EAJFM,MACAC,EAGEP,EAHFO,cACAC,EAEER,EAFFQ,UACGC,EAAUC,EACXV,EAAKW,GACT,IAAAC,EAAyCX,GAAmB,CAAE,EAAtDY,EAAWD,EAAXC,YAAaC,EAAKF,EAALE,MAAOC,EAAQH,EAARG,SAC5B,IAAAC,EAAgCC,EAASX,IAAUH,GAA5Ce,EAAQF,EAAA,GAAEG,EAAWH,EAAA,GAC5B,IAAAI,EAA8BH,EAAkB,OAAzCI,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1B,IAAMG,EAAcC,GAAQ,WAC1B,OACGtB,IAAgB,SAAWgB,GAC3BhB,IAAgB,SAAWgB,IAC3BhB,GACDA,IAAgB,KAEpB,GAAG,CAACgB,EAAUhB,IAEd,IAAMuB,EAAiBC,EAAMC,gBAAe,WAAA,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IACpCC,EAAuDC,EAAAC,EAAvDF,GAAeb,EAAWf,EAAeC,EAC/C,GAAIG,GAAa,MAAbA,EAAe2B,UAAW,CAAA,IAAAC,EAjElC,SAAAC,GAAA,OAAC,SAAAC,GAAD,IA+EQf,EAAW,OA/E4F,OAAOc,GAAUA,EAAME,KAAKC,KAAIF,EAAtI,CAAC,MAAAG,GAAW,OAAOV,EAAAU,EAAM,CAAgI,EAA/JC,KAAKF,OAALE,KAAKF,MAAR,IAAIG,EAAJ,WAAA,IAAI,OAAJC,EAAGL,KAAQC,KAAF,CAAC,MAAAC,GAAW,OAAOV,EAAAU,EAAM,GAA/BC,KAAKF,MAAR,IAAIK,EAAA,SA0EWC,GA1Ef,IA2EQ,IAAKrC,EAAW,MACTsC,EAAQD,OAAMA,GAAAA,UAAAA,EAAAA,EAAOC,WAAWvC,gBAAa0B,EAAb1B,EAAeuC,UAAO,UAAA,EAAtBb,EAAwBc,eAAgB,UAC/E,CA7ER,OAAOZ,EAAAO,EAAAP,EAAE,CAAC,MAAAK,GAAW,OAAOL,EAAAL,EAAAK,CAAAK,EAAM,GAkE5B,IACElB,EAAW,MACX,OAAAM,QAAAoB,QAAMzC,EAAc2B,UAAUH,IAA9BkB,eAA0CC,GApElD,IAqEQ/B,GAAaD,GACbb,GAAAA,UAAAA,EAAAA,EAAW0B,GACX,IAAKvB,EAAW,MACTsC,EAAQK,SAAQ5C,gBAAayB,EAAbzB,EAAeuC,UAAfd,UAAAA,EAAAA,EAAwBmB,UAAW,UAC1D,CAzER,OAAOhB,EAAAO,EAAAP,EAAE,CAAC,MAAAK,GAAW,OAAOI,EAAAJ,EAAM,CAAC,GAAAI,EA0E5B,CAAC,MAAOC,GAAOD,EAAPC,EAIT,CAGF,KAAO,CACL1B,GAAaD,GACbb,GAAAA,UAAAA,EAAAA,EAAW0B,GAAa,OAnF9BY,EAAGL,KAAQC,KAoFP,CAAC,SAAAI,IAAA,OAAAd,GAAA,CAAA,OAEH,GAAIN,EAAa,CACf,OACE6B,EAACC,EAAU,CACTtC,SAAUA,EACVuC,cAAe,CAAEjC,QAASA,GAC1BP,MAAOA,EACPD,YAAaA,EACb0C,UAAW9B,EAAe+B,SAE1BJ,EAACK,EAAMC,EAAA,CAACC,QAASzC,GAAcT,KAGrC,CACA,OAAO2C,EAACK,EAAMC,EAAA,CAACC,QAASzC,EAAUG,QAASA,GAAaZ,EAAU,CAAEJ,SAAUoB,IAChF"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import t from"@ant-design/icons/es/icons/CaretDownFilled";import{isString as l}from"@dimjs/lang/cjs/is-string";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{extend as a}from"@dimjs/utils/cjs/extend";import{hooks as u}from"@wove/react/cjs/hooks";import{_ as i,a as o}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{treeToTiledArray as s,treeLeafParentsArray as c,toArray as f,isUndefinedOrNull as v,treeToArray as d,arrayFind as m,valueIsEqual as h,isNumber as p,getValueOrDefault as S}from"@flatbiz/utils";import{TreeSelect as b,Button as C}from"antd";import{useState as g,useMemo as y,useRef as L,createElement as w}from"react";import{Model as k}from"@dimjs/model-react";import{dequal as q}from"dequal";import{fbaHooks as R}from"./fba-hooks/index.js";import{R as T}from"./request-status-03fc60e2.js";import{isObject as A}from"@dimjs/lang/cjs/is-object";import{jsx as j}from"react/jsx-runtime";var N={treeSelectorList:[],treeSelectorTiledArray:[],queryIsEmpty:false};var E={actions:{setSelectBoxList:function e(r){return function(e){e.treeSelectorList=r.treeSelectorList||[];e.treeSelectorTiledArray=r.treeSelectorTiledArray||[];e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.treeSelectorList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:N};var x={};var I=function e(r){if(!x[r]){x[r]=k(E)}return x[r]};var P=function e(r,t,l){if(!n(t)||t.length===0)return[];var a=s(t,l);return c(r,a,true,{value:"value",parentValue:"parentValue"})};var V=function e(r,t){var l=f(r);l=l.map((function(e){if(A(e))return e[t.value];return e}));return l};var B=function e(r,t){var l=V(r,t);var n={};l.forEach((function(e){n[e]=true}));return n};var H=function e(r,t,l){if(v(r)&&v(t))return true;var n=B(r,l);var a=B(t,l);var u=q(n,a);return u};var O=["serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","treeSelectorList","requestMessageConfig","modelKey","value","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","selectedParentCheckedAllChildrenList","fieldNames","onChange","onChangeHandle","showAllOption"];var D=function s(c){var k=c,A=k.serviceConfig,N=k.effectDependencyList,E=k.onTreeSelectorListChange,x=k.onTreeSelectorRequestError,B=k.treeSelectorList,D=k.requestMessageConfig,F=k.modelKey,K=k.value,W=k.labelInValue,_=k.labelInValueFieldNames,M=k.onTreeItemDataAdapter,z=k.selectedParentCheckedAllChildrenList,G=z===void 0?true:z,J=k.fieldNames,Q=k.onChange,U=k.onChangeHandle,X=k.showAllOption,Y=i(k,O);var Z=c.hasOwnProperty("treeSelectorList");var $=A||{};var ee=N||[];var re=R.useSafeState(false),te=re[0],le=re[1];var ne=g(),ae=ne[0],ue=ne[1];var ie=I(F).useStore(),oe=ie[0],se=ie[1];var ce="request-progress-"+F;var fe=Y.treeCheckable;var ve=y((function(){if(Y.treeCheckStrictly)return true;return W}),[W,Y.treeCheckStrictly]);var de=y((function(){return o({label:"label",value:"value",children:"children",disabled:"disabled"},J)}),[J]);var me=y((function(){return o({label:"label",value:"value"},_)}),[_]);var he=y((function(){if(X){var e=X===true;return{label:e?"全部":X.label,value:e?"":X.value}}return null}),[X]);var pe=g(),Se=pe[0],be=pe[1];var Ce=L(true);R.useEffectCustom((function(){if(v(K)&&Ce.current)return;Ce.current=false;if(oe.treeSelectorList.length>0){if(!H(K,Se,me)){console.log("modelKey:"+F+" TreeSelectorWrapper key refresh",K,Se);var e=V(K,me);be(e);var r=Re(e,true);ue(Array.from(new Set(r)))}}}),[K,oe.treeSelectorList]);var ge=function e(r){return r===""||v(r)};var ye=function e(r){var t=$.onRequestResultAdapter?$.onRequestResultAdapter(r):r;return t};var Le=u.useCallbackRef((function(){return new Promise((function(e,r){var t,l,n,u,i;if(!$.onRequest){return r(new Error("onRequest 调用接口服务不能为空"))}t=$.requiredParamsKeys||[];l=a({},$.params);n=t.find((function(e){return ge(l[e])}));if(n){console.warn("TreeSelectorWrapper组件:参数:"+t.join("、")+"不能为空");return e()}var o=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{le(false);window[ce]=false;void se.changeRequestStatus("request-error");x==null?void 0:x(e);return o()}catch(e){return r(e)}};try{le(true);window[ce]=true;void se.changeRequestStatus("request-progress");return Promise.resolve($.onRequest==null?void 0:$.onRequest(l)).then((function(e){try{u=e;i=ye(u);le(false);window[ce]=false;we(i||[]);return o()}catch(e){return s(e)}}),s)}catch(e){s(e)}}))}));u.useCustomCompareEffect((function(){if(Z)return;if(Boolean(ee.length)){we([]);void Le();return}var e=I(F).getState();if(e.requestStatus==="request-success"){return}if(!window[ce]){void Le();return}}),ee,q);var we=u.useCallbackRef((function(e){var r;if((e==null?void 0:e.length)===0&&oe.treeSelectorList.length===0){void se.setSelectBoxList({treeSelectorList:[],treeSelectorTiledArray:[]});E==null?void 0:E([]);return}var t=he?(r={},r[de.label]=he.label,r[de.value]=he.value,r):undefined;var l=X?[t].concat(e):e;void se.setSelectBoxList({treeSelectorList:l,treeSelectorTiledArray:d(l||[],de.children)});E==null?void 0:E(e)}));R.useEffectCustom((function(){if(Z){we(B||[])}}),[B]);var ke=u.useCallbackRef((function(e){ue(e)}));var qe=u.useCallbackRef((function(){void Le()}));var Re=u.useCallbackRef((function(e,r){var t=[];e.forEach((function(e){if(!r&&ae!=null&&ae.includes(e))return;var l=P(e,oe.treeSelectorList,de);t=t.concat(l.map((function(e){return e.value})))}));return t}));var Te=u.useCallbackRef((function(e){if(!e)return undefined;return{label:e==null?void 0:e[de.label],value:e==null?void 0:e[de.value],children:e==null?void 0:e[de.children],disabled:e==null?void 0:e["disabled"]}}));var Ae=u.useCallbackRef((function(e){if(!e)return undefined;return{label:e==null?void 0:e[me.label],value:e==null?void 0:e[me.value],disabled:e==null?void 0:e["disabled"]}}));var je=u.useCallbackRef((function(e,r){var t=V(e,{value:"value",label:"label"});var l=[];t.forEach((function(e){var r=m(oe.treeSelectorTiledArray,e,de.value);if(!r)return;l.push(r)}));if(Y.treeCheckStrictly&&G){var a=Te(r.checked?m(oe.treeSelectorTiledArray,r.triggerValue,de.value):null);if(a&&n(a.children)&&a.children.length>0){var u=d(a.children,de.children);var i=u.filter((function(e){var r=Te(e);if(r!=null&&r.disabled)return false;if(m(l,r==null?void 0:r.value,de.value))return false;return true}));l=l.concat(i)}}var o=[];if(Y.treeCheckable){if(Y.treeCheckStrictly===true||h(Y.showCheckedStrategy,["SHOW_ALL","SHOW_PARENT"])){o=l}else{o=l.filter((function(e){var r=e[de.children];return!(n(r)&&r.length>0)}))}}else{o=l}return{realTreeNodeList:o,realTreeNodeValueList:V(o,de)}}));var Ne=u.useCallbackRef((function(e,r,t){be(e);Q==null?void 0:Q(e);U==null?void 0:U(e,r,t)}));var Ee=u.useCallbackRef((function(e,r,t){var l=je(e,t),n=l.realTreeNodeList,a=l.realTreeNodeValueList;if(Y.treeCheckable){ue((function(e){var r=Re(a).concat(e||[]);return Array.from(new Set(r))}))}if(ve){var u=n.map((function(e){var r;var t=Te(e);return r={},r[me.label]=t==null?void 0:t.label,r[me.value]=t==null?void 0:t.value,r}));if(fe){Ne==null?void 0:Ne(u,n,t)}else{Ne==null?void 0:Ne(u[0],n[0],t)}}else{if(fe){Ne==null?void 0:Ne(a,n,t)}else{Ne==null?void 0:Ne(a[0],n[0],t)}}}));var xe=u.useCallbackRef((function(e){if(!e)return null;return e.map((function(e){var r=(M==null?void 0:M(o({},e)))||e;var t=r[de.children];var l=r[de.value];var n=r[de.label];var a=r[de.disabled]?r[de.disabled]:r.disabled;return w(b.TreeNode,o({},r,{disabled:a,value:l,title:n,key:""+l}),t&&t.length>0&&xe(t))}))}));var Ie=y((function(){var e=f(Se);if(e.length==0)return[];if(Y.treeCheckStrictly){if(oe.treeSelectorTiledArray.length===0){return e.map((function(e){return{label:e,value:e}}))}return e.map((function(e){var r,t;var n;var a;if(l(e)||p(e)){var u=m(oe.treeSelectorTiledArray,e,de.value);n=Te(u);a=e}else{n=Ae(e)}return{label:S((r=n)==null?void 0:r.label,a),value:S((t=n)==null?void 0:t.value,a)}}))}return V(Se,me)}),[Se,Y.treeCheckStrictly,me,oe.treeSelectorTiledArray,de.value,Te,Ae]);var Pe=y((function(){if(n(Ie)&&Ie.length===0){return undefined}return fe?Ie:Ie[0]}),[fe,Ie]);return j(b,o({dropdownStyle:{maxHeight:400,overflow:"auto"},showSearch:true,treeLine:{showLeafIcon:false},treeNodeFilterProp:"title",switcherIcon:j(t,{}),showArrow:true},Y,{className:r("v-tree-select-wrapper",Y.className),popupClassName:r("v-tree-select-wrapper-dropdown",Y.popupClassName),onChange:Ee,treeExpandedKeys:ae,value:Pe,loading:te,dropdownMatchSelectWidth:false,onTreeExpand:ke,style:o({width:"100%"},Y.style),suffixIcon:oe.requestStatus==="request-error"?j(e,{spin:te,onClick:qe}):undefined,notFoundContent:j(T,{status:oe.requestStatus,messageConfig:D,loading:te,errorButton:j(C,{type:"primary",onClick:qe,children:"重新获取数据"})}),children:xe(oe.treeSelectorList)}))};export{D as T};
|
|
3
|
-
//# sourceMappingURL=tree-selector-wrapper-9cd9da23.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tree-selector-wrapper-9cd9da23.js","sources":["@flatbiz/antd/src/tree-selector-wrapper/model.ts","@flatbiz/antd/src/tree-selector-wrapper/utils.ts","@flatbiz/antd/src/tree-selector-wrapper/tree-selector-wrapper.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeSelectorList: TSetDefaultDefined<TreeSelectProps['treeData'], []>;\n treeSelectorTiledArray: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: {\n treeSelectorList: ModelState['treeSelectorList'];\n treeSelectorTiledArray: ModelState['treeSelectorTiledArray'];\n };\n resetSelectBoxList: void;\n changeRequestStatus: TRequestStatus;\n};\n\nconst defaultState: ModelState = {\n treeSelectorList: [],\n treeSelectorTiledArray: [],\n queryIsEmpty: false,\n};\n\nconst TreeSelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.treeSelectorList = params.treeSelectorList || [];\n state.treeSelectorTiledArray = params.treeSelectorTiledArray || [];\n state.requestStatus = 'request-success';\n };\n },\n resetSelectBoxList: () => {\n return (state) => {\n state.treeSelectorList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeSelectorWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeSelectorWrapperModel('key值').useStore();\n * ```\n */\nexport const treeSelectorWrapperModel = (key: string) => {\n if (!treeSelectorWrapperModels[key]) {\n treeSelectorWrapperModels[key] = Model(TreeSelectorWrapperModel);\n }\n return treeSelectorWrapperModels[key];\n};\n","import { isArray, isObject } from '@dimjs/lang';\nimport {\n isUndefinedOrNull,\n LabelValueItem,\n toArray,\n TPlainObject,\n treeLeafParentsArray,\n treeToTiledArray,\n} from '@flatbiz/utils';\nimport { TreeSelectProps } from 'antd';\nimport { dequal } from 'dequal';\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames?: TreeSelectProps['fieldNames'],\n) => {\n if (!isArray(treeList) || treeList.length === 0) return [];\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray, true, { value: 'value', parentValue: 'parentValue' });\n};\n\nexport const getVauleList = (data, fieldNames: LabelValueItem<string>) => {\n let tempList = toArray<TPlainObject | string | number>(data);\n tempList = tempList.map((item) => {\n if (isObject(item)) return item[fieldNames.value];\n return item;\n });\n return tempList as Array<string | number>;\n};\n\nexport const array2map = (data, fieldNames: LabelValueItem<string>) => {\n const list = getVauleList(data, fieldNames);\n const map = {};\n list.forEach((item) => {\n map[item] = true;\n });\n return map;\n};\n\n/**\n * value的类型包括 string、number、Array<string | number>、{ label: string, value: string | nuber }\n * 将数组转成对象,深度比较时不用考虑顺序问题\n * @param value1\n * @param value2\n * @returns\n */\nexport const treeSelectorWrapperValueDeepEqual = (\n value1: any,\n value2: any,\n fieldNames: LabelValueItem<string>,\n) => {\n if (isUndefinedOrNull(value1) && isUndefinedOrNull(value2)) return true;\n const object1 = array2map(value1, fieldNames);\n const object2 = array2map(value2, fieldNames);\n const diff = dequal(object1, object2);\n return diff;\n};\n","import { CaretDownFilled, RedoOutlined } from '@ant-design/icons';\nimport { isArray, isString } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport {\n isNumber,\n isUndefinedOrNull,\n TAny,\n toArray,\n TPlainObject,\n treeToArray,\n valueIsEqual,\n} from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, TreeSelect, TreeSelectProps } from 'antd';\nimport { DependencyList, useMemo, useRef, useState } from 'react';\nimport { treeSelectorWrapperModel } from './model';\nimport './style.less';\n\nimport { arrayFind, getValueOrDefault } from '@flatbiz/utils';\nimport { dequal } from 'dequal';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport { getExpandedKeys, getVauleList, treeSelectorWrapperValueDeepEqual } from './utils';\n\ntype TreeSelectorWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeSelectorServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeSelectorWrapperProps = Omit<\n TreeSelectProps,\n 'treeExpandedKeys' | 'treeData' | 'loading' | 'onTreeExpand' | 'onChange' | 'value' | 'fieldNames'\n> & {\n modelKey: string;\n fieldNames?: { label?: string; value?: string; children?: string; disabled?: string };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`treeSelectorList`后无效果\n */\n serviceConfig?: TreeSelectorServiceConfig;\n /**\n * 当设置treeSelectorList后,serviceConfig 将失效\n */\n treeSelectorList?: TreeSelectProps['treeData'];\n /**\n * treeSelectorList发生变更时触发\n */\n onTreeSelectorListChange?: (treeSelectorList?: TreeSelectProps['treeData']) => void;\n /**\n * 通过服务获取数据异常回调,当设置`treeSelectorList`后无效果\n */\n onTreeSelectorRequestError?: (error: Error) => void;\n /**\n * 添加全部选项\n * ```\n * 1. showAllOption = true,添加默认全部选项(value值为空字符串)\n * 2. 可自定义全部选项,例如:{ label: '全部', value: 'all' }\n * 3. 自定义字段会通过fieldNames转换后使用\n * 4. 多选操作时,最好不要设置全部选项\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /**\n * 1. 当 treeCheckable = true && treeCheckStrictly = true,如果选择的数据中含有父节点,selectedValue、selectedList返回数据包含父节点\n * 2. 当 treeCheckable = true && treeCheckStrictly = false,selectedValue、selectedList返回的数据不包含父节点\n * 3. 当 treeCheckable = false,节点选择没有级联关系,selectedValue、selectedList返回的数据就是实际选择\n * 4. selectAllDataList 返回的数据都包含父节点\n * 5. 使用 onTreeItemAdapter 拼接label数据后,选中回填数据也是拼接后的\n * 6. triggerInfo 当前操作节点数据\n */\n onChangeHandle?: (\n selectedValue?: TreeSelectorWrapperValue,\n selectedData?: TPlainObject[] | TPlainObject,\n triggerInfo?: TPlainObject,\n ) => void;\n // // label渲染适配器\n // onLabelRenderAdapter?: (dataItem: TPlainObject) => string;\n /**\n * tree item 数据适配器\n */\n onTreeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n // icon 无法实现、treeIcon不起作用4.20.0\n // showIcon?: boolean;\n // icon?: (data: TPlainObject) => ReactElement;\n\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeSelectorWrapperValue;\n\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n labelInValue?: boolean;\n /**\n * ```\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * treeCheckStrictly = true模式下有效,点击父节点是否选中所有子节点,默认值:true\n */\n selectedParentCheckedAllChildrenList?: boolean;\n};\n\ntype TreeSelectorWrapperPropsInner = TreeSelectorWrapperProps & {\n onChange?: (selectedValue?: TreeSelectorWrapperValue) => void;\n};\n\n/**\n * 树选择器包装组件,由于过度封装,部分antd TreeSelect原始功能不支持,不满足情况的请使用antd TreeSelect实现\n * @param props\n * @returns\n * ```\n * 1. 当设置treeSelectorList属性后,serviceConfig、onTreeSelectorListChange将失效\n * 2. 父节点默认不返回,需要返回请设置showCheckedStrategy\n * ```\n */\nexport const TreeSelectorWrapper = (props: TreeSelectorWrapperProps) => {\n const {\n serviceConfig,\n effectDependencyList,\n onTreeSelectorListChange,\n onTreeSelectorRequestError,\n // onLabelRenderAdapter,\n treeSelectorList,\n requestMessageConfig,\n modelKey,\n value,\n labelInValue: _labelInValue,\n labelInValueFieldNames,\n onTreeItemDataAdapter,\n selectedParentCheckedAllChildrenList = true,\n fieldNames,\n onChange,\n onChangeHandle,\n showAllOption,\n ...otherProps\n } = props as TreeSelectorWrapperPropsInner;\n /**\n * 不能使用key、defaultValue模式\n * 1. 勾选的和回填选中不相同情况,勾选后会渲染defaultValue模式后,弹框被关闭,操作体验存在问题\n */\n const hasTreeSelectorList = props.hasOwnProperty('treeSelectorList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>();\n const [state, actions] = treeSelectorWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${modelKey}`;\n const isMultiple = otherProps.treeCheckable;\n /**\n * treeCheckStrictly \tcheckable 状态下节点选择完全受控(父子节点选中状态不再关联),\n * 会使得 labelInValue 强制为 true\n */\n const labelInValue = useMemo(() => {\n if (otherProps.treeCheckStrictly) return true;\n return _labelInValue;\n }, [_labelInValue, otherProps.treeCheckStrictly]);\n\n const fieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', children: 'children', disabled: 'disabled', ...fieldNames };\n }, [fieldNames]);\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n\n const allOptionConfig = useMemo(() => {\n if (showAllOption) {\n const isTrue = showAllOption === true;\n return {\n label: isTrue ? '全部' : showAllOption.label,\n value: isTrue ? '' : showAllOption.value,\n };\n }\n return null;\n }, [showAllOption]);\n\n const [innerOperateValue, setInnerOperateValue] = useState<\n Array<TPlainObject> | string | number | Array<string | number> | TPlainObject\n >();\n const isFirstUseValueRef = useRef(true);\n\n fbaHooks.useEffectCustom(() => {\n if (isUndefinedOrNull(value) && isFirstUseValueRef.current) return;\n isFirstUseValueRef.current = false;\n if (state.treeSelectorList.length > 0) {\n if (!treeSelectorWrapperValueDeepEqual(value, innerOperateValue, labelInValueFieldNamesMerge)) {\n console.log(`modelKey:${modelKey} TreeSelectorWrapper key refresh`, value, innerOperateValue);\n const valueList = getVauleList(value, labelInValueFieldNamesMerge);\n setInnerOperateValue(valueList);\n // 重新计算 expandedKeys\n const expandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n }\n }\n }, [value, state.treeSelectorList]);\n\n const valueIsEmpty = (value: string | number) => {\n return value === '' || isUndefinedOrNull(value);\n };\n\n const serviceResponseHandle = (respData) => {\n const respDataList = newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData;\n return respDataList as TPlainObject[];\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys || [];\n const params = extend({}, newServiceConfig.params);\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n console.warn(`TreeSelectorWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const _respData = await newServiceConfig.onRequest?.(params);\n const respData = serviceResponseHandle(_respData) as TreeSelectProps['treeData'];\n setLoading(false);\n window[requestPreKey] = false;\n onChangeSelectorList(respData || []);\n } catch (error) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n onTreeSelectorRequestError?.(error);\n }\n });\n\n hooks.useCustomCompareEffect(\n () => {\n if (hasTreeSelectorList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (Boolean(newEffectDependencyList.length)) {\n // 内部主动清楚数据,被依赖的数据发生变更时,依赖组件数据清空\n onChangeSelectorList([]);\n void startDataSourceRequest();\n return;\n }\n const allState = treeSelectorWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n return;\n }\n },\n newEffectDependencyList,\n dequal,\n );\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeSelectorList.length === 0) {\n void actions.setSelectBoxList({\n treeSelectorList: [],\n treeSelectorTiledArray: [],\n });\n onTreeSelectorListChange?.([]);\n return;\n }\n // 全部选项\n const tempItem = allOptionConfig\n ? {\n [fieldNamesMerge.label]: allOptionConfig.label,\n [fieldNamesMerge.value]: allOptionConfig.value,\n }\n : undefined;\n const newdataList = showAllOption ? [tempItem, ...dataList] : dataList;\n void actions.setSelectBoxList({\n treeSelectorList: newdataList,\n treeSelectorTiledArray: treeToArray(newdataList || [], fieldNamesMerge.children),\n });\n onTreeSelectorListChange?.(dataList);\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasTreeSelectorList) {\n onChangeSelectorList(treeSelectorList || []);\n }\n }, [treeSelectorList]);\n\n const onTreeExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const getTreeExpandedKeys = hooks.useCallbackRef((valueList: Array<string | number>, refresh?: boolean) => {\n let newTreeExpandedKeys = [] as Array<string | number>;\n valueList.forEach((value) => {\n if (!refresh && treeExpandedKeys?.includes(value)) return;\n const targetList = getExpandedKeys(value, state.treeSelectorList, fieldNamesMerge);\n newTreeExpandedKeys = newTreeExpandedKeys.concat(targetList.map((item) => item.value));\n });\n return newTreeExpandedKeys;\n });\n\n /**\n * 数据源Item解析\n */\n const parseDataSourceItem = hooks.useCallbackRef((item?: TPlainObject | null) => {\n if (!item) return undefined;\n return {\n label: item?.[fieldNamesMerge.label],\n value: item?.[fieldNamesMerge.value],\n children: item?.[fieldNamesMerge.children],\n disabled: item?.['disabled'],\n };\n });\n /**\n * labelInValue模式入参value item解析\n */\n const parseLabelInValueItem = hooks.useCallbackRef((item?: TPlainObject | null) => {\n if (!item) return undefined;\n return {\n label: item?.[labelInValueFieldNamesMerge.label],\n value: item?.[labelInValueFieldNamesMerge.value],\n disabled: item?.['disabled'],\n };\n });\n\n const getResponseTreeNodeList = hooks.useCallbackRef((changeValue: TAny, triggerInfo: TPlainObject) => {\n const valueList = getVauleList(changeValue, { value: 'value', label: 'label' });\n let selectedTreeNodeList = [] as TPlainObject[];\n valueList.forEach((item) => {\n const target = arrayFind(state.treeSelectorTiledArray, item, fieldNamesMerge.value) as TPlainObject;\n if (!target) return;\n selectedTreeNodeList.push(target);\n });\n if (otherProps.treeCheckStrictly && selectedParentCheckedAllChildrenList) {\n const triggerNode = parseDataSourceItem(\n triggerInfo.checked\n ? arrayFind(state.treeSelectorTiledArray, triggerInfo.triggerValue, fieldNamesMerge.value)\n : null,\n );\n if (triggerNode && isArray(triggerNode.children) && triggerNode.children.length > 0) {\n // 判断为父节点\n const allChildrenList = treeToArray(triggerNode.children, fieldNamesMerge.children);\n const selectedChildrenList = allChildrenList.filter((item) => {\n const parseItem = parseDataSourceItem(item);\n if (parseItem?.disabled) return false;\n // 去重\n if (arrayFind(selectedTreeNodeList, parseItem?.value, fieldNamesMerge.value)) return false;\n return true;\n });\n selectedTreeNodeList = selectedTreeNodeList.concat(selectedChildrenList);\n }\n }\n let realTreeNodeList = [] as TPlainObject[];\n if (otherProps.treeCheckable) {\n if (\n otherProps.treeCheckStrictly === true ||\n valueIsEqual(otherProps.showCheckedStrategy, ['SHOW_ALL', 'SHOW_PARENT'])\n ) {\n // 返回包含父节点\n realTreeNodeList = selectedTreeNodeList;\n } else {\n // 返回不包含父节点\n realTreeNodeList = selectedTreeNodeList.filter((item) => {\n const children = item[fieldNamesMerge.children];\n return !(isArray(children) && children.length > 0);\n });\n }\n } else {\n realTreeNodeList = selectedTreeNodeList;\n }\n return {\n realTreeNodeList,\n realTreeNodeValueList: getVauleList(realTreeNodeList, fieldNamesMerge),\n };\n });\n\n const onRespChange = hooks.useCallbackRef((values, selectedValues, triggerInfo) => {\n setInnerOperateValue(values);\n onChange?.(values);\n onChangeHandle?.(values, selectedValues, triggerInfo);\n });\n\n /**\n * 根据treeCheckable、treeCheckStrictly、showCheckedStrategy等设置情况,判断返回数据是否包含父节点\n * 1. 当 treeCheckable = true,changeValue 数据格式为 { label,value }[]\n */\n const onInnerChange = hooks.useCallbackRef((changeValue: TAny, _data, triggerInfo: TPlainObject) => {\n const { realTreeNodeList, realTreeNodeValueList } = getResponseTreeNodeList(changeValue, triggerInfo);\n if (otherProps.treeCheckable) {\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(realTreeNodeValueList).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n }\n\n if (labelInValue) {\n const labelInValueList = realTreeNodeList.map((item) => {\n const parseItem = parseDataSourceItem(item);\n return {\n [labelInValueFieldNamesMerge.label]: parseItem?.label,\n [labelInValueFieldNamesMerge.value]: parseItem?.value,\n };\n });\n\n if (isMultiple) {\n onRespChange?.(labelInValueList, realTreeNodeList, triggerInfo);\n } else {\n onRespChange?.(labelInValueList[0], realTreeNodeList[0], triggerInfo);\n }\n } else {\n if (isMultiple) {\n onRespChange?.(realTreeNodeValueList, realTreeNodeList, triggerInfo);\n } else {\n onRespChange?.(realTreeNodeValueList[0], realTreeNodeList[0], triggerInfo);\n }\n }\n });\n\n const mapTree = hooks.useCallbackRef((data) => {\n if (!data) return null;\n return data.map((item) => {\n const itemAdapterData = onTreeItemDataAdapter?.({ ...item }) || item;\n const children = itemAdapterData[fieldNamesMerge.children];\n const value = itemAdapterData[fieldNamesMerge.value];\n const label = itemAdapterData[fieldNamesMerge.label];\n const disabled = itemAdapterData[fieldNamesMerge.disabled]\n ? itemAdapterData[fieldNamesMerge.disabled]\n : itemAdapterData.disabled;\n return (\n <TreeSelect.TreeNode\n {...itemAdapterData}\n disabled={disabled}\n value={value}\n title={label}\n key={`${value}`}\n >\n {children && children.length > 0 && mapTree(children)}\n </TreeSelect.TreeNode>\n );\n });\n });\n\n /**\n * 1. 当 treeCheckable = true,value 数据格式为 labelInValueFieldNames[]\n * 2. 其他情况 value 数据格式为 value[]\n */\n const renderValueList = useMemo(() => {\n const innerOperateValueList = toArray(innerOperateValue);\n if (innerOperateValueList.length == 0) return [];\n if (otherProps.treeCheckStrictly) {\n if (state.treeSelectorTiledArray.length === 0) {\n return innerOperateValueList.map((item) => ({ label: item, value: item }));\n }\n return innerOperateValueList.map((item) => {\n let targetParseItem: TPlainObject;\n let defualtValue;\n if (isString(item) || isNumber(item as TAny)) {\n const target = arrayFind(state.treeSelectorTiledArray, item as string, fieldNamesMerge.value);\n targetParseItem = parseDataSourceItem(target) as TPlainObject;\n defualtValue = item;\n } else {\n targetParseItem = parseLabelInValueItem(item as TPlainObject) as TPlainObject;\n }\n return {\n label: getValueOrDefault(targetParseItem?.label, defualtValue),\n value: getValueOrDefault(targetParseItem?.value, defualtValue),\n };\n });\n }\n return getVauleList(innerOperateValue, labelInValueFieldNamesMerge);\n }, [\n innerOperateValue,\n otherProps.treeCheckStrictly,\n labelInValueFieldNamesMerge,\n state.treeSelectorTiledArray,\n fieldNamesMerge.value,\n parseDataSourceItem,\n parseLabelInValueItem,\n ]);\n\n const treeSelectValue = useMemo(() => {\n if (isArray(renderValueList) && renderValueList.length === 0) {\n return undefined;\n }\n return isMultiple ? renderValueList : renderValueList[0];\n }, [isMultiple, renderValueList]);\n\n /**\n * 1. 使用 TreeNode 渲染节点,不能重写 fieldNames 配置\n * 2. 使用 TreeNode 是为了实现 TreeNode ICON\n */\n return (\n <TreeSelect\n dropdownStyle={{ maxHeight: 400, overflow: 'auto' }}\n showSearch={true}\n treeLine={{ showLeafIcon: false }}\n treeNodeFilterProp=\"title\"\n switcherIcon={<CaretDownFilled />}\n showArrow\n {...otherProps}\n className={classNames('v-tree-select-wrapper', otherProps.className)}\n popupClassName={classNames('v-tree-select-wrapper-dropdown', otherProps.popupClassName)}\n onChange={onInnerChange}\n treeExpandedKeys={treeExpandedKeys}\n value={treeSelectValue}\n loading={loading}\n dropdownMatchSelectWidth={false}\n onTreeExpand={onTreeExpand}\n style={{ width: '100%', ...otherProps.style }}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n messageConfig={requestMessageConfig}\n loading={loading}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n >\n {mapTree(state.treeSelectorList)}\n </TreeSelect>\n );\n};\n"],"names":["defaultState","treeSelectorList","treeSelectorTiledArray","queryIsEmpty","TreeSelectorWrapperModel","actions","setSelectBoxList","params","state","requestStatus","resetSelectBoxList","changeRequestStatus","treeSelectorWrapperModels","treeSelectorWrapperModel","key","Model","getExpandedKeys","value","treeList","fieldNames","_isArray","length","tiledArray","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","tempList","toArray","map","item","_isObject","array2map","list","forEach","treeSelectorWrapperValueDeepEqual","value1","value2","isUndefinedOrNull","object1","object2","diff","dequal","TreeSelectorWrapper","props","_ref","serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","requestMessageConfig","modelKey","_labelInValue","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","_ref$selectedParentCh","selectedParentCheckedAllChildrenList","onChange","onChangeHandle","showAllOption","otherProps","_objectWithoutPropertiesLoose","_excluded","hasTreeSelectorList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeSelectorWrapperM","useStore","requestPreKey","isMultiple","treeCheckable","useMemo","treeCheckStrictly","fieldNamesMerge","_extends","label","children","disabled","labelInValueFieldNamesMerge","allOptionConfig","isTrue","_useState2","innerOperateValue","setInnerOperateValue","isFirstUseValueRef","useRef","useEffectCustom","current","console","log","valueList","expandedKeys","getTreeExpandedKeys","Array","from","Set","valueIsEmpty","serviceResponseHandle","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","isEmpty","_respData","_respData2","onRequest","Error","_extend","find","warn","join","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","resolve","then","$await_2","onChangeSelectorList","useCustomCompareEffect","Boolean","allState","getState","dataList","_ref2","tempItem","undefined","newdataList","concat","treeToArray","onTreeExpand","onAgainRequest","refresh","newTreeExpandedKeys","includes","targetList","parseDataSourceItem","parseLabelInValueItem","getResponseTreeNodeList","changeValue","triggerInfo","selectedTreeNodeList","target","arrayFind","push","triggerNode","checked","triggerValue","allChildrenList","selectedChildrenList","filter","parseItem","realTreeNodeList","valueIsEqual","showCheckedStrategy","realTreeNodeValueList","onRespChange","values","selectedValues","onInnerChange","_data","_getResponseTreeNodeL","prev","mergeList","labelInValueList","_ref3","mapTree","itemAdapterData","_createElement","TreeSelect","TreeNode","title","renderValueList","innerOperateValueList","_targetParseItem","_targetParseItem2","targetParseItem","defualtValue","_isString","isNumber","getValueOrDefault","treeSelectValue","_jsx","dropdownStyle","maxHeight","overflow","showSearch","treeLine","showLeafIcon","treeNodeFilterProp","switcherIcon","_CaretDownFilled","showArrow","className","_classNames","popupClassName","dropdownMatchSelectWidth","style","width","suffixIcon","_RedoOutlined","spin","onClick","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type"],"mappings":"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"}
|