@flatbiz/antd 4.5.32 → 4.5.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/esm/box-grid/index.js.map +1 -1
  2. package/esm/button-operate/index.js +1 -1
  3. package/esm/button-operate/index.js.map +1 -1
  4. package/esm/cascader-wrapper/index.js +1 -1
  5. package/esm/cascader-wrapper/index.js.map +1 -1
  6. package/esm/dropdown-menu-wrapper/index.js.map +1 -1
  7. package/esm/easy-form/index.js +1 -1
  8. package/esm/easy-form/index.js.map +1 -1
  9. package/esm/easy-table/index.js +1 -1
  10. package/esm/easy-table/index.js.map +1 -1
  11. package/esm/index.js +2 -1
  12. package/esm/label-value-render/index.css +1 -1
  13. package/esm/label-value-render/index.js +1 -1
  14. package/esm/label-value-render/index.js.map +1 -1
  15. package/esm/radio-group-wrapper/index.js +1 -1
  16. package/esm/radio-group-wrapper/index.js.map +1 -1
  17. package/esm/selector-wrapper/index.js +1 -1
  18. package/esm/selector-wrapper/index.js.map +1 -1
  19. package/esm/selector-wrapper-search/index.js +1 -1
  20. package/esm/selector-wrapper-search/index.js.map +1 -1
  21. package/esm/selector-wrapper-simple/index.js +1 -1
  22. package/esm/selector-wrapper-simple/index.js.map +1 -1
  23. package/esm/styles/index.css +1 -1
  24. package/esm/table-cell-render/index.js +1 -1
  25. package/esm/table-cell-render/index.js.map +1 -1
  26. package/esm/tabs-sticky/index.css +1 -0
  27. package/esm/tabs-sticky/index.js +5 -0
  28. package/esm/tabs-sticky/index.js.map +1 -0
  29. package/esm/tree-modal/index.js +1 -1
  30. package/esm/tree-modal/index.js.map +1 -1
  31. package/esm/tree-modal-selector/index.js +1 -1
  32. package/esm/tree-modal-selector/index.js.map +1 -1
  33. package/esm/tree-selector-wrapper/index.js +1 -1
  34. package/esm/tree-selector-wrapper/index.js.map +1 -1
  35. package/esm/tree-wrapper/index.js +1 -1
  36. package/esm/tree-wrapper/index.js.map +1 -1
  37. package/index.d.ts +57 -23
  38. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/table-cell-render/cell-render.tsx"],"sourcesContent":["import { isEmpty, isObject, isPlainObject, isString } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport {\n cutString,\n DateFormatType,\n flatbizDate,\n flatbizPrice,\n getStrByteLen,\n isNumber,\n isUndefinedOrNull,\n TAny,\n TPlainObject,\n} from '@flatbiz/utils';\nimport { Badge, Space, Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonOperate, ButtonOperateProps } from '../button-operate';\nimport { TagListRender } from '../tag-list-render';\nimport { TagListSelectProps, TagListSelectValue } from '../tag-list-select';\nimport './style.less';\n\nconst tableColumnTooltipRender = (showMaxNumber?: number, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n if (isNumber(value)) return value;\n const colunmText = value.toString();\n const maxNumber = (isUndefinedOrNull(showMaxNumber) ? 10 : showMaxNumber) as number;\n const strByteLen = getStrByteLen(colunmText);\n if (strByteLen <= maxNumber * 2) {\n return colunmText;\n }\n return (\n <Tooltip placement=\"topLeft\" title={colunmText}>\n {cutString(colunmText, maxNumber * 2)}\n </Tooltip>\n );\n };\n};\n\nconst tableColumnOperateRender = (options: (item: TAny, index: number) => ButtonOperateProps) => {\n return (_value: string | number, record, index: number) => {\n const operateProps = options(record, index);\n return <ButtonOperate {...operateProps} />;\n };\n};\n\nconst tableColumnDateRender = (dateFormatType?: DateFormatType, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n try {\n return flatbizDate.format(new Date(value), dateFormatType);\n } catch (error) {\n return value || defaultValue;\n }\n };\n};\n\n/**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @param pageSize\n * @param pageNo\n * @returns\n */\nconst tableColumnIndexRender = (pageNo?: number, pageSize?: number) => {\n return (_value, _record, index: number) => {\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\nconst tableColumnIndexRender2 = (method?: () => { pageNo?: number; pageSize?: number }) => {\n return (_value, _record, index: number) => {\n const { pageNo, pageSize } = method?.() || {};\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\n\nconst tableColumnSelectorRender = (\n selectorList: TagListSelectProps['dataList'],\n colorMap?: TagListSelectProps['colorMap'],\n options?: {\n /** 最大显示Tag数量,超出折叠隐藏 */\n maxShowCount?: number;\n /** 触发maxShowCount后,被折叠的内容是否显示完整tag,默认值:false */\n foldShowAllTag?: boolean;\n },\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n return (\n <TagListRender\n dataList={selectorList}\n colorMap={colorMap}\n value={value}\n forceMatch={false}\n {...options}\n />\n );\n };\n};\n\nconst tableColumnObjectRender = (key: string, defaultValue?: string) => {\n return (value?: TPlainObject) => {\n if (isPlainObject(value)) {\n const target = get(value, key, defaultValue);\n if (!target) return '';\n if (isObject(target)) return JSON.stringify(target);\n return target;\n }\n return value || defaultValue;\n };\n};\n\nconst tableColumnFen2yuanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色 */\n hideBgColor?: boolean;\n}) => {\n const className = options?.hideBgColor ? '' : 'table-fen-color';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2yuan(value);\n return (\n <span className={className}>\n {flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false })}\n </span>\n );\n };\n};\n\nconst tableColumnFen2wanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色,默认:false */\n showBgColor?: boolean;\n /** 移除小数点后末尾零 */\n removeTailZero?: boolean;\n}) => {\n const className = options?.showBgColor === true ? 'table-wan-color' : '';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2wan(value);\n const amountNew = options?.removeTailZero\n ? flatbizPrice.removeTailZero(amount, options?.defaultValue, {\n separator: options?.separator || false,\n })\n : flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false });\n return <span className={className}>{amountNew}</span>;\n };\n};\n\ntype TableColumnIconRenderProps = {\n /** 额外内容,一般为Icon */\n extra: ReactElement;\n extraPosition?: 'before' | 'after';\n onClick?: (e) => void;\n /** 是否显示原单元格数据,默认值:true */\n showData?: boolean;\n /** 溢出显示【...】, 最大长度(默认:20个字节) */\n showMaxNumber?: number;\n /** 未溢出显示【extra】配置,默认值:true */\n notOverflowShowExtra?: boolean;\n};\n\nconst tableColumnExtraContentRender = (handle: (item: TPlainObject) => TableColumnIconRenderProps) => {\n return (value: TAny, item: TPlainObject) => {\n const options = handle?.(item);\n if (!options) return <Fragment>{value}</Fragment>;\n const showData = isUndefinedOrNull(options.showData) ? true : options.showData;\n const notOverflowShowExtra = isUndefinedOrNull(options.notOverflowShowExtra)\n ? true\n : options.notOverflowShowExtra;\n const showMaxNumber = isUndefinedOrNull(options.showMaxNumber) ? 10 : (options.showMaxNumber as number);\n const extraPosition = options.extraPosition ? options.extraPosition : 'after';\n const renderValue = isString(value) ? cutString(value, showMaxNumber * 2) : value;\n\n if (options.extra && showData) {\n if (renderValue === value && !notOverflowShowExtra) {\n return value;\n }\n const spaceContent = [<span key=\"1\">{renderValue}</span>, <Fragment key=\"2\">{options.extra}</Fragment>];\n const spaceContentRender = extraPosition === 'before' ? spaceContent.reverse() : spaceContent;\n return (\n <Space onClick={options.onClick} style={{ cursor: options.onClick ? 'pointer' : undefined }} size={5}>\n {spaceContentRender.map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n );\n }\n return <span onClick={options.onClick}>{options.extra}</span>;\n };\n};\n\nconst tableColumnBadgeRender = (\n selectorList: { label: string; value: TagListSelectValue; color?: string }[],\n colorMap?: Record<string | string, string>,\n) => {\n return (value?: TAny) => {\n if (!value) return null;\n const target = selectorList.find((item) => item.value === value);\n if (target)\n return (\n <Badge color={target?.color || colorMap?.[value] || 'rgba(0, 0, 0, 0.25)'} text={target?.label} />\n );\n return value;\n };\n};\n\nconst tableColumnClickRender = (onClick: (record: TPlainObject, e) => void, defaultValue?: string) => {\n return (value: TAny, record: TPlainObject) => {\n if (!value) return defaultValue;\n return <a onClick={onClick.bind(null, record)}>{value}</a>;\n };\n};\n\nexport const tableCellRender = {\n /**\n * 表格单元格 拼接额外内容渲染\n * ```\n * 1. extra 额外内容\n * 2. showData 是否显示原单元格数据,默认值:true\n * 3. showMaxNumber 显示最大长度,作用于原单元格字符串数据\n *\n *\n * 结合table column render 使用\n * # 在单元格渲染文字右侧添加图标\n * render: tableCellRender.extraContentRender(() => {\n * return {\n * extra: <FullscreenOutlined />,\n * onClick: () => { ... },\n * };\n * }),\n * ```\n */\n extraContentRender: tableColumnExtraContentRender,\n /**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @deprecated 已过时 4.3.0版本移除,请使用 serialNumberCell\n */\n indexCell: tableColumnIndexRender,\n /**\n * table 序号展示,如果存在pageSize、pageNo参数可分页展示累加序号,否则每页都从1开始\n * ```\n * render: tableCellRender.serialNumberCell(() => {\n * return { pageNo,pageSize };\n * }),\n * ```\n */\n serialNumberCell: tableColumnIndexRender2,\n /**\n * 表格日期格式数据渲染,默认格式:YYYY-MM-DD\n * ```\n * 独立使用\n * tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')\n * render: (value) => {\n * return tableCellRender.dateCell('YYYY-MM-DD')(value);\n * }\n * ```\n */\n dateCell: tableColumnDateRender,\n /**\n * table操作栏目渲染\n * ```\n * 使用方式\n * tableCellRender.operateCell((item) => ({\n * operateList: [\n * {\n * text: '编辑',\n * onClick: onItemOperate.bind(null, 'update', item),\n * },\n * {\n * text: '删除',\n * needConfirm: true,\n * confirmMessage: '确定要删除吗?',\n * onClick: onItemOperate.bind(null, 'delete', item),\n * },\n * ],\n * }))\n * ```\n */\n operateCell: tableColumnOperateRender,\n /**\n * 实现字段超出隐藏,默认长度10个字符\n * @deprecated 已过期,请使用 TextOverflow 组件实现\n * ```\n * 1. showMaxNumber: 显示最大长度\n * 2. 会讲字符转出字节进行计算显示\n * ```\n */\n tooltipCell: tableColumnTooltipRender,\n /**\n * Tag格式数据渲染,可结合枚举定义数据\n * ```\n * 独立使用\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n * tableCellRender.selectorCell(taskTypeEnumList)(value);\n *\n *\n * 结合table column render 使用\n * render: tableCellRender.selectorCell(taskTypeEnumList);\n * render: tableCellRender.selectorCell([{ label: '已开启', value: 1 ]);\n * render: (value) => {\n * return tableCellRender.selectorCell([{ label: '已开启', value: 1 ])(value);\n * }\n *\n * 其中value值可以是单个值或者数组;例如:'1' 或者 ['1', '2']\n * ```\n */\n selectorCell: tableColumnSelectorRender,\n /**\n * 单元格对象数据处理,支持多级处理\n * ```\n * tableCellRender.objectCell('a.b.c')\n * ```\n */\n objectCell: tableColumnObjectRender,\n /**\n * 分金额展示,入参分,显示元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. hideBgColor:隐藏背景颜色\n *\n * 例如:\n * fen2yuanCell()(100090) => 1000.90\n * fen2yuanCell({separator: true})(100090) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2yuanCell: tableColumnFen2yuanCellRender,\n /**\n * 分金额展示,入参分,显示万元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. showBgColor:隐藏背景颜色\n * 4. removeTailZero:移除小数点后末尾零\n *\n * 例如:\n * fen2yuanCell()(1000900000) => 1000.90\n * fen2yuanCell({separator: true})(1000900000) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2wanCell: tableColumnFen2wanCellRender,\n /**\n * 单元格徽标展示数据\n * ```\n * 1. badge 默认颜色:灰色rgba(0, 0, 0, 0.25)\n *\n * 独立使用\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.badgeCell([{ label: '已开启', value: 1 ])\n * render: (value) => {\n * return tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * }\n * ```\n */\n badgeCell: tableColumnBadgeRender,\n /**\n * 单元格点击事件\n * ```\n * 独立使用\n * tableCellRender.clickCell(onClick)(value, record)\n *\n * 结合table column render 使用\n * render: tableCellRender.clickCell(onClick)\n * render: (value, record) => {\n * return tableCellRender.clickCell(onClick)(value, record)\n * }\n * ```\n */\n clickCell: tableColumnClickRender,\n};\n"],"names":["tableColumnTooltipRender","showMaxNumber","defaultValue","value","_isEmpty","isNumber","colunmText","toString","maxNumber","isUndefinedOrNull","strByteLen","getStrByteLen","_jsx","Tooltip","placement","title","children","cutString","tableColumnOperateRender","options","_value","record","index","operateProps","ButtonOperate","_extends","tableColumnDateRender","dateFormatType","flatbizDate","format","Date","error","tableColumnIndexRender","pageNo","pageSize","_record","tableColumnIndexRender2","method","_ref","tableColumnSelectorRender","selectorList","colorMap","TagListRender","dataList","forceMatch","tableColumnObjectRender","key","_isPlainObject","target","_get","_isObject","JSON","stringify","tableColumnFen2yuanCellRender","className","hideBgColor","undefined","flatbizPrice","amount","fen2yuan","separator","tableColumnFen2wanCellRender","showBgColor","fen2wan","amountNew","removeTailZero","tableColumnExtraContentRender","handle","item","Fragment","showData","notOverflowShowExtra","extraPosition","renderValue","_isString","extra","spaceContent","spaceContentRender","reverse","Space","onClick","style","cursor","size","map","tableColumnBadgeRender","find","Badge","color","text","label","tableColumnClickRender","bind","tableCellRender","extraContentRender","indexCell","serialNumberCell","dateCell","operateCell","tooltipCell","selectorCell","objectCell","fen2yuanCell","fen2wanCell","badgeCell","clickCell"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/table-cell-render/cell-render.tsx"],"sourcesContent":["import { isEmpty, isObject, isPlainObject, isString } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport {\n cutString,\n DateFormatType,\n flatbizDate,\n flatbizPrice,\n getStrByteLen,\n isNumber,\n isUndefinedOrNull,\n TAny,\n TPlainObject,\n} from '@flatbiz/utils';\nimport { Badge, Space, Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonOperate, ButtonOperateProps } from '../button-operate';\nimport { TagListRender } from '../tag-list-render';\nimport { TagListSelectProps, TagListSelectValue } from '../tag-list-select';\nimport './style.less';\n\nconst tableColumnTooltipRender = (showMaxNumber?: number, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n if (isNumber(value)) return value;\n const colunmText = value.toString();\n const maxNumber = (isUndefinedOrNull(showMaxNumber) ? 10 : showMaxNumber) as number;\n const strByteLen = getStrByteLen(colunmText);\n if (strByteLen <= maxNumber * 2) {\n return colunmText;\n }\n return (\n <Tooltip placement=\"topLeft\" title={colunmText}>\n {cutString(colunmText, maxNumber * 2)}\n </Tooltip>\n );\n };\n};\n\nconst tableColumnOperateRender = (options: (item: TAny, index: number) => ButtonOperateProps) => {\n return (_value: string | number, record, index: number) => {\n const operateProps = options(record, index);\n return <ButtonOperate {...operateProps} />;\n };\n};\n\nconst tableColumnDateRender = (dateFormatType?: DateFormatType, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n try {\n return flatbizDate.format(new Date(value), dateFormatType);\n } catch (error) {\n return value || defaultValue;\n }\n };\n};\n\n/**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @param pageSize\n * @param pageNo\n * @returns\n */\nconst tableColumnIndexRender = (pageNo?: number, pageSize?: number) => {\n return (_value, _record, index: number) => {\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\nconst tableColumnIndexRender2 = (method?: () => { pageNo?: number; pageSize?: number }) => {\n return (_value, _record, index: number) => {\n const { pageNo, pageSize } = method?.() || {};\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\n\nconst tableColumnSelectorRender = (\n selectorList: TagListSelectProps['dataList'],\n colorMap?: TagListSelectProps['colorMap'],\n options?: {\n /** 最大显示Tag数量,超出折叠隐藏 */\n maxShowCount?: number;\n /** 触发maxShowCount后,被折叠的内容是否显示完整tag,默认值:false */\n foldShowAllTag?: boolean;\n },\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n return (\n <TagListRender\n dataList={selectorList}\n colorMap={colorMap}\n value={value}\n forceMatch={false}\n {...options}\n />\n );\n };\n};\n\nconst tableColumnObjectRender = (key: string, defaultValue?: string) => {\n return (value?: TPlainObject) => {\n if (isPlainObject(value)) {\n const target = get(value, key, defaultValue);\n if (!target) return '';\n if (isObject(target)) return JSON.stringify(target);\n return target;\n }\n return value || defaultValue;\n };\n};\n\nconst tableColumnFen2yuanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色 */\n hideBgColor?: boolean;\n}) => {\n const className = options?.hideBgColor ? '' : 'table-fen-color';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2yuan(value);\n return (\n <span className={className}>\n {flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false })}\n </span>\n );\n };\n};\n\nconst tableColumnFen2wanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色,默认:false */\n showBgColor?: boolean;\n /** 移除小数点后末尾零 */\n removeTailZero?: boolean;\n}) => {\n const className = options?.showBgColor === true ? 'table-wan-color' : '';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2wan(value);\n const amountNew = options?.removeTailZero\n ? flatbizPrice.removeTailZero(amount, options?.defaultValue, {\n separator: options?.separator || false,\n })\n : flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false });\n return <span className={className}>{amountNew}</span>;\n };\n};\n\ntype TableColumnIconRenderProps = {\n /** 额外内容,一般为Icon */\n extra: ReactElement;\n extraPosition?: 'before' | 'after';\n onClick?: (e) => void;\n /** 是否显示原单元格数据,默认值:true */\n showData?: boolean;\n /** 溢出显示【...】, 最大长度(默认:20个字节) */\n showMaxNumber?: number;\n /** 未溢出显示【extra】配置,默认值:true */\n notOverflowShowExtra?: boolean;\n};\n\nconst tableColumnExtraContentRender = (handle: (item: TPlainObject) => TableColumnIconRenderProps) => {\n return (value: TAny, item: TPlainObject) => {\n const options = handle?.(item);\n if (!options) return <Fragment>{value}</Fragment>;\n const showData = isUndefinedOrNull(options.showData) ? true : options.showData;\n const notOverflowShowExtra = isUndefinedOrNull(options.notOverflowShowExtra)\n ? true\n : options.notOverflowShowExtra;\n const showMaxNumber = isUndefinedOrNull(options.showMaxNumber) ? 10 : (options.showMaxNumber as number);\n const extraPosition = options.extraPosition ? options.extraPosition : 'after';\n const renderValue = isString(value) ? cutString(value, showMaxNumber * 2) : value;\n\n if (options.extra && showData) {\n if (renderValue === value && !notOverflowShowExtra) {\n return value;\n }\n const spaceContent = [<span key=\"1\">{renderValue}</span>, <Fragment key=\"2\">{options.extra}</Fragment>];\n const spaceContentRender = extraPosition === 'before' ? spaceContent.reverse() : spaceContent;\n return (\n <Space onClick={options.onClick} style={{ cursor: options.onClick ? 'pointer' : undefined }} size={5}>\n {spaceContentRender.map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n );\n }\n return <span onClick={options.onClick}>{options.extra}</span>;\n };\n};\n\nconst tableColumnBadgeRender = (\n selectorList: { label: string; value: TagListSelectValue; color?: string }[],\n colorMap?: Record<string | string, string>,\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n const target = selectorList.find((item) => item.value === value);\n if (target)\n return (\n <Badge color={target?.color || colorMap?.[value] || 'rgba(0, 0, 0, 0.25)'} text={target?.label} />\n );\n return value;\n };\n};\n\nconst tableColumnClickRender = (onClick: (record: TPlainObject, e) => void, defaultValue?: string) => {\n return (value: TAny, record: TPlainObject) => {\n if (isUndefinedOrNull(value)) return defaultValue;\n return <a onClick={onClick.bind(null, record)}>{value}</a>;\n };\n};\n\nexport const tableCellRender = {\n /**\n * 表格单元格 拼接额外内容渲染\n * ```\n * 1. extra 额外内容\n * 2. showData 是否显示原单元格数据,默认值:true\n * 3. showMaxNumber 显示最大长度,作用于原单元格字符串数据\n *\n *\n * 结合table column render 使用\n * # 在单元格渲染文字右侧添加图标\n * render: tableCellRender.extraContentRender(() => {\n * return {\n * extra: <FullscreenOutlined />,\n * onClick: () => { ... },\n * };\n * }),\n * ```\n */\n extraContentRender: tableColumnExtraContentRender,\n /**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @deprecated 已过时 4.3.0版本移除,请使用 serialNumberCell\n */\n indexCell: tableColumnIndexRender,\n /**\n * table 序号展示,如果存在pageSize、pageNo参数可分页展示累加序号,否则每页都从1开始\n * ```\n * render: tableCellRender.serialNumberCell(() => {\n * return { pageNo,pageSize };\n * }),\n * ```\n */\n serialNumberCell: tableColumnIndexRender2,\n /**\n * 表格日期格式数据渲染,默认格式:YYYY-MM-DD\n * ```\n * 独立使用\n * tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')\n * render: (value) => {\n * return tableCellRender.dateCell('YYYY-MM-DD')(value);\n * }\n * ```\n */\n dateCell: tableColumnDateRender,\n /**\n * table操作栏目渲染\n * ```\n * 使用方式\n * tableCellRender.operateCell((item) => ({\n * operateList: [\n * {\n * text: '编辑',\n * onClick: onItemOperate.bind(null, 'update', item),\n * },\n * {\n * text: '删除',\n * needConfirm: true,\n * confirmMessage: '确定要删除吗?',\n * onClick: onItemOperate.bind(null, 'delete', item),\n * },\n * ],\n * }))\n * ```\n */\n operateCell: tableColumnOperateRender,\n /**\n * 实现字段超出隐藏,默认长度10个字符\n * @deprecated 已过期,请使用 TextOverflow 组件实现\n * ```\n * 1. showMaxNumber: 显示最大长度\n * 2. 会讲字符转出字节进行计算显示\n * ```\n */\n tooltipCell: tableColumnTooltipRender,\n /**\n * Tag格式数据渲染,可结合枚举定义数据\n * ```\n * 独立使用\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n * tableCellRender.selectorCell(taskTypeEnumList)(value);\n *\n *\n * 结合table column render 使用\n * render: tableCellRender.selectorCell(taskTypeEnumList);\n * render: tableCellRender.selectorCell([{ label: '已开启', value: 1 ]);\n * render: (value) => {\n * return tableCellRender.selectorCell([{ label: '已开启', value: 1 ])(value);\n * }\n *\n * 其中value值可以是单个值或者数组;例如:'1' 或者 ['1', '2']\n * ```\n */\n selectorCell: tableColumnSelectorRender,\n /**\n * 单元格对象数据处理,支持多级处理\n * ```\n * tableCellRender.objectCell('a.b.c')\n * ```\n */\n objectCell: tableColumnObjectRender,\n /**\n * 分金额展示,入参分,显示元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. hideBgColor:隐藏背景颜色\n *\n * 例如:\n * fen2yuanCell()(100090) => 1000.90\n * fen2yuanCell({separator: true})(100090) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2yuanCell: tableColumnFen2yuanCellRender,\n /**\n * 分金额展示,入参分,显示万元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. showBgColor:隐藏背景颜色\n * 4. removeTailZero:移除小数点后末尾零\n *\n * 例如:\n * fen2yuanCell()(1000900000) => 1000.90\n * fen2yuanCell({separator: true})(1000900000) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2wanCell: tableColumnFen2wanCellRender,\n /**\n * 单元格徽标展示数据\n * ```\n * 1. badge 默认颜色:灰色rgba(0, 0, 0, 0.25)\n *\n * 独立使用\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.badgeCell([{ label: '已开启', value: 1 ])\n * render: (value) => {\n * return tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * }\n * ```\n */\n badgeCell: tableColumnBadgeRender,\n /**\n * 单元格点击事件\n * ```\n * 独立使用\n * tableCellRender.clickCell(onClick)(value, record)\n *\n * 结合table column render 使用\n * render: tableCellRender.clickCell(onClick)\n * render: (value, record) => {\n * return tableCellRender.clickCell(onClick)(value, record)\n * }\n * ```\n */\n clickCell: tableColumnClickRender,\n};\n"],"names":["tableColumnTooltipRender","showMaxNumber","defaultValue","value","_isEmpty","isNumber","colunmText","toString","maxNumber","isUndefinedOrNull","strByteLen","getStrByteLen","_jsx","Tooltip","placement","title","children","cutString","tableColumnOperateRender","options","_value","record","index","operateProps","ButtonOperate","_extends","tableColumnDateRender","dateFormatType","flatbizDate","format","Date","error","tableColumnIndexRender","pageNo","pageSize","_record","tableColumnIndexRender2","method","_ref","tableColumnSelectorRender","selectorList","colorMap","TagListRender","dataList","forceMatch","tableColumnObjectRender","key","_isPlainObject","target","_get","_isObject","JSON","stringify","tableColumnFen2yuanCellRender","className","hideBgColor","undefined","flatbizPrice","amount","fen2yuan","separator","tableColumnFen2wanCellRender","showBgColor","fen2wan","amountNew","removeTailZero","tableColumnExtraContentRender","handle","item","Fragment","showData","notOverflowShowExtra","extraPosition","renderValue","_isString","extra","spaceContent","spaceContentRender","reverse","Space","onClick","style","cursor","size","map","tableColumnBadgeRender","find","Badge","color","text","label","tableColumnClickRender","bind","tableCellRender","extraContentRender","indexCell","serialNumberCell","dateCell","operateCell","tooltipCell","selectorCell","objectCell","fen2yuanCell","fen2wanCell","badgeCell","clickCell"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ .tabs-sticky-contents>.ant-tabs-nav{display:none}
@@ -0,0 +1,5 @@
1
+ /* eslint-disable */
2
+ import './index.css';
3
+ /*! @flatjs/forge MIT @flatbiz/antd */
4
+ import{_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useSize as e}from"ahooks";import{Affix as t,Tabs as n}from"antd";import{useState as i,useRef as l,useEffect as o,useMemo as a}from"react";import{jsx as c,jsxs as v}from"react/jsx-runtime";var u=function u(s){var f=s.tabsProps;var d=i(f.defaultActiveKey),h=d[0],m=d[1];var p=l(null);var g=l(null);var y=l();var b=e(p);var K=l(null);var T=e(K);var k=e(g);o((function(){if(f.activeKey){m(f.activeKey)}}),[f.activeKey]);var C=function r(e){if(!f.activeKey){m(e)}f.onChange==null?void 0:f.onChange(e);var t=(b==null?void 0:b.height)||0;if(y.current){var n;(n=K.current)==null?void 0:n.scrollTo({top:t})}else{if(s.clickTabToTop!==false){var i;(i=K.current)==null?void 0:i.scrollTo({top:t})}}};var B=((T==null?void 0:T.height)||0)-((k==null?void 0:k.height)||0);var j=a((function(){var e;return(e=f.items)==null?void 0:e.map((function(e){return r({},e,{children:null})}))}),[f.items]);var x=a((function(){var e;return(e=f.items)==null?void 0:e.map((function(e){return r({},e,{children:c("div",{style:{minHeight:B},children:e.children})})}))}),[f.items,B]);return v("div",{ref:K,style:{height:"100%",overflowY:"auto"},children:[c("div",{ref:p,children:s.headerRender}),c(t,{offsetTop:0,target:function r(){return K.current},onChange:function r(e){y.current=e},children:c("div",{ref:g,children:c(n,r({},f,{activeKey:h,items:j,tabBarStyle:r({},f.tabBarStyle,{margin:0}),style:r({backgroundColor:"var(--block-bg-color)"},f.style),onChange:C}))})}),c(n,{activeKey:h,className:"tabs-sticky-contents",items:x})]})};export{u as TabsSticky};
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tabs-sticky/tabs.tsx"],"sourcesContent":["import { useSize } from 'ahooks';\nimport { Affix, Tabs, type TabsProps } from 'antd';\nimport { useEffect, useMemo, useRef, useState, type ReactElement } from 'react';\nimport './style.less';\n\nexport type TabsStickyProps = {\n tabsProps: TabsProps;\n /** tabs头部布局 */\n headerRender?: ReactElement;\n /** 点击tabItem后,tab跳到顶部吸顶效果;默认值true */\n clickTabToTop?: boolean;\n};\n\n/**\n * Tabs吸顶组件\n * ```\n * 1. 组件根节点设置了 height: 100%、overflow: auto;所以外部包裹元素必须要有高度\n * ```\n */\nexport const TabsSticky = (props: TabsStickyProps) => {\n const tabsProps = props.tabsProps;\n\n const [activeKey, setActiveKey] = useState(tabsProps.defaultActiveKey);\n const headerRef = useRef<HTMLDivElement>(null);\n const affixRef = useRef<any>(null);\n const affixedFlagRef = useRef<boolean>();\n\n const headerSize = useSize(headerRef);\n\n const scollNodeRef = useRef<any>(null);\n\n const scollNodeSize = useSize(scollNodeRef);\n const affixRefSize = useSize(affixRef);\n\n useEffect(() => {\n if (tabsProps.activeKey) {\n setActiveKey(tabsProps.activeKey);\n }\n }, [tabsProps.activeKey]);\n\n const onChange = (activeKey) => {\n if (!tabsProps.activeKey) {\n setActiveKey(activeKey);\n }\n tabsProps.onChange?.(activeKey);\n const top = headerSize?.height || 0;\n if (affixedFlagRef.current) {\n scollNodeRef.current?.scrollTo({\n top,\n });\n } else {\n if (props.clickTabToTop !== false) {\n scollNodeRef.current?.scrollTo({\n top,\n });\n }\n }\n };\n\n const minHeight = (scollNodeSize?.height || 0) - (affixRefSize?.height || 0);\n\n const stickyTabItems = useMemo(() => {\n return tabsProps.items?.map((item) => {\n return {\n ...item,\n children: null,\n };\n });\n }, [tabsProps.items]);\n\n const contentTabItems = useMemo(() => {\n return tabsProps.items?.map((item) => {\n return {\n ...item,\n children: <div style={{ minHeight }}>{item.children}</div>,\n };\n });\n }, [tabsProps.items, minHeight]);\n\n return (\n <div ref={scollNodeRef} style={{ height: '100%', overflowY: 'auto' }}>\n <div ref={headerRef}>{props.headerRender}</div>\n <Affix\n offsetTop={0}\n target={() => scollNodeRef.current as HTMLElement}\n onChange={(affixed) => {\n affixedFlagRef.current = affixed;\n }}\n >\n <div ref={affixRef}>\n <Tabs\n {...tabsProps}\n activeKey={activeKey}\n items={stickyTabItems}\n tabBarStyle={{ ...tabsProps.tabBarStyle, margin: 0 }}\n style={{\n backgroundColor: 'var(--block-bg-color)',\n ...tabsProps.style,\n }}\n onChange={onChange}\n />\n </div>\n </Affix>\n <Tabs activeKey={activeKey} className=\"tabs-sticky-contents\" items={contentTabItems} />\n </div>\n );\n};\n"],"names":["TabsSticky","props","tabsProps","_useState","useState","defaultActiveKey","activeKey","setActiveKey","headerRef","useRef","affixRef","affixedFlagRef","headerSize","useSize","scollNodeRef","scollNodeSize","affixRefSize","useEffect","onChange","top","height","current","_scollNodeRef$current","scrollTo","clickTabToTop","_scollNodeRef$current2","minHeight","stickyTabItems","useMemo","_tabsProps$items","items","map","item","_extends","children","contentTabItems","_tabsProps$items2","_jsx","style","_jsxs","ref","overflowY","headerRender","Affix","offsetTop","target","affixed","Tabs","tabBarStyle","margin","backgroundColor","className"],"mappings":";oQAmBaA,EAAa,SAAbA,EAAcC,GACzB,IAAMC,EAAYD,EAAMC,UAExB,IAAAC,EAAkCC,EAASF,EAAUG,kBAA9CC,EAASH,EAAA,GAAEI,EAAYJ,EAAA,GAC9B,IAAMK,EAAYC,EAAuB,MACzC,IAAMC,EAAWD,EAAY,MAC7B,IAAME,EAAiBF,IAEvB,IAAMG,EAAaC,EAAQL,GAE3B,IAAMM,EAAeL,EAAY,MAEjC,IAAMM,EAAgBF,EAAQC,GAC9B,IAAME,EAAeH,EAAQH,GAE7BO,GAAU,WACR,GAAIf,EAAUI,UAAW,CACvBC,EAAaL,EAAUI,UACzB,CACF,GAAG,CAACJ,EAAUI,YAEd,IAAMY,EAAW,SAAXA,EAAYZ,GAChB,IAAKJ,EAAUI,UAAW,CACxBC,EAAaD,EACf,CACAJ,EAAUgB,UAAVhB,UAAAA,EAAAA,EAAUgB,SAAWZ,GACrB,IAAMa,GAAMP,eAAAA,EAAYQ,SAAU,EAClC,GAAIT,EAAeU,QAAS,CAAA,IAAAC,GAC1BA,EAAAR,EAAaO,UAAbC,UAAAA,EAAAA,EAAsBC,SAAS,CAC7BJ,IAAAA,GAEJ,KAAO,CACL,GAAIlB,EAAMuB,gBAAkB,MAAO,CAAA,IAAAC,GACjCA,EAAAX,EAAaO,UAAbI,UAAAA,EAAAA,EAAsBF,SAAS,CAC7BJ,IAAAA,GAEJ,CACF,GAGF,IAAMO,IAAaX,GAAAA,UAAAA,EAAAA,EAAeK,SAAU,KAAMJ,GAAAA,UAAAA,EAAAA,EAAcI,SAAU,GAE1E,IAAMO,EAAiBC,GAAQ,WAAM,IAAAC,EACnC,OAAAA,EAAO3B,EAAU4B,QAAK,UAAA,EAAfD,EAAiBE,KAAI,SAACC,GAC3B,OAAAC,KACKD,EAAI,CACPE,SAAU,MAEd,GACF,GAAG,CAAChC,EAAU4B,QAEd,IAAMK,EAAkBP,GAAQ,WAAM,IAAAQ,EACpC,OAAAA,EAAOlC,EAAU4B,QAAK,UAAA,EAAfM,EAAiBL,KAAI,SAACC,GAC3B,OAAAC,KACKD,EAAI,CACPE,SAAUG,EAAA,MAAA,CAAKC,MAAO,CAAEZ,UAAAA,GAAYQ,SAAEF,EAAKE,YAE/C,GACD,GAAE,CAAChC,EAAU4B,MAAOJ,IAErB,OACEa,EAAA,MAAA,CAAKC,IAAK1B,EAAcwB,MAAO,CAAElB,OAAQ,OAAQqB,UAAW,QAASP,UACnEG,EAAA,MAAA,CAAKG,IAAKhC,EAAU0B,SAAEjC,EAAMyC,eAC5BL,EAACM,EAAK,CACJC,UAAW,EACXC,OAAQ,SAAAA,IAAA,OAAM/B,EAAaO,OAAuB,EAClDH,SAAU,SAAAA,EAAC4B,GACTnC,EAAeU,QAAUyB,CACzB,EAAAZ,SAEFG,EAAA,MAAA,CAAKG,IAAK9B,EAASwB,SACjBG,EAACU,EAAId,KACC/B,EAAS,CACbI,UAAWA,EACXwB,MAAOH,EACPqB,YAAWf,EAAO/B,GAAAA,EAAU8C,YAAW,CAAEC,OAAQ,IACjDX,MAAKL,EAAA,CACHiB,gBAAiB,yBACdhD,EAAUoC,OAEfpB,SAAUA,SAIhBmB,EAACU,EAAI,CAACzC,UAAWA,EAAW6C,UAAU,uBAAuBrB,MAAOK,MAG1E"}
@@ -17,5 +17,5 @@ import './../dialog-modal/index.css';
17
17
  import './../input-search-wrapper/index.css';
18
18
  import './index.css';
19
19
  /*! @flatjs/forge MIT @flatbiz/antd */
20
- import{_ as e}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isObject as i}from"@dimjs/lang/cjs/is-object";import{hooks as n}from"@wove/react/cjs/hooks";import{toArray as t,treeToTiledMap as o,isUndefinedOrNull as r}from"@flatbiz/utils";import{useSize as l}from"ahooks";import{Modal as a}from"antd";import{Fragment as d,useState as s,useRef as u,useMemo as c}from"react";import{fbaHooks as m}from"../fba-hooks/index.js";import{FlexLayout as h}from"../flex-layout/index.js";import p from"@ant-design/icons/es/icons/CloseOutlined";import{CssNodeHover as v}from"../css-node-hover/index.js";import{IconWrapper as f}from"../icon-wrapper/index.js";import{TextOverflow as g}from"../text-overflow/index.js";import{jsx as j,jsxs as x}from"react/jsx-runtime";import{TreeWrapper as C}from"../tree-wrapper/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-string";import"@dimjs/model-react";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"@dimjs/utils/cjs/tree";import"dequal";var y=function e(i){var n=i.chenkedIdList;return j(d,{children:n==null?void 0:n.map((function(e){var n=e.value;var t=e.label||n;return j(v,{style:{paddingLeft:5,paddingRight:0},children:x(h,{fullIndex:1,direction:"horizontal",style:{alignItems:"center",fontSize:14,marginBottom:0,color:"#505050"},children:[j(g,{text:t}),j("div",{style:{position:"relative",zIndex:9,color:"#a1a1a1"},children:j(f,{text:j(p,{}),onClick:i.onDeleteItem.bind(null,n),size:"small",style:{paddingRight:5,margin:"2px"}})})]})},n)}))})};var w=function i(o){var r,l;var a=n.useId(undefined,"tree-select-modal");return j(C,e({initRootExpand:true,showSearch:true,searchPlaceholder:"搜索",checkable:true,checkableType:"2"},o.treeProps,{showIcon:(r=o.treeProps)!=null&&r.icon?true:false,value:(l=o.value)==null?void 0:l.map((function(e){return e.value})),modelKey:a,fieldNames:o.fieldNames,labelInValue:true,serviceConfig:o.serviceConfig,onChange:function e(i){o.onChange==null?void 0:o.onChange(t(i))}}))};var b=function e(i){var n,t;var r=i.value||[];var l=((n=i.fieldNames)==null?void 0:n.value)||"value";var a=((t=i.fieldNames)==null?void 0:t.children)||"children";var s=i.textConfig,u=s.selectQuantityPrompt,c=s.placeholder;return x(h,{fullIndex:0,direction:"horizontal",gap:10,style:{height:"100%",overflow:"hidden"},children:[j("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:j(w,{treeProps:i.treeProps,value:r,onChange:i.onChange,fieldNames:i.fieldNames,serviceConfig:{onRequest:i.onRequest,onRequestResultAdapter:function e(n){var t=o(n,{value:l,children:a});i.onChangeDataSourceMap(t);i.onChangeDataSource==null?void 0:i.onChangeDataSource(n,t);return n}}})}),x("div",{style:{width:"40%",overflow:"hidden",height:"100%",display:"flex",flexDirection:"column",flexShrink:0},children:[j("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:r.length>0?j(d,{children:u?u.replace("{total}",""+((r==null?void 0:r.length)||"")):"已选择"+(r==null?void 0:r.length)}):c||"请选择"}),j("div",{style:{overflow:"auto",flex:1,paddingRight:15},children:j(y,{chenkedIdList:r,fieldNames:i.fieldNames,onDeleteItem:i.onDeleteItem})})]})]})};var S=function e(i){var n,t;var r=i.textConfig,l=r.selectQuantityPrompt,a=r.placeholder;var s=((n=i.fieldNames)==null?void 0:n.value)||"value";var u=((t=i.fieldNames)==null?void 0:t.children)||"children";var c=i.value||[];return x("div",{style:{height:"100%",overflow:"auto"},children:[j("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:j(w,{treeProps:i.treeProps,value:c,onChange:i.onChange,fieldNames:i.fieldNames,serviceConfig:{onRequest:i.onRequest,onRequestResultAdapter:function e(n){var t=o(n,{value:s,children:u});i.onChangeDataSourceMap(t);i.onChangeDataSource==null?void 0:i.onChangeDataSource(n,t);return n}}})}),x("div",{style:{marginTop:20},children:[j("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:c.length>0?j(d,{children:l?l.replace("{total}",""+((c==null?void 0:c.length)||"")):"已选择"+(c==null?void 0:c.length)}):a}),j(y,{chenkedIdList:c,fieldNames:i.fieldNames,onDeleteItem:i.onDeleteItem})]})]})};var D=function o(h){var p;var v=h.size,f=v===void 0?"large":v,g=h.isMultiple;var C=s(false),y=C[0],w=C[1];var D=s(),N=D[0],R=D[1];var k=((p=h.fieldNames)==null?void 0:p.label)||"label";var I=l(document.querySelector("html"));var P=m.useResponsivePoint()||"";var q=P==="xs"?"vertical":"horizontal";var z=r(g)?true:g;var B=n.useCallbackRef((function(){w(true)}));var M=h.children.type;var L=s(),O=L[0],F=L[1];var H=u([]);var W=function e(i){var n=O==null?void 0:O.filter((function(e){return e.value!==i}));F(n)};m.useEffectCustom((function(){var e=t(h.value).map((function(e){if(i(e))return e;return{value:e,label:N==null?void 0:N[e][k]}}));if(N){h.onSelectChange==null?void 0:h.onSelectChange(e||[])}H.current=e||[];F(e)}),[h.value,N,k]);var _=c((function(){if(!(I!=null&&I.height)||!P)return undefined;var e=["xs","sm"].includes(P);var i={};if(f=="large"){i={height:(I==null?void 0:I.height)*.65,width:800}}else if(f=="small"){i={height:(I==null?void 0:I.height)*.45,width:450}}else if(f=="middle"){i={height:(I==null?void 0:I.height)*.55,width:600}}return{height:h.modalBodyHeight||i.height,width:e?"90%":h.modalWidth||i.width}}),[I==null?void 0:I.height,P,f,h.modalBodyHeight,h.modalWidth]);var E=e({},h.treeProps,{checkable:z?true:false});var A=function e(){h.onSelectChange==null?void 0:h.onSelectChange(O);h.onChange==null?void 0:h.onChange(O);w(false)};var Q=function e(i){F(i)};var T=function e(){w(false);F(H.current)};return x(d,{children:[j(M,e({},h.children.props,{onClick:B})),j(a,{className:h.modalClassName,title:h.textConfig.title||"选择",open:y,onCancel:T,forceRender:h.forceRender,centered:true,width:_==null?void 0:_.width,onOk:A,styles:q==="horizontal"?{body:{height:_==null?void 0:_.height,maxHeight:"calc(100vh - 200px)",padding:"0px 0 0 20px"},content:{padding:0},header:{padding:"20px 24px 0 20px"},footer:{padding:"0 24px 20px 24px"}}:{body:{height:_==null?void 0:_.height}},children:q==="vertical"?j(S,{onChangeDataSourceMap:R,value:O,onDeleteItem:W,fieldNames:h.fieldNames,onRequest:h.onRequest,textConfig:h.textConfig,onChange:Q,onChangeDataSource:h.onChangeDataSource,treeProps:E}):j(b,{value:O,onChangeDataSourceMap:R,onDeleteItem:W,fieldNames:h.fieldNames,onRequest:h.onRequest,textConfig:h.textConfig,onChange:Q,onChangeDataSource:h.onChangeDataSource,treeProps:E})})]})};export{D as TreeModal};
20
+ import{toArray as e,treeToTiledMap as i,isUndefinedOrNull as n,attachPropertiesToComponent as t}from"@flatbiz/utils";import{_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as r}from"@wove/react/cjs/hooks";import{useSize as l}from"ahooks";import{Modal as a}from"antd";import{Fragment as d,useRef as s,useState as u,useMemo as c}from"react";import{fbaHooks as m}from"../fba-hooks/index.js";import{isObject as v}from"@dimjs/lang/cjs/is-object";import{FlexLayout as h}from"../flex-layout/index.js";import p from"@ant-design/icons/es/icons/CloseOutlined";import{CssNodeHover as f}from"../css-node-hover/index.js";import{IconWrapper as g}from"../icon-wrapper/index.js";import{TextOverflow as j}from"../text-overflow/index.js";import{jsx as x,jsxs as C}from"react/jsx-runtime";import{TreeWrapper as y}from"../tree-wrapper/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-string";import"@dimjs/model-react";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"@dimjs/utils/cjs/tree";import"dequal";var b=function e(i){var n=i.chenkedIdList;return x(d,{children:n==null?void 0:n.map((function(e){var n=e.value;var t=e.label||n;return x(f,{style:{paddingLeft:5,paddingRight:0},children:C(h,{fullIndex:1,direction:"horizontal",style:{alignItems:"center",fontSize:14,marginBottom:0,color:"#505050"},children:[x(j,{text:t}),x("div",{style:{position:"relative",zIndex:9,color:"#a1a1a1"},children:x(g,{text:x(p,{}),onClick:i.onDeleteItem.bind(null,n),size:"small",style:{paddingRight:5,margin:"2px"}})})]})},n)}))})};var w=function i(n){var t,l;var a=r.useId(undefined,"tree-select-modal");return x(y,o({initRootExpand:true,showSearch:true,searchPlaceholder:"搜索",checkable:true,checkableType:"2"},n.treeProps,{showIcon:(t=n.treeProps)!=null&&t.icon?true:false,value:(l=n.value)==null?void 0:l.map((function(e){return e.value})),modelKey:a,fieldNames:n.fieldNames,labelInValue:true,serviceConfig:n.serviceConfig,onChange:function i(t){n.onChange==null?void 0:n.onChange(e(t))}}))};var N=function e(n){var t,o;var r=n.value||[];var l=((t=n.fieldNames)==null?void 0:t.value)||"value";var a=((o=n.fieldNames)==null?void 0:o.children)||"children";var s=n.textConfig,u=s.selectQuantityPrompt,c=s.placeholder;return C(h,{fullIndex:0,direction:"horizontal",gap:10,style:{height:"100%",overflow:"hidden"},children:[x("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:x(w,{treeProps:n.treeProps,value:r,onChange:n.onChange,fieldNames:n.fieldNames,serviceConfig:{onRequest:n.onRequest,onRequestResultAdapter:function e(t){var o=i(t,{value:l,children:a});n.onChangeDataSource==null?void 0:n.onChangeDataSource(t,o);return t}}})}),C("div",{style:{width:"40%",overflow:"hidden",height:"100%",display:"flex",flexDirection:"column",flexShrink:0},children:[x("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:r.length>0?x(d,{children:u?u.replace("{total}",""+((r==null?void 0:r.length)||"")):"已选择"+(r==null?void 0:r.length)}):c||"请选择"}),x("div",{style:{overflow:"auto",flex:1},children:x(b,{chenkedIdList:r,fieldNames:n.fieldNames,onDeleteItem:n.onDeleteItem})})]})]})};var R=function e(n){var t,o;var r=n.textConfig,l=r.selectQuantityPrompt,a=r.placeholder;var s=((t=n.fieldNames)==null?void 0:t.value)||"value";var u=((o=n.fieldNames)==null?void 0:o.children)||"children";var c=n.value||[];return C("div",{style:{height:"100%",overflow:"auto"},children:[x("div",{style:{backgroundColor:"#f4f4f4",padding:10,borderRadius:5},children:x(w,{treeProps:n.treeProps,value:c,onChange:n.onChange,fieldNames:n.fieldNames,serviceConfig:{onRequest:n.onRequest,onRequestResultAdapter:function e(t){var o=i(t,{value:s,children:u});n.onChangeDataSource==null?void 0:n.onChangeDataSource(t,o);return t}}})}),C("div",{style:{marginTop:20},children:[x("div",{style:{fontSize:15,fontWeight:"500",marginBottom:10},children:c.length>0?x(d,{children:l?l.replace("{total}",""+((c==null?void 0:c.length)||"")):"已选择"+(c==null?void 0:c.length)}):a}),x(b,{chenkedIdList:c,fieldNames:n.fieldNames,onDeleteItem:n.onDeleteItem})]})]})};var k=function i(t){var l,a;var c=t.isMultiple;var h=((l=t.fieldNames)==null?void 0:l.label)||"label";var p=((a=t.fieldNames)==null?void 0:a.value)||"value";var f=s({});var g=m.useResponsivePoint()||"";var j=g==="xs"?"vertical":"horizontal";var C=n(c)?true:c;var y=u(),b=y[0],w=y[1];var k=function e(i){var n=b==null?void 0:b.filter((function(e){return e.value!==i}));w(n);t.onChange==null?void 0:t.onChange(n)};m.useEffectCustom((function(){var i=e(t.value).map((function(e){var i;var n=v(e)?e:{label:e,value:e};var t=n.value;return{value:t,label:((i=f.current[t])==null?void 0:i[h])||""}}));w(i)}),[t.value]);var D=o({},t.treeProps,{checkable:C?true:false});var I=function e(i){w(i);t.onChange==null?void 0:t.onChange(i)};var P=r.useCallbackRef((function(e,i){f.current=i;var n=b==null?void 0:b.map((function(e){var n=i[e.value];return n?{label:n[h],value:n[p]}:undefined})).filter(Boolean);w(n);t.onDataSourceChange==null?void 0:t.onDataSourceChange(e,i)}));return x(d,{children:j==="vertical"?x(R,{value:b,onDeleteItem:k,fieldNames:t.fieldNames,onRequest:t.onRequest,textConfig:t.textConfig,onChange:I,onChangeDataSource:P,treeProps:D}):x(N,{value:b,onDeleteItem:k,fieldNames:t.fieldNames,onRequest:t.onRequest,textConfig:t.textConfig,onChange:I,onChangeDataSource:P,treeProps:D})})};var D=function e(i){var n=i.size,t=n===void 0?"large":n;var v=u(false),h=v[0],p=v[1];var f=l(document.querySelector("html"));var g=m.useResponsivePoint()||"";var j=g==="xs"?"vertical":"horizontal";var y=r.useCallbackRef((function(){p(true)}));var b=i.children.type;var w=u(),N=w[0],R=w[1];var D=s([]);var I=c((function(){if(!(f!=null&&f.height)||!g)return undefined;var e=["xs","sm"].includes(g);var n={};if(t=="large"){n={height:(f==null?void 0:f.height)*.65,width:800}}else if(t=="small"){n={height:(f==null?void 0:f.height)*.45,width:450}}else if(t=="middle"){n={height:(f==null?void 0:f.height)*.55,width:600}}return{height:i.modalBodyHeight||n.height,width:e?"90%":i.modalWidth||n.width}}),[f==null?void 0:f.height,g,t,i.modalBodyHeight,i.modalWidth]);var P=function e(){i.onChange==null?void 0:i.onChange(N);p(false)};var S=function e(){p(false);R(D.current)};return C(d,{children:[x(b,o({},i.children.props,{onClick:y})),x(a,{className:i.modalClassName,title:i.textConfig.title||"选择",open:h,onCancel:S,forceRender:i.forceRender,centered:true,width:I==null?void 0:I.width,onOk:P,styles:j==="horizontal"?{body:{height:I==null?void 0:I.height,maxHeight:"calc(100vh - 200px)",padding:"0px 20px 0 20px"},content:{padding:0},header:{padding:"20px 24px 0 20px"},footer:{padding:"0 24px 20px 24px"}}:{body:{height:I==null?void 0:I.height}},children:x(k,o({},i,{onChange:function e(i){R(i)}}))})]})};var I=t(D,{Content:k});export{I as TreeModal};
21
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal/select-item.tsx","@flatbiz/antd/src/tree-modal/tree.tsx","@flatbiz/antd/src/tree-modal/horizontal.tsx","@flatbiz/antd/src/tree-modal/vertical.tsx","@flatbiz/antd/src/tree-modal/select-modal.tsx"],"sourcesContent":["import { CloseOutlined } from '@ant-design/icons';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { CssNodeHover } from '../css-node-hover';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { TextOverflow } from '../text-overflow';\nimport { TreeModalProps } from './types';\n\nexport const SelectItemList = (props: {\n chenkedIdList: TPlainObject[];\n fieldNames: TreeModalProps['fieldNames'];\n onDeleteItem: (value: TAny) => void;\n}) => {\n const chenkedIdList = props.chenkedIdList;\n return (\n <Fragment>\n {chenkedIdList?.map((item) => {\n const value = item.value;\n const label = item.label || value;\n\n return (\n <CssNodeHover style={{ paddingLeft: 5, paddingRight: 0 }} key={value}>\n <FlexLayout\n fullIndex={1}\n direction=\"horizontal\"\n style={{\n alignItems: 'center',\n fontSize: 14,\n marginBottom: 0,\n color: '#505050',\n }}\n >\n <TextOverflow text={label} />\n <div\n style={{\n position: 'relative',\n zIndex: 9,\n color: '#a1a1a1',\n }}\n >\n <IconWrapper\n text={<CloseOutlined />}\n onClick={props.onDeleteItem.bind(null, value)}\n size=\"small\"\n style={{ paddingRight: 5, margin: '2px' }}\n />\n </div>\n </FlexLayout>\n </CssNodeHover>\n );\n })}\n </Fragment>\n );\n};\n","import { TAny, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { TreeServiceConfig, TreeWrapper, TreeWrapperProps } from '../tree-wrapper';\nimport { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const SelectContent = (props: {\n value?: TAny;\n onChange?: (value?: TreeModelSelectItem[]) => void;\n fieldNames?: TreeWrapperProps['fieldNames'];\n serviceConfig?: TreeServiceConfig;\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const modelKey = hooks.useId(undefined, 'tree-select-modal');\n return (\n <TreeWrapper\n initRootExpand\n showSearch\n searchPlaceholder=\"搜索\"\n checkable={true}\n checkableType=\"2\"\n {...props.treeProps}\n showIcon={props.treeProps?.icon ? true : false}\n value={props.value?.map((item) => item.value)}\n modelKey={modelKey}\n fieldNames={props.fieldNames}\n labelInValue={true}\n serviceConfig={props.serviceConfig}\n onChange={(values) => {\n props.onChange?.(toArray(values));\n }}\n />\n );\n};\n","import { TAny, TPlainObject, treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { FlexLayout } from '../flex-layout';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const HorizontalLayout = (props: {\n onChangeDataSourceMap: (data: TPlainObject) => void;\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n onRequest?: TreeModalProps['onRequest'];\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const chenkedIdList = props.value || [];\n\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" gap={10} style={{ height: '100%', overflow: 'hidden' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n onRequest: props.onRequest,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSourceMap(listMap);\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div\n style={{\n width: '40%',\n overflow: 'hidden',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n }}\n >\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder || '请选择'\n )}\n </div>\n <div style={{ overflow: 'auto', flex: 1, paddingRight: 15 }}>\n <SelectItemList\n chenkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n </FlexLayout>\n );\n};\n","import { TAny, TPlainObject, treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const VerticalLayout = (props: {\n onChangeDataSourceMap: (data: TPlainObject) => void;\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n onRequest?: TreeModalProps['onRequest'];\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const chenkedIdList = props.value || [];\n\n return (\n <div style={{ height: '100%', overflow: 'auto' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n onRequest: props.onRequest,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSourceMap(listMap);\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div style={{ marginTop: 20 }}>\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder\n )}\n </div>\n <SelectItemList\n chenkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n );\n};\n","import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Modal } from 'antd';\nimport { Fragment, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { HorizontalLayout } from './horizontal';\nimport { TreeModalProps, TreeModelSelectItem } from './types';\nimport { VerticalLayout } from './vertical';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModal = (props: TreeModalProps) => {\n const { size = 'large', isMultiple } = props;\n const [isOpen, setIsOpen] = useState(false);\n const [dataSourceMap, setDataSourceMap] = useState<TPlainObject>();\n const labelKey = props.fieldNames?.label || 'label';\n\n const htmlSize = useSize(document.querySelector('html'));\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n const isMultipleFt = isUndefinedOrNull(isMultiple) ? true : isMultiple;\n\n const handleOnClick = hooks.useCallbackRef(() => {\n setIsOpen(true);\n });\n\n const Action = props.children.type;\n\n const [values, setValues] = useState<TreeModelSelectItem[]>();\n const originalValuesRef = useRef<TreeModelSelectItem[]>([]);\n\n const onDeleteItem = (value) => {\n const targetList = values?.filter((item) => item.value !== value);\n setValues(targetList);\n };\n\n fbaHooks.useEffectCustom(() => {\n const values = toArray<TAny>(props.value).map((item) => {\n if (isObject(item)) return item;\n return {\n value: item,\n label: dataSourceMap?.[item][labelKey],\n };\n });\n if (dataSourceMap) {\n props.onSelectChange?.(values || []);\n }\n originalValuesRef.current = values || [];\n setValues(values);\n }, [props.value, dataSourceMap, labelKey]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n let sizeCalculate: TPlainObject = {};\n if (size == 'large') {\n sizeCalculate = {\n height: htmlSize?.height * 0.65,\n width: 800,\n };\n } else if (size == 'small') {\n sizeCalculate = {\n height: htmlSize?.height * 0.45,\n width: 450,\n };\n } else if (size == 'middle') {\n sizeCalculate = {\n height: htmlSize?.height * 0.55,\n width: 600,\n };\n }\n\n return {\n height: props.modalBodyHeight || sizeCalculate.height,\n width: isXsSm ? '90%' : props.modalWidth || sizeCalculate.width,\n };\n }, [htmlSize?.height, screenType, size, props.modalBodyHeight, props.modalWidth]);\n\n const treePropsFt = {\n ...props.treeProps,\n checkable: isMultipleFt ? true : false,\n };\n const onSubmit = () => {\n props.onSelectChange?.(values);\n props.onChange?.(values);\n setIsOpen(false);\n };\n\n const onChange = (values?: TreeModelSelectItem[]) => {\n setValues(values);\n };\n const onCancel = () => {\n setIsOpen(false);\n setValues(originalValuesRef.current);\n };\n\n return (\n <Fragment>\n <Action {...props.children.props} onClick={handleOnClick} />\n <Modal\n className={props.modalClassName}\n title={props.textConfig.title || '选择'}\n open={isOpen}\n onCancel={onCancel}\n forceRender={props.forceRender}\n centered\n width={customSize?.width}\n onOk={onSubmit}\n styles={\n direction === 'horizontal'\n ? {\n body: {\n height: customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n padding: '0px 0 0 20px',\n },\n content: {\n padding: 0,\n },\n header: {\n padding: '20px 24px 0 20px',\n },\n footer: {\n padding: '0 24px 20px 24px',\n },\n }\n : {\n body: {\n height: customSize?.height,\n },\n }\n }\n >\n {direction === 'vertical' ? (\n <VerticalLayout\n onChangeDataSourceMap={setDataSourceMap}\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n onRequest={props.onRequest}\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={props.onChangeDataSource}\n treeProps={treePropsFt}\n ></VerticalLayout>\n ) : (\n <HorizontalLayout\n value={values}\n onChangeDataSourceMap={setDataSourceMap}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n onRequest={props.onRequest}\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={props.onChangeDataSource}\n treeProps={treePropsFt}\n />\n )}\n </Modal>\n </Fragment>\n );\n};\n"],"names":["SelectItemList","props","chenkedIdList","_jsx","Fragment","children","map","item","value","label","CssNodeHover","style","paddingLeft","paddingRight","_jsxs","FlexLayout","fullIndex","direction","alignItems","fontSize","marginBottom","color","TextOverflow","text","position","zIndex","IconWrapper","_CloseOutlined","onClick","onDeleteItem","bind","size","margin","SelectContent","_props$treeProps","_props$value","modelKey","_hooks","useId","undefined","TreeWrapper","_extends","initRootExpand","showSearch","searchPlaceholder","checkable","checkableType","treeProps","showIcon","icon","fieldNames","labelInValue","serviceConfig","onChange","values","toArray","HorizontalLayout","_props$fieldNames","_props$fieldNames2","valueKey","childrenKey","_props$textConfig","textConfig","selectQuantityPrompt","placeholder","gap","height","overflow","backgroundColor","padding","borderRadius","onRequest","onRequestResultAdapter","respData","listMap","treeToTiledMap","onChangeDataSourceMap","onChangeDataSource","width","display","flexDirection","flexShrink","fontWeight","length","replace","flex","VerticalLayout","marginTop","TreeModal","_props$size","isMultiple","_useState","useState","isOpen","setIsOpen","_useState2","dataSourceMap","setDataSourceMap","labelKey","htmlSize","useSize","document","querySelector","screenType","fbaHooks","useResponsivePoint","isMultipleFt","isUndefinedOrNull","handleOnClick","useCallbackRef","Action","type","_useState3","setValues","originalValuesRef","useRef","targetList","filter","useEffectCustom","_isObject","onSelectChange","current","customSize","useMemo","isXsSm","includes","sizeCalculate","modalBodyHeight","modalWidth","treePropsFt","onSubmit","onCancel","Modal","className","modalClassName","title","open","forceRender","centered","onOk","styles","body","maxHeight","content","header","footer"],"mappings":";2mEASO,IAAMA,EAAiB,SAAjBA,EAAkBC,GAK7B,IAAMC,EAAgBD,EAAMC,cAC5B,OACEC,EAACC,EAAQ,CAAAC,SACNH,GAAAA,UAAAA,EAAAA,EAAeI,KAAI,SAACC,GACnB,IAAMC,EAAQD,EAAKC,MACnB,IAAMC,EAAQF,EAAKE,OAASD,EAE5B,OACEL,EAACO,EAAY,CAACC,MAAO,CAAEC,YAAa,EAAGC,aAAc,GAAIR,SACvDS,EAACC,EAAU,CACTC,UAAW,EACXC,UAAU,aACVN,MAAO,CACLO,WAAY,SACZC,SAAU,GACVC,aAAc,EACdC,MAAO,WACPhB,SAAA,CAEFF,EAACmB,EAAY,CAACC,KAAMd,IACpBN,EAAA,MAAA,CACEQ,MAAO,CACLa,SAAU,WACVC,OAAQ,EACRJ,MAAO,WACPhB,SAEFF,EAACuB,EAAW,CACVH,KAAMpB,EAAAwB,MACNC,QAAS3B,EAAM4B,aAAaC,KAAK,KAAMtB,GACvCuB,KAAK,QACLpB,MAAO,CAAEE,aAAc,EAAGmB,OAAQ,eAvBqBxB,OAgCzE,ECjDO,IAAMyB,EAAgB,SAAhBA,EAAiBhC,GAMxB,IAAAiC,EAAAC,EACJ,IAAMC,EAAWC,EAAMC,MAAMC,UAAW,qBACxC,OACEpC,EAACqC,EAAWC,EAAA,CACVC,eAAc,KACdC,WAAU,KACVC,kBAAkB,KAClBC,UAAW,KACXC,cAAc,KACV7C,EAAM8C,UAAS,CACnBC,UAAUd,EAAAjC,EAAM8C,YAANb,MAAAA,EAAiBe,KAAO,KAAO,MACzCzC,OAAK2B,EAAElC,EAAMO,QAAN2B,UAAAA,EAAAA,EAAa7B,KAAI,SAACC,GAAI,OAAKA,EAAKC,SACvC4B,SAAUA,EACVc,WAAYjD,EAAMiD,WAClBC,aAAc,KACdC,cAAenD,EAAMmD,cACrBC,SAAU,SAAAA,EAACC,GACTrD,EAAMoD,UAAQ,UAAA,EAAdpD,EAAMoD,SAAWE,EAAQD,GAC3B,IAGN,ECzBO,IAAME,EAAmB,SAAnBA,EAAoBvD,GAU3B,IAAAwD,EAAAC,EACJ,IAAMxD,EAAgBD,EAAMO,OAAS,GAErC,IAAMmD,IAAWF,EAAAxD,EAAMiD,aAANO,UAAAA,EAAAA,EAAkBjD,QAAS,QAC5C,IAAMoD,IAAcF,EAAAzD,EAAMiD,aAANQ,UAAAA,EAAAA,EAAkBrD,WAAY,WAElD,IAAAwD,EAA8C5D,EAAM6D,WAA5CC,EAAoBF,EAApBE,qBAAsBC,EAAWH,EAAXG,YAE9B,OACElD,EAACC,EAAU,CAACC,UAAW,EAAGC,UAAU,aAAagD,IAAK,GAAItD,MAAO,CAAEuD,OAAQ,OAAQC,SAAU,UAAW9D,UACtGF,EAAA,MAAA,CAAKQ,MAAO,CAAEyD,gBAAiB,UAAWC,QAAS,GAAIC,aAAc,GAAIjE,SACvEF,EAAC8B,EAAa,CACZc,UAAW9C,EAAM8C,UACjBvC,MAAON,EACPmD,SAAUpD,EAAMoD,SAChBH,WAAYjD,EAAMiD,WAClBE,cAAe,CACbmB,UAAWtE,EAAMsE,UACjBC,uBAAwB,SAAAA,EAACC,GACvB,IAAMC,EAAwBC,EAAeF,EAAU,CACrDjE,MAAOmD,EACPtD,SAAUuD,IAEZ3D,EAAM2E,sBAAsBF,GAC5BzE,EAAM4E,oBAAkB,UAAA,EAAxB5E,EAAM4E,mBAAqBJ,EAAUC,GACrC,OAAOD,CACT,OAKN3D,EAAA,MAAA,CACEH,MAAO,CACLmE,MAAO,MACPX,SAAU,SACVD,OAAQ,OACRa,QAAS,OACTC,cAAe,SACfC,WAAY,GACZ5E,UAEFF,EAAA,MAAA,CAAKQ,MAAO,CAAEQ,SAAU,GAAI+D,WAAY,MAAO9D,aAAc,IAAKf,SAC/DH,EAAciF,OAAS,EACtBhF,EAACC,EAAQ,CAAAC,SACN0D,EACGA,EAAqBqB,QAAQ,UAAc,KAAAlF,GAAa,UAAA,EAAbA,EAAeiF,SAAU,YAC9DjF,GAAa,UAAA,EAAbA,EAAeiF,UAG3BnB,GAAe,QAGnB7D,EAAA,MAAA,CAAKQ,MAAO,CAAEwD,SAAU,OAAQkB,KAAM,EAAGxE,aAAc,IAAKR,SAC1DF,EAACH,EAAc,CACbE,cAAeA,EACfgD,WAAYjD,EAAMiD,WAClBrB,aAAc5B,EAAM4B,sBAMhC,ECzEO,IAAMyD,EAAiB,SAAjBA,EAAkBrF,GAUzB,IAAAwD,EAAAC,EACJ,IAAAG,EAA8C5D,EAAM6D,WAA5CC,EAAoBF,EAApBE,qBAAsBC,EAAWH,EAAXG,YAC9B,IAAML,IAAWF,EAAAxD,EAAMiD,aAANO,UAAAA,EAAAA,EAAkBjD,QAAS,QAC5C,IAAMoD,IAAcF,EAAAzD,EAAMiD,aAANQ,UAAAA,EAAAA,EAAkBrD,WAAY,WAElD,IAAMH,EAAgBD,EAAMO,OAAS,GAErC,OACEM,EAAA,MAAA,CAAKH,MAAO,CAAEuD,OAAQ,OAAQC,SAAU,QAAS9D,UAC/CF,EAAA,MAAA,CAAKQ,MAAO,CAAEyD,gBAAiB,UAAWC,QAAS,GAAIC,aAAc,GAAIjE,SACvEF,EAAC8B,EAAa,CACZc,UAAW9C,EAAM8C,UACjBvC,MAAON,EACPmD,SAAUpD,EAAMoD,SAChBH,WAAYjD,EAAMiD,WAClBE,cAAe,CACbmB,UAAWtE,EAAMsE,UACjBC,uBAAwB,SAAAA,EAACC,GACvB,IAAMC,EAAwBC,EAAeF,EAAU,CACrDjE,MAAOmD,EACPtD,SAAUuD,IAEZ3D,EAAM2E,sBAAsBF,GAC5BzE,EAAM4E,oBAAkB,UAAA,EAAxB5E,EAAM4E,mBAAqBJ,EAAUC,GACrC,OAAOD,CACT,OAKN3D,EAAA,MAAA,CAAKH,MAAO,CAAE4E,UAAW,IAAKlF,UAC5BF,EAAA,MAAA,CAAKQ,MAAO,CAAEQ,SAAU,GAAI+D,WAAY,MAAO9D,aAAc,IAAKf,SAC/DH,EAAciF,OAAS,EACtBhF,EAACC,EAAQ,CAAAC,SACN0D,EACGA,EAAqBqB,QAAQ,UAAc,KAAAlF,GAAa,UAAA,EAAbA,EAAeiF,SAAU,YAC9DjF,GAAa,UAAA,EAAbA,EAAeiF,UAG3BnB,IAGJ7D,EAACH,EAAc,CACbE,cAAeA,EACfgD,WAAYjD,EAAMiD,WAClBrB,aAAc5B,EAAM4B,oBAK9B,MChDa2D,EAAY,SAAZA,EAAavF,GAA0B,IAAAwD,EAClD,IAAAgC,EAAuCxF,EAA/B8B,KAAAA,EAAI0D,SAAG,EAAA,QAAOA,EAAEC,EAAezF,EAAfyF,WACxB,IAAAC,EAA4BC,EAAS,OAA9BC,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxB,IAAAI,EAA0CH,IAAnCI,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GACtC,IAAMG,IAAWzC,EAAAxD,EAAMiD,aAANO,UAAAA,EAAAA,EAAkBhD,QAAS,QAE5C,IAAM0F,EAAWC,EAAQC,SAASC,cAAc,SAChD,IAAMC,EAAaC,EAASC,sBAAwB,GAEpD,IAAMxF,EAAYsF,IAAe,KAAO,WAAa,aACrD,IAAMG,EAAeC,EAAkBjB,GAAc,KAAOA,EAE5D,IAAMkB,EAAgBvE,EAAMwE,gBAAe,WACzCf,EAAU,KACZ,IAEA,IAAMgB,EAAS7G,EAAMI,SAAS0G,KAE9B,IAAAC,EAA4BpB,IAArBtC,EAAM0D,EAAA,GAAEC,EAASD,EAAA,GACxB,IAAME,EAAoBC,EAA8B,IAExD,IAAMtF,EAAe,SAAfA,EAAgBrB,GACpB,IAAM4G,EAAa9D,GAAM,UAAA,EAANA,EAAQ+D,QAAO,SAAC9G,GAAI,OAAKA,EAAKC,QAAUA,KAC3DyG,EAAUG,IAGZZ,EAASc,iBAAgB,WACvB,IAAMhE,EAASC,EAActD,EAAMO,OAAOF,KAAI,SAACC,GAC7C,GAAIgH,EAAShH,GAAO,OAAOA,EAC3B,MAAO,CACLC,MAAOD,EACPE,MAAOuF,GAAAA,UAAAA,EAAAA,EAAgBzF,GAAM2F,GAEjC,IACA,GAAIF,EAAe,CACjB/F,EAAMuH,gBAAc,UAAA,EAApBvH,EAAMuH,eAAiBlE,GAAU,GACnC,CACA4D,EAAkBO,QAAUnE,GAAU,GACtC2D,EAAU3D,EACX,GAAE,CAACrD,EAAMO,MAAOwF,EAAeE,IAEhC,IAAMwB,EAAaC,GAAQ,WACzB,KAAKxB,GAAQ,MAARA,EAAUjC,UAAWqC,EAAY,OAAOhE,UAC7C,IAAMqF,EAAS,CAAC,KAAM,MAAMC,SAAStB,GACrC,IAAIuB,EAA8B,CAAA,EAClC,GAAI/F,GAAQ,QAAS,CACnB+F,EAAgB,CACd5D,QAAQiC,GAAQ,UAAA,EAARA,EAAUjC,QAAS,IAC3BY,MAAO,IAEX,MAAO,GAAI/C,GAAQ,QAAS,CAC1B+F,EAAgB,CACd5D,QAAQiC,GAAQ,UAAA,EAARA,EAAUjC,QAAS,IAC3BY,MAAO,IAEX,MAAO,GAAI/C,GAAQ,SAAU,CAC3B+F,EAAgB,CACd5D,QAAQiC,GAAQ,UAAA,EAARA,EAAUjC,QAAS,IAC3BY,MAAO,IAEX,CAEA,MAAO,CACLZ,OAAQjE,EAAM8H,iBAAmBD,EAAc5D,OAC/CY,MAAO8C,EAAS,MAAQ3H,EAAM+H,YAAcF,EAAchD,MAE7D,GAAE,CAACqB,GAAQ,UAAA,EAARA,EAAUjC,OAAQqC,EAAYxE,EAAM9B,EAAM8H,gBAAiB9H,EAAM+H,aAErE,IAAMC,EAAWxF,EACZxC,GAAAA,EAAM8C,UAAS,CAClBF,UAAW6D,EAAe,KAAO,QAEnC,IAAMwB,EAAW,SAAXA,IACJjI,EAAMuH,gBAANvH,UAAAA,EAAAA,EAAMuH,eAAiBlE,GACvBrD,EAAMoD,UAANpD,UAAAA,EAAAA,EAAMoD,SAAWC,GACjBwC,EAAU,QAGZ,IAAMzC,EAAW,SAAXA,EAAYC,GAChB2D,EAAU3D,IAEZ,IAAM6E,EAAW,SAAXA,IACJrC,EAAU,OACVmB,EAAUC,EAAkBO,UAG9B,OACE3G,EAACV,EAAQ,CAAAC,SAAA,CACPF,EAAC2G,EAAMrE,EAAA,CAAA,EAAKxC,EAAMI,SAASJ,MAAK,CAAE2B,QAASgF,KAC3CzG,EAACiI,EAAK,CACJC,UAAWpI,EAAMqI,eACjBC,MAAOtI,EAAM6D,WAAWyE,OAAS,KACjCC,KAAM3C,EACNsC,SAAUA,EACVM,YAAaxI,EAAMwI,YACnBC,SAAQ,KACR5D,MAAO4C,GAAAA,UAAAA,EAAAA,EAAY5C,MACnB6D,KAAMT,EACNU,OACE3H,IAAc,aACV,CACE4H,KAAM,CACJ3E,OAAQwD,GAAAA,UAAAA,EAAAA,EAAYxD,OACpB4E,UAAW,sBACXzE,QAAS,gBAEX0E,QAAS,CACP1E,QAAS,GAEX2E,OAAQ,CACN3E,QAAS,oBAEX4E,OAAQ,CACN5E,QAAS,qBAGb,CACEwE,KAAM,CACJ3E,OAAQwD,GAAAA,UAAAA,EAAAA,EAAYxD,SAG7B7D,SAEAY,IAAc,WACbd,EAACmF,EAAc,CACbV,sBAAuBqB,EACvBzF,MAAO8C,EACPzB,aAAcA,EACdqB,WAAYjD,EAAMiD,WAClBqB,UAAWtE,EAAMsE,UACjBT,WAAY7D,EAAM6D,WAClBT,SAAUA,EACVwB,mBAAoB5E,EAAM4E,mBAC1B9B,UAAWkF,IAGb9H,EAACqD,EAAgB,CACfhD,MAAO8C,EACPsB,sBAAuBqB,EACvBpE,aAAcA,EACdqB,WAAYjD,EAAMiD,WAClBqB,UAAWtE,EAAMsE,UACjBT,WAAY7D,EAAM6D,WAClBT,SAAUA,EACVwB,mBAAoB5E,EAAM4E,mBAC1B9B,UAAWkF,QAMvB"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal/select-item.tsx","@flatbiz/antd/src/tree-modal/tree.tsx","@flatbiz/antd/src/tree-modal/horizontal.tsx","@flatbiz/antd/src/tree-modal/vertical.tsx","@flatbiz/antd/src/tree-modal/select-modal-content.tsx","@flatbiz/antd/src/tree-modal/select-modal.tsx","@flatbiz/antd/src/tree-modal/index.ts"],"sourcesContent":["import { CloseOutlined } from '@ant-design/icons';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { CssNodeHover } from '../css-node-hover';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { TextOverflow } from '../text-overflow';\nimport type { TreeModalProps } from './types';\n\nexport const SelectItemList = (props: {\n chenkedIdList: TPlainObject[];\n fieldNames: TreeModalProps['fieldNames'];\n onDeleteItem: (value: TAny) => void;\n}) => {\n const chenkedIdList = props.chenkedIdList;\n return (\n <Fragment>\n {chenkedIdList?.map((item) => {\n const value = item.value;\n const label = item.label || value;\n\n return (\n <CssNodeHover style={{ paddingLeft: 5, paddingRight: 0 }} key={value}>\n <FlexLayout\n fullIndex={1}\n direction=\"horizontal\"\n style={{\n alignItems: 'center',\n fontSize: 14,\n marginBottom: 0,\n color: '#505050',\n }}\n >\n <TextOverflow text={label} />\n <div\n style={{\n position: 'relative',\n zIndex: 9,\n color: '#a1a1a1',\n }}\n >\n <IconWrapper\n text={<CloseOutlined />}\n onClick={props.onDeleteItem.bind(null, value)}\n size=\"small\"\n style={{ paddingRight: 5, margin: '2px' }}\n />\n </div>\n </FlexLayout>\n </CssNodeHover>\n );\n })}\n </Fragment>\n );\n};\n","import type { TAny } from '@flatbiz/utils';\nimport { toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport type { TreeServiceConfig, TreeWrapperProps } from '../tree-wrapper';\nimport { TreeWrapper } from '../tree-wrapper';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const SelectContent = (props: {\n value?: TAny;\n onChange?: (value?: TreeModelSelectItem[]) => void;\n fieldNames?: TreeWrapperProps['fieldNames'];\n serviceConfig?: TreeServiceConfig;\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const modelKey = hooks.useId(undefined, 'tree-select-modal');\n return (\n <TreeWrapper\n initRootExpand\n showSearch\n searchPlaceholder=\"搜索\"\n checkable={true}\n checkableType=\"2\"\n {...props.treeProps}\n showIcon={props.treeProps?.icon ? true : false}\n value={props.value?.map((item) => item.value)}\n modelKey={modelKey}\n fieldNames={props.fieldNames}\n labelInValue={true}\n serviceConfig={props.serviceConfig}\n onChange={(values) => {\n props.onChange?.(toArray(values));\n }}\n />\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { FlexLayout } from '../flex-layout';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const HorizontalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n onRequest?: TreeModalProps['onRequest'];\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const chenkedIdList = props.value || [];\n\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n\n return (\n <FlexLayout fullIndex={0} direction=\"horizontal\" gap={10} style={{ height: '100%', overflow: 'hidden' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n onRequest: props.onRequest,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div\n style={{\n width: '40%',\n overflow: 'hidden',\n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n flexShrink: 0,\n }}\n >\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder || '请选择'\n )}\n </div>\n <div style={{ overflow: 'auto', flex: 1 }}>\n <SelectItemList\n chenkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n </FlexLayout>\n );\n};\n","import type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { treeToTiledMap } from '@flatbiz/utils';\nimport { Fragment } from 'react';\nimport { SelectItemList } from './select-item';\nimport { SelectContent } from './tree';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\nexport const VerticalLayout = (props: {\n onChangeDataSource?: (treeDataList: TPlainObject[], mapData: TPlainObject) => void;\n onDeleteItem: (value: TAny) => void;\n fieldNames?: TreeModalProps['fieldNames'];\n onRequest?: TreeModalProps['onRequest'];\n textConfig: TreeModalProps['textConfig'];\n onChange?: (value?: TreeModelSelectItem[]) => void;\n value?: TreeModelSelectItem[];\n treeProps?: TreeModalProps['treeProps'];\n}) => {\n const { selectQuantityPrompt, placeholder } = props.textConfig;\n const valueKey = props.fieldNames?.value || 'value';\n const childrenKey = props.fieldNames?.children || 'children';\n\n const chenkedIdList = props.value || [];\n\n return (\n <div style={{ height: '100%', overflow: 'auto' }}>\n <div style={{ backgroundColor: '#f4f4f4', padding: 10, borderRadius: 5 }}>\n <SelectContent\n treeProps={props.treeProps}\n value={chenkedIdList}\n onChange={props.onChange}\n fieldNames={props.fieldNames}\n serviceConfig={{\n onRequest: props.onRequest,\n onRequestResultAdapter: (respData) => {\n const listMap: TPlainObject = treeToTiledMap(respData, {\n value: valueKey,\n children: childrenKey,\n });\n props.onChangeDataSource?.(respData, listMap);\n return respData;\n },\n }}\n />\n </div>\n\n <div style={{ marginTop: 20 }}>\n <div style={{ fontSize: 15, fontWeight: '500', marginBottom: 10 }}>\n {chenkedIdList.length > 0 ? (\n <Fragment>\n {selectQuantityPrompt\n ? selectQuantityPrompt.replace('{total}', `${chenkedIdList?.length || ''}`)\n : `已选择${chenkedIdList?.length}`}\n </Fragment>\n ) : (\n placeholder\n )}\n </div>\n <SelectItemList\n chenkedIdList={chenkedIdList}\n fieldNames={props.fieldNames}\n onDeleteItem={props.onDeleteItem}\n />\n </div>\n </div>\n );\n};\n","import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Fragment, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { HorizontalLayout } from './horizontal';\nimport type { TreeModalContentProps, TreeModelSelectItem } from './types';\nimport { VerticalLayout } from './vertical';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalContent = (props: TreeModalContentProps) => {\n const { isMultiple } = props;\n const labelKey = props.fieldNames?.label || 'label';\n const valueKey = props.fieldNames?.value || 'value';\n const dataSourceMapRef = useRef<TPlainObject>({});\n\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n const isMultipleFt = isUndefinedOrNull(isMultiple) ? true : isMultiple;\n\n const [values, setValues] = useState<TreeModelSelectItem[]>();\n\n const onDeleteItem = (value) => {\n const targetList = values?.filter((item) => item.value !== value);\n setValues(targetList);\n props.onChange?.(targetList);\n };\n\n fbaHooks.useEffectCustom(() => {\n const values = toArray<TAny>(props.value).map((item) => {\n const target = isObject(item) ? item : { label: item, value: item };\n const value = target.value;\n return {\n value: value,\n label: dataSourceMapRef.current[value]?.[labelKey] || '',\n };\n });\n setValues(values);\n }, [props.value]);\n\n const treePropsFt = {\n ...props.treeProps,\n checkable: isMultipleFt ? true : false,\n };\n\n const onChange = (values?: TreeModelSelectItem[]) => {\n setValues(values);\n props.onChange?.(values);\n };\n\n const onChangeDataSource = hooks.useCallbackRef((treeDataList: TPlainObject[], mapData: TPlainObject) => {\n dataSourceMapRef.current = mapData;\n const result = values\n ?.map((item) => {\n const target = mapData[item.value];\n return target ? { label: target[labelKey], value: target[valueKey] } : undefined;\n })\n .filter(Boolean) as TreeModelSelectItem[];\n setValues(result);\n props.onDataSourceChange?.(treeDataList, mapData);\n });\n\n return (\n <Fragment>\n {direction === 'vertical' ? (\n <VerticalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n onRequest={props.onRequest}\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n ></VerticalLayout>\n ) : (\n <HorizontalLayout\n value={values}\n onDeleteItem={onDeleteItem}\n fieldNames={props.fieldNames}\n onRequest={props.onRequest}\n textConfig={props.textConfig}\n onChange={onChange}\n onChangeDataSource={onChangeDataSource}\n treeProps={treePropsFt}\n />\n )}\n </Fragment>\n );\n};\n","import type { TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { useSize } from 'ahooks';\nimport { Modal } from 'antd';\nimport { Fragment, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { TreeModalContent } from './select-modal-content';\nimport type { TreeModalProps, TreeModelSelectItem } from './types';\n\n/**\n * 树节点数据选择,一般用于选择员工等\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModal = (props: TreeModalProps) => {\n const { size = 'large' } = props;\n const [isOpen, setIsOpen] = useState(false);\n\n const htmlSize = useSize(document.querySelector('html'));\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const direction = screenType === 'xs' ? 'vertical' : 'horizontal';\n\n const handleOnClick = hooks.useCallbackRef(() => {\n setIsOpen(true);\n });\n\n const Action = props.children.type;\n\n const [values, setValues] = useState<TreeModelSelectItem[]>();\n const originalValuesRef = useRef<TreeModelSelectItem[]>([]);\n\n const customSize = useMemo(() => {\n if (!htmlSize?.height || !screenType) return undefined;\n const isXsSm = ['xs', 'sm'].includes(screenType);\n let sizeCalculate: TPlainObject = {};\n if (size == 'large') {\n sizeCalculate = {\n height: htmlSize?.height * 0.65,\n width: 800,\n };\n } else if (size == 'small') {\n sizeCalculate = {\n height: htmlSize?.height * 0.45,\n width: 450,\n };\n } else if (size == 'middle') {\n sizeCalculate = {\n height: htmlSize?.height * 0.55,\n width: 600,\n };\n }\n\n return {\n height: props.modalBodyHeight || sizeCalculate.height,\n width: isXsSm ? '90%' : props.modalWidth || sizeCalculate.width,\n };\n }, [htmlSize?.height, screenType, size, props.modalBodyHeight, props.modalWidth]);\n\n const onSubmit = () => {\n props.onChange?.(values);\n setIsOpen(false);\n };\n\n const onCancel = () => {\n setIsOpen(false);\n setValues(originalValuesRef.current);\n };\n\n return (\n <Fragment>\n <Action {...props.children.props} onClick={handleOnClick} />\n <Modal\n className={props.modalClassName}\n title={props.textConfig.title || '选择'}\n open={isOpen}\n onCancel={onCancel}\n forceRender={props.forceRender}\n centered\n width={customSize?.width}\n onOk={onSubmit}\n styles={\n direction === 'horizontal'\n ? {\n body: {\n height: customSize?.height,\n maxHeight: 'calc(100vh - 200px)',\n padding: '0px 20px 0 20px',\n },\n content: {\n padding: 0,\n },\n header: {\n padding: '20px 24px 0 20px',\n },\n footer: {\n padding: '0 24px 20px 24px',\n },\n }\n : {\n body: {\n height: customSize?.height,\n },\n }\n }\n >\n <TreeModalContent\n {...props}\n onChange={(values) => {\n setValues(values);\n }}\n />\n </Modal>\n </Fragment>\n );\n};\n","import { attachPropertiesToComponent } from '@flatbiz/utils';\nimport { TreeModal as TreeModalInner } from './select-modal';\nimport { TreeModalContent } from './select-modal-content';\n\nexport const TreeModal = attachPropertiesToComponent(TreeModalInner, {\n Content: TreeModalContent,\n});\n"],"names":["SelectItemList","props","chenkedIdList","_jsx","Fragment","children","map","item","value","label","CssNodeHover","style","paddingLeft","paddingRight","_jsxs","FlexLayout","fullIndex","direction","alignItems","fontSize","marginBottom","color","TextOverflow","text","position","zIndex","IconWrapper","_CloseOutlined","onClick","onDeleteItem","bind","size","margin","SelectContent","_props$treeProps","_props$value","modelKey","_hooks","useId","undefined","TreeWrapper","_extends","initRootExpand","showSearch","searchPlaceholder","checkable","checkableType","treeProps","showIcon","icon","fieldNames","labelInValue","serviceConfig","onChange","values","toArray","HorizontalLayout","_props$fieldNames","_props$fieldNames2","valueKey","childrenKey","_props$textConfig","textConfig","selectQuantityPrompt","placeholder","gap","height","overflow","backgroundColor","padding","borderRadius","onRequest","onRequestResultAdapter","respData","listMap","treeToTiledMap","onChangeDataSource","width","display","flexDirection","flexShrink","fontWeight","length","replace","flex","VerticalLayout","marginTop","TreeModalContent","isMultiple","labelKey","dataSourceMapRef","useRef","screenType","fbaHooks","useResponsivePoint","isMultipleFt","isUndefinedOrNull","_useState","useState","setValues","targetList","filter","useEffectCustom","_dataSourceMapRef$cur","target","_isObject","current","treePropsFt","useCallbackRef","treeDataList","mapData","result","Boolean","onDataSourceChange","TreeModal","_props$size","isOpen","setIsOpen","htmlSize","useSize","document","querySelector","handleOnClick","Action","type","_useState2","originalValuesRef","customSize","useMemo","isXsSm","includes","sizeCalculate","modalBodyHeight","modalWidth","onSubmit","onCancel","Modal","className","modalClassName","title","open","forceRender","centered","onOk","styles","body","maxHeight","content","header","footer","attachPropertiesToComponent","TreeModalInner","Content"],"mappings":"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"}
@@ -18,5 +18,5 @@ import './../dialog-modal/index.css';
18
18
  import './../input-search-wrapper/index.css';
19
19
  import './index.css';
20
20
  /*! @flatjs/forge MIT @flatbiz/antd */
21
- import{a as i,_ as e}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isObject as o}from"@dimjs/lang/cjs/is-object";import{isUndefinedOrNull as n,toArray as t}from"@flatbiz/utils";import{Select as r}from"antd";import{useState as a}from"react";import{TreeModal as s}from"../tree-modal/index.js";import{jsx as l}from"react/jsx-runtime";import"@wove/react/cjs/hooks";import"ahooks";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"../flex-layout/index.js";import"@dimjs/utils/cjs/class-names";import"@ant-design/icons/es/icons/CloseOutlined";import"../css-node-hover/index.js";import"../icon-wrapper/index.js";import"@dimjs/lang/cjs/is-undefined";import"../text-overflow/index.js";import"@dimjs/lang/cjs/is-string";import"../tree-wrapper/index.js";import"@dimjs/model-react";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"@dimjs/utils/cjs/tree";import"dequal";var m=["placeholder","maxTagCount","labelInValue"];var p=function p(d){var u=d.placeholder,c=d.maxTagCount,j=d.labelInValue,g=i(d,m);var f=n(u)?"请选择":u;var v=a((function(){var i;return((i=t(d.value))==null?void 0:i.map((function(i){return o(i)?i:{label:i,value:i}})))||[]})),x=v[0],h=v[1];var C=function i(e){var o=t(e).length?e:undefined;if(g.isMultiple==false){d.onChange==null?void 0:d.onChange(o==null?void 0:o[0])}else{d.onChange==null?void 0:d.onChange(o)}};var w=function i(e){if(j){C(e);return}C(e==null?void 0:e.map((function(i){return i.value})))};var y=function i(e){if(j){C(e);return}C(e==null?void 0:e.map((function(i){return i.value})))};return l(s,e({},g,{forceRender:true,onChange:y,onSelectChange:function i(e){h(e||[]);d.onSelectChange==null?void 0:d.onSelectChange(e||[])},children:l(r,{labelInValue:true,style:{width:"100%"},placeholder:f,maxTagCount:c,mode:"multiple",open:false,value:x,onChange:w})}))};export{p as TreeModalSelector};
21
+ import{a as e,_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as o}from"@wove/react/cjs/hooks";import{isObject as r}from"@dimjs/lang/cjs/is-object";import{isUndefinedOrNull as a,toArray as n}from"@flatbiz/utils";import{Select as t}from"antd";import{useRef as l,useState as s,useEffect as m}from"react";import{TreeModal as p}from"../tree-modal/index.js";import{jsx as d}from"react/jsx-runtime";import"ahooks";import"../fba-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"../flex-layout/index.js";import"@dimjs/utils/cjs/class-names";import"@ant-design/icons/es/icons/CloseOutlined";import"../css-node-hover/index.js";import"../icon-wrapper/index.js";import"@dimjs/lang/cjs/is-undefined";import"../text-overflow/index.js";import"@dimjs/lang/cjs/is-string";import"../tree-wrapper/index.js";import"@dimjs/model-react";import"@ant-design/icons/es/icons/CaretDownFilled";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/utils/cjs/extend";import"@dimjs/utils/cjs/get";import"@dimjs/model";import"../button-operate/index.js";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-7f4ad045.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"../dropdown-menu-wrapper/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"react-dom/client";import"@wove/react/cjs/create-ctx";import"../input-search-wrapper/index.js";import"../request-status/index.js";import"@dimjs/utils/cjs/tree";import"dequal";var u=["placeholder","maxTagCount","labelInValue"];var c=function c(j){var v,f;var g=j.placeholder,x=j.maxTagCount,h=j.labelInValue,b=e(j,u);var C=a(g)?"请选择":g;var w=l({});var y=((v=b.fieldNames)==null?void 0:v.label)||"label";var k=((f=b.fieldNames)==null?void 0:f.value)||"value";var F=s(),O=F[0],_=F[1];m((function(){var e;var i=((e=n(j.value))==null?void 0:e.map((function(e){var i;var o=r(e)?e:{label:e,value:e};return{value:o.value,label:((i=w.current[o.value])==null?void 0:i[y])||o.value}})))||[];_(i)}),[y,j.value]);var z=function e(i){var o=n(i).length?i:undefined;if(b.isMultiple==false){j.onChange==null?void 0:j.onChange(o==null?void 0:o[0])}else{j.onChange==null?void 0:j.onChange(o)}};var D=function e(i){_(i);if(h){z(i);return}z(i==null?void 0:i.map((function(e){return e.value})))};var I=function e(i){_(i);if(h){z(i);return}z(i==null?void 0:i.map((function(e){return e.value})))};var N=o.useCallbackRef((function(e,i){w.current=i;var o=O==null?void 0:O.map((function(e){var o=i[e.value];return o?{label:o[y],value:o[k]}:undefined})).filter(Boolean);_(o)}));return d(p,i({},b,{forceRender:true,onChange:I,onDataSourceChange:N,children:d(t,{labelInValue:true,style:{width:"100%"},placeholder:C,maxTagCount:x,mode:"multiple",open:false,value:O,onChange:D})}))};export{c as TreeModalSelector};
22
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal-selector/selector.tsx"],"sourcesContent":["import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { Select } from 'antd';\nimport { useState } from 'react';\nimport { TreeModal } from '../tree-modal';\nimport { TreeModalProps, TreeModelSelectItem } from '../tree-modal/types';\nexport type TreeModalSelectorProps = Omit<TreeModalProps, 'children' | 'forceRender' | 'onChange'> & {\n placeholder?: string;\n /**\n * 1. 可指定数量\n * 2. 可设置 responsive,一行自适应显示\n */\n maxTagCount?: number | 'responsive';\n /** 是否返回label+value模式 */\n labelInValue?: boolean;\n onChange?: (values?: TreeModelSelectItem[] | TreeModelSelectItem) => void;\n};\n\n/**\n * 树弹框选择器\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalSelector = (props: TreeModalSelectorProps) => {\n const { placeholder, maxTagCount, labelInValue, ...otherProps } = props;\n const placeholderFt = isUndefinedOrNull(placeholder) ? '请选择' : placeholder;\n\n const [showValues, setShowValues] = useState<TreeModelSelectItem[]>(() => {\n return (\n toArray(props.value)?.map((item) => {\n return isObject(item)\n ? (item as TreeModelSelectItem)\n : ({ label: item, value: item } as TreeModelSelectItem);\n }) || []\n );\n });\n\n const onInnerChange = (value: TreeModelSelectItem[]) => {\n const valueFt = toArray(value).length ? value : undefined;\n if (otherProps.isMultiple == false) {\n props.onChange?.(valueFt?.[0]);\n } else {\n props.onChange?.(valueFt);\n }\n };\n\n const onSelectChange = (value) => {\n if (labelInValue) {\n onInnerChange(value);\n return;\n }\n\n onInnerChange(value?.map((item) => item.value));\n };\n const treeModalChange = (value) => {\n if (labelInValue) {\n onInnerChange(value);\n return;\n }\n\n onInnerChange(value?.map((item) => item.value));\n };\n\n return (\n <TreeModal\n {...otherProps}\n forceRender={true}\n onChange={treeModalChange}\n onSelectChange={(values) => {\n setShowValues(values || []);\n props.onSelectChange?.(values || []);\n }}\n >\n <Select\n labelInValue\n style={{ width: '100%' }}\n placeholder={placeholderFt}\n maxTagCount={maxTagCount}\n mode=\"multiple\"\n open={false}\n value={showValues}\n onChange={onSelectChange}\n />\n </TreeModal>\n );\n};\n"],"names":["TreeModalSelector","props","placeholder","maxTagCount","labelInValue","otherProps","_objectWithoutPropertiesLoose","_excluded","placeholderFt","isUndefinedOrNull","_useState","useState","_toArray","toArray","value","map","item","_isObject","label","showValues","setShowValues","onInnerChange","valueFt","length","undefined","isMultiple","onChange","onSelectChange","treeModalChange","_jsx","TreeModal","_extends","forceRender","values","children","Select","style","width","mode","open"],"mappings":";6+DAyBaA,EAAoB,SAApBA,EAAqBC,GAChC,IAAQC,EAA0DD,EAA1DC,YAAaC,EAA6CF,EAA7CE,YAAaC,EAAgCH,EAAhCG,aAAiBC,EAAUC,EAAKL,EAAKM,GACvE,IAAMC,EAAgBC,EAAkBP,GAAe,MAAQA,EAE/D,IAAAQ,EAAoCC,GAAgC,WAAM,IAAAC,EACxE,QACEA,EAAAC,EAAQZ,EAAMa,SAAM,UAAA,EAApBF,EAAsBG,KAAI,SAACC,GACzB,OAAOC,EAASD,GACXA,EACA,CAAEE,MAAOF,EAAMF,MAAOE,EAC5B,MAAK,EAEV,IAROG,EAAUT,EAAA,GAAEU,EAAaV,EAAA,GAUhC,IAAMW,EAAgB,SAAhBA,EAAiBP,GACrB,IAAMQ,EAAUT,EAAQC,GAAOS,OAAST,EAAQU,UAChD,GAAInB,EAAWoB,YAAc,MAAO,CAClCxB,EAAMyB,UAANzB,UAAAA,EAAAA,EAAMyB,SAAWJ,GAAAA,UAAAA,EAAAA,EAAU,GAC7B,KAAO,CACLrB,EAAMyB,UAANzB,UAAAA,EAAAA,EAAMyB,SAAWJ,EACnB,GAGF,IAAMK,EAAiB,SAAjBA,EAAkBb,GACtB,GAAIV,EAAc,CAChBiB,EAAcP,GACd,MACF,CAEAO,EAAcP,GAAAA,UAAAA,EAAAA,EAAOC,KAAI,SAACC,GAAI,OAAKA,EAAKF,KAAK,MAE/C,IAAMc,EAAkB,SAAlBA,EAAmBd,GACvB,GAAIV,EAAc,CAChBiB,EAAcP,GACd,MACF,CAEAO,EAAcP,GAAAA,UAAAA,EAAAA,EAAOC,KAAI,SAACC,GAAI,OAAKA,EAAKF,KAAK,MAG/C,OACEe,EAACC,EAASC,KACJ1B,EAAU,CACd2B,YAAa,KACbN,SAAUE,EACVD,eAAgB,SAAAA,EAACM,GACfb,EAAca,GAAU,IACxBhC,EAAM0B,gBAAc,UAAA,EAApB1B,EAAM0B,eAAiBM,GAAU,GACjC,EAAAC,SAEFL,EAACM,EAAM,CACL/B,aAAY,KACZgC,MAAO,CAAEC,MAAO,QAChBnC,YAAaM,EACbL,YAAaA,EACbmC,KAAK,WACLC,KAAM,MACNzB,MAAOK,EACPO,SAAUC,MAIlB"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-modal-selector/selector.tsx"],"sourcesContent":["import { isObject } from '@dimjs/lang';\nimport { isUndefinedOrNull, toArray, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Select } from 'antd';\nimport { useEffect, useRef, useState } from 'react';\nimport { TreeModal } from '../tree-modal';\nimport type { TreeModalProps, TreeModelSelectItem } from '../tree-modal/types';\nexport type TreeModalSelectorProps = Omit<TreeModalProps, 'children' | 'forceRender' | 'onChange'> & {\n placeholder?: string;\n /**\n * 1. 可指定数量\n * 2. 可设置 responsive,一行自适应显示\n */\n maxTagCount?: number | 'responsive';\n /** 是否返回label+value模式 */\n labelInValue?: boolean;\n onChange?: (values?: TreeModelSelectItem[] | TreeModelSelectItem) => void;\n};\n\n/**\n * 树弹框选择器\n * ```\n * 1. 可通过 treeProps.checkableType 配置多选节点模式(包括返回所有节点、只返回叶子节点、叶子节点&父节点全选只返回父节点),默认只返回叶子节点\n * 2. demo: https://fex.qa.tcshuke.com/docs/admin/main/selector/tree\n * ```\n */\nexport const TreeModalSelector = (props: TreeModalSelectorProps) => {\n const { placeholder, maxTagCount, labelInValue, ...otherProps } = props;\n const placeholderFt = isUndefinedOrNull(placeholder) ? '请选择' : placeholder;\n\n const dataSourceMapRef = useRef<TPlainObject>({});\n\n const labelKey = otherProps.fieldNames?.label || 'label';\n const valueKey = otherProps.fieldNames?.value || 'value';\n\n const [showValues, setShowValues] = useState<TreeModelSelectItem[]>();\n\n useEffect(() => {\n const dataList =\n toArray(props.value)?.map((item) => {\n const objItems = (isObject(item) ? item : { label: item, value: item }) as TreeModelSelectItem;\n return {\n value: objItems.value,\n label: dataSourceMapRef.current[objItems.value]?.[labelKey] || objItems.value,\n } as TreeModelSelectItem;\n }) || [];\n setShowValues(dataList);\n }, [labelKey, props.value]);\n\n const onInnerChange = (value: TreeModelSelectItem[]) => {\n const valueFt = toArray(value).length ? value : undefined;\n if (otherProps.isMultiple == false) {\n props.onChange?.(valueFt?.[0]);\n } else {\n props.onChange?.(valueFt);\n }\n };\n\n const onSelectChange = (value) => {\n setShowValues(value);\n if (labelInValue) {\n onInnerChange(value);\n return;\n }\n\n onInnerChange(value?.map((item) => item.value));\n };\n const treeModalChange = (value) => {\n setShowValues(value);\n if (labelInValue) {\n onInnerChange(value);\n return;\n }\n onInnerChange(value?.map((item) => item.value));\n };\n\n const onDataSourceChange = hooks.useCallbackRef((_treeDataList: TPlainObject[], mapData: TPlainObject) => {\n dataSourceMapRef.current = mapData;\n const result = showValues\n ?.map((item) => {\n const target = mapData[item.value];\n return target ? { label: target[labelKey], value: target[valueKey] } : undefined;\n })\n .filter(Boolean) as TreeModelSelectItem[];\n setShowValues(result);\n });\n\n return (\n <TreeModal\n {...otherProps}\n forceRender={true}\n onChange={treeModalChange}\n onDataSourceChange={onDataSourceChange}\n >\n <Select\n labelInValue\n style={{ width: '100%' }}\n placeholder={placeholderFt}\n maxTagCount={maxTagCount}\n mode=\"multiple\"\n open={false}\n value={showValues}\n onChange={onSelectChange}\n />\n </TreeModal>\n );\n};\n"],"names":["TreeModalSelector","props","_otherProps$fieldName","_otherProps$fieldName2","placeholder","maxTagCount","labelInValue","otherProps","_objectWithoutPropertiesLoose","_excluded","placeholderFt","isUndefinedOrNull","dataSourceMapRef","useRef","labelKey","fieldNames","label","valueKey","value","_useState","useState","showValues","setShowValues","useEffect","_toArray","dataList","toArray","map","item","_dataSourceMapRef$cur","objItems","_isObject","current","onInnerChange","valueFt","length","undefined","isMultiple","onChange","onSelectChange","treeModalChange","onDataSourceChange","_hooks","useCallbackRef","_treeDataList","mapData","result","target","filter","Boolean","_jsx","TreeModal","_extends","forceRender","children","Select","style","width","mode","open"],"mappings":";whEA0BaA,EAAoB,SAApBA,EAAqBC,GAAkC,IAAAC,EAAAC,EAClE,IAAQC,EAA0DH,EAA1DG,YAAaC,EAA6CJ,EAA7CI,YAAaC,EAAgCL,EAAhCK,aAAiBC,EAAUC,EAAKP,EAAKQ,GACvE,IAAMC,EAAgBC,EAAkBP,GAAe,MAAQA,EAE/D,IAAMQ,EAAmBC,EAAqB,CAAA,GAE9C,IAAMC,IAAWZ,EAAAK,EAAWQ,aAAXb,UAAAA,EAAAA,EAAuBc,QAAS,QACjD,IAAMC,IAAWd,EAAAI,EAAWQ,aAAXZ,UAAAA,EAAAA,EAAuBe,QAAS,QAEjD,IAAAC,EAAoCC,IAA7BC,EAAUF,EAAA,GAAEG,EAAaH,EAAA,GAEhCI,GAAU,WAAM,IAAAC,EACd,IAAMC,IACJD,EAAAE,EAAQzB,EAAMiB,qBAAdM,EAAsBG,KAAI,SAACC,GAAS,IAAAC,EAClC,IAAMC,EAAYC,EAASH,GAAQA,EAAO,CAAEZ,MAAOY,EAAMV,MAAOU,GAChE,MAAO,CACLV,MAAOY,EAASZ,MAChBF,QAAOa,EAAAjB,EAAiBoB,QAAQF,EAASZ,qBAAlCW,EAA2Cf,KAAagB,EAASZ,MAE3E,MAAK,GACRI,EAAcG,EACf,GAAE,CAACX,EAAUb,EAAMiB,QAEpB,IAAMe,EAAgB,SAAhBA,EAAiBf,GACrB,IAAMgB,EAAUR,EAAQR,GAAOiB,OAASjB,EAAQkB,UAChD,GAAI7B,EAAW8B,YAAc,MAAO,CAClCpC,EAAMqC,UAANrC,UAAAA,EAAAA,EAAMqC,SAAWJ,GAAAA,UAAAA,EAAAA,EAAU,GAC7B,KAAO,CACLjC,EAAMqC,UAANrC,UAAAA,EAAAA,EAAMqC,SAAWJ,EACnB,GAGF,IAAMK,EAAiB,SAAjBA,EAAkBrB,GACtBI,EAAcJ,GACd,GAAIZ,EAAc,CAChB2B,EAAcf,GACd,MACF,CAEAe,EAAcf,GAAAA,UAAAA,EAAAA,EAAOS,KAAI,SAACC,GAAI,OAAKA,EAAKV,KAAK,MAE/C,IAAMsB,EAAkB,SAAlBA,EAAmBtB,GACvBI,EAAcJ,GACd,GAAIZ,EAAc,CAChB2B,EAAcf,GACd,MACF,CACAe,EAAcf,GAAAA,UAAAA,EAAAA,EAAOS,KAAI,SAACC,GAAI,OAAKA,EAAKV,KAAK,MAG/C,IAAMuB,EAAqBC,EAAMC,gBAAe,SAACC,EAA+BC,GAC9EjC,EAAiBoB,QAAUa,EAC3B,IAAMC,EAASzB,GAAAA,UAAAA,EAAAA,EACXM,KAAI,SAACC,GACL,IAAMmB,EAASF,EAAQjB,EAAKV,OAC5B,OAAO6B,EAAS,CAAE/B,MAAO+B,EAAOjC,GAAWI,MAAO6B,EAAO9B,IAAcmB,SACzE,IACCY,OAAOC,SACV3B,EAAcwB,EAChB,IAEA,OACEI,EAACC,EAASC,KACJ7C,EAAU,CACd8C,YAAa,KACbf,SAAUE,EACVC,mBAAoBA,EAAmBa,SAEvCJ,EAACK,EAAM,CACLjD,aAAY,KACZkD,MAAO,CAAEC,MAAO,QAChBrD,YAAaM,EACbL,YAAaA,EACbqD,KAAK,WACLC,KAAM,MACNzC,MAAOG,EACPiB,SAAUC,MAIlB"}
@@ -3,5 +3,5 @@ import './../fba-hooks/index.css';
3
3
  import './../request-status/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import t from"@ant-design/icons/es/icons/CaretDownFilled";import{extend as l}from"@dimjs/utils/cjs/extend";import{hooks as a}from"@wove/react/cjs/hooks";import{isObject as n}from"@dimjs/lang/cjs/is-object";import{a as i,_ as o}from"../_rollupPluginBabelHelpers-a0769acd.js";import{toArray as u,treeToTiledMap as s,isNotEmptyArray as c,treeToArray as f,isUndefinedOrNull as d}from"@flatbiz/utils";import{TreeSelect as v,Button as p}from"antd";import{dequal as m}from"dequal";import{useState as h,useRef as S,useMemo as g,createElement as b}from"react";import{fbaHooks as C}from"../fba-hooks/index.js";import{RequestStatus as y}from"../request-status/index.js";import{Model as q}from"@dimjs/model-react";import{jsx as w}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";var L={treeSelectorList:[],treeSelectorTiledMap:{},queryIsEmpty:false};var R={actions:{setSelectBoxList:function e(r){return function(e){e.treeSelectorList=r.treeSelectorList||[];e.treeSelectorTiledMap=r.treeSelectorTiledMap||{};e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.treeSelectorList=[];e.treeSelectorTiledMap={}}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:L};var T={};var j=function e(r){if(!T[r]){T[r]=q(R)}return T[r]};var k=function e(r,t){var l=[];var a=t[r];while(a){var n=a.pId;a=t[n];if(a){l.push(n)}}return l};var x=function e(r,t){if(r.length===0)return[];var l=[];r.forEach((function(e){var r=k(e,t);l.push.apply(l,r)}));return Array.from(new Set(l))};var E=["serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","treeSelectorList","requestMessageConfig","modelKey","value","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys"];var M=function q(L){var R=L.serviceConfig,T=L.effectDependencyList,k=L.onTreeSelectorListChange,M=L.onTreeSelectorRequestError,I=L.treeSelectorList,A=L.requestMessageConfig,N=L.modelKey,D=L.value,P=L.labelInValue,O=L.labelInValueFieldNames,B=L.onTreeItemDataAdapter,K=L.selectedParentCheckedAllChildrenList,V=K===void 0?true:K,F=L.fieldNames,H=L.onChange,W=L.treeDefaultExpandAll,_=L.showAllOption,z=L.initRootExpand,G=L.treeDefaultExpandedKeys,J=i(L,E);var Q=Object.prototype.hasOwnProperty.call(L,"treeSelectorList");var U=R||{};var X=T||[];var Y=C.useSafeState(false),Z=Y[0],$=Y[1];var ee=h(),re=ee[0],te=ee[1];var le=j(N).useStore(),ae=le[0],ne=le[1];var ie="request-progress-"+N;var oe=J.treeCheckable||J.multiple;var ue=S(true);var se=g((function(){if(J.treeCheckStrictly)return true;return P}),[P,J.treeCheckStrictly]);var ce=g((function(){return o({label:"label",value:"value",children:"children",disabled:"disabled"},F)}),[F]);var fe=g((function(){return o({label:"label",value:"value"},O)}),[O]);var de=g((function(){if(_){var e=_===true;return{label:e?"全部":_.label,value:e?"":_.value}}return null}),[_]);var ve=h(),pe=ve[0],me=ve[1];var he=g((function(){return u(L.value).map((function(e){if(n(e)){return se?e[fe.value]:e[ce.value]}return e}))}),[ce.value,se,fe.value,L.value]);C.useEffectCustom((function(){if(ae.treeSelectorList.length>0){var e=[];if(ue.current){ue.current=false;if(G){e=G}else if(W){var r=Object.keys(ae.treeSelectorTiledMap).map((function(e){var r;return(r=ae.treeSelectorTiledMap[e])==null?void 0:r[ce.value]}));e=r}else if(z&&ae.treeSelectorList.length===1){e=[ae.treeSelectorList[0][ce.value]]}te(e)}else{if(!pe){var t=x(he,ae.treeSelectorTiledMap);te(t)}}}}),[D,ae.treeSelectorList]);var Se=function e(r){return r===""||d(r)};var ge=function e(r){var t=U.onRequestResultAdapter?U.onRequestResultAdapter(r):r;return t};var be=a.useCallbackRef((function(){return new Promise((function(e,r){var t,a,n,i,o;if(!U.onRequest){return r(new Error("onRequest 调用接口服务不能为空"))}t=U.requiredParamsKeys||[];a=l({},U.params);n=t.find((function(e){return Se(a[e])}));if(n){void ne.changeRequestStatus("no-dependencies-params");console.warn("TreeSelectorWrapper组件:参数:"+t.join("、")+"不能为空");return e()}var u=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{$(false);window[ie]=false;void ne.changeRequestStatus("request-error");M==null?void 0:M(e);return u()}catch(e){return r(e)}};try{$(true);window[ie]=true;void ne.changeRequestStatus("request-progress");return Promise.resolve(U.onRequest==null?void 0:U.onRequest(a)).then((function(e){try{i=e;o=ge(i);$(false);window[ie]=false;Ce(o||[]);return u()}catch(e){return s(e)}}),s)}catch(e){s(e)}}))}));a.useCustomCompareEffect((function(){if(Q)return;if(X.length){Ce([]);void be();return}var e=j(N).getState();if(e.requestStatus==="request-success"){return}if(!window[ie]){void be();return}}),X,m);var Ce=a.useCallbackRef((function(e){var r;if((e==null?void 0:e.length)===0&&ae.treeSelectorList.length===0){void ne.setSelectBoxList({treeSelectorList:[],treeSelectorTiledMap:{}});k==null?void 0:k([]);return}var t=de?(r={},r[ce.label]=de.label,r[ce.value]=de.value,r):undefined;var l=_?[t].concat(e):e;void ne.setSelectBoxList({treeSelectorList:l,treeSelectorTiledMap:s(l,{value:ce.value,children:ce.children},"pId")});k==null?void 0:k(e)}));C.useEffectCustom((function(){if(Q){Ce(I||[])}}),[I]);var ye=a.useCallbackRef((function(e){te(e)}));var qe=a.useCallbackRef((function(){void be()}));var we=a.useCallbackRef((function(e,r,t){var l=u(e);if(J.treeCheckStrictly){if(V&&t.checked){var a=ae.treeSelectorTiledMap[t==null?void 0:t.triggerValue];if(c(a[ce.children])){l=f([a],ce.children).map((function(e){return e[ce.value]}))}else{l=e==null?void 0:e.map((function(e){return e.value}))}}else{l=e==null?void 0:e.map((function(e){return e.value}))}}if(se){var n=l.map((function(e){var r;var t=ae.treeSelectorTiledMap[e];return r={},r[fe.label]=t[ce.label],r[fe.value]=t[ce.value],r}));if(oe){H==null?void 0:H(n,n,t)}else{H==null?void 0:H(n[0],n[0],t)}}else{if(oe){H==null?void 0:H(l,l,t)}else{H==null?void 0:H(l[0],l[0],t)}}}));var Le=a.useCallbackRef((function(e){if(!e)return null;return e.map((function(e){var r=(B==null?void 0:B(o({},e)))||e;var t=r[ce.children];var l=r[ce.value];var a=r[ce.label];var n=r[ce.disabled]?r[ce.disabled]:r.disabled;return b(v.TreeNode,o({},r,{disabled:n,value:l,title:a,key:""+l}),t&&t.length>0&&Le(t))}))}));var Re=function e(r){me(r);var t=[];if(!r){me(undefined);t=he}else{Object.keys(ae.treeSelectorTiledMap).forEach((function(e){var l=ae.treeSelectorTiledMap[e];var a=l==null?void 0:l[ce.label];if(a!=null&&a.includes(r)){t.push(l[ce.value])}}))}var l=x(t,ae.treeSelectorTiledMap);te(l)};var Te=oe?he:he[0];return w(v,o({searchValue:pe,dropdownStyle:{maxHeight:400,overflow:"auto"},showSearch:true,treeLine:{showLeafIcon:false},treeNodeFilterProp:"title",switcherIcon:w(t,{}),popupMatchSelectWidth:false},J,{className:r("v-tree-select-wrapper",J.className),popupClassName:r("v-tree-select-wrapper-dropdown",J.popupClassName),onChange:we,treeExpandedKeys:re,value:Te,onSearch:Re,loading:Z,onTreeExpand:ye,style:o({width:"100%"},J.style),suffixIcon:ae.requestStatus==="request-error"?w(e,{spin:Z,onClick:qe}):undefined,notFoundContent:w(y,{status:ae.requestStatus,messageConfig:A,loading:Z,errorButton:w(p,{type:"primary",onClick:qe,children:"重新获取数据"})}),children:Le(ae.treeSelectorList)}))};export{M as TreeSelectorWrapper};
6
+ import e from"@ant-design/icons/es/icons/RedoOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import t from"@ant-design/icons/es/icons/CaretDownFilled";import{extend as l}from"@dimjs/utils/cjs/extend";import{hooks as a}from"@wove/react/cjs/hooks";import{isArray as n}from"@dimjs/lang/cjs/is-array";import{isObject as i}from"@dimjs/lang/cjs/is-object";import{a as o,_ as u}from"../_rollupPluginBabelHelpers-a0769acd.js";import{toArray as s,treeToTiledMap as c,isNotEmptyArray as f,treeToArray as d,isUndefinedOrNull as v}from"@flatbiz/utils";import{TreeSelect as p,Button as m}from"antd";import{dequal as h}from"dequal";import{useState as S,useRef as g,useMemo as b,createElement as C}from"react";import{fbaHooks as y}from"../fba-hooks/index.js";import{RequestStatus as q}from"../request-status/index.js";import{Model as w}from"@dimjs/model-react";import{jsx as L}from"react/jsx-runtime";import"../use-responsive-point-21b8c601.js";var R={treeSelectorList:[],treeSelectorTiledMap:{},queryIsEmpty:false};var T={actions:{setSelectBoxList:function e(r){return function(e){e.treeSelectorList=r.treeSelectorList||[];e.treeSelectorTiledMap=r.treeSelectorTiledMap||{};e.requestStatus="request-success"}},resetSelectBoxList:function e(){return function(e){e.treeSelectorList=[];e.treeSelectorTiledMap={}}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r}}},state:R};var j={};var k=function e(r){if(!j[r]){j[r]=w(T)}return j[r]};var x=function e(r,t){var l=[];var a=t[r];while(a){var n=a.pId;a=t[n];if(a){l.push(n)}}return l};var E=function e(r,t){if(r.length===0)return[];var l=[];r.forEach((function(e){var r=x(e,t);l.push.apply(l,r)}));return Array.from(new Set(l))};var M=["serviceConfig","effectDependencyList","onTreeSelectorListChange","onTreeSelectorRequestError","treeSelectorList","requestMessageConfig","modelKey","value","labelInValue","labelInValueFieldNames","onTreeItemDataAdapter","selectedParentCheckedAllChildrenList","fieldNames","onChange","treeDefaultExpandAll","showAllOption","initRootExpand","treeDefaultExpandedKeys"];var I=function w(R){var T=R.serviceConfig,j=R.effectDependencyList,x=R.onTreeSelectorListChange,I=R.onTreeSelectorRequestError,A=R.treeSelectorList,N=R.requestMessageConfig,D=R.modelKey,P=R.value,O=R.labelInValue,B=R.labelInValueFieldNames,K=R.onTreeItemDataAdapter,V=R.selectedParentCheckedAllChildrenList,F=V===void 0?true:V,H=R.fieldNames,W=R.onChange,_=R.treeDefaultExpandAll,z=R.showAllOption,G=R.initRootExpand,J=R.treeDefaultExpandedKeys,Q=o(R,M);var U=Object.prototype.hasOwnProperty.call(R,"treeSelectorList");var X=T||{};var Y=j||[];var Z=y.useSafeState(false),$=Z[0],ee=Z[1];var re=S(),te=re[0],le=re[1];var ae=k(D).useStore(),ne=ae[0],ie=ae[1];var oe="request-progress-"+D;var ue=Q.treeCheckable||Q.multiple;var se=g(true);var ce=b((function(){if(Q.treeCheckStrictly)return true;return O}),[O,Q.treeCheckStrictly]);var fe=b((function(){return u({label:"label",value:"value",children:"children",disabled:"disabled"},H)}),[H]);var de=b((function(){return u({label:"label",value:"value"},B)}),[B]);var ve=b((function(){if(z){var e=z===true;return{label:e?"全部":z.label,value:e?"":z.value}}return null}),[z]);var pe=S(),me=pe[0],he=pe[1];var Se=b((function(){return s(R.value).map((function(e){if(i(e)){return ce?e[de.value]:e[fe.value]}return e}))}),[fe.value,ce,de.value,R.value]);y.useEffectCustom((function(){if(ne.treeSelectorList.length>0){var e=[];if(se.current){se.current=false;if(J){e=J}else if(_){var r=Object.keys(ne.treeSelectorTiledMap).map((function(e){var r;return(r=ne.treeSelectorTiledMap[e])==null?void 0:r[fe.value]}));e=r}else if(G&&ne.treeSelectorList.length===1){e=[ne.treeSelectorList[0][fe.value]]}le(e)}else{if(!me){var t=E(Se,ne.treeSelectorTiledMap);le(t)}}}}),[P,ne.treeSelectorList]);var ge=function e(r){return r===""||v(r)};var be=function e(r){var t=X.onRequestResultAdapter?X.onRequestResultAdapter(r):r;if(t&&!n(t)){console.warn("待渲染数据为非数组结构",t);return[]}return t||[]};var Ce=a.useCallbackRef((function(){return new Promise((function(e,r){var t,a,n,i,o;if(!X.onRequest){return r(new Error("onRequest 调用接口服务不能为空"))}t=X.requiredParamsKeys||[];a=l({},X.params);n=t.find((function(e){return ge(a[e])}));if(n){void ie.changeRequestStatus("no-dependencies-params");console.warn("TreeSelectorWrapper组件:参数:"+t.join("、")+"不能为空");return e()}var u=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{ee(false);window[oe]=false;void ie.changeRequestStatus("request-error");I==null?void 0:I(e);return u()}catch(e){return r(e)}};try{ee(true);window[oe]=true;void ie.changeRequestStatus("request-progress");return Promise.resolve(X.onRequest==null?void 0:X.onRequest(a)).then((function(e){try{i=e;o=be(i);ee(false);window[oe]=false;ye(o||[]);return u()}catch(e){return s(e)}}),s)}catch(e){s(e)}}))}));a.useCustomCompareEffect((function(){if(U)return;if(Y.length){ye([]);void Ce();return}var e=k(D).getState();if(e.requestStatus==="request-success"){return}if(!window[oe]){void Ce();return}}),Y,h);var ye=a.useCallbackRef((function(e){var r;if((e==null?void 0:e.length)===0&&ne.treeSelectorList.length===0){void ie.setSelectBoxList({treeSelectorList:[],treeSelectorTiledMap:{}});x==null?void 0:x([]);return}var t=ve?(r={},r[fe.label]=ve.label,r[fe.value]=ve.value,r):undefined;var l=z?[t].concat(e):e;void ie.setSelectBoxList({treeSelectorList:l,treeSelectorTiledMap:c(l,{value:fe.value,children:fe.children},"pId")});x==null?void 0:x(e)}));y.useEffectCustom((function(){if(U){ye(A||[])}}),[A]);var qe=a.useCallbackRef((function(e){le(e)}));var we=a.useCallbackRef((function(){void Ce()}));var Le=a.useCallbackRef((function(e,r,t){var l=s(e);if(Q.treeCheckStrictly){if(F&&t.checked){var a=ne.treeSelectorTiledMap[t==null?void 0:t.triggerValue];if(f(a[fe.children])){l=d([a],fe.children).map((function(e){return e[fe.value]}))}else{l=e==null?void 0:e.map((function(e){return e.value}))}}else{l=e==null?void 0:e.map((function(e){return e.value}))}}if(ce){var n=l.map((function(e){var r;var t=ne.treeSelectorTiledMap[e];return r={},r[de.label]=t[fe.label],r[de.value]=t[fe.value],r}));if(ue){W==null?void 0:W(n,n,t)}else{W==null?void 0:W(n[0],n[0],t)}}else{if(ue){W==null?void 0:W(l,l,t)}else{W==null?void 0:W(l[0],l[0],t)}}}));var Re=a.useCallbackRef((function(e){if(!e)return null;return e.map((function(e){var r=(K==null?void 0:K(u({},e)))||e;var t=r[fe.children];var l=r[fe.value];var a=r[fe.label];var n=r[fe.disabled]?r[fe.disabled]:r.disabled;return C(p.TreeNode,u({},r,{disabled:n,value:l,title:a,key:""+l}),t&&t.length>0&&Re(t))}))}));var Te=function e(r){he(r);var t=[];if(!r){he(undefined);t=Se}else{Object.keys(ne.treeSelectorTiledMap).forEach((function(e){var l=ne.treeSelectorTiledMap[e];var a=l==null?void 0:l[fe.label];if(a!=null&&a.includes(r)){t.push(l[fe.value])}}))}var l=E(t,ne.treeSelectorTiledMap);le(l)};var je=ue?Se:Se[0];return L(p,u({searchValue:me,dropdownStyle:{maxHeight:400,overflow:"auto"},showSearch:true,treeLine:{showLeafIcon:false},treeNodeFilterProp:"title",switcherIcon:L(t,{}),popupMatchSelectWidth:false},Q,{className:r("v-tree-select-wrapper",Q.className),popupClassName:r("v-tree-select-wrapper-dropdown",Q.popupClassName),onChange:Le,treeExpandedKeys:te,value:je,onSearch:Te,loading:$,onTreeExpand:qe,style:u({width:"100%"},Q.style),suffixIcon:ne.requestStatus==="request-error"?L(e,{spin:$,onClick:we}):undefined,notFoundContent:L(q,{status:ne.requestStatus,messageConfig:N,loading:$,errorButton:L(m,{type:"primary",onClick:we,children:"重新获取数据"})}),children:Re(ne.treeSelectorList)}))};export{I as TreeSelectorWrapper};
7
7
  //# sourceMappingURL=index.js.map