@flatbiz/antd 4.2.21 → 4.2.22
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-1ea0fe5a.js +3 -0
- package/esm/button-operate-1ea0fe5a.js.map +1 -0
- package/esm/dropdown-menu-wrapper/index.js +1 -1
- package/esm/dropdown-menu-wrapper-24932100.js +3 -0
- package/esm/dropdown-menu-wrapper-24932100.js.map +1 -0
- package/esm/form-grid/index.js +1 -1
- package/esm/form-grid/index.js.map +1 -1
- package/esm/modal-action/index.js.map +1 -1
- package/esm/rich-text-editor/index.js +1 -1
- package/esm/rich-text-editor-417bf0d8.js +3 -0
- package/esm/{rich-text-editor-8847f378.js.map → rich-text-editor-417bf0d8.js.map} +1 -1
- package/esm/rich-text-viewer/index.js +1 -1
- package/esm/rich-text-viewer/index.js.map +1 -1
- package/esm/table-cell-render/index.js +1 -1
- package/esm/tabs-wrapper/index.css +1 -1
- package/esm/tabs-wrapper/index.js +1 -1
- package/esm/tabs-wrapper/index.js.map +1 -1
- package/esm/tree-wrapper/index.js +1 -1
- package/index.d.ts +9 -2
- package/package.json +1 -1
- package/esm/button-operate-794050a3.js +0 -3
- package/esm/button-operate-794050a3.js.map +0 -1
- package/esm/dropdown-menu-wrapper-bf621188.js +0 -3
- package/esm/dropdown-menu-wrapper-bf621188.js.map +0 -1
- package/esm/rich-text-editor-8847f378.js +0 -3
|
@@ -6,5 +6,5 @@ import './../fba-utils/index.css';
|
|
|
6
6
|
import './../dropdown-menu-wrapper/index.css';
|
|
7
7
|
import './index.css';
|
|
8
8
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
9
|
-
export{a as ButtonOperate,B as ButtonOperateItemContent}from"../button-operate-
|
|
9
|
+
export{a as ButtonOperate,B as ButtonOperateItemContent}from"../button-operate-1ea0fe5a.js";import"@ant-design/icons/es/icons/MoreOutlined";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"antd";import"react";import"../button-wrapper-698da5b1.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@flatbiz/utils";import"../config-provider-wrapper-dfe8f592.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"react/jsx-runtime";import"../fba-utils-a4c7d94d.js";import"../dropdown-menu-wrapper-24932100.js";
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
+
import r from"@ant-design/icons/es/icons/MoreOutlined";import{a as e,_ as i}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isUndefined as n}from"@dimjs/lang/cjs/is-undefined";import{classNames as o}from"@dimjs/utils/cjs/class-names";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as l}from"@dimjs/lang/cjs/is-promise";import{hooks as a}from"@wove/react/cjs/hooks";import{Popover as p,Tooltip as c,Space as f,Divider as u,Popconfirm as d,Button as m}from"antd";import{Fragment as h,useState as v,isValidElement as g,useMemo as T,createElement as j}from"react";import{B as y}from"./button-wrapper-698da5b1.js";import{D as k}from"./dropdown-menu-wrapper-24932100.js";import{f as C}from"./fba-utils-a4c7d94d.js";import{jsx as P,jsxs as b}from"react/jsx-runtime";var w=["text","onClick","needConfirm","confirmMessage","popconfirmProps"];var x=function r(e){if(e.hoverTips){if(e.tipsType==="popover"){return P(p,{content:e.hoverTips,zIndex:1e3,children:P(h,{children:e.children})})}return P(c,{title:e.hoverTips,zIndex:1e3,children:P(h,{children:e.children})})}return P(h,{children:e.children})};var B=function p(c){var h=v(false),B=h[0],I=h[1];var z=a.useCallbackRef((function(r,e){var i=r.onClick==null?void 0:r.onClick(e);if(i&&l(i)){I(true);return i.finally((function(){I(false)}))}return}));var F=c.operateList.filter((function(r){if(!r)return false;if(g(r)){var e,i;if(((e=r.props)==null?void 0:e["hidden"])===true)return false;var n=(i=r.props)==null?void 0:i["v-permission"];if(s(n)){return C.hasPermission(n)}return true}if(t(r)){if(!C.hasPermission(r["permission"])){return false}return!r["hidden"]}return false}));var M=T((function(){return F.filter((function(r){if(g(r)){return true}return!r["isFold"]}))}),[F]);var N=T((function(){var r=F.filter((function(r){if(g(r)){return false}return r["isFold"]}));var i=[];r.forEach((function(r){var n=e({},r);delete n.isFold;i.push(n)}));return i}),[F]);var O=c.gap===undefined?10:c.gap;var H=!c.split?O:0;return P("div",{className:o("table-operate",c.className),style:c.style,children:b(f,e({split:c.split?P(u,{type:"vertical"}):null,size:H,wrap:n(c.wrap)?true:c.wrap},c.spaceProps,{children:[M.map((function(r,n){if(r&&g(r))return P(x,{hoverTips:r.hoverTips,tipsType:r.tipsType,children:r});var o=r.text,t=r.onClick,s=r.needConfirm,l=r.confirmMessage,a=r.popconfirmProps,p=i(r,w);var c=r.type||"link";if(s&&!p.disabled){var f=!!r.color?false:true;return P(x,{hoverTips:r.hoverTips,tipsType:r.tipsType,children:j(d,e({okText:"确定",cancelText:"取消",trigger:["click"],placement:"topRight",arrow:true,destroyTooltipOnHide:true},a,{title:l,onConfirm:z.bind(null,r),key:n,okButtonProps:{loading:B},onOpenChange:function r(e){if(!e){I(false)}}}),P(y,e({danger:f},p,{onClick:undefined,type:c,children:g(o)?P("span",{children:o}):o})))},n)}return P(x,{hoverTips:r.hoverTips,tipsType:r.tipsType,children:P(y,e({loadingPosition:"center"},p,{type:c,onClick:function r(e){e.stopPropagation();return t==null?void 0:t(e)},children:g(o)?P("span",{children:o}):o}))},n)})),N.length>0?P(k,{menuList:N,children:P(m,{type:"link",className:"fold-more-button",onClick:function r(e){e.stopPropagation()},children:c.foldIcon?c.foldIcon:P(r,{})})}):null]}))})};B.defaultProps={split:true};export{x as B,B as a};
|
|
3
|
+
//# sourceMappingURL=button-operate-1ea0fe5a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-operate-1ea0fe5a.js","sources":["@flatbiz/antd/src/button-operate/button-operate.tsx"],"sourcesContent":["import { MoreOutlined } from '@ant-design/icons';\nimport { isPlainObject, isPromise, isString, isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Divider, Popconfirm, PopconfirmProps, Popover, Space, SpaceProps, Tooltip } from 'antd';\nimport {\n CSSProperties,\n FC,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useMemo,\n useState,\n} from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaUtils } from '../fba-utils';\n\nimport './style.less';\n\nexport interface ButtonOperateItem extends ButtonWrapperProps {\n /** hover 提示文字 */\n hoverTips?: string | React.ReactElement;\n /** hover 提示类型 默认:'tooltip' */\n tipsType?: 'popover' | 'tooltip';\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n popconfirmProps?: Pick<PopconfirmProps, 'placement' | 'okText' | 'cancelText' | 'trigger'>;\n // 是否折叠合拢\n isFold?: boolean;\n}\n\nexport interface ButtonOperateProps {\n /**\n * 如果数组中元素为ReactElement类型\n * 1. 一般为antd Button组件,如果组件存在属性hidden=true,则会隐藏\n * 2. 可配置 v-permission 权限值,例如 v-permission=\"add\"\n * 3. 任何confirm、disabled等状态在外部控制\n * 3. 不支持fold效果\n */\n operateList: Array<ButtonOperateItem | null | ReactElement>;\n wrap?: boolean;\n foldIcon?: ReactElement;\n className?: string;\n split?: boolean;\n spaceProps?: SpaceProps;\n /** 间距,默认:10;split=true配置下无效(可通过spaceProps设置间距) */\n gap?: number;\n style?: CSSProperties;\n}\n\nexport const ButtonOperateItemContent = (\n props: Pick<ButtonOperateItem, 'hoverTips' | 'tipsType'> & { children?: ReactNode },\n) => {\n if (props.hoverTips) {\n if (props.tipsType === 'popover') {\n return (\n <Popover content={props.hoverTips} zIndex={1000}>\n <Fragment>{props.children}</Fragment>\n </Popover>\n );\n }\n return (\n <Tooltip title={props.hoverTips} zIndex={1000}>\n <Fragment>{props.children}</Fragment>\n </Tooltip>\n );\n }\n return <Fragment>{props.children}</Fragment>;\n};\n\nexport const ButtonOperate: FC<ButtonOperateProps> = (props) => {\n const [loading, setLoading] = useState(false);\n\n const onConfirm = hooks.useCallbackRef((item: ButtonOperateItem, event) => {\n const result = item.onClick?.(event);\n if (result && isPromise(result)) {\n setLoading(true);\n return result.finally(() => {\n setLoading(false);\n });\n }\n return;\n });\n\n const operateList = props.operateList.filter((item) => {\n if (!item) return false;\n if (isValidElement(item)) {\n if (item.props?.['hidden'] === true) return false;\n const permission = item.props?.['v-permission'];\n if (isString(permission)) {\n return fbaUtils.hasPermission(permission);\n }\n return true;\n }\n if (isPlainObject(item)) {\n if (!fbaUtils.hasPermission(item['permission'])) {\n return false;\n }\n return !item['hidden'];\n }\n return false;\n }) as Array<ButtonOperateItem | ReactElement>;\n\n const viewList = useMemo(() => {\n return operateList.filter((item) => {\n if (isValidElement(item)) {\n return true;\n }\n return !item['isFold'];\n }) as ButtonOperateItem[];\n }, [operateList]);\n\n const foldList = useMemo(() => {\n const filterList = operateList.filter((item) => {\n if (isValidElement(item)) {\n return false;\n }\n return item['isFold'];\n }) as ButtonOperateItem[];\n const result = [] as ButtonOperateItem[];\n filterList.forEach((item) => {\n const target = { ...item };\n // 多余字段渲染到react dom上,出现警告\n delete target.isFold;\n result.push(target);\n });\n return result;\n }, [operateList]);\n\n const gap = props.gap === undefined ? 10 : props.gap;\n const size = !props.split ? gap : 0;\n\n return (\n <div className={classNames('table-operate', props.className)} style={props.style}>\n <Space\n split={props.split ? <Divider type=\"vertical\" /> : null}\n size={size}\n wrap={isUndefined(props.wrap) ? true : props.wrap}\n {...props.spaceProps}\n >\n {viewList.map((item, index) => {\n if (item && isValidElement(item))\n return (\n <ButtonOperateItemContent hoverTips={item.hoverTips} tipsType={item.tipsType}>\n {item}\n </ButtonOperateItemContent>\n );\n const { text, onClick, needConfirm, confirmMessage, popconfirmProps, ...otherProps } = item;\n const type = item.type || 'link';\n if (needConfirm && !otherProps.disabled) {\n const danger = !!item.color ? false : true;\n return (\n <ButtonOperateItemContent hoverTips={item.hoverTips} tipsType={item.tipsType} key={index}>\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 >\n <ButtonWrapper danger={danger} {...otherProps} onClick={undefined} type={type}>\n {isValidElement(text) ? <span>{text}</span> : text}\n </ButtonWrapper>\n </Popconfirm>\n </ButtonOperateItemContent>\n );\n }\n return (\n <ButtonOperateItemContent hoverTips={item.hoverTips} tipsType={item.tipsType} key={index}>\n <ButtonWrapper\n loadingPosition=\"center\"\n {...otherProps}\n type={type}\n onClick={(event) => {\n event.stopPropagation();\n return onClick?.(event);\n }}\n >\n {isValidElement(text) ? <span>{text}</span> : text}\n </ButtonWrapper>\n </ButtonOperateItemContent>\n );\n })}\n {foldList.length > 0 ? (\n <DropdownMenuWrapper menuList={foldList}>\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","Fragment","Tooltip","title","ButtonOperate","_useState","useState","loading","setLoading","onConfirm","_hooks","useCallbackRef","item","event","result","onClick","_isPromise","finally","operateList","filter","isValidElement","_item$props","_item$props2","permission","_isString","fbaUtils","hasPermission","_isPlainObject","viewList","useMemo","foldList","filterList","forEach","target","_extends","isFold","push","gap","undefined","size","split","className","_classNames","style","_jsxs","Space","Divider","type","wrap","_isUndefined","spaceProps","map","index","text","needConfirm","confirmMessage","popconfirmProps","otherProps","_objectWithoutPropertiesLoose","_excluded","disabled","danger","color","_createElement","Popconfirm","okText","cancelText","trigger","placement","arrow","destroyTooltipOnHide","bind","key","okButtonProps","onOpenChange","_open","ButtonWrapper","loadingPosition","stopPropagation","length","DropdownMenuWrapper","menuList","Button","foldIcon","_MoreOutlined","defaultProps"],"mappings":"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"}
|
|
@@ -5,5 +5,5 @@ import './../fba-hooks/index.css';
|
|
|
5
5
|
import './../fba-utils/index.css';
|
|
6
6
|
import './index.css';
|
|
7
7
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
8
|
-
export{D as DropdownMenuWrapper}from"../dropdown-menu-wrapper-
|
|
8
|
+
export{D as DropdownMenuWrapper}from"../dropdown-menu-wrapper-24932100.js";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"antd";import"react";import"../button-wrapper-698da5b1.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@flatbiz/utils";import"../config-provider-wrapper-dfe8f592.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"react/jsx-runtime";import"../fba-utils-a4c7d94d.js";
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
+
import{_ as e,a as o}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isPromise as r}from"@dimjs/lang/cjs/is-promise";import{hooks as n}from"@wove/react/cjs/hooks";import{Popconfirm as i,Dropdown as t}from"antd";import{useState as a,createElement as l,useMemo as s}from"react";import{B as f}from"./button-wrapper-698da5b1.js";import{fbaHooks as u}from"./fba-hooks/index.js";import{f as p}from"./fba-utils-a4c7d94d.js";import{jsx as d}from"react/jsx-runtime";function c(e){var o=true;var r=false;while(o){if(e.tagName==="HTML"||e.tagName==="BODY"){o=false;r=false}else{var n=window.getComputedStyle(e),i=n.position;if(i==="sticky"){r=true;o=false}else{if(!e||!e.parentNode){o=false}else{e=e.parentNode}}}}return r}var m=["menuList"],v=["text","color","permission","needConfirm","confirmMessage","hidden","type","style","popconfirmProps"];var g=function g(y){var k=y.menuList,C=e(y,m);var h=a([]),b=h[0],P=h[1];var w=n.useId(undefined,"DropdownMenuWrapper");var x=a({}),j=x[0],N=x[1];var B=n.useCallbackRef((function(e,o){var r;o.stopPropagation();N((r={},r[e]={open:true},r))}));var S=n.useCallbackRef((function(e,n,i){i.stopPropagation();var t=e.onClick==null?void 0:e.onClick(i);if(t&&r(t)){j[n]={loading:true,open:true};N(o({},j));t.finally((function(){j[n]={loading:false,open:false};N(o({},j))}));return}j[n]={loading:false,open:false};N(o({},j))}));var z=n.useCallbackRef((function(e,o){o.stopPropagation();return e.onClick==null?void 0:e.onClick(o)}));u.useEffectCustom((function(){var r=[];k.filter(Boolean).forEach((function(n,t){var a,s;if(!n)return;var u=n.text,c=n.color,m=n.permission,g=n.needConfirm,y=n.confirmMessage,k=n.hidden,C=n.type,h=n.style,b=n.popconfirmProps,P=e(n,v);if(k)return;if(m&&!p.hasPermission(m))return;var w=c?o({color:c},h):h;var x=C||"link";var M={key:t,label:l(f,o({loadingPosition:"center",size:"small"},P,{type:x,style:w,key:t,onClick:z.bind(null,n)}),u)};var T={key:t,label:l(i,o({okText:"确定",cancelText:"取消",trigger:["click"],destroyTooltipOnHide:true},b,{title:y,onConfirm:S.bind(null,n,t),onCancel:function e(o){o==null?void 0:o.stopPropagation();N({})},overlayClassName:"dmw-popconfirm",arrow:true,key:t,overlayStyle:{zIndex:10},open:((a=j[t])==null?void 0:a.open)||false,okButtonProps:{loading:(s=j[t])==null?void 0:s.loading}}),d(f,o({loadingPosition:"center",size:"small",danger:c?false:P.danger},P,{onClick:B.bind(null,t),type:x,style:w,children:u})))};if(g&&!P.disabled){r.push(T)}else{r.push(M)}}));P(r)}),[k,j]);var M=document.querySelector("."+w);var T=s((function(){if(M&&c(M)){return undefined}return M}),[M]);return d("div",{className:w,style:{position:"relative"},children:d(t,o({trigger:(C==null?void 0:C.trigger)||["hover"],getPopupContainer:T?function(){return M}:undefined,arrow:{pointAtCenter:true}},C,{overlayStyle:o({zIndex:9},C.overlayStyle),menu:{items:b},onOpenChange:function e(o){if(!o){N({})}},children:y.children}))})};export{g as D};
|
|
3
|
+
//# sourceMappingURL=dropdown-menu-wrapper-24932100.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-menu-wrapper-24932100.js","sources":["@flatbiz/antd/src/dropdown-menu-wrapper/utils.ts","@flatbiz/antd/src/dropdown-menu-wrapper/dropdown-menu-wrapper.tsx"],"sourcesContent":["export function parentsHasSticky(node: Element) {\n let condition = true;\n let result = false;\n while (condition) {\n if (node.tagName === 'HTML' || node.tagName === 'BODY') {\n condition = false;\n result = false;\n } else {\n const { position } = window.getComputedStyle(node);\n if (position === 'sticky') {\n result = true;\n condition = false;\n } else {\n if (!node || !node.parentNode) {\n condition = false;\n } else {\n node = node.parentNode as Element;\n }\n }\n }\n }\n return result;\n}\n","import { isPromise } from '@dimjs/lang';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Dropdown, DropdownProps, Popconfirm, PopconfirmProps } from 'antd';\nimport { ItemType } from 'antd/lib/menu/hooks/useItems';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport './style.less';\nimport { parentsHasSticky } from './utils';\n\nexport interface DropdownMenuItem extends ButtonProps {\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n popconfirmProps?: Pick<PopconfirmProps, 'placement' | 'okText' | 'cancelText' | 'trigger'>;\n}\n\nexport interface DropdownMenuWrapperProps extends Omit<DropdownProps, 'menu'> {\n menuList: Array<DropdownMenuItem | null>;\n}\n\nexport const DropdownMenuWrapper = (props: DropdownMenuWrapperProps) => {\n const { menuList, ...dropdownOtherProps } = props;\n const [menuItems, setMenuItems] = useState<ItemType[]>([]);\n const clsName = hooks.useId(undefined, 'DropdownMenuWrapper');\n\n const [statusMap, setStatusMap] = useState<Record<string, { open?: boolean; loading?: boolean }>>({});\n const onConfirmtTriggerClick = hooks.useCallbackRef((index, event) => {\n event.stopPropagation();\n setStatusMap({ [index]: { open: true } });\n });\n\n const onConfirm = hooks.useCallbackRef((item: DropdownMenuItem, index: number, event) => {\n event.stopPropagation();\n const result = item.onClick?.(event);\n if (result && isPromise(result)) {\n statusMap[index] = { loading: true, open: true };\n setStatusMap({ ...statusMap });\n result.finally(() => {\n statusMap[index] = { loading: false, open: false };\n setStatusMap({ ...statusMap });\n });\n return;\n }\n statusMap[index] = { loading: false, open: false };\n setStatusMap({ ...statusMap });\n });\n\n const onClick = hooks.useCallbackRef((item: DropdownMenuItem, event) => {\n event.stopPropagation();\n return item.onClick?.(event);\n });\n\n fbaHooks.useEffectCustom(() => {\n const menuItemsNew: ItemType[] = [];\n menuList.filter(Boolean).forEach((item, index) => {\n if (!item) return;\n const {\n text,\n color,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n type,\n style,\n popconfirmProps,\n ...otherProps\n } = item;\n if (hidden) return;\n if (permission && !fbaUtils.hasPermission(permission)) return;\n const newStyle = color ? { color, ...style } : style;\n const buttonType = type || 'link';\n const nromal = {\n key: index,\n label: (\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n {...otherProps}\n type={buttonType}\n style={newStyle}\n key={index}\n onClick={onClick.bind(null, item)}\n >\n {text}\n </ButtonWrapper>\n ),\n };\n const confirm = {\n key: index,\n label: (\n <Popconfirm\n okText=\"确定\"\n cancelText=\"取消\"\n trigger={['click']}\n destroyTooltipOnHide={true}\n {...popconfirmProps}\n title={confirmMessage}\n onConfirm={onConfirm.bind(null, item, index)}\n onCancel={(event) => {\n event?.stopPropagation();\n setStatusMap({});\n }}\n overlayClassName=\"dmw-popconfirm\"\n arrow={true}\n key={index}\n overlayStyle={{ zIndex: 10 }}\n open={statusMap[index]?.open || false}\n okButtonProps={{\n loading: statusMap[index]?.loading,\n }}\n >\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n danger={color ? false : otherProps.danger}\n {...otherProps}\n onClick={onConfirmtTriggerClick.bind(null, index)}\n type={buttonType}\n style={newStyle}\n >\n {text}\n </ButtonWrapper>\n </Popconfirm>\n ),\n };\n if (needConfirm && !otherProps.disabled) {\n menuItemsNew.push(confirm);\n } else {\n menuItemsNew.push(nromal);\n }\n });\n setMenuItems(menuItemsNew);\n }, [menuList, statusMap]);\n\n const target = document.querySelector(`.${clsName}`);\n const container = useMemo(() => {\n if (target && parentsHasSticky(target)) {\n return undefined;\n }\n return target;\n }, [target]);\n\n return (\n <div className={clsName} style={{ position: 'relative' }}>\n <Dropdown\n trigger={dropdownOtherProps?.trigger || ['hover']}\n getPopupContainer={container ? () => target as HTMLElement : undefined}\n arrow={{ pointAtCenter: true }}\n {...dropdownOtherProps}\n overlayStyle={{ zIndex: 9, ...dropdownOtherProps.overlayStyle }}\n menu={{ items: menuItems }}\n onOpenChange={(_open) => {\n if (!_open) {\n setStatusMap({});\n }\n }}\n >\n {props.children}\n </Dropdown>\n </div>\n );\n};\n"],"names":["parentsHasSticky","node","condition","result","tagName","_window$getComputedSt","window","getComputedStyle","position","parentNode","DropdownMenuWrapper","props","menuList","dropdownOtherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","menuItems","setMenuItems","clsName","_hooks","useId","undefined","_useState2","statusMap","setStatusMap","onConfirmtTriggerClick","useCallbackRef","index","event","_setStatusMap","stopPropagation","open","onConfirm","item","onClick","_isPromise","loading","_extends","finally","fbaHooks","useEffectCustom","menuItemsNew","filter","Boolean","forEach","_statusMap$index","_statusMap$index2","text","color","permission","needConfirm","confirmMessage","hidden","type","style","popconfirmProps","otherProps","_excluded2","fbaUtils","hasPermission","newStyle","buttonType","nromal","key","label","_createElement","ButtonWrapper","loadingPosition","size","bind","confirm","Popconfirm","okText","cancelText","trigger","destroyTooltipOnHide","title","onCancel","overlayClassName","arrow","overlayStyle","zIndex","okButtonProps","_jsx","danger","children","disabled","push","target","document","querySelector","container","useMemo","className","Dropdown","getPopupContainer","pointAtCenter","menu","items","onOpenChange","_open"],"mappings":"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"}
|
package/esm/form-grid/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import './index.css';
|
|
3
3
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{_ as r,a as e}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{Col as
|
|
4
|
+
import{_ as r,a as e}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{Col as n,Form as t,Row as i,Space as o}from"antd";import{jsx as a,jsxs as l}from"react/jsx-runtime";import{classNames as u}from"@dimjs/utils/cjs/class-names";import{useMemo as f,isValidElement as s,cloneElement as d}from"react";import{toArray as v,valueIsEqual as m}from"@flatbiz/utils";import{u as p}from"../use-responsive-point-21b8c601.js";var c=["forceAloneRow","hidden"];var h={xs:24,sm:24,md:24,lg:24,xl:24,xxl:24};var g=function t(i){var o=i.forceAloneRow,l=i.hidden,u=r(i,c);var f=o?h:u;if(l)return null;return a(n,e({},f,{children:i.children}))};g["domTypeName"]="FormCol";var x=["leftList","rightList","rowColTotal","justify","forceAloneRow","hidden"];var L={xs:24,sm:24,md:24,lg:24,xl:24,xxl:24};var y=function s(d){var v=d,m=v.leftList,p=v.rightList,c=v.rowColTotal,h=v.justify,g=v.forceAloneRow,y=v.hidden,C=r(v,x);var w=(m||[]).filter(Boolean);var j=(p||[]).filter(Boolean);var T=w.length>0&&j.length>0;var N=g||T?L:{};var F=f((function(){if(h)return h;if(T)return"space-between";if(g)return"end";if(c===1)return"start";return"end"}),[g,T,h,c]);var G=u(d.className,"v-form-col-operate");if(y)return null;return a(n,e({},C,N,{className:G,children:a(t.Item,{children:l(i,{justify:F,children:[a(o,{children:w.map((function(r){return r}))}),a(o,{children:j==null?void 0:j.map((function(r){return r}))})]})})}))};y["domTypeName"]="FormOperateCol";var C=function r(e,n){try{var t=[];var i=function r(n){var t=e[n];return{index:n,value:t>24?24:t}};var o=true;var a=[];var l=0;var u=0;while(o){var f=e[l];a.push(i(l));if(f>=24){t.push(a);a=[];u=0}else if(l===e.length-1){t.push(a)}else{u+=f;if(u>=24){t.push(a);a=[];u=0}}l=l+1;if(l>=e.length){o=false}}var s=t.find((function(r){return!!r.find((function(r){return r.index===n}))}))||[];var d=0;var v=0;s.forEach((function(r,e){if(r.index===n)v=e;if(r.index<n){d=d+r.value}}));if(d===24||d===0){s[v].value=24}else{s[v].value=24-d}return{gridList:t.reduce((function(r,e){return r.concat(e)})).map((function(r){return r.value})),gridGroupList:t}}catch(r){return{gridList:e,gridGroupList:[]}}};var w={xs:24,sm:12,md:12,lg:8,xl:8,xxl:6};var j=function r(n){var t=p()||"md";var o=v(n.children).filter((function(r){if(!r||!s(r))return false;return m(r.type["domTypeName"],["FormOperateCol","FormCol"])}));var l=f((function(){var r=o.findIndex((function(r){return r.type["domTypeName"]==="FormOperateCol"}));if(t===undefined){return{gridList:[],gridGroupList:[]}}var e=o.map((function(e,n){var i,o;if(n===r)return 0;var a=(i=e.props)==null?void 0:i.span;return((o=e.props)==null?void 0:o[t])||a||w[t]}));if(r<0){return{gridList:e,gridGroupList:[]}}return C(e,r)}),[o,t]),u=l.gridList,c=l.gridGroupList;return a(i,e({},n,{children:o.map((function(r,n){var i;var o=e({},w,r.props);var a=e({key:n},o,(i={},i[t]=u[n]||o[t],i));if(r.type["domTypeName"]==="FormOperateCol"){a["rowColTotal"]=c.length}return d(r,a)}))}))};var T={Row:j,Col:g,OperateCol:y};export{T as FormGrid};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-grid/form-col.tsx","@flatbiz/antd/src/form-grid/form-operate-col.tsx","@flatbiz/antd/src/form-grid/utils.ts","@flatbiz/antd/src/form-grid/form-row.tsx","@flatbiz/antd/src/form-grid/index.ts"],"sourcesContent":["import { Col } from 'antd';\nimport { ReactNode } from 'react';\nconst forceAloneRowGrid = { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 };\nexport type FormColProps = {\n // 栅格占位格数,不考虑响应式\n span?: number;\n /** 屏幕 < 576px */\n xs?: number;\n /** 屏幕 ≥ 576px */\n sm?: number;\n /** 屏幕 ≥ 768px */\n md?: number;\n /** 屏幕 ≥ 992px */\n lg?: number;\n /** 屏幕 ≥ 1200px */\n xl?: number;\n /** 屏幕 ≥ 1600px */\n xxl?: number;\n /** 强制单独一行 */\n forceAloneRow?: boolean;\n children?: ReactNode | ReactNode[];\n};\n\n/**\n * 网格响应式布局,默认值:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n *```\n * 1. 设置 span 栅格占位格数,不考虑响应式\n * 2. grid 自定义响应式网格布局\n * xs: 屏幕 < 576px\n * sm: 屏幕 ≥ 576px\n * md: 屏幕 ≥ 768px\n * lg: 屏幕 ≥ 992px\n * xl: 屏幕 ≥ 1200px\n * xxl: 屏幕 ≥ 1600px\n * ```\n */\nexport const FormCol = (props: FormColProps) => {\n const { forceAloneRow, ...otherProps } = props;\n const forceGrid = forceAloneRow ? forceAloneRowGrid : otherProps;\n return <Col {...forceGrid}>{props.children}</Col>;\n};\n\nFormCol['domTypeName'] = 'FormCol';\n","import { classNames } from '@dimjs/utils';\nimport { Col, Form, Row, RowProps, Space } from 'antd';\nimport { ReactElement, useMemo } from 'react';\n\nconst fullGrid = { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 };\nexport type FormOperateColProps = {\n className?: string;\n leftList?: Array<ReactElement | null>;\n rightList?: Array<ReactElement | null>;\n // 对齐方式,优先级最高\n justify?: RowProps['justify'];\n /** 强制单独一行 */\n forceAloneRow?: boolean;\n};\n\n/**\n * FormOperateCol 布局说明\n * ```\n * 1. 网格数以及位置为动态计算,不支持 xs、sm、md等\n * 2. 如果FormRow只有一行col,则OperateCol会在当前行剩余网格内居左对齐\n * 3. 如果同时设置 leftList、rightList,则此cell会强制独占一行,并左右布局\n * 4. 如果只设置 leftList、rightList其中一个,则会在最后一行剩余网格内居右对齐\n * ```\n */\nexport const FormOperateCol = (props: FormOperateColProps) => {\n const { leftList, rightList, rowColTotal, justify, forceAloneRow, ...otherProps } =\n props as FormOperateColProps & {\n rowColTotal: number;\n };\n const _leftList = (leftList || []).filter(Boolean);\n const _rightList = (rightList || []).filter(Boolean);\n const hasAll = _leftList.length > 0 && _rightList.length > 0;\n const forceGrid = forceAloneRow || hasAll ? fullGrid : {};\n\n const colJustify = useMemo(() => {\n if (justify) return justify;\n if (hasAll) return 'space-between';\n if (forceAloneRow) return 'end';\n if (rowColTotal === 1) return 'start';\n return 'end';\n }, [forceAloneRow, hasAll, justify, rowColTotal]);\n\n const className = classNames(props.className, 'v-form-col-operate');\n\n return (\n <Col {...otherProps} {...forceGrid} className={className}>\n <Form.Item>\n <Row justify={colJustify}>\n <Space>{_leftList.map((item) => item)}</Space>\n <Space>{_rightList?.map((item) => item)}</Space>\n </Row>\n </Form.Item>\n </Col>\n );\n};\n\nFormOperateCol['domTypeName'] = 'FormOperateCol';\n","/**\n * 用于计算 operateCol 所占用网格数\n * ```\n * col网格数据 [8,8,8,12,24,0,8] => [[8,8,8],[12],[24],[0,8]],分组后计算operateCol所在行中剩余网格数\n * ```\n * @returns\n */\nexport const calculateOperateGrid = (gridList: number[], operateColIndex: number) => {\n try {\n const groupList = [] as { index: number; value: number }[][];\n const getGroupItem = function (index) {\n const value = gridList[index];\n return { index, value: value > 24 ? 24 : value };\n };\n let condition = true;\n let groupItemList = [] as { index: number; value: number }[];\n let currentIndex = 0;\n let total = 0;\n while (condition) {\n const currentValue = gridList[currentIndex];\n groupItemList.push(getGroupItem(currentIndex));\n if (currentValue >= 24) {\n groupList.push(groupItemList);\n groupItemList = [];\n total = 0;\n } else if (currentIndex === gridList.length - 1) {\n groupList.push(groupItemList);\n } else {\n total += currentValue;\n if (total >= 24) {\n groupList.push(groupItemList);\n groupItemList = [];\n total = 0;\n }\n }\n currentIndex = currentIndex + 1;\n if (currentIndex >= gridList.length) {\n condition = false;\n }\n }\n const hasOperateList =\n groupList.find((item) => !!item.find((temp) => temp.index === operateColIndex)) || [];\n let hasOperateTotal = 0;\n let hasOperateIndex = 0;\n hasOperateList.forEach((item, index) => {\n if (item.index === operateColIndex) hasOperateIndex = index;\n if (item.index < operateColIndex) {\n hasOperateTotal = hasOperateTotal + item.value;\n }\n });\n if (hasOperateTotal === 24 || hasOperateTotal === 0) {\n hasOperateList[hasOperateIndex].value = 24;\n } else {\n hasOperateList[hasOperateIndex].value = 24 - hasOperateTotal;\n }\n\n return {\n gridList: groupList.reduce((a, b) => a.concat(b)).map((temp) => temp.value),\n gridGroupList: groupList,\n };\n } catch (error) {\n return {\n gridList,\n gridGroupList: [],\n };\n }\n};\n","import { toArray, valueIsEqual } from '@flatbiz/utils';\nimport { Row, RowProps } from 'antd';\nimport { cloneElement, Fragment, isValidElement, ReactElement, ReactNode, useMemo } from 'react';\nimport { useResponsivePoint } from '../fba-hooks/use-responsive-point';\nimport { calculateOperateGrid } from './utils';\n\nexport type FormRowProps = RowProps & {\n children?: ReactNode | ReactNode[];\n};\nconst defaultGrid = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n\n/**\n * FormItem网格响应式布局\n *```\n * 1. 应用场景:Form条件布局\n * 2. 子元素只能是 FormCol、FormOperateCol,其他会被忽略\n * 3. 所有子元素中只能存在一个 FormOperateCol\n */\nexport const FormRow = (props: FormRowProps) => {\n const screenType = useResponsivePoint();\n const childrenList = toArray<ReactElement>(props.children).filter((item) => {\n if (!isValidElement(item)) return false;\n return valueIsEqual(item.type['domTypeName'], ['FormOperateCol', 'FormCol']);\n });\n const { gridList, gridGroupList } = useMemo(() => {\n const operateColIndex = childrenList.findIndex((item) => {\n return item.type['domTypeName'] === 'FormOperateCol';\n });\n if (screenType === undefined) {\n return { gridList: [] as number[], gridGroupList: [] };\n }\n const _currentGridList = childrenList.map((temp, index) => {\n if (index === operateColIndex) return 0;\n const span = temp.props?.span as number;\n return temp.props?.[screenType] || span || defaultGrid[screenType];\n });\n if (operateColIndex < 0) {\n return { gridList: _currentGridList, gridGroupList: [] };\n }\n return calculateOperateGrid(_currentGridList, operateColIndex);\n }, [childrenList, screenType]);\n\n if (!screenType) return <Fragment>{props.children}</Fragment>;\n return (\n <Row {...props}>\n {childrenList.map((item, index) => {\n const itemProps = { ...defaultGrid, ...item.props };\n const newProps = {\n key: index,\n ...itemProps,\n [screenType]: gridList[index] || itemProps[screenType],\n };\n if (item.type['domTypeName'] === 'FormOperateCol') {\n newProps['rowColTotal'] = gridGroupList.length;\n }\n return cloneElement(item, newProps);\n })}\n </Row>\n );\n};\n","import { FormCol } from './form-col';\nimport { FormOperateCol } from './form-operate-col';\nimport { FormRow } from './form-row';\n\nexport const FormGrid = {\n /**\n * FormItem网格响应式布局\n *```\n * 1. 应用场景:Form条件布局\n * 2. 子元素只能是 FormCol、FormOperateCol,其他会被忽略\n * 3. 所有子元素中只能存在一个 FormOperateCol\n */\n Row: FormRow,\n /**\n * 网格响应式布局,默认值:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n *```\n * 1. 设置 span 栅格占位格数,不考虑响应式\n * 2. grid 自定义响应式网格布局\n * xs: 屏幕 < 576px\n * sm: 屏幕 ≥ 576px\n * md: 屏幕 ≥ 768px\n * lg: 屏幕 ≥ 992px\n * xl: 屏幕 ≥ 1200px\n * xxl: 屏幕 ≥ 1600px\n * ```\n */\n Col: FormCol,\n /**\n * FormOperateCol 布局说明\n * ```\n * 1. 网格数以及位置为动态计算,不支持 xs、sm、md等\n * 2. 如果FormRow只有一行col,则OperateCol会在当前行剩余网格内居左对齐\n * 3. 如果同时设置 leftList、rightList,则此cell会强制独占一行,并左右布局\n * 4. 如果只设置 leftList、rightList其中一个,则会在最后一行剩余网格内居右对齐\n * ```\n */\n OperateCol: FormOperateCol,\n};\n"],"names":["forceAloneRowGrid","xs","sm","md","lg","xl","xxl","FormCol","props","forceAloneRow","otherProps","_objectWithoutPropertiesLoose","_excluded","forceGrid","_jsx","Col","_extends","children","fullGrid","FormOperateCol","_ref","leftList","rightList","rowColTotal","justify","_leftList","filter","Boolean","_rightList","hasAll","length","colJustify","useMemo","className","_classNames","Form","Item","_jsxs","Row","Space","map","item","calculateOperateGrid","gridList","operateColIndex","groupList","getGroupItem","index","value","condition","groupItemList","currentIndex","total","currentValue","push","hasOperateList","find","temp","hasOperateTotal","hasOperateIndex","forEach","reduce","a","b","concat","gridGroupList","error","defaultGrid","FormRow","screenType","useResponsivePoint","childrenList","toArray","isValidElement","valueIsEqual","type","_useMemo","findIndex","undefined","_currentGridList","_temp$props","_temp$props2","span","Fragment","_extends2","itemProps","newProps","key","cloneElement","FormGrid","OperateCol"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-grid/form-col.tsx","@flatbiz/antd/src/form-grid/form-operate-col.tsx","@flatbiz/antd/src/form-grid/utils.ts","@flatbiz/antd/src/form-grid/form-row.tsx","@flatbiz/antd/src/form-grid/index.ts"],"sourcesContent":["import { Col } from 'antd';\nimport { ReactNode } from 'react';\nconst forceAloneRowGrid = { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 };\nexport type FormColProps = {\n // 栅格占位格数,不考虑响应式\n span?: number;\n /** 屏幕 < 576px */\n xs?: number;\n /** 屏幕 ≥ 576px */\n sm?: number;\n /** 屏幕 ≥ 768px */\n md?: number;\n /** 屏幕 ≥ 992px */\n lg?: number;\n /** 屏幕 ≥ 1200px */\n xl?: number;\n /** 屏幕 ≥ 1600px */\n xxl?: number;\n /** 强制单独一行 */\n forceAloneRow?: boolean;\n children?: ReactNode | ReactNode[];\n hidden?: boolean;\n};\n\n/**\n * 网格响应式布局,默认值:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n *```\n * 1. 设置 span 栅格占位格数,不考虑响应式\n * 2. grid 自定义响应式网格布局\n * xs: 屏幕 < 576px\n * sm: 屏幕 ≥ 576px\n * md: 屏幕 ≥ 768px\n * lg: 屏幕 ≥ 992px\n * xl: 屏幕 ≥ 1200px\n * xxl: 屏幕 ≥ 1600px\n * ```\n */\nexport const FormCol = (props: FormColProps) => {\n const { forceAloneRow, hidden, ...otherProps } = props;\n const forceGrid = forceAloneRow ? forceAloneRowGrid : otherProps;\n if (hidden) return null;\n return <Col {...forceGrid}>{props.children}</Col>;\n};\n\nFormCol['domTypeName'] = 'FormCol';\n","import { classNames } from '@dimjs/utils';\nimport { Col, Form, Row, RowProps, Space } from 'antd';\nimport { ReactElement, useMemo } from 'react';\n\nconst fullGrid = { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 };\nexport type FormOperateColProps = {\n className?: string;\n leftList?: Array<ReactElement | null>;\n rightList?: Array<ReactElement | null>;\n // 对齐方式,优先级最高\n justify?: RowProps['justify'];\n /** 强制单独一行 */\n forceAloneRow?: boolean;\n hidden?: boolean;\n};\n\n/**\n * FormOperateCol 布局说明\n * ```\n * 1. 网格数以及位置为动态计算,不支持 xs、sm、md等\n * 2. 如果FormRow只有一行col,则OperateCol会在当前行剩余网格内居左对齐\n * 3. 如果同时设置 leftList、rightList,则此cell会强制独占一行,并左右布局\n * 4. 如果只设置 leftList、rightList其中一个,则会在最后一行剩余网格内居右对齐\n * ```\n */\nexport const FormOperateCol = (props: FormOperateColProps) => {\n const { leftList, rightList, rowColTotal, justify, forceAloneRow, hidden, ...otherProps } =\n props as FormOperateColProps & {\n rowColTotal: number;\n };\n const _leftList = (leftList || []).filter(Boolean);\n const _rightList = (rightList || []).filter(Boolean);\n const hasAll = _leftList.length > 0 && _rightList.length > 0;\n const forceGrid = forceAloneRow || hasAll ? fullGrid : {};\n\n const colJustify = useMemo(() => {\n if (justify) return justify;\n if (hasAll) return 'space-between';\n if (forceAloneRow) return 'end';\n if (rowColTotal === 1) return 'start';\n return 'end';\n }, [forceAloneRow, hasAll, justify, rowColTotal]);\n\n const className = classNames(props.className, 'v-form-col-operate');\n\n if (hidden) return null;\n\n return (\n <Col {...otherProps} {...forceGrid} className={className}>\n <Form.Item>\n <Row justify={colJustify}>\n <Space>{_leftList.map((item) => item)}</Space>\n <Space>{_rightList?.map((item) => item)}</Space>\n </Row>\n </Form.Item>\n </Col>\n );\n};\n\nFormOperateCol['domTypeName'] = 'FormOperateCol';\n","/**\n * 用于计算 operateCol 所占用网格数\n * ```\n * col网格数据 [8,8,8,12,24,0,8] => [[8,8,8],[12],[24],[0,8]],分组后计算operateCol所在行中剩余网格数\n * ```\n * @returns\n */\nexport const calculateOperateGrid = (gridList: number[], operateColIndex: number) => {\n try {\n const groupList = [] as { index: number; value: number }[][];\n const getGroupItem = function (index) {\n const value = gridList[index];\n return { index, value: value > 24 ? 24 : value };\n };\n let condition = true;\n let groupItemList = [] as { index: number; value: number }[];\n let currentIndex = 0;\n let total = 0;\n while (condition) {\n const currentValue = gridList[currentIndex];\n groupItemList.push(getGroupItem(currentIndex));\n if (currentValue >= 24) {\n groupList.push(groupItemList);\n groupItemList = [];\n total = 0;\n } else if (currentIndex === gridList.length - 1) {\n groupList.push(groupItemList);\n } else {\n total += currentValue;\n if (total >= 24) {\n groupList.push(groupItemList);\n groupItemList = [];\n total = 0;\n }\n }\n currentIndex = currentIndex + 1;\n if (currentIndex >= gridList.length) {\n condition = false;\n }\n }\n const hasOperateList =\n groupList.find((item) => !!item.find((temp) => temp.index === operateColIndex)) || [];\n let hasOperateTotal = 0;\n let hasOperateIndex = 0;\n hasOperateList.forEach((item, index) => {\n if (item.index === operateColIndex) hasOperateIndex = index;\n if (item.index < operateColIndex) {\n hasOperateTotal = hasOperateTotal + item.value;\n }\n });\n if (hasOperateTotal === 24 || hasOperateTotal === 0) {\n hasOperateList[hasOperateIndex].value = 24;\n } else {\n hasOperateList[hasOperateIndex].value = 24 - hasOperateTotal;\n }\n\n return {\n gridList: groupList.reduce((a, b) => a.concat(b)).map((temp) => temp.value),\n gridGroupList: groupList,\n };\n } catch (error) {\n return {\n gridList,\n gridGroupList: [],\n };\n }\n};\n","import { toArray, valueIsEqual } from '@flatbiz/utils';\nimport { Row, RowProps } from 'antd';\nimport { cloneElement, isValidElement, ReactElement, ReactNode, useMemo } from 'react';\nimport { useResponsivePoint } from '../fba-hooks/use-responsive-point';\nimport { calculateOperateGrid } from './utils';\n\nexport type FormRowProps = RowProps & {\n children?: ReactNode | ReactNode[];\n};\nconst defaultGrid = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n\n/**\n * FormItem网格响应式布局\n *```\n * 1. 应用场景:Form条件布局\n * 2. 子元素只能是 FormGrid.Col、FormGrid.OperateCol,其他会被忽略\n * 3. 所有子元素中只能存在一个 FormGrid.OperateCol\n */\nexport const FormRow = (props: FormRowProps) => {\n const screenType = useResponsivePoint() || 'md';\n const childrenList = toArray<ReactElement>(props.children).filter((item) => {\n if (!item || !isValidElement(item)) return false;\n return valueIsEqual(item.type['domTypeName'], ['FormOperateCol', 'FormCol']);\n });\n const { gridList, gridGroupList } = useMemo(() => {\n const operateColIndex = childrenList.findIndex((item) => {\n return item.type['domTypeName'] === 'FormOperateCol';\n });\n if (screenType === undefined) {\n return { gridList: [] as number[], gridGroupList: [] };\n }\n const _currentGridList = childrenList.map((temp, index) => {\n if (index === operateColIndex) return 0;\n const span = temp.props?.span as number;\n return temp.props?.[screenType] || span || defaultGrid[screenType];\n });\n if (operateColIndex < 0) {\n return { gridList: _currentGridList, gridGroupList: [] };\n }\n return calculateOperateGrid(_currentGridList, operateColIndex);\n }, [childrenList, screenType]);\n\n // if (!screenType) return <Fragment>{props.children}</Fragment>;\n return (\n <Row {...props}>\n {childrenList.map((item, index) => {\n const itemProps = { ...defaultGrid, ...item.props };\n const newProps = {\n key: index,\n ...itemProps,\n [screenType]: gridList[index] || itemProps[screenType],\n };\n if (item.type['domTypeName'] === 'FormOperateCol') {\n newProps['rowColTotal'] = gridGroupList.length;\n }\n return cloneElement(item, newProps);\n })}\n </Row>\n );\n};\n","import { FormCol } from './form-col';\nimport { FormOperateCol } from './form-operate-col';\nimport { FormRow } from './form-row';\n\nexport const FormGrid = {\n /**\n * FormItem网格响应式布局\n *```\n * 1. 应用场景:Form条件布局\n * 2. 子元素只能是 FormCol、FormOperateCol,其他会被忽略\n * 3. 所有子元素中只能存在一个 FormOperateCol\n */\n Row: FormRow,\n /**\n * 网格响应式布局,默认值:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n *```\n * 1. 设置 span 栅格占位格数,不考虑响应式\n * 2. grid 自定义响应式网格布局\n * xs: 屏幕 < 576px\n * sm: 屏幕 ≥ 576px\n * md: 屏幕 ≥ 768px\n * lg: 屏幕 ≥ 992px\n * xl: 屏幕 ≥ 1200px\n * xxl: 屏幕 ≥ 1600px\n * ```\n */\n Col: FormCol,\n /**\n * FormOperateCol 布局说明\n * ```\n * 1. 网格数以及位置为动态计算,不支持 xs、sm、md等\n * 2. 如果FormRow只有一行col,则OperateCol会在当前行剩余网格内居左对齐\n * 3. 如果同时设置 leftList、rightList,则此cell会强制独占一行,并左右布局\n * 4. 如果只设置 leftList、rightList其中一个,则会在最后一行剩余网格内居右对齐\n * ```\n */\n OperateCol: FormOperateCol,\n};\n"],"names":["forceAloneRowGrid","xs","sm","md","lg","xl","xxl","FormCol","props","forceAloneRow","hidden","otherProps","_objectWithoutPropertiesLoose","_excluded","forceGrid","_jsx","Col","_extends","children","fullGrid","FormOperateCol","_ref","leftList","rightList","rowColTotal","justify","_leftList","filter","Boolean","_rightList","hasAll","length","colJustify","useMemo","className","_classNames","Form","Item","_jsxs","Row","Space","map","item","calculateOperateGrid","gridList","operateColIndex","groupList","getGroupItem","index","value","condition","groupItemList","currentIndex","total","currentValue","push","hasOperateList","find","temp","hasOperateTotal","hasOperateIndex","forEach","reduce","a","b","concat","gridGroupList","error","defaultGrid","FormRow","screenType","useResponsivePoint","childrenList","toArray","isValidElement","valueIsEqual","type","_useMemo","findIndex","undefined","_currentGridList","_temp$props","_temp$props2","span","_extends2","itemProps","newProps","key","cloneElement","FormGrid","OperateCol"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/modal-action/modal-action.tsx"],"sourcesContent":["import { Fragment, isValidElement, ReactElement, useState } from 'react';\n\ntype onClick = (e?: React.MouseEvent<HTMLElement>) => void;\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/modal-action/modal-action.tsx"],"sourcesContent":["import { TAny } from '@flatbiz/utils';\nimport { Fragment, isValidElement, ReactElement, useState } from 'react';\n\ntype onClick = (e?: React.MouseEvent<HTMLElement>) => void;\nexport interface ModalActionProps {\n children: ReactElement | ((data: { onClose: () => void; open: boolean }) => ReactElement);\n action?:\n | (ReactElement & { onClick?: onClick })\n | ((data: { onClick: onClick; onClose: () => void; open: boolean }) => ReactElement);\n}\n\n/**\n * 弹框 触发器\n * ```\n * <ModalAction action={<Button type=\"primary\">打开</Button>}>\n * {({ onClose }) => (\n * <Modal onOk={onClose}>xxx</Modal>\n * )}\n * </ModalAction>\n * ```\n */\nexport const ModalAction = (props: ModalActionProps) => {\n const { action, children } = props;\n\n const [open, setOpen] = useState<boolean>(false);\n\n const handleOnClick = async (e: unknown) => {\n if (isValidElement(action)) {\n const { onClick } = action.props;\n if (typeof onClick === 'function') {\n await onClick?.(e);\n }\n }\n setOpen(true);\n };\n\n const onClose = () => {\n setOpen(false);\n };\n const childrenReactElement = isValidElement(children) ? children : (children as TAny)({ onClose, open });\n\n return (\n <Fragment>\n {isValidElement(action) ? (\n <action.type {...action.props} onClick={handleOnClick} />\n ) : (\n action?.({ onClick: handleOnClick, onClose, open })\n )}\n <childrenReactElement.type\n open={open}\n onClose={onClose}\n onCancel={onClose}\n {...childrenReactElement.props}\n />\n </Fragment>\n );\n};\n"],"names":["ModalAction","props","action","children","_useState","useState","open","setOpen","handleOnClick","e","Promise","$return","$error","_onClick","isValidElement","onClick","resolve","then","$await_3","$If_2","call","this","$boundEx","bind","$If_1","onClose","childrenReactElement","_jsxs","Fragment","_jsx","type","_extends","onCancel"],"mappings":";sLAqBaA,EAAc,SAAdA,EAAeC,GAC1B,IAAQC,EAAqBD,EAArBC,OAAQC,EAAaF,EAAbE,SAEhB,IAAAC,EAAwBC,EAAkB,OAAnCC,EAAIF,EAAA,GAAEG,EAAOH,EAAA,GAEpB,IAAMI,EAAgB,SAAhBA,EAAuBC,GAAP,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IAAAC,EACpB,GAAIC,EAAeZ,GAAS,CAClBa,EAAYb,EAAOD,MAAnBc,QACR,UAAWA,IAAY,WAAY,CACjC,OAAAL,QAAAM,QAAMD,GAAAA,UAAAA,EAAAA,EAAUN,IAAhBQ,KA9BR,SAAAC,GAAA,IAAI,OAAJC,EAAGC,KAAQC,KAAF,CAAC,MAAAC,GAAW,OAAOV,EAAAU,EAAM,CAAC,EAAhCC,KAAKF,MAAKT,EA+BP,CAAC,SAAAO,IAAA,OA/BPK,EAAGJ,KAAQC,KAAA,CAAA,OAAXF,EAAGC,KAAQC,KAgCP,CAAC,SAAAG,IACDjB,EAAQ,MAAM,OAAAI,GAAA,CAAA,OAjClBa,EAAGJ,KAAQC,KAAA,GAkCR,EAED,IAAMI,EAAU,SAAVA,IACJlB,EAAQ,QAEV,IAAMmB,EAAuBZ,EAAeX,GAAYA,EAAYA,EAAkB,CAAEsB,QAAAA,EAASnB,KAAAA,IAEjG,OACEqB,EAACC,EAAQ,CAAAzB,UACNW,EAAeZ,GACd2B,EAAC3B,EAAO4B,KAAIC,EAAK7B,GAAAA,EAAOD,MAAK,CAAEc,QAASP,KAExCN,GAAAA,UAAAA,EAAAA,EAAS,CAAEa,QAASP,EAAeiB,QAAAA,EAASnB,KAAAA,IAE9CuB,EAACH,EAAqBI,KAAIC,EAAA,CACxBzB,KAAMA,EACNmB,QAASA,EACTO,SAAUP,GACNC,EAAqBzB,UAIjC"}
|
|
@@ -3,5 +3,5 @@ import './../dynamic-node/index.css';
|
|
|
3
3
|
import './../fba-hooks/index.css';
|
|
4
4
|
import './index.css';
|
|
5
5
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
6
|
-
export{R as RichTextEditor}from"../rich-text-editor-
|
|
6
|
+
export{R as RichTextEditor}from"../rich-text-editor-417bf0d8.js";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"@dimjs/utils/cjs/class-names";import"@wove/react/cjs/hooks";import"@tinymce/tinymce-react";import"ahooks";import"react";import"@ant-design/icons/es/icons/PlusCircleOutlined";import"antd";import"../dynamic-node-577ef8fd.js";import"react-dom";import"../dom-4d04aa64.js";import"react/jsx-runtime";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
+
import{_ as e,a as n}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{hooks as o}from"@wove/react/cjs/hooks";import{Editor as t}from"@tinymce/tinymce-react";import{useKeyPress as i}from"ahooks";import{Fragment as a,useRef as l,useState as s}from"react";import c from"@ant-design/icons/es/icons/PlusCircleOutlined";import{Image as u}from"antd";import{d as m}from"./dynamic-node-577ef8fd.js";import{fbaHooks as d}from"./fba-hooks/index.js";import{jsx as f,Fragment as p,jsxs as v}from"react/jsx-runtime";var g=function e(n){var r=n.visible,o=n.url;d.useEffectCustom((function(){if(r){m.append({content:f(c,{onClick:n.close,className:"preview-image-popup-close",twoToneColor:"#1890ff"})})}else{m.remove()}}),[r]);if(!o)return f(p,{});return f(a,{children:f(u,{style:{left:"100px"},preview:{className:"preview-image-popup",maskStyle:{backgroundColor:"rgba(0,0,0,0.85)"},visible:r,src:o,onVisibleChange:function e(){n.close()}}},o)})};var h=["onUploadImage","onChange","className"];var y=function a(c){var u=c.onUploadImage,m=c.onChange,d=c.className,p=e(c,h);var y=l(null);var b=s(""),k=b[0],C=b[1];i((function(){return true}),(function(e){try{if(e.type==="keyup"&&e.key==="Escape"){var n;var r=(n=y.current)==null?void 0:n.editorContainer.classList.contains("tox-fullscreen");if(r){var o;(o=y.current)==null?void 0:o.editorCommands.execCommand("mceFullScreen")}}}catch(e){}}),{events:["keydown","keyup"]});var x=o.useCallbackRef((function(e,n){try{if(e.keyCode==27){var r;var o=(r=y.current)==null?void 0:r.editorContainer.classList.contains("tox-fullscreen");if(o){var t;(t=y.current)==null?void 0:t.editorCommands.execCommand("mceFullScreen")}}}catch(e){}c.onKeyDown==null?void 0:c.onKeyDown(e,n)}));var w=o.useCallbackRef((function(e,n){y.current=n;try{var r,o;(r=n.iframeElement)==null?void 0:(o=r.contentDocument)==null?void 0:o.addEventListener("click",(function(e){var n;if(c.imgPreview&&((n=e.target)==null?void 0:n["tagName"])==="IMG"){C(e.target["src"])}}),true)}catch(e){}p.onInit==null?void 0:p.onInit(e,n)}));var _=o.useCallbackRef((function(e,n){y.current=n;p.onEditorChange==null?void 0:p.onEditorChange(e,n);m==null?void 0:m(e)}));var j="https://file.40017.cn/tcsk/tinymce@6.4.1";return v("div",{className:r("v-editor-wrapper",d),children:[f(t,n({tinymceScriptSrc:j+"/tinymce.min.js"},p,{onInit:w,onKeyDown:x,onEditorChange:_,init:n({promotion:false,language:"zh-Hans",height:500,paste_data_images:u?true:false,autosave_ask_before_unload:false,base_url:j,images_upload_handler:function e(n){return new Promise((function(e,r){var o,t,i;var a=function(n){try{return e(Promise.reject((n==null?void 0:n.message)||"图片上传异常"))}catch(e){return r(e)}};try{o=n.blob();t=new File([o],o.name,{type:o.type});return Promise.resolve(u==null?void 0:u(t)).then((function(n){try{i=n;return e(Promise.resolve(i))}catch(e){return a(e)}}),a)}catch(e){a(e)}}))},content_style:"img {max-width:100%;} table{width:100%}",plugins:"lists link image advlist charmap preview fullscreen code table help",toolbar:"undo redo fullscreen preview | bold italic underline strikethrough |"+"fontsize blocks |"+"alignleft aligncenter alignright alignjustify |"+"outdent indent | numlist bullist advlist |"+"forecolor backcolor removeformat |"+"code image link",font_size_formats:"8px 10px 12px 14px 16px 18px 24px 36px 48px"},c.init)})),f(g,{visible:!!k,url:k,close:function e(){C("")}})]})};export{y as R};
|
|
3
|
+
//# sourceMappingURL=rich-text-editor-417bf0d8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-text-editor-8847f378.js","sources":["@flatbiz/antd/src/rich-text-editor/preview/preview.tsx","@flatbiz/antd/src/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["import { PlusCircleOutlined } from '@ant-design/icons';\nimport { Image } from 'antd';\nimport { Fragment } from 'react';\nimport { dynamicNode } from '../../dynamic-node';\nimport { fbaHooks } from '../../fba-hooks';\nimport './preview.less';\n\nexport const Preview = (props) => {\n const { visible, url } = props;\n\n fbaHooks.useEffectCustom(() => {\n if (visible) {\n dynamicNode.append({\n content: (\n <PlusCircleOutlined\n onClick={props.close}\n className=\"preview-image-popup-close\"\n twoToneColor=\"#1890ff\"\n />\n ),\n });\n } else {\n dynamicNode.remove();\n }\n }, [visible]);\n\n if (!url) return <></>;\n\n return (\n <Fragment>\n <Image\n key={url}\n style={{ left: '100px' }}\n preview={{\n className: 'preview-image-popup',\n maskStyle: { backgroundColor: 'rgba(0,0,0,0.85)' },\n visible,\n src: url,\n onVisibleChange: () => {\n props.close();\n },\n }}\n />\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { TAny } from '@flatbiz/utils';\nimport { Editor, IAllProps } from '@tinymce/tinymce-react';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { useRef, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\nimport { Preview } from './preview';\nimport './style.less';\n\nexport interface RichTextEditorProps extends Omit<IAllProps, 'onChange'> {\n onChange?: (data?: string) => void;\n // value?: string;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n className?: string;\n /** 图片点击预览 */\n imgPreview?: boolean;\n}\n\n/**\n * 富文本编辑器,配置参考tinymce https://www.tiny.cloud/docs/tinymce/6\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 如果不需要粘贴上传图片,可配置 init.paste_data_images = false\n * 3. 获取富文本实例,通过onInit(_, editor)函数获取\n * 5. 预览富文本数据,使用 RichTextViewer 组件\n * ```\n */\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const { onUploadImage, onChange, className, ...otherProps } = props;\n\n const editorRef = useRef<TAny>(null);\n const [previewUrl, setPreviewUrl] = useState('');\n\n // const varStyleString = useMemo(() => {\n // const merge = { ...defaultVarStyle, ...props.varStyle };\n // let varStyleString = '';\n // Object.keys(merge).map((key) => {\n // varStyleString += `${key}:${merge[key]};`;\n // });\n // return varStyleString;\n // }, [props.varStyle]);\n\n // const images_upload_handler = hooks.useCallbackRef(async (blobInfo: BlobInfo, progress: ProgressFn) => {\n // try {\n // const respData = await props.onUploadImage?.(blobInfo.blob());\n // success(respData);\n // } catch (error) {\n // failure(error.message);\n // }\n // });\n\n useKeyPress(\n () => true,\n (event) => {\n try {\n if (event.type === 'keyup' && event.key === 'Escape') {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n },\n {\n events: ['keydown', 'keyup'],\n },\n );\n\n const onKeyDown = hooks.useCallbackRef((event, editor: TinyMCEEditor) => {\n try {\n if (event.keyCode == 27) {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n props.onKeyDown?.(event, editor);\n });\n\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n try {\n editor.iframeElement?.contentDocument?.addEventListener(\n 'click',\n (event) => {\n if (props.imgPreview && event.target?.['tagName'] === 'IMG') {\n setPreviewUrl(event.target['src']);\n }\n },\n true,\n );\n } catch (error) {\n //\n }\n otherProps.onInit?.(_, editor);\n });\n\n const onEditorChange = hooks.useCallbackRef((a: string, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n otherProps.onEditorChange?.(a, editor);\n onChange?.(a);\n });\n\n const tinymceBaseUrl = 'https://file.40017.cn/tcsk/tinymce@6.4.1';\n\n return (\n <div className={classNames('v-editor-wrapper', className)}>\n <Editor\n // apiKey=\"ds6j8so4g3d2cycidbhgkds36q0phy1uqd9jd8bot91sfe5l\"\n tinymceScriptSrc={`${tinymceBaseUrl}/tinymce.min.js`}\n {...otherProps}\n onInit={onInit}\n onKeyDown={onKeyDown}\n onEditorChange={onEditorChange}\n init={{\n promotion: false,\n language: 'zh-Hans',\n height: 500,\n paste_data_images: onUploadImage ? true : false,\n autosave_ask_before_unload: false,\n base_url: tinymceBaseUrl,\n images_upload_handler: async (blobInfo) => {\n try {\n const blob = blobInfo.blob();\n const file = new File([blob], blob.name, { type: blob.type });\n const respData = await onUploadImage?.(file);\n return Promise.resolve(respData as string);\n } catch (error) {\n return Promise.reject(error?.message || '图片上传异常');\n }\n },\n content_style: 'img {max-width:100%;} table{width:100%}',\n plugins: 'lists link image advlist charmap preview fullscreen code table help',\n toolbar:\n 'undo redo fullscreen preview | bold italic underline strikethrough |' +\n 'fontsizeselect formatselect |' +\n 'alignleft aligncenter alignright alignjustify |' +\n 'outdent indent | numlist bullist advlist |' +\n 'forecolor backcolor removeformat |' +\n 'code image link',\n ...props.init,\n }}\n />\n <Preview\n visible={!!previewUrl}\n url={previewUrl}\n close={() => {\n setPreviewUrl('');\n }}\n />\n </div>\n );\n};\n\n/**\n * undo redo\n * codesample\n * fontselect fontsizeselect formatselect\n * image media link anchor\n * preview save print\n * emoticons(表情)\n */\n"],"names":["Preview","props","visible","url","fbaHooks","useEffectCustom","dynamicNode","append","content","_jsx","_PlusCircleOutlined","onClick","close","className","twoToneColor","remove","_Fragment","Fragment","children","Image","style","left","preview","maskStyle","backgroundColor","src","onVisibleChange","RichTextEditor","onUploadImage","onChange","otherProps","_objectWithoutPropertiesLoose","_excluded","editorRef","useRef","_useState","useState","previewUrl","setPreviewUrl","useKeyPress","event","type","key","_editorRef$current","isFull","current","editorContainer","classList","contains","_editorRef$current2","editorCommands","execCommand","error","events","onKeyDown","_hooks","useCallbackRef","editor","keyCode","_editorRef$current3","_editorRef$current4","onInit","_","_editor$iframeElement","_editor$iframeElement2","iframeElement","contentDocument","addEventListener","_event$target","imgPreview","target","onEditorChange","a","tinymceBaseUrl","_jsxs","_classNames","Editor","_extends","tinymceScriptSrc","init","promotion","language","height","paste_data_images","autosave_ask_before_unload","base_url","images_upload_handler","blobInfo","Promise","$return","$error","blob","_file","respData","$Try_4_Catch","reject","message","$boundEx","file","File","name","resolve","then","$await_5","content_style","plugins","toolbar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rich-text-editor-417bf0d8.js","sources":["@flatbiz/antd/src/rich-text-editor/preview/preview.tsx","@flatbiz/antd/src/rich-text-editor/rich-text-editor.tsx"],"sourcesContent":["import { PlusCircleOutlined } from '@ant-design/icons';\nimport { Image } from 'antd';\nimport { Fragment } from 'react';\nimport { dynamicNode } from '../../dynamic-node';\nimport { fbaHooks } from '../../fba-hooks';\nimport './preview.less';\n\nexport const Preview = (props) => {\n const { visible, url } = props;\n\n fbaHooks.useEffectCustom(() => {\n if (visible) {\n dynamicNode.append({\n content: (\n <PlusCircleOutlined\n onClick={props.close}\n className=\"preview-image-popup-close\"\n twoToneColor=\"#1890ff\"\n />\n ),\n });\n } else {\n dynamicNode.remove();\n }\n }, [visible]);\n\n if (!url) return <></>;\n\n return (\n <Fragment>\n <Image\n key={url}\n style={{ left: '100px' }}\n preview={{\n className: 'preview-image-popup',\n maskStyle: { backgroundColor: 'rgba(0,0,0,0.85)' },\n visible,\n src: url,\n onVisibleChange: () => {\n props.close();\n },\n }}\n />\n </Fragment>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { TAny } from '@flatbiz/utils';\nimport { Editor, IAllProps } from '@tinymce/tinymce-react';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { useRef, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\nimport { Preview } from './preview';\nimport './style.less';\n\nexport interface RichTextEditorProps extends Omit<IAllProps, 'onChange'> {\n onChange?: (data?: string) => void;\n // value?: string;\n /** 上传图片服务 */\n onUploadImage?: (file: File) => Promise<string>;\n className?: string;\n /** 图片点击预览 */\n imgPreview?: boolean;\n}\n\n/**\n * 富文本编辑器,配置参考tinymce https://www.tiny.cloud/docs/tinymce/6\n * @param props\n * @returns\n * ```\n * 1. 如果需要粘贴上传图片服务,需要提供 onUploadImage 上传图片接口\n * 2. 如果不需要粘贴上传图片,可配置 init.paste_data_images = false\n * 3. 获取富文本实例,通过onInit(_, editor)函数获取\n * 5. 预览富文本数据,使用 RichTextViewer 组件\n * ```\n */\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const { onUploadImage, onChange, className, ...otherProps } = props;\n\n const editorRef = useRef<TAny>(null);\n const [previewUrl, setPreviewUrl] = useState('');\n\n // const varStyleString = useMemo(() => {\n // const merge = { ...defaultVarStyle, ...props.varStyle };\n // let varStyleString = '';\n // Object.keys(merge).map((key) => {\n // varStyleString += `${key}:${merge[key]};`;\n // });\n // return varStyleString;\n // }, [props.varStyle]);\n\n // const images_upload_handler = hooks.useCallbackRef(async (blobInfo: BlobInfo, progress: ProgressFn) => {\n // try {\n // const respData = await props.onUploadImage?.(blobInfo.blob());\n // success(respData);\n // } catch (error) {\n // failure(error.message);\n // }\n // });\n\n useKeyPress(\n () => true,\n (event) => {\n try {\n if (event.type === 'keyup' && event.key === 'Escape') {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n },\n {\n events: ['keydown', 'keyup'],\n },\n );\n\n const onKeyDown = hooks.useCallbackRef((event, editor: TinyMCEEditor) => {\n try {\n if (event.keyCode == 27) {\n const isFull = editorRef.current?.editorContainer.classList.contains('tox-fullscreen');\n if (isFull) {\n editorRef.current?.editorCommands.execCommand('mceFullScreen');\n }\n }\n } catch (error) {\n // 异常不处理\n }\n props.onKeyDown?.(event, editor);\n });\n\n const onInit = hooks.useCallbackRef((_, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n try {\n editor.iframeElement?.contentDocument?.addEventListener(\n 'click',\n (event) => {\n if (props.imgPreview && event.target?.['tagName'] === 'IMG') {\n setPreviewUrl(event.target['src']);\n }\n },\n true,\n );\n } catch (error) {\n //\n }\n otherProps.onInit?.(_, editor);\n });\n\n const onEditorChange = hooks.useCallbackRef((a: string, editor: TinyMCEEditor) => {\n editorRef.current = editor;\n otherProps.onEditorChange?.(a, editor);\n onChange?.(a);\n });\n\n const tinymceBaseUrl = 'https://file.40017.cn/tcsk/tinymce@6.4.1';\n\n return (\n <div className={classNames('v-editor-wrapper', className)}>\n <Editor\n // apiKey=\"ds6j8so4g3d2cycidbhgkds36q0phy1uqd9jd8bot91sfe5l\"\n tinymceScriptSrc={`${tinymceBaseUrl}/tinymce.min.js`}\n {...otherProps}\n onInit={onInit}\n onKeyDown={onKeyDown}\n onEditorChange={onEditorChange}\n init={{\n promotion: false,\n language: 'zh-Hans',\n height: 500,\n paste_data_images: onUploadImage ? true : false,\n autosave_ask_before_unload: false,\n base_url: tinymceBaseUrl,\n images_upload_handler: async (blobInfo) => {\n try {\n const blob = blobInfo.blob();\n const file = new File([blob], blob.name, { type: blob.type });\n const respData = await onUploadImage?.(file);\n return Promise.resolve(respData as string);\n } catch (error) {\n return Promise.reject(error?.message || '图片上传异常');\n }\n },\n content_style: 'img {max-width:100%;} table{width:100%}',\n plugins: 'lists link image advlist charmap preview fullscreen code table help',\n toolbar:\n 'undo redo fullscreen preview | bold italic underline strikethrough |' +\n 'fontsize blocks |' +\n 'alignleft aligncenter alignright alignjustify |' +\n 'outdent indent | numlist bullist advlist |' +\n 'forecolor backcolor removeformat |' +\n 'code image link',\n font_size_formats: '8px 10px 12px 14px 16px 18px 24px 36px 48px',\n ...props.init,\n }}\n />\n <Preview\n visible={!!previewUrl}\n url={previewUrl}\n close={() => {\n setPreviewUrl('');\n }}\n />\n </div>\n );\n};\n\n/**\n * undo redo\n * codesample\n * fontselect fontsizeselect formatselect\n * image media link anchor\n * preview save print\n * emoticons(表情)\n */\n"],"names":["Preview","props","visible","url","fbaHooks","useEffectCustom","dynamicNode","append","content","_jsx","_PlusCircleOutlined","onClick","close","className","twoToneColor","remove","_Fragment","Fragment","children","Image","style","left","preview","maskStyle","backgroundColor","src","onVisibleChange","RichTextEditor","onUploadImage","onChange","otherProps","_objectWithoutPropertiesLoose","_excluded","editorRef","useRef","_useState","useState","previewUrl","setPreviewUrl","useKeyPress","event","type","key","_editorRef$current","isFull","current","editorContainer","classList","contains","_editorRef$current2","editorCommands","execCommand","error","events","onKeyDown","_hooks","useCallbackRef","editor","keyCode","_editorRef$current3","_editorRef$current4","onInit","_","_editor$iframeElement","_editor$iframeElement2","iframeElement","contentDocument","addEventListener","_event$target","imgPreview","target","onEditorChange","a","tinymceBaseUrl","_jsxs","_classNames","Editor","_extends","tinymceScriptSrc","init","promotion","language","height","paste_data_images","autosave_ask_before_unload","base_url","images_upload_handler","blobInfo","Promise","$return","$error","blob","_file","respData","$Try_4_Catch","reject","message","$boundEx","file","File","name","resolve","then","$await_5","content_style","plugins","toolbar","font_size_formats"],"mappings":"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"}
|
|
@@ -4,5 +4,5 @@ import './../dynamic-node/index.css';
|
|
|
4
4
|
import './../fba-hooks/index.css';
|
|
5
5
|
import './index.css';
|
|
6
6
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
7
|
-
import e from"@ant-design/icons/es/icons/FullscreenOutlined";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{IconWrapper as o}from"@flatbiz/antd";import{useKeyPress as t}from"ahooks";import{useState as s}from"react";import{R as n}from"../rich-text-editor-
|
|
7
|
+
import e from"@ant-design/icons/es/icons/FullscreenOutlined";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{hooks as r}from"@wove/react/cjs/hooks";import{IconWrapper as o}from"@flatbiz/antd";import{useKeyPress as t}from"ahooks";import{useState as s}from"react";import{R as n}from"../rich-text-editor-417bf0d8.js";import{jsxs as a,jsx as l}from"react/jsx-runtime";import"../_rollupPluginBabelHelpers-1f4d8910.js";import"@tinymce/tinymce-react";import"@ant-design/icons/es/icons/PlusCircleOutlined";import"antd";import"../dynamic-node-577ef8fd.js";import"react-dom";import"../dom-4d04aa64.js";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";var m=function m(c){var u=s(false),p=u[0],d=u[1];t((function(){return true}),(function(e){if(e.type==="keyup"&&e.key==="Escape"&&p){d(false)}}),{events:["keydown","keyup"]});var f=r.useCallbackRef((function(){d(!p)}));var v=r.useCallbackRef((function(e,i){c.onInit==null?void 0:c.onInit(i)}));return a("div",{className:i("fba-editor-viewer",{"fba-editor-viewer-fixed":p},c.className),style:c.style,children:[c.children,c.fullscreen&&c.data&&l("div",{className:"fba-editor-viewer-icon",children:l(o,{hoverTips:c.fullscreenIconTips,icon:l(e,{}),onClick:f})}),l(n,{value:c.data,onInit:v,imgPreview:true,disabled:true,init:{plugins:"autoresize",menubar:false,toolbar:"",statusbar:false}})]})};export{m as RichTextViewer};
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-viewer/rich-text-viewer.tsx"],"sourcesContent":["import { FullscreenOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { IconWrapper } from '@flatbiz/antd';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { CSSProperties, ReactElement, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\nimport { RichTextEditor } from '../rich-text-editor';\n\nimport './style.less';\n\ntype RichTextViewerProps = {\n data: string;\n className?: string;\n fullscreen?: boolean;\n onInit?: (editor: TinyMCEEditor) => void;\n children?: ReactElement;\n style?: CSSProperties;\n fullscreenIconTips?: string;\n};\n\n/**\n * 预览 RichTextEditor 生成的富文本数据\n * @param props\n * @returns\n */\nexport const RichTextViewer = (props: RichTextViewerProps) => {\n const [isFixed, setIsFixed] = useState(false);\n\n useKeyPress(\n () => true,\n (event) => {\n if (event.type === 'keyup' && event.key === 'Escape' && isFixed) {\n setIsFixed(false);\n }\n },\n { events: ['keydown', 'keyup'] },\n );\n\n const onChangeFixed = hooks.useCallbackRef(() => {\n setIsFixed(!isFixed);\n });\n const onInit = hooks.useCallbackRef((_, editor) => {\n props.onInit?.(editor);\n });\n\n return (\n <div\n className={classNames('fba-editor-viewer', { 'fba-editor-viewer-fixed': isFixed }, props.className)}\n style={props.style}\n >\n {props.children}\n {props.fullscreen && props.data && (\n <div className=\"fba-editor-viewer-icon\">\n <IconWrapper\n hoverTips={props.fullscreenIconTips}\n icon={<FullscreenOutlined />}\n onClick={onChangeFixed}\n />\n </div>\n )}\n <RichTextEditor\n value={props.data}\n onInit={onInit}\n imgPreview\n disabled\n init={{\n plugins: 'autoresize',\n menubar: false,\n toolbar: '',\n statusbar: false,\n }}\n />\n </div>\n );\n};\n"],"names":["RichTextViewer","props","_useState","useState","isFixed","setIsFixed","useKeyPress","event","type","key","events","onChangeFixed","_hooks","useCallbackRef","onInit","_","editor","_jsxs","className","_classNames","style","children","fullscreen","data","_jsx","IconWrapper","hoverTips","fullscreenIconTips","icon","_FullscreenOutlined","onClick","RichTextEditor","value","imgPreview","disabled","init","plugins","menubar","toolbar","statusbar"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/rich-text-viewer/rich-text-viewer.tsx"],"sourcesContent":["import { FullscreenOutlined } from '@ant-design/icons';\nimport { classNames } from '@dimjs/utils';\nimport { IconWrapper } from '@flatbiz/antd';\nimport { hooks } from '@wove/react';\nimport { useKeyPress } from 'ahooks';\nimport { CSSProperties, ReactElement, useState } from 'react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\nimport { RichTextEditor } from '../rich-text-editor';\n\nimport './style.less';\n\ntype RichTextViewerProps = {\n data: string;\n className?: string;\n fullscreen?: boolean;\n onInit?: (editor: TinyMCEEditor) => void;\n children?: ReactElement;\n style?: CSSProperties;\n fullscreenIconTips?: string;\n};\n\n/**\n * 预览 RichTextEditor 生成的富文本数据\n * ```\n * 1. 如果高度发生变更,可执行 editor.execCommand('mceAutoResize');\n * ```\n * @param props\n * @returns\n */\nexport const RichTextViewer = (props: RichTextViewerProps) => {\n const [isFixed, setIsFixed] = useState(false);\n\n useKeyPress(\n () => true,\n (event) => {\n if (event.type === 'keyup' && event.key === 'Escape' && isFixed) {\n setIsFixed(false);\n }\n },\n { events: ['keydown', 'keyup'] },\n );\n\n const onChangeFixed = hooks.useCallbackRef(() => {\n setIsFixed(!isFixed);\n });\n const onInit = hooks.useCallbackRef((_, editor) => {\n props.onInit?.(editor);\n });\n\n return (\n <div\n className={classNames('fba-editor-viewer', { 'fba-editor-viewer-fixed': isFixed }, props.className)}\n style={props.style}\n >\n {props.children}\n {props.fullscreen && props.data && (\n <div className=\"fba-editor-viewer-icon\">\n <IconWrapper\n hoverTips={props.fullscreenIconTips}\n icon={<FullscreenOutlined />}\n onClick={onChangeFixed}\n />\n </div>\n )}\n <RichTextEditor\n value={props.data}\n onInit={onInit}\n imgPreview\n disabled\n init={{\n plugins: 'autoresize',\n menubar: false,\n toolbar: '',\n statusbar: false,\n }}\n />\n </div>\n );\n};\n"],"names":["RichTextViewer","props","_useState","useState","isFixed","setIsFixed","useKeyPress","event","type","key","events","onChangeFixed","_hooks","useCallbackRef","onInit","_","editor","_jsxs","className","_classNames","style","children","fullscreen","data","_jsx","IconWrapper","hoverTips","fullscreenIconTips","icon","_FullscreenOutlined","onClick","RichTextEditor","value","imgPreview","disabled","init","plugins","menubar","toolbar","statusbar"],"mappings":";gtBA6BaA,EAAiB,SAAjBA,EAAkBC,GAC7B,IAAAC,EAA8BC,EAAS,OAAhCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GAE1BI,GACE,WAAA,OAAM,IACN,IAAA,SAACC,GACC,GAAIA,EAAMC,OAAS,SAAWD,EAAME,MAAQ,UAAYL,EAAS,CAC/DC,EAAW,MACb,CACF,GACA,CAAEK,OAAQ,CAAC,UAAW,WAGxB,IAAMC,EAAgBC,EAAMC,gBAAe,WACzCR,GAAYD,EACd,IACA,IAAMU,EAASF,EAAMC,gBAAe,SAACE,EAAGC,GACtCf,EAAMa,QAANb,UAAAA,EAAAA,EAAMa,OAASE,EACjB,IAEA,OACEC,EAAA,MAAA,CACEC,UAAWC,EAAW,oBAAqB,CAAE,0BAA2Bf,GAAWH,EAAMiB,WACzFE,MAAOnB,EAAMmB,MAAMC,SAElBpB,CAAAA,EAAMoB,SACNpB,EAAMqB,YAAcrB,EAAMsB,MACzBC,EAAA,MAAA,CAAKN,UAAU,yBAAwBG,SACrCG,EAACC,EAAW,CACVC,UAAWzB,EAAM0B,mBACjBC,KAAMJ,EAAAK,EAAuB,IAC7BC,QAASnB,MAIfa,EAACO,EAAc,CACbC,MAAO/B,EAAMsB,KACbT,OAAQA,EACRmB,WAAU,KACVC,SAAQ,KACRC,KAAM,CACJC,QAAS,aACTC,QAAS,MACTC,QAAS,GACTC,UAAW,WAKrB"}
|
|
@@ -8,5 +8,5 @@ import './../dropdown-menu-wrapper/index.css';
|
|
|
8
8
|
import './../tag-list-select/index.css';
|
|
9
9
|
import './index.css';
|
|
10
10
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
11
|
-
import{isString as r}from"@dimjs/lang/cjs/is-string";import{isObject as t}from"@dimjs/lang/cjs/is-object";import{get as e}from"@dimjs/utils/cjs/get";import{isPlainObject as i}from"@dimjs/lang/cjs/is-plain-object";import{a as n}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{isNumber as o}from"@dimjs/lang/cjs/is-number";import{isEmpty as a}from"@dimjs/lang/cjs/is-empty";import{isUndefinedOrNull as s,getStrByteLen as l,cutString as u,flatbizDate as m}from"@flatbiz/utils";import{Tooltip as p,Space as c}from"antd";import{Fragment as f}from"react";import{a as d}from"../button-operate-
|
|
11
|
+
import{isString as r}from"@dimjs/lang/cjs/is-string";import{isObject as t}from"@dimjs/lang/cjs/is-object";import{get as e}from"@dimjs/utils/cjs/get";import{isPlainObject as i}from"@dimjs/lang/cjs/is-plain-object";import{a as n}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{isNumber as o}from"@dimjs/lang/cjs/is-number";import{isEmpty as a}from"@dimjs/lang/cjs/is-empty";import{isUndefinedOrNull as s,getStrByteLen as l,cutString as u,flatbizDate as m}from"@flatbiz/utils";import{Tooltip as p,Space as c}from"antd";import{Fragment as f}from"react";import{a as d}from"../button-operate-1ea0fe5a.js";import{T as j}from"../tag-list-select-066f682f.js";import{jsx as v}from"react/jsx-runtime";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"../button-wrapper-698da5b1.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper-dfe8f592.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"../fba-utils-a4c7d94d.js";import"../dropdown-menu-wrapper-24932100.js";var g=function r(t,e){return function(r){if(a(r)||r==="")return e;if(o(r))return r;var i=r.toString();var n=s(t)?10:t;var m=l(i);if(m<=n*2){return i}return v(p,{placement:"topLeft",title:i,children:u(i,n*2)})}};var h=function r(t){return function(r,e,i){var o=t(e,i);return v(d,n({},o))}};var w=function r(t,e){return function(r){if(a(r)||r==="")return e;try{return m.format(new Date(r),t)}catch(t){return r||e}}};var y=function r(t,e){return function(r,i,n){if(e&&t){return(t-1)*e+n+1}return n+1}};var b=function r(t){return function(r,e,i){var n=(t==null?void 0:t())||{},o=n.pageNo,a=n.pageSize;if(a&&o){return(o-1)*a+i+1}return i+1}};var x=function r(t,e){return function(r){return v(j,{dataList:t,colorMap:e,value:r,forceMatch:false})}};var C=function r(n,o){return function(r){if(i(r)){var a=e(r,n,o);if(!a)return"";if(t(a))return JSON.stringify(a);return a}return r||o}};var k=function t(e){return function(t,i){var n=e==null?void 0:e(i);if(!n)return v(f,{children:t});var o=s(n.showData)?true:n.showData;var a=s(n.notOverflowShowExtra)?true:n.notOverflowShowExtra;var l=s(n.showMaxNumber)?10:n.showMaxNumber;var m=n.extraPosition?n.extraPosition:"after";var p=r(t)?u(t,l*2):t;if(n.extra&&o){if(p===t&&!a){return t}var d=[v("span",{children:p},"1"),v(f,{children:n.extra},"2")];var j=m==="before"?d.reverse():d;return v(c,{onClick:n.onClick,style:{cursor:n.onClick?"pointer":undefined},size:5,children:j.map((function(r,t){return v(f,{children:r},t)}))})}return v("span",{onClick:n.onClick,children:n.extra})}};var N={extraContentRender:k,indexCell:y,serialNumberCell:b,dateCell:w,operateCell:h,tooltipCell:g,selectorCell:x,objectCell:C};export{N as tableCellRender};
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.tabs-fixed{height:100%;overflow:hidden}.tabs-fixed>.ant-tabs-content-holder{flex:1;overflow-y:auto}.tabs-fixed>.ant-tabs-content-holder>.ant-tabs-content,.tabs-fixed>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{height:100%}
|
|
1
|
+
.fba-tabs-wrapper-fixed{height:100%;overflow:hidden}.fba-tabs-wrapper-fixed>.ant-tabs-content-holder{flex:1;overflow-y:auto}.fba-tabs-wrapper-fixed>.ant-tabs-content-holder>.ant-tabs-content,.fba-tabs-wrapper-fixed>.ant-tabs-content-holder>.ant-tabs-content>.ant-tabs-tabpane{height:100%}.fba-tabs-wrapper-hidden-header .ant-tabs-nav{display:none}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import './index.css';
|
|
3
3
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{_ as e,a
|
|
4
|
+
import{_ as e,a}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{hooks as t}from"@wove/react/cjs/hooks";import{isUndefined as i}from"@dimjs/lang/cjs/is-undefined";import{sessionStorageCache as c}from"@flatbiz/utils";import{Tabs as o}from"antd";import{useMemo as s}from"react";import{jsx as n}from"react/jsx-runtime";var v=["isSticky","isFixed","activeCacheKey","cancelActiveCache","hiddenTabHeader"];var l=function l(d){var f=d.isSticky,u=f===void 0?true:f,m=d.isFixed,p=m===void 0?true:m,y=d.activeCacheKey,h=d.cancelActiveCache,b=d.hiddenTabHeader,K=e(d,v);var j=Object.prototype.hasOwnProperty.call(d,"activeKey");var C=y||"tabs-wrapper-activeKey";var A=i(p)?u:p;var g=t.useCallbackRef((function(e){if(h!==true&&!j){c.set(C,{activeKey:e})}K.onChange==null?void 0:K.onChange(e)}));var w=s((function(){var e;if(h===true||j){return d.defaultActiveKey}var a=(e=c.get(C))==null?void 0:e.activeKey;return a||K.defaultActiveKey}),[C,h,j,K.defaultActiveKey,d.defaultActiveKey]);var x=r({"fba-tabs-wrapper-fixed":A,"fba-tabs-wrapper-hidden-header":b},K.className);return n(o,a({},K,{className:x,defaultActiveKey:w,onChange:g}))};export{l as TabsWrapper};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tabs-wrapper/tabs-wrapper.tsx"],"sourcesContent":["import { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { sessionStorageCache } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Tabs, TabsProps } from 'antd';\nimport { useMemo } from 'react';\nimport './style.less';\n\nexport type TabsWrapperProps = TabsProps & {\n /**\n * Tabs Header 提供 Sticky 效果,默认值:true\n * @deprecated 已废弃,请使用 isFixed 属性\n */\n isSticky?: boolean;\n /**\n * Tabs Header 提供 Fixed 效果,默认值:true\n */\n isFixed?: boolean;\n /** 是否取消 active 缓存 */\n cancelActiveCache?: boolean;\n activeCacheKey?: string;\n};\n\n/**\n * Tabs 包装组件\n * ```\n * 1. Tabs Header 提供 Sticky 效果,默认值:true\n * 2. 使用时,父级必须要有高度,可置于Flex布局中\n * 3. 默认缓存激活的tab item(activeKey受控操作下缓存无效)\n * 当未设置activeKey,非受控操作时,组件内部会会话缓存activeKey,在刷新时,会显示上次的激活的tab item\n * 缓存Key:如果未设置 activeCacheKey,则使用默认的 cache key(tabs-wrapper-activeKey)\n * 缓存模式:会话缓存,在浏览器关闭后,会清除\n * ```\n */\nexport const TabsWrapper = (props: TabsWrapperProps) => {\n const {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tabs-wrapper/tabs-wrapper.tsx"],"sourcesContent":["import { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { sessionStorageCache } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Tabs, TabsProps } from 'antd';\nimport { useMemo } from 'react';\nimport './style.less';\n\nexport type TabsWrapperProps = TabsProps & {\n /**\n * Tabs Header 提供 Sticky 效果,默认值:true\n * @deprecated 已废弃,请使用 isFixed 属性\n */\n isSticky?: boolean;\n /**\n * Tabs Header 提供 Fixed 效果,默认值:true\n */\n isFixed?: boolean;\n /** 是否取消 active 缓存 */\n cancelActiveCache?: boolean;\n activeCacheKey?: string;\n /** 隐藏头部 */\n hiddenTabHeader?: boolean;\n};\n\n/**\n * Tabs 包装组件\n * ```\n * 1. Tabs Header 提供 Sticky 效果,默认值:true\n * 2. 使用时,父级必须要有高度,可置于Flex布局中\n * 3. 默认缓存激活的tab item(activeKey受控操作下缓存无效)\n * 当未设置activeKey,非受控操作时,组件内部会会话缓存activeKey,在刷新时,会显示上次的激活的tab item\n * 缓存Key:如果未设置 activeCacheKey,则使用默认的 cache key(tabs-wrapper-activeKey)\n * 缓存模式:会话缓存,在浏览器关闭后,会清除\n * ```\n */\nexport const TabsWrapper = (props: TabsWrapperProps) => {\n const {\n isSticky = true,\n isFixed = true,\n activeCacheKey,\n cancelActiveCache,\n hiddenTabHeader,\n ...otherProps\n } = props;\n // 是否受控操作\n const isControl = Object.prototype.hasOwnProperty.call(props, 'activeKey');\n const cacheKey = activeCacheKey || 'tabs-wrapper-activeKey';\n const isFixedNew = isUndefined(isFixed) ? isSticky : isFixed;\n\n const onChange = hooks.useCallbackRef((activeKey: string) => {\n if (cancelActiveCache !== true && !isControl) {\n sessionStorageCache.set(cacheKey, { activeKey });\n }\n otherProps.onChange?.(activeKey);\n });\n\n const defaultActiveKey = useMemo(() => {\n if (cancelActiveCache === true || isControl) {\n return props.defaultActiveKey;\n }\n const chcheActiveKey = sessionStorageCache.get(cacheKey)?.activeKey as string | undefined;\n return chcheActiveKey || otherProps.defaultActiveKey;\n }, [cacheKey, cancelActiveCache, isControl, otherProps.defaultActiveKey, props.defaultActiveKey]);\n\n const className = classNames(\n { 'fba-tabs-wrapper-fixed': isFixedNew, 'fba-tabs-wrapper-hidden-header': hiddenTabHeader },\n otherProps.className,\n );\n\n return (\n <Tabs {...otherProps} className={className} defaultActiveKey={defaultActiveKey} onChange={onChange} />\n );\n};\n"],"names":["TabsWrapper","props","_props$isSticky","isSticky","_props$isFixed","isFixed","activeCacheKey","cancelActiveCache","hiddenTabHeader","otherProps","_objectWithoutPropertiesLoose","_excluded","isControl","Object","prototype","hasOwnProperty","call","cacheKey","isFixedNew","_isUndefined","onChange","_hooks","useCallbackRef","activeKey","sessionStorageCache","set","defaultActiveKey","useMemo","_sessionStorageCache$","chcheActiveKey","get","className","_classNames","_jsx","Tabs","_extends"],"mappings":";mdAoCaA,EAAc,SAAdA,EAAeC,GAC1B,IAAAC,EAOID,EANFE,SAAAA,EAAQD,SAAG,EAAA,KAAIA,EAAAE,EAMbH,EALFI,QAAAA,EAAOD,SAAG,EAAA,KAAIA,EACdE,EAIEL,EAJFK,eACAC,EAGEN,EAHFM,kBACAC,EAEEP,EAFFO,gBACGC,EAAUC,EACXT,EAAKU,GAET,IAAMC,EAAYC,OAAOC,UAAUC,eAAeC,KAAKf,EAAO,aAC9D,IAAMgB,EAAWX,GAAkB,yBACnC,IAAMY,EAAaC,EAAYd,GAAWF,EAAWE,EAErD,IAAMe,EAAWC,EAAMC,gBAAe,SAACC,GACrC,GAAIhB,IAAsB,OAASK,EAAW,CAC5CY,EAAoBC,IAAIR,EAAU,CAAEM,UAAAA,GACtC,CACAd,EAAWW,UAAXX,UAAAA,EAAAA,EAAWW,SAAWG,EACxB,IAEA,IAAMG,EAAmBC,GAAQ,WAAM,IAAAC,EACrC,GAAIrB,IAAsB,MAAQK,EAAW,CAC3C,OAAOX,EAAMyB,gBACf,CACA,IAAMG,GAAcD,EAAGJ,EAAoBM,IAAIb,KAAxBW,UAAAA,EAAAA,EAAmCL,UAC1D,OAAOM,GAAkBpB,EAAWiB,gBACtC,GAAG,CAACT,EAAUV,EAAmBK,EAAWH,EAAWiB,iBAAkBzB,EAAMyB,mBAE/E,IAAMK,EAAYC,EAChB,CAAE,yBAA0Bd,EAAY,iCAAkCV,GAC1EC,EAAWsB,WAGb,OACEE,EAACC,EAAIC,KAAK1B,EAAU,CAAEsB,UAAWA,EAAWL,iBAAkBA,EAAkBN,SAAUA,IAE9F"}
|
|
@@ -9,5 +9,5 @@ import './../input-search-wrapper/index.css';
|
|
|
9
9
|
import './../request-status/index.css';
|
|
10
10
|
import './index.css';
|
|
11
11
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
12
|
-
import e from"@ant-design/icons/es/icons/CaretDownFilled";import r from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{extend as n}from"@dimjs/utils/cjs/extend";import{hooks as i}from"@wove/react/cjs/hooks";import{_ as l,a as u}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{cloneState as s}from"@dimjs/model";import{treeToArray as o,treeToTiledArray as c,treeLeafParentsArray as d,isUndefinedOrNull as f,treeFilter as v}from"@flatbiz/utils";import{Tree as m,Button as p,message as h}from"antd";import{forwardRef as g,useState as b,useMemo as y,useRef as L,useImperativeHandle as C,Fragment as w,isValidElement as j}from"react";import{a as q}from"../button-operate-794050a3.js";import{D as R}from"../dropdown-menu-wrapper-bf621188.js";import{fbaHooks as k}from"../fba-hooks/index.js";import{I as N}from"../input-search-wrapper-10d4a9b9.js";import{R as S}from"../request-status-03fc60e2.js";import{Model as T}from"@dimjs/model-react";import{isObject as P}from"@dimjs/lang/cjs/is-object";import{dequal as A}from"dequal";import{jsxs as D,jsx as E}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper-698da5b1.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper-dfe8f592.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-utils-a4c7d94d.js";import"../use-responsive-point-21b8c601.js";var I={treeList:[],treeTiledArray:[],queryIsEmpty:false};var x={actions:{setTreeList:function e(r){return function(e){e.treeList=r.treeList||[];e.treeTiledArray=o(e.treeList,r.childrenName);e.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r;if(r==="request-error"){e.treeList=[]}}},treeListAppendChildren:function e(r){return function(e){var t=o(e.treeList,r.childrenName);var n=t.find((function(e){return e[r.valueName]===r.value}));if(n){if(a(r.appendList)&&r.appendList.length>0){n[r.childrenName]=r.appendList}else{n.isLeaf=true}}e.treeTiledArray=o(e.treeList,r.childrenName)}}},state:I};var O={};var V=function e(r){if(!O[r]){O[r]=T(x)}return O[r]};var K=function e(r,t,a){var n=c(t,a);return d(r,n,true,{value:"value",parentValue:"parentValue"})};var F=function e(r,t){var n=f(r)?[]:r;n=a(n)?n:[n];n=n.map((function(e){if(P(e))return e[t.value];return e}));return n};var _=function e(r,t){var a=F(r,t);var n={};a.forEach((function(e){n[e]=true}));return n};var M=function e(r,t,a){if(f(r)&&f(t))return true;var n=_(r,a);var i=_(t,a);var l=A(n,i);return l};var U=["serviceConfig","effectDependencyList","selectorTreeList","value","onChange","modelKey","checkableResponseParentNode","checkable","onSelectorTreeListChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValueFieldNames","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType"];var z=g((function(o,d){var g=o.serviceConfig,T=o.effectDependencyList,P=o.selectorTreeList,A=o.value,I=o.onChange,x=o.modelKey,O=o.checkableResponseParentNode,_=O===void 0?true:O,z=o.checkable,B=o.onSelectorTreeListChange,W=o.treeItemDataAdapter,Y=o.searchValue,H=o.showSearch,G=o.searchPlaceholder,J=o.requestMessageConfig,Q=o.labelInValueFieldNames,X=o.labelInValue,Z=o.disabledCanUse,$=o.menuLayoutType,ee=o.menuTriggerType,re=l(o,U);var te=o.hasOwnProperty("selectorTreeList");var ae=g||{};var ne=T||[];var ie=b(),le=ie[0],ue=ie[1];var se=V(x).useStore(),oe=se[0],ce=se[1];var de=k.useSafeState(false),fe=de[0],ve=de[1];var me="request-progress-"+o.modelKey;var pe=y((function(){return u({label:"label",value:"value",children:"children"},o.fieldNames)}),[o.fieldNames]);var he=L();var ge=$===undefined?"fold":$;var be=ee===undefined?"click":ee;var ye=z===true;var Le=y((function(){return u({label:"label",value:"value"},Q)}),[Q]);var Ce=b(),we=Ce[0],je=Ce[1];var qe=L(true);var Re=b(0),ke=Re[0],Ne=Re[1];var Se=L();var Te=y((function(){var e=F(A,Le);return e}),[Le,A]);k.useEffectCustom((function(){if(f(A)&&qe.current||oe.treeList.length==0)return;qe.current=false;if(!M(A,Se.current,Le)){console.log("modelKey:"+x+" TreeWrapper key refresh",A,Se.current);Se.current=ye?Te:Te[0];var e=Ie(Te,true);ue(Array.from(new Set(e)));he.current=Te;Ne(Date.now())}}),[A,oe.treeList]);var Pe=function e(r){return r===""||f(r)};var Ae=function e(r){var t=ae.onRequestResultAdapter?ae.onRequestResultAdapter(r):r;return t};k.useEffectCustom((function(){je(Y)}),[Y]);var De=i.useCallbackRef((function(){return new Promise((function(e,r){var t,a,i,l,u;var s=function(){try{return e()}catch(e){return r(e)}};var o=function(e){try{ve(false);void h.error(e.message||"数据查询异常...");return s()}catch(e){return r(e)}};try{if(!ae.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=ae.requiredParamsKeys;a=n({},ae.params);if(t){i=t.find((function(e){return Pe(a[e])}));if(i){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return s()}catch(e){return o(e)}};var d=function(e){try{window[me]=false;ve(false);void ce.changeRequestStatus("request-error");return c()}catch(e){return o(e)}};try{ve(true);return Promise.resolve(ce.changeRequestStatus("request-progress")).then((function(e){try{window[me]=true;return Promise.resolve(ae.onRequest==null?void 0:ae.onRequest(a)).then((function(e){try{l=e;u=Ae(l);Ee(u||[]);ve(false);window[me]=false;return c()}catch(e){return d(e)}}),d)}catch(e){return d(e)}}),d)}catch(e){d(e)}}catch(e){o(e)}}))}));k.useEffectCustom((function(){if(te)return;if(Boolean(ne.length)){void De();return}var e=V(x).getState();if(e.requestStatus==="request-success"){return}if(!window[me]){void De();return}}),ne);k.useEffectCustom((function(){if(te){Ee(P||[])}}),[P]);var Ee=i.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&oe.treeList.length===0){void ce.changeRequestStatus("request-success");return}void ce.setTreeList({treeList:e||[],childrenName:pe.children});B==null?void 0:B(e)}));var Ie=i.useCallbackRef((function(e,r){var t=[];e.forEach((function(e){if(!r&&le!=null&&le.includes(e))return;var a=K(e,oe.treeList,pe);t=t.concat(a.map((function(e){return e.value})))}));return t}));i.useUpdateEffect((function(){if(we){var e=c(oe.treeList||[],pe);var r=e.filter((function(e){var r;return(r=e.label)==null?void 0:r.includes(we||"")}));ue((function(e){var t=Ie(r.map((function(e){return e.value}))).concat(e||[]);return Array.from(new Set(t))}))}else{ue([])}}),[we]);C(d,(function(){return{onClearSelectorList:function e(){void ce.resetTreeList()},getTreeDataList:function e(){return oe.treeList}}}));var xe=i.useCallbackRef((function(e){ue(e)}));var Oe=i.useCallbackRef((function(e,r,t){Se.current=e;var n=f(r)?[]:a(r)?r:[r];if(f(e)){I==null?void 0:I(e,r,t);return}if(X){var i=Le.label;var l=Le.value;var u=n.map((function(e){var r;return r={},r[i]=e[pe.label],r[l]=e[pe.value],r}));if(a(e)){I==null?void 0:I(u,n,t)}else{I==null?void 0:I(u[0],n[0],t)}}else{if(a(e)){I==null?void 0:I(e,n,t)}else{I==null?void 0:I(e,n[0],t)}}}));var Ve=i.useCallbackRef((function(e,r){var t=o.checkStrictly?e.checked:e;t=f(e)?[]:e;t=a(t)?t:[t];var n=[];var i=[];var l=[];var u=[];t.forEach((function(e){var r=oe.treeTiledArray.find((function(r){return r[pe.value]===e}));if(!r)return;var t=r==null?void 0:r[pe.children];if(!a(t)||t.length===0){n.push(r);i.push(r[pe.value])}l.push(r);u.push(r[pe.value])}));if(z){ue((function(e){var r=Ie(i).concat(e||[]);return Array.from(new Set(r))}));if(!_&&!o.checkStrictly){Oe(i,n,l)}else{Oe(u,l,l)}}else{if(t[0]){var s=l.find((function(e){return e[pe.value]===t[0]}));Oe(t[0],s,[s])}else{var c=r.node[pe.value];var d=oe.treeTiledArray.find((function(e){return e[pe.value]===c}));Oe(undefined,d,[d])}}}));var Ke=i.useCallbackRef((function(e){return W==null?void 0:W(e)}));var Fe=y((function(){var e=function e(r){return r==null?void 0:r.map((function(r){var n;var i=(Ke==null?void 0:Ke(r))||r;var l=Z?undefined:i.disabled;var s=i[pe.label];var o;if(we){var c=s.indexOf(we);var d=s.substring(0,c);var f=s.slice(c+we.length);o=c>-1?D("span",{className:t({"v-tree-item-disabled":i.disabled}),children:[d,E("span",{className:"site-tree-search-value",children:we}),f]}):null}if(!o){o=E("span",{className:t({"v-tree-item-disabled":i.disabled}),children:s})}var v=i[pe.children];return u({},i,(n={disabled:l},n[pe.label]=o,n._treeItemName=s,n._disabled=i.disabled,n[pe.children]=a(v)&&v.length>0?e(v):undefined,n))}))};var r=s(oe.treeList||[]);if(we){return e(v(s(oe.treeList||[]),(function(e){var r;var t=(r=e[pe.label])==null?void 0:r.toLowerCase();return t.indexOf(we.toLowerCase())>=0})))}return e(r)}),[oe.treeList,Ke,Z,pe.label,pe.children,we]);var _e=i.useCallbackRef((function(e){return new Promise((function(r,t){return new Promise((function(a,n){var i,l,u,s;if(e[pe.children]){r();return a()}var c=function(){try{return a()}catch(e){return n(e)}};var d=function(e){try{void h.error(e.message||"数据加载异常...");t();return c()}catch(e){return n(e)}};try{return Promise.resolve((i=o.loadDataServiceConfig)==null?void 0:i.onRequest==null?void 0:i.onRequest((l=o.loadDataServiceConfig)==null?void 0:l.getParams==null?void 0:l.getParams(e))).then((function(t){try{u=t;s=ae.onRequestResultAdapter?ae.onRequestResultAdapter(u):u;void ce.treeListAppendChildren({value:e[pe.value],appendList:s,childrenName:pe.children,valueName:pe.value}).then((function(e){Ee(e.treeList);r()}));return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}))}))}));var Me=i.useCallbackRef((function(e){var r=e==null?void 0:e[pe.children];var t=o.loadDataFlag;var a=t?!e.isLeaf:false;var n=r&&r.length>0||a;return!n}));var Ue=i.useCallbackRef((function(e){var a,n;var i=e._treeItemName||e[pe.label];if(ge==="fold"){var l;var s=[];if((l=o.menuOptions)!=null&&l.fold){var c,d,f;s=((c=o.menuOptions)==null?void 0:(d=c[ge])==null?void 0:d.call(c,u({},e,(f={},f[pe.label]=i,f))))||[]}else{var v;s=(o.getMenuOptions==null?void 0:o.getMenuOptions(u({},e,(v={},v[pe.label]=i,v))))||[]}return D(w,{children:[E("span",{className:"tree-item-title",children:e==null?void 0:e[pe.label]}),s.length>0&&E(R,{menuList:s,children:E(r,{})})]})}var m=(a=o.menuOptions)==null?void 0:a.tile==null?void 0:a.tile(u({},e,(n={},n[pe.label]=i,n)));return D(w,{children:[E("span",{className:"tree-item-title",children:e==null?void 0:e[pe.label]}),m?E(q,u({},m,{gap:5,className:t("tree-item-title-operate",m.className)})):null]})}));var ze=i.useDebounceCallback((function(e){je(e);o.onSearchValueChange==null?void 0:o.onSearchValueChange(e)}),300);var Be=i.useCallbackRef((function(e){ze(e.target.value)}));var We=i.useCallbackRef((function(e){if(!o.icon)return null;if(j(o.icon))return o.icon;var r=Me(e.data);return o.icon(u({},e,{isParent:!r,isLeaf:r}))}));var Ye=y((function(){return{title:pe.label,key:pe.value,children:pe.children}}),[pe]);var He=Fe.length>0&&oe.requestStatus!=="request-error";var Ge=u({showLine:{showLeafIcon:false},titleRender:Ue,blockNode:true,switcherIcon:E(e,{})},re,{fieldNames:Ye,expandedKeys:le,treeData:Fe,onExpand:xe,loadData:o.loadDataFlag?_e:undefined,style:u({width:"100%"},re.style),icon:We});var Je={onCheck:Ve,checkable:z,defaultCheckedKeys:he.current};var Qe={onSelect:Ve,multiple:false,defaultSelectedKeys:he.current};var Xe=z?Je:Qe;var Ze=t("v-tree-wrapper","v-tree-wrapper-menu-"+be);var $e=oe.treeList.length>0&&!He&&we;return D("div",{className:Ze,children:[!!H&&D("div",{className:"v-tree-wrapper-search-area",children:[E(N,{className:"v-tree-wrapper-search",placeholder:G,onChange:Be,value:Y,allowClear:true}),!!o.searchExtraElement&&E("span",{className:"v-tree-wrapper-search-extra",children:o.searchExtraElement})]}),He?E(m,u({},Xe,Ge,{className:"v-tree-wrapper-tree"}),ke):E(S,{status:oe.requestStatus,loading:fe,messageConfig:u({"request-success":$e?"搜索结果为空":"暂无数据"},J),errorButton:E(p,{type:"primary",onClick:De,children:"重新获取数据"})})]})}));z.defaultProps={disabledCanUse:true};export{z as TreeWrapper};
|
|
12
|
+
import e from"@ant-design/icons/es/icons/CaretDownFilled";import r from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{extend as n}from"@dimjs/utils/cjs/extend";import{hooks as i}from"@wove/react/cjs/hooks";import{_ as l,a as u}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{cloneState as s}from"@dimjs/model";import{treeToArray as o,treeToTiledArray as c,treeLeafParentsArray as d,isUndefinedOrNull as f,treeFilter as v}from"@flatbiz/utils";import{Tree as m,Button as p,message as h}from"antd";import{forwardRef as g,useState as b,useMemo as y,useRef as L,useImperativeHandle as C,Fragment as w,isValidElement as j}from"react";import{a as q}from"../button-operate-1ea0fe5a.js";import{D as R}from"../dropdown-menu-wrapper-24932100.js";import{fbaHooks as k}from"../fba-hooks/index.js";import{I as N}from"../input-search-wrapper-10d4a9b9.js";import{R as S}from"../request-status-03fc60e2.js";import{Model as T}from"@dimjs/model-react";import{isObject as P}from"@dimjs/lang/cjs/is-object";import{dequal as A}from"dequal";import{jsxs as D,jsx as E}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper-698da5b1.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper-dfe8f592.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-utils-a4c7d94d.js";import"../use-responsive-point-21b8c601.js";var I={treeList:[],treeTiledArray:[],queryIsEmpty:false};var x={actions:{setTreeList:function e(r){return function(e){e.treeList=r.treeList||[];e.treeTiledArray=o(e.treeList,r.childrenName);e.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r;if(r==="request-error"){e.treeList=[]}}},treeListAppendChildren:function e(r){return function(e){var t=o(e.treeList,r.childrenName);var n=t.find((function(e){return e[r.valueName]===r.value}));if(n){if(a(r.appendList)&&r.appendList.length>0){n[r.childrenName]=r.appendList}else{n.isLeaf=true}}e.treeTiledArray=o(e.treeList,r.childrenName)}}},state:I};var O={};var V=function e(r){if(!O[r]){O[r]=T(x)}return O[r]};var K=function e(r,t,a){var n=c(t,a);return d(r,n,true,{value:"value",parentValue:"parentValue"})};var F=function e(r,t){var n=f(r)?[]:r;n=a(n)?n:[n];n=n.map((function(e){if(P(e))return e[t.value];return e}));return n};var _=function e(r,t){var a=F(r,t);var n={};a.forEach((function(e){n[e]=true}));return n};var M=function e(r,t,a){if(f(r)&&f(t))return true;var n=_(r,a);var i=_(t,a);var l=A(n,i);return l};var U=["serviceConfig","effectDependencyList","selectorTreeList","value","onChange","modelKey","checkableResponseParentNode","checkable","onSelectorTreeListChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValueFieldNames","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType"];var z=g((function(o,d){var g=o.serviceConfig,T=o.effectDependencyList,P=o.selectorTreeList,A=o.value,I=o.onChange,x=o.modelKey,O=o.checkableResponseParentNode,_=O===void 0?true:O,z=o.checkable,B=o.onSelectorTreeListChange,W=o.treeItemDataAdapter,Y=o.searchValue,H=o.showSearch,G=o.searchPlaceholder,J=o.requestMessageConfig,Q=o.labelInValueFieldNames,X=o.labelInValue,Z=o.disabledCanUse,$=o.menuLayoutType,ee=o.menuTriggerType,re=l(o,U);var te=o.hasOwnProperty("selectorTreeList");var ae=g||{};var ne=T||[];var ie=b(),le=ie[0],ue=ie[1];var se=V(x).useStore(),oe=se[0],ce=se[1];var de=k.useSafeState(false),fe=de[0],ve=de[1];var me="request-progress-"+o.modelKey;var pe=y((function(){return u({label:"label",value:"value",children:"children"},o.fieldNames)}),[o.fieldNames]);var he=L();var ge=$===undefined?"fold":$;var be=ee===undefined?"click":ee;var ye=z===true;var Le=y((function(){return u({label:"label",value:"value"},Q)}),[Q]);var Ce=b(),we=Ce[0],je=Ce[1];var qe=L(true);var Re=b(0),ke=Re[0],Ne=Re[1];var Se=L();var Te=y((function(){var e=F(A,Le);return e}),[Le,A]);k.useEffectCustom((function(){if(f(A)&&qe.current||oe.treeList.length==0)return;qe.current=false;if(!M(A,Se.current,Le)){console.log("modelKey:"+x+" TreeWrapper key refresh",A,Se.current);Se.current=ye?Te:Te[0];var e=Ie(Te,true);ue(Array.from(new Set(e)));he.current=Te;Ne(Date.now())}}),[A,oe.treeList]);var Pe=function e(r){return r===""||f(r)};var Ae=function e(r){var t=ae.onRequestResultAdapter?ae.onRequestResultAdapter(r):r;return t};k.useEffectCustom((function(){je(Y)}),[Y]);var De=i.useCallbackRef((function(){return new Promise((function(e,r){var t,a,i,l,u;var s=function(){try{return e()}catch(e){return r(e)}};var o=function(e){try{ve(false);void h.error(e.message||"数据查询异常...");return s()}catch(e){return r(e)}};try{if(!ae.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=ae.requiredParamsKeys;a=n({},ae.params);if(t){i=t.find((function(e){return Pe(a[e])}));if(i){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return s()}catch(e){return o(e)}};var d=function(e){try{window[me]=false;ve(false);void ce.changeRequestStatus("request-error");return c()}catch(e){return o(e)}};try{ve(true);return Promise.resolve(ce.changeRequestStatus("request-progress")).then((function(e){try{window[me]=true;return Promise.resolve(ae.onRequest==null?void 0:ae.onRequest(a)).then((function(e){try{l=e;u=Ae(l);Ee(u||[]);ve(false);window[me]=false;return c()}catch(e){return d(e)}}),d)}catch(e){return d(e)}}),d)}catch(e){d(e)}}catch(e){o(e)}}))}));k.useEffectCustom((function(){if(te)return;if(Boolean(ne.length)){void De();return}var e=V(x).getState();if(e.requestStatus==="request-success"){return}if(!window[me]){void De();return}}),ne);k.useEffectCustom((function(){if(te){Ee(P||[])}}),[P]);var Ee=i.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&oe.treeList.length===0){void ce.changeRequestStatus("request-success");return}void ce.setTreeList({treeList:e||[],childrenName:pe.children});B==null?void 0:B(e)}));var Ie=i.useCallbackRef((function(e,r){var t=[];e.forEach((function(e){if(!r&&le!=null&&le.includes(e))return;var a=K(e,oe.treeList,pe);t=t.concat(a.map((function(e){return e.value})))}));return t}));i.useUpdateEffect((function(){if(we){var e=c(oe.treeList||[],pe);var r=e.filter((function(e){var r;return(r=e.label)==null?void 0:r.includes(we||"")}));ue((function(e){var t=Ie(r.map((function(e){return e.value}))).concat(e||[]);return Array.from(new Set(t))}))}else{ue([])}}),[we]);C(d,(function(){return{onClearSelectorList:function e(){void ce.resetTreeList()},getTreeDataList:function e(){return oe.treeList}}}));var xe=i.useCallbackRef((function(e){ue(e)}));var Oe=i.useCallbackRef((function(e,r,t){Se.current=e;var n=f(r)?[]:a(r)?r:[r];if(f(e)){I==null?void 0:I(e,r,t);return}if(X){var i=Le.label;var l=Le.value;var u=n.map((function(e){var r;return r={},r[i]=e[pe.label],r[l]=e[pe.value],r}));if(a(e)){I==null?void 0:I(u,n,t)}else{I==null?void 0:I(u[0],n[0],t)}}else{if(a(e)){I==null?void 0:I(e,n,t)}else{I==null?void 0:I(e,n[0],t)}}}));var Ve=i.useCallbackRef((function(e,r){var t=o.checkStrictly?e.checked:e;t=f(e)?[]:e;t=a(t)?t:[t];var n=[];var i=[];var l=[];var u=[];t.forEach((function(e){var r=oe.treeTiledArray.find((function(r){return r[pe.value]===e}));if(!r)return;var t=r==null?void 0:r[pe.children];if(!a(t)||t.length===0){n.push(r);i.push(r[pe.value])}l.push(r);u.push(r[pe.value])}));if(z){ue((function(e){var r=Ie(i).concat(e||[]);return Array.from(new Set(r))}));if(!_&&!o.checkStrictly){Oe(i,n,l)}else{Oe(u,l,l)}}else{if(t[0]){var s=l.find((function(e){return e[pe.value]===t[0]}));Oe(t[0],s,[s])}else{var c=r.node[pe.value];var d=oe.treeTiledArray.find((function(e){return e[pe.value]===c}));Oe(undefined,d,[d])}}}));var Ke=i.useCallbackRef((function(e){return W==null?void 0:W(e)}));var Fe=y((function(){var e=function e(r){return r==null?void 0:r.map((function(r){var n;var i=(Ke==null?void 0:Ke(r))||r;var l=Z?undefined:i.disabled;var s=i[pe.label];var o;if(we){var c=s.indexOf(we);var d=s.substring(0,c);var f=s.slice(c+we.length);o=c>-1?D("span",{className:t({"v-tree-item-disabled":i.disabled}),children:[d,E("span",{className:"site-tree-search-value",children:we}),f]}):null}if(!o){o=E("span",{className:t({"v-tree-item-disabled":i.disabled}),children:s})}var v=i[pe.children];return u({},i,(n={disabled:l},n[pe.label]=o,n._treeItemName=s,n._disabled=i.disabled,n[pe.children]=a(v)&&v.length>0?e(v):undefined,n))}))};var r=s(oe.treeList||[]);if(we){return e(v(s(oe.treeList||[]),(function(e){var r;var t=(r=e[pe.label])==null?void 0:r.toLowerCase();return t.indexOf(we.toLowerCase())>=0})))}return e(r)}),[oe.treeList,Ke,Z,pe.label,pe.children,we]);var _e=i.useCallbackRef((function(e){return new Promise((function(r,t){return new Promise((function(a,n){var i,l,u,s;if(e[pe.children]){r();return a()}var c=function(){try{return a()}catch(e){return n(e)}};var d=function(e){try{void h.error(e.message||"数据加载异常...");t();return c()}catch(e){return n(e)}};try{return Promise.resolve((i=o.loadDataServiceConfig)==null?void 0:i.onRequest==null?void 0:i.onRequest((l=o.loadDataServiceConfig)==null?void 0:l.getParams==null?void 0:l.getParams(e))).then((function(t){try{u=t;s=ae.onRequestResultAdapter?ae.onRequestResultAdapter(u):u;void ce.treeListAppendChildren({value:e[pe.value],appendList:s,childrenName:pe.children,valueName:pe.value}).then((function(e){Ee(e.treeList);r()}));return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}))}))}));var Me=i.useCallbackRef((function(e){var r=e==null?void 0:e[pe.children];var t=o.loadDataFlag;var a=t?!e.isLeaf:false;var n=r&&r.length>0||a;return!n}));var Ue=i.useCallbackRef((function(e){var a,n;var i=e._treeItemName||e[pe.label];if(ge==="fold"){var l;var s=[];if((l=o.menuOptions)!=null&&l.fold){var c,d,f;s=((c=o.menuOptions)==null?void 0:(d=c[ge])==null?void 0:d.call(c,u({},e,(f={},f[pe.label]=i,f))))||[]}else{var v;s=(o.getMenuOptions==null?void 0:o.getMenuOptions(u({},e,(v={},v[pe.label]=i,v))))||[]}return D(w,{children:[E("span",{className:"tree-item-title",children:e==null?void 0:e[pe.label]}),s.length>0&&E(R,{menuList:s,children:E(r,{})})]})}var m=(a=o.menuOptions)==null?void 0:a.tile==null?void 0:a.tile(u({},e,(n={},n[pe.label]=i,n)));return D(w,{children:[E("span",{className:"tree-item-title",children:e==null?void 0:e[pe.label]}),m?E(q,u({},m,{gap:5,className:t("tree-item-title-operate",m.className)})):null]})}));var ze=i.useDebounceCallback((function(e){je(e);o.onSearchValueChange==null?void 0:o.onSearchValueChange(e)}),300);var Be=i.useCallbackRef((function(e){ze(e.target.value)}));var We=i.useCallbackRef((function(e){if(!o.icon)return null;if(j(o.icon))return o.icon;var r=Me(e.data);return o.icon(u({},e,{isParent:!r,isLeaf:r}))}));var Ye=y((function(){return{title:pe.label,key:pe.value,children:pe.children}}),[pe]);var He=Fe.length>0&&oe.requestStatus!=="request-error";var Ge=u({showLine:{showLeafIcon:false},titleRender:Ue,blockNode:true,switcherIcon:E(e,{})},re,{fieldNames:Ye,expandedKeys:le,treeData:Fe,onExpand:xe,loadData:o.loadDataFlag?_e:undefined,style:u({width:"100%"},re.style),icon:We});var Je={onCheck:Ve,checkable:z,defaultCheckedKeys:he.current};var Qe={onSelect:Ve,multiple:false,defaultSelectedKeys:he.current};var Xe=z?Je:Qe;var Ze=t("v-tree-wrapper","v-tree-wrapper-menu-"+be);var $e=oe.treeList.length>0&&!He&&we;return D("div",{className:Ze,children:[!!H&&D("div",{className:"v-tree-wrapper-search-area",children:[E(N,{className:"v-tree-wrapper-search",placeholder:G,onChange:Be,value:Y,allowClear:true}),!!o.searchExtraElement&&E("span",{className:"v-tree-wrapper-search-extra",children:o.searchExtraElement})]}),He?E(m,u({},Xe,Ge,{className:"v-tree-wrapper-tree"}),ke):E(S,{status:oe.requestStatus,loading:fe,messageConfig:u({"request-success":$e?"搜索结果为空":"暂无数据"},J),errorButton:E(p,{type:"primary",onClick:De,children:"重新获取数据"})})]})}));z.defaultProps={disabledCanUse:true};export{z as TreeWrapper};
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
package/index.d.ts
CHANGED
|
@@ -666,6 +666,7 @@ export type FormOperateColProps = {
|
|
|
666
666
|
justify?: RowProps["justify"];
|
|
667
667
|
/** 强制单独一行 */
|
|
668
668
|
forceAloneRow?: boolean;
|
|
669
|
+
hidden?: boolean;
|
|
669
670
|
};
|
|
670
671
|
export type EasyTableFilterProps = {
|
|
671
672
|
children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);
|
|
@@ -1210,6 +1211,7 @@ export type FormColProps = {
|
|
|
1210
1211
|
/** 强制单独一行 */
|
|
1211
1212
|
forceAloneRow?: boolean;
|
|
1212
1213
|
children?: ReactNode | ReactNode[];
|
|
1214
|
+
hidden?: boolean;
|
|
1213
1215
|
};
|
|
1214
1216
|
export declare const FormGrid: {
|
|
1215
1217
|
/**
|
|
@@ -1234,7 +1236,7 @@ export declare const FormGrid: {
|
|
|
1234
1236
|
* ```
|
|
1235
1237
|
*/
|
|
1236
1238
|
Col: {
|
|
1237
|
-
(props: FormColProps): JSX.Element;
|
|
1239
|
+
(props: FormColProps): JSX.Element | null;
|
|
1238
1240
|
domTypeName: string;
|
|
1239
1241
|
};
|
|
1240
1242
|
/**
|
|
@@ -1247,7 +1249,7 @@ export declare const FormGrid: {
|
|
|
1247
1249
|
* ```
|
|
1248
1250
|
*/
|
|
1249
1251
|
OperateCol: {
|
|
1250
|
-
(props: FormOperateColProps): JSX.Element;
|
|
1252
|
+
(props: FormOperateColProps): JSX.Element | null;
|
|
1251
1253
|
domTypeName: string;
|
|
1252
1254
|
};
|
|
1253
1255
|
};
|
|
@@ -1639,6 +1641,9 @@ export type RichTextViewerProps = {
|
|
|
1639
1641
|
};
|
|
1640
1642
|
/**
|
|
1641
1643
|
* 预览 RichTextEditor 生成的富文本数据
|
|
1644
|
+
* ```
|
|
1645
|
+
* 1. 如果高度发生变更,可执行 editor.execCommand('mceAutoResize');
|
|
1646
|
+
* ```
|
|
1642
1647
|
* @param props
|
|
1643
1648
|
* @returns
|
|
1644
1649
|
*/
|
|
@@ -2016,6 +2021,8 @@ export type TabsWrapperProps = TabsProps & {
|
|
|
2016
2021
|
/** 是否取消 active 缓存 */
|
|
2017
2022
|
cancelActiveCache?: boolean;
|
|
2018
2023
|
activeCacheKey?: string;
|
|
2024
|
+
/** 隐藏头部 */
|
|
2025
|
+
hiddenTabHeader?: boolean;
|
|
2019
2026
|
};
|
|
2020
2027
|
/**
|
|
2021
2028
|
* Tabs 包装组件
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import r from"@ant-design/icons/es/icons/MoreOutlined";import{a as e,_ as i}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isUndefined as n}from"@dimjs/lang/cjs/is-undefined";import{classNames as o}from"@dimjs/utils/cjs/class-names";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{isString as s}from"@dimjs/lang/cjs/is-string";import{isPromise as l}from"@dimjs/lang/cjs/is-promise";import{hooks as a}from"@wove/react/cjs/hooks";import{Popover as p,Tooltip as c,Space as f,Divider as u,Popconfirm as d,Button as m}from"antd";import{Fragment as h,useState as v,isValidElement as g,useMemo as T,createElement as j}from"react";import{B as y}from"./button-wrapper-698da5b1.js";import{D as k}from"./dropdown-menu-wrapper-bf621188.js";import{f as C}from"./fba-utils-a4c7d94d.js";import{jsx as P,jsxs as b}from"react/jsx-runtime";var w=["text","onClick","needConfirm","confirmMessage","popconfirmProps"];var x=function r(e){if(e.hoverTips){if(e.tipsType==="popover"){return P(p,{content:e.hoverTips,zIndex:1e3,children:P(h,{children:e.children})})}return P(c,{title:e.hoverTips,zIndex:1e3,children:P(h,{children:e.children})})}return P(h,{children:e.children})};var B=function p(c){var h=v(false),B=h[0],I=h[1];var z=a.useCallbackRef((function(r,e){var i=r.onClick==null?void 0:r.onClick(e);if(i&&l(i)){I(true);return i.finally((function(){I(false)}))}return}));var F=c.operateList.filter((function(r){if(!r)return false;if(g(r)){var e,i;if(((e=r.props)==null?void 0:e["hidden"])===true)return false;var n=(i=r.props)==null?void 0:i["v-permission"];if(s(n)){return C.hasPermission(n)}return true}if(t(r)){if(!C.hasPermission(r.permission)){return false}return!r.hidden}return false}));var M=T((function(){return F.filter((function(r){if(g(r)){return true}return!r.isFold}))}),[F]);var N=T((function(){var r=F.filter((function(r){if(g(r)){return false}return r.isFold}));var i=[];r.forEach((function(r){var n=e({},r);delete n.isFold;i.push(n)}));return i}),[F]);var O=c.gap===undefined?10:c.gap;var H=!c.split?O:0;return P("div",{className:o("table-operate",c.className),style:c.style,children:b(f,e({split:c.split?P(u,{type:"vertical"}):null,size:H,wrap:n(c.wrap)?true:c.wrap},c.spaceProps,{children:[M.map((function(r,n){if(r&&g(r))return P(x,{hoverTips:r.hoverTips,tipsType:r.tipsType,children:r});var o=r.text,t=r.onClick,s=r.needConfirm,l=r.confirmMessage,a=r.popconfirmProps,p=i(r,w);var c=r.type||"link";if(s&&!p.disabled){var f=!!r.color?false:true;return P(x,{hoverTips:r.hoverTips,tipsType:r.tipsType,children:j(d,e({okText:"确定",cancelText:"取消",trigger:["click"],placement:"topRight",arrow:true,destroyTooltipOnHide:true},a,{title:l,onConfirm:z.bind(null,r),key:n,okButtonProps:{loading:B},onOpenChange:function r(e){if(!e){I(false)}}}),P(y,e({danger:f},p,{onClick:undefined,type:c,children:g(o)?P("span",{children:o}):o})))},n)}return P(x,{hoverTips:r.hoverTips,tipsType:r.tipsType,children:P(y,e({loadingPosition:"center"},p,{type:c,onClick:function r(e){e.stopPropagation();return t==null?void 0:t(e)},children:g(o)?P("span",{children:o}):o}))},n)})),N.length>0?P(k,{menuList:N,children:P(m,{type:"link",className:"fold-more-button",onClick:function r(e){e.stopPropagation()},children:c.foldIcon?c.foldIcon:P(r,{})})}):null]}))})};B.defaultProps={split:true};export{x as B,B as a};
|
|
3
|
-
//# sourceMappingURL=button-operate-794050a3.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"button-operate-794050a3.js","sources":["@flatbiz/antd/src/button-operate/button-operate.tsx"],"sourcesContent":["import { MoreOutlined } from '@ant-design/icons';\nimport { isPlainObject, isPromise, isString, isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Divider, Popconfirm, PopconfirmProps, Popover, Space, SpaceProps, Tooltip } from 'antd';\nimport {\n CSSProperties,\n FC,\n Fragment,\n isValidElement,\n ReactElement,\n ReactNode,\n useMemo,\n useState,\n} from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaUtils } from '../fba-utils';\n\nimport './style.less';\n\nexport interface ButtonOperateItem extends ButtonWrapperProps {\n /** hover 提示文字 */\n hoverTips?: string | React.ReactElement;\n /** hover 提示类型 默认:'tooltip' */\n tipsType?: 'popover' | 'tooltip';\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n popconfirmProps?: Pick<PopconfirmProps, 'placement' | 'okText' | 'cancelText' | 'trigger'>;\n // 是否折叠合拢\n isFold?: boolean;\n}\n\nexport interface ButtonOperateProps {\n /**\n * 如果数组中元素为ReactElement类型\n * 1. 一般为antd Button组件,如果组件存在属性hidden=true,则会隐藏\n * 2. 可配置 v-permission 权限值,例如 v-permission=\"add\"\n * 3. 任何confirm、disabled等状态在外部控制\n * 3. 不支持fold效果\n */\n operateList: Array<ButtonOperateItem | null | ReactElement>;\n wrap?: boolean;\n foldIcon?: ReactElement;\n className?: string;\n split?: boolean;\n spaceProps?: SpaceProps;\n /** 间距,默认:10;split=true配置下无效(可通过spaceProps设置间距) */\n gap?: number;\n style?: CSSProperties;\n}\n\nexport const ButtonOperateItemContent = (\n props: Pick<ButtonOperateItem, 'hoverTips' | 'tipsType'> & { children?: ReactNode },\n) => {\n if (props.hoverTips) {\n if (props.tipsType === 'popover') {\n return (\n <Popover content={props.hoverTips} zIndex={1000}>\n <Fragment>{props.children}</Fragment>\n </Popover>\n );\n }\n return (\n <Tooltip title={props.hoverTips} zIndex={1000}>\n <Fragment>{props.children}</Fragment>\n </Tooltip>\n );\n }\n return <Fragment>{props.children}</Fragment>;\n};\n\nexport const ButtonOperate: FC<ButtonOperateProps> = (props) => {\n const [loading, setLoading] = useState(false);\n\n const onConfirm = hooks.useCallbackRef((item: ButtonOperateItem, event) => {\n const result = item.onClick?.(event);\n if (result && isPromise(result)) {\n setLoading(true);\n return result.finally(() => {\n setLoading(false);\n });\n }\n return;\n });\n\n const operateList = props.operateList.filter((item) => {\n if (!item) return false;\n if (isValidElement(item)) {\n if (item.props?.['hidden'] === true) return false;\n const permission = item.props?.['v-permission'];\n if (isString(permission)) {\n return fbaUtils.hasPermission(permission);\n }\n return true;\n }\n if (isPlainObject(item)) {\n if (!fbaUtils.hasPermission(item.permission)) {\n return false;\n }\n return !item.hidden;\n }\n return false;\n }) as Array<ButtonOperateItem | ReactElement>;\n\n const viewList = useMemo(() => {\n return operateList.filter((item) => {\n if (isValidElement(item)) {\n return true;\n }\n return !item.isFold;\n }) as ButtonOperateItem[];\n }, [operateList]);\n\n const foldList = useMemo(() => {\n const filterList = operateList.filter((item) => {\n if (isValidElement(item)) {\n return false;\n }\n return item.isFold;\n }) as ButtonOperateItem[];\n const result = [] as ButtonOperateItem[];\n filterList.forEach((item) => {\n const target = { ...item };\n // 多余字段渲染到react dom上,出现警告\n delete target.isFold;\n result.push(target);\n });\n return result;\n }, [operateList]);\n\n const gap = props.gap === undefined ? 10 : props.gap;\n const size = !props.split ? gap : 0;\n\n return (\n <div className={classNames('table-operate', props.className)} style={props.style}>\n <Space\n split={props.split ? <Divider type=\"vertical\" /> : null}\n size={size}\n wrap={isUndefined(props.wrap) ? true : props.wrap}\n {...props.spaceProps}\n >\n {viewList.map((item, index) => {\n if (item && isValidElement(item))\n return (\n <ButtonOperateItemContent hoverTips={item.hoverTips} tipsType={item.tipsType}>\n {item}\n </ButtonOperateItemContent>\n );\n const { text, onClick, needConfirm, confirmMessage, popconfirmProps, ...otherProps } = item;\n const type = item.type || 'link';\n if (needConfirm && !otherProps.disabled) {\n const danger = !!item.color ? false : true;\n return (\n <ButtonOperateItemContent hoverTips={item.hoverTips} tipsType={item.tipsType} key={index}>\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 >\n <ButtonWrapper danger={danger} {...otherProps} onClick={undefined} type={type}>\n {isValidElement(text) ? <span>{text}</span> : text}\n </ButtonWrapper>\n </Popconfirm>\n </ButtonOperateItemContent>\n );\n }\n return (\n <ButtonOperateItemContent hoverTips={item.hoverTips} tipsType={item.tipsType} key={index}>\n <ButtonWrapper\n loadingPosition=\"center\"\n {...otherProps}\n type={type}\n onClick={(event) => {\n event.stopPropagation();\n return onClick?.(event);\n }}\n >\n {isValidElement(text) ? <span>{text}</span> : text}\n </ButtonWrapper>\n </ButtonOperateItemContent>\n );\n })}\n {foldList.length > 0 ? (\n <DropdownMenuWrapper menuList={foldList}>\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","Fragment","Tooltip","title","ButtonOperate","_useState","useState","loading","setLoading","onConfirm","_hooks","useCallbackRef","item","event","result","onClick","_isPromise","finally","operateList","filter","isValidElement","_item$props","_item$props2","permission","_isString","fbaUtils","hasPermission","_isPlainObject","hidden","viewList","useMemo","isFold","foldList","filterList","forEach","target","_extends","push","gap","undefined","size","split","className","_classNames","style","_jsxs","Space","Divider","type","wrap","_isUndefined","spaceProps","map","index","text","needConfirm","confirmMessage","popconfirmProps","otherProps","_objectWithoutPropertiesLoose","_excluded","disabled","danger","color","_createElement","Popconfirm","okText","cancelText","trigger","placement","arrow","destroyTooltipOnHide","bind","key","okButtonProps","onOpenChange","_open","ButtonWrapper","loadingPosition","stopPropagation","length","DropdownMenuWrapper","menuList","Button","foldIcon","_MoreOutlined","defaultProps"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import{_ as e,a as o}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isPromise as r}from"@dimjs/lang/cjs/is-promise";import{hooks as n}from"@wove/react/cjs/hooks";import{Popconfirm as i,Dropdown as t}from"antd";import{useState as l,createElement as a}from"react";import{B as s}from"./button-wrapper-698da5b1.js";import{fbaHooks as p}from"./fba-hooks/index.js";import{f as u}from"./fba-utils-a4c7d94d.js";import{jsx as f}from"react/jsx-runtime";var c=["menuList"],d=["text","color","permission","needConfirm","confirmMessage","hidden","type","style","popconfirmProps"];var m=function m(v){var g=v.menuList,y=e(v,c);var k=l([]),C=k[0],h=k[1];var b=n.useId(undefined,"DropdownMenuWrapper");var P=l({}),x=P[0],j=P[1];var w=n.useCallbackRef((function(e,o){var r;o.stopPropagation();j((r={},r[e]={open:true},r))}));var z=n.useCallbackRef((function(e,n,i){i.stopPropagation();var t=e.onClick==null?void 0:e.onClick(i);if(t&&r(t)){x[n]={loading:true,open:true};j(o({},x));t.finally((function(){x[n]={loading:false,open:false};j(o({},x))}));return}x[n]={loading:false,open:false};j(o({},x))}));var B=n.useCallbackRef((function(e,o){o.stopPropagation();return e.onClick==null?void 0:e.onClick(o)}));p.useEffectCustom((function(){var r=[];g.filter(Boolean).forEach((function(n,t){var l,p;if(!n)return;var c=n.text,m=n.color,v=n.permission,g=n.needConfirm,y=n.confirmMessage,k=n.hidden,C=n.type,h=n.style,b=n.popconfirmProps,P=e(n,d);if(k)return;if(v&&!u.hasPermission(v))return;var S=m?o({color:m},h):h;var I=C||"link";var M={key:t,label:a(s,o({loadingPosition:"center",size:"small"},P,{type:I,style:S,key:t,onClick:B.bind(null,n)}),c)};var R={key:t,label:a(i,o({okText:"确定",cancelText:"取消",trigger:["click"],destroyTooltipOnHide:true},b,{title:y,onConfirm:z.bind(null,n,t),onCancel:function e(o){o==null?void 0:o.stopPropagation();j({})},overlayClassName:"dmw-popconfirm",arrow:true,key:t,overlayStyle:{zIndex:10},open:((l=x[t])==null?void 0:l.open)||false,okButtonProps:{loading:(p=x[t])==null?void 0:p.loading}}),f(s,o({loadingPosition:"center",size:"small",danger:m?false:P.danger},P,{onClick:w.bind(null,t),type:I,style:S,children:c})))};if(g&&!P.disabled){r.push(R)}else{r.push(M)}}));h(r)}),[g,x]);return f("div",{className:b,style:{position:"relative"},children:f(t,o({trigger:(y==null?void 0:y.trigger)||["hover"],getPopupContainer:function e(){return document.querySelector("."+b)},arrow:{pointAtCenter:true}},y,{overlayStyle:o({zIndex:9},y.overlayStyle),menu:{items:C},onOpenChange:function e(o){if(!o){j({})}},children:v.children}))})};export{m as D};
|
|
3
|
-
//# sourceMappingURL=dropdown-menu-wrapper-bf621188.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown-menu-wrapper-bf621188.js","sources":["@flatbiz/antd/src/dropdown-menu-wrapper/dropdown-menu-wrapper.tsx"],"sourcesContent":["import { isPromise } from '@dimjs/lang';\nimport { hooks } from '@wove/react';\nimport { ButtonProps, Dropdown, DropdownProps, Popconfirm, PopconfirmProps } from 'antd';\nimport { ItemType } from 'antd/lib/menu/hooks/useItems';\nimport { ReactElement, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport './style.less';\n\nexport interface DropdownMenuItem extends ButtonProps {\n text?: string | ReactElement;\n color?: string;\n onClick?: (event: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n permission?: string;\n needConfirm?: boolean;\n confirmMessage?: string;\n hidden?: boolean;\n popconfirmProps?: Pick<PopconfirmProps, 'placement' | 'okText' | 'cancelText' | 'trigger'>;\n}\n\nexport interface DropdownMenuWrapperProps extends Omit<DropdownProps, 'menu'> {\n menuList: Array<DropdownMenuItem | null>;\n}\n\nexport const DropdownMenuWrapper = (props: DropdownMenuWrapperProps) => {\n const { menuList, ...dropdownOtherProps } = props;\n const [menuItems, setMenuItems] = useState<ItemType[]>([]);\n const clsName = hooks.useId(undefined, 'DropdownMenuWrapper');\n\n const [statusMap, setStatusMap] = useState<Record<string, { open?: boolean; loading?: boolean }>>({});\n const onConfirmtTriggerClick = hooks.useCallbackRef((index, event) => {\n event.stopPropagation();\n setStatusMap({ [index]: { open: true } });\n });\n\n const onConfirm = hooks.useCallbackRef((item: DropdownMenuItem, index: number, event) => {\n event.stopPropagation();\n const result = item.onClick?.(event);\n if (result && isPromise(result)) {\n statusMap[index] = { loading: true, open: true };\n setStatusMap({ ...statusMap });\n result.finally(() => {\n statusMap[index] = { loading: false, open: false };\n setStatusMap({ ...statusMap });\n });\n return;\n }\n statusMap[index] = { loading: false, open: false };\n setStatusMap({ ...statusMap });\n });\n\n const onClick = hooks.useCallbackRef((item: DropdownMenuItem, event) => {\n event.stopPropagation();\n return item.onClick?.(event);\n });\n\n fbaHooks.useEffectCustom(() => {\n const menuItemsNew: ItemType[] = [];\n menuList.filter(Boolean).forEach((item, index) => {\n if (!item) return;\n const {\n text,\n color,\n permission,\n needConfirm,\n confirmMessage,\n hidden,\n type,\n style,\n popconfirmProps,\n ...otherProps\n } = item;\n if (hidden) return;\n if (permission && !fbaUtils.hasPermission(permission)) return;\n const newStyle = color ? { color, ...style } : style;\n const buttonType = type || 'link';\n const nromal = {\n key: index,\n label: (\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n {...otherProps}\n type={buttonType}\n style={newStyle}\n key={index}\n onClick={onClick.bind(null, item)}\n >\n {text}\n </ButtonWrapper>\n ),\n };\n const confirm = {\n key: index,\n label: (\n <Popconfirm\n okText=\"确定\"\n cancelText=\"取消\"\n trigger={['click']}\n destroyTooltipOnHide={true}\n {...popconfirmProps}\n title={confirmMessage}\n onConfirm={onConfirm.bind(null, item, index)}\n onCancel={(event) => {\n event?.stopPropagation();\n setStatusMap({});\n }}\n overlayClassName=\"dmw-popconfirm\"\n arrow={true}\n key={index}\n overlayStyle={{ zIndex: 10 }}\n open={statusMap[index]?.open || false}\n okButtonProps={{\n loading: statusMap[index]?.loading,\n }}\n >\n <ButtonWrapper\n loadingPosition=\"center\"\n size=\"small\"\n danger={color ? false : otherProps.danger}\n {...otherProps}\n onClick={onConfirmtTriggerClick.bind(null, index)}\n type={buttonType}\n style={newStyle}\n >\n {text}\n </ButtonWrapper>\n </Popconfirm>\n ),\n };\n if (needConfirm && !otherProps.disabled) {\n menuItemsNew.push(confirm);\n } else {\n menuItemsNew.push(nromal);\n }\n });\n setMenuItems(menuItemsNew);\n }, [menuList, statusMap]);\n return (\n <div className={clsName} style={{ position: 'relative' }}>\n <Dropdown\n trigger={dropdownOtherProps?.trigger || ['hover']}\n getPopupContainer={() => document.querySelector(`.${clsName}`) as HTMLElement}\n arrow={{ pointAtCenter: true }}\n {...dropdownOtherProps}\n overlayStyle={{ zIndex: 9, ...dropdownOtherProps.overlayStyle }}\n menu={{ items: menuItems }}\n onOpenChange={(_open) => {\n if (!_open) {\n setStatusMap({});\n }\n }}\n >\n {props.children}\n </Dropdown>\n </div>\n );\n};\n"],"names":["DropdownMenuWrapper","props","menuList","dropdownOtherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","menuItems","setMenuItems","clsName","_hooks","useId","undefined","_useState2","statusMap","setStatusMap","onConfirmtTriggerClick","useCallbackRef","index","event","_setStatusMap","stopPropagation","open","onConfirm","item","result","onClick","_isPromise","loading","_extends","finally","fbaHooks","useEffectCustom","menuItemsNew","filter","Boolean","forEach","_statusMap$index","_statusMap$index2","text","color","permission","needConfirm","confirmMessage","hidden","type","style","popconfirmProps","otherProps","_excluded2","fbaUtils","hasPermission","newStyle","buttonType","nromal","key","label","_createElement","ButtonWrapper","loadingPosition","size","bind","confirm","Popconfirm","okText","cancelText","trigger","destroyTooltipOnHide","title","onCancel","overlayClassName","arrow","overlayStyle","zIndex","okButtonProps","_jsx","danger","children","disabled","push","className","position","Dropdown","getPopupContainer","document","querySelector","pointAtCenter","menu","items","onOpenChange","_open"],"mappings":"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"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
2
|
-
import{_ as e,a as n}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{hooks as t}from"@wove/react/cjs/hooks";import{Editor as o}from"@tinymce/tinymce-react";import{useKeyPress as i}from"ahooks";import{Fragment as a,useRef as l,useState as c}from"react";import s from"@ant-design/icons/es/icons/PlusCircleOutlined";import{Image as u}from"antd";import{d as m}from"./dynamic-node-577ef8fd.js";import{fbaHooks as d}from"./fba-hooks/index.js";import{jsx as f,Fragment as v,jsxs as p}from"react/jsx-runtime";var g=function e(n){var r=n.visible,t=n.url;d.useEffectCustom((function(){if(r){m.append({content:f(s,{onClick:n.close,className:"preview-image-popup-close",twoToneColor:"#1890ff"})})}else{m.remove()}}),[r]);if(!t)return f(v,{});return f(a,{children:f(u,{style:{left:"100px"},preview:{className:"preview-image-popup",maskStyle:{backgroundColor:"rgba(0,0,0,0.85)"},visible:r,src:t,onVisibleChange:function e(){n.close()}}},t)})};var h=["onUploadImage","onChange","className"];var y=function a(s){var u=s.onUploadImage,m=s.onChange,d=s.className,v=e(s,h);var y=l(null);var b=c(""),k=b[0],C=b[1];i((function(){return true}),(function(e){try{if(e.type==="keyup"&&e.key==="Escape"){var n;var r=(n=y.current)==null?void 0:n.editorContainer.classList.contains("tox-fullscreen");if(r){var t;(t=y.current)==null?void 0:t.editorCommands.execCommand("mceFullScreen")}}}catch(e){}}),{events:["keydown","keyup"]});var w=t.useCallbackRef((function(e,n){try{if(e.keyCode==27){var r;var t=(r=y.current)==null?void 0:r.editorContainer.classList.contains("tox-fullscreen");if(t){var o;(o=y.current)==null?void 0:o.editorCommands.execCommand("mceFullScreen")}}}catch(e){}s.onKeyDown==null?void 0:s.onKeyDown(e,n)}));var _=t.useCallbackRef((function(e,n){y.current=n;try{var r,t;(r=n.iframeElement)==null?void 0:(t=r.contentDocument)==null?void 0:t.addEventListener("click",(function(e){var n;if(s.imgPreview&&((n=e.target)==null?void 0:n["tagName"])==="IMG"){C(e.target["src"])}}),true)}catch(e){}v.onInit==null?void 0:v.onInit(e,n)}));var j=t.useCallbackRef((function(e,n){y.current=n;v.onEditorChange==null?void 0:v.onEditorChange(e,n);m==null?void 0:m(e)}));var x="https://file.40017.cn/tcsk/tinymce@6.4.1";return p("div",{className:r("v-editor-wrapper",d),children:[f(o,n({tinymceScriptSrc:x+"/tinymce.min.js"},v,{onInit:_,onKeyDown:w,onEditorChange:j,init:n({promotion:false,language:"zh-Hans",height:500,paste_data_images:u?true:false,autosave_ask_before_unload:false,base_url:x,images_upload_handler:function e(n){return new Promise((function(e,r){var t,o,i;var a=function(n){try{return e(Promise.reject((n==null?void 0:n.message)||"图片上传异常"))}catch(e){return r(e)}};try{t=n.blob();o=new File([t],t.name,{type:t.type});return Promise.resolve(u==null?void 0:u(o)).then((function(n){try{i=n;return e(Promise.resolve(i))}catch(e){return a(e)}}),a)}catch(e){a(e)}}))},content_style:"img {max-width:100%;} table{width:100%}",plugins:"lists link image advlist charmap preview fullscreen code table help",toolbar:"undo redo fullscreen preview | bold italic underline strikethrough |"+"fontsizeselect formatselect |"+"alignleft aligncenter alignright alignjustify |"+"outdent indent | numlist bullist advlist |"+"forecolor backcolor removeformat |"+"code image link"},s.init)})),f(g,{visible:!!k,url:k,close:function e(){C("")}})]})};export{y as R};
|
|
3
|
-
//# sourceMappingURL=rich-text-editor-8847f378.js.map
|