@flatbiz/antd 4.5.5 → 4.5.7

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,5 +1,5 @@
1
1
  /* eslint-disable */
2
2
  import './index.css';
3
3
  /*! @flatjs/forge MIT @flatbiz/antd */
4
- import{a as e,_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as i}from"@wove/react/cjs/hooks";import{flatbizDate as t}from"@flatbiz/utils";import{DatePicker as a}from"antd";import n from"dayjs";import{useMemo as o}from"react";import{D as u,g as s,a as f,b as l}from"../time-53b3f55f.js";import{jsx as d}from"react/jsx-runtime";var m=["value","onChange","style","format","outputNormalize","inputNormalize"];var v=function v(b){var c=b.value,D=b.onChange,p=b.style,M=b.format,g=b.outputNormalize,C=b.inputNormalize,h=e(b,m);var Y=b.disabledDateConfig||{},z=Y.minDate,L=Y.maxDate,j=Y.disabledHourList,w=Y.disabledMinuteList,H=Y.disabledSecondList;var N=z?n(z):undefined;var T=L?n(L):undefined;var k=o((function(){if(M)return M;if(b.showTime)return u.YMDHms;return u.YMD}),[b.showTime,M]);var x=i.useCallbackRef((function(e,r){if(e){if(g){D==null?void 0:D(g(r))}else{D==null?void 0:D(r)}}else{D==null?void 0:D(undefined)}}));var y=i.useCallbackRef((function(e){var r=e.format(u.YMD);if(!b.disabledDateConfig){return false}if(N&&T){if(!t.in(r,N.format(u.YMD),T.format(u.YMD))){return true}}else if(N){if(!t.gte(r,N.format(u.YMD))){return true}}else if(T){if(!t.gte(T.format(u.YMD),r)){return true}}return false}));var R=o((function(){if(c){var e=C?C(c):c;if(e){return n(t.dateNormalize(e))}}return undefined}),[c]);var S=i.useCallbackRef((function(e){var r={minDateTime:N,maxDateTime:T,disabledHourList:j,disabledMinuteList:w,disabledSecondList:H};e=e||R||n(new Date);return{disabledHours:function i(){return s(e,r)},disabledMinutes:function i(){return f(e,r)},disabledSeconds:function i(){return l(e,r)}}}));return d(a,r({disabledDate:y,disabledTime:S},h,{format:k,style:r({width:"100%"},p),value:R,onChange:x}))};export{v as DatePickerWrapper};
4
+ import{a as e,_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as i}from"@wove/react/cjs/hooks";import{flatbizDate as t}from"@flatbiz/utils";import{DatePicker as a}from"antd";import n from"dayjs";import{useMemo as o}from"react";import{D as u,g as s,a as f,b as l}from"../time-53b3f55f.js";import{jsx as d}from"react/jsx-runtime";var m=["value","onChange","style","format","outputNormalize","inputNormalize"];var v=function v(c){var b=c.value,D=c.onChange,p=c.style,h=c.format,M=c.outputNormalize,g=c.inputNormalize,w=e(c,m);var T=c.disabledDateConfig||{},C=T.minDate,H=T.maxDate,Y=T.disabledHourList,z=T.disabledMinuteList,L=T.disabledSecondList;var j=C?n(C):undefined;var N=H?n(H):undefined;var k=o((function(){if(h)return h;if(c.showTime)return u.YMDHms;return u.YMD}),[c.showTime,h]);var x=i.useCallbackRef((function(e,r){if(e){if(M){D==null?void 0:D(M(r))}else{D==null?void 0:D(r)}}else{D==null?void 0:D(undefined)}}));var y=i.useCallbackRef((function(e){var r=e.format(u.YMD);if(!c.disabledDateConfig){return false}if(j&&N){if(!t.in(r,j.format(u.YMD),N.format(u.YMD))){return true}}else if(j){if(!t.gte(r,j.format(u.YMD))){return true}}else if(N){if(!t.gte(N.format(u.YMD),r)){return true}}return false}));var R=o((function(){if(b){var e=g?g(b):b;if(e){return n(t.dateNormalize(e))}}return undefined}),[b]);var S=i.useCallbackRef((function(e){var r={minDateTime:j,maxDateTime:N,disabledHourList:Y,disabledMinuteList:z,disabledSecondList:L};e=e||R||n(new Date);return{disabledHours:function i(){return s(e,r)},disabledMinutes:function i(){return f(e,r)},disabledSeconds:function i(){return l(e,r)}}}));var _=o((function(){if(c.showTime)return c.showTime;if(k&&k.includes("HH")){return true}return false}),[c.showTime,k]);return d(a,r({disabledDate:y,disabledTime:S},w,{showTime:_,format:k,style:r({width:"100%"},p),value:R,onChange:x}))};export{v as DatePickerWrapper};
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/date-picker-wrapper/date-picker-wrapper.tsx"],"sourcesContent":["import { flatbizDate, TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { DatePicker } from 'antd';\nimport type { PickerDateProps } from 'antd/es/date-picker/generatePicker';\nimport dayjs from 'dayjs';\nimport { useMemo } from 'react';\nimport { DayjsDateTypeEnum, TDayjsDateType } from '../_utils/constants';\nimport { getDisabledHour, getDisabledMinute, getDisabledSecond } from '../_utils/time';\n\nexport type DatePickerWrapperProps = Omit<PickerDateProps<TAny>, 'value' | 'onChange' | 'format'> & {\n /** 默认格式为 'YYYY-MM-DD' */\n value?: string;\n onChange?: (value?: string) => void;\n disabledDateConfig?: {\n minDate?: TDayjsDateType;\n maxDate?: TDayjsDateType;\n /** 禁用 小时 刻度列表,与日期无关 */\n disabledHourList?: number[];\n /** 禁用 分钟 刻度列表,与日期无关 */\n disabledMinuteList?: number[];\n /** 禁用 秒钟 刻度列表,与日期无关 */\n disabledSecondList?: number[];\n };\n /** 可自定义格式 */\n format?: TDayjsDateType;\n /** value 输出适配 */\n outputNormalize?: (value?: any) => any;\n /** value 输入适配 */\n inputNormalize?: (value?: any) => string | undefined;\n};\n\n/**\n * DatePicker包装组件\n * ```\n * 1. value 默认格式为 'YYYY-MM-DD',可以通过 inputNormalize 来进行自定义转换\n * 2. onChange返回类型 string,可以通过 outputNormalize 来进行自定义转换\n * 3. 默认格式化类型 YYYY-MM-DD; 当showTime===true时,默认格式化类型 DayjsDateTypeEnum.YMDHms;其他格式化类型自定义format\n * 4. 设置 disabledDate 后,disabledDateConfig配置将失效\n * 5. 设置 disabledTime 后,内置的disabledTime逻辑将失效\n * ```\n */\nexport const DatePickerWrapper = (props: DatePickerWrapperProps) => {\n const { value, onChange, style, format, outputNormalize, inputNormalize, ...otherProps } = props;\n const { minDate, maxDate, disabledHourList, disabledMinuteList, disabledSecondList } =\n props.disabledDateConfig || {};\n const minDateTimeDayInst = minDate ? dayjs(minDate) : undefined;\n const maxDateTimeDayInst = maxDate ? dayjs(maxDate) : undefined;\n const customFormat = useMemo(() => {\n if (format) return format as string;\n if (props.showTime) return DayjsDateTypeEnum.YMDHms;\n return DayjsDateTypeEnum.YMD;\n }, [props.showTime, format]);\n\n const onChangeDate = hooks.useCallbackRef((date, dateString: string) => {\n if (date) {\n if (outputNormalize) {\n onChange?.(outputNormalize(dateString));\n } else {\n onChange?.(dateString);\n }\n } else {\n onChange?.(undefined);\n }\n });\n\n const getDisabledDate = hooks.useCallbackRef((current) => {\n const currentDate = current.format(DayjsDateTypeEnum.YMD);\n if (!props.disabledDateConfig) {\n return false;\n }\n if (minDateTimeDayInst && maxDateTimeDayInst) {\n if (\n !flatbizDate.in(\n currentDate,\n minDateTimeDayInst.format(DayjsDateTypeEnum.YMD),\n maxDateTimeDayInst.format(DayjsDateTypeEnum.YMD),\n )\n ) {\n return true;\n }\n } else if (minDateTimeDayInst) {\n if (!flatbizDate.gte(currentDate, minDateTimeDayInst.format(DayjsDateTypeEnum.YMD))) {\n return true;\n }\n } else if (maxDateTimeDayInst) {\n if (!flatbizDate.gte(maxDateTimeDayInst.format(DayjsDateTypeEnum.YMD), currentDate)) {\n return true;\n }\n }\n return false;\n });\n\n const datePickerValue = useMemo(() => {\n if (value) {\n const valueFt = inputNormalize ? inputNormalize(value) : value;\n if (valueFt) {\n return dayjs(flatbizDate.dateNormalize(valueFt));\n }\n }\n return undefined;\n }, [value]);\n\n const getDisabledTime = hooks.useCallbackRef((current) => {\n const options = {\n minDateTime: minDateTimeDayInst,\n maxDateTime: maxDateTimeDayInst,\n disabledHourList,\n disabledMinuteList,\n disabledSecondList,\n };\n current = current || datePickerValue || dayjs(new Date());\n return {\n disabledHours: () => {\n return getDisabledHour(current, options);\n },\n disabledMinutes: () => {\n return getDisabledMinute(current, options);\n },\n disabledSeconds: () => {\n return getDisabledSecond(current, options);\n },\n };\n });\n\n return (\n <DatePicker\n disabledDate={getDisabledDate}\n disabledTime={getDisabledTime}\n {...otherProps}\n format={customFormat}\n style={{ width: '100%', ...style }}\n value={datePickerValue}\n onChange={onChangeDate}\n />\n );\n};\n"],"names":["DatePickerWrapper","props","value","onChange","style","format","outputNormalize","inputNormalize","otherProps","_objectWithoutPropertiesLoose","_excluded","_ref","disabledDateConfig","minDate","maxDate","disabledHourList","disabledMinuteList","disabledSecondList","minDateTimeDayInst","dayjs","undefined","maxDateTimeDayInst","customFormat","useMemo","showTime","DayjsDateTypeEnum","YMDHms","YMD","onChangeDate","_hooks","useCallbackRef","date","dateString","getDisabledDate","current","currentDate","flatbizDate","in","gte","datePickerValue","valueFt","dateNormalize","getDisabledTime","options","minDateTime","maxDateTime","Date","disabledHours","getDisabledHour","disabledMinutes","getDisabledMinute","disabledSeconds","getDisabledSecond","_jsx","DatePicker","_extends","disabledDate","disabledTime","width"],"mappings":";8aAyCaA,EAAoB,SAApBA,EAAqBC,GAChC,IAAQC,EAAmFD,EAAnFC,MAAOC,EAA4EF,EAA5EE,SAAUC,EAAkEH,EAAlEG,MAAOC,EAA2DJ,EAA3DI,OAAQC,EAAmDL,EAAnDK,gBAAiBC,EAAkCN,EAAlCM,eAAmBC,EAAUC,EAAKR,EAAKS,GAChG,IAAAC,EACEV,EAAMW,oBAAsB,CAAE,EADxBC,EAAOF,EAAPE,QAASC,EAAOH,EAAPG,QAASC,EAAgBJ,EAAhBI,iBAAkBC,EAAkBL,EAAlBK,mBAAoBC,EAAkBN,EAAlBM,mBAEhE,IAAMC,EAAqBL,EAAUM,EAAMN,GAAWO,UACtD,IAAMC,EAAqBP,EAAUK,EAAML,GAAWM,UACtD,IAAME,EAAeC,GAAQ,WAC3B,GAAIlB,EAAQ,OAAOA,EACnB,GAAIJ,EAAMuB,SAAU,OAAOC,EAAkBC,OAC7C,OAAOD,EAAkBE,GAC1B,GAAE,CAAC1B,EAAMuB,SAAUnB,IAEpB,IAAMuB,EAAeC,EAAMC,gBAAe,SAACC,EAAMC,GAC/C,GAAID,EAAM,CACR,GAAIzB,EAAiB,CACnBH,eAAAA,EAAWG,EAAgB0B,GAC7B,KAAO,CACL7B,GAAAA,UAAAA,EAAAA,EAAW6B,EACb,CACF,KAAO,CACL7B,GAAAA,UAAAA,EAAAA,EAAWiB,UACb,CACF,IAEA,IAAMa,EAAkBJ,EAAMC,gBAAe,SAACI,GAC5C,IAAMC,EAAcD,EAAQ7B,OAAOoB,EAAkBE,KACrD,IAAK1B,EAAMW,mBAAoB,CAC7B,OAAO,KACT,CACA,GAAIM,GAAsBG,EAAoB,CAC5C,IACGe,EAAYC,GACXF,EACAjB,EAAmBb,OAAOoB,EAAkBE,KAC5CN,EAAmBhB,OAAOoB,EAAkBE,MAE9C,CACA,OAAO,IACT,CACD,MAAM,GAAIT,EAAoB,CAC7B,IAAKkB,EAAYE,IAAIH,EAAajB,EAAmBb,OAAOoB,EAAkBE,MAAO,CACnF,OAAO,IACT,CACD,MAAM,GAAIN,EAAoB,CAC7B,IAAKe,EAAYE,IAAIjB,EAAmBhB,OAAOoB,EAAkBE,KAAMQ,GAAc,CACnF,OAAO,IACT,CACF,CACA,OAAO,KACT,IAEA,IAAMI,EAAkBhB,GAAQ,WAC9B,GAAIrB,EAAO,CACT,IAAMsC,EAAUjC,EAAiBA,EAAeL,GAASA,EACzD,GAAIsC,EAAS,CACX,OAAOrB,EAAMiB,EAAYK,cAAcD,GACzC,CACF,CACA,OAAOpB,SACT,GAAG,CAAClB,IAEJ,IAAMwC,EAAkBb,EAAMC,gBAAe,SAACI,GAC5C,IAAMS,EAAU,CACdC,YAAa1B,EACb2B,YAAaxB,EACbN,iBAAAA,EACAC,mBAAAA,EACAC,mBAAAA,GAEFiB,EAAUA,GAAWK,GAAmBpB,EAAM,IAAI2B,MAClD,MAAO,CACLC,cAAe,SAAAA,IACb,OAAOC,EAAgBd,EAASS,EACjC,EACDM,gBAAiB,SAAAA,IACf,OAAOC,EAAkBhB,EAASS,EACnC,EACDQ,gBAAiB,SAAAA,IACf,OAAOC,EAAkBlB,EAASS,EACpC,EAEJ,IAEA,OACEU,EAACC,EAAUC,EAAA,CACTC,aAAcvB,EACdwB,aAAcf,GACVlC,EAAU,CACdH,OAAQiB,EACRlB,MAAKmD,EAAA,CAAIG,MAAO,QAAWtD,GAC3BF,MAAOqC,EACPpC,SAAUyB,IAGhB"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/date-picker-wrapper/date-picker-wrapper.tsx"],"sourcesContent":["import { flatbizDate, TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { DatePicker } from 'antd';\nimport type { PickerDateProps } from 'antd/es/date-picker/generatePicker';\nimport dayjs from 'dayjs';\nimport { useMemo } from 'react';\nimport { DayjsDateTypeEnum, TDayjsDateType } from '../_utils/constants';\nimport { getDisabledHour, getDisabledMinute, getDisabledSecond } from '../_utils/time';\n\nexport type DatePickerWrapperProps = Omit<PickerDateProps<TAny>, 'value' | 'onChange' | 'format'> & {\n /** 默认格式为 'YYYY-MM-DD' */\n value?: string;\n onChange?: (value?: string) => void;\n disabledDateConfig?: {\n minDate?: TDayjsDateType;\n maxDate?: TDayjsDateType;\n /** 禁用 小时 刻度列表,与日期无关 */\n disabledHourList?: number[];\n /** 禁用 分钟 刻度列表,与日期无关 */\n disabledMinuteList?: number[];\n /** 禁用 秒钟 刻度列表,与日期无关 */\n disabledSecondList?: number[];\n };\n /** 可自定义格式 */\n format?: TDayjsDateType;\n /** value 输出适配 */\n outputNormalize?: (value?: TAny) => TAny;\n /** value 输入适配 */\n inputNormalize?: (value?: TAny) => string | undefined;\n};\n\n/**\n * DatePicker包装组件\n * ```\n * 1. value 默认格式为 'YYYY-MM-DD',可以通过 inputNormalize 来进行自定义转换\n * 2. onChange返回类型 string,可以通过 outputNormalize 来进行自定义转换\n * 3. 默认格式化类型 YYYY-MM-DD; 当showTime===true时,默认格式化类型 DayjsDateTypeEnum.YMDHms;其他格式化类型自定义format\n * 4. 设置 disabledDate 后,disabledDateConfig配置将失效\n * 5. 设置 disabledTime 后,内置的disabledTime逻辑将失效\n * ```\n */\nexport const DatePickerWrapper = (props: DatePickerWrapperProps) => {\n const { value, onChange, style, format, outputNormalize, inputNormalize, ...otherProps } = props;\n const { minDate, maxDate, disabledHourList, disabledMinuteList, disabledSecondList } =\n props.disabledDateConfig || {};\n const minDateTimeDayInst = minDate ? dayjs(minDate) : undefined;\n const maxDateTimeDayInst = maxDate ? dayjs(maxDate) : undefined;\n const customFormat = useMemo(() => {\n if (format) return format as string;\n if (props.showTime) return DayjsDateTypeEnum.YMDHms;\n return DayjsDateTypeEnum.YMD;\n }, [props.showTime, format]);\n\n const onChangeDate = hooks.useCallbackRef((date, dateString: string) => {\n if (date) {\n if (outputNormalize) {\n onChange?.(outputNormalize(dateString));\n } else {\n onChange?.(dateString);\n }\n } else {\n onChange?.(undefined);\n }\n });\n\n const getDisabledDate = hooks.useCallbackRef((current) => {\n const currentDate = current.format(DayjsDateTypeEnum.YMD);\n if (!props.disabledDateConfig) {\n return false;\n }\n if (minDateTimeDayInst && maxDateTimeDayInst) {\n if (\n !flatbizDate.in(\n currentDate,\n minDateTimeDayInst.format(DayjsDateTypeEnum.YMD),\n maxDateTimeDayInst.format(DayjsDateTypeEnum.YMD),\n )\n ) {\n return true;\n }\n } else if (minDateTimeDayInst) {\n if (!flatbizDate.gte(currentDate, minDateTimeDayInst.format(DayjsDateTypeEnum.YMD))) {\n return true;\n }\n } else if (maxDateTimeDayInst) {\n if (!flatbizDate.gte(maxDateTimeDayInst.format(DayjsDateTypeEnum.YMD), currentDate)) {\n return true;\n }\n }\n return false;\n });\n\n const datePickerValue = useMemo(() => {\n if (value) {\n const valueFt = inputNormalize ? inputNormalize(value) : value;\n if (valueFt) {\n return dayjs(flatbizDate.dateNormalize(valueFt));\n }\n }\n return undefined;\n }, [value]);\n\n const getDisabledTime = hooks.useCallbackRef((current) => {\n const options = {\n minDateTime: minDateTimeDayInst,\n maxDateTime: maxDateTimeDayInst,\n disabledHourList,\n disabledMinuteList,\n disabledSecondList,\n };\n current = current || datePickerValue || dayjs(new Date());\n return {\n disabledHours: () => {\n return getDisabledHour(current, options);\n },\n disabledMinutes: () => {\n return getDisabledMinute(current, options);\n },\n disabledSeconds: () => {\n return getDisabledSecond(current, options);\n },\n };\n });\n\n const showTime = useMemo(() => {\n if (props.showTime) return props.showTime;\n if (customFormat && customFormat.includes('HH')) {\n return true;\n }\n return false;\n }, [props.showTime, customFormat]);\n\n return (\n <DatePicker\n disabledDate={getDisabledDate}\n disabledTime={getDisabledTime}\n {...otherProps}\n showTime={showTime}\n format={customFormat}\n style={{ width: '100%', ...style }}\n value={datePickerValue}\n onChange={onChangeDate}\n />\n );\n};\n"],"names":["DatePickerWrapper","props","value","onChange","style","format","outputNormalize","inputNormalize","otherProps","_objectWithoutPropertiesLoose","_excluded","_ref","disabledDateConfig","minDate","maxDate","disabledHourList","disabledMinuteList","disabledSecondList","minDateTimeDayInst","dayjs","undefined","maxDateTimeDayInst","customFormat","useMemo","showTime","DayjsDateTypeEnum","YMDHms","YMD","onChangeDate","_hooks","useCallbackRef","date","dateString","getDisabledDate","current","currentDate","flatbizDate","in","gte","datePickerValue","valueFt","dateNormalize","getDisabledTime","options","minDateTime","maxDateTime","Date","disabledHours","getDisabledHour","disabledMinutes","getDisabledMinute","disabledSeconds","getDisabledSecond","includes","_jsx","DatePicker","_extends","disabledDate","disabledTime","width"],"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{a as e,_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as n}from"@wove/react/cjs/hooks";import{flatbizDate as a}from"@flatbiz/utils";import{DatePicker as i}from"antd";import t from"dayjs";import{useState as l,useMemo as u}from"react";import{D as o,g as f,a as s,b as d}from"../time-53b3f55f.js";import{jsx as m}from"react/jsx-runtime";var v=["value","onChange","style","format","onOpenChange","outputNormalize","inputNormalize"];var c=function c(b){var p=b.value,D=b.onChange,g=b.style,C=b.format,h=b.onOpenChange,M=b.outputNormalize,y=b.inputNormalize,z=e(b,v);var Y=b.disabledDateConfig||{},L=Y.maxDays,N=Y.minDate,j=Y.maxDate,k=Y.disabledHourList,w=Y.disabledMinuteList,x=Y.disabledSecondList;var H=N?t(N):undefined;var T=j?t(j):undefined;var R=l(null),O=R[0],S=R[1];var P=l(null),_=P[0],B=P[1];var q=u((function(){if(y){return y(p)||[]}return p||[]}),[p]),A=q[0],E=q[1];var F=u((function(){if(A&&E){var e=a.dateNormalize(A);var r=a.dateNormalize(E);return[t(e),t(r)]}return undefined}),[A,E]);var G=u((function(){if(C)return C;if(b.showTime===true)return o.YMDHms;return o.YMD}),[b.showTime,C]);var I=n.useCallbackRef((function(e,r){if(e&&e[0]&&e[1]){if(M){D==null?void 0:D(M(r))}else{D==null?void 0:D(r)}}else{D==null?void 0:D(undefined)}}));var J=n.useCallbackRef((function(e){var r=e.format(o.YMD);if(!b.disabledDateConfig){return false}if(H&&T){if(!a.in(r,H.format(o.YMD),T.format(o.YMD))){return true}}else if(H){if(!a.gte(r,H.format(o.YMD))){return true}}else if(T){if(!a.gte(T.format(o.YMD),r)){return true}}if(!L||!(O!=null&&O[0])&&!(O!=null&&O[1])){return false}var n=(O==null?void 0:O[0])&&e.diff(O[0],"days")>L-1;var i=(O==null?void 0:O[1])&&O[1].diff(e,"days")>L-1;return!!i||!!n}));var K=function e(r){if(L&&L>0){if(r){B([null,null]);S([null,null])}else{B(null)}}h==null?void 0:h(r)};var Q=n.useCallbackRef((function(e){var r={minDateTime:H,maxDateTime:T,disabledHourList:k,disabledMinuteList:w,disabledSecondList:x};e=e||t(A||new Date);return{disabledHours:function n(){return f(e,r)},disabledMinutes:function n(){return s(e,r)},disabledSeconds:function n(){return d(e,r)}}}));return m(i.RangePicker,r({disabledDate:J,disabledTime:Q},z,{format:G,style:r({width:"100%"},g),value:_||F,onChange:I,onOpenChange:K,onCalendarChange:function e(r){return S(r)}}))};export{c as DateRangePickerWrapper};
4
+ import{a as e,_ as r}from"../_rollupPluginBabelHelpers-a0769acd.js";import{hooks as n}from"@wove/react/cjs/hooks";import{flatbizDate as i}from"@flatbiz/utils";import{DatePicker as a}from"antd";import t from"dayjs";import{useState as u,useMemo as l}from"react";import{D as o,g as f,a as s,b as d}from"../time-53b3f55f.js";import{jsx as m}from"react/jsx-runtime";var v=["value","onChange","style","format","onOpenChange","outputNormalize","inputNormalize"];var c=function c(b){var p=b.value,D=b.onChange,h=b.style,g=b.format,C=b.onOpenChange,M=b.outputNormalize,w=b.inputNormalize,T=e(b,v);var y=b.disabledDateConfig||{},z=y.maxDays,H=y.minDate,Y=y.maxDate,L=y.disabledHourList,N=y.disabledMinuteList,j=y.disabledSecondList;var k=H?t(H):undefined;var x=Y?t(Y):undefined;var R=u(null),O=R[0],S=R[1];var P=u(null),_=P[0],B=P[1];var q=l((function(){if(w){return w(p)||[]}return p||[]}),[p]),A=q[0],E=q[1];var F=l((function(){if(A&&E){var e=i.dateNormalize(A);var r=i.dateNormalize(E);return[t(e),t(r)]}return undefined}),[A,E]);var G=l((function(){if(g)return g;if(b.showTime===true)return o.YMDHms;return o.YMD}),[b.showTime,g]);var I=l((function(){if(b.showTime)return b.showTime;if(G&&G.includes("HH")){return true}return false}),[b.showTime,G]);var J=n.useCallbackRef((function(e,r){if(e&&e[0]&&e[1]){if(M){D==null?void 0:D(M(r))}else{D==null?void 0:D(r)}}else{D==null?void 0:D(undefined)}}));var K=n.useCallbackRef((function(e){var r=e.format(o.YMD);if(!b.disabledDateConfig){return false}if(k&&x){if(!i.in(r,k.format(o.YMD),x.format(o.YMD))){return true}}else if(k){if(!i.gte(r,k.format(o.YMD))){return true}}else if(x){if(!i.gte(x.format(o.YMD),r)){return true}}if(!z||!(O!=null&&O[0])&&!(O!=null&&O[1])){return false}var n=(O==null?void 0:O[0])&&e.diff(O[0],"days")>z-1;var a=(O==null?void 0:O[1])&&O[1].diff(e,"days")>z-1;return!!a||!!n}));var Q=function e(r){if(z&&z>0){if(r){B([null,null]);S([null,null])}else{B(null)}}C==null?void 0:C(r)};var U=n.useCallbackRef((function(e){var r={minDateTime:k,maxDateTime:x,disabledHourList:L,disabledMinuteList:N,disabledSecondList:j};e=e||t(A||new Date);return{disabledHours:function n(){return f(e,r)},disabledMinutes:function n(){return s(e,r)},disabledSeconds:function n(){return d(e,r)}}}));return m(a.RangePicker,r({disabledDate:K,disabledTime:U},T,{showTime:I,format:G,style:r({width:"100%"},h),value:_||F,onChange:J,onOpenChange:Q,onCalendarChange:function e(r){return S(r)}}))};export{c as DateRangePickerWrapper};
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/date-range-picker-wrapper/date-range-picker-wrapper.tsx"],"sourcesContent":["import { flatbizDate, TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { DatePicker } from 'antd';\nimport { RangePickerDateProps } from 'antd/es/date-picker/generatePicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { useMemo, useState } from 'react';\nimport { DayjsDateTypeEnum, TDayjsDateType } from '../_utils/constants';\nimport { getDisabledHour, getDisabledMinute, getDisabledSecond } from '../_utils/time';\n\nexport type DateRangePickerWrapperProps = Omit<\n RangePickerDateProps<TAny>,\n 'value' | 'onChange' | 'onCalendarChange' | 'format'\n> & {\n value?: [string, string];\n onChange?: (value?: [string, string]) => void;\n /**\n * 1. minDate、maxDate 与 format格式相同;默认:YYYY-MM-DD\n * 2. maxDays 最大可选的天数\n */\n disabledDateConfig?: {\n minDate?: TDayjsDateType;\n maxDate?: TDayjsDateType;\n maxDays?: number;\n /** 禁用 小时 刻度列表,与日期无关 */\n disabledHourList?: number[];\n /** 禁用 分钟 刻度列表,与日期无关 */\n disabledMinuteList?: number[];\n /** 禁用 秒钟 刻度列表,与日期无关 */\n disabledSecondList?: number[];\n };\n format?: TDayjsDateType;\n /** value 输出适配 */\n outputNormalize?: (value: [string, string]) => TAny;\n /** value 输入适配 */\n inputNormalize?: (value?: TAny) => [string, string] | undefined;\n};\n\ntype RangeValue = [Dayjs | null, Dayjs | null] | null;\n\n/**\n * DatePicker.RangePicker包装组件\n * ```\n * 1. value类型为 [string, string],可以通过 inputNormalize来进行自定义转换\n * 2. onChange返回类型 [string, string],可以通过 outputNormalize来进行自定义转换\n * 3. 默认格式化类型 YYYY-MM-DD; 当showTime===true时,默认格式化类型YYYY-MM-DD HH:mm:ss;其他格式化类型自定义format\n * 4. 可设置disabledDateConfig,来控制日期项的disbaled状态\n * 5. 设置 disabledDate 后,disabledDateConfig配置将失效\n * 6. 设置 disabledTime 后,内置的disabledTime逻辑将失效\n *\n * TODO: 引用DatePicker.RangePicker TS有问题,待解决\n * TODO: 存在场景缺陷,当设置maxDays、showTime后,在选择单个日期不通过确认按钮直接切换输入框,无法获取回调,无法约束disabledDate\n * ```\n */\nexport const DateRangePickerWrapper = (props: DateRangePickerWrapperProps) => {\n const {\n value,\n onChange,\n style,\n format,\n onOpenChange: onAntdOpenChange,\n outputNormalize,\n inputNormalize,\n ...otherProps\n } = props;\n const { maxDays, minDate, maxDate, disabledHourList, disabledMinuteList, disabledSecondList } =\n props.disabledDateConfig || {};\n const minDateTimeDayInst = minDate ? dayjs(minDate) : undefined;\n const maxDateTimeDayInst = maxDate ? dayjs(maxDate) : undefined;\n\n const [dates, setDates] = useState<RangeValue>(null);\n const [hackValue, setHackValue] = useState<RangeValue>(null);\n\n const [date1, date2] = useMemo(() => {\n if (inputNormalize) {\n return inputNormalize(value) || [];\n }\n return value || [];\n }, [value]);\n const rangePickerValue = useMemo(() => {\n if (date1 && date2) {\n const newDate1 = flatbizDate.dateNormalize(date1);\n const newDate2 = flatbizDate.dateNormalize(date2);\n return [dayjs(newDate1), dayjs(newDate2)];\n }\n return undefined;\n }, [date1, date2]) as [Dayjs, Dayjs];\n\n const customFormat = useMemo(() => {\n if (format) return format as string;\n if (props.showTime === true) return DayjsDateTypeEnum.YMDHms;\n return DayjsDateTypeEnum.YMD;\n }, [props.showTime, format]);\n\n const onChangeDate = hooks.useCallbackRef((dates, dateStrings) => {\n if (dates && dates[0] && dates[1]) {\n if (outputNormalize) {\n onChange?.(outputNormalize(dateStrings) as [string, string]);\n } else {\n onChange?.(dateStrings);\n }\n } else {\n onChange?.(undefined);\n }\n });\n\n const getDisabledDate = hooks.useCallbackRef((current) => {\n const currentDate = current.format(DayjsDateTypeEnum.YMD);\n if (!props.disabledDateConfig) {\n return false;\n }\n if (minDateTimeDayInst && maxDateTimeDayInst) {\n if (\n !flatbizDate.in(\n currentDate,\n minDateTimeDayInst.format(DayjsDateTypeEnum.YMD),\n maxDateTimeDayInst.format(DayjsDateTypeEnum.YMD),\n )\n ) {\n return true;\n }\n } else if (minDateTimeDayInst) {\n if (!flatbizDate.gte(currentDate, minDateTimeDayInst.format(DayjsDateTypeEnum.YMD))) {\n return true;\n }\n } else if (maxDateTimeDayInst) {\n if (!flatbizDate.gte(maxDateTimeDayInst.format(DayjsDateTypeEnum.YMD), currentDate)) {\n return true;\n }\n }\n\n if (!maxDays || (!dates?.[0] && !dates?.[1])) {\n return false;\n }\n\n const tooLate = dates?.[0] && current.diff(dates[0], 'days') > maxDays - 1;\n const tooEarly = dates?.[1] && dates[1].diff(current, 'days') > maxDays - 1;\n return !!tooEarly || !!tooLate;\n });\n\n const onOpenChange = (open: boolean) => {\n if (maxDays && maxDays > 0) {\n if (open) {\n setHackValue([null, null]);\n setDates([null, null]);\n } else {\n setHackValue(null);\n }\n }\n onAntdOpenChange?.(open);\n };\n\n const getDisabledTime = hooks.useCallbackRef((current) => {\n const options = {\n minDateTime: minDateTimeDayInst,\n maxDateTime: maxDateTimeDayInst,\n disabledHourList,\n disabledMinuteList,\n disabledSecondList,\n };\n current = current || dayjs(date1 || new Date());\n return {\n disabledHours: () => {\n return getDisabledHour(current, options);\n },\n disabledMinutes: () => {\n return getDisabledMinute(current, options);\n },\n disabledSeconds: () => {\n return getDisabledSecond(current, options);\n },\n };\n });\n\n return (\n <DatePicker.RangePicker\n disabledDate={getDisabledDate}\n disabledTime={getDisabledTime}\n {...otherProps}\n format={customFormat}\n style={{ width: '100%', ...style }}\n value={hackValue || rangePickerValue}\n onChange={onChangeDate}\n onOpenChange={onOpenChange}\n onCalendarChange={(val) => setDates(val as RangeValue)}\n />\n );\n};\n"],"names":["DateRangePickerWrapper","props","value","onChange","style","format","onAntdOpenChange","onOpenChange","outputNormalize","inputNormalize","otherProps","_objectWithoutPropertiesLoose","_excluded","_ref","disabledDateConfig","maxDays","minDate","maxDate","disabledHourList","disabledMinuteList","disabledSecondList","minDateTimeDayInst","dayjs","undefined","maxDateTimeDayInst","_useState","useState","dates","setDates","_useState2","hackValue","setHackValue","_useMemo","useMemo","date1","date2","rangePickerValue","newDate1","flatbizDate","dateNormalize","newDate2","customFormat","showTime","DayjsDateTypeEnum","YMDHms","YMD","onChangeDate","_hooks","useCallbackRef","dateStrings","getDisabledDate","current","currentDate","in","gte","tooLate","diff","tooEarly","open","getDisabledTime","options","minDateTime","maxDateTime","Date","disabledHours","getDisabledHour","disabledMinutes","getDisabledMinute","disabledSeconds","getDisabledSecond","_jsx","DatePicker","RangePicker","_extends","disabledDate","disabledTime","width","onCalendarChange","val"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/date-range-picker-wrapper/date-range-picker-wrapper.tsx"],"sourcesContent":["import { flatbizDate, TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { DatePicker } from 'antd';\nimport { RangePickerDateProps } from 'antd/es/date-picker/generatePicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { useMemo, useState } from 'react';\nimport { DayjsDateTypeEnum, TDayjsDateType } from '../_utils/constants';\nimport { getDisabledHour, getDisabledMinute, getDisabledSecond } from '../_utils/time';\n\nexport type DateRangePickerWrapperProps = Omit<\n RangePickerDateProps<TAny>,\n 'value' | 'onChange' | 'onCalendarChange' | 'format'\n> & {\n value?: [string, string];\n onChange?: (value?: [string, string]) => void;\n /**\n * 1. minDate、maxDate 与 format格式相同;默认:YYYY-MM-DD\n * 2. maxDays 最大可选的天数\n */\n disabledDateConfig?: {\n minDate?: TDayjsDateType;\n maxDate?: TDayjsDateType;\n maxDays?: number;\n /** 禁用 小时 刻度列表,与日期无关 */\n disabledHourList?: number[];\n /** 禁用 分钟 刻度列表,与日期无关 */\n disabledMinuteList?: number[];\n /** 禁用 秒钟 刻度列表,与日期无关 */\n disabledSecondList?: number[];\n };\n format?: TDayjsDateType;\n /** value 输出适配 */\n outputNormalize?: (value: [string, string]) => TAny;\n /** value 输入适配 */\n inputNormalize?: (value?: TAny) => [string, string] | undefined;\n};\n\ntype RangeValue = [Dayjs | null, Dayjs | null] | null;\n\n/**\n * DatePicker.RangePicker包装组件\n * ```\n * 1. value类型为 [string, string],可以通过 inputNormalize来进行自定义转换\n * 2. onChange返回类型 [string, string],可以通过 outputNormalize来进行自定义转换\n * 3. 默认格式化类型 YYYY-MM-DD; 当showTime===true时,默认格式化类型YYYY-MM-DD HH:mm:ss;其他格式化类型自定义format\n * 4. 可设置disabledDateConfig,来控制日期项的disbaled状态\n * 5. 设置 disabledDate 后,disabledDateConfig配置将失效\n * 6. 设置 disabledTime 后,内置的disabledTime逻辑将失效\n *\n * TODO: 引用DatePicker.RangePicker TS有问题,待解决\n * TODO: 存在场景缺陷,当设置maxDays、showTime后,在选择单个日期不通过确认按钮直接切换输入框,无法获取回调,无法约束disabledDate\n * ```\n */\nexport const DateRangePickerWrapper = (props: DateRangePickerWrapperProps) => {\n const {\n value,\n onChange,\n style,\n format,\n onOpenChange: onAntdOpenChange,\n outputNormalize,\n inputNormalize,\n ...otherProps\n } = props;\n const { maxDays, minDate, maxDate, disabledHourList, disabledMinuteList, disabledSecondList } =\n props.disabledDateConfig || {};\n const minDateTimeDayInst = minDate ? dayjs(minDate) : undefined;\n const maxDateTimeDayInst = maxDate ? dayjs(maxDate) : undefined;\n\n const [dates, setDates] = useState<RangeValue>(null);\n const [hackValue, setHackValue] = useState<RangeValue>(null);\n\n const [date1, date2] = useMemo(() => {\n if (inputNormalize) {\n return inputNormalize(value) || [];\n }\n return value || [];\n }, [value]);\n const rangePickerValue = useMemo(() => {\n if (date1 && date2) {\n const newDate1 = flatbizDate.dateNormalize(date1);\n const newDate2 = flatbizDate.dateNormalize(date2);\n return [dayjs(newDate1), dayjs(newDate2)];\n }\n return undefined;\n }, [date1, date2]) as [Dayjs, Dayjs];\n\n const customFormat = useMemo(() => {\n if (format) return format as string;\n if (props.showTime === true) return DayjsDateTypeEnum.YMDHms;\n return DayjsDateTypeEnum.YMD;\n }, [props.showTime, format]);\n\n const showTime = useMemo(() => {\n if (props.showTime) return props.showTime;\n if (customFormat && customFormat.includes('HH')) {\n return true;\n }\n return false;\n }, [props.showTime, customFormat]);\n\n const onChangeDate = hooks.useCallbackRef((dates, dateStrings) => {\n if (dates && dates[0] && dates[1]) {\n if (outputNormalize) {\n onChange?.(outputNormalize(dateStrings) as [string, string]);\n } else {\n onChange?.(dateStrings);\n }\n } else {\n onChange?.(undefined);\n }\n });\n\n const getDisabledDate = hooks.useCallbackRef((current) => {\n const currentDate = current.format(DayjsDateTypeEnum.YMD);\n if (!props.disabledDateConfig) {\n return false;\n }\n if (minDateTimeDayInst && maxDateTimeDayInst) {\n if (\n !flatbizDate.in(\n currentDate,\n minDateTimeDayInst.format(DayjsDateTypeEnum.YMD),\n maxDateTimeDayInst.format(DayjsDateTypeEnum.YMD),\n )\n ) {\n return true;\n }\n } else if (minDateTimeDayInst) {\n if (!flatbizDate.gte(currentDate, minDateTimeDayInst.format(DayjsDateTypeEnum.YMD))) {\n return true;\n }\n } else if (maxDateTimeDayInst) {\n if (!flatbizDate.gte(maxDateTimeDayInst.format(DayjsDateTypeEnum.YMD), currentDate)) {\n return true;\n }\n }\n\n if (!maxDays || (!dates?.[0] && !dates?.[1])) {\n return false;\n }\n\n const tooLate = dates?.[0] && current.diff(dates[0], 'days') > maxDays - 1;\n const tooEarly = dates?.[1] && dates[1].diff(current, 'days') > maxDays - 1;\n return !!tooEarly || !!tooLate;\n });\n\n const onOpenChange = (open: boolean) => {\n if (maxDays && maxDays > 0) {\n if (open) {\n setHackValue([null, null]);\n setDates([null, null]);\n } else {\n setHackValue(null);\n }\n }\n onAntdOpenChange?.(open);\n };\n\n const getDisabledTime = hooks.useCallbackRef((current) => {\n const options = {\n minDateTime: minDateTimeDayInst,\n maxDateTime: maxDateTimeDayInst,\n disabledHourList,\n disabledMinuteList,\n disabledSecondList,\n };\n current = current || dayjs(date1 || new Date());\n return {\n disabledHours: () => {\n return getDisabledHour(current, options);\n },\n disabledMinutes: () => {\n return getDisabledMinute(current, options);\n },\n disabledSeconds: () => {\n return getDisabledSecond(current, options);\n },\n };\n });\n\n return (\n <DatePicker.RangePicker\n disabledDate={getDisabledDate}\n disabledTime={getDisabledTime}\n {...otherProps}\n showTime={showTime}\n format={customFormat}\n style={{ width: '100%', ...style }}\n value={hackValue || rangePickerValue}\n onChange={onChangeDate}\n onOpenChange={onOpenChange}\n onCalendarChange={(val) => setDates(val as RangeValue)}\n />\n );\n};\n"],"names":["DateRangePickerWrapper","props","value","onChange","style","format","onAntdOpenChange","onOpenChange","outputNormalize","inputNormalize","otherProps","_objectWithoutPropertiesLoose","_excluded","_ref","disabledDateConfig","maxDays","minDate","maxDate","disabledHourList","disabledMinuteList","disabledSecondList","minDateTimeDayInst","dayjs","undefined","maxDateTimeDayInst","_useState","useState","dates","setDates","_useState2","hackValue","setHackValue","_useMemo","useMemo","date1","date2","rangePickerValue","newDate1","flatbizDate","dateNormalize","newDate2","customFormat","showTime","DayjsDateTypeEnum","YMDHms","YMD","includes","onChangeDate","_hooks","useCallbackRef","dateStrings","getDisabledDate","current","currentDate","in","gte","tooLate","diff","tooEarly","open","getDisabledTime","options","minDateTime","maxDateTime","Date","disabledHours","getDisabledHour","disabledMinutes","getDisabledMinute","disabledSeconds","getDisabledSecond","_jsx","DatePicker","RangePicker","_extends","disabledDate","disabledTime","width","onCalendarChange","val"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { dom, isUndefinedOrNull } from '@flatbiz/utils';\nimport { Children, Fragment, ReactNode, useMemo, useRef } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { GutterParams } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\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 * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局,可通过设置 isPure = true设置纯净模式(对EasyForm的子节点不做任何包装处理)\n * 3. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 4. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 5. EasyForm 子节点包含 hidden = true 会被忽略\n * 6. 通过 column 可定义一行显示几列FormItem\n * 7. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 8. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 9. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 10. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 11. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n ...otherProps\n } = props;\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 if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\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 };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getHiddenRowChildren = () => {\n return Children.toArray(children).filter((item: any) => {\n return item.props['hidden'] || item.type['domTypeName'] == 'FormItemHidden';\n });\n };\n\n const getFormRowChildren = () => {\n return Children.toArray(children)\n .filter((item: any) => {\n return !item.props['hidden'] && item.type['domTypeName'] != 'FormItemHidden';\n })\n .map((item: any, index) => {\n if (item.type['domTypeName'] === 'BoxGridCol') return <Fragment key={index}>{item}</Fragment>;\n let span: number | undefined = undefined;\n if (item.type['domTypeName'] === 'FormItemWrapper' || item.type['domTypeName'] === 'FormItemText') {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\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 gutter = isUndefinedOrNull(gridGutter) ? ([15, 0] as GutterParams) : gridGutter;\n const anchorRef = useRef<HTMLDivElement>(null);\n\n // 是否嵌套内部EasyForm节点\n const getIsNestedEasyForm = () => {\n try {\n if (anchorRef.current) {\n const target = dom.findParentsElement(anchorRef.current, (node) => {\n return node.classList?.contains?.('easy-form');\n });\n return target ? true : false;\n }\n return undefined;\n } catch (error) {\n console.log('error', error);\n return false;\n }\n };\n\n const isNestedEasyForm = getIsNestedEasyForm();\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlign, formItemGap, otherProps.className]);\n return (\n <Fragment>\n <div className=\"easy-form-anchor\" ref={anchorRef}></div>\n {isNestedEasyForm === true ? (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {getHiddenRowChildren()}\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </div>\n ) : undefined}\n {isNestedEasyForm === false ? (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlign}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {getHiddenRowChildren()}\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </FormWrapper>\n ) : undefined}\n </Fragment>\n );\n};\n"],"names":["EasyForm","props","screenType","fbaHooks","useResponsivePoint","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getHiddenRowChildren","Children","toArray","filter","item","type","getFormRowChildren","map","index","_jsx","Fragment","span","undefined","BoxGrid","Col","_extends","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","anchorRef","useRef","getIsNestedEasyForm","current","target","dom","findParentsElement","node","_node$classList","classList","contains","error","console","log","isNestedEasyForm","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_jsxs","ref","style","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-form/form.tsx"],"sourcesContent":["import { classNames } from '@dimjs/utils';\nimport { dom, isUndefinedOrNull, TAny } from '@flatbiz/utils';\nimport { Children, Fragment, ReactNode, useMemo, useRef } from 'react';\nimport { BoxGrid } from '../box-grid';\nimport { BoxRowProps } from '../box-grid/row';\nimport { GutterParams } from '../box-grid/type';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormWrapper, FormWrapperProps } from '../form-wrapper';\nimport { preDefinedClassName } from '../pre-defined-class-name';\nimport './style.less';\n\nexport type EasyFormProps = Omit<FormWrapperProps, 'children'> & {\n /**\n * 定义一行显示几列(当外层宽度尺寸大于 992px(lg) 时,一行显示几列), 默认值:3\n * ```\n * 1. 当外层宽度尺寸小于992px(lg),为xs、sm、md情况下不受column值影响(column=1除外)\n * 2. 宽度尺寸定义\n * xs: 宽度 < 576px\n * sm: 宽度 ≥ 576px\n * md: 宽度 ≥ 768px\n * lg: 宽度 ≥ 992px\n * xl: 宽度 ≥ 1200px\n * xxl: 宽度 ≥ 1600px\n * 3. 列数尺寸定义\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 * };\n * ```\n */\n column?: 1 | 2 | 3 | 4;\n /**\n * 强制定义一行显示几列,不考虑响应式\n * ```\n * 1. 优先级大于column\n * 2. 建议优先使用column配置\n * ```\n */\n forceColumn?: 1 | 2 | 3 | 4;\n /**\n * Form显示宽度,可数值、可百分比;在小屏幕尺寸(xs、sm)上无效\n */\n width?: number | string;\n /** 网格间距 */\n gridGutter?: BoxRowProps['gutter'];\n children: ReactNode;\n /**\n * 是否为纯净模式,对EasyForm的子节点不做任何包装处理\n */\n isPure?: boolean;\n};\n\n/**\n * 简单Form布局,可自定义网格布局\n * ```\n * 1. demo:https://fex.qa.tcshuke.com/docs/admin/main/form/grid\n * 2. EasyForm的children列表会进行网格化布局,可通过设置 isPure = true设置纯净模式(对EasyForm的子节点不做任何包装处理)\n * 3. EasyForm可嵌套使用,嵌套内部的<EasyForm />节点Form相关属性失效,例如属性form、initialValues等都失效\n * <EasyForm form={form}>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * <EasyForm>...</EasyForm>\n * ....\n * </EasyForm>\n * 4. 布局网格以当前组件的宽度来计算的,不是屏幕宽度\n * 5. EasyForm 子节点包含 hidden = true 会被忽略\n * 6. 通过 column 可定义一行显示几列FormItem\n * 7. 通过 labelItemVertical 可定义 formitem 竖直布局\n * 8. 通过 formItemGap 可定义 formItem竖直方向间隙\n * 9. 通过 forceColumn 可强制定义一行显示几列,不考虑响应式\n * 10. 通过 labelWidth 可控制Form内部所有label的宽度(可实现整齐效果)\n * 11. 自定义栅格占位格数,见下方`例如`\n\n * 例如\n * <EasyForm column={3}>\n *\t <FormItemWrapper name=\"field1\" label=\"条件1\">\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <!-- !!自定义栅格占位格数第一种方式:可通过使用 BoxGrid.Col 包裹元素来自定义网格占比 -->\n *\t <BoxGrid.Col span={24}>\n *\t <FormItemWrapper name=\"field5\" label=\"条件5\">\n *\t \t<Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t </BoxGrid.Col>\n *\t <!-- !!自定义栅格占位格数第二种方式:如果为FormItemWrapper组件,可设置span属性 -->\n *\t <FormItemWrapper name=\"field6\" label=\"条件6\" span={24}>\n *\t <Input placeholder=\"请输入\" allowClear={true} />\n *\t </FormItemWrapper>\n *\t <FormItemWrapper noStyle span={24}>\n *\t <Button>按钮</Buttone>\n *\t </FormItemWrapper>\n * </EasyForm>\n * ```\n */\nexport const EasyForm = (props: EasyFormProps) => {\n const screenType = fbaHooks.useResponsivePoint() || '';\n\n const {\n column,\n forceColumn,\n children,\n width,\n gridGutter,\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap = '15',\n isPure,\n ...otherProps\n } = props;\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 if (!column) {\n return { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\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 };\n return columnMap[column];\n }, [column, forceColumn]);\n\n const getHiddenRowChildren = () => {\n return Children.toArray(children).filter((item: TAny) => {\n return item.props['hidden'] || item.type['domTypeName'] == 'FormItemHidden';\n });\n };\n\n const getFormRowChildren = () => {\n return Children.toArray(children)\n .filter((item: TAny) => {\n return !item.props['hidden'] && item.type['domTypeName'] != 'FormItemHidden';\n })\n .map((item: TAny, index) => {\n if (item.type['domTypeName'] === 'BoxGridCol') return <Fragment key={index}>{item}</Fragment>;\n let span: number | undefined = undefined;\n if (item.type['domTypeName'] === 'FormItemWrapper' || item.type['domTypeName'] === 'FormItemText') {\n span = item.props['span'] as number;\n if (span) {\n if (screenType === 'xs') {\n span = 24;\n } else if (screenType === 'sm') {\n span = span > 12 ? span : 12;\n }\n }\n }\n return (\n <BoxGrid.Col key={index} {...gridSize} span={span}>\n {item}\n </BoxGrid.Col>\n );\n })\n .filter(Boolean);\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 gutter = isUndefinedOrNull(gridGutter) ? ([15, 0] as GutterParams) : gridGutter;\n const anchorRef = useRef<HTMLDivElement>(null);\n\n // 是否嵌套内部EasyForm节点\n const getIsNestedEasyForm = () => {\n try {\n if (anchorRef.current) {\n const target = dom.findParentsElement(anchorRef.current, (node) => {\n return node.classList?.contains?.('easy-form');\n });\n return target ? true : false;\n }\n return undefined;\n } catch (error) {\n console.log('error', error);\n return false;\n }\n };\n\n const isNestedEasyForm = getIsNestedEasyForm();\n\n const fromLayoutClassName = useMemo(() => {\n return preDefinedClassName.getFormLayoutClassName({\n labelWidth,\n labelItemVertical,\n labelAlign,\n formItemGap,\n className: otherProps.className,\n });\n }, [labelWidth, labelItemVertical, labelAlign, formItemGap, otherProps.className]);\n return (\n <Fragment>\n <div className=\"easy-form-anchor\" ref={anchorRef}></div>\n {isNestedEasyForm === true ? (\n <div\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames(\n 'easy-form',\n { 'easy-form-pure': isPure },\n 'easy-form-nested',\n fromLayoutClassName,\n )}\n >\n {getHiddenRowChildren()}\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </div>\n ) : undefined}\n {isNestedEasyForm === false ? (\n <FormWrapper\n {...otherProps}\n labelWidth={labelWidth}\n labelAlign={labelAlign}\n labelItemVertical={labelItemVertical}\n formItemGap={formItemGap}\n style={{ ...innerStyle, ...otherProps.style }}\n className={classNames('easy-form', { 'easy-form-pure': isPure }, fromLayoutClassName)}\n autoComplete=\"off\"\n >\n {getHiddenRowChildren()}\n {isPure ? children : <BoxGrid.Row gutter={gutter}>{getFormRowChildren()}</BoxGrid.Row>}\n </FormWrapper>\n ) : undefined}\n </Fragment>\n );\n};\n"],"names":["EasyForm","props","screenType","fbaHooks","useResponsivePoint","column","forceColumn","children","width","gridGutter","labelWidth","labelItemVertical","labelAlign","_props$formItemGap","formItemGap","isPure","otherProps","_objectWithoutPropertiesLoose","_excluded","gridSize","useMemo","num","xs","sm","md","lg","xl","xxl","columnMap","getHiddenRowChildren","Children","toArray","filter","item","type","getFormRowChildren","map","index","_jsx","Fragment","span","undefined","BoxGrid","Col","_extends","Boolean","innerStyle","includes","gutter","isUndefinedOrNull","anchorRef","useRef","getIsNestedEasyForm","current","target","dom","findParentsElement","node","_node$classList","classList","contains","error","console","log","isNestedEasyForm","fromLayoutClassName","preDefinedClassName","getFormLayoutClassName","className","_jsxs","ref","style","_classNames","Row","FormWrapper","autoComplete"],"mappings":"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"}
@@ -19,5 +19,5 @@ import './../form-grid/index.css';
19
19
  import './../table-scrollbar/index.css';
20
20
  import './index.css';
21
21
  /*! @flatjs/forge MIT @flatbiz/antd */
22
- import{fbaUtils as e}from"../fba-utils/index.js";import{_ as n,a as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{isUndefined as r}from"@dimjs/lang/cjs/is-undefined";import{get as a}from"@dimjs/utils/cjs/get";import{isString as o}from"@dimjs/lang/cjs/is-string";import{isArray as l}from"@dimjs/lang/cjs/is-array";import{hooks as u}from"@wove/react/cjs/hooks";import{cloneState as s}from"@dimjs/model";import{noop as d,localStorageCache as c,isUndefinedOrNull as f,getUuid as p,isMacEnv as m}from"@flatbiz/utils";import{Drawer as v,Table as g,Checkbox as h,Popover as y,Form as C,message as S}from"antd";import{createContext as x,useState as b,Fragment as F,forwardRef as j,useRef as z,useMemo as R,useEffect as w,useImperativeHandle as q,cloneElement as P,useContext as N,Children as K}from"react";import{ButtonWrapper as k}from"../button-wrapper/index.js";import{fbaHooks as T}from"../fba-hooks/index.js";import{FlexLayout as I}from"../flex-layout/index.js";import{IconWrapper as _}from"../icon-wrapper/index.js";import{P as D,S as L}from"../index-6677fbfc.js";import{SvgHttpView as V}from"../svg-http-view/index.js";import{TableTitleTooltip as E}from"../table-title-tooltip/index.js";import{TipsWrapper as A}from"../tips-wrapper/index.js";import{jsx as B,jsxs as O}from"react/jsx-runtime";import{Model as W}from"@dimjs/model-react";import U from"@ant-design/icons/es/icons/DownOutlined";import G from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as H}from"react-is";import{BlockLayout as Q}from"../block-layout/index.js";import{EasyForm as Y}from"../easy-form/index.js";import{FormGrid as $}from"../form-grid/index.js";import{TableScrollbar as J}from"../table-scrollbar/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";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"@dimjs/utils/cjs/extend";import"../use-responsive-point-21b8c601.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"../box-grid/index.js";import"@dimjs/lang/cjs/is-number";import"ahooks";import"../form-wrapper/index.js";import"../pre-defined-class-name/index.js";var M=x({onRequest:d,tableList:[],getEasyTableRef:function e(){}});var X=function e(n){var t=b(n.initSelectedRowKeys||[]),i=t[0],r=t[1];var a={type:"checkbox",selectedRowKeys:i,onChange:function e(t){r(t);n.onChange(t);if(n.cacheKey){c.set("easy_tab_"+n.cacheKey,{keys:t})}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return B(F,{children:B(v,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:B(g,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var Z=function e(n){var t=b(n.initSelectedRowKeys||[]),i=t[0],r=t[1];var a=function e(t){r(t);n.onChange(t);if(n.cacheKey){c.set("easy_tab_"+n.cacheKey,{keys:t})}};var o=B(F,{children:B(h.Group,{defaultValue:i,onChange:a,value:i,style:{display:"flex",flexDirection:"column"},children:n.dataList.map((function(e){var n=e["_isFoldTitle"]||e.title;return B(h,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)}))})});var l=function e(t){if(t.target.checked){a(n.dataList.map((function(e){return e.dataIndex})))}else{a([])}};return B(y,{content:o,title:B(h,{checked:i.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var ee={queryCondition:{},isInit:true};var ne={actions:{updateFilterCondition:function e(t){return function(e){e.queryCondition=n({},e.queryCondition,t)}},resetFilterCondition:function e(t){return function(e){e.queryCondition=n({},ee.queryCondition,t)}},updateInitStatus:function e(){return function(e){e.isInit=false}}},state:ee};var te={};var ie=function e(n){if(!te[n]){te[n]=W(ne)}return te[n]};var re=["tooltip","tipsWrapperProps","title","hidden","isFold"];var ae=j((function(e,d){var f;var p=b(),m=p[0],v=p[1];var g=b(0),h=g[0],y=g[1];var x=b(false),F=x[0],j=x[1];var N=u.useId(undefined,"easy-table-key");var K=e.columnFoldConfig;var L=e.asyncColumnRequest;var W=b(false),U=W[0],G=W[1];var H=z({});var Q=b({}),Y=Q[0],$=Q[1];var J=b((function(){if(K!=null&&K.cacheKey){var e;var n=c.get("easy_tab_"+K.cacheKey);var t=l(n==null?void 0:n.keys)?n==null||(e=n.keys)==null?void 0:e.filter((function(e){return o(e)})):[];return t.length>0?t:(K==null?void 0:K.initSelectedKeys)||[]}else{return(K==null?void 0:K.initSelectedKeys)||[]}})),ee=J[0],ne=J[1];var te=R((function(){if(e.cacheSwitch===true){return location.pathname}if(typeof e.cacheSwitch==="string"){return e.cacheSwitch}return N}),[N,e.cacheSwitch]);var ae=ie(te).useStore(),oe=ae[0],le=ae[1];var ue=e.pageSize||((f=e.initialPaginationParams)==null?void 0:f.pageSize)||10;var se=e.initRequest===undefined?true:e.initRequest;var de=z(false);var ce=z();var fe=z([]);var pe=b(),me=pe[0],ve=pe[1];var ge=n({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},e.fieldNames);var he=C.useForm(e.form),ye=he[0];var Ce=u.useCallbackRef((function(n){return new Promise((function(t,i){var r,o,u,d,c,f,p,m,g,h,C,x;var b=function(){try{return t()}catch(e){return i(e)}};var F=function(n){try{j(false);if(e.onRequestErrorHandle){e.onRequestErrorHandle(n)}else{void S.error(n.message)}return b()}catch(e){return i(e)}};try{if(e.breforeRequest){var z=function(){try{return w.call(this)}catch(e){return F(e)}}.bind(this);var R=function(e){try{return t()}catch(e){return F(e)}};try{return Promise.resolve(e.breforeRequest(ye)).then((function(e){try{return z()}catch(e){return R(e)}}),R)}catch(q){R(q)}}function w(){j(true);return Promise.resolve(le.updateFilterCondition(n)).then((function(n){try{r=n;o=s(r.queryCondition||{});u=e.serviceConfig,d=u.requestParamsAdapter,c=u.onRequest,f=u.requestResultAdapter,p=u.dynamicColumsAdapter;m=d?d(o):o;return Promise.resolve(c(m)).then((function(n){try{g=n||{};ce.current=g;e.onDataSourceChange==null?void 0:e.onDataSourceChange(g);h=g;if(f){h=f(g)}if(p){C=p(g,fe.current);ve(C)}x=a(h,ge.list);v(l(x)?x:[]);y(a(h,ge.total));j(false);return b()}catch(e){return F(e)}}),F)}catch(e){return F(e)}}),F)}return w.call(this)}catch(P){F(P)}}))}));T.useEffectCustom((function(){var t=Ee();if(se!==false||!oe.isInit){if(t){var i;void Ce(n((i={},i[ge.pageNo]=1,i[ge.pageSize]=ue,i),e.initialValues,oe.queryCondition))}else{void Ce(e.initialValues)}}else{void le.updateFilterCondition(e.initialValues)}void le.updateInitStatus()}),[]);w((function(){if(L!=null&&L.length){var e=function e(){var i;var r=L[t];H.current=n({},H.current,(i={},i[r.dataIndex]={loading:true},i));$(H.current);r.onRequest().then((function(e){var t;H.current=n({},H.current,(t={},t[r.dataIndex]={loading:false,respData:e},t));$(H.current)})).catch((function(e){var t;console.error(e==null?void 0:e.message);H.current=n({},H.current,(t={},t[r.dataIndex]={loading:false},t));$(H.current)}))};for(var t=0;t<L.length;t++){e()}}}),[]);var Se=u.useCallbackRef((function(e){return new Promise((function(n,t){return Promise.resolve(le.resetFilterCondition()).then((function(i){try{ye.resetFields();if(e){void le.updateFilterCondition(e);ye.setFieldsValue(e)}return n()}catch(e){return t(e)}}),t)}))}));var xe=u.useCallbackRef((function(e){return new Promise((function(n,t){return Promise.resolve(le.updateFilterCondition(e)).then((function(i){try{ye.setFieldsValue(e);return n()}catch(e){return t(e)}}),t)}))}));var be=function e(n,t){if(Ee()){var i;return i={},i[ge.pageNo]=n,i[ge.pageSize]=t||ue,i}else{var r;return r={},r[ge.pageNo]=undefined,r[ge.pageSize]=undefined,r}};var Fe=u.useCallbackRef((function(t){return new Promise((function(i,r){var a;a=n({},be(1,oe.queryCondition[ge.pageSize]),e.initialValues,t);return Promise.resolve(le.resetFilterCondition(a)).then((function(e){try{ye.resetFields();if(t){ye.setFieldsValue(t)}void Ce(a);return i()}catch(e){return r(e)}}),r)}))}));var je=u.useCallbackRef((function(){return n({},oe.queryCondition,ye.getFieldsValue())}));var ze=u.useCallbackRef((function(){G(true)}));var Re=u.useCallbackRef((function(){G(false)}));var we=function n(){return{onRequest:Ce,clearQueryCondition:Se,updateQueryCondition:xe,getRequestParams:je,onResetRequest:Fe,form:ye,getDataSource:function e(){return ce.current},onFilterDataSource:function e(n){v(n)},onClearDataSource:function e(){y(0);v([])},onUpdateDataSource:function n(t){v(t);ce.current=t;e.onDataSourceChange==null?void 0:e.onDataSourceChange(t)},columnFoldTriggerRender:function n(t){var i;if(((i=e.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return P(t,{onClick:ze})}return B(Z,{dataList:De,onChange:Le,cacheKey:K==null?void 0:K.cacheKey,initSelectedRowKeys:ee,children:t})},loading:F}};q(d,(function(){return we()}));var qe=function e(n){de.current=n};var Pe=function e(n){fe.current=n};var Ne=function t(){var i=ye.getFieldsValue();if(e.onFormFinish){e.onFormFinish(n({},i,be(1,oe.queryCondition[ge.pageSize])))}else{void Ce(n({},i,be(1,oe.queryCondition[ge.pageSize])))}};var Ke=r(e.isFull)?true:e.isFull;var ke=i("fba-easy-table",{"fba-easy-table-full":Ke,"fba-easy-table-filter-fixed":e.filterFixed,"fba-easy-table-pagination-fixed":e.paginationFixed},e.className);var Te=R((function(){return n({showSizeChanger:true,current:oe.queryCondition[ge.pageNo]||1,pageSize:oe.queryCondition[ge.pageSize]||ue,total:h,showTotal:function e(n){return"共 "+n+" 条记录"}},e.pagination)}),[ge.pageNo,ge.pageSize,ue,e.pagination,oe.queryCondition,h]);var Ie=me?me:fe.current;var _e=R((function(){var e=Ie.map((function(e){var i=e.tooltip,r=e.tipsWrapperProps,a=e.title,o=e.hidden,l=e.isFold,u=t(e,re);if(o)return null;if(l&&!ee.includes(e.dataIndex))return null;if(typeof a==="string"&&r){if(typeof r==="string"){return n({},u,{title:B(A,{tipType:"popover",popoverProps:{content:r},children:a})})}return n({},u,{title:B(A,n({},r,{children:a}))})}if(typeof a==="string"&&!!i){return n({},u,{title:B(E,{tooltip:i,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[Ie,ee]);var De=Ie.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));var Le=function e(n){ne(n);K==null||K.onChange==null?void 0:K.onChange(n)};_e=R((function(){if(K!=null&&K.hidden)return _e;var e=_e[_e.length-1];if(De.length>0&&_e.length>0){var n=_e.find((function(e){return e["_isFoldColumn"]}));if(n&&e.dataIndex!==n.dataIndex){n.title=n["_isFoldTitle"];n["_isFoldColumn"]=false}if(!e["_isFoldColumn"]){e["_isFoldTitle"]=e["_isFoldTitle"]||e.title;e["_isFoldColumn"]=true;var t=K==null?void 0:K.triggerType;e.title=O(I,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[B("span",{children:e.title}),B("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:t==="drawer"?B(_,{onClick:ze,text:K==null?void 0:K.text,size:"small",icon:(K==null?void 0:K.icon)||B(V,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:(K==null?void 0:K.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):B(Z,{dataList:De,onChange:Le,cacheKey:K==null?void 0:K.cacheKey,initSelectedRowKeys:ee,children:B(_,{text:K==null?void 0:K.text,style:{padding:0,margin:0},size:"small",icon:(K==null?void 0:K.icon)||B(V,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return _e}),[_e,De,K]);_e=R((function(){if(!Object.keys(Y))return _e;return _e.map((function(e){var n=e.dataIndex;var t=Y[n];if(n&&t){if(t.loading){e.render=function(e){return B(k,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,i,r){return e.asyncRender==null?void 0:e.asyncRender(n,i,r,t.respData)}}}return e}))}),[_e,Y]);var Ve=u.useCallbackRef((function(n,t){var i,r;void Ce((i={},i[ge.pageSize]=t,i[ge.pageNo]=n,i));(r=e.pagination)==null||r.onChange==null?void 0:r.onChange(n,t)}));var Ee=function n(){return e.paginationFixed||de.current};u.useUpdateEffect((function(){if(e.paginationFixed){var n;void Ce((n={},n[ge.pageSize]=oe.queryCondition[ge.pageSize]||ue,n[ge.pageNo]=1,n))}else{var t;void Ce((t={},t[ge.pageSize]=undefined,t[ge.pageNo]=undefined,t))}}),[e.paginationFixed]);var Ae=i("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":e.isInline},e.className);var Be=n({overflowY:e.filterFixed||e.paginationFixed?"hidden":"auto"},e.style);var Oe=typeof e.children==="function"?e.children(ce.current):e.children;return O(M.Provider,{value:{onSetBaseColumns:Pe,getEasyTableRef:we,modelKey:te,onRequest:Ce,tableDataSource:m,tableTotal:h,loading:F,fieldNames:ge,pageSize:ue,onSetPaginationStatus:qe,getPaginationStatus:Ee,onFormFinish:Ne,form:ye,paginationFixed:e.paginationFixed||false,foldKeys:e.foldKeys||[],columns:_e,initialValues:e.initialValues},children:[e.paginationFixed?O("div",{className:Ae,style:Be,children:[B("div",{className:ke,children:Oe}),h>0&&B("div",{className:"fba-easy-table-pagination",children:B(D,n({size:"small"},Te,{onChange:Ve}))})]}):B("div",{className:Ae,style:e.style,children:Oe}),B(X,{dataList:De,onClose:Re,open:U,onChange:Le,cacheKey:K==null?void 0:K.cacheKey,initSelectedRowKeys:ee})]})}));var oe=function e(t){var a=T.useResponsivePoint()||"md";var o=N(M);var l=t.queryButtonProps,s=t.resetButtonProps,d=t.filterOperate,c=t.formClassName,f=c===void 0?"":c,p=t.defaultResetButtonTriggerRequest,m=t.filterWrapperStyle,v=t.filterWrapperClassName,g=t.rightOperateAreaAppendType,h=t.easyFormProps;var y=o.modelKey,C=o.foldKeys,S=o.fieldNames,x=o.onRequest,F=o.pageSize,j=o.getPaginationStatus,z=o.initialValues,w=o.form,q=o.onFormFinish;var P=typeof t.children==="function"?t.children(w):t.children;var I=g||"cover";var _=R((function(){if(H(P)){return K.toArray(P.props.children)}else{return K.toArray(P)}}),[P]);var D=b(false),L=D[0],V=D[1];var E=ie(y).useStore(),A=E[0],W=E[1];var J=u.useCallbackRef((function(){return new Promise((function(e,t){var i;return Promise.resolve(W.resetFilterCondition()).then(function(a){try{w.resetFields();if(r(p)||p){return Promise.resolve(w.validateFields()).then(function(e){try{if(j()){x(n((i={},i[S.pageNo]=1,i[S.pageSize]=F,i),z))}else{x(z)}return o.call(this)}catch(e){return t(e)}}.bind(this),t)}function o(){return e()}return o.call(this)}catch(l){return t(l)}}.bind(this),t)}))}));var X=R((function(){var e=[!(l!=null&&l.hidden)?B(k,n({type:"primary",htmlType:"submit"},l,{children:(l==null?void 0:l.text)||"查询"}),"1"):null,!(s!=null&&s.hidden)?B(k,n({onClick:J},s,{children:(s==null?void 0:s.text)||"重置"}),"2"):null].filter(Boolean);var t=d==null?void 0:d(w);var i=t==null?void 0:t.rightList;var r=(t==null?void 0:t.leftList)||[];var a=e;if(i){if(I==="afterAppend"){a=[].concat(e,i)}else if(I==="beforeAppend"){a=[].concat(i,e)}else{a=i}}if(C.length>0){var o=B(k,{type:"link",style:{padding:"0"},onClick:function e(){V(!L)},children:L?O("span",{children:["收起",B(G,{style:{marginLeft:3,fontSize:12}})]}):O("span",{children:["展开",B(U,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(a.length>0||r.length===0){a.push(o)}else if((r==null?void 0:r.length)>0){r.push(o)}}return _.map((function(e,n){if(!L&&C.find((function(n){return".$"+n===e.key})))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return B($.Col,{children:e},n)})).filter(Boolean).concat(B($.OperateCol,n({},t,{leftList:r,rightList:a}),999))}),[_,d,C,w,J,L,l,s,I]);var Z=a==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return B(Q,{className:i("easy-table-filter",v),style:m,children:B(Y,n({form:w,autoComplete:"off",onFinish:q,initialValues:n({},z,A.queryCondition),className:f,style:t.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Z,children:t.isPure?P:B($.Row,{gutter:[15,0],gridSize:t.formGridSize,children:X})}))})};var le=function e(){var n=N(M);return n.getEasyTableRef()};var ue=function e(){var n=N(M);return{current:n.getEasyTableRef()}};var se=["children","rowKey","pagination","isSync"];var de=function e(r){var a=N(M);var o=r.children,l=r.rowKey,s=r.pagination,d=r.isSync,c=t(r,se);var v=a.modelKey,h=a.fieldNames,y=a.onRequest,C=a.tableDataSource,S=a.pageSize,x=a.tableTotal,b=a.loading,j=a.paginationFixed,z=a.onSetPaginationStatus;var w=ie(v).useStore(),q=w[0];T.useEffectCustom((function(){a.onSetBaseColumns(r.columns||[])}),[r.columns]);T.useEffectCustom((function(){z(s!==false)}),[s]);u.useUpdateEffect((function(){if(!j){if(s!==false){var e;y((e={},e[h.pageSize]=q.queryCondition[h.pageSize]||S,e[h.pageNo]=1,e))}else{var n;y((n={},n[h.pageSize]=undefined,n[h.pageNo]=undefined,n))}}}),[s]);var P=R((function(){if(j||s===false)return false;return n({showSizeChanger:true,current:q.queryCondition[h.pageNo]||1,pageSize:q.queryCondition[h.pageSize]||S,total:x,showTotal:function e(n){return"共 "+n+" 条记录"}},r.pagination,{selectComponentClass:L})}),[h.pageNo,h.pageSize,S,s,j,r.pagination,q.queryCondition,x]);var K=function e(n,t,i,a){if(a.action==="paginate"&&P){var o;y((o={},o[h.pageSize]=n.pageSize,o[h.pageNo]=n.current,o))}else{r.onChange==null?void 0:r.onChange(n,t,i,a)}};var k=R((function(){if(!C)return undefined;if(C.length===0){return[]}if(typeof l==="string"&&f(C[0][l])){return C.map((function(e){e[l]=p();return e}))}return C}),[C,l]);var I=function e(){if(d&&!k){return O(F,{children:[o,B(g,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:l,columns:a.columns,loading:b},"1")]})}if(m()){return O(F,{children:[o,B(g,n({size:"small",scroll:{x:"max-content"},bordered:true},c,{columns:a.columns,pagination:P,rowKey:l,onChange:K,loading:b,dataSource:k}),"2")]})}return O(F,{children:[o,B(J,{children:B(g,n({size:"small",scroll:{x:"max-content"},bordered:true},c,{columns:a.columns,pagination:P,rowKey:l,onChange:K,loading:b,dataSource:k}),"3")})]})};return B(Q,{className:i("easy-table-table",{"ett-empty-show-small":r.emptyShowSize==="small"},r.tableWrapperClassName),style:r.tableWrapperStyle,children:I()})};var ce=e.attachPropertiesToComponent(ae,{Filter:oe,Table:de,useEasyTablRef:ue,useEasyTable:le});export{ce as EasyTable};
22
+ import{fbaUtils as e}from"../fba-utils/index.js";import{_ as n,a as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{classNames as i}from"@dimjs/utils/cjs/class-names";import{isUndefined as r}from"@dimjs/lang/cjs/is-undefined";import{get as a}from"@dimjs/utils/cjs/get";import{isString as o}from"@dimjs/lang/cjs/is-string";import{isArray as l}from"@dimjs/lang/cjs/is-array";import{hooks as u}from"@wove/react/cjs/hooks";import{cloneState as s}from"@dimjs/model";import{noop as d,localStorageCache as c,isUndefinedOrNull as f,getUuid as p,isMacEnv as m}from"@flatbiz/utils";import{Drawer as v,Table as g,Checkbox as h,Popover as y,Form as C,message as S}from"antd";import{createContext as b,useState as x,Fragment as F,forwardRef as j,useRef as z,useMemo as R,useEffect as w,useImperativeHandle as q,cloneElement as P,useContext as N,Children as K}from"react";import{ButtonWrapper as k}from"../button-wrapper/index.js";import{fbaHooks as T}from"../fba-hooks/index.js";import{FlexLayout as I}from"../flex-layout/index.js";import{IconWrapper as _}from"../icon-wrapper/index.js";import{P as D,S as L}from"../index-6677fbfc.js";import{SvgHttpView as V}from"../svg-http-view/index.js";import{TableTitleTooltip as E}from"../table-title-tooltip/index.js";import{TipsWrapper as A}from"../tips-wrapper/index.js";import{jsx as B,jsxs as O}from"react/jsx-runtime";import{Model as W}from"@dimjs/model-react";import U from"@ant-design/icons/es/icons/DownOutlined";import G from"@ant-design/icons/es/icons/UpOutlined";import{isFragment as H}from"react-is";import{BlockLayout as Q}from"../block-layout/index.js";import{EasyForm as Y}from"../easy-form/index.js";import{FormGrid as M}from"../form-grid/index.js";import{TableScrollbar as $}from"../table-scrollbar/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";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"@dimjs/utils/cjs/extend";import"../use-responsive-point-21b8c601.js";import"@ant-design/icons/es/icons/QuestionCircleOutlined";import"../box-grid/index.js";import"@dimjs/lang/cjs/is-number";import"ahooks";import"../form-wrapper/index.js";import"../pre-defined-class-name/index.js";var J=b({onRequest:d,tableList:[],getEasyTableRef:function e(){}});var X=function e(n){var t=x(n.initSelectedRowKeys||[]),i=t[0],r=t[1];var a={type:"checkbox",selectedRowKeys:i,onChange:function e(t){r(t);n.onChange(t);if(n.cacheKey){c.set("easy_tab_"+n.cacheKey,{keys:t})}}};var o=[{title:"字段名称",dataIndex:"title",render:function e(n,t){return t["_isFoldTitle"]||n}},{title:"字段Key",dataIndex:"dataIndex"}];return B(F,{children:B(v,{title:"选择字段",open:n.open,onClose:n.onClose,width:"35%",styles:{body:{padding:15}},children:B(g,{bordered:true,size:"small",columns:o,rowSelection:a,rowKey:"dataIndex",pagination:false,scroll:{x:"max-content"},dataSource:n.dataList})})})};var Z=function e(n){var t=x(n.initSelectedRowKeys||[]),i=t[0],r=t[1];var a=function e(t){r(t);n.onChange(t);if(n.cacheKey){c.set("easy_tab_"+n.cacheKey,{keys:t})}};var o=B(F,{children:B(h.Group,{defaultValue:i,onChange:a,value:i,style:{display:"flex",flexDirection:"column"},children:n.dataList.map((function(e){var n=e["_isFoldTitle"]||e.title;return B(h,{value:e.dataIndex,style:{padding:"0 0 5px 0"},children:n},e.dataIndex)}))})});var l=function e(t){if(t.target.checked){a(n.dataList.map((function(e){return e.dataIndex})))}else{a([])}};return B(y,{content:o,title:B(h,{checked:i.length===n.dataList.length,onChange:l,children:"全选(字段列表)"}),placement:"bottomRight",overlayClassName:"fold-operate-popiver",children:n.children})};var ee={queryCondition:{},isInit:true};var ne={actions:{updateFilterCondition:function e(t){return function(e){e.queryCondition=n({},e.queryCondition,t)}},resetFilterCondition:function e(t){return function(e){e.queryCondition=n({},ee.queryCondition,t)}},updateInitStatus:function e(){return function(e){e.isInit=false}}},state:ee};var te={};var ie=function e(n){if(!te[n]){te[n]=W(ne)}return te[n]};var re=["tooltip","tipsWrapperProps","title","hidden","isFold"];var ae=j((function(e,d){var f;var p=x(),m=p[0],v=p[1];var g=x(0),h=g[0],y=g[1];var b=x(false),F=b[0],j=b[1];var N=u.useId(undefined,"easy-table-key");var K=e.columnFoldConfig;var L=e.asyncColumnRequest;var W=x(false),U=W[0],G=W[1];var H=z({});var Q=x({}),Y=Q[0],M=Q[1];var $=x((function(){if(K!=null&&K.cacheKey){var e;var n=c.get("easy_tab_"+K.cacheKey);var t=l(n==null?void 0:n.keys)?n==null||(e=n.keys)==null?void 0:e.filter((function(e){return o(e)})):[];return t.length>0?t:(K==null?void 0:K.initSelectedKeys)||[]}else{return(K==null?void 0:K.initSelectedKeys)||[]}})),ee=$[0],ne=$[1];var te=R((function(){if(e.cacheSwitch===true){return location.pathname}if(typeof e.cacheSwitch==="string"){return e.cacheSwitch}return N}),[N,e.cacheSwitch]);var ae=ie(te).useStore(),oe=ae[0],le=ae[1];var ue=e.pageSize||((f=e.initialPaginationParams)==null?void 0:f.pageSize)||10;var se=e.initRequest===undefined?true:e.initRequest;var de=z(false);var ce=z();var fe=z([]);var pe=x(),me=pe[0],ve=pe[1];var ge=n({list:"list",total:"total",pageNo:"pageNo",pageSize:"pageSize"},e.fieldNames);var he=C.useForm(e.form),ye=he[0];var Ce=u.useCallbackRef((function(n){return new Promise((function(t,i){var r,o,u,d,c,f,p,m,g,h,C,b;var x=function(){try{return t()}catch(e){return i(e)}};var F=function(n){try{j(false);if(e.onRequestErrorHandle){e.onRequestErrorHandle(n)}else{void S.error(n.message)}return x()}catch(e){return i(e)}};try{if(e.breforeRequest){var z=function(){try{return w.call(this)}catch(e){return F(e)}}.bind(this);var R=function(e){try{return t()}catch(e){return F(e)}};try{return Promise.resolve(e.breforeRequest(ye)).then((function(e){try{return z()}catch(e){return R(e)}}),R)}catch(q){R(q)}}function w(){j(true);return Promise.resolve(le.updateFilterCondition(n)).then((function(n){try{r=n;o=s(r.queryCondition||{});u=e.serviceConfig,d=u.requestParamsAdapter,c=u.onRequest,f=u.requestResultAdapter,p=u.dynamicColumsAdapter;m=d?d(o):o;return Promise.resolve(c(m)).then((function(n){try{g=n||{};ce.current=g;e.onDataSourceChange==null?void 0:e.onDataSourceChange(g);h=g;if(f){h=f(g)}if(p){C=p(g,fe.current);ve(C)}b=a(h,ge.list);v(l(b)?b:[]);y(a(h,ge.total));j(false);return x()}catch(e){return F(e)}}),F)}catch(e){return F(e)}}),F)}return w.call(this)}catch(P){F(P)}}))}));T.useEffectCustom((function(){var t=Ee();if(se!==false||!oe.isInit){if(t){var i;void Ce(n((i={},i[ge.pageNo]=1,i[ge.pageSize]=ue,i),e.initialValues,oe.queryCondition))}else{void Ce(e.initialValues)}}else{void le.updateFilterCondition(e.initialValues)}void le.updateInitStatus()}),[]);w((function(){if(L!=null&&L.length){var e=function e(){var i;var r=L[t];H.current=n({},H.current,(i={},i[r.dataIndex]={loading:true},i));M(H.current);r.onRequest().then((function(e){var t;H.current=n({},H.current,(t={},t[r.dataIndex]={loading:false,respData:e},t));M(H.current)})).catch((function(e){var t;console.error(e==null?void 0:e.message);H.current=n({},H.current,(t={},t[r.dataIndex]={loading:false},t));M(H.current)}))};for(var t=0;t<L.length;t++){e()}}}),[L]);var Se=u.useCallbackRef((function(e){return new Promise((function(n,t){return Promise.resolve(le.resetFilterCondition()).then((function(i){try{ye.resetFields();if(e){void le.updateFilterCondition(e);ye.setFieldsValue(e)}return n()}catch(e){return t(e)}}),t)}))}));var be=u.useCallbackRef((function(e){return new Promise((function(n,t){return Promise.resolve(le.updateFilterCondition(e)).then((function(i){try{ye.setFieldsValue(e);return n()}catch(e){return t(e)}}),t)}))}));var xe=function e(n,t){if(Ee()){var i;return i={},i[ge.pageNo]=n,i[ge.pageSize]=t||ue,i}else{var r;return r={},r[ge.pageNo]=undefined,r[ge.pageSize]=undefined,r}};var Fe=u.useCallbackRef((function(t){return new Promise((function(i,r){var a;a=n({},xe(1,oe.queryCondition[ge.pageSize]),e.initialValues,t);return Promise.resolve(le.resetFilterCondition(a)).then((function(e){try{ye.resetFields();if(t){ye.setFieldsValue(t)}void Ce(a);return i()}catch(e){return r(e)}}),r)}))}));var je=u.useCallbackRef((function(){return n({},oe.queryCondition,ye.getFieldsValue())}));var ze=u.useCallbackRef((function(){G(true)}));var Re=u.useCallbackRef((function(){G(false)}));var we=function n(){return{onRequest:Ce,clearQueryCondition:Se,updateQueryCondition:be,getRequestParams:je,onResetRequest:Fe,form:ye,getDataSource:function e(){return ce.current},onFilterDataSource:function e(n){v(n)},onClearDataSource:function e(){y(0);v([])},onUpdateDataSource:function n(t){v(t);ce.current=t;e.onDataSourceChange==null?void 0:e.onDataSourceChange(t)},columnFoldTriggerRender:function n(t){var i;if(((i=e.columnFoldConfig)==null?void 0:i.triggerType)==="drawer"){return P(t,{onClick:ze})}return B(Z,{dataList:De,onChange:Le,cacheKey:K==null?void 0:K.cacheKey,initSelectedRowKeys:ee,children:t})},onChangeTableColumns:function e(n){ve(n)},getTableColumns:function e(){return me?me:fe.current},loading:F}};q(d,(function(){return we()}));var qe=function e(n){de.current=n};var Pe=function e(n){fe.current=n};var Ne=function t(){var i=ye.getFieldsValue();if(e.onFormFinish){e.onFormFinish(n({},i,xe(1,oe.queryCondition[ge.pageSize])))}else{void Ce(n({},i,xe(1,oe.queryCondition[ge.pageSize])))}};var Ke=r(e.isFull)?true:e.isFull;var ke=i("fba-easy-table",{"fba-easy-table-full":Ke,"fba-easy-table-filter-fixed":e.filterFixed,"fba-easy-table-pagination-fixed":e.paginationFixed},e.className);var Te=R((function(){return n({showSizeChanger:true,current:oe.queryCondition[ge.pageNo]||1,pageSize:oe.queryCondition[ge.pageSize]||ue,total:h,showTotal:function e(n){return"共 "+n+" 条记录"}},e.pagination)}),[ge.pageNo,ge.pageSize,ue,e.pagination,oe.queryCondition,h]);var Ie=me?me:fe.current;var _e=R((function(){var e=Ie.map((function(e){var i=e.tooltip,r=e.tipsWrapperProps,a=e.title,o=e.hidden,l=e.isFold,u=t(e,re);if(o)return null;if(l&&!ee.includes(e.dataIndex))return null;if(typeof a==="string"&&r){if(typeof r==="string"){return n({},u,{title:B(A,{tipType:"popover",popoverProps:{content:r},children:a})})}return n({},u,{title:B(A,n({},r,{children:a}))})}if(typeof a==="string"&&!!i){return n({},u,{title:B(E,{tooltip:i,title:a})})}return e})).filter(Boolean);return[].concat(e)}),[Ie,ee]);var De=Ie.filter((function(e){return!e.hidden&&e.isFold&&e.dataIndex}));var Le=function e(n){ne(n);K==null||K.onChange==null?void 0:K.onChange(n)};_e=T.useMemoCustom((function(){if(K!=null&&K.hidden)return _e;var e=_e[_e.length-1];if(De.length>0&&_e.length>0){var n=_e.find((function(e){return e["_isFoldColumn"]}));if(n&&e.dataIndex!==n.dataIndex){n.title=n["_isFoldTitle"];n["_isFoldColumn"]=false}if(!e["_isFoldColumn"]){e["_isFoldTitle"]=e["_isFoldTitle"]||e.title;e["_isFoldColumn"]=true;var t=K==null?void 0:K.triggerType;e.title=O(I,{direction:"horizontal",fullIndex:0,style:{alignItems:"center"},children:[B("span",{children:e.title}),B("div",{style:{padding:"0 5px 0 20px",display:"flex"},children:t==="drawer"?B(_,{onClick:ze,text:K==null?void 0:K.text,size:"small",icon:(K==null?void 0:K.icon)||B(V,{svgPath:"ionic/list-circle",color:"#868686"}),hoverTips:(K==null?void 0:K.hoverTipText)||"字段列表",style:{padding:0,margin:0}}):B(Z,{dataList:De,onChange:Le,cacheKey:K==null?void 0:K.cacheKey,initSelectedRowKeys:ee,children:B(_,{text:K==null?void 0:K.text,style:{padding:0,margin:0},size:"small",icon:(K==null?void 0:K.icon)||B(V,{svgPath:"ionic/list-circle",color:"#868686"})})})})]})}}return _e}),[_e,De,K]);_e=R((function(){if(!Object.keys(Y))return _e;return _e.map((function(e){var n=e.dataIndex;var t=Y[n];if(n&&t){if(t.loading){e.render=function(e){return B(k,{loading:true,type:"text",loadingPosition:"center",removeGap:true,children:e})}}else if(e.asyncRender){e.render=function(n,i,r){return e.asyncRender==null?void 0:e.asyncRender(n,i,r,t.respData)}}}return e}))}),[_e,Y]);var Ve=u.useCallbackRef((function(n,t){var i,r;void Ce((i={},i[ge.pageSize]=t,i[ge.pageNo]=n,i));(r=e.pagination)==null||r.onChange==null?void 0:r.onChange(n,t)}));var Ee=function n(){return e.paginationFixed||de.current};u.useUpdateEffect((function(){if(e.paginationFixed){var n;void Ce((n={},n[ge.pageSize]=oe.queryCondition[ge.pageSize]||ue,n[ge.pageNo]=1,n))}else{var t;void Ce((t={},t[ge.pageSize]=undefined,t[ge.pageNo]=undefined,t))}}),[e.paginationFixed]);var Ae=i("fba-easy-table-wrapper",{"fba-easy-table-wrapper-inline":e.isInline},e.className);var Be=n({overflowY:e.filterFixed||e.paginationFixed?"hidden":"auto"},e.style);var Oe=typeof e.children==="function"?e.children(ce.current):e.children;return O(J.Provider,{value:{onSetBaseColumns:Pe,getEasyTableRef:we,modelKey:te,onRequest:Ce,tableDataSource:m,tableTotal:h,loading:F,fieldNames:ge,pageSize:ue,onSetPaginationStatus:qe,getPaginationStatus:Ee,onFormFinish:Ne,form:ye,paginationFixed:e.paginationFixed||false,foldKeys:e.foldKeys||[],columns:_e,initialValues:e.initialValues},children:[e.paginationFixed?O("div",{className:Ae,style:Be,children:[B("div",{className:ke,children:Oe}),h>0&&B("div",{className:"fba-easy-table-pagination",children:B(D,n({size:"small"},Te,{onChange:Ve}))})]}):B("div",{className:Ae,style:e.style,children:Oe}),B(X,{dataList:De,onClose:Re,open:U,onChange:Le,cacheKey:K==null?void 0:K.cacheKey,initSelectedRowKeys:ee})]})}));var oe=function e(t){var a=T.useResponsivePoint()||"md";var o=N(J);var l=t.queryButtonProps,s=t.resetButtonProps,d=t.filterOperate,c=t.formClassName,f=c===void 0?"":c,p=t.defaultResetButtonTriggerRequest,m=t.filterWrapperStyle,v=t.filterWrapperClassName,g=t.rightOperateAreaAppendType,h=t.easyFormProps;var y=o.modelKey,C=o.foldKeys,S=o.fieldNames,b=o.onRequest,F=o.pageSize,j=o.getPaginationStatus,z=o.initialValues,w=o.form,q=o.onFormFinish;var P=typeof t.children==="function"?t.children(w):t.children;var I=g||"cover";var _=R((function(){if(H(P)){return K.toArray(P.props.children)}else{return K.toArray(P)}}),[P]);var D=x(false),L=D[0],V=D[1];var E=ie(y).useStore(),A=E[0],W=E[1];var $=u.useCallbackRef((function(){return new Promise((function(e,t){var i;return Promise.resolve(W.resetFilterCondition()).then(function(a){try{w.resetFields();if(r(p)||p){return Promise.resolve(w.validateFields()).then(function(e){try{if(j()){b(n((i={},i[S.pageNo]=1,i[S.pageSize]=F,i),z))}else{b(z)}return o.call(this)}catch(e){return t(e)}}.bind(this),t)}function o(){return e()}return o.call(this)}catch(l){return t(l)}}.bind(this),t)}))}));var X=R((function(){var e=[!(l!=null&&l.hidden)?B(k,n({type:"primary",htmlType:"submit"},l,{children:(l==null?void 0:l.text)||"查询"}),"1"):null,!(s!=null&&s.hidden)?B(k,n({onClick:$},s,{children:(s==null?void 0:s.text)||"重置"}),"2"):null].filter(Boolean);var t=d==null?void 0:d(w);var i=t==null?void 0:t.rightList;var r=(t==null?void 0:t.leftList)||[];var a=e;if(i){if(I==="afterAppend"){a=[].concat(e,i)}else if(I==="beforeAppend"){a=[].concat(i,e)}else{a=i}}if(C.length>0){var o=B(k,{type:"link",style:{padding:"0"},onClick:function e(){V(!L)},children:L?O("span",{children:["收起",B(G,{style:{marginLeft:3,fontSize:12}})]}):O("span",{children:["展开",B(U,{style:{marginLeft:3,fontSize:12}})]})},"fold-trigger");if(a.length>0||r.length===0){a.push(o)}else if((r==null?void 0:r.length)>0){r.push(o)}}return _.map((function(e,n){if(!L&&C.find((function(n){return".$"+n===e.key})))return null;if(e.props["hidden"])return null;if(e.type["domTypeName"]==="FormCol")return e;return B(M.Col,{children:e},n)})).filter(Boolean).concat(B(M.OperateCol,n({},t,{leftList:r,rightList:a}),999))}),[_,d,C,w,$,L,l,s,I]);var Z=a==="xs"?"left":(h==null?void 0:h.labelAlign)||"right";return B(Q,{className:i("easy-table-filter",v),style:m,children:B(Y,n({form:w,autoComplete:"off",onFinish:q,initialValues:n({},z,A.queryCondition),className:f,style:t.formStyle,isPure:true,labelWidth:"80",formItemGap:"15"},h,{labelAlign:Z,children:t.isPure?P:B(M.Row,{gutter:[15,0],gridSize:t.formGridSize,children:X})}))})};var le=function e(){var n=N(J);return n.getEasyTableRef()};var ue=function e(){var n=N(J);return{current:n.getEasyTableRef()}};var se=["children","rowKey","pagination","isSync"];var de=function e(r){var a=N(J);var o=r.children,l=r.rowKey,s=r.pagination,d=r.isSync,c=t(r,se);var v=a.modelKey,h=a.fieldNames,y=a.onRequest,C=a.tableDataSource,S=a.pageSize,b=a.tableTotal,x=a.loading,j=a.paginationFixed,z=a.onSetPaginationStatus;var w=ie(v).useStore(),q=w[0];T.useEffectCustom((function(){a.onSetBaseColumns(r.columns||[])}),[]);T.useEffectCustom((function(){z(s!==false)}),[s]);u.useUpdateEffect((function(){if(!j){if(s!==false){var e;y((e={},e[h.pageSize]=q.queryCondition[h.pageSize]||S,e[h.pageNo]=1,e))}else{var n;y((n={},n[h.pageSize]=undefined,n[h.pageNo]=undefined,n))}}}),[s]);var P=R((function(){if(j||s===false)return false;return n({showSizeChanger:true,current:q.queryCondition[h.pageNo]||1,pageSize:q.queryCondition[h.pageSize]||S,total:b,showTotal:function e(n){return"共 "+n+" 条记录"}},r.pagination,{selectComponentClass:L})}),[h.pageNo,h.pageSize,S,s,j,r.pagination,q.queryCondition,b]);var K=function e(n,t,i,a){if(a.action==="paginate"&&P){var o;y((o={},o[h.pageSize]=n.pageSize,o[h.pageNo]=n.current,o))}else{r.onChange==null?void 0:r.onChange(n,t,i,a)}};var k=R((function(){if(!C)return undefined;if(C.length===0){return[]}if(typeof l==="string"&&f(C[0][l])){return C.map((function(e){e[l]=p();return e}))}return C}),[C,l]);var I=function e(){if(d&&!k){return O(F,{children:[o,B(g,{size:"small",scroll:{x:"max-content"},bordered:true,rowKey:l,columns:a.columns,loading:x},"1")]})}if(m()){return O(F,{children:[o,B(g,n({size:"small",scroll:{x:"max-content"},bordered:true},c,{columns:a.columns,pagination:P,rowKey:l,onChange:K,loading:x,dataSource:k}),"2")]})}return O(F,{children:[o,B($,{children:B(g,n({size:"small",scroll:{x:"max-content"},bordered:true},c,{columns:a.columns,pagination:P,rowKey:l,onChange:K,loading:x,dataSource:k}),"3")})]})};return B(Q,{className:i("easy-table-table",{"ett-empty-show-small":r.emptyShowSize==="small"},r.tableWrapperClassName),style:r.tableWrapperStyle,children:I()})};var ce=e.attachPropertiesToComponent(ae,{Filter:oe,Table:de,useEasyTablRef:ue,useEasyTable:le});export{ce as EasyTable};
23
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/model.ts","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { noop, TPlainObject } from '@flatbiz/utils';\nimport { FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { EasyTableRefApi, TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n modelKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns: TEasyTableTableColumn<TPlainObject>[];\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { localStorageCache, TAny, TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { ColumnsType } from 'antd/es/table';\nimport { TableRowSelection } from 'antd/es/table/interface';\nimport { CSSProperties, Fragment, useState } from 'react';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n localStorageCache.set(`easy_tab_${props.cacheKey}`, { keys: selectedRowKeys });\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { localStorageCache } from '@flatbiz/utils';\nimport { Checkbox, Popover } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, useState } from 'react';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n localStorageCache.set(`easy_tab_${props.cacheKey}`, { keys: keys });\n }\n };\n\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n queryCondition: TPlainObject;\n isInit: boolean;\n};\n\ntype ModelActionParams = {\n updateFilterCondition?: Partial<ModelState['queryCondition']>;\n resetFilterCondition?: TPlainObject;\n updateInitStatus: void;\n};\n\nconst defaultState: ModelState = {\n queryCondition: {},\n isInit: true,\n};\n\nconst _EasyTableModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n updateFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...state.queryCondition,\n ...params,\n };\n };\n },\n resetFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...defaultState.queryCondition,\n ...params,\n };\n };\n },\n updateInitStatus: () => {\n return (state) => {\n state.isInit = false;\n };\n },\n },\n state: defaultState,\n};\n\nconst easyTableModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const easyTableModel = (key: string) => {\n if (!easyTableModels[key]) {\n easyTableModels[key] = Model(_EasyTableModel);\n }\n return easyTableModels[key];\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, get } from '@dimjs/utils';\nimport { localStorageCache, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n CSSProperties,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { PaginationWrapper } from '../pagination-wrapper';\nimport { SvgHttpView } from '../svg-http-view';\nimport { TableTitleTooltip } from '../table-title-tooltip';\nimport { TipsWrapper } from '../tips-wrapper';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport { easyTableModel } from './model';\nimport './style.less';\nimport { EasyTableProps, EasyTableRefApi, TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const easyTableId = hooks.useId(undefined, 'easy-table-key');\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (columnFoldConfig?.cacheKey) {\n const cacheValue = localStorageCache.get(`easy_tab_${columnFoldConfig.cacheKey}`);\n const cacheKeyList = isArray(cacheValue?.keys)\n ? (cacheValue?.keys?.filter((item) => isString(item)) as string[])\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const modelKey = useMemo(() => {\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return easyTableId;\n }, [easyTableId, props.cacheSwitch]);\n\n const [state, actions] = easyTableModel(modelKey).useStore();\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (error) {\n return;\n }\n }\n setLoading(true);\n const allState = await actions.updateFilterCondition(params);\n const queryCondition = cloneState(allState.queryCondition || {});\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(queryCondition) : queryCondition;\n const respData = (await onRequest(paramsNew)) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n if (initRequest !== false || !state.isInit) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...state.queryCondition,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n void actions.updateFilterCondition(props.initialValues);\n }\n void actions.updateInitStatus();\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, []);\n\n const clearQueryCondition = hooks.useCallbackRef(async (values?: TPlainObject) => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (values) {\n void actions.updateFilterCondition(values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef(async (values: TPlainObject) => {\n await actions.updateFilterCondition(values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef(async (values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, state.queryCondition[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n await actions.resetFilterCondition(params);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...state.queryCondition,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = () => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = dataList;\n props.onDataSourceChange?.(dataList);\n },\n columnFoldTriggerRender: (children) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as TAny[]}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n loading,\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, state.queryCondition[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, state.queryCondition[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = useMemo(() => {\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, fieldNames.pageSize, pageSize, props.pagination, state.queryCondition, total]);\n\n const columnsMerge = (dynamicColumns ? dynamicColumns : baseColumnsRef.current) as TPlainObject[];\n\n let tableColumns = useMemo(() => {\n const tempList = columnsMerge\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, hidden, isFold, ...otherProps } = item;\n if (hidden) return null;\n if (isFold && !showFoldKeyList.includes(item.dataIndex as string)) return null;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [columnsMerge, showFoldKeyList]);\n\n const foldColumnList = columnsMerge.filter((item: any) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n tableColumns = useMemo(() => {\n if (columnFoldConfig?.hidden) return tableColumns;\n const finalItem = tableColumns[tableColumns.length - 1];\n if (foldColumnList.length > 0 && tableColumns.length > 0) {\n const foldColumnTarget = tableColumns.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={onOpenColumnFoldModal}\n text={columnFoldConfig?.text}\n size=\"small\"\n icon={columnFoldConfig?.icon || <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />}\n hoverTips={columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={foldColumnList as TAny[]}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n <IconWrapper\n text={columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n columnFoldConfig?.icon || <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return tableColumns;\n }, [tableColumns, foldColumnList, columnFoldConfig]);\n\n tableColumns = useMemo(() => {\n if (!Object.keys(asyncColumnRequestResult)) return tableColumns;\n return tableColumns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [tableColumns, asyncColumnRequestResult]);\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n void onInnerRequest({\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n });\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: state.queryCondition[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n getEasyTableRef,\n modelKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: tableColumns,\n initialValues: props.initialValues,\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n {children}\n </div>\n )}\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { FormInstance } from 'antd';\nimport { Children, CSSProperties, ReactElement, useContext, useMemo, useState } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { EasyTableContext } from './context';\nimport { easyTableModel } from './model';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormCol组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormCol span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormCol>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n modelKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const [state, actions] = easyTableModel(modelKey).useStore();\n\n const onReset = hooks.useCallbackRef(async () => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n initialValues={{\n ...initialValues,\n ...state.queryCondition,\n }}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Table, TableProps } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, useContext, useMemo } from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { SmallSelect } from '../pagination-wrapper/select';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { EasyTableContext } from './context';\nimport { easyTableModel } from './model';\nimport { TEasyTableTableColumn } from './type';\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, ...otherProps } = props;\n\n const {\n modelKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n const [state] = easyTableModel(modelKey).useStore();\n fbaHooks.useEffectCustom(() => {\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, [props.columns]);\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: state.queryCondition[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n selectComponentClass: SmallSelect,\n };\n }, [\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n state.queryCondition,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as any}\n columns={ctx.columns}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={ctx.columns}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={ctx.columns}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormCol组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormCol span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormCol>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n});\n"],"names":["EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperate","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","rowSelection","type","onChange","cacheKey","localStorageCache","set","keys","columns","title","dataIndex","render","value","recrd","_jsx","Fragment","children","Drawer","open","onClose","width","styles","body","padding","Table","bordered","size","rowKey","pagination","scroll","x","dataSource","dataList","FoldOperateDropdown","content","Checkbox","Group","defaultValue","style","display","flexDirection","map","item","label","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","defaultState","queryCondition","isInit","_EasyTableModel","actions","updateFilterCondition","params","state","_extends","resetFilterCondition","updateInitStatus","easyTableModels","easyTableModel","key","Model","EasyTable","forwardRef","ref","_props$initialPaginat","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","easyTableId","_hooks","useId","undefined","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","asyncColumnRequestResultRef","useRef","_useState5","asyncColumnRequestResult","setAsyncColumnRequestResult","_useState6","_cacheValue$keys","cacheValue","get","cacheKeyList","_isArray","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","modelKey","useMemo","cacheSwitch","location","pathname","_easyTableModel$useSt","useStore","pageSize","initialPaginationParams","initRequest","paginationStatusRef","respOriginalDataRef","baseColumnsRef","_useState7","dynamicColumns","setDynamicColumns","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","useCallbackRef","Promise","$return","$error","allState","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_2_Post","$If_3","call","this","bind","$Try_2_Catch","resolve","then","$await_4","$await_5","cloneState","serviceConfig","$await_6","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","_extends2","initialValues","useEffect","_loop","_extends3","element","index","_extends4","catch","_extends5","console","clearQueryCondition","values","$await_7","resetFields","setFieldsValue","updateQueryCondition","$await_8","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","$await_9","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","onChangeFoldColumnList","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","showSizeChanger","showTotal","columnsMerge","tableColumns","tempList","tooltip","tipsWrapperProps","hidden","isFold","otherProps","_objectWithoutPropertiesLoose","_excluded","includes","TipsWrapper","tipType","popoverProps","TableTitleTooltip","Boolean","concat","keyList","finalItem","foldColumnTarget","find","_jsxs","FlexLayout","direction","fullIndex","alignItems","IconWrapper","text","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","Object","result","ButtonWrapper","loadingPosition","removeGap","asyncRender","record","page","_onInnerRequest","_props$pagination","useUpdateEffect","_onInnerRequest2","_onInnerRequest3","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","PaginationWrapper","EasyTableFilter","screenType","useResponsivePoint","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","$await_2","validateFields","$await_3","$If_1","formRowChildren","defaultRightList","htmlType","customFormOperateCol","customRightList","rightList","leftList","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","keyItem","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","EasyTableTable","isSync","_onRequest","_onRequest2","tablePaginationData","selectComponentClass","SmallSelect","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","getUuid","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","fbaUtils","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":";+8EAyBO,IAAMA,EAAmBC,EAA8C,CAC5EC,UAAWC,EACXC,UAAW,GACXC,gBAAiB,SAAAA,IACf,ICbG,IAAMC,EAAc,SAAdA,EAAeC,GAC1B,IAAAC,EAA8CC,EAAmBF,EAAMG,qBAAuB,IAAvFC,EAAeH,EAAA,GAAEI,EAAkBJ,EAAA,GAC1C,IAAMK,EAAe,CACnBC,KAAM,WACNH,gBAAiBA,EACjBI,SAAU,SAAAA,EAACJ,GACTC,EAAmBD,GACnBJ,EAAMQ,SAASJ,GACf,GAAIJ,EAAMS,SAAU,CAClBC,EAAkBC,IAAG,YAAaX,EAAMS,SAAY,CAAEG,KAAMR,GAC9D,CACF,GAGF,IAAMS,EAAqC,CACzC,CACEC,MAAO,OACPC,UAAW,QACXC,OAAQ,SAAAA,EAACC,EAAOC,GACd,OAAOA,EAAM,iBAAmBD,CAClC,GAEF,CAAEH,MAAO,QAASC,UAAW,cAG/B,OACEI,EAACC,EAAQ,CAAAC,SACPF,EAACG,EAAM,CACLR,MAAM,OACNS,KAAMvB,EAAMuB,KACZC,QAASxB,EAAMwB,QACfC,MAAO,MACPC,OAAQ,CACNC,KAAM,CACJC,QAAS,KAEXP,SAEFF,EAACU,EAAK,CACJC,SAAQ,KACRC,KAAK,QACLlB,QAASA,EACTP,aAAcA,EACd0B,OAAO,YACPC,WAAY,MACZC,OAAQ,CAAEC,EAAG,eACbC,WAAYpC,EAAMqC,cAK5B,ECtDO,IAAMC,EAAsB,SAAtBA,EAAuBtC,GAClC,IAAAC,EAA8CC,EAAmBF,EAAMG,qBAAuB,IAAvFC,EAAeH,EAAA,GAAEI,EAAkBJ,EAAA,GAE1C,IAAMO,EAAW,SAAXA,EAAYI,GAChBP,EAAmBO,GACnBZ,EAAMQ,SAASI,GACf,GAAIZ,EAAMS,SAAU,CAClBC,EAAkBC,IAAG,YAAaX,EAAMS,SAAY,CAAEG,KAAMA,GAC9D,GAGF,IAAM2B,EACJpB,EAACC,EAAQ,CAAAC,SACPF,EAACqB,EAASC,MAAK,CACbC,aAActC,EACdI,SAAUA,EACVS,MAAOb,EACPuC,MAAO,CAAEC,QAAS,OAAQC,cAAe,UAAWxB,SAEnDrB,EAAMqC,SAASS,KAAI,SAACC,GACnB,IAAMC,EAAQD,EAAK,iBAAmBA,EAAKjC,MAC3C,OACEK,EAACqB,EAAQ,CAACvB,MAAO8B,EAAKhC,UAAgC4B,MAAO,CAAEf,QAAS,aAAcP,SACnF2B,GADmCD,EAAKhC,kBASrD,IAAMkC,EAAc,SAAdA,EAAeC,GACnB,GAAIA,EAAEC,OAAOC,QAAS,CACpB5C,EAASR,EAAMqC,SAASS,KAAI,SAACC,GAAI,OAAKA,EAAKhC,SAAS,IACtD,KAAO,CACLP,EAAS,GACX,GAGF,OACEW,EAACkC,EAAO,CACNd,QAASA,EACTzB,MACEK,EAACqB,EAAQ,CAACY,QAAShD,EAAgBkD,SAAWtD,EAAMqC,SAASiB,OAAQ9C,SAAUyC,EAAY5B,SAAC,aAI9FkC,UAAU,cACVC,iBAAiB,uBAAsBnC,SAEtCrB,EAAMqB,UAGb,ECnDA,IAAMoC,GAA2B,CAC/BC,eAAgB,CAAE,EAClBC,OAAQ,MAGV,IAAMC,GAA4D,CAChEC,QAAS,CACPC,sBAAuB,SAAAA,EAACC,GACtB,OAAO,SAACC,GACNA,EAAMN,eAAcO,EAAA,CAAA,EACfD,EAAMN,eACNK,GAGR,EACDG,qBAAsB,SAAAA,EAACH,GACrB,OAAO,SAACC,GACNA,EAAMN,eAAcO,EAAA,CAAA,EACfR,GAAaC,eACbK,GAGR,EACDI,iBAAkB,SAAAA,IAChB,OAAO,SAACH,GACNA,EAAML,OAAS,MAEnB,GAEFK,MAAOP,IAGT,IAAMW,GAAuF,CAAA,EAQtF,IAAMC,GAAiB,SAAjBA,EAAkBC,GAC7B,IAAKF,GAAgBE,GAAM,CACzBF,GAAgBE,GAAOC,EAAMX,GAC/B,CACA,OAAOQ,GAAgBE,EACzB,kEC7BO,IAAME,GAAYC,GAA4C,SAACzE,EAAO0E,GAAQ,IAAAC,EACnF,IAAA1E,EAAoCC,IAA7BkC,EAAUnC,EAAA,GAAE2E,EAAa3E,EAAA,GAChC,IAAA4E,EAA0B3E,EAAiB,GAApC4E,EAAKD,EAAA,GAAEE,EAAQF,EAAA,GACtB,IAAAG,EAA8B9E,EAAkB,OAAzC+E,EAAOD,EAAA,GAAEE,EAAUF,EAAA,GAC1B,IAAMG,EAAcC,EAAMC,MAAMC,UAAW,kBAC3C,IAAMC,EAAmBvF,EAAMuF,iBAC/B,IAAMC,EAAqBxF,EAAMwF,mBAEjC,IAAAC,EAA4CvF,EAAS,OAA9CwF,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GACxC,IAAMG,EAA8BC,EAKjC,CAAA,GACH,IAAAC,EAAgE5F,EAK7D,IALI6F,EAAwBD,EAAA,GAAEE,EAA2BF,EAAA,GAO5D,IAAAG,EAA8C/F,GAAmB,WAC/D,GAAIqF,GAAgB,MAAhBA,EAAkB9E,SAAU,CAAA,IAAAyF,EAC9B,IAAMC,EAAazF,EAAkB0F,IAAgBb,YAAAA,EAAiB9E,UACtE,IAAM4F,EAAeC,EAAQH,eAAAA,EAAYvF,MACpCuF,UAAUD,EAAVC,EAAYvF,OAAI,UAAA,EAAhBsF,EAAkBK,QAAO,SAACxD,GAAI,OAAKyD,EAASzD,EAAK,IAClD,GACJ,OAAOsD,EAAa/C,OAAS,EAAI+C,GAAed,GAAAA,UAAAA,EAAAA,EAAkBkB,mBAAoB,EACxF,KAAO,CACL,OAAOlB,GAAgB,UAAA,EAAhBA,EAAkBkB,mBAAoB,EAC/C,CACF,IAVOC,GAAeT,EAAA,GAAEU,GAAkBV,EAAA,GAY1C,IAAMW,GAAWC,GAAQ,WACvB,GAAI7G,EAAM8G,cAAgB,KAAM,CAC9B,OAAOC,SAASC,QAClB,CACA,UAAWhH,EAAM8G,cAAgB,SAAU,CACzC,OAAO9G,EAAM8G,WACf,CACA,OAAO3B,CACR,GAAE,CAACA,EAAanF,EAAM8G,cAEvB,IAAAG,GAAyB5C,GAAeuC,IAAUM,WAA3ClD,GAAKiD,GAAA,GAAEpD,GAAOoD,GAAA,GACrB,IAAME,GAAWnH,EAAMmH,YAAQxC,EAAI3E,EAAMoH,0BAANzC,UAAAA,EAAAA,EAA+BwC,WAAY,GAC9E,IAAME,GAAcrH,EAAMqH,cAAgB/B,UAAY,KAAOtF,EAAMqH,YACnE,IAAMC,GAAsBzB,EAAO,OACnC,IAAM0B,GAAsB1B,IAC5B,IAAM2B,GAAiB3B,EAA8C,IACrE,IAAA4B,GAA4CvH,IAArCwH,GAAcD,GAAA,GAAEE,GAAiBF,GAAA,GAExC,IAAMG,GAAU3D,EAAA,CACd4D,KAAM,OACN/C,MAAO,QACPgD,OAAQ,SACRX,SAAU,YACPnH,EAAM4H,YAGX,IAAAG,GAAeC,EAAKC,QAAQjI,EAAMkI,MAA3BA,GAAIH,GAAA,GAEX,IAAMI,GAAiB/C,EAAMgD,gBAAe,SAAOrE,GAAP,OAAA,IAAAsE,SAAA,SAAAC,EAAAC,GAAA,IAUlCC,EACA9E,EAA0D+E,EAAAC,EAAA/I,EAAAgJ,EAAAC,EAG1DC,EACAC,EAGFC,EAKIC,EAIFC,EAxHZ,IAAIC,aAAJ,IAAI,OAAAZ,GAAK,CAAC,MAAAa,GAAW,OAAOZ,EAAAY,EAAM,GAAlC,IAAIC,EAAA,SA4HSC,GA5Hb,IA6HMnE,EAAW,OACX,GAAIlF,EAAMsJ,qBAAsB,CAC9BtJ,EAAMsJ,qBAAqBD,EAC7B,KAAO,MACAE,EAAQF,MAAMA,EAAME,QAC3B,CAlIN,OAAOL,GAAE,CAAC,MAAAC,GAAW,OAAOZ,EAAAY,EAAM,GA8F9B,IACE,GAAInJ,EAAMwJ,eAAgB,CA/FhC,IAAIC,EAAJ,WAAA,IAAI,OAAJC,EAAGC,KAAIC,KAAE,CAAC,MAAAT,GAAW,OAAOC,EAAAD,EAAM,GAA/BU,KAAKD,MAAR,IAAIE,EAAA,SAkGaT,GAlGjB,IAmGU,OAAAf,GAnGD,CAAC,MAAAa,GAAW,OAAOC,EAAAD,EAAM,GAgG1B,IACE,OAAAd,QAAA0B,QAAM/J,EAAMwJ,eAAetB,KAA3B8B,eAAgCC,GAjG1C,IAAA,OAAOR,GAAE,CAAC,MAAAN,GAAW,OAAOW,EAAAX,EAAM,CAAC,GAAAW,EAkG1B,CAAC,MAAOT,GAAOS,EAAPT,EAET,CACF,CAAC,SAAAK,IACDxE,EAAW,MACM,OAAAmD,QAAA0B,QAAMlG,GAAQC,sBAAsBC,IAApCiG,eAA2CE,GAvGlE,IAuGY1B,EAAW0B,EACXxG,EAAiByG,EAAW3B,EAAS9E,gBAAkB,CAAE,GAC/D+E,EACEzI,EAAMoK,cADA1B,EAAoBD,EAApBC,qBAAsB/I,EAAS8I,EAAT9I,UAAWgJ,EAAoBF,EAApBE,qBAAsBC,EAAoBH,EAApBG,qBAEzDC,EAAYH,EAAuBA,EAAqBhF,GAAkBA,EAC9D,OAAA2E,QAAA0B,QAAMpK,EAAUkJ,IAAhBmB,MAA0B,SAAAK,GA5GlD,IA4GYvB,EAAYuB,GAA+B,GACjD9C,GAAoB+C,QAAUxB,EAC9B9I,EAAMuK,oBAANvK,UAAAA,EAAAA,EAAMuK,mBAAqBzB,GACvBC,EAA4BD,EAChC,GAAIH,EAAsB,CACxBI,EAAcJ,EAAqBG,EACrC,CACA,GAAIF,EAAsB,CAClBlB,EAAiBkB,EAAqBE,EAAUtB,GAAe8C,SAErE3C,GAAkBD,EACpB,CACMuB,EAAWuB,EAAIzB,EAAanB,GAAWC,MAC7CjD,EAAc0B,EAAQ2C,GAAYA,EAAW,IAC7ClE,EAASyF,EAAIzB,EAAanB,GAAW9C,QACrCI,EAAW,OA3HjB,OAAOgE,GAAE,CAAC,MAAAC,GAAW,OAAOC,EAAAD,EAAM,CAAC,GAAAC,EAA1B,CAAC,MAAAD,GAAW,OAAOC,EAAAD,EAAM,CAAC,GAAAC,EAuG+B,CAAA,OAvGlEM,EAAGC,KAAIC,KA4HF,CAAC,MAAOP,GAAOD,EAAPC,EAOT,CAAC,OAGHoB,EAASC,iBAAgB,WACvB,IAAMC,EAAgBC,KACtB,GAAIvD,KAAgB,QAAUrD,GAAML,OAAQ,CAC1C,GAAIgH,EAAe,CAAA,IAAAE,OACZ1C,GAAclE,GAAA4G,EAAAA,CAAAA,EAAAA,EAChBjD,GAAWE,QAAS,EAAC+C,EACrBjD,GAAWT,UAAWA,GAAQ0D,GAC5B7K,EAAM8K,cACN9G,GAAMN,gBAEb,KAAO,MACAyE,GAAenI,EAAM8K,cAC5B,CACF,KAAO,MACAjH,GAAQC,sBAAsB9D,EAAM8K,cAC3C,MACKjH,GAAQM,kBACd,GAAE,IAEH4G,GAAU,WACR,GAAIvF,GAAkB,MAAlBA,EAAoBlC,OAAQ,CAAA,IAAA0H,EAAAA,SAAAA,IACkC,IAAAC,EAC9D,IAAMC,EAAU1F,EAAmB2F,GACnCvF,EAA4B0E,QAAOrG,EAAA,CAAA,EAC9B2B,EAA4B0E,SAAOW,KAAAA,EACrCC,EAAQnK,WAAY,CAAEkE,QAAS,MAAMgG,IAExCjF,EAA4BJ,EAA4B0E,SACxDY,EACGvL,YACAqK,MAAK,SAAClB,GAAa,IAAAsC,EAClBxF,EAA4B0E,QAAOrG,EAAA,CAAA,EAC9B2B,EAA4B0E,SAAOc,KAAAA,EACrCF,EAAQnK,WAAY,CAAEkE,QAAS,MAAO6D,SAAAA,GAAUsC,IAEnDpF,EAA4BJ,EAA4B0E,QAC1D,IACCe,OAAM,SAAChC,GAAU,IAAAiC,EAChBC,QAAQlC,MAAMA,eAAAA,EAAOE,SACrB3D,EAA4B0E,QAAOrG,EAAA,CAAA,EAC9B2B,EAA4B0E,SAAOgB,KAAAA,EACrCJ,EAAQnK,WAAY,CAAEkE,QAAS,OAAOqG,IAEzCtF,EAA4BJ,EAA4B0E,QAC1D,KAvBJ,IAAK,IAAIa,EAAQ,EAAGA,EAAQ3F,EAAmBlC,OAAQ6H,IAAO,CAAAH,GAAA,CAyBhE,CACD,GAAE,IAEH,IAAMQ,GAAsBpG,EAAMgD,gBAAe,SAAOqD,GAAP,OAAA,IAAApD,SAAA,SAAAC,EAAAC,GAC/C,OAAAF,QAAA0B,QAAMlG,GAAQK,wBAAd8F,MAAoC,SAAA0B,GAxLxC,IAyLIxD,GAAKyD,cACL,GAAIF,EAAQ,MACL5H,GAAQC,sBAAsB2H,GACnCvD,GAAK0D,eAAeH,EACtB,CAAC,OAAAnD,GA7LI,CAAC,MAAAa,GAAW,OAAOZ,EAAAY,EAAM,CAAC,GAAAZ,EAwLK,OAQtC,IAAMsD,GAAuBzG,EAAMgD,gBAAe,SAAOqD,GAAP,OAAA,IAAApD,SAAA,SAAAC,EAAAC,GAChD,OAAAF,QAAA0B,QAAMlG,GAAQC,sBAAsB2H,IAApCzB,eAA2C8B,GAjM/C,IAkMI5D,GAAK0D,eAAeH,GAAQ,OAAAnD,GAlMvB,CAAC,MAAAa,GAAW,OAAOZ,EAAAY,EAAM,CAAC,GAAAZ,EAiMY,OAI7C,IAAMwD,GAAoB,SAApBA,EAAqBjE,EAAgBkE,GACzC,GAAIpB,KAAuB,CAAA,IAAAqB,EACzB,OAAAA,KAAAA,EACGrE,GAAWE,QAASA,EAAMmE,EAC1BrE,GAAWT,UAAW6E,GAAa7E,GAAQ8E,CAEhD,KAAO,CAAA,IAAAC,EACL,OAAAA,EAAAA,CAAAA,EAAAA,EACGtE,GAAWE,QAASxC,UAAS4G,EAC7BtE,GAAWT,UAAW7B,UAAS4G,CAEpC,GAGF,IAAMC,GAAiB/G,EAAMgD,gBAAe,SAAOqD,GAAP,OAAA,IAAApD,SAAA,SAAAC,EAAAC,GAAA,IACpCxE,EAAAA,EAAME,EACP8H,CAAAA,EAAAA,GAAkB,EAAG/H,GAAMN,eAAekE,GAAWT,WACrDnH,EAAM8K,cACNW,GAEL,OAAApD,QAAA0B,QAAMlG,GAAQK,qBAAqBH,IAAnCiG,eAA0CoC,GAzN9C,IA0NIlE,GAAKyD,cACL,GAAIF,EAAQ,CACVvD,GAAK0D,eAAeH,EACtB,MACKtD,GAAepE,GAAQ,OAAAuE,GA9NvB,CAAC,MAAAa,GAAW,OAAOZ,EAAAY,EAAM,CAAC,GAAAZ,EAyNW,OAQ5C,IAAM8D,GAAmBjH,EAAMgD,gBAAe,WAC5C,OAAAnE,EACKD,CAAAA,EAAAA,GAAMN,eACNwE,GAAKoE,iBAEZ,IAEA,IAAMC,GAAwBnH,EAAMgD,gBAAe,WACjDzC,EAAkB,KACpB,IACA,IAAM6G,GAAyBpH,EAAMgD,gBAAe,WAClDzC,EAAkB,MACpB,IAEA,IAAM7F,GAAkB,SAAlBA,IACJ,MAAO,CAMLH,UAAWwI,GACXqD,oBAAAA,GACAK,qBAAAA,GACAQ,iBAAAA,GACAF,eAAAA,GACAjE,KAAAA,GACAuE,cAAe,SAAAA,IACb,OAAOlF,GAAoB+C,OAC5B,EACDoC,mBAAoB,SAAAA,EAACC,GACnB/H,EAAc+H,EACf,EACDC,kBAAmB,SAAAA,IACjB7H,EAAS,GACTH,EAAc,GACf,EACDiI,mBAAoB,SAAAA,EAACxK,GACnBuC,EAAcvC,GACdkF,GAAoB+C,QAAUjI,EAC9BrC,EAAMuK,oBAANvK,UAAAA,EAAAA,EAAMuK,mBAAqBlI,EAC5B,EACDyK,wBAAyB,SAAAA,EAACzL,GAAa,IAAA0L,EACrC,KAAIA,EAAA/M,EAAMuF,mBAANwH,UAAAA,EAAAA,EAAwBC,eAAgB,SAAU,CACpD,OAAOC,EAAa5L,EAAU,CAC5B6L,QAASX,IAEb,CACA,OACEpL,EAACmB,EAAmB,CAClBD,SAAU8K,GACV3M,SAAU4M,GACV3M,SAAU8E,GAAAA,UAAAA,EAAAA,EAAkB9E,SAC5BN,oBAAqBuG,GAAgBrF,SAEpCA,GAGN,EACD4D,QAAAA,IAIJoI,EAAoB3I,GAAK,WACvB,OAAO5E,IACT,IAEA,IAAMwN,GAAwB,SAAxBA,EAAyBC,GAC7BjG,GAAoBgD,QAAUiD,GAGhC,IAAMC,GAAmB,SAAnBA,EAAoBC,GACxBjG,GAAe8C,QAAUmD,GAG3B,IAAMC,GAAe,SAAfA,IACJ,IAAMjC,EAASvD,GAAKoE,iBACpB,GAAItM,EAAM0N,aAAc,CACtB1N,EAAM0N,aAAYzJ,KACbwH,EACAM,GAAkB,EAAG/H,GAAMN,eAAekE,GAAWT,YAE5D,KAAO,MACAgB,GAAclE,EAAA,GACdwH,EACAM,GAAkB,EAAG/H,GAAMN,eAAekE,GAAWT,YAE5D,GAEF,IAAMwG,GAASC,EAAY5N,EAAM2N,QAAU,KAAO3N,EAAM2N,OACxD,IAAME,GAAYC,EAChB,iBACA,CACE,sBAAuBH,GACvB,8BAA+B3N,EAAM+N,YACrC,kCAAmC/N,EAAMgO,iBAE3ChO,EAAM6N,WAGR,IAAMI,GAAiBpH,GAAQ,WAC7B,OAAA5C,EAAA,CACEiK,gBAAiB,KACjB5D,QAAStG,GAAMN,eAAekE,GAAWE,SAAW,EACpDX,SAAUnD,GAAMN,eAAekE,GAAWT,WAAaA,GACvDrC,MAAOA,EACPqJ,UAAW,SAAAA,EAACrJ,GAAK,MAAA,KAAUA,EAAK,MAAA,GAC7B9E,EAAMiC,WAEZ,GAAE,CAAC2F,GAAWE,OAAQF,GAAWT,SAAUA,GAAUnH,EAAMiC,WAAY+B,GAAMN,eAAgBoB,IAE9F,IAAMsJ,GAAgB1G,GAAiBA,GAAiBF,GAAe8C,QAEvE,IAAI+D,GAAexH,GAAQ,WACzB,IAAMyH,EAAWF,GACdtL,KAAI,SAACC,GACJ,IAAQwL,EAAoExL,EAApEwL,QAASC,EAA2DzL,EAA3DyL,iBAAkB1N,EAAyCiC,EAAzCjC,MAAO2N,EAAkC1L,EAAlC0L,OAAQC,EAA0B3L,EAA1B2L,OAAWC,EAAUC,EAAK7L,EAAI8L,IAChF,GAAIJ,EAAQ,OAAO,KACnB,GAAIC,IAAWhI,GAAgBoI,SAAS/L,EAAKhC,WAAsB,OAAO,KAC1E,UAAWD,IAAU,UAAY0N,EAAkB,CACjD,UAAWA,IAAqB,SAAU,CACxC,OAAAvK,KACK0K,EAAU,CACb7N,MACEK,EAAC4N,EAAW,CAACC,QAAQ,UAAUC,aAAc,CAAE1M,QAASiM,GAAmBnN,SACxEP,KAIT,CACA,OAAAmD,KACK0K,EAAU,CACb7N,MAAOK,EAAC4N,EAAW9K,KAAKuK,EAAgB,CAAAnN,SAAGP,MAE/C,CACA,UAAWA,IAAU,YAAcyN,EAAS,CAC1C,OAAAtK,KACK0K,EAAU,CACb7N,MAAOK,EAAC+N,EAAiB,CAACX,QAASA,EAASzN,MAAOA,KAEvD,CACA,OAAOiC,CACT,IACCwD,OAAO4I,SACV,MAAAC,GAAAA,OAAWd,EACb,GAAG,CAACF,GAAc1H,KAElB,IAAMyG,GAAiBiB,GAAa7H,QAAO,SAACxD,GAC1C,OAAQA,EAAK0L,QAAU1L,EAAK2L,QAAU3L,EAAKhC,SAC7C,IAEA,IAAMqM,GAAyB,SAAzBA,EAA0BiC,GAC9B1I,GAAmB0I,GACnB9J,GAAgB,MAAhBA,EAAkB/E,UAAQ,UAAA,EAA1B+E,EAAkB/E,SAAW6O,IAG/BhB,GAAexH,GAAQ,WACrB,GAAItB,GAAAA,MAAAA,EAAkBkJ,OAAQ,OAAOJ,GACrC,IAAMiB,EAAYjB,GAAaA,GAAa/K,OAAS,GACrD,GAAI6J,GAAe7J,OAAS,GAAK+K,GAAa/K,OAAS,EAAG,CACxD,IAAMiM,EAAmBlB,GAAamB,MAAK,SAACzM,GAAI,OAAKA,EAAK,oBAE1D,GAAIwM,GAAoBD,EAAUvO,YAAcwO,EAAiBxO,UAAW,CAC1EwO,EAAiBzO,MAAQyO,EAAiB,gBAC1CA,EAAiB,iBAAmB,KACtC,CACA,IAAKD,EAAU,iBAAkB,CAC/BA,EAAU,gBAAkBA,EAAU,iBAAmBA,EAAUxO,MACnEwO,EAAU,iBAAmB,KAE7B,IAAMtC,EAAczH,GAAAA,UAAAA,EAAAA,EAAkByH,YAEtCsC,EAAUxO,MACR2O,EAACC,EAAU,CAACC,UAAU,aAAaC,UAAW,EAAGjN,MAAO,CAAEkN,WAAY,UAAWxO,UAC/EF,EAAA,OAAA,CAAAE,SAAOiO,EAAUxO,QACjBK,EAAA,MAAA,CAAKwB,MAAO,CAAEf,QAAS,eAAgBgB,QAAS,QAASvB,SACtD2L,IAAgB,SACf7L,EAAC2O,EAAW,CACV5C,QAASX,GACTwD,KAAMxK,GAAAA,UAAAA,EAAAA,EAAkBwK,KACxBhO,KAAK,QACLiO,MAAMzK,GAAAA,UAAAA,EAAAA,EAAkByK,OAAQ7O,EAAC8O,EAAW,CAACC,QAAQ,oBAAoBC,MAAM,YAC/EC,WAAW7K,GAAgB,UAAA,EAAhBA,EAAkB8K,eAAgB,OAC7C1N,MAAO,CAAEf,QAAS,EAAG0O,OAAQ,KAG/BnP,EAACmB,EAAmB,CAClBD,SAAU8K,GACV3M,SAAU4M,GACV3M,SAAU8E,GAAAA,UAAAA,EAAAA,EAAkB9E,SAC5BN,oBAAqBuG,GAAgBrF,SAErCF,EAAC2O,EAAW,CACVC,KAAMxK,GAAAA,UAAAA,EAAAA,EAAkBwK,KACxBpN,MAAO,CAAEf,QAAS,EAAG0O,OAAQ,GAC7BvO,KAAK,QACLiO,MACEzK,GAAAA,UAAAA,EAAAA,EAAkByK,OAAQ7O,EAAC8O,EAAW,CAACC,QAAQ,oBAAoBC,MAAM,oBAQzF,CACF,CACA,OAAO9B,EACR,GAAE,CAACA,GAAclB,GAAgB5H,IAElC8I,GAAexH,GAAQ,WACrB,IAAK0J,OAAO3P,KAAKmF,GAA2B,OAAOsI,GACnD,OAAOA,GAAavL,KAAI,SAACC,GACvB,IAAMhC,EAAYgC,EAAKhC,UACvB,IAAMyP,EAASzK,EAAyBhF,GACxC,GAAIA,GAAayP,EAAQ,CACvB,GAAIA,EAAOvL,QAAS,CAClBlC,EAAK/B,OAAS,SAACC,GACb,OACEE,EAACsP,EAAa,CAACxL,QAAO,KAAC1E,KAAK,OAAOmQ,gBAAgB,SAASC,UAAS,KAAAtP,SAClEJ,IAIT,MAAO,GAAI8B,EAAK6N,YAAa,CAC3B7N,EAAK/B,OAAS,SAACC,EAAO4P,EAAQ1F,GAC5B,OAAOpI,EAAK6N,aAAL7N,UAAAA,EAAAA,EAAK6N,YAAc3P,EAAO4P,EAAQ1F,EAAOqF,EAAO1H,UAE3D,CACF,CACA,OAAO/F,CACT,GACF,GAAG,CAACsL,GAActI,IAElB,IAAMvF,GAAW4E,EAAMgD,gBAAe,SAAC0I,EAAc3J,GAAqB,IAAA4J,EAAAC,OACnE7I,IAAc4I,EAAA,CAAA,EAAAA,EAChBnJ,GAAWT,UAAWA,EAAQ4J,EAC9BnJ,GAAWE,QAASgJ,EAAIC,KAE3BC,EAAAhR,EAAMiC,mBAAN+O,EAAkBxQ,UAAQ,UAAA,EAA1BwQ,EAAkBxQ,SAAWsQ,EAAM3J,EACrC,IAEA,IAAMyD,GAAsB,SAAtBA,IACJ,OAAO5K,EAAMgO,iBAAmB1G,GAAoBgD,SAItDlF,EAAM6L,iBAAgB,WACpB,GAAIjR,EAAMgO,gBAAiB,CAAA,IAAAkD,OACpB/I,IAAc+I,EAAA,GAAAA,EAChBtJ,GAAWT,UAAWnD,GAAMN,eAAekE,GAAWT,WAAaA,GAAQ+J,EAC3EtJ,GAAWE,QAAS,EAACoJ,GAE1B,KAAO,CAAA,IAAAC,OACAhJ,IAAcgJ,EAAA,CAAA,EAAAA,EAChBvJ,GAAWT,UAAW7B,UAAS6L,EAC/BvJ,GAAWE,QAASxC,UAAS6L,GAElC,CACF,GAAG,CAACnR,EAAMgO,kBAEV,IAAMoD,GAAmBtD,EACvB,yBACA,CACE,gCAAiC9N,EAAMqR,UAEzCrR,EAAM6N,WAGR,IAAMyD,GAA2BrN,EAAA,CAC/BsN,UAAWvR,EAAM+N,aAAe/N,EAAMgO,gBAAkB,SAAW,QAChEhO,EAAM2C,OAGX,IAAMtB,UACGrB,EAAMqB,WAAa,WAAarB,EAAMqB,SAASkG,GAAoB+C,SAAWtK,EAAMqB,SAE7F,OACEoO,EAAChQ,EAAiB+R,SAAQ,CACxBvQ,MAAO,CACLuM,iBAAAA,GACA1N,gBAAAA,GACA8G,SAAAA,GACAjH,UAAWwI,GACXsJ,gBAAiBrP,EACjBsP,WAAY5M,EACZG,QAAAA,EACA2C,WAAAA,GACAT,SAAAA,GACAmG,sBAAAA,GACA1C,oBAAAA,GACA8C,aAAAA,GACAxF,KAAAA,GACA8F,gBAAiBhO,EAAMgO,iBAAmB,MAC1C2D,SAAU3R,EAAM2R,UAAY,GAC5B9Q,QAASwN,GACTvD,cAAe9K,EAAM8K,eACrBzJ,SAEDrB,CAAAA,EAAMgO,gBACLyB,EAAA,MAAA,CAAK5B,UAAWuD,GAAkBzO,MAAO2O,GAAajQ,UACpDF,EAAA,MAAA,CAAK0M,UAAWA,GAAUxM,SAAEA,KAC3ByD,EAAQ,GACP3D,EAAA,MAAA,CAAK0M,UAAU,4BAA2BxM,SACxCF,EAACyQ,EAAiB3N,EAAA,CAAClC,KAAK,SAAYkM,GAAc,CAAEzN,SAAUA,WAKpEW,EAAA,MAAA,CAAK0M,UAAWuD,GAAkBzO,MAAO3C,EAAM2C,MAAMtB,SAClDA,KAGLF,EAACpB,EAAW,CACVsC,SAAU8K,GACV3L,QAASgL,GACTjL,KAAMmE,EACNlF,SAAU4M,GACV3M,SAAU8E,GAAAA,UAAAA,EAAAA,EAAkB9E,SAC5BN,oBAAqBuG,OAI7B,ICtcO,IAAMmL,GAAkB,SAAlBA,EAAmB7R,GAC9B,IAAM8R,EAAarH,EAASsH,sBAAwB,KACpD,IAAMC,EAAMC,EAAWxS,GACvB,IACEyS,EASElS,EATFkS,iBACAC,EAQEnS,EARFmS,iBACAC,EAOEpS,EAPFoS,cAAaC,EAOXrS,EANFsS,cAAAA,EAAaD,SAAG,EAAA,GAAEA,EAClBE,EAKEvS,EALFuS,iCACAC,EAIExS,EAJFwS,mBACAC,EAGEzS,EAHFyS,uBACAC,EAEE1S,EAFF0S,2BACAC,EACE3S,EADF2S,cAEF,IACE/L,EASEoL,EATFpL,SACA+K,EAQEK,EARFL,SACA/J,EAOEoK,EAPFpK,WACAjI,EAMEqS,EANFrS,UACAwH,EAKE6K,EALF7K,SACAyD,EAIEoH,EAJFpH,oBACAE,EAGEkH,EAHFlH,cACA5C,EAEE8J,EAFF9J,KACAwF,EACEsE,EADFtE,aAEF,IAAMrM,SAAkBrB,EAAMqB,WAAa,WAAarB,EAAMqB,SAAS6G,GAAQlI,EAAMqB,SAErF,IAAMuR,EAA+BF,GAA8B,QACnE,IAAMG,EAAYhM,GAAQ,WACxB,GAAIiM,EAAWzR,GAAW,CACxB,OAAO0R,EAASC,QAAS3R,EAA0BrB,MAAMqB,SAC3D,KAAO,CACL,OAAO0R,EAASC,QAAQ3R,EAC1B,CACF,GAAG,CAACA,IAEJ,IAAApB,EAAgCC,EAAS,OAAlC+S,EAAQhT,EAAA,GAAEiT,EAAWjT,EAAA,GAE5B,IAAAgH,EAAyB5C,GAAeuC,GAAUM,WAA3ClD,EAAKiD,EAAA,GAAEpD,EAAOoD,EAAA,GAErB,IAAMkM,EAAU/N,EAAMgD,gBAAe,WAAA,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IAAAsC,EACnC,OAAAxC,QAAA0B,QAAMlG,EAAQK,wBAAd8F,KAvIJ,SAAAoJ,GAAA,IAwIIlL,EAAKyD,cACL,GAAIiC,EAAY2E,IAAqCA,EAAkC,CACrF,OAAAlK,QAAA0B,QAAM7B,EAAKmL,kBAAXrJ,KA1IN,SAAAsJ,GAAA,IA2IM,GAAI1I,IAAuB,CACzBjL,EAASsE,GAAA4G,EAAA,CAAA,EAAAA,EACNjD,EAAWE,QAAS,EAAC+C,EACrBjD,EAAWT,UAAWA,EAAQ0D,GAC5BC,GAEP,KAAO,CACLnL,EAAUmL,EACZ,CAAC,OAnJPyI,EAAG5J,KAAIC,KAAE,CAAC,MAAAT,GAAW,OAAOZ,EAAAY,EAAM,CAAC,EAAhCU,KAAKD,MAAKrB,EAoJT,CAAC,SAAAgL,IAAA,OAAAjL,GAAA,CAAA,OApJLiL,EAAG5J,KAAIC,KAAE,CAAC,MAAAT,GAAW,OAAOZ,EAAAY,EAAM,CAAC,EAAhCU,KAAKD,MAAKrB,EAuI2B,OAgBtC,IAAMiL,EAAkB3M,GAAQ,WAC9B,IAAM4M,EAAmB,GACtBvB,GAAAA,MAAAA,EAAkBzD,QACjBtN,EAACsP,EAAaxM,EAAA,CAAS1D,KAAK,UAAUmT,SAAS,UAAaxB,EAAgB,CAAA7Q,UACzE6Q,eAAAA,EAAkBnC,OAAQ,OADV,KAGjB,OACHoC,GAAgB,MAAhBA,EAAkB1D,QACjBtN,EAACsP,EAAaxM,EAAA,CAASiJ,QAASiG,GAAahB,EAAgB,CAAA9Q,UAC1D8Q,eAAAA,EAAkBpC,OAAQ,OADV,KAGjB,MACJxJ,OAAO4I,SACT,IAAMwE,EAAuBvB,eAAAA,EAAgBlK,GAC7C,IAAM0L,EAAkBD,GAAAA,UAAAA,EAAAA,EAAsBE,UAC9C,IAAMC,GAAmBH,eAAAA,EAAsBG,WAAY,GAE3D,IAAID,EAAoBJ,EACxB,GAAIG,EAAiB,CACnB,GAAIhB,IAAiC,cAAe,CAClDiB,KAASzE,OAAOqE,EAAqBG,EACvC,MAAO,GAAIhB,IAAiC,eAAgB,CAC1DiB,KAASzE,OAAOwE,EAAoBH,EACtC,KAAO,CACLI,EAAYD,CACd,CACF,CACA,GAAIjC,EAASrO,OAAS,EAAG,CACvB,IAAMyQ,EACJ5S,EAACsP,EAAa,CACZlQ,KAAK,OAELoC,MAAO,CAAEf,QAAS,KAClBsL,QAAS,SAAAA,IACPgG,GAAaD,EACb,EAAA5R,SAED4R,EACCxD,EAAA,OAAA,CAAApO,SAAM,CAAA,KAEJF,EAAA6S,EAAA,CAAYrR,MAAO,CAAEsR,WAAY,EAAGC,SAAU,SAGhDzE,EAAA,OAAA,CAAApO,SAAM,CAAA,KAEJF,EAAAgT,EAAA,CAAcxR,MAAO,CAAEsR,WAAY,EAAGC,SAAU,UAdhD,gBAoBR,GAAIL,EAAUvQ,OAAS,GAAKwQ,EAASxQ,SAAW,EAAG,CACjDuQ,EAAUO,KAAKL,QACV,IAAID,GAAQ,UAAA,EAARA,EAAUxQ,QAAS,EAAG,CAC/BwQ,EAASM,KAAKL,EAChB,CACF,CAEA,OAAOlB,EACJ/P,KAAI,SAACC,EAAMoI,GACV,IAAK8H,GAAYtB,EAASnC,MAAK,SAAC6E,GAAO,MAAK,KAAKA,IAActR,EAAKuB,OAAM,OAAO,KACjF,GAAIvB,EAAK/C,MAAM,UAAW,OAAO,KACjC,GAAI+C,EAAKxC,KAAK,iBAAmB,UAAW,OAAOwC,EACnD,OAAO5B,EAACmT,EAASC,IAAG,CAAAlT,SAAc0B,GAARoI,EAC3B,IACA5E,OAAO4I,SACPC,OACCjO,EAACmT,EAASE,WAAUvQ,KAAe0P,EAAoB,CAAEG,SAAUA,EAAUD,UAAWA,IAA9D,KAE/B,GAAE,CACDhB,EACAT,EACAT,EACAzJ,EACAiL,EACAF,EACAf,EACAC,EACAS,IAGF,IAAM6B,EAAa3C,IAAe,KAAO,QAASa,GAAAA,UAAAA,EAAAA,EAAe8B,aAAc,QAE/E,OACEtT,EAACuT,EAAW,CACV7G,UAAWC,EAAW,oBAAqB2E,GAC3C9P,MAAO6P,EAAmBnR,SAE1BF,EAACwT,EAAQ1Q,EAAA,CACPiE,KAAMA,EACN0M,aAAa,MACbC,SAAUnH,EACV5C,cAAa7G,EACR6G,CAAAA,EAAAA,EACA9G,EAAMN,gBAEXmK,UAAWyE,EACX3P,MAAO3C,EAAM8U,UACbC,OAAQ,KACRC,WAAW,KACXC,YAAY,MACRtC,EAAa,CACjB8B,WAAYA,EAAWpT,SAEtBrB,EAAM+U,OACL1T,EAEAF,EAACmT,EAASY,IAAG,CAACC,OAAQ,CAAC,GAAI,GAAIC,SAAUpV,EAAMqV,aAAahU,SACzDmS,QAMb,EClQO,IAAM8B,GAAe,SAAfA,IACX,IAAMtD,EAAMC,EAAWxS,GACvB,OAAOuS,EAAIlS,iBACb,EAMO,IAAMyV,GAAiB,SAAjBA,IACX,IAAMvD,EAAMC,EAAWxS,GACvB,MAAO,CACL6K,QAAS0H,EAAIlS,kBAEjB,qDCmCO,IAAM0V,GAAiB,SAAjBA,EAA0CxV,GACrD,IAAMgS,EAAMC,EAAWxS,GACvB,IAAQ4B,EAAwDrB,EAAxDqB,SAAUW,EAA8ChC,EAA9CgC,OAAQC,EAAsCjC,EAAtCiC,WAAYwT,EAA0BzV,EAA1ByV,OAAW9G,EAAUC,EAAK5O,EAAK6O,IAErE,IACEjI,EASEoL,EATFpL,SACAgB,EAQEoK,EARFpK,WACAjI,EAOEqS,EAPFrS,UACA8R,EAMEO,EANFP,gBACAtK,EAKE6K,EALF7K,SACAuK,EAIEM,EAJFN,WACAzM,EAGE+M,EAHF/M,QACA+I,EAEEgE,EAFFhE,gBACAV,EACE0E,EADF1E,sBAEF,IAAArG,EAAgB5C,GAAeuC,GAAUM,WAAlClD,EAAKiD,EAAA,GACZwD,EAASC,iBAAgB,WACvBsH,EAAIxE,iBAAkBxN,EAAMa,SAAW,GACzC,GAAG,CAACb,EAAMa,UAEV4J,EAASC,iBAAgB,WACvB4C,EAAsBrL,IAAe,MACvC,GAAG,CAACA,IAGJmD,EAAM6L,iBAAgB,WACpB,IAAKjD,EAAiB,CACpB,GAAI/L,IAAe,MAAO,CAAA,IAAAyT,EACxB/V,GAAS+V,EAAAA,GAAAA,EACN9N,EAAWT,UAAWnD,EAAMN,eAAekE,EAAWT,WAAaA,EAAQuO,EAC3E9N,EAAWE,QAAS,EAAC4N,GAE1B,KAAO,CAAA,IAAAC,EACLhW,GAASgW,EAAAA,CAAAA,EAAAA,EACN/N,EAAWT,UAAW7B,UAASqQ,EAC/B/N,EAAWE,QAASxC,UAASqQ,GAElC,CACF,CACF,GAAG,CAAC1T,IAEJ,IAAM2T,EAAsB/O,GAAQ,WAClC,GAAImH,GAAmB/L,IAAe,MAAO,OAAO,MACpD,OAAAgC,EAAA,CACEiK,gBAAiB,KACjB5D,QAAStG,EAAMN,eAAekE,EAAWE,SAAW,EACpDX,SAAUnD,EAAMN,eAAekE,EAAWT,WAAaA,EACvDrC,MAAO4M,EACPvD,UAAW,SAAAA,EAACrJ,GAAK,MAAA,KAAUA,EAAK,MAAA,GAC7B9E,EAAMiC,WAAU,CACnB4T,qBAAsBC,GAEzB,GAAE,CACDlO,EAAWE,OACXF,EAAWT,SACXA,EACAlF,EACA+L,EACAhO,EAAMiC,WACN+B,EAAMN,eACNgO,IAGF,IAAMqE,EAA6C,SAA7CA,EAA8C9T,EAAY+T,EAASC,EAAQC,GAC/E,GAAIA,EAAMC,SAAW,YAAcP,EAAqB,CAAA,IAAAQ,EACtDzW,GAASyW,EAAA,CAAA,EAAAA,EACNxO,EAAWT,UAAWlF,EAAWkF,SAAQiP,EACzCxO,EAAWE,QAAS7F,EAAWqI,QAAO8L,GAE3C,KAAO,CACLpW,EAAMQ,UAANR,UAAAA,EAAAA,EAAMQ,SAAWyB,EAAY+T,EAASC,EAAQC,EAChD,GAGF,IAAM9T,EAAayE,GAAQ,WACzB,IAAK4K,EAAiB,OAAOnM,UAC7B,GAAImM,EAAgBnO,SAAW,EAAG,CAChC,MAAO,EACT,CACA,UAAWtB,IAAW,UAAYqU,EAAkB5E,EAAgB,GAAGzP,IAAU,CAC/E,OAAOyP,EAAgB3O,KAAI,SAACC,GAC1BA,EAAKf,GAAUsU,IACf,OAAOvT,CACT,GACF,CACA,OAAO0O,CACT,GAAG,CAACA,EAAiBzP,IAErB,IAAMuU,EAAc,SAAdA,IACJ,GAAId,IAAWrT,EAAY,CACzB,OACEqN,EAACrO,EAAQ,CAAAC,SACNA,CAAAA,EACDF,EAACU,EAAK,CAEJE,KAAK,QACLG,OAAQ,CAAEC,EAAG,eACbL,SAAQ,KACRE,OAAQA,EACRnB,QAASmR,EAAInR,QACboE,QAASA,GANL,OAUZ,CACA,GAAIuR,IAAY,CACd,OACE/G,EAACrO,EAAQ,CAAAC,UACNA,EACDF,EAACU,EAAKoC,EAAA,CAEJlC,KAAK,QACLG,OAAQ,CAAEC,EAAG,eACbL,SAAQ,MACJ6M,EAAU,CACd9N,QAASmR,EAAInR,QACboB,WAAY2T,EACZ5T,OAAQA,EACRxB,SAAUuV,EACV9Q,QAASA,EACT7C,WAAYA,IAVR,OAcZ,CACA,OACEqN,EAACrO,EAAQ,CAAAC,SACNA,CAAAA,EACDF,EAACsV,EAAc,CAAApV,SACbF,EAACU,EAAKoC,EAAA,CAEJlC,KAAK,QACLG,OAAQ,CAAEC,EAAG,eACbL,SAAQ,MACJ6M,EAAU,CACd9N,QAASmR,EAAInR,QACboB,WAAY2T,EACZ5T,OAAQA,EACRxB,SAAUuV,EACV9Q,QAASA,EACT7C,WAAYA,IAVR,WAiBd,OACEjB,EAACuT,EAAW,CACV7G,UAAWC,EACT,mBACA,CAAE,uBAAwB9N,EAAM0W,gBAAkB,SAClD1W,EAAM2W,uBAERhU,MAAO3C,EAAM4W,kBAAkBvV,SAE9BkV,KAGP,EC9LO,IAAM/R,GAAYqS,EAASC,4BAA4BC,GAAgB,CA+B5EC,OAAQnF,GASRhQ,MAAO2T,GAIPD,eAAgBA,GAGhBD,aAAcA"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/easy-table/context.ts","@flatbiz/antd/src/easy-table/fold-operate.tsx","@flatbiz/antd/src/easy-table/fold-operate-dropdown.tsx","@flatbiz/antd/src/easy-table/model.ts","@flatbiz/antd/src/easy-table/easy-table.tsx","@flatbiz/antd/src/easy-table/filter.tsx","@flatbiz/antd/src/easy-table/hooks.ts","@flatbiz/antd/src/easy-table/table.tsx","@flatbiz/antd/src/easy-table/index.ts"],"sourcesContent":["import { noop, TPlainObject } from '@flatbiz/utils';\nimport { FormInstance } from 'antd';\nimport { createContext } from 'react';\nimport { EasyTableRefApi, TEasyTableTableColumn } from './type';\n\nexport type EditableFieldContextContextApi = {\n modelKey: string;\n onRequest: (params?: TPlainObject) => void;\n tableDataSource?: TPlainObject[];\n tableTotal: number;\n loading?: boolean;\n fieldNames: TPlainObject;\n pageSize: number;\n initialValues?: TPlainObject;\n onSetPaginationStatus: (status: boolean) => void;\n getPaginationStatus: () => boolean;\n onFormFinish?: (values?: TPlainObject) => void;\n form: FormInstance;\n getEasyTableRef: () => EasyTableRefApi;\n paginationFixed: boolean;\n foldKeys: string[];\n onSetBaseColumns: (baseColumns?: TEasyTableTableColumn<TPlainObject>[]) => void;\n columns: TEasyTableTableColumn<TPlainObject>[];\n};\n\nexport const EasyTableContext = createContext<EditableFieldContextContextApi>({\n onRequest: noop,\n tableList: [],\n getEasyTableRef: () => {\n //\n },\n} as unknown as EditableFieldContextContextApi);\n","import { localStorageCache, TAny, TPlainObject } from '@flatbiz/utils';\nimport { Drawer, Table } from 'antd';\nimport { ColumnsType } from 'antd/es/table';\nimport { TableRowSelection } from 'antd/es/table/interface';\nimport { CSSProperties, Fragment, useState } from 'react';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex?: string; title: string }[];\n onChange: (keys: string[]) => void;\n open?: boolean;\n onClose?: () => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n};\n\nexport const FoldOperate = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n const rowSelection = {\n type: 'checkbox',\n selectedRowKeys: selectedRowKeys,\n onChange: (selectedRowKeys: string[]) => {\n setSelectedRowKeys(selectedRowKeys);\n props.onChange(selectedRowKeys);\n if (props.cacheKey) {\n localStorageCache.set(`easy_tab_${props.cacheKey}`, { keys: selectedRowKeys });\n }\n },\n } as TableRowSelection<TAny>;\n\n const columns: ColumnsType<TPlainObject> = [\n {\n title: '字段名称',\n dataIndex: 'title',\n render: (value, recrd) => {\n return recrd['_isFoldTitle'] || value;\n },\n },\n { title: '字段Key', dataIndex: 'dataIndex' },\n ];\n\n return (\n <Fragment>\n <Drawer\n title=\"选择字段\"\n open={props.open}\n onClose={props.onClose}\n width={'35%'}\n styles={{\n body: {\n padding: 15,\n },\n }}\n >\n <Table\n bordered\n size=\"small\"\n columns={columns}\n rowSelection={rowSelection}\n rowKey=\"dataIndex\"\n pagination={false}\n scroll={{ x: 'max-content' }}\n dataSource={props.dataList}\n />\n </Drawer>\n </Fragment>\n );\n};\n","import { localStorageCache } from '@flatbiz/utils';\nimport { Checkbox, Popover } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, useState } from 'react';\n\ntype FoldOperateProps = {\n style?: CSSProperties;\n dataList: { dataIndex: string; title: string }[];\n onChange: (keys: string[]) => void;\n cacheKey?: string;\n initSelectedRowKeys?: string[];\n children?: ReactElement;\n};\n\nexport const FoldOperateDropdown = (props: FoldOperateProps) => {\n const [selectedRowKeys, setSelectedRowKeys] = useState<string[]>(props.initSelectedRowKeys || []);\n\n const onChange = (keys) => {\n setSelectedRowKeys(keys);\n props.onChange(keys);\n if (props.cacheKey) {\n localStorageCache.set(`easy_tab_${props.cacheKey}`, { keys: keys });\n }\n };\n\n const content = (\n <Fragment>\n <Checkbox.Group\n defaultValue={selectedRowKeys}\n onChange={onChange}\n value={selectedRowKeys}\n style={{ display: 'flex', flexDirection: 'column' }}\n >\n {props.dataList.map((item) => {\n const label = item['_isFoldTitle'] || item.title;\n return (\n <Checkbox value={item.dataIndex} key={item.dataIndex} style={{ padding: '0 0 5px 0' }}>\n {label}\n </Checkbox>\n );\n })}\n </Checkbox.Group>\n </Fragment>\n );\n\n const onChangeAll = (e) => {\n if (e.target.checked) {\n onChange(props.dataList.map((item) => item.dataIndex));\n } else {\n onChange([]);\n }\n };\n\n return (\n <Popover\n content={content}\n title={\n <Checkbox checked={selectedRowKeys.length === props.dataList.length} onChange={onChangeAll}>\n 全选(字段列表)\n </Checkbox>\n }\n placement=\"bottomRight\"\n overlayClassName=\"fold-operate-popiver\"\n >\n {props.children}\n </Popover>\n );\n};\n","import { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TAny, TPlainObject } from '@flatbiz/utils';\n\nexport type ModelState = {\n queryCondition: TPlainObject;\n isInit: boolean;\n};\n\ntype ModelActionParams = {\n updateFilterCondition?: Partial<ModelState['queryCondition']>;\n resetFilterCondition?: TPlainObject;\n updateInitStatus: void;\n};\n\nconst defaultState: ModelState = {\n queryCondition: {},\n isInit: true,\n};\n\nconst _EasyTableModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n updateFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...state.queryCondition,\n ...params,\n };\n };\n },\n resetFilterCondition: (params) => {\n return (state) => {\n state.queryCondition = {\n ...defaultState.queryCondition,\n ...params,\n };\n };\n },\n updateInitStatus: () => {\n return (state) => {\n state.isInit = false;\n };\n },\n },\n state: defaultState,\n};\n\nconst easyTableModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = selectorWrapperModel('key值').useStore();\n * ```\n */\nexport const easyTableModel = (key: string) => {\n if (!easyTableModels[key]) {\n easyTableModels[key] = Model(_EasyTableModel);\n }\n return easyTableModels[key];\n};\n","import { isArray, isString, isUndefined } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, get } from '@dimjs/utils';\nimport { localStorageCache, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Form, message } from 'antd';\nimport {\n cloneElement,\n CSSProperties,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { FlexLayout } from '../flex-layout';\nimport { IconWrapper } from '../icon-wrapper';\nimport { PaginationWrapper } from '../pagination-wrapper';\nimport { SvgHttpView } from '../svg-http-view';\nimport { TableTitleTooltip } from '../table-title-tooltip';\nimport { TipsWrapper } from '../tips-wrapper';\nimport { EasyTableContext } from './context';\nimport { FoldOperate } from './fold-operate';\nimport { FoldOperateDropdown } from './fold-operate-dropdown';\nimport { easyTableModel } from './model';\nimport './style.less';\nimport { EasyTableProps, EasyTableRefApi, TEasyTableTableColumn } from './type';\n\nexport const EasyTable = forwardRef<EasyTableRefApi, EasyTableProps>((props, ref) => {\n const [dataSource, setDataSource] = useState<TPlainObject[]>();\n const [total, setTotal] = useState<number>(0);\n const [loading, setLoading] = useState<boolean>(false);\n const easyTableId = hooks.useId(undefined, 'easy-table-key');\n const columnFoldConfig = props.columnFoldConfig;\n const asyncColumnRequest = props.asyncColumnRequest;\n\n const [columnFoldOpen, setColumnFoldOpen] = useState(false);\n const asyncColumnRequestResultRef = useRef<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n const [asyncColumnRequestResult, setAsyncColumnRequestResult] = useState<{\n [dataIndex: string]: {\n respData?: TAny;\n loading?: boolean;\n };\n }>({});\n\n const [showFoldKeyList, setShowFoldKeyList] = useState<string[]>(() => {\n if (columnFoldConfig?.cacheKey) {\n const cacheValue = localStorageCache.get(`easy_tab_${columnFoldConfig.cacheKey}`);\n const cacheKeyList = isArray(cacheValue?.keys)\n ? (cacheValue?.keys?.filter((item) => isString(item)) as string[])\n : [];\n return cacheKeyList.length > 0 ? cacheKeyList : columnFoldConfig?.initSelectedKeys || [];\n } else {\n return columnFoldConfig?.initSelectedKeys || [];\n }\n });\n\n const modelKey = useMemo(() => {\n if (props.cacheSwitch === true) {\n return location.pathname;\n }\n if (typeof props.cacheSwitch === 'string') {\n return props.cacheSwitch;\n }\n return easyTableId;\n }, [easyTableId, props.cacheSwitch]);\n\n const [state, actions] = easyTableModel(modelKey).useStore();\n const pageSize = props.pageSize || props.initialPaginationParams?.pageSize || 10;\n const initRequest = props.initRequest === undefined ? true : props.initRequest;\n const paginationStatusRef = useRef(false);\n const respOriginalDataRef = useRef<TAny>();\n const baseColumnsRef = useRef<TEasyTableTableColumn<TPlainObject>[]>([]);\n const [dynamicColumns, setDynamicColumns] = useState<TEasyTableTableColumn<TPlainObject>[]>();\n\n const fieldNames = {\n list: 'list',\n total: 'total',\n pageNo: 'pageNo',\n pageSize: 'pageSize',\n ...props.fieldNames,\n };\n\n const [form] = Form.useForm(props.form);\n\n const onInnerRequest = hooks.useCallbackRef(async (params) => {\n try {\n if (props.breforeRequest) {\n try {\n await props.breforeRequest(form);\n } catch (error) {\n return;\n }\n }\n setLoading(true);\n const allState = await actions.updateFilterCondition(params);\n const queryCondition = cloneState(allState.queryCondition || {});\n const { requestParamsAdapter, onRequest, requestResultAdapter, dynamicColumsAdapter } =\n props.serviceConfig;\n const paramsNew = requestParamsAdapter ? requestParamsAdapter(queryCondition) : queryCondition;\n const respData = (await onRequest(paramsNew)) || {};\n respOriginalDataRef.current = respData;\n props.onDataSourceChange?.(respData);\n let respDataNew: TPlainObject = respData;\n if (requestResultAdapter) {\n respDataNew = requestResultAdapter(respData);\n }\n if (dynamicColumsAdapter) {\n const dynamicColumns = dynamicColumsAdapter(respData, baseColumnsRef.current);\n /** 不要添加默认值 */\n setDynamicColumns(dynamicColumns);\n }\n const respList = get(respDataNew, fieldNames.list);\n setDataSource(isArray(respList) ? respList : []);\n setTotal(get(respDataNew, fieldNames.total));\n setLoading(false);\n } catch (error) {\n setLoading(false);\n if (props.onRequestErrorHandle) {\n props.onRequestErrorHandle(error);\n } else {\n void message.error(error.message);\n }\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n const hasPagination = getPaginationStatus();\n if (initRequest !== false || !state.isInit) {\n if (hasPagination) {\n void onInnerRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...props.initialValues,\n ...state.queryCondition,\n });\n } else {\n void onInnerRequest(props.initialValues);\n }\n } else {\n void actions.updateFilterCondition(props.initialValues);\n }\n void actions.updateInitStatus();\n }, []);\n\n useEffect(() => {\n if (asyncColumnRequest?.length) {\n for (let index = 0; index < asyncColumnRequest.length; index++) {\n const element = asyncColumnRequest[index];\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: true },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n element\n .onRequest()\n .then((respData) => {\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false, respData },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n })\n .catch((error) => {\n console.error(error?.message);\n asyncColumnRequestResultRef.current = {\n ...asyncColumnRequestResultRef.current,\n [element.dataIndex]: { loading: false },\n };\n setAsyncColumnRequestResult(asyncColumnRequestResultRef.current);\n });\n }\n }\n }, [asyncColumnRequest]);\n\n const clearQueryCondition = hooks.useCallbackRef(async (values?: TPlainObject) => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (values) {\n void actions.updateFilterCondition(values);\n form.setFieldsValue(values);\n }\n });\n\n const updateQueryCondition = hooks.useCallbackRef(async (values: TPlainObject) => {\n await actions.updateFilterCondition(values);\n form.setFieldsValue(values);\n });\n\n const getPaginationData = (pageNo: number, _pageSize: number) => {\n if (getPaginationStatus()) {\n return {\n [fieldNames.pageNo]: pageNo,\n [fieldNames.pageSize]: _pageSize || pageSize,\n };\n } else {\n return {\n [fieldNames.pageNo]: undefined,\n [fieldNames.pageSize]: undefined,\n };\n }\n };\n\n const onResetRequest = hooks.useCallbackRef(async (values?: TPlainObject) => {\n const params = {\n ...getPaginationData(1, state.queryCondition[fieldNames.pageSize]),\n ...props.initialValues,\n ...values,\n };\n await actions.resetFilterCondition(params);\n form.resetFields();\n if (values) {\n form.setFieldsValue(values);\n }\n void onInnerRequest(params);\n });\n\n const getRequestParams = hooks.useCallbackRef(() => {\n return {\n ...state.queryCondition,\n ...form.getFieldsValue(),\n };\n });\n\n const onOpenColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(true);\n });\n const onCloseColumnFoldModal = hooks.useCallbackRef(() => {\n setColumnFoldOpen(false);\n });\n\n const getEasyTableRef = () => {\n return {\n /**\n * 参数\n * 1. 不用添加已存在的搜索条件\n * 2. 此处可重新\n */\n onRequest: onInnerRequest,\n clearQueryCondition,\n updateQueryCondition,\n getRequestParams,\n onResetRequest,\n form,\n getDataSource: () => {\n return respOriginalDataRef.current;\n },\n onFilterDataSource: (filterDataSource) => {\n setDataSource(filterDataSource);\n },\n onClearDataSource: () => {\n setTotal(0);\n setDataSource([]);\n },\n onUpdateDataSource: (dataList) => {\n setDataSource(dataList);\n respOriginalDataRef.current = dataList;\n props.onDataSourceChange?.(dataList);\n },\n columnFoldTriggerRender: (children) => {\n if (props.columnFoldConfig?.triggerType === 'drawer') {\n return cloneElement(children, {\n onClick: onOpenColumnFoldModal,\n });\n }\n return (\n <FoldOperateDropdown\n dataList={foldColumnList as TAny[]}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n {children}\n </FoldOperateDropdown>\n );\n },\n onChangeTableColumns: (columns) => {\n setDynamicColumns(columns);\n },\n getTableColumns: () => {\n return dynamicColumns ? dynamicColumns : baseColumnsRef.current;\n },\n loading,\n };\n };\n\n useImperativeHandle(ref, () => {\n return getEasyTableRef();\n });\n\n const onSetPaginationStatus = (status: boolean) => {\n paginationStatusRef.current = status;\n };\n\n const onSetBaseColumns = (base) => {\n baseColumnsRef.current = base;\n };\n\n const onFormFinish = () => {\n const values = form.getFieldsValue();\n if (props.onFormFinish) {\n props.onFormFinish({\n ...values,\n ...getPaginationData(1, state.queryCondition[fieldNames.pageSize]),\n });\n } else {\n void onInnerRequest({\n ...values,\n ...getPaginationData(1, state.queryCondition[fieldNames.pageSize]),\n });\n }\n };\n const isFull = isUndefined(props.isFull) ? true : props.isFull;\n const className = classNames(\n 'fba-easy-table',\n {\n 'fba-easy-table-full': isFull,\n 'fba-easy-table-filter-fixed': props.filterFixed,\n 'fba-easy-table-pagination-fixed': props.paginationFixed,\n },\n props.className,\n );\n\n const paginationData = useMemo(() => {\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: total,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n };\n }, [fieldNames.pageNo, fieldNames.pageSize, pageSize, props.pagination, state.queryCondition, total]);\n\n const columnsMerge = (dynamicColumns ? dynamicColumns : baseColumnsRef.current) as TPlainObject[];\n\n let tableColumns = useMemo(() => {\n const tempList = columnsMerge\n .map((item) => {\n const { tooltip, tipsWrapperProps, title, hidden, isFold, ...otherProps } = item;\n if (hidden) return null;\n if (isFold && !showFoldKeyList.includes(item.dataIndex as string)) return null;\n if (typeof title === 'string' && tipsWrapperProps) {\n if (typeof tipsWrapperProps === 'string') {\n return {\n ...otherProps,\n title: (\n <TipsWrapper tipType=\"popover\" popoverProps={{ content: tipsWrapperProps }}>\n {title}\n </TipsWrapper>\n ),\n };\n }\n return {\n ...otherProps,\n title: <TipsWrapper {...tipsWrapperProps}>{title}</TipsWrapper>,\n };\n }\n if (typeof title === 'string' && !!tooltip) {\n return {\n ...otherProps,\n title: <TableTitleTooltip tooltip={tooltip} title={title}></TableTitleTooltip>,\n };\n }\n return item;\n })\n .filter(Boolean);\n return [...tempList] as TPlainObject[];\n }, [columnsMerge, showFoldKeyList]);\n\n const foldColumnList = columnsMerge.filter((item: TAny) => {\n return !item.hidden && item.isFold && item.dataIndex;\n });\n\n const onChangeFoldColumnList = (keyList: string[]) => {\n setShowFoldKeyList(keyList);\n columnFoldConfig?.onChange?.(keyList);\n };\n\n tableColumns = fbaHooks.useMemoCustom(() => {\n if (columnFoldConfig?.hidden) return tableColumns;\n const finalItem = tableColumns[tableColumns.length - 1];\n if (foldColumnList.length > 0 && tableColumns.length > 0) {\n const foldColumnTarget = tableColumns.find((item) => item['_isFoldColumn']);\n\n if (foldColumnTarget && finalItem.dataIndex !== foldColumnTarget.dataIndex) {\n foldColumnTarget.title = foldColumnTarget['_isFoldTitle'];\n foldColumnTarget['_isFoldColumn'] = false;\n }\n if (!finalItem['_isFoldColumn']) {\n finalItem['_isFoldTitle'] = finalItem['_isFoldTitle'] || finalItem.title;\n finalItem['_isFoldColumn'] = true;\n\n const triggerType = columnFoldConfig?.triggerType;\n\n finalItem.title = (\n <FlexLayout direction=\"horizontal\" fullIndex={0} style={{ alignItems: 'center' }}>\n <span>{finalItem.title}</span>\n <div style={{ padding: '0 5px 0 20px', display: 'flex' }}>\n {triggerType === 'drawer' ? (\n <IconWrapper\n onClick={onOpenColumnFoldModal}\n text={columnFoldConfig?.text}\n size=\"small\"\n icon={columnFoldConfig?.icon || <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />}\n hoverTips={columnFoldConfig?.hoverTipText || '字段列表'}\n style={{ padding: 0, margin: 0 }}\n />\n ) : (\n <FoldOperateDropdown\n dataList={foldColumnList as TAny[]}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n >\n <IconWrapper\n text={columnFoldConfig?.text}\n style={{ padding: 0, margin: 0 }}\n size=\"small\"\n icon={\n columnFoldConfig?.icon || <SvgHttpView svgPath=\"ionic/list-circle\" color=\"#868686\" />\n }\n />\n </FoldOperateDropdown>\n )}\n </div>\n </FlexLayout>\n );\n }\n }\n return tableColumns;\n }, [tableColumns, foldColumnList, columnFoldConfig]);\n\n tableColumns = useMemo(() => {\n if (!Object.keys(asyncColumnRequestResult)) return tableColumns;\n return tableColumns.map((item: TAny) => {\n const dataIndex = item.dataIndex as string;\n const result = asyncColumnRequestResult[dataIndex];\n if (dataIndex && result) {\n if (result.loading) {\n item.render = (value) => {\n return (\n <ButtonWrapper loading type=\"text\" loadingPosition=\"center\" removeGap>\n {value}\n </ButtonWrapper>\n );\n };\n } else if (item.asyncRender) {\n item.render = (value, record, index) => {\n return item.asyncRender?.(value, record, index, result.respData);\n };\n }\n }\n return item;\n });\n }, [tableColumns, asyncColumnRequestResult]);\n\n const onChange = hooks.useCallbackRef((page: number, pageSize: number) => {\n void onInnerRequest({\n [fieldNames.pageSize]: pageSize,\n [fieldNames.pageNo]: page,\n });\n props.pagination?.onChange?.(page, pageSize);\n });\n\n const getPaginationStatus = () => {\n return props.paginationFixed || paginationStatusRef.current;\n };\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (props.paginationFixed) {\n void onInnerRequest({\n [fieldNames.pageSize]: state.queryCondition[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n void onInnerRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }, [props.paginationFixed]);\n\n const wrapperClassName = classNames(\n 'fba-easy-table-wrapper',\n {\n 'fba-easy-table-wrapper-inline': props.isInline,\n },\n props.className,\n );\n\n const wrapperStyle: CSSProperties = {\n overflowY: props.filterFixed || props.paginationFixed ? 'hidden' : 'auto',\n ...props.style,\n };\n\n const children =\n typeof props.children === 'function' ? props.children(respOriginalDataRef.current) : props.children;\n\n return (\n <EasyTableContext.Provider\n value={{\n onSetBaseColumns,\n getEasyTableRef,\n modelKey,\n onRequest: onInnerRequest,\n tableDataSource: dataSource,\n tableTotal: total,\n loading,\n fieldNames,\n pageSize,\n onSetPaginationStatus,\n getPaginationStatus,\n onFormFinish,\n form,\n paginationFixed: props.paginationFixed || false,\n foldKeys: props.foldKeys || [],\n columns: tableColumns,\n initialValues: props.initialValues,\n }}\n >\n {props.paginationFixed ? (\n <div className={wrapperClassName} style={wrapperStyle}>\n <div className={className}>{children}</div>\n {total > 0 && (\n <div className=\"fba-easy-table-pagination\">\n <PaginationWrapper size=\"small\" {...paginationData} onChange={onChange} />\n </div>\n )}\n </div>\n ) : (\n <div className={wrapperClassName} style={props.style}>\n {children}\n </div>\n )}\n <FoldOperate\n dataList={foldColumnList as TAny[]}\n onClose={onCloseColumnFoldModal}\n open={columnFoldOpen}\n onChange={onChangeFoldColumnList}\n cacheKey={columnFoldConfig?.cacheKey}\n initSelectedRowKeys={showFoldKeyList}\n />\n </EasyTableContext.Provider>\n );\n});\n","import { DownOutlined, UpOutlined } from '@ant-design/icons';\nimport { isUndefined } from '@dimjs/lang';\nimport { classNames } from '@dimjs/utils';\nimport { TAny } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { FormInstance } from 'antd';\nimport { Children, CSSProperties, ReactElement, useContext, useMemo, useState } from 'react';\nimport { isFragment } from 'react-is';\nimport { BlockLayout } from '../block-layout';\nimport { ButtonWrapper, ButtonWrapperProps } from '../button-wrapper';\nimport { EasyForm, EasyFormProps } from '../easy-form';\nimport { fbaHooks } from '../fba-hooks';\nimport { FormGrid } from '../form-grid';\nimport { FormOperateColProps } from '../form-grid/form-operate-col';\nimport { FormRowProps } from '../form-grid/form-row';\nimport { EasyTableContext } from './context';\nimport { easyTableModel } from './model';\n\nexport type EasyTableFilterProps = {\n children: ReactElement | ReactElement[] | ((form: FormInstance) => ReactElement);\n /** isPure = true时无效 */\n filterOperate?: (form: FormInstance) => FormOperateColProps;\n /** 是否为纯净模式(查询条件布局是否自定义), */\n isPure?: boolean;\n /** 查询按钮配置 */\n queryButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /** 重置按钮配置 */\n resetButtonProps?: Omit<ButtonWrapperProps, 'onClick'> & { text?: string };\n /**\n * 网格布局设置\n * default = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * small = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n formGridSize?: FormRowProps['gridSize'];\n /**\n * @deprecated已过期,使用 easyFormProps.className 配置\n */\n formClassName?: string;\n /**\n * @deprecated已过期,使用 easyFormProps.style 配置\n */\n formStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout style */\n filterWrapperStyle?: CSSProperties;\n /** filter Form 外层 BlockLayout className */\n filterWrapperClassName?: string;\n /**\n * 自定义 filterOperate.rightList 后 默认【查询、重置】按钮处理逻辑\n * 1. cover:覆盖内部查询重置按钮(默认值)\n * 2. beforeAppend:添加到【查询重置】按钮前面\n * 3. afterAppend:添加到【查询重置】按钮后面\n *\n * 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n */\n rightOperateAreaAppendType?: 'cover' | 'beforeAppend' | 'afterAppend';\n /** 默认重启按钮触发请求,默认值:true */\n defaultResetButtonTriggerRequest?: boolean;\n easyFormProps?: Omit<\n EasyFormProps,\n 'isPure' | 'column' | 'forceColumn' | 'width' | 'gridGutter' | 'children'\n >;\n};\n\n/**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTableFilter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTableFilter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTableFilter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTableFilter>\n *\n * -- children 可为 function\n * <EasyTableFilter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTableFilter>\n *\n * 2. 用户2(自定义布局)\n * EasyTableFilter设置 isPure = true,FormItem无布局规则\n * 3. EasyTableFilter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. 通过设置 defaultResetButtonTriggerRequest,默认重启按钮触发请求,默认值:true\n * 8. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n *```\n */\nexport const EasyTableFilter = (props: EasyTableFilterProps) => {\n const screenType = fbaHooks.useResponsivePoint() || 'md';\n const ctx = useContext(EasyTableContext);\n const {\n queryButtonProps,\n resetButtonProps,\n filterOperate,\n formClassName = '',\n defaultResetButtonTriggerRequest,\n filterWrapperStyle,\n filterWrapperClassName,\n rightOperateAreaAppendType,\n easyFormProps,\n } = props;\n const {\n modelKey,\n foldKeys,\n fieldNames,\n onRequest,\n pageSize,\n getPaginationStatus,\n initialValues,\n form,\n onFormFinish,\n } = ctx;\n const children = typeof props.children === 'function' ? props.children(form) : props.children;\n\n const rightOperateAreaAppendTypeFt = rightOperateAreaAppendType || 'cover';\n const childrens = useMemo(() => {\n if (isFragment(children)) {\n return Children.toArray((children as ReactElement).props.children) as ReactElement[];\n } else {\n return Children.toArray(children) as ReactElement[];\n }\n }, [children]);\n\n const [openFold, setOpenFold] = useState(false);\n\n const [state, actions] = easyTableModel(modelKey).useStore();\n\n const onReset = hooks.useCallbackRef(async () => {\n await actions.resetFilterCondition();\n form.resetFields();\n if (isUndefined(defaultResetButtonTriggerRequest) || defaultResetButtonTriggerRequest) {\n await form.validateFields();\n if (getPaginationStatus()) {\n onRequest({\n [fieldNames.pageNo]: 1,\n [fieldNames.pageSize]: pageSize,\n ...initialValues,\n });\n } else {\n onRequest(initialValues);\n }\n }\n });\n\n const formRowChildren = useMemo(() => {\n const defaultRightList = [\n !queryButtonProps?.hidden ? (\n <ButtonWrapper key=\"1\" type=\"primary\" htmlType=\"submit\" {...queryButtonProps}>\n {queryButtonProps?.text || '查询'}\n </ButtonWrapper>\n ) : null,\n !resetButtonProps?.hidden ? (\n <ButtonWrapper key=\"2\" onClick={onReset} {...resetButtonProps}>\n {resetButtonProps?.text || '重置'}\n </ButtonWrapper>\n ) : null,\n ].filter(Boolean);\n const customFormOperateCol = filterOperate?.(form);\n const customRightList = customFormOperateCol?.rightList;\n const leftList: TAny[] = customFormOperateCol?.leftList || [];\n\n let rightList: TAny[] = defaultRightList;\n if (customRightList) {\n if (rightOperateAreaAppendTypeFt === 'afterAppend') {\n rightList = [...defaultRightList, ...customRightList];\n } else if (rightOperateAreaAppendTypeFt === 'beforeAppend') {\n rightList = [...customRightList, ...defaultRightList];\n } else {\n rightList = customRightList;\n }\n }\n if (foldKeys.length > 0) {\n const changeFolditem = (\n <ButtonWrapper\n type=\"link\"\n key=\"fold-trigger\"\n style={{ padding: '0' }}\n onClick={() => {\n setOpenFold(!openFold);\n }}\n >\n {openFold ? (\n <span>\n 收起\n <UpOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n ) : (\n <span>\n 展开\n <DownOutlined style={{ marginLeft: 3, fontSize: 12 }} />\n </span>\n )}\n </ButtonWrapper>\n );\n\n if (rightList.length > 0 || leftList.length === 0) {\n rightList.push(changeFolditem);\n } else if (leftList?.length > 0) {\n leftList.push(changeFolditem);\n }\n }\n\n return childrens\n .map((item, index) => {\n if (!openFold && foldKeys.find((keyItem) => `.$${keyItem}` === item.key)) return null;\n if (item.props['hidden']) return null;\n if (item.type['domTypeName'] === 'FormCol') return item;\n return <FormGrid.Col key={index}>{item}</FormGrid.Col>;\n })\n .filter(Boolean)\n .concat(\n <FormGrid.OperateCol key={999} {...customFormOperateCol} leftList={leftList} rightList={rightList} />,\n );\n }, [\n childrens,\n filterOperate,\n foldKeys,\n form,\n onReset,\n openFold,\n queryButtonProps,\n resetButtonProps,\n rightOperateAreaAppendTypeFt,\n ]);\n\n const labelAlign = screenType === 'xs' ? 'left' : easyFormProps?.labelAlign || 'right';\n\n return (\n <BlockLayout\n className={classNames('easy-table-filter', filterWrapperClassName)}\n style={filterWrapperStyle}\n >\n <EasyForm\n form={form}\n autoComplete=\"off\"\n onFinish={onFormFinish}\n initialValues={{\n ...initialValues,\n ...state.queryCondition,\n }}\n className={formClassName}\n style={props.formStyle}\n isPure={true}\n labelWidth=\"80\"\n formItemGap=\"15\"\n {...easyFormProps}\n labelAlign={labelAlign}\n >\n {props.isPure ? (\n children\n ) : (\n <FormGrid.Row gutter={[15, 0]} gridSize={props.formGridSize}>\n {formRowChildren}\n </FormGrid.Row>\n )}\n </EasyForm>\n </BlockLayout>\n );\n};\n","import { useContext } from 'react';\nimport { EasyTableContext } from './context';\n\n/**\n * 在 EasyTable子组件内才可使用\n * @returns\n */\nexport const useEasyTable = () => {\n const ctx = useContext(EasyTableContext);\n return ctx.getEasyTableRef();\n};\n\n/**\n * @deprecated 已过时 @4.5.0版本移除,请使用 useEasyTable\n * @returns\n */\nexport const useEasyTablRef = () => {\n const ctx = useContext(EasyTableContext);\n return {\n current: ctx.getEasyTableRef(),\n };\n};\n","import { classNames } from '@dimjs/utils';\nimport { getUuid, isMacEnv, isUndefinedOrNull, TAny, TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Table, TableProps } from 'antd';\nimport { CSSProperties, Fragment, ReactElement, useContext, useMemo } from 'react';\nimport { BlockLayout } from '../block-layout';\nimport { fbaHooks } from '../fba-hooks';\nimport { SmallSelect } from '../pagination-wrapper/select';\nimport { TableScrollbar } from '../table-scrollbar';\nimport { EasyTableContext } from './context';\nimport { easyTableModel } from './model';\nimport { TEasyTableTableColumn } from './type';\n\nexport type EasyTableTableProps<T> = Omit<\n TableProps<TAny>,\n 'dataSource' | 'loading' | 'rowKey' | 'columns'\n> & {\n children?: ReactElement | ReactElement[];\n /**\n * 表格行 key 的取值,\n * ```\n * 如果 rowKey 为string类型\n * 1. 组件会判断表格列表数据第一条是否存在当前rowKey对象的数据,如果没有组件内部会动态添加唯一值\n * 2. 基于上一条的逻辑,如果表格数据没有唯一值,可指定 rowKey 值为table数据中不存在的字段名,例如:rowKey=\"_uid\"\n * 3. 如果触发上述逻辑,表格数据中会多出rowKey对应的键值对数据\n * ```\n */\n rowKey: TableProps<TAny>['rowKey'];\n /** table Form 外层 SimpleLayout className */\n tableWrapperStyle?: CSSProperties;\n /** table Form 外层 SimpleLayout className */\n tableWrapperClassName?: string;\n /**\n * 初始化配置有效果,如果为动态字段,可在 中实现\n * ```\n * 动态表格列实现\n * 1. 初始阶段,通过 EasyTable.serviceConfig.dynamicColumsAdapter 实现\n * demo: https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n * 2. 非初始阶段,通过 EasyTableRef.onChangeTableColumns 实现\n * ```\n */\n columns: TEasyTableTableColumn<T>[];\n /**\n * 数据加载与表格初始化渲染 是否同步\n * @version 4.4.6\n * ```\n * 1. true:获取数据后再初始化渲染表格(可用于实现表格中defaultXxxx相关功能的使用)\n * ```\n */\n isSync?: boolean;\n /**\n * 空效果显示尺寸,默认值:small\n * @version 4.4.6\n */\n emptyShowSize?: 'small' | 'large';\n};\n\n/**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\nexport const EasyTableTable = <T extends TPlainObject>(props: EasyTableTableProps<T>) => {\n const ctx = useContext(EasyTableContext);\n const { children, rowKey, pagination, isSync, ...otherProps } = props;\n\n const {\n modelKey,\n fieldNames,\n onRequest,\n tableDataSource,\n pageSize,\n tableTotal,\n loading,\n paginationFixed,\n onSetPaginationStatus,\n } = ctx;\n const [state] = easyTableModel(modelKey).useStore();\n\n fbaHooks.useEffectCustom(() => {\n /** 获取初始化 columns 数据 */\n ctx.onSetBaseColumns((props.columns || []) as TEasyTableTableColumn<TPlainObject>[]);\n }, []);\n\n fbaHooks.useEffectCustom(() => {\n onSetPaginationStatus(pagination !== false);\n }, [pagination]);\n\n // 分页参数发生变更\n hooks.useUpdateEffect(() => {\n if (!paginationFixed) {\n if (pagination !== false) {\n onRequest({\n [fieldNames.pageSize]: state.queryCondition[fieldNames.pageSize] || pageSize,\n [fieldNames.pageNo]: 1,\n });\n } else {\n onRequest({\n [fieldNames.pageSize]: undefined,\n [fieldNames.pageNo]: undefined,\n });\n }\n }\n }, [pagination]);\n\n const tablePaginationData = useMemo(() => {\n if (paginationFixed || pagination === false) return false;\n return {\n showSizeChanger: true,\n current: state.queryCondition[fieldNames.pageNo] || 1,\n pageSize: state.queryCondition[fieldNames.pageSize] || pageSize,\n total: tableTotal,\n showTotal: (total) => `共 ${total} 条记录`,\n ...props.pagination,\n selectComponentClass: SmallSelect,\n };\n }, [\n fieldNames.pageNo,\n fieldNames.pageSize,\n pageSize,\n pagination,\n paginationFixed,\n props.pagination,\n state.queryCondition,\n tableTotal,\n ]);\n\n const onChangePage: TableProps<TAny>['onChange'] = (pagination, filters, sorter, extra) => {\n if (extra.action === 'paginate' && tablePaginationData) {\n onRequest({\n [fieldNames.pageSize]: pagination.pageSize,\n [fieldNames.pageNo]: pagination.current,\n });\n } else {\n props.onChange?.(pagination, filters, sorter, extra);\n }\n };\n\n const dataSource = useMemo(() => {\n if (!tableDataSource) return undefined;\n if (tableDataSource.length === 0) {\n return [];\n }\n if (typeof rowKey === 'string' && isUndefinedOrNull(tableDataSource[0][rowKey])) {\n return tableDataSource.map((item) => {\n item[rowKey] = getUuid();\n return item;\n });\n }\n return tableDataSource;\n }, [tableDataSource, rowKey]);\n\n const tableRender = () => {\n if (isSync && !dataSource) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"1\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n rowKey={rowKey as TAny}\n columns={ctx.columns}\n loading={loading}\n />\n </Fragment>\n );\n }\n if (isMacEnv()) {\n return (\n <Fragment>\n {children}\n <Table\n key=\"2\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={ctx.columns}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </Fragment>\n );\n }\n return (\n <Fragment>\n {children}\n <TableScrollbar>\n <Table\n key=\"3\"\n size=\"small\"\n scroll={{ x: 'max-content' }}\n bordered\n {...otherProps}\n columns={ctx.columns}\n pagination={tablePaginationData}\n rowKey={rowKey}\n onChange={onChangePage}\n loading={loading}\n dataSource={dataSource}\n />\n </TableScrollbar>\n </Fragment>\n );\n };\n\n return (\n <BlockLayout\n className={classNames(\n 'easy-table-table',\n { 'ett-empty-show-small': props.emptyShowSize === 'small' },\n props.tableWrapperClassName,\n )}\n style={props.tableWrapperStyle}\n >\n {tableRender()}\n </BlockLayout>\n );\n};\n","import { fbaUtils } from '../fba-utils';\nimport { EasyTable as EasyTableInner } from './easy-table';\nimport { EasyTableFilter } from './filter';\nimport { useEasyTable, useEasyTablRef } from './hooks';\nimport { EasyTableTable } from './table';\n\n/**\n * 对 查询条件+表格数据 进行深度封装,内置数据交互处理\n * ```\n * Demo https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table\n *\n * 1. 废弃modelKey参数\n * 2. 如果需要在路由跳转回退中缓存查询条件,设置cacheSwitch=true;如果存在多个EasyTable缓存情况可设置cacheSwitch为自定义字符串\n * 3. 需要获取查询条件、主动发起请求等可通过ref、useEasyTable操作\n * 4. 可通过属性 initRequest 设置初始化是否请求数据\n * 5. 可通过属性 fieldNames 来设置自定义变量,默认值为:list、total、pageNo、pageSize\n * 6. isFull=true,设置【在父节点高度下,上下铺满】(默认值:true)\n * 7. filterFixed=true,设置查询条件固定,不随滚动条滚动\n * 8. paginationFixed=true,可设置分页条件在底部固定,不随滚动条滚动\n * 9. foldKeys=string[],查询条件展开、收起,被收起数组内容为EasyTable.Filter 子节点key值\n * 10. windows环境下,会在EasyTable.Table外部包装一下 TableScrollbar,提高windows下table左右滚动体验\n * 11. 可实现部分字段折叠,手动选择显示,将EasyTable.Table columns中isFold属性设为true,可通过EasyTable columnFoldConfig配置属性,demo(https://fex.qa.tcshuke.com/docs/admin/main/crud/demo1)\n * 12. 通过asyncColumnRequest、asyncRender配合使用可实现表格列数据接口渲染(demo:https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table)\n * ```\n */\nexport const EasyTable = fbaUtils.attachPropertiesToComponent(EasyTableInner, {\n /**\n * 过滤条件\n *```\n * 1. 用法1\n * -- 默认网格布局 规则:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n * <EasyTable.Filter>\n * <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * </EasyTable.Filter>\n *\n * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper\n * <EasyTable.Filter>\n * <FormGrid.Col span={12}><FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper></FormGrid.Col>\n * </EasyTable.Filter>\n *\n * -- children 可为 function\n * <EasyTable.Filter>\n * {(form) => {\n * return <FormItemWrapper name=\"field1\" label=\"条件1\">xxx</FormItemWrapper>\n * }}\n * </EasyTable.Filter>\n * 2. 用户2(自定义布局)\n * EasyTable.Filter设置 isPure = true,FormItem无布局规则\n * 3. EasyTable.Filter中内置了 Form 标签,当children为函数时,可获取form实例\n * 4. 默认布局下,可通过设置 filterOperate 设置操作按钮\n * 5. Filter 子节点包含 hidden = true 会被忽略\n * 6. 如果想隐藏【查询、重置】按钮中的某一个,可设置 queryButtonProps.hidden、resetButtonProps.hidden\n * 7. EasyTableFilter 子节点可使用 FormItemWrapper,FormItemWrapper中可配置label宽度等\n * 8. 通过easyFormProps属性可整体控制子节点FormItem布局\n *```\n */\n Filter: EasyTableFilter,\n /**\n * 表格渲染\n * @param props\n * ```\n * 1. 继承了 TableProps 可设置antd table功能\n * 2. 分页功能已内置处理,不调用 onChange\n * ```\n */\n Table: EasyTableTable,\n /**\n * @deprecated 已过时 4.3.0版本移除,请使用 useEasyTable\n */\n useEasyTablRef: useEasyTablRef,\n\n /** 在 EasyTable子组件内才可使用 */\n useEasyTable: useEasyTable,\n});\n"],"names":["EasyTableContext","createContext","onRequest","noop","tableList","getEasyTableRef","FoldOperate","props","_useState","useState","initSelectedRowKeys","selectedRowKeys","setSelectedRowKeys","rowSelection","type","onChange","cacheKey","localStorageCache","set","keys","columns","title","dataIndex","render","value","recrd","_jsx","Fragment","children","Drawer","open","onClose","width","styles","body","padding","Table","bordered","size","rowKey","pagination","scroll","x","dataSource","dataList","FoldOperateDropdown","content","Checkbox","Group","defaultValue","style","display","flexDirection","map","item","label","onChangeAll","e","target","checked","Popover","length","placement","overlayClassName","defaultState","queryCondition","isInit","_EasyTableModel","actions","updateFilterCondition","params","state","_extends","resetFilterCondition","updateInitStatus","easyTableModels","easyTableModel","key","Model","EasyTable","forwardRef","ref","_props$initialPaginat","setDataSource","_useState2","total","setTotal","_useState3","loading","setLoading","easyTableId","_hooks","useId","undefined","columnFoldConfig","asyncColumnRequest","_useState4","columnFoldOpen","setColumnFoldOpen","asyncColumnRequestResultRef","useRef","_useState5","asyncColumnRequestResult","setAsyncColumnRequestResult","_useState6","_cacheValue$keys","cacheValue","get","cacheKeyList","_isArray","filter","_isString","initSelectedKeys","showFoldKeyList","setShowFoldKeyList","modelKey","useMemo","cacheSwitch","location","pathname","_easyTableModel$useSt","useStore","pageSize","initialPaginationParams","initRequest","paginationStatusRef","respOriginalDataRef","baseColumnsRef","_useState7","dynamicColumns","setDynamicColumns","fieldNames","list","pageNo","_Form$useForm","Form","useForm","form","onInnerRequest","useCallbackRef","Promise","$return","$error","allState","_props$serviceConfig","requestParamsAdapter","requestResultAdapter","dynamicColumsAdapter","paramsNew","respData","respDataNew","_dynamicColumns","respList","$Try_1_Post","$boundEx","$Try_1_Catch","error","onRequestErrorHandle","message","breforeRequest","$Try_2_Post","$If_3","call","this","bind","$Try_2_Catch","resolve","then","$await_4","$await_5","cloneState","serviceConfig","$await_6","current","onDataSourceChange","_get","fbaHooks","useEffectCustom","hasPagination","getPaginationStatus","_extends2","initialValues","useEffect","_loop","_extends3","element","index","_extends4","catch","_extends5","console","clearQueryCondition","values","$await_7","resetFields","setFieldsValue","updateQueryCondition","$await_8","getPaginationData","_pageSize","_ref","_ref2","onResetRequest","$await_9","getRequestParams","getFieldsValue","onOpenColumnFoldModal","onCloseColumnFoldModal","getDataSource","onFilterDataSource","filterDataSource","onClearDataSource","onUpdateDataSource","columnFoldTriggerRender","_props$columnFoldConf","triggerType","cloneElement","onClick","foldColumnList","onChangeFoldColumnList","onChangeTableColumns","getTableColumns","useImperativeHandle","onSetPaginationStatus","status","onSetBaseColumns","base","onFormFinish","isFull","_isUndefined","className","_classNames","filterFixed","paginationFixed","paginationData","showSizeChanger","showTotal","columnsMerge","tableColumns","tempList","tooltip","tipsWrapperProps","hidden","isFold","otherProps","_objectWithoutPropertiesLoose","_excluded","includes","TipsWrapper","tipType","popoverProps","TableTitleTooltip","Boolean","concat","keyList","useMemoCustom","finalItem","foldColumnTarget","find","_jsxs","FlexLayout","direction","fullIndex","alignItems","IconWrapper","text","icon","SvgHttpView","svgPath","color","hoverTips","hoverTipText","margin","Object","result","ButtonWrapper","loadingPosition","removeGap","asyncRender","record","page","_onInnerRequest","_props$pagination","useUpdateEffect","_onInnerRequest2","_onInnerRequest3","wrapperClassName","isInline","wrapperStyle","overflowY","Provider","tableDataSource","tableTotal","foldKeys","PaginationWrapper","EasyTableFilter","screenType","useResponsivePoint","ctx","useContext","queryButtonProps","resetButtonProps","filterOperate","_props$formClassName","formClassName","defaultResetButtonTriggerRequest","filterWrapperStyle","filterWrapperClassName","rightOperateAreaAppendType","easyFormProps","rightOperateAreaAppendTypeFt","childrens","isFragment","Children","toArray","openFold","setOpenFold","onReset","$await_2","validateFields","$await_3","$If_1","formRowChildren","defaultRightList","htmlType","customFormOperateCol","customRightList","rightList","leftList","changeFolditem","_UpOutlined","marginLeft","fontSize","_DownOutlined","push","keyItem","FormGrid","Col","OperateCol","labelAlign","BlockLayout","EasyForm","autoComplete","onFinish","formStyle","isPure","labelWidth","formItemGap","Row","gutter","gridSize","formGridSize","useEasyTable","useEasyTablRef","EasyTableTable","isSync","_onRequest","_onRequest2","tablePaginationData","selectComponentClass","SmallSelect","onChangePage","filters","sorter","extra","action","_onRequest3","isUndefinedOrNull","getUuid","tableRender","isMacEnv","TableScrollbar","emptyShowSize","tableWrapperClassName","tableWrapperStyle","fbaUtils","attachPropertiesToComponent","EasyTableInner","Filter"],"mappings":"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"}
@@ -1 +1 @@
1
- .label-value-render .label-value-label{align-items:center;color:#8e8e8e;display:flex;flex-shrink:0;font-weight:400;padding:8px 10px}.label-value-render .label-value-value{align-items:center;display:flex;flex:1;overflow:hidden;padding:8px 0}.label-value-render .label-value-value:hover{background-color:rgba(0,0,0,.03)}.label-value-render .text-symbol-wrapper{display:inline-block;max-width:100%}.label-value-render .tips-wrapper{max-width:100%}.label-value-render .tips-wrapper .tips-wrapper-text{flex:initial}.label-value-render-border .box-grad-row{border-bottom:1px solid rgba(5,5,5,.06);border-left:1px solid rgba(5,5,5,.06);border-radius:6px;border-top:1px solid rgba(5,5,5,.06);overflow:hidden}.label-value-render-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid rgba(5,5,5,.06)}.label-value-render-border .label-value-label{background-color:rgba(0,0,0,.02);font-weight:400;padding:8px 16px}.label-value-render-border .label-value-value{border-left:1px solid rgba(5,5,5,.06);border-right:1px solid rgba(5,5,5,.06);padding:8px 16px}.label-value-render-right .label-value-label{text-align:right}.label-value-render-right .label-value-label .tips-wrapper{justify-content:right}.label-value-render-left .label-value-label{text-align:left}.label-value-render-center .label-value-label{text-align:center}.label-value-render-center .label-value-label .tips-wrapper{justify-content:center}.label-value-tr{display:flex}.label-value-render-vertical .label-value-tr{display:block}.label-value-render-vertical .label-value-label{display:block;padding:0;text-align:left}.label-value-render-vertical .label-value-value{display:block;padding:5px 0 15px}.label-value-render-small .label-value-label{font-size:12px;padding:4px 0}.label-value-render-small .label-value-value{font-size:12px;padding:4px 10px}.label-value-render-small.label-value-render-border .label-value-label{padding:4px 10px}.label-value-render-small.label-value-render-vertical .label-value-label{padding:0}.label-value-render-small.label-value-render-vertical .label-value-value{padding:5px 0 10px}
1
+ .label-value-render .label-value-label{color:#8e8e8e;font-weight:400}.label-value-render .label-value-value{overflow:hidden}.label-value-render .label-value-value:hover{background-color:rgba(0,0,0,.04)}.label-value-render .text-symbol-wrapper{display:inline-block;max-width:100%}.label-value-render .tips-wrapper{max-width:100%}.label-value-render .tips-wrapper .tips-wrapper-text{flex:initial}.lvr-label-left .label-value-label{text-align:left}.lvr-label-center .label-value-label{text-align:center}.lvr-label-right .label-value-label{text-align:right}.lvr-horizontal .label-value-tr{display:flex}.lvr-horizontal .label-value-label{flex-shrink:0;width:var(--lvr-label-width)}.lvr-horizontal .label-value-value{flex:1;padding-left:5px}.lvr-horizontal.lvr-size-default:not(.lvr-border) .label-value-label,.lvr-horizontal.lvr-size-default:not(.lvr-border) .label-value-value{padding:8px}.lvr-horizontal.lvr-size-small:not(.lvr-border){font-size:12px}.lvr-horizontal.lvr-size-small:not(.lvr-border) .label-value-label,.lvr-horizontal.lvr-size-small:not(.lvr-border) .label-value-value{padding:5px}.lvr-horizontal.lvr-border .box-grad-row{border-bottom:1px solid rgba(5,5,5,.06);border-left:1px solid rgba(5,5,5,.06);border-radius:6px;border-top:1px solid rgba(5,5,5,.06);overflow:hidden}.lvr-horizontal.lvr-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid rgba(5,5,5,.06)}.lvr-horizontal.lvr-border .label-value-label{align-items:center;background-color:rgba(0,0,0,.03);display:flex;font-weight:400}.lvr-horizontal.lvr-border .label-value-value{align-items:center;border-left:1px solid rgba(5,5,5,.06);border-right:1px solid rgba(5,5,5,.06);display:flex;margin-left:0}.lvr-horizontal.lvr-border.lvr-size-default .label-value-label,.lvr-horizontal.lvr-border.lvr-size-default .label-value-value{padding:8px 10px}.lvr-horizontal.lvr-border.lvr-size-small{font-size:12px}.lvr-horizontal.lvr-border.lvr-size-small .label-value-label,.lvr-horizontal.lvr-border.lvr-size-small .label-value-value{padding:5px 10px}.lvr-vertical .label-value-tr{display:flex;flex-direction:column}.lvr-vertical .label-value-value{flex:1;padding-left:5px}.lvr-vertical.lvr-size-default:not(.lvr-border) .label-value-label,.lvr-vertical.lvr-size-default:not(.lvr-border) .label-value-value{padding:5px}.lvr-vertical.lvr-size-small:not(.lvr-border){font-size:12px}.lvr-vertical.lvr-size-small:not(.lvr-border) .label-value-label,.lvr-vertical.lvr-size-small:not(.lvr-border) .label-value-value{padding:3px}.lvr-vertical.lvr-border .box-grad-row{border-bottom:1px solid rgba(5,5,5,.06);border-left:1px solid rgba(5,5,5,.06);border-radius:6px;border-top:1px solid rgba(5,5,5,.06);overflow:hidden}.lvr-vertical.lvr-border .label-value-tr{border-right:1px solid rgba(5,5,5,.06)}.lvr-vertical.lvr-border .box-grad-col:not(.label-value-last-tr){border-bottom:1px solid rgba(5,5,5,.06)}.lvr-vertical.lvr-border .label-value-label{align-items:center;background-color:rgba(0,0,0,.02);border-bottom:1px solid rgba(5,5,5,.06);display:flex;font-weight:400}.lvr-vertical.lvr-border .label-value-value{align-items:center;display:flex}.lvr-vertical.lvr-border.lvr-size-default .label-value-label,.lvr-vertical.lvr-border.lvr-size-default .label-value-value{padding:8px 10px}.lvr-vertical.lvr-border.lvr-size-small{font-size:12px}.lvr-vertical.lvr-border.lvr-size-small .label-value-label,.lvr-vertical.lvr-border.lvr-size-small .label-value-value{padding:5px 10px}.dark-theme .label-value-render.lvr-border .label-value-label{background-color:#232323}.dark-theme .label-value-render .label-value-value:hover{background-color:#191919}
@@ -6,5 +6,5 @@ import './../text-symbol-wrapper/index.css';
6
6
  import './../tips-wrapper/index.css';
7
7
  import './index.css';
8
8
  /*! @flatjs/forge MIT @flatbiz/antd */
9
- import{hooks as e}from"@wove/react/cjs/hooks";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{_ as l}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useState as i,useMemo as t,Fragment as a}from"react";import{arrayTotal as s,isUndefinedOrNull as n}from"@flatbiz/utils";import{BoxGrid as o}from"../box-grid/index.js";import{fbaHooks as u}from"../fba-hooks/index.js";import{TextOverflow as m}from"../text-overflow/index.js";import{TextSymbolWrapper as p}from"../text-symbol-wrapper/index.js";import{TipsWrapper as d}from"../tips-wrapper/index.js";import{jsx as f,jsxs as v}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-number";import"ahooks";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"antd";import"@dimjs/lang/cjs/is-string";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var c=function e(r){var i=[];var t=0;var a=[];for(var n=0;n<r.length;n++){var o=r[n];var u=o.grid;var m=l({},o,{grid:u});if(t+u<=24&&u>0){t+=u;a.push(m)}else{i.push(a);t=u;a=[m]}}if(a.length>0){i.push(a)}if(i.length>0){i=i.map((function(e,r){if(e.length===1){e[0].grid=24}else{var l=s(e,"grid");var t=e[e.length-1];if(l<24){t.grid=24-l+t.grid}}if(r===i.length-1){return e.map((function(e){e.isLast=true;return e}))}return e}))}var p=[];i.forEach((function(e){p=p.concat(e)}));return p};var x=function s(x){var g=u.useResponsivePoint()||"";var h=i(),b=h[0],j=h[1];var y=x.column,w=x.forceColumn,k=x.labelAlign,B=x.labelWidth,N=x.options,C=x.border,P=x.width,R=x.size;var S=n(x.ellipsis)?true:x.ellipsis;var T=y&&[1,2,3,4,6].includes(y)?y:4;var q=!C?g==="xs"||b==="xs":false;var z=t((function(){if(w){var e=24/w;return{xs:e,sm:e,md:e,lg:e,xl:e,xxl:e}}var r={1:{xs:24,sm:24,md:24,lg:24,xl:24,xxl:24},2:{xs:24,sm:12,md:12,lg:12,xl:12,xxl:12},3:{xs:24,sm:12,md:12,lg:8,xl:8,xxl:8},4:{xs:24,sm:12,md:12,lg:6,xl:6,xxl:6},6:{xs:24,sm:12,md:8,lg:6,xl:4,xxl:4}};return r[T]}),[T,w]);var E=t((function(){if(!b)return undefined;var e=[];N.forEach((function(r){if(!r.hidden){var i=undefined;if(r.span){var t=r.span>T?T:r.span;i=t*(24/T);if(b==="xs"){i=24}else if(b==="sm"){i=i>12?i:12}}e.push(l({},r,{grid:i?i:z[b]}))}}));return c(e.filter(Boolean))}),[b,T,z,N]);var L=C?"":":";var _=function e(){return E==null?void 0:E.map((function(e,i){var t=n(e.ellipsis)?S:e.ellipsis;var s=q?undefined:B||100;var u=""+e.label+L;if(e.tips&&t){u=f(d,{tipType:"tooltip",tooltipProps:{title:e.tips},children:f(m,{text:u})})}else if(e.tips){u=f(d,{tipType:"tooltip",tooltipProps:{title:e.tips},children:u})}else if(t){u=f(m,{text:u})}return f(o.Col,l({},z,{span:e.grid,className:r("label-value-tr",{"label-value-last-tr":e.isLast}),children:v(a,{children:[f("span",{className:"label-value-label",style:l({width:s},x.labelStyle),children:e.required?f(p,{text:u,symbolType:"required"}):u}),t?f("span",{className:"label-value-value",style:x.valueStyle,children:f(m,{text:e.value})}):f("span",{className:"label-value-value",style:l({wordBreak:"break-all"},x.valueStyle),children:e.value})]})}),i)})).filter(Boolean)};var A=e.useCallbackRef((function(e){j(e)}));var H=t((function(){if(["xs","sm"].includes(g)||!P){return{}}return{width:P}}),[g,P]);var O=function(){if(k)return k;if(q||C)return"left";return"right"}();return f(o.Row,{style:l({},H,x.style),className:r("label-value-render","label-value-render-"+O,{"label-value-render-border":C,"label-value-render-vertical":q,"label-value-render-small":R==="small"},x.className),gutter:C?[0,0]:[30,0],onBoxBreakpointChange:A,children:_()})};export{x as LabelValueRender};
9
+ import{hooks as r}from"@wove/react/cjs/hooks";import{classNames as e}from"@dimjs/utils/cjs/class-names";import{_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{useState as l,useMemo as t}from"react";import{arrayTotal as n,isUndefinedOrNull as a,isNumber as s}from"@flatbiz/utils";import{BoxGrid as o}from"../box-grid/index.js";import{fbaHooks as u}from"../fba-hooks/index.js";import{TextOverflow as p}from"../text-overflow/index.js";import{TextSymbolWrapper as f}from"../text-symbol-wrapper/index.js";import{TipsWrapper as m}from"../tips-wrapper/index.js";import{jsx as v,jsxs as c}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-number";import"ahooks";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"antd";import"@dimjs/lang/cjs/is-string";import"@ant-design/icons/es/icons/QuestionCircleOutlined";var d=function r(e){var l=[];var t=0;var a=[];for(var s=0;s<e.length;s++){var o=e[s];var u=o.grid;var p=i({},o,{grid:u});if(t+u<=24&&u>0){t+=u;a.push(p)}else{l.push(a);t=u;a=[p]}}if(a.length>0){l.push(a)}if(l.length>0){l=l.map((function(r,e){if(r.length===1){r[0].grid=24}else{var i=n(r,"grid");var t=r[r.length-1];if(i<24){t.grid=24-i+t.grid}}if(e===l.length-1){return r.map((function(r){r.isLast=true;return r}))}return r}))}var f=[];l.forEach((function(r){f=f.concat(r)}));return f};var x=function n(x){var h=u.useResponsivePoint()||"";var g=l(),b=g[0],j=g[1];var k=x.column,y=x.forceColumn,C=x.labelAlign,w=x.labelWidth,z=x.options,B=x.border,N=x.bordered,P=x.width,R=x.size,S=R===void 0?"default":R,T=x.direction,q=T===void 0?"auto":T,E=x.gutter;var L=k&&[1,2,3,4,6].includes(k)?k:4;var _=!a(N)?N:B;var A=t((function(){if(q==="horizontal"||q==="vertical")return q;if(h==="xs"||b==="xs")return"vertical";return"horizontal"}),[b,q,h]);var H=t((function(){if(A==="vertical")return true;return a(x.ellipsis)?true:x.ellipsis}),[A,x.ellipsis]);var O=w?s(w)?w+"px":w:"100px";var Q=t((function(){if(y){var r=24/y;return{xs:r,sm:r,md:r,lg:r,xl:r,xxl:r}}var e={1:{xs:24,sm:24,md:24,lg:24,xl:24,xxl:24},2:{xs:24,sm:12,md:12,lg:12,xl:12,xxl:12},3:{xs:24,sm:12,md:12,lg:8,xl:8,xxl:8},4:{xs:24,sm:12,md:12,lg:6,xl:6,xxl:6},6:{xs:24,sm:12,md:8,lg:6,xl:4,xxl:4}};return e[L]}),[L,y]);var W=t((function(){if(!b)return undefined;var r=[];z.forEach((function(e){if(!e.hidden){var l=undefined;if(e.span){var t=e.span>L?L:e.span;l=t*(24/L);if(b==="xs"){l=24}else if(b==="sm"){l=l>12?l:12}}r.push(i({},e,{grid:l?l:Q[b]}))}}));return d(r.filter(Boolean))}),[b,L,Q,z]);var D=_?"":":";var F=function r(){return W==null?void 0:W.map((function(r,l){var t=A==="vertical"?true:a(r.ellipsis)?H:r.ellipsis;var n=""+r.label+D;if(r.tips&&t){n=v(m,{tipType:"tooltip",tooltipProps:{title:r.tips},children:v(p,{text:n})})}else if(r.tips){n=v(m,{tipType:"tooltip",tooltipProps:{title:r.tips},children:n})}else if(t){n=v(p,{text:n})}return c(o.Col,i({},Q,{span:r.grid,className:e("label-value-tr",{"label-value-last-tr":r.isLast}),children:[v("span",{className:"label-value-label",style:x.labelStyle,children:r.required?v(f,{text:n,symbolType:"required"}):n}),t?v("span",{className:"label-value-value",style:x.valueStyle,onClick:r.onClick,children:v(p,{text:r.value,onClick:r.onClick})}):v("span",{className:"label-value-value",style:i({wordBreak:"break-all"},x.valueStyle),children:r.onClick?v("a",{onClick:r.onClick,children:r.value}):r.value})]}),l)})).filter(Boolean)};var G=r.useCallbackRef((function(r){j(r)}));var I=t((function(){if(["xs","sm"].includes(h)||!P){return{}}return{width:P}}),[h,P]);var J=function(){if(C)return C;if(_)return"left";if(A==="horizontal")return"right";return"left"}();return v(o.Row,{style:i({},I,x.style,{"--lvr-label-width":A==="horizontal"?O:undefined}),className:e("label-value-render","lvr-"+A,"lvr-size-"+S,"lvr-label-"+J,{"lvr-border":_},x.className),gutter:_?[0,0]:E||[10,0],onBoxBreakpointChange:G,children:F()})};export{x as LabelValueRender};
10
10
  //# sourceMappingURL=index.js.map
@@ -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, Fragment, ReactElement, useMemo, useState } from 'react';\n\nimport { isUndefinedOrNull } 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 /** 超过宽度将自动省略,默认值:true */\n ellipsis?: boolean;\n /** 是否添加边框 */\n border?: boolean;\n /** label对齐方式 */\n labelAlign?: 'left' | 'right' | 'center';\n /** label 宽度,默认值:100 */\n labelWidth?: number;\n width?: number;\n /** label 样式 */\n labelStyle?: CSSProperties;\n /** value 样式 */\n valueStyle?: CSSProperties;\n size?: 'default' | 'small';\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 { column, forceColumn, labelAlign, labelWidth, options, border, width, size } = props;\n\n const ellipsis = isUndefinedOrNull(props.ellipsis) ? true : props.ellipsis;\n\n const columnNew = column && [1, 2, 3, 4, 6].includes(column) ? column : 4;\n\n const isVertical = !border ? screenType === 'xs' || breakpoint === 'xs' : false;\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 = border ? '' : ':';\n\n const getFormRowChildren = () => {\n return renderList\n ?.map((item, index) => {\n const ellipsisFt = isUndefinedOrNull(item.ellipsis) ? ellipsis : item.ellipsis;\n\n const width = isVertical ? undefined : labelWidth || 100;\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} />\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} />;\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 {/* {!item.replenish ? ( */}\n <Fragment>\n <span className=\"label-value-label\" style={{ width, ...props.labelStyle }}>\n {item.required ? (\n <TextSymbolWrapper text={labelContent} symbolType=\"required\" />\n ) : (\n labelContent\n )}\n </span>\n {ellipsisFt ? (\n <span className=\"label-value-value\" style={props.valueStyle}>\n <TextOverflow text={item.value as string} />\n </span>\n ) : (\n <span\n className=\"label-value-value\"\n style={{\n wordBreak: 'break-all',\n ...props.valueStyle,\n }}\n >\n {item.value}\n </span>\n )}\n </Fragment>\n {/* ) : (\n <Fragment />\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 (isVertical || border) return 'left';\n return 'right';\n })();\n\n return (\n <BoxGrid.Row\n style={{ ...innerStyle, ...props.style }}\n className={classNames(\n 'label-value-render',\n `label-value-render-${align}`,\n {\n 'label-value-render-border': border,\n 'label-value-render-vertical': isVertical,\n 'label-value-render-small': size === 'small',\n },\n props.className,\n )}\n gutter={border ? [0, 0] : [30, 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","width","size","ellipsis","isUndefinedOrNull","columnNew","includes","isVertical","gridSize","useMemo","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","BoxGrid","Col","className","_classNames","_jsxs","Fragment","style","labelStyle","required","TextSymbolWrapper","symbolType","valueStyle","value","wordBreak","onBoxBreakpointChange","_hooks","useCallbackRef","innerStyle","align","Row","gutter"],"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\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} />\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} />;\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 ? (\n <span className=\"label-value-value\" style={props.valueStyle} onClick={item.onClick}>\n <TextOverflow text={item.value as string} onClick={item.onClick} />\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","_jsxs","BoxGrid","Col","className","_classNames","style","labelStyle","required","TextSymbolWrapper","symbolType","valueStyle","onClick","value","wordBreak","onBoxBreakpointChange","_hooks","useCallbackRef","innerStyle","align","Row"],"mappings":"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"}
@@ -13,5 +13,5 @@ import './../tag-list-render/index.css';
13
13
  import './../tag-list-select/index.css';
14
14
  import './index.css';
15
15
  /*! @flatjs/forge MIT @flatbiz/antd */
16
- import{isString as r}from"@dimjs/lang/cjs/is-string";import{isObject as e}from"@dimjs/lang/cjs/is-object";import{get as n}from"@dimjs/utils/cjs/get";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isEmpty as o}from"@dimjs/lang/cjs/is-empty";import{isNumber as a,isUndefinedOrNull as l,getStrByteLen as u,cutString as s,flatbizDate as d,flatbizPrice as c}from"@flatbiz/utils";import{Tooltip as f,Space as m,Badge as p}from"antd";import{Fragment as v}from"react";import{ButtonOperate as j}from"../button-operate/index.js";import{TagListRender as g}from"../tag-list-render/index.js";import{jsx as h}from"react/jsx-runtime";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"../button-wrapper/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-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";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"@dimjs/lang/cjs/is-null";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";var x=function r(e,n){return function(r){if(o(r)||r==="")return n;if(a(r))return r;var t=r.toString();var i=l(e)?10:e;var d=u(t);if(d<=i*2){return t}return h(f,{placement:"topLeft",title:t,children:s(t,i*2)})}};var C=function r(e){return function(r,n,t){var o=e(n,t);return h(j,i({},o))}};var w=function r(e,n){return function(r){if(o(r)||r==="")return n;try{return d.format(new Date(r),e)}catch(e){return r||n}}};var b=function r(e,n){return function(r,t,i){if(n&&e){return(e-1)*n+i+1}return i+1}};var y=function r(e){return function(r,n,t){var i=(e==null?void 0:e())||{},o=i.pageNo,a=i.pageSize;if(a&&o){return(o-1)*a+t+1}return t+1}};var k=function r(e,n,t){return function(r){if(l(r))return null;return h(g,i({dataList:e,colorMap:n,value:r,forceMatch:false},t))}};var N=function r(i,o){return function(r){if(t(r)){var a=n(r,i,o);if(!a)return"";if(e(a))return JSON.stringify(a);return a}return r||o}};var V=function r(e){var n=e!=null&&e.hideBgColor?"":"table-fen-color";return function(r){if(l(r)||r===""){if(l(e==null?void 0:e.defaultValue))return undefined;if(a(e==null?void 0:e.defaultValue)){return h("span",{className:n,children:c.format(e==null?void 0:e.defaultValue)})}return h("span",{className:n,children:e==null?void 0:e.defaultValue})}if(!a(r))return r;var t=c.fen2yuan(r);return h("span",{className:n,children:c.format(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false})})}};var O=function r(e){var n=(e==null?void 0:e.showBgColor)===true?"table-wan-color":"";return function(r){if(l(r)||r===""){if(l(e==null?void 0:e.defaultValue))return undefined;if(a(e==null?void 0:e.defaultValue)){return h("span",{className:n,children:c.format(e==null?void 0:e.defaultValue)})}return h("span",{className:n,children:e==null?void 0:e.defaultValue})}if(!a(r))return r;var t=c.fen2wan(r);var i=e!=null&&e.removeTailZero?c.removeTailZero(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false}):c.format(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false});return h("span",{className:n,children:i})}};var S=function e(n){return function(e,t){var i=n==null?void 0:n(t);if(!i)return h(v,{children:e});var o=l(i.showData)?true:i.showData;var a=l(i.notOverflowShowExtra)?true:i.notOverflowShowExtra;var u=l(i.showMaxNumber)?10:i.showMaxNumber;var d=i.extraPosition?i.extraPosition:"after";var c=r(e)?s(e,u*2):e;if(i.extra&&o){if(c===e&&!a){return e}var f=[h("span",{children:c},"1"),h(v,{children:i.extra},"2")];var p=d==="before"?f.reverse():f;return h(m,{onClick:i.onClick,style:{cursor:i.onClick?"pointer":undefined},size:5,children:p.map((function(r,e){return h(v,{children:r},e)}))})}return h("span",{onClick:i.onClick,children:i.extra})}};var z=function r(e,n){return function(r){if(!r)return null;var t=e.find((function(e){return e.value===r}));if(t)return h(p,{color:(t==null?void 0:t.color)||(n==null?void 0:n[r])||"rgba(0, 0, 0, 0.25)",text:t==null?void 0:t.label});return r}};var M=function r(e,n){return function(r,t){if(!r)return n;return h("a",{onClick:e.bind(null,t),href:"javascript:void(0);",children:r})}};var D={extraContentRender:S,indexCell:b,serialNumberCell:y,dateCell:w,operateCell:C,tooltipCell:x,selectorCell:k,objectCell:N,fen2yuanCell:V,fen2wanCell:O,badgeCell:z,clickCell:M};export{D as tableCellRender};
16
+ import{isString as r}from"@dimjs/lang/cjs/is-string";import{isObject as e}from"@dimjs/lang/cjs/is-object";import{get as n}from"@dimjs/utils/cjs/get";import{isPlainObject as t}from"@dimjs/lang/cjs/is-plain-object";import{_ as i}from"../_rollupPluginBabelHelpers-a0769acd.js";import{isEmpty as o}from"@dimjs/lang/cjs/is-empty";import{isNumber as a,isUndefinedOrNull as l,getStrByteLen as u,cutString as s,flatbizDate as d,flatbizPrice as c}from"@flatbiz/utils";import{Tooltip as f,Space as m,Badge as p}from"antd";import{Fragment as v}from"react";import{ButtonOperate as j}from"../button-operate/index.js";import{TagListRender as g}from"../tag-list-render/index.js";import{jsx as h}from"react/jsx-runtime";import"@ant-design/icons/es/icons/MoreOutlined";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/utils/cjs/class-names";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"../button-wrapper/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-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/extend";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"@dimjs/lang/cjs/is-null";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";var x=function r(e,n){return function(r){if(o(r)||r==="")return n;if(a(r))return r;var t=r.toString();var i=l(e)?10:e;var d=u(t);if(d<=i*2){return t}return h(f,{placement:"topLeft",title:t,children:s(t,i*2)})}};var C=function r(e){return function(r,n,t){var o=e(n,t);return h(j,i({},o))}};var w=function r(e,n){return function(r){if(o(r)||r==="")return n;try{return d.format(new Date(r),e)}catch(e){return r||n}}};var b=function r(e,n){return function(r,t,i){if(n&&e){return(e-1)*n+i+1}return i+1}};var y=function r(e){return function(r,n,t){var i=(e==null?void 0:e())||{},o=i.pageNo,a=i.pageSize;if(a&&o){return(o-1)*a+t+1}return t+1}};var k=function r(e,n,t){return function(r){if(l(r))return null;return h(g,i({dataList:e,colorMap:n,value:r,forceMatch:false},t))}};var N=function r(i,o){return function(r){if(t(r)){var a=n(r,i,o);if(!a)return"";if(e(a))return JSON.stringify(a);return a}return r||o}};var V=function r(e){var n=e!=null&&e.hideBgColor?"":"table-fen-color";return function(r){if(l(r)||r===""){if(l(e==null?void 0:e.defaultValue))return undefined;if(a(e==null?void 0:e.defaultValue)){return h("span",{className:n,children:c.format(e==null?void 0:e.defaultValue)})}return h("span",{className:n,children:e==null?void 0:e.defaultValue})}if(!a(r))return r;var t=c.fen2yuan(r);return h("span",{className:n,children:c.format(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false})})}};var O=function r(e){var n=(e==null?void 0:e.showBgColor)===true?"table-wan-color":"";return function(r){if(l(r)||r===""){if(l(e==null?void 0:e.defaultValue))return undefined;if(a(e==null?void 0:e.defaultValue)){return h("span",{className:n,children:c.format(e==null?void 0:e.defaultValue)})}return h("span",{className:n,children:e==null?void 0:e.defaultValue})}if(!a(r))return r;var t=c.fen2wan(r);var i=e!=null&&e.removeTailZero?c.removeTailZero(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false}):c.format(t,e==null?void 0:e.defaultValue,{separator:(e==null?void 0:e.separator)||false});return h("span",{className:n,children:i})}};var S=function e(n){return function(e,t){var i=n==null?void 0:n(t);if(!i)return h(v,{children:e});var o=l(i.showData)?true:i.showData;var a=l(i.notOverflowShowExtra)?true:i.notOverflowShowExtra;var u=l(i.showMaxNumber)?10:i.showMaxNumber;var d=i.extraPosition?i.extraPosition:"after";var c=r(e)?s(e,u*2):e;if(i.extra&&o){if(c===e&&!a){return e}var f=[h("span",{children:c},"1"),h(v,{children:i.extra},"2")];var p=d==="before"?f.reverse():f;return h(m,{onClick:i.onClick,style:{cursor:i.onClick?"pointer":undefined},size:5,children:p.map((function(r,e){return h(v,{children:r},e)}))})}return h("span",{onClick:i.onClick,children:i.extra})}};var z=function r(e,n){return function(r){if(!r)return null;var t=e.find((function(e){return e.value===r}));if(t)return h(p,{color:(t==null?void 0:t.color)||(n==null?void 0:n[r])||"rgba(0, 0, 0, 0.25)",text:t==null?void 0:t.label});return r}};var M=function r(e,n){return function(r,t){if(!r)return n;return h("a",{onClick:e.bind(null,t),children:r})}};var D={extraContentRender:S,indexCell:b,serialNumberCell:y,dateCell:w,operateCell:C,tooltipCell:x,selectorCell:k,objectCell:N,fen2yuanCell:V,fen2wanCell:O,badgeCell:z,clickCell:M};export{D as tableCellRender};
17
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/table-cell-render/cell-render.tsx"],"sourcesContent":["import { isEmpty, isObject, isPlainObject, isString } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport {\n cutString,\n DateFormatType,\n flatbizDate,\n flatbizPrice,\n getStrByteLen,\n isNumber,\n isUndefinedOrNull,\n TAny,\n TPlainObject,\n} from '@flatbiz/utils';\nimport { Badge, Space, Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonOperate, ButtonOperateProps } from '../button-operate';\nimport { TagListRender } from '../tag-list-render';\nimport { TagListSelectProps, TagListSelectValue } from '../tag-list-select';\nimport './style.less';\n\nconst tableColumnTooltipRender = (showMaxNumber?: number, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n if (isNumber(value)) return value;\n const colunmText = value.toString();\n const maxNumber = (isUndefinedOrNull(showMaxNumber) ? 10 : showMaxNumber) as number;\n const strByteLen = getStrByteLen(colunmText);\n if (strByteLen <= maxNumber * 2) {\n return colunmText;\n }\n return (\n <Tooltip placement=\"topLeft\" title={colunmText}>\n {cutString(colunmText, maxNumber * 2)}\n </Tooltip>\n );\n };\n};\n\nconst tableColumnOperateRender = (options: (item: TAny, index: number) => ButtonOperateProps) => {\n return (_value: string | number, record, index: number) => {\n const operateProps = options(record, index);\n return <ButtonOperate {...operateProps} />;\n };\n};\n\nconst tableColumnDateRender = (dateFormatType?: DateFormatType, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n try {\n return flatbizDate.format(new Date(value), dateFormatType);\n } catch (error) {\n return value || defaultValue;\n }\n };\n};\n\n/**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @param pageSize\n * @param pageNo\n * @returns\n */\nconst tableColumnIndexRender = (pageNo?: number, pageSize?: number) => {\n return (_value, _record, index: number) => {\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\nconst tableColumnIndexRender2 = (method?: () => { pageNo?: number; pageSize?: number }) => {\n return (_value, _record, index: number) => {\n const { pageNo, pageSize } = method?.() || {};\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\n\nconst tableColumnSelectorRender = (\n selectorList: TagListSelectProps['dataList'],\n colorMap?: TagListSelectProps['colorMap'],\n options?: {\n /** 最大显示Tag数量,超出折叠隐藏 */\n maxShowCount?: number;\n /** 触发maxShowCount后,被折叠的内容是否显示完整tag,默认值:false */\n foldShowAllTag?: boolean;\n },\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n return (\n <TagListRender\n dataList={selectorList}\n colorMap={colorMap}\n value={value}\n forceMatch={false}\n {...options}\n />\n );\n };\n};\n\nconst tableColumnObjectRender = (key: string, defaultValue?: string) => {\n return (value?: TPlainObject) => {\n if (isPlainObject(value)) {\n const target = get(value, key, defaultValue);\n if (!target) return '';\n if (isObject(target)) return JSON.stringify(target);\n return target;\n }\n return value || defaultValue;\n };\n};\n\nconst tableColumnFen2yuanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色 */\n hideBgColor?: boolean;\n}) => {\n const className = options?.hideBgColor ? '' : 'table-fen-color';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2yuan(value);\n return (\n <span className={className}>\n {flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false })}\n </span>\n );\n };\n};\n\nconst tableColumnFen2wanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色,默认:false */\n showBgColor?: boolean;\n /** 移除小数点后末尾零 */\n removeTailZero?: boolean;\n}) => {\n const className = options?.showBgColor === true ? 'table-wan-color' : '';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2wan(value);\n const amountNew = options?.removeTailZero\n ? flatbizPrice.removeTailZero(amount, options?.defaultValue, {\n separator: options?.separator || false,\n })\n : flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false });\n return <span className={className}>{amountNew}</span>;\n };\n};\n\ntype TableColumnIconRenderProps = {\n /** 额外内容,一般为Icon */\n extra: ReactElement;\n extraPosition?: 'before' | 'after';\n onClick?: (e) => void;\n /** 是否显示原单元格数据,默认值:true */\n showData?: boolean;\n /** 溢出显示【...】, 最大长度(默认:20个字节) */\n showMaxNumber?: number;\n /** 未溢出显示【extra】配置,默认值:true */\n notOverflowShowExtra?: boolean;\n};\n\nconst tableColumnExtraContentRender = (handle: (item: TPlainObject) => TableColumnIconRenderProps) => {\n return (value: TAny, item: TPlainObject) => {\n const options = handle?.(item);\n if (!options) return <Fragment>{value}</Fragment>;\n const showData = isUndefinedOrNull(options.showData) ? true : options.showData;\n const notOverflowShowExtra = isUndefinedOrNull(options.notOverflowShowExtra)\n ? true\n : options.notOverflowShowExtra;\n const showMaxNumber = isUndefinedOrNull(options.showMaxNumber) ? 10 : (options.showMaxNumber as number);\n const extraPosition = options.extraPosition ? options.extraPosition : 'after';\n const renderValue = isString(value) ? cutString(value, showMaxNumber * 2) : value;\n\n if (options.extra && showData) {\n if (renderValue === value && !notOverflowShowExtra) {\n return value;\n }\n const spaceContent = [<span key=\"1\">{renderValue}</span>, <Fragment key=\"2\">{options.extra}</Fragment>];\n const spaceContentRender = extraPosition === 'before' ? spaceContent.reverse() : spaceContent;\n return (\n <Space onClick={options.onClick} style={{ cursor: options.onClick ? 'pointer' : undefined }} size={5}>\n {spaceContentRender.map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n );\n }\n return <span onClick={options.onClick}>{options.extra}</span>;\n };\n};\n\nconst tableColumnBadgeRender = (\n selectorList: { label: string; value: TagListSelectValue; color?: string }[],\n colorMap?: Record<string | string, string>,\n) => {\n return (value?: TAny) => {\n if (!value) return null;\n const target = selectorList.find((item) => item.value === value);\n if (target)\n return (\n <Badge color={target?.color || colorMap?.[value] || 'rgba(0, 0, 0, 0.25)'} text={target?.label} />\n );\n return value;\n };\n};\n\nconst tableColumnClickRender = (onClick: (record: TPlainObject, e) => void, defaultValue?: string) => {\n return (value: TAny, record: TPlainObject) => {\n if (!value) return defaultValue;\n return (\n <a onClick={onClick.bind(null, record)} href=\"javascript:void(0);\">\n {value}\n </a>\n );\n };\n};\n\nexport const tableCellRender = {\n /**\n * 表格单元格 拼接额外内容渲染\n * ```\n * 1. extra 额外内容\n * 2. showData 是否显示原单元格数据,默认值:true\n * 3. showMaxNumber 显示最大长度,作用于原单元格字符串数据\n *\n *\n * 结合table column render 使用\n * # 在单元格渲染文字右侧添加图标\n * render: tableCellRender.extraContentRender(() => {\n * return {\n * extra: <FullscreenOutlined />,\n * onClick: () => { ... },\n * };\n * }),\n * ```\n */\n extraContentRender: tableColumnExtraContentRender,\n /**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @deprecated 已过时 4.3.0版本移除,请使用 serialNumberCell\n */\n indexCell: tableColumnIndexRender,\n /**\n * table 序号展示,如果存在pageSize、pageNo参数可分页展示累加序号,否则每页都从1开始\n * ```\n * render: tableCellRender.serialNumberCell(() => {\n * return { pageNo,pageSize };\n * }),\n * ```\n */\n serialNumberCell: tableColumnIndexRender2,\n /**\n * 表格日期格式数据渲染,默认格式:YYYY-MM-DD\n * ```\n * 独立使用\n * tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')\n * render: (value) => {\n * return tableCellRender.dateCell('YYYY-MM-DD')(value);\n * }\n * ```\n */\n dateCell: tableColumnDateRender,\n /**\n * table操作栏目渲染\n * ```\n * 使用方式\n * tableCellRender.operateCell((item) => ({\n * operateList: [\n * {\n * text: '编辑',\n * onClick: onItemOperate.bind(null, 'update', item),\n * },\n * {\n * text: '删除',\n * needConfirm: true,\n * confirmMessage: '确定要删除吗?',\n * onClick: onItemOperate.bind(null, 'delete', item),\n * },\n * ],\n * }))\n * ```\n */\n operateCell: tableColumnOperateRender,\n /**\n * 实现字段超出隐藏,默认长度10个字符\n * @deprecated 已过期,请使用 TextOverflow 组件实现\n * ```\n * 1. showMaxNumber: 显示最大长度\n * 2. 会讲字符转出字节进行计算显示\n * ```\n */\n tooltipCell: tableColumnTooltipRender,\n /**\n * Tag格式数据渲染,可结合枚举定义数据\n * ```\n * 独立使用\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n * tableCellRender.selectorCell(taskTypeEnumList)(value);\n *\n *\n * 结合table column render 使用\n * render: tableCellRender.selectorCell(taskTypeEnumList);\n * render: tableCellRender.selectorCell([{ label: '已开启', value: 1 ]);\n * render: (value) => {\n * return tableCellRender.selectorCell([{ label: '已开启', value: 1 ])(value);\n * }\n *\n * 其中value值可以是单个值或者数组;例如:'1' 或者 ['1', '2']\n * ```\n */\n selectorCell: tableColumnSelectorRender,\n /**\n * 单元格对象数据处理,支持多级处理\n * ```\n * tableCellRender.objectCell('a.b.c')\n * ```\n */\n objectCell: tableColumnObjectRender,\n /**\n * 分金额展示,入参分,显示元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. hideBgColor:隐藏背景颜色\n *\n * 例如:\n * fen2yuanCell()(100090) => 1000.90\n * fen2yuanCell({separator: true})(100090) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2yuanCell: tableColumnFen2yuanCellRender,\n /**\n * 分金额展示,入参分,显示万元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. showBgColor:隐藏背景颜色\n * 4. removeTailZero:移除小数点后末尾零\n *\n * 例如:\n * fen2yuanCell()(1000900000) => 1000.90\n * fen2yuanCell({separator: true})(1000900000) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2wanCell: tableColumnFen2wanCellRender,\n /**\n * 单元格徽标展示数据\n * ```\n * 1. badge 默认颜色:灰色rgba(0, 0, 0, 0.25)\n *\n * 独立使用\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.badgeCell([{ label: '已开启', value: 1 ])\n * render: (value) => {\n * return tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * }\n * ```\n */\n badgeCell: tableColumnBadgeRender,\n /**\n * 单元格点击事件\n * ```\n * 独立使用\n * tableCellRender.clickCell(onClick)(value, record)\n *\n * 结合table column render 使用\n * render: tableCellRender.clickCell(onClick)\n * render: (value, record) => {\n * return tableCellRender.clickCell(onClick)(value, record)\n * }\n * ```\n */\n clickCell: tableColumnClickRender,\n};\n"],"names":["tableColumnTooltipRender","showMaxNumber","defaultValue","value","_isEmpty","isNumber","colunmText","toString","maxNumber","isUndefinedOrNull","strByteLen","getStrByteLen","_jsx","Tooltip","placement","title","children","cutString","tableColumnOperateRender","options","_value","record","index","operateProps","ButtonOperate","_extends","tableColumnDateRender","dateFormatType","flatbizDate","format","Date","error","tableColumnIndexRender","pageNo","pageSize","_record","tableColumnIndexRender2","method","_ref","tableColumnSelectorRender","selectorList","colorMap","TagListRender","dataList","forceMatch","tableColumnObjectRender","key","_isPlainObject","target","_get","_isObject","JSON","stringify","tableColumnFen2yuanCellRender","className","hideBgColor","undefined","flatbizPrice","amount","fen2yuan","separator","tableColumnFen2wanCellRender","showBgColor","fen2wan","amountNew","removeTailZero","tableColumnExtraContentRender","handle","item","Fragment","showData","notOverflowShowExtra","extraPosition","renderValue","_isString","extra","spaceContent","spaceContentRender","reverse","Space","onClick","style","cursor","size","map","tableColumnBadgeRender","find","Badge","color","text","label","tableColumnClickRender","bind","href","tableCellRender","extraContentRender","indexCell","serialNumberCell","dateCell","operateCell","tooltipCell","selectorCell","objectCell","fen2yuanCell","fen2wanCell","badgeCell","clickCell"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/table-cell-render/cell-render.tsx"],"sourcesContent":["import { isEmpty, isObject, isPlainObject, isString } from '@dimjs/lang';\nimport { get } from '@dimjs/utils';\nimport {\n cutString,\n DateFormatType,\n flatbizDate,\n flatbizPrice,\n getStrByteLen,\n isNumber,\n isUndefinedOrNull,\n TAny,\n TPlainObject,\n} from '@flatbiz/utils';\nimport { Badge, Space, Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonOperate, ButtonOperateProps } from '../button-operate';\nimport { TagListRender } from '../tag-list-render';\nimport { TagListSelectProps, TagListSelectValue } from '../tag-list-select';\nimport './style.less';\n\nconst tableColumnTooltipRender = (showMaxNumber?: number, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n if (isNumber(value)) return value;\n const colunmText = value.toString();\n const maxNumber = (isUndefinedOrNull(showMaxNumber) ? 10 : showMaxNumber) as number;\n const strByteLen = getStrByteLen(colunmText);\n if (strByteLen <= maxNumber * 2) {\n return colunmText;\n }\n return (\n <Tooltip placement=\"topLeft\" title={colunmText}>\n {cutString(colunmText, maxNumber * 2)}\n </Tooltip>\n );\n };\n};\n\nconst tableColumnOperateRender = (options: (item: TAny, index: number) => ButtonOperateProps) => {\n return (_value: string | number, record, index: number) => {\n const operateProps = options(record, index);\n return <ButtonOperate {...operateProps} />;\n };\n};\n\nconst tableColumnDateRender = (dateFormatType?: DateFormatType, defaultValue?: string) => {\n return (value: string | number) => {\n if (isEmpty(value) || value === '') return defaultValue;\n try {\n return flatbizDate.format(new Date(value), dateFormatType);\n } catch (error) {\n return value || defaultValue;\n }\n };\n};\n\n/**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @param pageSize\n * @param pageNo\n * @returns\n */\nconst tableColumnIndexRender = (pageNo?: number, pageSize?: number) => {\n return (_value, _record, index: number) => {\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\nconst tableColumnIndexRender2 = (method?: () => { pageNo?: number; pageSize?: number }) => {\n return (_value, _record, index: number) => {\n const { pageNo, pageSize } = method?.() || {};\n if (pageSize && pageNo) {\n return (pageNo - 1) * pageSize + index + 1;\n }\n return index + 1;\n };\n};\n\nconst tableColumnSelectorRender = (\n selectorList: TagListSelectProps['dataList'],\n colorMap?: TagListSelectProps['colorMap'],\n options?: {\n /** 最大显示Tag数量,超出折叠隐藏 */\n maxShowCount?: number;\n /** 触发maxShowCount后,被折叠的内容是否显示完整tag,默认值:false */\n foldShowAllTag?: boolean;\n },\n) => {\n return (value?: TAny) => {\n if (isUndefinedOrNull(value)) return null;\n return (\n <TagListRender\n dataList={selectorList}\n colorMap={colorMap}\n value={value}\n forceMatch={false}\n {...options}\n />\n );\n };\n};\n\nconst tableColumnObjectRender = (key: string, defaultValue?: string) => {\n return (value?: TPlainObject) => {\n if (isPlainObject(value)) {\n const target = get(value, key, defaultValue);\n if (!target) return '';\n if (isObject(target)) return JSON.stringify(target);\n return target;\n }\n return value || defaultValue;\n };\n};\n\nconst tableColumnFen2yuanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色 */\n hideBgColor?: boolean;\n}) => {\n const className = options?.hideBgColor ? '' : 'table-fen-color';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2yuan(value);\n return (\n <span className={className}>\n {flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false })}\n </span>\n );\n };\n};\n\nconst tableColumnFen2wanCellRender = (options?: {\n /** 是否显示分隔符,默认值:false */\n separator?: boolean;\n defaultValue?: string | number;\n /** 隐藏背景颜色,默认:false */\n showBgColor?: boolean;\n /** 移除小数点后末尾零 */\n removeTailZero?: boolean;\n}) => {\n const className = options?.showBgColor === true ? 'table-wan-color' : '';\n return (value?: string | number) => {\n if (isUndefinedOrNull(value) || value === '') {\n if (isUndefinedOrNull(options?.defaultValue)) return undefined;\n if (isNumber(options?.defaultValue as string | number)) {\n return <span className={className}>{flatbizPrice.format(options?.defaultValue)}</span>;\n }\n return <span className={className}>{options?.defaultValue}</span>;\n }\n if (!isNumber(value as number | string)) return value;\n const amount = flatbizPrice.fen2wan(value);\n const amountNew = options?.removeTailZero\n ? flatbizPrice.removeTailZero(amount, options?.defaultValue, {\n separator: options?.separator || false,\n })\n : flatbizPrice.format(amount, options?.defaultValue, { separator: options?.separator || false });\n return <span className={className}>{amountNew}</span>;\n };\n};\n\ntype TableColumnIconRenderProps = {\n /** 额外内容,一般为Icon */\n extra: ReactElement;\n extraPosition?: 'before' | 'after';\n onClick?: (e) => void;\n /** 是否显示原单元格数据,默认值:true */\n showData?: boolean;\n /** 溢出显示【...】, 最大长度(默认:20个字节) */\n showMaxNumber?: number;\n /** 未溢出显示【extra】配置,默认值:true */\n notOverflowShowExtra?: boolean;\n};\n\nconst tableColumnExtraContentRender = (handle: (item: TPlainObject) => TableColumnIconRenderProps) => {\n return (value: TAny, item: TPlainObject) => {\n const options = handle?.(item);\n if (!options) return <Fragment>{value}</Fragment>;\n const showData = isUndefinedOrNull(options.showData) ? true : options.showData;\n const notOverflowShowExtra = isUndefinedOrNull(options.notOverflowShowExtra)\n ? true\n : options.notOverflowShowExtra;\n const showMaxNumber = isUndefinedOrNull(options.showMaxNumber) ? 10 : (options.showMaxNumber as number);\n const extraPosition = options.extraPosition ? options.extraPosition : 'after';\n const renderValue = isString(value) ? cutString(value, showMaxNumber * 2) : value;\n\n if (options.extra && showData) {\n if (renderValue === value && !notOverflowShowExtra) {\n return value;\n }\n const spaceContent = [<span key=\"1\">{renderValue}</span>, <Fragment key=\"2\">{options.extra}</Fragment>];\n const spaceContentRender = extraPosition === 'before' ? spaceContent.reverse() : spaceContent;\n return (\n <Space onClick={options.onClick} style={{ cursor: options.onClick ? 'pointer' : undefined }} size={5}>\n {spaceContentRender.map((item, index) => {\n return <Fragment key={index}>{item}</Fragment>;\n })}\n </Space>\n );\n }\n return <span onClick={options.onClick}>{options.extra}</span>;\n };\n};\n\nconst tableColumnBadgeRender = (\n selectorList: { label: string; value: TagListSelectValue; color?: string }[],\n colorMap?: Record<string | string, string>,\n) => {\n return (value?: TAny) => {\n if (!value) return null;\n const target = selectorList.find((item) => item.value === value);\n if (target)\n return (\n <Badge color={target?.color || colorMap?.[value] || 'rgba(0, 0, 0, 0.25)'} text={target?.label} />\n );\n return value;\n };\n};\n\nconst tableColumnClickRender = (onClick: (record: TPlainObject, e) => void, defaultValue?: string) => {\n return (value: TAny, record: TPlainObject) => {\n if (!value) return defaultValue;\n return <a onClick={onClick.bind(null, record)}>{value}</a>;\n };\n};\n\nexport const tableCellRender = {\n /**\n * 表格单元格 拼接额外内容渲染\n * ```\n * 1. extra 额外内容\n * 2. showData 是否显示原单元格数据,默认值:true\n * 3. showMaxNumber 显示最大长度,作用于原单元格字符串数据\n *\n *\n * 结合table column render 使用\n * # 在单元格渲染文字右侧添加图标\n * render: tableCellRender.extraContentRender(() => {\n * return {\n * extra: <FullscreenOutlined />,\n * onClick: () => { ... },\n * };\n * }),\n * ```\n */\n extraContentRender: tableColumnExtraContentRender,\n /**\n * table 索引展示,如果存在pageSize、pageNo参数可分页展示索引,否则每页都从1开始\n * @deprecated 已过时 4.3.0版本移除,请使用 serialNumberCell\n */\n indexCell: tableColumnIndexRender,\n /**\n * table 序号展示,如果存在pageSize、pageNo参数可分页展示累加序号,否则每页都从1开始\n * ```\n * render: tableCellRender.serialNumberCell(() => {\n * return { pageNo,pageSize };\n * }),\n * ```\n */\n serialNumberCell: tableColumnIndexRender2,\n /**\n * 表格日期格式数据渲染,默认格式:YYYY-MM-DD\n * ```\n * 独立使用\n * tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.dateCell('YYYY-MM-DD hh:mm:ss')\n * render: (value) => {\n * return tableCellRender.dateCell('YYYY-MM-DD')(value);\n * }\n * ```\n */\n dateCell: tableColumnDateRender,\n /**\n * table操作栏目渲染\n * ```\n * 使用方式\n * tableCellRender.operateCell((item) => ({\n * operateList: [\n * {\n * text: '编辑',\n * onClick: onItemOperate.bind(null, 'update', item),\n * },\n * {\n * text: '删除',\n * needConfirm: true,\n * confirmMessage: '确定要删除吗?',\n * onClick: onItemOperate.bind(null, 'delete', item),\n * },\n * ],\n * }))\n * ```\n */\n operateCell: tableColumnOperateRender,\n /**\n * 实现字段超出隐藏,默认长度10个字符\n * @deprecated 已过期,请使用 TextOverflow 组件实现\n * ```\n * 1. showMaxNumber: 显示最大长度\n * 2. 会讲字符转出字节进行计算显示\n * ```\n */\n tooltipCell: tableColumnTooltipRender,\n /**\n * Tag格式数据渲染,可结合枚举定义数据\n * ```\n * 独立使用\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.selectorCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n * tableCellRender.selectorCell(taskTypeEnumList)(value);\n *\n *\n * 结合table column render 使用\n * render: tableCellRender.selectorCell(taskTypeEnumList);\n * render: tableCellRender.selectorCell([{ label: '已开启', value: 1 ]);\n * render: (value) => {\n * return tableCellRender.selectorCell([{ label: '已开启', value: 1 ])(value);\n * }\n *\n * 其中value值可以是单个值或者数组;例如:'1' 或者 ['1', '2']\n * ```\n */\n selectorCell: tableColumnSelectorRender,\n /**\n * 单元格对象数据处理,支持多级处理\n * ```\n * tableCellRender.objectCell('a.b.c')\n * ```\n */\n objectCell: tableColumnObjectRender,\n /**\n * 分金额展示,入参分,显示元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. hideBgColor:隐藏背景颜色\n *\n * 例如:\n * fen2yuanCell()(100090) => 1000.90\n * fen2yuanCell({separator: true})(100090) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2yuanCell: tableColumnFen2yuanCellRender,\n /**\n * 分金额展示,入参分,显示万元(默认添加千分位)\n * ```\n * 可配置\n * 1. separator:是否显示千分位分隔符,默认值:false\n * 2. defaultValue:当值为空默认展示\n * 3. showBgColor:隐藏背景颜色\n * 4. removeTailZero:移除小数点后末尾零\n *\n * 例如:\n * fen2yuanCell()(1000900000) => 1000.90\n * fen2yuanCell({separator: true})(1000900000) => 1,000.90\n * fen2yuanCell()('abc') => abc\n * fen2yuanCell({defaultValue: '--'})('') => --\n * fen2yuanCell()('') => undefined\n * fen2yuanCell({ defaultValue: 0 })('') => 0.00\n * ```\n */\n fen2wanCell: tableColumnFen2wanCellRender,\n /**\n * 单元格徽标展示数据\n * ```\n * 1. badge 默认颜色:灰色rgba(0, 0, 0, 0.25)\n *\n * 独立使用\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1, color: '#108ee9' }])(value)\n * tableCellRender.badgeCell([{ label: '已开启', value: 1 }], { 1: '#108ee9' })(value)\n *\n * 结合table column render 使用\n * render: tableCellRender.badgeCell([{ label: '已开启', value: 1 ])\n * render: (value) => {\n * return tableCellRender.badgeCell([{ label: '已开启', value: 1 ])(value)\n * }\n * ```\n */\n badgeCell: tableColumnBadgeRender,\n /**\n * 单元格点击事件\n * ```\n * 独立使用\n * tableCellRender.clickCell(onClick)(value, record)\n *\n * 结合table column render 使用\n * render: tableCellRender.clickCell(onClick)\n * render: (value, record) => {\n * return tableCellRender.clickCell(onClick)(value, record)\n * }\n * ```\n */\n clickCell: tableColumnClickRender,\n};\n"],"names":["tableColumnTooltipRender","showMaxNumber","defaultValue","value","_isEmpty","isNumber","colunmText","toString","maxNumber","isUndefinedOrNull","strByteLen","getStrByteLen","_jsx","Tooltip","placement","title","children","cutString","tableColumnOperateRender","options","_value","record","index","operateProps","ButtonOperate","_extends","tableColumnDateRender","dateFormatType","flatbizDate","format","Date","error","tableColumnIndexRender","pageNo","pageSize","_record","tableColumnIndexRender2","method","_ref","tableColumnSelectorRender","selectorList","colorMap","TagListRender","dataList","forceMatch","tableColumnObjectRender","key","_isPlainObject","target","_get","_isObject","JSON","stringify","tableColumnFen2yuanCellRender","className","hideBgColor","undefined","flatbizPrice","amount","fen2yuan","separator","tableColumnFen2wanCellRender","showBgColor","fen2wan","amountNew","removeTailZero","tableColumnExtraContentRender","handle","item","Fragment","showData","notOverflowShowExtra","extraPosition","renderValue","_isString","extra","spaceContent","spaceContentRender","reverse","Space","onClick","style","cursor","size","map","tableColumnBadgeRender","find","Badge","color","text","label","tableColumnClickRender","bind","tableCellRender","extraContentRender","indexCell","serialNumberCell","dateCell","operateCell","tooltipCell","selectorCell","objectCell","fen2yuanCell","fen2wanCell","badgeCell","clickCell"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-responsive-point-21b8c601.js","sources":["@flatbiz/antd/src/fba-hooks/use-responsive-point.ts"],"sourcesContent":["import { Grid } from 'antd';\nimport { useMemo } from 'react';\n\n/**\n * 获取响应式节点\n * xs < 576px\n * sm ≥ 576px\n * md ≥ 768px\n * lg ≥ 992px\n * xl ≥ 1200px\n * xxl ≥ 1600px\n */\nexport const useResponsivePoint = () => {\n const screens = Grid.useBreakpoint();\n return useMemo(() => {\n const filter = Object.keys(screens).filter((key) => {\n return screens[key] === true;\n });\n const order = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\n const targetIndex = order.findIndex((key) => filter.includes(key));\n return order[targetIndex] as string | undefined;\n }, [screens]);\n};\n"],"names":["useResponsivePoint","screens","Grid","useBreakpoint","useMemo","filter","Object","keys","key","order","targetIndex","findIndex","includes"],"mappings":";gEAYaA,EAAqB,SAArBA,IACX,IAAMC,EAAUC,EAAKC,gBACrB,OAAOC,GAAQ,WACb,IAAMC,EAASC,OAAOC,KAAKN,GAASI,QAAO,SAACG,GAC1C,OAAOP,EAAQO,KAAS,IAC1B,IACA,IAAMC,EAAQ,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAC9C,IAAMC,EAAcD,EAAME,WAAU,SAACH,GAAG,OAAKH,EAAOO,SAASJ,MAC7D,OAAOC,EAAMC,EACf,GAAG,CAACT,GACN"}
1
+ {"version":3,"file":"use-responsive-point-21b8c601.js","sources":["@flatbiz/antd/src/fba-hooks/use-responsive-point.ts"],"sourcesContent":["import { Grid } from 'antd';\nimport { useMemo } from 'react';\n\n/**\n * 获取响应式节点\n * ```\n * xs < 576px\n * sm ≥ 576px\n * md ≥ 768px\n * lg ≥ 992px\n * xl ≥ 1200px\n * xxl ≥ 1600px\n * ```\n */\nexport const useResponsivePoint = () => {\n const screens = Grid.useBreakpoint();\n return useMemo(() => {\n const filter = Object.keys(screens).filter((key) => {\n return screens[key] === true;\n });\n const order = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\n const targetIndex = order.findIndex((key) => filter.includes(key));\n return order[targetIndex] as string | undefined;\n }, [screens]);\n};\n"],"names":["useResponsivePoint","screens","Grid","useBreakpoint","useMemo","filter","Object","keys","key","order","targetIndex","findIndex","includes"],"mappings":";gEAcaA,EAAqB,SAArBA,IACX,IAAMC,EAAUC,EAAKC,gBACrB,OAAOC,GAAQ,WACb,IAAMC,EAASC,OAAOC,KAAKN,GAASI,QAAO,SAACG,GAC1C,OAAOP,EAAQO,KAAS,IAC1B,IACA,IAAMC,EAAQ,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAC9C,IAAMC,EAAcD,EAAME,WAAU,SAACH,GAAG,OAAKH,EAAOO,SAASJ,MAC7D,OAAOC,EAAMC,EACf,GAAG,CAACT,GACN"}
package/index.d.ts CHANGED
@@ -919,9 +919,9 @@ export type DatePickerWrapperProps = Omit<PickerDateProps<TAny>, "value" | "onCh
919
919
  /** 可自定义格式 */
920
920
  format?: TDayjsDateType;
921
921
  /** value 输出适配 */
922
- outputNormalize?: (value?: any) => any;
922
+ outputNormalize?: (value?: TAny) => TAny;
923
923
  /** value 输入适配 */
924
- inputNormalize?: (value?: any) => string | undefined;
924
+ inputNormalize?: (value?: TAny) => string | undefined;
925
925
  };
926
926
  /**
927
927
  * DatePicker包装组件
@@ -2163,6 +2163,9 @@ export type EasyFormProps = Omit<FormWrapperProps, "children"> & {
2163
2163
  * <FormItemWrapper name="field6" label="条件6" span={24}>
2164
2164
  * <Input placeholder="请输入" allowClear={true} />
2165
2165
  * </FormItemWrapper>
2166
+ * <FormItemWrapper noStyle span={24}>
2167
+ * <Button>按钮</Buttone>
2168
+ * </FormItemWrapper>
2166
2169
  * </EasyForm>
2167
2170
  * ```
2168
2171
  */
@@ -2203,7 +2206,7 @@ export type TEasyTableTableColumn<T> = ColumnsType<T>[0] & {
2203
2206
  * 3. respData为异步返回数据
2204
2207
  * ```
2205
2208
  */
2206
- asyncRender?: (value: any, record: T, index: number, respData?: any) => React.ReactNode;
2209
+ asyncRender?: (value: TAny, record: T, index: number, respData?: TAny) => React.ReactNode;
2207
2210
  };
2208
2211
  export type EasyTableServiceConfig = {
2209
2212
  /** 接口配置 */
@@ -2358,7 +2361,7 @@ export type EasyTableProps = {
2358
2361
  */
2359
2362
  asyncColumnRequest?: {
2360
2363
  dataIndex: string;
2361
- onRequest: () => Promise<any>;
2364
+ onRequest: () => Promise<TAny>;
2362
2365
  }[];
2363
2366
  /**
2364
2367
  * 调用接口前自定义判断,返回Promise.resolve才能发起查询操作
@@ -2403,6 +2406,15 @@ export type EasyTableRefApi = {
2403
2406
  columnFoldTriggerRender: (children: ReactElement) => ReactElement;
2404
2407
  /** 查询loading状态 */
2405
2408
  loading?: boolean;
2409
+ /**
2410
+ * 更新 table columns 数据
2411
+ * ```
2412
+ * 1. 不要在初始化阶段使用
2413
+ * 2. 初始化阶段使用 EasyTable.serviceConfig.dynamicColumsAdapter 实现动态表格列
2414
+ * ```
2415
+ */
2416
+ onChangeTableColumns: (columns: TEasyTableTableColumn<TPlainObject>[]) => void;
2417
+ getTableColumns: () => TEasyTableTableColumn<TPlainObject>[];
2406
2418
  };
2407
2419
  export type FormOperateColProps = {
2408
2420
  className?: string;
@@ -2484,6 +2496,15 @@ export type EasyTableTableProps<T> = Omit<TableProps<TAny>, "dataSource" | "load
2484
2496
  tableWrapperStyle?: CSSProperties;
2485
2497
  /** table Form 外层 SimpleLayout className */
2486
2498
  tableWrapperClassName?: string;
2499
+ /**
2500
+ * 初始化配置有效果,如果为动态字段,可在 中实现
2501
+ * ```
2502
+ * 动态表格列实现
2503
+ * 1. 初始阶段,通过 EasyTable.serviceConfig.dynamicColumsAdapter 实现
2504
+ * demo: https://fex.qa.tcshuke.com/docs/admin/main/crud/easy-table
2505
+ * 2. 非初始阶段,通过 EasyTableRef.onChangeTableColumns 实现
2506
+ * ```
2507
+ */
2487
2508
  columns: TEasyTableTableColumn<T>[];
2488
2509
  /**
2489
2510
  * 数据加载与表格初始化渲染 是否同步
@@ -2528,9 +2549,9 @@ export declare const EasyTable: import("react").ForwardRefExoticComponent<EasyTa
2528
2549
  * <FormItemWrapper name="field1" label="条件1">xxx</FormItemWrapper>
2529
2550
  * </EasyTable.Filter>
2530
2551
  *
2531
- * -- 自定义网格布局 使用 FormCol组件包装 FormItemWrapper
2552
+ * -- 自定义网格布局 使用 FormGrid.Col 组件包装 FormItemWrapper
2532
2553
  * <EasyTable.Filter>
2533
- * <FormCol span={12}><FormItemWrapper name="field1" label="条件1">xxx</FormItemWrapper></FormCol>
2554
+ * <FormGrid.Col span={12}><FormItemWrapper name="field1" label="条件1">xxx</FormItemWrapper></FormGrid.Col>
2534
2555
  * </EasyTable.Filter>
2535
2556
  *
2536
2557
  * -- children 可为 function
@@ -3384,6 +3405,8 @@ export type TLabelValueItem = {
3384
3405
  required?: boolean;
3385
3406
  /** 添加说明标签 */
3386
3407
  tips?: string;
3408
+ /** value 点击事件 */
3409
+ onClick?: (e: any) => void;
3387
3410
  };
3388
3411
  export type LabelValueRenderProps = {
3389
3412
  className?: string;
@@ -3422,20 +3445,47 @@ export type LabelValueRenderProps = {
3422
3445
  forceColumn?: 1 | 2 | 3 | 4 | 6;
3423
3446
  /** 数据源配置 */
3424
3447
  options: TLabelValueItem[];
3425
- /** 超过宽度将自动省略,默认值:true */
3448
+ /**
3449
+ * 超过宽度将自动省略,默认值:true
3450
+ * ```
3451
+ * 1. 当 direction = vertical时,强制为true
3452
+ * ```
3453
+ */
3426
3454
  ellipsis?: boolean;
3427
- /** 是否添加边框 */
3455
+ /**
3456
+ * 是否添加边框
3457
+ * @deprecated 已过期,请使用 bordered
3458
+ */
3428
3459
  border?: boolean;
3460
+ /** 是否添加边框 */
3461
+ bordered?: boolean;
3429
3462
  /** label对齐方式 */
3430
3463
  labelAlign?: "left" | "right" | "center";
3431
3464
  /** label 宽度,默认值:100 */
3432
- labelWidth?: number;
3465
+ labelWidth?: number | "auto";
3433
3466
  width?: number;
3434
3467
  /** label 样式 */
3435
3468
  labelStyle?: CSSProperties;
3436
3469
  /** value 样式 */
3437
3470
  valueStyle?: CSSProperties;
3438
3471
  size?: "default" | "small";
3472
+ /**
3473
+ * label&value 方向布局
3474
+ * ```
3475
+ * 1. auto表示当响应式为xs(小屏幕)时为vertical,其他情况为horizontal
3476
+ * ```
3477
+ */
3478
+ direction?: "vertical" | "horizontal" | "auto";
3479
+ /**
3480
+ * 网格布局间距,默认值:[10, 0]
3481
+ * ```
3482
+ * 1. border = true 无效
3483
+ * ```
3484
+ */
3485
+ gutter?: [
3486
+ number,
3487
+ number
3488
+ ];
3439
3489
  };
3440
3490
  /**
3441
3491
  * label+value 列表布局
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flatbiz/antd",
3
- "version": "4.5.5",
3
+ "version": "4.5.7",
4
4
  "description": "flat-biz ui components",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",