@flatbiz/antd 4.5.34 → 4.5.36
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.css +1 -1
- package/esm/button-operate/index.js +3 -4
- package/esm/button-operate/index.js.map +1 -1
- package/esm/cascader-wrapper/index.css +1 -1
- package/esm/cascader-wrapper/index.js +1 -1
- package/esm/cascader-wrapper/index.js.map +1 -1
- package/esm/dialog-preview-image/index.css +0 -0
- package/esm/dialog-preview-image/index.js +6 -0
- package/esm/dialog-preview-image/index.js.map +1 -0
- package/esm/drag-editable-table/index.js +1 -2
- package/esm/easy-table/index.js +1 -1
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-table/index.js +1 -2
- package/esm/index.js +1 -1
- package/esm/label-value-render/index.css +1 -1
- package/esm/local-loading/index.css +1 -1
- package/esm/local-loading/index.js +1 -1
- package/esm/local-loading/index.js.map +1 -1
- package/esm/table-cell-render/index.js +2 -3
- package/esm/tabs-sticky/index.js.map +1 -1
- package/esm/tree-modal/index.js +2 -2
- package/esm/tree-modal-selector/index.js +2 -2
- package/esm/tree-selector-wrapper/index.js +1 -1
- package/esm/tree-selector-wrapper/index.js.map +1 -1
- package/esm/tree-wrapper/index.js +4 -4
- package/esm/tree-wrapper/index.js.map +1 -1
- package/esm/upload-wrapper/index.css +1 -1
- package/esm/upload-wrapper/index.js +5 -1
- package/esm/upload-wrapper/index.js.map +1 -1
- package/index.d.ts +46 -12
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
.table-operate{padding:0 5px}.table-operate .ant-btn-link{border-radius:4px;height:auto;padding:0 6px}.table-operate .ant-btn-link:hover{background-color:rgba(0,0,0,.03)!important}.table-operate .ant-btn-link:hover span{transform:scale(1.05);transition:all .1s ease-in}.table-operate .ant-btn-link .anticon{margin:0}.table-operate .ant-divider{margin:0 4px}.table-operate .dropdown-menu-wrapper{align-items:center;display:flex;justify-content:center}.fold-more-button .anticon-more{transform:rotate(90deg)}.fold-more-button:hover .anticon-more{transform:scale(1.3) rotate(90deg)!important}
|
|
1
|
+
.bw-center-loading{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.ant-btn.button-remove-gap{height:auto;line-height:normal;margin:0;min-height:auto;padding:0}.v-dialog-modal.ant-modal .ant-modal-body{overflow-x:hidden;overflow-y:auto;padding:10px 24px 20px}.v-dialog-modal.ant-modal .ant-modal-content{padding:20px 0}.v-dialog-modal.ant-modal .ant-modal-header{padding:0 24px}.v-dialog-modal.ant-modal .ant-modal-footer{margin:0;padding:10px 24px 0}.v-dialog-modal-title-extra .ant-modal-close{right:5px;top:5px}.dropdown-menu-wrapper-popup.ant-dropdown .ant-dropdown-menu .ant-dropdown-menu-item{padding:0}.dropdown-menu-wrapper-popup.ant-dropdown .ant-dropdown-menu.ant-dropdown-menu-item-active{background-color:none}.dropdown-menu-wrapper-popup.ant-dropdown .dmw-item-button{display:block;height:auto;padding:5px 12px;text-align:left;width:100%}.compact-theme .dropdown-menu-wrapper-popup.ant-dropdown .dmw-item-button{padding:3px 12px}.table-operate{padding:0 5px}.table-operate .ant-btn-link{border-radius:4px;height:auto;padding:0 6px}.table-operate .ant-btn-link:hover{background-color:rgba(0,0,0,.03)!important}.table-operate .ant-btn-link:hover span{transform:scale(1.05);transition:all .1s ease-in}.table-operate .ant-btn-link .anticon{margin:0}.table-operate .ant-divider{margin:0 4px}.table-operate .dropdown-menu-wrapper{align-items:center;display:flex;justify-content:center}.fold-more-button .anticon-more{transform:rotate(90deg)}.fold-more-button:hover .anticon-more{transform:scale(1.3) rotate(90deg)!important}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
|
-
import './../button-wrapper/index.css';
|
|
3
2
|
import './../config-provider-wrapper/index.css';
|
|
4
3
|
import './../fba-hooks/index.css';
|
|
5
4
|
import './../types/index.css';
|
|
6
5
|
import './../fba-utils/index.css';
|
|
7
|
-
import './../
|
|
6
|
+
import './../button-wrapper/index.css';
|
|
7
|
+
import './../flex-layout/index.css';
|
|
8
8
|
import './../dialog-confirm/index.css';
|
|
9
9
|
import './../dialog-modal/index.css';
|
|
10
|
-
import './../flex-layout/index.css';
|
|
11
10
|
import './index.css';
|
|
12
11
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
13
|
-
import i from"@ant-design/icons/es/icons/MoreOutlined";import{_ as r,a as e}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isUndefined as o}from"@dimjs/lang/cjs/is-undefined";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as
|
|
12
|
+
import i from"@ant-design/icons/es/icons/MoreOutlined";import{_ as r,a as e}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isUndefined as o}from"@dimjs/lang/cjs/is-undefined";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as p}from"@dimjs/lang/cjs/is-promise";import{hooks as a}from"@wove/react/cjs/hooks";import{Popover as l,Tooltip as c,Space as d,Divider as m,Popconfirm as u,Button as f}from"antd";import{isValidElement as v,Fragment as j,useState as g,useMemo as h,createElement as y}from"react";import{ButtonWrapper as k}from"../button-wrapper/index.js";import{DropdownMenuWrapper as x}from"../dropdown-menu-wrapper/index.js";import{fbaUtils as T}from"../fba-utils/index.js";import{jsx as C,jsxs as P}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@flatbiz/utils";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";import"@dimjs/model";var w=["text","onClick","needConfirm","confirmMessage","popconfirmProps","hoverTips","color","tipsType","type","isFold"];var b=function i(r){if(r.hoverTips){if(r.tipsType==="popover"){return C(l,{content:r.hoverTips,zIndex:1e3,children:C("span",{children:r.content})})}return C(c,{title:r.hoverTips,zIndex:1e3,children:C("span",{children:r.content})})}if(v(r.content)){return C(j,{children:r.content})}return C("span",{children:r.content})};var F=function l(c){var j=g(false),F=j[0],z=j[1];var O=a.useCallbackRef((function(i,r){var e=i.onClick==null?void 0:i.onClick(r);if(e&&p(e)){z(true);return e.finally((function(){z(false)}))}return}));var I=c.operateList.filter((function(i){if(!i)return false;if(v(i)){var r,e,o;if(((r=i.props)==null?void 0:r["hidden"])===true)return false;if(((e=i.props)==null?void 0:e["v-hidden"])===true)return false;var n=(o=i.props)==null?void 0:o["v-permission"];if(s(n)){return T.hasPermission(n)}return true}if(t(i)){if(!T.hasPermission(i["permission"])){return false}return!i["hidden"]}return false}));var M=h((function(){return I.filter((function(i){if(v(i)){return true}return!i["isFold"]}))}),[I]);var N=h((function(){var i=I.filter((function(i){if(v(i)){return false}return i["isFold"]}));var e=[];i.forEach((function(i){var o=r({},i);delete o.isFold;e.push(o)}));return e}),[I]);var _=c.gap===undefined?10:c.gap;var L=!c.split?_:0;return C("div",{className:n("table-operate",c.className),style:c.style,children:P(d,r({split:c.split?C(m,{type:"vertical"}):null,size:L,wrap:o(c.wrap)?true:c.wrap},c.spaceProps,{children:[M.map((function(i,o){if(i&&v(i)){return C(b,{content:i,hoverTips:i.hoverTips,tipsType:i.tipsType},o)}var n=i.text,t=i.onClick,s=i.needConfirm,p=i.confirmMessage,a=i.popconfirmProps,l=i.hoverTips,c=i.color,d=i.tipsType,m=i.type;i.isFold;var f=e(i,w);var j=m||"link";if(s&&!f.disabled){var g=c?false:true;return y(u,r({okText:"确定",cancelText:"取消",trigger:["click"],placement:"topRight",arrow:true,destroyTooltipOnHide:true},a,{title:p,onConfirm:O.bind(null,i),key:o,okButtonProps:{loading:F},onOpenChange:function i(r){if(!r){z(false)}},onCancel:function i(r){r==null?void 0:r.stopPropagation()}}),C(k,r({danger:g},f,{onClick:function i(r){r.stopPropagation()},type:j,children:C(b,{content:n,hoverTips:l,tipsType:d},o)})))}return y(k,r({loadingPosition:"center"},f,{type:j,onClick:function i(r){r.stopPropagation();return t==null?void 0:t(r)},key:o}),C(b,{content:n,hoverTips:l,tipsType:i.tipsType}))})),N.length>0?C(x,r({menuList:N,placement:"bottom"},c.dropdownMenuProps,{children:C(f,{type:"link",className:"fold-more-button",onClick:function i(r){r.stopPropagation()},children:c.foldIcon?c.foldIcon:C(i,{})})})):null]}))})};F.defaultProps={split:true};export{F as ButtonOperate,b as ButtonOperateItemContent};
|
|
14
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.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 /** hover 提示文字,isFold=true无效 */\n hoverTips?: string | React.ReactElement;\n /** hover 提示类型 默认:'tooltip' */\n tipsType?: 'popover' | 'tooltip';\n /** 按钮文案 */\n text?: string | ReactElement;\n /** 自定义按钮颜色 */\n color?: string;\n /** 是否需要二次弹框确认 */\n needConfirm?: boolean;\n /** 二次弹框确认文案 */\n confirmMessage?: ReactNode;\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 className?: string;\n style?: CSSProperties;\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 /** 是否换行,默认true */\n wrap?: boolean;\n /** 隐藏图标Icon */\n foldIcon?: ReactElement;\n /** 按钮之间是否添加分隔符 */\n split?: boolean;\n /** 多个按钮的包装组件Space属性 */\n spaceProps?: SpaceProps;\n /** 间距,默认:10;split=true配置下无效(可通过spaceProps设置间距) */\n gap?: number;\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 {\n text,\n onClick,\n needConfirm,\n confirmMessage,\n popconfirmProps,\n hoverTips,\n color,\n tipsType,\n type,\n isFold: _isFold,\n ...otherProps\n } = item;\n const typeFt = type || 'link';\n if (needConfirm && !otherProps.disabled) {\n const danger = !!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={typeFt}\n >\n <ButtonOperateItemContent\n content={text}\n hoverTips={hoverTips}\n tipsType={tipsType}\n key={index}\n />\n </ButtonWrapper>\n </Popconfirm>\n );\n }\n return (\n <ButtonWrapper\n loadingPosition=\"center\"\n {...otherProps}\n type={typeFt}\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","color","otherProps","_objectWithoutPropertiesLoose","_excluded","typeFt","disabled","danger","_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
|
+
{"version":3,"file":"index.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 type { PopconfirmProps, SpaceProps } from 'antd';\nimport { Button, Divider, Popconfirm, Popover, Space, Tooltip } from 'antd';\nimport type { CSSProperties, FC, ReactElement, ReactNode } from 'react';\nimport { Fragment, isValidElement, useMemo, useState } from 'react';\nimport type { ButtonWrapperProps } from '../button-wrapper/button-wrapper.jsx';\nimport { ButtonWrapper } from '../button-wrapper/button-wrapper.jsx';\nimport type { DialogModalProps } from '../dialog-modal/dialog-modal.jsx';\nimport type { DropdownMenuWrapperProps } from '../dropdown-menu-wrapper/dropdown-menu-wrapper.jsx';\nimport { DropdownMenuWrapper } from '../dropdown-menu-wrapper/dropdown-menu-wrapper.jsx';\nimport { fbaUtils } from '../fba-utils/index.js';\nimport './style.less';\n\nexport interface ButtonOperateItem extends ButtonWrapperProps {\n /** hover 提示文字,isFold=true无效 */\n hoverTips?: string | React.ReactElement;\n /** hover 提示类型 默认:'tooltip' */\n tipsType?: 'popover' | 'tooltip';\n /** 按钮文案 */\n text?: string | ReactElement;\n /** 自定义按钮颜色 */\n color?: string;\n /** 是否需要二次弹框确认 */\n needConfirm?: boolean;\n /** 二次弹框确认文案 */\n confirmMessage?: ReactNode;\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 className?: string;\n style?: CSSProperties;\n /**\n * 如果数组中元素为ReactElement类型\n * 1. 一般为antd Button组件,如果组件存在属性hidden=true、v-hidden=true,则会隐藏\n * 2. 可配置 v-permission 权限值,例如 v-permission=\"add\"\n * 3. 任何confirm、disabled等状态在外部控制\n * 3. 不支持fold效果\n */\n operateList: Array<ButtonOperateItem | null | ReactElement>;\n /** 是否换行,默认true */\n wrap?: boolean;\n /** 隐藏图标Icon */\n foldIcon?: ReactElement;\n /** 按钮之间是否添加分隔符 */\n split?: boolean;\n /** 多个按钮的包装组件Space属性 */\n spaceProps?: SpaceProps;\n /** 间距,默认:10;split=true配置下无效(可通过spaceProps设置间距) */\n gap?: number;\n /** 折叠合拢属性 */\n dropdownMenuProps?: Omit<DropdownMenuWrapperProps, 'menuList'>;\n}\n\nexport const ButtonOperateItemContent = (\n props: Pick<ButtonOperateItem, 'hoverTips' | 'tipsType'> & {\n content: ReactNode;\n },\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 * 1. operateList中存在ReactElement类型的元素,可通过配置 v-permission 属性来设置权限,例如 v-permission=\"add\"\n * 2. operateList中存在ReactElement类型的元素,如果有hidden、v-hidden属性,值为true会隐藏\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 if (item.props?.['v-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 {\n text,\n onClick,\n needConfirm,\n confirmMessage,\n popconfirmProps,\n hoverTips,\n color,\n tipsType,\n type,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isFold: _isFold,\n ...otherProps\n } = item;\n const typeFt = type || 'link';\n if (needConfirm && !otherProps.disabled) {\n const danger = 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={typeFt}\n >\n <ButtonOperateItemContent\n content={text}\n hoverTips={hoverTips}\n tipsType={tipsType}\n key={index}\n />\n </ButtonWrapper>\n </Popconfirm>\n );\n }\n return (\n <ButtonWrapper\n loadingPosition=\"center\"\n {...otherProps}\n type={typeFt}\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=\"bottom\" {...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","_item$props3","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","color","otherProps","_objectWithoutPropertiesLoose","_excluded","typeFt","disabled","danger","_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 +1 @@
|
|
|
1
|
-
.cascader-wrapper-popup .ant-cascader-menu-empty .ant-cascader-menu-item{pointer-events:auto!important}
|
|
1
|
+
.v-request-status{margin:16px 0;position:relative}.v-request-status .ant-empty{margin:8px 0}.v-request-status .ant-spin{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.cascader-wrapper-popup .ant-cascader-menu-empty .ant-cascader-menu-item{pointer-events:auto!important}
|
|
@@ -3,5 +3,5 @@ import './../fba-hooks/index.css';
|
|
|
3
3
|
import './../request-status/index.css';
|
|
4
4
|
import './index.css';
|
|
5
5
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
6
|
-
import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{a as r,_ as
|
|
6
|
+
import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{a as r,_ as n}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as s}from"@wove/react/cjs/hooks";import{isArray as o}from"@dimjs/lang/cjs/is-array";import{get as a}from"@dimjs/utils/cjs/get";import{extend as i}from"@dimjs/utils/cjs/extend";import{cloneState as u}from"@dimjs/model";import{toArray as l,cloneObject as f,treeNodeParentsList as c}from"@flatbiz/utils";import{Cascader as d,Button as m,message as v}from"antd";import{forwardRef as p,useState as g,useImperativeHandle as h}from"react";import{fbaHooks as C}from"../fba-hooks/index.js";import{RequestStatus as q}from"../request-status/index.js";import{Model as L}from"@dimjs/model-react";import{isPlainObject as j}from"@dimjs/lang/cjs/is-plain-object";import{jsx as R}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";var S={selectorList:[],queryIsEmpty:false,requestStatus:"request-init"};var y={actions:{setSelectBoxList:function e(t){return function(e){e.selectorList=t.selectorList||[];e.requestStatus="request-success"}},changeRequestStatus:function e(t){return function(e){e.requestStatus=t}}},state:S};var w={};var b=function e(t){if(!w[t]){w[t]=L(y)}return w[t]};var x=function e(t){var r=l(t);return r.map((function(e){return j(e)?e==null?void 0:e["value"]:e}))};var k=["serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange","responseType","labelInValue"];var B=p((function(l,p){var L=l.serviceConfig,j=l.modelKey,S=l.fieldNames,y=l.isDynamicLoad,w=l.requestMessageConfig,B=l.onSelectorListChange,N=l.responseType,P=l.labelInValue,E=r(l,k);var I=g([]),D=I[0],K=I[1];var A=C.useSafeState(false),M=A[0],T=A[1];var V=b(j).useStore(),_=V[0],z=V[1];var F="request-progress-"+l.modelKey;var H=i(true,{label:"label",value:"value",children:"children"},S);var O=g(),G=O[0],J=O[1];var Q=function e(t){if(L!=null&&L.onRequestResultAdapter){return L.onRequestResultAdapter(t)}if(S!=null&&S.list){t=a(t,S==null?void 0:S.list)}if(!o(t)){console.warn("接口返回数据不是数组类型,已被忽略",t);return[]}return t};var U=s.useCallbackRef((function(){return new Promise((function(e,t){var r,n;if(!(L!=null&&L.onRequest)){return t(new Error("onRequest 调用接口服务不能为空"))}var s=function(){try{return e()}catch(e){return t(e)}};var o=function(e){try{T(false);window[F]=false;void z.changeRequestStatus("request-error");void v.error(e.message||"获取数据异常");return s()}catch(e){return t(e)}};try{T(true);window[F]=true;void z.changeRequestStatus("request-progress");return Promise.resolve(L.onRequest==null?void 0:L.onRequest(L.params)).then((function(e){try{r=e;n=Q(r);if(y){n.map((function(e){e.isLeaf=e.isLeaf||false}))}T(false);window[F]=false;void z.setSelectBoxList({selectorList:n||[]});B==null?void 0:B(n||[]);return s()}catch(e){return o(e)}}),o)}catch(e){o(e)}}))}));C.useEffectCustom((function(){if(window[F])return;if(_.requestStatus==="request-success"){K(u(_.selectorList))}else{void U()}}),[]);C.useEffectCustom((function(){var e=f(_.selectorList);var t=x(l.value);if(t.length>0){if(N==="all"){J(t)}else{var r=c(t[0],e,true,H).reverse();if(r.length===0){J([l.value])}else{J(r)}}}else{J(undefined)}K(e)}),[_.selectorList,l.value]);h(p,(function(){return{getCascaderList:function e(){return _.selectorList}}}));var W=s.useCallbackRef((function(){void U()}));var X=function e(t){return new Promise((function(e,r){var s,o,a,i;o=t[t.length-1];o.loading=true;return Promise.resolve(L==null||L.onRequest==null?void 0:L.onRequest(n({},L.params,(s={},s[H.value]=o[H.value],s)))).then((function(t){try{a=t;i=Q(a);if(!i||i.length===0){o.isLeaf=true}else{i.map((function(e){e.isLeaf=e.isLeaf||false}));o.children=i}o.loading=false;void z.setSelectBoxList({selectorList:D||[]});B==null?void 0:B(D||[]);K([].concat(D));return e()}catch(e){return r(e)}}),r)}))};var Y=s.useCallbackRef((function(e,t){if(P!==true){if(N==="all"){l.onChange==null?void 0:l.onChange(e,t)}else{l.onChange==null?void 0:l.onChange(e==null?void 0:e[e.length-1],t)}}else{var r=t==null?void 0:t.map((function(e){return{label:e[H.label],value:e[H.value]}}));if(N==="all"){l.onChange==null?void 0:l.onChange(r,t)}else{l.onChange==null?void 0:l.onChange(r==null?void 0:r[r.length-1],t)}}}));var Z=s.useCallbackRef((function(){void(l.onChange==null?void 0:l.onChange(undefined))}));return R(d,n({showSearch:true,allowClear:true},E,{popupClassName:t("cascader-wrapper-popup",E.popupClassName),notFoundContent:R(q,{status:_.requestStatus,loading:M,messageConfig:w,errorButton:R(m,{type:"primary",onClick:W,children:"重新获取数据"})}),loading:M,loadData:y?X:undefined,fieldNames:H,suffixIcon:_.requestStatus==="request-error"?R(e,{spin:M,onClick:W}):undefined,options:D,value:G,multiple:false,onChange:Y,onClear:Z}))}));export{B as CascaderWrapper};
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/cascader-wrapper/model.ts","@flatbiz/antd/src/cascader-wrapper/cascader-wrapper.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n selectorList: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: { selectorList: TPlainObject[] };\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n selectorList: [],\n queryIsEmpty: false,\n requestStatus: 'request-init',\n};\n\nconst _SelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.selectorList = params.selectorList || [];\n state.requestStatus = 'request-success';\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst cascaderWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const cascaderWrapperModel = (key: string) => {\n if (!cascaderWrapperModels[key]) {\n cascaderWrapperModels[key] = Model(_SelectorWrapperModel);\n }\n return cascaderWrapperModels[key];\n};\n","import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport { cloneObject, TAny, toArray, TPlainObject, treeNodeParentsList } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Cascader, CascaderProps, message } from 'antd';\nimport { forwardRef, ReactElement, useImperativeHandle, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport { cascaderWrapperModel } from './model';\nimport './style.less';\n\ntype CascaderWrapperServiceConfig = {\n params?: TPlainObject;\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type CascaderWrapperProps = Omit<\n CascaderProps<TAny>,\n 'loading' | 'notFoundContent' | 'options' | 'value' | 'multiple' | 'onChange' | 'fieldNames'\n> & {\n // 模型唯一值\n modelKey: string;\n /**\n * 参数Key映射\n * ```\n * 1. 默认值:value=value、label=label、children=children\n * 2. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 3. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * 4. 如果没有配置list,可说明接口返回为数组\n * ```\n */\n fieldNames?: { list?: string; label?: string; value?: string; children?: string };\n /**\n * 请求服务需求的数据,当设置`selectorList`后无效果\n */\n serviceConfig?: CascaderWrapperServiceConfig;\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 是否动态加载选项\n */\n isDynamicLoad?: boolean;\n value?: string | number | Array<string | number>;\n onChange?: (value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n\n /**\n * 选择数据响应类型(当用户选中后响应数据),默认值:last\n * ```\n * 1. last 响应选中的最后一级数据\n * 2. all 响应选中的多级数据\n * ```\n */\n responseType?: 'last' | 'all';\n};\n\nexport type CascaderWrapperRefApi = {\n getCascaderList: () => TPlainObject[];\n};\n/**\n * 级联选择器包装组件,接收value和相应data都是叶子节点数据\n * @param props\n * @returns\n * ```\n * 1. 数据源中 value 不能重复\n * 2. 不支持多选\n * 3. modelKey的配置是为了缓存数据,只缓存初始化数据,如果isDynamicLoad=true,动态获取的数据不再缓存\n * 4. onChange操作第一个参数返回叶子节点value,第二个参数返回选中的多级数据\n * 5. isDynamicLoad=true 会在请求中添加当前选中option的fieldNames.value为key的数据\n * ```\n */\nexport const CascaderWrapper = forwardRef<CascaderWrapperRefApi, CascaderWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n modelKey,\n fieldNames,\n isDynamicLoad,\n requestMessageConfig,\n onSelectorListChange,\n responseType,\n ...otherProps\n } = props;\n const [options, setOptions] = useState<TAny[]>([]);\n\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [state, actions] = cascaderWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNamesMerge = extend(true, { label: 'label', value: 'value', children: 'children' }, fieldNames);\n const [valueList, setValueList] = useState<string[]>();\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig?.onRequestResultAdapter) {\n return serviceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n }\n if (fieldNames?.list) {\n respData = get(respData, fieldNames?.list);\n }\n if (!isArray(respData)) {\n console.warn('接口返回数据不是数组类型,已被忽略', respData);\n return [];\n }\n return respData;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!serviceConfig?.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const respData = await serviceConfig.onRequest?.(serviceConfig.params);\n const respAdapterData = serviceRespDataAdapter(respData);\n if (isDynamicLoad) {\n respAdapterData.map((item) => {\n item.isLeaf = item.isLeaf || false;\n });\n }\n setLoading(false);\n window[requestPreKey] = false;\n void actions.setSelectBoxList({\n selectorList: respAdapterData || [],\n });\n onSelectorListChange?.(respAdapterData || []);\n } catch (error) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n void message.error(error.message || '获取数据异常');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (window[requestPreKey]) return;\n if (state.requestStatus === 'request-success') {\n setOptions(cloneState(state.selectorList));\n } else {\n void startDataSourceRequest();\n }\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n const cloneList = cloneObject(state.selectorList);\n const values = toArray<number | string>(props.value);\n if (values.length > 0) {\n if (responseType === 'all') {\n setValueList(values as string[]);\n } else {\n const filterList = treeNodeParentsList(values[0], cloneList, true, fieldNamesMerge).reverse();\n if (filterList.length === 0) {\n setValueList([props.value as string]);\n } else {\n setValueList(filterList as string[]);\n }\n }\n } else {\n setValueList(undefined);\n }\n setOptions(cloneList);\n }, [state.selectorList, props.value]);\n\n useImperativeHandle(ref, () => {\n return {\n getCascaderList: () => {\n return state.selectorList;\n },\n };\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const loadData = async (selectedOptions: TAny[]) => {\n const targetOption = selectedOptions[selectedOptions.length - 1];\n targetOption.loading = true;\n const respData = await serviceConfig?.onRequest?.({\n ...serviceConfig.params,\n [fieldNamesMerge.value]: targetOption[fieldNamesMerge.value],\n });\n const respAdapterData = serviceRespDataAdapter(respData);\n if (!respAdapterData || respAdapterData.length === 0) {\n targetOption.isLeaf = true;\n } else {\n respAdapterData.map((item) => {\n item.isLeaf = item.isLeaf || false;\n });\n targetOption.children = respAdapterData;\n }\n targetOption.loading = false;\n void actions.setSelectBoxList({\n selectorList: options || [],\n });\n onSelectorListChange?.(options || []);\n setOptions([...options]);\n };\n\n const onChange = hooks.useCallbackRef((values: Array<string | number>, selectList) => {\n if (responseType === 'all') {\n props.onChange?.(values, selectList);\n } else {\n props.onChange?.(values?.[values.length - 1], selectList);\n }\n });\n\n const onClear = hooks.useCallbackRef(() => {\n void props.onChange?.(undefined);\n });\n\n return (\n <Cascader\n showSearch={true}\n allowClear={true}\n {...(otherProps as TAny)}\n popupClassName={classNames('cascader-wrapper-popup', otherProps.popupClassName)}\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={requestMessageConfig}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n loading={loading}\n loadData={isDynamicLoad ? loadData : undefined}\n fieldNames={fieldNamesMerge}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n options={options}\n value={valueList}\n multiple={false}\n onChange={onChange}\n onClear={onClear}\n />\n );\n});\n"],"names":["defaultState","selectorList","queryIsEmpty","requestStatus","_SelectorWrapperModel","actions","setSelectBoxList","params","state","changeRequestStatus","cascaderWrapperModels","cascaderWrapperModel","key","Model","CascaderWrapper","forwardRef","props","ref","serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange","responseType","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","options","setOptions","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_cascaderWrapperModel","useStore","requestPreKey","fieldNamesMerge","_extend","label","value","children","_useState2","valueList","setValueList","serviceRespDataAdapter","respData","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","_respData","respAdapterData","onRequest","Error","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","message","resolve","then","$await_2","map","item","isLeaf","useEffectCustom","cloneState","cloneList","cloneObject","values","toArray","length","filterList","treeNodeParentsList","reverse","undefined","useImperativeHandle","getCascaderList","onAgainRequest","loadData","selectedOptions","_extends2","targetOption","_extends","$await_3","concat","onChange","selectList","onClear","_jsx","Cascader","showSearch","allowClear","popupClassName","_classNames","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","suffixIcon","_RedoOutlined","spin","multiple"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/cascader-wrapper/model.ts","@flatbiz/antd/src/cascader-wrapper/utils.ts","@flatbiz/antd/src/cascader-wrapper/cascader-wrapper.tsx"],"sourcesContent":["import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n selectorList: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setSelectBoxList: { selectorList: TPlainObject[] };\n changeRequestStatus: ModelState['requestStatus'];\n};\n\nconst defaultState: ModelState = {\n selectorList: [],\n queryIsEmpty: false,\n requestStatus: 'request-init',\n};\n\nconst _SelectorWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setSelectBoxList: (params) => {\n return (state) => {\n state.selectorList = params.selectorList || [];\n state.requestStatus = 'request-success';\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n };\n },\n },\n state: defaultState,\n};\n\nconst cascaderWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const cascaderWrapperModel = (key: string) => {\n if (!cascaderWrapperModels[key]) {\n cascaderWrapperModels[key] = Model(_SelectorWrapperModel);\n }\n return cascaderWrapperModels[key];\n};\n","import { isPlainObject } from '@dimjs/lang';\nimport { toArray } from '@flatbiz/utils';\n\nexport const getValues = (value: any) => {\n const values = toArray(value);\n return values.map((item) => {\n return isPlainObject(item) ? item?.['value'] : item;\n });\n};\n","import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend, get } from '@dimjs/utils';\nimport type { LabelValueItem, TPlainObject } from '@flatbiz/utils';\nimport { cloneObject, treeNodeParentsList, type TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { CascaderProps } from 'antd';\nimport { Button, Cascader, message } from 'antd';\nimport type { ReactElement } from 'react';\nimport { forwardRef, useImperativeHandle, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks/index';\nimport type { TRequestStatusProps } from '../request-status/request-status';\nimport { RequestStatus } from '../request-status/request-status';\nimport { cascaderWrapperModel } from './model';\nimport './style.less';\nimport { getValues } from './utils';\n\ntype CascaderWrapperServiceConfig = {\n params?: TPlainObject;\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type CascaderWrapperProps = Omit<\n CascaderProps<TAny>,\n 'loading' | 'notFoundContent' | 'options' | 'value' | 'multiple' | 'onChange' | 'fieldNames'\n> & {\n // 模型唯一值\n modelKey: string;\n /**\n * 参数Key映射\n * ```\n * 1. 默认值:value=value、label=label、children=children\n * 2. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 3. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * 4. 如果没有配置list,可说明接口返回为数组\n * ```\n */\n fieldNames?: {\n list?: string;\n label?: string;\n value?: string;\n children?: string;\n };\n /**\n * 请求服务需求的数据,当设置`selectorList`后无效果\n */\n serviceConfig?: CascaderWrapperServiceConfig;\n // label渲染适配器\n onLabelRenderAdapter?: (dataItem: TPlainObject) => string | ReactElement;\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 是否动态加载选项\n */\n isDynamicLoad?: boolean;\n value?: string | number | Array<string | number> | LabelValueItem | LabelValueItem[];\n onChange?: (value?: string | number | Array<string | number>, selectedList?: TPlainObject[]) => void;\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * 选择数据响应类型(当用户选中后响应数据),默认值:last\n * ```\n * 1. last 响应选中的最后一级数据\n * 2. all 响应选中的多级数据\n * ```\n */\n responseType?: 'last' | 'all';\n /** 响应数据是否包含label、value */\n labelInValue?: boolean;\n};\n\nexport type CascaderWrapperRefApi = {\n getCascaderList: () => TPlainObject[];\n};\n/**\n * 级联选择器包装组件\n * ```\n * 1. 数据源中 value 不能重复\n * 2. 不支持多选\n * 3. modelKey的配置是为了缓存数据,只缓存初始化数据,如果isDynamicLoad=true,动态获取的数据不再缓存\n * 4. onChange操作第一个参数返回叶子节点value(可配置返回多级),第二个参数返回选中的多级数据\n * 5. isDynamicLoad=true 会在请求中添加当前选中option的fieldNames.value为key的数据\n * ```\n */\nexport const CascaderWrapper = forwardRef<CascaderWrapperRefApi, CascaderWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n modelKey,\n fieldNames,\n isDynamicLoad,\n requestMessageConfig,\n onSelectorListChange,\n responseType,\n labelInValue,\n ...otherProps\n } = props;\n const [options, setOptions] = useState<TAny[]>([]);\n\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const [state, actions] = cascaderWrapperModel(modelKey).useStore();\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNamesMerge = extend(true, { label: 'label', value: 'value', children: 'children' }, fieldNames);\n const [valueList, setValueList] = useState<string[]>();\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig?.onRequestResultAdapter) {\n return serviceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n }\n if (fieldNames?.list) {\n respData = get(respData, fieldNames?.list);\n }\n if (!isArray(respData)) {\n console.warn('接口返回数据不是数组类型,已被忽略', respData);\n return [];\n }\n return respData;\n };\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n if (!serviceConfig?.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n try {\n setLoading(true);\n window[requestPreKey] = true;\n void actions.changeRequestStatus('request-progress');\n const respData = await serviceConfig.onRequest?.(serviceConfig.params);\n const respAdapterData = serviceRespDataAdapter(respData);\n if (isDynamicLoad) {\n respAdapterData.map((item) => {\n item.isLeaf = item.isLeaf || false;\n });\n }\n setLoading(false);\n window[requestPreKey] = false;\n void actions.setSelectBoxList({\n selectorList: respAdapterData || [],\n });\n onSelectorListChange?.(respAdapterData || []);\n } catch (error: TAny) {\n setLoading(false);\n window[requestPreKey] = false;\n void actions.changeRequestStatus('request-error');\n void message.error(error.message || '获取数据异常');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (window[requestPreKey]) return;\n if (state.requestStatus === 'request-success') {\n setOptions(cloneState(state.selectorList));\n } else {\n void startDataSourceRequest();\n }\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n const cloneList = cloneObject(state.selectorList);\n const values = getValues(props.value) as Array<number | string>;\n if (values.length > 0) {\n if (responseType === 'all') {\n setValueList(values as string[]);\n } else {\n const filterList = treeNodeParentsList(values[0], cloneList, true, fieldNamesMerge).reverse();\n if (filterList.length === 0) {\n setValueList([props.value as string]);\n } else {\n setValueList(filterList as string[]);\n }\n }\n } else {\n setValueList(undefined);\n }\n setOptions(cloneList);\n }, [state.selectorList, props.value]);\n\n useImperativeHandle(ref, () => {\n return {\n getCascaderList: () => {\n return state.selectorList;\n },\n };\n });\n\n const onAgainRequest = hooks.useCallbackRef(() => {\n void startDataSourceRequest();\n });\n\n const loadData = async (selectedOptions: TAny[]) => {\n const targetOption = selectedOptions[selectedOptions.length - 1];\n targetOption.loading = true;\n const respData = await serviceConfig?.onRequest?.({\n ...serviceConfig.params,\n [fieldNamesMerge.value]: targetOption[fieldNamesMerge.value],\n });\n const respAdapterData = serviceRespDataAdapter(respData);\n if (!respAdapterData || respAdapterData.length === 0) {\n targetOption.isLeaf = true;\n } else {\n respAdapterData.map((item) => {\n item.isLeaf = item.isLeaf || false;\n });\n targetOption.children = respAdapterData;\n }\n targetOption.loading = false;\n void actions.setSelectBoxList({\n selectorList: options || [],\n });\n onSelectorListChange?.(options || []);\n setOptions([...options]);\n };\n\n const onChange = hooks.useCallbackRef((values: Array<string | number>, selectList) => {\n if (labelInValue !== true) {\n if (responseType === 'all') {\n props.onChange?.(values, selectList);\n } else {\n props.onChange?.(values?.[values.length - 1], selectList);\n }\n } else {\n const labelInValueList = selectList?.map((item) => {\n return {\n label: item[fieldNamesMerge.label],\n value: item[fieldNamesMerge.value],\n };\n });\n if (responseType === 'all') {\n props.onChange?.(labelInValueList, selectList);\n } else {\n props.onChange?.(labelInValueList?.[labelInValueList.length - 1], selectList);\n }\n }\n });\n\n const onClear = hooks.useCallbackRef(() => {\n void props.onChange?.(undefined);\n });\n\n return (\n <Cascader\n showSearch={true}\n allowClear={true}\n {...(otherProps as TAny)}\n popupClassName={classNames('cascader-wrapper-popup', otherProps.popupClassName)}\n notFoundContent={\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={requestMessageConfig}\n errorButton={\n <Button type=\"primary\" onClick={onAgainRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n loading={loading}\n loadData={isDynamicLoad ? loadData : undefined}\n fieldNames={fieldNamesMerge}\n suffixIcon={\n state.requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={onAgainRequest} />\n ) : undefined\n }\n options={options}\n value={valueList}\n multiple={false}\n onChange={onChange}\n onClear={onClear}\n />\n );\n});\n"],"names":["defaultState","selectorList","queryIsEmpty","requestStatus","_SelectorWrapperModel","actions","setSelectBoxList","params","state","changeRequestStatus","cascaderWrapperModels","cascaderWrapperModel","key","Model","getValues","value","values","toArray","map","item","_isPlainObject","CascaderWrapper","forwardRef","props","ref","serviceConfig","modelKey","fieldNames","isDynamicLoad","requestMessageConfig","onSelectorListChange","responseType","labelInValue","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","options","setOptions","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","_cascaderWrapperModel","useStore","requestPreKey","fieldNamesMerge","_extend","label","children","_useState2","valueList","setValueList","serviceRespDataAdapter","respData","onRequestResultAdapter","list","_get","_isArray","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","_respData","respAdapterData","onRequest","Error","$Try_1_Post","$boundEx","$Try_1_Catch","error","window","message","resolve","then","$await_2","isLeaf","useEffectCustom","cloneState","cloneList","cloneObject","length","filterList","treeNodeParentsList","reverse","undefined","useImperativeHandle","getCascaderList","onAgainRequest","loadData","selectedOptions","_extends2","targetOption","_extends","$await_3","concat","onChange","selectList","labelInValueList","onClear","_jsx","Cascader","showSearch","allowClear","popupClassName","_classNames","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","suffixIcon","_RedoOutlined","spin","multiple"],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import './../fba-hooks/index.css';
|
|
3
|
+
import './index.css';
|
|
4
|
+
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
5
|
+
import{isString as e}from"@dimjs/lang/cjs/is-string";import{_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as i}from"@wove/react/cjs/hooks";import{dom as n}from"@flatbiz/utils";import{Image as o}from"antd";import{useState as t,Fragment as l}from"react";import{createRoot as a}from"react-dom/client";import{fbaHooks as m}from"../fba-hooks/index.js";import{jsx as s}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";var d=function e(r){var n=t(true),a=n[0],d=n[1];var c=r.elementId;var f=i.useCallbackRef((function(){try{delete window[c]}catch(e){}d(false)}));m.useEffectCustom((function(){window[c]=f}),[f]);return s(l,{children:s(o,{wrapperStyle:{display:"none"},preview:{visible:!!a,onVisibleChange:function e(){return d(false)},afterOpenChange:function e(r){return!r&&d(false)}},src:r.imageUrl})})};var c={show:function e(i){var o=n.bodyAppendDivElement(),t=o.divElement,l=o.elementId;window["__dialog_preview_elementId"]=l;var m=a(t);m.render(s(d,r({},i,{divElement:t,elementId:l})));return{close:function e(){var r,i;(r=(i=window)[l])==null?void 0:r.call(i)}}},hiden:function r(){try{var i,n;var o=window["__dialog_preview_elementId"];if(e(o))(i=(n=window)[o])==null?void 0:i.call(n)}catch(e){}}};export{c as dialogPreviewImage};
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/dialog-preview-image/preview-image.tsx"],"sourcesContent":["import { isString } from '@dimjs/lang';\nimport type { BodyAppendDivElementProps } from '@flatbiz/utils';\nimport { dom } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Image } from 'antd';\nimport { Fragment, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { fbaHooks } from '../fba-hooks';\n\nexport type DialogPreviewImageProps = {\n imageUrl: string;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogPreviewImageProps) => {\n const [open, setOpen] = useState(true);\n const elementId = props.elementId;\n\n const onClose = hooks.useCallbackRef(() => {\n try {\n delete window[elementId];\n } catch (_error) {\n //\n }\n setOpen(false);\n });\n\n fbaHooks.useEffectCustom(() => {\n (window as any)[elementId] = onClose;\n }, [onClose]);\n\n return (\n <Fragment>\n <Image\n wrapperStyle={{ display: 'none' }}\n preview={{\n visible: !!open,\n onVisibleChange: () => setOpen(false),\n afterOpenChange: (visible) => !visible && setOpen(false),\n }}\n src={props.imageUrl}\n />\n </Fragment>\n );\n};\n\n/** 图片预览 */\nexport const dialogPreviewImage = {\n show: (props: DialogPreviewImageProps) => {\n const { divElement, elementId } = dom.bodyAppendDivElement();\n window['__dialog_preview_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n (window as any)[elementId]?.();\n },\n };\n },\n hiden: () => {\n try {\n const elementId = window['__dialog_preview_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (_error) {\n //\n }\n },\n};\n"],"names":["ModalRender","props","_useState","useState","open","setOpen","elementId","onClose","_hooks","useCallbackRef","window","_error","fbaHooks","useEffectCustom","_jsx","Fragment","children","Image","wrapperStyle","display","preview","visible","onVisibleChange","afterOpenChange","src","imageUrl","dialogPreviewImage","show","_dom$bodyAppendDivEle","dom","bodyAppendDivElement","divElement","root","createRoot","render","_extends","close","_elementId","_ref","call","hiden","_window$elementId","_window","_isString"],"mappings":";qeAaA,IAAMA,EAAc,SAAdA,EAAeC,GACnB,IAAAC,EAAwBC,EAAS,MAA1BC,EAAIF,EAAA,GAAEG,EAAOH,EAAA,GACpB,IAAMI,EAAYL,EAAMK,UAExB,IAAMC,EAAUC,EAAMC,gBAAe,WACnC,WACSC,OAAOJ,EACf,CAAC,MAAOK,GACP,CAEFN,EAAQ,MACV,IAEAO,EAASC,iBAAgB,WACtBH,OAAeJ,GAAaC,CAC/B,GAAG,CAACA,IAEJ,OACEO,EAACC,EAAQ,CAAAC,SACPF,EAACG,EAAK,CACJC,aAAc,CAAEC,QAAS,QACzBC,QAAS,CACPC,UAAWjB,EACXkB,gBAAiB,SAAAA,IAAA,OAAMjB,EAAQ,MAAM,EACrCkB,gBAAiB,SAAAA,EAACF,GAAO,OAAMA,GAAWhB,EAAQ,MAAM,GAE1DmB,IAAKvB,EAAMwB,YAInB,EAGO,IAAMC,EAAqB,CAChCC,KAAM,SAAAA,EAAC1B,GACL,IAAA2B,EAAkCC,EAAIC,uBAA9BC,EAAUH,EAAVG,WAAYzB,EAASsB,EAATtB,UACpBI,OAAO,8BAAgCJ,EACvC,IAAM0B,EAAOC,EAAWF,GACxBC,EAAKE,OAAOpB,EAACd,EAAWmC,EAAA,CAAA,EAAKlC,EAAK,CAAE8B,WAAYA,EAAYzB,UAAWA,MACvE,MAAO,CACL8B,MAAO,SAAAA,IAAM,IAAAC,EAAAC,GACXD,GAAAC,EAAC5B,QAAeJ,KAAU,UAAA,EAA1B+B,EAAAE,KAAAD,EACF,EAEH,EACDE,MAAO,SAAAA,IACL,IAAI,IAAAC,EAAAC,EACF,IAAMpC,EAAYI,OAAO,8BACzB,GAAIiC,EAASrC,IAAYmC,GAAAC,EAAAhC,QAAOJ,KAAPmC,UAAAA,EAAAA,EAAAF,KAAAG,EAC1B,CAAC,MAAO/B,GACP,CAEJ"}
|
|
@@ -15,10 +15,9 @@ import './../switch-wrapper/index.css';
|
|
|
15
15
|
import './../upload-wrapper/index.css';
|
|
16
16
|
import './../table-cell-render/index.css';
|
|
17
17
|
import './../button-operate/index.css';
|
|
18
|
-
import './../
|
|
18
|
+
import './../flex-layout/index.css';
|
|
19
19
|
import './../dialog-confirm/index.css';
|
|
20
20
|
import './../dialog-modal/index.css';
|
|
21
|
-
import './../flex-layout/index.css';
|
|
22
21
|
import './../tag-list-render/index.css';
|
|
23
22
|
import './../tag-list-select/index.css';
|
|
24
23
|
import './../input-wrapper/index.css';
|
package/esm/easy-table/index.js
CHANGED
|
@@ -19,5 +19,5 @@ import './../svg-http-view/index.css';
|
|
|
19
19
|
import './../table-title-tooltip/index.css';
|
|
20
20
|
import './index.css';
|
|
21
21
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
22
|
-
import{fbaUtils as e}from"../fba-utils/index.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{isObject as t}from"@dimjs/lang/cjs/is-object";import{_ as r,a as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{sessionStorageCache as a,localStorageCache as o,noop as l,getUuid as s,isUndefinedOrNull as u,isMacEnv as c}from"@flatbiz/utils";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{isUndefined as f}from"@dimjs/lang/cjs/is-undefined";import{get as m}from"@dimjs/utils/cjs/get";import{hooks as p}from"@wove/react/cjs/hooks";import{isString as v}from"@dimjs/lang/cjs/is-string";import{Checkbox as g,Popover as h,Form as y,message as C,Drawer as F,Table as b}from"antd";import{createContext as S,useState as x,Fragment as R,forwardRef as j,useMemo as w,useRef as z,useImperativeHandle as K,cloneElement as _,useContext as N,Children as T,useEffect as L}from"react";import{fbaHooks as P}from"../fba-hooks/index.js";import{PaginationWrapper as q}from"../pagination-wrapper/index.js";import{jsx as k,jsxs as I}from"react/jsx-runtime";import V from"@ant-design/icons/es/icons/DownOutlined";import D from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as E}from"react-is";import{BlockLayout as O}from"../block-layout/index.js";import{ButtonWrapper as A}from"../button-wrapper/index.js";import{EasyForm as B}from"../easy-form/index.js";import{FormGrid as M}from"../form-grid/index.js";import{TableScrollbar as W}from"../table-scrollbar/index.js";import{FlexLayout as Q}from"../flex-layout/index.js";import{IconWrapper as U}from"../icon-wrapper/index.js";import{SvgHttpView as G}from"../svg-http-view/index.js";import{TableTitleTooltip as H}from"../table-title-tooltip/index.js";import{TipsWrapper as Y}from"../tips-wrapper/index.js";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../box-grid/index.js";import"@dimjs/lang/cjs/is-number";import"ahooks";import"../form-wrapper/index.js";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var $={set:function e(n,t){var i=$.get(n);var o=r({},i,t);a.set("easy_tab_filter_"+n,o);return o},get:function e(n){var r=a.get("easy_tab_filter_"+n);return t(r)?r:{}},remove:function e(n){a.remove("easy_tab_filter_"+n)}};var J={set:function e(n,t){a.set("easy_tab_firstQuery_"+n,{value:t})},get:function e(n){var t;var r=(t=a.get("easy_tab_firstQuery_"+n))==null?void 0:t.value;return r===false?false:true},remove:function e(n){a.remove("easy_tab_firstQuery_"+n)}};var X={set:function e(n,t){o.set("easy_tab_columnFold_"+n,{value:t})},get:function e(t){var r;var i=(r=o.get("easy_tab_columnFold_"+t))==null?void 0:r.value;return n(i)?i:[]},remove:function e(n){o.remove("easy_tab_columnFold_"+n)}};var Z=S({onRequest:l,tableList:[],getEasyTableRef:function e(){}});var ee=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a=function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}};var o=k(R,{children:k(g.Group,{defaultValue:r,onChange:a,value:r,style:{display:"flex",flexDirection:"column"},children:n.dataList.map((function(e){var n=e["_isFoldTitle"]||e.title;return k(g,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)}))})});var l=function e(t){if(t.target.checked){a(n.dataList.map((function(e){return e.dataIndex})))}else{a([])}};return k(h,{content:o,title:k(g,{checked:r.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var ne=j((function(t,i){var a;var o=x(),l=o[0],u=o[1];var c=x(0),g=c[0],h=c[1];var F=x(false),b=F[0],S=F[1];var R=t.columnFoldConfig;var j=t.asyncColumnRequest;var N=x(false),T=N[0],L=N[1];var V=w((function(){if(t.cacheKey)return t.cacheKey;if(t.cacheSwitch===true){return location.pathname}if(typeof t.cacheSwitch==="string"){return t.cacheSwitch}return s()}),[t.cacheSwitch,t.cacheKey]);var D=$.get(V);var E=x((function(){if(V){var e=X.get(V);var t=n(e)?e.filter((function(e){return v(e)})):[];return t.length>0?t:(R==null?void 0:R.initSelectedKeys)||[]}else{return(R==null?void 0:R.initSelectedKeys)||[]}})),O=E[0],A=E[1];var B=t.pageSize||((a=t.initialPaginationParams)==null?void 0:a.pageSize)||10;var M=t.initRequest===undefined?true:t.initRequest;var W=z(false);var Q=z();var U=z([]);var G=x(),H=G[0],Y=G[1];var ne=z([]);var te=r({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},t.fieldNames);var re=y.useForm(t.form),ie=re[0];var ae=p.useCallbackRef((function(r){return new Promise((function(i,a){var o,l,s,c,d,f,p,v,g,y,F;var b=function(){try{return i()}catch(e){return a(e)}};var x=function(e){try{S(false);if(t.onRequestErrorHandle){t.onRequestErrorHandle(e)}else{void C.error(e.message)}return b()}catch(e){return a(e)}};try{if(t.breforeRequest){var R=function(){try{return w.call(this)}catch(e){return x(e)}}.bind(this);var j=function(e){try{return i()}catch(e){return x(e)}};try{return Promise.resolve(t.breforeRequest(ie)).then((function(e){try{return R()}catch(e){return j(e)}}),j)}catch(z){j(z)}}function w(){J.set(V,false);S(true);o=$.set(V,r);l=t.serviceConfig,s=l.requestParamsAdapter,c=l.onRequest,d=l.requestResultAdapter,f=l.dynamicColumsAdapter;p=s?s(o):o;return Promise.resolve(c(e.removeFormValuesInvalidField(p))).then((function(e){try{v=e||{};Q.current=v;t.onDataSourceChange==null?void 0:t.onDataSourceChange(v);g=v;if(d){g=d(v)}if(f){y=f(v,U.current);Y(y)}F=m(g,te.list);u(n(F)?F:[]);h(m(g,te.total));S(false);return b()}catch(e){return x(e)}}),x)}return w.call(this)}catch(K){x(K)}}))}));P.useEffectCustom((function(){var e=xe();var n=J.get(V);ie.setFieldsValue(r({},t.initialValues,D));if(M||!n){if(e){var i;void ae(r((i={},i[te.pageNo]=1,i[te.pageSize]=B,i),t.initialValues,D))}else{void ae(t.initialValues)}}else{$.set(V,t.initialValues||{})}}),[]);var oe=p.useCallbackRef((function(e){$.remove(V);ie.resetFields();if(e){$.set(V,e);ie.setFieldsValue(e)}}));var le=p.useCallbackRef((function(e){$.set(V,e);ie.setFieldsValue(e)}));var se=function e(n,t){if(xe()){var r;return r={},r[te.pageNo]=n,r[te.pageSize]=t||B,r}else{var i;return i={},i[te.pageNo]=undefined,i[te.pageSize]=undefined,i}};var ue=p.useCallbackRef((function(e){var n=r({},se(1,D[te.pageSize]),t.initialValues,e);$.remove(V);ie.resetFields();if(e){ie.setFieldsValue(e)}void ae(n)}));var ce=p.useCallbackRef((function(){return r({},D,ie.getFieldsValue())}));var de=p.useCallbackRef((function(){L(true)}));var fe=p.useCallbackRef((function(){L(false)}));var me=function e(){return{onRequest:ae,clearQueryCondition:oe,updateQueryCondition:le,getRequestParams:ce,onResetRequest:ue,form:ie,dataSource:Q.current,getDataSource:function e(){return Q.current},onFilterDataSource:function e(n){u(n)},onClearDataSource:function e(){h(0);u([])},onUpdateDataSource:function e(n){u(n);Q.current=n;t.onDataSourceChange==null?void 0:t.onDataSourceChange(n)},columnFoldTriggerRender:function e(n,r){var i;if(((i=t.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return _(n,{onClick:de})}var a=r.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));return k(ee,{dataList:a,onChange:be,cacheKey:V,initSelectedRowKeys:O,children:n})},onChangeTableColumns:function e(n){Y(n)},getTableColumns:function e(){return ne.current},loading:b,setEnabledInitRequest:function e(){J.set(V,false)}}};K(i,(function(){return me()}));var pe=function e(n){W.current=n};var ve=function e(n){U.current=n};var ge=function e(n){ne.current=n};var he=function e(){var n=ie.getFieldsValue();if(t.onFormFinish){t.onFormFinish(r({},n,se(1,D[te.pageSize])))}else{void ae(r({},n,se(1,D[te.pageSize])))}};var ye=f(t.isFull)?true:t.isFull;var Ce=d("fba-easy-table",{"fba-easy-table-full":ye,"fba-easy-table-filter-fixed":t.filterFixed,"fba-easy-table-pagination-fixed":t.paginationFixed},t.className);var Fe=P.useMemoCustom((function(){return r({showSizeChanger:true,current:D[te.pageNo]||1,pageSize:D[te.pageSize]||B,total:g,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[te.pageNo,D,te.pageSize,V,B,t.pagination,g]);var be=function e(n){A(n);R==null||R.onChange==null?void 0:R.onChange(n)};var Se=p.useCallbackRef((function(e,n){var r,i;var a=(r={},r[te.pageSize]=n,r[te.pageNo]=e,r);$.set(V,a);void ae(a);(i=t.pagination)==null||i.onChange==null?void 0:i.onChange(e,n)}));var xe=function e(){return t.paginationFixed||W.current};p.useUpdateEffect((function(){if(t.paginationFixed){var e;void ae((e={},e[te.pageSize]=D[te.pageSize]||B,e[te.pageNo]=1,e))}else{var n;void ae((n={},n[te.pageSize]=undefined,n[te.pageNo]=undefined,n))}}),[t.paginationFixed]);var Re=d("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":t.isInline},t.className);var je=r({overflowY:t.filterFixed||t.paginationFixed?"hidden":"auto"},t.style);var we=typeof t.children==="function"?t.children(Q.current):t.children;return k(Z.Provider,{value:{onSetBaseColumns:ve,onSetColumns:ge,getEasyTableRef:me,cacheKey:V,onRequest:ae,tableDataSource:l,tableTotal:g,loading:b,fieldNames:te,pageSize:B,onSetPaginationStatus:pe,getPaginationStatus:xe,onFormFinish:he,form:ie,paginationFixed:t.paginationFixed||false,foldKeys:t.foldKeys||[],columns:H,initialValues:t.initialValues,dynamicColumnsConfig:{showFoldKeyList:O,onChangeShowFoldKeyList:be,columnFoldConfig:R,onOpenColumnFoldModal:de,onCloseColumnFoldModal:fe,columnFoldOpen:T,asyncColumnRequest:j}},children:t.paginationFixed?I("div",{className:Re,style:je,children:[k("div",{className:Ce,children:we}),g>0&&k("div",{className:"fba-easy-table-pagination",children:k(q,r({size:"small"},Fe,{onChange:Se}))})]}):k("div",{className:Re,style:t.style,children:k("div",{className:Ce,children:we})})})}));var te=function e(n){var t=P.useResponsivePoint()||"md";var i=N(Z);var a=n.queryButtonProps,o=n.resetButtonProps,l=n.filterOperate,s=n.formClassName,u=s===void 0?"":s,c=n.defaultResetButtonTriggerRequest,m=n.filterWrapperStyle,v=n.filterWrapperClassName,g=n.rightOperateAreaAppendType,h=n.easyFormProps;var y=i.cacheKey,C=i.foldKeys,F=i.fieldNames,b=i.onRequest,S=i.pageSize,R=i.getPaginationStatus,j=i.initialValues,z=i.form,K=i.onFormFinish;var _=typeof n.children==="function"?n.children(z):n.children;var L=g||"cover";var q=w((function(){if(E(_)){return T.toArray(_.props.children)}else{return T.toArray(_)}}),[_]);var W=x(false),Q=W[0],U=W[1];var G=p.useCallbackRef((function(){return new Promise((function(e,n){var t;$.remove(y);z.resetFields();z.setFieldsValue(j);if(f(c)||c){return Promise.resolve(z.validateFields()).then(function(e){try{if(R()){b(r((t={},t[F.pageNo]=1,t[F.pageSize]=S,t),j))}else{b(j)}return i.call(this)}catch(e){return n(e)}}.bind(this),n)}function i(){return e()}return i.call(this)}))}));var H=w((function(){var e=[!(a!=null&&a.hidden)?k(A,r({type:"primary",htmlType:"submit"},a,{children:(a==null?void 0:a.text)||"查询"}),"1"):null,!(o!=null&&o.hidden)?k(A,r({onClick:G},o,{children:(o==null?void 0:o.text)||"重置"}),"2"):null].filter(Boolean);var n=l==null?void 0:l(z);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var s=e;if(t){if(L==="afterAppend"){s=[].concat(e,t)}else if(L==="beforeAppend"){s=[].concat(t,e)}else{s=t}}if(C.length>0){var u=k(A,{type:"link",style:{padding:"0"},onClick:function e(){U(!Q)},children:Q?I("span",{children:["收起",k(D,{style:{marginLeft:3,fontSize:12}})]}):I("span",{children:["展开",k(V,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(s.length>0||i.length===0){s.push(u)}else if((i==null?void 0:i.length)>0){i.push(u)}}return q.map((function(e,n){if(!Q&&C.find((function(n){return".$"+n===e.key})))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return k(M.Col,{children:e},n)})).filter(Boolean).concat(k(M.OperateCol,r({},n,{leftList:i,rightList:s}),999))}),[q,l,C,z,G,Q,a,o,L]);var Y=t==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return k(O,{className:d("easy-table-filter",v),style:m,children:k(B,r({form:z,autoComplete:"off",onFinish:K,className:u,style:n.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Y,children:n.isPure?_:k(M.Row,{gutter:[15,0],gridSize:n.formGridSize,children:H})}))})};var re=function e(){var n=N(Z);return n.getEasyTableRef()};var ie=function e(){var n=N(Z);return{current:n.getEasyTableRef()}};var ae=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a={type:"checkbox",selectedRowKeys:r,onChange:function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return k(R,{children:k(F,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:k(b,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var oe=["tooltip","tipsWrapperProps","title"];var le=function e(n){return w((function(){var e=n.columns.map((function(e){var n=e.tooltip,t=e.tipsWrapperProps,a=e.title,o=i(e,oe);if(typeof a==="string"&&t){if(typeof t==="string"){return r({},o,{title:k(Y,{tipType:"popover",popoverProps:{content:t},children:a})})}return r({},o,{title:k(Y,r({},t,{children:a}))})}if(typeof a==="string"&&!!n){return r({},o,{title:k(H,{tooltip:n,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[n.columns])};var se=function e(n){var t=n.columns;return P.useMemoCustom((function(){var e;if((e=n.columnFoldConfig)!=null&&e.hidden)return t;var r=t[t.length-1];if(n.foldColumnList.length>0&&t.length>0){var i=t.find((function(e){return e["_isFoldColumn"]}));if(i&&r.dataIndex!==i.dataIndex){i.title=i["_isFoldTitle"];i["_isFoldColumn"]=false}if(!r["_isFoldColumn"]){var a,o,l,s,u,c;r["_isFoldTitle"]=r["_isFoldTitle"]||r.title;r["_isFoldColumn"]=true;var d=(a=n.columnFoldConfig)==null?void 0:a.triggerType;r.title=I(Q,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[k("span",{children:r.title}),k("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:d==="drawer"?k(U,{onClick:n.onOpenColumnFoldModal,text:(o=n.columnFoldConfig)==null?void 0:o.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((s=n.columnFoldConfig)==null?void 0:s.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):k(ee,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:n.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:k(U,{text:(u=n.columnFoldConfig)==null?void 0:u.text,style:{padding:0,margin:0},size:"small",icon:((c=n.columnFoldConfig)==null?void 0:c.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t}),[n.columns,n.columnFoldConfig])};var ue=function e(n){return w((function(){var e=n.columns.map((function(e){var t=e.hidden,r=e.isFold;if(t)return null;if(r&&!n.showFoldKeyList.includes(e.dataIndex))return null;return e})).filter(Boolean);return[].concat(e)}),[n.columns,n.showFoldKeyList])};var ce=function e(n){return w((function(){if(!Object.keys(n.asyncColumnRequestResult))return n.columns;return n.columns.map((function(e){var t=e.dataIndex;var r=n.asyncColumnRequestResult[t];if(t&&r){if(r.loading){e.render=function(e){return k(A,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,t,i){return e.asyncRender==null?void 0:e.asyncRender(n,t,i,r.respData)}}}return e}))}),[n.columns,n.asyncColumnRequestResult])};var de=["children","rowKey","pagination","isSync"];var fe=function e(n){var t=N(Z);var a=n.children,o=n.rowKey,l=n.pagination,f=n.isSync,m=i(n,de);var v=z({});var g=x({}),h=g[0],y=g[1];var C=t.dynamicColumnsConfig,F=C.columnFoldConfig,S=C.onCloseColumnFoldModal,j=C.columnFoldOpen,K=C.onOpenColumnFoldModal,_=C.asyncColumnRequest,T=C.showFoldKeyList,q=C.onChangeShowFoldKeyList;var V=t.cacheKey,D=t.fieldNames,E=t.onRequest,A=t.tableDataSource,B=t.pageSize,M=t.tableTotal,Q=t.loading,U=t.paginationFixed,G=t.onSetPaginationStatus;var H=$.get(V);P.useEffectCustom((function(){t.onSetBaseColumns(n.columns||[])}),[]);L((function(){if(_!=null&&_.length){var e=function e(){var t;var i=_[n];v.current=r({},v.current,(t={},t[i.dataIndex]={loading:true},t));y(v.current);i.onRequest().then((function(e){var n;v.current=r({},v.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));y(v.current)})).catch((function(e){var n;console.error(e==null?void 0:e.message);v.current=r({},v.current,(n={},n[i.dataIndex]={loading:false},n));y(v.current)}))};for(var n=0;n<_.length;n++){e()}}}),[_]);var Y=P.useMemoCustom((function(){if(t.columns){t.onSetColumns(t.columns);return t.columns}else{t.onSetColumns(n.columns);return n.columns}}),[t.columns,n.columns]);var J=le({columns:[].concat(Y)});var X=Y.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));J=se({cacheKey:V,columns:J,foldColumnList:X,showFoldKeyList:T,columnFoldConfig:F,onOpenColumnFoldModal:K,onChangeFoldColumnList:q});J=ue({columns:J,showFoldKeyList:T});J=ce({columns:J,asyncColumnRequestResult:h});P.useEffectCustom((function(){G(l!==false)}),[l]);p.useUpdateEffect((function(){if(!U){if(l!==false){var e;E((e={},e[D.pageSize]=H[D.pageSize]||B,e[D.pageNo]=1,e))}else{var n;E((n={},n[D.pageSize]=undefined,n[D.pageNo]=undefined,n))}}}),[l]);var ee=w((function(){if(U||l===false)return false;return r({showSizeChanger:true,current:H[D.pageNo]||1,pageSize:H[D.pageSize]||B,total:M,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)}),[H,D.pageNo,D.pageSize,B,l,U,n.pagination,M]);var ne=function e(t,r,i,a){if(a.action==="paginate"&&ee){var o;E((o={},o[D.pageSize]=t.pageSize,o[D.pageNo]=t.current,o))}else{n.onChange==null?void 0:n.onChange(t,r,i,a)}};var te=w((function(){if(!A)return undefined;if(A.length===0){return[]}if(typeof o==="string"&&u(A[0][o])){return A.map((function(e){e[o]=s();return e}))}return A}),[A,o]);J=w((function(){return J.map((function(e){if(!!e.defaultValue&&!e.render){e.render=function(n){return u(n)||n==""?e.defaultValue:n}}return e}))}),[J]);var re=function e(){if(f&&!te){return I(R,{children:[a,k(b,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:o,columns:J,loading:Q},"1")]})}if(c()){return I(R,{children:[a,k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:J,pagination:ee,rowKey:o,onChange:ne,loading:Q,dataSource:te}),"2")]})}return I(R,{children:[a,k(W,{children:k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:J,pagination:ee,rowKey:o,onChange:ne,loading:Q,dataSource:te}),"3")})]})};return I(O,{className:d("easy-table-table",{"ett-empty-show-small":n.emptyShowSize==="small"},n.tableWrapperClassName),style:n.tableWrapperStyle,children:[re(),k(ae,{dataList:X,onClose:S,open:j,onChange:q,cacheKey:V,initSelectedRowKeys:T})]})};var me=e.attachPropertiesToComponent(ne,{Filter:te,Table:fe,useEasyTablRef:ie,useEasyTable:re,setEnabledInitRequest:function e(n){J.set(n,false)}});export{me as EasyTable};
|
|
22
|
+
import{fbaUtils as e}from"../fba-utils/index.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{isObject as t}from"@dimjs/lang/cjs/is-object";import{_ as r,a as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{sessionStorageCache as a,localStorageCache as o,noop as l,getUuid as s,isUndefinedOrNull as u,isMacEnv as c}from"@flatbiz/utils";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{isUndefined as f}from"@dimjs/lang/cjs/is-undefined";import{get as m}from"@dimjs/utils/cjs/get";import{hooks as p}from"@wove/react/cjs/hooks";import{isString as v}from"@dimjs/lang/cjs/is-string";import{Checkbox as g,Popover as h,Form as y,message as C,Drawer as F,Table as b}from"antd";import{createContext as S,useState as x,Fragment as R,forwardRef as j,useMemo as w,useRef as z,useImperativeHandle as K,cloneElement as _,useContext as N,Children as P,useEffect as T}from"react";import{fbaHooks as L}from"../fba-hooks/index.js";import{PaginationWrapper as q}from"../pagination-wrapper/index.js";import{jsx as k,jsxs as I}from"react/jsx-runtime";import V from"@ant-design/icons/es/icons/DownOutlined";import D from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as E}from"react-is";import{BlockLayout as O}from"../block-layout/index.js";import{ButtonWrapper as A}from"../button-wrapper/index.js";import{EasyForm as B}from"../easy-form/index.js";import{FormGrid as M}from"../form-grid/index.js";import{TableScrollbar as W}from"../table-scrollbar/index.js";import{FlexLayout as Q}from"../flex-layout/index.js";import{IconWrapper as U}from"../icon-wrapper/index.js";import{SvgHttpView as G}from"../svg-http-view/index.js";import{TableTitleTooltip as H}from"../table-title-tooltip/index.js";import{TipsWrapper as Y}from"../tips-wrapper/index.js";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";import"../box-grid/index.js";import"@dimjs/lang/cjs/is-number";import"ahooks";import"../form-wrapper/index.js";import"../pre-defined-class-name/index.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var $={set:function e(n,t){var i=$.get(n);var o=r({},i,t);a.set("easy_tab_filter_"+n,o);return o},get:function e(n){var r=a.get("easy_tab_filter_"+n);return t(r)?r:{}},remove:function e(n){a.remove("easy_tab_filter_"+n)}};var J={set:function e(n,t){a.set("easy_tab_firstQuery_"+n,{value:t})},get:function e(n){var t;var r=(t=a.get("easy_tab_firstQuery_"+n))==null?void 0:t.value;return r===false?false:true},remove:function e(n){a.remove("easy_tab_firstQuery_"+n)}};var X={set:function e(n,t){o.set("easy_tab_columnFold_"+n,{value:t})},get:function e(t){var r;var i=(r=o.get("easy_tab_columnFold_"+t))==null?void 0:r.value;return n(i)?i:[]},remove:function e(n){o.remove("easy_tab_columnFold_"+n)}};var Z=S({onRequest:l,tableList:[],getEasyTableRef:function e(){}});var ee=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a=function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}};var o=k(R,{children:k(g.Group,{defaultValue:r,onChange:a,value:r,style:{display:"flex",flexDirection:"column"},children:n.dataList.map((function(e){var n=e["_isFoldTitle"]||e.title;return k(g,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)}))})});var l=function e(t){if(t.target.checked){a(n.dataList.map((function(e){return e.dataIndex})))}else{a([])}};return k(h,{content:o,title:k(g,{checked:r.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var ne=j((function(t,i){var a;var o=L.useResponsivePoint();var l=x(),u=l[0],c=l[1];var g=x(0),h=g[0],F=g[1];var b=x(false),S=b[0],R=b[1];var j=t.columnFoldConfig;var N=t.asyncColumnRequest;var P=x(false),T=P[0],V=P[1];var D=w((function(){if(t.cacheKey)return t.cacheKey;if(t.cacheSwitch===true){return location.pathname}if(typeof t.cacheSwitch==="string"){return t.cacheSwitch}return s()}),[t.cacheSwitch,t.cacheKey]);var E=$.get(D);var O=x((function(){if(D){var e=X.get(D);var t=n(e)?e.filter((function(e){return v(e)})):[];return t.length>0?t:(j==null?void 0:j.initSelectedKeys)||[]}else{return(j==null?void 0:j.initSelectedKeys)||[]}})),A=O[0],B=O[1];var M=t.pageSize||((a=t.initialPaginationParams)==null?void 0:a.pageSize)||10;var W=t.initRequest===undefined?true:t.initRequest;var Q=z(false);var U=z();var G=z([]);var H=x(),Y=H[0],ne=H[1];var te=z([]);var re=r({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},t.fieldNames);var ie=y.useForm(t.form),ae=ie[0];var oe=p.useCallbackRef((function(r){return new Promise((function(i,a){var o,l,s,u,d,f,p,v,g,h,y;var b=function(){try{return i()}catch(e){return a(e)}};var S=function(e){try{R(false);if(t.onRequestErrorHandle){t.onRequestErrorHandle(e)}else{void C.error(e.message)}return b()}catch(e){return a(e)}};try{if(t.breforeRequest){var x=function(){try{return w.call(this)}catch(e){return S(e)}}.bind(this);var j=function(e){try{return i()}catch(e){return S(e)}};try{return Promise.resolve(t.breforeRequest(ae)).then((function(e){try{return x()}catch(e){return j(e)}}),j)}catch(z){j(z)}}function w(){J.set(D,false);R(true);o=$.set(D,r);l=t.serviceConfig,s=l.requestParamsAdapter,u=l.onRequest,d=l.requestResultAdapter,f=l.dynamicColumsAdapter;p=s?s(o):o;return Promise.resolve(u(e.removeFormValuesInvalidField(p))).then((function(e){try{v=e||{};U.current=v;t.onDataSourceChange==null?void 0:t.onDataSourceChange(v);g=v;if(d){g=d(v)}if(f){h=f(v,G.current);ne(h)}y=m(g,re.list);c(n(y)?y:[]);F(m(g,re.total));R(false);return b()}catch(e){return S(e)}}),S)}return w.call(this)}catch(K){S(K)}}))}));L.useEffectCustom((function(){var e=je();var n=J.get(D);ae.setFieldsValue(r({},t.initialValues,E));if(W||!n){if(e){var i;void oe(r((i={},i[re.pageNo]=1,i[re.pageSize]=M,i),t.initialValues,E))}else{void oe(t.initialValues)}}else{$.set(D,t.initialValues||{})}}),[]);var le=p.useCallbackRef((function(e){$.remove(D);ae.resetFields();if(e){$.set(D,e);ae.setFieldsValue(e)}}));var se=p.useCallbackRef((function(e){$.set(D,e);ae.setFieldsValue(e)}));var ue=function e(n,t){if(je()){var r;return r={},r[re.pageNo]=n,r[re.pageSize]=t||M,r}else{var i;return i={},i[re.pageNo]=undefined,i[re.pageSize]=undefined,i}};var ce=p.useCallbackRef((function(e){var n=r({},ue(1,E[re.pageSize]),t.initialValues,e);$.remove(D);ae.resetFields();if(e){ae.setFieldsValue(e)}void oe(n)}));var de=p.useCallbackRef((function(){return r({},E,ae.getFieldsValue())}));var fe=p.useCallbackRef((function(){V(true)}));var me=p.useCallbackRef((function(){V(false)}));var pe=function e(){return{onRequest:oe,clearQueryCondition:le,updateQueryCondition:se,getRequestParams:de,onResetRequest:ce,form:ae,dataSource:U.current,getDataSource:function e(){return U.current},onFilterDataSource:function e(n){c(n)},onClearDataSource:function e(){F(0);c([])},onUpdateDataSource:function e(n){c(n);U.current=n;t.onDataSourceChange==null?void 0:t.onDataSourceChange(n)},columnFoldTriggerRender:function e(n,r){var i;if(((i=t.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return _(n,{onClick:fe})}var a=r.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));return k(ee,{dataList:a,onChange:xe,cacheKey:D,initSelectedRowKeys:A,children:n})},onChangeTableColumns:function e(n){ne(n)},getTableColumns:function e(){return te.current},loading:S,setEnabledInitRequest:function e(){J.set(D,false)}}};K(i,(function(){return pe()}));var ve=function e(n){Q.current=n};var ge=function e(n){G.current=n};var he=function e(n){te.current=n};var ye=function e(){var n=ae.getFieldsValue();if(t.onFormFinish){t.onFormFinish(r({},n,ue(1,E[re.pageSize])))}else{void oe(r({},n,ue(1,E[re.pageSize])))}};var Ce=f(t.isFull)?true:t.isFull;var Fe=o==="xs"?false:t.filterFixed;var be=d("fba-easy-table",{"fba-easy-table-full":Ce,"fba-easy-table-filter-fixed":Fe,"fba-easy-table-pagination-fixed":t.paginationFixed},t.className);var Se=L.useMemoCustom((function(){return r({showSizeChanger:true,current:E[re.pageNo]||1,pageSize:E[re.pageSize]||M,total:h,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[re.pageNo,E,re.pageSize,D,M,t.pagination,h]);var xe=function e(n){B(n);j==null||j.onChange==null?void 0:j.onChange(n)};var Re=p.useCallbackRef((function(e,n){var r,i;var a=(r={},r[re.pageSize]=n,r[re.pageNo]=e,r);$.set(D,a);void oe(a);(i=t.pagination)==null||i.onChange==null?void 0:i.onChange(e,n)}));var je=function e(){return t.paginationFixed||Q.current};p.useUpdateEffect((function(){if(t.paginationFixed){var e;void oe((e={},e[re.pageSize]=E[re.pageSize]||M,e[re.pageNo]=1,e))}else{var n;void oe((n={},n[re.pageSize]=undefined,n[re.pageNo]=undefined,n))}}),[t.paginationFixed]);var we=d("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":t.isInline},t.className);var ze=r({overflowY:t.filterFixed||t.paginationFixed?"hidden":"auto"},t.style);var Ke=typeof t.children==="function"?t.children(U.current):t.children;return k(Z.Provider,{value:{onSetBaseColumns:ge,onSetColumns:he,getEasyTableRef:pe,cacheKey:D,onRequest:oe,tableDataSource:u,tableTotal:h,loading:S,fieldNames:re,pageSize:M,onSetPaginationStatus:ve,getPaginationStatus:je,onFormFinish:ye,form:ae,paginationFixed:t.paginationFixed||false,foldKeys:t.foldKeys||[],columns:Y,initialValues:t.initialValues,dynamicColumnsConfig:{showFoldKeyList:A,onChangeShowFoldKeyList:xe,columnFoldConfig:j,onOpenColumnFoldModal:fe,onCloseColumnFoldModal:me,columnFoldOpen:T,asyncColumnRequest:N}},children:t.paginationFixed?I("div",{className:we,style:ze,children:[k("div",{className:be,children:Ke}),h>0&&k("div",{className:"fba-easy-table-pagination",children:k(q,r({size:"small"},Se,{onChange:Re}))})]}):k("div",{className:we,style:t.style,children:k("div",{className:be,children:Ke})})})}));var te=function e(n){var t=L.useResponsivePoint()||"md";var i=N(Z);var a=n.queryButtonProps,o=n.resetButtonProps,l=n.filterOperate,s=n.formClassName,u=s===void 0?"":s,c=n.defaultResetButtonTriggerRequest,m=n.filterWrapperStyle,v=n.filterWrapperClassName,g=n.rightOperateAreaAppendType,h=n.easyFormProps;var y=i.cacheKey,C=i.foldKeys,F=i.fieldNames,b=i.onRequest,S=i.pageSize,R=i.getPaginationStatus,j=i.initialValues,z=i.form,K=i.onFormFinish;var _=typeof n.children==="function"?n.children(z):n.children;var T=g||"cover";var q=w((function(){if(E(_)){return P.toArray(_.props.children)}else{return P.toArray(_)}}),[_]);var W=x(false),Q=W[0],U=W[1];var G=p.useCallbackRef((function(){return new Promise((function(e,n){var t;$.remove(y);z.resetFields();z.setFieldsValue(j);if(f(c)||c){return Promise.resolve(z.validateFields()).then(function(e){try{if(R()){b(r((t={},t[F.pageNo]=1,t[F.pageSize]=S,t),j))}else{b(j)}return i.call(this)}catch(e){return n(e)}}.bind(this),n)}function i(){return e()}return i.call(this)}))}));var H=w((function(){var e=[!(a!=null&&a.hidden)?k(A,r({type:"primary",htmlType:"submit"},a,{children:(a==null?void 0:a.text)||"查询"}),"1"):null,!(o!=null&&o.hidden)?k(A,r({onClick:G},o,{children:(o==null?void 0:o.text)||"重置"}),"2"):null].filter(Boolean);var n=l==null?void 0:l(z);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var s=e;if(t){if(T==="afterAppend"){s=[].concat(e,t)}else if(T==="beforeAppend"){s=[].concat(t,e)}else{s=t}}if(C.length>0){var u=k(A,{type:"link",style:{padding:"0"},onClick:function e(){U(!Q)},children:Q?I("span",{children:["收起",k(D,{style:{marginLeft:3,fontSize:12}})]}):I("span",{children:["展开",k(V,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(s.length>0||i.length===0){s.push(u)}else if((i==null?void 0:i.length)>0){i.push(u)}}return q.map((function(e,n){if(!Q&&C.find((function(n){return".$"+n===e.key})))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return k(M.Col,{children:e},n)})).filter(Boolean).concat(k(M.OperateCol,r({},n,{leftList:i,rightList:s}),999))}),[q,l,C,z,G,Q,a,o,T]);var Y=t==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return k(O,{className:d("easy-table-filter",v),style:m,children:k(B,r({form:z,autoComplete:"off",onFinish:K,className:u,style:n.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Y,children:n.isPure?_:k(M.Row,{gutter:[15,0],gridSize:n.formGridSize,children:H})}))})};var re=function e(){var n=N(Z);return n.getEasyTableRef()};var ie=function e(){var n=N(Z);return{current:n.getEasyTableRef()}};var ae=function e(n){var t=x(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a={type:"checkbox",selectedRowKeys:r,onChange:function e(t){i(t);n.onChange(t);if(n.cacheKey){X.set(n.cacheKey,t)}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return k(R,{children:k(F,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:k(b,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var oe=["tooltip","tipsWrapperProps","title"];var le=function e(n){return w((function(){var e=n.columns.map((function(e){var n=e.tooltip,t=e.tipsWrapperProps,a=e.title,o=i(e,oe);if(typeof a==="string"&&t){if(typeof t==="string"){return r({},o,{title:k(Y,{tipType:"popover",popoverProps:{content:t},children:a})})}return r({},o,{title:k(Y,r({},t,{children:a}))})}if(typeof a==="string"&&!!n){return r({},o,{title:k(H,{tooltip:n,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[n.columns])};var se=function e(n){var t=n.columns;return L.useMemoCustom((function(){var e;if((e=n.columnFoldConfig)!=null&&e.hidden)return t;var r=t[t.length-1];if(n.foldColumnList.length>0&&t.length>0){var i=t.find((function(e){return e["_isFoldColumn"]}));if(i&&r.dataIndex!==i.dataIndex){i.title=i["_isFoldTitle"];i["_isFoldColumn"]=false}if(!r["_isFoldColumn"]){var a,o,l,s,u,c;r["_isFoldTitle"]=r["_isFoldTitle"]||r.title;r["_isFoldColumn"]=true;var d=(a=n.columnFoldConfig)==null?void 0:a.triggerType;r.title=I(Q,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[k("span",{children:r.title}),k("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:d==="drawer"?k(U,{onClick:n.onOpenColumnFoldModal,text:(o=n.columnFoldConfig)==null?void 0:o.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((s=n.columnFoldConfig)==null?void 0:s.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):k(ee,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:n.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:k(U,{text:(u=n.columnFoldConfig)==null?void 0:u.text,style:{padding:0,margin:0},size:"small",icon:((c=n.columnFoldConfig)==null?void 0:c.icon)||k(G,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t}),[n.columns,n.columnFoldConfig])};var ue=function e(n){return w((function(){var e=n.columns.map((function(e){var t=e.hidden,r=e.isFold;if(t)return null;if(r&&!n.showFoldKeyList.includes(e.dataIndex))return null;return e})).filter(Boolean);return[].concat(e)}),[n.columns,n.showFoldKeyList])};var ce=function e(n){return w((function(){if(!Object.keys(n.asyncColumnRequestResult))return n.columns;return n.columns.map((function(e){var t=e.dataIndex;var r=n.asyncColumnRequestResult[t];if(t&&r){if(r.loading){e.render=function(e){return k(A,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,t,i){return e.asyncRender==null?void 0:e.asyncRender(n,t,i,r.respData)}}}return e}))}),[n.columns,n.asyncColumnRequestResult])};var de=["children","rowKey","pagination","isSync"];var fe=function e(n){var t=N(Z);var a=n.children,o=n.rowKey,l=n.pagination,f=n.isSync,m=i(n,de);var v=L.useResponsivePoint()||"";var g=z({});var h=x({}),y=h[0],C=h[1];var F=t.dynamicColumnsConfig,S=F.columnFoldConfig,j=F.onCloseColumnFoldModal,K=F.columnFoldOpen,_=F.onOpenColumnFoldModal,P=F.asyncColumnRequest,q=F.showFoldKeyList,V=F.onChangeShowFoldKeyList;var D=t.cacheKey,E=t.fieldNames,A=t.onRequest,B=t.tableDataSource,M=t.pageSize,Q=t.tableTotal,U=t.loading,G=t.paginationFixed,H=t.onSetPaginationStatus;var Y=$.get(D);L.useEffectCustom((function(){t.onSetBaseColumns(n.columns||[])}),[]);T((function(){if(P!=null&&P.length){var e=function e(){var t;var i=P[n];g.current=r({},g.current,(t={},t[i.dataIndex]={loading:true},t));C(g.current);i.onRequest().then((function(e){var n;g.current=r({},g.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));C(g.current)})).catch((function(e){var n;console.error(e==null?void 0:e.message);g.current=r({},g.current,(n={},n[i.dataIndex]={loading:false},n));C(g.current)}))};for(var n=0;n<P.length;n++){e()}}}),[P]);var J=L.useMemoCustom((function(){if(t.columns){t.onSetColumns(t.columns);return t.columns}else{t.onSetColumns(n.columns);return n.columns}}),[t.columns,n.columns]);var X=le({columns:[].concat(J)});var ee=J.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));X=se({cacheKey:D,columns:X,foldColumnList:ee,showFoldKeyList:q,columnFoldConfig:S,onOpenColumnFoldModal:_,onChangeFoldColumnList:V});X=ue({columns:X,showFoldKeyList:q});X=ce({columns:X,asyncColumnRequestResult:y});L.useEffectCustom((function(){H(l!==false)}),[l]);p.useUpdateEffect((function(){if(!G){if(l!==false){var e;A((e={},e[E.pageSize]=Y[E.pageSize]||M,e[E.pageNo]=1,e))}else{var n;A((n={},n[E.pageSize]=undefined,n[E.pageNo]=undefined,n))}}}),[l]);var ne=w((function(){if(G||l===false)return false;return r({showSizeChanger:true,current:Y[E.pageNo]||1,pageSize:Y[E.pageSize]||M,total:Q,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)}),[Y,E.pageNo,E.pageSize,M,l,G,n.pagination,Q]);var te=function e(t,r,i,a){if(a.action==="paginate"&&ne){var o;A((o={},o[E.pageSize]=t.pageSize,o[E.pageNo]=t.current,o))}else{n.onChange==null?void 0:n.onChange(t,r,i,a)}};var re=w((function(){if(!B)return undefined;if(B.length===0){return[]}if(typeof o==="string"&&u(B[0][o])){return B.map((function(e){e[o]=s();return e}))}return B}),[B,o]);X=w((function(){return X.map((function(e){if(!!e.fixed&&v==="xs"){e.fixed=undefined}if(!!e.defaultValue&&!e.render){e.render=function(n){return u(n)||n==""?e.defaultValue:n}}return e}))}),[X,v]);var ie=function e(){if(f&&!re){return I(R,{children:[a,k(b,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:o,columns:X,loading:U},"1")]})}if(c()){return I(R,{children:[a,k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:X,pagination:ne,rowKey:o,onChange:te,loading:U,dataSource:re}),"2")]})}return I(R,{children:[a,k(W,{children:k(b,r({size:"small",scroll:{x:"max-content"},bordered:true},m,{columns:X,pagination:ne,rowKey:o,onChange:te,loading:U,dataSource:re}),"3")})]})};return I(O,{className:d("easy-table-table",{"ett-empty-show-small":n.emptyShowSize==="small"},n.tableWrapperClassName),style:n.tableWrapperStyle,children:[ie(),k(ae,{dataList:ee,onClose:j,open:K,onChange:V,cacheKey:D,initSelectedRowKeys:q})]})};var me=e.attachPropertiesToComponent(ne,{Filter:te,Table:fe,useEasyTablRef:ie,useEasyTable:re,setEnabledInitRequest:function e(n){J.set(n,false)}});export{me as EasyTable};
|
|
23
23
|
//# sourceMappingURL=index.js.map
|