@flatbiz/antd 4.2.48 → 4.2.50

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.
Files changed (72) hide show
  1. package/esm/anchor-steps/index.js +2 -1
  2. package/esm/anchor-steps-fba86c87.js +3 -0
  3. package/esm/anchor-steps-fba86c87.js.map +1 -0
  4. package/esm/button-operate/index.js +4 -1
  5. package/esm/{button-operate-ceaa4ea4.js → button-operate-deb2cd63.js} +2 -2
  6. package/esm/button-operate-deb2cd63.js.map +1 -0
  7. package/esm/button-wrapper/index.js +1 -1
  8. package/esm/{button-wrapper-e833e139.js → button-wrapper-e8fa0aac.js} +2 -2
  9. package/esm/{button-wrapper-e833e139.js.map → button-wrapper-e8fa0aac.js.map} +1 -1
  10. package/esm/{cell-render-dd2ebe5c.js → cell-render-cf211bab.js} +2 -2
  11. package/esm/{cell-render-dd2ebe5c.js.map → cell-render-cf211bab.js.map} +1 -1
  12. package/esm/check-list/index.js +1 -1
  13. package/esm/dialog-alert/index.js +1 -1
  14. package/esm/{dialog-alert-23b4a533.js → dialog-alert-c9779a72.js} +2 -2
  15. package/esm/{dialog-alert-23b4a533.js.map → dialog-alert-c9779a72.js.map} +1 -1
  16. package/esm/dialog-confirm/index.js +1 -1
  17. package/esm/{dialog-confirm-2656caad.js → dialog-confirm-24107a78.js} +2 -2
  18. package/esm/{dialog-confirm-2656caad.js.map → dialog-confirm-24107a78.js.map} +1 -1
  19. package/esm/dialog-drawer/index.js +1 -1
  20. package/esm/{dialog-drawer-3173799f.js → dialog-drawer-3e6a39bf.js} +2 -2
  21. package/esm/{dialog-drawer-3173799f.js.map → dialog-drawer-3e6a39bf.js.map} +1 -1
  22. package/esm/dialog-modal/index.js +1 -1
  23. package/esm/{dialog-modal-7b705b44.js → dialog-modal-67b7a643.js} +2 -2
  24. package/esm/dialog-modal-67b7a643.js.map +1 -0
  25. package/esm/dropdown-menu-wrapper/index.css +0 -1
  26. package/esm/dropdown-menu-wrapper/index.js +4 -1
  27. package/esm/dropdown-menu-wrapper-3bffcb23.js +3 -0
  28. package/esm/dropdown-menu-wrapper-3bffcb23.js.map +1 -0
  29. package/esm/easy-table/index.js +1 -1
  30. package/esm/editable-table/index.js +1 -1
  31. package/esm/{editable-table-98f1cdf7.js → editable-table-bc58c0fc.js} +2 -2
  32. package/esm/{editable-table-98f1cdf7.js.map → editable-table-bc58c0fc.js.map} +1 -1
  33. package/esm/fba-utils/index.js +1 -1
  34. package/esm/fba-utils-f9e11d02.js +3 -0
  35. package/esm/fba-utils-f9e11d02.js.map +1 -0
  36. package/esm/index.js +5 -5
  37. package/esm/local-loading/index.js +1 -1
  38. package/esm/permission/index.js +1 -1
  39. package/esm/{permission-a1c99455.js → permission-17ed4d0b.js} +2 -2
  40. package/esm/{permission-a1c99455.js.map → permission-17ed4d0b.js.map} +1 -1
  41. package/esm/selector-wrapper-search/index.js +1 -2
  42. package/esm/selector-wrapper-search-9f12465c.js +3 -0
  43. package/esm/selector-wrapper-search-9f12465c.js.map +1 -0
  44. package/esm/simple-layout/index.css +1 -1
  45. package/esm/table-cell-render/index.js +4 -1
  46. package/esm/tabs-wrapper/index.js +1 -1
  47. package/esm/tabs-wrapper-0a2da713.js +3 -0
  48. package/esm/{tabs-wrapper-675dc949.js.map → tabs-wrapper-0a2da713.js.map} +1 -1
  49. package/esm/text-overflow-render/index.js +1 -1
  50. package/esm/{text-overflow-render-57730b19.js → text-overflow-render-bba0b7f4.js} +2 -2
  51. package/esm/{text-overflow-render-57730b19.js.map → text-overflow-render-bba0b7f4.js.map} +1 -1
  52. package/esm/tree-selector-wrapper-9cd9da23.js.map +1 -1
  53. package/esm/tree-wrapper/index.js +4 -1
  54. package/esm/tree-wrapper/index.js.map +1 -1
  55. package/esm/upload-wrapper/index.js +1 -1
  56. package/esm/upload-wrapper-4de4e5b3.js +3 -0
  57. package/esm/upload-wrapper-4de4e5b3.js.map +1 -0
  58. package/index.d.ts +97 -72
  59. package/package.json +1 -1
  60. package/esm/anchor-steps-616cd173.js +0 -3
  61. package/esm/anchor-steps-616cd173.js.map +0 -1
  62. package/esm/button-operate-ceaa4ea4.js.map +0 -1
  63. package/esm/dialog-modal-7b705b44.js.map +0 -1
  64. package/esm/dropdown-menu-wrapper-3544d20e.js +0 -3
  65. package/esm/dropdown-menu-wrapper-3544d20e.js.map +0 -1
  66. package/esm/fba-utils-1e895394.js +0 -3
  67. package/esm/fba-utils-1e895394.js.map +0 -1
  68. package/esm/selector-wrapper-search-f799bcf0.js +0 -3
  69. package/esm/selector-wrapper-search-f799bcf0.js.map +0 -1
  70. package/esm/tabs-wrapper-675dc949.js +0 -3
  71. package/esm/upload-wrapper-df8a2277.js +0 -3
  72. package/esm/upload-wrapper-df8a2277.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"anchor-steps-616cd173.js","sources":["@flatbiz/antd/src/anchor-steps/anchor-steps.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { Gap } from '@flatbiz/antd';\nimport { Anchor, Steps } from 'antd';\nimport { ReactElement, useRef, useState } from 'react';\nimport './style.less';\n\nfunction isElement(node: Element) {\n const ELEMENT_NODE_TYPE = 1;\n return node.tagName !== 'HTML' && node.tagName !== 'BODY' && node.nodeType === ELEMENT_NODE_TYPE;\n}\n\nfunction getParentScroll(el: HTMLElement) {\n let node = el;\n\n while (node && isElement(node)) {\n const { overflowY } = window.getComputedStyle(node);\n if (/scroll|auto/i.test(overflowY)) {\n return node;\n }\n node = node.parentNode as HTMLElement;\n }\n return undefined;\n}\n\nexport type AnchorStepsProps = {\n steps: {\n id: string;\n title: string;\n content: ReactElement;\n }[];\n className?: string;\n};\n\n/**\n * 锚点步骤组件\n * @param props\n * @returns\n */\nexport const AnchorSteps = (props: AnchorStepsProps) => {\n const [activeKey, setActiveKey] = useState<string>();\n const rootNode = useRef<HTMLDivElement>();\n\n const onChange = (link: string) => {\n if (link) {\n setActiveKey(link.replace('#vas-', ''));\n }\n };\n\n const getContainer = () => {\n return getParentScroll(rootNode.current as HTMLElement) || (window as Window);\n };\n const refHandle = (node) => {\n if (node) {\n rootNode.current = node;\n }\n };\n\n return (\n <div className={classNames('v-anchor-steps', props.className)} ref={refHandle}>\n <Anchor onChange={onChange} className=\"v-fixed-anchor\" affix={false} getContainer={getContainer}>\n <Steps\n size=\"small\"\n direction=\"vertical\"\n current={props.steps.findIndex((item) => item.id === activeKey)}\n items={props.steps.map((item) => {\n return {\n title: <Anchor.Link href={`#vas-${item.id}`} title={item.title} />,\n description: <Gap height={20} />,\n status: item.id === activeKey ? 'process' : 'wait',\n };\n })}\n />\n </Anchor>\n {props.steps.map((item) => {\n return (\n <div id={`vas-${item.id}`} key={item.id}>\n {item.content}\n </div>\n );\n })}\n </div>\n );\n};\n"],"names":["isElement","node","ELEMENT_NODE_TYPE","tagName","nodeType","getParentScroll","el","_window$getComputedSt","window","getComputedStyle","overflowY","test","parentNode","undefined","AnchorSteps","props","_useState","useState","activeKey","setActiveKey","rootNode","useRef","onChange","link","replace","getContainer","current","refHandle","_jsxs","className","_classNames","ref","children","_jsx","Anchor","affix","Steps","size","direction","steps","findIndex","item","id","items","map","title","Link","href","description","Gap","height","status","content"],"mappings":";sOAMA,SAASA,EAAUC,GACjB,IAAMC,EAAoB,EAC1B,OAAOD,EAAKE,UAAY,QAAUF,EAAKE,UAAY,QAAUF,EAAKG,WAAaF,CACjF,CAEA,SAASG,EAAgBC,GACvB,IAAIL,EAAOK,EAEX,MAAOL,GAAQD,EAAUC,GAAO,CAC9B,IAAAM,EAAsBC,OAAOC,iBAAiBR,GAAtCS,EAASH,EAATG,UACR,GAAI,eAAeC,KAAKD,GAAY,CAClC,OAAOT,CACT,CACAA,EAAOA,EAAKW,UACd,CACA,OAAOC,SACT,KAgBaC,EAAc,SAAdA,EAAeC,GAC1B,IAAAC,EAAkCC,IAA3BC,EAASF,EAAA,GAAEG,EAAYH,EAAA,GAC9B,IAAMI,EAAWC,IAEjB,IAAMC,EAAW,SAAXA,EAAYC,GAChB,GAAIA,EAAM,CACRJ,EAAaI,EAAKC,QAAQ,QAAS,IACrC,GAGF,IAAMC,EAAe,SAAfA,IACJ,OAAOpB,EAAgBe,EAASM,UAA4BlB,QAE9D,IAAMmB,EAAY,SAAZA,EAAa1B,GACjB,GAAIA,EAAM,CACRmB,EAASM,QAAUzB,CACrB,GAGF,OACE2B,EAAA,MAAA,CAAKC,UAAWC,EAAW,iBAAkBf,EAAMc,WAAYE,IAAKJ,EAAUK,SAAA,CAC5EC,EAACC,EAAM,CAACZ,SAAUA,EAAUO,UAAU,iBAAiBM,MAAO,MAAOV,aAAcA,EAAaO,SAC9FC,EAACG,EAAK,CACJC,KAAK,QACLC,UAAU,WACVZ,QAASX,EAAMwB,MAAMC,WAAU,SAACC,GAAI,OAAKA,EAAKC,KAAOxB,KACrDyB,MAAO5B,EAAMwB,MAAMK,KAAI,SAACH,GACtB,MAAO,CACLI,MAAOZ,EAACC,EAAOY,KAAI,CAACC,KAAI,QAAUN,EAAKC,GAAMG,MAAOJ,EAAKI,QACzDG,YAAaf,EAACgB,EAAG,CAACC,OAAQ,KAC1BC,OAAQV,EAAKC,KAAOxB,EAAY,UAAY,eAKnDH,EAAMwB,MAAMK,KAAI,SAACH,GAChB,OACER,EAAA,MAAA,CAAKS,GAAE,OAASD,EAAKC,GAAKV,SACvBS,EAAKW,SADwBX,EAAKC,GAIzC,MAGN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-operate-ceaa4ea4.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 <span>{props.children}</span>\n </Popover>\n );\n }\n return (\n <Tooltip title={props.hoverTips} zIndex={1000}>\n <span>{props.children}</span>\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} key={index}>\n {item}\n </ButtonOperateItemContent>\n );\n }\n const { text, onClick, needConfirm, confirmMessage, popconfirmProps, hoverTips, ...otherProps } =\n item;\n const type = item.type || 'link';\n if (needConfirm && !otherProps.disabled) {\n const danger = !!item.color ? false : true;\n return (\n <Popconfirm\n okText=\"确定\"\n cancelText=\"取消\"\n trigger={['click']}\n placement=\"topRight\"\n arrow={true}\n destroyTooltipOnHide={true}\n {...popconfirmProps}\n title={confirmMessage}\n onConfirm={onConfirm.bind(null, item)}\n key={index}\n okButtonProps={{\n loading,\n }}\n onOpenChange={(_open) => {\n if (!_open) {\n setLoading(false);\n }\n }}\n onCancel={(event) => {\n event?.stopPropagation();\n }}\n >\n <ButtonWrapper\n danger={danger}\n {...otherProps}\n onClick={(event) => {\n event.stopPropagation();\n }}\n type={type}\n >\n <ButtonOperateItemContent hoverTips={hoverTips} tipsType={item.tipsType} key={index}>\n {text}\n </ButtonOperateItemContent>\n </ButtonWrapper>\n </Popconfirm>\n );\n }\n return (\n <ButtonWrapper\n loadingPosition=\"center\"\n {...otherProps}\n type={type}\n onClick={(event) => {\n event.stopPropagation();\n return onClick?.(event);\n }}\n key={index}\n >\n <ButtonOperateItemContent hoverTips={hoverTips} tipsType={item.tipsType}>\n {text}\n </ButtonOperateItemContent>\n </ButtonWrapper>\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","Tooltip","title","Fragment","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","onCancel","stopPropagation","ButtonWrapper","loadingPosition","length","DropdownMenuWrapper","menuList","Button","foldIcon","_MoreOutlined","defaultProps"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-modal-7b705b44.js","sources":["@flatbiz/antd/src/dialog-modal/dialog-modal.tsx"],"sourcesContent":["import { isPromise, isString } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { BodyAppendDivElementProps, dom, TNoopDefine } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Form, FormInstance, Modal, ModalProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { ConfigProviderWrapper, ConfigProviderWrapperProps } from '../config-provider-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type DialogModalProps = Omit<\n ModalProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'open' | 'open' | 'okButtonProps' | 'cancelButtonProps'\n> & {\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n configProviderProps?: ConfigProviderWrapperProps;\n okHidden?: boolean;\n cancelHidden?: boolean;\n okButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n cancelButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n /**\n * 设置modal body height 为当前窗口height的百分比,例如:30\n * ```\n * 1. 最大值:80\n * 1. 设置bodyStyle.height 后,bodyHeightPercent失效\n * ```\n */\n bodyHeightPercent?: number;\n};\n\nconst ModalRender = (props: BodyAppendDivElementProps & DialogModalProps) => {\n const {\n divElement,\n elementId,\n onOk,\n onCancel,\n okButtonProps,\n cancelButtonProps,\n content,\n configProviderProps,\n className,\n okHidden,\n cancelHidden,\n footer,\n cancelText,\n okText,\n bodyHeightPercent,\n ...otherProps\n } = props;\n const [open, setOpen] = useState(true);\n const [form] = Form.useForm();\n const size = useSize(document.querySelector('html'));\n\n const onClose = hooks.useCallbackRef(() => {\n try {\n delete window[elementId];\n } catch (error) {\n //\n }\n setOpen(false);\n });\n\n fbaHooks.useEffectCustom(() => {\n window[elementId] = onClose;\n }, [onClose]);\n\n const onCancelHandle = hooks.useCallbackRef((e) => {\n if (onCancel) {\n const response = onCancel(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onOkHandle = hooks.useCallbackRef((e) => {\n if (onOk) {\n const response = onOk(form, e);\n if (response && isPromise(response)) {\n return response.then(onClose);\n }\n }\n return onClose();\n });\n\n const onAfterClose = hooks.useCallbackRef(() => {\n dom.removeBodyChild(`#${elementId}`);\n props.afterClose?.();\n });\n\n const operateGroup = [\n <ButtonWrapper key=\"0\" {...cancelButtonProps} onClick={onCancelHandle} hidden={cancelHidden}>\n {cancelText || '取消'}\n </ButtonWrapper>,\n <ButtonWrapper key=\"1\" type=\"primary\" {...okButtonProps} onClick={onOkHandle} hidden={okHidden}>\n {okText || '提交'}\n </ButtonWrapper>,\n ];\n\n const footerNew = footer || operateGroup;\n\n const height = useMemo(() => {\n if (!size?.height || !bodyHeightPercent) {\n return 'auto';\n }\n return size?.height * (bodyHeightPercent / 100);\n }, [bodyHeightPercent, size?.height]);\n\n return (\n <ConfigProviderWrapper {...configProviderProps}>\n <Modal\n maskClosable={true}\n centered={true}\n onCancel={onClose}\n destroyOnClose\n {...otherProps}\n bodyStyle={{\n height,\n maxHeight: size?.height ? size?.height * 0.8 : 'calc(100vh - 200px)',\n ...otherProps.bodyStyle,\n }}\n className={classNames('v-dialog-modal', className)}\n open={open}\n afterClose={onAfterClose}\n getContainer={divElement}\n footer={footerNew}\n style={{ color: 'red' }}\n >\n {typeof content === 'function' ? content(form, { onClose }) : content}\n </Modal>\n </ConfigProviderWrapper>\n );\n};\n\n/**\n * 函数式调用弹框;初始化后,内容无法更新\n *```\n * 1. 基础使用方式\n * dialogModal.open({\n * title: '我是弹框',\n * content: <div>我是内容</div>,\n * });\n * ```\n * ```\n * ***************************\n * 2. 结合内置form使用,可在onOK、onCancel获取form对象\n * dialogModal.open({\n * title: '我是弹框',\n * content: (form, operate) => {\n * return (\n * <Form form={form}>\n * <Form.Item name=\"useName\">\n * <Input placeholder=\"请输入\" />\n * </Form.Item>\n * </Form>\n * );\n * },\n * onOK: (form) => {\n * console.log('content form数据', form.getFieldsValue());\n * return Promise.resolve();\n * },\n * });\n * ```\n */\nexport const dialogModal = {\n open: (props: DialogModalProps) => {\n const { divElement, elementId } = dom.bodyAppendDivElement();\n window['__dialog_modal_elementId'] = elementId;\n const root = createRoot(divElement);\n root.render(<ModalRender {...props} divElement={divElement} elementId={elementId} />);\n return {\n close: () => {\n window[elementId]?.();\n },\n };\n },\n /**\n * ```\n * 1. 关闭最新弹框,如果有多个弹框只能关闭最后一个\n * 2. 多个弹框主动关闭,只能使用 dialogModal.open()返回值中的close\n * ```\n */\n close: () => {\n try {\n const elementId = window['__dialog_modal_elementId'] as string;\n if (isString(elementId)) window[elementId]?.();\n } catch (error) {\n //\n }\n },\n};\n"],"names":["ModalRender","props","divElement","elementId","onOk","onCancel","okButtonProps","cancelButtonProps","content","configProviderProps","className","okHidden","cancelHidden","footer","cancelText","okText","bodyHeightPercent","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","open","setOpen","_Form$useForm","Form","useForm","form","size","useSize","document","querySelector","onClose","_hooks","useCallbackRef","window","error","fbaHooks","useEffectCustom","onCancelHandle","e","response","_isPromise","then","onOkHandle","onAfterClose","dom","removeBodyChild","afterClose","operateGroup","_jsx","ButtonWrapper","_extends","onClick","hidden","children","type","footerNew","height","useMemo","ConfigProviderWrapper","Modal","maskClosable","centered","destroyOnClose","bodyStyle","maxHeight","_classNames","getContainer","style","color","dialogModal","_dom$bodyAppendDivEle","bodyAppendDivElement","root","createRoot","render","close","_window$elementId","_window","call","_window$elementId2","_window2","_isString"],"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 a,createElement as l,useMemo as s}from"react";import{B as f}from"./button-wrapper-e833e139.js";import{fbaHooks as u}from"./fba-hooks/index.js";import{f as p}from"./fba-utils-1e895394.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 x=n.useId(undefined,"DropdownMenuWrapper");var w=a({}),j=w[0],N=w[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 x=c?o({color:c},h):h;var w=C||"link";var M={key:t,label:l(f,o({loadingPosition:"center",size:"small"},P,{type:w,style:x,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:w,style:x,children:u})))};if(g&&!P.disabled){r.push(T)}else{r.push(M)}}));P(r)}),[k,j]);var M=document.querySelector("."+x);var T=s((function(){if(y.isFixed||M&&c(M)){return undefined}return M}),[y.isFixed,M]);return d("div",{className:x,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-3544d20e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown-menu-wrapper-3544d20e.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 isFixed?: boolean;\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 (props.isFixed || (target && parentsHasSticky(target))) {\n return undefined;\n }\n return target;\n }, [props.isFixed, 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","isFixed","className","Dropdown","getPopupContainer","pointAtCenter","menu","items","onOpenChange","_open"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import{isArray as r}from"@dimjs/lang/cjs/is-array";import{getGlobalData as t}from"@flatbiz/utils";var i=function i(){var e=t(),n=e.elemAclLimits;var a=r(n)?n:[];return a};var e=function r(t){if(!t)return true;var e=i();if(e.includes(t)){return true}return false};function n(r,t){var i=r;for(var e in t){if(t.hasOwnProperty(e)){i[e]=t[e]}}return i}var a={hasPermission:e,getPermissionList:i,attachPropertiesToComponent:n};export{a as f};
3
- //# sourceMappingURL=fba-utils-1e895394.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fba-utils-1e895394.js","sources":["@flatbiz/antd/src/fba-utils/fba-utils.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { getGlobalData } from '@flatbiz/utils';\n\nconst getPermissionList = () => {\n const { elemAclLimits } = getGlobalData<{ elemAclLimits: string[] }>();\n const permissionList: string[] = isArray(elemAclLimits) ? elemAclLimits : [];\n return permissionList;\n};\n\nconst hasPermission = (name?: string) => {\n if (!name) return true;\n const permissionList = getPermissionList();\n if (permissionList.includes(name)) {\n return true;\n }\n return false;\n};\n\nfunction attachPropertiesToComponent<C, P extends Record<string, unknown>>(\n component: C,\n properties: P,\n): C & P {\n const ret = component as Record<string, unknown>;\n for (const key in properties) {\n if (properties.hasOwnProperty(key)) {\n ret[key] = properties[key];\n }\n }\n return ret as C & P;\n}\n\nexport const fbaUtils = {\n hasPermission,\n getPermissionList,\n attachPropertiesToComponent,\n};\n"],"names":["getPermissionList","_getGlobalData","getGlobalData","elemAclLimits","permissionList","_isArray","hasPermission","name","includes","attachPropertiesToComponent","component","properties","ret","key","hasOwnProperty","fbaUtils"],"mappings":";kGAGA,IAAMA,EAAoB,SAApBA,IACJ,IAAAC,EAA0BC,IAAlBC,EAAaF,EAAbE,cACR,IAAMC,EAA2BC,EAAQF,GAAiBA,EAAgB,GAC1E,OAAOC,CACT,EAEA,IAAME,EAAgB,SAAhBA,EAAiBC,GACrB,IAAKA,EAAM,OAAO,KAClB,IAAMH,EAAiBJ,IACvB,GAAII,EAAeI,SAASD,GAAO,CACjC,OAAO,IACT,CACA,OAAO,KACT,EAEA,SAASE,EACPC,EACAC,GAEA,IAAMC,EAAMF,EACZ,IAAK,IAAMG,KAAOF,EAAY,CAC5B,GAAIA,EAAWG,eAAeD,GAAM,CAClCD,EAAIC,GAAOF,EAAWE,EACxB,CACF,CACA,OAAOD,CACT,CAEO,IAAMG,EAAW,CACtBT,cAAAA,EACAN,kBAAAA,EACAS,4BAAAA"}
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import e from"@ant-design/icons/es/icons/RedoOutlined";import{hooks as r}from"@wove/react/cjs/hooks";import{_ as t,a as o}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{get as s}from"@dimjs/utils/cjs/get";import{Select as i,Button as a}from"antd";import{useState as l,useMemo as u}from"react";import{R as c}from"./request-status-03fc60e2.js";import{jsx as d}from"react/jsx-runtime";var f=["showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames"];var v=function v(m){var p=m.showAllOption,h=m.serviceConfig,g=m.onSelectorListChange,q=m.onSelectorRequestError,b=m.requestMessageConfig,C=m.fieldNames,y=t(m,f);var w=l("request-init"),R=w[0],j=w[1];var S=l(),k=S[0],A=S[1];var O=(C==null?void 0:C.label)||"label";var x=(C==null?void 0:C.value)||"value";var M=(C==null?void 0:C.disabled)||"disabled";var P=(C==null?void 0:C.searchKeyword)||"searchKeyword";var B=h.params;var E=u((function(){var e=p===true;if(p){return{label:e?"全部":p.label,value:e?"":p.value}}return null}),[p]);var K=function e(r){if(h.onRequestResultAdapter){return h.onRequestResultAdapter(r)}if(C!=null&&C.list){var t=s(r,C==null?void 0:C.list);return n(t)?t:[]}return n(r)?r:[]};var L=function e(r){return new Promise((function(e,t){var n,s,i;var a=function(){try{return e()}catch(e){return t(e)}};var l=function(e){try{j("request-error");q==null?void 0:q(e);return a()}catch(e){return t(e)}};try{j("request-progress");return Promise.resolve(h.onRequest==null?void 0:h.onRequest(o({},B,(n={},n[P]=r,n)))).then((function(e){try{s=e;i=K(s);g==null?void 0:g(i);if(O&&x){i=i.map((function(e){return o({},e,{label:e[O],value:e[x],disabled:e[M||"disabled"]})}))}if(E){i.unshift(E)}A(i);j("request-success");return a()}catch(e){return l(e)}}),l)}catch(e){l(e)}}))};var N=r.useDebounceCallback((function(e){A([]);void L(e)}),300);var _=R==="request-progress";return d(i,o({showSearch:true,allowClear:true,dropdownMatchSelectWidth:false},y,{style:o({width:"100%"},m.style),options:k,filterOption:false,onSearch:N,notFoundContent:d(c,{status:R,loading:_,messageConfig:o({"request-init":"请输入搜索条件"},b),errorButton:d(a,{type:"primary",onClick:L,children:"重新获取数据"})}),suffixIcon:R==="request-error"?d(e,{spin:_,onClick:L}):undefined,loading:_}))};export{v as S};
3
- //# sourceMappingURL=selector-wrapper-search-f799bcf0.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selector-wrapper-search-f799bcf0.js","sources":["@flatbiz/antd/src/selector-wrapper-search/selector-wrapper-search.tsx"],"sourcesContent":["import { RedoOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport { LabelValueItem, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Select, SelectProps } from 'antd';\nimport { useMemo, useState } from 'react';\nimport { RequestStatus, TRequestStatus, TRequestStatusProps } from '../request-status';\n\nexport type SelectorWrapperSearchServiceConfig = {\n params?: TPlainObject;\n onRequest: (params?: TAny) => TAny;\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type SelectorWrapperSearchProps = Omit<\n SelectProps,\n 'onSearch' | 'notFoundContent' | 'options' | 'fieldNames' | 'loading'\n> & {\n /**\n * 参数Key映射\n * ```\n * 1. list 为 onRequest 返回数据中列表key值,可多级取值,例如: 'a.b.c'\n * 2. 配置 serviceConfig.onRequestResultAdapter后,fieldNames.list配置失效\n * ```\n */\n fieldNames?: { label: string; value: string; disabled?: string; searchKeyword?: string; list?: string };\n /**\n * 请求服务需求的数据\n */\n serviceConfig: SelectorWrapperSearchServiceConfig;\n /**\n * 添加全部选项\n * ```\n * 1. 默认值label=\"全部\",value=\"\"\n * 2. 可配置label、value\n * ```\n */\n showAllOption?: true | TPlainObject<string | number>;\n /** selectorList发生变更时触发,每次都会调用 */\n onSelectorListChange?: (dataList: TPlainObject[]) => void;\n /**\n * 通过服务获取数据异常回调\n */\n onSelectorRequestError?: (error: Error) => void;\n\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n};\n/**\n * 选择器简单包装组件\n * @param props\n * @returns\n * ```\n * 1. 只支持 search + 服务 功能\n * 2. 不会缓存接口数据\n * 3. 不会对value、onChange做任何处理\n * ```\n */\nexport const SelectorWrapperSearch = (props: SelectorWrapperSearchProps) => {\n const {\n showAllOption,\n serviceConfig,\n onSelectorListChange,\n onSelectorRequestError,\n requestMessageConfig,\n fieldNames,\n ...otherProps\n } = props;\n const [requestStatus, setRequestStatus] = useState<TRequestStatus>('request-init');\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const optionsItemLabelField = fieldNames?.label || 'label';\n const optionsItemValueField = fieldNames?.value || 'value';\n const optionsItemDisabledField = fieldNames?.disabled || 'disabled';\n const searchKeyword = fieldNames?.searchKeyword || 'searchKeyword';\n const serviceParams = serviceConfig.params;\n\n const allOptionConfig = useMemo(() => {\n const isTrue = showAllOption === true;\n if (showAllOption) {\n return {\n label: isTrue ? '全部' : (showAllOption.label as string),\n value: isTrue ? '' : (showAllOption.value as TAny),\n };\n }\n return null;\n }, [showAllOption]);\n\n const serviceRespDataAdapter = (respData) => {\n if (serviceConfig.onRequestResultAdapter) {\n return serviceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n }\n if (fieldNames?.list) {\n const result = get(respData, fieldNames?.list);\n return isArray(result) ? result : [];\n }\n return isArray(respData) ? respData : [];\n };\n\n const startDataSourceRequest = async (keyword) => {\n try {\n setRequestStatus('request-progress');\n const respData = await serviceConfig.onRequest?.({\n ...serviceParams,\n [searchKeyword]: keyword,\n });\n let respAdapterData = serviceRespDataAdapter(respData);\n onSelectorListChange?.(respAdapterData);\n if (optionsItemLabelField && optionsItemValueField) {\n respAdapterData = respAdapterData.map((item) => {\n return {\n ...item,\n label: item[optionsItemLabelField],\n value: item[optionsItemValueField],\n disabled: item[optionsItemDisabledField || 'disabled'],\n };\n });\n }\n\n if (allOptionConfig) {\n respAdapterData.unshift(allOptionConfig);\n }\n setDataSource(respAdapterData);\n setRequestStatus('request-success');\n } catch (error) {\n setRequestStatus('request-error');\n onSelectorRequestError?.(error);\n }\n };\n\n const onSearch = hooks.useDebounceCallback((value: string) => {\n setDataSource([]);\n void startDataSourceRequest(value);\n }, 300);\n\n const loading = requestStatus === 'request-progress';\n return (\n <Select\n showSearch={true}\n allowClear={true}\n dropdownMatchSelectWidth={false}\n {...otherProps}\n style={{ width: '100%', ...props.style }}\n options={dataSource as LabelValueItem[]}\n filterOption={false}\n onSearch={onSearch}\n notFoundContent={\n <RequestStatus\n status={requestStatus}\n loading={loading}\n messageConfig={{\n 'request-init': '请输入搜索条件',\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n }\n suffixIcon={\n requestStatus === 'request-error' ? (\n <RedoOutlined spin={loading} onClick={startDataSourceRequest} />\n ) : undefined\n }\n loading={loading}\n />\n );\n};\n"],"names":["SelectorWrapperSearch","props","showAllOption","serviceConfig","onSelectorListChange","onSelectorRequestError","requestMessageConfig","fieldNames","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","requestStatus","setRequestStatus","_useState2","dataSource","setDataSource","optionsItemLabelField","label","optionsItemValueField","value","optionsItemDisabledField","disabled","searchKeyword","serviceParams","params","allOptionConfig","useMemo","isTrue","serviceRespDataAdapter","respData","onRequestResultAdapter","list","result","_get","_isArray","startDataSourceRequest","keyword","Promise","$return","$error","_extends2","_respData","respAdapterData","$Try_1_Post","$boundEx","$Try_1_Catch","error","resolve","onRequest","_extends","then","$await_2","map","item","unshift","onSearch","_hooks","useDebounceCallback","loading","_jsx","Select","showSearch","allowClear","dropdownMatchSelectWidth","style","width","options","filterOption","notFoundContent","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","children","suffixIcon","_RedoOutlined","spin","undefined"],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import{_ as e,a}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{hooks as r}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 l=["isSticky","isFixed","activeCacheKey","cancelActiveCache","hiddenTabHeader"];var v=function v(d){var f=d.isSticky,p=f===void 0?true:f,u=d.isFixed,m=u===void 0?true:u,y=d.activeCacheKey,b=d.cancelActiveCache,h=d.hiddenTabHeader,K=e(d,l);var j=Object.prototype.hasOwnProperty.call(d,"activeKey");var C=y||"tabs-wrapper-activeKey";var g=i(m)?p:m;var A=r.useCallbackRef((function(e){if(b!==true&&!j){c.set(C,{activeKey:e})}K.onChange==null?void 0:K.onChange(e)}));var w=s((function(){var e;if(b===true||j){return d.defaultActiveKey}var a=(e=c.get(C))==null?void 0:e.activeKey;return a||K.defaultActiveKey}),[C,b,j,K.defaultActiveKey,d.defaultActiveKey]);var x=t("fba-tabs-wrapper",{"fba-tabs-wrapper-fixed":g,"fba-tabs-wrapper-hidden-header":h},K.className);return n(o,a({},K,{tabBarStyle:a({padding:"0 15px"},K.tabBarStyle),className:x,defaultActiveKey:w,onChange:A}))};export{v as T};
3
- //# sourceMappingURL=tabs-wrapper-675dc949.js.map
@@ -1,3 +0,0 @@
1
- /*! @flatjs/forge MIT @flatbiz/antd */
2
- import r from"@ant-design/icons/es/icons/PlusOutlined";import{_ as e,a as i}from"./_rollupPluginBabelHelpers-1f4d8910.js";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isEmpty as t}from"@dimjs/lang/cjs/is-empty";import{hooks as a}from"@wove/react/cjs/hooks";import{isPlainObject as o}from"@dimjs/lang/cjs/is-plain-object";import{extend as s}from"@dimjs/utils/cjs/extend";import{toArray as u}from"@flatbiz/utils";import{message as l,Upload as d,Button as f}from"antd";import{useState as m,Fragment as c}from"react";import{flushSync as p}from"react-dom";import{fbaHooks as v}from"./fba-hooks/index.js";import{jsx as g,jsxs as h}from"react/jsx-runtime";var j=["onChange","onUploadError","value","triggerText"];var x=function r(f){var c=f.onChange,h=f.onUploadError,x=f.value,y=f.triggerText,C=e(f,j);var b=m(),O=b[0],R=b[1];var U=s({uid:"uid",name:"name",url:"url"},f.fieldNames);v.useEffectCustom((function(){var r=(O==null?void 0:O.filter((function(r){return r["status"]==="error"})))||[];var e=(x==null?void 0:x.map((function(r){return{uid:r[U.uid],name:r[U.name],url:r[U.url],status:"done",isOriginal:true}})))||[];if(r.length>0){var i=r.map((function(r){return{uid:r.uid,name:r.name,status:"error",isOriginal:true,response:r["response"]}}));e=e.concat(i)}R(e)}),[U.name,U.uid,U.url,x]);var E=function r(e){var i=[];var n=false;e.forEach((function(r){if(r["isOriginal"]){if(r["status"]!=="error"){var e;i.push((e={},e[U.uid]=r.uid,e[U.name]=r.name,e[U.url]=r.url,e))}}else if(o(r.response)){if(r.response.code==="0000"){var t;var a=r.response.data;var s=(f.onRequestResultAdapter==null?void 0:f.onRequestResultAdapter(a))||a;i.push((t={},t[U.uid]=s[U.uid]||r.uid,t[U.name]=s[U.name]||r.name,t[U.url]=s[U.url],t))}else{n=true;r.status="error";r.response=r.response.message||"上传失败"}}}));if(n){R([].concat(e))}c==null?void 0:c(i)};var k=a.useCallbackRef((function(r){var e=r.fileList;if(r.file.status==="done"){var i=[].concat(r.fileList);var n=i.filter((function(r){return r.status==="done"||r["isOriginal"]}));var t=n.length===i.length;if(t){E(i)}p((function(){return R(i)}));return}else if(r.file.status==="removed"){var a=r.file.uid;var o=x!==undefined?[].concat(x):[];var s=o.findIndex((function(r){var e=r[U.uid];return e===a}));if(s>=0){o.splice(s,1)}c==null?void 0:c(o)}else if(r.file.status==="error"){if(h){h()}else{void l.error("上传操作失败...")}}R([].concat(e));f.onUploadChange==null?void 0:f.onUploadChange(r)}));var L=t(C.maxCount)?undefined:C.maxCount;return g(d,i({},C,{onChange:k,fileList:O,className:n("v-upload-wrapper",C.className),children:C.disabled||L===0||L&&u(O).length>=L?null:g(T,{triggerText:y,listType:C.listType,children:f.children})}))};var T=function e(i){if(i.children)return g(c,{children:i.children});if(i.listType==="picture-card"){return h("div",{children:[g(r,{}),g("div",{style:{marginTop:8},children:i.triggerText||"上传图片"})]})}if(i.listType==="picture"){return g(f,{type:"primary",ghost:true,children:i.triggerText||"选择图片上传"})}return g(f,{type:"primary",ghost:true,children:i.triggerText||"选择文件上传"})};export{x as U};
3
- //# sourceMappingURL=upload-wrapper-df8a2277.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload-wrapper-df8a2277.js","sources":["@flatbiz/antd/src/upload-wrapper/upload-wrapper.tsx"],"sourcesContent":["import { PlusOutlined } from '@ant-design/icons';\nimport { isEmpty, isPlainObject } from '@dimjs/lang';\nimport { classNames, extend } from '@dimjs/utils';\nimport { TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Upload, UploadProps } from 'antd';\nimport { UploadChangeParam } from 'antd/lib/upload';\nimport { UploadFile, UploadListType } from 'antd/lib/upload/interface';\nimport { Fragment, ReactNode, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { fbaHooks } from '../fba-hooks';\nimport './style.less';\n\nexport type UploadWrapperFileItem = {\n uid: string;\n name: string;\n url?: string;\n};\n\nexport type UploadWrapperProps<T extends TPlainObject = TPlainObject> = {\n value?: T[];\n onChange?: (value?: T[]) => void;\n onUploadError?: (message?: string) => void;\n onUploadChange?: (info: UploadChangeParam<UploadFile>) => void;\n /**\n * 属性映射\n */\n fieldNames?: {\n uid: string;\n name?: string;\n url?: string;\n };\n /**\n * 接口响应数据适配器,如果配置了fieldNames,适配器返回值会再进过fieldNames转换\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject;\n /** 操作触发显示文本 */\n triggerText?: string;\n} & Omit<UploadProps, 'onChange' | 'fileList'>;\n\n/**\n * 文件上传\n * ```\n * 1. 可通过配置children替换默认上传触发布局\n * 2. 接口返回结构:\n * formData上传接口返回值\n * {\n * code: '0000',\n * data: {\n * uid: '唯一值,可使用fileKey值'\n * name: '文件名称'\n * url: '预览地址'\n * }\n * }\n * 3. 如果接口返回的不是上面的字段名称,可通过fieldNames配置接口返回字段名称映射\n *\n * 4. 最佳使用方式,与Form结合使用\n * <Form.Item name=\"attachmentList\" label=\"附件\">\n * <UploadWrapper action={uploadUrl} />\n * </Form.Item>\n * ```\n *\n */\nexport const UploadWrapper = (props: UploadWrapperProps) => {\n const { onChange, onUploadError, value, triggerText, ...otherProps } = props;\n const [uploadList, setUploadList] = useState<UploadWrapperFileItem[]>();\n const fieldNames = extend(\n {\n uid: 'uid',\n name: 'name',\n url: 'url',\n },\n props.fieldNames,\n ) as Required<UploadWrapperFileItem>;\n\n fbaHooks.useEffectCustom(() => {\n const errorList = uploadList?.filter((item) => item['status'] === 'error') || [];\n let newList =\n value?.map((item) => {\n return {\n uid: item[fieldNames.uid],\n name: item[fieldNames.name],\n url: item[fieldNames.url],\n status: 'done',\n isOriginal: true,\n };\n }) || [];\n if (errorList.length > 0) {\n const newErrorList = errorList.map((item) => {\n return {\n uid: item.uid,\n name: item.name,\n status: 'error',\n isOriginal: true,\n response: item['response'],\n };\n }) as TAny[];\n newList = newList.concat(newErrorList);\n }\n setUploadList(newList);\n }, [fieldNames.name, fieldNames.uid, fieldNames.url, value]);\n\n const handleResponse = (fileList: UploadFile<TAny>[]) => {\n const newFileList: TAny[] = [];\n let hasError = false;\n fileList.forEach((item) => {\n if (item['isOriginal']) {\n if (item['status'] !== 'error') {\n newFileList.push({\n [fieldNames.uid]: item.uid,\n [fieldNames.name]: item.name,\n [fieldNames.url]: item.url,\n });\n }\n } else if (isPlainObject(item.response)) {\n if (item.response.code === '0000') {\n const respData = item.response.data;\n const result = (props.onRequestResultAdapter?.(respData) || respData) as TPlainObject;\n newFileList.push({\n [fieldNames.uid]: result[fieldNames.uid] || item.uid,\n [fieldNames.name]: result[fieldNames.name] || item.name,\n [fieldNames.url]: result[fieldNames.url],\n });\n } else {\n hasError = true;\n item.status = 'error';\n item.response = item.response.message || '上传失败';\n }\n }\n });\n if (hasError) {\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n }\n onChange?.(newFileList);\n };\n\n const onUploadChange = hooks.useCallbackRef((info) => {\n const fileList = info.fileList as TPlainObject[];\n if (info.file.status === 'done') {\n const newFileList = [...info.fileList];\n const donwList = newFileList.filter((item) => item.status === 'done' || item['isOriginal']);\n\n const allDone = donwList.length === newFileList.length;\n if (allDone) {\n handleResponse(newFileList);\n }\n flushSync(() => setUploadList(newFileList));\n return;\n } else if (info.file.status === 'removed') {\n const uid = info.file.uid;\n const targetList = value !== undefined ? [...value] : [];\n const targetIndex = targetList.findIndex((item) => {\n const tempUid = item[fieldNames.uid];\n return tempUid === uid;\n });\n if (targetIndex >= 0) {\n targetList.splice(targetIndex, 1);\n }\n onChange?.(targetList);\n } else if (info.file.status === 'error') {\n if (onUploadError) {\n onUploadError();\n } else {\n void message.error('上传操作失败...');\n }\n }\n // https://github.com/ant-design/ant-design/issues/2423\n setUploadList([...fileList] as UploadWrapperFileItem[]);\n props.onUploadChange?.(info);\n });\n\n const maxCount = isEmpty(otherProps.maxCount) ? undefined : otherProps.maxCount;\n\n return (\n <Upload\n {...otherProps}\n onChange={onUploadChange}\n fileList={uploadList}\n className={classNames('v-upload-wrapper', otherProps.className)}\n >\n {otherProps.disabled ||\n maxCount === 0 ||\n (maxCount && toArray(uploadList).length >= maxCount) ? null : (\n <UploadTrigger triggerText={triggerText} listType={otherProps.listType}>\n {props.children}\n </UploadTrigger>\n )}\n </Upload>\n );\n};\n\nconst UploadTrigger = (props: {\n listType?: UploadListType;\n children?: ReactNode | ReactNode[];\n triggerText?: string;\n}) => {\n if (props.children) return <Fragment>{props.children}</Fragment>;\n if (props.listType === 'picture-card') {\n return (\n <div>\n <PlusOutlined />\n <div style={{ marginTop: 8 }}>{props.triggerText || '上传图片'}</div>\n </div>\n );\n }\n if (props.listType === 'picture') {\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择图片上传'}\n </Button>\n );\n }\n return (\n <Button type=\"primary\" ghost>\n {props.triggerText || '选择文件上传'}\n </Button>\n );\n};\n"],"names":["UploadWrapper","props","onChange","onUploadError","value","triggerText","otherProps","_objectWithoutPropertiesLoose","_excluded","_useState","useState","uploadList","setUploadList","fieldNames","_extend","uid","name","url","fbaHooks","useEffectCustom","errorList","filter","item","newList","map","status","isOriginal","length","newErrorList","response","concat","handleResponse","fileList","newFileList","hasError","forEach","_newFileList$push","push","_isPlainObject","code","_newFileList$push2","respData","data","result","onRequestResultAdapter","message","onUploadChange","_hooks","useCallbackRef","info","file","donwList","allDone","flushSync","targetList","undefined","targetIndex","findIndex","tempUid","splice","error","maxCount","_isEmpty","_jsx","Upload","_extends","className","_classNames","children","disabled","toArray","UploadTrigger","listType","Fragment","_jsxs","_PlusOutlined","style","marginTop","Button","type","ghost"],"mappings":"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"}