dinocollab-core 2.2.13 → 2.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/dist/data-surface/index.js +1 -1
  2. package/dist/form/index.js +1 -1
  3. package/dist/src/components/image-with-fallback.js +1 -1
  4. package/dist/src/components/image-with-fallback.js.map +1 -1
  5. package/dist/src/data-surface/button-switch.js +1 -1
  6. package/dist/src/data-surface/button-switch.js.map +1 -1
  7. package/dist/src/data-surface/helpers.js +1 -1
  8. package/dist/src/data-surface/helpers.js.map +1 -1
  9. package/dist/src/data-surface/ui.units.js +1 -1
  10. package/dist/src/data-surface/ui.units.js.map +1 -1
  11. package/dist/src/filter-bar/components/chip-viewer.js +1 -1
  12. package/dist/src/filter-bar/components/chip-viewer.js.map +1 -1
  13. package/dist/src/filter-bar/components/filter-input.mobile.js +1 -1
  14. package/dist/src/filter-bar/components/filter-input.mobile.js.map +1 -1
  15. package/dist/src/filter-bar/components/filter-summary.js +1 -1
  16. package/dist/src/filter-bar/components/filter-summary.js.map +1 -1
  17. package/dist/src/filter-bar/components/popper-custom.js +1 -1
  18. package/dist/src/filter-bar/components/popper-custom.js.map +1 -1
  19. package/dist/src/filter-bar/components/ui.units.js +1 -1
  20. package/dist/src/filter-bar/components/ui.units.js.map +1 -1
  21. package/dist/src/filter-bar/convert-to-graphql.js +1 -1
  22. package/dist/src/filter-bar/convert-to-graphql.js.map +1 -1
  23. package/dist/src/filter-bar/index.create.js +1 -1
  24. package/dist/src/filter-bar/index.create.js.map +1 -1
  25. package/dist/src/filter-bar/index.dino.js +1 -1
  26. package/dist/src/filter-bar/index.dino.js.map +1 -1
  27. package/dist/src/filter-bar/menu/create-form-field-datetime.js +2 -0
  28. package/dist/src/filter-bar/menu/create-form-field-datetime.js.map +1 -0
  29. package/dist/src/filter-bar/menu/create-form-field-select-multiple.js +1 -1
  30. package/dist/src/filter-bar/menu/create-form-field-select-multiple.js.map +1 -1
  31. package/dist/src/filter-bar/menu/create-form-field-select.js +1 -1
  32. package/dist/src/filter-bar/menu/create-form-field-select.js.map +1 -1
  33. package/dist/src/filter-bar/menu/create-form-field-string.js +1 -1
  34. package/dist/src/filter-bar/menu/create-form-field-string.js.map +1 -1
  35. package/dist/src/filter-bar/menu/create.js +1 -1
  36. package/dist/src/filter-bar/menu/create.js.map +1 -1
  37. package/dist/src/filter-bar/types.js.map +1 -1
  38. package/dist/src/form/create.date-expired.js +1 -1
  39. package/dist/src/form/create.date-expired.js.map +1 -1
  40. package/dist/src/form/create.form-base.js +1 -1
  41. package/dist/src/form/create.form-base.js.map +1 -1
  42. package/dist/src/form/create.form-grid-layout.js +1 -1
  43. package/dist/src/form/create.form-grid-layout.js.map +1 -1
  44. package/dist/src/form/create.form-grid-layout.units.js +1 -1
  45. package/dist/src/form/create.form-grid-layout.units.js.map +1 -1
  46. package/dist/src/form/create.select-simple.js +1 -1
  47. package/dist/src/form/create.select-simple.js.map +1 -1
  48. package/dist/src/form/create.select-with-api.js +1 -1
  49. package/dist/src/form/create.select-with-api.js.map +1 -1
  50. package/dist/src/form/dino-form.js.map +1 -1
  51. package/dist/src/table/create.table.js +1 -1
  52. package/dist/src/table/create.table.js.map +1 -1
  53. package/dist/src/table/helpers.js +1 -1
  54. package/dist/src/table/helpers.js.map +1 -1
  55. package/dist/src/table/styled.js +2 -0
  56. package/dist/src/table/styled.js.map +1 -0
  57. package/dist/src/table/toolbar-pannel.js +1 -1
  58. package/dist/src/table/toolbar-pannel.js.map +1 -1
  59. package/dist/src/utils/helpers.js +1 -1
  60. package/dist/src/utils/helpers.js.map +1 -1
  61. package/dist/table/index.js +1 -1
  62. package/dist/types/components/image-with-fallback.d.ts +7 -2
  63. package/dist/types/data-surface/button-switch.d.ts +1 -0
  64. package/dist/types/data-surface/helpers.d.ts +5 -3
  65. package/dist/types/data-surface/ui.units.d.ts +4 -2
  66. package/dist/types/data-view/dino.d.ts +1 -1
  67. package/dist/types/data-view/query-param-url.d.ts +1 -1
  68. package/dist/types/filter-bar/components/filter-summary.types.d.ts +2 -1
  69. package/dist/types/filter-bar/components/hint-icon.types.d.ts +1 -1
  70. package/dist/types/filter-bar/components/popper-custom.d.ts +1 -0
  71. package/dist/types/filter-bar/components/ui.units.d.ts +8 -1
  72. package/dist/types/filter-bar/index.d.ts +2 -0
  73. package/dist/types/filter-bar/index.dino.d.ts +2 -0
  74. package/dist/types/filter-bar/menu/create-form-field-datetime.d.ts +53 -0
  75. package/dist/types/filter-bar/menu/create-form-field-select-multiple.d.ts +17 -0
  76. package/dist/types/filter-bar/menu/create-form-field-select.d.ts +17 -0
  77. package/dist/types/filter-bar/menu/create-form-field-string.d.ts +16 -0
  78. package/dist/types/filter-bar/menu/create.d.ts +17 -0
  79. package/dist/types/filter-bar/menu/types.d.ts +6 -1
  80. package/dist/types/filter-bar/types.d.ts +3 -0
  81. package/dist/types/form/create.date-expired.d.ts +10 -5
  82. package/dist/types/form/create.form-base.d.ts +1 -0
  83. package/dist/types/form/create.form-grid-layout.d.ts +6 -4
  84. package/dist/types/form/create.form-grid-layout.units.d.ts +12 -6
  85. package/dist/types/form/create.select-simple.d.ts +13 -3
  86. package/dist/types/form/create.select-with-api.d.ts +56 -4
  87. package/dist/types/form/dino-form.d.ts +4 -3
  88. package/dist/types/form/index.d.ts +2 -1
  89. package/dist/types/table/helpers.d.ts +0 -3
  90. package/dist/types/table/index.d.ts +1 -1
  91. package/dist/types/table/styled.d.ts +8 -0
  92. package/dist/types/table/toolbar-pannel.d.ts +5 -0
  93. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as a,callSuper as o,defineProperty as s,asyncToGenerator as n,regenerator as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Box as u}from"@mui/material";import{createContext as m,Component as c}from"react";import{validateMerge as f,convertFormDataToJson as p,trimAllStrings as d,singleValidate as v,getErrorCommonFromResponse as E,getErrorFromResponse as g}from"./helpers.js";import{FormValidator as S,SingleRuleValidate as h}from"./validator.js";import{ApiAlertContext as b}from"../api-context/alert-global.js";var j=function(j){var A=m({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},removeError:function(){},clearErrorAll:function(){}}),C=function(){function m(r){var e;return a(this,m),e=o(this,m,[r]),s(e,"refForm",null),s(e,"mapContext",function(){var r=e,t=r.setError,a=r.removeError,o=r.setModelState,s=r.clearErrorAll,n=r.onBlur,l=e.state;return{modelState:l.modelState,messageErrors:l.messageErrors,setError:t,onBlur:n,clearErrorAll:s,setModelState:o,removeError:a}}),s(e,"setModelState",function(r){var t=Object.assign({},e.state.modelState,r);e.setState({modelState:t})}),s(e,"getValidate",function(){var r=new S({});return f(r,null==j?void 0:j.validate,e.props.validate)}),s(e,"setError",function(r,t){var a=s({},r,[{rule:h.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,a)})}),s(e,"removeError",function(r){var a=t({},e.state.messageErrors);Array.isArray(r)?r.forEach(function(r){a[r]&&delete a[r]}):a[r]&&delete a[r],e.setState({messageErrors:a})}),s(e,"clearErrorAll",function(){e.setState({messageErrors:{}})}),s(e,"onSubmit",function(){var r=n(l().m(function r(a){var o,s,n,i,u,m,c,f;return l().w(function(r){for(;;)switch(r.p=r.n){case 0:if(a.preventDefault(),o=new FormData(a.currentTarget),s=p(o),n=d(s),e.setState({modelState:n}),i=e.validate.run(n),e.props.onError&&Object.keys(i).length>0&&e.props.onError(i),!i){r.n=1;break}if(e.setState({messageErrors:i}),!(Object.keys(i).length>0)){r.n=1;break}return r.a(2);case 1:return r.p=1,r.n=2,e.props.onSubmit(n,a);case 2:r.n=4;break;case 3:r.p=3,f=r.v,(m=E(f)).length>0&&(null===(u=b.ApiAlert)||void 0===u||u.PushError(m[0])),c=g(f,n),e.setState({messageErrors:t(t({},e.state.messageErrors),c||{})});case 4:return r.a(2)}},r,null,[[1,3]])}));return function(e){return r.apply(this,arguments)}}()),s(e,"onBlur",function(r){if(e.refForm){var t=e.state.messageErrors,a=new FormData(e.refForm),o=p(a),s=d(o);e.setState({modelState:s});var n=v(r,s,t,e.validate)||{};e.setState({messageErrors:n})}}),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(m,c),e(m,[{key:"render",value:function(){var r,e=this;return i(u,t(t({component:"form",ref:function(r){return e.refForm=r},onSubmit:this.onSubmit},null===(r=this.props.slots)||void 0===r?void 0:r.formProps),{},{children:i(A.Provider,{value:this.mapContext(),children:this.props.children})}))}}])}();return{Form:C,Validator:null==j?void 0:j.validate,Context:A,mapContext:function(r){return i(A.Consumer,{children:r})}}};export{j as default};
1
+ import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as o,callSuper as a,defineProperty as s,asyncToGenerator as n,regenerator as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Box as u}from"@mui/material";import{createContext as m,Component as c}from"react";import{validateMerge as f,convertFormDataToJson as p,trimAllStrings as d,singleValidate as v,getErrorCommonFromResponse as E,getErrorFromResponse as g}from"./helpers.js";import{FormValidator as S,SingleRuleValidate as h}from"./validator.js";import{ApiAlertContext as b}from"../api-context/alert-global.js";var j=function(j){var A=m({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},removeError:function(){},clearErrorAll:function(){}}),C=function(){function m(r){var e;return o(this,m),e=a(this,m,[r]),s(e,"refForm",null),s(e,"mapContext",function(){var r=e,t=r.setError,o=r.removeError,a=r.setModelState,s=r.clearErrorAll,n=r.onBlur,l=e.state;return{modelState:l.modelState,messageErrors:l.messageErrors,setError:t,onBlur:n,clearErrorAll:s,setModelState:a,removeError:o}}),s(e,"setModelState",function(r){var t=Object.assign({},e.state.modelState,r);e.setState({modelState:t})}),s(e,"getValidate",function(){var r=new S({});return f(r,null==j?void 0:j.validate,e.props.validate)}),s(e,"setError",function(r,t){var o=s({},r,[{rule:h.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,o)})}),s(e,"removeError",function(r){var o=t({},e.state.messageErrors);Array.isArray(r)?r.forEach(function(r){o[r]&&delete o[r]}):o[r]&&delete o[r],e.setState({messageErrors:o})}),s(e,"clearErrorAll",function(){e.setState({messageErrors:{}})}),s(e,"onSubmit",function(){var r=n(l().m(function r(o){var a,s,n,i,u,m,c,f;return l().w(function(r){for(;;)switch(r.p=r.n){case 0:if(o.preventDefault(),a=new FormData(o.currentTarget),s=p(a),n=d(s),e.setState({modelState:n}),i=e.validate.run(n),e.props.onError&&Object.keys(i).length>0&&e.props.onError(i),!i){r.n=1;break}if(e.setState({messageErrors:i}),!(Object.keys(i).length>0)){r.n=1;break}return r.a(2);case 1:return r.p=1,r.n=2,e.props.onSubmit(n,o);case 2:r.n=4;break;case 3:r.p=3,f=r.v,(m=E(f)).length>0&&(null===(u=b.ApiAlert)||void 0===u||u.PushError(m[0])),c=g(f,n),e.setState({messageErrors:t(t({},e.state.messageErrors),c||{})});case 4:return r.a(2)}},r,null,[[1,3]])}));return function(e){return r.apply(this,arguments)}}()),s(e,"onBlur",function(r){if(e.refForm){var t=e.state.messageErrors,o=new FormData(e.refForm),a=p(o),s=d(a);e.setState({modelState:s});var n=v(r,s,t,e.validate)||{};e.setState({messageErrors:n})}}),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(m,c),e(m,[{key:"render",value:function(){var r,e,o=this,a=[this.props.className,null===(r=this.props.slots)||void 0===r||null===(r=r.formProps)||void 0===r?void 0:r.className].filter(Boolean);return i(u,t(t({component:"form",ref:function(r){return o.refForm=r},onSubmit:this.onSubmit},null===(e=this.props.slots)||void 0===e?void 0:e.formProps),{},{className:a.join(" "),children:i(A.Provider,{value:this.mapContext(),children:this.props.children})}))}}])}();return{Form:C,Validator:null==j?void 0:j.validate,Context:A,mapContext:function(r){return i(A.Consumer,{children:r})}}};export{j as default};
2
2
  //# sourceMappingURL=create.form-base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.form-base.js","sources":["../../../src/form/create.form-base.tsx"],"sourcesContent":["import { Box, BoxProps } from '@mui/material'\r\nimport { Component, ComponentType, createContext, PropsWithChildren, ReactNode } from 'react'\r\nimport { ApiAlertContext } from '../api-context'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorCommonFromResponse, getErrorFromResponse, singleValidate, trimAllStrings, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseSlots {\r\n formProps?: Omit<BoxProps, 'ref' | 'onSubmit' | 'component'> & { [key: string]: any }\r\n}\r\n\r\nexport interface IFormBaseConfigs<T> {\r\n validate?: FormValidator<Partial<T>>\r\n dataTrimed?: boolean\r\n dataGetter?: (data: Partial<T>) => Partial<T>\r\n}\r\n\r\nexport interface IFormBaseParams<T> extends IFormBaseConfigs<T> {}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren, IFormBaseConfigs<T> {\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\r\n onError?: (error: IPartialError<T>) => void\r\n slots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormBaseState<T> {\r\n modelState?: Partial<T>\r\n messageErrors: IPartialError<T>\r\n}\r\n\r\nexport interface IFormBaseResult<T> {\r\n Form: ComponentType<IFormBaseProps<T>>\r\n Validator?: FormValidator<Partial<T>>\r\n Context: React.Context<IFormBaseContext<T>>\r\n mapContext: (params: (context: IFormBaseContext<T>) => JSX.Element) => JSX.Element\r\n}\r\n\r\nconst createFormBase = function <T>(params?: IFormBaseParams<T>): IFormBaseResult<T> {\r\n const FormBaseContext = createContext<IFormBaseContext<T>>({\r\n setModelState: () => {},\r\n messageErrors: {},\r\n onBlur: () => {},\r\n setError: () => {},\r\n removeError: () => {},\r\n clearErrorAll: () => {}\r\n })\r\n\r\n class FormBase extends Component<IFormBaseProps<T>, IFormBaseState<T>> {\r\n refForm: HTMLFormElement | null = null\r\n constructor(props: IFormBaseProps<T>) {\r\n super(props)\r\n this.validate = this.getValidate()\r\n this.state = { messageErrors: {} }\r\n }\r\n\r\n render() {\r\n return (\r\n <Box component='form' ref={(ref: HTMLFormElement) => (this.refForm = ref)} onSubmit={this.onSubmit} {...(this.props.slots?.formProps as any)}>\r\n <FormBaseContext.Provider value={this.mapContext()}>{this.props.children}</FormBaseContext.Provider>\r\n </Box>\r\n )\r\n }\r\n\r\n private mapContext = (): IFormBaseContext<T> => {\r\n const { setError, removeError, setModelState, clearErrorAll, onBlur } = this\r\n const { modelState, messageErrors } = this.state\r\n return { modelState, messageErrors, setError, onBlur, clearErrorAll, setModelState, removeError }\r\n }\r\n\r\n setModelState: ISetModelStateFunc<T> = (state) => {\r\n const obj = Object.assign({}, this.state.modelState, state)\r\n this.setState({ modelState: obj })\r\n }\r\n\r\n getValidate = (): FormValidator<Partial<T>> => {\r\n const defaultValidate = new FormValidator<Partial<T>>({})\r\n return validateMerge(defaultValidate, params?.validate, this.props.validate)\r\n }\r\n\r\n setError = (keyName: keyof T, message: string) => {\r\n const error = { [keyName]: [{ rule: SingleRuleValidate.Custom, message }] }\r\n this.setState({ messageErrors: Object.assign({}, this.state.messageErrors, error) })\r\n }\r\n\r\n removeError = (keyNames: keyof T | (keyof T)[]) => {\r\n const newErrors = { ...this.state.messageErrors }\r\n if (Array.isArray(keyNames)) {\r\n keyNames.forEach((key) => {\r\n if (newErrors[key]) delete newErrors[key]\r\n })\r\n } else {\r\n if (newErrors[keyNames]) delete newErrors[keyNames]\r\n }\r\n this.setState({ messageErrors: newErrors })\r\n }\r\n\r\n clearErrorAll = () => {\r\n this.setState({ messageErrors: {} })\r\n }\r\n\r\n private validate: FormValidator<Partial<T>>\r\n onSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\r\n e.preventDefault()\r\n const formData = new FormData(e.currentTarget as HTMLFormElement)\r\n const raw = convertFormDataToJson<T>(formData)\r\n // TODO: validate raw data\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const messageErrors = this.validate.run(trimmed) as IPartialError<T>\r\n\r\n if (this.props.onError && Object.keys(messageErrors).length > 0) {\r\n this.props.onError(messageErrors)\r\n }\r\n\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n try {\r\n await this.props.onSubmit(trimmed, e)\r\n } catch (error: any) {\r\n const errorCommon = getErrorCommonFromResponse(error as any)\r\n if (errorCommon.length > 0) ApiAlertContext.ApiAlert?.PushError(errorCommon[0])\r\n const messageError = getErrorFromResponse(error, trimmed)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\r\n // throw error\r\n }\r\n }\r\n\r\n onBlur = (keyName: keyof T) => {\r\n if (!this.refForm) return\r\n const { messageErrors } = this.state\r\n const formData = new FormData(this.refForm)\r\n const raw = convertFormDataToJson(formData)\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const error = singleValidate<T, Partial<T>>(keyName, trimmed, messageErrors, this.validate) || {}\r\n this.setState({ messageErrors: error as IPartialError<T> })\r\n }\r\n }\r\n\r\n return {\r\n Form: FormBase,\r\n Validator: params?.validate,\r\n Context: FormBaseContext,\r\n mapContext: (params: (context: IFormBaseContext<T>) => ReactNode) => <FormBaseContext.Consumer>{params}</FormBaseContext.Consumer>\r\n }\r\n}\r\nexport default createFormBase\r\n"],"names":["createFormBase","params","FormBaseContext","createContext","setModelState","messageErrors","onBlur","setError","removeError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","obj","Object","assign","setState","defaultValidate","FormValidator","validateMerge","validate","keyName","message","error","rule","SingleRuleValidate","Custom","keyNames","newErrors","_objectSpread","Array","isArray","forEach","key","_ref","_asyncToGenerator","_regenerator","m","_callee","e","formData","raw","trimmed","_ApiAlertContext$ApiA","errorCommon","messageError","_t","w","_context","p","n","preventDefault","FormData","currentTarget","convertFormDataToJson","trimAllStrings","run","onError","keys","length","a","onSubmit","v","getErrorCommonFromResponse","ApiAlertContext","ApiAlert","PushError","getErrorFromResponse","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","value","_this$props$slots","_this3","_jsx","Box","component","ref","slots","formProps","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"4nBAqCA,IAAMA,EAAiB,SAAaC,GAClC,IAAMC,EAAkBC,EAAmC,CACzDC,cAAe,WAAQ,EACvBC,cAAe,CAAE,EACjBC,OAAQ,WAAQ,EAChBC,SAAU,WAAQ,EAClBC,YAAa,WAAQ,EACrBC,cAAe,WAAK,IAGhBC,aAEJ,SAAAA,EAAYC,GAAwB,IAAAC,EAGA,OAHAC,OAAAH,GAClCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAAA,UAFoB,MAAIG,EAAAH,EAAA,aAejB,WACnB,IAAAI,EAAAJ,EAAQL,EAAQS,EAART,SAAUC,EAAWQ,EAAXR,YAAaJ,EAAaY,EAAbZ,cAAeK,EAAaO,EAAbP,cAAeH,EAAMU,EAANV,OAC7DW,EAAsCL,EAAKM,MAC3C,MAAO,CAAEC,WADSF,EAAVE,WACad,cADYY,EAAbZ,cACgBE,SAAAA,EAAUD,OAAAA,EAAQG,cAAAA,EAAeL,cAAAA,EAAeI,YAAAA,KACrFO,EAAAH,EAEsC,gBAAA,SAACM,GACtC,IAAME,EAAMC,OAAOC,OAAO,CAAA,EAAIV,EAAKM,MAAMC,WAAYD,GACrDN,EAAKW,SAAS,CAAEJ,WAAYC,MAC7BL,EAAAH,EAAA,cAEa,WACZ,IAAMY,EAAkB,IAAIC,EAA0B,IACtD,OAAOC,EAAcF,EAAiBvB,aAAM,EAANA,EAAQ0B,SAAUf,EAAKD,MAAMgB,YACpEZ,EAAAH,EAAA,WAEU,SAACgB,EAAkBC,GAC5B,IAAMC,EAAKf,EAAMa,CAAAA,EAAAA,EAAU,CAAC,CAAEG,KAAMC,EAAmBC,OAAQJ,QAAAA,KAC/DjB,EAAKW,SAAS,CAAElB,cAAegB,OAAOC,OAAO,CAAA,EAAIV,EAAKM,MAAMb,cAAeyB,OAC5Ef,EAAAH,EAEa,cAAA,SAACsB,GACb,IAAMC,EAASC,EAAA,CAAA,EAAQxB,EAAKM,MAAMb,eAC9BgC,MAAMC,QAAQJ,GAChBA,EAASK,QAAQ,SAACC,GACZL,EAAUK,WAAaL,EAAUK,EACvC,GAEIL,EAAUD,WAAkBC,EAAUD,GAE5CtB,EAAKW,SAAS,CAAElB,cAAe8B,MAChCpB,EAAAH,EAAA,gBAEe,WACdA,EAAKW,SAAS,CAAElB,cAAe,CAAA,MAChCU,EAAAH,EAAA,WAAA,WAAA,IAAA6B,EAAAC,EAAAC,IAAAC,EAGmD,SAAAC,EAAOC,GAAC,IAAAC,EAAAC,EAAAC,EAAA5C,EAAA6C,EAAAC,EAAAC,EAAAC,EAAA,OAAAV,IAAAW,EAAA,SAAAC,GAAA,cAAAA,EAAAC,EAAAD,EAAAE,GAAA,KAAA,EAWzD,GAVDX,EAAEY,iBACIX,EAAW,IAAIY,SAASb,EAAEc,eAC1BZ,EAAMa,EAAyBd,GAE/BE,EAAUa,EAAed,GAC/BpC,EAAKW,SAAS,CAAEJ,WAAY8B,IACtB5C,EAAgBO,EAAKe,SAASoC,IAAId,GAEpCrC,EAAKD,MAAMqD,SAAW3C,OAAO4C,KAAK5D,GAAe6D,OAAS,GAC5DtD,EAAKD,MAAMqD,QAAQ3D,IAGjBA,EAAa,CAAAkD,EAAAE,EAAA,EAAA,KAAA,CACgC,GAA/C7C,EAAKW,SAAS,CAAElB,cAAeA,MAC3BgB,OAAO4C,KAAK5D,GAAe6D,OAAS,GAAC,CAAAX,EAAAE,EAAA,EAAA,KAAA,CAAA,OAAAF,EAAAY,EAAA,GAAA,KAAA,EAAA,OAAAZ,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAGnC7C,EAAKD,MAAMyD,SAASnB,EAASH,GAAE,KAAA,EAAAS,EAAAE,EAAA,EAAA,MAAA,KAAA,EAAAF,EAAAC,EAAA,EAAAH,EAAAE,EAAAc,GAE/BlB,EAAcmB,EAA0BjB,IAC9Ba,OAAS,IAA2BhB,QAAxBA,EAAAqB,EAAgBC,gBAAhBtB,IAAwBA,GAAxBA,EAA0BuB,UAAUtB,EAAY,KACtEC,EAAesB,EAAoBrB,EAAQJ,GACjDrC,EAAKW,SAAS,CAAElB,cAAa+B,EAAAA,KAAOxB,EAAKM,MAAMb,eAAmB+C,GAAgB,CAAE,KACpF,KAAA,EAAA,OAAAG,EAAAY,EAAA,GAAA,EAAAtB,EAAA,KAAA,CAAA,CAAA,EAAA,QAEH,OAAA,SAAA8B,GAAA,OAAAlC,EAAAmC,MAAAC,KAAAC,UAAA,CAAA,CA7BA,IA6BA/D,EAAAH,EAEQ,SAAA,SAACgB,GACR,GAAKhB,EAAKmE,QAAV,CACA,IAAQ1E,EAAkBO,EAAKM,MAAvBb,cACF0C,EAAW,IAAIY,SAAS/C,EAAKmE,SAC7B/B,EAAMa,EAAsBd,GAC5BE,EAAUa,EAAed,GAC/BpC,EAAKW,SAAS,CAAEJ,WAAY8B,IAC5B,IAAMnB,EAAQkD,EAA8BpD,EAASqB,EAAS5C,EAAeO,EAAKe,WAAa,CAAE,EACjGf,EAAKW,SAAS,CAAElB,cAAeyB,GAPZ,IA/EnBlB,EAAKe,SAAWf,EAAKqE,cACrBrE,EAAKM,MAAQ,CAAEb,cAAe,CAAA,GAAIO,CACpC,CAAC,OAAAsE,EAAAxE,EANoByE,GAMpBC,EAAA1E,EAAA,CAAA,CAAA8B,IAAA,SAAA6C,MAED,WAAM,IAAAC,EAAAC,EAAAV,KACJ,OACEW,EAACC,EAAGrD,EAAAA,EAAA,CAACsD,UAAU,OAAOC,IAAK,SAACA,GAAoB,OAAMJ,EAAKR,QAAUY,CAAI,EAAEvB,SAAUS,KAAKT,UAA+B,QAAvBkB,EAAOT,KAAKlE,MAAMiF,aAAK,IAAAN,OAAA,EAAhBA,EAAkBO,WAAiB,CAAA,EAAA,CAAAC,SAC1IN,EAACtF,EAAgB6F,SAAS,CAAAV,MAAOR,KAAKmB,aAAYF,SAAGjB,KAAKlE,MAAMmF,aAGtE,IAAC,IAgFH,MAAO,CACLG,KAAMvF,EACNwF,UAAWjG,aAAAA,EAAAA,EAAQ0B,SACnBwE,QAASjG,EACT8F,WAAY,SAAC/F,GAAmD,OAAKuF,EAACtF,EAAgBkG,SAAU,CAAAN,SAAA7F,GAAkC,EAEtI"}
1
+ {"version":3,"file":"create.form-base.js","sources":["../../../src/form/create.form-base.tsx"],"sourcesContent":["import { Box, BoxProps } from '@mui/material'\r\nimport { Component, ComponentType, createContext, PropsWithChildren, ReactNode } from 'react'\r\nimport { ApiAlertContext } from '../api-context'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorCommonFromResponse, getErrorFromResponse, singleValidate, trimAllStrings, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseSlots {\r\n formProps?: Omit<BoxProps, 'ref' | 'onSubmit' | 'component'> & { [key: string]: any }\r\n}\r\n\r\nexport interface IFormBaseConfigs<T> {\r\n validate?: FormValidator<Partial<T>>\r\n dataTrimed?: boolean\r\n dataGetter?: (data: Partial<T>) => Partial<T>\r\n}\r\n\r\nexport interface IFormBaseParams<T> extends IFormBaseConfigs<T> {}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren, IFormBaseConfigs<T> {\r\n className?: string\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\r\n onError?: (error: IPartialError<T>) => void\r\n slots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormBaseState<T> {\r\n modelState?: Partial<T>\r\n messageErrors: IPartialError<T>\r\n}\r\n\r\nexport interface IFormBaseResult<T> {\r\n Form: ComponentType<IFormBaseProps<T>>\r\n Validator?: FormValidator<Partial<T>>\r\n Context: React.Context<IFormBaseContext<T>>\r\n mapContext: (params: (context: IFormBaseContext<T>) => JSX.Element) => JSX.Element\r\n}\r\n\r\nconst createFormBase = function <T>(params?: IFormBaseParams<T>): IFormBaseResult<T> {\r\n const FormBaseContext = createContext<IFormBaseContext<T>>({\r\n setModelState: () => {},\r\n messageErrors: {},\r\n onBlur: () => {},\r\n setError: () => {},\r\n removeError: () => {},\r\n clearErrorAll: () => {}\r\n })\r\n\r\n class FormBase extends Component<IFormBaseProps<T>, IFormBaseState<T>> {\r\n refForm: HTMLFormElement | null = null\r\n constructor(props: IFormBaseProps<T>) {\r\n super(props)\r\n this.validate = this.getValidate()\r\n this.state = { messageErrors: {} }\r\n }\r\n\r\n render() {\r\n const rootClass = [this.props.className, this.props.slots?.formProps?.className].filter(Boolean)\r\n return (\r\n <Box\r\n component='form'\r\n ref={(ref: HTMLFormElement) => (this.refForm = ref)}\r\n onSubmit={this.onSubmit}\r\n {...(this.props.slots?.formProps as any)}\r\n className={rootClass.join(' ')}\r\n >\r\n <FormBaseContext.Provider value={this.mapContext()}>{this.props.children}</FormBaseContext.Provider>\r\n </Box>\r\n )\r\n }\r\n\r\n private mapContext = (): IFormBaseContext<T> => {\r\n const { setError, removeError, setModelState, clearErrorAll, onBlur } = this\r\n const { modelState, messageErrors } = this.state\r\n return { modelState, messageErrors, setError, onBlur, clearErrorAll, setModelState, removeError }\r\n }\r\n\r\n setModelState: ISetModelStateFunc<T> = (state) => {\r\n const obj = Object.assign({}, this.state.modelState, state)\r\n this.setState({ modelState: obj })\r\n }\r\n\r\n getValidate = (): FormValidator<Partial<T>> => {\r\n const defaultValidate = new FormValidator<Partial<T>>({})\r\n return validateMerge(defaultValidate, params?.validate, this.props.validate)\r\n }\r\n\r\n setError = (keyName: keyof T, message: string) => {\r\n const error = { [keyName]: [{ rule: SingleRuleValidate.Custom, message }] }\r\n this.setState({ messageErrors: Object.assign({}, this.state.messageErrors, error) })\r\n }\r\n\r\n removeError = (keyNames: keyof T | (keyof T)[]) => {\r\n const newErrors = { ...this.state.messageErrors }\r\n if (Array.isArray(keyNames)) {\r\n keyNames.forEach((key) => {\r\n if (newErrors[key]) delete newErrors[key]\r\n })\r\n } else {\r\n if (newErrors[keyNames]) delete newErrors[keyNames]\r\n }\r\n this.setState({ messageErrors: newErrors })\r\n }\r\n\r\n clearErrorAll = () => {\r\n this.setState({ messageErrors: {} })\r\n }\r\n\r\n private validate: FormValidator<Partial<T>>\r\n onSubmit: React.FormEventHandler<HTMLFormElement> = async (e) => {\r\n e.preventDefault()\r\n const formData = new FormData(e.currentTarget as HTMLFormElement)\r\n const raw = convertFormDataToJson<T>(formData)\r\n // TODO: validate raw data\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const messageErrors = this.validate.run(trimmed) as IPartialError<T>\r\n\r\n if (this.props.onError && Object.keys(messageErrors).length > 0) {\r\n this.props.onError(messageErrors)\r\n }\r\n\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n try {\r\n await this.props.onSubmit(trimmed, e)\r\n } catch (error: any) {\r\n const errorCommon = getErrorCommonFromResponse(error as any)\r\n if (errorCommon.length > 0) ApiAlertContext.ApiAlert?.PushError(errorCommon[0])\r\n const messageError = getErrorFromResponse(error, trimmed)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\r\n // throw error\r\n }\r\n }\r\n\r\n onBlur = (keyName: keyof T) => {\r\n if (!this.refForm) return\r\n const { messageErrors } = this.state\r\n const formData = new FormData(this.refForm)\r\n const raw = convertFormDataToJson(formData)\r\n const trimmed = trimAllStrings(raw)\r\n this.setState({ modelState: trimmed })\r\n const error = singleValidate<T, Partial<T>>(keyName, trimmed, messageErrors, this.validate) || {}\r\n this.setState({ messageErrors: error as IPartialError<T> })\r\n }\r\n }\r\n\r\n return {\r\n Form: FormBase,\r\n Validator: params?.validate,\r\n Context: FormBaseContext,\r\n mapContext: (params: (context: IFormBaseContext<T>) => ReactNode) => <FormBaseContext.Consumer>{params}</FormBaseContext.Consumer>\r\n }\r\n}\r\nexport default createFormBase\r\n"],"names":["createFormBase","params","FormBaseContext","createContext","setModelState","messageErrors","onBlur","setError","removeError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","obj","Object","assign","setState","defaultValidate","FormValidator","validateMerge","validate","keyName","message","error","rule","SingleRuleValidate","Custom","keyNames","newErrors","_objectSpread","Array","isArray","forEach","key","_ref","_asyncToGenerator","_regenerator","m","_callee","e","formData","raw","trimmed","_ApiAlertContext$ApiA","errorCommon","messageError","_t","w","_context","p","n","preventDefault","FormData","currentTarget","convertFormDataToJson","trimAllStrings","run","onError","keys","length","a","onSubmit","v","getErrorCommonFromResponse","ApiAlertContext","ApiAlert","PushError","getErrorFromResponse","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","value","_this$props$slots","_this$props$slots2","_this3","rootClass","className","slots","formProps","filter","Boolean","_jsx","Box","component","ref","join","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as o,createClass as r,objectSpread2 as e,classCallCheck as n,callSuper as t,defineProperty as l,asyncToGenerator as i,regenerator as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as d}from"react/jsx-runtime";import{Fragment as u,Component as p}from"react";import{Grid as c}from"@mui/material";import{cleanObject as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{ContentWrap as m,CreateFormBottomBar as f}from"./create.form-grid-layout.units.js";import g from"./create.form-base.js";import b from"./create.input.js";import{mapGlobalModalContext as h}from"../api-context/global-modal.js";var S=function(S){var F=g(),y=f(),C=b({maxLength:250}),E=function(){function f(o){var r;return n(this,f),r=t(this,f,[o]),l(r,"renderFormFieldElement",function(o,n){var t,l,i,s=r.props.data,a=null!==(t=n.inputElement)&&void 0!==t?t:C,u={data:s,onBlur:o.onBlur,messageErrors:o.messageErrors,name:n.key,label:n.label,placeholder:n.placeholder,disabled:!(null===(l=r.configMerged.disabledFields)||void 0===l||!l[n.key])||void 0,defaultValue:null!==(i=null==s?void 0:s[n.key])&&void 0!==i?i:null==n?void 0:n.defaultValue,formContext:o};return d(a,e({},v(u)))}),l(r,"loading",function(){return r.setState({loadding:!0})}),l(r,"unloading",function(){return r.setState({loadding:!1})}),l(r,"onSubmit",function(){var o=i(s().m(function o(e,n){var t,l,i,a,d,u,p,c,v;return s().w(function(o){for(;;)switch(o.p=o.n){case 0:return a=r.props.slots,d=null!==(t=null!==(l=null===(i=r.props.slots)||void 0===i?void 0:i.preSubmit)&&void 0!==l?l:S.preSubmit)&&void 0!==t?t:r.preSubmit,u=d(e,r.props.data),o.p=1,r.loading(),null===(p=r.abortController)||void 0===p||p.abort(),r.abortController=new AbortController,o.n=2,r.props.onSubmit(u,null===(c=r.abortController)||void 0===c?void 0:c.signal);case 2:null!=a&&a.closeState&&!1===a.closeState.Success||(n&&n(),r.props.onClose&&r.props.onClose()),o.n=4;break;case 3:throw o.p=3,v=o.v,null!=a&&a.closeState&&!0===a.closeState.Fail&&(n&&n(),r.props.onClose&&r.props.onClose()),r.props.onError&&r.props.onError(v),v;case 4:return o.p=4,r.unloading(),o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}));return function(r,e){return o.apply(this,arguments)}}()),l(r,"preSubmit",function(o){return o}),l(r,"getFormSlots",function(){var o,n=r.state.loadding,t=((null===(o=r.props.slots)||void 0===o?void 0:o.formSlots)||{}).formProps;return{formProps:e(e({},t),{},{sx:e(e({},r.props.sx),{},{opacity:n?.7:1,pointerEvents:n?"none":"auto"})})}}),r.state={loadding:!1},r}return o(f,p),r(f,[{key:"configMerged",get:function(){var o,r,e,n,t,l,i,s,a;return{getHiddenFields:null!==(o=null!==(r=null===(e=this.props.slots)||void 0===e?void 0:e.getHiddenFields)&&void 0!==r?r:S.getHiddenFields)&&void 0!==o?o:function(){return{}},hiddenFields:null!==(n=null!==(t=null===(l=this.props.slots)||void 0===l?void 0:l.hiddenFields)&&void 0!==t?t:S.hiddenFields)&&void 0!==n?n:{},disabledFields:null!==(i=null!==(s=null===(a=this.props.slots)||void 0===a?void 0:a.disabledFields)&&void 0!==s?s:S.disabledFields)&&void 0!==i?i:{}}}},{key:"render",value:function(){var o,r,n,t=this,l=this.props,i=l.slots,s=l.data,p=null!==(o=null!==(r=null==S?void 0:S.action)&&void 0!==r?r:null===(n=this.props.slots)||void 0===n?void 0:n.action)&&void 0!==o?o:y;return h(function(o){var r,n=o.close;return a(F.Form,{validate:S.validate,onSubmit:function(o){return t.onSubmit(o,n)},slots:t.getFormSlots(),onError:t.props.onSubmitError,children:[a(m,e(e({},null===(r=t.props)||void 0===r||null===(r=r.slots)||void 0===r?void 0:r.contentProps),{},{children:[(null==i?void 0:i.contentBefore)&&(null==i?void 0:i.contentBefore),null==S?void 0:S.contentBefore,F.mapContext(function(o){var r=t.configMerged,n=r.getHiddenFields,l=r.hiddenFields,i=e(e({},l),n(o.modelState||{},s));return d(c,{container:!0,spacing:2,children:S.configs.map(function(r,n){var l=!!i[r.key]||void 0;return d(u,l?{}:{children:d(c,e(e({item:!0,xs:12},r.sizes),{},{children:t.renderFormFieldElement(o,r)}))},r.key.toString()+n)})})}),null==S?void 0:S.contentAfter,(null==i?void 0:i.contentAfter)&&(null==i?void 0:i.contentAfter)]})),F.mapContext(function(o){var r;return d(p,{data:t.props.data,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null===(r=t.props.slots)||void 0===r?void 0:r.actionBefore})})]})})}},{key:"componentWillUnmount",value:function(){var o;null===(o=this.abortController)||void 0===o||o.abort()}}])}();return E};export{S as default};
1
+ import{inherits as o,createClass as r,objectSpread2 as e,classCallCheck as t,callSuper as n,defineProperty as l,asyncToGenerator as i,regenerator as a}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as u}from"react/jsx-runtime";import{Fragment as d,Component as p}from"react";import{Grid as c}from"@mui/material";import{cleanObject as m}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{formGridLayoutClasses as f,FormGridLayoutStyled as v,CreateFormBottomBar as g}from"./create.form-grid-layout.units.js";import b from"./create.form-base.js";import h from"./create.input.js";import{mapGlobalModalContext as S}from"../api-context/global-modal.js";var y=function(y){var F=b(),C=g(),j=h({maxLength:250}),E=function(){function g(o){var r;return t(this,g),r=n(this,g,[o]),l(r,"renderFormFieldElement",function(o,t){var n,l,i=r.props.data,a=null!==(n=t.inputElement)&&void 0!==n?n:j,u=o.modelState||{},d=r.configMerged.disabledFields,p="function"==typeof d?d(u,i):d||{},c={data:i,onBlur:o.onBlur,messageErrors:o.messageErrors,name:t.key,label:t.label,placeholder:t.placeholder,disabled:!!p[t.key]||void 0,defaultValue:null!==(l=null==i?void 0:i[t.key])&&void 0!==l?l:null==t?void 0:t.defaultValue,formContext:o};return s(a,e({},m(c)))}),l(r,"loading",function(){return r.setState({loadding:!0})}),l(r,"unloading",function(){return r.setState({loadding:!1})}),l(r,"onSubmit",function(){var o=i(a().m(function o(e,t){var n,l,i,s,u,d,p,c,m;return a().w(function(o){for(;;)switch(o.p=o.n){case 0:return s=r.props.slots,u=null!==(n=null!==(l=null===(i=r.props.slots)||void 0===i?void 0:i.preSubmit)&&void 0!==l?l:y.preSubmit)&&void 0!==n?n:r.preSubmit,d=u(e,r.props.data),o.p=1,r.loading(),null===(p=r.abortController)||void 0===p||p.abort(),r.abortController=new AbortController,o.n=2,r.props.onSubmit(d,null===(c=r.abortController)||void 0===c?void 0:c.signal);case 2:null!=s&&s.closeState&&!1===s.closeState.Success||(t&&t(),r.props.onClose&&r.props.onClose()),o.n=4;break;case 3:throw o.p=3,m=o.v,null!=s&&s.closeState&&!0===s.closeState.Fail&&(t&&t(),r.props.onClose&&r.props.onClose()),r.props.onError&&r.props.onError(m),m;case 4:return o.p=4,r.unloading(),o.f(4);case 5:return o.a(2)}},o,null,[[1,3,4,5]])}));return function(r,e){return o.apply(this,arguments)}}()),l(r,"preSubmit",function(o){return o}),l(r,"getFormSlots",function(){var o,t=r.state.loadding,n=((null===(o=r.props.slots)||void 0===o?void 0:o.formSlots)||{}).formProps;return{formProps:e(e({},n),{},{sx:e(e({},r.props.sx),{},{opacity:t?.7:1,pointerEvents:t?"none":"auto"})})}}),r.state={loadding:!1},r}return o(g,p),r(g,[{key:"configMerged",get:function(){var o,r,e,t,n=this.props.slots,l=void 0===n?{}:n;return{hiddenFields:null!==(o=null!==(r=l.hiddenFields)&&void 0!==r?r:y.hiddenFields)&&void 0!==o?o:function(){return{}},disabledFields:null!==(e=null!==(t=l.disabledFields)&&void 0!==t?t:y.disabledFields)&&void 0!==e?e:function(){return{}}}}},{key:"render",value:function(){var o,r,t,n=this,l=this.props,i=l.slots,a=l.data,p=l.autoHeight,m=null!==(o=null!==(r=null==y?void 0:y.action)&&void 0!==r?r:null==i?void 0:i.action)&&void 0!==o?o:C,g=[f.root,null==i||null===(t=i.rootProps)||void 0===t?void 0:t.className];return(null!=p?p:y.autoHeight)&&g.push(f.autoHeight),S(function(o){var r=o.close;return s(v,e(e({},null==i?void 0:i.rootProps),{},{className:g.filter(Boolean).join(" "),children:u(F.Form,{className:f.form,validate:y.validate,onSubmit:function(o){return n.onSubmit(o,r)},slots:n.getFormSlots(),onError:n.props.onSubmitError,children:[(null==i?void 0:i.contentBefore)&&(null==i?void 0:i.contentBefore),null==y?void 0:y.contentBefore,F.mapContext(function(o){var r=n.configMerged.hiddenFields,t=o.modelState||{},l="function"==typeof r?r(t,a):r||{};return s(c,{container:!0,spacing:2,children:y.configs.map(function(r,t){var i=!!l[r.key]||void 0;return s(d,i?{}:{children:s(c,e(e({item:!0,xs:12},r.sizes),{},{className:r.className,children:n.renderFormFieldElement(o,r)}))},r.key.toString()+t)})})}),null==y?void 0:y.contentAfter,(null==i?void 0:i.contentAfter)&&(null==i?void 0:i.contentAfter),F.mapContext(function(o){return s(m,{data:a,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null==i?void 0:i.actionBefore})})]})}))})}},{key:"componentWillUnmount",value:function(){var o;null===(o=this.abortController)||void 0===o||o.abort()}}])}();return E};export{y as default};
2
2
  //# sourceMappingURL=create.form-grid-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.form-grid-layout.js","sources":["../../../src/form/create.form-grid-layout.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport { cleanObject } from '../utils'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { IFormBase, IFormBaseContext, IFormInputBase } from './types'\r\nimport { ContentWrap, CreateFormBottomBar } from './create.form-grid-layout.units'\r\nimport FormValidator, { IPartialError } from './validator'\r\nimport createFormBase, { IFormBaseSlots } from './create.form-base'\r\nimport createInput from './create.input'\r\n\r\nexport interface IFormGridLayoutConfig<T> {\r\n key: keyof T\r\n label?: string\r\n placeholder?: string\r\n sizes?: RegularBreakpoints\r\n defaultValue?: any\r\n inputElement?: ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type IPreSubmitEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutMergedConfigs<T> {\r\n hiddenFields?: Partial<Record<keyof T, boolean>>\r\n getHiddenFields?: (state: Partial<T>, model?: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n disabledFields?: Partial<Record<keyof T, boolean>>\r\n}\r\n\r\nexport interface IFormGridLayoutSlots<T> extends IFormGridLayoutMergedConfigs<T> {\r\n action?: ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n // getDisabledFields?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n preSubmit?: IPreSubmitEvent<T>\r\n formSlots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n onSubmitError?: (error: IPartialError<T>) => void\r\n onClose?: () => void\r\n sx?: SxProps<Theme>\r\n slots?: IFormGridLayoutSlots<T>\r\n}\r\n\r\nexport interface IFormGridLayoutState {\r\n loadding?: boolean\r\n}\r\n\r\nconst CreateFormGridLayout = function <T>(params: IFormGridLayoutParams<T>): ComponentType<IFormGridLayoutProps<T>> {\r\n const FormBaseInstance = createFormBase<T>()\r\n const BottomBarInstance = CreateFormBottomBar<T>()\r\n const InputBaseInstance = createInput<T>({ maxLength: 250 })\r\n\r\n class FormGridLayout extends Component<IFormGridLayoutProps<T>, IFormGridLayoutState> {\r\n private abortController?: AbortController\r\n constructor(props: IFormGridLayoutProps<T>) {\r\n super(props)\r\n this.state = { loadding: false }\r\n }\r\n\r\n get configMerged(): Required<IFormGridLayoutMergedConfigs<T>> {\r\n return {\r\n getHiddenFields: this.props.slots?.getHiddenFields ?? params.getHiddenFields ?? (() => ({})),\r\n hiddenFields: this.props.slots?.hiddenFields ?? params.hiddenFields ?? {},\r\n disabledFields: this.props.slots?.disabledFields ?? params.disabledFields ?? {}\r\n }\r\n }\r\n\r\n render() {\r\n const { slots, data } = this.props\r\n const BottomBar = params?.action ?? this.props.slots?.action ?? BottomBarInstance\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormBaseInstance.Form\r\n validate={params.validate}\r\n onSubmit={(v) => this.onSubmit(v, close)}\r\n slots={this.getFormSlots()}\r\n onError={this.props.onSubmitError}\r\n >\r\n <ContentWrap {...this.props?.slots?.contentProps}>\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n {FormBaseInstance.mapContext((context) => {\r\n const { getHiddenFields, hiddenFields } = this.configMerged\r\n const finalHiddenFields: Partial<Record<keyof T, boolean>> = { ...hiddenFields, ...getHiddenFields(context.modelState || {}, data) }\r\n return (\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const isHidden: boolean | undefined = finalHiddenFields[config.key] ? true : undefined\r\n if (isHidden) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.sizes}>\r\n {this.renderFormFieldElement(context, config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\r\n )\r\n })}\r\n {params?.contentAfter}\r\n {slots?.contentAfter && slots?.contentAfter}\r\n </ContentWrap>\r\n {FormBaseInstance.mapContext((context) => (\r\n <BottomBar data={this.props.data} onBlur={context.onBlur} messageErrors={context.messageErrors} before={this.props.slots?.actionBefore} />\r\n ))}\r\n </FormBaseInstance.Form>\r\n ))\r\n }\r\n\r\n renderFormFieldElement = (context: IFormBaseContext<T>, config: IFormGridLayoutConfig<T>) => {\r\n const { data } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n const obj: IFormInputBase<T, any> = {\r\n data,\r\n onBlur: context.onBlur,\r\n messageErrors: context.messageErrors,\r\n name: config.key,\r\n label: config.label,\r\n placeholder: config.placeholder,\r\n disabled: this.configMerged.disabledFields?.[config.key] ? true : undefined,\r\n defaultValue: data?.[config.key] ?? config?.defaultValue,\r\n formContext: context\r\n }\r\n return <ElementComponent {...cleanObject(obj)} />\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.preSubmit ?? params.preSubmit ?? this.preSubmit\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController?.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n throw error\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n preSubmit: IPreSubmitEvent<T> = (value) => value\r\n\r\n getFormSlots = (): IFormBaseSlots => {\r\n const isLoading = this.state.loadding\r\n const { formProps } = this.props.slots?.formSlots || {}\r\n return {\r\n formProps: {\r\n ...formProps,\r\n sx: {\r\n ...this.props.sx,\r\n opacity: isLoading ? 0.7 : 1,\r\n pointerEvents: isLoading ? 'none' : 'auto'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","createFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","createInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","context","config","_config$inputElement","_this$configMerged$di","_data$config$key","data","ElementComponent","inputElement","obj","onBlur","messageErrors","name","key","label","placeholder","disabled","configMerged","disabledFields","undefined","defaultValue","formContext","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regenerator","m","_callee","value","close","_ref2","_this$props$slots$pre","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","_t","w","_context","p","n","preSubmit","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","v","Fail","onError","unloading","f","a","_x","_x2","apply","this","arguments","_this$props$slots2","isLoading","state","formProps","formSlots","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_ref4","_this$props$slots$get","_this$props$slots3","_ref5","_this$props$slots$hid","_this$props$slots4","_ref6","_this$props$slots$dis","_this$props$slots5","getHiddenFields","hiddenFields","_ref7","_params$action","_this$props$slots6","_this2","_this$props","BottomBar","action","mapGlobalModalContext","_ref8","_this2$props","_jsxs","Form","validate","getFormSlots","onSubmitError","children","ContentWrap","contentProps","contentBefore","mapContext","_this2$configMerged","finalHiddenFields","modelState","Grid","container","spacing","configs","map","index","isHidden","Fragment","item","xs","sizes","renderFormFieldElement","toString","contentAfter","_this2$props$slots","before","actionBefore","_this$abortController3"],"mappings":"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"}
1
+ {"version":3,"file":"create.form-grid-layout.js","sources":["../../../src/form/create.form-grid-layout.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport { cleanObject } from '../utils'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { IFormBase, IFormBaseContext, IFormInputBase } from './types'\r\nimport { FormGridLayoutStyled, CreateFormBottomBar, formGridLayoutClasses } from './create.form-grid-layout.units'\r\nimport FormValidator, { IPartialError } from './validator'\r\nimport createFormBase, { IFormBaseSlots } from './create.form-base'\r\nimport createInput from './create.input'\r\n\r\nexport interface IFormGridLayoutConfig<T> {\r\n key: keyof T\r\n label?: string\r\n placeholder?: string\r\n sizes?: RegularBreakpoints\r\n defaultValue?: any\r\n className?: string\r\n inputElement?: ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type IPreSubmitEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutMergedConfigs<T> {\r\n hiddenFields?: Partial<Record<keyof T, boolean>> | ((state: Partial<T>, model?: Partial<T>) => Partial<Record<keyof T, boolean>>)\r\n disabledFields?: Partial<Record<keyof T, boolean>> | ((state: Partial<T>, model?: Partial<T>) => Partial<Record<keyof T, boolean>>)\r\n}\r\n\r\nexport interface IFormGridLayoutSlots<T> extends IFormGridLayoutMergedConfigs<T> {\r\n action?: ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n // getDisabledFields?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n rootProps?: BoxProps\r\n preSubmit?: IPreSubmitEvent<T>\r\n formSlots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n autoHeight?: boolean\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n onSubmitError?: (error: IPartialError<T>) => void\r\n onClose?: () => void\r\n sx?: SxProps<Theme>\r\n slots?: IFormGridLayoutSlots<T>\r\n autoHeight?: boolean\r\n}\r\n\r\nexport interface IFormGridLayoutState {\r\n loadding?: boolean\r\n}\r\n\r\nconst CreateFormGridLayout = function <T>(params: IFormGridLayoutParams<T>): ComponentType<IFormGridLayoutProps<T>> {\r\n const FormBaseInstance = createFormBase<T>()\r\n const BottomBarInstance = CreateFormBottomBar<T>()\r\n const InputBaseInstance = createInput<T>({ maxLength: 250 })\r\n\r\n class FormGridLayout extends Component<IFormGridLayoutProps<T>, IFormGridLayoutState> {\r\n private abortController?: AbortController\r\n constructor(props: IFormGridLayoutProps<T>) {\r\n super(props)\r\n this.state = { loadding: false }\r\n }\r\n\r\n get configMerged() {\r\n const { slots = {} } = this.props\r\n return {\r\n hiddenFields: slots.hiddenFields ?? params.hiddenFields ?? (() => ({}) as Partial<Record<keyof T, boolean>>),\r\n disabledFields: slots.disabledFields ?? params.disabledFields ?? (() => ({}) as Partial<Record<keyof T, boolean>>)\r\n }\r\n }\r\n\r\n render() {\r\n const { slots, data, autoHeight } = this.props\r\n const BottomBar = params?.action ?? slots?.action ?? BottomBarInstance\r\n\r\n const rootClasses = [formGridLayoutClasses.root, slots?.rootProps?.className]\r\n if (autoHeight ?? params.autoHeight) rootClasses.push(formGridLayoutClasses.autoHeight)\r\n\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormGridLayoutStyled {...slots?.rootProps} className={rootClasses.filter(Boolean).join(' ')}>\r\n <FormBaseInstance.Form\r\n className={formGridLayoutClasses.form}\r\n validate={params.validate}\r\n onSubmit={(v) => this.onSubmit(v, close)}\r\n slots={this.getFormSlots()}\r\n onError={this.props.onSubmitError}\r\n >\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n {FormBaseInstance.mapContext((context) => {\r\n const { hiddenFields } = this.configMerged\r\n const mState = context.modelState || {}\r\n const finalHiddenFields = typeof hiddenFields === 'function' ? hiddenFields(mState, data) : hiddenFields || {}\r\n return (\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const isHidden: boolean | undefined = finalHiddenFields[config.key] ? true : undefined\r\n if (isHidden) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.sizes} className={config.className}>\r\n {this.renderFormFieldElement(context, config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\r\n )\r\n })}\r\n {params?.contentAfter}\r\n {slots?.contentAfter && slots?.contentAfter}\r\n {FormBaseInstance.mapContext((context) => (\r\n <BottomBar data={data} onBlur={context.onBlur} messageErrors={context.messageErrors} before={slots?.actionBefore} />\r\n ))}\r\n </FormBaseInstance.Form>\r\n </FormGridLayoutStyled>\r\n ))\r\n }\r\n\r\n renderFormFieldElement = (context: IFormBaseContext<T>, config: IFormGridLayoutConfig<T>) => {\r\n const { data } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n const mState = context.modelState || {}\r\n const { disabledFields } = this.configMerged\r\n const finalDisabledFields = typeof disabledFields === 'function' ? disabledFields(mState, data) : disabledFields || {}\r\n const obj: IFormInputBase<T, any> = {\r\n data,\r\n onBlur: context.onBlur,\r\n messageErrors: context.messageErrors,\r\n name: config.key,\r\n label: config.label,\r\n placeholder: config.placeholder,\r\n disabled: finalDisabledFields[config.key] ? true : undefined,\r\n defaultValue: data?.[config.key] ?? config?.defaultValue,\r\n formContext: context\r\n }\r\n return <ElementComponent {...cleanObject(obj)} />\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.preSubmit ?? params.preSubmit ?? this.preSubmit\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController?.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n throw error\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n preSubmit: IPreSubmitEvent<T> = (value) => value\r\n\r\n getFormSlots = (): IFormBaseSlots => {\r\n const isLoading = this.state.loadding\r\n const { formProps } = this.props.slots?.formSlots || {}\r\n return {\r\n formProps: {\r\n ...formProps,\r\n sx: {\r\n ...this.props.sx,\r\n opacity: isLoading ? 0.7 : 1,\r\n pointerEvents: isLoading ? 'none' : 'auto'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","createFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","createInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","context","config","_config$inputElement","_data$config$key","data","ElementComponent","inputElement","mState","modelState","disabledFields","configMerged","finalDisabledFields","obj","onBlur","messageErrors","name","key","label","placeholder","disabled","undefined","defaultValue","formContext","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regenerator","m","_callee","value","close","_ref2","_this$props$slots$pre","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","_t","w","_context","p","n","preSubmit","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","v","Fail","onError","unloading","f","a","_x","_x2","apply","this","arguments","_this$props$slots2","isLoading","state","formProps","formSlots","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_ref4","_slots$hiddenFields","_ref5","_slots$disabledFields","_this$props$slots3","hiddenFields","_ref6","_params$action","_slots$rootProps","_this2","_this$props","autoHeight","BottomBar","action","rootClasses","formGridLayoutClasses","root","rootProps","className","push","mapGlobalModalContext","_ref7","FormGridLayoutStyled","filter","Boolean","join","children","_jsxs","Form","form","validate","getFormSlots","onSubmitError","contentBefore","mapContext","finalHiddenFields","Grid","container","spacing","configs","map","index","isHidden","Fragment","item","xs","sizes","renderFormFieldElement","toString","contentAfter","before","actionBefore","_this$abortController3"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsxs as o,jsx as t}from"react/jsx-runtime";import{styled as e,Box as r,colors as i,Button as a}from"@mui/material";var n=e(r)({padding:"16px 12px 3px",maxHeight:"calc(100vh - ".concat(120,"px)"),overflowY:"auto",overflowX:"hidden"});function p(){return function(e){return o(x,{className:"bottom-bar",children:[t(r,{sx:{flex:1},children:e.before}),t(a,{variant:"contained",type:"submit",size:"small",children:"Submit"})]})}}var x=e(r)({display:"flex",alignItems:"center",padding:"0 12px",boxShadow:"rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px",position:"sticky",bottom:0,backgroundColor:i.common.white,zIndex:1,height:"48px"});export{n as ContentWrap,p as CreateFormBottomBar,x as FormBottomBarWrap};
1
+ import{defineProperty as o}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as t,jsx as r}from"react/jsx-runtime";import{styled as e,Box as i,Button as a}from"@mui/material";var n={root:"DinoFormGridLayout-root",form:"DinoFormGridLayout-form",bottomBar:"DinoFormGridLayout-bottomBar",autoHeight:"DinoFormGridLayout-autoHeight"},m=e(i)(function(t){var r=t.theme;return o({padding:r.spacing(2,1.5,0),maxHeight:"calc(100vh - ".concat(120,"px)"),overflowY:"auto",overflowX:"hidden"},"&.".concat(n.autoHeight),{maxHeight:"none",height:"fit-content",overflow:"visible"})});function p(){return function(o){return t(u,{className:n.bottomBar,children:[r(i,{sx:{flex:1},children:o.before}),r(a,{variant:"contained",type:"submit",size:"small",children:"Submit"})]})}}var u=e(i)(function(o){return{display:"flex",alignItems:"center",padding:"0 12px",boxShadow:"rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px",position:"sticky",bottom:0,backgroundColor:o.theme.palette.background.paper,zIndex:1,height:"48px"}});export{p as CreateFormBottomBar,u as FormBottomBarWrap,m as FormGridLayoutStyled,n as formGridLayoutClasses};
2
2
  //# sourceMappingURL=create.form-grid-layout.units.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.form-grid-layout.units.js","sources":["../../../src/form/create.form-grid-layout.units.tsx"],"sourcesContent":["import React, { FC, ReactNode } from 'react'\r\nimport { Box, Button, colors, styled } from '@mui/material'\r\nimport { IFormBase } from './types'\r\n\r\nexport const ContentWrap = styled(Box)({\r\n padding: '16px 12px 3px',\r\n maxHeight: `calc(100vh - ${48 * 2 + 12 * 2}px)`,\r\n overflowY: 'auto',\r\n overflowX: 'hidden'\r\n})\r\n\r\nexport interface IFormBottomBarProps<T> extends IFormBase<T> {\r\n before?: ReactNode\r\n}\r\n\r\nexport function CreateFormBottomBar<T>() {\r\n const FormBottomBar: FC<IFormBottomBarProps<T>> = (props) => (\r\n <FormBottomBarWrap className='bottom-bar'>\r\n <Box sx={{ flex: 1 }}>{props.before}</Box>\r\n <Button variant='contained' type='submit' size='small'>\r\n Submit\r\n </Button>\r\n </FormBottomBarWrap>\r\n )\r\n return FormBottomBar\r\n}\r\n\r\nexport const FormBottomBarWrap = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 12px',\r\n boxShadow: 'rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px',\r\n position: 'sticky',\r\n bottom: 0,\r\n backgroundColor: colors.common.white,\r\n zIndex: 1,\r\n height: '48px'\r\n})\r\n"],"names":["ContentWrap","styled","Box","padding","maxHeight","concat","overflowY","overflowX","CreateFormBottomBar","props","_jsxs","FormBottomBarWrap","className","_jsx","sx","flex","children","before","Button","variant","type","size","display","alignItems","boxShadow","position","bottom","backgroundColor","colors","common","white","zIndex","height"],"mappings":"8HAIaA,EAAcC,EAAOC,EAAPD,CAAY,CACrCE,QAAS,gBACTC,UAAS,gBAAAC,OAAkB,IAAoB,OAC/CC,UAAW,OACXC,UAAW,oBAOGC,IASd,OARkD,SAACC,GAAK,OACtDC,EAACC,EAAiB,CAACC,UAAU,uBAC3BC,EAACX,GAAIY,GAAI,CAAEC,KAAM,GAAMC,SAAAP,EAAMQ,SAC7BJ,EAACK,EAAO,CAAAC,QAAQ,YAAYC,KAAK,SAASC,KAAK,QAAOL,SAAA,aAIzD,CAEH,KAEaL,EAAoBV,EAAOC,EAAPD,CAAY,CAC3CqB,QAAS,OACTC,WAAY,SACZpB,QAAS,SACTqB,UAAW,wFACXC,SAAU,SACVC,OAAQ,EACRC,gBAAiBC,EAAOC,OAAOC,MAC/BC,OAAQ,EACRC,OAAQ"}
1
+ {"version":3,"file":"create.form-grid-layout.units.js","sources":["../../../src/form/create.form-grid-layout.units.tsx"],"sourcesContent":["import { FC, ReactNode } from 'react'\r\nimport { Box, Button, colors, styled } from '@mui/material'\r\nimport { IFormBase } from './types'\r\n\r\nexport const formGridLayoutClasses = {\r\n root: 'DinoFormGridLayout-root',\r\n form: 'DinoFormGridLayout-form',\r\n bottomBar: 'DinoFormGridLayout-bottomBar',\r\n // status\r\n autoHeight: 'DinoFormGridLayout-autoHeight'\r\n}\r\n\r\nexport const FormGridLayoutStyled = styled(Box)(({ theme }) => ({\r\n padding: theme.spacing(2, 1.5, 0),\r\n maxHeight: `calc(100vh - ${48 * 2 + 12 * 2}px)`,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n [`&.${formGridLayoutClasses.autoHeight}`]: {\r\n maxHeight: 'none',\r\n height: 'fit-content',\r\n overflow: 'visible'\r\n }\r\n}))\r\n\r\nexport interface IFormBottomBarProps<T> extends IFormBase<T> {\r\n before?: ReactNode\r\n}\r\n\r\nexport function CreateFormBottomBar<T>() {\r\n const FormBottomBar: FC<IFormBottomBarProps<T>> = (props) => (\r\n <FormBottomBarWrap className={formGridLayoutClasses.bottomBar}>\r\n <Box sx={{ flex: 1 }}>{props.before}</Box>\r\n <Button variant='contained' type='submit' size='small'>\r\n Submit\r\n </Button>\r\n </FormBottomBarWrap>\r\n )\r\n return FormBottomBar\r\n}\r\n\r\nexport const FormBottomBarWrap = styled(Box)(({ theme }) => ({\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 12px',\r\n boxShadow: 'rgba(145, 158, 171, 0.2) 0px 0px 2px 0px,rgba(145, 158, 171, 0.12) 0px 12px 24px -4px',\r\n position: 'sticky',\r\n bottom: 0,\r\n backgroundColor: theme.palette.background.paper,\r\n zIndex: 1,\r\n height: '48px'\r\n}))\r\n"],"names":["formGridLayoutClasses","root","form","bottomBar","autoHeight","FormGridLayoutStyled","styled","Box","_ref","theme","_defineProperty","padding","spacing","maxHeight","concat","overflowY","overflowX","height","overflow","CreateFormBottomBar","props","_jsxs","FormBottomBarWrap","className","children","_jsx","sx","flex","before","Button","variant","type","size","_ref3","display","alignItems","boxShadow","position","bottom","backgroundColor","palette","background","paper","zIndex"],"mappings":"2LAIO,IAAMA,EAAwB,CACnCC,KAAM,0BACNC,KAAM,0BACNC,UAAW,+BAEXC,WAAY,iCAGDC,EAAuBC,EAAOC,EAAPD,CAAY,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAAC,EAAA,CACtDC,QAASF,EAAMG,QAAQ,EAAG,IAAK,GAC/BC,UAAS,gBAAAC,OAAkB,IAAoB,OAC/CC,UAAW,OACXC,UAAW,UAAQ,KAAAF,OACbd,EAAsBI,YAAe,CACzCS,UAAW,OACXI,OAAQ,cACRC,SAAU,WACX,YAOaC,IASd,OARkD,SAACC,GAAK,OACtDC,EAACC,EAAiB,CAACC,UAAWvB,EAAsBG,UAClDqB,SAAA,CAAAC,EAAClB,EAAI,CAAAmB,GAAI,CAAEC,KAAM,GAAGH,SAAGJ,EAAMQ,SAC7BH,EAACI,EAAM,CAACC,QAAQ,YAAYC,KAAK,SAASC,KAAK,QAAOR,SAAA,aAIzD,CAEH,CAEO,IAAMF,EAAoBhB,EAAOC,EAAPD,CAAY,SAAA2B,GAAQ,MAAQ,CAC3DC,QAAS,OACTC,WAAY,SACZxB,QAAS,SACTyB,UAAW,wFACXC,SAAU,SACVC,OAAQ,EACRC,gBAPmDN,EAALxB,MAOvB+B,QAAQC,WAAWC,MAC1CC,OAAQ,EACR1B,OAAQ,OACT"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as o,inherits as t,createClass as e,objectSpread2 as i,classCallCheck as l,callSuper as r}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as a}from"react/jsx-runtime";import{Fragment as p,Component as s}from"react";import{styled as u,FormControl as d,InputLabel as v,Select as c,MenuItem as f,Collapse as m,FormHelperText as g}from"@mui/material";import{mergeObjects as h}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{getErrorMessage as S}from"./helpers.js";import{RichTooltip as b,HelpOutlinePulseIcon as j}from"../components/rich-tooltip.js";function C(u){return function(){function d(t){var e,i;return l(this,d),i=r(this,d,[t]),o(i,"mapProps",function(){var o,t,e,l,r,n=i.getLabel(),a={id:null===(o=i.props.name)||void 0===o?void 0:o.toString(),labelId:(null===(t=i.props.name)||void 0===t?void 0:t.toString())+n,name:null===(e=i.props.name)||void 0===e?void 0:e.toString(),label:n,defaultValue:i.getDefaultValue(),value:i.state.value,onChange:function(o){var t=o.target.value+"";i.setState({value:t},function(){i.props.name&&i.props.onBlur&&i.props.onBlur(i.props.name);var o=i.getOptions().find(function(o){var e;return(null===(e=o.value)||void 0===e?void 0:e.toString())===t});o&&i.props.onChange&&i.props.onChange(o)})},disabled:i.props.disabled,fullWidth:void 0===i.props.fullWidth||i.props.fullWidth},p=null!==(l=null===(r=i.props.slots)||void 0===r?void 0:r.selectProps)&&void 0!==l?l:null==u?void 0:u.selectProps;return h({},a,p)}),o(i,"renderTooltip",function(){var o=i.props.tooltip||(null==u?void 0:u.tooltip);return o?a("div",{className:W.tooltipWrap,children:a(b,{panel:o,children:a(j,{fontSize:"small"})})}):null}),o(i,"getRootClasses",function(){var o=[W.root];return(i.props.tooltip||(null==u?void 0:u.tooltip))&&o.push(W.tooltip),o.join(" ")}),o(i,"getLabel",function(){var o,t;return i.props.label&&"string"==typeof i.props.label?i.props.label:null!==(o=null===(t=i.props.name)||void 0===t?void 0:t.toString())&&void 0!==o?o:""}),o(i,"getDefaultValue",function(){var o,t,e,l,r=i.props,n=r.data,a=r.name,p=i.getOptions();return null!==(o=null!==(t=null===(e=i.props.defaultValue)||void 0===e?void 0:e.toString())&&void 0!==t?t:n&&a?n[a]:void 0)&&void 0!==o?o:null===(l=p[0])||void 0===l?void 0:l.value}),o(i,"getOptions",function(){var o,t;return null!==(o=null!==(t=null==u?void 0:u.options)&&void 0!==t?t:i.props.options)&&void 0!==o?o:[]}),i.state={value:null===(e=i.getDefaultValue())||void 0===e?void 0:e.toString()},i}return t(d,s),e(d,[{key:"render",value:function(){var o,t,e=this.getOptions(),l=this.getLabel(),r=S(this.props.messageErrors,this.props.name);return n(p,{children:[!!this.props.disabled&&a("input",{hidden:!0,name:null===(o=this.props.name)||void 0===o?void 0:o.toString(),defaultValue:this.getDefaultValue()}),n(V,{className:this.getRootClasses(),fullWidth:!0,disabled:this.props.disabled,error:r.error,children:[a(v,{id:(null===(t=this.props.name)||void 0===t?void 0:t.toString())+l,children:l}),a(c,i(i({},this.mapProps()),{},{children:e.map(function(o){return a(f,{value:o.value,children:o.name},o.value)})})),a(m,{in:r.error,children:a(g,{children:r.message})}),this.renderTooltip()]})]})}}])}()}var W={root:"SelectSimple-root",tooltip:"SelectSimple-tooltip",tooltipWrap:"SelectSimple-tooltipWrap"},x=function(o,t){return"".concat((null==t?void 0:t.prefix)||"",".").concat(W[o]).concat((null==t?void 0:t.suffix)||"")},V=u(d)(function(t){var e=t.theme;return o(o(o({},x("root",{suffix:"&"}),{position:"relative"}),x("tooltipWrap"),{position:"absolute",top:e.spacing(2.25),right:e.spacing(1.5),display:"flex",alignItems:"center",gap:e.spacing(.5)}),x("tooltip",{suffix:"&"}),{".MuiSelect-icon":{right:e.spacing(4.5)}})});export{C as default};
1
+ import{defineProperty as o,inherits as t,createClass as e,objectSpread2 as l,classCallCheck as n,callSuper as i}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as r,jsx as a}from"react/jsx-runtime";import{Fragment as s,Component as p}from"react";import{styled as u,FormControl as d,inputBaseClasses as v,selectClasses as c,InputLabel as m,Select as g,MenuItem as h,Collapse as f,FormHelperText as S}from"@mui/material";import{mergeObjects as b}from"../utils/helpers.js";import{getErrorMessage as D}from"./helpers.js";import{RichTooltip as A,HelpOutlinePulseIcon as C}from"../components/rich-tooltip.js";function V(u){var d=function(){function d(t){var e,l;return n(this,d),l=i(this,d,[t]),o(l,"mapProps",function(){var o,t,e,n,i,r,a,s=l.getLabel(),p={id:null===(o=l.props.name)||void 0===o?void 0:o.toString(),labelId:(null===(t=l.props.name)||void 0===t?void 0:t.toString())+s,name:null===(e=l.props.name)||void 0===e?void 0:e.toString(),label:s,defaultValue:l.getDefaultValue(),value:l.state.value,onChange:function(o){var t=o.target.value+"";l.setState({value:t},function(){l.props.name&&l.props.onBlur&&l.props.onBlur(l.props.name);var o=l.getOptions().find(function(o){var e;return(null===(e=o.value)||void 0===e?void 0:e.toString())===t});o&&l.props.onChange&&l.props.onChange(o)})},disabled:l.props.disabled,fullWidth:void 0===l.props.fullWidth||l.props.fullWidth,endAdornment:null!==(n=null!==(i=l.props.endAdornment)&&void 0!==i?i:null==u?void 0:u.endAdornment)&&void 0!==n?n:void 0},d=null!==(r=null===(a=l.props.slots)||void 0===a?void 0:a.selectProps)&&void 0!==r?r:null==u?void 0:u.selectProps;return b({},p,d)}),o(l,"renderTooltip",function(){var o=l.props.tooltip||(null==u?void 0:u.tooltip);return o?a("div",{className:W.tooltipWrap,children:a(A,{panel:o,children:a(C,{fontSize:"small"})})}):null}),o(l,"getRootClasses",function(){var o,t,e,n=[W.root];return(l.props.tooltip||(null==u?void 0:u.tooltip))&&n.push(W.tooltip),(l.props.endAdornment||null!=u&&u.endAdornment)&&n.push(W.endAdornment),"small"===(null!==(o=null===(t=l.props.slots)||void 0===t||null===(t=t.selectProps)||void 0===t?void 0:t.size)&&void 0!==o?o:null==u||null===(e=u.selectProps)||void 0===e?void 0:e.size)&&n.push(W.small),n.join(" ")}),o(l,"getLabel",function(){var o,t;return l.props.label&&"string"==typeof l.props.label?l.props.label:null!==(o=null===(t=l.props.name)||void 0===t?void 0:t.toString())&&void 0!==o?o:""}),o(l,"getDefaultValue",function(o){var t,e,n,i,r=null!=o?o:l.props,a=r.data,s=r.name,p=l.getOptions();return null!==(t=null!==(e=null===(n=r.defaultValue)||void 0===n?void 0:n.toString())&&void 0!==e?e:a&&s?a[s]:void 0)&&void 0!==t?t:null===(i=p[0])||void 0===i?void 0:i.value}),o(l,"getOptions",function(){var o,t;return null!==(o=null!==(t=null==u?void 0:u.options)&&void 0!==t?t:l.props.options)&&void 0!==o?o:[]}),l.state={value:null===(e=l.getDefaultValue())||void 0===e?void 0:e.toString()},l}return t(d,p),e(d,[{key:"shouldComponentUpdate",value:function(o){var t=this.getDefaultValue(),e=this.getDefaultValue(o);return t===e||(this.setState({value:null==e?void 0:e.toString()}),!1)}},{key:"render",value:function(){var o,t,e=this.getOptions(),n=this.getLabel(),i=D(this.props.messageErrors,this.props.name);return r(s,{children:[!!this.props.disabled&&a("input",{hidden:!0,name:null===(o=this.props.name)||void 0===o?void 0:o.toString(),defaultValue:this.getDefaultValue()}),r(P,{className:this.getRootClasses(),fullWidth:!0,disabled:this.props.disabled,error:i.error,children:[a(m,{id:(null===(t=this.props.name)||void 0===t?void 0:t.toString())+n,children:n}),a(g,l(l({},this.mapProps()),{},{children:e.map(function(o){return a(h,{value:o.value,children:o.name},o.value)})})),a(f,{in:i.error,children:a(S,{children:i.message})}),this.renderTooltip()]})]})}}])}();return d}var W={root:"DinoSelectSimple-root",tooltipWrap:"DinoSelectSimple-tooltipWrap",small:"DinoSelectSimple-small",tooltip:"DinoSelectSimple-tooltip",endAdornment:"DinoSelectSimple-endAdornment"},j=W,P=u(d)(function(t){var e=t.theme;return o(o(o(o(o({},"&.".concat(j.root),{position:"relative"}),".".concat(j.tooltipWrap),{position:"absolute",top:e.spacing(2.25),right:e.spacing(1.5),display:"flex",alignItems:"center",gap:e.spacing(.5)}),"&.".concat(j.tooltip," .").concat(c.icon),{right:e.spacing(4.5)}),"&.".concat(j.small," .").concat(j.tooltipWrap),{top:e.spacing(1.25)}),"&.".concat(j.endAdornment),o(o({},".".concat(v.root),{paddingRight:e.spacing(1)}),".".concat(c.icon),{right:e.spacing(4.5)}))});export{V as default,W as selectSimpleClasses};
2
2
  //# sourceMappingURL=create.select-simple.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.select-simple.js","sources":["../../../src/form/create.select-simple.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { Collapse, FormControl, FormHelperText, InputLabel, MenuItem, Select, styled } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { SelectProps } from '@mui/material'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { RichTooltip, HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\nimport type { IRichTooltipPanelConfig } from '../components/rich-tooltip'\r\n\r\nexport interface ISelectSimpleOption<T extends string = string> {\r\n name: string\r\n value: T\r\n}\r\n\r\nexport interface ISelectSimpleSlots {\r\n selectProps?: Omit<SelectProps, 'variant'>\r\n}\r\n\r\nexport interface ISelectSimpleProps<T> extends Partial<IFormInputBase<T>> {\r\n options?: ISelectSimpleOption[]\r\n onChange?: (value: ISelectSimpleOption) => void\r\n slots?: ISelectSimpleSlots\r\n fullWidth?: boolean\r\n tooltip?: IRichTooltipPanelConfig\r\n}\r\n\r\nexport interface ISelectSimpleState {\r\n value?: string\r\n}\r\n\r\nexport interface ISelectSimpleParams extends ISelectSimpleSlots {\r\n options?: ISelectSimpleOption[]\r\n tooltip?: IRichTooltipPanelConfig\r\n}\r\n\r\nfunction CreateSelectSimple<T>(args?: ISelectSimpleParams): ComponentType<ISelectSimpleProps<T>> {\r\n class SelectSimple extends Component<ISelectSimpleProps<T>, ISelectSimpleState> {\r\n constructor(props: ISelectSimpleProps<T>) {\r\n super(props)\r\n this.state = { value: this.getDefaultValue()?.toString() }\r\n }\r\n mapProps = (): SelectProps => {\r\n const label = this.getLabel()\r\n const tfp: SelectProps = {\r\n id: this.props.name?.toString(),\r\n labelId: this.props.name?.toString() + label,\r\n name: this.props.name?.toString(),\r\n label: label,\r\n defaultValue: this.getDefaultValue(),\r\n value: this.state.value,\r\n onChange: (event) => {\r\n const value: string = event.target.value + ''\r\n this.setState({ value }, () => {\r\n if (!!this.props.name) {\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n const options = this.getOptions()\r\n const temp = options.find((x) => x.value?.toString() === value)\r\n if (!temp) return\r\n this.props.onChange && this.props.onChange(temp)\r\n })\r\n },\r\n disabled: this.props.disabled,\r\n fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true\r\n }\r\n const selectProps = this.props.slots?.selectProps ?? args?.selectProps\r\n return mergeObjects({}, tfp, selectProps)\r\n }\r\n render() {\r\n const data = this.getOptions()\r\n const label = this.getLabel()\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <Fragment>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.getDefaultValue()} />}\r\n <SelectSimpleStyled className={this.getRootClasses()} fullWidth disabled={this.props.disabled} error={errorMessage.error}>\r\n <InputLabel id={this.props.name?.toString() + label}>{label}</InputLabel>\r\n <Select {...this.mapProps()}>\r\n {data.map((item) => (\r\n <MenuItem key={item.value} value={item.value}>\r\n {item.name}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n <Collapse in={errorMessage.error}>\r\n <FormHelperText>{errorMessage.message}</FormHelperText>\r\n </Collapse>\r\n {this.renderTooltip()}\r\n </SelectSimpleStyled>\r\n </Fragment>\r\n )\r\n }\r\n\r\n renderTooltip = () => {\r\n const tooltip = this.props.tooltip || args?.tooltip\r\n if (!tooltip) return null\r\n return (\r\n <div className={selectSimpleClasses.tooltipWrap}>\r\n <RichTooltip panel={tooltip}>\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n </div>\r\n )\r\n }\r\n\r\n getRootClasses = () => {\r\n const classes = [selectSimpleClasses.root]\r\n const tooltip = this.props.tooltip || args?.tooltip\r\n if (tooltip) classes.push(selectSimpleClasses.tooltip)\r\n return classes.join(' ')\r\n }\r\n\r\n getLabel = () => {\r\n if (!!this.props.label && typeof this.props.label === 'string') return this.props.label\r\n return this.props.name?.toString() ?? ''\r\n }\r\n\r\n getDefaultValue = () => {\r\n const { data, name } = this.props\r\n const options = this.getOptions()\r\n return this.props.defaultValue?.toString() ?? (!!data && !!name ? data[name] : undefined) ?? options[0]?.value\r\n }\r\n\r\n getOptions = (): ISelectSimpleOption[] => {\r\n return args?.options ?? this.props.options ?? []\r\n }\r\n }\r\n return SelectSimple\r\n}\r\nexport default CreateSelectSimple\r\n\r\nconst selectSimpleClasses = {\r\n root: 'SelectSimple-root',\r\n tooltip: 'SelectSimple-tooltip',\r\n tooltipWrap: 'SelectSimple-tooltipWrap'\r\n}\r\n\r\nconst getSelectSimpleClass = (key: keyof typeof selectSimpleClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${selectSimpleClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nconst SelectSimpleStyled = styled(FormControl)(({ theme }) => ({\r\n [getSelectSimpleClass('root', { suffix: '&' })]: {\r\n position: 'relative'\r\n },\r\n [getSelectSimpleClass('tooltipWrap')]: {\r\n position: 'absolute',\r\n top: theme.spacing(2.25),\r\n right: theme.spacing(1.5),\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(0.5)\r\n },\r\n [getSelectSimpleClass('tooltip', { suffix: '&' })]: {\r\n '.MuiSelect-icon': {\r\n right: theme.spacing(4.5)\r\n }\r\n }\r\n}))\r\n"],"names":["CreateSelectSimple","args","SelectSimple","props","_this$getDefaultValue","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$props$name2","_this$props$name3","_this$props$slots$sel","_this$props$slots","label","getLabel","tfp","id","name","toString","labelId","defaultValue","getDefaultValue","value","state","onChange","event","target","setState","onBlur","temp","getOptions","find","x","_x$value","disabled","fullWidth","undefined","selectProps","slots","mergeObjects","tooltip","_jsx","className","selectSimpleClasses","tooltipWrap","children","RichTooltip","panel","HelpOutlinePulseIcon","fontSize","classes","root","push","join","_this$props$name$toSt","_this$props$name4","_ref","_this$props$defaultVa","_this$props$defaultVa2","_options$","_this$props","data","options","_ref2","_args$options","_inherits","Component","_createClass","key","_this$props$name5","_this$props$name6","this","errorMessage","getErrorMessage","messageErrors","_jsxs","Fragment","hidden","SelectSimpleStyled","getRootClasses","error","InputLabel","Select","_objectSpread","mapProps","map","item","MenuItem","Collapse","in","FormHelperText","message","renderTooltip","getSelectSimpleClass","concat","prefix","suffix","styled","FormControl","_ref3","theme","position","top","spacing","right","display","alignItems","gap"],"mappings":"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"}
1
+ {"version":3,"file":"create.select-simple.js","sources":["../../../src/form/create.select-simple.tsx"],"sourcesContent":["import { Component, Fragment } from 'react'\r\nimport { Collapse, FormControl, FormHelperText, inputBaseClasses, InputLabel, MenuItem, Select, selectClasses, styled } from '@mui/material'\r\nimport { mergeObjects } from '../utils/helpers'\r\nimport { getErrorMessage } from '../form/helpers'\r\nimport { HelpOutlinePulseIcon, RichTooltip } from '../components/rich-tooltip'\r\nimport type { ComponentType } from 'react'\r\nimport type { SelectProps } from '@mui/material'\r\nimport type { IFormInputBase } from '../form/types'\r\nimport type { IRichTooltipPanelConfig } from '../components/rich-tooltip'\r\n\r\nexport interface ISelectSimpleOption<T extends string = string> {\r\n name: string\r\n value: T\r\n}\r\n\r\nexport interface ISelectSimpleSlots {\r\n selectProps?: Omit<SelectProps, 'variant'>\r\n}\r\n\r\nexport interface ISelectSimpleProps<T> extends Partial<IFormInputBase<T>> {\r\n options?: ISelectSimpleOption[]\r\n value?: any\r\n onChange?: (value: ISelectSimpleOption) => void\r\n slots?: ISelectSimpleSlots\r\n fullWidth?: boolean\r\n tooltip?: IRichTooltipPanelConfig\r\n endAdornment?: React.ReactNode\r\n}\r\n\r\nexport interface ISelectSimpleState {\r\n value?: string\r\n}\r\n\r\nexport interface ISelectSimpleParams extends ISelectSimpleSlots {\r\n options?: ISelectSimpleOption[]\r\n tooltip?: IRichTooltipPanelConfig\r\n endAdornment?: React.ReactNode\r\n}\r\n\r\nfunction createSelectSimple<T>(args?: ISelectSimpleParams): ComponentType<ISelectSimpleProps<T>> {\r\n class SelectSimple extends Component<ISelectSimpleProps<T>, ISelectSimpleState> {\r\n constructor(props: ISelectSimpleProps<T>) {\r\n super(props)\r\n this.state = { value: this.getDefaultValue()?.toString() }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<ISelectSimpleProps<T>>): boolean {\r\n const currentDValue = this.getDefaultValue()\r\n const nextDValue = this.getDefaultValue(nextProps)\r\n if (currentDValue !== nextDValue) {\r\n this.setState({ value: nextDValue?.toString() })\r\n return false\r\n }\r\n return true\r\n }\r\n\r\n mapProps = (): SelectProps => {\r\n const label = this.getLabel()\r\n const tfp: SelectProps = {\r\n id: this.props.name?.toString(),\r\n labelId: this.props.name?.toString() + label,\r\n name: this.props.name?.toString(),\r\n label: label,\r\n defaultValue: this.getDefaultValue(),\r\n value: this.state.value,\r\n onChange: (event) => {\r\n const value: string = event.target.value + ''\r\n this.setState({ value }, () => {\r\n if (!!this.props.name) {\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n const options = this.getOptions()\r\n const temp = options.find((x) => x.value?.toString() === value)\r\n if (!temp) return\r\n this.props.onChange && this.props.onChange(temp)\r\n })\r\n },\r\n disabled: this.props.disabled,\r\n fullWidth: this.props.fullWidth !== undefined ? this.props.fullWidth : true,\r\n endAdornment: this.props.endAdornment ?? args?.endAdornment ?? undefined\r\n }\r\n const selectProps = this.props.slots?.selectProps ?? args?.selectProps\r\n return mergeObjects({}, tfp, selectProps)\r\n }\r\n\r\n render() {\r\n const data = this.getOptions()\r\n const label = this.getLabel()\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n return (\r\n <Fragment>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.getDefaultValue()} />}\r\n <SelectSimpleStyled className={this.getRootClasses()} fullWidth disabled={this.props.disabled} error={errorMessage.error}>\r\n <InputLabel id={this.props.name?.toString() + label}>{label}</InputLabel>\r\n <Select {...this.mapProps()}>\r\n {data.map((item) => (\r\n <MenuItem key={item.value} value={item.value}>\r\n {item.name}\r\n </MenuItem>\r\n ))}\r\n </Select>\r\n <Collapse in={errorMessage.error}>\r\n <FormHelperText>{errorMessage.message}</FormHelperText>\r\n </Collapse>\r\n {this.renderTooltip()}\r\n </SelectSimpleStyled>\r\n </Fragment>\r\n )\r\n }\r\n\r\n renderTooltip = () => {\r\n const tooltip = this.props.tooltip || args?.tooltip\r\n if (!tooltip) return null\r\n return (\r\n <div className={selectSimpleClasses.tooltipWrap}>\r\n <RichTooltip panel={tooltip}>\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n </div>\r\n )\r\n }\r\n\r\n getRootClasses = () => {\r\n const classes = [selectSimpleClasses.root]\r\n const tooltip = this.props.tooltip || args?.tooltip\r\n if (tooltip) classes.push(selectSimpleClasses.tooltip)\r\n if (this.props.endAdornment || args?.endAdornment) classes.push(selectSimpleClasses.endAdornment)\r\n const selectPropsSize = this.props.slots?.selectProps?.size ?? args?.selectProps?.size\r\n if (selectPropsSize === 'small') classes.push(selectSimpleClasses.small)\r\n return classes.join(' ')\r\n }\r\n\r\n getLabel = () => {\r\n if (!!this.props.label && typeof this.props.label === 'string') return this.props.label\r\n return this.props.name?.toString() ?? ''\r\n }\r\n\r\n getDefaultValue = (forceProps?: ISelectSimpleProps<T>) => {\r\n const currentProps = forceProps ?? this.props\r\n const { data, name } = currentProps\r\n const options = this.getOptions()\r\n return currentProps.defaultValue?.toString() ?? (!!data && !!name ? data[name] : undefined) ?? options[0]?.value\r\n }\r\n\r\n getOptions = (): ISelectSimpleOption[] => {\r\n return args?.options ?? this.props.options ?? []\r\n }\r\n }\r\n return SelectSimple\r\n}\r\nexport default createSelectSimple\r\n\r\nexport const selectSimpleClasses = {\r\n root: 'DinoSelectSimple-root',\r\n tooltipWrap: 'DinoSelectSimple-tooltipWrap',\r\n // status classes\r\n small: 'DinoSelectSimple-small',\r\n tooltip: 'DinoSelectSimple-tooltip',\r\n endAdornment: 'DinoSelectSimple-endAdornment'\r\n}\r\nconst classes = selectSimpleClasses // redefined for easy access\r\n\r\nconst SelectSimpleStyled = styled(FormControl)(({ theme }) => ({\r\n [`&.${classes.root}`]: { position: 'relative' },\r\n [`.${classes.tooltipWrap}`]: {\r\n position: 'absolute',\r\n top: theme.spacing(2.25),\r\n right: theme.spacing(1.5),\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(0.5)\r\n },\r\n [`&.${classes.tooltip} .${selectClasses.icon}`]: { right: theme.spacing(4.5) },\r\n [`&.${classes.small} .${classes.tooltipWrap}`]: { top: theme.spacing(1.25) },\r\n [`&.${classes.endAdornment}`]: {\r\n [`.${inputBaseClasses.root}`]: { paddingRight: theme.spacing(1) },\r\n [`.${selectClasses.icon}`]: { right: theme.spacing(4.5) }\r\n }\r\n}))\r\n"],"names":["createSelectSimple","args","SelectSimple","props","_this$getDefaultValue","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$props$name2","_this$props$name3","_ref","_this$props$endAdornm","_this$props$slots$sel","_this$props$slots","label","getLabel","tfp","id","name","toString","labelId","defaultValue","getDefaultValue","value","state","onChange","event","target","setState","onBlur","temp","getOptions","find","x","_x$value","disabled","fullWidth","undefined","endAdornment","selectProps","slots","mergeObjects","tooltip","_jsx","className","selectSimpleClasses","tooltipWrap","children","RichTooltip","panel","HelpOutlinePulseIcon","fontSize","_this$props$slots$sel2","_this$props$slots2","_args$selectProps","classes","root","push","size","small","join","_this$props$name$toSt","_this$props$name4","forceProps","_ref2","_currentProps$default","_currentProps$default2","_options$","currentProps","data","options","_ref3","_args$options","_inherits","Component","_createClass","key","nextProps","currentDValue","this","nextDValue","_this$props$name5","_this$props$name6","errorMessage","getErrorMessage","messageErrors","_jsxs","Fragment","hidden","SelectSimpleStyled","getRootClasses","error","InputLabel","Select","_objectSpread","mapProps","map","item","MenuItem","Collapse","in","FormHelperText","message","renderTooltip","styled","FormControl","_ref4","theme","concat","position","top","spacing","right","display","alignItems","gap","selectClasses","icon","inputBaseClasses","paddingRight"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as t,inherits as e,createClass as n,objectSpread2 as o,classCallCheck as r,callSuper as i,objectWithoutProperties as l,asyncToGenerator as a,regenerator as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as u,jsx as p}from"react/jsx-runtime";import{Component as d}from"react";import{styled as c,Box as f,Autocomplete as v,TextField as h}from"@mui/material";import{getErrorMessage as m}from"./helpers.js";import{RichTooltip as g,HelpOutlinePulseIcon as S}from"../components/rich-tooltip.js";import{ApiAlertContext as C}from"../api-context/alert-global.js";var I=["key"],x=function(c){var f=function(){function f(e){var n,u,d;return r(this,f),u=i(this,f,[e]),t(u,"abortController",{signalController:new AbortController}),t(u,"refInput",null),t(u,"existedIds",[]),t(u,"renderTooltip",function(){var t=u.props.tooltip||(null==c?void 0:c.tooltip);return t?p("div",{className:b.tooltipWrap,children:p(g,{panel:t,children:p(S,{fontSize:"small"})})}):null}),t(u,"getRootClasses",function(){var t=[b.root];return(u.props.tooltip||(null==c?void 0:c.tooltip))&&t.push(b.tooltip),t.join(" ")}),t(u,"getFetchDataFunc",function(){var t,e;return null!==(t=null!==(e=u.props.fetchData)&&void 0!==e?e:null==c?void 0:c.fetchData)&&void 0!==t?t:function(){return Promise.resolve([])}}),t(u,"getWrappedRenderOption",function(){var t,e,n=null!==(t=null===(e=u.props.slots)||void 0===e?void 0:e.renderOption)&&void 0!==t?t:null==c?void 0:c.renderOption;if(n)return function(t,e,r){var i=t.key,a=l(t,I);return p("li",o(o({},a),{},{style:o({width:"100%",boxSizing:"border-box"},a.style),children:n(a,e,r)}),i)}}),t(u,"timer",{_timer:0,_second:500,callback:(d=a(s().m(function t(e){var n,o,r;return s().w(function(t){for(;;)switch(t.p=t.n){case 0:return t.p=0,u.abortController.signalController=new AbortController,t.n=1,u.getFetchDataFunc()(e,u.abortController.signalController.signal);case 1:n=t.v,o=u.getOptionsFilter(n,u.existedIds),u.setState({options:o}),t.n=3;break;case 2:t.p=2,t.v,null===(r=C.ApiAlert)||void 0===r||r.PushError("Error from server!");case 3:return t.p=3,u.setState({statusText:"no items"}),t.f(3);case 4:return t.a(2)}},t,null,[[0,2,3,4]])})),function(t){return d.apply(this,arguments)}),start:function(t){u.timer.clear(),u.timer._timer=window.setTimeout(function(){return u.timer.callback(t)},u.timer._second)},clear:function(){u.abortController.signalController.abort(),clearTimeout(u.timer._timer)}}),t(u,"fetchData",a(s().m(function t(){var e,n,o,r,i,l;return s().w(function(t){for(;;)switch(t.p=t.n){case 0:return t.p=0,n=u.getDefaultValue(),t.n=1,u.getFetchDataFunc()(n,u.abortController.signalController.signal);case 1:if(o=t.v,Array.isArray(o)){t.n=2;break}return t.a(2);case 2:return r=u.getOptionsFilter(o,u.existedIds),i=null!==(e=r.find(function(t){return t.Id===n}))&&void 0!==e?e:null,u.setState({options:r,optionSelected:i,loading:!1}),t.a(2);case 3:t.p=3,t.v,null===(l=C.ApiAlert)||void 0===l||l.PushError("Error from server!");case 4:return t.p=4,u.setState({statusText:"no items",loading:!1}),t.f(4);case 5:return t.a(2)}},t,null,[[0,3,4,5]])}))),t(u,"handleChange",function(t,e){var n;u.setState({optionSelected:e}),u.refInput&&(u.refInput.value=null!==(n=null==e?void 0:e.Id)&&void 0!==n?n:""),u.props.onChange&&u.props.onChange(e)}),t(u,"handleInputChange",function(t,e){var n,o={inputValue:e};if(e!==(null===(n=u.state.optionSelected)||void 0===n?void 0:n.Name)){var r=e.trim().toLowerCase(),i=u.state.options.findIndex(function(t){var e;return null===(e=t.Name)||void 0===e?void 0:e.trim().toLowerCase().includes(r)});(i<0||""===r)&&(o.statusText="loading..."),u.setState(o,function(){(i<0||""===r)&&u.timer.start(r)})}else u.setState(o)}),t(u,"fillterOptions",function(t,e){return t.filter(function(t){var n,o=e.inputValue.toLowerCase();return t.Id.toLowerCase().includes(o)||(null===(n=t.Name)||void 0===n?void 0:n.toLowerCase().includes(o))})}),t(u,"getLabel",function(){var t,e;return null!==(t=u.props.label)&&void 0!==t?t:null===(e=u.props.name)||void 0===e?void 0:e.toString()}),t(u,"getDefaultValue",function(){var t,e,n;if(u.props.name)return null===(t=null!==(e=u.props.defaultValue)&&void 0!==e?e:null===(n=u.props.data)||void 0===n?void 0:n[u.props.name])||void 0===t?void 0:t.toString()}),u.state={options:[],statusText:"no items",optionSelected:null,inputValue:"",loading:!0},u.existedIds=null!==(n=e.existedIds)&&void 0!==n?n:[],u}return e(f,d),n(f,[{key:"componentDidMount",value:function(){this.fetchData()}},{key:"componentWillUnmount",value:function(){this.timer.clear()}},{key:"componentDidUpdate",value:function(t){var e;JSON.stringify(t.existedIds)!==JSON.stringify(this.props.existedIds)&&(this.existedIds=null!==(e=this.props.existedIds)&&void 0!==e?e:[])}},{key:"render",value:function(){var t,e,n,r,i=this,l=this.getDefaultValue(),a=m(this.props.messageErrors,this.props.name),s=this.getWrappedRenderOption();return u(y,{className:this.getRootClasses(),children:[p(v,{disabled:this.state.loading||this.props.disabled,fullWidth:!0,noOptionsText:this.state.statusText,options:this.state.options,getOptionLabel:function(t){var e;return null!==(e=t.Name)&&void 0!==e?e:t.Id},getOptionKey:function(t){return JSON.stringify(t)},isOptionEqualToValue:function(t,e){return t.Id.toString()===e.Id.toString()&&t.Name===e.Name},filterOptions:this.fillterOptions,renderOption:s,value:this.state.optionSelected,onChange:this.handleChange,inputValue:this.state.inputValue,onInputChange:this.handleInputChange,renderInput:function(t){var e;return p(h,o(o({},t),{},{label:i.getLabel(),error:a.error,helperText:a.message,onBlur:function(){i.props.name&&i.props.onBlur&&i.props.onBlur(i.props.name)}},null===(e=i.props.slots)||void 0===e?void 0:e.textFieldProps))}}),p("input",{ref:function(t){return i.refInput=t},hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:l}),(null===(e=this.state.optionSelected)||void 0===e?void 0:e.Other)&&p("input",{hidden:!0,name:"".concat(null===(n=this.props.name)||void 0===n?void 0:n.toString(),"Other"),defaultValue:JSON.stringify(this.state.optionSelected.Other)},null!==(r=this.state.optionSelected.Id)&&void 0!==r?r:"key"),this.renderTooltip()]})}},{key:"getOptionsFilter",value:function(t){var e=new Set(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]);return t.reduce(function(t,n){return e.has(n.Id)||(t.push(n),e.add(n.Id)),t},[])}}])}();return f},b={root:"SelectWithApi-root",tooltip:"SelectWithApi-tooltip",tooltipWrap:"SelectWithApi-tooltipWrap"},O=function(t,e){return"".concat((null==e?void 0:e.prefix)||"",".").concat(b[t]).concat((null==e?void 0:e.suffix)||"")},y=c(f)(function(e){var n=e.theme;return t(t(t({},O("root",{suffix:"&"}),{width:"100%",position:"relative"}),O("tooltipWrap"),{position:"absolute",top:n.spacing(2.25),right:n.spacing(1.5),display:"flex",alignItems:"center",gap:n.spacing(.5)}),O("tooltip",{suffix:"&"}),{".MuiInputBase-root .MuiAutocomplete-endAdornment":{right:n.spacing(4.5)}})});export{x as default};
1
+ import{defineProperty as t,inherits as e,createClass as n,objectSpread2 as o,classCallCheck as r,callSuper as i,objectWithoutProperties as l,asyncToGenerator as a,regenerator as s}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as u,jsx as p}from"react/jsx-runtime";import{Component as d}from"react";import{styled as c,Box as f,Autocomplete as v,TextField as h}from"@mui/material";import{getErrorMessage as m}from"./helpers.js";import{RichTooltip as g,HelpOutlinePulseIcon as S}from"../components/rich-tooltip.js";import{ApiAlertContext as I}from"../api-context/alert-global.js";var C=["key"];function x(c){var f=function(){function f(e){var n,u,d;return r(this,f),u=i(this,f,[e]),t(u,"abortController",{signalController:new AbortController}),t(u,"refInput",null),t(u,"existedIds",[]),t(u,"renderTooltip",function(){var t=u.props.tooltip||(null==c?void 0:c.tooltip);return t?p("div",{className:b.tooltipWrap,children:p(g,{panel:t,children:p(S,{fontSize:"small"})})}):null}),t(u,"getRootClasses",function(){var t=[b.root];return(u.props.tooltip||(null==c?void 0:c.tooltip))&&t.push(b.tooltip),t.join(" ")}),t(u,"getFetchDataFunc",function(){var t,e;return null!==(t=null!==(e=u.props.fetchData)&&void 0!==e?e:null==c?void 0:c.fetchData)&&void 0!==t?t:function(){return Promise.resolve([])}}),t(u,"getWrappedRenderOption",function(){var t,e,n=null!==(t=null===(e=u.props.slots)||void 0===e?void 0:e.renderOption)&&void 0!==t?t:null==c?void 0:c.renderOption;if(n)return function(t,e,r){var i=t.key,a=l(t,C);return p("li",o(o({},a),{},{style:o({width:"100%",boxSizing:"border-box"},a.style),children:n(a,e,r)}),i)}}),t(u,"timer",{_timer:0,_second:500,callback:(d=a(s().m(function t(e){var n,o,r;return s().w(function(t){for(;;)switch(t.p=t.n){case 0:return t.p=0,u.abortController.signalController=new AbortController,t.n=1,u.getFetchDataFunc()(e,u.abortController.signalController.signal);case 1:n=t.v,o=u.getOptionsFilter(n,u.existedIds),u.setState({options:o}),t.n=3;break;case 2:t.p=2,t.v,null===(r=I.ApiAlert)||void 0===r||r.PushError("Error from server!");case 3:return t.p=3,u.setState({statusText:"no items"}),t.f(3);case 4:return t.a(2)}},t,null,[[0,2,3,4]])})),function(t){return d.apply(this,arguments)}),start:function(t){u.timer.clear(),u.timer._timer=window.setTimeout(function(){return u.timer.callback(t)},u.timer._second)},clear:function(){u.abortController.signalController.abort(),clearTimeout(u.timer._timer)}}),t(u,"fetchData",a(s().m(function t(){var e,n,o,r,i,l;return s().w(function(t){for(;;)switch(t.p=t.n){case 0:return t.p=0,n=u.getDefaultValue(),t.n=1,u.getFetchDataFunc()(n,u.abortController.signalController.signal);case 1:if(o=t.v,Array.isArray(o)){t.n=2;break}return t.a(2);case 2:return r=u.getOptionsFilter(o,u.existedIds),i=null!==(e=r.find(function(t){return t.Id===n}))&&void 0!==e?e:null,u.setState({options:r,optionSelected:i,loading:!1}),t.a(2);case 3:t.p=3,t.v,null===(l=I.ApiAlert)||void 0===l||l.PushError("Error from server!");case 4:return t.p=4,u.setState({statusText:"no items",loading:!1}),t.f(4);case 5:return t.a(2)}},t,null,[[0,3,4,5]])}))),t(u,"handleChange",function(t,e){var n;u.setState({optionSelected:e}),u.refInput&&(u.refInput.value=null!==(n=null==e?void 0:e.Id)&&void 0!==n?n:""),u.props.onChange&&u.props.onChange(e)}),t(u,"handleInputChange",function(t,e){var n,o={inputValue:e};if(e!==(null===(n=u.state.optionSelected)||void 0===n?void 0:n.Name)){var r=e.trim().toLowerCase(),i=u.state.options.findIndex(function(t){var e;return null===(e=t.Name)||void 0===e?void 0:e.trim().toLowerCase().includes(r)});(i<0||""===r)&&(o.statusText="loading..."),u.setState(o,function(){(i<0||""===r)&&u.timer.start(r)})}else u.setState(o)}),t(u,"fillterOptions",function(t,e){return t.filter(function(t){var n,o=e.inputValue.toLowerCase();return t.Id.toLowerCase().includes(o)||(null===(n=t.Name)||void 0===n?void 0:n.toLowerCase().includes(o))})}),t(u,"getLabel",function(){var t,e;return null!==(t=u.props.label)&&void 0!==t?t:null===(e=u.props.name)||void 0===e?void 0:e.toString()}),t(u,"getDefaultValue",function(){var t,e,n;if(u.props.name)return null===(t=null!==(e=u.props.defaultValue)&&void 0!==e?e:null===(n=u.props.data)||void 0===n?void 0:n[u.props.name])||void 0===t?void 0:t.toString()}),t(u,"clear",function(){u.setState({optionSelected:null,inputValue:""}),u.refInput&&(u.refInput.value="")}),u.state={options:[],statusText:"no items",optionSelected:null,inputValue:"",loading:!0},u.existedIds=null!==(n=e.existedIds)&&void 0!==n?n:[],u}return e(f,d),n(f,[{key:"componentDidMount",value:function(){this.fetchData()}},{key:"componentWillUnmount",value:function(){this.timer.clear()}},{key:"componentDidUpdate",value:function(t){var e;JSON.stringify(t.existedIds)!==JSON.stringify(this.props.existedIds)&&(this.existedIds=null!==(e=this.props.existedIds)&&void 0!==e?e:[])}},{key:"render",value:function(){var t,e,n,r,i=this,l=this.getDefaultValue(),a=m(this.props.messageErrors,this.props.name),s=this.getWrappedRenderOption();return u(y,{className:this.getRootClasses(),children:[p(v,{disabled:this.state.loading||this.props.disabled,fullWidth:!0,noOptionsText:this.state.statusText,options:this.state.options,getOptionLabel:function(t){var e;return null!==(e=t.Name)&&void 0!==e?e:t.Id},getOptionKey:function(t){return JSON.stringify(t)},isOptionEqualToValue:function(t,e){return t.Id.toString()===e.Id.toString()&&t.Name===e.Name},filterOptions:this.fillterOptions,renderOption:s,value:this.state.optionSelected,onChange:this.handleChange,inputValue:this.state.inputValue,onInputChange:this.handleInputChange,renderInput:function(t){var e;return p(h,o(o({},t),{},{label:i.getLabel(),error:a.error,helperText:a.message,onBlur:function(){i.props.name&&i.props.onBlur&&i.props.onBlur(i.props.name)}},null===(e=i.props.slots)||void 0===e?void 0:e.textFieldProps))}}),p("input",{ref:function(t){return i.refInput=t},hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:l}),(null===(e=this.state.optionSelected)||void 0===e?void 0:e.Other)&&p("input",{hidden:!0,name:"".concat(null===(n=this.props.name)||void 0===n?void 0:n.toString(),"Other"),defaultValue:JSON.stringify(this.state.optionSelected.Other)},null!==(r=this.state.optionSelected.Id)&&void 0!==r?r:"key"),this.renderTooltip()]})}},{key:"getOptionsFilter",value:function(t){var e=new Set(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]);return t.reduce(function(t,n){return e.has(n.Id)||(t.push(n),e.add(n.Id)),t},[])}}])}();return f}var b={root:"SelectWithApi-root",tooltip:"SelectWithApi-tooltip",tooltipWrap:"SelectWithApi-tooltipWrap"},O=function(t,e){return"".concat((null==e?void 0:e.prefix)||"",".").concat(b[t]).concat((null==e?void 0:e.suffix)||"")},y=c(f)(function(e){var n=e.theme;return t(t(t({},O("root",{suffix:"&"}),{width:"100%",position:"relative"}),O("tooltipWrap"),{position:"absolute",top:n.spacing(2.25),right:n.spacing(1.5),display:"flex",alignItems:"center",gap:n.spacing(.5)}),O("tooltip",{suffix:"&"}),{".MuiInputBase-root .MuiAutocomplete-endAdornment":{right:n.spacing(4.5)}})});export{x as default};
2
2
  //# sourceMappingURL=create.select-with-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.select-with-api.js","sources":["../../../src/form/create.select-with-api.tsx"],"sourcesContent":["import { Component } from 'react'\r\nimport { Autocomplete, Box, styled, TextField } from '@mui/material'\r\nimport type { ComponentType } from 'react'\r\nimport type { FilterOptionsState, TextFieldProps, AutocompleteRenderOptionState } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ApiAlertContext } from '../api-context'\r\nimport { RichTooltip, HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\nimport type { IRichTooltipPanelConfig } from '../components/rich-tooltip'\r\n\r\nexport interface ISelectWithApiOption<TOther = any> {\r\n Id: string\r\n Name?: string\r\n Other?: TOther\r\n}\r\n\r\nexport interface ISelectWithApiPropsSlots<O extends ISelectWithApiOption = ISelectWithApiOption> {\r\n textFieldProps: TextFieldProps\r\n renderOption?: (props: React.HTMLAttributes<HTMLElement>, option: O, state: AutocompleteRenderOptionState) => React.ReactNode\r\n}\r\n\r\nexport type ISelectWithApiFetchData<O extends ISelectWithApiOption> = (value?: string, signal?: AbortSignal) => Promise<O[]>\r\n\r\nexport interface ISelectWithApiProps<T, O extends ISelectWithApiOption> extends IFormInputBase<T>, ISelectWithApiParams<O> {\r\n tooltip?: IRichTooltipPanelConfig\r\n onChange?: (value: O | null) => void\r\n existedIds?: string[]\r\n slots?: ISelectWithApiPropsSlots<O>\r\n}\r\n\r\nexport interface ISelectWithApiState<O extends ISelectWithApiOption> {\r\n options: O[]\r\n statusText?: string\r\n optionSelected: O | null\r\n inputValue: string\r\n loading?: boolean\r\n}\r\n\r\nexport interface ISelectWithApiParams<O extends ISelectWithApiOption> {\r\n fetchData?: ISelectWithApiFetchData<O>\r\n tooltip?: IRichTooltipPanelConfig\r\n renderOption?: (props: React.HTMLAttributes<HTMLElement>, option: O, state: AutocompleteRenderOptionState) => React.ReactNode\r\n}\r\n\r\nconst CreateSelectWithApi = function <T, O extends ISelectWithApiOption = ISelectWithApiOption>(\r\n params?: ISelectWithApiParams<O>\r\n): ComponentType<ISelectWithApiProps<T, O>> {\r\n class SelectWithApi extends Component<ISelectWithApiProps<T, O>, ISelectWithApiState<O>> {\r\n abortController = { signalController: new AbortController() }\r\n refInput: HTMLInputElement | null = null\r\n existedIds: string[] = []\r\n constructor(props: ISelectWithApiProps<T, O>) {\r\n super(props)\r\n this.state = {\r\n options: [],\r\n statusText: 'no items',\r\n optionSelected: null,\r\n inputValue: '',\r\n loading: true\r\n }\r\n this.existedIds = props.existedIds ?? []\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData()\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.timer.clear()\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<ISelectWithApiProps<T, O>>): void {\r\n if (JSON.stringify(prevProps.existedIds) !== JSON.stringify(this.props.existedIds)) {\r\n this.existedIds = this.props.existedIds ?? []\r\n }\r\n }\r\n\r\n render() {\r\n const defaultValue = this.getDefaultValue()\r\n const eMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const renderOption = this.getWrappedRenderOption()\r\n return (\r\n <SelectWithApiStyled className={this.getRootClasses()}>\r\n <Autocomplete\r\n disabled={this.state.loading || this.props.disabled}\r\n fullWidth\r\n noOptionsText={this.state.statusText}\r\n options={this.state.options}\r\n getOptionLabel={(x) => x.Name ?? x.Id}\r\n getOptionKey={(x) => JSON.stringify(x)}\r\n isOptionEqualToValue={(o, v) => o.Id.toString() === v.Id.toString() && o.Name === v.Name}\r\n filterOptions={this.fillterOptions}\r\n renderOption={renderOption}\r\n // select\r\n value={this.state.optionSelected}\r\n onChange={this.handleChange}\r\n // input\r\n inputValue={this.state.inputValue}\r\n onInputChange={this.handleInputChange}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n label={this.getLabel()}\r\n error={eMessage.error}\r\n helperText={eMessage.message}\r\n onBlur={() => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }}\r\n {...this.props.slots?.textFieldProps}\r\n />\r\n )}\r\n />\r\n <input ref={(ref) => (this.refInput = ref)} hidden name={this.props.name?.toString()} defaultValue={defaultValue} />\r\n {this.state.optionSelected?.Other && (\r\n <input\r\n hidden\r\n name={`${this.props.name?.toString()}Other`}\r\n key={this.state.optionSelected.Id ?? 'key'}\r\n defaultValue={JSON.stringify(this.state.optionSelected.Other)}\r\n />\r\n )}\r\n {this.renderTooltip()}\r\n </SelectWithApiStyled>\r\n )\r\n }\r\n\r\n renderTooltip = () => {\r\n const tooltip = this.props.tooltip || params?.tooltip\r\n if (!tooltip) return null\r\n return (\r\n <div className={selectWithApiClasses.tooltipWrap}>\r\n <RichTooltip panel={tooltip}>\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n </div>\r\n )\r\n }\r\n\r\n getRootClasses = () => {\r\n const classes = [selectWithApiClasses.root]\r\n const tooltip = this.props.tooltip || params?.tooltip\r\n if (tooltip) classes.push(selectWithApiClasses.tooltip)\r\n return classes.join(' ')\r\n }\r\n\r\n getFetchDataFunc = (): ISelectWithApiFetchData<O> => {\r\n return this.props.fetchData ?? params?.fetchData ?? (() => Promise.resolve([]))\r\n }\r\n\r\n getWrappedRenderOption = () => {\r\n const userRenderOption = this.props.slots?.renderOption ?? params?.renderOption\r\n if (!userRenderOption) return undefined\r\n\r\n return (props: any, option: O, state: AutocompleteRenderOptionState) => {\r\n const { key, ...propsWithoutKey } = props\r\n return (\r\n <li key={key} {...(propsWithoutKey as any)} style={{ width: '100%', boxSizing: 'border-box', ...propsWithoutKey.style }}>\r\n {userRenderOption(propsWithoutKey as React.HTMLAttributes<HTMLElement>, option, state)}\r\n </li>\r\n )\r\n }\r\n }\r\n\r\n timer = {\r\n _timer: 0,\r\n _second: 500,\r\n callback: async (value: string) => {\r\n try {\r\n this.abortController.signalController = new AbortController()\r\n const res = await this.getFetchDataFunc()(value, this.abortController.signalController.signal)\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n this.setState({ options })\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items' })\r\n }\r\n },\r\n start: (text: string) => {\r\n this.timer.clear()\r\n this.timer._timer = window.setTimeout(() => this.timer.callback(text), this.timer._second)\r\n },\r\n clear: () => {\r\n this.abortController.signalController.abort()\r\n clearTimeout(this.timer._timer)\r\n }\r\n }\r\n\r\n fetchData = async () => {\r\n try {\r\n const defaultValue = this.getDefaultValue()\r\n const res = await this.getFetchDataFunc()(defaultValue, this.abortController.signalController.signal)\r\n if (!Array.isArray(res)) return\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n const optionSelected = options.find((x) => x.Id === defaultValue) ?? null\r\n this.setState({ options, optionSelected, loading: false })\r\n return\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items', loading: false })\r\n }\r\n }\r\n\r\n handleChange = (_: React.SyntheticEvent, value: O | null) => {\r\n this.setState({ optionSelected: value })\r\n if (this.refInput) this.refInput.value = value?.Id ?? ''\r\n this.props.onChange && this.props.onChange(value)\r\n }\r\n\r\n handleInputChange = (_: React.SyntheticEvent, value: string) => {\r\n const state: Pick<ISelectWithApiState<O>, 'inputValue' | 'statusText' | 'loading'> = { inputValue: value }\r\n if (value === this.state.optionSelected?.Name) {\r\n this.setState(state)\r\n return\r\n }\r\n const valueFormated = value.trim().toLowerCase()\r\n const selectedIndex = this.state.options.findIndex((x) => {\r\n return x.Name?.trim().toLowerCase().includes(valueFormated)\r\n })\r\n if (selectedIndex < 0 || valueFormated === '') state.statusText = 'loading...'\r\n this.setState(state, () => {\r\n if (selectedIndex < 0 || valueFormated === '') this.timer.start(valueFormated)\r\n })\r\n }\r\n\r\n fillterOptions = (options: O[], state: FilterOptionsState<O>) => {\r\n return options.filter((x) => {\r\n const value = state.inputValue.toLowerCase()\r\n return x.Id.toLowerCase().includes(value) || x.Name?.toLowerCase().includes(value)\r\n })\r\n }\r\n\r\n getLabel = () => {\r\n return this.props.label ?? this.props.name?.toString()\r\n }\r\n\r\n getDefaultValue = () => {\r\n if (!this.props.name) return\r\n return (this.props.defaultValue ?? this.props.data?.[this.props.name])?.toString()\r\n }\r\n\r\n getOptionsFilter<O extends ISelectWithApiOption = ISelectWithApiOption>(options: O[], existedId: string[] = []): O[] {\r\n const ids = new Set<string | number>(existedId)\r\n return options.reduce<O[]>((a, b) => {\r\n if (!ids.has(b.Id)) {\r\n a.push(b)\r\n ids.add(b.Id)\r\n }\r\n return a\r\n }, [])\r\n }\r\n }\r\n return SelectWithApi\r\n}\r\nexport default CreateSelectWithApi\r\n\r\nconst selectWithApiClasses = {\r\n root: 'SelectWithApi-root',\r\n tooltip: 'SelectWithApi-tooltip',\r\n tooltipWrap: 'SelectWithApi-tooltipWrap'\r\n}\r\n\r\nconst getSelectWithApiClass = (key: keyof typeof selectWithApiClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${selectWithApiClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nconst SelectWithApiStyled = styled(Box)(({ theme }) => ({\r\n [getSelectWithApiClass('root', { suffix: '&' })]: {\r\n width: '100%',\r\n position: 'relative'\r\n },\r\n [getSelectWithApiClass('tooltipWrap')]: {\r\n position: 'absolute',\r\n top: theme.spacing(2.25),\r\n right: theme.spacing(1.5),\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(0.5)\r\n },\r\n [getSelectWithApiClass('tooltip', { suffix: '&' })]: {\r\n '.MuiInputBase-root .MuiAutocomplete-endAdornment': {\r\n right: theme.spacing(4.5)\r\n }\r\n }\r\n}))\r\n"],"names":["CreateSelectWithApi","params","SelectWithApi","props","_props$existedIds","_this","_callback","_classCallCheck","_callSuper","_defineProperty","signalController","AbortController","tooltip","_jsx","className","selectWithApiClasses","tooltipWrap","children","RichTooltip","panel","HelpOutlinePulseIcon","fontSize","classes","root","push","join","_ref","_this$props$fetchData","fetchData","Promise","resolve","_this$props$slots$ren","_this$props$slots","userRenderOption","slots","renderOption","option","state","key","propsWithoutKey","_objectWithoutProperties","_excluded","_objectSpread","style","width","boxSizing","_timer","_second","callback","_asyncToGenerator","_regenerator","m","_callee","value","res","options","_ApiAlertContext$ApiA","w","_context","p","n","abortController","getFetchDataFunc","signal","v","getOptionsFilter","existedIds","setState","ApiAlertContext","ApiAlert","PushError","statusText","f","a","_x","apply","this","arguments","start","text","timer","clear","window","setTimeout","abort","clearTimeout","_callee2","_options$find","defaultValue","optionSelected","_ApiAlertContext$ApiA2","_context2","getDefaultValue","Array","isArray","find","x","Id","loading","_","_value$Id","refInput","onChange","_this$state$optionSel","inputValue","Name","valueFormated","trim","toLowerCase","selectedIndex","findIndex","_x$Name","includes","filter","_x$Name2","_this$props$label","_this$props$name","label","name","toString","_ref3","_this$props$defaultVa","_this$props$data","data","_inherits","Component","_createClass","prevProps","_this$props$existedId","JSON","stringify","_this$props$name2","_this$state$optionSel2","_this$props$name3","_this$state$optionSel3","_this2","eMessage","getErrorMessage","messageErrors","getWrappedRenderOption","_jsxs","SelectWithApiStyled","getRootClasses","Autocomplete","disabled","fullWidth","noOptionsText","getOptionLabel","_x$Name3","getOptionKey","isOptionEqualToValue","o","filterOptions","fillterOptions","handleChange","onInputChange","handleInputChange","renderInput","_this2$props$slots","TextField","getLabel","error","helperText","message","onBlur","textFieldProps","ref","hidden","Other","concat","renderTooltip","ids","Set","length","undefined","reduce","b","has","add","getSelectWithApiClass","prefix","suffix","styled","Box","_ref5","theme","position","top","spacing","right","display","alignItems","gap"],"mappings":"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"}
1
+ {"version":3,"file":"create.select-with-api.js","sources":["../../../src/form/create.select-with-api.tsx"],"sourcesContent":["// imports\r\nimport { Component } from 'react'\r\nimport { Autocomplete, Box, styled, TextField } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ApiAlertContext } from '../api-context'\r\nimport { RichTooltip, HelpOutlinePulseIcon } from '../components/rich-tooltip'\r\n// types\r\nimport type { ComponentClass } from 'react'\r\nimport type { FilterOptionsState, TextFieldProps, AutocompleteRenderOptionState } from '@mui/material'\r\nimport type { IRichTooltipPanelConfig } from '../components/rich-tooltip'\r\n\r\nexport interface ISelectWithApiOption<TOther = any> {\r\n Id: string\r\n Name?: string\r\n Other?: TOther\r\n}\r\n\r\nexport interface ISelectWithApiPropsSlots<O extends ISelectWithApiOption = ISelectWithApiOption> {\r\n textFieldProps: TextFieldProps\r\n renderOption?: (props: React.HTMLAttributes<HTMLElement>, option: O, state: AutocompleteRenderOptionState) => React.ReactNode\r\n}\r\n\r\nexport type ISelectWithApiFetchData<O extends ISelectWithApiOption> = (value?: string, signal?: AbortSignal) => Promise<O[]>\r\n\r\nexport interface ISelectWithApiProps<T, O extends ISelectWithApiOption> extends IFormInputBase<T>, ISelectWithApiParams<O> {\r\n tooltip?: IRichTooltipPanelConfig\r\n onChange?: (value: O | null) => void\r\n existedIds?: string[]\r\n slots?: ISelectWithApiPropsSlots<O>\r\n}\r\n\r\nexport interface ISelectWithApiState<O extends ISelectWithApiOption> {\r\n options: O[]\r\n statusText?: string\r\n optionSelected: O | null\r\n inputValue: string\r\n loading?: boolean\r\n}\r\n\r\nexport interface ISelectWithApiParams<O extends ISelectWithApiOption> {\r\n fetchData?: ISelectWithApiFetchData<O>\r\n tooltip?: IRichTooltipPanelConfig\r\n renderOption?: (props: React.HTMLAttributes<HTMLElement>, option: O, state: AutocompleteRenderOptionState) => React.ReactNode\r\n}\r\n\r\nexport interface ISelectWithApiHandle {\r\n clear: () => void\r\n}\r\n\r\nfunction createSelectWithApi<T, O extends ISelectWithApiOption = ISelectWithApiOption>(params?: ISelectWithApiParams<O>) {\r\n class SelectWithApi extends Component<ISelectWithApiProps<T, O>, ISelectWithApiState<O>> implements ISelectWithApiHandle {\r\n abortController = { signalController: new AbortController() }\r\n refInput: HTMLInputElement | null = null\r\n existedIds: string[] = []\r\n constructor(props: ISelectWithApiProps<T, O>) {\r\n super(props)\r\n this.state = {\r\n options: [],\r\n statusText: 'no items',\r\n optionSelected: null,\r\n inputValue: '',\r\n loading: true\r\n }\r\n this.existedIds = props.existedIds ?? []\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData()\r\n }\r\n\r\n componentWillUnmount(): void {\r\n this.timer.clear()\r\n }\r\n\r\n componentDidUpdate(prevProps: Readonly<ISelectWithApiProps<T, O>>): void {\r\n if (JSON.stringify(prevProps.existedIds) !== JSON.stringify(this.props.existedIds)) {\r\n this.existedIds = this.props.existedIds ?? []\r\n }\r\n }\r\n\r\n render() {\r\n const defaultValue = this.getDefaultValue()\r\n const eMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const renderOption = this.getWrappedRenderOption()\r\n return (\r\n <SelectWithApiStyled className={this.getRootClasses()}>\r\n <Autocomplete\r\n disabled={this.state.loading || this.props.disabled}\r\n fullWidth\r\n noOptionsText={this.state.statusText}\r\n options={this.state.options}\r\n getOptionLabel={(x) => x.Name ?? x.Id}\r\n getOptionKey={(x) => JSON.stringify(x)}\r\n isOptionEqualToValue={(o, v) => o.Id.toString() === v.Id.toString() && o.Name === v.Name}\r\n filterOptions={this.fillterOptions}\r\n renderOption={renderOption}\r\n // select\r\n value={this.state.optionSelected}\r\n onChange={this.handleChange}\r\n // input\r\n inputValue={this.state.inputValue}\r\n onInputChange={this.handleInputChange}\r\n renderInput={(params) => (\r\n <TextField\r\n {...params}\r\n label={this.getLabel()}\r\n error={eMessage.error}\r\n helperText={eMessage.message}\r\n onBlur={() => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }}\r\n {...this.props.slots?.textFieldProps}\r\n />\r\n )}\r\n />\r\n <input ref={(ref) => (this.refInput = ref)} hidden name={this.props.name?.toString()} defaultValue={defaultValue} />\r\n {this.state.optionSelected?.Other && (\r\n <input\r\n hidden\r\n name={`${this.props.name?.toString()}Other`}\r\n key={this.state.optionSelected.Id ?? 'key'}\r\n defaultValue={JSON.stringify(this.state.optionSelected.Other)}\r\n />\r\n )}\r\n {this.renderTooltip()}\r\n </SelectWithApiStyled>\r\n )\r\n }\r\n\r\n renderTooltip = () => {\r\n const tooltip = this.props.tooltip || params?.tooltip\r\n if (!tooltip) return null\r\n return (\r\n <div className={selectWithApiClasses.tooltipWrap}>\r\n <RichTooltip panel={tooltip}>\r\n <HelpOutlinePulseIcon fontSize='small' />\r\n </RichTooltip>\r\n </div>\r\n )\r\n }\r\n\r\n getRootClasses = () => {\r\n const classes = [selectWithApiClasses.root]\r\n const tooltip = this.props.tooltip || params?.tooltip\r\n if (tooltip) classes.push(selectWithApiClasses.tooltip)\r\n return classes.join(' ')\r\n }\r\n\r\n getFetchDataFunc = (): ISelectWithApiFetchData<O> => {\r\n return this.props.fetchData ?? params?.fetchData ?? (() => Promise.resolve([]))\r\n }\r\n\r\n getWrappedRenderOption = () => {\r\n const userRenderOption = this.props.slots?.renderOption ?? params?.renderOption\r\n if (!userRenderOption) return undefined\r\n\r\n return (props: any, option: O, state: AutocompleteRenderOptionState) => {\r\n const { key, ...propsWithoutKey } = props\r\n return (\r\n <li key={key} {...(propsWithoutKey as any)} style={{ width: '100%', boxSizing: 'border-box', ...propsWithoutKey.style }}>\r\n {userRenderOption(propsWithoutKey as React.HTMLAttributes<HTMLElement>, option, state)}\r\n </li>\r\n )\r\n }\r\n }\r\n\r\n timer = {\r\n _timer: 0,\r\n _second: 500,\r\n callback: async (value: string) => {\r\n try {\r\n this.abortController.signalController = new AbortController()\r\n const res = await this.getFetchDataFunc()(value, this.abortController.signalController.signal)\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n this.setState({ options })\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items' })\r\n }\r\n },\r\n start: (text: string) => {\r\n this.timer.clear()\r\n this.timer._timer = window.setTimeout(() => this.timer.callback(text), this.timer._second)\r\n },\r\n clear: () => {\r\n this.abortController.signalController.abort()\r\n clearTimeout(this.timer._timer)\r\n }\r\n }\r\n\r\n fetchData = async () => {\r\n try {\r\n const defaultValue = this.getDefaultValue()\r\n const res = await this.getFetchDataFunc()(defaultValue, this.abortController.signalController.signal)\r\n if (!Array.isArray(res)) return\r\n const options = this.getOptionsFilter(res, this.existedIds)\r\n const optionSelected = options.find((x) => x.Id === defaultValue) ?? null\r\n this.setState({ options, optionSelected, loading: false })\r\n return\r\n } catch (error) {\r\n // console.log(error)\r\n ApiAlertContext.ApiAlert?.PushError('Error from server!')\r\n } finally {\r\n this.setState({ statusText: 'no items', loading: false })\r\n }\r\n }\r\n\r\n handleChange = (_: React.SyntheticEvent, value: O | null) => {\r\n this.setState({ optionSelected: value })\r\n if (this.refInput) this.refInput.value = value?.Id ?? ''\r\n this.props.onChange && this.props.onChange(value)\r\n }\r\n\r\n handleInputChange = (_: React.SyntheticEvent, value: string) => {\r\n const state: Pick<ISelectWithApiState<O>, 'inputValue' | 'statusText' | 'loading'> = { inputValue: value }\r\n if (value === this.state.optionSelected?.Name) {\r\n this.setState(state)\r\n return\r\n }\r\n const valueFormated = value.trim().toLowerCase()\r\n const selectedIndex = this.state.options.findIndex((x) => {\r\n return x.Name?.trim().toLowerCase().includes(valueFormated)\r\n })\r\n if (selectedIndex < 0 || valueFormated === '') state.statusText = 'loading...'\r\n this.setState(state, () => {\r\n if (selectedIndex < 0 || valueFormated === '') this.timer.start(valueFormated)\r\n })\r\n }\r\n\r\n fillterOptions = (options: O[], state: FilterOptionsState<O>) => {\r\n return options.filter((x) => {\r\n const value = state.inputValue.toLowerCase()\r\n return x.Id.toLowerCase().includes(value) || x.Name?.toLowerCase().includes(value)\r\n })\r\n }\r\n\r\n getLabel = () => {\r\n return this.props.label ?? this.props.name?.toString()\r\n }\r\n\r\n getDefaultValue = () => {\r\n if (!this.props.name) return\r\n return (this.props.defaultValue ?? this.props.data?.[this.props.name])?.toString()\r\n }\r\n\r\n getOptionsFilter<O extends ISelectWithApiOption = ISelectWithApiOption>(options: O[], existedId: string[] = []): O[] {\r\n const ids = new Set<string | number>(existedId)\r\n return options.reduce<O[]>((a, b) => {\r\n if (!ids.has(b.Id)) {\r\n a.push(b)\r\n ids.add(b.Id)\r\n }\r\n return a\r\n }, [])\r\n }\r\n\r\n clear = () => {\r\n this.setState({ optionSelected: null, inputValue: '' })\r\n if (this.refInput) this.refInput.value = ''\r\n }\r\n }\r\n return SelectWithApi\r\n}\r\nexport default createSelectWithApi\r\n\r\nconst selectWithApiClasses = {\r\n root: 'SelectWithApi-root',\r\n tooltip: 'SelectWithApi-tooltip',\r\n tooltipWrap: 'SelectWithApi-tooltipWrap'\r\n}\r\n\r\nconst getSelectWithApiClass = (key: keyof typeof selectWithApiClasses, options?: { prefix?: string; suffix?: string }) => {\r\n return `${options?.prefix || ''}.${selectWithApiClasses[key]}${options?.suffix || ''}`\r\n}\r\n\r\nconst SelectWithApiStyled = styled(Box)(({ theme }) => ({\r\n [getSelectWithApiClass('root', { suffix: '&' })]: {\r\n width: '100%',\r\n position: 'relative'\r\n },\r\n [getSelectWithApiClass('tooltipWrap')]: {\r\n position: 'absolute',\r\n top: theme.spacing(2.25),\r\n right: theme.spacing(1.5),\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: theme.spacing(0.5)\r\n },\r\n [getSelectWithApiClass('tooltip', { suffix: '&' })]: {\r\n '.MuiInputBase-root .MuiAutocomplete-endAdornment': {\r\n right: theme.spacing(4.5)\r\n }\r\n }\r\n}))\r\n"],"names":["createSelectWithApi","params","SelectWithApi","props","_props$existedIds","_this","_callback","_classCallCheck","_callSuper","_defineProperty","signalController","AbortController","tooltip","_jsx","className","selectWithApiClasses","tooltipWrap","children","RichTooltip","panel","HelpOutlinePulseIcon","fontSize","classes","root","push","join","_ref","_this$props$fetchData","fetchData","Promise","resolve","_this$props$slots$ren","_this$props$slots","userRenderOption","slots","renderOption","option","state","key","propsWithoutKey","_objectWithoutProperties","_excluded","_objectSpread","style","width","boxSizing","_timer","_second","callback","_asyncToGenerator","_regenerator","m","_callee","value","res","options","_ApiAlertContext$ApiA","w","_context","p","n","abortController","getFetchDataFunc","signal","v","getOptionsFilter","existedIds","setState","ApiAlertContext","ApiAlert","PushError","statusText","f","a","_x","apply","this","arguments","start","text","timer","clear","window","setTimeout","abort","clearTimeout","_callee2","_options$find","defaultValue","optionSelected","_ApiAlertContext$ApiA2","_context2","getDefaultValue","Array","isArray","find","x","Id","loading","_","_value$Id","refInput","onChange","_this$state$optionSel","inputValue","Name","valueFormated","trim","toLowerCase","selectedIndex","findIndex","_x$Name","includes","filter","_x$Name2","_this$props$label","_this$props$name","label","name","toString","_ref3","_this$props$defaultVa","_this$props$data","data","_inherits","Component","_createClass","prevProps","_this$props$existedId","JSON","stringify","_this$props$name2","_this$state$optionSel2","_this$props$name3","_this$state$optionSel3","_this2","eMessage","getErrorMessage","messageErrors","getWrappedRenderOption","_jsxs","SelectWithApiStyled","getRootClasses","Autocomplete","disabled","fullWidth","noOptionsText","getOptionLabel","_x$Name3","getOptionKey","isOptionEqualToValue","o","filterOptions","fillterOptions","handleChange","onInputChange","handleInputChange","renderInput","_this2$props$slots","TextField","getLabel","error","helperText","message","onBlur","textFieldProps","ref","hidden","Other","concat","renderTooltip","ids","Set","length","undefined","reduce","b","has","add","getSelectWithApiClass","prefix","suffix","styled","Box","_ref5","theme","position","top","spacing","right","display","alignItems","gap"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dino-form.js","sources":["../../../src/form/dino-form.tsx"],"sourcesContent":["import { FormBottomBarWrap } from './create.form-grid-layout.units'\r\nimport { createInputFileCsvLocalParser } from './create.input-file.csv-local-parser'\r\nimport DecoratorForm, { createDecoratorForm } from './decorator.form'\r\nimport FormValidator from './validator'\r\nimport createInput from './create.input'\r\nimport FormModalWrapper from './modal-wrapper'\r\nimport createFormBase from './create.form-base'\r\nimport CreateInputFile from './create.input.file'\r\nimport CreateDatePicker from './create.date-picker'\r\nimport CreateTextEditor from './create.text-editor'\r\nimport createColorPicker from './create.color-picker'\r\nimport CreateDateExpired from './create.date-expired'\r\nimport CreateFormComfirm from './create.form-comfirm'\r\nimport CreateSelectSimple from './create.select-simple'\r\nimport CreateSelectWithApi from './create.select-with-api'\r\nimport CreateFormGridLayout from './create.form-grid-layout'\r\nimport createInputImageFile from './create.input.image-file'\r\nimport CreateAutocompleteChip from './create.autocomplete.chips'\r\n\r\nclass DinoFormBase {\r\n //#region Base\r\n ModalWrap = FormModalWrapper\r\n BottomBarWrap = FormBottomBarWrap\r\n FormValidator = FormValidator\r\n validator = FormValidator.initial\r\n createFormBase = createFormBase\r\n createFormComfirm = CreateFormComfirm\r\n createFormGridLayout = CreateFormGridLayout\r\n DecoratorForm = DecoratorForm\r\n createDecoratorForm = createDecoratorForm\r\n //#endregion\r\n\r\n //#region Inputs\r\n createColorPicker = createColorPicker\r\n createDateExpired = CreateDateExpired\r\n createDatePicker = CreateDatePicker\r\n createAutocompleteChip = CreateAutocompleteChip\r\n createInputFileCsvLocalParser = createInputFileCsvLocalParser\r\n createInputFile = CreateInputFile\r\n createInputImageFile = createInputImageFile\r\n createInput = createInput\r\n createSelectSimple = CreateSelectSimple\r\n createSelectWithApi = CreateSelectWithApi\r\n createTextEditor = CreateTextEditor\r\n //#endregion\r\n}\r\n\r\nconst DinoForm = new DinoFormBase()\r\nexport default DinoForm\r\n"],"names":["DinoForm","_createClass","DinoFormBase","_classCallCheck","_defineProperty","FormModalWrapper","FormBottomBarWrap","FormValidator","this","initial","createFormBase","CreateFormComfirm","CreateFormGridLayout","DecoratorForm","createDecoratorForm","createColorPicker","CreateDateExpired","CreateDatePicker","CreateAutocompleteChip","createInputFileCsvLocalParser","CreateInputFile","createInputImageFile","createInput","CreateSelectSimple","CreateSelectWithApi","CreateTextEditor"],"mappings":"g9BAiBgE,IA8B1DA,EAAW,IA5BCC,EAAA,SAAAC,IAAAC,OAAAD,GAChBE,mBACYC,GAAgBD,uBACZE,GAAiBF,uBACjBG,GAAaH,EAAAI,KAAA,YACjBD,EAAcE,SAAOL,wBAChBM,GAAcN,2BACXO,GAAiBP,8BACdQ,GAAoBR,uBAC3BS,GAAaT,6BACPU,GAGtBV,2BACoBW,GAAiBX,2BACjBY,GAAiBZ,0BAClBa,GAAgBb,gCACVc,GAAsBd,uCACfe,GAA6Bf,yBAC3CgB,GAAehB,8BACViB,GAAoBjB,qBAC7BkB,GAAWlB,4BACJmB,GAAkBnB,6BACjBoB,GAAmBpB,0BACtBqB,EAAgB"}
1
+ {"version":3,"file":"dino-form.js","sources":["../../../src/form/dino-form.tsx"],"sourcesContent":["import { FormBottomBarWrap } from './create.form-grid-layout.units'\r\nimport { createInputFileCsvLocalParser } from './create.input-file.csv-local-parser'\r\nimport DecoratorForm, { createDecoratorForm } from './decorator.form'\r\nimport FormValidator from './validator'\r\nimport createInput from './create.input'\r\nimport FormModalWrapper from './modal-wrapper'\r\nimport createFormBase from './create.form-base'\r\nimport CreateInputFile from './create.input.file'\r\nimport CreateDatePicker from './create.date-picker'\r\nimport CreateTextEditor from './create.text-editor'\r\nimport createColorPicker from './create.color-picker'\r\nimport CreateDateExpired from './create.date-expired'\r\nimport CreateFormComfirm from './create.form-comfirm'\r\nimport createSelectSimple from './create.select-simple'\r\nimport createSelectWithApi from './create.select-with-api'\r\nimport CreateFormGridLayout from './create.form-grid-layout'\r\nimport createInputImageFile from './create.input.image-file'\r\nimport CreateAutocompleteChip from './create.autocomplete.chips'\r\n\r\nclass DinoFormBase {\r\n //#region Base\r\n ModalWrap = FormModalWrapper\r\n BottomBarWrap = FormBottomBarWrap\r\n FormValidator = FormValidator\r\n validator = FormValidator.initial\r\n createFormBase = createFormBase\r\n createFormComfirm = CreateFormComfirm\r\n createFormGridLayout = CreateFormGridLayout\r\n DecoratorForm = DecoratorForm\r\n createDecoratorForm = createDecoratorForm\r\n //#endregion\r\n\r\n //#region Inputs\r\n createColorPicker = createColorPicker\r\n createDateExpired = CreateDateExpired\r\n createDatePicker = CreateDatePicker\r\n createAutocompleteChip = CreateAutocompleteChip\r\n createInputFileCsvLocalParser = createInputFileCsvLocalParser\r\n createInputFile = CreateInputFile\r\n createInputImageFile = createInputImageFile\r\n createInput = createInput\r\n createSelectSimple = createSelectSimple\r\n createSelectWithApi = createSelectWithApi\r\n createTextEditor = CreateTextEditor\r\n //#endregion\r\n}\r\n\r\nconst DinoForm = new DinoFormBase()\r\nexport default DinoForm\r\n"],"names":["DinoForm","_createClass","DinoFormBase","_classCallCheck","_defineProperty","FormModalWrapper","FormBottomBarWrap","FormValidator","this","initial","createFormBase","CreateFormComfirm","CreateFormGridLayout","DecoratorForm","createDecoratorForm","createColorPicker","CreateDateExpired","CreateDatePicker","CreateAutocompleteChip","createInputFileCsvLocalParser","CreateInputFile","createInputImageFile","createInput","createSelectSimple","createSelectWithApi","CreateTextEditor"],"mappings":"g9BAiBgE,IA8B1DA,EAAW,IA5BCC,EAAA,SAAAC,IAAAC,OAAAD,GAChBE,mBACYC,GAAgBD,uBACZE,GAAiBF,uBACjBG,GAAaH,EAAAI,KAAA,YACjBD,EAAcE,SAAOL,wBAChBM,GAAcN,2BACXO,GAAiBP,8BACdQ,GAAoBR,uBAC3BS,GAAaT,6BACPU,GAGtBV,2BACoBW,GAAiBX,2BACjBY,GAAiBZ,0BAClBa,GAAgBb,gCACVc,GAAsBd,uCACfe,GAA6Bf,yBAC3CgB,GAAehB,8BACViB,GAAoBjB,qBAC7BkB,GAAWlB,4BACJmB,GAAkBnB,6BACjBoB,GAAmBpB,0BACtBqB,EAAgB"}
@@ -1,2 +1,2 @@
1
- import{objectWithoutProperties as e,objectSpread2 as o,defineProperty as i,inherits as r,createClass as a,classCallCheck as t,callSuper as l,toConsumableArray as n}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s}from"react/jsx-runtime";import{Component as d,Fragment as u}from"react";import{styled as p,Box as c}from"@mui/material";import{DataGrid as g}from"@mui/x-data-grid";import{mergeObjects as m}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{TableBaseContext as h}from"./context.js";import{customFilterOperators as f}from"./custom.filter-operators.js";import v,{dinoTableClasses as b}from"./helpers.js";import y from"./toolbar-pannel.js";import{GlobalModal as C,mapGlobalModalContext as P}from"../api-context/global-modal.js";var w=["children"];function S(e){return function(){function p(r){var a;return t(this,p),a=l(this,p,[r]),i(a,"setTableQueryParams",function(e){a.tableQueryParams=m({},a.tableQueryParams,e)}),i(a,"renderWrapContext",function(o){var i=e.disableGlobalModalProvider?u:C;return s(i,{children:P(function(e){return s(h.Provider,{value:{showModal:e.show,closeModal:e.close},children:o})})})}),i(a,"getDataGridProps",function(){var o,i,r,t,l=v.mapInitialState(a.props.query,{columns:{columnVisibilityModel:e.columnVisibilityModel}}),n={getRowId:e.getRowId,initialState:l,columns:a.columns,rows:null!==(o=null===(i=a.props.data)||void 0===i?void 0:i.items)&&void 0!==o?o:[],checkboxSelection:!0,pagination:!0,density:null!==(r=null===(t=a.props.slots)||void 0===t?void 0:t.density)&&void 0!==r?r:"standard",filterDebounceMs:800,sx:{border:0},slots:{toolbar:a.mergeConfig.toolbar},rowSelectionModel:a.rowSelecteds,onRowSelectionModelChange:a.handleRowSelectionChange};if("server"===e.featureMode){var s,d,u={filterMode:"server",sortingMode:"server",paginationMode:"server",onPaginationModelChange:a.onPaginationModelChange,onFilterModelChange:a.onFilterModelChange,onSortModelChange:a.onSortModelChange,rowCount:null!==(s=null===(d=a.props.data)||void 0===d?void 0:d.rowTotal)&&void 0!==s?s:0,paginationModel:a.tableQueryParams.pagination,filterModel:a.tableQueryParams.filter,sortModel:v.mapSortModel(a.tableQueryParams.sort),loading:a.mergeConfig.loading};Object.assign(n,u)}return m(n,a.mergeConfig.dataGridProps)}),i(a,"initialColumns",function(){var i,r,t=a.mergeConfig,l=t.ActionRow,d=t.disableActionRow,u=[];return l&&!0!==d&&u.push(o({field:"Actions",minWidth:100,headerAlign:"right",align:"right",filterable:!1,sortable:!1,renderCell:function(e){return s(l,{value:e.row})}},e.actionRow)),i=u,r=Object.keys(e.columns).map(function(i){var r=o({field:i},e.columns[i]);return r.filterOperators=e.filterOperators?e.filterOperators(r):f(r),r}),i&&i.length>0&&r.push.apply(r,n(i)),r}),i(a,"onPaginationModelChange",function(e,o){a.mergeConfig.loading||(a.setTableQueryParams({pagination:e,detail:"pagination"}),a.handleChange())}),i(a,"onFilterModelChange",function(e,o){var i;if(!a.mergeConfig.loading){var r=a.tableQueryParams.pagination;a.setTableQueryParams({filter:e,pagination:{page:0,pageSize:null!==(i=null==r?void 0:r.pageSize)&&void 0!==i?i:25},detail:v.detectSearchType(e)}),a.handleChange()}}),i(a,"onSortModelChange",function(e,o){if(!a.mergeConfig.loading){var i,r,t,l,n,s=e,d=a.tableQueryParams.sort;if(null!=d&&d.length&&!s.length)if((null==d||null===(i=d[0])||void 0===i?void 0:i.field)===(null===(r=a.defaultTableQueryParams.sort)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.field))s=[{field:null===(t=d[0])||void 0===t?void 0:t.field,sort:"desc"===(null===(l=d[0])||void 0===l?void 0:l.sort)?"asc":"desc"}];else s=null!==(n=a.defaultTableQueryParams.sort)&&void 0!==n?n:[];a.setTableQueryParams({sort:s,detail:"sort"}),a.handleChange()}}),i(a,"handleChange",function(){a.changeTimeout&&clearTimeout(a.changeTimeout),a.changeTimeout=setTimeout(function(){a.props.onChange&&a.props.onChange(a.tableQueryParams)},300)}),i(a,"handleRowSelectionChange",function(e,o){a.mergeConfig.maxSelcion&&e.length>a.mergeConfig.maxSelcion?a.rowSelecteds=e.slice(0,a.mergeConfig.maxSelcion):a.rowSelecteds=e,a.props.onRowSelectionChange&&a.props.onRowSelectionChange(a.rowSelecteds,o),a.forceUpdate()}),a.columns=a.initialColumns(),a.tableQueryParams=o({},r.query),a.defaultTableQueryParams=a.tableQueryParams,a.rowSelecteds=[],a}return r(p,d),a(p,[{key:"mergeConfig",get:function(){var i,r,a,t,l,n,d,u,p,c,g=m({},null==e?void 0:e.toolbarProps,null===(i=this.props.slots)||void 0===i?void 0:i.toolbarProps);return{toolbar:null!==(r=null===(a=this.props.slots)||void 0===a?void 0:a.toolbar)&&void 0!==r?r:function(){return s(y,o({},g))},ActionRow:null===(t=this.props.slots)||void 0===t?void 0:t.actionRow,disableActionRow:e.disableActionRow,columnVisibilityModel:e.columnVisibilityModel,maxSelcion:null!==(l=null===(n=this.props.slots)||void 0===n?void 0:n.maxSelection)&&void 0!==l?l:e.maxSelection,dataGridProps:m({},e.dataGridProps,null===(d=this.props.slots)||void 0===d?void 0:d.dataGridProps),wrapProps:m({},e.wrapProps,null===(u=this.props.slots)||void 0===u?void 0:u.wrapProps),loading:null!==(p=void 0!==this.props.loading?this.props.loading:null===(c=this.tableQueryParams)||void 0===c?void 0:c.loading)&&void 0!==p&&p}}},{key:"componentWillUnmount",value:function(){this.changeTimeout&&clearTimeout(this.changeTimeout)}},{key:"shouldComponentUpdate",value:function(o){var i;return"server"!==e.featureMode||(v.equalTableQueryParams(o.query,this.props.query)?JSON.stringify(o.data)!==JSON.stringify(this.props.data)||o.loading!==this.props.loading:(this.setTableQueryParams(null!==(i=o.query)&&void 0!==i?i:{}),!0))}},{key:"render",value:function(){return this.renderWrapContext(s(M,o(o({},this.mergeConfig.wrapProps),{},{children:s(g,o({loading:this.props.loading},this.getDataGridProps()))})))}}])}()}var M=p(function(i){var r=i.children,a=e(i,w);return s(c,o(o({},a),{},{children:s("div",{children:r})}))})(i(i({flex:1,position:"relative","& > div":{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflowY:"auto"},".MuiDataGrid-root":{"--unstable_DataGrid-radius":0,overflow:"hidden"}},".MuiDataGrid-cell.".concat(b.whiteSpacePre," .MuiDataGrid-cellContent"),{whiteSpace:"pre"}),".MuiTablePagination-root p",{marginBottom:0}));export{S as CreateTable,S as default};
1
+ import{inherits as e,createClass as o,objectSpread2 as r,classCallCheck as i,callSuper as a,defineProperty as t,toConsumableArray as l}from"../../_virtual/_rollupPluginBabelHelpers.js";import{jsx as n}from"react/jsx-runtime";import{Component as s,Fragment as d}from"react";import{DataGrid as u}from"@mui/x-data-grid";import{mergeObjects as p}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{TableBaseContext as g}from"./context.js";import{customFilterOperators as m}from"./custom.filter-operators.js";import c from"./helpers.js";import f from"./toolbar-pannel.js";import{dinoTableClasses as h,TableStyled as v}from"./styled.js";import{GlobalModal as b,mapGlobalModalContext as y}from"../api-context/global-modal.js";function C(C){return function(){function P(e){var o;return i(this,P),o=a(this,P,[e]),t(o,"setTableQueryParams",function(e){o.tableQueryParams=p({},o.tableQueryParams,e)}),t(o,"renderWrapContext",function(e){var o=C.disableGlobalModalProvider?d:b;return n(o,{children:y(function(o){return n(g.Provider,{value:{showModal:o.show,closeModal:o.close},children:e})})})}),t(o,"getDataGridProps",function(){var e,r,i,a,t=c.mapInitialState(o.props.query,{columns:{columnVisibilityModel:C.columnVisibilityModel}}),l={getRowId:C.getRowId,initialState:t,columns:o.columns,rows:null!==(e=null===(r=o.props.data)||void 0===r?void 0:r.items)&&void 0!==e?e:[],checkboxSelection:!0,pagination:!0,density:null!==(i=null===(a=o.props.slots)||void 0===a?void 0:a.density)&&void 0!==i?i:"standard",filterDebounceMs:800,sx:{border:0},slots:{toolbar:o.mergeConfig.toolbar},rowSelectionModel:o.rowSelecteds,onRowSelectionModelChange:o.handleRowSelectionChange};if("server"===C.featureMode){var n,s,d={filterMode:"server",sortingMode:"server",paginationMode:"server",onPaginationModelChange:o.onPaginationModelChange,onFilterModelChange:o.onFilterModelChange,onSortModelChange:o.onSortModelChange,rowCount:null!==(n=null===(s=o.props.data)||void 0===s?void 0:s.rowTotal)&&void 0!==n?n:0,paginationModel:o.tableQueryParams.pagination,filterModel:o.tableQueryParams.filter,sortModel:c.mapSortModel(o.tableQueryParams.sort),loading:o.mergeConfig.loading};Object.assign(l,d)}return p(l,o.mergeConfig.dataGridProps)}),t(o,"initialColumns",function(){var e,i,a=o.mergeConfig,t=a.ActionRow,s=a.disableActionRow,d=[];return t&&!0!==s&&d.push(r({field:"Actions",minWidth:100,headerAlign:"right",align:"right",filterable:!1,sortable:!1,disableExport:!0,renderCell:function(e){return n(t,{value:e.row})}},C.actionRow)),e=d,i=Object.keys(C.columns).map(function(e){var o=r({field:e},C.columns[e]);return o.filterOperators=C.filterOperators?C.filterOperators(o):m(o),o}),e&&e.length>0&&i.push.apply(i,l(e)),i}),t(o,"onPaginationModelChange",function(e,r){o.mergeConfig.loading||(o.setTableQueryParams({pagination:e,detail:"pagination"}),o.handleChange())}),t(o,"onFilterModelChange",function(e,r){var i;if(!o.mergeConfig.loading){var a=o.tableQueryParams.pagination;o.setTableQueryParams({filter:e,pagination:{page:0,pageSize:null!==(i=null==a?void 0:a.pageSize)&&void 0!==i?i:25},detail:c.detectSearchType(e)}),o.handleChange()}}),t(o,"onSortModelChange",function(e,r){if(!o.mergeConfig.loading){var i,a,t,l,n,s=e,d=o.tableQueryParams.sort;if(null!=d&&d.length&&!s.length)if((null==d||null===(i=d[0])||void 0===i?void 0:i.field)===(null===(a=o.defaultTableQueryParams.sort)||void 0===a||null===(a=a[0])||void 0===a?void 0:a.field))s=[{field:null===(t=d[0])||void 0===t?void 0:t.field,sort:"desc"===(null===(l=d[0])||void 0===l?void 0:l.sort)?"asc":"desc"}];else s=null!==(n=o.defaultTableQueryParams.sort)&&void 0!==n?n:[];o.setTableQueryParams({sort:s,detail:"sort"}),o.handleChange()}}),t(o,"handleChange",function(){o.changeTimeout&&clearTimeout(o.changeTimeout),o.changeTimeout=setTimeout(function(){o.props.onChange&&o.props.onChange(o.tableQueryParams)},300)}),t(o,"handleRowSelectionChange",function(e,r){o.mergeConfig.maxSelcion&&e.length>o.mergeConfig.maxSelcion?o.rowSelecteds=e.slice(0,o.mergeConfig.maxSelcion):o.rowSelecteds=e,o.props.onRowSelectionChange&&o.props.onRowSelectionChange(o.rowSelecteds,r),o.forceUpdate()}),o.columns=o.initialColumns(),o.tableQueryParams=r({},e.query),o.defaultTableQueryParams=o.tableQueryParams,o.rowSelecteds=[],o}return e(P,s),o(P,[{key:"mergeConfig",get:function(){var e,o,i,a,t,l,s,d,u,g,m=p({},null==C?void 0:C.toolbarProps,null===(e=this.props.slots)||void 0===e?void 0:e.toolbarProps);return{toolbar:null!==(o=null===(i=this.props.slots)||void 0===i?void 0:i.toolbar)&&void 0!==o?o:function(){return n(f,r({},m))},ActionRow:null===(a=this.props.slots)||void 0===a?void 0:a.actionRow,disableActionRow:C.disableActionRow,columnVisibilityModel:C.columnVisibilityModel,maxSelcion:null!==(t=null===(l=this.props.slots)||void 0===l?void 0:l.maxSelection)&&void 0!==t?t:C.maxSelection,dataGridProps:p({},C.dataGridProps,null===(s=this.props.slots)||void 0===s?void 0:s.dataGridProps),wrapProps:p({},C.wrapProps,null===(d=this.props.slots)||void 0===d?void 0:d.wrapProps),loading:null!==(u=void 0!==this.props.loading?this.props.loading:null===(g=this.tableQueryParams)||void 0===g?void 0:g.loading)&&void 0!==u&&u}}},{key:"componentWillUnmount",value:function(){this.changeTimeout&&clearTimeout(this.changeTimeout)}},{key:"shouldComponentUpdate",value:function(e){var o;return"server"!==C.featureMode||(c.equalTableQueryParams(e.query,this.props.query)?JSON.stringify(e.data)!==JSON.stringify(this.props.data)||e.loading!==this.props.loading:(this.setTableQueryParams(null!==(o=e.query)&&void 0!==o?o:{}),!0))}},{key:"render",value:function(){var e,o=[h.root,null===(e=this.mergeConfig.wrapProps)||void 0===e?void 0:e.className];return this.renderWrapContext(n(v,r(r({},this.mergeConfig.wrapProps),{},{className:o.filter(function(e){return!!e}).join(" "),children:n(u,r({loading:this.props.loading},this.getDataGridProps()))})))}}])}()}export{C as CreateTable,C as default};
2
2
  //# sourceMappingURL=create.table.js.map