@flatbiz/antd 4.5.4 → 4.5.6

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":";2cAqDaA,EAAyB,SAAzBA,EAA0BC,GACrC,IACEC,EAQED,EARFC,MACAC,EAOEF,EAPFE,SACAC,EAMEH,EANFG,MACAC,EAKEJ,EALFI,OACcC,EAIZL,EAJFM,aACAC,EAGEP,EAHFO,gBACAC,EAEER,EAFFQ,eACGC,EAAUC,EACXV,EAAKW,GACT,IAAAC,EACEZ,EAAMa,oBAAsB,CAAE,EADxBC,EAAOF,EAAPE,QAASC,EAAOH,EAAPG,QAASC,EAAOJ,EAAPI,QAASC,EAAgBL,EAAhBK,iBAAkBC,EAAkBN,EAAlBM,mBAAoBC,EAAkBP,EAAlBO,mBAEzE,IAAMC,EAAqBL,EAAUM,EAAMN,GAAWO,UACtD,IAAMC,EAAqBP,EAAUK,EAAML,GAAWM,UAEtD,IAAAE,EAA0BC,EAAqB,MAAxCC,EAAKF,EAAA,GAAEG,EAAQH,EAAA,GACtB,IAAAI,EAAkCH,EAAqB,MAAhDI,EAASD,EAAA,GAAEE,EAAYF,EAAA,GAE9B,IAAAG,EAAuBC,GAAQ,WAC7B,GAAIxB,EAAgB,CAClB,OAAOA,EAAeP,IAAU,EAClC,CACA,OAAOA,GAAS,EAClB,GAAG,CAACA,IALGgC,EAAKF,EAAA,GAAEG,EAAKH,EAAA,GAMnB,IAAMI,EAAmBH,GAAQ,WAC/B,GAAIC,GAASC,EAAO,CAClB,IAAME,EAAWC,EAAYC,cAAcL,GAC3C,IAAMM,EAAWF,EAAYC,cAAcJ,GAC3C,MAAO,CAACb,EAAMe,GAAWf,EAAMkB,GACjC,CACA,OAAOjB,SACT,GAAG,CAACW,EAAOC,IAEX,IAAMM,EAAeR,GAAQ,WAC3B,GAAI5B,EAAQ,OAAOA,EACnB,GAAIJ,EAAMyC,WAAa,KAAM,OAAOC,EAAkBC,OACtD,OAAOD,EAAkBE,GAC1B,GAAE,CAAC5C,EAAMyC,SAAUrC,IAEpB,IAAMyC,EAAeC,EAAMC,gBAAe,SAACrB,EAAOsB,GAChD,GAAItB,GAASA,EAAM,IAAMA,EAAM,GAAI,CACjC,GAAInB,EAAiB,CACnBL,eAAAA,EAAWK,EAAgByC,GAC7B,KAAO,CACL9C,GAAAA,UAAAA,EAAAA,EAAW8C,EACb,CACF,KAAO,CACL9C,GAAAA,UAAAA,EAAAA,EAAWoB,UACb,CACF,IAEA,IAAM2B,EAAkBH,EAAMC,gBAAe,SAACG,GAC5C,IAAMC,EAAcD,EAAQ9C,OAAOsC,EAAkBE,KACrD,IAAK5C,EAAMa,mBAAoB,CAC7B,OAAO,KACT,CACA,GAAIO,GAAsBG,EAAoB,CAC5C,IACGc,EAAYe,GACXD,EACA/B,EAAmBhB,OAAOsC,EAAkBE,KAC5CrB,EAAmBnB,OAAOsC,EAAkBE,MAE9C,CACA,OAAO,IACT,CACD,MAAM,GAAIxB,EAAoB,CAC7B,IAAKiB,EAAYgB,IAAIF,EAAa/B,EAAmBhB,OAAOsC,EAAkBE,MAAO,CACnF,OAAO,IACT,CACD,MAAM,GAAIrB,EAAoB,CAC7B,IAAKc,EAAYgB,IAAI9B,EAAmBnB,OAAOsC,EAAkBE,KAAMO,GAAc,CACnF,OAAO,IACT,CACF,CAEA,IAAKrC,KAAaY,GAAK,MAALA,EAAQ,OAAOA,GAAAA,MAAAA,EAAQ,IAAK,CAC5C,OAAO,KACT,CAEA,IAAM4B,GAAU5B,GAAK,UAAA,EAALA,EAAQ,KAAMwB,EAAQK,KAAK7B,EAAM,GAAI,QAAUZ,EAAU,EACzE,IAAM0C,GAAW9B,GAAK,UAAA,EAALA,EAAQ,KAAMA,EAAM,GAAG6B,KAAKL,EAAS,QAAUpC,EAAU,EAC1E,QAAS0C,KAAcF,CACzB,IAEA,IAAMhD,EAAe,SAAfA,EAAgBmD,GACpB,GAAI3C,GAAWA,EAAU,EAAG,CAC1B,GAAI2C,EAAM,CACR3B,EAAa,CAAC,KAAM,OACpBH,EAAS,CAAC,KAAM,MAClB,KAAO,CACLG,EAAa,KACf,CACF,CACAzB,GAAAA,UAAAA,EAAAA,EAAmBoD,IAGrB,IAAMC,EAAkBZ,EAAMC,gBAAe,SAACG,GAC5C,IAAMS,EAAU,CACdC,YAAaxC,EACbyC,YAAatC,EACbN,iBAAAA,EACAC,mBAAAA,EACAC,mBAAAA,GAEF+B,EAAUA,GAAW7B,EAAMY,GAAS,IAAI6B,MACxC,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,EAAWC,YAAWC,EAAA,CACrBC,aAAcxB,EACdyB,aAAchB,GACVjD,EAAU,CACdL,OAAQoC,EACRrC,MAAKqE,EAAA,CAAIG,MAAO,QAAWxE,GAC3BF,MAAO4B,GAAaM,EACpBjC,SAAU2C,EACVvC,aAAcA,EACdsE,iBAAkB,SAAAA,EAACC,GAAG,OAAKlD,EAASkD,EAAkB,IAG5D"}
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-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":"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"}
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 * -- 自定义网格布局 使用 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 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 * -- 自定义网格布局 使用 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","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":"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"}
@@ -9,5 +9,5 @@ import './../flex-layout/index.css';
9
9
  import './../text-symbol-wrapper/index.css';
10
10
  import './index.css';
11
11
  /*! @flatjs/forge MIT @flatbiz/antd */
12
- import{classNames as e}from"@dimjs/utils/cjs/class-names";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{toArray as r,getUuid as i}from"@flatbiz/utils";import{Form as n,Empty as o}from"antd";import{useRef as l,Fragment as a}from"react";import{ButtonWrapper as s}from"../button-wrapper/index.js";import{FormItemGroup as m}from"../form-item-group/index.js";import{TextSymbolWrapper as d}from"../text-symbol-wrapper/index.js";import{jsx as p,jsxs as u}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";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"../flex-layout/index.js";var c=function e(t){if(t.wrapper)return t.wrapper({children:t.children});return t.children};var f=function e(r){var i,n;return p(m.HorizontalUnion,t({},r.formListItemTitleHProps,{style:t({marginBottom:10},(i=r.formListItemTitleHProps)==null?void 0:i.style),groupConfigList:((n=r.formListItemTitleList)==null?void 0:n.map((function(e){if(e.required){return{width:e.width,mainItem:p("div",{style:{textAlign:"center"},children:p(d,{text:e.title,symbolType:"required"})})}}return{width:e.width,mainItem:p("div",{style:{textAlign:"center"},children:e.title})}})))||[]}))};var h=function m(d){var h=[].concat(d.prevCompleteName,r(d.name));var g=n.useFormInstance();var y=l([]);var j=d.uidFieldName||"uid";var v=n.useWatch(h,g);var x=d.itemGap?d.itemGap/2:8;return p("div",{className:e("form-list-wrapper",d.className),style:d.style,children:p(n.List,{name:d.name,rules:d.rules,children:function e(r,l,m){var w;var L=m.errors;y.current=r;return u("div",{style:{borderRadius:"6px",border:L!=null&&L.length?"1px solid #ff4d4f":"1px solid transparent"},children:[(w=d.formListItemTitleList)!=null&&w.length?p(f,{formListItemTitleList:d.formListItemTitleList,formListItemTitleHProps:d.formListItemTitleHorizontalUnionProps}):null,!d.hiddenEmptyRender&&!(v!=null&&v.length)?p(o,{image:o.PRESENTED_IMAGE_SIMPLE,style:{margin:"15px 0"}}):null,u(a,{children:[p(c,{wrapper:d.formListChildrenWrapper,children:p(a,{children:r.map((function(e,t){var r=[].concat(h,[e.name]);return p("div",{className:"form-list-item-content",style:{padding:x+"px 0 "+x+"px 0"},children:d.children({formListFieldData:e,operation:l,formStageCompleteName:r,prevCompleteName:h,index:t,getInsideFormItemName:function t(r){return[e.name,r]},getInsideFormItemData:function e(){return g.getFieldValue(r)},uidKey:j})},e.key)}))})}),d.onCustomAddRowButton?d.onCustomAddRowButton(l):p(s,{hidden:d.hiddenAddRowButton,type:"dashed",block:true,onClick:function e(){var r;return l.add(t((r={},r[j]=i(),r),d.getAddRowDefaultValues==null?void 0:d.getAddRowDefaultValues()))},children:"添加"}),p(n.ErrorList,{errors:L!=null&&L.length?[p("div",{style:{color:"#ff4d4f",padding:"5px"},children:L},"0")]:undefined})]})]})}})})};export{h as FormListWrapper};
12
+ import{classNames as e}from"@dimjs/utils/cjs/class-names";import{_ as t}from"../_rollupPluginBabelHelpers-a0769acd.js";import{toArray as r,getUuid as i}from"@flatbiz/utils";import{Form as n,Empty as o}from"antd";import{useRef as l,Fragment as a}from"react";import{ButtonWrapper as s}from"../button-wrapper/index.js";import{FormItemGroup as m}from"../form-item-group/index.js";import{TextSymbolWrapper as d}from"../text-symbol-wrapper/index.js";import{jsx as p,jsxs as u}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";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"../flex-layout/index.js";var c=function e(t){if(t.wrapper)return t.wrapper({children:t.children});return t.children};var f=function e(r){var i,n;return p(m.HorizontalUnion,t({},r.formListItemTitleHProps,{style:t({marginBottom:10},(i=r.formListItemTitleHProps)==null?void 0:i.style),groupConfigList:((n=r.formListItemTitleList)==null?void 0:n.map((function(e){if(e.required){return{width:e.width,mainItem:p("div",{style:{textAlign:"center"},children:p(d,{text:e.title,symbolType:"required"})})}}return{width:e.width,mainItem:p("div",{style:{textAlign:"center"},children:e.title})}})))||[]}))};var h=function m(d){var h=[].concat(d.prevCompleteName,r(d.name));var g=n.useFormInstance();var y=l([]);var j=d.uidFieldName||"uid";var v=n.useWatch(h,g);var x=d.itemGap?d.itemGap/2:8;return p("div",{className:e("form-list-wrapper",d.className),style:d.style,children:p(n.List,{name:d.name,rules:d.rules,children:function e(l,m,w){var L;var I=w.errors;y.current=l;return u("div",{style:{borderRadius:"6px",border:I!=null&&I.length?"1px solid #ff4d4f":"1px solid transparent"},children:[(L=d.formListItemTitleList)!=null&&L.length?p(f,{formListItemTitleList:d.formListItemTitleList,formListItemTitleHProps:d.formListItemTitleHorizontalUnionProps}):null,!d.hiddenEmptyRender&&!(v!=null&&v.length)?p(o,{image:o.PRESENTED_IMAGE_SIMPLE,style:{margin:"15px 0"}}):null,u(a,{children:[p(c,{wrapper:d.formListChildrenWrapper,children:p(a,{children:l.map((function(e,t){var i=[].concat(h,[e.name]);return p("div",{className:"form-list-item-content",style:{padding:x+"px 0 "+x+"px 0"},children:d.children({formListFieldData:e,operation:m,formStageCompleteName:i,prevCompleteName:h,index:t,getInsideFormItemName:function t(i){var n=r(i);return[e.name].concat(n)},getInsideFormItemData:function e(){return g.getFieldValue(i)},uidKey:j})},e.key)}))})}),d.onCustomAddRowButton?d.onCustomAddRowButton(m):p(s,{hidden:d.hiddenAddRowButton,type:"dashed",block:true,onClick:function e(){var r;return m.add(t((r={},r[j]=i(),r),d.getAddRowDefaultValues==null?void 0:d.getAddRowDefaultValues()))},children:"添加"}),p(n.ErrorList,{errors:I!=null&&I.length?[p("div",{style:{color:"#ff4d4f",padding:"5px"},children:I},"0")]:undefined})]})]})}})})};export{h as FormListWrapper};
13
13
  //# sourceMappingURL=index.js.map