@flatbiz/antd 4.5.51 → 4.5.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/button-operate/index.js +1 -1
- package/esm/button-operate/index.js.map +1 -1
- package/esm/copy-wrapper/index.css +0 -0
- package/esm/copy-wrapper/index.js +6 -0
- package/esm/copy-wrapper/index.js.map +1 -0
- package/esm/delete-node/index.js +1 -1
- package/esm/delete-node/index.js.map +1 -1
- package/esm/dialog-drawer/index.js +1 -1
- package/esm/dialog-drawer/index.js.map +1 -1
- package/esm/dialog-modal/index.js +1 -1
- package/esm/dialog-modal/index.js.map +1 -1
- package/esm/easy-table/index.css +1 -1
- package/esm/easy-table/index.js +2 -2
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-card/index.js +1 -1
- package/esm/editable-card/index.js.map +1 -1
- package/esm/fba-app/index.js +1 -1
- package/esm/fba-app/index.js.map +1 -1
- package/esm/full-screen/index.css +1 -0
- package/esm/full-screen/index.js +5 -0
- package/esm/full-screen/index.js.map +1 -0
- package/esm/icon-wrapper/index.js +1 -1
- package/esm/icon-wrapper/index.js.map +1 -1
- package/esm/index.js +3 -1
- package/esm/selector-wrapper/index.js +1 -1
- package/esm/selector-wrapper/index.js.map +1 -1
- package/esm/table-cell-render/index.js +1 -1
- package/esm/table-cell-render/index.js.map +1 -1
- package/esm/tag-list-render/index.js +1 -1
- package/esm/tag-list-render/index.js.map +1 -1
- 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 +1 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/index.d.ts +105 -9
- package/package.json +3 -2
|
@@ -9,5 +9,5 @@ import './../dialog-confirm/index.css';
|
|
|
9
9
|
import './../dialog-modal/index.css';
|
|
10
10
|
import './index.css';
|
|
11
11
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
12
|
-
import r from"@ant-design/icons/es/icons/MoreOutlined";import{_ as e,a as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isUndefined as
|
|
12
|
+
import r from"@ant-design/icons/es/icons/MoreOutlined";import{_ as e,a as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isUndefined as t}from"@dimjs/lang/cjs/is-undefined";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isPlainObject as o}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as l}from"@dimjs/lang/cjs/is-promise";import{hooks as p}from"@wove/react/cjs/hooks";import{Popover as a,Tooltip as c,Divider as u,Space as d,Popconfirm as m,Button as f}from"antd";import{isValidElement as v,Fragment as j,useState as h,useMemo as g,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 w,jsxs as P}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@flatbiz/utils";import"../index-83bede1b.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/uuid";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 C=["text","onClick","needConfirm","confirmMessage","popconfirmProps","hoverTips","color","tipsType","type","isFold"];var b=function r(e){if(e.hoverTips){if(e.tipsType==="popover"){return w(a,{content:e.hoverTips,zIndex:1e3,children:w("span",{children:e.content})})}return w(c,{title:e.hoverTips,zIndex:1e3,children:w("span",{children:e.content})})}if(v(e.content)){return w(j,{children:e.content})}return w("span",{children:e.content})};var z=function a(c){var j=h(false),z=j[0],O=j[1];var F=p.useCallbackRef((function(r,e){var i=r.onClick==null?void 0:r.onClick(e);if(i&&l(i)){O(true);return i.finally((function(){O(false)}))}return}));var I=c.operateList.filter((function(r){if(!r)return false;if(v(r)){var e,i,t;if(((e=r.props)==null?void 0:e["hidden"])===true)return false;if(((i=r.props)==null?void 0:i["v-hidden"])===true)return false;var n=(t=r.props)==null?void 0:t["v-permission"];if(s(n)){return T.hasPermission(n)}return true}if(o(r)){if(!T.hasPermission(r["permission"])){return false}if(Object.prototype.hasOwnProperty.call(r,"show")){return r["show"]}else if(Object.prototype.hasOwnProperty.call(r,"hidden")){return!r["hidden"]}return true}return false}));var M=g((function(){return I.filter((function(r){if(v(r)){return true}return!r["isFold"]}))}),[I]);var N=g((function(){var r=I.filter((function(r){if(v(r)){return false}return r["isFold"]}));var i=[];r.forEach((function(r){var t=e({},r);delete t.isFold;i.push(t)}));return i}),[I]);var _=g((function(){if(c.size==="small")return 0;return c.gap===undefined?10:c.gap}),[c.gap,c.size]);var L=g((function(){if(c.size==="small")return 0;return!c.split?_:0}),[_,c.size,c.split]);var B=g((function(){if(c.size==="small")return null;return c.split?w(u,{type:"vertical"}):null}),[c.size,c.split]);return w("div",{className:n("table-operate",c.className),style:c.style,children:P(d,e({split:B,size:L,wrap:t(c.wrap)?true:c.wrap},c.spaceProps,{children:[M.map((function(r,t){if(r&&v(r)){return w(b,{content:r,hoverTips:r.hoverTips,tipsType:r.tipsType},t)}var n=r.text,o=r.onClick,s=r.needConfirm,l=r.confirmMessage,p=r.popconfirmProps,a=r.hoverTips,c=r.color,u=r.tipsType,d=r.type;r.isFold;var f=i(r,C);var j=d||"link";if(s&&!f.disabled){var h=c?false:true;return y(m,e({okText:"确定",cancelText:"取消",trigger:["click"],placement:"topRight",arrow:true,destroyTooltipOnHide:true},p,{title:l,onConfirm:F.bind(null,r),key:t,okButtonProps:{loading:z},onOpenChange:function r(e){if(!e){O(false)}},onCancel:function r(e){e==null||e.stopPropagation()}}),w(k,e({danger:h},f,{onClick:function r(e){e.stopPropagation()},type:j,children:w(b,{content:n,hoverTips:a,tipsType:u},t)})))}return y(k,e({loadingPosition:"center"},f,{color:c,type:j,onClick:function r(e){e.stopPropagation();return o==null?void 0:o(e)},key:t}),w(b,{content:n,hoverTips:a,tipsType:r.tipsType}))})),N.length>0?w(x,e({menuList:N,placement:"bottom"},c.dropdownMenuProps,{children:w(f,{type:"link",className:"fold-more-button",onClick:function r(e){e.stopPropagation()},children:c.foldIcon?c.foldIcon:w(r,{})})})):null]}))})};z.defaultProps={split:true};export{z as ButtonOperate,b as ButtonOperateItemContent};
|
|
13
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 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 /** 是否显示按钮,优先级高于 hidden */\n show?: boolean;\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 if (Object.prototype.hasOwnProperty.call(item, 'show')) {\n return item['show'];\n } else if (Object.prototype.hasOwnProperty.call(item, 'hidden')) {\n return !item['hidden'];\n }\n return true;\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 // 多余字段渲染到react dom上,出现警告\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 color={color}\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","Object","prototype","hasOwnProperty","call","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 /** 是否显示按钮,优先级高于 hidden */\n show?: boolean;\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 /**\n * 按钮布局尺寸\n * ```\n * 1. 设置为small后,gap、split 配置失效\n * ```\n */\n size?: 'small' | 'default';\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 if (Object.prototype.hasOwnProperty.call(item, 'show')) {\n return item['show'];\n } else if (Object.prototype.hasOwnProperty.call(item, 'hidden')) {\n return !item['hidden'];\n }\n return true;\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 spaceGap = useMemo(() => {\n if (props.size === 'small') return 0;\n return props.gap === undefined ? 10 : props.gap;\n }, [props.gap, props.size]);\n\n const spaceSize = useMemo(() => {\n if (props.size === 'small') return 0;\n return !props.split ? spaceGap : 0;\n }, [spaceGap, props.size, props.split]);\n\n const spaceSplit = useMemo(() => {\n if (props.size === 'small') return null;\n return props.split ? <Divider type=\"vertical\" /> : null;\n }, [props.size, props.split]);\n\n return (\n <div className={classNames('table-operate', props.className)} style={props.style}>\n <Space\n split={spaceSplit}\n size={spaceSize}\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 // 多余字段渲染到react dom上,出现警告\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 color={color}\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","Object","prototype","hasOwnProperty","call","viewList","useMemo","foldList","filterList","forEach","target","_extends","isFold","push","spaceGap","size","gap","undefined","spaceSize","split","spaceSplit","Divider","type","className","_classNames","style","_jsxs","Space","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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"}
|
|
File without changes
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
import './../icon-wrapper/index.css';
|
|
3
|
+
import './index.css';
|
|
4
|
+
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
5
|
+
import i from"@ant-design/icons/es/icons/CopyOutlined";import r from"@ant-design/icons/es/icons/CheckOutlined";import{_ as e}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{Flex as o,message as t}from"antd";import n from"copy-to-clipboard";import{useState as l,useEffect as c,useMemo as s,Fragment as p}from"react";import{IconWrapper as a}from"../icon-wrapper/index.js";import{jsx as f,jsxs as m}from"react/jsx-runtime";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-undefined";var u=function u(y){var d=l(false),v=d[0],h=d[1];var x=function i(){if(v)return;h(true);var r=typeof y.copyText==="function"?y.copyText():y.copyText;n(r);if(y.copyAfterMsg){void t.success(y.copyAfterMsg)}};c((function(){if(v){setTimeout((function(){h(false)}),1e3)}}),[v]);var T=s((function(){if(y.hiddenTips)return undefined;if(typeof y.hoverTips==="function"){return y.hoverTips(v)}if(y.hoverTips)return y.hoverTips;return"复制"}),[y,v]);if(!y.text){return f(a,{hoverTips:T,wrapperStyle:{display:"inline-flex"},text:v?f(r,{style:e({color:"var(--color-primary)"},y.iconStyle)}):y.icon?f(p,{children:y.icon}):f(i,{style:e({color:"var(--color-primary)"},y.iconStyle)}),size:"small",onClick:x})}return m(o,{align:"center",gap:5,style:{alignItems:"center"},children:[y.iconPosition!=="left"?f("div",{children:y.text}):null,f(a,{hoverTips:T,wrapperStyle:{display:"inline-flex"},text:v?f(r,{style:e({color:"var(--color-primary)"},y.iconStyle)}):y.icon?f(p,{children:y.icon}):f(i,{style:e({color:"var(--color-primary)"},y.iconStyle)}),size:"small",onClick:x}),y.iconPosition==="left"?f("div",{children:y.text}):null]})};export{u as CopyWrapper};
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/copy-wrapper/copy.tsx"],"sourcesContent":["import { CheckOutlined, CopyOutlined } from '@ant-design/icons';\nimport { Flex, message } from 'antd';\nimport copy from 'copy-to-clipboard';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { Fragment, useEffect, useMemo, useState } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\nexport type CopyWrapperProps = {\n copyText: string | (() => string);\n /** 复制后提示消息 */\n copyAfterMsg?: string;\n /** 复制鼠标悬浮提示\n * ```\n * hoverTips={(trigger) => {\n * return trigger ? '复制成功' : '复制数据';\n * }}\n * ```\n */\n hoverTips?: string | ((trigger) => string);\n /** 设置icon后失效 */\n iconStyle?: CSSProperties;\n /** 自定义文本,显示在复制图标前或后 */\n text?: ReactNode;\n\n hiddenTips?: boolean;\n /** 自定义复制icon图标 */\n icon?: ReactNode;\n /** 复制图标位置,text 为空时,此配置无效 */\n iconPosition?: 'left' | 'right';\n};\n\nexport const CopyWrapper = (props: CopyWrapperProps) => {\n const [trigger, setTrigger] = useState(false);\n\n const onClick = () => {\n if (trigger) return;\n setTrigger(true);\n const copyText = typeof props.copyText === 'function' ? props.copyText() : props.copyText;\n copy(copyText);\n if (props.copyAfterMsg) {\n void message.success(props.copyAfterMsg);\n }\n };\n\n useEffect(() => {\n if (trigger) {\n setTimeout(() => {\n setTrigger(false);\n }, 1000);\n }\n }, [trigger]);\n\n const hoverTips = useMemo(() => {\n if (props.hiddenTips) return undefined;\n if (typeof props.hoverTips === 'function') {\n return props.hoverTips(trigger);\n }\n if (props.hoverTips) return props.hoverTips;\n return '复制';\n }, [props, trigger]);\n\n if (!props.text) {\n return (\n <IconWrapper\n hoverTips={hoverTips}\n wrapperStyle={{ display: 'inline-flex' }}\n text={\n trigger ? (\n <CheckOutlined style={{ color: 'var(--color-primary)', ...props.iconStyle }} />\n ) : props.icon ? (\n <Fragment>{props.icon}</Fragment>\n ) : (\n <CopyOutlined style={{ color: 'var(--color-primary)', ...props.iconStyle }} />\n )\n }\n size=\"small\"\n onClick={onClick}\n />\n );\n }\n\n return (\n <Flex align=\"center\" gap={5} style={{ alignItems: 'center' }}>\n {props.iconPosition !== 'left' ? <div>{props.text}</div> : null}\n <IconWrapper\n hoverTips={hoverTips}\n wrapperStyle={{ display: 'inline-flex' }}\n text={\n trigger ? (\n <CheckOutlined style={{ color: 'var(--color-primary)', ...props.iconStyle }} />\n ) : props.icon ? (\n <Fragment>{props.icon}</Fragment>\n ) : (\n <CopyOutlined style={{ color: 'var(--color-primary)', ...props.iconStyle }} />\n )\n }\n size=\"small\"\n onClick={onClick}\n />\n {props.iconPosition === 'left' ? <div>{props.text}</div> : null}\n </Flex>\n );\n};\n"],"names":["CopyWrapper","props","_useState","useState","trigger","setTrigger","onClick","copyText","copy","copyAfterMsg","message","success","useEffect","setTimeout","hoverTips","useMemo","hiddenTips","undefined","text","_jsx","IconWrapper","wrapperStyle","display","_CheckOutlined","style","_extends","color","iconStyle","icon","Fragment","children","_CopyOutlined","size","_jsxs","Flex","align","gap","alignItems","iconPosition"],"mappings":";wfA+BaA,EAAc,SAAdA,EAAeC,GAC1B,IAAAC,EAA8BC,EAAS,OAAhCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAE1B,IAAMI,EAAU,SAAVA,IACJ,GAAIF,EAAS,OACbC,EAAW,MACX,IAAME,SAAkBN,EAAMM,WAAa,WAAaN,EAAMM,WAAaN,EAAMM,SACjFC,EAAKD,GACL,GAAIN,EAAMQ,aAAc,MACjBC,EAAQC,QAAQV,EAAMQ,aAC7B,GAGFG,GAAU,WACR,GAAIR,EAAS,CACXS,YAAW,WACTR,EAAW,MACZ,GAAE,IACL,CACF,GAAG,CAACD,IAEJ,IAAMU,EAAYC,GAAQ,WACxB,GAAId,EAAMe,WAAY,OAAOC,UAC7B,UAAWhB,EAAMa,YAAc,WAAY,CACzC,OAAOb,EAAMa,UAAUV,EACzB,CACA,GAAIH,EAAMa,UAAW,OAAOb,EAAMa,UAClC,MAAO,IACT,GAAG,CAACb,EAAOG,IAEX,IAAKH,EAAMiB,KAAM,CACf,OACEC,EAACC,EAAW,CACVN,UAAWA,EACXO,aAAc,CAAEC,QAAS,eACzBJ,KACEd,EACEe,EAAAI,EAAA,CAAeC,MAAKC,EAAA,CAAIC,MAAO,wBAA2BzB,EAAM0B,aAC9D1B,EAAM2B,KACRT,EAACU,EAAQ,CAAAC,SAAE7B,EAAM2B,OAEjBT,EAAAY,EAAA,CAAcP,MAAKC,EAAA,CAAIC,MAAO,wBAA2BzB,EAAM0B,aAGnEK,KAAK,QACL1B,QAASA,GAGf,CAEA,OACE2B,EAACC,EAAI,CAACC,MAAM,SAASC,IAAK,EAAGZ,MAAO,CAAEa,WAAY,UAAWP,UAC1D7B,EAAMqC,eAAiB,OAASnB,EAAA,MAAA,CAAAW,SAAM7B,EAAMiB,OAAc,KAC3DC,EAACC,EAAW,CACVN,UAAWA,EACXO,aAAc,CAAEC,QAAS,eACzBJ,KACEd,EACEe,EAAAI,EAAA,CAAeC,MAAKC,EAAA,CAAIC,MAAO,wBAA2BzB,EAAM0B,aAC9D1B,EAAM2B,KACRT,EAACU,EAAQ,CAAAC,SAAE7B,EAAM2B,OAEjBT,EAAAY,EAAA,CAAcP,MAAKC,EAAA,CAAIC,MAAO,wBAA2BzB,EAAM0B,aAGnEK,KAAK,QACL1B,QAASA,IAEVL,EAAMqC,eAAiB,OAASnB,EAAA,MAAA,CAAAW,SAAM7B,EAAMiB,OAAc,OAGjE"}
|
package/esm/delete-node/index.js
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
import './../icon-wrapper/index.css';
|
|
3
3
|
import './index.css';
|
|
4
4
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
5
|
-
import e from"@ant-design/icons/es/icons/CloseCircleFilled";import
|
|
5
|
+
import e from"@ant-design/icons/es/icons/CloseCircleFilled";import o from"@ant-design/icons/es/icons/DeleteOutlined";import{hooks as i}from"@wove/react/cjs/hooks";import{useState as r,useRef as n,Fragment as s}from"react";import{IconWrapper as t}from"../icon-wrapper/index.js";import{jsx as c}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-c0dbec57.js";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-undefined";import"antd";var l=function l(m){var a=r(false),u=a[0],f=a[1];var p=n();var d=i.useDebounceClick((function(e){e.stopPropagation();if(!u){f(true);p.current=setTimeout((function(){f(false)}),3e3)}else{clearTimeout(p.current);f(false);m.onDelete()}}),300);if(m.hidden)return c(s,{});return c(t,{className:m.className,style:m.style,icon:!u?m.icon?m.icon:c(o,{}):m.confirmIcon?m.confirmIcon:c(e,{style:{color:"red"}}),onClick:d,size:"small"})};export{l as DeleteNode};
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/delete-node/delete-node.tsx"],"sourcesContent":["import { CloseCircleFilled, DeleteOutlined } from '@ant-design/icons';\nimport { hooks } from '@wove/react';\nimport { CSSProperties, Fragment, ReactElement, useRef, useState } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\n/** 删除节点,点击后会弹出确认框 */\nexport const DeleteNode = (props: {\n onDelete: () => void;\n /** 默认图标 */\n icon?: ReactElement;\n /** 确认图标 */\n confirmIcon?: ReactElement;\n /** 是否隐藏 */\n hidden?: boolean;\n style?: CSSProperties;\n className?: string;\n}) => {\n const [status, setStatus] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout>();\n\n const onClick = hooks.useDebounceClick(() => {\n if (!status) {\n setStatus(true);\n timeoutRef.current = setTimeout(() => {\n setStatus(false);\n }, 3000);\n } else {\n clearTimeout(timeoutRef.current);\n setStatus(false);\n props.onDelete();\n }\n }, 300);\n\n if (props.hidden) return <Fragment />;\n\n return (\n <IconWrapper\n className={props.className}\n style={props.style}\n icon={\n !status ? (\n props.icon ? (\n props.icon\n ) : (\n <DeleteOutlined />\n )\n ) : props.confirmIcon ? (\n props.confirmIcon\n ) : (\n <CloseCircleFilled style={{ color: 'red' }} />\n )\n }\n onClick={onClick}\n size=\"small\"\n />\n );\n};\n"],"names":["DeleteNode","props","_useState","useState","status","setStatus","timeoutRef","useRef","onClick","_hooks","useDebounceClick","current","setTimeout","clearTimeout","onDelete","hidden","_jsx","Fragment","IconWrapper","className","style","icon","_DeleteOutlined","confirmIcon","_CloseCircleFilled","color","size"],"mappings":";ycAMaA,EAAa,SAAbA,EAAcC,GAWzB,IAAAC,EAA4BC,EAAS,OAA9BC,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxB,IAAMI,EAAaC,IAEnB,IAAMC,EAAUC,EAAMC,kBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/delete-node/delete-node.tsx"],"sourcesContent":["import { CloseCircleFilled, DeleteOutlined } from '@ant-design/icons';\nimport { hooks } from '@wove/react';\nimport { CSSProperties, Fragment, ReactElement, useRef, useState } from 'react';\nimport { IconWrapper } from '../icon-wrapper';\n\n/** 删除节点,点击后会弹出确认框 */\nexport const DeleteNode = (props: {\n onDelete: () => void;\n /** 默认图标 */\n icon?: ReactElement;\n /** 确认图标 */\n confirmIcon?: ReactElement;\n /** 是否隐藏 */\n hidden?: boolean;\n style?: CSSProperties;\n className?: string;\n}) => {\n const [status, setStatus] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout>();\n\n const onClick = hooks.useDebounceClick((event) => {\n event.stopPropagation();\n if (!status) {\n setStatus(true);\n timeoutRef.current = setTimeout(() => {\n setStatus(false);\n }, 3000);\n } else {\n clearTimeout(timeoutRef.current);\n setStatus(false);\n props.onDelete();\n }\n }, 300);\n\n if (props.hidden) return <Fragment />;\n\n return (\n <IconWrapper\n className={props.className}\n style={props.style}\n icon={\n !status ? (\n props.icon ? (\n props.icon\n ) : (\n <DeleteOutlined />\n )\n ) : props.confirmIcon ? (\n props.confirmIcon\n ) : (\n <CloseCircleFilled style={{ color: 'red' }} />\n )\n }\n onClick={onClick}\n size=\"small\"\n />\n );\n};\n"],"names":["DeleteNode","props","_useState","useState","status","setStatus","timeoutRef","useRef","onClick","_hooks","useDebounceClick","event","stopPropagation","current","setTimeout","clearTimeout","onDelete","hidden","_jsx","Fragment","IconWrapper","className","style","icon","_DeleteOutlined","confirmIcon","_CloseCircleFilled","color","size"],"mappings":";ycAMaA,EAAa,SAAbA,EAAcC,GAWzB,IAAAC,EAA4BC,EAAS,OAA9BC,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxB,IAAMI,EAAaC,IAEnB,IAAMC,EAAUC,EAAMC,kBAAiB,SAACC,GACtCA,EAAMC,kBACN,IAAKR,EAAQ,CACXC,EAAU,MACVC,EAAWO,QAAUC,YAAW,WAC9BT,EAAU,MACX,GAAE,IACL,KAAO,CACLU,aAAaT,EAAWO,SACxBR,EAAU,OACVJ,EAAMe,UACR,CACD,GAAE,KAEH,GAAIf,EAAMgB,OAAQ,OAAOC,EAACC,EAAQ,CAAE,GAEpC,OACED,EAACE,EAAW,CACVC,UAAWpB,EAAMoB,UACjBC,MAAOrB,EAAMqB,MACbC,MACGnB,EACCH,EAAMsB,KACJtB,EAAMsB,KAENL,EAAAM,EAAA,CAAiB,GAEjBvB,EAAMwB,YACRxB,EAAMwB,YAENP,EAAAQ,EAAA,CAAmBJ,MAAO,CAAEK,MAAO,SAGvCnB,QAASA,EACToB,KAAK,SAGX"}
|
|
@@ -6,5 +6,5 @@ import './../types/index.css';
|
|
|
6
6
|
import './../fba-utils/index.css';
|
|
7
7
|
import './index.css';
|
|
8
8
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
9
|
-
import{isString as e}from"@dimjs/lang/cjs/is-string";import{_ as r,a as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isPromise as o}from"@dimjs/lang/cjs/is-promise";import{hooks as n}from"@wove/react/cjs/hooks";import{dom as i}from"@flatbiz/utils";import{Form as a,Space as l,Drawer as d}from"antd";import{useState as s,useMemo as c}from"react";import{createRoot as
|
|
9
|
+
import{isString as e}from"@dimjs/lang/cjs/is-string";import{_ as r,a as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isPromise as o}from"@dimjs/lang/cjs/is-promise";import{hooks as n}from"@wove/react/cjs/hooks";import{dom as i}from"@flatbiz/utils";import{Form as a,Space as l,Drawer as d}from"antd";import{useState as s,useMemo as c}from"react";import{createRoot as u}from"react-dom/client";import{ButtonWrapper as m}from"../button-wrapper/index.js";import{C as p}from"../index-83bede1b.js";import{fbaHooks as f}from"../fba-hooks/index.js";import{u as v,C as j}from"../context-1f2093c6.js";import{jsx as h,jsxs as w}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/utils/cjs/class-names";import"../fba-utils/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";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"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@wove/react/cjs/create-ctx";var x=["divElement","elementId","onOk","onCancel","content","configProviderProps","okText","cancelText","okButtonExtraProps","cancelButtonExtraProps","operatePosition","operateRender","width","okHidden","cancelHidden","extra"];var y=function e(i){var u;var v=i.divElement,y=i.elementId,g=i.onOk,k=i.onCancel,C=i.content,P=i.configProviderProps,b=i.okText,_=i.cancelText,E=i.okButtonExtraProps,B=i.cancelButtonExtraProps,F=i.operatePosition,I=F===void 0?"footer":F,R=i.operateRender,W=i.width,H=i.okHidden,O=i.cancelHidden,D=i.extra,T=t(i,x);var z=s(true),S=z[0],Y=z[1];var A=s(),L=A[0],M=A[1];var N=a.useForm(),U=N[0];var q=f.useResponsivePoint()||"";var G=s({}),J=G[0],K=G[1];var Q=n.useCallbackRef((function(){try{delete window[y]}catch(e){}Y(false)}));f.useEffectCustom((function(){window[y]=Q}),[Q]);var V=n.useCallbackRef((function(e){if(k){var r=k(U,e);if(r&&o(r)){return r.then(Q)}}return Q()}));var X=n.useCallbackRef((function(e){if(g){var r=g(U,e);if(r&&o(r)){return r.then(Q)}}return Q()}));var Z=f.useMemoCustom((function(){if(R){return R(U,J)}var e=H||(E==null?void 0:E.hidden);var t=H||(E==null?void 0:E.hidden);var o=w(l,{children:[t?null:h(m,r({},B,{onClick:V,children:_||"取消"})),e?null:h(m,r({type:"primary"},E,{onClick:X,children:b||"提交"}))]});if(!H||!O){return o}return null}),[J]);var $=typeof D==="function"?D(U):D;var ee=function e(r){M(r)};var re=c((function(){if(!q)return undefined;if(["xs","sm"].includes(q)){return{width:"90%",maxWidth:"90%"}}if(W){return{width:W,maxWidth:"calc(100% - 200px)"}}return{width:"40%",maxWidth:"calc(100% - 200px)"}}),[q,W]);var te=function e(r){K(r)};var oe=c((function(){return typeof C==="function"?C(U,{onClose:Q}):C}),[]);return h(j,{value:{onClose:Q,updateBodyStyle:ee,rerenderFooter:te},children:h(p,r({},P,{children:h(d,r({maskClosable:true,destroyOnClose:true,onClose:Q,contentWrapperStyle:{maxWidth:re==null?void 0:re.maxWidth},footer:I==="footer"?Z:null},T,{width:re==null?void 0:re.width,styles:r({},T.styles,{body:r({},L,(u=T.styles)==null?void 0:u.body)}),extra:I==="header"?Z:$,open:S,getContainer:v,children:oe}))}))})};var g={open:function e(t){var o=i.bodyAppendDivElement(),n=o.divElement,a=o.elementId;window["__dialog_drawer_elementId"]=a;var l=u(n);l.render(h(y,r({},t,{divElement:n,elementId:a})));return{close:function e(){var r,t;(r=(t=window)[a])==null||r.call(t)}}},close:function r(){try{var t,o;var n=window["__dialog_drawer_elementId"];if(e(n))(t=(o=window)[n])==null||t.call(o)}catch(e){}},useDialogDrawer:function e(){var r=v();return{rerenderFooter:function e(t){r.rerenderFooter(t)}}}};export{g as dialogDrawer};
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/dialog-drawer/dialog-drawer.tsx"],"sourcesContent":["import { isPromise, isString } from '@dimjs/lang';\nimport { dom, TNoopDefine, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Drawer, DrawerProps, Form, FormInstance, Space } from 'antd';\nimport { CSSProperties, ReactElement, ReactNode, useMemo, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { ConfigProviderWrapper, ConfigProviderWrapperProps } from '../config-provider-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { BodyAppendDivElementProps } from '../_utils/dom';\nimport { CtxProvider, useDialogDrawerCtx } from './context';\n\nexport type DialogDrawerProps = Omit<\n DrawerProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'open' | 'open' | 'footer' | 'extra'\n> & {\n okText?: string | ReactElement;\n cancelText?: string | ReactElement;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n configProviderProps?: ConfigProviderWrapperProps;\n\n okButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children' | 'loading'>;\n cancelButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children'>;\n okHidden?: boolean;\n cancelHidden?: boolean;\n /** 设置操作区域位置 */\n operatePosition?: 'header' | 'footer';\n /** 右上角自定义内容,如果operatePosition=header,此设置无效 */\n extra?: ReactNode | ((form: FormInstance) => ReactElement);\n /**\n * ```\n * 1. 自定义弹框操作区域,通过 operatePosition 配置可以自定义位置\n * 2. extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据\n * ```\n */\n operateRender?: (form: FormInstance, extraData?: TPlainObject) => ReactElement;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogDrawerProps) => {\n const {\n divElement,\n elementId,\n onOk,\n onCancel,\n content,\n configProviderProps,\n okText,\n cancelText,\n okButtonExtraProps,\n cancelButtonExtraProps,\n operatePosition = 'footer',\n operateRender,\n width,\n okHidden,\n cancelHidden,\n extra,\n ...otherProps\n } = props;\n const [open, setOpen] = useState(true);\n const [innerBodyStyle, setInnerBodyStyle] = useState<CSSProperties>();\n const [form] = Form.useForm();\n const screenType = fbaHooks.useResponsivePoint() || '';\n const [footerExtraData, setFooterExtraData] = useState<TPlainObject>({});\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[elementId] = onClose;\n }, [onClose]);\n\n const onCancelHandle = hooks.useCallbackRef((e) => {\n if (onCancel) {\n const response = onCancel(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const newOperateRender = fbaHooks.useMemoCustom(() => {\n if (operateRender) {\n return operateRender(form, footerExtraData);\n }\n\n const okHiddenNew = okHidden || okButtonExtraProps?.hidden;\n const cancelHiddenNew = okHidden || okButtonExtraProps?.hidden;\n\n const operateGroup = (\n <Space>\n {cancelHiddenNew ? null : (\n <ButtonWrapper {...cancelButtonExtraProps} onClick={onCancelHandle}>\n {cancelText || '取消'}\n </ButtonWrapper>\n )}\n {okHiddenNew ? null : (\n <ButtonWrapper type=\"primary\" {...okButtonExtraProps} onClick={onOkHandle}>\n {okText || '提交'}\n </ButtonWrapper>\n )}\n </Space>\n );\n if (!okHidden || !cancelHidden) {\n return operateGroup;\n }\n return null;\n }, [footerExtraData]);\n\n const extraRender = typeof extra === 'function' ? extra(form) : extra;\n\n const updateBodyStyle = (bodyStyle?: CSSProperties) => {\n setInnerBodyStyle(bodyStyle);\n };\n\n const customSize = useMemo(() => {\n if (!screenType) return undefined;\n if (['xs', 'sm'].includes(screenType)) {\n return {\n width: '90%',\n maxWidth: '90%',\n };\n }\n if (width) {\n return { width: width, maxWidth: 'calc(100% - 200px)' };\n }\n return { width: '40%', maxWidth: 'calc(100% - 200px)' };\n }, [screenType, width]);\n\n const rerenderFooter = (data) => {\n setFooterExtraData(data);\n };\n\n return (\n <CtxProvider value={{ onClose, updateBodyStyle, rerenderFooter }}>\n <ConfigProviderWrapper {...configProviderProps}>\n <Drawer\n maskClosable={true}\n destroyOnClose\n onClose={onClose}\n // 5.13.0 新增 styles.wrapper,并废弃 contentWrapperStyle drawerStyle maskStyle 属性\n contentWrapperStyle={{ maxWidth: customSize?.maxWidth }}\n footer={operatePosition === 'footer' ? newOperateRender : null}\n {...otherProps}\n width={customSize?.width}\n styles={{\n ...otherProps.styles,\n body: { ...innerBodyStyle, ...otherProps.styles?.body },\n // wrapper: {\n // maxWidth: customSize?.maxWidth,\n // ...otherProps.styles?.wrapper,\n // },\n }}\n extra={operatePosition === 'header' ? newOperateRender : extraRender}\n open={open}\n getContainer={divElement}\n >\n {typeof content === 'function' ? content(form, { onClose }) : content}\n </Drawer>\n </ConfigProviderWrapper>\n </CtxProvider>\n );\n};\n\n/**\n * 抽屉弹框\n * ```\n * 1. 可嵌套使用\n * 2. 为什么不推荐使用\n * dialogDrawer.open 打开的内容无法适配兼容自定义主题、无法适配兼容旧版浏览器、无法兼容国际化\n * 适配兼容旧版浏览器(https://ant-design.antgroup.com/docs/react/compatible-style-cn)\n * 3. 需要修改默认主题风格的场景,请使用\n * const { appDialogDrawer } = FbaApp.useDialogDrawer();\n * appDialogDrawer.open({})\n * ```\n */\nexport const dialogDrawer = {\n open: (props: DialogDrawerProps) => {\n const { divElement, elementId } = dom.bodyAppendDivElement();\n window['__dialog_drawer_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n window[elementId]?.();\n },\n };\n },\n /**\n * ```\n * 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个\n * 2. 多个弹框主动关闭,只能使用 dialogDrawer.open()返回值中的close\n * ```\n */\n close: () => {\n try {\n const elementId = window['__dialog_drawer_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (error) {\n //\n }\n },\n /**\n * ```\n * 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n * ```\n */\n useDialogDrawer: () => {\n const ctx = useDialogDrawerCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n};\n"],"names":["ModalRender","props","_otherProps$styles","divElement","elementId","onOk","onCancel","content","configProviderProps","okText","cancelText","okButtonExtraProps","cancelButtonExtraProps","_props$operatePositio","operatePosition","operateRender","width","okHidden","cancelHidden","extra","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","open","setOpen","_useState2","innerBodyStyle","setInnerBodyStyle","_Form$useForm","Form","useForm","form","screenType","fbaHooks","useResponsivePoint","_useState3","footerExtraData","setFooterExtraData","onClose","_hooks","useCallbackRef","window","error","useEffectCustom","onCancelHandle","e","response","_isPromise","then","onOkHandle","newOperateRender","useMemoCustom","okHiddenNew","hidden","cancelHiddenNew","operateGroup","_jsxs","Space","children","_jsx","ButtonWrapper","_extends","onClick","type","extraRender","updateBodyStyle","bodyStyle","customSize","useMemo","undefined","includes","maxWidth","rerenderFooter","data","CtxProvider","value","ConfigProviderWrapper","Drawer","maskClosable","destroyOnClose","contentWrapperStyle","footer","styles","body","getContainer","dialogDrawer","_dom$bodyAppendDivEle","dom","bodyAppendDivElement","root","createRoot","render","close","_window$elementId","_window","call","_window$elementId2","_window2","_isString","useDialogDrawer","ctx","useDialogDrawerCtx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/dialog-drawer/dialog-drawer.tsx"],"sourcesContent":["import { isPromise, isString } from '@dimjs/lang';\nimport { dom, TNoopDefine, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Drawer, DrawerProps, Form, FormInstance, Space } from 'antd';\nimport { CSSProperties, ReactElement, ReactNode, useMemo, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { ConfigProviderWrapper, ConfigProviderWrapperProps } from '../config-provider-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { BodyAppendDivElementProps } from '../_utils/dom';\nimport { CtxProvider, useDialogDrawerCtx } from './context';\n\nexport type DialogDrawerProps = Omit<\n DrawerProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'open' | 'open' | 'footer' | 'extra'\n> & {\n okText?: string | ReactElement;\n cancelText?: string | ReactElement;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n /**\n * content只在第一次弹起时,执行一次\n */\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n configProviderProps?: ConfigProviderWrapperProps;\n\n okButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children' | 'loading'>;\n cancelButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children'>;\n okHidden?: boolean;\n cancelHidden?: boolean;\n /** 设置操作区域位置 */\n operatePosition?: 'header' | 'footer';\n /** 右上角自定义内容,如果operatePosition=header,此设置无效 */\n extra?: ReactNode | ((form: FormInstance) => ReactElement);\n /**\n * ```\n * 1. 自定义弹框操作区域,通过 operatePosition 配置可以自定义位置\n * 2. extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据\n * ```\n */\n operateRender?: (form: FormInstance, extraData?: TPlainObject) => ReactElement;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogDrawerProps) => {\n const {\n divElement,\n elementId,\n onOk,\n onCancel,\n content,\n configProviderProps,\n okText,\n cancelText,\n okButtonExtraProps,\n cancelButtonExtraProps,\n operatePosition = 'footer',\n operateRender,\n width,\n okHidden,\n cancelHidden,\n extra,\n ...otherProps\n } = props;\n const [open, setOpen] = useState(true);\n const [innerBodyStyle, setInnerBodyStyle] = useState<CSSProperties>();\n const [form] = Form.useForm();\n const screenType = fbaHooks.useResponsivePoint() || '';\n const [footerExtraData, setFooterExtraData] = useState<TPlainObject>({});\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[elementId] = onClose;\n }, [onClose]);\n\n const onCancelHandle = hooks.useCallbackRef((e) => {\n if (onCancel) {\n const response = onCancel(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const newOperateRender = fbaHooks.useMemoCustom(() => {\n if (operateRender) {\n return operateRender(form, footerExtraData);\n }\n\n const okHiddenNew = okHidden || okButtonExtraProps?.hidden;\n const cancelHiddenNew = okHidden || okButtonExtraProps?.hidden;\n\n const operateGroup = (\n <Space>\n {cancelHiddenNew ? null : (\n <ButtonWrapper {...cancelButtonExtraProps} onClick={onCancelHandle}>\n {cancelText || '取消'}\n </ButtonWrapper>\n )}\n {okHiddenNew ? null : (\n <ButtonWrapper type=\"primary\" {...okButtonExtraProps} onClick={onOkHandle}>\n {okText || '提交'}\n </ButtonWrapper>\n )}\n </Space>\n );\n if (!okHidden || !cancelHidden) {\n return operateGroup;\n }\n return null;\n }, [footerExtraData]);\n\n const extraRender = typeof extra === 'function' ? extra(form) : extra;\n\n const updateBodyStyle = (bodyStyle?: CSSProperties) => {\n setInnerBodyStyle(bodyStyle);\n };\n\n const customSize = useMemo(() => {\n if (!screenType) return undefined;\n if (['xs', 'sm'].includes(screenType)) {\n return {\n width: '90%',\n maxWidth: '90%',\n };\n }\n if (width) {\n return { width: width, maxWidth: 'calc(100% - 200px)' };\n }\n return { width: '40%', maxWidth: 'calc(100% - 200px)' };\n }, [screenType, width]);\n\n const rerenderFooter = (data) => {\n setFooterExtraData(data);\n };\n\n // content 只会在第一次渲染\n const contentFt = useMemo(() => {\n return typeof content === 'function' ? content(form, { onClose }) : content;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <CtxProvider value={{ onClose, updateBodyStyle, rerenderFooter }}>\n <ConfigProviderWrapper {...configProviderProps}>\n <Drawer\n maskClosable={true}\n destroyOnClose\n onClose={onClose}\n // 5.13.0 新增 styles.wrapper,并废弃 contentWrapperStyle drawerStyle maskStyle 属性\n contentWrapperStyle={{ maxWidth: customSize?.maxWidth }}\n footer={operatePosition === 'footer' ? newOperateRender : null}\n {...otherProps}\n width={customSize?.width}\n styles={{\n ...otherProps.styles,\n body: { ...innerBodyStyle, ...otherProps.styles?.body },\n // wrapper: {\n // maxWidth: customSize?.maxWidth,\n // ...otherProps.styles?.wrapper,\n // },\n }}\n extra={operatePosition === 'header' ? newOperateRender : extraRender}\n open={open}\n getContainer={divElement}\n >\n {contentFt}\n </Drawer>\n </ConfigProviderWrapper>\n </CtxProvider>\n );\n};\n\n/**\n * 抽屉弹框\n * ```\n * 1. 可嵌套使用\n * 2. 为什么不推荐使用\n * dialogDrawer.open 打开的内容无法适配兼容自定义主题、无法适配兼容旧版浏览器、无法兼容国际化\n * 适配兼容旧版浏览器(https://ant-design.antgroup.com/docs/react/compatible-style-cn)\n * 3. 需要修改默认主题风格的场景,请使用\n * const { appDialogDrawer } = FbaApp.useDialogDrawer();\n * appDialogDrawer.open({})\n * ```\n */\nexport const dialogDrawer = {\n open: (props: DialogDrawerProps) => {\n const { divElement, elementId } = dom.bodyAppendDivElement();\n window['__dialog_drawer_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n window[elementId]?.();\n },\n };\n },\n /**\n * ```\n * 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个\n * 2. 多个弹框主动关闭,只能使用 dialogDrawer.open()返回值中的close\n * ```\n */\n close: () => {\n try {\n const elementId = window['__dialog_drawer_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (error) {\n //\n }\n },\n /**\n * ```\n * 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n * ```\n */\n useDialogDrawer: () => {\n const ctx = useDialogDrawerCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n};\n"],"names":["ModalRender","props","_otherProps$styles","divElement","elementId","onOk","onCancel","content","configProviderProps","okText","cancelText","okButtonExtraProps","cancelButtonExtraProps","_props$operatePositio","operatePosition","operateRender","width","okHidden","cancelHidden","extra","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","open","setOpen","_useState2","innerBodyStyle","setInnerBodyStyle","_Form$useForm","Form","useForm","form","screenType","fbaHooks","useResponsivePoint","_useState3","footerExtraData","setFooterExtraData","onClose","_hooks","useCallbackRef","window","error","useEffectCustom","onCancelHandle","e","response","_isPromise","then","onOkHandle","newOperateRender","useMemoCustom","okHiddenNew","hidden","cancelHiddenNew","operateGroup","_jsxs","Space","children","_jsx","ButtonWrapper","_extends","onClick","type","extraRender","updateBodyStyle","bodyStyle","customSize","useMemo","undefined","includes","maxWidth","rerenderFooter","data","contentFt","CtxProvider","value","ConfigProviderWrapper","Drawer","maskClosable","destroyOnClose","contentWrapperStyle","footer","styles","body","getContainer","dialogDrawer","_dom$bodyAppendDivEle","dom","bodyAppendDivElement","root","createRoot","render","close","_window$elementId","_window","call","_window$elementId2","_window2","_isString","useDialogDrawer","ctx","useDialogDrawerCtx"],"mappings":"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"}
|
|
@@ -7,5 +7,5 @@ import './../fba-utils/index.css';
|
|
|
7
7
|
import './../flex-layout/index.css';
|
|
8
8
|
import './index.css';
|
|
9
9
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
10
|
-
import{isString as e}from"@dimjs/lang/cjs/is-string";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{_ as o,a as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isPromise as i}from"@dimjs/lang/cjs/is-promise";import{hooks as n}from"@wove/react/cjs/hooks";import{dom as l}from"@flatbiz/utils";import{useSize as a}from"ahooks";import{Form as d,Modal as s}from"antd";import{useState as
|
|
10
|
+
import{isString as e}from"@dimjs/lang/cjs/is-string";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{_ as o,a as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isPromise as i}from"@dimjs/lang/cjs/is-promise";import{hooks as n}from"@wove/react/cjs/hooks";import{dom as l}from"@flatbiz/utils";import{useSize as a}from"ahooks";import{Form as d,Modal as s}from"antd";import{useState as u,useMemo as m}from"react";import{createRoot as c}from"react-dom/client";import{ButtonWrapper as f}from"../button-wrapper/index.js";import{C as p}from"../index-83bede1b.js";import{fbaHooks as h}from"../fba-hooks/index.js";import{FlexLayout as v}from"../flex-layout/index.js";import{createCtx as g}from"@wove/react/cjs/create-ctx";import{jsx as j,jsxs as y}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"../fba-utils/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";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"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";var w=g(),k=w[0],x=w[1];var C=["title","titleExtra","divElement","elementId","onOk","onCancel","okButtonProps","cancelButtonProps","content","configProviderProps","className","okHidden","cancelHidden","footer","cancelText","okText","size","bodyHeight"];var b=function e(c){var g,w;var k=c.title,b=c.titleExtra,_=c.divElement,P=c.elementId,E=c.onOk,H=c.onCancel,B=c.okButtonProps,I=c.cancelButtonProps,z=c.content,F=c.configProviderProps,O=c.className,R=c.okHidden,N=c.cancelHidden,T=c.footer,D=c.cancelText,M=c.okText,S=c.size,Y=c.bodyHeight,q=r(c,C);var A=u(true),L=A[0],U=A[1];var G=d.useForm(),J=G[0];var K=a(document.querySelector("html"));var Q=h.useResponsivePoint()||"";var V=u({}),W=V[0],X=V[1];var Z=n.useCallbackRef((function(){try{delete window[P]}catch(e){}U(false)}));h.useEffectCustom((function(){window[P]=Z}),[Z]);var $=n.useCallbackRef((function(e){if(H){var t=H(J,e);if(t&&i(t)){return t.then(Z)}}return Z()}));var ee=n.useCallbackRef((function(e){if(E){var t=E(J,e);if(t&&i(t)){return t.then(Z)}}return Z()}));var te=n.useCallbackRef((function(){l.removeBodyChild("#"+P);c.afterClose==null||c.afterClose()}));var oe=h.useMemoCustom((function(){if(T){return typeof T==="function"?T(J,W):T}if(N&&R||T===null){return null}return[j(f,o({},I,{onClick:$,hidden:N,children:D||"取消"}),"0"),j(f,o({type:"primary"},B,{onClick:ee,hidden:R,children:M||"提交"}),"1")].filter(Boolean)}),[W]);var re=m((function(){if(!(K!=null&&K.height)||!Q)return undefined;var e=["xs","sm"].includes(Q);if(e){return{width:"90%"}}if(S=="large"){return{height:(K==null?void 0:K.height)*.7,width:e?"90%":K.width*.6}}if(S=="small"){var t=K.width*.3;return{height:(K==null?void 0:K.height)*.4,width:e?"90%":t<470?470:t}}if(S=="middle"){return{height:(K==null?void 0:K.height)*.4,width:e?"90%":K.width*.5}}return undefined}),[K==null?void 0:K.height,K==null?void 0:K.width,Q,S]);var ie=t("v-dialog-modal",{"v-dialog-modal-title-extra":!!b},O);var ne=function e(t){X(t)};var le=((g=q.styles)==null||(g=g.body)==null?void 0:g.height)||Y;var ae=m((function(){return typeof z==="function"?z(J,{onClose:Z}):z}),[]);return j(x,{value:{rerenderFooter:ne},children:j(p,o({},F,{children:j(s,o({title:b?y(v,{direction:"horizontal",fullIndex:0,children:[j("span",{children:k}),b]}):k,maskClosable:true,centered:true,onCancel:Z,destroyOnClose:true,width:re==null?void 0:re.width},q,{footer:oe,styles:o({},q.styles,{body:o({height:le||(re==null?void 0:re.height),maxHeight:"calc(100vh - 200px)"},(w=q.styles)==null?void 0:w.body)}),className:ie,open:L,afterClose:te,getContainer:_,children:ae}))}))})};var _={open:function e(t){var r=l.bodyAppendDivElement(),i=r.divElement,n=r.elementId;window["__dialog_modal_elementId"]=n;var a=c(i);a.render(j(b,o({},t,{divElement:i,elementId:n})));return{close:function e(){var t,o;(t=(o=window)[n])==null||t.call(o)}}},close:function t(){try{var o,r;var i=window["__dialog_modal_elementId"];if(e(i))(o=(r=window)[i])==null||o.call(r)}catch(e){}},useDialogModal:function e(){var t=k();return{rerenderFooter:function e(o){t.rerenderFooter(o)}}}};export{_ as dialogModal};
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/dialog-modal/context.ts","@flatbiz/antd/src/dialog-modal/dialog-modal.tsx"],"sourcesContent":["import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useDialogModalCtx, DialogModalCtxProvider] = createCtx<{\n /** 重新渲染footer */\n rerenderFooter: (data?: TPlainObject) => void;\n}>();\n","import { isPromise, isString } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { BodyAppendDivElementProps, dom, TNoopDefine, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Form, FormInstance, Modal, ModalProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { ConfigProviderWrapper, ConfigProviderWrapperProps } from '../config-provider-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { DialogModalCtxProvider, useDialogModalCtx } from './context';\nimport './style.less';\n\nexport type DialogModalProps = Omit<\n ModalProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'open' | 'open' | 'okButtonProps' | 'cancelButtonProps' | 'footer'\n> & {\n /**\n * 内置尺寸,根据比例固定高度、宽度,默认:无\n * ```\n * 1. 如果自定义了width、bodyHeight属性,size中的height、width将对应失效\n * 2. 不传、传null值可取消内置尺寸\n * ```\n */\n size?: 'small' | 'middle' | 'large' | null;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n configProviderProps?: ConfigProviderWrapperProps;\n okHidden?: boolean;\n cancelHidden?: boolean;\n okButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n cancelButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n /**\n * 设置modal body height 为当前窗口height的百分比,例如:30\n * @deprecated 已失效,可通过size属性设置\n * ```\n * 1. 最大值:80\n * 1. 设置bodyStyle.height 后,bodyHeightPercent失效\n * ```\n */\n bodyHeightPercent?: number;\n titleExtra?: ReactElement;\n /**\n * null则隐藏footer\n * ```\n * extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据\n * ```\n */\n footer?:\n | null\n | ReactElement\n | ReactElement[]\n | ((form: FormInstance, extraData?: TPlainObject) => ReactElement);\n /** 内容高度,为styles.body.height快捷配置,优先级低于styles.body.height */\n bodyHeight?: number;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogModalProps) => {\n const {\n title,\n titleExtra,\n divElement,\n elementId,\n onOk,\n onCancel,\n okButtonProps,\n cancelButtonProps,\n content,\n configProviderProps,\n className,\n okHidden,\n cancelHidden,\n footer,\n cancelText,\n okText,\n size,\n bodyHeight,\n ...otherProps\n } = props;\n\n const [open, setOpen] = useState(true);\n const [form] = Form.useForm();\n const htmlSize = useSize(document.querySelector('html'));\n const screenType = fbaHooks.useResponsivePoint() || '';\n const [footerExtraData, setFooterExtraData] = useState<TPlainObject>({});\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[elementId] = onClose;\n }, [onClose]);\n\n const onCancelHandle = hooks.useCallbackRef((e) => {\n if (onCancel) {\n const response = onCancel(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onAfterClose = hooks.useCallbackRef(() => {\n dom.removeBodyChild(`#${elementId}`);\n props.afterClose?.();\n });\n\n const footerNew = fbaHooks.useMemoCustom(() => {\n if (footer) {\n return typeof footer === 'function' ? footer(form, footerExtraData) : footer;\n }\n if ((cancelHidden && okHidden) || footer === null) {\n return null;\n }\n return [\n <ButtonWrapper key=\"0\" {...cancelButtonProps} onClick={onCancelHandle} hidden={cancelHidden}>\n {cancelText || '取消'}\n </ButtonWrapper>,\n <ButtonWrapper key=\"1\" type=\"primary\" {...okButtonProps} onClick={onOkHandle} hidden={okHidden}>\n {okText || '提交'}\n </ButtonWrapper>,\n ].filter(Boolean);\n }, [footerExtraData]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n\n if (isXsSm) {\n return { width: '90%' };\n }\n\n if (size == 'large') {\n return {\n height: htmlSize?.height * 0.7,\n width: isXsSm ? '90%' : htmlSize.width * 0.6,\n };\n }\n if (size == 'small') {\n const width = htmlSize.width * 0.3;\n return {\n height: htmlSize?.height * 0.4,\n width: isXsSm ? '90%' : width < 470 ? 470 : width,\n };\n }\n\n if (size == 'middle') {\n return {\n height: htmlSize?.height * 0.4,\n width: isXsSm ? '90%' : htmlSize.width * 0.5,\n };\n }\n return undefined;\n }, [htmlSize?.height, htmlSize?.width, screenType, size]);\n\n const classNameNew = classNames(\n 'v-dialog-modal',\n { 'v-dialog-modal-title-extra': !!titleExtra },\n className,\n );\n\n const rerenderFooter = (data) => {\n setFooterExtraData(data);\n };\n\n const bodyHeightNew = otherProps.styles?.body?.height || bodyHeight;\n\n return (\n <DialogModalCtxProvider value={{ rerenderFooter }}>\n <ConfigProviderWrapper {...configProviderProps}>\n <Modal\n title={\n titleExtra ? (\n <FlexLayout direction=\"horizontal\" fullIndex={0}>\n <span>{title}</span>\n {titleExtra}\n </FlexLayout>\n ) : (\n title\n )\n }\n maskClosable={true}\n centered={true}\n onCancel={onClose}\n destroyOnClose\n width={customSize?.width}\n {...otherProps}\n footer={footerNew}\n styles={{\n ...otherProps.styles,\n body: {\n height: bodyHeightNew || customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n ...otherProps.styles?.body,\n },\n }}\n className={classNameNew}\n open={open}\n afterClose={onAfterClose}\n getContainer={divElement}\n >\n {typeof content === 'function' ? content(form, { onClose }) : content}\n </Modal>\n </ConfigProviderWrapper>\n </DialogModalCtxProvider>\n );\n};\n\n/**\n * 居中弹框\n * ```\n * 1. 可嵌套使用\n * 2. 为什么不推荐使用\n * dialogModal.open 打开的内容无法适配兼容自定义主题、无法适配兼容旧版浏览器、无法兼容国际化\n * 适配兼容旧版浏览器(https://ant-design.antgroup.com/docs/react/compatible-style-cn)\n * 3. 需要修改默认主题风格的场景,请使用\n * const { appDialogModal } = FbaApp.useDialogModal();\n * appDialogModal.open({})\n * 4. size属性可使用预设的弹窗尺寸(默认值middle),如果不使用内置尺寸可设置 size = null\n * ```\n */\nexport const dialogModal = {\n open: (props: DialogModalProps) => {\n const { divElement, elementId } = dom.bodyAppendDivElement();\n window['__dialog_modal_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n window[elementId]?.();\n },\n };\n },\n /**\n * ```\n * 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个\n * 2. 多个弹框主动关闭,只能使用 dialogModal.open()返回值中的close\n * ```\n */\n close: () => {\n try {\n const elementId = window['__dialog_modal_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (error) {\n //\n }\n },\n /**\n * ```\n * 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n * ```\n */\n useDialogModal: () => {\n const ctx = useDialogModalCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n};\n"],"names":["_createCtx","_createCtx2","useDialogModalCtx","DialogModalCtxProvider","ModalRender","props","_otherProps$styles","_otherProps$styles2","title","titleExtra","divElement","elementId","onOk","onCancel","okButtonProps","cancelButtonProps","content","configProviderProps","className","okHidden","cancelHidden","footer","cancelText","okText","size","bodyHeight","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","open","setOpen","_Form$useForm","Form","useForm","form","htmlSize","useSize","document","querySelector","screenType","fbaHooks","useResponsivePoint","_useState2","footerExtraData","setFooterExtraData","onClose","_hooks","useCallbackRef","window","error","useEffectCustom","onCancelHandle","e","response","_isPromise","then","onOkHandle","onAfterClose","dom","removeBodyChild","afterClose","footerNew","useMemoCustom","_jsx","ButtonWrapper","_extends","onClick","hidden","children","type","filter","Boolean","customSize","useMemo","height","undefined","isXsSm","includes","width","classNameNew","_classNames","rerenderFooter","data","bodyHeightNew","styles","body","value","ConfigProviderWrapper","Modal","_jsxs","FlexLayout","direction","fullIndex","maskClosable","centered","destroyOnClose","maxHeight","getContainer","dialogModal","_dom$bodyAppendDivEle","bodyAppendDivElement","root","createRoot","render","close","_window$elementId","_window","call","_window$elementId2","_window2","_isString","useDialogModal","ctx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/dialog-modal/context.ts","@flatbiz/antd/src/dialog-modal/dialog-modal.tsx"],"sourcesContent":["import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useDialogModalCtx, DialogModalCtxProvider] = createCtx<{\n /** 重新渲染footer */\n rerenderFooter: (data?: TPlainObject) => void;\n}>();\n","import { isPromise, isString } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { BodyAppendDivElementProps, dom, TNoopDefine, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Form, FormInstance, Modal, ModalProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { ConfigProviderWrapper, ConfigProviderWrapperProps } from '../config-provider-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { DialogModalCtxProvider, useDialogModalCtx } from './context';\nimport './style.less';\n\nexport type DialogModalProps = Omit<\n ModalProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'open' | 'open' | 'okButtonProps' | 'cancelButtonProps' | 'footer'\n> & {\n /**\n * 内置尺寸,根据比例固定高度、宽度,默认:无\n * ```\n * 1. 如果自定义了width、bodyHeight属性,size中的height、width将对应失效\n * 2. 不传、传null值可取消内置尺寸\n * ```\n */\n size?: 'small' | 'middle' | 'large' | null;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n /**\n * content只在第一次弹起时,执行一次\n */\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n configProviderProps?: ConfigProviderWrapperProps;\n okHidden?: boolean;\n cancelHidden?: boolean;\n okButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n cancelButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n /**\n * 设置modal body height 为当前窗口height的百分比,例如:30\n * @deprecated 已失效,可通过size属性设置\n * ```\n * 1. 最大值:80\n * 1. 设置bodyStyle.height 后,bodyHeightPercent失效\n * ```\n */\n bodyHeightPercent?: number;\n titleExtra?: ReactElement;\n /**\n * null则隐藏footer\n * ```\n * extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据\n * ```\n */\n footer?:\n | null\n | ReactElement\n | ReactElement[]\n | ((form: FormInstance, extraData?: TPlainObject) => ReactElement);\n /** 内容高度,为styles.body.height快捷配置,优先级低于styles.body.height */\n bodyHeight?: number;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogModalProps) => {\n const {\n title,\n titleExtra,\n divElement,\n elementId,\n onOk,\n onCancel,\n okButtonProps,\n cancelButtonProps,\n content,\n configProviderProps,\n className,\n okHidden,\n cancelHidden,\n footer,\n cancelText,\n okText,\n size,\n bodyHeight,\n ...otherProps\n } = props;\n\n const [open, setOpen] = useState(true);\n const [form] = Form.useForm();\n const htmlSize = useSize(document.querySelector('html'));\n const screenType = fbaHooks.useResponsivePoint() || '';\n const [footerExtraData, setFooterExtraData] = useState<TPlainObject>({});\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[elementId] = onClose;\n }, [onClose]);\n\n const onCancelHandle = hooks.useCallbackRef((e) => {\n if (onCancel) {\n const response = onCancel(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onAfterClose = hooks.useCallbackRef(() => {\n dom.removeBodyChild(`#${elementId}`);\n props.afterClose?.();\n });\n\n const footerNew = fbaHooks.useMemoCustom(() => {\n if (footer) {\n return typeof footer === 'function' ? footer(form, footerExtraData) : footer;\n }\n if ((cancelHidden && okHidden) || footer === null) {\n return null;\n }\n return [\n <ButtonWrapper key=\"0\" {...cancelButtonProps} onClick={onCancelHandle} hidden={cancelHidden}>\n {cancelText || '取消'}\n </ButtonWrapper>,\n <ButtonWrapper key=\"1\" type=\"primary\" {...okButtonProps} onClick={onOkHandle} hidden={okHidden}>\n {okText || '提交'}\n </ButtonWrapper>,\n ].filter(Boolean);\n }, [footerExtraData]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n\n if (isXsSm) {\n return { width: '90%' };\n }\n\n if (size == 'large') {\n return {\n height: htmlSize?.height * 0.7,\n width: isXsSm ? '90%' : htmlSize.width * 0.6,\n };\n }\n if (size == 'small') {\n const width = htmlSize.width * 0.3;\n return {\n height: htmlSize?.height * 0.4,\n width: isXsSm ? '90%' : width < 470 ? 470 : width,\n };\n }\n\n if (size == 'middle') {\n return {\n height: htmlSize?.height * 0.4,\n width: isXsSm ? '90%' : htmlSize.width * 0.5,\n };\n }\n return undefined;\n }, [htmlSize?.height, htmlSize?.width, screenType, size]);\n\n const classNameNew = classNames(\n 'v-dialog-modal',\n { 'v-dialog-modal-title-extra': !!titleExtra },\n className,\n );\n\n const rerenderFooter = (data) => {\n setFooterExtraData(data);\n };\n\n const bodyHeightNew = otherProps.styles?.body?.height || bodyHeight;\n // content 只会在第一次渲染\n const contentFt = useMemo(() => {\n return typeof content === 'function' ? content(form, { onClose }) : content;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return (\n <DialogModalCtxProvider value={{ rerenderFooter }}>\n <ConfigProviderWrapper {...configProviderProps}>\n <Modal\n title={\n titleExtra ? (\n <FlexLayout direction=\"horizontal\" fullIndex={0}>\n <span>{title}</span>\n {titleExtra}\n </FlexLayout>\n ) : (\n title\n )\n }\n maskClosable={true}\n centered={true}\n onCancel={onClose}\n destroyOnClose\n width={customSize?.width}\n {...otherProps}\n footer={footerNew}\n styles={{\n ...otherProps.styles,\n body: {\n height: bodyHeightNew || customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n ...otherProps.styles?.body,\n },\n }}\n className={classNameNew}\n open={open}\n afterClose={onAfterClose}\n getContainer={divElement}\n >\n {contentFt}\n </Modal>\n </ConfigProviderWrapper>\n </DialogModalCtxProvider>\n );\n};\n\n/**\n * 居中弹框\n * ```\n * 1. 可嵌套使用\n * 2. 为什么不推荐使用\n * dialogModal.open 打开的内容无法适配兼容自定义主题、无法适配兼容旧版浏览器、无法兼容国际化\n * 适配兼容旧版浏览器(https://ant-design.antgroup.com/docs/react/compatible-style-cn)\n * 3. 需要修改默认主题风格的场景,请使用\n * const { appDialogModal } = FbaApp.useDialogModal();\n * appDialogModal.open({})\n * 4. size属性可使用预设的弹窗尺寸(默认值middle),如果不使用内置尺寸可设置 size = null\n * ```\n */\nexport const dialogModal = {\n open: (props: DialogModalProps) => {\n const { divElement, elementId } = dom.bodyAppendDivElement();\n window['__dialog_modal_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n window[elementId]?.();\n },\n };\n },\n /**\n * ```\n * 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个\n * 2. 多个弹框主动关闭,只能使用 dialogModal.open()返回值中的close\n * ```\n */\n close: () => {\n try {\n const elementId = window['__dialog_modal_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (error) {\n //\n }\n },\n /**\n * ```\n * 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n * ```\n */\n useDialogModal: () => {\n const ctx = useDialogModalCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n};\n"],"names":["_createCtx","_createCtx2","useDialogModalCtx","DialogModalCtxProvider","ModalRender","props","_otherProps$styles","_otherProps$styles2","title","titleExtra","divElement","elementId","onOk","onCancel","okButtonProps","cancelButtonProps","content","configProviderProps","className","okHidden","cancelHidden","footer","cancelText","okText","size","bodyHeight","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","open","setOpen","_Form$useForm","Form","useForm","form","htmlSize","useSize","document","querySelector","screenType","fbaHooks","useResponsivePoint","_useState2","footerExtraData","setFooterExtraData","onClose","_hooks","useCallbackRef","window","error","useEffectCustom","onCancelHandle","e","response","_isPromise","then","onOkHandle","onAfterClose","dom","removeBodyChild","afterClose","footerNew","useMemoCustom","_jsx","ButtonWrapper","_extends","onClick","hidden","children","type","filter","Boolean","customSize","useMemo","height","undefined","isXsSm","includes","width","classNameNew","_classNames","rerenderFooter","data","bodyHeightNew","styles","body","contentFt","value","ConfigProviderWrapper","Modal","_jsxs","FlexLayout","direction","fullIndex","maskClosable","centered","destroyOnClose","maxHeight","getContainer","dialogModal","_dom$bodyAppendDivEle","bodyAppendDivElement","root","createRoot","render","close","_window$elementId","_window","call","_window$elementId2","_window2","_isString","useDialogModal","ctx"],"mappings":"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"}
|
package/esm/easy-table/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.easy-table-table{border-radius:6px}.fba-easy-table-filter-fixed,.fba-easy-table-full,.fba-easy-table-pagination-fixed{display:flex;flex-direction:column;height:100%}.fba-easy-table-filter-fixed .easy-table-table,.fba-easy-table-full .easy-table-table,.fba-easy-table-pagination-fixed .easy-table-table{flex:1}.fba-easy-table-filter-fixed{overflow:hidden}.fba-easy-table-filter-fixed .easy-table-table{overflow-y:auto}.fba-easy-table-wrapper{display:flex;flex-direction:column;height:100%;overflow-x:hidden}.fba-easy-table-wrapper .fba-easy-table{flex:1;height:unset;overflow-y:auto}.fba-easy-table-pagination{background-color:var(--block-bg-color);box-shadow:0 0 17px rgba(0,0,0,.06);padding:15px 15px 20px;position:relative;z-index:2}.fba-easy-table-pagination .ant-pagination{justify-content:right;text-align:right}.fba-easy-table-wrapper-inline .easy-table-table{margin:0;padding:0}.fba-easy-table-wrapper-inline .easy-table-filter{margin:0;padding:0 0 15px}.easy-table-table{padding:10px 15px}.easy-table-filter{border-radius:6px;margin-bottom:10px;padding:10px 15px}.ett-empty-show-small .ant-table-placeholder .ant-empty{align-items:center;display:flex;justify-content:center;margin:0}.ett-empty-show-small .ant-table-placeholder .ant-empty-image{height:25px;margin:0;width:50px}.fold-operate-popiver.ant-popover .ant-popover-title{min-width:100px}
|
|
1
|
+
.easy-table-table{border-radius:6px}.fba-easy-table-filter-fixed,.fba-easy-table-full,.fba-easy-table-pagination-fixed{display:flex;flex-direction:column;height:100%}.fba-easy-table-filter-fixed .easy-table-table,.fba-easy-table-full .easy-table-table,.fba-easy-table-pagination-fixed .easy-table-table{flex:1}.fba-easy-table-filter-fixed{overflow:hidden}.fba-easy-table-filter-fixed .easy-table-table{overflow-y:auto}.fba-easy-table-wrapper{display:flex;flex-direction:column;height:100%;overflow-x:hidden}.fba-easy-table-wrapper .fba-easy-table{flex:1;height:unset;overflow-y:auto}.fba-easy-table-pagination{background-color:var(--block-bg-color);box-shadow:0 0 17px rgba(0,0,0,.06);padding:15px 15px 20px;position:relative;z-index:2}.fba-easy-table-pagination .ant-pagination{justify-content:right;text-align:right}.fba-easy-table-wrapper-inline .easy-table-table{margin:0;padding:0}.fba-easy-table-wrapper-inline .easy-table-filter{margin:0;padding:0 0 15px}.easy-table-table{padding:10px 15px}.easy-table-filter{border-radius:6px;margin-bottom:10px;padding:10px 15px}.ett-empty-show-small .ant-table-placeholder .ant-empty{align-items:center;display:flex;justify-content:center;margin:0}.ett-empty-show-small .ant-table-placeholder .ant-empty-image{height:25px;margin:0;width:50px}.fold-operate-popiver.ant-popover .ant-popover-title{min-width:100px}.fba-easy-table .form-formitem-gap-24{margin-bottom:-24px}.fba-easy-table .form-formitem-gap-24 .ant-form-item{margin-bottom:24px}.fba-easy-table .form-formitem-gap-15{margin-bottom:-15px}.fba-easy-table .form-formitem-gap-8{margin-bottom:-8px}.fba-easy-table .form-formitem-gap-5{margin-bottom:-5px}.fba-easy-table .form-formitem-gap-0{margin-bottom:0}
|
package/esm/easy-table/index.js
CHANGED
|
@@ -12,12 +12,12 @@ import './../box-grid/index.css';
|
|
|
12
12
|
import './../form-wrapper/index.css';
|
|
13
13
|
import './../pre-defined-class-name/index.css';
|
|
14
14
|
import './../form-grid/index.css';
|
|
15
|
-
import './../table-scrollbar/index.css';
|
|
16
15
|
import './../flex-layout/index.css';
|
|
16
|
+
import './../table-scrollbar/index.css';
|
|
17
17
|
import './../icon-wrapper/index.css';
|
|
18
18
|
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-c0dbec57.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 E from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as D}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"@dimjs/utils/cjs/uuid";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-83bede1b.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 E=w((function(){if(t.cacheKey){try{var e=window.frameElement;var n=(e==null?void 0:e.id)||"";return t.cacheKey+"_"+n}catch(e){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(E);var O=x((function(){if(E){var e=X.get(E);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(E,false);R(true);o=$.set(E,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||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(E);ae.setFieldsValue(r({},t.initialValues,D));if(W||!n){if(e){var i;void oe(r((i={},i[re.pageNo]=1,i[re.pageSize]=M,i),t.initialValues,D))}else{void oe(t.initialValues)}}else{$.set(E,t.initialValues||{})}}),[]);var le=p.useCallbackRef((function(e){$.remove(E);ae.resetFields();if(e){$.set(E,e);ae.setFieldsValue(e)}}));var se=p.useCallbackRef((function(e){$.set(E,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,D[re.pageSize]),t.initialValues,e);$.remove(E);ae.resetFields();if(e){ae.setFieldsValue(e)}void oe(n)}));var de=p.useCallbackRef((function(){return r({},D,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){var r;c(n);U.current=(r={},r[re.list]=n,r);t.onDataSourceChange==null||t.onDataSourceChange(U.current)},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:E,initSelectedRowKeys:A,children:n})},onChangeTableColumns:function e(n){ne(n)},getTableColumns:function e(){return te.current},loading:S,setEnabledInitRequest:function e(){J.set(E,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,D[re.pageSize])))}else{void oe(r({},n,ue(1,D[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:D[re.pageNo]||1,pageSize:D[re.pageSize]||M,total:h,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[re.pageNo,D,re.pageSize,E,M,t.pagination,h]);var xe=function e(n){B(n);j==null||j.onChange==null||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(E,a);void oe(a);(i=t.pagination)==null||i.onChange==null||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]=D[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:E,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(D(_)){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(E,{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 E=t.cacheKey,D=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(E);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:E,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[D.pageSize]=Y[D.pageSize]||M,e[D.pageNo]=1,e))}else{var n;A((n={},n[D.pageSize]=undefined,n[D.pageNo]=undefined,n))}}}),[l]);var ne=w((function(){if(G||l===false)return false;return r({showSizeChanger:true,current:Y[D.pageNo]||1,pageSize:Y[D.pageSize]||M,total:Q,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)}),[Y,D.pageNo,D.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[D.pageSize]=t.pageSize,o[D.pageNo]=t.current,o))}else{n.onChange==null||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:E,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};
|
|
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-c0dbec57.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 S,Space as b}from"antd";import{createContext as x,useState as R,Fragment as j,forwardRef as w,useMemo as z,useRef as K,useImperativeHandle as _,cloneElement as N,useContext as P,Children as T,useEffect as L}from"react";import{fbaHooks as q}from"../fba-hooks/index.js";import{PaginationWrapper as k}from"../pagination-wrapper/index.js";import{jsx as I,jsxs as V}from"react/jsx-runtime";import E from"@ant-design/icons/es/icons/DownOutlined";import D from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as O}from"react-is";import{BlockLayout as A}from"../block-layout/index.js";import{ButtonWrapper as B}from"../button-wrapper/index.js";import{EasyForm as M}from"../easy-form/index.js";import{FormGrid as W}from"../form-grid/index.js";import{FlexLayout as Q}from"../flex-layout/index.js";import{TableScrollbar as U}from"../table-scrollbar/index.js";import{IconWrapper as G}from"../icon-wrapper/index.js";import{SvgHttpView as H}from"../svg-http-view/index.js";import{TableTitleTooltip as Y}from"../table-title-tooltip/index.js";import{TipsWrapper as $}from"../tips-wrapper/index.js";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-83bede1b.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 J={set:function e(n,t){var i=J.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 X={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 Z={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 ee=x({onRequest:l,tableList:[],getEasyTableRef:function e(){}});var ne=function e(n){var t=R(n.initSelectedRowKeys||[]),r=t[0],i=t[1];var a=function e(t){i(t);n.onChange(t);if(n.cacheKey){Z.set(n.cacheKey,t)}};var o=I(j,{children:I(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 I(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 I(h,{content:o,title:I(g,{checked:r.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var te=w((function(t,i){var a;var o=q.useResponsivePoint();var l=R(),u=l[0],c=l[1];var g=R(0),h=g[0],F=g[1];var S=R(false),b=S[0],x=S[1];var j=t.columnFoldConfig;var w=t.asyncColumnRequest;var P=R(false),T=P[0],L=P[1];var E=z((function(){if(t.cacheKey){try{var e=window.frameElement;var n=(e==null?void 0:e.id)||"";return t.cacheKey+"_"+n}catch(e){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=J.get(E);var O=R((function(){if(E){var e=Z.get(E);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=K(false);var U=K();var G=K([]);var H=R(),Y=H[0],$=H[1];var te=K([]);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 S=function(){try{return i()}catch(e){return a(e)}};var b=function(e){try{x(false);if(t.onRequestErrorHandle){t.onRequestErrorHandle(e)}else{void C.error(e.message)}return S()}catch(e){return a(e)}};try{if(t.breforeRequest){var R=function(){try{return w.call(this)}catch(e){return b(e)}}.bind(this);var j=function(e){try{return i()}catch(e){return b(e)}};try{return Promise.resolve(t.breforeRequest(ae)).then((function(e){try{return R()}catch(e){return j(e)}}),j)}catch(z){j(z)}}function w(){X.set(E,false);x(true);o=J.set(E,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||t.onDataSourceChange(v);g=v;if(d){g=d(v)}if(f){h=f(v,G.current);$(h)}y=m(g,re.list);c(n(y)?y:[]);F(m(g,re.total));x(false);return S()}catch(e){return b(e)}}),b)}return w.call(this)}catch(K){b(K)}}))}));q.useEffectCustom((function(){var e=je();var n=X.get(E);ae.setFieldsValue(r({},t.initialValues,D));if(W||!n){if(e){var i;void oe(r((i={},i[re.pageNo]=1,i[re.pageSize]=M,i),t.initialValues,D))}else{void oe(t.initialValues)}}else{J.set(E,t.initialValues||{})}}),[]);var le=p.useCallbackRef((function(e){J.remove(E);ae.resetFields();if(e){J.set(E,e);ae.setFieldsValue(e)}}));var se=p.useCallbackRef((function(e){J.set(E,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,D[re.pageSize]),t.initialValues,e);J.remove(E);ae.resetFields();if(e){ae.setFieldsValue(e)}void oe(n)}));var de=p.useCallbackRef((function(){return r({},D,ae.getFieldsValue())}));var fe=p.useCallbackRef((function(){L(true)}));var me=p.useCallbackRef((function(){L(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){var r;c(n);U.current=(r={},r[re.list]=n,r);t.onDataSourceChange==null||t.onDataSourceChange(U.current)},columnFoldTriggerRender:function e(n,r){var i;if(((i=t.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return N(n,{onClick:fe})}var a=r.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));return I(ne,{dataList:a,onChange:xe,cacheKey:E,initSelectedRowKeys:A,children:n})},onChangeTableColumns:function e(n){$(n)},getTableColumns:function e(){return te.current},loading:b,setEnabledInitRequest:function e(){X.set(E,false)}}};_(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,D[re.pageSize])))}else{void oe(r({},n,ue(1,D[re.pageSize])))}};var Ce=f(t.isFull)?true:t.isFull;var Fe=o==="xs"?false:t.filterFixed;var Se=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 be=q.useMemoCustom((function(){return r({showSizeChanger:true,current:D[re.pageNo]||1,pageSize:D[re.pageSize]||M,total:h,showTotal:function e(n){return"共 "+n+" 条记录"}},t.pagination)}),[re.pageNo,D,re.pageSize,E,M,t.pagination,h]);var xe=function e(n){B(n);j==null||j.onChange==null||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);J.set(E,a);void oe(a);(i=t.pagination)==null||i.onChange==null||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]=D[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 I(ee.Provider,{value:{onSetBaseColumns:ge,onSetColumns:he,getEasyTableRef:pe,cacheKey:E,onRequest:oe,tableDataSource:u,tableTotal:h,loading:b,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:w}},children:t.paginationFixed?V("div",{className:we,style:ze,children:[I("div",{className:Se,children:Ke}),h>0&&I("div",{className:"fba-easy-table-pagination",children:I(k,r({size:"small"},be,{onChange:Re}))})]}):I("div",{className:we,style:t.style,children:I("div",{className:Se,children:Ke})})})}));var re=function e(n){var t=q.useResponsivePoint()||"md";var i=P(ee);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,S=i.onRequest,b=i.pageSize,x=i.getPaginationStatus,j=i.initialValues,w=i.form,K=i.onFormFinish;var _=typeof n.children==="function"?n.children(w):n.children;var N=g||"cover";var L=z((function(){if(O(_)){return T.toArray(_.props.children)}else{return T.toArray(_)}}),[_]);var k=R(false),Q=k[0],U=k[1];var G=p.useCallbackRef((function(){return new Promise((function(e,n){var t;J.remove(y);w.resetFields();w.setFieldsValue(j);if(f(c)||c){return Promise.resolve(w.validateFields()).then(function(e){try{if(x()){S(r((t={},t[F.pageNo]=1,t[F.pageSize]=b,t),j))}else{S(j)}return i.call(this)}catch(e){return n(e)}}.bind(this),n)}function i(){return e()}return i.call(this)}))}));var H=z((function(){var e=[!(a!=null&&a.hidden)?I(B,r({type:"primary",htmlType:"submit"},a,{children:(a==null?void 0:a.text)||"查询"}),"1"):null,!(o!=null&&o.hidden)?I(B,r({onClick:G},o,{children:(o==null?void 0:o.text)||"重置"}),"2"):null].filter(Boolean);var n=l==null?void 0:l(w);var t=n==null?void 0:n.rightList;var i=(n==null?void 0:n.leftList)||[];var s=e;if(t){if(N==="afterAppend"){s=[].concat(e,t)}else if(N==="beforeAppend"){s=[].concat(t,e)}else{s=t}}if(C.length>0){var u=I(B,{type:"link",style:{padding:"0"},onClick:function e(){U(!Q)},children:Q?V("span",{children:["收起",I(D,{style:{marginLeft:3,fontSize:12}})]}):V("span",{children:["展开",I(E,{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 L.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 I(W.Col,{children:e},n)})).filter(Boolean).concat(I(W.OperateCol,r({},n,{leftList:i,rightList:s}),999))}),[L,l,C,w,G,Q,a,o,N]);var Y=t==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return I(A,{className:d("easy-table-filter",v),style:m,children:I(M,r({form:w,autoComplete:"off",onFinish:K,className:u,style:n.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Y,children:n.isPure?_:I(W.Row,{gutter:[15,0],gridSize:n.formGridSize,children:H})}))})};var ie=function e(){var n=P(ee);return n.getEasyTableRef()};var ae=function e(){var n=P(ee);return{current:n.getEasyTableRef()}};var oe=function e(n){var t=R(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){Z.set(n.cacheKey,t)}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return I(j,{children:I(F,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:I(S,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var le=["tooltip","tipsWrapperProps","title"];var se=function e(n){return z((function(){var e=n.columns.map((function(e){var n=e.tooltip,t=e.tipsWrapperProps,a=e.title,o=i(e,le);if(typeof a==="string"&&t){if(typeof t==="string"){return r({},o,{title:I($,{tipType:"popover",popoverProps:{content:t},children:a})})}return r({},o,{title:I($,r({},t,{children:a}))})}if(typeof a==="string"&&!!n){return r({},o,{title:I(Y,{tooltip:n,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[n.columns])};var ue=function e(n){var t=n.columns;return q.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=V(Q,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[I("span",{children:r.title}),I("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:d==="drawer"?I(G,{onClick:n.onOpenColumnFoldModal,text:(o=n.columnFoldConfig)==null?void 0:o.text,size:"small",icon:((l=n.columnFoldConfig)==null?void 0:l.icon)||I(H,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:((s=n.columnFoldConfig)==null?void 0:s.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):I(ne,{dataList:n.foldColumnList,onChange:n.onChangeFoldColumnList,cacheKey:n.cacheKey,initSelectedRowKeys:n.showFoldKeyList,children:I(G,{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)||I(H,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return t}),[n.columns,n.columnFoldConfig])};var ce=function e(n){return z((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 de=function e(n){return z((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 I(B,{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 fe=["children","rowKey","pagination","isSync","title","actions"];var me=function e(n){var t;if(!n.title&&!((t=n.actions)!=null&&t.length)){return null}return V(Q,{fullIndex:0,direction:"horizontal",style:{marginBottom:10,alignItems:"center"},children:[n.title?I("div",{style:{fontWeight:400,fontSize:16},children:n.title}):null,I(b,{size:10,children:n.actions})]})};var pe=function e(n){var t=P(ee);var a=n.children,o=n.rowKey,l=n.pagination,f=n.isSync,m=n.title,v=n.actions,g=i(n,fe);var h=q.useResponsivePoint()||"";var y=K({});var C=R({}),F=C[0],b=C[1];var x=t.dynamicColumnsConfig,w=x.columnFoldConfig,_=x.onCloseColumnFoldModal,N=x.columnFoldOpen,T=x.onOpenColumnFoldModal,k=x.asyncColumnRequest,E=x.showFoldKeyList,D=x.onChangeShowFoldKeyList;var O=t.cacheKey,B=t.fieldNames,M=t.onRequest,W=t.tableDataSource,Q=t.pageSize,G=t.tableTotal,H=t.loading,Y=t.paginationFixed,$=t.onSetPaginationStatus;var X=J.get(O);q.useEffectCustom((function(){t.onSetBaseColumns(n.columns||[])}),[]);L((function(){if(k!=null&&k.length){var e=function e(){var t;var i=k[n];y.current=r({},y.current,(t={},t[i.dataIndex]={loading:true},t));b(y.current);i.onRequest().then((function(e){var n;y.current=r({},y.current,(n={},n[i.dataIndex]={loading:false,respData:e},n));b(y.current)})).catch((function(e){var n;console.error(e==null?void 0:e.message);y.current=r({},y.current,(n={},n[i.dataIndex]={loading:false},n));b(y.current)}))};for(var n=0;n<k.length;n++){e()}}}),[k]);var Z=q.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 ne=se({columns:[].concat(Z)});var te=Z.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));ne=ue({cacheKey:O,columns:ne,foldColumnList:te,showFoldKeyList:E,columnFoldConfig:w,onOpenColumnFoldModal:T,onChangeFoldColumnList:D});ne=ce({columns:ne,showFoldKeyList:E});ne=de({columns:ne,asyncColumnRequestResult:F});q.useEffectCustom((function(){$(l!==false)}),[l]);p.useUpdateEffect((function(){if(!Y){if(l!==false){var e;M((e={},e[B.pageSize]=X[B.pageSize]||Q,e[B.pageNo]=1,e))}else{var n;M((n={},n[B.pageSize]=undefined,n[B.pageNo]=undefined,n))}}}),[l]);var re=z((function(){if(Y||l===false)return false;return r({showSizeChanger:true,current:X[B.pageNo]||1,pageSize:X[B.pageSize]||Q,total:G,showTotal:function e(n){return"共 "+n+" 条记录"}},n.pagination)}),[X,B.pageNo,B.pageSize,Q,l,Y,n.pagination,G]);var ie=function e(t,r,i,a){if(a.action==="paginate"&&re){var o;M((o={},o[B.pageSize]=t.pageSize,o[B.pageNo]=t.current,o))}else{n.onChange==null||n.onChange(t,r,i,a)}};var ae=z((function(){if(!W)return undefined;if(W.length===0){return[]}if(typeof o==="string"&&u(W[0][o])){return W.map((function(e){e[o]=s();return e}))}return W}),[W,o]);ne=z((function(){return ne.map((function(e){if(!!e.fixed&&h==="xs"){e.fixed=undefined}if(!!e.defaultValue&&!e.render){e.render=function(n){return u(n)||n==""?e.defaultValue:n}}return e}))}),[ne,h]);var le=function e(){if(f&&!ae){return V(j,{children:[I(me,{title:m,actions:v}),a,I(S,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:o,columns:ne,loading:H},"1")]})}if(c()){return V(j,{children:[I(me,{title:m,actions:v}),a,I(S,r({size:"small",scroll:{x:"max-content"},bordered:true},g,{columns:ne,pagination:re,rowKey:o,onChange:ie,loading:H,dataSource:ae}),"2")]})}return V(j,{children:[I(me,{title:m,actions:v}),a,I(U,{children:I(S,r({size:"small",scroll:{x:"max-content"},bordered:true},g,{columns:ne,pagination:re,rowKey:o,onChange:ie,loading:H,dataSource:ae}),"3")})]})};return V(A,{className:d("easy-table-table",{"ett-empty-show-small":n.emptyShowSize==="small"},n.tableWrapperClassName),style:n.tableWrapperStyle,children:[le(),I(oe,{dataList:te,onClose:_,open:N,onChange:D,cacheKey:O,initSelectedRowKeys:E})]})};var ve=e.attachPropertiesToComponent(te,{Filter:re,Table:pe,useEasyTablRef:ae,useEasyTable:ie,setEnabledInitRequest:function e(n){X.set(n,false)}});export{ve as EasyTable};
|
|
23
23
|
//# sourceMappingURL=index.js.map
|