@flatbiz/antd 4.5.33 → 4.5.35

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/label-value-render/utils.ts","@flatbiz/antd/src/label-value-render/label-value.tsx"],"sourcesContent":["import { arrayTotal } from '@flatbiz/utils';\nimport { TLabelValueRenderItem } from './types';\n\nexport const getRenderGrid = (dataList: TLabelValueRenderItem[]) => {\n let results: TLabelValueRenderItem[][] = [];\n\n let currentSum = 0;\n let currentArr: TLabelValueRenderItem[] = [];\n for (let i = 0; i < dataList.length; i++) {\n const item = dataList[i];\n const grid = item.grid;\n const temp = {\n ...item,\n grid: grid,\n } as TLabelValueRenderItem;\n if (currentSum + grid <= 24 && grid > 0) {\n currentSum += grid;\n currentArr.push(temp);\n } else {\n results.push(currentArr);\n currentSum = grid;\n currentArr = [temp];\n }\n }\n\n if (currentArr.length > 0) {\n results.push(currentArr);\n }\n if (results.length > 0) {\n results = results.map((item, index) => {\n if (item.length === 1) {\n item[0].grid = 24;\n } else {\n const total = arrayTotal(item, 'grid');\n const lastItem = item[item.length - 1];\n if (total < 24) {\n lastItem.grid = 24 - total + lastItem.grid;\n }\n }\n if (index === results.length - 1) {\n return item.map((temp) => {\n temp.isLast = true;\n return temp;\n });\n }\n return item;\n });\n }\n\n let resultsFt: TLabelValueRenderItem[] = [];\n results.forEach((item) => {\n resultsFt = resultsFt.concat(item);\n });\n return resultsFt;\n};\n","import { classNames } from '@dimjs/utils';\nimport { CSSProperties, ReactElement, useMemo, useState } from 'react';\n\nimport { isNumber, isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { BoxGrid } from '../box-grid';\nimport { TBoxBreakpoint } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { TextOverflow } from '../text-overflow';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport { TLabelValueItem, TLabelValueRenderItem } from './types';\nimport { getRenderGrid } from './utils';\n\nexport type LabelValueRenderProps = {\n className?: string;\n style?: CSSProperties;\n /**\n * 定义一行显示几列, 默认值:4\n * ```\n * 1. label+value 一组为一列\n * 2. 当外层宽度尺寸大于 992px(lg) 时,一行显示几列\n * 3. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响,响应式布局\n * 4. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 5. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * 6: { xs: 24, sm: 12, md: 8, lg: 6, xl: 4, xxl: 4 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4 | 6;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4 | 6;\n /** 数据源配置 */\n options: TLabelValueItem[];\n /**\n * 超过宽度将自动省略,默认值:true\n * ```\n * 1. 当 direction = vertical时,强制为true\n * ```\n */\n ellipsis?: boolean;\n /**\n * 是否添加边框\n * @deprecated 已过期,请使用 bordered\n */\n border?: boolean;\n /** 是否添加边框 */\n bordered?: boolean;\n /** label对齐方式 */\n labelAlign?: 'left' | 'right' | 'center';\n /** label 宽度,默认值:100 */\n labelWidth?: number | 'auto';\n width?: number;\n /** label 样式 */\n labelStyle?: CSSProperties;\n /** value 样式 */\n valueStyle?: CSSProperties;\n\n size?: 'default' | 'small';\n /**\n * label&value 方向布局\n * ```\n * 1. auto表示当响应式为xs(小屏幕)时为vertical,其他情况为horizontal\n * ```\n */\n direction?: 'vertical' | 'horizontal' | 'auto';\n /**\n * 网格布局间距,默认值:[10, 0]\n * ```\n * 1. border = true 无效\n * ```\n */\n gutter?: [number, number];\n};\n\n/**\n * label+value 列表布局\n * ```\n * 1. 可设置超出隐藏、必填标识、设置隐藏、添加说明标签等功能\n * 2. 可自定义设置占用网格列数\n * 3. 内置响应式布局\n * ```\n */\nexport const LabelValueRender = (props: LabelValueRenderProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n const [breakpoint, setBreakpoint] = useState<TBoxBreakpoint>();\n\n const {\n column,\n forceColumn,\n labelAlign,\n labelWidth,\n options,\n border,\n bordered,\n width,\n size = 'default',\n direction = 'auto',\n gutter,\n } = props;\n\n const columnNew = column && [1, 2, 3, 4, 6].includes(column) ? column : 4;\n\n const borderedNew = !isUndefinedOrNull(bordered) ? bordered : border;\n\n const directionNew = useMemo(() => {\n if (direction === 'horizontal' || direction === 'vertical') return direction;\n if (screenType === 'xs' || breakpoint === 'xs') return 'vertical';\n return 'horizontal';\n }, [breakpoint, direction, screenType]);\n\n const ellipsis = useMemo(() => {\n if (directionNew === 'vertical') return true;\n return isUndefinedOrNull(props.ellipsis) ? true : props.ellipsis;\n }, [directionNew, props.ellipsis]);\n\n const labelWidthNew = labelWidth ? (isNumber(labelWidth) ? `${labelWidth}px` : labelWidth) : '100px';\n\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n 6: { xs: 24, sm: 12, md: 8, lg: 6, xl: 4, xxl: 4 },\n };\n return columnMap[columnNew];\n }, [columnNew, forceColumn]);\n\n const renderList = useMemo(() => {\n if (!breakpoint) return undefined;\n const dataListNew: TLabelValueRenderItem[] = [];\n options.forEach((item) => {\n if (!item.hidden) {\n let grid: number | undefined = undefined;\n if (item.span) {\n const itemSpan = item.span > columnNew ? columnNew : item.span;\n grid = itemSpan * (24 / columnNew);\n if (breakpoint === 'xs') {\n grid = 24;\n } else if (breakpoint === 'sm') {\n grid = grid > 12 ? grid : 12;\n }\n }\n dataListNew.push({\n ...item,\n grid: grid ? grid : gridSize[breakpoint],\n });\n }\n });\n return getRenderGrid(dataListNew.filter(Boolean));\n }, [breakpoint, columnNew, gridSize, options]);\n\n const colon = borderedNew ? '' : ':';\n\n const getFormRowChildren = () => {\n return renderList\n ?.map((item, index) => {\n const ellipsisFt =\n directionNew === 'vertical' ? true : isUndefinedOrNull(item.ellipsis) ? ellipsis : item.ellipsis;\n\n let labelContent: ReactElement | string = `${item.label}${colon}`;\n\n if (item.tips && ellipsisFt) {\n labelContent = (\n <TipsWrapper tipType=\"tooltip\" tooltipProps={{ title: item.tips }}>\n <TextOverflow text={labelContent as unknown as string} hideTip={item.hideTip} />\n </TipsWrapper>\n );\n } else if (item.tips) {\n labelContent = (\n <TipsWrapper tipType=\"tooltip\" tooltipProps={{ title: item.tips }}>\n {labelContent}\n </TipsWrapper>\n );\n } else if (ellipsisFt) {\n labelContent = <TextOverflow text={labelContent as unknown as string} hideTip={item.hideTip} />;\n }\n\n return (\n <BoxGrid.Col\n key={index}\n {...gridSize}\n span={item.grid}\n className={classNames('label-value-tr', {\n 'label-value-last-tr': item.isLast,\n })}\n >\n <span className=\"label-value-label\" style={props.labelStyle}>\n {item.required ? <TextSymbolWrapper text={labelContent} symbolType=\"required\" /> : labelContent}\n </span>\n {ellipsisFt && !item.valueNoWrapper ? (\n <span className=\"label-value-value\" style={props.valueStyle} onClick={item.onClick}>\n <TextOverflow text={item.value as string} onClick={item.onClick} hideTip={item.hideTip} />\n </span>\n ) : (\n <span\n className=\"label-value-value\"\n style={{\n wordBreak: 'break-all',\n ...props.valueStyle,\n }}\n >\n {item.onClick ? <a onClick={item.onClick}>{item.value}</a> : item.value}\n </span>\n )}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const onBoxBreakpointChange = hooks.useCallbackRef((breakpoint: TBoxBreakpoint) => {\n setBreakpoint(breakpoint);\n });\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType, width]);\n\n const align = (function () {\n if (labelAlign) return labelAlign;\n if (borderedNew) return 'left';\n if (directionNew === 'horizontal') return 'right';\n return 'left';\n })();\n\n return (\n <BoxGrid.Row\n style={\n {\n ...innerStyle,\n ...props.style,\n '--lvr-label-width': directionNew === 'horizontal' ? labelWidthNew : undefined,\n } as TAny\n }\n className={classNames(\n 'label-value-render',\n `lvr-${directionNew}`,\n `lvr-size-${size}`,\n `lvr-label-${align}`,\n { 'lvr-border': borderedNew },\n props.className,\n )}\n gutter={borderedNew ? [0, 0] : gutter || [10, 0]}\n onBoxBreakpointChange={onBoxBreakpointChange}\n >\n {getFormRowChildren()}\n </BoxGrid.Row>\n );\n};\n"],"names":["getRenderGrid","dataList","results","currentSum","currentArr","i","length","item","grid","temp","_extends","push","map","index","total","arrayTotal","lastItem","isLast","resultsFt","forEach","concat","LabelValueRender","props","screenType","fbaHooks","useResponsivePoint","_useState","useState","breakpoint","setBreakpoint","column","forceColumn","labelAlign","labelWidth","options","border","bordered","width","_props$size","size","_props$direction","direction","gutter","columnNew","includes","borderedNew","isUndefinedOrNull","directionNew","useMemo","ellipsis","labelWidthNew","isNumber","gridSize","num","xs","sm","md","lg","xl","xxl","columnMap","renderList","undefined","dataListNew","hidden","span","itemSpan","filter","Boolean","colon","getFormRowChildren","ellipsisFt","labelContent","label","tips","_jsx","TipsWrapper","tipType","tooltipProps","title","children","TextOverflow","text","hideTip","_jsxs","BoxGrid","Col","className","_classNames","style","labelStyle","required","TextSymbolWrapper","symbolType","valueNoWrapper","valueStyle","onClick","value","wordBreak","onBoxBreakpointChange","_hooks","useCallbackRef","innerStyle","align","Row"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/label-value-render/utils.ts","@flatbiz/antd/src/label-value-render/label-value.tsx"],"sourcesContent":["import { arrayTotal } from '@flatbiz/utils';\nimport { TLabelValueRenderItem } from './types';\n\nexport const getRenderGrid = (dataList: TLabelValueRenderItem[]) => {\n let results: TLabelValueRenderItem[][] = [];\n\n let currentSum = 0;\n let currentArr: TLabelValueRenderItem[] = [];\n for (let i = 0; i < dataList.length; i++) {\n const item = dataList[i];\n const grid = item.grid;\n const temp = {\n ...item,\n grid: grid,\n } as TLabelValueRenderItem;\n if (currentSum + grid <= 24 && grid > 0) {\n currentSum += grid;\n currentArr.push(temp);\n } else {\n results.push(currentArr);\n currentSum = grid;\n currentArr = [temp];\n }\n }\n\n if (currentArr.length > 0) {\n results.push(currentArr);\n }\n if (results.length > 0) {\n results = results.map((item, index) => {\n if (item.length === 1) {\n item[0].grid = 24;\n } else {\n const total = arrayTotal(item, 'grid');\n const lastItem = item[item.length - 1];\n if (total < 24) {\n lastItem.grid = 24 - total + lastItem.grid;\n }\n }\n if (index === results.length - 1) {\n return item.map((temp) => {\n temp.isLast = true;\n return temp;\n });\n }\n return item;\n });\n }\n\n let resultsFt: TLabelValueRenderItem[] = [];\n results.forEach((item) => {\n resultsFt = resultsFt.concat(item);\n });\n return resultsFt;\n};\n","import { classNames } from '@dimjs/utils';\nimport { CSSProperties, ReactElement, useMemo, useState } from 'react';\n\nimport { isNumber, isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { BoxGrid } from '../box-grid';\nimport { TBoxBreakpoint } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { TextOverflow } from '../text-overflow';\nimport { TextSymbolWrapper } from '../text-symbol-wrapper';\nimport { TipsWrapper } from '../tips-wrapper';\nimport './style.less';\nimport { TLabelValueItem, TLabelValueRenderItem } from './types';\nimport { getRenderGrid } from './utils';\n\nexport type LabelValueRenderProps = {\n className?: string;\n style?: CSSProperties;\n /**\n * 定义一行显示几列, 默认值:4\n * ```\n * 1. label+value 一组为一列\n * 2. 当外层宽度尺寸大于 992px(lg) 时,一行显示几列\n * 3. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响,响应式布局\n * 4. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 5. 列数尺寸定义\n * {\n * 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n * 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n * 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n * 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n * 6: { xs: 24, sm: 12, md: 8, lg: 6, xl: 4, xxl: 4 },\n * };\n * ```\n */\n column?: 1 | 2 | 3 | 4 | 6;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4 | 6;\n /** 数据源配置 */\n options: TLabelValueItem[];\n /**\n * 超过宽度将自动省略,默认值:true\n * ```\n * 1. 当 direction = vertical时,强制为true\n * ```\n */\n ellipsis?: boolean;\n /**\n * 是否添加边框\n * @deprecated 已过期,请使用 bordered\n */\n border?: boolean;\n /** 是否添加边框 */\n bordered?: boolean;\n /** label对齐方式 */\n labelAlign?: 'left' | 'right' | 'center';\n /** label 宽度,默认值:100 */\n labelWidth?: number | 'auto';\n width?: number;\n /** label 样式 */\n labelStyle?: CSSProperties;\n /** value 样式 */\n valueStyle?: CSSProperties;\n\n size?: 'default' | 'small';\n /**\n * label&value 方向布局\n * ```\n * 1. auto表示当响应式为xs(小屏幕)时为vertical,其他情况为horizontal\n * ```\n */\n direction?: 'vertical' | 'horizontal' | 'auto';\n /**\n * 网格布局间距,默认值:[10, 0]\n * ```\n * 1. border = true 无效\n * ```\n */\n gutter?: [number, number];\n\n /** 隐藏 value hover效果 */\n hiddenValueHover?: boolean;\n};\n\n/**\n * label+value 列表布局\n * ```\n * 1. 可设置超出隐藏、必填标识、设置隐藏、添加说明标签等功能\n * 2. 可自定义设置占用网格列数\n * 3. 内置响应式布局\n * ```\n */\nexport const LabelValueRender = (props: LabelValueRenderProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n const [breakpoint, setBreakpoint] = useState<TBoxBreakpoint>();\n\n const {\n column,\n forceColumn,\n labelAlign,\n labelWidth,\n options,\n border,\n bordered,\n width,\n size = 'default',\n direction = 'auto',\n gutter,\n hiddenValueHover,\n } = props;\n\n const columnNew = column && [1, 2, 3, 4, 6].includes(column) ? column : 4;\n\n const borderedNew = !isUndefinedOrNull(bordered) ? bordered : border;\n\n const directionNew = useMemo(() => {\n if (direction === 'horizontal' || direction === 'vertical') return direction;\n if (screenType === 'xs' || breakpoint === 'xs') return 'vertical';\n return 'horizontal';\n }, [breakpoint, direction, screenType]);\n\n const ellipsis = useMemo(() => {\n if (directionNew === 'vertical') return true;\n return isUndefinedOrNull(props.ellipsis) ? true : props.ellipsis;\n }, [directionNew, props.ellipsis]);\n\n const labelWidthNew = labelWidth ? (isNumber(labelWidth) ? `${labelWidth}px` : labelWidth) : '100px';\n\n const gridSize = useMemo(() => {\n if (forceColumn) {\n const num = 24 / forceColumn;\n return { xs: num, sm: num, md: num, lg: num, xl: num, xxl: num };\n }\n const columnMap = {\n 1: { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 },\n 2: { xs: 24, sm: 12, md: 12, lg: 12, xl: 12, xxl: 12 },\n 3: { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 8 },\n 4: { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 },\n 6: { xs: 24, sm: 12, md: 8, lg: 6, xl: 4, xxl: 4 },\n };\n return columnMap[columnNew];\n }, [columnNew, forceColumn]);\n\n const renderList = useMemo(() => {\n if (!breakpoint) return undefined;\n const dataListNew: TLabelValueRenderItem[] = [];\n options.forEach((item) => {\n if (!item.hidden) {\n let grid: number | undefined = undefined;\n if (item.span) {\n const itemSpan = item.span > columnNew ? columnNew : item.span;\n grid = itemSpan * (24 / columnNew);\n if (breakpoint === 'xs') {\n grid = 24;\n } else if (breakpoint === 'sm') {\n grid = grid > 12 ? grid : 12;\n }\n }\n dataListNew.push({\n ...item,\n grid: grid ? grid : gridSize[breakpoint],\n });\n }\n });\n return getRenderGrid(dataListNew.filter(Boolean));\n }, [breakpoint, columnNew, gridSize, options]);\n\n const colon = borderedNew ? '' : ':';\n\n const getFormRowChildren = () => {\n return renderList\n ?.map((item, index) => {\n const ellipsisFt =\n directionNew === 'vertical' ? true : isUndefinedOrNull(item.ellipsis) ? ellipsis : item.ellipsis;\n\n let labelContent: ReactElement | string = `${item.label}${colon}`;\n\n if (item.tips && ellipsisFt) {\n labelContent = (\n <TipsWrapper tipType=\"tooltip\" tooltipProps={{ title: item.tips }}>\n <TextOverflow text={labelContent as unknown as string} hideTip={item.hideTip} />\n </TipsWrapper>\n );\n } else if (item.tips) {\n labelContent = (\n <TipsWrapper tipType=\"tooltip\" tooltipProps={{ title: item.tips }}>\n {labelContent}\n </TipsWrapper>\n );\n } else if (ellipsisFt) {\n labelContent = <TextOverflow text={labelContent as unknown as string} hideTip={item.hideTip} />;\n }\n\n return (\n <BoxGrid.Col\n key={index}\n {...gridSize}\n span={item.grid}\n className={classNames('label-value-tr', {\n 'label-value-last-tr': item.isLast,\n })}\n >\n <span className=\"label-value-label\" style={props.labelStyle}>\n {item.required ? <TextSymbolWrapper text={labelContent} symbolType=\"required\" /> : labelContent}\n </span>\n {ellipsisFt && !item.valueNoWrapper ? (\n <span className=\"label-value-value\" style={props.valueStyle} onClick={item.onClick}>\n <TextOverflow text={item.value as string} onClick={item.onClick} hideTip={item.hideTip} />\n </span>\n ) : (\n <span\n className=\"label-value-value\"\n style={{\n wordBreak: 'break-all',\n ...props.valueStyle,\n }}\n >\n {item.onClick ? <a onClick={item.onClick}>{item.value}</a> : item.value}\n </span>\n )}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\n };\n\n const onBoxBreakpointChange = hooks.useCallbackRef((breakpoint: TBoxBreakpoint) => {\n setBreakpoint(breakpoint);\n });\n\n const innerStyle = useMemo(() => {\n /** 小屏幕不控制宽度 */\n if (['xs', 'sm'].includes(screenType) || !width) {\n return {};\n }\n return { width };\n }, [screenType, width]);\n\n const align = (function () {\n if (labelAlign) return labelAlign;\n if (borderedNew) return 'left';\n if (directionNew === 'horizontal') return 'right';\n return 'left';\n })();\n\n return (\n <BoxGrid.Row\n style={\n {\n ...innerStyle,\n ...props.style,\n '--lvr-label-width': directionNew === 'horizontal' ? labelWidthNew : undefined,\n } as TAny\n }\n className={classNames(\n 'label-value-render',\n `lvr-${directionNew}`,\n `lvr-size-${size}`,\n `lvr-label-${align}`,\n { 'lvr-border': borderedNew },\n { 'lvr-hidden-hover': hiddenValueHover },\n props.className,\n )}\n gutter={borderedNew ? [0, 0] : gutter || [10, 0]}\n onBoxBreakpointChange={onBoxBreakpointChange}\n >\n {getFormRowChildren()}\n </BoxGrid.Row>\n );\n};\n"],"names":["getRenderGrid","dataList","results","currentSum","currentArr","i","length","item","grid","temp","_extends","push","map","index","total","arrayTotal","lastItem","isLast","resultsFt","forEach","concat","LabelValueRender","props","screenType","fbaHooks","useResponsivePoint","_useState","useState","breakpoint","setBreakpoint","column","forceColumn","labelAlign","labelWidth","options","border","bordered","width","_props$size","size","_props$direction","direction","gutter","hiddenValueHover","columnNew","includes","borderedNew","isUndefinedOrNull","directionNew","useMemo","ellipsis","labelWidthNew","isNumber","gridSize","num","xs","sm","md","lg","xl","xxl","columnMap","renderList","undefined","dataListNew","hidden","span","itemSpan","filter","Boolean","colon","getFormRowChildren","ellipsisFt","labelContent","label","tips","_jsx","TipsWrapper","tipType","tooltipProps","title","children","TextOverflow","text","hideTip","_jsxs","BoxGrid","Col","className","_classNames","style","labelStyle","required","TextSymbolWrapper","symbolType","valueNoWrapper","valueStyle","onClick","value","wordBreak","onBoxBreakpointChange","_hooks","useCallbackRef","innerStyle","align","Row"],"mappings":"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"}
@@ -1 +1 @@
1
- .local-loading-error{align-items:center;display:flex;height:100%;justify-content:center;position:relative}.local-loading-error .ant-result-icon{margin-bottom:10px!important}.local-loading-error .ant-result-icon .anticon{font-size:30px!important}.local-loading-error .ant-result-title{font-size:16px!important}.local-loading-error .ant-result-extra{margin-top:10px!important}.local-loading-error .ant-result-error{padding:24px 16px!important}.local-loading-area{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:9}.fba-local-loading{overflow:hidden;position:relative}.local-loading-content{height:100%;overflow-y:auto}.local-loading-spin,.local-loading-spin-wrapper{align-items:center;background-color:var(--local-loading-spin-bgColor);border-radius:5px;display:flex;height:100%;justify-content:center;position:absolute;width:100%}
1
+ .local-loading-error{align-items:center;display:flex;height:100%;justify-content:center;position:relative}.local-loading-error .ant-result-icon{margin-bottom:10px!important}.local-loading-error .ant-result-icon .anticon{font-size:30px!important}.local-loading-error .ant-result-title{font-size:16px!important}.local-loading-error .ant-result-extra{margin-top:10px!important}.local-loading-error .ant-result-error{padding:24px 16px!important}.local-loading-area{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:9}.fba-local-loading{position:relative}.local-loading-spin,.local-loading-spin-wrapper{align-items:center;background-color:var(--local-loading-spin-bgColor);border-radius:5px;display:flex;height:100%;justify-content:center;position:absolute;width:100%}.local-loading-content{height:100%}.fll-content-scroll{height:100%;overflow:hidden}.fll-content-scroll .local-loading-content{overflow-y:auto}
@@ -3,5 +3,5 @@ import './../fba-utils/index.css';
3
3
  import './../fba-hooks/index.css';
4
4
  import './index.css';
5
5
  /*! @flatjs/forge MIT @flatbiz/antd */
6
- import{fbaUtils as r}from"../fba-utils/index.js";import{createCtx as e}from"@wove/react/cjs/create-ctx";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isDeepEqual as a}from"@dimjs/lang/cjs/is-deep-equal";import{hooks as i}from"@wove/react/cjs/hooks";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{getValueOrDefault as o,toArray as s,isUndefinedOrNull as l}from"@flatbiz/utils";import{Result as c,Button as u,Spin as m}from"antd";import{forwardRef as d,useState as f,useRef as p,useMemo as v,useImperativeHandle as g,Fragment as h}from"react";import{fbaHooks as y}from"../fba-hooks/index.js";import{jsx as b,jsxs as j}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";var N=e(),C=N[0],P=N[1];var q=d((function(r,e){var d=r.serviceConfig,N=r.isAsync,C=r.children,q=r.errorRender,R=r.loadingSpinProps,w=r.textConfigs,x=r.showRequiredError;var k=f("init"),E=k[0],L=k[1];var T=f(),H=T[0],K=T[1];var z=r.loadingHeight===undefined?100:r.loadingHeight;var A=f(false),S=A[0],_=A[1];var B=p();var D=p(true);var F=y.usePrevious(d.params);var G=o(R==null?void 0:R.content,b("span",{}));var I=o(R==null?void 0:R.bgColor,"rgba(0,0,0,0.01)");var J=o(R==null?void 0:R.tip,"Loading");var M=w==null?void 0:w.requiredErrorText;var O=v((function(){var r;if(!d.params||s(d.invalidParamKey).length===0){return d.params}var e=t({},d.params);(r=d.invalidParamKey)==null?void 0:r.forEach((function(r){e[r]=undefined}));return e}),[d]);var Q=i.useCallbackRef((function(r){var e=d==null?void 0:d.requiredParamsKeys;if(e!=null&&e.length){var n=e.find((function(e){return l(r==null?void 0:r[e])}));if(n){return{complete:false,message:M||"LocalLoading渲染缺少必填参数:"+e.join("、")}}}return{complete:true}}));var U=v((function(){return Q(d.params)}),[Q,d.params]);var V=function r(e){return new Promise((function(r,n){var a=function(r){return function(e){try{_(false);return r&&r.call(this,e)}catch(r){return n(r)}}.bind(this)}.bind(this);var i,o;var s=function(){try{return r()}catch(r){return n(r)}};var l=function(r){try{console.error(r);L("error");B.current=r.message;D.current=false;return a(s)()}catch(r){return a(n)(r)}};try{i=t({},O,e);_(true);return Promise.resolve(d.onRequest(i)).then((function(r){try{o=r;L("success");K(o);D.current=false;return a(s)()}catch(r){return l(r)}}),l)}catch(r){l(r)}}))};y.useEffectCustomAsync((function(){return new Promise((function(r,e){if(U.complete){return Promise.resolve(V()).then(function(r){try{return n.call(this)}catch(r){return e(r)}}.bind(this),e)}function n(){return r()}return n.call(this)}))}),[]);y.useEffectCustom((function(){if(U.complete){if(F){if(!a(d.params,F)){if(E==="error"){L("init")}void V()}}}}),[F,d.params]);g(e,(function(){return{onRefresh:V}}));if(!U.complete){if(D.current||!x){return b(h,{})}return b(P,{value:{onRequest:V},children:j("div",{className:n("local-loading-error",r.className),children:[b("div",{className:"local-loading-area"}),b(c,{status:"error",subTitle:U.message})]})})}if(E==="error"){if(q){return q({message:B.current})}return b(P,{value:{onRequest:V},children:j("div",{className:n("local-loading-error",r.className),children:[b("div",{className:"local-loading-area"}),b(c,{status:"error",subTitle:B.current||"数据处理异常",extra:[b(u,{type:"primary",ghost:true,size:"small",onClick:function r(){L("init");void V()},children:"重新获取"},"console")]})]})})}if(E!=="success"&&!N){return b("div",{className:n("fba-local-loading-process",r.className),style:{height:z,display:"flex",justifyContent:"center",position:"relative",backgroundColor:"var(--block-bg-color)"},children:b(m,{spinning:S,tip:J,wrapperClassName:"local-loading-spin-wrapper",className:"local-loading-spin",style:{"--local-loading-spin-bgColor":I},children:G})})}return b(P,{value:{onRequest:V},children:j("div",{className:n("fba-local-loading",r.className),style:r.style,children:[S?b(m,{spinning:S,tip:J,wrapperClassName:"local-loading-spin-wrapper",className:"local-loading-spin",style:{"--local-loading-spin-bgColor":I},children:G}):null,b("div",{className:"local-loading-content",style:r.contentStyle,children:C(H)})]})})}));var R=r.attachPropertiesToComponent(q,{useLocalLoading:function r(){var e=C();return{onRequest:function r(n){e.onRequest(n)}}}});export{R as LocalLoading};
6
+ import{fbaUtils as r}from"../fba-utils/index.js";import{createCtx as e}from"@wove/react/cjs/create-ctx";import{classNames as n}from"@dimjs/utils/cjs/class-names";import{isDeepEqual as a}from"@dimjs/lang/cjs/is-deep-equal";import{hooks as t}from"@wove/react/cjs/hooks";import{_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{getValueOrDefault as o,toArray as l,isUndefinedOrNull as s}from"@flatbiz/utils";import{Result as c,Button as u,Spin as m}from"antd";import{forwardRef as d,useState as f,useRef as p,useMemo as v,useImperativeHandle as g,Fragment as h}from"react";import{fbaHooks as y}from"../fba-hooks/index.js";import{jsx as b,jsxs as j}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";var N=e(),C=N[0],P=N[1];var q=d((function(r,e){var d=r.serviceConfig,N=r.isAsync,C=r.children,q=r.errorRender,R=r.loadingSpinProps,w=r.textConfigs,x=r.showRequiredError,k=r.contentScroll,E=r.contentStyle,L=r.height;var T=f("init"),H=T[0],K=T[1];var S=f(),z=S[0],A=S[1];var _=r.loadingHeight===undefined?100:r.loadingHeight;var B=f(false),D=B[0],F=B[1];var G=p();var I=p(true);var J=y.usePrevious(d.params);var M=o(R==null?void 0:R.content,b("span",{}));var O=o(R==null?void 0:R.bgColor,"rgba(0,0,0,0.01)");var Q=o(R==null?void 0:R.tip,"Loading");var U=w==null?void 0:w.requiredErrorText;var V=v((function(){var r;if(!d.params||l(d.invalidParamKey).length===0){return d.params}var e=i({},d.params);(r=d.invalidParamKey)==null?void 0:r.forEach((function(r){e[r]=undefined}));return e}),[d]);var W=t.useCallbackRef((function(r){var e=d==null?void 0:d.requiredParamsKeys;if(e!=null&&e.length){var n=e.find((function(e){return s(r==null?void 0:r[e])}));if(n){return{complete:false,message:U||"LocalLoading渲染缺少必填参数:"+e.join("、")}}}return{complete:true}}));var X=v((function(){return W(d.params)}),[W,d.params]);var Y=function r(e){return new Promise((function(r,n){var a=function(r){return function(e){try{F(false);return r&&r.call(this,e)}catch(r){return n(r)}}.bind(this)}.bind(this);var t,o;var l=function(){try{return r()}catch(r){return n(r)}};var s=function(r){try{console.error(r);K("error");G.current=r.message;I.current=false;return a(l)()}catch(r){return a(n)(r)}};try{t=i({},V,e);F(true);return Promise.resolve(d.onRequest(t)).then((function(r){try{o=r;K("success");A(o);I.current=false;return a(l)()}catch(r){return s(r)}}),s)}catch(r){s(r)}}))};y.useEffectCustomAsync((function(){return new Promise((function(r,e){if(X.complete){return Promise.resolve(Y()).then(function(r){try{return n.call(this)}catch(r){return e(r)}}.bind(this),e)}function n(){return r()}return n.call(this)}))}),[]);y.useEffectCustom((function(){if(X.complete){if(J){if(!a(d.params,J)){if(H==="error"){K("init")}void Y()}}}}),[J,d.params]);g(e,(function(){return{onRefresh:Y}}));if(!X.complete){if(I.current||!x){return b(h,{})}return b(P,{value:{onRequest:Y},children:j("div",{className:n("local-loading-error",r.className),children:[b("div",{className:"local-loading-area"}),b(c,{status:"error",subTitle:X.message})]})})}if(H==="error"){if(q){return q({message:G.current})}return b(P,{value:{onRequest:Y},children:j("div",{className:n("local-loading-error",r.className),children:[b("div",{className:"local-loading-area"}),b(c,{status:"error",subTitle:G.current||"数据处理异常",extra:[b(u,{type:"primary",ghost:true,size:"small",onClick:function r(){K("init");void Y()},children:"重新获取"},"console")]})]})})}if(H!=="success"&&!N){return b("div",{className:n("fba-local-loading-process",r.className),style:{height:_,display:"flex",justifyContent:"center",position:"relative",backgroundColor:"var(--block-bg-color)"},children:b(m,{spinning:D,tip:Q,wrapperClassName:"local-loading-spin-wrapper",className:"local-loading-spin",style:{"--local-loading-spin-bgColor":O},children:M})})}var Z=n("fba-local-loading",{"fll-content-scroll":k},r.className);var $=i({height:L},r.style);return b(P,{value:{onRequest:Y},children:j("div",{className:Z,style:$,children:[D?b(m,{spinning:D,tip:Q,wrapperClassName:"local-loading-spin-wrapper",className:"local-loading-spin",style:{"--local-loading-spin-bgColor":O},children:M}):null,b("div",{className:"local-loading-content",style:E,children:C(z)})]})})}));var R=r.attachPropertiesToComponent(q,{useLocalLoading:function r(){var e=C();return{onRequest:function r(n){e.onRequest(n)}}}});export{R as LocalLoading};
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/local-loading/context.ts","@flatbiz/antd/src/local-loading/local-loading.tsx","@flatbiz/antd/src/local-loading/index.ts"],"sourcesContent":["import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useLocalLoadingCtx, LocalLoadingCtxProvider] = createCtx<{\n onRequest: (params?: TPlainObject) => void;\n}>();\n","import { isDeepEqual } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { getValueOrDefault, isUndefinedOrNull, TAny, toArray, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Result, Spin } from 'antd';\nimport {\n CSSProperties,\n forwardRef,\n Fragment,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { LocalLoadingCtxProvider } from './context';\nimport './style.less';\n\nexport type LocalLoadingServiceConfig = {\n onRequest: (params?: TAny) => Promise<TAny>;\n params?: TPlainObject;\n /** 标记serviceConfig.params中无效参数,被设置的params key 不传入服务接口入参 */\n invalidParamKey?: string[];\n /** 必填字段设置 */\n requiredParamsKeys?: string[];\n};\n\nexport interface LocalLoadingProps {\n className?: string;\n style?: CSSProperties;\n contentStyle?: CSSProperties;\n /** 接口数据配置 */\n serviceConfig: LocalLoadingServiceConfig;\n /** children 为函数,参数【respData】为接口返回数据 */\n children: (respData?: TAny) => ReactElement;\n /**\n * 是否异步,默认:false\n * ```\n * true(异步):onRequest、react dom渲染同步执行\n * false(同步):onRequest有结果了才渲染 react dom\n * ```\n */\n isAsync?: boolean;\n /** loading高度,默认值:100;isAsync = true 无效 */\n loadingHeight?: number | string;\n /** loading spin 属性设置 */\n loadingSpinProps?: {\n /** loading tip,默认值:Loading */\n tip?: string;\n /** loading 内容 */\n content?: ReactElement;\n /** 背景色,默认值:rgba(0,0,0,0.01) */\n bgColor?: string;\n };\n textConfigs?: {\n /** 必填异常文本 */\n requiredErrorText?: string;\n };\n /** 是否显示必填异常 */\n showRequiredError?: boolean;\n /** 自定义异常渲染处理 */\n errorRender?: (error?: TAny) => ReactElement;\n}\n\nexport type LocalLoadingRefApi = {\n onRefresh: (params?: TPlainObject) => void;\n};\n\n/**\n * 局部加载,包含接口数据处理逻辑\n * ```\n * 包括\n * 1. loading显示效果、error显示效果、获取服务数据\n * 2. 当 serviceConfig.params 值与上一次值不相等时,会主动发起服务调用\n * 3. 通过 serviceConfig.requiredParamsKeys 设置服务调用必填字段\n * 4. 通过 ref.onRequest 可主动发起服务调用\n * 5. 子组件通过下面方式主动发起服务调用\n * const localLoadingApi = LocalLoading.useLocalLoading();\n * localLoadingApi.onRequest();\n * ```\n */\nexport const LocalLoadingInner = forwardRef<LocalLoadingRefApi, LocalLoadingProps>((props, ref) => {\n const { serviceConfig, isAsync, children, errorRender, loadingSpinProps, textConfigs, showRequiredError } =\n props;\n const [status, setStatus] = useState<'success' | 'error' | 'required_error' | 'init'>('init');\n const [respData, setRespData] = useState<TAny>();\n const loadingHeight = props.loadingHeight === undefined ? 100 : props.loadingHeight;\n const [loading, setLoading] = useState<boolean>(false);\n const errorRef = useRef<string>();\n const hiddenRequiredErrorRenderRef = useRef(true);\n\n const prevParams = fbaHooks.usePrevious(serviceConfig.params);\n\n const loadingSpinContent = getValueOrDefault(loadingSpinProps?.content, <span />);\n const loadingSpinBgColor = getValueOrDefault(loadingSpinProps?.bgColor, 'rgba(0,0,0,0.01)');\n const loadingSpinTip = getValueOrDefault(loadingSpinProps?.tip, 'Loading');\n\n const requiredErrorText = textConfigs?.requiredErrorText;\n\n // 用于直接发起接口调用,不能用于比较\n const serviceParams = useMemo(() => {\n if (!serviceConfig.params || toArray(serviceConfig.invalidParamKey).length === 0) {\n return serviceConfig.params;\n }\n const newParams = { ...serviceConfig.params };\n serviceConfig.invalidParamKey?.forEach((key) => {\n newParams[key] = undefined;\n });\n return newParams;\n }, [serviceConfig]);\n\n // 判断必要参数是否完整\n const validateRequiredParamsComplete = hooks.useCallbackRef((params?: TPlainObject) => {\n const keys = serviceConfig?.requiredParamsKeys;\n if (keys?.length) {\n const target = keys.find((item) => {\n return isUndefinedOrNull(params?.[item]);\n });\n if (target) {\n return {\n complete: false,\n message: requiredErrorText || `LocalLoading渲染缺少必填参数:${keys.join('、')}`,\n };\n }\n }\n return { complete: true };\n });\n\n const completeResult = useMemo(() => {\n return validateRequiredParamsComplete(serviceConfig.params);\n }, [validateRequiredParamsComplete, serviceConfig.params]);\n\n const onInitRequest = async (params?: TPlainObject) => {\n try {\n const mergeProps = { ...serviceParams, ...params };\n setLoading(true);\n const respData = await serviceConfig.onRequest(mergeProps);\n setStatus('success');\n setRespData(respData);\n hiddenRequiredErrorRenderRef.current = false;\n } catch (error: TAny) {\n console.error(error);\n setStatus('error');\n errorRef.current = error.message;\n hiddenRequiredErrorRenderRef.current = false;\n } finally {\n setLoading(false);\n }\n };\n\n fbaHooks.useEffectCustomAsync(async () => {\n if (completeResult.complete) {\n await onInitRequest();\n }\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n if (completeResult.complete) {\n if (prevParams) {\n if (!isDeepEqual(serviceConfig.params, prevParams)) {\n if (status === 'error') {\n setStatus('init');\n }\n void onInitRequest();\n }\n }\n }\n }, [prevParams, serviceConfig.params]);\n\n useImperativeHandle(ref, () => {\n return { onRefresh: onInitRequest };\n });\n\n if (!completeResult.complete) {\n if (hiddenRequiredErrorRenderRef.current || !showRequiredError) {\n return <Fragment />;\n }\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('local-loading-error', props.className)}>\n <div className=\"local-loading-area\"></div>\n <Result status=\"error\" subTitle={completeResult.message} />\n </div>\n </LocalLoadingCtxProvider>\n );\n }\n\n if (status === 'error') {\n if (errorRender) {\n return errorRender({ message: errorRef.current });\n }\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('local-loading-error', props.className)}>\n <div className=\"local-loading-area\"></div>\n <Result\n status=\"error\"\n subTitle={errorRef.current || '数据处理异常'}\n extra={[\n <Button\n type=\"primary\"\n ghost\n key=\"console\"\n size=\"small\"\n onClick={() => {\n setStatus('init');\n void onInitRequest();\n }}\n >\n 重新获取\n </Button>,\n ]}\n />\n </div>\n </LocalLoadingCtxProvider>\n );\n }\n\n if (status !== 'success' && !isAsync) {\n return (\n <div\n className={classNames('fba-local-loading-process', props.className)}\n style={{\n height: loadingHeight,\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n backgroundColor: 'var(--block-bg-color)',\n }}\n >\n <Spin\n spinning={loading}\n tip={loadingSpinTip}\n wrapperClassName=\"local-loading-spin-wrapper\"\n className=\"local-loading-spin\"\n style={\n {\n '--local-loading-spin-bgColor': loadingSpinBgColor,\n } as CSSProperties\n }\n >\n {loadingSpinContent}\n </Spin>\n </div>\n );\n }\n\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('fba-local-loading', props.className)} style={props.style}>\n {loading ? (\n <Spin\n spinning={loading}\n tip={loadingSpinTip}\n wrapperClassName=\"local-loading-spin-wrapper\"\n className=\"local-loading-spin\"\n style={\n {\n '--local-loading-spin-bgColor': loadingSpinBgColor,\n } as CSSProperties\n }\n >\n {loadingSpinContent}\n </Spin>\n ) : null}\n <div className=\"local-loading-content\" style={props.contentStyle}>\n {children(respData)}\n </div>\n </div>\n </LocalLoadingCtxProvider>\n );\n});\n","import { TPlainObject } from '@flatbiz/utils';\nimport { fbaUtils } from '../fba-utils';\nimport { useLocalLoadingCtx } from './context';\nimport { LocalLoadingInner } from './local-loading';\n\n/**\n * 局部加载,包含接口数据处理逻辑\n * ```\n * 包括\n * 1. loading显示效果、error显示效果、获取服务数据\n * 2. 当 serviceConfig.params 值与上一次值不相等时,会主动发起服务调用\n * 3. 通过 serviceConfig.requiredParamsKeys 设置服务调用必填字段\n * 4. 通过 ref.onRequest 可主动发起服务调用\n * 5. 子组件通过下面方式主动发起服务调用\n * const localLoadingApi = LocalLoading.useLocalLoading();\n * localLoadingApi.onRequest();\n * ```\n */\nexport const LocalLoading = fbaUtils.attachPropertiesToComponent(LocalLoadingInner, {\n useLocalLoading: () => {\n const ctx = useLocalLoadingCtx();\n return {\n onRequest: (params?: TPlainObject) => {\n ctx.onRequest(params);\n },\n };\n },\n});\n"],"names":["_createCtx","_createCtx2","useLocalLoadingCtx","LocalLoadingCtxProvider","LocalLoadingInner","forwardRef","props","ref","serviceConfig","isAsync","children","errorRender","loadingSpinProps","textConfigs","showRequiredError","_useState","useState","status","setStatus","_useState2","respData","setRespData","loadingHeight","undefined","_useState3","loading","setLoading","errorRef","useRef","hiddenRequiredErrorRenderRef","prevParams","fbaHooks","usePrevious","params","loadingSpinContent","getValueOrDefault","content","_jsx","loadingSpinBgColor","bgColor","loadingSpinTip","tip","requiredErrorText","serviceParams","useMemo","_serviceConfig$invali","toArray","invalidParamKey","length","newParams","_extends","forEach","key","validateRequiredParamsComplete","_hooks","useCallbackRef","keys","requiredParamsKeys","target","find","item","isUndefinedOrNull","complete","message","join","completeResult","onInitRequest","Promise","$return","$error","$Try_1_Finally","$Try_1_Exit","$Try_1_Value","call","this","$boundEx","bind","mergeProps","_respData","$Try_1_Post","$Try_1_Catch","error","console","current","resolve","onRequest","then","$await_3","useEffectCustomAsync","$await_4","$If_2","useEffectCustom","_isDeepEqual","useImperativeHandle","onRefresh","Fragment","value","_jsxs","className","_classNames","Result","subTitle","extra","Button","type","ghost","size","onClick","style","height","display","justifyContent","position","backgroundColor","Spin","spinning","wrapperClassName","contentStyle","LocalLoading","fbaUtils","attachPropertiesToComponent","useLocalLoading","ctx"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/local-loading/context.ts","@flatbiz/antd/src/local-loading/local-loading.tsx","@flatbiz/antd/src/local-loading/index.ts"],"sourcesContent":["import { TPlainObject } from '@flatbiz/utils';\nimport { createCtx } from '@wove/react';\n\nexport const [useLocalLoadingCtx, LocalLoadingCtxProvider] = createCtx<{\n onRequest: (params?: TPlainObject) => void;\n}>();\n","import { isDeepEqual } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport type { TAny, TPlainObject } from '@flatbiz/utils';\nimport { getValueOrDefault, isUndefinedOrNull, toArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, Result, Spin } from 'antd';\nimport type { CSSProperties, ReactElement } from 'react';\nimport { forwardRef, Fragment, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { fbaHooks } from '../fba-hooks';\nimport { LocalLoadingCtxProvider } from './context';\nimport './style.less';\n\nexport type LocalLoadingServiceConfig = {\n onRequest: (params?: TAny) => Promise<TAny>;\n params?: TPlainObject;\n /** 标记serviceConfig.params中无效参数,被设置的params key 不传入服务接口入参 */\n invalidParamKey?: string[];\n /** 必填字段设置 */\n requiredParamsKeys?: string[];\n};\n\nexport interface LocalLoadingProps {\n className?: string;\n style?: CSSProperties;\n contentStyle?: CSSProperties;\n /** 接口数据配置 */\n serviceConfig: LocalLoadingServiceConfig;\n /** children 为函数,参数【respData】为接口返回数据 */\n children: (respData?: TAny) => ReactElement;\n /**\n * 是否异步,默认:false\n * ```\n * true(异步):onRequest、react dom渲染同步执行\n * false(同步):onRequest有结果了才渲染 react dom\n * ```\n */\n isAsync?: boolean;\n /** loading高度,默认值:100;isAsync = true 无效 */\n loadingHeight?: number | string;\n /** loading spin 属性设置 */\n loadingSpinProps?: {\n /** loading tip,默认值:Loading */\n tip?: string;\n /** loading 内容 */\n content?: ReactElement;\n /** 背景色,默认值:rgba(0,0,0,0.01) */\n bgColor?: string;\n };\n textConfigs?: {\n /** 必填异常文本 */\n requiredErrorText?: string;\n };\n /** 是否显示必填异常 */\n showRequiredError?: boolean;\n /** 自定义异常渲染处理 */\n errorRender?: (error?: TAny) => ReactElement;\n /** 设置内部滚动,需要设置 style.height 才能生效,@5.0.16 */\n contentScroll?: boolean;\n /** 设置高度 */\n height?: number | string;\n}\n\nexport type LocalLoadingRefApi = {\n onRefresh: (params?: TPlainObject) => void;\n};\n\n/**\n * 局部加载,包含接口数据处理逻辑\n * ```\n * 包括\n * 1. loading显示效果、error显示效果、获取服务数据\n * 2. 当 serviceConfig.params 值与上一次值不相等时,会主动发起服务调用\n * 3. 通过 serviceConfig.requiredParamsKeys 设置服务调用必填字段\n * 4. 通过 ref.onRequest 可主动发起服务调用\n * 5. 子组件通过下面方式主动发起服务调用\n * const localLoadingApi = LocalLoading.useLocalLoading();\n * localLoadingApi.onRequest();\n * 6. 如果内部需要滚动条,可设置 contentScroll = true (外部有高度或者设置style.height 才能生效)\n * ```\n */\nexport const LocalLoadingInner = forwardRef<LocalLoadingRefApi, LocalLoadingProps>((props, ref) => {\n const {\n serviceConfig,\n isAsync,\n children,\n errorRender,\n loadingSpinProps,\n textConfigs,\n showRequiredError,\n contentScroll,\n contentStyle,\n height,\n } = props;\n const [status, setStatus] = useState<'success' | 'error' | 'required_error' | 'init'>('init');\n const [respData, setRespData] = useState<TAny>();\n const loadingHeight = props.loadingHeight === undefined ? 100 : props.loadingHeight;\n const [loading, setLoading] = useState<boolean>(false);\n const errorRef = useRef<string>();\n const hiddenRequiredErrorRenderRef = useRef(true);\n\n const prevParams = fbaHooks.usePrevious(serviceConfig.params);\n\n const loadingSpinContent = getValueOrDefault(loadingSpinProps?.content, <span />);\n const loadingSpinBgColor = getValueOrDefault(loadingSpinProps?.bgColor, 'rgba(0,0,0,0.01)');\n const loadingSpinTip = getValueOrDefault(loadingSpinProps?.tip, 'Loading');\n\n const requiredErrorText = textConfigs?.requiredErrorText;\n\n // 用于直接发起接口调用,不能用于比较\n const serviceParams = useMemo(() => {\n if (!serviceConfig.params || toArray(serviceConfig.invalidParamKey).length === 0) {\n return serviceConfig.params;\n }\n const newParams = { ...serviceConfig.params };\n serviceConfig.invalidParamKey?.forEach((key) => {\n newParams[key] = undefined;\n });\n return newParams;\n }, [serviceConfig]);\n\n // 判断必要参数是否完整\n const validateRequiredParamsComplete = hooks.useCallbackRef((params?: TPlainObject) => {\n const keys = serviceConfig?.requiredParamsKeys;\n if (keys?.length) {\n const target = keys.find((item) => {\n return isUndefinedOrNull(params?.[item]);\n });\n if (target) {\n return {\n complete: false,\n message: requiredErrorText || `LocalLoading渲染缺少必填参数:${keys.join('、')}`,\n };\n }\n }\n return { complete: true };\n });\n\n const completeResult = useMemo(() => {\n return validateRequiredParamsComplete(serviceConfig.params);\n }, [validateRequiredParamsComplete, serviceConfig.params]);\n\n const onInitRequest = async (params?: TPlainObject) => {\n try {\n const mergeProps = { ...serviceParams, ...params };\n setLoading(true);\n const respData = await serviceConfig.onRequest(mergeProps);\n setStatus('success');\n setRespData(respData);\n hiddenRequiredErrorRenderRef.current = false;\n } catch (error: TAny) {\n console.error(error);\n setStatus('error');\n errorRef.current = error.message;\n hiddenRequiredErrorRenderRef.current = false;\n } finally {\n setLoading(false);\n }\n };\n\n fbaHooks.useEffectCustomAsync(async () => {\n if (completeResult.complete) {\n await onInitRequest();\n }\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n if (completeResult.complete) {\n if (prevParams) {\n if (!isDeepEqual(serviceConfig.params, prevParams)) {\n if (status === 'error') {\n setStatus('init');\n }\n void onInitRequest();\n }\n }\n }\n }, [prevParams, serviceConfig.params]);\n\n useImperativeHandle(ref, () => {\n return { onRefresh: onInitRequest };\n });\n\n if (!completeResult.complete) {\n if (hiddenRequiredErrorRenderRef.current || !showRequiredError) {\n return <Fragment />;\n }\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('local-loading-error', props.className)}>\n <div className=\"local-loading-area\"></div>\n <Result status=\"error\" subTitle={completeResult.message} />\n </div>\n </LocalLoadingCtxProvider>\n );\n }\n\n if (status === 'error') {\n if (errorRender) {\n return errorRender({ message: errorRef.current });\n }\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={classNames('local-loading-error', props.className)}>\n <div className=\"local-loading-area\"></div>\n <Result\n status=\"error\"\n subTitle={errorRef.current || '数据处理异常'}\n extra={[\n <Button\n type=\"primary\"\n ghost\n key=\"console\"\n size=\"small\"\n onClick={() => {\n setStatus('init');\n void onInitRequest();\n }}\n >\n 重新获取\n </Button>,\n ]}\n />\n </div>\n </LocalLoadingCtxProvider>\n );\n }\n\n if (status !== 'success' && !isAsync) {\n return (\n <div\n className={classNames('fba-local-loading-process', props.className)}\n style={{\n height: loadingHeight,\n display: 'flex',\n justifyContent: 'center',\n position: 'relative',\n backgroundColor: 'var(--block-bg-color)',\n }}\n >\n <Spin\n spinning={loading}\n tip={loadingSpinTip}\n wrapperClassName=\"local-loading-spin-wrapper\"\n className=\"local-loading-spin\"\n style={\n {\n '--local-loading-spin-bgColor': loadingSpinBgColor,\n } as CSSProperties\n }\n >\n {loadingSpinContent}\n </Spin>\n </div>\n );\n }\n\n const className = classNames('fba-local-loading', { 'fll-content-scroll': contentScroll }, props.className);\n\n const rootStyle = { height, ...props.style };\n\n return (\n <LocalLoadingCtxProvider value={{ onRequest: onInitRequest }}>\n <div className={className} style={rootStyle}>\n {loading ? (\n <Spin\n spinning={loading}\n tip={loadingSpinTip}\n wrapperClassName=\"local-loading-spin-wrapper\"\n className=\"local-loading-spin\"\n style={\n {\n '--local-loading-spin-bgColor': loadingSpinBgColor,\n } as CSSProperties\n }\n >\n {loadingSpinContent}\n </Spin>\n ) : null}\n <div className=\"local-loading-content\" style={contentStyle}>\n {children(respData)}\n </div>\n </div>\n </LocalLoadingCtxProvider>\n );\n});\n","import { TPlainObject } from '@flatbiz/utils';\nimport { fbaUtils } from '../fba-utils';\nimport { useLocalLoadingCtx } from './context';\nimport { LocalLoadingInner } from './local-loading';\n\n/**\n * 局部加载,包含接口数据处理逻辑\n * ```\n * 包括\n * 1. loading显示效果、error显示效果、获取服务数据\n * 2. 当 serviceConfig.params 值与上一次值不相等时,会主动发起服务调用\n * 3. 通过 serviceConfig.requiredParamsKeys 设置服务调用必填字段\n * 4. 通过 ref.onRequest 可主动发起服务调用\n * 5. 子组件通过下面方式主动发起服务调用\n * const localLoadingApi = LocalLoading.useLocalLoading();\n * localLoadingApi.onRequest();\n * ```\n */\nexport const LocalLoading = fbaUtils.attachPropertiesToComponent(LocalLoadingInner, {\n useLocalLoading: () => {\n const ctx = useLocalLoadingCtx();\n return {\n onRequest: (params?: TPlainObject) => {\n ctx.onRequest(params);\n },\n };\n },\n});\n"],"names":["_createCtx","_createCtx2","useLocalLoadingCtx","LocalLoadingCtxProvider","LocalLoadingInner","forwardRef","props","ref","serviceConfig","isAsync","children","errorRender","loadingSpinProps","textConfigs","showRequiredError","contentScroll","contentStyle","height","_useState","useState","status","setStatus","_useState2","respData","setRespData","loadingHeight","undefined","_useState3","loading","setLoading","errorRef","useRef","hiddenRequiredErrorRenderRef","prevParams","fbaHooks","usePrevious","params","loadingSpinContent","getValueOrDefault","content","_jsx","loadingSpinBgColor","bgColor","loadingSpinTip","tip","requiredErrorText","serviceParams","useMemo","_serviceConfig$invali","toArray","invalidParamKey","length","newParams","_extends","forEach","key","validateRequiredParamsComplete","_hooks","useCallbackRef","keys","requiredParamsKeys","target","find","item","isUndefinedOrNull","complete","message","join","completeResult","onInitRequest","Promise","$return","$error","$Try_1_Finally","$Try_1_Exit","$Try_1_Value","call","this","$boundEx","bind","mergeProps","_respData","$Try_1_Post","$Try_1_Catch","error","console","current","resolve","onRequest","then","$await_3","useEffectCustomAsync","$await_4","$If_2","useEffectCustom","_isDeepEqual","useImperativeHandle","onRefresh","Fragment","value","_jsxs","className","_classNames","Result","subTitle","extra","Button","type","ghost","size","onClick","style","display","justifyContent","position","backgroundColor","Spin","spinning","wrapperClassName","rootStyle","LocalLoading","fbaUtils","attachPropertiesToComponent","useLocalLoading","ctx"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{valueIsEqual as n}from"@flatbiz/utils";import{Space as e,Radio as r}from"antd";import{jsx as t}from"react/jsx-runtime";var a=function a(i){var u=function n(e){return new Promise((function(n,r){var t;t=e.target.value;if(i.onPreChange){return Promise.resolve(i.onPreChange(t)).then(function(n){try{return a.call(this)}catch(n){return r(n)}}.bind(this),r)}function a(){i.onChange==null?void 0:i.onChange(t);return n()}return a.call(this)}))};var o=function e(r){if(!i.isCancel)return;var t=r.target.value;if(n(i.value,t)){i.onChange==null?void 0:i.onChange(undefined)}};return t(e,{size:5,wrap:true,children:i.options.map((function(n){return t(r,{value:n.value,onClick:o,checked:i.value===n.value,onChange:u,disabled:i.disabled||n.disabled,children:n.label},String(n.value))}))})};export{a as RadioGroupWrapper};
4
+ import{valueIsEqual as n}from"@flatbiz/utils";import{Space as e,Radio as r}from"antd";import{jsx as t}from"react/jsx-runtime";var i=function i(a){var o=function n(e){return new Promise((function(n,r){var t;t=e.target.value;if(a.onPreChange){return Promise.resolve(a.onPreChange(t)).then(function(n){try{return i.call(this)}catch(n){return r(n)}}.bind(this),r)}function i(){a.onChange==null?void 0:a.onChange(t);return n()}return i.call(this)}))};var u=function e(r){if(!a.isCancel)return;var t=r.target.value;if(n(a.value,t)){a.onChange==null?void 0:a.onChange(undefined)}};return t(e,{size:5,wrap:true,direction:a.direction,children:a.options.map((function(n){return t(r,{value:n.value,onClick:u,checked:a.value===n.value,onChange:o,disabled:a.disabled||n.disabled,children:n.label},String(n.value))}))})};export{i as RadioGroupWrapper};
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/radio-group-wrapper/radio-group-wrapper.tsx"],"sourcesContent":["import { valueIsEqual } from '@flatbiz/utils';\nimport { Radio, Space } from 'antd';\nimport { ReactElement } from 'react';\n\nexport type RadioGroupWrapperValue = string | number | boolean;\n\nexport type RadioGroupWrapperOptionItem = {\n label: string | ReactElement;\n value: RadioGroupWrapperValue;\n disabled?: boolean;\n};\n\nexport type CustomRadioGroupProps = {\n value?: RadioGroupWrapperValue;\n onChange?: (value?: RadioGroupWrapperValue) => void;\n onPreChange?: (value?: RadioGroupWrapperValue) => Promise<void>;\n options: RadioGroupWrapperOptionItem[];\n /** 是否可取消选中,默认:false */\n isCancel?: boolean;\n disabled?: boolean;\n};\n\n/**\n * RadioGroupWrapper 为了解决 RadioGroup 组件不能取消选中问题\n * @param props\n * @returns\n */\nexport const RadioGroupWrapper = (props: CustomRadioGroupProps) => {\n const onChange = async (event) => {\n const value = event.target.value;\n if (props.onPreChange) {\n await props.onPreChange(value);\n }\n props.onChange?.(value);\n };\n const onClick = (event) => {\n if (!props.isCancel) return;\n const value = event.target.value;\n if (valueIsEqual(props.value, value)) {\n props.onChange?.(undefined);\n }\n };\n return (\n <Space size={5} wrap={true}>\n {props.options.map((item) => {\n return (\n <Radio\n value={item.value}\n onClick={onClick}\n checked={props.value === item.value}\n key={String(item.value)}\n onChange={onChange}\n disabled={props.disabled || item.disabled}\n >\n {item.label}\n </Radio>\n );\n })}\n </Space>\n );\n};\n"],"names":["RadioGroupWrapper","props","onChange","event","Promise","$return","$error","value","target","onPreChange","resolve","then","$await_2","$If_1","call","this","$boundEx","bind","onClick","isCancel","valueIsEqual","undefined","_jsx","Space","size","wrap","children","options","map","item","Radio","checked","disabled","label","String"],"mappings":";kIA2BaA,EAAoB,SAApBA,EAAqBC,GAChC,IAAMC,EAAW,SAAXA,EAAkBC,GAAP,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IACTC,EAAAA,EAAQJ,EAAMK,OAAOD,MAC3B,GAAIN,EAAMQ,YAAa,CACrB,OAAAL,QAAAM,QAAMT,EAAMQ,YAAYF,IAAxBI,KA/BN,SAAAC,GAAA,IAAI,OAAJC,EAAGC,KAAIC,KAAE,CAAC,MAAAC,GAAW,OAAOV,EAAAU,EAAM,CAAC,EAAhCC,KAAKF,MAAKT,EAgCT,CAAC,SAAAO,IACDZ,EAAMC,UAAND,UAAAA,EAAAA,EAAMC,SAAWK,GAAO,OAAAF,GAAA,CAAA,OAjC5BQ,EAAGC,KAAIC,KAAI,GAkCR,EACD,IAAMG,EAAU,SAAVA,EAAWf,GACf,IAAKF,EAAMkB,SAAU,OACrB,IAAMZ,EAAQJ,EAAMK,OAAOD,MAC3B,GAAIa,EAAanB,EAAMM,MAAOA,GAAQ,CACpCN,EAAMC,UAAND,UAAAA,EAAAA,EAAMC,SAAWmB,UACnB,GAEF,OACEC,EAACC,EAAK,CAACC,KAAM,EAAGC,KAAM,KAAKC,SACxBzB,EAAM0B,QAAQC,KAAI,SAACC,GAClB,OACEP,EAACQ,EAAK,CACJvB,MAAOsB,EAAKtB,MACZW,QAASA,EACTa,QAAS9B,EAAMM,QAAUsB,EAAKtB,MAE9BL,SAAUA,EACV8B,SAAU/B,EAAM+B,UAAYH,EAAKG,SAASN,SAEzCG,EAAKI,OAJDC,OAAOL,EAAKtB,YAU7B"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/radio-group-wrapper/radio-group-wrapper.tsx"],"sourcesContent":["import { valueIsEqual } from '@flatbiz/utils';\nimport { Radio, Space } from 'antd';\nimport { ReactElement } from 'react';\n\nexport type RadioGroupWrapperValue = string | number | boolean;\n\nexport type RadioGroupWrapperOptionItem = {\n label: string | ReactElement;\n value: RadioGroupWrapperValue;\n disabled?: boolean;\n};\n\nexport type CustomRadioGroupProps = {\n value?: RadioGroupWrapperValue;\n onChange?: (value?: RadioGroupWrapperValue) => void;\n onPreChange?: (value?: RadioGroupWrapperValue) => Promise<void>;\n options: RadioGroupWrapperOptionItem[];\n /** 是否可取消选中,默认:false */\n isCancel?: boolean;\n disabled?: boolean;\n /**方向,默认值 horizontal */\n direction?: 'horizontal' | 'vertical';\n};\n\n/**\n * RadioGroupWrapper 为了解决 RadioGroup 组件不能取消选中问题\n * @param props\n * @returns\n */\nexport const RadioGroupWrapper = (props: CustomRadioGroupProps) => {\n const onChange = async (event) => {\n const value = event.target.value;\n if (props.onPreChange) {\n await props.onPreChange(value);\n }\n props.onChange?.(value);\n };\n const onClick = (event) => {\n if (!props.isCancel) return;\n const value = event.target.value;\n if (valueIsEqual(props.value, value)) {\n props.onChange?.(undefined);\n }\n };\n return (\n <Space size={5} wrap={true} direction={props.direction}>\n {props.options.map((item) => {\n return (\n <Radio\n value={item.value}\n onClick={onClick}\n checked={props.value === item.value}\n key={String(item.value)}\n onChange={onChange}\n disabled={props.disabled || item.disabled}\n >\n {item.label}\n </Radio>\n );\n })}\n </Space>\n );\n};\n"],"names":["RadioGroupWrapper","props","onChange","event","Promise","$return","$error","value","target","onPreChange","resolve","then","$await_2","$If_1","call","this","$boundEx","bind","onClick","isCancel","valueIsEqual","undefined","_jsx","Space","size","wrap","direction","children","options","map","item","Radio","checked","disabled","label","String"],"mappings":";kIA6BaA,EAAoB,SAApBA,EAAqBC,GAChC,IAAMC,EAAW,SAAXA,EAAkBC,GAAP,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IACTC,EAAAA,EAAQJ,EAAMK,OAAOD,MAC3B,GAAIN,EAAMQ,YAAa,CACrB,OAAAL,QAAAM,QAAMT,EAAMQ,YAAYF,IAAxBI,KAjCN,SAAAC,GAAA,IAAI,OAAJC,EAAGC,KAAIC,KAAE,CAAC,MAAAC,GAAW,OAAOV,EAAAU,EAAM,CAAC,EAAhCC,KAAKF,MAAKT,EAkCT,CAAC,SAAAO,IACDZ,EAAMC,UAAND,UAAAA,EAAAA,EAAMC,SAAWK,GAAO,OAAAF,GAAA,CAAA,OAnC5BQ,EAAGC,KAAIC,KAAI,GAoCR,EACD,IAAMG,EAAU,SAAVA,EAAWf,GACf,IAAKF,EAAMkB,SAAU,OACrB,IAAMZ,EAAQJ,EAAMK,OAAOD,MAC3B,GAAIa,EAAanB,EAAMM,MAAOA,GAAQ,CACpCN,EAAMC,UAAND,UAAAA,EAAAA,EAAMC,SAAWmB,UACnB,GAEF,OACEC,EAACC,EAAK,CAACC,KAAM,EAAGC,KAAM,KAAMC,UAAWzB,EAAMyB,UAAUC,SACpD1B,EAAM2B,QAAQC,KAAI,SAACC,GAClB,OACER,EAACS,EAAK,CACJxB,MAAOuB,EAAKvB,MACZW,QAASA,EACTc,QAAS/B,EAAMM,QAAUuB,EAAKvB,MAE9BL,SAAUA,EACV+B,SAAUhC,EAAMgC,UAAYH,EAAKG,SAASN,SAEzCG,EAAKI,OAJDC,OAAOL,EAAKvB,YAU7B"}
@@ -1 +1 @@
1
- .num-ff{font-family:var(--v-font-family-number)}p,ul{margin:0;padding:0}.hide{display:none}.clear-fix:after{clear:both;content:" ";display:block;font-size:0;height:0;visibility:hidden}.ant-btn-variant-dashed:disabled,.ant-btn-variant-link:disabled,.ant-btn-variant-solid:disabled,.ant-checkbox-disabled+span,.ant-input-number-outlined.ant-input-number-disabled,.ant-input[disabled],.ant-radio-wrapper-disabled,.ant-select-multiple.ant-select-disabled .ant-select-selection-item,.ant-select-outlined.ant-select-disabled:not(.ant-select-customize-input) .ant-select-selector{color:rgba(0,0,0,.6)!important}.ant-radio-disabled .ant-radio-inner:after{background-color:rgba(0,0,0,.5)!important}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:rgba(0,0,0,.6)!important}
1
+ .num-ff{font-family:var(--v-font-family-number)}p,ul{margin:0;padding:0}.hide{display:none}.clear-fix:after{clear:both;content:" ";display:block;font-size:0;height:0;visibility:hidden}.ant-btn-variant-dashed:disabled,.ant-btn-variant-link:disabled,.ant-btn-variant-solid:disabled,.ant-checkbox-disabled+span,.ant-input-number-outlined.ant-input-number-disabled,.ant-input[disabled],.ant-radio-wrapper-disabled,.ant-select-multiple.ant-select-disabled .ant-select-selection-item,.ant-select-outlined.ant-select-disabled:not(.ant-select-customize-input) .ant-select-selector{color:rgba(0,0,0,.8)!important}.ant-radio-disabled .ant-radio-inner:after{background-color:rgba(0,0,0,.5)!important}.ant-checkbox-disabled .ant-checkbox-inner:after{border-color:rgba(0,0,0,.6)!important}
@@ -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: Omit<TabsProps, 'tabPosition'>;\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":"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"}
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"}