@flatbiz/antd 4.5.49 → 4.5.51

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.
@@ -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 o}from"@dimjs/lang/cjs/is-undefined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{isPlainObject as n}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as p}from"@dimjs/lang/cjs/is-promise";import{hooks as a}from"@wove/react/cjs/hooks";import{Popover as l,Tooltip as c,Space as d,Divider as m,Popconfirm as u,Button as f}from"antd";import{isValidElement as j,Fragment as v,useState as h,useMemo as y,createElement as g}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(l,{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(j(e.content)){return w(v,{children:e.content})}return w("span",{children:e.content})};var O=function l(c){var v=h(false),O=v[0],F=v[1];var z=a.useCallbackRef((function(r,e){var i=r.onClick==null?void 0:r.onClick(e);if(i&&p(i)){F(true);return i.finally((function(){F(false)}))}return}));var I=c.operateList.filter((function(r){if(!r)return false;if(j(r)){var e,i,o;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 t=(o=r.props)==null?void 0:o["v-permission"];if(s(t)){return T.hasPermission(t)}return true}if(n(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=y((function(){return I.filter((function(r){if(j(r)){return true}return!r["isFold"]}))}),[I]);var N=y((function(){var r=I.filter((function(r){if(j(r)){return false}return r["isFold"]}));var i=[];r.forEach((function(r){var o=e({},r);delete o.isFold;i.push(o)}));return i}),[I]);var _=c.gap===undefined?10:c.gap;var L=!c.split?_:0;return w("div",{className:t("table-operate",c.className),style:c.style,children:P(d,e({split:c.split?w(m,{type:"vertical"}):null,size:L,wrap:o(c.wrap)?true:c.wrap},c.spaceProps,{children:[M.map((function(r,o){if(r&&j(r)){return w(b,{content:r,hoverTips:r.hoverTips,tipsType:r.tipsType},o)}var t=r.text,n=r.onClick,s=r.needConfirm,p=r.confirmMessage,a=r.popconfirmProps,l=r.hoverTips,c=r.color,d=r.tipsType,m=r.type;r.isFold;var f=i(r,C);var v=m||"link";if(s&&!f.disabled){var h=c?false:true;return g(u,e({okText:"确定",cancelText:"取消",trigger:["click"],placement:"topRight",arrow:true,destroyTooltipOnHide:true},a,{title:p,onConfirm:z.bind(null,r),key:o,okButtonProps:{loading:O},onOpenChange:function r(e){if(!e){F(false)}},onCancel:function r(e){e==null||e.stopPropagation()}}),w(k,e({danger:h},f,{onClick:function r(e){e.stopPropagation()},type:v,children:w(b,{content:t,hoverTips:l,tipsType:d},o)})))}return g(k,e({loadingPosition:"center"},f,{type:v,onClick:function r(e){e.stopPropagation();return n==null?void 0:n(e)},key:o}),w(b,{content:t,hoverTips:l,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]}))})};O.defaultProps={split:true};export{O as ButtonOperate,b as ButtonOperateItemContent};
12
+ import r from"@ant-design/icons/es/icons/MoreOutlined";import{_ as e,a as i}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isUndefined as o}from"@dimjs/lang/cjs/is-undefined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{isPlainObject as n}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as p}from"@dimjs/lang/cjs/is-promise";import{hooks as a}from"@wove/react/cjs/hooks";import{Popover as l,Tooltip as c,Space as d,Divider as m,Popconfirm as u,Button as f}from"antd";import{isValidElement as j,Fragment as v,useState as h,useMemo as y,createElement as g}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(l,{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(j(e.content)){return w(v,{children:e.content})}return w("span",{children:e.content})};var O=function l(c){var v=h(false),O=v[0],F=v[1];var z=a.useCallbackRef((function(r,e){var i=r.onClick==null?void 0:r.onClick(e);if(i&&p(i)){F(true);return i.finally((function(){F(false)}))}return}));var I=c.operateList.filter((function(r){if(!r)return false;if(j(r)){var e,i,o;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 t=(o=r.props)==null?void 0:o["v-permission"];if(s(t)){return T.hasPermission(t)}return true}if(n(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=y((function(){return I.filter((function(r){if(j(r)){return true}return!r["isFold"]}))}),[I]);var N=y((function(){var r=I.filter((function(r){if(j(r)){return false}return r["isFold"]}));var i=[];r.forEach((function(r){var o=e({},r);delete o.isFold;i.push(o)}));return i}),[I]);var _=c.gap===undefined?10:c.gap;var L=!c.split?_:0;return w("div",{className:t("table-operate",c.className),style:c.style,children:P(d,e({split:c.split?w(m,{type:"vertical"}):null,size:L,wrap:o(c.wrap)?true:c.wrap},c.spaceProps,{children:[M.map((function(r,o){if(r&&j(r)){return w(b,{content:r,hoverTips:r.hoverTips,tipsType:r.tipsType},o)}var t=r.text,n=r.onClick,s=r.needConfirm,p=r.confirmMessage,a=r.popconfirmProps,l=r.hoverTips,c=r.color,d=r.tipsType,m=r.type;r.isFold;var f=i(r,C);var v=m||"link";if(s&&!f.disabled){var h=c?false:true;return g(u,e({okText:"确定",cancelText:"取消",trigger:["click"],placement:"topRight",arrow:true,destroyTooltipOnHide:true},a,{title:p,onConfirm:z.bind(null,r),key:o,okButtonProps:{loading:O},onOpenChange:function r(e){if(!e){F(false)}},onCancel:function r(e){e==null||e.stopPropagation()}}),w(k,e({danger:h},f,{onClick:function r(e){e.stopPropagation()},type:v,children:w(b,{content:t,hoverTips:l,tipsType:d},o)})))}return g(k,e({loadingPosition:"center"},f,{color:c,type:v,onClick:function r(e){e.stopPropagation();return n==null?void 0:n(e)},key:o}),w(b,{content:t,hoverTips:l,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]}))})};O.defaultProps={split:true};export{O 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 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\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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"}
@@ -5,5 +5,5 @@ import './../form-wrapper/index.css';
5
5
  import './../pre-defined-class-name/index.css';
6
6
  import './index.css';
7
7
  /*! @flatjs/forge MIT @flatbiz/antd */
8
- import{classNames as r}from"@dimjs/utils/cjs/class-names";import{a as e,_ as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isUndefinedOrNull as l}from"@flatbiz/utils";import{Form as m}from"antd";import{createContext as i,useContext as o,useMemo as a,Children as s,cloneElement as n}from"react";import{BoxGrid as p}from"../box-grid/index.js";import{fbaHooks as u}from"../fba-hooks/index.js";import{FormWrapper as d}from"../form-wrapper/index.js";import{preDefinedClassName as f}from"../pre-defined-class-name/index.js";import{jsx as c}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-number";import"ahooks";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";function x(){var r=i(undefined);function e(){var e=o(r);return e}return[e,r.Provider]}var v=x(),y=v[0],g=v[1];var h=["column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","formItemGap","isPure"];var I=function i(o){var x=u.useResponsivePoint()||"";var v=y();var I=o.column,b=o.forceColumn,j=o.children,F=o.width,N=o.gridGutter,W=o.labelWidth,G=o.labelItemVertical,w=o.labelAlign,C=o.formItemGap,A=C===void 0?"15":C,P=o.isPure,k=e(o,h);var B=a((function(){if(b){var r=24/b;return{xs:r,sm:r,md:r,lg:r,xl:r,xxl:r}}if(!I){return{xs:24,sm:12,md:12,lg:8,xl:8,xxl:6}}var e={1:{xs:24,sm:24,md:24,lg:24,xl:24,xxl:24},2:{xs:24,sm:12,md:12,lg:12,xl:12,xxl:12},3:{xs:24,sm:12,md:12,lg:8,xl:8,xxl:8},4:{xs:24,sm:12,md:12,lg:6,xl:6,xxl:6}};return e[I]}),[I,b]);var S=function r(){var e=s.toArray(j).filter((function(r){return!!r}));return e.map((function(r,e){var l;var i=r.type["domTypeName"];var o=undefined;if(i==="FormItemText"||i==="FormItemSpan"||i==="FormItemWrapper"||i==="BoxGridCol"||i==="EasyForm"){o=r.props["span"];if(o){if(x==="xs"){o=24}else if(x==="sm"){o=o>12?o:12}}}if(i==="BoxGridCol"||i==="FormItemSpan"){if(i==="FormItemSpan"&&r.props.hidden){return null}return n(r,t({},r.props,B,{span:o,key:e}))}var a=(l=r.props)==null||(l=l.style)==null?void 0:l.display;var s=false;if(i==="FormItemText"||i==="FormItemHidden"||i==="FormItemWrapper"||i==="FormItemWrapperDependencies"||r.type===m.Item||a==="none"){s=true}if(i==="FormItemWrapper"||r.props.noStyle){s=false}return c(p.Col,t({},B,{span:o,removeWrapper:s,children:r}),e)})).filter(Boolean)};var T=a((function(){if(["xs","sm"].includes(x)||!F){return{}}return{width:F}}),[x,F]);var V=l(N)?[15,0]:N;var R=a((function(){if(["xs"].includes(x)){return"left"}return w}),[w,x]);var E=a((function(){return f.getFormLayoutClassName({labelWidth:W,labelItemVertical:G,labelAlign:R,formItemGap:A,className:k.className})}),[W,G,R,A,k.className]);return c(g,{value:{isNested:true},children:v!=null&&v.isNested?c("div",{style:t({},T,k.style),className:r("easy-form",{"easy-form-pure":P},"easy-form-nested",E),children:P?j:c(p.Row,{gutter:V,children:S()})}):c(d,t({},k,{labelWidth:W,labelAlign:R,labelItemVertical:G,formItemGap:A,style:t({},T,k.style),className:r("easy-form",{"easy-form-pure":P},E),autoComplete:"off",children:P?j:c(p.Row,{gutter:V,children:S()})}))})};I["domTypeName"]="EasyForm";export{I as EasyForm};
8
+ import{classNames as r}from"@dimjs/utils/cjs/class-names";import{a as e,_ as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isUndefinedOrNull as m}from"@flatbiz/utils";import{Form as l}from"antd";import{useMemo as o,Children as a,cloneElement as i}from"react";import{BoxGrid as s}from"../box-grid/index.js";import{fbaHooks as n}from"../fba-hooks/index.js";import{FormWrapper as p}from"../form-wrapper/index.js";import{preDefinedClassName as u}from"../pre-defined-class-name/index.js";import{jsx as f}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-number";import"ahooks";import"@dimjs/lang/cjs/is-array";import"@wove/react/cjs/hooks";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";var d=["column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","formItemGap","isPure"];var c=function c(x){var v=n.useResponsivePoint()||"";var y=l.useFormInstance();var I=x.column,g=x.forceColumn,h=x.children,b=x.width,j=x.gridGutter,F=x.labelWidth,W=x.labelItemVertical,G=x.labelAlign,N=x.formItemGap,w=N===void 0?"15":N,C=x.isPure,A=e(x,d);var k=o((function(){if(g){var r=24/g;return{xs:r,sm:r,md:r,lg:r,xl:r,xxl:r}}if(!I){return{xs:24,sm:12,md:12,lg:8,xl:8,xxl:6}}var e={1:{xs:24,sm:24,md:24,lg:24,xl:24,xxl:24},2:{xs:24,sm:12,md:12,lg:12,xl:12,xxl:12},3:{xs:24,sm:12,md:12,lg:8,xl:8,xxl:8},4:{xs:24,sm:12,md:12,lg:6,xl:6,xxl:6}};return e[I]}),[I,g]);var B=function r(){var e=a.toArray(h).filter((function(r){return!!r}));return e.map((function(r,e){var m;var o=r.type["domTypeName"];var a=undefined;if(o==="FormItemText"||o==="FormItemSpan"||o==="FormItemWrapper"||o==="BoxGridCol"||o==="EasyForm"){a=r.props["span"];if(a){if(v==="xs"){a=24}else if(v==="sm"){a=a>12?a:12}}}if(o==="BoxGridCol"||o==="FormItemSpan"){if(o==="FormItemSpan"&&r.props.hidden){return null}return i(r,t({},r.props,k,{span:a,key:e}))}var n=(m=r.props)==null||(m=m.style)==null?void 0:m.display;var p=false;if(o==="FormItemText"||o==="FormItemHidden"||o==="FormItemWrapper"||o==="FormItemWrapperDependencies"||r.type===l.Item||n==="none"){p=true}if(o==="FormItemWrapper"||r.props.noStyle){p=false}return f(s.Col,t({},k,{span:a,removeWrapper:p,children:r}),e)})).filter(Boolean)};var P=o((function(){if(["xs","sm"].includes(v)||!b){return{}}return{width:b}}),[v,b]);var S=m(j)?[15,0]:j;var T=o((function(){if(["xs"].includes(v)){return"left"}return G}),[G,v]);var V=o((function(){return u.getFormLayoutClassName({labelWidth:F,labelItemVertical:W,labelAlign:T,formItemGap:w,className:A.className})}),[F,W,T,w,A.className]);if(y){return f("div",{style:t({},P,A.style),className:r("easy-form",{"easy-form-pure":C},"easy-form-nested",V),children:C?h:f(s.Row,{gutter:S,children:B()})})}return f(p,t({},A,{labelWidth:F,labelAlign:T,labelItemVertical:W,formItemGap:w,style:t({},P,A.style),className:r("easy-form",{"easy-form-pure":C},V),autoComplete:"off",children:C?h:f(s.Row,{gutter:S,children:B()})}))};c["domTypeName"]="EasyForm";export{c as EasyForm};
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/context/create-ctx.ts","@flatbiz/antd/src/easy-form/context/layout-ctx.ts","@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\n/**\n * A helper to create a Context and Provider with no upfront default value, and\n * without having to check for undefined all the time.\n */\nexport function createCtx<A>() {\n const ctx = createContext<A | undefined>(undefined);\n function useCtx() {\n const c = useContext(ctx);\n // if (c === undefined)\n // throw new Error('useCtx must be inside a Provider with a value');\n return c;\n }\n return [useCtx, ctx.Provider] as const; // 'as const' makes TypeScript infer a tuple\n}\n","import { createCtx } from './create-ctx.js';\n\nexport type AiPilotProviderProviderProps = {\n isNested: boolean;\n};\n\nexport const [useEasyForm, EasyFormProvider] = createCtx<AiPilotProviderProviderProps>();\n","import { classNames } from '@dimjs/utils';\nimport { isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { Children, cloneElement, ReactNode, useMemo } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { GutterParams } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport { EasyFormProvider, useEasyForm } from './context/layout-ctx';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n /**\n * 栅格占位格数,最大值:24\n * ```\n * 1. 当前EasyForm处在 EasyForm 直接子节点中有效,即当前EasyForm在EasyForm栅格中的占位格数;\n * 2. 父节点使用属性值,当前节点不使用属性值\n * ```\n */\n span?: number;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局\n * 3. 自定义栅格占位格数的4中方式\n * 3.1 设置FormItemWrapper、FormItemText组件span属性;\n * 3.2 使用 EasyFormItemSpan 包裹children item,设置span属性\n * 3.3 使用 <BoxGrid.Col span={24} ></BoxGrid.Col> 包裹,设置响应式属性\n * 3.4 设置 EasyForm isPure = true设置纯净模式,对EasyForm的子节点不做任何包装处理\n * 4. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 5. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 6. EasyForm 子节点包含 hidden = true 会被忽略\n * 7. 通过 column 可定义一行显示几列FormItem\n * 8. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 9. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 10. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 11. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 12. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <FormItemWrapper noStyle span={24}>\n *\t <Button>按钮</Buttone>\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\n\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n const easyFormApi = useEasyForm();\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n ...otherProps\n } = props;\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getFormRowChildren = () => {\n const childrenList = Children.toArray(children).filter((item: TAny) => {\n return !!item;\n });\n return childrenList\n .map((item: TAny, index) => {\n const domTypeName = item.type['domTypeName'];\n\n let span: number | undefined = undefined;\n if (\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemSpan' ||\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'BoxGridCol' ||\n domTypeName === 'EasyForm'\n ) {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n\n if (domTypeName === 'BoxGridCol' || domTypeName === 'FormItemSpan') {\n if (domTypeName === 'FormItemSpan' && item.props.hidden) {\n return null;\n }\n return cloneElement(item, {\n ...item.props,\n ...gridSize,\n span,\n key: index,\n });\n }\n const display = item.props?.style?.display;\n let removeWrapper = false;\n if (\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemHidden' ||\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'FormItemWrapperDependencies' ||\n item.type === Form.Item ||\n display === 'none'\n ) {\n removeWrapper = true;\n }\n\n if (domTypeName === 'FormItemWrapper' || item.props.noStyle) {\n removeWrapper = false;\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span} removeWrapper={removeWrapper}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType, width]);\n\n const gutter = isUndefinedOrNull(gridGutter) ? ([15, 0] as GutterParams) : gridGutter;\n\n const labelAlignNew = useMemo(() => {\n if (['xs'].includes(screenType)) {\n return 'left';\n }\n return labelAlign;\n }, [labelAlign, screenType]);\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign: labelAlignNew,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlignNew, formItemGap, otherProps.className]);\n\n return (\n <EasyFormProvider value={{ isNested: true }}>\n {easyFormApi?.isNested ? (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </div>\n ) : (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlignNew}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </FormWrapper>\n )}\n </EasyFormProvider>\n );\n};\n\nEasyForm['domTypeName'] = 'EasyForm';\n"],"names":["createCtx","ctx","createContext","undefined","useCtx","c","useContext","Provider","_createCtx","useEasyForm","EasyFormProvider","EasyForm","props","screenType","fbaHooks","useResponsivePoint","easyFormApi","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getFormRowChildren","childrenList","Children","toArray","filter","item","map","index","_item$props","domTypeName","type","span","hidden","cloneElement","_extends","key","display","style","removeWrapper","Form","Item","noStyle","_jsx","BoxGrid","Col","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","labelAlignNew","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","value","isNested","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Form } from 'antd';\nimport { Children, cloneElement, ReactNode, useMemo } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { GutterParams } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n /**\n * 栅格占位格数,最大值:24\n * ```\n * 1. 当前EasyForm处在 EasyForm 直接子节点中有效,即当前EasyForm在EasyForm栅格中的占位格数;\n * 2. 父节点使用属性值,当前节点不使用属性值\n * ```\n */\n span?: number;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局\n * 3. 自定义栅格占位格数的4中方式\n * 3.1 设置FormItemWrapper、FormItemText组件span属性;\n * 3.2 使用 EasyFormItemSpan 包裹children item,设置span属性\n * 3.3 使用 <BoxGrid.Col span={24} ></BoxGrid.Col> 包裹,设置响应式属性\n * 3.4 设置 EasyForm isPure = true设置纯净模式,对EasyForm的子节点不做任何包装处理\n * 4. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 5. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 6. EasyForm 子节点包含 hidden = true 会被忽略\n * 7. 通过 column 可定义一行显示几列FormItem\n * 8. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 9. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 10. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 11. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 12. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <FormItemWrapper noStyle span={24}>\n *\t <Button>按钮</Buttone>\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\n\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const form = Form.useFormInstance();\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n ...otherProps\n } = props;\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getFormRowChildren = () => {\n const childrenList = Children.toArray(children).filter((item: TAny) => {\n return !!item;\n });\n return childrenList\n .map((item: TAny, index) => {\n const domTypeName = item.type['domTypeName'];\n\n let span: number | undefined = undefined;\n if (\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemSpan' ||\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'BoxGridCol' ||\n domTypeName === 'EasyForm'\n ) {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n\n if (domTypeName === 'BoxGridCol' || domTypeName === 'FormItemSpan') {\n if (domTypeName === 'FormItemSpan' && item.props.hidden) {\n return null;\n }\n return cloneElement(item, {\n ...item.props,\n ...gridSize,\n span,\n key: index,\n });\n }\n const display = item.props?.style?.display;\n let removeWrapper = false;\n if (\n domTypeName === 'FormItemText' ||\n domTypeName === 'FormItemHidden' ||\n domTypeName === 'FormItemWrapper' ||\n domTypeName === 'FormItemWrapperDependencies' ||\n item.type === Form.Item ||\n display === 'none'\n ) {\n removeWrapper = true;\n }\n\n if (domTypeName === 'FormItemWrapper' || item.props.noStyle) {\n removeWrapper = false;\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span} removeWrapper={removeWrapper}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType, width]);\n\n const gutter = isUndefinedOrNull(gridGutter) ? ([15, 0] as GutterParams) : gridGutter;\n\n const labelAlignNew = useMemo(() => {\n if (['xs'].includes(screenType)) {\n return 'left';\n }\n return labelAlign;\n }, [labelAlign, screenType]);\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign: labelAlignNew,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlignNew, formItemGap, otherProps.className]);\n\n if (form) {\n return (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </div>\n );\n }\n\n return (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlignNew}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </FormWrapper>\n );\n};\n\nEasyForm['domTypeName'] = 'EasyForm';\n"],"names":["EasyForm","props","screenType","fbaHooks","useResponsivePoint","form","Form","useFormInstance","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getFormRowChildren","childrenList","Children","toArray","filter","item","map","index","_item$props","domTypeName","type","span","undefined","hidden","cloneElement","_extends","key","display","style","removeWrapper","Item","noStyle","_jsx","BoxGrid","Col","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","labelAlignNew","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "4.5.49",
3
+ "version": "4.5.51",
4
4
  "description": "flat-biz ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",