dinocollab-core 1.0.29 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- import{inherits as r,createClass as e,classCallCheck as t,callSuper as a,defineProperty as s,asyncToGenerator as o,regenerator as n,objectSpread2 as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l}from"react/jsx-runtime";import u,{Component as m}from"react";import{Box as c}from"@mui/material";import{validateMerge as f,convertFormDataToJson as d,singleValidate as p,getErrorFromResponse as v}from"./helpers.js";import S,{SingleRuleValidate as g}from"./validator.js";var E=function(E){var h=u.createContext({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},clearErrorAll:function(){}}),b=function(){function u(r){var e;return t(this,u),e=a(this,u,[r]),s(e,"refForm",null),s(e,"mapContext",(function(){var r=e,t=r.setError,a=r.setModelState,s=r.clearErrorAll,o=r.onBlur,n=e.state;return{modelState:n.modelState,messageErrors:n.messageErrors,setError:t,onBlur:o,clearErrorAll:s,setModelState:a}})),s(e,"setError",(function(r,t){var a=s({},r,[{rule:g.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,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==E?void 0:E.validate,e.props.validate)})),s(e,"clearErrorAll",(function(){e.setState({messageErrors:{}})})),s(e,"onSubmit",function(){var r=o(n().m((function r(t){var a,s,o;return n().w((function(r){for(;;)switch(r.n){case 0:if(t.preventDefault(),a=new FormData(t.currentTarget),s=d(a),e.setState({modelState:s}),!(o=e.validate.run(s))){r.n=1;break}if(e.setState({messageErrors:o}),!(Object.keys(o).length>0)){r.n=1;break}return r.a(2);case 1:return r.n=2,e.props.onSubmit(s,t).catch((function(r){var t=v(r,s);e.setState({messageErrors:i(i({},e.state.messageErrors),t||{})})}));case 2:return r.a(2)}}),r)})));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),s=d(a);e.setState({modelState:s});var o=p(r,s,t,e.validate)||{};e.setState({messageErrors:o})}})),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(u,m),e(u,[{key:"render",value:function(){var r=this;return l(c,{component:"form",sx:this.props.sx,ref:function(e){return r.refForm=e},onSubmit:this.onSubmit,children:l(h.Provider,{value:this.mapContext(),children:this.props.children})})}}])}();return{Form:b,Validator:null==E?void 0:E.validate,Context:h,mapContext:function(r){return l(h.Consumer,{children:r})}}};export{E as default};
1
+ import{inherits as r,createClass as e,classCallCheck as t,callSuper as a,defineProperty as o,objectSpread2 as s,asyncToGenerator as n,regenerator as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l}from"react/jsx-runtime";import u,{Component as m}from"react";import{Box as c}from"@mui/material";import{validateMerge as f,convertFormDataToJson as d,singleValidate as v,getErrorFromResponse as p}from"./helpers.js";import E,{SingleRuleValidate as S}from"./validator.js";var g=function(g){var h=u.createContext({setModelState:function(){},messageErrors:{},onBlur:function(){},setError:function(){},removeError:function(){},clearErrorAll:function(){}}),b=function(){function u(r){var e;return t(this,u),e=a(this,u,[r]),o(e,"refForm",null),o(e,"mapContext",(function(){var r=e,t=r.setError,a=r.removeError,o=r.setModelState,s=r.clearErrorAll,n=r.onBlur,i=e.state;return{modelState:i.modelState,messageErrors:i.messageErrors,setError:t,onBlur:n,clearErrorAll:s,setModelState:o,removeError:a}})),o(e,"setError",(function(r,t){var a=o({},r,[{rule:S.Custom,message:t}]);e.setState({messageErrors:Object.assign({},e.state.messageErrors,a)})})),o(e,"removeError",(function(r){var t=s({},e.state.messageErrors);t[r]&&delete t[r],e.setState({messageErrors:t})})),o(e,"setModelState",(function(r){var t=Object.assign({},e.state.modelState,r);e.setState({modelState:t})})),o(e,"getValidate",(function(){var r=new E({});return f(r,null==g?void 0:g.validate,e.props.validate)})),o(e,"clearErrorAll",(function(){e.setState({messageErrors:{}})})),o(e,"onSubmit",function(){var r=n(i().m((function r(t){var a,o,n;return i().w((function(r){for(;;)switch(r.n){case 0:if(t.preventDefault(),a=new FormData(t.currentTarget),o=d(a),e.setState({modelState:o}),!(n=e.validate.run(o))){r.n=1;break}if(e.setState({messageErrors:n}),!(Object.keys(n).length>0)){r.n=1;break}return r.a(2);case 1:return r.n=2,e.props.onSubmit(o,t).catch((function(r){var t=p(r,o);e.setState({messageErrors:s(s({},e.state.messageErrors),t||{})})}));case 2:return r.a(2)}}),r)})));return function(e){return r.apply(this,arguments)}}()),o(e,"onBlur",(function(r){if(e.refForm){var t=e.state.messageErrors,a=new FormData(e.refForm),o=d(a);e.setState({modelState:o});var s=v(r,o,t,e.validate)||{};e.setState({messageErrors:s})}})),e.validate=e.getValidate(),e.state={messageErrors:{}},e}return r(u,m),e(u,[{key:"render",value:function(){var r=this;return l(c,{component:"form",sx:this.props.sx,ref:function(e){return r.refForm=e},onSubmit:this.onSubmit,children:l(h.Provider,{value:this.mapContext(),children:this.props.children})})}}])}();return{Form:b,Validator:null==g?void 0:g.validate,Context:h,mapContext:function(r){return l(h.Consumer,{children:r})}}};export{g 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 React, { Component, ComponentType, PropsWithChildren, ReactNode } from 'react'\r\nimport { Box, SxProps, Theme } from '@mui/material'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorFromResponse, singleValidate, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseParams<T> {\r\n validate?: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren {\r\n sx?: SxProps<Theme>\r\n validate?: FormValidator<Partial<T>>\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\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 = React.createContext<IFormBaseContext<T>>({\r\n setModelState: () => {},\r\n messageErrors: {},\r\n onBlur: () => {},\r\n setError: () => {},\r\n clearErrorAll: () => {}\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' sx={this.props.sx} ref={(ref: HTMLFormElement) => (this.refForm = ref)} onSubmit={this.onSubmit}>\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, setModelState, clearErrorAll, onBlur } = this\r\n const { modelState, messageErrors } = this.state\r\n return { modelState, messageErrors, setError, onBlur, clearErrorAll, setModelState }\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 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 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 model = convertFormDataToJson<T>(formData)\r\n this.setState({ modelState: model })\r\n const messageErrors = this.validate.run(model) as IPartialError<T>\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n await this.props.onSubmit(model, e).catch((error) => {\r\n const messageError = getErrorFromResponse(error, model)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\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 model = convertFormDataToJson(formData)\r\n this.setState({ modelState: model })\r\n const error = singleValidate<T, Partial<T>>(keyName, model, 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","React","createContext","setModelState","messageErrors","onBlur","setError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","keyName","message","error","rule","SingleRuleValidate","Custom","setState","Object","assign","obj","defaultValidate","FormValidator","validateMerge","validate","_ref","_asyncToGenerator","_regenerator","m","_callee","e","formData","model","w","_context","n","preventDefault","FormData","currentTarget","convertFormDataToJson","run","keys","length","a","onSubmit","messageError","getErrorFromResponse","_objectSpread","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","key","value","_this3","_jsx","Box","component","sx","ref","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"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"}
1
+ {"version":3,"file":"create.form-base.js","sources":["../../src/form/create.form-base.tsx"],"sourcesContent":["import React, { Component, ComponentType, PropsWithChildren, ReactNode } from 'react'\r\nimport { Box, SxProps, Theme } from '@mui/material'\r\nimport { IFormBaseContext, ISetModelStateFunc } from './types'\r\nimport { convertFormDataToJson, getErrorFromResponse, singleValidate, validateMerge } from './helpers'\r\nimport FormValidator, { IPartialError, SingleRuleValidate } from './validator'\r\n\r\nexport interface IFormBaseParams<T> {\r\n validate?: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormBaseProps<T> extends PropsWithChildren {\r\n sx?: SxProps<Theme>\r\n validate?: FormValidator<Partial<T>>\r\n onSubmit: (data: Partial<T>, e: React.FormEvent<HTMLFormElement>) => Promise<void>\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 = React.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 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' sx={this.props.sx} ref={(ref: HTMLFormElement) => (this.refForm = ref)} onSubmit={this.onSubmit}>\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 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 = (keyName: keyof T) => {\r\n const newErrors = { ...this.state.messageErrors }\r\n if (newErrors[keyName]) delete newErrors[keyName]\r\n this.setState({ messageErrors: newErrors })\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 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 model = convertFormDataToJson<T>(formData)\r\n this.setState({ modelState: model })\r\n const messageErrors = this.validate.run(model) as IPartialError<T>\r\n if (messageErrors) {\r\n this.setState({ messageErrors: messageErrors })\r\n if (Object.keys(messageErrors).length > 0) return\r\n }\r\n await this.props.onSubmit(model, e).catch((error) => {\r\n const messageError = getErrorFromResponse(error, model)\r\n this.setState({ messageErrors: { ...this.state.messageErrors, ...(messageError || {}) } })\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 model = convertFormDataToJson(formData)\r\n this.setState({ modelState: model })\r\n const error = singleValidate<T, Partial<T>>(keyName, model, 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","React","createContext","setModelState","messageErrors","onBlur","setError","removeError","clearErrorAll","FormBase","props","_this","_classCallCheck","_callSuper","_defineProperty","_this2","_this$state","state","modelState","keyName","message","error","rule","SingleRuleValidate","Custom","setState","Object","assign","newErrors","_objectSpread","obj","defaultValidate","FormValidator","validateMerge","validate","_ref","_asyncToGenerator","_regenerator","m","_callee","e","formData","model","w","_context","n","preventDefault","FormData","currentTarget","convertFormDataToJson","run","keys","length","a","onSubmit","messageError","getErrorFromResponse","_x","apply","this","arguments","refForm","singleValidate","getValidate","_inherits","Component","_createClass","key","value","_this3","_jsx","Box","component","sx","ref","children","Provider","mapContext","Form","Validator","Context","Consumer"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as o,createClass as t,objectSpread2 as r,classCallCheck as n,callSuper as e,defineProperty as i,asyncToGenerator as l,regenerator as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as u}from"react/jsx-runtime";import{Fragment as p,Component as d}from"react";import{Grid as c}from"@mui/material";import{cleanObject as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as m}from"../api-context/global-modal.js";import{ContentWrap as f,CreateFormBottomBar as g}from"./create.form-grid-layout.units.js";import b from"./create.input.js";import h from"./create.form-base.js";var y=function(y){var S=h(),C=g(),j=b({maxLength:250}),x=function(){function g(o){var t;return n(this,g),t=e(this,g,[o]),i(t,"renderFormFieldElement",(function(o){var n,e=t.props.data,l=null!==(n=o.inputElement)&&void 0!==n?n:j;return S.mapContext((function(n){var a,s,p={formData:n.modelState,data:e,onBlur:n.onBlur,messageErrors:n.messageErrors,name:o.key,label:o.label,placeholder:o.placeholder,disabled:!(null===(a=t.configMerged.inputDisabled)||void 0===a||!a[o.key])||void 0,defaultValue:null!==(s=null==e?void 0:e[o.key])&&void 0!==s?s:null==o?void 0:o.defaultValue,onObservedChange:function(o,t){return n.setModelState(i({},o,t))}};return u(l,r({},v(p)))}))})),i(t,"loading",(function(){return t.setState({loadding:!0})})),i(t,"unloading",(function(){return t.setState({loadding:!1})})),i(t,"onSubmit",function(){var o=l(a().m((function o(r,n){var e,i,l,s,u,p,d,c,v;return a().w((function(o){for(;;)switch(o.n){case 0:return s=t.props.slots,u=null!==(e=null!==(i=null===(l=t.props.slots)||void 0===l?void 0:l.submitMapping)&&void 0!==i?i:y.submitMapping)&&void 0!==e?e:t.submitMapping,p=u(r,t.props.data),o.p=1,t.loading(),null===(d=t.abortController)||void 0===d||d.abort(),t.abortController=new AbortController,o.n=2,t.props.onSubmit(p,null===(c=t.abortController)||void 0===c?void 0:c.signal);case 2:null!=s&&s.closeState&&!1===s.closeState.Success||(n&&n(),t.props.onClose&&t.props.onClose()),o.n=4;break;case 3:o.p=3,v=o.v,null!=s&&s.closeState&&!0===s.closeState.Fail&&(n&&n(),t.props.onClose&&t.props.onClose()),t.props.onError&&t.props.onError(v);case 4:return o.p=4,t.unloading(),o.f(4);case 5:return o.a(2)}}),o,null,[[1,3,4,5]])})));return function(t,r){return o.apply(this,arguments)}}()),i(t,"submitMapping",(function(o){return o})),i(t,"getSxProps",(function(){var o=t.state.loadding;return r(r({},t.props.sx),{},{opacity:o?.7:1,pointerEvents:o?"none":"auto"})})),t.state={loadding:!1},t}return o(g,d),t(g,[{key:"configMerged",get:function(){var o,t,r,n;return{inputVisibility:null!==(o=null===(t=this.props.slots)||void 0===t?void 0:t.inputVisibility)&&void 0!==o?o:y.inputVisibility,inputDisabled:null!==(r=null===(n=this.props.slots)||void 0===n?void 0:n.inputDisabled)&&void 0!==r?r:y.inputDisabled}}},{key:"render",value:function(){var o,t,n,e=this,i=this.props.slots,l=null!==(o=null!==(t=null==y?void 0:y.action)&&void 0!==t?t:null===(n=this.props.slots)||void 0===n?void 0:n.action)&&void 0!==o?o:C;return m((function(o){var t,n=o.close;return s(S.Form,{validate:y.validate,onSubmit:function(o){return e.onSubmit(o,n)},sx:e.getSxProps(),children:[s(f,r(r({},null===(t=e.props)||void 0===t||null===(t=t.slots)||void 0===t?void 0:t.contentProps),{},{children:[(null==i?void 0:i.contentBefore)&&(null==i?void 0:i.contentBefore),null==y?void 0:y.contentBefore,u(c,{container:!0,spacing:2,children:y.configs.map((function(o,t){var n,i=!(null===(n=e.configMerged.inputVisibility)||void 0===n||!n[o.key])||void 0;return u(p,i?{}:{children:u(c,r(r({item:!0,xs:12},o.reponsives),{},{children:e.renderFormFieldElement(o)}))},o.key.toString()+t)}))}),null==y?void 0:y.contentAfter,(null==i?void 0:i.contentAfter)&&(null==i?void 0:i.contentAfter)]})),S.mapContext((function(o){var t;return u(l,{data:e.props.data,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null===(t=e.props.slots)||void 0===t?void 0:t.actionBefore})}))]})}))}},{key:"componentWillUnmount",value:function(){var o;null===(o=this.abortController)||void 0===o||o.abort()}}])}();return x};export{y as default};
1
+ import{inherits as o,createClass as r,objectSpread2 as t,classCallCheck as n,callSuper as e,defineProperty as i,asyncToGenerator as l,regenerator as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as u}from"react/jsx-runtime";import{Fragment as p,Component as d}from"react";import{Grid as c}from"@mui/material";import{cleanObject as m}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as v}from"../api-context/global-modal.js";import{ContentWrap as f,CreateFormBottomBar as g}from"./create.form-grid-layout.units.js";import b from"./create.input.js";import h from"./create.form-base.js";var y=function(y){var S=h(),C=g(),x=b({maxLength:250}),j=function(){function g(o){var r;return n(this,g),r=e(this,g,[o]),i(r,"renderFormFieldElement",(function(o){var n,e=r.props.data,i=null!==(n=o.inputElement)&&void 0!==n?n:x;return S.mapContext((function(n){var l,a,s={data:e,onBlur:n.onBlur,messageErrors:n.messageErrors,name:o.key,label:o.label,placeholder:o.placeholder,disabled:!(null===(l=r.configMerged.inputDisabled)||void 0===l||!l[o.key])||void 0,defaultValue:null!==(a=null==e?void 0:e[o.key])&&void 0!==a?a:null==o?void 0:o.defaultValue,formContext:n};return u(i,t({},m(s)))}))})),i(r,"loading",(function(){return r.setState({loadding:!0})})),i(r,"unloading",(function(){return r.setState({loadding:!1})})),i(r,"onSubmit",function(){var o=l(a().m((function o(t,n){var e,i,l,s,u,p,d,c,m;return a().w((function(o){for(;;)switch(o.n){case 0:return s=r.props.slots,u=null!==(e=null!==(i=null===(l=r.props.slots)||void 0===l?void 0:l.submitMapping)&&void 0!==i?i:y.submitMapping)&&void 0!==e?e:r.submitMapping,p=u(t,r.props.data),o.p=1,r.loading(),null===(d=r.abortController)||void 0===d||d.abort(),r.abortController=new AbortController,o.n=2,r.props.onSubmit(p,null===(c=r.abortController)||void 0===c?void 0:c.signal);case 2:null!=s&&s.closeState&&!1===s.closeState.Success||(n&&n(),r.props.onClose&&r.props.onClose()),o.n=4;break;case 3:o.p=3,m=o.v,null!=s&&s.closeState&&!0===s.closeState.Fail&&(n&&n(),r.props.onClose&&r.props.onClose()),r.props.onError&&r.props.onError(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,t){return o.apply(this,arguments)}}()),i(r,"submitMapping",(function(o){return o})),i(r,"getSxProps",(function(){var o=r.state.loadding;return t(t({},r.props.sx),{},{opacity:o?.7:1,pointerEvents:o?"none":"auto"})})),r.state={loadding:!1},r}return o(g,d),r(g,[{key:"configMerged",get:function(){var o,r,t,n;return{inputVisibility:null!==(o=null===(r=this.props.slots)||void 0===r?void 0:r.inputVisibility)&&void 0!==o?o:y.inputVisibility,inputDisabled:null!==(t=null===(n=this.props.slots)||void 0===n?void 0:n.inputDisabled)&&void 0!==t?t:y.inputDisabled}}},{key:"render",value:function(){var o,r,n,e=this,i=this.props.slots,l=null!==(o=null!==(r=null==y?void 0:y.action)&&void 0!==r?r:null===(n=this.props.slots)||void 0===n?void 0:n.action)&&void 0!==o?o:C;return v((function(o){var r,n=o.close;return s(S.Form,{validate:y.validate,onSubmit:function(o){return e.onSubmit(o,n)},sx:e.getSxProps(),children:[s(f,t(t({},null===(r=e.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==y?void 0:y.contentBefore,u(c,{container:!0,spacing:2,children:y.configs.map((function(o,r){var n,i=!(null===(n=e.configMerged.inputVisibility)||void 0===n||!n[o.key])||void 0;return u(p,i?{}:{children:u(c,t(t({item:!0,xs:12},o.sizes),{},{children:e.renderFormFieldElement(o)}))},o.key.toString()+r)}))}),null==y?void 0:y.contentAfter,(null==i?void 0:i.contentAfter)&&(null==i?void 0:i.contentAfter)]})),S.mapContext((function(o){var r;return u(l,{data:e.props.data,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null===(r=e.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 j};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 React, { Component, ComponentType, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport { cleanObject } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { ContentWrap, CreateFormBottomBar } from './create.form-grid-layout.units'\r\nimport FormValidator from './validator'\r\nimport CreateInput from './create.input'\r\nimport CreateFormBase from './create.form-base'\r\n\r\nexport interface IFormGridLayoutConfig<T> {\r\n key: keyof T\r\n label?: string\r\n placeholder?: string\r\n reponsives?: RegularBreakpoints\r\n defaultValue?: any\r\n inputElement?: React.ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type SubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutSlots<T> {\r\n action?: React.ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n inputVisibility?: Partial<Record<keyof T, boolean>>\r\n // inputVisibilityGetter?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n inputDisabled?: Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n submitMapping?: SubmitMappingEvent<T>\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 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() {\r\n return {\r\n inputVisibility: this.props.slots?.inputVisibility ?? params.inputVisibility,\r\n inputDisabled: this.props.slots?.inputDisabled ?? params.inputDisabled\r\n }\r\n }\r\n\r\n render() {\r\n const { slots } = this.props\r\n const BottomBar = params?.action ?? this.props.slots?.action ?? BottomBarInstance\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormBaseInstance.Form validate={params.validate} onSubmit={(v) => this.onSubmit(v, close)} sx={this.getSxProps()}>\r\n <ContentWrap {...this.props?.slots?.contentProps}>\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const visibility: boolean | undefined = this.configMerged.inputVisibility?.[config.key] ? true : undefined\r\n if (visibility) 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.reponsives}>\r\n {this.renderFormFieldElement(config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\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 = (config: IFormGridLayoutConfig<T>) => {\r\n const { data } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n return FormBaseInstance.mapContext((context) => {\r\n const obj: IFormInputBase<T, any> = {\r\n formData: context.modelState,\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.inputDisabled?.[config.key] ? true : undefined,\r\n defaultValue: data?.[config.key] ?? config?.defaultValue,\r\n onObservedChange: (name, value) => context.setModelState({ [name]: value } as Pick<T, keyof T>)\r\n }\r\n return <ElementComponent {...cleanObject(obj)} />\r\n })\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?.submitMapping ?? params.submitMapping ?? this.submitMapping\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 } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n submitMapping: SubmitMappingEvent<T> = (value) => value\r\n\r\n getSxProps = (): SxProps<Theme> => {\r\n const isLoading = this.state.loadding\r\n return { ...this.props.sx, opacity: isLoading ? 0.7 : 1, pointerEvents: isLoading ? 'none' : 'auto' }\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","config","_config$inputElement","data","ElementComponent","inputElement","mapContext","context","_this$configMerged$in","_data$config$key","obj","formData","modelState","onBlur","messageErrors","name","key","label","placeholder","disabled","configMerged","inputDisabled","undefined","defaultValue","onObservedChange","value","setModelState","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regenerator","m","_callee","close","_ref2","_this$props$slots$sub","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","_t","w","_context","n","submitMapping","p","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","v","Fail","onError","unloading","f","a","_x","_x2","apply","this","arguments","isLoading","state","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_this$props$slots$inp","_this$props$slots2","_this$props$slots$inp2","_this$props$slots3","inputVisibility","_ref3","_params$action","_this$props$slots4","_this2","BottomBar","action","mapGlobalModalContext","_ref4","_this2$props","_jsxs","Form","validate","getSxProps","children","ContentWrap","contentProps","contentBefore","Grid","container","spacing","configs","map","index","_this2$configMerged$i","visibility","Fragment","item","xs","reponsives","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 React, { Component, ComponentType, Fragment } from 'react'\r\nimport { BoxProps, Grid, RegularBreakpoints, SxProps, Theme } from '@mui/material'\r\nimport { cleanObject } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\nimport { mapGlobalModalContext } from '../api-context'\r\nimport { ContentWrap, CreateFormBottomBar } from './create.form-grid-layout.units'\r\nimport FormValidator from './validator'\r\nimport CreateInput from './create.input'\r\nimport CreateFormBase from './create.form-base'\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?: React.ComponentType<IFormInputBase<T>>\r\n}\r\n\r\nexport type ISubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>\r\n\r\nexport interface IFormGridLayoutSlots<T> {\r\n action?: React.ComponentType<IFormBase<T>>\r\n actionBefore?: JSX.Element\r\n contentBefore?: JSX.Element\r\n contentAfter?: JSX.Element\r\n inputVisibility?: Partial<Record<keyof T, boolean>>\r\n // inputVisibilityGetter?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n inputDisabled?: Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n submitMapping?: ISubmitMappingEvent<T>\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 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() {\r\n return {\r\n inputVisibility: this.props.slots?.inputVisibility ?? params.inputVisibility,\r\n inputDisabled: this.props.slots?.inputDisabled ?? params.inputDisabled\r\n }\r\n }\r\n\r\n render() {\r\n const { slots } = this.props\r\n const BottomBar = params?.action ?? this.props.slots?.action ?? BottomBarInstance\r\n return mapGlobalModalContext(({ close }) => (\r\n <FormBaseInstance.Form validate={params.validate} onSubmit={(v) => this.onSubmit(v, close)} sx={this.getSxProps()}>\r\n <ContentWrap {...this.props?.slots?.contentProps}>\r\n {slots?.contentBefore && slots?.contentBefore}\r\n {params?.contentBefore}\r\n <Grid container spacing={2}>\r\n {params.configs.map((config, index) => {\r\n const visibility: boolean | undefined = this.configMerged.inputVisibility?.[config.key] ? true : undefined\r\n if (visibility) 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(config)}\r\n </Grid>\r\n </Fragment>\r\n )\r\n })}\r\n </Grid>\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 = (config: IFormGridLayoutConfig<T>) => {\r\n const { data } = this.props\r\n const ElementComponent = config.inputElement ?? InputBaseInstance\r\n return FormBaseInstance.mapContext((context) => {\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.inputDisabled?.[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\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?.submitMapping ?? params.submitMapping ?? this.submitMapping\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 } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n submitMapping: ISubmitMappingEvent<T> = (value) => value\r\n\r\n getSxProps = (): SxProps<Theme> => {\r\n const isLoading = this.state.loadding\r\n return { ...this.props.sx, opacity: isLoading ? 0.7 : 1, pointerEvents: isLoading ? 'none' : 'auto' }\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","config","_config$inputElement","data","ElementComponent","inputElement","mapContext","context","_this$configMerged$in","_data$config$key","obj","onBlur","messageErrors","name","key","label","placeholder","disabled","configMerged","inputDisabled","undefined","defaultValue","formContext","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regenerator","m","_callee","value","close","_ref2","_this$props$slots$sub","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","_t","w","_context","n","submitMapping","p","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","v","Fail","onError","unloading","f","a","_x","_x2","apply","this","arguments","isLoading","state","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_this$props$slots$inp","_this$props$slots2","_this$props$slots$inp2","_this$props$slots3","inputVisibility","_ref3","_params$action","_this$props$slots4","_this2","BottomBar","action","mapGlobalModalContext","_ref4","_this2$props","_jsxs","Form","validate","getSxProps","children","ContentWrap","contentProps","contentBefore","Grid","container","spacing","configs","map","index","_this2$configMerged$i","visibility","Fragment","item","xs","sizes","renderFormFieldElement","toString","contentAfter","_this2$props$slots","before","actionBefore","_this$abortController3"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{inherits as r,createClass as e,objectSpread2 as t,classCallCheck as i,callSuper as o,defineProperty as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as s}from"react/jsx-runtime";import{Component as l}from"react";import{styled as p,Box as u,TextField as m,Collapse as h}from"@mui/material";import{getErrorMessage as d}from"./helpers.js";function c(p){return function(){function c(r){var e;return i(this,c),e=o(this,c,[r]),n(e,"handleChange",(function(r){var t,i=null===(t=r.target.files)||void 0===t?void 0:t[0];if(i){var o=URL.createObjectURL(i);e.setState({imageUrl:o},(function(){e.props.name&&e.props.onBlur&&e.props.onBlur(e.props.name)}))}})),n(e,"getImageUrl",(function(){var r=e.props.data,t=null!=p&&p.imageGetter?p.imageGetter(r):void 0;return e.state.imageUrl||t||""})),e.state={},e}return r(c,l),e(c,[{key:"render",value:function(){var r,e,i=this,o=this.props.name,n=d(this.props.messageErrors,this.props.name),l=this.getImageUrl();return a(g,t(t({},null===(r=this.props.slots)||void 0===r?void 0:r.wrapProps),{},{children:[s(u,{sx:{flex:1},children:s(m,t({name:null==o?void 0:o.toString(),error:n.error,helperText:n.message,variant:"outlined",type:"file",fullWidth:!0,inputProps:t({},{accept:"image/*",multiple:!1}),onBlur:function(){o&&i.props.onBlur&&i.props.onBlur(o)},onChange:this.handleChange},null===(e=this.props.slots)||void 0===e?void 0:e.inputProps))}),s(h,{in:!!l,orientation:"horizontal",unmountOnExit:!0,children:s(f,{children:s("img",{src:l,alt:"berlintomek-image"})})})]}))}}])}()}var g=p(u)({display:"flex",gap:"9px",alignItems:"center"}),f=p(u)({height:"56px",width:"56px",marginRight:"6px",borderRadius:"4px",overflow:"hidden",border:"1px solid rgba(145, 158, 171, .16)","& > img":{width:"100%",height:"100%",objectFit:"cover"}});export{c as default};
2
+ //# sourceMappingURL=create.input.image-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.input.image-file.js","sources":["../../src/form/create.input.image-file.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { Box, BoxProps, Collapse, styled, TextField, TextFieldProps } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\n\r\nexport interface IInputImageFileSlots {\r\n wrapProps?: BoxProps\r\n inputProps?: TextFieldProps\r\n}\r\n\r\nexport interface IInputImageFileProps<T> extends IFormInputBase<T, IInputImageFileSlots> {}\r\n\r\nexport interface IInputImageFileState {\r\n imageUrl?: string\r\n}\r\n\r\nexport interface IInputImageFileParams<T> {\r\n imageGetter?: (data?: Partial<T>) => string | undefined\r\n}\r\n\r\nfunction createInputImageFile<T>(params?: IInputImageFileParams<T>) {\r\n class InputImageFile extends Component<IInputImageFileProps<T>, IInputImageFileState> {\r\n constructor(props: IInputImageFileProps<T>) {\r\n super(props)\r\n this.state = {}\r\n }\r\n render() {\r\n const { name } = this.props\r\n const eMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const url = this.getImageUrl()\r\n return (\r\n <Wrap {...this.props.slots?.wrapProps}>\r\n <Box sx={{ flex: 1 }}>\r\n <TextField\r\n name={name?.toString()}\r\n error={eMessage.error}\r\n helperText={eMessage.message}\r\n variant='outlined'\r\n type='file'\r\n fullWidth\r\n inputProps={{ ...{ accept: 'image/*', multiple: false } }}\r\n onBlur={() => {\r\n if (!name) return\r\n this.props.onBlur && this.props.onBlur(name)\r\n }}\r\n onChange={this.handleChange}\r\n {...this.props.slots?.inputProps}\r\n />\r\n </Box>\r\n <Collapse in={!!url} orientation='horizontal' unmountOnExit>\r\n <ImageWrap>\r\n <img src={url} alt='berlintomek-image' />\r\n </ImageWrap>\r\n </Collapse>\r\n </Wrap>\r\n )\r\n }\r\n\r\n handleChange: React.ChangeEventHandler<HTMLInputElement> = (event) => {\r\n const file = event.target.files?.[0]\r\n if (file) {\r\n const imageUrl = URL.createObjectURL(file)\r\n this.setState({ imageUrl }, () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n })\r\n }\r\n }\r\n\r\n getImageUrl = () => {\r\n const { data } = this.props\r\n const value = params?.imageGetter ? params.imageGetter(data) : undefined\r\n return this.state.imageUrl || value || ''\r\n }\r\n }\r\n return InputImageFile\r\n}\r\nexport default createInputImageFile\r\n\r\nconst Wrap = styled(Box)({\r\n display: 'flex',\r\n gap: '9px',\r\n alignItems: 'center'\r\n})\r\n\r\nconst ImageWrap = styled(Box)({\r\n height: '56px',\r\n width: '56px',\r\n marginRight: '6px',\r\n borderRadius: '4px',\r\n overflow: 'hidden',\r\n border: '1px solid rgba(145, 158, 171, .16)',\r\n '& > img': {\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover'\r\n }\r\n})\r\n"],"names":["createInputImageFile","params","InputImageFile","props","_this","_classCallCheck","_callSuper","_defineProperty","event","_event$target$files","file","target","files","imageUrl","URL","createObjectURL","setState","name","onBlur","data","value","imageGetter","undefined","state","_inherits","Component","_createClass","key","_this$props$slots","_this$props$slots2","_this2","this","eMessage","getErrorMessage","messageErrors","url","getImageUrl","_jsxs","Wrap","_objectSpread","slots","wrapProps","children","_jsx","Box","sx","flex","TextField","toString","error","helperText","message","variant","type","fullWidth","inputProps","accept","multiple","onChange","handleChange","Collapse","in","orientation","unmountOnExit","ImageWrap","src","alt","styled","display","gap","alignItems","height","width","marginRight","borderRadius","overflow","border","objectFit"],"mappings":"+WAoBA,SAASA,EAAwBC,GAuD/B,kBArDE,SAAAC,EAAYC,GAA8B,IAAAC,EAEzB,OAFyBC,OAAAH,GACxCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EAmC6C,gBAAA,SAACI,GAAS,IAAAC,EAC7DC,UAAID,EAAGD,EAAMG,OAAOC,aAAK,IAAAH,OAAA,EAAlBA,EAAqB,GAClC,GAAIC,EAAM,CACR,IAAMG,EAAWC,IAAIC,gBAAgBL,GACrCN,EAAKY,SAAS,CAAEH,SAAAA,IAAY,WACrBT,EAAKD,MAAMc,MAChBb,EAAKD,MAAMe,QAAUd,EAAKD,MAAMe,OAAOd,EAAKD,MAAMc,KACpD,GACD,KACFV,EAAAH,EAAA,eAEa,WACZ,IAAQe,EAASf,EAAKD,MAAdgB,KACFC,EAAQnB,SAAAA,EAAQoB,YAAcpB,EAAOoB,YAAYF,QAAQG,EAC/D,OAAOlB,EAAKmB,MAAMV,UAAYO,GAAS,MAhDvChB,EAAKmB,MAAQ,CAAE,EAAAnB,CACjB,CAAC,OAAAoB,EAAAtB,EAJ0BuB,GAI1BC,EAAAxB,EAAA,CAAA,CAAAyB,IAAA,SAAAP,MACD,WAAM,IAAAQ,EAAAC,EAAAC,EAAAC,KACId,EAASc,KAAK5B,MAAdc,KACFe,EAAWC,EAAgBF,KAAK5B,MAAM+B,cAAeH,KAAK5B,MAAMc,MAChEkB,EAAMJ,KAAKK,cACjB,OACEC,EAACC,EAAIC,EAAAA,KAAqB,QAArBX,EAAKG,KAAK5B,MAAMqC,aAAXZ,IAAgBA,OAAhBA,EAAAA,EAAkBa,WAAS,GAAA,CAAAC,SAAA,CACnCC,EAACC,GAAIC,GAAI,CAAEC,KAAM,GAAGJ,SAClBC,EAACI,EAASR,EAAA,CACRtB,KAAMA,eAAAA,EAAM+B,WACZC,MAAOjB,EAASiB,MAChBC,WAAYlB,EAASmB,QACrBC,QAAQ,WACRC,KAAK,OACLC,WAAS,EACTC,WAAUhB,EAAO,GAAA,CAAEiB,OAAQ,UAAWC,UAAU,IAChDvC,OAAQ,WACDD,GACLa,EAAK3B,MAAMe,QAAUY,EAAK3B,MAAMe,OAAOD,EACxC,EACDyC,SAAU3B,KAAK4B,cACK,QADO9B,EACvBE,KAAK5B,MAAMqC,aAAK,IAAAX,OAAA,EAAhBA,EAAkB0B,eAG1BZ,EAACiB,EAAQ,CAACC,KAAM1B,EAAK2B,YAAY,aAAaC,eAC5C,EAAArB,SAAAC,EAACqB,EAAS,CAAAtB,SACRC,EAAK,MAAA,CAAAsB,IAAK9B,EAAK+B,IAAI,6BAK7B,IAAC,GAoBL,CAGA,IAAM5B,EAAO6B,EAAOvB,EAAPuB,CAAY,CACvBC,QAAS,OACTC,IAAK,MACLC,WAAY,WAGRN,EAAYG,EAAOvB,EAAPuB,CAAY,CAC5BI,OAAQ,OACRC,MAAO,OACPC,YAAa,MACbC,aAAc,MACdC,SAAU,SACVC,OAAQ,qCACR,UAAW,CACTJ,MAAO,OACPD,OAAQ,OACRM,UAAW"}
@@ -1,2 +1,2 @@
1
- import{createClass as t,classCallCheck as e,defineProperty as r}from"../_virtual/_rollupPluginBabelHelpers.js";import i from"./validator.js";import a from"./modal-wrapper.js";import o from"./create.form-base.js";import s from"./create.input.file.js";import m from"./create.input.js";import c from"./create.date-picker.js";import p from"./create.text-editor.js";import l from"./create.date-expired.js";import f from"./create.form-comfirm.js";import h from"./create.select-simple.js";import u from"./create.select-with-api.js";import d from"./create.form-grid-layout.js";import j from"./create.autocomplete.chips.js";import{FormBottomBarWrap as n}from"./create.form-grid-layout.units.js";import{createInputFileCsvLocalParser as v}from"./create.input-file.csv-local-parser.js";var C=new(t((function t(){e(this,t),r(this,"ModalWrap",a),r(this,"BottomBarWrap",n),r(this,"FormValidator",i),r(this,"validator",i.initial),r(this,"createFormBase",o),r(this,"createFormComfirm",f),r(this,"createFormGridLayout",d),r(this,"createDateExpired",l),r(this,"createDatePicker",c),r(this,"createAutocompleteChip",j),r(this,"createInputFileCsvLocalParser",v),r(this,"createInputFile",s),r(this,"createInput",m),r(this,"createSelectSimple",h),r(this,"createSelectWithApi",u),r(this,"createTextEditor",p)})));export{C as default};
1
+ import{createClass as e,classCallCheck as t,defineProperty as r}from"../_virtual/_rollupPluginBabelHelpers.js";import i from"./validator.js";import a from"./modal-wrapper.js";import o from"./create.form-base.js";import s from"./create.input.file.js";import m from"./create.input.js";import p from"./create.date-picker.js";import c from"./create.text-editor.js";import l from"./create.date-expired.js";import f from"./create.form-comfirm.js";import h from"./create.select-simple.js";import u from"./create.select-with-api.js";import j from"./create.form-grid-layout.js";import d from"./create.input.image-file.js";import n from"./create.autocomplete.chips.js";import{FormBottomBarWrap as F}from"./create.form-grid-layout.units.js";import{createInputFileCsvLocalParser as v}from"./create.input-file.csv-local-parser.js";var C=new(e((function e(){t(this,e),r(this,"ModalWrap",a),r(this,"BottomBarWrap",F),r(this,"FormValidator",i),r(this,"validator",i.initial),r(this,"createFormBase",o),r(this,"createFormComfirm",f),r(this,"createFormGridLayout",j),r(this,"createDateExpired",l),r(this,"createDatePicker",p),r(this,"createAutocompleteChip",n),r(this,"createInputFileCsvLocalParser",v),r(this,"createInputFile",s),r(this,"createInputImageFile",d),r(this,"createInput",m),r(this,"createSelectSimple",h),r(this,"createSelectWithApi",u),r(this,"createTextEditor",c)})));export{C as default};
2
2
  //# sourceMappingURL=dino-form.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dino-form.js","sources":["../../src/form/dino-form.tsx"],"sourcesContent":["import FormValidator from './validator'\r\nimport FormModalWrapper from './modal-wrapper'\r\nimport CreateFormBase from './create.form-base'\r\nimport CreateInputFile from './create.input.file'\r\nimport CreateInput from './create.input'\r\nimport CreateDatePicker from './create.date-picker'\r\nimport CreateTextEditor from './create.text-editor'\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 CreateAutocompleteChip from './create.autocomplete.chips'\r\nimport { FormBottomBarWrap } from './create.form-grid-layout.units'\r\nimport { createInputFileCsvLocalParser } from './create.input-file.csv-local-parser'\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 //#endregion\r\n\r\n //#region Inputs\r\n createDateExpired = CreateDateExpired\r\n createDatePicker = CreateDatePicker\r\n createAutocompleteChip = CreateAutocompleteChip\r\n createInputFileCsvLocalParser = createInputFileCsvLocalParser\r\n createInputFile = CreateInputFile\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","CreateDateExpired","CreateDatePicker","CreateAutocompleteChip","createInputFileCsvLocalParser","CreateInputFile","CreateInput","CreateSelectSimple","CreateSelectWithApi","CreateTextEditor"],"mappings":"swBAcoF,IA0B9EA,EAAW,IAxBCC,GAAA,SAAAC,IAAAC,OAAAD,GAChBE,mBACYC,GAAgBD,uBACZE,GAAiBF,uBACjBG,GAAaH,EAAAI,KAAA,YACjBD,EAAcE,SAAOL,wBAChBM,GAAcN,2BACXO,GAAiBP,8BACdQ,GAGvBR,2BACoBS,GAAiBT,0BAClBU,GAAgBV,gCACVW,GAAsBX,uCACfY,GAA6BZ,yBAC3Ca,GAAeb,qBACnBc,GAAWd,4BACJe,GAAkBf,6BACjBgB,GAAmBhB,0BACtBiB,EAAgB"}
1
+ {"version":3,"file":"dino-form.js","sources":["../../src/form/dino-form.tsx"],"sourcesContent":["import FormValidator from './validator'\r\nimport FormModalWrapper from './modal-wrapper'\r\nimport CreateFormBase from './create.form-base'\r\nimport CreateInputFile from './create.input.file'\r\nimport CreateInput from './create.input'\r\nimport CreateDatePicker from './create.date-picker'\r\nimport CreateTextEditor from './create.text-editor'\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\nimport { FormBottomBarWrap } from './create.form-grid-layout.units'\r\nimport { createInputFileCsvLocalParser } from './create.input-file.csv-local-parser'\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 //#endregion\r\n\r\n //#region Inputs\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","CreateDateExpired","CreateDatePicker","CreateAutocompleteChip","createInputFileCsvLocalParser","CreateInputFile","createInputImageFile","CreateInput","CreateSelectSimple","CreateSelectWithApi","CreateTextEditor"],"mappings":"kzBAeoF,IA2B9EA,EAAW,IAzBCC,GAAA,SAAAC,IAAAC,OAAAD,GAChBE,mBACYC,GAAgBD,uBACZE,GAAiBF,uBACjBG,GAAaH,EAAAI,KAAA,YACjBD,EAAcE,SAAOL,wBAChBM,GAAcN,2BACXO,GAAiBP,8BACdQ,GAGvBR,2BACoBS,GAAiBT,0BAClBU,GAAgBV,gCACVW,GAAsBX,uCACfY,GAA6BZ,yBAC3Ca,GAAeb,8BACVc,GAAoBd,qBAC7Be,GAAWf,4BACJgB,GAAkBhB,6BACjBiB,GAAmBjB,0BACtBkB,EAAgB"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as ApiPopover,ApiPopoverContext,mapApiPopoverContext,withApiPopoverContext}from"./api-context/popover.js";export{AlertDialog,default as AlertGlobal,ApiAlertContext}from"./api-context/alert-global.js";export{default as DrawerGlobal}from"./api-context/drawer-global.js";export{default as GlobalModal,GlobalModalContext,mapGlobalModalContext,withApiGlobalModalConsumerContext,withApiGlobalModalContext}from"./api-context/global-modal.js";export{default as PopoverGlobal,PopoverGlobalApi,PopoverGlobalContext,PopoverGlobalProvider,mapPopoverGlobalContext,withPopoverGlobalContext}from"./api-context/popover-global.js";export{default as Breadcrumbs}from"./components/breadcrumbs.js";export{LoadingButton}from"./components/buttons.js";export{default as CopyToClipboard}from"./components/copy-to-clipboard.js";export{default as CreateMultiSelectDropdown}from"./components/create.multi-select-dropdown.js";export{default as ImageWithFallback}from"./components/image-with-fallback.js";export{default as HelpTooltip,HelpTooltipWrap}from"./components/help-tooltip.js";export{default as TextEditorPreview}from"./components/text-editor.preview.js";export{default as TextEditor,textEditorClasses}from"./components/text-editor.js";export{default as CreateFilterBar}from"./filter-bar/create.filter-bar.js";export{EFieldValidate,ESearchMatch}from"./filter-bar/types.js";export{default as FormValidator,SingleRuleValidate,createFormValidator,mapRuleOptions}from"./form/validator.js";export{default as DinoForm}from"./form/dino-form.js";export{convertFormDataToJson,getErrorMessage,validateCsvModel}from"./form/helpers.js";export{useCheckScrolled,useDebounce}from"./hooks/index.js";export{ELazyStatus}from"./redux/types.js";export{default as DinoRedux}from"./redux/dino.js";export{default as CreateHocLazy,EmptyComponent,defaultOptionHocLazy}from"./redux/create.hoc-lazy.js";export{ELogic,EOperator,EOrder}from"./table/model-filter.js";import"react/jsx-runtime";import"react";import"@mui/material";import"@mui/icons-material/Edit";import"@mui/icons-material/Delete";export{cleanObject,decodeBase64,encodeBase64,fetchDelay,formatCapitalizeFirstText,formatCurrency,formatDatetime,formatFileSize,formatNumberWithCommas,isGuid,mergeClasses,mergeObjects,sleep,tryParseArray,tryParseCsvFileToArray,tryParseIntRequired,tryParseObject,windowScrollToTop}from"./utils/helpers.js";import"./utils/dayjs-config.js";export{default as JObject}from"./utils/json-object.js";export{MFEventProvider,useMFEvent}from"./utils/mfe-events.js";export{QueryParam}from"./utils/query-param.js";export{default as CreateTable}from"./table/create.table.js";export{default as DinoTable}from"./table/dino.js";export{dinoTableClasses}from"./table/helpers.js";export{default as DinoTableGrid}from"./table-grid/dino.js";export{CreateTableGridItemActions}from"./table-grid/item-actions.js";export{default as dayjsCustom}from"dayjs";
1
+ export{default as ApiPopover,ApiPopoverContext,mapApiPopoverContext,withApiPopoverContext}from"./api-context/popover.js";export{AlertDialog,default as AlertGlobal,ApiAlertContext}from"./api-context/alert-global.js";export{default as DrawerGlobal}from"./api-context/drawer-global.js";export{default as GlobalModal,GlobalModalContext,mapGlobalModalContext,withApiGlobalModalConsumerContext,withApiGlobalModalContext}from"./api-context/global-modal.js";export{default as PopoverGlobal,PopoverGlobalApi,PopoverGlobalContext,PopoverGlobalProvider,mapPopoverGlobalContext,withPopoverGlobalContext}from"./api-context/popover-global.js";export{default as Breadcrumbs}from"./components/breadcrumbs.js";export{LoadingButton}from"./components/buttons.js";export{default as CopyToClipboard}from"./components/copy-to-clipboard.js";export{default as CreateMultiSelectDropdown}from"./components/create.multi-select-dropdown.js";export{default as ImageWithFallback}from"./components/image-with-fallback.js";export{default as HelpTooltip,HelpTooltipWrap}from"./components/help-tooltip.js";export{default as TextEditorPreview}from"./components/text-editor.preview.js";export{default as TextEditor,textEditorClasses}from"./components/text-editor.js";export{default as CreateFilterBar}from"./filter-bar/create.filter-bar.js";export{EFieldValidate,ESearchMatch}from"./filter-bar/types.js";export{default as FormValidator,SingleRuleValidate,createFormValidator,mapRuleOptions}from"./form/validator.js";export{default as DinoForm}from"./form/dino-form.js";export{convertFormDataToJson,getErrorMessage,validateCsvModel}from"./form/helpers.js";export{useCheckScrolled,useDebounce}from"./hooks/index.js";export{ELazyStatus}from"./redux/types.js";export{default as DinoRedux}from"./redux/dino.js";export{default as CreateHocLazy,EmptyComponent,defaultOptionHocLazy}from"./redux/create.hoc-lazy.js";export{ELogic,EOperator,EOrder}from"./table/model-filter.js";import"react/jsx-runtime";import"react";import"@mui/material";import"@mui/icons-material/Edit";import"@mui/icons-material/Delete";export{cleanObject,decodeBase64,encodeBase64,fetchDelay,formatCapitalizeFirstText,formatCurrency,formatDatetime,formatFileSize,formatNumberWithCommas,isGuid,isValidEmail,isValidPhoneNumber,isValidURL,mergeClasses,mergeObjects,sleep,tryParseArray,tryParseCsvFileToArray,tryParseIntRequired,tryParseObject,windowScrollToTop}from"./utils/helpers.js";import"./utils/dayjs-config.js";export{default as JObject}from"./utils/json-object.js";export{MFEventProvider,useMFEvent}from"./utils/mfe-events.js";export{QueryParam}from"./utils/query-param.js";export{default as CreateTable}from"./table/create.table.js";export{default as DinoTable}from"./table/dino.js";export{dinoTableClasses}from"./table/helpers.js";export{default as DinoTableGrid}from"./table-grid/dino.js";export{CreateTableGridItemActions}from"./table-grid/item-actions.js";export{default as dayjsCustom}from"dayjs";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- import{inherits as r,createClass as e,classCallCheck as i,callSuper as o,defineProperty as t,objectSpread2 as n}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,Fragment as a,jsxs as s}from"react/jsx-runtime";import{Component as p}from"react";import{styled as m,Box as c,colors as u,IconButton as d,List as f,ListItem as h,ListItemButton as v,ListItemIcon as b,ListItemText as g}from"@mui/material";import C from"@mui/icons-material/Edit";import x from"@mui/icons-material/MoreVert";import k from"@mui/icons-material/DeleteOutline";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as I}from"../api-context/global-modal.js";import y from"../api-context/popover-global.js";var A={Edit:l(C,{fontSize:"small",color:"primary"}),Delete:l(k,{fontSize:"small",color:"error"})};function E(){var m=function(){function m(){var r;i(this,m);for(var e=arguments.length,p=new Array(e),c=0;c<e;c++)p[c]=arguments[c];return r=o(this,m,[].concat(p)),t(r,"isVisible",(function(){return!!r.props.formEdit||!!r.props.formDelete})),t(r,"renderItems",(function(e){return e?(Array.isArray(e)?e:[e]).map((function(e,i){var o=e.name+i,t=e.override;if(t)return l(t,{onClose:y.Api.close},o);var a=e.listItemPropsGetter?e.listItemPropsGetter(r.props.value):e.listItemProps;return l(h,n(n({disablePadding:!0,sx:{minWidth:"170px"},onClick:function(i){!1!==e.closableOnClick&&y.Api.close(),e.onClick&&e.onClick(i,r.props.value)}},a),{},{children:s(v,{children:[l(b,{children:e.icon}),l(g,{primary:e.name})]})}),o)})):l(a,{})})),t(r,"renderItemWithForm",(function(e,i,o){return i?I((function(t){return l(h,{disablePadding:!0,sx:{minWidth:"170px"},onClick:function(){y.Api.close(),t.show(n({renderContent:function(){return i(r.props.value)}},o))},children:s(v,{children:[l(b,{children:A[e]}),l(g,{primary:e})]})})})):l(a,{})})),r}return r(m,p),e(m,[{key:"render",value:function(){var r=this;return this.isVisible()?l(P,{children:l(d,{size:"small",onClick:function(e){var i,o,t;y.Api.open({anchorEl:e.currentTarget,popoverProps:{anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},content:s(f,{children:[r.renderItems(null===(i=r.props.menuList)||void 0===i?void 0:i.before),r.renderItemWithForm("Edit",r.props.formEdit,r.props.buttonEditConfig),r.renderItemWithForm("Delete",r.props.formDelete,null!==(o=r.props.buttonEditConfig)&&void 0!==o?o:{backdropActivated:!0}),r.renderItems(null===(t=r.props.menuList)||void 0===t?void 0:t.after)]})})},children:l(x,{fontSize:"small"})})}):l(a,{})}}])}();return m}var P=m(c)({background:u.common.white,borderRadius:"6px","& > .MuiButtonBase-root":{borderRadius:"6px"}});export{E as CreateTableGridItemActions};
1
+ import{inherits as r,createClass as o,classCallCheck as e,callSuper as t,defineProperty as i,toConsumableArray as n,objectSpread2 as a}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as l,Fragment as s,jsxs as p}from"react/jsx-runtime";import{Component as c}from"react";import{styled as m,Box as u,colors as d,ListItem as f,IconButton as h,List as v,ListItemButton as g,ListItemIcon as y,ListItemText as b}from"@mui/material";import A from"@mui/icons-material/Edit";import C from"@mui/icons-material/MoreVert";import I from"@mui/icons-material/DeleteOutline";import"../api-context/alert-global.js";import"../api-context/drawer-global.js";import{mapGlobalModalContext as x}from"../api-context/global-modal.js";import k from"../api-context/popover-global.js";var E={Edit:l(A,{fontSize:"small",color:"primary"}),Delete:l(I,{fontSize:"small",color:"error"})};function P(){var m=function(){function m(){var r;e(this,m);for(var o=arguments.length,c=new Array(o),u=0;u<o;u++)c[u]=arguments[u];return r=t(this,m,[].concat(c)),i(r,"isVisible",(function(){var o=r.props.menuList,e=[].concat(n(r.singleOrArrayToArray(null==o?void 0:o.before)),n(r.singleOrArrayToArray(null==o?void 0:o.after)));return!!r.props.formEdit||!!r.props.formDelete||e.length>0})),i(r,"singleOrArrayToArray",(function(r){return r?Array.isArray(r)?r:[r]:[]})),i(r,"renderItems",(function(o){return o?(Array.isArray(o)?o:[o]).map((function(o,e){var t=o.name+e,i=o.override;if(i)return l(i,{onClose:k.Api.close},t);var n=o.listItemPropsGetter?o.listItemPropsGetter(r.props.value):o.listItemProps;return l(j,a(a({disablePadding:!0,onClick:function(e){!1!==o.closableOnClick&&k.Api.close(),o.onClick&&o.onClick(e,r.props.value)}},n),{},{children:p(g,{children:[l(y,{children:o.icon}),l(b,{primary:o.name})]})}),t)})):l(s,{})})),i(r,"renderItemWithForm",(function(o,e,t){return e?x((function(i){return l(j,{disablePadding:!0,onClick:function(){k.Api.close(),i.show(a({renderContent:function(){return e(r.props.value)}},t))},children:p(g,{children:[l(y,{children:E[o]}),l(b,{primary:o})]})})})):l(s,{})})),r}return r(m,c),o(m,[{key:"render",value:function(){var r=this;return this.isVisible()?l(T,{children:l(h,{size:"small",onClick:function(o){var e,t,i;k.Api.open({anchorEl:o.currentTarget,popoverProps:{anchorOrigin:{vertical:"top",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"}},content:p(v,{children:[r.renderItems(null===(e=r.props.menuList)||void 0===e?void 0:e.before),r.renderItemWithForm("Edit",r.props.formEdit,r.props.buttonEditConfig),r.renderItemWithForm("Delete",r.props.formDelete,null!==(t=r.props.buttonEditConfig)&&void 0!==t?t:{backdropActivated:!0}),r.renderItems(null===(i=r.props.menuList)||void 0===i?void 0:i.after)]})})},children:l(C,{fontSize:"small"})})}):l(s,{})}}])}();return m}var T=m(u)({background:d.common.white,borderRadius:"6px","& > .MuiButtonBase-root":{borderRadius:"6px"}}),j=m(f)({minWidth:"150px",".MuiListItemIcon-root":{minWidth:"40px"},".MuiListItemText-root .MuiTypography-root":{color:d.grey[800]},"&:hover":{".MuiListItemText-root .MuiTypography-root":{background:d.grey[100],color:d.grey[900]}}});export{P as CreateTableGridItemActions};
2
2
  //# sourceMappingURL=item-actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"item-actions.js","sources":["../../src/table-grid/item-actions.tsx"],"sourcesContent":["import React, { Component, ComponentType, ReactNode } from 'react'\r\nimport { Box, colors, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemProps, ListItemText, styled } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\r\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'\r\nimport { ClosePopover, GlobalModalState, mapGlobalModalContext, PopoverGlobal } from '../api-context'\r\n\r\nexport type ITableGridItemActionType = 'Edit' | 'Delete'\r\n\r\nconst mapIcons: { [key in ITableGridItemActionType]: ReactNode } = {\r\n Edit: <EditIcon fontSize='small' color='primary' />,\r\n Delete: <DeleteOutlineIcon fontSize='small' color='error' />\r\n}\r\n\r\nexport interface ITableGridItemActionsBaseProps<T> {\r\n value: T\r\n}\r\n\r\nexport type IActionFormGetter<T> = (value: T) => React.ReactNode\r\n\r\nexport interface IActionMenuItemDef<T> {\r\n name: string\r\n icon?: ReactNode\r\n /** Whether this item should trigger a close action when clicked. @default true */\r\n closableOnClick?: boolean\r\n /** Handler called when item is clicked */\r\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>, value: T) => void\r\n listItemProps?: ListItemProps\r\n listItemPropsGetter?: (value: T) => ListItemProps & { [key: string]: any }\r\n /**\r\n * Optional custom ReactNode to override the entire ListItem UI.\r\n * If provided, this will be rendered instead of the default ListItem structure\r\n * (icon + text + click behavior).\r\n */\r\n override?: ComponentType<{ onClose?: ClosePopover }>\r\n}\r\n\r\nexport interface TableGridItemActionsConfig<T> {\r\n formEdit?: IActionFormGetter<T>\r\n formDelete?: IActionFormGetter<T>\r\n buttonEditConfig?: GlobalModalState\r\n buttonDeleteConfig?: GlobalModalState\r\n menuList?: {\r\n before?: SingleOrArray<IActionMenuItemDef<T>>\r\n after?: SingleOrArray<IActionMenuItemDef<T>>\r\n }\r\n}\r\n\r\nexport interface ITableGridItemActionsProps<T> extends ITableGridItemActionsBaseProps<T>, TableGridItemActionsConfig<T> {}\r\n\r\nexport function CreateTableGridItemActions<T>() {\r\n class TableGridItemActions extends Component<ITableGridItemActionsProps<T>> {\r\n render() {\r\n if (!this.isVisible()) return <></>\r\n return (\r\n <Wrap>\r\n <IconButton\r\n size='small'\r\n onClick={(e) => {\r\n PopoverGlobal.Api.open({\r\n anchorEl: e.currentTarget,\r\n popoverProps: { anchorOrigin: { vertical: 'top', horizontal: 'right' }, transformOrigin: { vertical: 'top', horizontal: 'right' } },\r\n content: (\r\n <List>\r\n {this.renderItems(this.props.menuList?.before)}\r\n {this.renderItemWithForm('Edit', this.props.formEdit, this.props.buttonEditConfig)}\r\n {this.renderItemWithForm('Delete', this.props.formDelete, this.props.buttonEditConfig ?? { backdropActivated: true })}\r\n {this.renderItems(this.props.menuList?.after)}\r\n </List>\r\n )\r\n })\r\n }}\r\n >\r\n <MoreVertIcon fontSize='small' />\r\n </IconButton>\r\n </Wrap>\r\n )\r\n }\r\n\r\n isVisible = () => {\r\n return !!this.props.formEdit || !!this.props.formDelete\r\n }\r\n\r\n renderItems = (value?: SingleOrArray<IActionMenuItemDef<T>>) => {\r\n if (!value) return <></>\r\n const list = Array.isArray(value) ? value : [value]\r\n return list.map((item, index) => {\r\n const key = item.name + index\r\n const { override: Override } = item\r\n if (Override) return <Override key={key} onClose={PopoverGlobal.Api.close} />\r\n const itemProps = item.listItemPropsGetter ? item.listItemPropsGetter(this.props.value) : item.listItemProps\r\n return (\r\n <ListItem\r\n key={key}\r\n disablePadding\r\n sx={{ minWidth: '170px' }}\r\n onClick={(e) => {\r\n if (item.closableOnClick !== false) PopoverGlobal.Api.close()\r\n item.onClick && item.onClick(e, this.props.value)\r\n }}\r\n {...itemProps}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{item.icon}</ListItemIcon>\r\n <ListItemText primary={item.name} />\r\n </ListItemButton>\r\n </ListItem>\r\n )\r\n })\r\n }\r\n\r\n renderItemWithForm = (name: ITableGridItemActionType, form?: IActionFormGetter<T>, globalState?: GlobalModalState) => {\r\n if (!form) return <></>\r\n return mapGlobalModalContext((context) => (\r\n <ListItem\r\n disablePadding\r\n sx={{ minWidth: '170px' }}\r\n onClick={() => {\r\n PopoverGlobal.Api.close()\r\n context.show({ renderContent: () => form(this.props.value), ...globalState })\r\n }}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{mapIcons[name]}</ListItemIcon>\r\n <ListItemText primary={name} />\r\n </ListItemButton>\r\n </ListItem>\r\n ))\r\n }\r\n }\r\n return TableGridItemActions\r\n}\r\n\r\nconst Wrap = styled(Box)({\r\n background: colors.common.white,\r\n borderRadius: '6px',\r\n '& > .MuiButtonBase-root': {\r\n borderRadius: '6px'\r\n }\r\n})\r\n"],"names":["mapIcons","Edit","_jsx","EditIcon","fontSize","color","Delete","DeleteOutlineIcon","CreateTableGridItemActions","TableGridItemActions","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","props","formEdit","formDelete","value","isArray","map","item","index","key","name","Override","override","onClose","PopoverGlobal","Api","close","itemProps","listItemPropsGetter","listItemProps","ListItem","_objectSpread","disablePadding","sx","minWidth","onClick","e","closableOnClick","children","_jsxs","ListItemButton","ListItemIcon","icon","ListItemText","primary","form","globalState","mapGlobalModalContext","context","show","renderContent","_inherits","Component","_createClass","_this2","isVisible","Wrap","IconButton","size","_this2$props$menuList","_this2$props$buttonEd","_this2$props$menuList2","open","anchorEl","currentTarget","popoverProps","anchorOrigin","vertical","horizontal","transformOrigin","content","List","renderItems","menuList","before","renderItemWithForm","buttonEditConfig","backdropActivated","after","MoreVertIcon","styled","Box","background","colors","common","white","borderRadius"],"mappings":"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"}
1
+ {"version":3,"file":"item-actions.js","sources":["../../src/table-grid/item-actions.tsx"],"sourcesContent":["import React, { Component, ComponentType, ReactNode } from 'react'\r\nimport { Box, colors, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemProps, ListItemText, styled } from '@mui/material'\r\nimport EditIcon from '@mui/icons-material/Edit'\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert'\r\nimport DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'\r\nimport { ClosePopover, GlobalModalState, mapGlobalModalContext, PopoverGlobal } from '../api-context'\r\n\r\nexport type ITableGridItemActionType = 'Edit' | 'Delete'\r\n\r\nconst mapIcons: { [key in ITableGridItemActionType]: ReactNode } = {\r\n Edit: <EditIcon fontSize='small' color='primary' />,\r\n Delete: <DeleteOutlineIcon fontSize='small' color='error' />\r\n}\r\n\r\nexport interface ITableGridItemActionsBaseProps<T> {\r\n value: T\r\n}\r\n\r\nexport type IActionFormGetter<T> = (value: T) => React.ReactNode\r\n\r\nexport interface IActionMenuItemDef<T> {\r\n name: string\r\n icon?: ReactNode\r\n /** Whether this item should trigger a close action when clicked. @default true */\r\n closableOnClick?: boolean\r\n /** Handler called when item is clicked */\r\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>, value: T) => void\r\n listItemProps?: ListItemProps\r\n listItemPropsGetter?: (value: T) => ListItemProps & { [key: string]: any }\r\n /**\r\n * Optional custom ReactNode to override the entire ListItem UI.\r\n * If provided, this will be rendered instead of the default ListItem structure\r\n * (icon + text + click behavior).\r\n */\r\n override?: ComponentType<{ onClose?: ClosePopover }>\r\n}\r\n\r\nexport interface TableGridItemActionsConfig<T> {\r\n formEdit?: IActionFormGetter<T>\r\n formDelete?: IActionFormGetter<T>\r\n buttonEditConfig?: GlobalModalState\r\n buttonDeleteConfig?: GlobalModalState\r\n menuList?: {\r\n before?: SingleOrArray<IActionMenuItemDef<T>>\r\n after?: SingleOrArray<IActionMenuItemDef<T>>\r\n }\r\n}\r\n\r\nexport interface ITableGridItemActionsProps<T> extends ITableGridItemActionsBaseProps<T>, TableGridItemActionsConfig<T> {}\r\n\r\nexport function CreateTableGridItemActions<T>() {\r\n class TableGridItemActions extends Component<ITableGridItemActionsProps<T>> {\r\n render() {\r\n if (!this.isVisible()) return <></>\r\n return (\r\n <Wrap>\r\n <IconButton\r\n size='small'\r\n onClick={(e) => {\r\n PopoverGlobal.Api.open({\r\n anchorEl: e.currentTarget,\r\n popoverProps: { anchorOrigin: { vertical: 'top', horizontal: 'right' }, transformOrigin: { vertical: 'top', horizontal: 'right' } },\r\n content: (\r\n <List>\r\n {this.renderItems(this.props.menuList?.before)}\r\n {this.renderItemWithForm('Edit', this.props.formEdit, this.props.buttonEditConfig)}\r\n {this.renderItemWithForm('Delete', this.props.formDelete, this.props.buttonEditConfig ?? { backdropActivated: true })}\r\n {this.renderItems(this.props.menuList?.after)}\r\n </List>\r\n )\r\n })\r\n }}\r\n >\r\n <MoreVertIcon fontSize='small' />\r\n </IconButton>\r\n </Wrap>\r\n )\r\n }\r\n\r\n isVisible = () => {\r\n const { menuList } = this.props\r\n const list = [...this.singleOrArrayToArray(menuList?.before), ...this.singleOrArrayToArray(menuList?.after)]\r\n return !!this.props.formEdit || !!this.props.formDelete || list.length > 0\r\n }\r\n\r\n singleOrArrayToArray = (value?: SingleOrArray<IActionMenuItemDef<T>>): IActionMenuItemDef<T>[] => {\r\n if (!value) return []\r\n return Array.isArray(value) ? value : [value]\r\n }\r\n\r\n renderItems = (value?: SingleOrArray<IActionMenuItemDef<T>>) => {\r\n if (!value) return <></>\r\n const list = Array.isArray(value) ? value : [value]\r\n return list.map((item, index) => {\r\n const key = item.name + index\r\n const { override: Override } = item\r\n if (Override) return <Override key={key} onClose={PopoverGlobal.Api.close} />\r\n const itemProps = item.listItemPropsGetter ? item.listItemPropsGetter(this.props.value) : item.listItemProps\r\n return (\r\n <ListItemCustom\r\n key={key}\r\n disablePadding\r\n onClick={(e) => {\r\n if (item.closableOnClick !== false) PopoverGlobal.Api.close()\r\n item.onClick && item.onClick(e, this.props.value)\r\n }}\r\n {...itemProps}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{item.icon}</ListItemIcon>\r\n <ListItemText primary={item.name} />\r\n </ListItemButton>\r\n </ListItemCustom>\r\n )\r\n })\r\n }\r\n\r\n renderItemWithForm = (name: ITableGridItemActionType, form?: IActionFormGetter<T>, globalState?: GlobalModalState) => {\r\n if (!form) return <></>\r\n return mapGlobalModalContext((context) => (\r\n <ListItemCustom\r\n disablePadding\r\n onClick={() => {\r\n PopoverGlobal.Api.close()\r\n context.show({ renderContent: () => form(this.props.value), ...globalState })\r\n }}\r\n >\r\n <ListItemButton>\r\n <ListItemIcon>{mapIcons[name]}</ListItemIcon>\r\n <ListItemText primary={name} />\r\n </ListItemButton>\r\n </ListItemCustom>\r\n ))\r\n }\r\n }\r\n return TableGridItemActions\r\n}\r\n\r\nconst Wrap = styled(Box)({\r\n background: colors.common.white,\r\n borderRadius: '6px',\r\n '& > .MuiButtonBase-root': {\r\n borderRadius: '6px'\r\n }\r\n})\r\n\r\nconst ListItemCustom = styled(ListItem)({\r\n minWidth: '150px',\r\n '.MuiListItemIcon-root': {\r\n minWidth: '40px'\r\n },\r\n '.MuiListItemText-root .MuiTypography-root': {\r\n color: colors.grey[800]\r\n },\r\n '&:hover': {\r\n '.MuiListItemText-root .MuiTypography-root': {\r\n background: colors.grey[100],\r\n color: colors.grey[900]\r\n }\r\n }\r\n})\r\n"],"names":["mapIcons","Edit","_jsx","EditIcon","fontSize","color","Delete","DeleteOutlineIcon","CreateTableGridItemActions","TableGridItemActions","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","this","concat","_defineProperty","menuList","props","list","_toConsumableArray","singleOrArrayToArray","before","after","formEdit","formDelete","value","isArray","map","item","index","key","name","Override","override","onClose","PopoverGlobal","Api","close","itemProps","listItemPropsGetter","listItemProps","ListItemCustom","_objectSpread","disablePadding","onClick","e","closableOnClick","children","_jsxs","ListItemButton","ListItemIcon","icon","ListItemText","primary","form","globalState","mapGlobalModalContext","context","show","renderContent","_inherits","Component","_createClass","_this2","isVisible","Wrap","IconButton","size","_this2$props$menuList","_this2$props$buttonEd","_this2$props$menuList2","open","anchorEl","currentTarget","popoverProps","anchorOrigin","vertical","horizontal","transformOrigin","content","List","renderItems","renderItemWithForm","buttonEditConfig","backdropActivated","MoreVertIcon","styled","Box","background","colors","common","white","borderRadius","ListItem","minWidth","grey"],"mappings":"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"}
@@ -6,11 +6,11 @@ export interface IFormGridLayoutConfig<T> {
6
6
  key: keyof T;
7
7
  label?: string;
8
8
  placeholder?: string;
9
- reponsives?: RegularBreakpoints;
9
+ sizes?: RegularBreakpoints;
10
10
  defaultValue?: any;
11
11
  inputElement?: React.ComponentType<IFormInputBase<T>>;
12
12
  }
13
- export type SubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>;
13
+ export type ISubmitMappingEvent<T> = (value: Partial<T>, oldValue?: T) => Partial<T>;
14
14
  export interface IFormGridLayoutSlots<T> {
15
15
  action?: React.ComponentType<IFormBase<T>>;
16
16
  actionBefore?: JSX.Element;
@@ -23,7 +23,7 @@ export interface IFormGridLayoutSlots<T> {
23
23
  Fail?: boolean;
24
24
  };
25
25
  contentProps?: BoxProps;
26
- submitMapping?: SubmitMappingEvent<T>;
26
+ submitMapping?: ISubmitMappingEvent<T>;
27
27
  }
28
28
  export interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {
29
29
  configs: IFormGridLayoutConfig<T>[];
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { BoxProps, TextFieldProps } from '@mui/material';
3
+ import { IFormInputBase } from './types';
4
+ export interface IInputImageFileSlots {
5
+ wrapProps?: BoxProps;
6
+ inputProps?: TextFieldProps;
7
+ }
8
+ export interface IInputImageFileProps<T> extends IFormInputBase<T, IInputImageFileSlots> {
9
+ }
10
+ export interface IInputImageFileState {
11
+ imageUrl?: string;
12
+ }
13
+ export interface IInputImageFileParams<T> {
14
+ imageGetter?: (data?: Partial<T>) => string | undefined;
15
+ }
16
+ declare function createInputImageFile<T>(params?: IInputImageFileParams<T>): {
17
+ new (props: IInputImageFileProps<T>): {
18
+ render(): import("react/jsx-runtime").JSX.Element;
19
+ handleChange: React.ChangeEventHandler<HTMLInputElement>;
20
+ getImageUrl: () => string;
21
+ context: unknown;
22
+ setState<K extends "imageUrl">(state: IInputImageFileState | ((prevState: Readonly<IInputImageFileState>, props: Readonly<IInputImageFileProps<T>>) => IInputImageFileState | Pick<IInputImageFileState, K> | null) | Pick<IInputImageFileState, K> | null, callback?: (() => void) | undefined): void;
23
+ forceUpdate(callback?: (() => void) | undefined): void;
24
+ readonly props: Readonly<IInputImageFileProps<T>>;
25
+ state: Readonly<IInputImageFileState>;
26
+ refs: {
27
+ [key: string]: React.ReactInstance;
28
+ };
29
+ componentDidMount?(): void;
30
+ shouldComponentUpdate?(nextProps: Readonly<IInputImageFileProps<T>>, nextState: Readonly<IInputImageFileState>, nextContext: any): boolean;
31
+ componentWillUnmount?(): void;
32
+ componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
33
+ getSnapshotBeforeUpdate?(prevProps: Readonly<IInputImageFileProps<T>>, prevState: Readonly<IInputImageFileState>): any;
34
+ componentDidUpdate?(prevProps: Readonly<IInputImageFileProps<T>>, prevState: Readonly<IInputImageFileState>, snapshot?: any): void;
35
+ componentWillMount?(): void;
36
+ UNSAFE_componentWillMount?(): void;
37
+ componentWillReceiveProps?(nextProps: Readonly<IInputImageFileProps<T>>, nextContext: any): void;
38
+ UNSAFE_componentWillReceiveProps?(nextProps: Readonly<IInputImageFileProps<T>>, nextContext: any): void;
39
+ componentWillUpdate?(nextProps: Readonly<IInputImageFileProps<T>>, nextState: Readonly<IInputImageFileState>, nextContext: any): void;
40
+ UNSAFE_componentWillUpdate?(nextProps: Readonly<IInputImageFileProps<T>>, nextState: Readonly<IInputImageFileState>, nextContext: any): void;
41
+ };
42
+ contextType?: React.Context<any> | undefined;
43
+ };
44
+ export default createInputImageFile;
@@ -4,6 +4,7 @@ import CreateInputFile from './create.input.file';
4
4
  import CreateTextEditor from './create.text-editor';
5
5
  import CreateDateExpired from './create.date-expired';
6
6
  import CreateSelectSimple from './create.select-simple';
7
+ import createInputImageFile from './create.input.image-file';
7
8
  import CreateAutocompleteChip from './create.autocomplete.chips';
8
9
  import { createInputFileCsvLocalParser } from './create.input-file.csv-local-parser';
9
10
  declare class DinoFormBase {
@@ -21,6 +22,7 @@ declare class DinoFormBase {
21
22
  createAutocompleteChip: typeof CreateAutocompleteChip;
22
23
  createInputFileCsvLocalParser: typeof createInputFileCsvLocalParser;
23
24
  createInputFile: typeof CreateInputFile;
25
+ createInputImageFile: typeof createInputImageFile;
24
26
  createInput: <T>(params?: import("./create.input").IInputParams<T> | undefined) => import("react").ComponentType<import("./create.input").IInputProps<T>>;
25
27
  createSelectSimple: typeof CreateSelectSimple;
26
28
  createSelectWithApi: <T, O extends import("./create.select-with-api").ISelectWithApiOption<any> = import("./create.select-with-api").ISelectWithApiOption<any>>(params?: import("./create.select-with-api").ISelectWithApiParams<O> | undefined) => import("react").ComponentType<import("./create.select-with-api").ISelectWithApiProps<T, O>>;
@@ -7,6 +7,7 @@ export interface IFormBaseContext<T> {
7
7
  messageErrors: IPartialError<T>;
8
8
  onBlur: (keyName: keyof T) => void;
9
9
  setError: (keyName: keyof T, message: string) => void;
10
+ removeError: (keyName: keyof T) => void;
10
11
  clearErrorAll: (keyName: keyof T) => void;
11
12
  }
12
13
  export interface IFormBase<T> {
@@ -16,11 +17,10 @@ export interface IFormBase<T> {
16
17
  disabled?: boolean;
17
18
  }
18
19
  export interface IFormInputBase<T, S = any> extends Partial<IFormBase<T>> {
19
- formData?: Partial<T>;
20
20
  name?: keyof T;
21
21
  label?: React.ReactNode;
22
22
  placeholder?: string;
23
23
  defaultValue?: any;
24
- onObservedChange?: (name: keyof T, value?: any) => void;
24
+ formContext?: IFormBaseContext<T>;
25
25
  slots?: S;
26
26
  }
@@ -42,6 +42,7 @@ export declare function CreateTableGridItemActions<T>(): {
42
42
  new (props: ITableGridItemActionsProps<T>): {
43
43
  render(): import("react/jsx-runtime").JSX.Element;
44
44
  isVisible: () => boolean;
45
+ singleOrArrayToArray: (value?: SingleOrArray<IActionMenuItemDef<T>>) => IActionMenuItemDef<T>[];
45
46
  renderItems: (value?: SingleOrArray<IActionMenuItemDef<T>>) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
46
47
  renderItemWithForm: (name: ITableGridItemActionType, form?: IActionFormGetter<T>, globalState?: GlobalModalState) => import("react/jsx-runtime").JSX.Element;
47
48
  context: unknown;
@@ -68,6 +69,7 @@ export declare function CreateTableGridItemActions<T>(): {
68
69
  new (props: ITableGridItemActionsProps<T>, context: any): {
69
70
  render(): import("react/jsx-runtime").JSX.Element;
70
71
  isVisible: () => boolean;
72
+ singleOrArrayToArray: (value?: SingleOrArray<IActionMenuItemDef<T>>) => IActionMenuItemDef<T>[];
71
73
  renderItems: (value?: SingleOrArray<IActionMenuItemDef<T>>) => import("react/jsx-runtime").JSX.Element | import("react/jsx-runtime").JSX.Element[];
72
74
  renderItemWithForm: (name: ITableGridItemActionType, form?: IActionFormGetter<T>, globalState?: GlobalModalState) => import("react/jsx-runtime").JSX.Element;
73
75
  context: unknown;
@@ -1,6 +1,9 @@
1
1
  export declare const sleep: (sec: number) => Promise<unknown>;
2
2
  export declare const fetchDelay: <TModel>(action: () => Promise<TModel>, sec: number) => Promise<TModel>;
3
3
  export declare const isGuid: (value: string) => boolean;
4
+ export declare const isValidEmail: (value: string) => boolean;
5
+ export declare const isValidPhoneNumber: (phoneNumber?: string) => boolean;
6
+ export declare const isValidURL: (url: string) => boolean;
4
7
  export declare const windowScrollToTop: (options?: ScrollToOptions, delay?: number) => void;
5
8
  export declare const mergeClasses: (...classes: string[]) => string;
6
9
  type DeepPartial<T> = {
@@ -1,2 +1,2 @@
1
- import{slicedToArray as r,asyncToGenerator as n,typeof as t,regenerator as e,objectSpread2 as o,toArray as a}from"../_virtual/_rollupPluginBabelHelpers.js";import c from"dayjs";var i=function(r){return new Promise((function(n){return setTimeout(n,r)}))},u=function(){var t=n(e().m((function n(t,o){var a,c,u;return e().w((function(n){for(;;)switch(n.n){case 0:return n.n=1,Promise.all([t(),i(o)]);case 1:return a=n.v,c=r(a,1),u=c[0],n.a(2,u)}}),n)})));return function(r,n){return t.apply(this,arguments)}}(),f=function(r){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(r)},s=function(r,n){setTimeout((function(){window.scrollTo(o({top:0,left:0,behavior:"smooth"},r))}),n||50)},l=function(){for(var r=arguments.length,n=new Array(r),t=0;t<r;t++)n[t]=arguments[t];return n.join(" ")},d=function(r){return r&&"object"===t(r)&&!Array.isArray(r)},v=function(){for(var r=arguments.length,n=new Array(r),t=0;t<r;t++)n[t]=arguments[t];return n.reduce((function(r,n){return n?(Object.keys(n).forEach((function(t){d(r[t])&&d(n[t])?r[t]=v(r[t],n[t]):r[t]=n[t]})),r):r}),{})},h=function(n){try{return n?Object.entries(n).reduce((function(n,t){var e=r(t,2),o=e[0],a=e[1];return void 0!==a&&(n[o]=a),n}),{}):{}}catch(r){return{}}},y=function(r){try{var n=(new TextEncoder).encode(r),t="";return n.forEach((function(r){t+=String.fromCharCode(r)})),btoa(t)}catch(r){return console.error("Error encoding to base64",r),""}},p=function(r){try{for(var n=atob(r),t=new Uint8Array(n.length),e=0;e<n.length;e++)t[e]=n.charCodeAt(e);return(new TextDecoder).decode(t)}catch(r){return void console.error("Error decoding base64",r)}},m=function(r,n){try{if(!r)throw new Error("Value is required!");return JSON.parse(r)}catch(r){return n}},g=function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{if(!r)return[];var t=JSON.parse(r);return Array.isArray(t)?t:[]}catch(r){return n}},w=function(r,n){try{return r?parseInt(r):n}catch(r){return n}},A=function(r){return new Promise((function(n,t){var e=new FileReader;e.onload=function(){try{var r=e.result.split(/\r?\n/).filter(Boolean);if(r.length<1)return n([]);var t=r[0].split(",").map((function(r){return r.trim()})),o=r.slice(1).map((function(r){var n=r.split(",").map((function(r){return r.trim()})),e={};return t.forEach((function(r,t){var o;e[r]=null!==(o=n[t])&&void 0!==o?o:""})),e}));n(o)}catch(r){n([])}},e.onerror=function(){t(new Error("Error reading file"))},e.readAsText(r)}))},b=function(r){return r<1024?r.toFixed(2)+" Kb":r<1048576?(r/1024).toFixed(2)+" Mb":r<1073741824?(r/1048576).toFixed(2)+" Gb":(r/1073741824).toFixed(2)+" Tb"},F=function(n){var t,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"$ ",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";try{t=parseFloat(n),isNaN(t)&&(t=0)}catch(r){t=0}var a=t.toFixed(2).split("."),c=r(a,2),i=c[0],u=c[1],f=i.replace(/\B(?=(\d{3})+(?!\d))/g," "),s=f;return"00"!==u&&(s="".concat(f,".").concat(u)),"".concat(e).concat(s).concat(o)},Y=function(r){return r.toLocaleString("en-US")},E=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(!r)return r;var n=Array.from(r),t=a(n),e=t[0],o=t.slice(1);return"".concat(e.toUpperCase()).concat(o.join(""))},j={style1:"DD/MM/YYYY HH:mm",style2:"MMMM D, YYYY",style3:"MM-DD-YYYY"},x=function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"style1";try{if(!r)throw new Error;return c(r).format(j[n])}catch(r){return"unknown"}};export{h as cleanObject,p as decodeBase64,y as encodeBase64,u as fetchDelay,E as formatCapitalizeFirstText,F as formatCurrency,x as formatDatetime,b as formatFileSize,Y as formatNumberWithCommas,f as isGuid,l as mergeClasses,v as mergeObjects,i as sleep,g as tryParseArray,A as tryParseCsvFileToArray,w as tryParseIntRequired,m as tryParseObject,s as windowScrollToTop};
1
+ import{slicedToArray as r,asyncToGenerator as t,typeof as n,regenerator as e,objectSpread2 as o,toArray as a}from"../_virtual/_rollupPluginBabelHelpers.js";import c from"dayjs";var i=function(r){return new Promise((function(t){return setTimeout(t,r)}))},u=function(){var n=t(e().m((function t(n,o){var a,c,u;return e().w((function(t){for(;;)switch(t.n){case 0:return t.n=1,Promise.all([n(),i(o)]);case 1:return a=t.v,c=r(a,1),u=c[0],t.a(2,u)}}),t)})));return function(r,t){return n.apply(this,arguments)}}(),f=function(r){return/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(r)},s=function(r){return/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(r)},l=function(r){return/^(\+?\d{1,4}[\s-]?)?((\(\d{1,4}\))|\d{1,4})[\s-]?\d{1,4}[\s-]?\d{1,9}$/.test((null!=r?r:"").trim())},d=function(r){return/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i.test(r)},h=function(r,t){setTimeout((function(){window.scrollTo(o({top:0,left:0,behavior:"smooth"},r))}),t||50)},v=function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.join(" ")},y=function(r){return r&&"object"===n(r)&&!Array.isArray(r)},p=function(){for(var r=arguments.length,t=new Array(r),n=0;n<r;n++)t[n]=arguments[n];return t.reduce((function(r,t){return t?(Object.keys(t).forEach((function(n){y(r[n])&&y(t[n])?r[n]=p(r[n],t[n]):r[n]=t[n]})),r):r}),{})},m=function(t){try{return t?Object.entries(t).reduce((function(t,n){var e=r(n,2),o=e[0],a=e[1];return void 0!==a&&(t[o]=a),t}),{}):{}}catch(r){return{}}},A=function(r){try{var t=(new TextEncoder).encode(r),n="";return t.forEach((function(r){n+=String.fromCharCode(r)})),btoa(n)}catch(r){return console.error("Error encoding to base64",r),""}},g=function(r){try{for(var t=atob(r),n=new Uint8Array(t.length),e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return(new TextDecoder).decode(n)}catch(r){return void console.error("Error decoding base64",r)}},w=function(r,t){try{if(!r)throw new Error("Value is required!");return JSON.parse(r)}catch(r){return t}},b=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];try{if(!r)return[];var n=JSON.parse(r);return Array.isArray(n)?n:[]}catch(r){return t}},F=function(r,t){try{return r?parseInt(r):t}catch(r){return t}},Y=function(r){return new Promise((function(t,n){var e=new FileReader;e.onload=function(){try{var r=e.result.split(/\r?\n/).filter(Boolean);if(r.length<1)return t([]);var n=r[0].split(",").map((function(r){return r.trim()})),o=r.slice(1).map((function(r){var t=r.split(",").map((function(r){return r.trim()})),e={};return n.forEach((function(r,n){var o;e[r]=null!==(o=t[n])&&void 0!==o?o:""})),e}));t(o)}catch(r){t([])}},e.onerror=function(){n(new Error("Error reading file"))},e.readAsText(r)}))},E=function(r){return r<1024?r.toFixed(2)+" Kb":r<1048576?(r/1024).toFixed(2)+" Mb":r<1073741824?(r/1048576).toFixed(2)+" Gb":(r/1073741824).toFixed(2)+" Tb"},j=function(t){var n,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"$ ",o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";try{n=parseFloat(t),isNaN(n)&&(n=0)}catch(r){n=0}var a=n.toFixed(2).split("."),c=r(a,2),i=c[0],u=c[1],f=i.replace(/\B(?=(\d{3})+(?!\d))/g," "),s=f;return"00"!==u&&(s="".concat(f,".").concat(u)),"".concat(e).concat(s).concat(o)},x=function(r){return r.toLocaleString("en-US")},M=function(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(!r)return r;var t=Array.from(r),n=a(t),e=n[0],o=n.slice(1);return"".concat(e.toUpperCase()).concat(o.join(""))},T={style1:"DD/MM/YYYY HH:mm",style2:"MMMM D, YYYY",style3:"MM-DD-YYYY"},D=function(r){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"style1";try{if(!r)throw new Error;return c(r).format(T[t])}catch(r){return"unknown"}};export{m as cleanObject,g as decodeBase64,A as encodeBase64,u as fetchDelay,M as formatCapitalizeFirstText,j as formatCurrency,D as formatDatetime,E as formatFileSize,x as formatNumberWithCommas,f as isGuid,s as isValidEmail,l as isValidPhoneNumber,d as isValidURL,v as mergeClasses,p as mergeObjects,i as sleep,b as tryParseArray,Y as tryParseCsvFileToArray,F as tryParseIntRequired,w as tryParseObject,h as windowScrollToTop};
2
2
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import dayjs from 'dayjs'\r\n\r\nexport const sleep = (sec: number) => new Promise((res) => setTimeout(res, sec))\r\n\r\nexport const fetchDelay = async function <TModel>(action: () => Promise<TModel>, sec: number) {\r\n const [res] = await Promise.all([action(), sleep(sec)])\r\n return res\r\n}\r\n\r\nexport const isGuid = (value: string): boolean => {\r\n const guidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/\r\n return guidRegex.test(value)\r\n}\r\n\r\nexport const windowScrollToTop = (options?: ScrollToOptions, delay?: number) => {\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth', ...options })\r\n }, delay || 50)\r\n}\r\n\r\nexport const mergeClasses = (...classes: string[]) => {\r\n return classes.join(' ')\r\n}\r\n\r\n/**\r\n * Simple object check.\r\n * @param item\r\n * @returns {boolean}\r\n */\r\nconst isObject = (obj: any) => {\r\n return obj && typeof obj === 'object' && !Array.isArray(obj)\r\n}\r\n\r\ntype DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] } | undefined\r\n\r\nexport const mergeObjects = <T>(...objects: DeepPartial<T>[]): T => {\r\n return objects.reduce((prev, obj) => {\r\n if (!obj) return prev\r\n Object.keys(obj).forEach((key) => {\r\n if (isObject((prev as any)[key]) && isObject((obj as any)[key])) {\r\n ;(prev as any)[key] = mergeObjects((prev as any)[key], (obj as any)[key])\r\n } else {\r\n ;(prev as any)[key] = (obj as any)[key]\r\n }\r\n })\r\n return prev\r\n }, {} as T) as any\r\n}\r\n\r\nexport const cleanObject = <T extends object>(obj: T): Partial<T> => {\r\n try {\r\n if (!obj) return {}\r\n return Object.entries(obj).reduce((acc, [key, value]) => {\r\n if (value !== undefined) {\r\n ;(acc as any)[key] = value\r\n }\r\n return acc\r\n }, {} as Partial<T>)\r\n } catch (error) {\r\n return {}\r\n }\r\n}\r\n\r\nexport const encodeBase64 = (input: string): string => {\r\n try {\r\n const utf8Bytes = new TextEncoder().encode(input)\r\n let binaryString = ''\r\n utf8Bytes.forEach((byte) => {\r\n binaryString += String.fromCharCode(byte)\r\n })\r\n return btoa(binaryString)\r\n } catch (error) {\r\n console.error('Error encoding to base64', error)\r\n return ''\r\n }\r\n}\r\n\r\nexport const decodeBase64 = (encoded: string): string | undefined => {\r\n try {\r\n const binaryString = atob(encoded)\r\n const utf8Bytes = new Uint8Array(binaryString.length)\r\n for (let i = 0; i < binaryString.length; i++) {\r\n utf8Bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return new TextDecoder().decode(utf8Bytes)\r\n } catch (error) {\r\n console.error('Error decoding base64', error)\r\n return\r\n }\r\n}\r\n\r\n//#region Try Parse\r\nexport const tryParseObject = function <T>(value: any, defaultValue: T): T {\r\n try {\r\n if (!value) {\r\n throw new Error('Value is required!')\r\n }\r\n return JSON.parse(value)\r\n } catch {\r\n // console.log(error)\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseArray = function <T>(value: any, defaultValue: T[] = []): T[] {\r\n try {\r\n if (!value) return []\r\n const parseValue = JSON.parse(value)\r\n return Array.isArray(parseValue) ? parseValue : []\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseIntRequired = function (value: any, defaultValue: number): number {\r\n try {\r\n if (!value) return defaultValue\r\n return parseInt(value)\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseCsvFileToArray = (file: File): Promise<Record<string, string>[]> => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n\r\n reader.onload = () => {\r\n try {\r\n const text = reader.result as string\r\n const rows = text.split(/\\r?\\n/).filter(Boolean)\r\n\r\n if (rows.length < 1) return resolve([])\r\n\r\n const headers = rows[0].split(',').map((h) => h.trim())\r\n\r\n const data = rows.slice(1).map((row) => {\r\n const values = row.split(',').map((v) => v.trim())\r\n const item: Record<string, string> = {}\r\n\r\n headers.forEach((header, index) => {\r\n item[header] = values[index] ?? ''\r\n })\r\n\r\n return item\r\n })\r\n\r\n resolve(data)\r\n } catch (error) {\r\n resolve([])\r\n }\r\n }\r\n\r\n reader.onerror = () => {\r\n reject(new Error('Error reading file'))\r\n }\r\n\r\n reader.readAsText(file)\r\n })\r\n}\r\n//#endregion\r\n\r\n//#region Format\r\nexport const formatFileSize = (sizeInKb: number) => {\r\n if (sizeInKb < 1024) {\r\n return sizeInKb.toFixed(2) + ' Kb'\r\n } else if (sizeInKb < 1024 * 1024) {\r\n return (sizeInKb / 1024).toFixed(2) + ' Mb'\r\n } else if (sizeInKb < 1024 * 1024 * 1024) {\r\n return (sizeInKb / (1024 * 1024)).toFixed(2) + ' Gb'\r\n } else {\r\n return (sizeInKb / (1024 * 1024 * 1024)).toFixed(2) + ' Tb'\r\n }\r\n}\r\n\r\nexport const formatCurrency = (value?: any, prefix = '$ ', suffix = ''): string => {\r\n let parsedValue\r\n try {\r\n parsedValue = parseFloat(value)\r\n if (isNaN(parsedValue)) parsedValue = 0\r\n } catch (e) {\r\n parsedValue = 0\r\n }\r\n const roundedValue = parsedValue.toFixed(2)\r\n const [integerPart, decimalPart] = roundedValue.split('.')\r\n const formattedIntegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\r\n\r\n let formattedValue = formattedIntegerPart\r\n if (decimalPart !== '00') {\r\n formattedValue = `${formattedIntegerPart}.${decimalPart}`\r\n }\r\n return `${prefix}${formattedValue}${suffix}`\r\n}\r\n\r\nexport const formatNumberWithCommas = (number: number): string => {\r\n return number.toLocaleString('en-US')\r\n}\r\n\r\nexport const formatCapitalizeFirstText = (value: string = '') => {\r\n if (!value) return value\r\n const [first, ...data] = Array.from(value)\r\n return `${first.toUpperCase()}${data.join('')}`\r\n}\r\n\r\nconst formatDatetimeStyle = {\r\n style1: 'DD/MM/YYYY HH:mm',\r\n style2: 'MMMM D, YYYY',\r\n style3: 'MM-DD-YYYY'\r\n}\r\n\r\n/**\r\n * Formats a datetime string using one of the predefined styles.\r\n *\r\n * Available format styles:\r\n * - style1: DD/MM/YYYY HH:mm → e.g., '25/04/2025 14:30'\r\n * - style2: 'MMMM D, YYYY' → e.g., 'April 25, 2025'\r\n * - style2: 'MM-DD-YYYY' → e.g., '04-25-2025'\r\n * @param value - A datetime string (ISO format or any format parsable by dayjs).\r\n * @param format - Format style key: 'style1' or 'style2'. Defaults to 'style1'.\r\n * @returns A formatted datetime string, or 'unknown' if the input is invalid or unparsable.\r\n */\r\nexport const formatDatetime = (value: string, format: keyof typeof formatDatetimeStyle = 'style1'): string => {\r\n try {\r\n if (!value) throw new Error()\r\n return dayjs(value).format(formatDatetimeStyle[format])\r\n } catch (error) {\r\n return 'unknown'\r\n }\r\n}\r\n//#endregion\r\n"],"names":["sleep","sec","Promise","res","setTimeout","fetchDelay","_ref","_asyncToGenerator","_regenerator","m","_callee","action","_yield$Promise$all","_yield$Promise$all2","w","_context","n","all","v","_slicedToArray","a","_x","_x2","apply","this","arguments","isGuid","value","test","windowScrollToTop","options","delay","window","scrollTo","_objectSpread","top","left","behavior","mergeClasses","_len","length","classes","Array","_key","join","isObject","obj","_typeof","isArray","mergeObjects","_len2","objects","_key2","reduce","prev","Object","keys","forEach","key","cleanObject","entries","acc","_ref2","_ref3","undefined","error","encodeBase64","input","utf8Bytes","TextEncoder","encode","binaryString","byte","String","fromCharCode","btoa","console","decodeBase64","encoded","atob","Uint8Array","i","charCodeAt","TextDecoder","decode","tryParseObject","defaultValue","Error","JSON","parse","_unused","tryParseArray","parseValue","_unused2","tryParseIntRequired","parseInt","_unused3","tryParseCsvFileToArray","file","resolve","reject","reader","FileReader","onload","rows","result","split","filter","Boolean","headers","map","h","trim","data","slice","row","values","item","header","index","_values$index","onerror","readAsText","formatFileSize","sizeInKb","toFixed","formatCurrency","parsedValue","prefix","suffix","parseFloat","isNaN","e","_roundedValue$split","_roundedValue$split2","integerPart","decimalPart","formattedIntegerPart","replace","formattedValue","concat","formatNumberWithCommas","number","toLocaleString","formatCapitalizeFirstText","_Array$from","from","_Array$from2","_toArray","first","toUpperCase","formatDatetimeStyle","style1","style2","style3","formatDatetime","format","dayjs"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../src/utils/helpers.ts"],"sourcesContent":["import dayjs from 'dayjs'\r\n\r\nexport const sleep = (sec: number) => new Promise((res) => setTimeout(res, sec))\r\n\r\nexport const fetchDelay = async function <TModel>(action: () => Promise<TModel>, sec: number) {\r\n const [res] = await Promise.all([action(), sleep(sec)])\r\n return res\r\n}\r\n\r\nexport const isGuid = (value: string): boolean => {\r\n const guidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/\r\n return guidRegex.test(value)\r\n}\r\n\r\nexport const isValidEmail = (value: string) => {\r\n const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/\r\n return regex.test(value)\r\n}\r\n\r\nexport const isValidPhoneNumber = (phoneNumber?: string): boolean => {\r\n const phoneRegex = /^(\\+?\\d{1,4}[\\s-]?)?((\\(\\d{1,4}\\))|\\d{1,4})[\\s-]?\\d{1,4}[\\s-]?\\d{1,9}$/\r\n return phoneRegex.test((phoneNumber ?? '').trim())\r\n}\r\n\r\nexport const isValidURL = (url: string): boolean => {\r\n const regex = /^(https?|ftp):\\/\\/[^\\s/$.?#].[^\\s]*$/i\r\n return regex.test(url)\r\n}\r\n\r\nexport const windowScrollToTop = (options?: ScrollToOptions, delay?: number) => {\r\n setTimeout(() => {\r\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth', ...options })\r\n }, delay || 50)\r\n}\r\n\r\nexport const mergeClasses = (...classes: string[]) => {\r\n return classes.join(' ')\r\n}\r\n\r\n/**\r\n * Simple object check.\r\n * @param item\r\n * @returns {boolean}\r\n */\r\nconst isObject = (obj: any) => {\r\n return obj && typeof obj === 'object' && !Array.isArray(obj)\r\n}\r\n\r\ntype DeepPartial<T> = { [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P] } | undefined\r\n\r\nexport const mergeObjects = <T>(...objects: DeepPartial<T>[]): T => {\r\n return objects.reduce((prev, obj) => {\r\n if (!obj) return prev\r\n Object.keys(obj).forEach((key) => {\r\n if (isObject((prev as any)[key]) && isObject((obj as any)[key])) {\r\n ;(prev as any)[key] = mergeObjects((prev as any)[key], (obj as any)[key])\r\n } else {\r\n ;(prev as any)[key] = (obj as any)[key]\r\n }\r\n })\r\n return prev\r\n }, {} as T) as any\r\n}\r\n\r\nexport const cleanObject = <T extends object>(obj: T): Partial<T> => {\r\n try {\r\n if (!obj) return {}\r\n return Object.entries(obj).reduce((acc, [key, value]) => {\r\n if (value !== undefined) {\r\n ;(acc as any)[key] = value\r\n }\r\n return acc\r\n }, {} as Partial<T>)\r\n } catch (error) {\r\n return {}\r\n }\r\n}\r\n\r\nexport const encodeBase64 = (input: string): string => {\r\n try {\r\n const utf8Bytes = new TextEncoder().encode(input)\r\n let binaryString = ''\r\n utf8Bytes.forEach((byte) => {\r\n binaryString += String.fromCharCode(byte)\r\n })\r\n return btoa(binaryString)\r\n } catch (error) {\r\n console.error('Error encoding to base64', error)\r\n return ''\r\n }\r\n}\r\n\r\nexport const decodeBase64 = (encoded: string): string | undefined => {\r\n try {\r\n const binaryString = atob(encoded)\r\n const utf8Bytes = new Uint8Array(binaryString.length)\r\n for (let i = 0; i < binaryString.length; i++) {\r\n utf8Bytes[i] = binaryString.charCodeAt(i)\r\n }\r\n return new TextDecoder().decode(utf8Bytes)\r\n } catch (error) {\r\n console.error('Error decoding base64', error)\r\n return\r\n }\r\n}\r\n\r\n//#region Try Parse\r\nexport const tryParseObject = function <T>(value: any, defaultValue: T): T {\r\n try {\r\n if (!value) {\r\n throw new Error('Value is required!')\r\n }\r\n return JSON.parse(value)\r\n } catch {\r\n // console.log(error)\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseArray = function <T>(value: any, defaultValue: T[] = []): T[] {\r\n try {\r\n if (!value) return []\r\n const parseValue = JSON.parse(value)\r\n return Array.isArray(parseValue) ? parseValue : []\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseIntRequired = function (value: any, defaultValue: number): number {\r\n try {\r\n if (!value) return defaultValue\r\n return parseInt(value)\r\n } catch {\r\n return defaultValue\r\n }\r\n}\r\n\r\nexport const tryParseCsvFileToArray = (file: File): Promise<Record<string, string>[]> => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n\r\n reader.onload = () => {\r\n try {\r\n const text = reader.result as string\r\n const rows = text.split(/\\r?\\n/).filter(Boolean)\r\n\r\n if (rows.length < 1) return resolve([])\r\n\r\n const headers = rows[0].split(',').map((h) => h.trim())\r\n\r\n const data = rows.slice(1).map((row) => {\r\n const values = row.split(',').map((v) => v.trim())\r\n const item: Record<string, string> = {}\r\n\r\n headers.forEach((header, index) => {\r\n item[header] = values[index] ?? ''\r\n })\r\n\r\n return item\r\n })\r\n\r\n resolve(data)\r\n } catch (error) {\r\n resolve([])\r\n }\r\n }\r\n\r\n reader.onerror = () => {\r\n reject(new Error('Error reading file'))\r\n }\r\n\r\n reader.readAsText(file)\r\n })\r\n}\r\n//#endregion\r\n\r\n//#region Format\r\nexport const formatFileSize = (sizeInKb: number) => {\r\n if (sizeInKb < 1024) {\r\n return sizeInKb.toFixed(2) + ' Kb'\r\n } else if (sizeInKb < 1024 * 1024) {\r\n return (sizeInKb / 1024).toFixed(2) + ' Mb'\r\n } else if (sizeInKb < 1024 * 1024 * 1024) {\r\n return (sizeInKb / (1024 * 1024)).toFixed(2) + ' Gb'\r\n } else {\r\n return (sizeInKb / (1024 * 1024 * 1024)).toFixed(2) + ' Tb'\r\n }\r\n}\r\n\r\nexport const formatCurrency = (value?: any, prefix = '$ ', suffix = ''): string => {\r\n let parsedValue\r\n try {\r\n parsedValue = parseFloat(value)\r\n if (isNaN(parsedValue)) parsedValue = 0\r\n } catch (e) {\r\n parsedValue = 0\r\n }\r\n const roundedValue = parsedValue.toFixed(2)\r\n const [integerPart, decimalPart] = roundedValue.split('.')\r\n const formattedIntegerPart = integerPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ')\r\n\r\n let formattedValue = formattedIntegerPart\r\n if (decimalPart !== '00') {\r\n formattedValue = `${formattedIntegerPart}.${decimalPart}`\r\n }\r\n return `${prefix}${formattedValue}${suffix}`\r\n}\r\n\r\nexport const formatNumberWithCommas = (number: number): string => {\r\n return number.toLocaleString('en-US')\r\n}\r\n\r\nexport const formatCapitalizeFirstText = (value: string = '') => {\r\n if (!value) return value\r\n const [first, ...data] = Array.from(value)\r\n return `${first.toUpperCase()}${data.join('')}`\r\n}\r\n\r\nconst formatDatetimeStyle = {\r\n style1: 'DD/MM/YYYY HH:mm',\r\n style2: 'MMMM D, YYYY',\r\n style3: 'MM-DD-YYYY'\r\n}\r\n\r\n/**\r\n * Formats a datetime string using one of the predefined styles.\r\n *\r\n * Available format styles:\r\n * - style1: DD/MM/YYYY HH:mm → e.g., '25/04/2025 14:30'\r\n * - style2: 'MMMM D, YYYY' → e.g., 'April 25, 2025'\r\n * - style2: 'MM-DD-YYYY' → e.g., '04-25-2025'\r\n * @param value - A datetime string (ISO format or any format parsable by dayjs).\r\n * @param format - Format style key: 'style1' or 'style2'. Defaults to 'style1'.\r\n * @returns A formatted datetime string, or 'unknown' if the input is invalid or unparsable.\r\n */\r\nexport const formatDatetime = (value: string, format: keyof typeof formatDatetimeStyle = 'style1'): string => {\r\n try {\r\n if (!value) throw new Error()\r\n return dayjs(value).format(formatDatetimeStyle[format])\r\n } catch (error) {\r\n return 'unknown'\r\n }\r\n}\r\n//#endregion\r\n"],"names":["sleep","sec","Promise","res","setTimeout","fetchDelay","_ref","_asyncToGenerator","_regenerator","m","_callee","action","_yield$Promise$all","_yield$Promise$all2","w","_context","n","all","v","_slicedToArray","a","_x","_x2","apply","this","arguments","isGuid","value","test","isValidEmail","isValidPhoneNumber","phoneNumber","trim","isValidURL","url","windowScrollToTop","options","delay","window","scrollTo","_objectSpread","top","left","behavior","mergeClasses","_len","length","classes","Array","_key","join","isObject","obj","_typeof","isArray","mergeObjects","_len2","objects","_key2","reduce","prev","Object","keys","forEach","key","cleanObject","entries","acc","_ref2","_ref3","undefined","error","encodeBase64","input","utf8Bytes","TextEncoder","encode","binaryString","byte","String","fromCharCode","btoa","console","decodeBase64","encoded","atob","Uint8Array","i","charCodeAt","TextDecoder","decode","tryParseObject","defaultValue","Error","JSON","parse","_unused","tryParseArray","parseValue","_unused2","tryParseIntRequired","parseInt","_unused3","tryParseCsvFileToArray","file","resolve","reject","reader","FileReader","onload","rows","result","split","filter","Boolean","headers","map","h","data","slice","row","values","item","header","index","_values$index","onerror","readAsText","formatFileSize","sizeInKb","toFixed","formatCurrency","parsedValue","prefix","suffix","parseFloat","isNaN","e","_roundedValue$split","_roundedValue$split2","integerPart","decimalPart","formattedIntegerPart","replace","formattedValue","concat","formatNumberWithCommas","number","toLocaleString","formatCapitalizeFirstText","_Array$from","from","_Array$from2","_toArray","first","toUpperCase","formatDatetimeStyle","style1","style2","style3","formatDatetime","format","dayjs"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinocollab-core",
3
- "version": "1.0.29",
3
+ "version": "1.1.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",