@flatbiz/antd 4.5.59 → 4.5.61
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/card-layout/index.css +1 -1
- package/esm/dialog-modal/index.js +1 -1
- package/esm/dialog-modal/index.js.map +1 -1
- package/esm/easy-table/index.css +1 -1
- package/esm/easy-table/index.js +3 -7
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-table-pro/index.js +1 -1
- package/esm/editable-table-pro/index.js.map +1 -1
- package/esm/fba-app/index.js +1 -1
- package/esm/fba-app/index.js.map +1 -1
- package/esm/index.js +2 -2
- package/index.d.ts +27 -9
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editable-table-pro/editable-table-pro.tsx"],"sourcesContent":["import { CloseCircleFilled, PlusOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { arrayReorder, isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message, Space, Table, type FormListOperation, type TableProps } from 'antd';\nimport type { FormListProps } from 'antd/es/form';\nimport type { ColumnsType } from 'antd/es/table';\nimport type { ReactElement } from 'react';\nimport { isValidElement, useMemo, useRef, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { FormItemWrapper } from '../form-item-wrapper';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport type {\n EditableTableProColumnItem,\n EditableTableProDataIndex,\n EditableTableProOperation,\n} from './type';\n\ntype dataSourceRelativeItem = {\n level: number;\n parentUid?: string | number;\n index: number;\n};\n\nexport type EditableTableProProps = {\n columns: EditableTableProColumnItem[];\n /**\n * 当前Edittable处在formList内部时(必填),完整formItem的name\n * ```\n * 例如 处在formList内部\n * 1. formListName=[0,dataList]\n * 2. formListCompleteName=[xxxList, 0, dataList]\n * ```\n */\n formListCompleteName?: Array<string | number>;\n /** Form.List name */\n formListName: Array<string | number> | string;\n /** 唯一值字段Key */\n uidFieldKey: string;\n /** 初始化值 */\n initialValue?: TPlainObject[];\n /** 指定树形结构的列名,默认值:children */\n childrenColumnName?: string;\n /** 表格组件配置 */\n tableProps?: Omit<TableProps<TPlainObject>, 'dataSource' | 'columns' | 'rowKey'> & {\n // 如果重写了columns.onCell,则此配置失效\n cellVerticalAlign?: 'baseline' | 'middle' | 'top' | 'bottom';\n };\n /**\n * Form.List rules\n * ```\n rules={[\n {\n validator: async (_, names) => {\n if (!names || names.length < 2) {\n return Promise.reject(new Error('At least 2 passengers'));\n }\n },\n },\n ]}\n * ```\n */\n rules?: FormListProps['rules'];\n className?: string;\n style?: React.CSSProperties;\n\n /**`默认新增按钮`新增行默认值,hiddenFooterBtn != true 有效 */\n addRowDefaultValues?: () => TPlainObject;\n /** 隐藏底部`新增`按钮 */\n hiddenFooterBtn?: boolean;\n /** 表格顶部区域渲染 */\n tableBeforeAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 表格底部区域渲染 */\n tableAfterAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 展开的行key,一般用于初始化,重新tableProps.expandable.expandedRowKeys后失效 */\n expandedRowKeys?: string[];\n /**\n * 展开图标布局,默认:layout1\n * ```\n * 1. 可编辑表格第一项为可编辑状态时,选 layout1\n * 2. 可编辑表格第一项为非可编辑状态时,选 layout2\n * ```\n */\n expandedIconLayout?: 'layout1' | 'layout2';\n};\n\n/**\n * 使用FormList实现可编辑表格\n * ```\n * 1. 必须在外部包裹Form组件\n * 2. 表格数据源数组中必须存在唯一值字段,通过uidFieldKey配置\n * 3. 可嵌套编辑,数据嵌套的节点名称可通过 childrenColumnName设置,默认:children\n * 4. 行内需要联动逻辑可使用 column.render.operation.setCurrentRowTargetField 方法\n * 5. 在多级编辑中,可通过 column.render.operation.level 判断当前行数据层级\n * 6. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 7. 存在多级的情况下,可通过 column.render.operation.move 方法实现同一级内移动\n *\n * demo\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable1\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable2\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable4\n * ```\n */\nexport const EditableTablePro = (props: EditableTableProProps) => {\n const form = Form.useFormInstance();\n const [expandedRowKeys, setExpandedRowKeys] = useState<string[]>([]);\n const formListName = toArray<string | number>(props.formListName);\n const dataSourceUidMap = useRef<Record<string, TPlainObject>>({});\n const dataSourceUidMapFt = useRef<Record<string | number, dataSourceRelativeItem>>({});\n const formListOperationRef = useRef<FormListOperation>();\n const uidFieldKey = props.uidFieldKey;\n const childrenColumnName = props.childrenColumnName || 'children';\n const expandedIconLayout = props.expandedIconLayout || 'layout1';\n\n const formListCompleteName = props.formListCompleteName || formListName;\n\n const dataSource = Form.useWatch(formListCompleteName, form);\n\n const [showEmptyText, setShowEmptyText] = useState<string | undefined>();\n\n const dataSourceFt = useMemo(() => {\n if (!dataSource) return [];\n let queryUidErrorFlag = false;\n function deep(itemList: TPlainObject[], level: number, parentUid?: string | number) {\n for (let index = 0; index < itemList.length; index++) {\n const item = itemList[index];\n if (!item[uidFieldKey]) {\n console.error(item, '数据中未查询到唯一值');\n queryUidErrorFlag = true;\n return;\n } else {\n dataSourceUidMapFt.current[item[uidFieldKey]] = {\n level,\n parentUid,\n index,\n };\n dataSourceUidMap.current[item[uidFieldKey]] = item;\n deep(item[childrenColumnName] || [], level + 1, item[uidFieldKey]);\n }\n }\n }\n\n dataSourceUidMapFt.current = {};\n dataSourceUidMap.current = {};\n deep(isArray(dataSource) ? dataSource : [], 1);\n if (queryUidErrorFlag) {\n const txt = `数据源中存在唯一值【${uidFieldKey}】为空的情况,无法渲染表格`;\n void message.error(txt);\n setShowEmptyText(txt);\n return [];\n }\n return dataSource;\n }, [childrenColumnName, dataSource, uidFieldKey]);\n\n fbaHooks.useEffectCustom(() => {\n setExpandedRowKeys(props.expandedRowKeys || []);\n }, [JSON.stringify(props.expandedRowKeys || [])]);\n\n const getFormItemName = hooks.useCallbackRef((record: TPlainObject) => {\n const uid = record[uidFieldKey];\n let target: dataSourceRelativeItem | undefined = dataSourceUidMapFt.current[uid];\n\n const indexes: number[] = [];\n while (target) {\n indexes.push(target.index);\n if (target.level === 1) {\n break;\n }\n target = target.parentUid ? dataSourceUidMapFt.current[target.parentUid] : undefined;\n }\n const arr: Array<string | number> = [];\n indexes.reverse().forEach((item, index) => {\n arr.push(item);\n if (index < indexes.length - 1) {\n arr.push(childrenColumnName);\n }\n });\n return arr;\n });\n\n const addItem = hooks.useCallbackRef((uid: string, defaultValue: TPlainObject, insertIndex?: number) => {\n const target = dataSourceUidMap.current[uid];\n\n if (target) {\n if (target.level === 1) {\n /** 通过 formListOperation.add 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.add(defaultValue, insertIndex);\n return;\n }\n target[childrenColumnName] = target[childrenColumnName] || [];\n if (insertIndex == undefined) {\n target[childrenColumnName].push(defaultValue);\n } else {\n target[childrenColumnName].splice(insertIndex, 0, defaultValue);\n }\n const expandedRowKeysSet = new Set(expandedRowKeys);\n expandedRowKeysSet.add(target[uidFieldKey]);\n setExpandedRowKeys([...Array.from(expandedRowKeysSet)]);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const deleteItem = hooks.useCallbackRef((uid: string | number, index: number) => {\n const target = dataSourceUidMapFt.current[uid];\n if (target.level === 1) {\n /** 通过 formListOperation.remove 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.remove(index);\n return;\n }\n const parentUid = target.parentUid;\n if (!parentUid) {\n dataSource.splice(index, 1);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName].splice(index, 1);\n if (parentTarget[childrenColumnName].length === 0) {\n delete parentTarget[childrenColumnName];\n }\n }\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: cloneState(dataSource),\n },\n ]);\n });\n\n const moveItem = hooks.useCallbackRef((uid: string | number, fromIndex: number, toIndex: number) => {\n if (fromIndex === toIndex || toIndex < 0) return;\n const target = dataSourceUidMapFt.current[uid];\n const parentUid = target.parentUid;\n if (!parentUid) {\n const result = arrayReorder(dataSource, fromIndex, toIndex);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: result,\n },\n ]);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName] = arrayReorder(parentTarget[childrenColumnName], fromIndex, toIndex);\n\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const setCurrentRowTargetField = hooks.useCallbackRef(\n (\n formItemPrevName: Array<string | number>,\n dataIndexConfigs: {\n name: EditableTableProDataIndex;\n value?: TAny;\n }[],\n ) => {\n fbaUtils.setFormFieldsAndTriggerValuesChange(\n form,\n dataIndexConfigs.map((item) => {\n return {\n name: [...formListCompleteName, ...formItemPrevName, ...toArray<string | number>(item.name)],\n value: item.value,\n };\n }),\n );\n },\n );\n\n const setCurrentRowChildrenValue = hooks.useCallbackRef(\n (formItemPrevName: Array<string | number>, value?: TPlainObject[]) => {\n setCurrentRowTargetField(formItemPrevName, [{ name: childrenColumnName, value }]);\n },\n );\n\n const validateRowFields = hooks.useCallbackRef(\n async (formItemPrevName: Array<string | number>, nameList: EditableTableProDataIndex[]) => {\n await form.validateFields(\n nameList.map((item) => [...formItemPrevName, ...toArray<string | number>(item)]),\n );\n },\n );\n\n const columns = useMemo(() => {\n return props.columns.map((column) => {\n const title = column.title;\n const support = isValidElement(title) || typeof title === 'string';\n let titleRender: ReactElement | string | undefined = title;\n if (column.tipsWrapperProps && support) {\n if (typeof column.tipsWrapperProps === 'string') {\n titleRender = (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: column.tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n );\n } else {\n titleRender = <TipsWrapper {...column.tipsWrapperProps}>{title}</TipsWrapper>;\n }\n }\n\n let required = column.required;\n\n if (!required && typeof column.formItemProps === 'object' && column.formItemProps.rules?.length) {\n required = !!column.formItemProps.rules.find((item) => !!item['required']);\n }\n\n return {\n onCell: () => {\n return {\n valign: props.tableProps?.cellVerticalAlign || 'middle',\n };\n },\n ...column,\n title: required ? (\n <TextSymbolWrapper\n style={{ marginLeft: column.align === 'center' ? undefined : 10 }}\n text={titleRender}\n position=\"before\"\n symbolType=\"required\"\n />\n ) : (\n titleRender\n ),\n render: (value, record, index) => {\n if (isUndefinedOrNull(column.render)) {\n return value;\n }\n const uid = record[uidFieldKey];\n const dataIndex = toArray<string>(column['dataIndex']);\n const formItemPrevName = getFormItemName(record);\n const dataSourceTarget = dataSourceUidMapFt.current[uid];\n\n const editable =\n typeof column?.editable === 'function' ? column?.editable(record, index) : column?.editable;\n const tableRowFormItemCompleteName = [...formListCompleteName, ...formItemPrevName];\n\n const renderOperationProps: EditableTableProOperation = {\n editable,\n add: addItem.bind(null, uid),\n remove: deleteItem.bind(null, uid),\n move: moveItem.bind(null, uid),\n level: dataSourceTarget.level,\n parentItem: uid ? dataSourceUidMapFt.current[uid] : null,\n tableRowFormItemName: formItemPrevName,\n tableRowFormItemCompleteName,\n setCurrentRowTargetField: setCurrentRowTargetField.bind(null, formItemPrevName),\n setCurrentRowChildrenValue: setCurrentRowChildrenValue.bind(null, formItemPrevName),\n validateRowFields: validateRowFields.bind(null, tableRowFormItemCompleteName),\n };\n if (editable === true) {\n let formItemProps =\n typeof column.formItemProps === 'function'\n ? column.formItemProps(value, record, index, renderOperationProps)\n : column.formItemProps;\n\n if (!formItemProps?.rules?.length && required) {\n formItemProps = {\n ...formItemProps,\n rules: [{ required: true, message: '' }],\n };\n }\n\n return (\n <FormItemWrapper\n {...formItemProps}\n name={[...formItemPrevName, ...dataIndex]}\n style={{ marginBottom: 0, ...formItemProps?.style }}\n >\n {column.render?.(value, record, index, renderOperationProps) as React.ReactNode}\n </FormItemWrapper>\n );\n }\n return column.render?.(value, record, index, renderOperationProps);\n },\n };\n }) as ColumnsType<TPlainObject>;\n }, [\n props.columns,\n props.tableProps?.cellVerticalAlign,\n uidFieldKey,\n getFormItemName,\n formListCompleteName,\n addItem,\n deleteItem,\n moveItem,\n setCurrentRowTargetField,\n setCurrentRowChildrenValue,\n validateRowFields,\n ]);\n\n const className = classNames(\n 'editable-table-pro',\n { 'editable-table-pro-layout1': expandedIconLayout === 'layout1' },\n props.className,\n );\n\n return (\n <div className={className} style={props.style}>\n <Form.List name={formListName} rules={props.rules} initialValue={props.initialValue}>\n {(fields, formListOperation, { errors }) => {\n formListOperationRef.current = formListOperation;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.tableBeforeAreaRender?.(formListOperation, fields.length)}\n <Table\n scroll={{ x: 'max-content' }}\n pagination={false}\n size=\"small\"\n {...props.tableProps}\n locale={{\n emptyText: showEmptyText ? (\n <Space size={5} style={{ color: '#ff4d4f' }}>\n <CloseCircleFilled />\n <span>{showEmptyText}</span>\n </Space>\n ) : undefined,\n }}\n expandable={{\n expandedRowKeys: expandedRowKeys,\n onExpandedRowsChange: (expandedRowKeys) => {\n setExpandedRowKeys(expandedRowKeys as string[]);\n },\n ...props.tableProps?.expandable,\n childrenColumnName: childrenColumnName,\n }}\n columns={columns}\n dataSource={dataSourceFt}\n rowKey={uidFieldKey}\n />\n <ButtonWrapper\n block\n hidden={props.hiddenFooterBtn}\n type=\"dashed\"\n icon={<PlusOutlined />}\n style={{ marginTop: 15 }}\n onClick={() => {\n const defaultValues = props.addRowDefaultValues?.();\n if (!defaultValues?.[uidFieldKey]) {\n void message.error(\n `新增行默认值必须包含唯一值字段【${uidFieldKey}】,通过 addRowDefaultValues 设置`,\n );\n return;\n }\n formListOperation.add(defaultValues);\n }}\n >\n 新增\n </ButtonWrapper>\n {props.tableAfterAreaRender?.(formListOperation, fields.length)}\n {errors.length ? (\n <Form.ErrorList\n errors={[\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]}\n />\n ) : null}\n </div>\n );\n }}\n </Form.List>\n </div>\n );\n};\n"],"names":["EditableTablePro","props","_props$tableProps2","form","Form","useFormInstance","_useState","useState","expandedRowKeys","setExpandedRowKeys","formListName","toArray","dataSourceUidMap","useRef","dataSourceUidMapFt","formListOperationRef","uidFieldKey","childrenColumnName","expandedIconLayout","formListCompleteName","dataSource","useWatch","_useState2","showEmptyText","setShowEmptyText","dataSourceFt","useMemo","queryUidErrorFlag","deep","itemList","level","parentUid","index","length","item","console","error","current","_isArray","txt","message","fbaHooks","useEffectCustom","JSON","stringify","getFormItemName","_hooks","useCallbackRef","record","uid","target","indexes","push","undefined","arr","reverse","forEach","addItem","defaultValue","insertIndex","_formListOperationRef","add","splice","expandedRowKeysSet","Set","concat","Array","from","fbaUtils","setFormFieldsAndTriggerValuesChange","name","value","deleteItem","_formListOperationRef2","remove","parentTarget","cloneState","moveItem","fromIndex","toIndex","result","arrayReorder","setCurrentRowTargetField","formItemPrevName","dataIndexConfigs","map","setCurrentRowChildrenValue","validateRowFields","nameList","Promise","$return","$error","resolve","validateFields","then","$await_1","$boundEx","columns","column","_column$formItemProps","title","support","isValidElement","titleRender","tipsWrapperProps","_jsx","TipsWrapper","tipType","popoverProps","content","children","_extends","required","formItemProps","rules","find","onCell","_props$tableProps","valign","tableProps","cellVerticalAlign","TextSymbolWrapper","style","marginLeft","align","text","position","symbolType","render","isUndefinedOrNull","dataIndex","dataSourceTarget","editable","tableRowFormItemCompleteName","renderOperationProps","bind","move","parentItem","tableRowFormItemName","_formItemProps","_formItemProps2","FormItemWrapper","marginBottom","className","_classNames","List","initialValue","fields","formListOperation","_ref","_props$tableProps3","errors","_jsxs","borderRadius","border","tableBeforeAreaRender","Table","scroll","x","pagination","size","locale","emptyText","Space","color","_CloseCircleFilled","expandable","onExpandedRowsChange","rowKey","ButtonWrapper","block","hidden","hiddenFooterBtn","type","icon","_PlusOutlined","marginTop","onClick","defaultValues","addRowDefaultValues","tableAfterAreaRender","ErrorList","padding"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/editable-table-pro/editable-table-pro.tsx"],"sourcesContent":["import { CloseCircleFilled, PlusOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { arrayReorder, isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message, Space, Table, type FormListOperation, type TableProps } from 'antd';\nimport type { FormListProps } from 'antd/es/form';\nimport type { ColumnsType } from 'antd/es/table';\nimport type { ReactElement } from 'react';\nimport { isValidElement, useMemo, useRef, useState } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { fbaUtils } from '../fba-utils';\nimport { FormItemWrapper } from '../form-item-wrapper';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport type {\n EditableTableProColumnItem,\n EditableTableProDataIndex,\n EditableTableProOperation,\n} from './type';\n\ntype dataSourceRelativeItem = {\n level: number;\n parentUid?: string | number;\n index: number;\n};\n\nexport type EditableTableProProps = {\n columns: EditableTableProColumnItem[];\n /**\n * 当前Edittable处在formList内部时(必填),完整formItem的name\n * ```\n * 例如 处在formList内部\n * 1. formListName=[0,dataList]\n * 2. formListCompleteName=[xxxList, 0, dataList]\n * ```\n */\n formListCompleteName?: Array<string | number>;\n /** Form.List name */\n formListName: Array<string | number> | string;\n /** 唯一值字段Key */\n uidFieldKey: string;\n /** 初始化值 */\n initialValue?: TPlainObject[];\n /** 指定树形结构的列名,默认值:children */\n childrenColumnName?: string;\n /** 表格组件配置 */\n tableProps?: Omit<TableProps<TPlainObject>, 'dataSource' | 'columns' | 'rowKey'> & {\n // 如果重写了columns.onCell,则此配置失效\n cellVerticalAlign?: 'baseline' | 'middle' | 'top' | 'bottom';\n };\n /**\n * Form.List rules\n * ```\n rules={[\n {\n validator: async (_, names) => {\n if (!names || names.length < 2) {\n return Promise.reject(new Error('At least 2 passengers'));\n }\n },\n },\n ]}\n * ```\n */\n rules?: FormListProps['rules'];\n className?: string;\n style?: React.CSSProperties;\n\n /**`默认新增按钮`新增行默认值,hiddenFooterBtn != true 有效 */\n addRowDefaultValues?: () => TPlainObject;\n /** 隐藏底部`新增`按钮 */\n hiddenFooterBtn?: boolean;\n /** 表格顶部区域渲染 */\n tableBeforeAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 表格底部区域渲染 */\n tableAfterAreaRender?: (formListOperation: FormListOperation, nextRowIndex: number) => ReactElement | null;\n /** 展开的行key,一般用于初始化,重新tableProps.expandable.expandedRowKeys后失效 */\n expandedRowKeys?: string[];\n /**\n * 展开图标布局,默认:layout1\n * ```\n * 1. 可编辑表格第一项为可编辑状态时,选 layout1\n * 2. 可编辑表格第一项为非可编辑状态时,选 layout2\n * ```\n */\n expandedIconLayout?: 'layout1' | 'layout2';\n};\n\n/**\n * 使用FormList实现可编辑表格\n * ```\n * 1. 必须在外部包裹Form组件\n * 2. 表格数据源数组中必须存在唯一值字段,通过uidFieldKey配置\n * 3. 可嵌套编辑,数据嵌套的节点名称可通过 childrenColumnName设置,默认:children\n * 4. 行内需要联动逻辑可使用 column.render.operation.setCurrentRowTargetField 方法\n * 5. 在多级编辑中,可通过 column.render.operation.level 判断当前行数据层级\n * 6. 不存在多级的情况下,可使用DragEditableTablePro组件实现拖拽排序\n * 7. 存在多级的情况下,可通过 column.render.operation.move 方法实现同一级内移动\n *\n * demo\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable1\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable2\n * https://fex.qa.tcshuke.com/docs/admin/main/table/row-editable4\n * ```\n */\nexport const EditableTablePro = (props: EditableTableProProps) => {\n const form = Form.useFormInstance();\n const [expandedRowKeys, setExpandedRowKeys] = useState<string[]>([]);\n const formListName = toArray<string | number>(props.formListName);\n const dataSourceUidMap = useRef<Record<string, TPlainObject>>({});\n const dataSourceUidMapFt = useRef<Record<string | number, dataSourceRelativeItem>>({});\n const formListOperationRef = useRef<FormListOperation>();\n const uidFieldKey = props.uidFieldKey;\n const childrenColumnName = props.childrenColumnName || 'children';\n const expandedIconLayout = props.expandedIconLayout || 'layout1';\n\n const formListCompleteName = props.formListCompleteName || formListName;\n\n const dataSource = Form.useWatch(formListCompleteName, form);\n\n const [showEmptyText, setShowEmptyText] = useState<string | undefined>();\n\n const dataSourceFt = useMemo(() => {\n if (!dataSource) return [];\n let queryUidErrorFlag = false;\n function deep(itemList: TPlainObject[], level: number, parentUid?: string | number) {\n for (let index = 0; index < itemList.length; index++) {\n const item = itemList[index];\n if (!item[uidFieldKey]) {\n console.error(item, '数据中未查询到唯一值');\n queryUidErrorFlag = true;\n return;\n } else {\n dataSourceUidMapFt.current[item[uidFieldKey]] = {\n level,\n parentUid,\n index,\n };\n dataSourceUidMap.current[item[uidFieldKey]] = item;\n deep(item[childrenColumnName] || [], level + 1, item[uidFieldKey]);\n }\n }\n }\n\n dataSourceUidMapFt.current = {};\n dataSourceUidMap.current = {};\n deep(isArray(dataSource) ? dataSource : [], 1);\n if (queryUidErrorFlag) {\n const txt = `数据源中存在唯一值【${uidFieldKey}】为空的情况,无法渲染表格`;\n void message.error(txt);\n setShowEmptyText(txt);\n return [];\n }\n return dataSource;\n }, [childrenColumnName, dataSource, uidFieldKey]);\n\n fbaHooks.useEffectCustom(() => {\n setExpandedRowKeys(props.expandedRowKeys || []);\n }, [JSON.stringify(props.expandedRowKeys || [])]);\n\n const getFormItemName = hooks.useCallbackRef((record: TPlainObject) => {\n const uid = record[uidFieldKey];\n let target: dataSourceRelativeItem | undefined = dataSourceUidMapFt.current[uid];\n\n const indexes: number[] = [];\n while (target) {\n indexes.push(target.index);\n if (target.level === 1) {\n break;\n }\n target = target.parentUid ? dataSourceUidMapFt.current[target.parentUid] : undefined;\n }\n const arr: Array<string | number> = [];\n indexes.reverse().forEach((item, index) => {\n arr.push(item);\n if (index < indexes.length - 1) {\n arr.push(childrenColumnName);\n }\n });\n return arr;\n });\n\n const addItem = hooks.useCallbackRef((uid: string, defaultValue: TPlainObject, insertIndex?: number) => {\n const target = dataSourceUidMap.current[uid];\n\n if (target) {\n if (target.level === 1) {\n /** 通过 formListOperation.add 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.add(defaultValue, insertIndex);\n return;\n }\n target[childrenColumnName] = target[childrenColumnName] || [];\n if (insertIndex == undefined) {\n target[childrenColumnName].push(defaultValue);\n } else {\n target[childrenColumnName].splice(insertIndex, 0, defaultValue);\n }\n const expandedRowKeysSet = new Set(expandedRowKeys);\n expandedRowKeysSet.add(target[uidFieldKey]);\n setExpandedRowKeys([...Array.from(expandedRowKeysSet)]);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const deleteItem = hooks.useCallbackRef((uid: string | number, index: number) => {\n const target = dataSourceUidMapFt.current[uid];\n if (target.level === 1) {\n /** 通过 formListOperation.remove 可以使得 Form.List的 rules 生效 */\n formListOperationRef.current?.remove(index);\n return;\n }\n const parentUid = target.parentUid;\n if (!parentUid) {\n dataSource.splice(index, 1);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName].splice(index, 1);\n if (parentTarget[childrenColumnName].length === 0) {\n delete parentTarget[childrenColumnName];\n }\n }\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: cloneState(dataSource),\n },\n ]);\n });\n\n const moveItem = hooks.useCallbackRef((uid: string | number, fromIndex: number, toIndex: number) => {\n if (fromIndex === toIndex || toIndex < 0) return;\n const target = dataSourceUidMapFt.current[uid];\n const parentUid = target.parentUid;\n if (!parentUid) {\n const result = arrayReorder(dataSource, fromIndex, toIndex);\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: result,\n },\n ]);\n } else {\n const parentTarget = dataSourceUidMap.current[parentUid];\n parentTarget[childrenColumnName] = arrayReorder(parentTarget[childrenColumnName], fromIndex, toIndex);\n\n fbaUtils.setFormFieldsAndTriggerValuesChange(form, [\n {\n name: formListCompleteName,\n value: [...dataSource],\n },\n ]);\n }\n });\n\n const setCurrentRowTargetField = hooks.useCallbackRef(\n (\n formItemPrevName: Array<string | number>,\n dataIndexConfigs: {\n name: EditableTableProDataIndex;\n value?: TAny;\n }[],\n ) => {\n fbaUtils.setFormFieldsAndTriggerValuesChange(\n form,\n dataIndexConfigs.map((item) => {\n return {\n name: [...formListCompleteName, ...formItemPrevName, ...toArray<string | number>(item.name)],\n value: item.value,\n };\n }),\n );\n },\n );\n\n const setCurrentRowChildrenValue = hooks.useCallbackRef(\n (formItemPrevName: Array<string | number>, value?: TPlainObject[]) => {\n setCurrentRowTargetField(formItemPrevName, [{ name: childrenColumnName, value }]);\n },\n );\n\n const validateRowFields = hooks.useCallbackRef(\n async (formItemPrevName: Array<string | number>, nameList: EditableTableProDataIndex[]) => {\n await form.validateFields(\n nameList.map((item) => [...formItemPrevName, ...toArray<string | number>(item)]),\n );\n },\n );\n\n const columns = useMemo(() => {\n return props.columns\n .map((column) => {\n if (column.hidden) return null;\n const title = column.title;\n const support = isValidElement(title) || typeof title === 'string';\n let titleRender: ReactElement | string | undefined = title;\n if (column.tipsWrapperProps && support) {\n if (typeof column.tipsWrapperProps === 'string') {\n titleRender = (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: column.tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n );\n } else {\n titleRender = <TipsWrapper {...column.tipsWrapperProps}>{title}</TipsWrapper>;\n }\n }\n\n let required = column.required;\n\n if (!required && typeof column.formItemProps === 'object' && column.formItemProps.rules?.length) {\n required = !!column.formItemProps.rules.find((item) => !!item['required']);\n }\n\n return {\n onCell: () => {\n return {\n valign: props.tableProps?.cellVerticalAlign || 'middle',\n };\n },\n ...column,\n title: required ? (\n <TextSymbolWrapper\n style={{ marginLeft: column.align === 'center' ? undefined : 10 }}\n text={titleRender}\n position=\"before\"\n symbolType=\"required\"\n />\n ) : (\n titleRender\n ),\n render: (value, record, index) => {\n if (isUndefinedOrNull(column.render)) {\n return value;\n }\n const uid = record[uidFieldKey];\n const dataIndex = toArray<string>(column['dataIndex']);\n const formItemPrevName = getFormItemName(record);\n const dataSourceTarget = dataSourceUidMapFt.current[uid];\n\n const editable =\n typeof column?.editable === 'function' ? column?.editable(record, index) : column?.editable;\n const tableRowFormItemCompleteName = [...formListCompleteName, ...formItemPrevName];\n\n const renderOperationProps: EditableTableProOperation = {\n editable,\n add: addItem.bind(null, uid),\n remove: deleteItem.bind(null, uid),\n move: moveItem.bind(null, uid),\n level: dataSourceTarget.level,\n parentItem: uid ? dataSourceUidMapFt.current[uid] : null,\n tableRowFormItemName: formItemPrevName,\n tableRowFormItemCompleteName,\n setCurrentRowTargetField: setCurrentRowTargetField.bind(null, formItemPrevName),\n setCurrentRowChildrenValue: setCurrentRowChildrenValue.bind(null, formItemPrevName),\n validateRowFields: validateRowFields.bind(null, tableRowFormItemCompleteName),\n };\n if (editable === true) {\n let formItemProps =\n typeof column.formItemProps === 'function'\n ? column.formItemProps(value, record, index, renderOperationProps)\n : column.formItemProps;\n\n if (!formItemProps?.rules?.length && required) {\n formItemProps = {\n ...formItemProps,\n rules: [{ required: true, message: '' }],\n };\n }\n\n return (\n <FormItemWrapper\n {...formItemProps}\n name={[...formItemPrevName, ...dataIndex]}\n style={{ marginBottom: 0, ...formItemProps?.style }}\n >\n {column.render?.(value, record, index, renderOperationProps) as React.ReactNode}\n </FormItemWrapper>\n );\n }\n return column.render?.(value, record, index, renderOperationProps);\n },\n };\n })\n .filter(Boolean) as ColumnsType<TPlainObject>;\n }, [\n props.columns,\n props.tableProps?.cellVerticalAlign,\n uidFieldKey,\n getFormItemName,\n formListCompleteName,\n addItem,\n deleteItem,\n moveItem,\n setCurrentRowTargetField,\n setCurrentRowChildrenValue,\n validateRowFields,\n ]);\n\n const className = classNames(\n 'editable-table-pro',\n { 'editable-table-pro-layout1': expandedIconLayout === 'layout1' },\n props.className,\n );\n\n return (\n <div className={className} style={props.style}>\n <Form.List name={formListName} rules={props.rules} initialValue={props.initialValue}>\n {(fields, formListOperation, { errors }) => {\n formListOperationRef.current = formListOperation;\n return (\n <div\n style={{\n borderRadius: '6px',\n border: errors?.length ? '1px solid #ff4d4f' : '1px solid transparent',\n }}\n >\n {props.tableBeforeAreaRender?.(formListOperation, fields.length)}\n <Table\n scroll={{ x: 'max-content' }}\n pagination={false}\n size=\"small\"\n {...props.tableProps}\n locale={{\n emptyText: showEmptyText ? (\n <Space size={5} style={{ color: '#ff4d4f' }}>\n <CloseCircleFilled />\n <span>{showEmptyText}</span>\n </Space>\n ) : undefined,\n }}\n expandable={{\n expandedRowKeys: expandedRowKeys,\n onExpandedRowsChange: (expandedRowKeys) => {\n setExpandedRowKeys(expandedRowKeys as string[]);\n },\n ...props.tableProps?.expandable,\n childrenColumnName: childrenColumnName,\n }}\n columns={columns}\n dataSource={dataSourceFt}\n rowKey={uidFieldKey}\n />\n <ButtonWrapper\n block\n hidden={props.hiddenFooterBtn}\n type=\"dashed\"\n icon={<PlusOutlined />}\n style={{ marginTop: 15 }}\n onClick={() => {\n const defaultValues = props.addRowDefaultValues?.();\n if (!defaultValues?.[uidFieldKey]) {\n void message.error(\n `新增行默认值必须包含唯一值字段【${uidFieldKey}】,通过 addRowDefaultValues 设置`,\n );\n return;\n }\n formListOperation.add(defaultValues);\n }}\n >\n 新增\n </ButtonWrapper>\n {props.tableAfterAreaRender?.(formListOperation, fields.length)}\n {errors.length ? (\n <Form.ErrorList\n errors={[\n <div style={{ color: '#ff4d4f', padding: '5px' }} key=\"0\">\n {errors}\n </div>,\n ]}\n />\n ) : null}\n </div>\n );\n }}\n </Form.List>\n </div>\n );\n};\n"],"names":["EditableTablePro","props","_props$tableProps2","form","Form","useFormInstance","_useState","useState","expandedRowKeys","setExpandedRowKeys","formListName","toArray","dataSourceUidMap","useRef","dataSourceUidMapFt","formListOperationRef","uidFieldKey","childrenColumnName","expandedIconLayout","formListCompleteName","dataSource","useWatch","_useState2","showEmptyText","setShowEmptyText","dataSourceFt","useMemo","queryUidErrorFlag","deep","itemList","level","parentUid","index","length","item","console","error","current","_isArray","txt","message","fbaHooks","useEffectCustom","JSON","stringify","getFormItemName","_hooks","useCallbackRef","record","uid","target","indexes","push","undefined","arr","reverse","forEach","addItem","defaultValue","insertIndex","_formListOperationRef","add","splice","expandedRowKeysSet","Set","concat","Array","from","fbaUtils","setFormFieldsAndTriggerValuesChange","name","value","deleteItem","_formListOperationRef2","remove","parentTarget","cloneState","moveItem","fromIndex","toIndex","result","arrayReorder","setCurrentRowTargetField","formItemPrevName","dataIndexConfigs","map","setCurrentRowChildrenValue","validateRowFields","nameList","Promise","$return","$error","resolve","validateFields","then","$await_1","$boundEx","columns","column","_column$formItemProps","hidden","title","support","isValidElement","titleRender","tipsWrapperProps","_jsx","TipsWrapper","tipType","popoverProps","content","children","_extends","required","formItemProps","rules","find","onCell","_props$tableProps","valign","tableProps","cellVerticalAlign","TextSymbolWrapper","style","marginLeft","align","text","position","symbolType","render","isUndefinedOrNull","dataIndex","dataSourceTarget","editable","tableRowFormItemCompleteName","renderOperationProps","bind","move","parentItem","tableRowFormItemName","_formItemProps","_formItemProps2","FormItemWrapper","marginBottom","filter","Boolean","className","_classNames","List","initialValue","fields","formListOperation","_ref","_props$tableProps3","errors","_jsxs","borderRadius","border","tableBeforeAreaRender","Table","scroll","x","pagination","size","locale","emptyText","Space","color","_CloseCircleFilled","expandable","onExpandedRowsChange","rowKey","ButtonWrapper","block","hiddenFooterBtn","type","icon","_PlusOutlined","marginTop","onClick","defaultValues","addRowDefaultValues","tableAfterAreaRender","ErrorList","padding"],"mappings":"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"}
|
package/esm/fba-app/index.js
CHANGED
|
@@ -8,5 +8,5 @@ import './../flex-layout/index.css';
|
|
|
8
8
|
import './../block-layout/index.css';
|
|
9
9
|
import './index.css';
|
|
10
10
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
11
|
-
import{fbaUtils as e}from"../fba-utils/index.js";import{hooks as o}from"@wove/react/cjs/hooks";import{a as n,_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{getUuid as l}from"@flatbiz/utils";import{createContext as a,useState as t,useMemo as i,useContext as u,createElement as s}from"react";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{isPromise as c}from"@dimjs/lang/cjs/is-promise";import{useSize as f}from"ahooks";import{Form as p,Modal as v,Space as m,Drawer as g,theme as C}from"antd";import{ButtonWrapper as h}from"../button-wrapper/index.js";import{fbaHooks as k}from"../fba-hooks/index.js";import{FlexLayout as y}from"../flex-layout/index.js";import{g as x}from"../index-853b36e6.js";import{createCtx as b}from"@wove/react/cjs/create-ctx";import{jsx as w,jsxs as D}from"react/jsx-runtime";import{BlockLayout as j}from"../block-layout/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"@ant-design/icons/es/icons/LoadingOutlined";import"../use-responsive-point-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";var O=a({});var R=b(),M=R[0],P=R[1];var T=["titleExtra","title","onOk","onCancel","okButtonProps","cancelButtonProps","content","className","okHidden","cancelHidden","footer","cancelText","okText","size","bodyHeight"];var F=function e(l){var a,u;var s=l.titleExtra,m=l.title,g=l.onOk,C=l.onCancel,b=l.okButtonProps,j=l.cancelButtonProps,O=l.content,R=l.className,M=l.okHidden,F=l.cancelHidden,N=l.footer,H=l.cancelText,A=l.okText,B=l.size,L=l.bodyHeight,z=n(l,T);var E=p.useForm(),W=E[0];var _=f(document.querySelector("html"));var S=x();var Y=k.useResponsivePoint()||"";var q=t({}),I=q[0],U=q[1];var G=o.useCallbackRef(function(){l.onClose==null||l.onClose()});var J=o.useCallbackRef(function(e){if(C){var o=C(W,e);if(o&&c(o)){return o.then(G)}}G();return Promise.resolve()});var K=o.useCallbackRef(function(e){if(g){var o=g(W,e);if(o&&c(o)){return o.then(G)}}G();return Promise.resolve()});var Q=k.useMemoCustom(function(){var e;if(N){return typeof N==="function"?N(W,I):N}if(F&&M||N===null){return null}return[w(h,r({},j,{onClick:J,hidden:F,children:H||((e=S.FbaDialogModal)==null?void 0:e.cancelText)}),"0"),w(h,r({type:"primary"},b,{onClick:K,hidden:M,children:A||"提交"}),"1")].filter(Boolean)},[I,l.open]);var V=i(function(){if(!(_!=null&&_.height)||!Y)return undefined;var e=["xs","sm"].includes(Y);if(e){return{width:"90%"}}if(B=="large"){return{height:(_==null?void 0:_.height)*.7,width:e?"90%":_.width*.6}}if(B=="small"){var o=_.width*.3;return{height:(_==null?void 0:_.height)*.4,width:e?"90%":o<470?470:o}}if(B=="middle"){return{height:(_==null?void 0:_.height)*.4,width:e?"90%":_.width*.5}}return undefined},[_==null?void 0:_.height,_==null?void 0:_.width,Y,B]);var X=d("fba-dialog-modal",{"fba-dialog-modal-title-extra":!!s},{"fba-dialog-modal-footer-empty":!Q},R);var Z=function e(o){U(o)};var $=((a=z.styles)==null||(a=a.body)==null?void 0:a.height)||L;var ee=i(function(){return typeof O==="function"?O(W,{onClose:G}):O},[l.open]);return w(P,{value:{rerenderFooter:Z},children:w(v,r({maskClosable:true,title:s?D(y,{direction:"horizontal",fullIndex:0,children:[w("span",{children:m}),s]}):m,centered:true,onCancel:G,destroyOnClose:true,width:V==null?void 0:V.width},z,{footer:Q,styles:r({},z.styles,{body:r({height:$||(V==null?void 0:V.height),maxHeight:"calc(100vh - 200px)"},(u=z.styles)==null?void 0:u.body)}),className:X,open:l.open,children:ee}))})};var N=function e(o){var n=d("fba-dialog-confirm",o.className);return w(F,r({okText:"确定",size:null,width:350,cancelText:"取消",maskClosable:true},o,{className:n}))};var H=function e(o){return w(N,r({okText:"确定",cancelHidden:true,maskClosable:false},o,{onOk:function e(n,r){return o.onClick==null?void 0:o.onClick(r)}}))};var A=b(),B=A[0],L=A[1];var z=["onOk","onCancel","content","okText","cancelText","okButtonExtraProps","cancelButtonExtraProps","operatePosition","operateRender","width","okHidden","cancelHidden","extra"];var E=function e(l){var a=l.onOk,u=l.onCancel,s=l.content,f=l.okText,v=l.cancelText,C=l.okButtonExtraProps,y=l.cancelButtonExtraProps,x=l.operatePosition,b=x===void 0?"footer":x,j=l.operateRender,O=l.width,R=l.okHidden,M=l.cancelHidden,P=l.extra,T=n(l,z);var F=p.useForm(),N=F[0];var H=k.useResponsivePoint()||"";var A=t({}),B=A[0],E=A[1];var W=o.useCallbackRef(function(e){l.onClose==null||l.onClose(e)});var _=o.useCallbackRef(function(e){if(u){var o=u(N,e);if(o&&c(o)){return o.then(W)}}W(e);return Promise.resolve()});var S=o.useCallbackRef(function(e){if(a){var o=a(N,e);if(o&&c(o)){return o.then(W)}}W(e);return Promise.resolve()});var Y=k.useMemoCustom(function(){if(j){return j(N,B)}var e=R||(C==null?void 0:C.hidden);var o=R||(C==null?void 0:C.hidden);var n=D(m,{children:[o?null:w(h,r({},y,{onClick:_,children:v||"取消"})),e?null:w(h,r({type:"primary"},C,{onClick:S,children:f||"提交"}))]});if(!R||!M){return n}return null},[B,l.open]);var q=i(function(){if(!H)return undefined;if(["xs","sm"].includes(H)){return{width:"90%",maxWidth:"90%"}}if(O){return{width:O,maxWidth:"calc(100% - 200px)"}}return{width:"40%",maxWidth:"calc(100% - 200px)"}},[H,O]);var I=typeof P==="function"?P(N):P;var U=function e(o){E(o)};var G=i(function(){return typeof s==="function"?s(N,{onClose:W}):s},[l.open]);return w(L,{value:{rerenderFooter:U},children:w(g,r({maskClosable:true,destroyOnClose:true,contentWrapperStyle:{maxWidth:q==null?void 0:q.maxWidth},footer:b==="footer"?Y:null},T,{width:q==null?void 0:q.width,styles:r({},T.styles),className:d("app-dialog-drawer",T.className),extra:b==="header"?Y:I,open:l.open,onClose:W,children:G}))})};var W=function e(o){var n=o.className,r=o.message,l=o.mask;var a=C.useToken(),t=a.token;var i=t.colorPrimary;return w(v,{maskClosable:false,centered:true,destroyOnClose:true,className:d("fba-dialog-loading",n),open:o.open,footer:null,closable:false,style:{"--fba-loading-color":i},mask:l,children:w(j,{className:d("fba-dialog-loading-content"),children:D("div",{className:"loader-wrapper",children:[w("div",{className:"loader-inner"}),w("div",{className:"loader-text",children:r||"处理中"})]})})})};var _=function e(){var o=u(O);var n=function e(){o.dialogDrawerClose==null||o.dialogDrawerClose()};return{appDialogDrawer:{open:function e(l){o.dialogDrawerOpen==null||o.dialogDrawerOpen(r({},l,{open:true}));return{onClose:n}},close:n,useAppDialogDrawer:function e(){var o=B();return{rerenderFooter:function e(n){o.rerenderFooter(n)}}}}}};var S=function e(){var o=u(O);var n=function e(){o.dialogDrawerClose2==null||o.dialogDrawerClose2()};return{appDialogDrawer2:{open:function e(l){o.dialogDrawerOpen2==null||o.dialogDrawerOpen2(r({},l,{open:true}));return{onClose:n}},close:n,useAppDialogDrawer:function e(){var o=B();return{rerenderFooter:function e(n){o.rerenderFooter(n)}}}}}};var Y=function e(){var o=u(O);var n=function e(){o.dialogModalClose==null||o.dialogModalClose()};return{appDialogModal:{open:function e(l){o.dialogModalOpen==null||o.dialogModalOpen(r({},l,{open:true}));return{onClose:n}},close:n,useAppDialogModal:function e(){var o=M();return{rerenderFooter:function e(n){o.rerenderFooter(n)}}}}}};var q=function e(){var o=u(O);var n=function e(){o.dialogModalClose2==null||o.dialogModalClose2()};return{appDialogModal2:{open:function e(l){o.dialogModalOpen2==null||o.dialogModalOpen2(r({},l,{open:true}));return{onClose:n}},close:n,useAppDialogModal:function e(){var o=M();return{rerenderFooter:function e(n){o.rerenderFooter(n)}}}}}};var I=function e(){var o=u(O);var n=function e(){o.dialogAlertClose==null||o.dialogAlertClose()};return{appDialogAlert:{open:function e(l){o.dialogAlertOpen==null||o.dialogAlertOpen(r({},l,{open:true}));return{onClose:n}},close:n}}};var U=function e(){var o=u(O);var n=function e(){o.dialogConfirmClose==null||o.dialogConfirmClose()};return{appDialogConfirm:{open:function e(l){o.dialogConfirmOpen==null||o.dialogConfirmOpen(r({},l,{open:true}));return{onClose:n}},close:n}}};var G=function e(){var o=u(O);var n=function e(){o.dialogLoadingClose==null||o.dialogLoadingClose()};return{appDialogLoading:{open:function e(l){o.dialogLoadingOpen==null||o.dialogLoadingOpen(r({},l,{open:true}));return{onClose:n}},close:n}}};var J=function e(n){var a=t({}),i=a[0],u=a[1];var d=t(l()),c=d[0],f=d[1];var p=t({}),v=p[0],m=p[1];var g=t(l()),C=g[0],h=g[1];var k=t({}),y=k[0],x=k[1];var b=t(l()),w=b[0],j=b[1];var R=t({}),M=R[0],P=R[1];var T=t(l()),A=T[0],B=T[1];var L=t({}),z=L[0],_=L[1];var S=t({}),Y=S[0],q=S[1];var I=t(),U=I[0],G=I[1];var J=t(l()),K=J[0],Q=J[1];var V=t(l()),X=V[0],Z=V[1];var $=t(l()),ee=$[0],oe=$[1];var ne=o.useCallbackRef(function(e){u(e)});var re=o.useCallbackRef(function(e){u(r({},i,{open:false}));i.onClose==null||i.onClose(e);setTimeout(function(){f(l())},200)});var le=o.useCallbackRef(function(e){m(e)});var ae=o.useCallbackRef(function(e){m(r({},v,{open:false}));v.onClose==null||v.onClose(e);setTimeout(function(){h(l())},200)});var te=o.useCallbackRef(function(e){x(e)});var ie=o.useCallbackRef(function(){x(r({},y,{open:false}));y.onClose==null||y.onClose();setTimeout(function(){j(l())},200)});var ue=o.useCallbackRef(function(e){P(e)});var se=o.useCallbackRef(function(){P(r({},M,{open:false}));M.onClose==null||M.onClose();setTimeout(function(){B(l())},200)});var de=o.useCallbackRef(function(e){_(e)});var ce=o.useCallbackRef(function(){_(r({},z,{open:false}));z.onClose==null||z.onClose();setTimeout(function(){Q(l())},200)});var fe=o.useCallbackRef(function(e){q(e)});var pe=o.useCallbackRef(function(){q(r({},Y,{open:false}));Y.onClose==null||Y.onClose();setTimeout(function(){Z(l())},200)});var ve=o.useCallbackRef(function(e){G(e)});var me=o.useCallbackRef(function(){G(r({},U,{open:false}));setTimeout(function(){oe(l())},200)});return D(O.Provider,{value:{dialogDrawerOpen:ne,dialogDrawerClose:re,dialogDrawerOpen2:le,dialogDrawerClose2:ae,dialogModalOpen:te,dialogModalClose:ie,dialogModalOpen2:ue,dialogModalClose2:se,dialogAlertOpen:de,dialogAlertClose:ce,dialogConfirmOpen:fe,dialogConfirmClose:pe,dialogLoadingOpen:ve,dialogLoadingClose:me},children:[s(E,r({},i,{onClose:re,key:c})),s(E,r({},v,{onClose:ae,key:C})),s(F,r({},y,{onClose:ie,key:w})),s(F,r({},M,{onClose:se,key:A})),s(H,r({},z,{onClose:ce,key:K})),s(N,r({},Y,{onClose:pe,key:X})),s(W,r({},U,{key:ee})),n.children]})};var K=e.attachPropertiesToComponent(J,{useDialogDrawer:_,useDialogDrawer2:S,useDialogModal:Y,useDialogModal2:q,useDialogConfirm:U,useDialogAlert:I,useDialogLoading:G});export{K as FbaApp};
|
|
11
|
+
import{fbaUtils as e}from"../fba-utils/index.js";import{hooks as o}from"@wove/react/cjs/hooks";import{a as n,_ as r}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{getUuid as l}from"@flatbiz/utils";import{createContext as a,useState as t,useMemo as i,useContext as u,createElement as s}from"react";import{classNames as d}from"@dimjs/utils/cjs/class-names";import{isPromise as c}from"@dimjs/lang/cjs/is-promise";import{useSize as f}from"ahooks";import{Form as p,Modal as v,Space as m,Drawer as g,theme as C}from"antd";import{ButtonWrapper as h}from"../button-wrapper/index.js";import{fbaHooks as k}from"../fba-hooks/index.js";import{FlexLayout as y}from"../flex-layout/index.js";import{g as x}from"../index-853b36e6.js";import{createCtx as b}from"@wove/react/cjs/create-ctx";import{jsx as w,jsxs as D}from"react/jsx-runtime";import{BlockLayout as j}from"../block-layout/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"@ant-design/icons/es/icons/LoadingOutlined";import"../use-responsive-point-1e6d93d9.js";import"@dimjs/utils/cjs/uuid";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"@dimjs/utils/cjs/extend";var O=a({});var R=b(),M=R[0],P=R[1];var T=["titleExtra","title","onOk","onCancel","okButtonProps","cancelButtonProps","content","className","okHidden","cancelHidden","footer","cancelText","okText","size","bodyHeight"];var F=function e(l){var a,u;var s=l.titleExtra,m=l.title,g=l.onOk,C=l.onCancel,b=l.okButtonProps,j=l.cancelButtonProps,O=l.content,R=l.className,M=l.okHidden,F=l.cancelHidden,N=l.footer,H=l.cancelText,A=l.okText,B=l.size,L=l.bodyHeight,z=n(l,T);var E=p.useForm(),W=E[0];var _=f(document.querySelector("html"));var S=x();var Y=k.useResponsivePoint()||"";var q=t({}),I=q[0],U=q[1];var G=o.useCallbackRef(function(){l.onClose==null||l.onClose()});var J=o.useCallbackRef(function(e){if(C){var o=C(W,e);if(o&&c(o)){return o.then(G)}}G();return Promise.resolve()});var K=o.useCallbackRef(function(e){if(g){var o=g(W,e);if(o&&c(o)){return o.then(G)}}G();return Promise.resolve()});var Q=k.useMemoCustom(function(){var e;if(N){return typeof N==="function"?N(W,I):N}if(F&&M||N===null){return null}return[w(h,r({},j,{onClick:J,hidden:F,children:H||((e=S.FbaDialogModal)==null?void 0:e.cancelText)}),"0"),w(h,r({type:"primary"},b,{onClick:K,hidden:M,children:A||"提交"}),"1")].filter(Boolean)},[I,l.open]);var V=i(function(){if(!(_!=null&&_.height)||!Y)return undefined;var e=["xs","sm"].includes(Y);if(e){return{width:"90%"}}if(B=="large"){return{height:(_==null?void 0:_.height)*.7,width:e?"90%":_.width*.6}}if(B=="small"){var o=_.width*.3;return{height:(_==null?void 0:_.height)*.4,width:e?"90%":o<470?470:o}}if(B=="middle"){return{height:(_==null?void 0:_.height)*.5,width:e?"90%":_.width*.5}}return undefined},[_==null?void 0:_.height,_==null?void 0:_.width,Y,B]);var X=d("fba-dialog-modal",{"fba-dialog-modal-title-extra":!!s},{"fba-dialog-modal-footer-empty":!Q},R);var Z=function e(o){U(o)};var $=((a=z.styles)==null||(a=a.body)==null?void 0:a.height)||L;var ee=i(function(){return typeof O==="function"?O(W,{onClose:G}):O},[l.open]);return w(P,{value:{rerenderFooter:Z},children:w(v,r({maskClosable:true,title:s?D(y,{direction:"horizontal",fullIndex:0,children:[w("span",{children:m}),s]}):m,centered:true,onCancel:G,destroyOnClose:true,width:V==null?void 0:V.width},z,{footer:Q,styles:r({},z.styles,{body:r({height:$||(V==null?void 0:V.height),maxHeight:"calc(100vh - 200px)"},(u=z.styles)==null?void 0:u.body)}),className:X,open:l.open,children:ee}))})};var N=function e(o){var n=d("fba-dialog-confirm",o.className);return w(F,r({okText:"确定",size:null,width:350,cancelText:"取消",maskClosable:true},o,{className:n}))};var H=function e(o){return w(N,r({okText:"确定",cancelHidden:true,maskClosable:false},o,{onOk:function e(n,r){return o.onClick==null?void 0:o.onClick(r)}}))};var A=b(),B=A[0],L=A[1];var z=["onOk","onCancel","content","okText","cancelText","okButtonExtraProps","cancelButtonExtraProps","operatePosition","operateRender","width","okHidden","cancelHidden","extra"];var E=function e(l){var a=l.onOk,u=l.onCancel,s=l.content,f=l.okText,v=l.cancelText,C=l.okButtonExtraProps,y=l.cancelButtonExtraProps,x=l.operatePosition,b=x===void 0?"footer":x,j=l.operateRender,O=l.width,R=l.okHidden,M=l.cancelHidden,P=l.extra,T=n(l,z);var F=p.useForm(),N=F[0];var H=k.useResponsivePoint()||"";var A=t({}),B=A[0],E=A[1];var W=o.useCallbackRef(function(e){l.onClose==null||l.onClose(e)});var _=o.useCallbackRef(function(e){if(u){var o=u(N,e);if(o&&c(o)){return o.then(W)}}W(e);return Promise.resolve()});var S=o.useCallbackRef(function(e){if(a){var o=a(N,e);if(o&&c(o)){return o.then(W)}}W(e);return Promise.resolve()});var Y=k.useMemoCustom(function(){if(j){return j(N,B)}var e=R||(C==null?void 0:C.hidden);var o=R||(C==null?void 0:C.hidden);var n=D(m,{children:[o?null:w(h,r({},y,{onClick:_,children:v||"取消"})),e?null:w(h,r({type:"primary"},C,{onClick:S,children:f||"提交"}))]});if(!R||!M){return n}return null},[B,l.open]);var q=i(function(){if(!H)return undefined;if(["xs","sm"].includes(H)){return{width:"90%",maxWidth:"90%"}}if(O){return{width:O,maxWidth:"calc(100% - 200px)"}}return{width:"40%",maxWidth:"calc(100% - 200px)"}},[H,O]);var I=typeof P==="function"?P(N):P;var U=function e(o){E(o)};var G=i(function(){return typeof s==="function"?s(N,{onClose:W}):s},[l.open]);return w(L,{value:{rerenderFooter:U},children:w(g,r({maskClosable:true,destroyOnClose:true,contentWrapperStyle:{maxWidth:q==null?void 0:q.maxWidth},footer:b==="footer"?Y:null},T,{width:q==null?void 0:q.width,styles:r({},T.styles),className:d("app-dialog-drawer",T.className),extra:b==="header"?Y:I,open:l.open,onClose:W,children:G}))})};var W=function e(o){var n=o.className,r=o.message,l=o.mask;var a=C.useToken(),t=a.token;var i=t.colorPrimary;return w(v,{maskClosable:false,centered:true,destroyOnClose:true,className:d("fba-dialog-loading",n),open:o.open,footer:null,closable:false,style:{"--fba-loading-color":i},mask:l,children:w(j,{className:d("fba-dialog-loading-content"),children:D("div",{className:"loader-wrapper",children:[w("div",{className:"loader-inner"}),w("div",{className:"loader-text",children:r||"处理中"})]})})})};var _=function e(){var o=u(O);var n=function e(){o.dialogDrawerClose==null||o.dialogDrawerClose()};return{appDialogDrawer:{open:function e(l){o.dialogDrawerOpen==null||o.dialogDrawerOpen(r({},l,{open:true}));return{onClose:n}},close:n,useAppDialogDrawer:function e(){var o=B();return{rerenderFooter:function e(n){o.rerenderFooter(n)}}}}}};var S=function e(){var o=u(O);var n=function e(){o.dialogDrawerClose2==null||o.dialogDrawerClose2()};return{appDialogDrawer2:{open:function e(l){o.dialogDrawerOpen2==null||o.dialogDrawerOpen2(r({},l,{open:true}));return{onClose:n}},close:n,useAppDialogDrawer:function e(){var o=B();return{rerenderFooter:function e(n){o.rerenderFooter(n)}}}}}};var Y=function e(){var o=u(O);var n=function e(){o.dialogModalClose==null||o.dialogModalClose()};return{appDialogModal:{open:function e(l){o.dialogModalOpen==null||o.dialogModalOpen(r({},l,{open:true}));return{onClose:n}},close:n,useAppDialogModal:function e(){var o=M();return{rerenderFooter:function e(n){o.rerenderFooter(n)}}}}}};var q=function e(){var o=u(O);var n=function e(){o.dialogModalClose2==null||o.dialogModalClose2()};return{appDialogModal2:{open:function e(l){o.dialogModalOpen2==null||o.dialogModalOpen2(r({},l,{open:true}));return{onClose:n}},close:n,useAppDialogModal:function e(){var o=M();return{rerenderFooter:function e(n){o.rerenderFooter(n)}}}}}};var I=function e(){var o=u(O);var n=function e(){o.dialogAlertClose==null||o.dialogAlertClose()};return{appDialogAlert:{open:function e(l){o.dialogAlertOpen==null||o.dialogAlertOpen(r({},l,{open:true}));return{onClose:n}},close:n}}};var U=function e(){var o=u(O);var n=function e(){o.dialogConfirmClose==null||o.dialogConfirmClose()};return{appDialogConfirm:{open:function e(l){o.dialogConfirmOpen==null||o.dialogConfirmOpen(r({},l,{open:true}));return{onClose:n}},close:n}}};var G=function e(){var o=u(O);var n=function e(){o.dialogLoadingClose==null||o.dialogLoadingClose()};return{appDialogLoading:{open:function e(l){o.dialogLoadingOpen==null||o.dialogLoadingOpen(r({},l,{open:true}));return{onClose:n}},close:n}}};var J=function e(n){var a=t({}),i=a[0],u=a[1];var d=t(l()),c=d[0],f=d[1];var p=t({}),v=p[0],m=p[1];var g=t(l()),C=g[0],h=g[1];var k=t({}),y=k[0],x=k[1];var b=t(l()),w=b[0],j=b[1];var R=t({}),M=R[0],P=R[1];var T=t(l()),A=T[0],B=T[1];var L=t({}),z=L[0],_=L[1];var S=t({}),Y=S[0],q=S[1];var I=t(),U=I[0],G=I[1];var J=t(l()),K=J[0],Q=J[1];var V=t(l()),X=V[0],Z=V[1];var $=t(l()),ee=$[0],oe=$[1];var ne=o.useCallbackRef(function(e){u(e)});var re=o.useCallbackRef(function(e){u(r({},i,{open:false}));i.onClose==null||i.onClose(e);setTimeout(function(){f(l())},200)});var le=o.useCallbackRef(function(e){m(e)});var ae=o.useCallbackRef(function(e){m(r({},v,{open:false}));v.onClose==null||v.onClose(e);setTimeout(function(){h(l())},200)});var te=o.useCallbackRef(function(e){x(e)});var ie=o.useCallbackRef(function(){x(r({},y,{open:false}));y.onClose==null||y.onClose();setTimeout(function(){j(l())},200)});var ue=o.useCallbackRef(function(e){P(e)});var se=o.useCallbackRef(function(){P(r({},M,{open:false}));M.onClose==null||M.onClose();setTimeout(function(){B(l())},200)});var de=o.useCallbackRef(function(e){_(e)});var ce=o.useCallbackRef(function(){_(r({},z,{open:false}));z.onClose==null||z.onClose();setTimeout(function(){Q(l())},200)});var fe=o.useCallbackRef(function(e){q(e)});var pe=o.useCallbackRef(function(){q(r({},Y,{open:false}));Y.onClose==null||Y.onClose();setTimeout(function(){Z(l())},200)});var ve=o.useCallbackRef(function(e){G(e)});var me=o.useCallbackRef(function(){G(r({},U,{open:false}));setTimeout(function(){oe(l())},200)});return D(O.Provider,{value:{dialogDrawerOpen:ne,dialogDrawerClose:re,dialogDrawerOpen2:le,dialogDrawerClose2:ae,dialogModalOpen:te,dialogModalClose:ie,dialogModalOpen2:ue,dialogModalClose2:se,dialogAlertOpen:de,dialogAlertClose:ce,dialogConfirmOpen:fe,dialogConfirmClose:pe,dialogLoadingOpen:ve,dialogLoadingClose:me},children:[s(E,r({},i,{onClose:re,key:c})),s(E,r({},v,{onClose:ae,key:C})),s(F,r({},y,{onClose:ie,key:w})),s(F,r({},M,{onClose:se,key:A})),s(H,r({},z,{onClose:ce,key:K})),s(N,r({},Y,{onClose:pe,key:X})),s(W,r({},U,{key:ee})),n.children]})};var K=e.attachPropertiesToComponent(J,{useDialogDrawer:_,useDialogDrawer2:S,useDialogModal:Y,useDialogModal2:q,useDialogConfirm:U,useDialogAlert:I,useDialogLoading:G});export{K as FbaApp};
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
package/esm/fba-app/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/fba-app/context.ts","@flatbiz/antd/src/fba-app/dialog-modal/context.ts","@flatbiz/antd/src/fba-app/dialog-modal/index.tsx","@flatbiz/antd/src/fba-app/dialog-confirm/index.tsx","@flatbiz/antd/src/fba-app/dialog-alert/index.tsx","@flatbiz/antd/src/fba-app/dialog-drawer/context.ts","@flatbiz/antd/src/fba-app/dialog-drawer/index.tsx","@flatbiz/antd/src/fba-app/dialog-loading/index.tsx","@flatbiz/antd/src/fba-app/fba-app.tsx","@flatbiz/antd/src/fba-app/index.ts"],"sourcesContent":["import { createContext } from 'react';\nimport { FbaAppAlertProps } from './dialog-alert';\nimport { FbaAppConfirmProps } from './dialog-confirm';\nimport { FbaAppDrawerProps } from './dialog-drawer';\nimport { FbaAppLoadingProps } from './dialog-loading';\nimport { FbaAppModalProps } from './dialog-modal';\n\nexport type FbaAppContextApi = {\n dialogDrawerOpen?: (data: FbaAppDrawerProps) => void;\n dialogDrawerClose?: (e?) => void;\n\n dialogDrawerOpen2?: (data: FbaAppDrawerProps) => void;\n dialogDrawerClose2?: (e?) => void;\n\n dialogModalOpen?: (data: FbaAppModalProps) => void;\n dialogModalClose?: () => void;\n\n dialogModalOpen2?: (data: FbaAppModalProps) => void;\n dialogModalClose2?: () => void;\n\n dialogAlertOpen?: (data: FbaAppAlertProps) => void;\n dialogAlertClose?: () => void;\n\n dialogConfirmOpen?: (data: FbaAppConfirmProps) => void;\n dialogConfirmClose?: () => void;\n\n dialogLoadingOpen?: (data?: FbaAppLoadingProps & { open?: boolean }) => void;\n dialogLoadingClose?: () => void;\n};\n\nexport const FbaAppContext = createContext<FbaAppContextApi>({});\n","import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useFbaAppDialogModalCtx, CtxProvider] = createCtx<{\n /** 重新渲染footer */\n rerenderFooter: (data?: TPlainObject) => void;\n}>();\n","import { isPromise } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { TNoopDefine, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Form, FormInstance, Modal, ModalProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { getFbaLocaleMessage } from '../../_utils/i18n';\nimport { CtxProvider } from './context';\nimport './style.less';\n\nexport type FbaAppModalProps = Omit<\n ModalProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'okButtonProps' | 'cancelButtonProps' | 'footer'\n> & {\n /**\n * 内置尺寸,根据比例固定高度、宽度\n * ```\n * 1. 如果自定义了width、bodyHeight属性,size中的height、width将对应失效\n * 2. 不传、传null值可取消内置尺寸\n * ```\n */\n size?: 'small' | 'middle' | 'large' | null;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onClose?: () => void;\n /**\n * content只在第一次弹起时,执行一次\n */\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n okHidden?: boolean;\n cancelHidden?: boolean;\n okButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n cancelButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n /**\n * 设置modal body height 为当前窗口height的百分比,例如:30\n * @deprecated 已失效,可通过size属性设置\n * ```\n * 1. 最大值:80\n * 1. 设置bodyStyle.height 后,bodyHeightPercent失效\n * ```\n */\n bodyHeightPercent?: number;\n\n titleExtra?: ReactElement;\n /**\n * null则隐藏footer\n * ```\n * extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据\n * ```\n */\n footer?:\n | null\n | ReactElement\n | ReactElement[]\n | ((form: FormInstance, extraData?: TPlainObject) => ReactElement);\n /** 内容高度,为styles.body.height快捷配置,优先级低于styles.body.height */\n bodyHeight?: number;\n};\n\nexport const FbaAppModal = (props: FbaAppModalProps) => {\n const {\n titleExtra,\n title,\n onOk,\n onCancel,\n okButtonProps,\n cancelButtonProps,\n content,\n className,\n okHidden,\n cancelHidden,\n footer,\n cancelText,\n okText,\n size,\n bodyHeight,\n ...otherProps\n } = props;\n const [form] = Form.useForm();\n const htmlSize = useSize(document.querySelector('html'));\n const localMessage = getFbaLocaleMessage();\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const [footerExtraData, setFooterExtraData] = useState<TPlainObject>({});\n\n const onClose = hooks.useCallbackRef(() => {\n props.onClose?.();\n });\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 onClose();\n return Promise.resolve();\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 onClose();\n return Promise.resolve();\n });\n\n const footerNew = fbaHooks.useMemoCustom(() => {\n if (footer) {\n return typeof footer === 'function' ? footer(form, footerExtraData) : footer;\n }\n if ((cancelHidden && okHidden) || footer === null) {\n return null;\n }\n return [\n <ButtonWrapper key=\"0\" {...cancelButtonProps} onClick={onCancelHandle} hidden={cancelHidden}>\n {cancelText || localMessage.FbaDialogModal?.cancelText}\n </ButtonWrapper>,\n <ButtonWrapper key=\"1\" type=\"primary\" {...okButtonProps} onClick={onOkHandle} hidden={okHidden}>\n {okText || '提交'}\n </ButtonWrapper>,\n ].filter(Boolean);\n }, [footerExtraData, props.open]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n if (isXsSm) {\n return { width: '90%' };\n }\n if (size == 'large') {\n return {\n height: htmlSize?.height * 0.7,\n width: isXsSm ? '90%' : htmlSize.width * 0.6,\n };\n }\n if (size == 'small') {\n const width = htmlSize.width * 0.3;\n return {\n height: htmlSize?.height * 0.4,\n width: isXsSm ? '90%' : width < 470 ? 470 : width,\n };\n }\n\n if (size == 'middle') {\n return {\n height: htmlSize?.height * 0.4,\n width: isXsSm ? '90%' : htmlSize.width * 0.5,\n };\n }\n\n return undefined;\n }, [htmlSize?.height, htmlSize?.width, screenType, size]);\n\n const classNameNew = classNames(\n 'fba-dialog-modal',\n { 'fba-dialog-modal-title-extra': !!titleExtra },\n { 'fba-dialog-modal-footer-empty': !footerNew },\n className,\n );\n\n const rerenderFooter = (data) => {\n setFooterExtraData(data);\n };\n\n const bodyHeightNew = otherProps.styles?.body?.height || bodyHeight;\n\n // content 只会在第一次渲染\n const contentFt = useMemo(() => {\n return typeof content === 'function' ? content(form, { onClose }) : content;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.open]);\n\n return (\n <CtxProvider value={{ rerenderFooter }}>\n <Modal\n maskClosable={true}\n title={\n titleExtra ? (\n <FlexLayout direction=\"horizontal\" fullIndex={0}>\n <span>{title}</span>\n {titleExtra}\n </FlexLayout>\n ) : (\n title\n )\n }\n centered={true}\n onCancel={onClose}\n destroyOnClose\n width={customSize?.width}\n {...otherProps}\n footer={footerNew}\n styles={{\n ...otherProps.styles,\n body: {\n height: bodyHeightNew || customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n ...otherProps.styles?.body,\n },\n }}\n className={classNameNew}\n open={props.open}\n >\n {contentFt}\n </Modal>\n </CtxProvider>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { FbaAppModal, FbaAppModalProps } from '../dialog-modal';\nimport './style.less';\n\nexport type FbaAppConfirmProps = FbaAppModalProps;\n\nexport const FbaAppConfirm = (props: FbaAppConfirmProps) => {\n const className = classNames('fba-dialog-confirm', props.className);\n return (\n <FbaAppModal\n okText=\"确定\"\n size={null}\n width={350}\n cancelText=\"取消\"\n maskClosable={true}\n {...props}\n className={className}\n />\n );\n};\n","import { FbaAppConfirm } from '../dialog-confirm';\nimport { FbaAppModalProps } from '../dialog-modal';\n\n// export type DialogAlertProps = Omit<\n// DialogModalProps,\n// 'onOk' | 'cancelHidden' | 'cancelButtonProps' | 'onCancel' | 'onClick'\n// > & {\n// onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n// };\n\n// export const dialogAlert = {\n// open: (props: DialogAlertProps) => {\n// return dialogConfirm.open({\n// okText: '确定',\n// cancelHidden: true,\n// maskClosable: false,\n// ...props,\n// onOk: props.onClick,\n// } as DialogModalProps);\n// },\n// };\n\nexport type FbaAppAlertProps = Omit<\n FbaAppModalProps,\n 'onOk' | 'cancelHidden' | 'cancelButtonProps' | 'onCancel' | 'onClick'\n> & {\n onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n};\n\nexport const FbaAppAlert = (props: FbaAppAlertProps) => {\n return (\n <FbaAppConfirm\n okText=\"确定\"\n cancelHidden={true}\n maskClosable={false}\n {...props}\n onOk={(_form, e) => {\n return props.onClick?.(e);\n }}\n />\n );\n};\n","import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useFbaAppDialogDrawerCtx, CtxProvider] = createCtx<{\n /** 重新渲染footer */\n rerenderFooter: (data?: TPlainObject) => void;\n}>();\n","import { isPromise } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Drawer, DrawerProps, Form, FormInstance, Space } from 'antd';\nimport { ReactElement, ReactNode, useMemo, useState } from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { CtxProvider } from './context';\nimport './style.less';\n\nexport type FbaAppDrawerProps = Omit<\n DrawerProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'footer' | 'extra'\n> & {\n okText?: string | ReactElement;\n cancelText?: string | ReactElement;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n /**\n * content只在第一次弹起时,执行一次\n */\n content:\n | string\n | ReactElement\n | ((form: FormInstance, operate: { onClose: DrawerProps['onClose'] }) => ReactElement);\n okButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children' | 'loading'>;\n cancelButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children'>;\n okHidden?: boolean;\n cancelHidden?: boolean;\n\n /** 设置操作区域位置 */\n operatePosition?: 'header' | 'footer';\n /** 右上角自定义内容,如果operatePosition=header,此设置无效 */\n extra?: ReactNode | ((form: FormInstance) => ReactElement);\n /**\n * ```\n * 1. 自定义弹框操作区域,通过 operatePosition 配置可以自定义位置\n * 2. extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据\n * ```\n */\n operateRender?: (form: FormInstance, extraData?: TPlainObject) => ReactElement;\n};\n\nexport const FbaAppDrawer = (props: FbaAppDrawerProps) => {\n const {\n onOk,\n onCancel,\n content,\n okText,\n cancelText,\n okButtonExtraProps,\n cancelButtonExtraProps,\n operatePosition = 'footer',\n operateRender,\n width,\n okHidden,\n cancelHidden,\n extra,\n ...otherProps\n } = props;\n const [form] = Form.useForm();\n const screenType = fbaHooks.useResponsivePoint() || '';\n const [footerExtraData, setFooterExtraData] = useState<TPlainObject>({});\n\n const onClose = hooks.useCallbackRef((e) => {\n props.onClose?.(e);\n });\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 onClose(e);\n return Promise.resolve();\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 onClose(e);\n return Promise.resolve();\n });\n\n const newOperateRender = fbaHooks.useMemoCustom(() => {\n if (operateRender) {\n return operateRender(form, footerExtraData);\n }\n\n const okHiddenNew = okHidden || okButtonExtraProps?.hidden;\n const cancelHiddenNew = okHidden || okButtonExtraProps?.hidden;\n\n const operateGroup = (\n <Space>\n {cancelHiddenNew ? null : (\n <ButtonWrapper {...cancelButtonExtraProps} onClick={onCancelHandle}>\n {cancelText || '取消'}\n </ButtonWrapper>\n )}\n {okHiddenNew ? null : (\n <ButtonWrapper type=\"primary\" {...okButtonExtraProps} onClick={onOkHandle}>\n {okText || '提交'}\n </ButtonWrapper>\n )}\n </Space>\n );\n if (!okHidden || !cancelHidden) {\n return operateGroup;\n }\n return null;\n }, [footerExtraData, props.open]);\n\n const customSize = useMemo(() => {\n if (!screenType) return undefined;\n if (['xs', 'sm'].includes(screenType)) {\n return {\n width: '90%',\n maxWidth: '90%',\n };\n }\n if (width) {\n return { width: width, maxWidth: 'calc(100% - 200px)' };\n }\n return { width: '40%', maxWidth: 'calc(100% - 200px)' };\n }, [screenType, width]);\n\n const extraRender = typeof extra === 'function' ? extra(form) : extra;\n\n const rerenderFooter = (data) => {\n setFooterExtraData(data);\n };\n\n // content 只会在第一次渲染\n const contentFt = useMemo(() => {\n return typeof content === 'function' ? content(form, { onClose }) : content;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.open]);\n\n return (\n <CtxProvider value={{ rerenderFooter }}>\n <Drawer\n maskClosable={true}\n destroyOnClose\n // 5.13.0 新增 styles.wrapper,并废弃 contentWrapperStyle drawerStyle maskStyle 属性\n contentWrapperStyle={{ maxWidth: customSize?.maxWidth }}\n footer={operatePosition === 'footer' ? newOperateRender : null}\n {...otherProps}\n width={customSize?.width}\n styles={{\n ...otherProps.styles,\n // wrapper: {\n // maxWidth: customSize?.maxWidth,\n // ...otherProps.styles?.wrapper,\n // },\n }}\n className={classNames('app-dialog-drawer', otherProps.className)}\n extra={operatePosition === 'header' ? newOperateRender : extraRender}\n open={props.open}\n onClose={onClose}\n >\n {contentFt}\n </Drawer>\n </CtxProvider>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Modal, theme } from 'antd';\nimport { CSSProperties } from 'react';\nimport { BlockLayout } from '../../block-layout';\nimport './style.less';\n\nexport type FbaAppLoadingProps = {\n className?: string;\n message?: string;\n mask?: boolean;\n};\n\nexport const FbaAppLoading = (props: FbaAppLoadingProps & { open?: boolean }) => {\n const { className, message, mask } = props;\n const { token } = theme.useToken();\n const colorPrimary = token.colorPrimary;\n\n return (\n <Modal\n maskClosable={false}\n centered={true}\n destroyOnClose\n className={classNames('fba-dialog-loading', className)}\n open={props.open}\n footer={null}\n closable={false}\n style={{ '--fba-loading-color': colorPrimary } as CSSProperties}\n mask={mask}\n >\n <BlockLayout className={classNames('fba-dialog-loading-content')}>\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">{message || '处理中'}</div>\n </div>\n </BlockLayout>\n </Modal>\n );\n};\n","import { getUuid, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { ReactNode, useContext, useState } from 'react';\nimport { FbaAppContext, FbaAppContextApi } from './context';\nimport { FbaAppAlert, FbaAppAlertProps } from './dialog-alert';\nimport { FbaAppConfirm, FbaAppConfirmProps } from './dialog-confirm';\nimport { FbaAppDrawer, FbaAppDrawerProps } from './dialog-drawer';\nimport { useFbaAppDialogDrawerCtx } from './dialog-drawer/context';\nimport { FbaAppLoading, FbaAppLoadingProps } from './dialog-loading';\nimport { FbaAppModal, FbaAppModalProps } from './dialog-modal';\nimport { useFbaAppDialogModalCtx } from './dialog-modal/context';\n\n/**\n * 不支持多个弹框,第二个弹框可使用useDialogDrawer2\n */\nexport const useDialogDrawer = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogDrawerClose?.();\n };\n\n return {\n appDialogDrawer: {\n open: (data: FbaAppDrawerProps) => {\n ctx.dialogDrawerOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n /**\n * ```\n * 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n * ```\n */\n useAppDialogDrawer: () => {\n const ctx = useFbaAppDialogDrawerCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n },\n };\n};\n\n/**\n * 不支持多个弹框,第二个弹框可使用useDialogDrawer2\n */\nexport const useDialogDrawer2 = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogDrawerClose2?.();\n };\n\n return {\n appDialogDrawer2: {\n open: (data: FbaAppDrawerProps) => {\n ctx.dialogDrawerOpen2?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n /**\n * ```\n * 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n * ```\n */\n useAppDialogDrawer: () => {\n const ctx = useFbaAppDialogDrawerCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n },\n };\n};\n\n/**\n * 不支持多个弹框,第二个弹框可使用useDialogModal2\n * ```\n * 1. 配置size属性可使用预设的弹窗尺寸,如果不使用内置尺寸可设置 size = null\n * ```\n */\nexport const useDialogModal = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogModalClose?.();\n };\n\n return {\n appDialogModal: {\n open: (data: FbaAppModalProps) => {\n ctx.dialogModalOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n /**\n * rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n */\n useAppDialogModal: () => {\n const ctx = useFbaAppDialogModalCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n },\n };\n};\n\n/**\n * 不支持多个弹框\n * ```\n * 1. 配置size属性可使用预设的弹窗尺寸,如果不使用内置尺寸可设置 size = null\n * ```\n */\nexport const useDialogModal2 = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogModalClose2?.();\n };\n\n return {\n appDialogModal2: {\n open: (data: FbaAppModalProps) => {\n ctx.dialogModalOpen2?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n /**\n * rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n */\n useAppDialogModal: () => {\n const ctx = useFbaAppDialogModalCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n },\n };\n};\n\n/**\n * 不支持多个弹框\n * @returns\n */\nexport const useDialogAlert = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogAlertClose?.();\n };\n\n return {\n appDialogAlert: {\n open: (data: FbaAppAlertProps) => {\n ctx.dialogAlertOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n },\n };\n};\n/**\n * 不支持多个弹框\n * @returns\n */\nexport const useDialogConfirm = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogConfirmClose?.();\n };\n\n return {\n appDialogConfirm: {\n open: (data: FbaAppConfirmProps) => {\n ctx.dialogConfirmOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n },\n };\n};\n/**\n * 不支持多个弹框\n * @returns\n */\nexport const useDialogLoading = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogLoadingClose?.();\n };\n\n return {\n appDialogLoading: {\n open: (data?: FbaAppLoadingProps) => {\n ctx.dialogLoadingOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n },\n };\n};\n\nexport const FbaApp = (props: { children: ReactNode }) => {\n const [drawerProps, setDrawerProps] = useState<FbaAppDrawerProps>({} as FbaAppDrawerProps);\n const [drawerKey, setDrawerKey] = useState(getUuid());\n\n const [drawerProps2, setDrawerProps2] = useState<FbaAppDrawerProps>({} as FbaAppDrawerProps);\n const [drawerKey2, setDrawerKey2] = useState(getUuid());\n\n const [modalProps, setModalProps] = useState<FbaAppModalProps>({} as FbaAppModalProps);\n const [modalKey, setModalKey] = useState(getUuid());\n\n const [modalProps2, setModalProps2] = useState<FbaAppModalProps>({} as FbaAppModalProps);\n const [modalKey2, setModalKey2] = useState(getUuid());\n\n const [alertProps, setAlertProps] = useState<FbaAppAlertProps>({} as FbaAppAlertProps);\n const [confirmProps, setConfirmProps] = useState<FbaAppConfirmProps>({} as FbaAppConfirmProps);\n const [loadingProps, setLoadingProps] = useState<FbaAppLoadingProps>();\n\n const [alertKey, setAlertKey] = useState(getUuid());\n const [confirmKey, setConfirmKey] = useState(getUuid());\n const [loadingKey, setLoadingKey] = useState(getUuid());\n\n const dialogDrawerOpen: FbaAppContextApi['dialogDrawerOpen'] = hooks.useCallbackRef((data) => {\n setDrawerProps(data);\n });\n const dialogDrawerClose = hooks.useCallbackRef((e) => {\n setDrawerProps({ ...drawerProps, open: false } as FbaAppDrawerProps);\n drawerProps.onClose?.(e);\n setTimeout(() => {\n setDrawerKey(getUuid());\n }, 200);\n });\n\n const dialogDrawerOpen2: FbaAppContextApi['dialogDrawerOpen2'] = hooks.useCallbackRef((data) => {\n setDrawerProps2(data);\n });\n\n const dialogDrawerClose2 = hooks.useCallbackRef((e) => {\n setDrawerProps2({ ...drawerProps2, open: false } as FbaAppDrawerProps);\n drawerProps2.onClose?.(e);\n setTimeout(() => {\n setDrawerKey2(getUuid());\n }, 200);\n });\n\n const dialogModalOpen: FbaAppContextApi['dialogModalOpen'] = hooks.useCallbackRef((data) => {\n setModalProps(data);\n });\n\n const dialogModalClose = hooks.useCallbackRef(() => {\n setModalProps({ ...modalProps, open: false } as FbaAppModalProps);\n modalProps.onClose?.();\n setTimeout(() => {\n setModalKey(getUuid());\n }, 200);\n });\n\n const dialogModalOpen2: FbaAppContextApi['dialogModalOpen2'] = hooks.useCallbackRef((data) => {\n setModalProps2(data);\n });\n\n const dialogModalClose2 = hooks.useCallbackRef(() => {\n setModalProps2({ ...modalProps2, open: false } as FbaAppModalProps);\n modalProps2.onClose?.();\n setTimeout(() => {\n setModalKey2(getUuid());\n }, 200);\n });\n\n const dialogAlertOpen: FbaAppContextApi['dialogAlertOpen'] = hooks.useCallbackRef((data) => {\n setAlertProps(data);\n });\n\n const dialogAlertClose = hooks.useCallbackRef(() => {\n setAlertProps({ ...alertProps, open: false } as FbaAppAlertProps);\n alertProps.onClose?.();\n setTimeout(() => {\n setAlertKey(getUuid());\n }, 200);\n });\n\n const dialogConfirmOpen: FbaAppContextApi['dialogConfirmOpen'] = hooks.useCallbackRef((data) => {\n setConfirmProps(data);\n });\n\n const dialogConfirmClose = hooks.useCallbackRef(() => {\n setConfirmProps({ ...confirmProps, open: false } as FbaAppConfirmProps);\n confirmProps.onClose?.();\n setTimeout(() => {\n setConfirmKey(getUuid());\n }, 200);\n });\n\n const dialogLoadingOpen: FbaAppContextApi['dialogLoadingOpen'] = hooks.useCallbackRef((data) => {\n setLoadingProps(data);\n });\n\n const dialogLoadingClose = hooks.useCallbackRef(() => {\n setLoadingProps({ ...loadingProps, open: false } as FbaAppLoadingProps);\n setTimeout(() => {\n setLoadingKey(getUuid());\n }, 200);\n });\n\n return (\n <FbaAppContext.Provider\n value={{\n dialogDrawerOpen,\n dialogDrawerClose,\n dialogDrawerOpen2,\n dialogDrawerClose2,\n dialogModalOpen,\n dialogModalClose,\n dialogModalOpen2,\n dialogModalClose2,\n dialogAlertOpen,\n dialogAlertClose,\n dialogConfirmOpen,\n dialogConfirmClose,\n dialogLoadingOpen,\n dialogLoadingClose,\n }}\n >\n <FbaAppDrawer {...drawerProps} onClose={dialogDrawerClose} key={drawerKey}></FbaAppDrawer>\n <FbaAppDrawer {...drawerProps2} onClose={dialogDrawerClose2} key={drawerKey2}></FbaAppDrawer>\n <FbaAppModal {...modalProps} onClose={dialogModalClose} key={modalKey}></FbaAppModal>\n <FbaAppModal {...modalProps2} onClose={dialogModalClose2} key={modalKey2}></FbaAppModal>\n <FbaAppAlert {...alertProps} onClose={dialogAlertClose} key={alertKey}></FbaAppAlert>\n <FbaAppConfirm {...confirmProps} onClose={dialogConfirmClose} key={confirmKey}></FbaAppConfirm>\n <FbaAppLoading {...loadingProps} key={loadingKey}></FbaAppLoading>\n {props.children}\n </FbaAppContext.Provider>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport {\n FbaApp as FbaAppInner,\n useDialogAlert,\n useDialogConfirm,\n useDialogDrawer,\n useDialogDrawer2,\n useDialogLoading,\n useDialogModal,\n useDialogModal2,\n} from './fba-app';\n\nexport const FbaApp = fbaUtils.attachPropertiesToComponent(FbaAppInner, {\n /** 不支持多次弹框,第二个弹框可使用useDialogDrawer2 */\n useDialogDrawer,\n useDialogDrawer2,\n /** 不支持多次弹框,第二个弹框可使用useDialogModal2 */\n useDialogModal,\n useDialogModal2,\n /** 不支持多次弹框 */\n useDialogConfirm,\n /** 不支持多次弹框 */\n useDialogAlert,\n /** 不支持多次弹框 */\n useDialogLoading,\n});\n"],"names":["FbaAppContext","createContext","_createCtx","_createCtx2","useFbaAppDialogModalCtx","CtxProvider","FbaAppModal","props","_otherProps$styles","_otherProps$styles2","titleExtra","title","onOk","onCancel","okButtonProps","cancelButtonProps","content","className","okHidden","cancelHidden","footer","cancelText","okText","size","bodyHeight","otherProps","_objectWithoutPropertiesLoose","_excluded","_Form$useForm","Form","useForm","form","htmlSize","useSize","document","querySelector","localMessage","getFbaLocaleMessage","screenType","fbaHooks","useResponsivePoint","_useState","useState","footerExtraData","setFooterExtraData","onClose","_hooks","useCallbackRef","onCancelHandle","e","response","_isPromise","then","Promise","resolve","onOkHandle","footerNew","useMemoCustom","_localMessage$FbaDial","_jsx","ButtonWrapper","_extends","onClick","hidden","children","FbaDialogModal","type","filter","Boolean","open","customSize","useMemo","height","undefined","isXsSm","includes","width","classNameNew","_classNames","rerenderFooter","data","bodyHeightNew","styles","body","contentFt","value","Modal","maskClosable","_jsxs","FlexLayout","direction","fullIndex","centered","destroyOnClose","maxHeight","FbaAppConfirm","FbaAppAlert","_form","useFbaAppDialogDrawerCtx","FbaAppDrawer","okButtonExtraProps","cancelButtonExtraProps","_props$operatePositio","operatePosition","operateRender","extra","newOperateRender","okHiddenNew","cancelHiddenNew","operateGroup","Space","maxWidth","extraRender","Drawer","contentWrapperStyle","FbaAppLoading","message","mask","_theme$useToken","theme","useToken","token","colorPrimary","closable","style","BlockLayout","useDialogDrawer","ctx","useContext","dialogDrawerClose","appDialogDrawer","dialogDrawerOpen","close","useAppDialogDrawer","useDialogDrawer2","dialogDrawerClose2","appDialogDrawer2","dialogDrawerOpen2","useDialogModal","dialogModalClose","appDialogModal","dialogModalOpen","useAppDialogModal","useDialogModal2","dialogModalClose2","appDialogModal2","dialogModalOpen2","useDialogAlert","dialogAlertClose","appDialogAlert","dialogAlertOpen","useDialogConfirm","dialogConfirmClose","appDialogConfirm","dialogConfirmOpen","useDialogLoading","dialogLoadingClose","appDialogLoading","dialogLoadingOpen","FbaApp","drawerProps","setDrawerProps","_useState2","getUuid","drawerKey","setDrawerKey","_useState3","drawerProps2","setDrawerProps2","_useState4","drawerKey2","setDrawerKey2","_useState5","modalProps","setModalProps","_useState6","modalKey","setModalKey","_useState7","modalProps2","setModalProps2","_useState8","modalKey2","setModalKey2","_useState9","alertProps","setAlertProps","_useState0","confirmProps","setConfirmProps","_useState1","loadingProps","setLoadingProps","_useState10","alertKey","setAlertKey","_useState11","confirmKey","setConfirmKey","_useState12","loadingKey","setLoadingKey","setTimeout","Provider","_createElement","key","fbaUtils","attachPropertiesToComponent","FbaAppInner"],"mappings":";k6CA8BO,IAAMA,EAAgBC,EAAgC,IC3BtD,IAAAC,EAA+CC,IAAxCC,EAAuBF,EAAA,GAAEG,EAAWH,EAAA,yLC6D3C,IAAMI,EAAc,SAAdA,EAAeC,GAA4B,IAAAC,EAAAC,EACtD,IACEC,EAgBEH,EAhBFG,WACAC,EAeEJ,EAfFI,MACAC,EAcEL,EAdFK,KACAC,EAaEN,EAbFM,SACAC,EAYEP,EAZFO,cACAC,EAWER,EAXFQ,kBACAC,EAUET,EAVFS,QACAC,EASEV,EATFU,UACAC,EAQEX,EARFW,SACAC,EAOEZ,EAPFY,aACAC,EAMEb,EANFa,OACAC,EAKEd,EALFc,WACAC,EAIEf,EAJFe,OACAC,EAGEhB,EAHFgB,KACAC,EAEEjB,EAFFiB,WACGC,EAAUC,EACXnB,EAAKoB,GACT,IAAAC,EAAeC,EAAKC,UAAbC,EAAIH,EAAA,GACX,IAAMI,EAAWC,EAAQC,SAASC,cAAc,SAChD,IAAMC,EAAeC,IACrB,IAAMC,EAAaC,EAASC,sBAAwB,GAEpD,IAAAC,EAA8CC,EAAuB,IAA9DC,EAAeF,EAAA,GAAEG,EAAkBH,EAAA,GAE1C,IAAMI,EAAUC,EAAMC,eAAe,WACnCxC,EAAMsC,SAAO,MAAbtC,EAAMsC,SACR,GAEA,IAAMG,EAAiBF,EAAMC,eAAe,SAACE,GAC3C,GAAIpC,EAAU,CACZ,IAAMqC,EAAWrC,EAASkB,EAAMkB,GAChC,GAAIC,GAAYC,EAAUD,GAAW,CACnC,OAAOA,EAASE,KAAKP,EACvB,CACF,CACAA,IACA,OAAOQ,QAAQC,SACjB,GAEA,IAAMC,EAAaT,EAAMC,eAAe,SAACE,GACvC,GAAIrC,EAAM,CACR,IAAMsC,EAAWtC,EAAKmB,EAAMkB,GAC5B,GAAIC,GAAYC,EAAUD,GAAW,CACnC,OAAOA,EAASE,KAAKP,EACvB,CACF,CACAA,IACA,OAAOQ,QAAQC,SACjB,GAEA,IAAME,EAAYjB,EAASkB,cAAc,WAAM,IAAAC,EAC7C,GAAItC,EAAQ,CACV,cAAcA,IAAW,WAAaA,EAAOW,EAAMY,GAAmBvB,CACxE,CACA,GAAKD,GAAgBD,GAAaE,IAAW,KAAM,CACjD,OAAO,IACT,CACA,MAAO,CACLuC,EAACC,EAAaC,KAAa9C,EAAiB,CAAE+C,QAASd,EAAgBe,OAAQ5C,EAAa6C,SACzF3C,KAAUqC,EAAItB,EAAa6B,iBAAc,UAAA,EAA3BP,EAA6BrC,cAD3B,KAGnBsC,EAACC,EAAaC,EAAA,CAASK,KAAK,WAAcpD,EAAa,CAAEgD,QAASP,EAAYQ,OAAQ7C,EAAS8C,SAC5F1C,GAAU,OADM,MAGnB6C,OAAOC,QACV,EAAE,CAACzB,EAAiBpC,EAAM8D,OAE3B,IAAMC,EAAaC,EAAQ,WACzB,KAAKvC,GAAQ,MAARA,EAAUwC,UAAWlC,EAAY,OAAOmC,UAC7C,IAAMC,EAAS,CAAC,KAAM,MAAMC,SAASrC,GACrC,GAAIoC,EAAQ,CACV,MAAO,CAAEE,MAAO,MAClB,CACA,GAAIrD,GAAQ,QAAS,CACnB,MAAO,CACLiD,QAAQxC,GAAQ,UAAA,EAARA,EAAUwC,QAAS,GAC3BI,MAAOF,EAAS,MAAQ1C,EAAS4C,MAAQ,GAE7C,CACA,GAAIrD,GAAQ,QAAS,CACnB,IAAMqD,EAAQ5C,EAAS4C,MAAQ,GAC/B,MAAO,CACLJ,QAAQxC,GAAQ,UAAA,EAARA,EAAUwC,QAAS,GAC3BI,MAAOF,EAAS,MAAQE,EAAQ,IAAM,IAAMA,EAEhD,CAEA,GAAIrD,GAAQ,SAAU,CACpB,MAAO,CACLiD,QAAQxC,GAAQ,UAAA,EAARA,EAAUwC,QAAS,GAC3BI,MAAOF,EAAS,MAAQ1C,EAAS4C,MAAQ,GAE7C,CAEA,OAAOH,SACT,EAAG,CAACzC,eAAAA,EAAUwC,OAAQxC,GAAAA,UAAAA,EAAAA,EAAU4C,MAAOtC,EAAYf,IAEnD,IAAMsD,EAAeC,EACnB,mBACA,CAAE,iCAAkCpE,GACpC,CAAE,iCAAkC8C,GACpCvC,GAGF,IAAM8D,EAAiB,SAAjBA,EAAkBC,GACtBpC,EAAmBoC,IAGrB,IAAMC,IAAgBzE,EAAAiB,EAAWyD,SAAM,OAAA1E,EAAjBA,EAAmB2E,OAAI,UAAA,EAAvB3E,EAAyBgE,SAAUhD,EAGzD,IAAM4D,GAAYb,EAAQ,WACxB,cAAcvD,IAAY,WAAaA,EAAQe,EAAM,CAAEc,QAAAA,IAAa7B,CAEtE,EAAG,CAACT,EAAM8D,OAEV,OACEV,EAACtD,EAAW,CAACgF,MAAO,CAAEN,eAAAA,GAAiBf,SACrCL,EAAC2B,EAAKzB,EAAA,CACJ0B,aAAc,KACd5E,MACED,EACE8E,EAACC,EAAU,CAACC,UAAU,aAAaC,UAAW,EAAE3B,UAC9CL,EAAA,OAAA,CAAAK,SAAOrD,IACND,KAGHC,EAGJiF,SAAU,KACV/E,SAAUgC,EACVgD,eAAc,KACdjB,MAAON,GAAAA,UAAAA,EAAAA,EAAYM,OACfnD,EAAU,CACdL,OAAQoC,EACR0B,OAAMrB,EACDpC,GAAAA,EAAWyD,OAAM,CACpBC,KAAItB,EAAA,CACFW,OAAQS,IAAiBX,GAAAA,UAAAA,EAAAA,EAAYE,QACrCsB,UAAW,wBAAqBrF,EAC7BgB,EAAWyD,SAAXzE,UAAAA,EAAAA,EAAmB0E,QAG1BlE,UAAW4D,EACXR,KAAM9D,EAAM8D,KAAKL,SAEhBoB,OAIT,ECnNO,IAAMW,EAAgB,SAAhBA,EAAiBxF,GAC5B,IAAMU,EAAY6D,EAAW,qBAAsBvE,EAAMU,WACzD,OACE0C,EAACrD,EAAWuD,EAAA,CACVvC,OAAO,KACPC,KAAM,KACNqD,MAAO,IACPvD,WAAW,KACXkE,aAAc,MACVhF,EAAK,CACTU,UAAWA,IAGjB,ECUO,IAAM+E,EAAc,SAAdA,EAAezF,GAC1B,OACEoD,EAACoC,EAAalC,EAAA,CACZvC,OAAO,KACPH,aAAc,KACdoE,aAAc,OACVhF,EAAK,CACTK,KAAM,SAANA,EAAOqF,EAAOhD,GACZ,OAAO1C,EAAMuD,SAAO,UAAA,EAAbvD,EAAMuD,QAAUb,EACzB,IAGN,ECtCO,IAAA/C,EAAgDC,IAAzC+F,EAAwBhG,EAAA,GAAEG,EAAWH,EAAA,uLCyC5C,IAAMiG,EAAe,SAAfA,EAAgB5F,GAC3B,IACEK,EAcEL,EAdFK,KACAC,EAaEN,EAbFM,SACAG,EAYET,EAZFS,QACAM,EAWEf,EAXFe,OACAD,EAUEd,EAVFc,WACA+E,EASE7F,EATF6F,mBACAC,EAQE9F,EARF8F,uBAAsBC,EAQpB/F,EAPFgG,gBAAAA,EAAeD,SAAG,EAAA,SAAQA,EAC1BE,EAMEjG,EANFiG,cACA5B,EAKErE,EALFqE,MACA1D,EAIEX,EAJFW,SACAC,EAGEZ,EAHFY,aACAsF,EAEElG,EAFFkG,MACGhF,EAAUC,EACXnB,EAAKoB,GACT,IAAAC,EAAeC,EAAKC,UAAbC,EAAIH,EAAA,GACX,IAAMU,EAAaC,EAASC,sBAAwB,GACpD,IAAAC,EAA8CC,EAAuB,IAA9DC,EAAeF,EAAA,GAAEG,EAAkBH,EAAA,GAE1C,IAAMI,EAAUC,EAAMC,eAAe,SAACE,GACpC1C,EAAMsC,SAANtC,MAAAA,EAAMsC,QAAUI,EAClB,GAEA,IAAMD,EAAiBF,EAAMC,eAAe,SAACE,GAC3C,GAAIpC,EAAU,CACZ,IAAMqC,EAAWrC,EAASkB,EAAMkB,GAChC,GAAIC,GAAYC,EAAUD,GAAW,CACnC,OAAOA,EAASE,KAAKP,EACvB,CACF,CACAA,EAAQI,GACR,OAAOI,QAAQC,SACjB,GAEA,IAAMC,EAAaT,EAAMC,eAAe,SAACE,GACvC,GAAIrC,EAAM,CACR,IAAMsC,EAAWtC,EAAKmB,EAAMkB,GAC5B,GAAIC,GAAYC,EAAUD,GAAW,CACnC,OAAOA,EAASE,KAAKP,EACvB,CACF,CACAA,EAAQI,GACR,OAAOI,QAAQC,SACjB,GAEA,IAAMoD,EAAmBnE,EAASkB,cAAc,WAC9C,GAAI+C,EAAe,CACjB,OAAOA,EAAczE,EAAMY,EAC7B,CAEA,IAAMgE,EAAczF,IAAYkF,GAAAA,UAAAA,EAAAA,EAAoBrC,QACpD,IAAM6C,EAAkB1F,IAAYkF,GAAAA,UAAAA,EAAAA,EAAoBrC,QAExD,IAAM8C,EACJrB,EAACsB,EAAK,CAAA9C,SAAA,CACH4C,EAAkB,KACjBjD,EAACC,EAAaC,EAAA,CAAA,EAAKwC,EAAsB,CAAEvC,QAASd,EAAegB,SAChE3C,GAAc,QAGlBsF,EAAc,KACbhD,EAACC,EAAaC,EAAA,CAACK,KAAK,WAAckC,EAAkB,CAAEtC,QAASP,EAAWS,SACvE1C,GAAU,WAKnB,IAAKJ,IAAaC,EAAc,CAC9B,OAAO0F,CACT,CACA,OAAO,IACR,EAAE,CAAClE,EAAiBpC,EAAM8D,OAE3B,IAAMC,EAAaC,EAAQ,WACzB,IAAKjC,EAAY,OAAOmC,UACxB,GAAI,CAAC,KAAM,MAAME,SAASrC,GAAa,CACrC,MAAO,CACLsC,MAAO,MACPmC,SAAU,MAEd,CACA,GAAInC,EAAO,CACT,MAAO,CAAEA,MAAOA,EAAOmC,SAAU,qBACnC,CACA,MAAO,CAAEnC,MAAO,MAAOmC,SAAU,qBACnC,EAAG,CAACzE,EAAYsC,IAEhB,IAAMoC,SAAqBP,IAAU,WAAaA,EAAM1E,GAAQ0E,EAEhE,IAAM1B,EAAiB,SAAjBA,EAAkBC,GACtBpC,EAAmBoC,IAIrB,IAAMI,EAAYb,EAAQ,WACxB,cAAcvD,IAAY,WAAaA,EAAQe,EAAM,CAAEc,QAAAA,IAAa7B,CAEtE,EAAG,CAACT,EAAM8D,OAEV,OACEV,EAACtD,EAAW,CAACgF,MAAO,CAAEN,eAAAA,GAAiBf,SACrCL,EAACsD,EAAMpD,EAAA,CACL0B,aAAc,KACdM,eAAc,KAEdqB,oBAAqB,CAAEH,SAAUzC,GAAAA,UAAAA,EAAAA,EAAYyC,UAC7C3F,OAAQmF,IAAoB,SAAWG,EAAmB,MACtDjF,EAAU,CACdmD,MAAON,GAAAA,UAAAA,EAAAA,EAAYM,MACnBM,OAAMrB,EAAA,GACDpC,EAAWyD,QAMhBjE,UAAW6D,EAAW,oBAAqBrD,EAAWR,WACtDwF,MAAOF,IAAoB,SAAWG,EAAmBM,EACzD3C,KAAM9D,EAAM8D,KACZxB,QAASA,EAAQmB,SAEhBoB,MAIT,EC/JO,IAAM+B,EAAgB,SAAhBA,EAAiB5G,GAC5B,IAAQU,EAA6BV,EAA7BU,UAAWmG,EAAkB7G,EAAlB6G,QAASC,EAAS9G,EAAT8G,KAC5B,IAAAC,EAAkBC,EAAMC,WAAhBC,EAAKH,EAALG,MACR,IAAMC,EAAeD,EAAMC,aAE3B,OACE/D,EAAC2B,EAAK,CACJC,aAAc,MACdK,SAAU,KACVC,eAAc,KACd5E,UAAW6D,EAAW,qBAAsB7D,GAC5CoD,KAAM9D,EAAM8D,KACZjD,OAAQ,KACRuG,SAAU,MACVC,MAAO,CAAE,sBAAuBF,GAChCL,KAAMA,EAAKrD,SAEXL,EAACkE,EAAW,CAAC5G,UAAW6D,EAAW,8BAA8Bd,SAC/DwB,EAAA,MAAA,CAAKvE,UAAU,iBAAgB+C,UAC7BL,EAAA,MAAA,CAAK1C,UAAU,iBACf0C,EAAA,MAAA,CAAK1C,UAAU,cAAa+C,SAAEoD,GAAW,cAKnD,ECtBO,IAAMU,EAAkB,SAAlBA,IACX,IAAMC,EAAMC,EAAWhI,GAEvB,IAAM6C,EAAU,SAAVA,IACJkF,EAAIE,mBAAiB,MAArBF,EAAIE,qBAGN,MAAO,CACLC,gBAAiB,CACf7D,KAAM,SAANA,EAAOW,GACL+C,EAAII,kBAAJJ,MAAAA,EAAII,iBAAgBtE,EAAA,CAAA,EAAQmB,EAAI,CAAEX,KAAM,QACxC,MAAO,CAAExB,QAAAA,EACV,EACDuF,MAAOvF,EAMPwF,mBAAoB,SAApBA,IACE,IAAMN,EAAM7B,IACZ,MAAO,CAELnB,eAAgB,SAAhBA,EAAiBC,GACf+C,EAAIhD,eAAeC,EACrB,EAEJ,GAGN,EAKO,IAAMsD,EAAmB,SAAnBA,IACX,IAAMP,EAAMC,EAAWhI,GAEvB,IAAM6C,EAAU,SAAVA,IACJkF,EAAIQ,oBAAkB,MAAtBR,EAAIQ,sBAGN,MAAO,CACLC,iBAAkB,CAChBnE,KAAM,SAANA,EAAOW,GACL+C,EAAIU,mBAAJV,MAAAA,EAAIU,kBAAiB5E,EAAA,CAAA,EAAQmB,EAAI,CAAEX,KAAM,QACzC,MAAO,CAAExB,QAAAA,EACV,EACDuF,MAAOvF,EAMPwF,mBAAoB,SAApBA,IACE,IAAMN,EAAM7B,IACZ,MAAO,CAELnB,eAAgB,SAAhBA,EAAiBC,GACf+C,EAAIhD,eAAeC,EACrB,EAEJ,GAGN,EAQO,IAAM0D,EAAiB,SAAjBA,IACX,IAAMX,EAAMC,EAAWhI,GAEvB,IAAM6C,EAAU,SAAVA,IACJkF,EAAIY,kBAAgB,MAApBZ,EAAIY,oBAGN,MAAO,CACLC,eAAgB,CACdvE,KAAM,SAANA,EAAOW,GACL+C,EAAIc,iBAAJd,MAAAA,EAAIc,gBAAehF,EAAA,CAAA,EAAQmB,EAAI,CAAEX,KAAM,QACvC,MAAO,CAAExB,QAAAA,EACV,EACDuF,MAAOvF,EAIPiG,kBAAmB,SAAnBA,IACE,IAAMf,EAAM3H,IACZ,MAAO,CAEL2E,eAAgB,SAAhBA,EAAiBC,GACf+C,EAAIhD,eAAeC,EACrB,EAEJ,GAGN,EAQO,IAAM+D,EAAkB,SAAlBA,IACX,IAAMhB,EAAMC,EAAWhI,GAEvB,IAAM6C,EAAU,SAAVA,IACJkF,EAAIiB,mBAAiB,MAArBjB,EAAIiB,qBAGN,MAAO,CACLC,gBAAiB,CACf5E,KAAM,SAANA,EAAOW,GACL+C,EAAImB,kBAAJnB,MAAAA,EAAImB,iBAAgBrF,EAAA,CAAA,EAAQmB,EAAI,CAAEX,KAAM,QACxC,MAAO,CAAExB,QAAAA,EACV,EACDuF,MAAOvF,EAIPiG,kBAAmB,SAAnBA,IACE,IAAMf,EAAM3H,IACZ,MAAO,CAEL2E,eAAgB,SAAhBA,EAAiBC,GACf+C,EAAIhD,eAAeC,EACrB,EAEJ,GAGN,EAMO,IAAMmE,EAAiB,SAAjBA,IACX,IAAMpB,EAAMC,EAAWhI,GAEvB,IAAM6C,EAAU,SAAVA,IACJkF,EAAIqB,kBAAgB,MAApBrB,EAAIqB,oBAGN,MAAO,CACLC,eAAgB,CACdhF,KAAM,SAANA,EAAOW,GACL+C,EAAIuB,iBAAJvB,MAAAA,EAAIuB,gBAAezF,EAAA,CAAA,EAAQmB,EAAI,CAAEX,KAAM,QACvC,MAAO,CAAExB,QAAAA,EACV,EACDuF,MAAOvF,GAGb,EAKO,IAAM0G,EAAmB,SAAnBA,IACX,IAAMxB,EAAMC,EAAWhI,GAEvB,IAAM6C,EAAU,SAAVA,IACJkF,EAAIyB,oBAAkB,MAAtBzB,EAAIyB,sBAGN,MAAO,CACLC,iBAAkB,CAChBpF,KAAM,SAANA,EAAOW,GACL+C,EAAI2B,mBAAJ3B,MAAAA,EAAI2B,kBAAiB7F,EAAA,CAAA,EAAQmB,EAAI,CAAEX,KAAM,QACzC,MAAO,CAAExB,QAAAA,EACV,EACDuF,MAAOvF,GAGb,EAKO,IAAM8G,EAAmB,SAAnBA,IACX,IAAM5B,EAAMC,EAAWhI,GAEvB,IAAM6C,EAAU,SAAVA,IACJkF,EAAI6B,oBAAkB,MAAtB7B,EAAI6B,sBAGN,MAAO,CACLC,iBAAkB,CAChBxF,KAAM,SAANA,EAAOW,GACL+C,EAAI+B,mBAAJ/B,MAAAA,EAAI+B,kBAAiBjG,EAAA,CAAA,EAAQmB,EAAI,CAAEX,KAAM,QACzC,MAAO,CAAExB,QAAAA,EACV,EACDuF,MAAOvF,GAGb,EAEO,IAAMkH,EAAS,SAATA,EAAUxJ,GACrB,IAAAkC,EAAsCC,EAA4B,IAA3DsH,EAAWvH,EAAA,GAAEwH,EAAcxH,EAAA,GAClC,IAAAyH,EAAkCxH,EAASyH,KAApCC,EAASF,EAAA,GAAEG,EAAYH,EAAA,GAE9B,IAAAI,EAAwC5H,EAA4B,IAA7D6H,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpC,IAAAG,EAAoC/H,EAASyH,KAAtCO,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAEhC,IAAAG,EAAoClI,EAA2B,IAAxDmI,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChC,IAAAG,EAAgCrI,EAASyH,KAAlCa,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAE5B,IAAAG,EAAsCxI,EAA2B,IAA1DyI,EAAWD,EAAA,GAAEE,EAAcF,EAAA,GAClC,IAAAG,EAAkC3I,EAASyH,KAApCmB,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAE9B,IAAAG,EAAoC9I,EAA2B,IAAxD+I,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChC,IAAAG,EAAwCjJ,EAA6B,IAA9DkJ,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpC,IAAAG,EAAwCpJ,IAAjCqJ,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAEpC,IAAAG,EAAgCvJ,EAASyH,KAAlC+B,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAC5B,IAAAG,EAAoC1J,EAASyH,KAAtCkC,EAAUD,EAAA,GAAEE,EAAaF,EAAA,GAChC,IAAAG,EAAoC7J,EAASyH,KAAtCqC,GAAUD,EAAA,GAAEE,GAAaF,EAAA,GAEhC,IAAMpE,GAAyDrF,EAAMC,eAAe,SAACiC,GACnFiF,EAAejF,EACjB,GACA,IAAMiD,GAAoBnF,EAAMC,eAAe,SAACE,GAC9CgH,EAAcpG,EAAA,CAAA,EAAMmG,EAAW,CAAE3F,KAAM,SACvC2F,EAAYnH,SAAZmH,MAAAA,EAAYnH,QAAUI,GACtByJ,WAAW,WACTrC,EAAaF,IACd,EAAE,IACL,GAEA,IAAM1B,GAA2D3F,EAAMC,eAAe,SAACiC,GACrFwF,EAAgBxF,EAClB,GAEA,IAAMuD,GAAqBzF,EAAMC,eAAe,SAACE,GAC/CuH,EAAe3G,EAAA,CAAA,EAAM0G,EAAY,CAAElG,KAAM,SACzCkG,EAAa1H,SAAb0H,MAAAA,EAAa1H,QAAUI,GACvByJ,WAAW,WACT/B,EAAcR,IACf,EAAE,IACL,GAEA,IAAMtB,GAAuD/F,EAAMC,eAAe,SAACiC,GACjF8F,EAAc9F,EAChB,GAEA,IAAM2D,GAAmB7F,EAAMC,eAAe,WAC5C+H,EAAajH,EAAA,CAAA,EAAMgH,EAAU,CAAExG,KAAM,SACrCwG,EAAWhI,SAAO,MAAlBgI,EAAWhI,UACX6J,WAAW,WACTzB,EAAYd,IACb,EAAE,IACL,GAEA,IAAMjB,GAAyDpG,EAAMC,eAAe,SAACiC,GACnFoG,EAAepG,EACjB,GAEA,IAAMgE,GAAoBlG,EAAMC,eAAe,WAC7CqI,EAAcvH,EAAA,CAAA,EAAMsH,EAAW,CAAE9G,KAAM,SACvC8G,EAAYtI,SAAO,MAAnBsI,EAAYtI,UACZ6J,WAAW,WACTnB,EAAapB,IACd,EAAE,IACL,GAEA,IAAMb,GAAuDxG,EAAMC,eAAe,SAACiC,GACjF0G,EAAc1G,EAChB,GAEA,IAAMoE,GAAmBtG,EAAMC,eAAe,WAC5C2I,EAAa7H,EAAA,CAAA,EAAM4H,EAAU,CAAEpH,KAAM,SACrCoH,EAAW5I,SAAO,MAAlB4I,EAAW5I,UACX6J,WAAW,WACTP,EAAYhC,IACb,EAAE,IACL,GAEA,IAAMT,GAA2D5G,EAAMC,eAAe,SAACiC,GACrF6G,EAAgB7G,EAClB,GAEA,IAAMwE,GAAqB1G,EAAMC,eAAe,WAC9C8I,EAAehI,EAAA,CAAA,EAAM+H,EAAY,CAAEvH,KAAM,SACzCuH,EAAa/I,SAAO,MAApB+I,EAAa/I,UACb6J,WAAW,WACTJ,EAAcnC,IACf,EAAE,IACL,GAEA,IAAML,GAA2DhH,EAAMC,eAAe,SAACiC,GACrFgH,EAAgBhH,EAClB,GAEA,IAAM4E,GAAqB9G,EAAMC,eAAe,WAC9CiJ,EAAenI,EAAA,CAAA,EAAMkI,EAAY,CAAE1H,KAAM,SACzCqI,WAAW,WACTD,GAActC,IACf,EAAE,IACL,GAEA,OACE3E,EAACxF,EAAc2M,SAAQ,CACrBtH,MAAO,CACL8C,iBAAAA,GACAF,kBAAAA,GACAQ,kBAAAA,GACAF,mBAAAA,GACAM,gBAAAA,GACAF,iBAAAA,GACAO,iBAAAA,GACAF,kBAAAA,GACAM,gBAAAA,GACAF,iBAAAA,GACAM,kBAAAA,GACAF,mBAAAA,GACAM,kBAAAA,GACAF,mBAAAA,IACA5F,UAEF4I,EAACzG,EAAYtC,KAAKmG,EAAW,CAAEnH,QAASoF,GAAmB4E,IAAKzC,KAChEwC,EAACzG,EAAYtC,KAAK0G,EAAY,CAAE1H,QAAS0F,GAAoBsE,IAAKnC,KAClEkC,EAACtM,EAAWuD,KAAKgH,EAAU,CAAEhI,QAAS8F,GAAkBkE,IAAK7B,KAC7D4B,EAACtM,EAAWuD,KAAKsH,EAAW,CAAEtI,QAASmG,GAAmB6D,IAAKvB,KAC/DsB,EAAC5G,EAAWnC,KAAK4H,EAAU,CAAE5I,QAASuG,GAAkByD,IAAKX,KAC7DU,EAAC7G,EAAalC,KAAK+H,EAAY,CAAE/I,QAAS2G,GAAoBqD,IAAKR,KACnEO,EAACzF,EAAatD,KAAKkI,EAAY,CAAEc,IAAKL,MACrCjM,EAAMyD,WAGb,EClVO,IAAM+F,EAAS+C,EAASC,4BAA4BC,EAAa,CAEtElF,gBAAAA,EACAQ,iBAAAA,EAEAI,eAAAA,EACAK,gBAAAA,EAEAQ,iBAAAA,EAEAJ,eAAAA,EAEAQ,iBAAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/fba-app/context.ts","@flatbiz/antd/src/fba-app/dialog-modal/context.ts","@flatbiz/antd/src/fba-app/dialog-modal/index.tsx","@flatbiz/antd/src/fba-app/dialog-confirm/index.tsx","@flatbiz/antd/src/fba-app/dialog-alert/index.tsx","@flatbiz/antd/src/fba-app/dialog-drawer/context.ts","@flatbiz/antd/src/fba-app/dialog-drawer/index.tsx","@flatbiz/antd/src/fba-app/dialog-loading/index.tsx","@flatbiz/antd/src/fba-app/fba-app.tsx","@flatbiz/antd/src/fba-app/index.ts"],"sourcesContent":["import { createContext } from 'react';\nimport { FbaAppAlertProps } from './dialog-alert';\nimport { FbaAppConfirmProps } from './dialog-confirm';\nimport { FbaAppDrawerProps } from './dialog-drawer';\nimport { FbaAppLoadingProps } from './dialog-loading';\nimport { FbaAppModalProps } from './dialog-modal';\n\nexport type FbaAppContextApi = {\n dialogDrawerOpen?: (data: FbaAppDrawerProps) => void;\n dialogDrawerClose?: (e?) => void;\n\n dialogDrawerOpen2?: (data: FbaAppDrawerProps) => void;\n dialogDrawerClose2?: (e?) => void;\n\n dialogModalOpen?: (data: FbaAppModalProps) => void;\n dialogModalClose?: () => void;\n\n dialogModalOpen2?: (data: FbaAppModalProps) => void;\n dialogModalClose2?: () => void;\n\n dialogAlertOpen?: (data: FbaAppAlertProps) => void;\n dialogAlertClose?: () => void;\n\n dialogConfirmOpen?: (data: FbaAppConfirmProps) => void;\n dialogConfirmClose?: () => void;\n\n dialogLoadingOpen?: (data?: FbaAppLoadingProps & { open?: boolean }) => void;\n dialogLoadingClose?: () => void;\n};\n\nexport const FbaAppContext = createContext<FbaAppContextApi>({});\n","import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useFbaAppDialogModalCtx, CtxProvider] = createCtx<{\n /** 重新渲染footer */\n rerenderFooter: (data?: TPlainObject) => void;\n}>();\n","import { isPromise } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\n\nimport { TNoopDefine, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Form, FormInstance, Modal, ModalProps } from 'antd';\nimport { ReactElement, useMemo, useState } from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { FlexLayout } from '../../flex-layout';\nimport { getFbaLocaleMessage } from '../../_utils/i18n';\nimport { CtxProvider } from './context';\nimport './style.less';\n\nexport type FbaAppModalProps = Omit<\n ModalProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'okButtonProps' | 'cancelButtonProps' | 'footer'\n> & {\n /**\n * 内置尺寸,根据比例固定高度、宽度\n * ```\n * 1. 如果自定义了width、bodyHeight属性,size中的height、width将对应失效\n * 2. 不传、传null值可取消内置尺寸\n * ```\n */\n size?: 'small' | 'middle' | 'large' | null;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onClose?: () => void;\n /**\n * content只在第一次弹起时,执行一次\n */\n content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine }) => ReactElement);\n okHidden?: boolean;\n cancelHidden?: boolean;\n okButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n cancelButtonProps?: Omit<ButtonWrapperProps, 'hidden' | 'children' | 'onClick'>;\n /**\n * 设置modal body height 为当前窗口height的百分比,例如:30\n * @deprecated 已失效,可通过size属性设置\n * ```\n * 1. 最大值:80\n * 1. 设置bodyStyle.height 后,bodyHeightPercent失效\n * ```\n */\n bodyHeightPercent?: number;\n\n titleExtra?: ReactElement;\n /**\n * null则隐藏footer\n * ```\n * extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据\n * ```\n */\n footer?:\n | null\n | ReactElement\n | ReactElement[]\n | ((form: FormInstance, extraData?: TPlainObject) => ReactElement);\n /** 内容高度,为styles.body.height快捷配置,优先级低于styles.body.height */\n bodyHeight?: number;\n};\n\nexport const FbaAppModal = (props: FbaAppModalProps) => {\n const {\n titleExtra,\n title,\n onOk,\n onCancel,\n okButtonProps,\n cancelButtonProps,\n content,\n className,\n okHidden,\n cancelHidden,\n footer,\n cancelText,\n okText,\n size,\n bodyHeight,\n ...otherProps\n } = props;\n const [form] = Form.useForm();\n const htmlSize = useSize(document.querySelector('html'));\n const localMessage = getFbaLocaleMessage();\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const [footerExtraData, setFooterExtraData] = useState<TPlainObject>({});\n\n const onClose = hooks.useCallbackRef(() => {\n props.onClose?.();\n });\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 onClose();\n return Promise.resolve();\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 onClose();\n return Promise.resolve();\n });\n\n const footerNew = fbaHooks.useMemoCustom(() => {\n if (footer) {\n return typeof footer === 'function' ? footer(form, footerExtraData) : footer;\n }\n if ((cancelHidden && okHidden) || footer === null) {\n return null;\n }\n return [\n <ButtonWrapper key=\"0\" {...cancelButtonProps} onClick={onCancelHandle} hidden={cancelHidden}>\n {cancelText || localMessage.FbaDialogModal?.cancelText}\n </ButtonWrapper>,\n <ButtonWrapper key=\"1\" type=\"primary\" {...okButtonProps} onClick={onOkHandle} hidden={okHidden}>\n {okText || '提交'}\n </ButtonWrapper>,\n ].filter(Boolean);\n }, [footerExtraData, props.open]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n if (isXsSm) {\n return { width: '90%' };\n }\n if (size == 'large') {\n return {\n height: htmlSize?.height * 0.7,\n width: isXsSm ? '90%' : htmlSize.width * 0.6,\n };\n }\n if (size == 'small') {\n const width = htmlSize.width * 0.3;\n return {\n height: htmlSize?.height * 0.4,\n width: isXsSm ? '90%' : width < 470 ? 470 : width,\n };\n }\n\n if (size == 'middle') {\n return {\n height: htmlSize?.height * 0.5,\n width: isXsSm ? '90%' : htmlSize.width * 0.5,\n };\n }\n\n return undefined;\n }, [htmlSize?.height, htmlSize?.width, screenType, size]);\n\n const classNameNew = classNames(\n 'fba-dialog-modal',\n { 'fba-dialog-modal-title-extra': !!titleExtra },\n { 'fba-dialog-modal-footer-empty': !footerNew },\n className,\n );\n\n const rerenderFooter = (data) => {\n setFooterExtraData(data);\n };\n\n const bodyHeightNew = otherProps.styles?.body?.height || bodyHeight;\n\n // content 只会在第一次渲染\n const contentFt = useMemo(() => {\n return typeof content === 'function' ? content(form, { onClose }) : content;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.open]);\n\n return (\n <CtxProvider value={{ rerenderFooter }}>\n <Modal\n maskClosable={true}\n title={\n titleExtra ? (\n <FlexLayout direction=\"horizontal\" fullIndex={0}>\n <span>{title}</span>\n {titleExtra}\n </FlexLayout>\n ) : (\n title\n )\n }\n centered={true}\n onCancel={onClose}\n destroyOnClose\n width={customSize?.width}\n {...otherProps}\n footer={footerNew}\n styles={{\n ...otherProps.styles,\n body: {\n height: bodyHeightNew || customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n ...otherProps.styles?.body,\n },\n }}\n className={classNameNew}\n open={props.open}\n >\n {contentFt}\n </Modal>\n </CtxProvider>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { FbaAppModal, FbaAppModalProps } from '../dialog-modal';\nimport './style.less';\n\nexport type FbaAppConfirmProps = FbaAppModalProps;\n\nexport const FbaAppConfirm = (props: FbaAppConfirmProps) => {\n const className = classNames('fba-dialog-confirm', props.className);\n return (\n <FbaAppModal\n okText=\"确定\"\n size={null}\n width={350}\n cancelText=\"取消\"\n maskClosable={true}\n {...props}\n className={className}\n />\n );\n};\n","import { FbaAppConfirm } from '../dialog-confirm';\nimport { FbaAppModalProps } from '../dialog-modal';\n\n// export type DialogAlertProps = Omit<\n// DialogModalProps,\n// 'onOk' | 'cancelHidden' | 'cancelButtonProps' | 'onCancel' | 'onClick'\n// > & {\n// onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n// };\n\n// export const dialogAlert = {\n// open: (props: DialogAlertProps) => {\n// return dialogConfirm.open({\n// okText: '确定',\n// cancelHidden: true,\n// maskClosable: false,\n// ...props,\n// onOk: props.onClick,\n// } as DialogModalProps);\n// },\n// };\n\nexport type FbaAppAlertProps = Omit<\n FbaAppModalProps,\n 'onOk' | 'cancelHidden' | 'cancelButtonProps' | 'onCancel' | 'onClick'\n> & {\n onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n};\n\nexport const FbaAppAlert = (props: FbaAppAlertProps) => {\n return (\n <FbaAppConfirm\n okText=\"确定\"\n cancelHidden={true}\n maskClosable={false}\n {...props}\n onOk={(_form, e) => {\n return props.onClick?.(e);\n }}\n />\n );\n};\n","import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useFbaAppDialogDrawerCtx, CtxProvider] = createCtx<{\n /** 重新渲染footer */\n rerenderFooter: (data?: TPlainObject) => void;\n}>();\n","import { isPromise } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Drawer, DrawerProps, Form, FormInstance, Space } from 'antd';\nimport { ReactElement, ReactNode, useMemo, useState } from 'react';\nimport { ButtonWrapper, ButtonWrapperProps } from '../../button-wrapper';\nimport { fbaHooks } from '../../fba-hooks';\nimport { CtxProvider } from './context';\nimport './style.less';\n\nexport type FbaAppDrawerProps = Omit<\n DrawerProps,\n 'onOk' | 'onCancel' | 'getContainer' | 'footer' | 'extra'\n> & {\n okText?: string | ReactElement;\n cancelText?: string | ReactElement;\n onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>;\n /**\n * content只在第一次弹起时,执行一次\n */\n content:\n | string\n | ReactElement\n | ((form: FormInstance, operate: { onClose: DrawerProps['onClose'] }) => ReactElement);\n okButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children' | 'loading'>;\n cancelButtonExtraProps?: Omit<ButtonWrapperProps, 'onClick' | 'children'>;\n okHidden?: boolean;\n cancelHidden?: boolean;\n\n /** 设置操作区域位置 */\n operatePosition?: 'header' | 'footer';\n /** 右上角自定义内容,如果operatePosition=header,此设置无效 */\n extra?: ReactNode | ((form: FormInstance) => ReactElement);\n /**\n * ```\n * 1. 自定义弹框操作区域,通过 operatePosition 配置可以自定义位置\n * 2. extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据\n * ```\n */\n operateRender?: (form: FormInstance, extraData?: TPlainObject) => ReactElement;\n};\n\nexport const FbaAppDrawer = (props: FbaAppDrawerProps) => {\n const {\n onOk,\n onCancel,\n content,\n okText,\n cancelText,\n okButtonExtraProps,\n cancelButtonExtraProps,\n operatePosition = 'footer',\n operateRender,\n width,\n okHidden,\n cancelHidden,\n extra,\n ...otherProps\n } = props;\n const [form] = Form.useForm();\n const screenType = fbaHooks.useResponsivePoint() || '';\n const [footerExtraData, setFooterExtraData] = useState<TPlainObject>({});\n\n const onClose = hooks.useCallbackRef((e) => {\n props.onClose?.(e);\n });\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 onClose(e);\n return Promise.resolve();\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 onClose(e);\n return Promise.resolve();\n });\n\n const newOperateRender = fbaHooks.useMemoCustom(() => {\n if (operateRender) {\n return operateRender(form, footerExtraData);\n }\n\n const okHiddenNew = okHidden || okButtonExtraProps?.hidden;\n const cancelHiddenNew = okHidden || okButtonExtraProps?.hidden;\n\n const operateGroup = (\n <Space>\n {cancelHiddenNew ? null : (\n <ButtonWrapper {...cancelButtonExtraProps} onClick={onCancelHandle}>\n {cancelText || '取消'}\n </ButtonWrapper>\n )}\n {okHiddenNew ? null : (\n <ButtonWrapper type=\"primary\" {...okButtonExtraProps} onClick={onOkHandle}>\n {okText || '提交'}\n </ButtonWrapper>\n )}\n </Space>\n );\n if (!okHidden || !cancelHidden) {\n return operateGroup;\n }\n return null;\n }, [footerExtraData, props.open]);\n\n const customSize = useMemo(() => {\n if (!screenType) return undefined;\n if (['xs', 'sm'].includes(screenType)) {\n return {\n width: '90%',\n maxWidth: '90%',\n };\n }\n if (width) {\n return { width: width, maxWidth: 'calc(100% - 200px)' };\n }\n return { width: '40%', maxWidth: 'calc(100% - 200px)' };\n }, [screenType, width]);\n\n const extraRender = typeof extra === 'function' ? extra(form) : extra;\n\n const rerenderFooter = (data) => {\n setFooterExtraData(data);\n };\n\n // content 只会在第一次渲染\n const contentFt = useMemo(() => {\n return typeof content === 'function' ? content(form, { onClose }) : content;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [props.open]);\n\n return (\n <CtxProvider value={{ rerenderFooter }}>\n <Drawer\n maskClosable={true}\n destroyOnClose\n // 5.13.0 新增 styles.wrapper,并废弃 contentWrapperStyle drawerStyle maskStyle 属性\n contentWrapperStyle={{ maxWidth: customSize?.maxWidth }}\n footer={operatePosition === 'footer' ? newOperateRender : null}\n {...otherProps}\n width={customSize?.width}\n styles={{\n ...otherProps.styles,\n // wrapper: {\n // maxWidth: customSize?.maxWidth,\n // ...otherProps.styles?.wrapper,\n // },\n }}\n className={classNames('app-dialog-drawer', otherProps.className)}\n extra={operatePosition === 'header' ? newOperateRender : extraRender}\n open={props.open}\n onClose={onClose}\n >\n {contentFt}\n </Drawer>\n </CtxProvider>\n );\n};\n","import { classNames } from '@dimjs/utils';\nimport { Modal, theme } from 'antd';\nimport { CSSProperties } from 'react';\nimport { BlockLayout } from '../../block-layout';\nimport './style.less';\n\nexport type FbaAppLoadingProps = {\n className?: string;\n message?: string;\n mask?: boolean;\n};\n\nexport const FbaAppLoading = (props: FbaAppLoadingProps & { open?: boolean }) => {\n const { className, message, mask } = props;\n const { token } = theme.useToken();\n const colorPrimary = token.colorPrimary;\n\n return (\n <Modal\n maskClosable={false}\n centered={true}\n destroyOnClose\n className={classNames('fba-dialog-loading', className)}\n open={props.open}\n footer={null}\n closable={false}\n style={{ '--fba-loading-color': colorPrimary } as CSSProperties}\n mask={mask}\n >\n <BlockLayout className={classNames('fba-dialog-loading-content')}>\n <div className=\"loader-wrapper\">\n <div className=\"loader-inner\" />\n <div className=\"loader-text\">{message || '处理中'}</div>\n </div>\n </BlockLayout>\n </Modal>\n );\n};\n","import { getUuid, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { ReactNode, useContext, useState } from 'react';\nimport { FbaAppContext, FbaAppContextApi } from './context';\nimport { FbaAppAlert, FbaAppAlertProps } from './dialog-alert';\nimport { FbaAppConfirm, FbaAppConfirmProps } from './dialog-confirm';\nimport { FbaAppDrawer, FbaAppDrawerProps } from './dialog-drawer';\nimport { useFbaAppDialogDrawerCtx } from './dialog-drawer/context';\nimport { FbaAppLoading, FbaAppLoadingProps } from './dialog-loading';\nimport { FbaAppModal, FbaAppModalProps } from './dialog-modal';\nimport { useFbaAppDialogModalCtx } from './dialog-modal/context';\n\n/**\n * 不支持多个弹框,第二个弹框可使用useDialogDrawer2\n */\nexport const useDialogDrawer = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogDrawerClose?.();\n };\n\n return {\n appDialogDrawer: {\n open: (data: FbaAppDrawerProps) => {\n ctx.dialogDrawerOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n /**\n * ```\n * 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n * ```\n */\n useAppDialogDrawer: () => {\n const ctx = useFbaAppDialogDrawerCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n },\n };\n};\n\n/**\n * 不支持多个弹框,第二个弹框可使用useDialogDrawer2\n */\nexport const useDialogDrawer2 = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogDrawerClose2?.();\n };\n\n return {\n appDialogDrawer2: {\n open: (data: FbaAppDrawerProps) => {\n ctx.dialogDrawerOpen2?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n /**\n * ```\n * 1. rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n * ```\n */\n useAppDialogDrawer: () => {\n const ctx = useFbaAppDialogDrawerCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n },\n };\n};\n\n/**\n * 不支持多个弹框,第二个弹框可使用useDialogModal2\n * ```\n * 1. 配置size属性可使用预设的弹窗尺寸,如果不使用内置尺寸可设置 size = null\n * ```\n */\nexport const useDialogModal = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogModalClose?.();\n };\n\n return {\n appDialogModal: {\n open: (data: FbaAppModalProps) => {\n ctx.dialogModalOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n /**\n * rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n */\n useAppDialogModal: () => {\n const ctx = useFbaAppDialogModalCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n },\n };\n};\n\n/**\n * 不支持多个弹框\n * ```\n * 1. 配置size属性可使用预设的弹窗尺寸,如果不使用内置尺寸可设置 size = null\n * ```\n */\nexport const useDialogModal2 = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogModalClose2?.();\n };\n\n return {\n appDialogModal2: {\n open: (data: FbaAppModalProps) => {\n ctx.dialogModalOpen2?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n /**\n * rerenderFooter 携带指定数据重新渲染 footer,可用于切换footer中的按钮状态\n */\n useAppDialogModal: () => {\n const ctx = useFbaAppDialogModalCtx();\n return {\n /** 重新渲染 footer, data为携带的数据,是footer的第二个参数 */\n rerenderFooter: (data?: TPlainObject) => {\n ctx.rerenderFooter(data);\n },\n };\n },\n },\n };\n};\n\n/**\n * 不支持多个弹框\n * @returns\n */\nexport const useDialogAlert = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogAlertClose?.();\n };\n\n return {\n appDialogAlert: {\n open: (data: FbaAppAlertProps) => {\n ctx.dialogAlertOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n },\n };\n};\n/**\n * 不支持多个弹框\n * @returns\n */\nexport const useDialogConfirm = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogConfirmClose?.();\n };\n\n return {\n appDialogConfirm: {\n open: (data: FbaAppConfirmProps) => {\n ctx.dialogConfirmOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n },\n };\n};\n/**\n * 不支持多个弹框\n * @returns\n */\nexport const useDialogLoading = () => {\n const ctx = useContext(FbaAppContext);\n\n const onClose = () => {\n ctx.dialogLoadingClose?.();\n };\n\n return {\n appDialogLoading: {\n open: (data?: FbaAppLoadingProps) => {\n ctx.dialogLoadingOpen?.({ ...data, open: true });\n return { onClose };\n },\n close: onClose,\n },\n };\n};\n\nexport const FbaApp = (props: { children: ReactNode }) => {\n const [drawerProps, setDrawerProps] = useState<FbaAppDrawerProps>({} as FbaAppDrawerProps);\n const [drawerKey, setDrawerKey] = useState(getUuid());\n\n const [drawerProps2, setDrawerProps2] = useState<FbaAppDrawerProps>({} as FbaAppDrawerProps);\n const [drawerKey2, setDrawerKey2] = useState(getUuid());\n\n const [modalProps, setModalProps] = useState<FbaAppModalProps>({} as FbaAppModalProps);\n const [modalKey, setModalKey] = useState(getUuid());\n\n const [modalProps2, setModalProps2] = useState<FbaAppModalProps>({} as FbaAppModalProps);\n const [modalKey2, setModalKey2] = useState(getUuid());\n\n const [alertProps, setAlertProps] = useState<FbaAppAlertProps>({} as FbaAppAlertProps);\n const [confirmProps, setConfirmProps] = useState<FbaAppConfirmProps>({} as FbaAppConfirmProps);\n const [loadingProps, setLoadingProps] = useState<FbaAppLoadingProps>();\n\n const [alertKey, setAlertKey] = useState(getUuid());\n const [confirmKey, setConfirmKey] = useState(getUuid());\n const [loadingKey, setLoadingKey] = useState(getUuid());\n\n const dialogDrawerOpen: FbaAppContextApi['dialogDrawerOpen'] = hooks.useCallbackRef((data) => {\n setDrawerProps(data);\n });\n const dialogDrawerClose = hooks.useCallbackRef((e) => {\n setDrawerProps({ ...drawerProps, open: false } as FbaAppDrawerProps);\n drawerProps.onClose?.(e);\n setTimeout(() => {\n setDrawerKey(getUuid());\n }, 200);\n });\n\n const dialogDrawerOpen2: FbaAppContextApi['dialogDrawerOpen2'] = hooks.useCallbackRef((data) => {\n setDrawerProps2(data);\n });\n\n const dialogDrawerClose2 = hooks.useCallbackRef((e) => {\n setDrawerProps2({ ...drawerProps2, open: false } as FbaAppDrawerProps);\n drawerProps2.onClose?.(e);\n setTimeout(() => {\n setDrawerKey2(getUuid());\n }, 200);\n });\n\n const dialogModalOpen: FbaAppContextApi['dialogModalOpen'] = hooks.useCallbackRef((data) => {\n setModalProps(data);\n });\n\n const dialogModalClose = hooks.useCallbackRef(() => {\n setModalProps({ ...modalProps, open: false } as FbaAppModalProps);\n modalProps.onClose?.();\n setTimeout(() => {\n setModalKey(getUuid());\n }, 200);\n });\n\n const dialogModalOpen2: FbaAppContextApi['dialogModalOpen2'] = hooks.useCallbackRef((data) => {\n setModalProps2(data);\n });\n\n const dialogModalClose2 = hooks.useCallbackRef(() => {\n setModalProps2({ ...modalProps2, open: false } as FbaAppModalProps);\n modalProps2.onClose?.();\n setTimeout(() => {\n setModalKey2(getUuid());\n }, 200);\n });\n\n const dialogAlertOpen: FbaAppContextApi['dialogAlertOpen'] = hooks.useCallbackRef((data) => {\n setAlertProps(data);\n });\n\n const dialogAlertClose = hooks.useCallbackRef(() => {\n setAlertProps({ ...alertProps, open: false } as FbaAppAlertProps);\n alertProps.onClose?.();\n setTimeout(() => {\n setAlertKey(getUuid());\n }, 200);\n });\n\n const dialogConfirmOpen: FbaAppContextApi['dialogConfirmOpen'] = hooks.useCallbackRef((data) => {\n setConfirmProps(data);\n });\n\n const dialogConfirmClose = hooks.useCallbackRef(() => {\n setConfirmProps({ ...confirmProps, open: false } as FbaAppConfirmProps);\n confirmProps.onClose?.();\n setTimeout(() => {\n setConfirmKey(getUuid());\n }, 200);\n });\n\n const dialogLoadingOpen: FbaAppContextApi['dialogLoadingOpen'] = hooks.useCallbackRef((data) => {\n setLoadingProps(data);\n });\n\n const dialogLoadingClose = hooks.useCallbackRef(() => {\n setLoadingProps({ ...loadingProps, open: false } as FbaAppLoadingProps);\n setTimeout(() => {\n setLoadingKey(getUuid());\n }, 200);\n });\n\n return (\n <FbaAppContext.Provider\n value={{\n dialogDrawerOpen,\n dialogDrawerClose,\n dialogDrawerOpen2,\n dialogDrawerClose2,\n dialogModalOpen,\n dialogModalClose,\n dialogModalOpen2,\n dialogModalClose2,\n dialogAlertOpen,\n dialogAlertClose,\n dialogConfirmOpen,\n dialogConfirmClose,\n dialogLoadingOpen,\n dialogLoadingClose,\n }}\n >\n <FbaAppDrawer {...drawerProps} onClose={dialogDrawerClose} key={drawerKey}></FbaAppDrawer>\n <FbaAppDrawer {...drawerProps2} onClose={dialogDrawerClose2} key={drawerKey2}></FbaAppDrawer>\n <FbaAppModal {...modalProps} onClose={dialogModalClose} key={modalKey}></FbaAppModal>\n <FbaAppModal {...modalProps2} onClose={dialogModalClose2} key={modalKey2}></FbaAppModal>\n <FbaAppAlert {...alertProps} onClose={dialogAlertClose} key={alertKey}></FbaAppAlert>\n <FbaAppConfirm {...confirmProps} onClose={dialogConfirmClose} key={confirmKey}></FbaAppConfirm>\n <FbaAppLoading {...loadingProps} key={loadingKey}></FbaAppLoading>\n {props.children}\n </FbaAppContext.Provider>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport {\n FbaApp as FbaAppInner,\n useDialogAlert,\n useDialogConfirm,\n useDialogDrawer,\n useDialogDrawer2,\n useDialogLoading,\n useDialogModal,\n useDialogModal2,\n} from './fba-app';\n\nexport const FbaApp = fbaUtils.attachPropertiesToComponent(FbaAppInner, {\n /** 不支持多次弹框,第二个弹框可使用useDialogDrawer2 */\n useDialogDrawer,\n useDialogDrawer2,\n /** 不支持多次弹框,第二个弹框可使用useDialogModal2 */\n useDialogModal,\n useDialogModal2,\n /** 不支持多次弹框 */\n useDialogConfirm,\n /** 不支持多次弹框 */\n useDialogAlert,\n /** 不支持多次弹框 */\n useDialogLoading,\n});\n"],"names":["FbaAppContext","createContext","_createCtx","_createCtx2","useFbaAppDialogModalCtx","CtxProvider","FbaAppModal","props","_otherProps$styles","_otherProps$styles2","titleExtra","title","onOk","onCancel","okButtonProps","cancelButtonProps","content","className","okHidden","cancelHidden","footer","cancelText","okText","size","bodyHeight","otherProps","_objectWithoutPropertiesLoose","_excluded","_Form$useForm","Form","useForm","form","htmlSize","useSize","document","querySelector","localMessage","getFbaLocaleMessage","screenType","fbaHooks","useResponsivePoint","_useState","useState","footerExtraData","setFooterExtraData","onClose","_hooks","useCallbackRef","onCancelHandle","e","response","_isPromise","then","Promise","resolve","onOkHandle","footerNew","useMemoCustom","_localMessage$FbaDial","_jsx","ButtonWrapper","_extends","onClick","hidden","children","FbaDialogModal","type","filter","Boolean","open","customSize","useMemo","height","undefined","isXsSm","includes","width","classNameNew","_classNames","rerenderFooter","data","bodyHeightNew","styles","body","contentFt","value","Modal","maskClosable","_jsxs","FlexLayout","direction","fullIndex","centered","destroyOnClose","maxHeight","FbaAppConfirm","FbaAppAlert","_form","useFbaAppDialogDrawerCtx","FbaAppDrawer","okButtonExtraProps","cancelButtonExtraProps","_props$operatePositio","operatePosition","operateRender","extra","newOperateRender","okHiddenNew","cancelHiddenNew","operateGroup","Space","maxWidth","extraRender","Drawer","contentWrapperStyle","FbaAppLoading","message","mask","_theme$useToken","theme","useToken","token","colorPrimary","closable","style","BlockLayout","useDialogDrawer","ctx","useContext","dialogDrawerClose","appDialogDrawer","dialogDrawerOpen","close","useAppDialogDrawer","useDialogDrawer2","dialogDrawerClose2","appDialogDrawer2","dialogDrawerOpen2","useDialogModal","dialogModalClose","appDialogModal","dialogModalOpen","useAppDialogModal","useDialogModal2","dialogModalClose2","appDialogModal2","dialogModalOpen2","useDialogAlert","dialogAlertClose","appDialogAlert","dialogAlertOpen","useDialogConfirm","dialogConfirmClose","appDialogConfirm","dialogConfirmOpen","useDialogLoading","dialogLoadingClose","appDialogLoading","dialogLoadingOpen","FbaApp","drawerProps","setDrawerProps","_useState2","getUuid","drawerKey","setDrawerKey","_useState3","drawerProps2","setDrawerProps2","_useState4","drawerKey2","setDrawerKey2","_useState5","modalProps","setModalProps","_useState6","modalKey","setModalKey","_useState7","modalProps2","setModalProps2","_useState8","modalKey2","setModalKey2","_useState9","alertProps","setAlertProps","_useState0","confirmProps","setConfirmProps","_useState1","loadingProps","setLoadingProps","_useState10","alertKey","setAlertKey","_useState11","confirmKey","setConfirmKey","_useState12","loadingKey","setLoadingKey","setTimeout","Provider","_createElement","key","fbaUtils","attachPropertiesToComponent","FbaAppInner"],"mappings":"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"}
|
package/esm/index.js
CHANGED
|
@@ -77,9 +77,7 @@ import './drawer-wrapper/index.css';
|
|
|
77
77
|
import './dropdown-menu-wrapper/index.css';
|
|
78
78
|
import './dynamic-node/index.css';
|
|
79
79
|
import './easy-table/index.css';
|
|
80
|
-
import './pagination-wrapper/index.css';
|
|
81
80
|
import './form-grid/index.css';
|
|
82
|
-
import './table-scrollbar/index.css';
|
|
83
81
|
import './svg-http-view/index.css';
|
|
84
82
|
import './table-title-tooltip/index.css';
|
|
85
83
|
import './editable-field/index.css';
|
|
@@ -106,6 +104,7 @@ import './modal-wrapper/index.css';
|
|
|
106
104
|
import './number-range-form-item/index.css';
|
|
107
105
|
import './page-fixed-footer/index.css';
|
|
108
106
|
import './page404/index.css';
|
|
107
|
+
import './pagination-wrapper/index.css';
|
|
109
108
|
import './pdf/index.css';
|
|
110
109
|
import './pdf-preview/index.css';
|
|
111
110
|
import './roll-location-in-view/index.css';
|
|
@@ -127,6 +126,7 @@ import './sms-count-down/index.css';
|
|
|
127
126
|
import './split-wrapper/index.css';
|
|
128
127
|
import './styles/index.css';
|
|
129
128
|
import './switch-confirm-wrapper/index.css';
|
|
129
|
+
import './table-scrollbar/index.css';
|
|
130
130
|
import './tabs-sticky/index.css';
|
|
131
131
|
import './tabs-wrapper/index.css';
|
|
132
132
|
import './tag-group/index.css';
|
package/index.d.ts
CHANGED
|
@@ -2571,9 +2571,11 @@ export interface EditableTableProOperation {
|
|
|
2571
2571
|
/** 当前行表单验证,需要自行指定nameList(dataIndex数组) */
|
|
2572
2572
|
validateRowFields: (nameList: EditableTableProDataIndex[]) => Promise<void>;
|
|
2573
2573
|
}
|
|
2574
|
-
export type EditableTableProColumnItem = Omit<ColumnsType[0], "render" | "title" | "dataIndex"> & {
|
|
2574
|
+
export type EditableTableProColumnItem = Omit<ColumnsType[0], "render" | "title" | "dataIndex" | "hidden"> & {
|
|
2575
2575
|
title?: ReactElement | string;
|
|
2576
2576
|
dataIndex?: EditableTableProDataIndex;
|
|
2577
|
+
/** 是否隐藏 */
|
|
2578
|
+
hidden?: boolean;
|
|
2577
2579
|
/** Form.Item props */
|
|
2578
2580
|
formItemProps?: Omit<FormItemWrapperProps, "children" | "name"> | ((value: TAny, record: TPlainObject, index: number, operation: EditableTableProOperation) => Omit<FormItemWrapperProps, "children" | "name">);
|
|
2579
2581
|
/**
|
|
@@ -3045,15 +3047,21 @@ export type TEasyTableTableColumn<T> = ColumnsType<T>[0] & {
|
|
|
3045
3047
|
* 3. respData为异步返回数据
|
|
3046
3048
|
* ```
|
|
3047
3049
|
*/
|
|
3048
|
-
asyncRender?: (value: TAny, record: T, index: number, respData?: TAny) =>
|
|
3049
|
-
/**
|
|
3050
|
+
asyncRender?: (value: TAny, record: T, index: number, respData?: TAny) => ReactNode;
|
|
3051
|
+
/** 设置默认值,当数据为【undefined、null、''】时显示;自定义render后失效 */
|
|
3050
3052
|
defaultValue?: string;
|
|
3051
3053
|
};
|
|
3052
3054
|
export type EasyTableServiceConfig = {
|
|
3053
3055
|
/** 接口配置 */
|
|
3054
3056
|
onRequest: (params?: TPlainObject) => Promise<TPlainObject | TPlainObject[]>;
|
|
3055
|
-
/**
|
|
3056
|
-
|
|
3057
|
+
/**
|
|
3058
|
+
* 请求参数处理
|
|
3059
|
+
* ```
|
|
3060
|
+
* 1. params: 请求参数(requestParamsInternalAdapter 处理后,即值为空字符串、null、undefined 的key值直接删除、以`__#invalid_`开头的key值直接删除)
|
|
3061
|
+
* 2. originalParams: 原始请求参数
|
|
3062
|
+
* ```
|
|
3063
|
+
*/
|
|
3064
|
+
requestParamsAdapter?: (params: TPlainObject, originalParams: TPlainObject) => TPlainObject;
|
|
3057
3065
|
/**
|
|
3058
3066
|
* 接口相应数据处理
|
|
3059
3067
|
* ```
|
|
@@ -3225,16 +3233,24 @@ export type EasyTableProps = {
|
|
|
3225
3233
|
/**
|
|
3226
3234
|
* 指定查询条件验证的formItemKeys,设置后条件回车查询事件失效
|
|
3227
3235
|
* ```
|
|
3228
|
-
* 1. 当EasyTable处在Form
|
|
3236
|
+
* 1. 当EasyTable处在Form内部时,设置此函数可控制验证字段、控制获取数据
|
|
3229
3237
|
* ```
|
|
3230
3238
|
*/
|
|
3231
3239
|
filterFormItemKeys?: string[];
|
|
3240
|
+
/** 移除请求参数中值为空字符串、null、undefined 的key值,默认值:true */
|
|
3241
|
+
removeRequestParamsEmptyValue?: boolean;
|
|
3232
3242
|
};
|
|
3233
3243
|
export type EasyTableRefApi = {
|
|
3234
3244
|
/** 外部发起请求服务 */
|
|
3235
3245
|
onRequest: (params?: TPlainObject) => void;
|
|
3236
|
-
/**
|
|
3246
|
+
/**
|
|
3247
|
+
* 实时输入的请求参数
|
|
3248
|
+
*/
|
|
3237
3249
|
getRequestParams: () => TPlainObject;
|
|
3250
|
+
/**
|
|
3251
|
+
* 获取提交查询的请求参数
|
|
3252
|
+
*/
|
|
3253
|
+
getSubmitParams: () => TPlainObject;
|
|
3238
3254
|
/**
|
|
3239
3255
|
* 清除Form查询条件
|
|
3240
3256
|
* ```
|
|
@@ -3254,13 +3270,15 @@ export type EasyTableRefApi = {
|
|
|
3254
3270
|
*/
|
|
3255
3271
|
dataSource: TAny;
|
|
3256
3272
|
/**
|
|
3257
|
-
*
|
|
3273
|
+
* 接口数据源,完整的接口数据
|
|
3258
3274
|
* ```
|
|
3259
3275
|
* 1. 每次获取到的都是新的实例
|
|
3260
3276
|
* 2. 可使用 easyTableRefApi.dataSource,获取不变实例
|
|
3261
3277
|
* ```
|
|
3262
3278
|
*/
|
|
3263
3279
|
getDataSource: () => TAny;
|
|
3280
|
+
/** 获取表格列表数据 */
|
|
3281
|
+
getTableDataList: () => TPlainObject[];
|
|
3264
3282
|
/** 过滤表格数据源,不会触发 onDataSourceChange 函数 */
|
|
3265
3283
|
onFilterDataSource: (dataSource: TPlainObject[]) => void;
|
|
3266
3284
|
/** 清空表格数据 */
|
|
@@ -3385,7 +3403,7 @@ export type EasyTableTableProps<T> = Omit<TableProps<TAny>, "dataSource" | "load
|
|
|
3385
3403
|
emptyShowSize?: "small" | "large";
|
|
3386
3404
|
/** 标题 */
|
|
3387
3405
|
title?: ReactNode;
|
|
3388
|
-
/**
|
|
3406
|
+
/** 与标题对齐的动作 */
|
|
3389
3407
|
actions?: ReactElement[];
|
|
3390
3408
|
};
|
|
3391
3409
|
/**
|