dinocollab-core 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/bin/codegen.js +66 -0
  2. package/dist/_virtual/_rollupPluginBabelHelpers.js +2 -2
  3. package/dist/api-context/drawer-global.js +1 -1
  4. package/dist/api-context/global-modal.js +1 -1
  5. package/dist/api-context/popover-global.js +1 -1
  6. package/dist/api-context/popover.js +1 -1
  7. package/dist/components/copy-to-clipboard.js +1 -1
  8. package/dist/components/create.multi-select-dropdown.js +1 -1
  9. package/dist/components/create.multi-select-dropdown.js.map +1 -1
  10. package/dist/components/help-tooltip.js +1 -1
  11. package/dist/data-view/convert-filter-to-graphql.js +1 -1
  12. package/dist/data-view/convert-filter-to-graphql.js.map +1 -1
  13. package/dist/data-view/create.active-filters-panel.js +1 -1
  14. package/dist/data-view/create.active-filters-panel.js.map +1 -1
  15. package/dist/data-view/create.data-view.js +1 -1
  16. package/dist/data-view/dino.js +1 -1
  17. package/dist/data-view/dino.js.map +1 -1
  18. package/dist/data-view/filter-store.js +1 -1
  19. package/dist/data-view/filter-store.js.map +1 -1
  20. package/dist/data-view/index.js +1 -1
  21. package/dist/data-view/query-param-url.js +1 -1
  22. package/dist/data-view/query-param-url.js.map +1 -1
  23. package/dist/data-view/ui.units.js.map +1 -1
  24. package/dist/data-view/view-mode.content.js +1 -1
  25. package/dist/form/create.autocomplete.chips.js +1 -1
  26. package/dist/form/create.date-expired.js +1 -1
  27. package/dist/form/create.date-expired.js.map +1 -1
  28. package/dist/form/create.date-picker.js +1 -1
  29. package/dist/form/create.date-picker.js.map +1 -1
  30. package/dist/form/create.form-comfirm.js +1 -1
  31. package/dist/form/create.form-comfirm.js.map +1 -1
  32. package/dist/form/create.form-grid-layout.js +1 -1
  33. package/dist/form/create.form-grid-layout.js.map +1 -1
  34. package/dist/form/create.input-file.csv-local-parser.js +1 -1
  35. package/dist/form/create.input-file.csv-local-parser.js.map +1 -1
  36. package/dist/form/create.input.file.js +1 -1
  37. package/dist/form/create.input.image-file.js +1 -1
  38. package/dist/form/create.input.js +1 -1
  39. package/dist/form/create.input.js.map +1 -1
  40. package/dist/form/create.select-simple.js +1 -1
  41. package/dist/form/create.select-simple.js.map +1 -1
  42. package/dist/form/create.select-with-api.js +1 -1
  43. package/dist/form/create.select-with-api.js.map +1 -1
  44. package/dist/form/modal-wrapper.js +1 -1
  45. package/dist/form/modal-wrapper.js.map +1 -1
  46. package/dist/form/validator.js +1 -1
  47. package/dist/form/validator.js.map +1 -1
  48. package/dist/http-service/base/crud-service-base.js +2 -0
  49. package/dist/http-service/base/crud-service-base.js.map +1 -0
  50. package/dist/http-service/base/gateway.js +2 -0
  51. package/dist/http-service/base/gateway.js.map +1 -0
  52. package/dist/http-service/base/helpers.js +2 -0
  53. package/dist/http-service/base/helpers.js.map +1 -0
  54. package/dist/http-service/base/service-base.js +2 -0
  55. package/dist/http-service/base/service-base.js.map +1 -0
  56. package/dist/http-service/graphql/app-profile.js +2 -0
  57. package/dist/http-service/graphql/app-profile.js.map +1 -0
  58. package/dist/http-service/graphql/graphql-request.js +2 -0
  59. package/dist/http-service/graphql/graphql-request.js.map +1 -0
  60. package/dist/http-service/graphql/key-converter.js.map +1 -0
  61. package/dist/http-service/graphql/request-param.js +2 -0
  62. package/dist/http-service/graphql/request-param.js.map +1 -0
  63. package/dist/http-service/graphql/types.js +2 -0
  64. package/dist/http-service/graphql/types.js.map +1 -0
  65. package/dist/http-service/index.js +2 -0
  66. package/dist/http-service/index.js.map +1 -0
  67. package/dist/mfe-auth/auth-enums.js +2 -0
  68. package/dist/mfe-auth/auth-enums.js.map +1 -0
  69. package/dist/mfe-auth/auth-mfe-manager.js +2 -0
  70. package/dist/mfe-auth/auth-mfe-manager.js.map +1 -0
  71. package/dist/mfe-auth/auth-mfe-provider.js +2 -0
  72. package/dist/mfe-auth/auth-mfe-provider.js.map +1 -0
  73. package/dist/mfe-auth/auth-types.js +2 -0
  74. package/dist/mfe-auth/auth-types.js.map +1 -0
  75. package/dist/mfe-auth/index.js +2 -0
  76. package/dist/mfe-auth/index.js.map +1 -0
  77. package/dist/mfe-auth/micro-frontend-auth-hooks.js +2 -0
  78. package/dist/mfe-auth/micro-frontend-auth-hooks.js.map +1 -0
  79. package/dist/mfe-navigate/index.js +2 -0
  80. package/dist/mfe-navigate/index.js.map +1 -0
  81. package/dist/mfe-navigate/mfe-navigate.debug.js +2 -0
  82. package/dist/mfe-navigate/mfe-navigate.debug.js.map +1 -0
  83. package/dist/mfe-navigate/mfe-navigate.remote.js +2 -0
  84. package/dist/mfe-navigate/mfe-navigate.remote.js.map +1 -0
  85. package/dist/mfe-navigate/nextjs/index.js +2 -0
  86. package/dist/mfe-navigate/nextjs/index.js.map +1 -0
  87. package/dist/mfe-navigate/nextjs/provider.js +2 -0
  88. package/dist/mfe-navigate/nextjs/provider.js.map +1 -0
  89. package/dist/mfe-navigate/react/index.js +2 -0
  90. package/dist/mfe-navigate/react/index.js.map +1 -0
  91. package/dist/mfe-navigate/react/provider.js +2 -0
  92. package/dist/mfe-navigate/react/provider.js.map +1 -0
  93. package/dist/redux/create.hoc-lazy.js +1 -1
  94. package/dist/table/create.action-row.js +1 -1
  95. package/dist/table/create.action-row.js.map +1 -1
  96. package/dist/table/create.table.js +1 -1
  97. package/dist/table/create.table.js.map +1 -1
  98. package/dist/table/dino.js +1 -1
  99. package/dist/table/dino.js.map +1 -1
  100. package/dist/table/helpers.js +1 -1
  101. package/dist/table/helpers.js.map +1 -1
  102. package/dist/table/index.js +1 -1
  103. package/dist/table/toolbar-pannel.js +1 -1
  104. package/dist/table/ui.buttons.js +1 -1
  105. package/dist/table/ui.buttons.js.map +1 -1
  106. package/dist/table/ui.units.js +1 -1
  107. package/dist/table/ui.units.js.map +1 -1
  108. package/dist/table-grid/create.table-grid.js +1 -1
  109. package/dist/table-grid/create.table-grid.js.map +1 -1
  110. package/dist/table-grid/filter-bar/create.filter-bar.js +1 -1
  111. package/dist/table-grid/item-actions.js +1 -1
  112. package/dist/table-grid/item-actions.js.map +1 -1
  113. package/dist/table-grid/toolbar-pannel.js +1 -1
  114. package/dist/table-grid/toolbar-pannel.js.map +1 -1
  115. package/dist/table-grid/url-query-param.js +1 -1
  116. package/dist/table-grid/url-query-param.js.map +1 -1
  117. package/dist/types/data-view/convert-filter-to-graphql.d.ts +3 -3
  118. package/dist/types/data-view/dino.d.ts +1 -1
  119. package/dist/types/data-view/index.d.ts +0 -1
  120. package/dist/types/http-service/base/crud-service-base.d.ts +68 -0
  121. package/dist/types/http-service/base/gateway.d.ts +3 -0
  122. package/dist/types/http-service/base/helpers.d.ts +31 -0
  123. package/dist/types/http-service/base/index.d.ts +5 -0
  124. package/dist/types/http-service/base/service-base.d.ts +132 -0
  125. package/dist/types/http-service/base/type.api-alert.d.ts +17 -0
  126. package/dist/types/http-service/base/types.d.ts +45 -0
  127. package/dist/types/http-service/graphql/app-profile.d.ts +17 -0
  128. package/dist/types/http-service/graphql/graphql-request.d.ts +83 -0
  129. package/dist/types/http-service/graphql/index.d.ts +5 -0
  130. package/dist/types/{data-view → http-service/graphql}/key-converter.d.ts +2 -1
  131. package/dist/types/http-service/graphql/request-param.d.ts +65 -0
  132. package/dist/types/http-service/graphql/types.d.ts +62 -0
  133. package/dist/types/http-service/index.d.ts +2 -0
  134. package/dist/types/mfe-auth/auth-enums.d.ts +40 -0
  135. package/dist/types/mfe-auth/auth-mfe-manager.d.ts +68 -0
  136. package/dist/types/mfe-auth/auth-mfe-provider.d.ts +19 -0
  137. package/dist/types/mfe-auth/auth-types.d.ts +33 -0
  138. package/dist/types/mfe-auth/index.d.ts +6 -0
  139. package/dist/types/mfe-auth/micro-frontend-auth-hooks.d.ts +164 -0
  140. package/dist/types/mfe-navigate/index.d.ts +2 -0
  141. package/dist/types/mfe-navigate/mfe-navigate.debug.d.ts +4 -0
  142. package/dist/types/mfe-navigate/mfe-navigate.remote.d.ts +11 -0
  143. package/dist/types/mfe-navigate/nextjs/index.d.ts +1 -0
  144. package/dist/types/mfe-navigate/nextjs/provider.d.ts +2 -0
  145. package/dist/types/mfe-navigate/react/index.d.ts +1 -0
  146. package/dist/types/mfe-navigate/react/provider.d.ts +3 -0
  147. package/dist/types/mfe-navigate/types.d.ts +13 -0
  148. package/dist/types/utils/index.d.ts +0 -1
  149. package/dist/utils/helpers.js +1 -1
  150. package/dist/utils/index.js +1 -1
  151. package/dist/utils/query-param.js +1 -1
  152. package/dist/utils/query-param.js.map +1 -1
  153. package/package.json +87 -47
  154. package/dist/data-view/key-converter.js.map +0 -1
  155. package/dist/types/utils/mfe-events.d.ts +0 -12
  156. package/dist/utils/mfe-events.js +0 -2
  157. package/dist/utils/mfe-events.js.map +0 -1
  158. /package/dist/{data-view → http-service/graphql}/key-converter.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"create.date-expired.js","sources":["../../src/form/create.date-expired.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { LocalizationProvider } from '@mui/x-date-pickers'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { Switch, Typography, TextField, styled, Box, TextFieldProps, SwitchProps, colors } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { dayjsCustom, mergeObjects, tryParseIntRequired } from '../utils'\r\n\r\nconst defaultFormatString = 'MM-DD-YYYY'\r\n\r\nconst dateExpiredClasses = {\r\n root: 'DateExpired-root',\r\n control: 'DateExpired-control',\r\n label: 'DateExpired-label',\r\n expired: 'DateExpired-expired',\r\n labelSwitch: 'DateExpired-labelSwitch',\r\n input: 'DateExpired-input',\r\n switch: 'DateExpired-switch'\r\n}\r\n\r\ninterface ISlots<T> {\r\n /** @default string */\r\n type?: 'number' | 'string'\r\n textFieldProps?: Partial<TextFieldProps>\r\n switchProps?: SwitchProps\r\n switchChecked?: boolean\r\n switchCheckedGetter?: (value: any, model?: Partial<T>) => boolean\r\n}\r\n\r\ninterface MergeConfig<T> extends ISlots<T> {\r\n switchChecked: boolean\r\n defaulValue?: string\r\n handleBlur: () => void\r\n}\r\n\r\ninterface IProps<T> extends IFormInputBase<T> {\r\n slots?: ISlots<T>\r\n}\r\n\r\ninterface IState {\r\n numberOfDays: number\r\n switchChecked: boolean\r\n}\r\n\r\nfunction CreateDateExpired<T>(params?: ISlots<T>): React.ComponentType<IProps<T>> {\r\n class DateExpired extends Component<IProps<T>, IState> {\r\n defaultNumberOfDays: number = 30\r\n private id\r\n private mergeConfigCached: MergeConfig<T>\r\n constructor(props: IProps<T>) {\r\n super(props)\r\n this.mergeConfigCached = this.updateMergeConfig(props.slots) ?? {}\r\n this.state = {\r\n numberOfDays: this.getNumberOfDays(),\r\n switchChecked: this.mergeConfig.switchChecked\r\n }\r\n this.id = new Date().getTime().toString()\r\n }\r\n\r\n get mergeConfig(): MergeConfig<T> {\r\n return this.mergeConfigCached\r\n }\r\n\r\n get defaultValueInput(): string | number {\r\n if (this.mergeConfig.type === 'number') {\r\n return this.state.numberOfDays\r\n } else {\r\n return this.getOffsetDate(this.state.numberOfDays, 'YYYY-MM-DDTHH:mm:ss.sssZ')\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: IProps<T>) {\r\n if (prevProps.slots !== this.props.slots || prevProps.data !== this.props.data) {\r\n this.mergeConfigCached = this.updateMergeConfig(this.props.slots)\r\n }\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <Wrap className={this.getRootClasses()}>\r\n <input key={this.defaultValueInput} type='text' hidden name={this.props.name?.toString()} defaultValue={this.defaultValueInput} />\r\n <TextField {...this.mapTextFieldProps()} />\r\n <div className={dateExpiredClasses.control}>\r\n <Typography\r\n variant='caption'\r\n className={dateExpiredClasses.labelSwitch}\r\n {...{ component: 'label', htmlFor: this.id }}\r\n sx={{ color: this.state.switchChecked ? 'success.main' : '#767676' }}\r\n >\r\n {this.state.switchChecked ? 'Use Expiration Date' : 'No Expiration'}\r\n </Typography>\r\n <Switch\r\n id={this.id}\r\n size='small'\r\n color='success'\r\n checked={this.state.switchChecked}\r\n onChange={(_, checked) => this.setState({ switchChecked: checked })}\r\n {...this.mergeConfig.switchProps}\r\n />\r\n </div>\r\n </Wrap>\r\n </LocalizationProvider>\r\n )\r\n }\r\n //#endregion\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const { messageErrors, name, onBlur } = this.props\r\n const disabled = this.props.disabled || !this.state.switchChecked\r\n const obj: TextFieldProps = {\r\n fullWidth: true,\r\n className: dateExpiredClasses.input,\r\n label: (\r\n <span className={dateExpiredClasses.label}>\r\n Expiry date\r\n {this.state.switchChecked && <b>{this.getOffsetDate(this.state.numberOfDays)}</b>}\r\n </span>\r\n ),\r\n variant: 'outlined',\r\n type: 'number',\r\n disabled: disabled,\r\n value: this.state.switchChecked ? this.state.numberOfDays : 0,\r\n onChange: this.handleChange\r\n }\r\n if (!!name) {\r\n obj.onBlur = () => onBlur && onBlur(name)\r\n const temp = getErrorMessage(messageErrors, name)\r\n if (temp.error) {\r\n obj.error = Boolean(temp.error)\r\n obj.helperText = temp.message ?? ''\r\n }\r\n }\r\n return mergeObjects<TextFieldProps>({}, obj, this.mergeConfig.textFieldProps)\r\n }\r\n\r\n updateMergeConfig(currentSlots?: ISlots<T>): MergeConfig<T> {\r\n const { switchChecked, switchCheckedGetter } = currentSlots ?? {}\r\n const obj = mergeObjects(params, currentSlots)\r\n const { data, name, onBlur, defaultValue } = this.props\r\n const dValue = defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n let check = !data ? false : !!dValue || !!switchChecked\r\n if (switchCheckedGetter) check = switchCheckedGetter(dValue, data)\r\n return {\r\n ...obj,\r\n switchChecked: check,\r\n defaulValue: dValue,\r\n handleBlur: () => {\r\n if (!name || !onBlur) return\r\n onBlur(name)\r\n }\r\n }\r\n }\r\n\r\n handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const numberOfDays: number = e.target.value != '' ? parseInt(e.target.value) : 0\r\n this.setState({ numberOfDays }, () => {\r\n const err = getErrorMessage(this.props.messageErrors, this.props.name)\r\n if (numberOfDays > 0 && err.error) this.mergeConfig.handleBlur()\r\n })\r\n }\r\n\r\n getRootClasses = () => {\r\n const classes = [dateExpiredClasses.root]\r\n if (this.state.numberOfDays < 1) classes.push(dateExpiredClasses.expired)\r\n return classes.join(' ')\r\n }\r\n\r\n getNumberOfDays = (): number => {\r\n if (this.mergeConfig.type === 'number') {\r\n return tryParseIntRequired(this.mergeConfig.defaulValue, this.defaultNumberOfDays)\r\n } else {\r\n return this.getDaysUntilDate(this.mergeConfig.defaulValue, this.defaultNumberOfDays)\r\n }\r\n }\r\n\r\n getOffsetDate = (num: number, formatString = defaultFormatString): string => {\r\n return dayjsCustom().add(num, 'day').format(formatString)\r\n }\r\n\r\n getDaysUntilDate = (value?: string, defaultValue = 0): number => {\r\n try {\r\n if (!value) return defaultValue\r\n const target = dayjsCustom(value)\r\n const today = dayjsCustom()\r\n const diff = target.diff(today, 'day', true)\r\n return Math.round(diff)\r\n } catch {\r\n return defaultValue\r\n }\r\n }\r\n }\r\n return DateExpired\r\n}\r\nexport default CreateDateExpired\r\n\r\nconst Wrap = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n position: 'relative',\r\n [`.${dateExpiredClasses.switch}`]: {\r\n margin: 0,\r\n flex: '0 0 auto'\r\n },\r\n [`.${dateExpiredClasses.label}`]: {\r\n b: {\r\n color: colors.blue[600],\r\n marginLeft: '8px'\r\n }\r\n },\r\n [`.${dateExpiredClasses.labelSwitch}`]: {\r\n fontWeight: 600,\r\n cursor: 'pointer'\r\n },\r\n [`.${dateExpiredClasses.control}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n [`.${dateExpiredClasses.input}`]: {\r\n '.MuiInputBase-input': {\r\n paddingRight: '160px'\r\n }\r\n },\r\n [`&.${dateExpiredClasses.expired}`]: {\r\n [`.${dateExpiredClasses.label}`]: {\r\n b: {\r\n color: colors.red[600]\r\n }\r\n }\r\n }\r\n})\r\n"],"names":["dateExpiredClasses","CreateDateExpired","params","DateExpired","props","_this$updateMergeConf","_this","_classCallCheck","_callSuper","_defineProperty","_this$props","messageErrors","name","onBlur","disabled","state","switchChecked","obj","fullWidth","className","label","_jsxs","children","_jsx","getOffsetDate","numberOfDays","variant","type","value","onChange","handleChange","_temp$message","temp","getErrorMessage","error","Boolean","helperText","message","mergeObjects","mergeConfig","textFieldProps","e","target","parseInt","setState","err","handleBlur","classes","push","join","tryParseIntRequired","defaulValue","defaultNumberOfDays","getDaysUntilDate","num","formatString","arguments","length","undefined","dayjsCustom","add","format","defaultValue","today","diff","Math","round","_unused","mergeConfigCached","updateMergeConfig","slots","getNumberOfDays","id","Date","getTime","toString","_inherits","Component","_createClass","key","get","this","prevProps","data","_this$props$name","_this2","LocalizationProvider","dateAdapter","AdapterDayjs","Wrap","getRootClasses","hidden","defaultValueInput","TextField","_objectSpread","mapTextFieldProps","Typography","component","htmlFor","sx","color","Switch","size","checked","_","switchProps","currentSlots","_data$name","_ref","switchCheckedGetter","_this$props2","dValue","check","styled","Box","display","alignItems","gap","position","concat","margin","flex","b","colors","blue","marginLeft","fontWeight","cursor","top","right","height","paddingRight","red"],"mappings":"+rBAQA,IAEMA,EACE,mBADFA,EAEK,sBAFLA,EAGG,oBAHHA,EAIK,sBAJLA,EAKS,0BALTA,EAMG,oBANHA,EAOI,qBA2BV,SAASC,EAAqBC,GAAkB,IACxCC,aAIJ,SAAAA,EAAYC,GAAgB,IAAAC,EAAAC,EAOe,OAPfC,OAAAJ,GAC1BG,EAAAE,EAAAL,KAAAA,GAAMC,IAAMK,EAAAH,EAAA,sBAJgB,IA4D9BG,EAAAH,EAAA,qBAEoB,WAClB,IAAAI,EAAwCJ,EAAKF,MAArCO,EAAaD,EAAbC,cAAeC,EAAIF,EAAJE,KAAMC,EAAMH,EAANG,OACvBC,EAAWR,EAAKF,MAAMU,WAAaR,EAAKS,MAAMC,cAC9CC,EAAsB,CAC1BC,WAAW,EACXC,UAAWnB,EACXoB,MACEC,EAAM,OAAA,CAAAF,UAAWnB,EAEdsB,SAAA,CAAA,cAAAhB,EAAKS,MAAMC,eAAiBO,EAAA,IAAA,CAAAD,SAAIhB,EAAKkB,cAAclB,EAAKS,MAAMU,mBAGnEC,QAAS,WACTC,KAAM,SACNb,SAAUA,EACVc,MAAOtB,EAAKS,MAAMC,cAAgBV,EAAKS,MAAMU,aAAe,EAC5DI,SAAUvB,EAAKwB,cAEjB,GAAMlB,EAAM,CACVK,EAAIJ,OAAS,WAAA,OAAMA,GAAUA,EAAOD,EAAK,EACzC,IACgBmB,EADVC,EAAOC,EAAgBtB,EAAeC,GAC5C,GAAIoB,EAAKE,MACPjB,EAAIiB,MAAQC,QAAQH,EAAKE,OACzBjB,EAAImB,WAAyBL,QAAfA,EAAGC,EAAKK,eAAON,IAAAA,EAAAA,EAAI,EAEpC,CACD,OAAOO,EAA6B,CAAA,EAAIrB,EAAKX,EAAKiC,YAAYC,mBAC/D/B,EAAAH,EAoBc,gBAAA,SAACmC,GACd,IAAMhB,EAAyC,IAAlBgB,EAAEC,OAAOd,MAAce,SAASF,EAAEC,OAAOd,OAAS,EAC/EtB,EAAKsC,SAAS,CAAEnB,aAAAA,IAAgB,WAC9B,IAAMoB,EAAMZ,EAAgB3B,EAAKF,MAAMO,cAAeL,EAAKF,MAAMQ,MAC7Da,EAAe,GAAKoB,EAAIX,OAAO5B,EAAKiC,YAAYO,YACtD,OACDrC,EAAAH,EAAA,kBAEgB,WACf,IAAMyC,EAAU,CAAC/C,GAEjB,OADIM,EAAKS,MAAMU,aAAe,GAAGsB,EAAQC,KAAKhD,GACvC+C,EAAQE,KAAK,QACrBxC,EAAAH,EAAA,mBAEiB,WAChB,MAA8B,WAA1BA,EAAKiC,YAAYZ,KACZuB,EAAoB5C,EAAKiC,YAAYY,YAAa7C,EAAK8C,qBAEvD9C,EAAK+C,iBAAiB/C,EAAKiC,YAAYY,YAAa7C,EAAK8C,wBAEnE3C,EAAAH,EAEe,iBAAA,SAACgD,GAA2D,IAA9CC,EAAYC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAzKlB,aA0KtB,OAAOG,IAAcC,IAAIN,EAAK,OAAOO,OAAON,MAC7C9C,EAAAH,EAEkB,oBAAA,SAACsB,GAA4C,IAA5BkC,EAAYN,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACjD,IACE,IAAK5B,EAAO,OAAOkC,EACnB,IAAMpB,EAASiB,EAAY/B,GACrBmC,EAAQJ,IACRK,EAAOtB,EAAOsB,KAAKD,EAAO,OAAO,GACvC,OAAOE,KAAKC,MAAMF,EACnB,CAAC,MAAAG,GACA,OAAOL,CACR,KA3IDxD,EAAK8D,kBAAuD/D,QAAtCA,EAAGC,EAAK+D,kBAAkBjE,EAAMkE,kBAAMjE,EAAAA,EAAI,CAAE,EAClEC,EAAKS,MAAQ,CACXU,aAAcnB,EAAKiE,kBACnBvD,cAAeV,EAAKiC,YAAYvB,eAElCV,EAAKkE,IAAK,IAAIC,MAAOC,UAAUC,WAAUrE,CAC3C,CAAC,OAAAsE,EAAAzE,EAZuB0E,GAYvBC,EAAA3E,EAAA,CAAA,CAAA4E,IAAA,cAAAC,IAED,WACE,OAAOC,KAAKb,iBACd,GAAC,CAAAW,IAAA,oBAAAC,IAED,WACE,MAA8B,WAA1BC,KAAK1C,YAAYZ,KACZsD,KAAKlE,MAAMU,aAEXwD,KAAKzD,cAAcyD,KAAKlE,MAAMU,aAAc,2BAEvD,GAAC,CAAAsD,IAAA,qBAAAnD,MAED,SAAmBsD,GACbA,EAAUZ,QAAUW,KAAK7E,MAAMkE,OAASY,EAAUC,OAASF,KAAK7E,MAAM+E,OACxEF,KAAKb,kBAAoBa,KAAKZ,kBAAkBY,KAAK7E,MAAMkE,OAE/D,GAEA,CAAAS,IAAA,SAAAnD,MACA,WAAM,IAAAwD,EAAAC,EAAAJ,KACJ,OACE1D,EAAC+D,GAAqBC,YAAaC,EACjClE,SAAAD,EAACoE,EAAI,CAACtE,UAAW8D,KAAKS,2BACpBnE,EAAoC,QAAA,CAAAI,KAAK,OAAOgE,QAAM,EAAC/E,KAAqB,QAAjBwE,EAAEH,KAAK7E,MAAMQ,YAAXwE,IAAeA,OAAfA,EAAAA,EAAiBT,WAAYb,aAAcmB,KAAKW,mBAAjGX,KAAKW,mBACjBrE,EAACsE,EAASC,KAAKb,KAAKc,sBACpB1E,EAAA,MAAA,CAAKF,UAAWnB,EAA0BsB,SAAA,CACxCC,EAACyE,EAAUF,EAAAA,EAAA,CACTpE,QAAQ,UACRP,UAAWnB,GACP,CAAEiG,UAAW,QAASC,QAASjB,KAAKT,KAAI,CAAA,EAAA,CAC5C2B,GAAI,CAAEC,MAAOnB,KAAKlE,MAAMC,cAAgB,eAAiB,WAAWM,SAEnE2D,KAAKlE,MAAMC,cAAgB,sBAAwB,mBAEtDO,EAAC8E,EAAMP,EAAA,CACLtB,GAAIS,KAAKT,GACT8B,KAAK,QACLF,MAAM,UACNG,QAAStB,KAAKlE,MAAMC,cACpBa,SAAU,SAAC2E,EAAGD,GAAO,OAAKlB,EAAKzC,SAAS,CAAE5B,cAAeuF,GAAU,GAC/DtB,KAAK1C,YAAYkE,qBAMjC,GAAC,CAAA1B,IAAA,oBAAAnD,MAgCD,SAAkB8E,GAAwB,IAAAC,EACxCC,EAA+CF,QAAAA,EAAgB,CAAE,EAAzD1F,EAAa4F,EAAb5F,cAAe6F,EAAmBD,EAAnBC,oBACjB5F,EAAMqB,EAAapC,EAAQwG,GACjCI,EAA6C7B,KAAK7E,MAA1C+E,EAAI2B,EAAJ3B,KAAMvE,EAAIkG,EAAJlG,KAAMC,EAAMiG,EAANjG,OAAQiD,EAAYgD,EAAZhD,aACtBiD,EAASjD,QAAAA,EAAmBqB,GAAUvE,EAAiB+F,QAAbA,EAAGxB,EAAKvE,UAAL+F,IAAUA,OAAVA,EAAAA,EAAYhC,gBAAajB,EACxEsD,IAAS7B,MAAiB4B,KAAY/F,GAE1C,OADI6F,IAAqBG,EAAQH,EAAoBE,EAAQ5B,IAC7DW,EAAAA,EAAA,CAAA,EACK7E,GAAG,CAAA,EAAA,CACND,cAAegG,EACf7D,YAAa4D,EACbjE,WAAY,WACLlC,GAASC,GACdA,EAAOD,EACT,GAEJ,IAAC,IAwCH,OAAOT,CACT,CAGA,IAAMsF,EAAOwB,EAAOC,EAAPD,CAAWxG,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CACtB0G,QAAS,OACTC,WAAY,SACZC,IAAK,OACLC,SAAU,YAAU,IAAAC,OACfvH,GAA8B,CACjCwH,OAAQ,EACRC,KAAM,iBACPF,OACIvH,GAA6B,CAChC0H,EAAG,CACDtB,MAAOuB,EAAOC,KAAK,KACnBC,WAAY,aAEfN,OACIvH,GAAmC,CACtC8H,WAAY,IACZC,OAAQ,gBACTR,OACIvH,GAA+B,CAClCsH,SAAU,WACVU,IAAK,EACLC,MAAO,EACPC,OAAQ,OACRf,QAAS,OACTC,WAAY,eACbG,OACIvH,GAA6B,CAChC,sBAAuB,CACrBmI,aAAc,WAEjBZ,KAAAA,OACKvH,GAA0BS,EAAA,CAAA,EAAA,IAAA8G,OACzBvH,GAA6B,CAChC0H,EAAG,CACDtB,MAAOuB,EAAOS,IAAI"}
1
+ {"version":3,"file":"create.date-expired.js","sources":["../../src/form/create.date-expired.tsx"],"sourcesContent":["import React, { Component } from 'react'\r\nimport { LocalizationProvider } from '@mui/x-date-pickers'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { Switch, Typography, TextField, styled, Box, TextFieldProps, SwitchProps, colors } from '@mui/material'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { dayjsCustom, mergeObjects, tryParseIntRequired } from '../utils'\r\n\r\nconst defaultFormatString = 'MM-DD-YYYY'\r\n\r\nconst dateExpiredClasses = {\r\n root: 'DateExpired-root',\r\n control: 'DateExpired-control',\r\n label: 'DateExpired-label',\r\n expired: 'DateExpired-expired',\r\n labelSwitch: 'DateExpired-labelSwitch',\r\n input: 'DateExpired-input',\r\n switch: 'DateExpired-switch'\r\n}\r\n\r\ninterface ISlots<T> {\r\n /** @default string */\r\n type?: 'number' | 'string'\r\n textFieldProps?: Partial<TextFieldProps>\r\n switchProps?: SwitchProps\r\n switchChecked?: boolean\r\n switchCheckedGetter?: (value: any, model?: Partial<T>) => boolean\r\n}\r\n\r\ninterface MergeConfig<T> extends ISlots<T> {\r\n switchChecked: boolean\r\n defaulValue?: string\r\n handleBlur: () => void\r\n}\r\n\r\ninterface IProps<T> extends IFormInputBase<T> {\r\n slots?: ISlots<T>\r\n}\r\n\r\ninterface IState {\r\n numberOfDays: number\r\n switchChecked: boolean\r\n}\r\n\r\nfunction CreateDateExpired<T>(params?: ISlots<T>): React.ComponentType<IProps<T>> {\r\n class DateExpired extends Component<IProps<T>, IState> {\r\n defaultNumberOfDays: number = 30\r\n private id\r\n private mergeConfigCached: MergeConfig<T>\r\n constructor(props: IProps<T>) {\r\n super(props)\r\n this.mergeConfigCached = this.updateMergeConfig(props.slots) ?? {}\r\n this.state = {\r\n numberOfDays: this.getNumberOfDays(),\r\n switchChecked: this.mergeConfig.switchChecked\r\n }\r\n this.id = new Date().getTime().toString()\r\n }\r\n\r\n get mergeConfig(): MergeConfig<T> {\r\n return this.mergeConfigCached\r\n }\r\n\r\n get defaultValueInput(): string | number {\r\n if (this.mergeConfig.type === 'number') {\r\n return this.state.numberOfDays\r\n } else {\r\n return this.getOffsetDate(this.state.numberOfDays, 'YYYY-MM-DDTHH:mm:ss.sssZ')\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: IProps<T>) {\r\n if (prevProps.slots !== this.props.slots || prevProps.data !== this.props.data) {\r\n this.mergeConfigCached = this.updateMergeConfig(this.props.slots)\r\n }\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <Wrap className={this.getRootClasses()}>\r\n <input key={this.defaultValueInput} type='text' hidden name={this.props.name?.toString()} defaultValue={this.defaultValueInput} />\r\n <TextField {...this.mapTextFieldProps()} />\r\n <div className={dateExpiredClasses.control}>\r\n <Typography\r\n variant='caption'\r\n className={dateExpiredClasses.labelSwitch}\r\n {...{ component: 'label', htmlFor: this.id }}\r\n sx={{ color: this.state.switchChecked ? 'success.main' : '#767676' }}\r\n >\r\n {this.state.switchChecked ? 'Use Expiration Date' : 'No Expiration'}\r\n </Typography>\r\n <Switch\r\n id={this.id}\r\n size='small'\r\n color='success'\r\n checked={this.state.switchChecked}\r\n onChange={(_, checked) => this.setState({ switchChecked: checked })}\r\n {...this.mergeConfig.switchProps}\r\n />\r\n </div>\r\n </Wrap>\r\n </LocalizationProvider>\r\n )\r\n }\r\n //#endregion\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const { messageErrors, name, onBlur } = this.props\r\n const disabled = this.props.disabled || !this.state.switchChecked\r\n const obj: TextFieldProps = {\r\n fullWidth: true,\r\n className: dateExpiredClasses.input,\r\n label: (\r\n <span className={dateExpiredClasses.label}>\r\n Expiry date\r\n {this.state.switchChecked && <b>{this.getOffsetDate(this.state.numberOfDays)}</b>}\r\n </span>\r\n ),\r\n variant: 'outlined',\r\n type: 'number',\r\n disabled: disabled,\r\n value: this.state.switchChecked ? this.state.numberOfDays : 0,\r\n onChange: this.handleChange\r\n }\r\n if (!!name) {\r\n obj.onBlur = () => onBlur && onBlur(name)\r\n const temp = getErrorMessage(messageErrors, name)\r\n if (temp.error) {\r\n obj.error = Boolean(temp.error)\r\n obj.helperText = temp.message ?? ''\r\n }\r\n }\r\n return mergeObjects<TextFieldProps>({}, obj, this.mergeConfig.textFieldProps)\r\n }\r\n\r\n updateMergeConfig(currentSlots?: ISlots<T>): MergeConfig<T> {\r\n const { switchChecked, switchCheckedGetter } = currentSlots ?? {}\r\n const obj = mergeObjects(params, currentSlots)\r\n const { data, name, onBlur, defaultValue } = this.props\r\n const dValue = defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n let check = !data ? false : !!dValue || !!switchChecked\r\n if (switchCheckedGetter) check = switchCheckedGetter(dValue, data)\r\n return {\r\n ...obj,\r\n switchChecked: check,\r\n defaulValue: dValue,\r\n handleBlur: () => {\r\n if (!name || !onBlur) return\r\n onBlur(name)\r\n }\r\n }\r\n }\r\n\r\n handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\r\n const numberOfDays: number = e.target.value != '' ? parseInt(e.target.value) : 0\r\n this.setState({ numberOfDays }, () => {\r\n const err = getErrorMessage(this.props.messageErrors, this.props.name)\r\n if (numberOfDays > 0 && err.error) this.mergeConfig.handleBlur()\r\n })\r\n }\r\n\r\n getRootClasses = () => {\r\n const classes = [dateExpiredClasses.root]\r\n if (this.state.numberOfDays < 1) classes.push(dateExpiredClasses.expired)\r\n return classes.join(' ')\r\n }\r\n\r\n getNumberOfDays = (): number => {\r\n if (this.mergeConfig.type === 'number') {\r\n return tryParseIntRequired(this.mergeConfig.defaulValue, this.defaultNumberOfDays)\r\n } else {\r\n return this.getDaysUntilDate(this.mergeConfig.defaulValue, this.defaultNumberOfDays)\r\n }\r\n }\r\n\r\n getOffsetDate = (num: number, formatString = defaultFormatString): string => {\r\n return dayjsCustom().add(num, 'day').format(formatString)\r\n }\r\n\r\n getDaysUntilDate = (value?: string, defaultValue = 0): number => {\r\n try {\r\n if (!value) return defaultValue\r\n const target = dayjsCustom(value)\r\n const today = dayjsCustom()\r\n const diff = target.diff(today, 'day', true)\r\n return Math.round(diff)\r\n } catch {\r\n return defaultValue\r\n }\r\n }\r\n }\r\n return DateExpired\r\n}\r\nexport default CreateDateExpired\r\n\r\nconst Wrap = styled(Box)({\r\n display: 'flex',\r\n alignItems: 'center',\r\n gap: '10px',\r\n position: 'relative',\r\n [`.${dateExpiredClasses.switch}`]: {\r\n margin: 0,\r\n flex: '0 0 auto'\r\n },\r\n [`.${dateExpiredClasses.label}`]: {\r\n b: {\r\n color: colors.blue[600],\r\n marginLeft: '8px'\r\n }\r\n },\r\n [`.${dateExpiredClasses.labelSwitch}`]: {\r\n fontWeight: 600,\r\n cursor: 'pointer'\r\n },\r\n [`.${dateExpiredClasses.control}`]: {\r\n position: 'absolute',\r\n top: 0,\r\n right: 0,\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n [`.${dateExpiredClasses.input}`]: {\r\n '.MuiInputBase-input': {\r\n paddingRight: '160px'\r\n }\r\n },\r\n [`&.${dateExpiredClasses.expired}`]: {\r\n [`.${dateExpiredClasses.label}`]: {\r\n b: {\r\n color: colors.red[600]\r\n }\r\n }\r\n }\r\n})\r\n"],"names":["dateExpiredClasses","CreateDateExpired","params","DateExpired","props","_this$updateMergeConf","_this","_classCallCheck","_callSuper","_defineProperty","_this$props","messageErrors","name","onBlur","disabled","state","switchChecked","obj","fullWidth","className","label","_jsxs","children","_jsx","getOffsetDate","numberOfDays","variant","type","value","onChange","handleChange","_temp$message","temp","getErrorMessage","error","Boolean","helperText","message","mergeObjects","mergeConfig","textFieldProps","e","target","parseInt","setState","err","handleBlur","classes","push","join","tryParseIntRequired","defaulValue","defaultNumberOfDays","getDaysUntilDate","num","formatString","arguments","length","undefined","dayjsCustom","add","format","defaultValue","today","diff","Math","round","_unused","mergeConfigCached","updateMergeConfig","slots","getNumberOfDays","id","Date","getTime","toString","_inherits","Component","_createClass","key","get","this","prevProps","data","_this$props$name","_this2","LocalizationProvider","dateAdapter","AdapterDayjs","Wrap","getRootClasses","hidden","defaultValueInput","TextField","_objectSpread","mapTextFieldProps","Typography","component","htmlFor","sx","color","Switch","size","checked","_","switchProps","currentSlots","_data$name","_ref","switchCheckedGetter","_this$props2","dValue","check","styled","Box","display","alignItems","gap","position","concat","margin","flex","b","colors","blue","marginLeft","fontWeight","cursor","top","right","height","paddingRight","red"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as t,createClass as e,classCallCheck as r,callSuper as o,defineProperty as a,objectSpread2 as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as n}from"react/jsx-runtime";import{Component as i}from"react";import{styled as u}from"@mui/material";import{AdapterDayjs as p}from"@mui/x-date-pickers/AdapterDayjs";import{DatePicker as d,LocalizationProvider as m}from"@mui/x-date-pickers";import{getErrorMessage as f}from"./helpers.js";import{mergeObjects as c}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import v from"dayjs";var h=function(u){return function(){function d(t){var e,l;return r(this,d),l=o(this,d,[t]),a(l,"_cachedSlots",{}),a(l,"getDatePickerProps",(function(){var t,e,r,o,a,s=null!==(t=null==u?void 0:u.minDateOffset)&&void 0!==t?t:0,n=s>0?v().add(s,"day").startOf("day"):null==u?void 0:u.minDate,i=null!==(e=l.props.label)&&void 0!==e?e:null===(r=l.props.name)||void 0===r?void 0:r.toString(),p=null!==(o=l.props.format)&&void 0!==o?o:"MM/DD/YYYY",d=f(l.props.messageErrors,l.props.name),m={label:i,format:p,views:["day","month","year"],value:l.state.value,onChange:l.handleChange,disabled:l.props.disabled,minDate:n,slotProps:{textField:{onBlur:l.handleBlur,fullWidth:!0,error:d.error,helperText:d.message,variant:"outlined"}}};return c(m,null==u?void 0:u.datePickerProps,null===(a=l.slots)||void 0===a?void 0:a.datePickerProps)})),a(l,"refInput",null),a(l,"mergeSlots",(function(t){return c({},u,t)})),a(l,"handleBlur",(function(){l.props.name&&l.props.onBlur&&l.props.onBlur(l.props.name)})),a(l,"handleChange",(function(t){l.setState({value:t}),l.refInput&&(l.refInput.value=t&&!isNaN(t.toDate().getTime())?t.toDate().toISOString():""),setTimeout(l.handleBlur,50)})),a(l,"getDefaultValue",(function(){try{var t,e;if(!l.props.defaultValue&&!l.slots.defaultValue&&l.slots.minDateOffset)return v().add(1,"day").startOf("day");if(!l.props.defaultValue&&l.slots.minDate)return l.slots.minDate;var r=l.props,o=r.data,a=r.name,s=null!==(t=null!==(e=l.props.defaultValue)&&void 0!==e?e:l.slots.defaultValue)&&void 0!==t?t:a?null==o?void 0:o[a]:"";return s?v(s.toString()):v()}catch(t){return v()}})),l._cachedSlots=null!==(e=l.mergeSlots(t.slots))&&void 0!==e?e:{},l.state={value:l.getDefaultValue()},l}return t(d,i),e(d,[{key:"slots",get:function(){return this._cachedSlots}},{key:"componentDidUpdate",value:function(t){t.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"render",value:function(){var t,e,r=this;return s(m,{dateAdapter:p,children:[n(g,l({},this.getDatePickerProps())),n("input",{hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:null===(e=this.getDefaultValue())||void 0===e?void 0:e.toDate().toISOString(),ref:function(t){return r.refInput=t}})]})}}])}()},g=u(d)({"& .MuiInputBase-root::before, & .MuiInputBase-root::after":{borderBottom:"none !important"}});export{h as default};
1
+ import{inherits as t,createClass as e,objectSpread2 as r,classCallCheck as o,callSuper as a,defineProperty as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as s,jsx as n}from"react/jsx-runtime";import{Component as i}from"react";import{styled as u}from"@mui/material";import{AdapterDayjs as p}from"@mui/x-date-pickers/AdapterDayjs";import{DatePicker as d,LocalizationProvider as m}from"@mui/x-date-pickers";import{getErrorMessage as f}from"./helpers.js";import{mergeObjects as c}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import v from"dayjs";var h=function(u){return function(){function d(t){var e,r;return o(this,d),r=a(this,d,[t]),l(r,"_cachedSlots",{}),l(r,"getDatePickerProps",(function(){var t,e,o,a,l,s=null!==(t=null==u?void 0:u.minDateOffset)&&void 0!==t?t:0,n=s>0?v().add(s,"day").startOf("day"):null==u?void 0:u.minDate,i=null!==(e=r.props.label)&&void 0!==e?e:null===(o=r.props.name)||void 0===o?void 0:o.toString(),p=null!==(a=r.props.format)&&void 0!==a?a:"MM/DD/YYYY",d=f(r.props.messageErrors,r.props.name),m={label:i,format:p,views:["day","month","year"],value:r.state.value,onChange:r.handleChange,disabled:r.props.disabled,minDate:n,slotProps:{textField:{onBlur:r.handleBlur,fullWidth:!0,error:d.error,helperText:d.message,variant:"outlined"}}};return c(m,null==u?void 0:u.datePickerProps,null===(l=r.slots)||void 0===l?void 0:l.datePickerProps)})),l(r,"refInput",null),l(r,"mergeSlots",(function(t){return c({},u,t)})),l(r,"handleBlur",(function(){r.props.name&&r.props.onBlur&&r.props.onBlur(r.props.name)})),l(r,"handleChange",(function(t){r.setState({value:t}),r.refInput&&(r.refInput.value=t&&!isNaN(t.toDate().getTime())?t.toDate().toISOString():""),setTimeout(r.handleBlur,50)})),l(r,"getDefaultValue",(function(){try{var t,e;if(!r.props.defaultValue&&!r.slots.defaultValue&&r.slots.minDateOffset)return v().add(1,"day").startOf("day");if(!r.props.defaultValue&&r.slots.minDate)return r.slots.minDate;var o=r.props,a=o.data,l=o.name,s=null!==(t=null!==(e=r.props.defaultValue)&&void 0!==e?e:r.slots.defaultValue)&&void 0!==t?t:l?null==a?void 0:a[l]:"";return s?v(s.toString()):v()}catch(t){return v()}})),r._cachedSlots=null!==(e=r.mergeSlots(t.slots))&&void 0!==e?e:{},r.state={value:r.getDefaultValue()},r}return t(d,i),e(d,[{key:"slots",get:function(){return this._cachedSlots}},{key:"componentDidUpdate",value:function(t){t.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"render",value:function(){var t,e,o=this;return s(m,{dateAdapter:p,children:[n(g,r({},this.getDatePickerProps())),n("input",{hidden:!0,name:null===(t=this.props.name)||void 0===t?void 0:t.toString(),defaultValue:null===(e=this.getDefaultValue())||void 0===e?void 0:e.toDate().toISOString(),ref:function(t){return o.refInput=t}})]})}}])}()},g=u(d)({"& .MuiInputBase-root::before, & .MuiInputBase-root::after":{borderBottom:"none !important"}});export{h as default};
2
2
  //# sourceMappingURL=create.date-picker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.date-picker.js","sources":["../../src/form/create.date-picker.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Dayjs } from 'dayjs'\r\nimport { styled } from '@mui/material'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { DatePicker as MUIDatePicker, LocalizationProvider, DatePickerProps } from '@mui/x-date-pickers'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { dayjsCustom, mergeObjects } from '../utils'\r\n\r\nconst formatDefault = 'MM/DD/YYYY'\r\n\r\nexport interface IDatePickerSlots {\r\n defaultValue?: string\r\n minDate?: Dayjs\r\n minDateOffset?: number\r\n datePickerProps?: DatePickerProps<Dayjs>\r\n}\r\n\r\nexport interface IDatePickerProps<T> extends IFormInputBase<T> {\r\n format?: string\r\n slots?: Omit<IDatePickerSlots, 'defaultValue'>\r\n}\r\n\r\nexport interface IDatePickerState {\r\n value: Dayjs | null\r\n}\r\n\r\nconst CreateDatePicker = function <T extends Object>(params?: IDatePickerSlots): ComponentType<IDatePickerProps<T>> {\r\n class DatePicker extends Component<IDatePickerProps<T>, IDatePickerState> {\r\n private _cachedSlots: IDatePickerSlots = {}\r\n constructor(props: IDatePickerProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.getDefaultValue() }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n componentDidUpdate(prevProps: IDatePickerProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n getDatePickerProps = (): DatePickerProps<Dayjs> => {\r\n const delayInDays = params?.minDateOffset ?? 0\r\n const minDate = delayInDays > 0 ? dayjsCustom().add(delayInDays, 'day').startOf('day') : params?.minDate\r\n const label = this.props.label ?? this.props.name?.toString()\r\n const format = this.props.format ?? formatDefault\r\n const eMessage = getErrorMessage<T>(this.props.messageErrors, this.props.name)\r\n const obj: DatePickerProps<Dayjs> = {\r\n label,\r\n format,\r\n views: ['day', 'month', 'year'],\r\n value: this.state.value,\r\n onChange: this.handleChange,\r\n disabled: this.props.disabled,\r\n minDate,\r\n slotProps: {\r\n textField: { onBlur: this.handleBlur, fullWidth: true, error: eMessage.error, helperText: eMessage.message, variant: 'outlined' }\r\n }\r\n }\r\n return mergeObjects(obj, params?.datePickerProps, this.slots?.datePickerProps)\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <CustomDatePicker {...this.getDatePickerProps()} />\r\n <input\r\n hidden\r\n name={this.props.name?.toString()}\r\n defaultValue={this.getDefaultValue()?.toDate().toISOString()}\r\n ref={(ref) => (this.refInput = ref)}\r\n />\r\n </LocalizationProvider>\r\n )\r\n }\r\n\r\n private mergeSlots = (currentSlots?: IDatePickerSlots): IDatePickerSlots => {\r\n return mergeObjects<IDatePickerSlots>({}, params, currentSlots)\r\n }\r\n\r\n handleBlur = () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n handleChange = (newValue: Dayjs | null) => {\r\n this.setState({ value: newValue })\r\n if (this.refInput) {\r\n this.refInput.value = newValue && !isNaN(newValue.toDate().getTime()) ? newValue.toDate().toISOString() : ''\r\n }\r\n setTimeout(this.handleBlur, 50)\r\n }\r\n\r\n getDefaultValue = (): Dayjs => {\r\n try {\r\n if (!this.props.defaultValue && !this.slots.defaultValue && this.slots.minDateOffset) return dayjsCustom().add(1, 'day').startOf('day')\r\n if (!this.props.defaultValue && this.slots.minDate) return this.slots.minDate\r\n\r\n const { data, name } = this.props\r\n const dValue = this.props.defaultValue ?? this.slots.defaultValue ?? (name ? data?.[name] : '')\r\n return dValue ? dayjsCustom(dValue.toString()) : dayjsCustom()\r\n } catch {\r\n return dayjsCustom()\r\n }\r\n }\r\n }\r\n return DatePicker\r\n}\r\n\r\nexport default CreateDatePicker\r\n\r\nconst CustomDatePicker = styled(MUIDatePicker<Dayjs>)({\r\n '& .MuiInputBase-root::before, & .MuiInputBase-root::after': {\r\n borderBottom: 'none !important'\r\n }\r\n})\r\n"],"names":["CreateDatePicker","params","DatePicker","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_params$minDateOffset","_this$props$label","_this$props$name","_this$props$format","_this$slots","delayInDays","minDateOffset","minDate","dayjsCustom","add","startOf","label","name","toString","format","eMessage","getErrorMessage","messageErrors","obj","views","value","state","onChange","handleChange","disabled","slotProps","textField","onBlur","handleBlur","fullWidth","error","helperText","message","variant","mergeObjects","datePickerProps","slots","currentSlots","newValue","setState","refInput","isNaN","toDate","getTime","toISOString","setTimeout","_ref","_this$props$defaultVa","defaultValue","_this$props","data","dValue","_unused","_cachedSlots","mergeSlots","getDefaultValue","_inherits","Component","_createClass","key","get","this","prevProps","_this$props$name2","_this$getDefaultValue","_this2","_jsxs","LocalizationProvider","dateAdapter","AdapterDayjs","children","_jsx","CustomDatePicker","_objectSpread","getDatePickerProps","hidden","ref","styled","MUIDatePicker","borderBottom"],"mappings":"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"}
1
+ {"version":3,"file":"create.date-picker.js","sources":["../../src/form/create.date-picker.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Dayjs } from 'dayjs'\r\nimport { styled } from '@mui/material'\r\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'\r\nimport { DatePicker as MUIDatePicker, LocalizationProvider, DatePickerProps } from '@mui/x-date-pickers'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { dayjsCustom, mergeObjects } from '../utils'\r\n\r\nconst formatDefault = 'MM/DD/YYYY'\r\n\r\nexport interface IDatePickerSlots {\r\n defaultValue?: string\r\n minDate?: Dayjs\r\n minDateOffset?: number\r\n datePickerProps?: DatePickerProps<Dayjs>\r\n}\r\n\r\nexport interface IDatePickerProps<T> extends IFormInputBase<T> {\r\n format?: string\r\n slots?: Omit<IDatePickerSlots, 'defaultValue'>\r\n}\r\n\r\nexport interface IDatePickerState {\r\n value: Dayjs | null\r\n}\r\n\r\nconst CreateDatePicker = function <T extends Object>(params?: IDatePickerSlots): ComponentType<IDatePickerProps<T>> {\r\n class DatePicker extends Component<IDatePickerProps<T>, IDatePickerState> {\r\n private _cachedSlots: IDatePickerSlots = {}\r\n constructor(props: IDatePickerProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.getDefaultValue() }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n componentDidUpdate(prevProps: IDatePickerProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n getDatePickerProps = (): DatePickerProps<Dayjs> => {\r\n const delayInDays = params?.minDateOffset ?? 0\r\n const minDate = delayInDays > 0 ? dayjsCustom().add(delayInDays, 'day').startOf('day') : params?.minDate\r\n const label = this.props.label ?? this.props.name?.toString()\r\n const format = this.props.format ?? formatDefault\r\n const eMessage = getErrorMessage<T>(this.props.messageErrors, this.props.name)\r\n const obj: DatePickerProps<Dayjs> = {\r\n label,\r\n format,\r\n views: ['day', 'month', 'year'],\r\n value: this.state.value,\r\n onChange: this.handleChange,\r\n disabled: this.props.disabled,\r\n minDate,\r\n slotProps: {\r\n textField: { onBlur: this.handleBlur, fullWidth: true, error: eMessage.error, helperText: eMessage.message, variant: 'outlined' }\r\n }\r\n }\r\n return mergeObjects(obj, params?.datePickerProps, this.slots?.datePickerProps)\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterDayjs}>\r\n <CustomDatePicker {...this.getDatePickerProps()} />\r\n <input\r\n hidden\r\n name={this.props.name?.toString()}\r\n defaultValue={this.getDefaultValue()?.toDate().toISOString()}\r\n ref={(ref) => (this.refInput = ref)}\r\n />\r\n </LocalizationProvider>\r\n )\r\n }\r\n\r\n private mergeSlots = (currentSlots?: IDatePickerSlots): IDatePickerSlots => {\r\n return mergeObjects<IDatePickerSlots>({}, params, currentSlots)\r\n }\r\n\r\n handleBlur = () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n }\r\n\r\n handleChange = (newValue: Dayjs | null) => {\r\n this.setState({ value: newValue })\r\n if (this.refInput) {\r\n this.refInput.value = newValue && !isNaN(newValue.toDate().getTime()) ? newValue.toDate().toISOString() : ''\r\n }\r\n setTimeout(this.handleBlur, 50)\r\n }\r\n\r\n getDefaultValue = (): Dayjs => {\r\n try {\r\n if (!this.props.defaultValue && !this.slots.defaultValue && this.slots.minDateOffset) return dayjsCustom().add(1, 'day').startOf('day')\r\n if (!this.props.defaultValue && this.slots.minDate) return this.slots.minDate\r\n\r\n const { data, name } = this.props\r\n const dValue = this.props.defaultValue ?? this.slots.defaultValue ?? (name ? data?.[name] : '')\r\n return dValue ? dayjsCustom(dValue.toString()) : dayjsCustom()\r\n } catch {\r\n return dayjsCustom()\r\n }\r\n }\r\n }\r\n return DatePicker\r\n}\r\n\r\nexport default CreateDatePicker\r\n\r\nconst CustomDatePicker = styled(MUIDatePicker<Dayjs>)({\r\n '& .MuiInputBase-root::before, & .MuiInputBase-root::after': {\r\n borderBottom: 'none !important'\r\n }\r\n})\r\n"],"names":["CreateDatePicker","params","DatePicker","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_params$minDateOffset","_this$props$label","_this$props$name","_this$props$format","_this$slots","delayInDays","minDateOffset","minDate","dayjsCustom","add","startOf","label","name","toString","format","eMessage","getErrorMessage","messageErrors","obj","views","value","state","onChange","handleChange","disabled","slotProps","textField","onBlur","handleBlur","fullWidth","error","helperText","message","variant","mergeObjects","datePickerProps","slots","currentSlots","newValue","setState","refInput","isNaN","toDate","getTime","toISOString","setTimeout","_ref","_this$props$defaultVa","defaultValue","_this$props","data","dValue","_unused","_cachedSlots","mergeSlots","getDefaultValue","_inherits","Component","_createClass","key","get","this","prevProps","_this$props$name2","_this$getDefaultValue","_this2","_jsxs","LocalizationProvider","dateAdapter","AdapterDayjs","children","_jsx","CustomDatePicker","_objectSpread","getDatePickerProps","hidden","ref","styled","MUIDatePicker","borderBottom"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as r,createClass as t,classCallCheck as e,callSuper as n,defineProperty as o,asyncToGenerator as i,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as s}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,Button as p,Box as d,Card as f,DialogTitle as m,DialogContent as h,DialogActions as v}from"@mui/material";import{fetchDelay as g}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 C}from"../api-context/global-modal.js";var x=function(u){var p=function(){function p(r){var t;return e(this,p),t=n(this,p,[r]),o(t,"handleClickNo",(function(r){r.close(),t.props.onCancel&&t.props.onCancel()})),o(t,"handleClickYes",function(){var r=i(l().m((function r(e){var n;return l().w((function(r){for(;;)switch(r.n){case 0:if(t.props.onSubmit){r.n=1;break}return r.a(2);case 1:return r.p=1,t.setState({loading:!0}),r.n=2,g((function(){return t.props.onSubmit(t.props.data)}),700);case 2:e.close(),r.n=4;break;case 3:r.p=3,n=r.v,console.log(n);case 4:return r.p=4,t.setState({loading:!1}),r.f(4);case 5:return r.a(2)}}),r,null,[[1,3,4,5]])})));return function(t){return r.apply(this,arguments)}}()),t.state={loading:!1},t}return r(p,c),t(p,[{key:"render",value:function(){var r,t,e=this,n=this.props.children||(null!=u&&u.content?null==u?void 0:u.content(this.props.data):void 0),o=null!==(r=null!==(t=this.props.title)&&void 0!==t?t:null==u?void 0:u.title)&&void 0!==r?r:"Are you sure?";return a(d,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:C((function(r){var t,i;return s(f,{children:[a(m,{id:"alert-dialog-title",children:o}),a(h,{sx:{minWidth:"300px"},children:n}),s(v,{children:[a(b,{disabled:e.state.loading,color:(null==u||null===(t=u.colors)||void 0===t?void 0:t.no)||"inherit",onClick:function(){return e.handleClickNo(r)},children:"No"}),a(b,{color:(null==u||null===(i=u.colors)||void 0===i?void 0:i.yes)||"error",disabled:e.state.loading,onClick:function(){return e.handleClickYes(r)},children:"Yes"})]})]})}))})}}])}();return p},b=u(p)({textTransform:"capitalize",fontWeight:600,"&.MuiButton-colorInherit":{color:"#606060!important"}});export{x as default};
1
+ import{inherits as r,createClass as n,classCallCheck as t,callSuper as e,defineProperty as o,asyncToGenerator as i,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as s}from"react/jsx-runtime";import{Component as c}from"react";import{styled as u,Button as d,Box as p,Card as f,DialogTitle as h,DialogContent as m,DialogActions as v}from"@mui/material";import{fetchDelay as g}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{mapGlobalModalContext as C}from"../api-context/global-modal.js";var k=function(u){var d=function(){function d(r){var n;return t(this,d),n=e(this,d,[r]),o(n,"handleClickNo",(function(r){r.close(),n.props.onCancel&&n.props.onCancel()})),o(n,"handleClickYes",function(){var r=i(l().m((function r(t){var e;return l().w((function(r){for(;;)switch(r.n){case 0:if(n.props.onSubmit){r.n=1;break}return r.a(2);case 1:return r.p=1,n.setState({loading:!0}),r.n=2,g((function(){return n.props.onSubmit(n.props.data)}),700);case 2:t.close(),r.n=4;break;case 3:r.p=3,e=r.v,console.log(e);case 4:return r.p=4,n.setState({loading:!1}),r.f(4);case 5:return r.a(2)}}),r,null,[[1,3,4,5]])})));return function(n){return r.apply(this,arguments)}}()),n.state={loading:!1},n}return r(d,c),n(d,[{key:"render",value:function(){var r,n,t=this,e=this.props.children||(null!=u&&u.content?null==u?void 0:u.content(this.props.data):void 0),o=null!==(r=null!==(n=this.props.title)&&void 0!==n?n:null==u?void 0:u.title)&&void 0!==r?r:"Are you sure?";return a(p,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"center"},children:C((function(r){var n,i;return s(f,{children:[a(h,{id:"alert-dialog-title",children:o}),a(m,{sx:{minWidth:"300px"},children:e}),s(v,{children:[a(y,{disabled:t.state.loading,color:(null==u||null===(n=u.colors)||void 0===n?void 0:n.no)||"inherit",onClick:function(){return t.handleClickNo(r)},children:"No"}),a(y,{color:(null==u||null===(i=u.colors)||void 0===i?void 0:i.yes)||"error",disabled:t.state.loading,onClick:function(){return t.handleClickYes(r)},children:"Yes"})]})]})}))})}}])}();return d},y=u(d)({textTransform:"capitalize",fontWeight:600,"&.MuiButton-colorInherit":{color:"#606060!important"}});export{k as default};
2
2
  //# sourceMappingURL=create.form-comfirm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.form-comfirm.js","sources":["../../src/form/create.form-comfirm.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, Button, Card, DialogActions, DialogContent, DialogTitle, styled } from '@mui/material'\r\nimport { fetchDelay } from '../utils'\r\nimport { IGlobalModalContext, mapGlobalModalContext } from '../api-context'\r\n\r\nexport interface IFormComfirmParam<T> {\r\n title?: string\r\n content: (value?: T) => JSX.Element\r\n colors?: {\r\n yes?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n no?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n }\r\n}\r\n\r\nexport interface IFormComfirmProps<T> {\r\n data?: T\r\n title?: string\r\n onSubmit: (value?: T) => Promise<void>\r\n onCancel?: () => void\r\n}\r\n\r\nexport interface IFormComfirmState {\r\n loading?: boolean\r\n}\r\n\r\nconst CreateFormComfirm = function <T = any>(param?: IFormComfirmParam<T>): ComponentType<React.PropsWithChildren<IFormComfirmProps<T>>> {\r\n class FormConfirm extends Component<React.PropsWithChildren<IFormComfirmProps<T>>, IFormComfirmState> {\r\n constructor(props: IFormComfirmProps<T>) {\r\n super(props)\r\n this.state = { loading: false }\r\n }\r\n\r\n render() {\r\n const content = this.props.children || (param?.content ? param?.content(this.props.data) : undefined)\r\n const title = this.props.title ?? param?.title ?? 'Are you sure?'\r\n return (\r\n <Box sx={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n {mapGlobalModalContext((context) => (\r\n <Card>\r\n <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>\r\n <DialogContent sx={{ minWidth: '300px' }}>{content}</DialogContent>\r\n <DialogActions>\r\n <CustomButton disabled={this.state.loading} color={param?.colors?.no || 'inherit'} onClick={() => this.handleClickNo(context)}>\r\n No\r\n </CustomButton>\r\n <CustomButton color={param?.colors?.yes || 'error'} disabled={this.state.loading} onClick={() => this.handleClickYes(context)}>\r\n Yes\r\n </CustomButton>\r\n </DialogActions>\r\n </Card>\r\n ))}\r\n </Box>\r\n )\r\n }\r\n\r\n handleClickNo = (context: IGlobalModalContext) => {\r\n context.close()\r\n this.props.onCancel && this.props.onCancel()\r\n }\r\n\r\n handleClickYes = async (context: IGlobalModalContext) => {\r\n if (!this.props.onSubmit) return\r\n try {\r\n this.setState({ loading: true })\r\n await fetchDelay(() => this.props.onSubmit(this.props.data), 700)\r\n context.close()\r\n } catch (error) {\r\n console.log(error)\r\n } finally {\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n return FormConfirm\r\n}\r\nexport default CreateFormComfirm\r\n\r\nconst CustomButton = styled(Button)({\r\n textTransform: 'capitalize',\r\n fontWeight: 600,\r\n '&.MuiButton-colorInherit': {\r\n color: '#606060!important'\r\n }\r\n})\r\n"],"names":["CreateFormComfirm","param","FormConfirm","props","_this","_classCallCheck","_callSuper","_defineProperty","context","close","onCancel","_ref","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","n","onSubmit","a","p","setState","loading","fetchDelay","data","v","console","log","f","_x","apply","this","arguments","state","_inherits","Component","_createClass","key","value","_ref2","_this$props$title","_this2","content","children","undefined","title","_jsx","Box","sx","flex","display","alignItems","justifyContent","mapGlobalModalContext","_param$colors","_param$colors2","_jsxs","Card","DialogTitle","id","DialogContent","minWidth","DialogActions","CustomButton","disabled","color","colors","no","onClick","handleClickNo","yes","handleClickYes","styled","Button","textTransform","fontWeight"],"mappings":"qqBAyBA,IAAMA,EAAoB,SAAmBC,GAA4B,IACjEC,aACJ,SAAAA,EAAYC,GAA2B,IAAAC,EAEN,OAFMC,OAAAH,GACrCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA2BE,iBAAA,SAACI,GACfA,EAAQC,QACRL,EAAKD,MAAMO,UAAYN,EAAKD,MAAMO,cACnCH,EAAAH,EAAA,iBAAA,WAAA,IAAAO,EAAAC,EAAAC,IAAAC,GAEgB,SAAAC,EAAOP,GAA4B,IAAAQ,EAAA,OAAAH,IAAAI,GAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,GAC7Cf,EAAKD,MAAMiB,SAAQ,CAAAF,EAAAC,EAAA,EAAA,KAAA,CAAA,OAAAD,EAAAG,EAAA,GAAA,KAAA,EAEU,OAFVH,EAAAI,EAAA,EAEtBlB,EAAKmB,SAAS,CAAEC,SAAS,IAAON,EAAAC,EAAA,EAC1BM,GAAW,WAAA,OAAMrB,EAAKD,MAAMiB,SAAShB,EAAKD,MAAMuB,KAAK,GAAE,KAAI,KAAA,EACjElB,EAAQC,QAAOS,EAAAC,EAAA,EAAA,MAAA,KAAA,EAAAD,EAAAI,EAAA,EAAAN,EAAAE,EAAAS,EAEfC,QAAQC,IAAGb,GAAO,KAAA,EAEe,OAFfE,EAAAI,EAAA,EAElBlB,EAAKmB,SAAS,CAAEC,SAAS,IAAQN,EAAAY,EAAA,GAAA,KAAA,EAAA,OAAAZ,EAAAG,EAAA,GAAA,GAAAN,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,SAEpC,OAAA,SAAAgB,GAAA,OAAApB,EAAAqB,MAAAC,KAAAC,UAAA,CAAA,CAbA,IA7BC9B,EAAK+B,MAAQ,CAAEX,SAAS,GAAOpB,CACjC,CAAC,OAAAgC,EAAAlC,EAJuBmC,GAIvBC,EAAApC,EAAA,CAAA,CAAAqC,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,EAAAC,EAAAV,KACEW,EAAUX,KAAK9B,MAAM0C,WAAa5C,SAAAA,EAAO2C,QAAU3C,aAAK,EAALA,EAAO2C,QAAQX,KAAK9B,MAAMuB,WAAQoB,GACrFC,EAAwC,QAAnCN,EAAmB,QAAnBC,EAAGT,KAAK9B,MAAM4C,aAAK,IAAAL,EAAAA,EAAIzC,aAAK,EAALA,EAAO8C,aAAK,IAAAN,EAAAA,EAAI,gBAClD,OACEO,EAACC,EAAG,CAACC,GAAI,CAAEC,KAAM,EAAGC,QAAS,OAAQC,WAAY,SAAUC,eAAgB,UACxET,SAAAU,GAAsB,SAAC/C,GAAO,IAAAgD,EAAAC,EAAA,OAC7BC,EAACC,EACC,CAAAd,SAAA,CAAAG,EAACY,EAAW,CAACC,GAAG,qBAAoBhB,SAAEE,IACtCC,EAACc,EAAc,CAAAZ,GAAI,CAAEa,SAAU,kBAAYnB,IAC3Cc,EAACM,EAAa,CAAAnB,SAAA,CACZG,EAACiB,GAAaC,SAAUvB,EAAKR,MAAMX,QAAS2C,OAAOlE,iBAAKuD,EAALvD,EAAOmE,cAAM,IAAAZ,OAAA,EAAbA,EAAea,KAAM,UAAWC,QAAS,WAAF,OAAQ3B,EAAK4B,cAAc/D,EAAQ,EAAAqC,SAAA,OAG7HG,EAACiB,EAAY,CAACE,OAAOlE,iBAAKwD,EAALxD,EAAOmE,cAAM,IAAAX,OAAA,EAAbA,EAAee,MAAO,QAASN,SAAUvB,EAAKR,MAAMX,QAAS8C,QAAS,WAAF,OAAQ3B,EAAK8B,eAAejE,EAAQ,EAE9GqC,SAAA,aAGpB,KAGP,IAAC,IAoBH,OAAO3C,CACT,EAGM+D,EAAeS,EAAOC,EAAPD,CAAe,CAClCE,cAAe,aACfC,WAAY,IACZ,2BAA4B,CAC1BV,MAAO"}
1
+ {"version":3,"file":"create.form-comfirm.js","sources":["../../src/form/create.form-comfirm.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, Button, Card, DialogActions, DialogContent, DialogTitle, styled } from '@mui/material'\r\nimport { fetchDelay } from '../utils'\r\nimport { IGlobalModalContext, mapGlobalModalContext } from '../api-context'\r\n\r\nexport interface IFormComfirmParam<T> {\r\n title?: string\r\n content: (value?: T) => JSX.Element\r\n colors?: {\r\n yes?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n no?: 'inherit' | 'error' | 'primary' | 'secondary' | 'success' | 'info' | 'warning'\r\n }\r\n}\r\n\r\nexport interface IFormComfirmProps<T> {\r\n data?: T\r\n title?: string\r\n onSubmit: (value?: T) => Promise<void>\r\n onCancel?: () => void\r\n}\r\n\r\nexport interface IFormComfirmState {\r\n loading?: boolean\r\n}\r\n\r\nconst CreateFormComfirm = function <T = any>(param?: IFormComfirmParam<T>): ComponentType<React.PropsWithChildren<IFormComfirmProps<T>>> {\r\n class FormConfirm extends Component<React.PropsWithChildren<IFormComfirmProps<T>>, IFormComfirmState> {\r\n constructor(props: IFormComfirmProps<T>) {\r\n super(props)\r\n this.state = { loading: false }\r\n }\r\n\r\n render() {\r\n const content = this.props.children || (param?.content ? param?.content(this.props.data) : undefined)\r\n const title = this.props.title ?? param?.title ?? 'Are you sure?'\r\n return (\r\n <Box sx={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n {mapGlobalModalContext((context) => (\r\n <Card>\r\n <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>\r\n <DialogContent sx={{ minWidth: '300px' }}>{content}</DialogContent>\r\n <DialogActions>\r\n <CustomButton disabled={this.state.loading} color={param?.colors?.no || 'inherit'} onClick={() => this.handleClickNo(context)}>\r\n No\r\n </CustomButton>\r\n <CustomButton color={param?.colors?.yes || 'error'} disabled={this.state.loading} onClick={() => this.handleClickYes(context)}>\r\n Yes\r\n </CustomButton>\r\n </DialogActions>\r\n </Card>\r\n ))}\r\n </Box>\r\n )\r\n }\r\n\r\n handleClickNo = (context: IGlobalModalContext) => {\r\n context.close()\r\n this.props.onCancel && this.props.onCancel()\r\n }\r\n\r\n handleClickYes = async (context: IGlobalModalContext) => {\r\n if (!this.props.onSubmit) return\r\n try {\r\n this.setState({ loading: true })\r\n await fetchDelay(() => this.props.onSubmit(this.props.data), 700)\r\n context.close()\r\n } catch (error) {\r\n console.log(error)\r\n } finally {\r\n this.setState({ loading: false })\r\n }\r\n }\r\n }\r\n return FormConfirm\r\n}\r\nexport default CreateFormComfirm\r\n\r\nconst CustomButton = styled(Button)({\r\n textTransform: 'capitalize',\r\n fontWeight: 600,\r\n '&.MuiButton-colorInherit': {\r\n color: '#606060!important'\r\n }\r\n})\r\n"],"names":["CreateFormComfirm","param","FormConfirm","props","_this","_classCallCheck","_callSuper","_defineProperty","context","close","onCancel","_ref","_asyncToGenerator","_regenerator","m","_callee","_t","w","_context","n","onSubmit","a","p","setState","loading","fetchDelay","data","v","console","log","f","_x","apply","this","arguments","state","_inherits","Component","_createClass","key","value","_ref2","_this$props$title","_this2","content","children","undefined","title","_jsx","Box","sx","flex","display","alignItems","justifyContent","mapGlobalModalContext","_param$colors","_param$colors2","_jsxs","Card","DialogTitle","id","DialogContent","minWidth","DialogActions","CustomButton","disabled","color","colors","no","onClick","handleClickNo","yes","handleClickYes","styled","Button","textTransform","fontWeight"],"mappings":"6jBAyBA,IAAMA,EAAoB,SAAmBC,GAA4B,IACjEC,aACJ,SAAAA,EAAYC,GAA2B,IAAAC,EAEN,OAFMC,OAAAH,GACrCE,EAAAE,EAAAJ,KAAAA,GAAMC,IAAMI,EAAAH,EA2BE,iBAAA,SAACI,GACfA,EAAQC,QACRL,EAAKD,MAAMO,UAAYN,EAAKD,MAAMO,cACnCH,EAAAH,EAAA,iBAAA,WAAA,IAAAO,EAAAC,EAAAC,IAAAC,GAEgB,SAAAC,EAAOP,GAA4B,IAAAQ,EAAA,OAAAH,IAAAI,GAAA,SAAAC,GAAA,cAAAA,EAAAC,GAAA,KAAA,EAAA,GAC7Cf,EAAKD,MAAMiB,SAAQ,CAAAF,EAAAC,EAAA,EAAA,KAAA,CAAA,OAAAD,EAAAG,EAAA,GAAA,KAAA,EAEU,OAFVH,EAAAI,EAAA,EAEtBlB,EAAKmB,SAAS,CAAEC,SAAS,IAAON,EAAAC,EAAA,EAC1BM,GAAW,WAAA,OAAMrB,EAAKD,MAAMiB,SAAShB,EAAKD,MAAMuB,KAAK,GAAE,KAAI,KAAA,EACjElB,EAAQC,QAAOS,EAAAC,EAAA,EAAA,MAAA,KAAA,EAAAD,EAAAI,EAAA,EAAAN,EAAAE,EAAAS,EAEfC,QAAQC,IAAGb,GAAO,KAAA,EAEe,OAFfE,EAAAI,EAAA,EAElBlB,EAAKmB,SAAS,CAAEC,SAAS,IAAQN,EAAAY,EAAA,GAAA,KAAA,EAAA,OAAAZ,EAAAG,EAAA,GAAA,GAAAN,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,EAAA,SAEpC,OAAA,SAAAgB,GAAA,OAAApB,EAAAqB,MAAAC,KAAAC,UAAA,CAAA,CAbA,IA7BC9B,EAAK+B,MAAQ,CAAEX,SAAS,GAAOpB,CACjC,CAAC,OAAAgC,EAAAlC,EAJuBmC,GAIvBC,EAAApC,EAAA,CAAA,CAAAqC,IAAA,SAAAC,MAED,WAAM,IAAAC,EAAAC,EAAAC,EAAAV,KACEW,EAAUX,KAAK9B,MAAM0C,WAAa5C,SAAAA,EAAO2C,QAAU3C,aAAK,EAALA,EAAO2C,QAAQX,KAAK9B,MAAMuB,WAAQoB,GACrFC,EAAwC,QAAnCN,EAAmB,QAAnBC,EAAGT,KAAK9B,MAAM4C,aAAK,IAAAL,EAAAA,EAAIzC,aAAK,EAALA,EAAO8C,aAAK,IAAAN,EAAAA,EAAI,gBAClD,OACEO,EAACC,EAAG,CAACC,GAAI,CAAEC,KAAM,EAAGC,QAAS,OAAQC,WAAY,SAAUC,eAAgB,UACxET,SAAAU,GAAsB,SAAC/C,GAAO,IAAAgD,EAAAC,EAAA,OAC7BC,EAACC,EACC,CAAAd,SAAA,CAAAG,EAACY,EAAW,CAACC,GAAG,qBAAoBhB,SAAEE,IACtCC,EAACc,EAAc,CAAAZ,GAAI,CAAEa,SAAU,kBAAYnB,IAC3Cc,EAACM,EAAa,CAAAnB,SAAA,CACZG,EAACiB,GAAaC,SAAUvB,EAAKR,MAAMX,QAAS2C,OAAOlE,iBAAKuD,EAALvD,EAAOmE,cAAM,IAAAZ,OAAA,EAAbA,EAAea,KAAM,UAAWC,QAAS,WAAF,OAAQ3B,EAAK4B,cAAc/D,EAAQ,EAAAqC,SAAA,OAG7HG,EAACiB,EAAY,CAACE,OAAOlE,iBAAKwD,EAALxD,EAAOmE,cAAM,IAAAX,OAAA,EAAbA,EAAee,MAAO,QAASN,SAAUvB,EAAKR,MAAMX,QAAS8C,QAAS,WAAF,OAAQ3B,EAAK8B,eAAejE,EAAQ,EAE9GqC,SAAA,aAGpB,KAGP,IAAC,IAoBH,OAAO3C,CACT,EAGM+D,EAAeS,EAAOC,EAAPD,CAAe,CAClCE,cAAe,aACfC,WAAY,IACZ,2BAA4B,CAC1BV,MAAO"}
@@ -1,2 +1,2 @@
1
- import{inherits as o,createClass as r,classCallCheck as e,callSuper as t,defineProperty as n,objectSpread2 as l,asyncToGenerator as i,regenerator as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as a,jsxs as u}from"react/jsx-runtime";import{Component as d,Fragment as p}from"react";import{Grid as c}from"@mui/material";import{cleanObject as m}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"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 S=function(S){var F=h(),y=g(),C=b({maxLength:250}),j=function(){function g(o){var r;return e(this,g),r=t(this,g,[o]),n(r,"renderFormFieldElement",(function(o){var e,t=r.props.data,n=null!==(e=o.inputElement)&&void 0!==e?e:C;return F.mapContext((function(e){var i,s,u={data:t,onBlur:e.onBlur,messageErrors:e.messageErrors,name:o.key,label:o.label,placeholder:o.placeholder,disabled:!(null===(i=r.configMerged.disabledFields)||void 0===i||!i[o.key])||void 0,defaultValue:null!==(s=null==t?void 0:t[o.key])&&void 0!==s?s:null==o?void 0:o.defaultValue,formContext:e};return a(n,l({},m(u)))}))})),n(r,"loading",(function(){return r.setState({loadding:!0})})),n(r,"unloading",(function(){return r.setState({loadding:!1})})),n(r,"onSubmit",function(){var o=i(s().m((function o(e,t){var n,l,i,a,u,d,p,c,m;return s().w((function(o){for(;;)switch(o.n){case 0:return a=r.props.slots,u=null!==(n=null!==(l=null===(i=r.props.slots)||void 0===i?void 0:i.preSubmit)&&void 0!==l?l:S.preSubmit)&&void 0!==n?n:r.preSubmit,d=u(e,r.props.data),o.p=1,r.loading(),null===(p=r.abortController)||void 0===p||p.abort(),r.abortController=new AbortController,o.n=2,r.props.onSubmit(d,null===(c=r.abortController)||void 0===c?void 0:c.signal);case 2:null!=a&&a.closeState&&!1===a.closeState.Success||(t&&t(),r.props.onClose&&r.props.onClose()),o.n=4;break;case 3:o.p=3,m=o.v,null!=a&&a.closeState&&!0===a.closeState.Fail&&(t&&t(),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,e){return o.apply(this,arguments)}}()),n(r,"preSubmit",(function(o){return o})),n(r,"getFormSlots",(function(){var o,e=r.state.loadding,t=((null===(o=r.props.slots)||void 0===o?void 0:o.formSlots)||{}).formProps;return{formProps:l(l({},t),{},{sx:l(l({},r.props.sx),{},{opacity:e?.7:1,pointerEvents:e?"none":"auto"})})}})),r.state={loadding:!1},r}return o(g,d),r(g,[{key:"configMerged",get:function(){var o,r,e,t;return{hiddenFields:null!==(o=null===(r=this.props.slots)||void 0===r?void 0:r.hiddenFields)&&void 0!==o?o:S.hiddenFields,disabledFields:null!==(e=null===(t=this.props.slots)||void 0===t?void 0:t.disabledFields)&&void 0!==e?e:S.disabledFields}}},{key:"render",value:function(){var o,r,e,t=this,n=this.props.slots,i=null!==(o=null!==(r=null==S?void 0:S.action)&&void 0!==r?r:null===(e=this.props.slots)||void 0===e?void 0:e.action)&&void 0!==o?o:y;return v((function(o){var r,e=o.close;return u(F.Form,{validate:S.validate,onSubmit:function(o){return t.onSubmit(o,e)},slots:t.getFormSlots(),children:[u(f,l(l({},null===(r=t.props)||void 0===r||null===(r=r.slots)||void 0===r?void 0:r.contentProps),{},{children:[(null==n?void 0:n.contentBefore)&&(null==n?void 0:n.contentBefore),null==S?void 0:S.contentBefore,a(c,{container:!0,spacing:2,children:S.configs.map((function(o,r){var e,n=!(null===(e=t.configMerged.hiddenFields)||void 0===e||!e[o.key])||void 0;return a(p,n?{}:{children:a(c,l(l({item:!0,xs:12},o.sizes),{},{children:t.renderFormFieldElement(o)}))},o.key.toString()+r)}))}),null==S?void 0:S.contentAfter,(null==n?void 0:n.contentAfter)&&(null==n?void 0:n.contentAfter)]})),F.mapContext((function(o){var r;return a(i,{data:t.props.data,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null===(r=t.props.slots)||void 0===r?void 0:r.actionBefore})}))]})}))}},{key:"componentWillUnmount",value:function(){var o;null===(o=this.abortController)||void 0===o||o.abort()}}])}();return j};export{S as default};
1
+ import{inherits as o,createClass as r,objectSpread2 as e,classCallCheck as n,callSuper as t,defineProperty as l,asyncToGenerator as i,regenerator as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as a,jsx as u}from"react/jsx-runtime";import{Fragment as d,Component as p}from"react";import{Grid as c}from"@mui/material";import{cleanObject as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{ContentWrap as m,CreateFormBottomBar as f}from"./create.form-grid-layout.units.js";import g from"./create.input.js";import b from"./create.form-base.js";import{mapGlobalModalContext as h}from"../api-context/global-modal.js";var S=function(S){var F=b(),y=f(),C=g({maxLength:250}),j=function(){function f(o){var r;return n(this,f),r=t(this,f,[o]),l(r,"renderFormFieldElement",(function(o){var n,t=r.props.data,l=null!==(n=o.inputElement)&&void 0!==n?n:C;return F.mapContext((function(n){var i,s,a={data:t,onBlur:n.onBlur,messageErrors:n.messageErrors,name:o.key,label:o.label,placeholder:o.placeholder,disabled:!(null===(i=r.configMerged.disabledFields)||void 0===i||!i[o.key])||void 0,defaultValue:null!==(s=null==t?void 0:t[o.key])&&void 0!==s?s:null==o?void 0:o.defaultValue,formContext:n};return u(l,e({},v(a)))}))})),l(r,"loading",(function(){return r.setState({loadding:!0})})),l(r,"unloading",(function(){return r.setState({loadding:!1})})),l(r,"onSubmit",function(){var o=i(s().m((function o(e,n){var t,l,i,a,u,d,p,c,v;return s().w((function(o){for(;;)switch(o.n){case 0:return a=r.props.slots,u=null!==(t=null!==(l=null===(i=r.props.slots)||void 0===i?void 0:i.preSubmit)&&void 0!==l?l:S.preSubmit)&&void 0!==t?t:r.preSubmit,d=u(e,r.props.data),o.p=1,r.loading(),null===(p=r.abortController)||void 0===p||p.abort(),r.abortController=new AbortController,o.n=2,r.props.onSubmit(d,null===(c=r.abortController)||void 0===c?void 0:c.signal);case 2:null!=a&&a.closeState&&!1===a.closeState.Success||(n&&n(),r.props.onClose&&r.props.onClose()),o.n=4;break;case 3:o.p=3,v=o.v,null!=a&&a.closeState&&!0===a.closeState.Fail&&(n&&n(),r.props.onClose&&r.props.onClose()),r.props.onError&&r.props.onError(v);case 4:return o.p=4,r.unloading(),o.f(4);case 5:return o.a(2)}}),o,null,[[1,3,4,5]])})));return function(r,e){return o.apply(this,arguments)}}()),l(r,"preSubmit",(function(o){return o})),l(r,"getFormSlots",(function(){var o,n=r.state.loadding,t=((null===(o=r.props.slots)||void 0===o?void 0:o.formSlots)||{}).formProps;return{formProps:e(e({},t),{},{sx:e(e({},r.props.sx),{},{opacity:n?.7:1,pointerEvents:n?"none":"auto"})})}})),r.state={loadding:!1},r}return o(f,p),r(f,[{key:"configMerged",get:function(){var o,r,e,n;return{hiddenFields:null!==(o=null===(r=this.props.slots)||void 0===r?void 0:r.hiddenFields)&&void 0!==o?o:S.hiddenFields,disabledFields:null!==(e=null===(n=this.props.slots)||void 0===n?void 0:n.disabledFields)&&void 0!==e?e:S.disabledFields}}},{key:"render",value:function(){var o,r,n,t=this,l=this.props.slots,i=null!==(o=null!==(r=null==S?void 0:S.action)&&void 0!==r?r:null===(n=this.props.slots)||void 0===n?void 0:n.action)&&void 0!==o?o:y;return h((function(o){var r,n=o.close;return a(F.Form,{validate:S.validate,onSubmit:function(o){return t.onSubmit(o,n)},slots:t.getFormSlots(),children:[a(m,e(e({},null===(r=t.props)||void 0===r||null===(r=r.slots)||void 0===r?void 0:r.contentProps),{},{children:[(null==l?void 0:l.contentBefore)&&(null==l?void 0:l.contentBefore),null==S?void 0:S.contentBefore,u(c,{container:!0,spacing:2,children:S.configs.map((function(o,r){var n,l=!(null===(n=t.configMerged.hiddenFields)||void 0===n||!n[o.key])||void 0;return u(d,l?{}:{children:u(c,e(e({item:!0,xs:12},o.sizes),{},{children:t.renderFormFieldElement(o)}))},o.key.toString()+r)}))}),null==S?void 0:S.contentAfter,(null==l?void 0:l.contentAfter)&&(null==l?void 0:l.contentAfter)]})),F.mapContext((function(o){var r;return u(i,{data:t.props.data,onBlur:o.onBlur,messageErrors:o.messageErrors,before:null===(r=t.props.slots)||void 0===r?void 0:r.actionBefore})}))]})}))}},{key:"componentWillUnmount",value:function(){var o;null===(o=this.abortController)||void 0===o||o.abort()}}])}();return j};export{S 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, { IFormBaseSlots } 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 IPreSubmitEvent<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 hiddenFields?: Partial<Record<keyof T, boolean>>\r\n getHiddenFields?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n disabledFields?: Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n preSubmit?: IPreSubmitEvent<T>\r\n formSlots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n 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 hiddenFields: this.props.slots?.hiddenFields ?? params.hiddenFields,\r\n disabledFields: this.props.slots?.disabledFields ?? params.disabledFields\r\n }\r\n }\r\n\r\n render() {\r\n const { slots } = 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)} slots={this.getFormSlots()}>\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 isHidden: boolean | undefined = this.configMerged.hiddenFields?.[config.key] ? true : undefined\r\n if (isHidden) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.sizes}>\r\n {this.renderFormFieldElement(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.disabledFields?.[config.key] ? true : undefined,\r\n defaultValue: data?.[config.key] ?? config?.defaultValue,\r\n formContext: context\r\n }\r\n return <ElementComponent {...cleanObject(obj)} />\r\n })\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.preSubmit ?? params.preSubmit ?? this.preSubmit\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController?.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n preSubmit: IPreSubmitEvent<T> = (value) => value\r\n\r\n getFormSlots = (): IFormBaseSlots => {\r\n const isLoading = this.state.loadding\r\n const { formProps } = this.props.slots?.formSlots || {}\r\n return {\r\n formProps: {\r\n ...formProps,\r\n sx: {\r\n ...this.props.sx,\r\n opacity: isLoading ? 0.7 : 1,\r\n pointerEvents: isLoading ? 'none' : 'auto'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","CreateFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","CreateInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","config","_config$inputElement","data","ElementComponent","inputElement","mapContext","context","_this$configMerged$di","_data$config$key","obj","onBlur","messageErrors","name","key","label","placeholder","disabled","configMerged","disabledFields","undefined","defaultValue","formContext","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regenerator","m","_callee","value","close","_ref2","_this$props$slots$pre","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","_t","w","_context","n","preSubmit","p","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","v","Fail","onError","unloading","f","a","_x","_x2","apply","this","arguments","_this$props$slots2","isLoading","state","formProps","formSlots","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_this$props$slots$hid","_this$props$slots3","_this$props$slots$dis","_this$props$slots4","hiddenFields","_ref4","_params$action","_this$props$slots5","_this2","BottomBar","action","mapGlobalModalContext","_ref5","_this2$props","_jsxs","Form","validate","getFormSlots","children","ContentWrap","contentProps","contentBefore","Grid","container","spacing","configs","map","index","_this2$configMerged$h","isHidden","Fragment","item","xs","sizes","renderFormFieldElement","toString","contentAfter","_this2$props$slots","before","actionBefore","_this$abortController3"],"mappings":"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"}
1
+ {"version":3,"file":"create.form-grid-layout.js","sources":["../../src/form/create.form-grid-layout.tsx"],"sourcesContent":["import 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, { IFormBaseSlots } 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 IPreSubmitEvent<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 hiddenFields?: Partial<Record<keyof T, boolean>>\r\n getHiddenFields?: (value: Partial<T>) => Partial<Record<keyof T, boolean>>\r\n disabledFields?: Partial<Record<keyof T, boolean>>\r\n closeState?: { Success?: boolean; Fail?: boolean }\r\n contentProps?: BoxProps\r\n preSubmit?: IPreSubmitEvent<T>\r\n formSlots?: IFormBaseSlots\r\n}\r\n\r\nexport interface IFormGridLayoutParams<T> extends IFormGridLayoutSlots<T> {\r\n configs: IFormGridLayoutConfig<T>[]\r\n validate: FormValidator<Partial<T>>\r\n}\r\n\r\nexport interface IFormGridLayoutProps<T> {\r\n data?: T\r\n onSubmit: (value: Partial<T>, signal?: AbortSignal) => Promise<void>\r\n onError?: (error: any) => void\r\n 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 hiddenFields: this.props.slots?.hiddenFields ?? params.hiddenFields,\r\n disabledFields: this.props.slots?.disabledFields ?? params.disabledFields\r\n }\r\n }\r\n\r\n render() {\r\n const { slots } = 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)} slots={this.getFormSlots()}>\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 isHidden: boolean | undefined = this.configMerged.hiddenFields?.[config.key] ? true : undefined\r\n if (isHidden) return <Fragment key={config.key.toString() + index} />\r\n return (\r\n <Fragment key={config.key.toString() + index}>\r\n <Grid item xs={12} {...config.sizes}>\r\n {this.renderFormFieldElement(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.disabledFields?.[config.key] ? true : undefined,\r\n defaultValue: data?.[config.key] ?? config?.defaultValue,\r\n formContext: context\r\n }\r\n return <ElementComponent {...cleanObject(obj)} />\r\n })\r\n }\r\n\r\n loading = () => this.setState({ loadding: true })\r\n\r\n unloading = () => this.setState({ loadding: false })\r\n\r\n componentWillUnmount(): void {\r\n this.abortController?.abort()\r\n }\r\n\r\n onSubmit = async (value: Partial<T>, close?: () => void) => {\r\n const { slots } = this.props\r\n const mapping = this.props.slots?.preSubmit ?? params.preSubmit ?? this.preSubmit\r\n const data = mapping(value, this.props.data)\r\n try {\r\n this.loading()\r\n this.abortController?.abort()\r\n this.abortController = new AbortController()\r\n await this.props.onSubmit(data, this.abortController?.signal)\r\n if (!slots?.closeState || slots.closeState.Success !== false) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n } catch (error) {\r\n if (slots?.closeState && slots.closeState.Fail === true) {\r\n close && close()\r\n this.props.onClose && this.props.onClose()\r\n }\r\n if (this.props.onError) this.props.onError(error)\r\n } finally {\r\n this.unloading()\r\n }\r\n }\r\n\r\n preSubmit: IPreSubmitEvent<T> = (value) => value\r\n\r\n getFormSlots = (): IFormBaseSlots => {\r\n const isLoading = this.state.loadding\r\n const { formProps } = this.props.slots?.formSlots || {}\r\n return {\r\n formProps: {\r\n ...formProps,\r\n sx: {\r\n ...this.props.sx,\r\n opacity: isLoading ? 0.7 : 1,\r\n pointerEvents: isLoading ? 'none' : 'auto'\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return FormGridLayout\r\n}\r\n\r\nexport default CreateFormGridLayout\r\n"],"names":["CreateFormGridLayout","params","FormBaseInstance","CreateFormBase","BottomBarInstance","CreateFormBottomBar","InputBaseInstance","CreateInput","maxLength","FormGridLayout","props","_this","_classCallCheck","_callSuper","_defineProperty","config","_config$inputElement","data","ElementComponent","inputElement","mapContext","context","_this$configMerged$di","_data$config$key","obj","onBlur","messageErrors","name","key","label","placeholder","disabled","configMerged","disabledFields","undefined","defaultValue","formContext","_jsx","_objectSpread","cleanObject","setState","loadding","_ref","_asyncToGenerator","_regenerator","m","_callee","value","close","_ref2","_this$props$slots$pre","_this$props$slots","slots","mapping","_this$abortController","_this$abortController2","_t","w","_context","n","preSubmit","p","loading","abortController","abort","AbortController","onSubmit","signal","closeState","Success","onClose","v","Fail","onError","unloading","f","a","_x","_x2","apply","this","arguments","_this$props$slots2","isLoading","state","formProps","formSlots","sx","opacity","pointerEvents","_inherits","Component","_createClass","get","_this$props$slots$hid","_this$props$slots3","_this$props$slots$dis","_this$props$slots4","hiddenFields","_ref4","_params$action","_this$props$slots5","_this2","BottomBar","action","mapGlobalModalContext","_ref5","_this2$props","_jsxs","Form","validate","getFormSlots","children","ContentWrap","contentProps","contentBefore","Grid","container","spacing","configs","map","index","_this2$configMerged$h","isHidden","Fragment","item","xs","sizes","renderFormFieldElement","toString","contentAfter","_this2$props$slots","before","actionBefore","_this$abortController3"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{objectSpread2 as e,inherits as r,createClass as n,classCallCheck as t,callSuper as o,defineProperty as i,asyncToGenerator as a,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as u}from"react/jsx-runtime";import{Component as p}from"react";import{styled as d,Typography as g,Box as f,TextField as m}from"@mui/material";import c from"@mui/icons-material/Download";import{getErrorMessage as h}from"./helpers.js";import{tryParseCsvFileToArray as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";function C(d){var C=function(){function C(r){var n;return t(this,C),n=o(this,C,[r]),i(n,"mergeConfigsCache",{name:"",onBlur:function(){},messageErrors:{}}),i(n,"refInput",null),i(n,"refTextFiled",null),i(n,"getTextFieldProps",(function(){var r=n.props.label,t=h(n.mergeConfigs.messageErrors,n.mergeConfigs.name);return e({label:r,error:t.error,helperText:t.message,type:"file",variant:"outlined",fullWidth:!0,onChange:n.handleChange,inputProps:{accept:"text/csv"},InputLabelProps:{shrink:n.mergeConfigs.labelShrink}},n.mergeConfigs.textFieldProps)})),i(n,"upgradeMergeConfigs",(function(e){var r,n,t,o,i,a,l,s,u=e.name,p=e.label,g=e.onBlur,f=e.messageErrors;return{textFieldProps:Object.assign({},null==d?void 0:d.textFieldProps,null===(r=e.slots)||void 0===r?void 0:r.textFieldProps),wrapProps:Object.assign({},null==d?void 0:d.wrapProps,null===(n=e.slots)||void 0===n?void 0:n.wrapProps),name:u,onBlur:g||function(){},messageErrors:f||{},downloadSampleUrl:null!==(t=null===(o=e.slots)||void 0===o?void 0:o.downloadSampleUrl)&&void 0!==t?t:null==d?void 0:d.downloadSampleUrl,instructionalText:null!==(i=null===(a=e.slots)||void 0===a?void 0:a.instructionalText)&&void 0!==i?i:null==d?void 0:d.instructionalText,labelShrink:!1!==(null!==(l=null===(s=e.slots)||void 0===s?void 0:s.labelShrink)&&void 0!==l?l:null==d?void 0:d.labelShrink)&&!!p}})),i(n,"handleChange",function(){var e=a(l().m((function e(r){var t,o,i,a;return l().w((function(e){for(;;)switch(e.n){case 0:if(o=null===(t=r.target.files)||void 0===t?void 0:t[0]){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v(o);case 2:i=e.v,n.refInput&&(n.refInput.value=JSON.stringify(i)),n.setState({parsedData:i},(function(){n.props.onChange&&n.props.onChange(i),n.mergeConfigs.onBlur(n.mergeConfigs.name)})),e.n=4;break;case 3:e.p=3,a=e.v,console.error("Error parsing CSV:",a),n.mergeConfigs.onBlur(n.mergeConfigs.name);case 4:return e.a(2)}}),e,null,[[1,3]])})));return function(r){return e.apply(this,arguments)}}()),n.mergeConfigsCache=n.upgradeMergeConfigs(r),n.state={parsedData:[]},n}return r(C,p),n(C,[{key:"mergeConfigs",get:function(){return this.mergeConfigsCache}},{key:"inputValue",get:function(){return this.state.parsedData.length>0?JSON.stringify(this.state.parsedData):""}},{key:"shouldComponentUpdate",value:function(e){return e!==this.props&&(this.mergeConfigsCache=this.upgradeMergeConfigs(e)),!0}},{key:"render",value:function(){var r,n,t=this;return u(f,e(e({},this.mergeConfigs.wrapProps),{},{children:[this.mergeConfigs.downloadSampleUrl&&u(f,{sx:{display:"flex",alignItems:"center",mb:"10px"},children:[s(g,{variant:"subtitle2",component:"span",children:null!==(r=this.mergeConfigs.instructionalText)&&void 0!==r?r:"Metadata file, please fill out the form we provide."}),u(x,{href:this.mergeConfigs.downloadSampleUrl,children:[s("span",{children:" Download sample"}),s(c,{fontSize:"small"})]})]}),s("input",{hidden:!0,name:null===(n=this.props.name)||void 0===n?void 0:n.toString(),type:"text",ref:function(e){return t.refInput=e},defaultValue:""}),s(m,e(e({},this.getTextFieldProps()),{},{inputRef:function(e){return t.refTextFiled=e}}))]}))}}])}();return C}var x=d((function(r){return s(g,e({variant:"subtitle2",component:"a",target:"_blank",download:!0},r))}))({display:"flex",alignItems:"center",color:"var(--color-blue)",cursor:"pointer",fontWeight:600,marginLeft:"6px",gap:"4px","&:hover":{textDecoration:"underline"}});export{C as createInputFileCsvLocalParser};
1
+ import{objectSpread2 as e,inherits as r,createClass as n,classCallCheck as t,callSuper as o,defineProperty as i,asyncToGenerator as a,regenerator as l}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as s,jsxs as u}from"react/jsx-runtime";import{Component as p}from"react";import{styled as d,Typography as g,Box as f,TextField as m}from"@mui/material";import c from"@mui/icons-material/Download";import{getErrorMessage as h}from"./helpers.js";import{tryParseCsvFileToArray as v}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";function C(d){var C=function(){function C(r){var n;return t(this,C),n=o(this,C,[r]),i(n,"mergeConfigsCache",{name:"",onBlur:function(){},messageErrors:{}}),i(n,"refInput",null),i(n,"refTextFiled",null),i(n,"getTextFieldProps",(function(){var r=n.props.label,t=h(n.mergeConfigs.messageErrors,n.mergeConfigs.name);return e({label:r,error:t.error,helperText:t.message,type:"file",variant:"outlined",fullWidth:!0,onChange:n.handleChange,inputProps:{accept:"text/csv"},InputLabelProps:{shrink:n.mergeConfigs.labelShrink}},n.mergeConfigs.textFieldProps)})),i(n,"upgradeMergeConfigs",(function(e){var r,n,t,o,i,a,l,s,u=e.name,p=e.label,g=e.onBlur,f=e.messageErrors;return{textFieldProps:Object.assign({},null==d?void 0:d.textFieldProps,null===(r=e.slots)||void 0===r?void 0:r.textFieldProps),wrapProps:Object.assign({},null==d?void 0:d.wrapProps,null===(n=e.slots)||void 0===n?void 0:n.wrapProps),name:u,onBlur:g||function(){},messageErrors:f||{},downloadSampleUrl:null!==(t=null===(o=e.slots)||void 0===o?void 0:o.downloadSampleUrl)&&void 0!==t?t:null==d?void 0:d.downloadSampleUrl,instructionalText:null!==(i=null===(a=e.slots)||void 0===a?void 0:a.instructionalText)&&void 0!==i?i:null==d?void 0:d.instructionalText,labelShrink:!1!==(null!==(l=null===(s=e.slots)||void 0===s?void 0:s.labelShrink)&&void 0!==l?l:null==d?void 0:d.labelShrink)&&!!p}})),i(n,"handleChange",function(){var e=a(l().m((function e(r){var t,o,i,a;return l().w((function(e){for(;;)switch(e.n){case 0:if(o=null===(t=r.target.files)||void 0===t?void 0:t[0]){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,v(o);case 2:i=e.v,n.refInput&&(n.refInput.value=JSON.stringify(i)),n.setState({parsedData:i},(function(){n.props.onChange&&n.props.onChange(i),n.mergeConfigs.onBlur(n.mergeConfigs.name)})),e.n=4;break;case 3:e.p=3,a=e.v,console.error("Error parsing CSV:",a),n.mergeConfigs.onBlur(n.mergeConfigs.name);case 4:return e.a(2)}}),e,null,[[1,3]])})));return function(r){return e.apply(this,arguments)}}()),n.mergeConfigsCache=n.upgradeMergeConfigs(r),n.state={parsedData:[]},n}return r(C,p),n(C,[{key:"mergeConfigs",get:function(){return this.mergeConfigsCache}},{key:"inputValue",get:function(){return this.state.parsedData.length>0?JSON.stringify(this.state.parsedData):""}},{key:"shouldComponentUpdate",value:function(e){return e!==this.props&&(this.mergeConfigsCache=this.upgradeMergeConfigs(e)),!0}},{key:"render",value:function(){var r,n,t=this;return u(f,e(e({},this.mergeConfigs.wrapProps),{},{children:[this.mergeConfigs.downloadSampleUrl&&u(f,{sx:{display:"flex",alignItems:"center",mb:"10px"},children:[s(g,{variant:"subtitle2",component:"span",children:null!==(r=this.mergeConfigs.instructionalText)&&void 0!==r?r:"Metadata file, please fill out the form we provide."}),u(x,{href:this.mergeConfigs.downloadSampleUrl,children:[s("span",{children:" Download sample"}),s(c,{fontSize:"small"})]})]}),s("input",{hidden:!0,name:null===(n=this.props.name)||void 0===n?void 0:n.toString(),type:"text",ref:function(e){return t.refInput=e},defaultValue:""}),s(m,e(e({},this.getTextFieldProps()),{},{inputRef:function(e){return t.refTextFiled=e}}))]}))}}])}();return C}var x=d((function(r){return s(g,e({variant:"subtitle2",component:"a",target:"_blank",download:!0},r))}))({display:"flex",alignItems:"center",color:"var(--color-blue)",cursor:"pointer",fontWeight:600,marginLeft:"6px",gap:"4px","&:hover":{textDecoration:"underline"}});export{C as createInputFileCsvLocalParser};
2
2
  //# sourceMappingURL=create.input-file.csv-local-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.input-file.csv-local-parser.js","sources":["../../src/form/create.input-file.csv-local-parser.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, styled, TextField, TextFieldProps, Typography, TypographyProps } from '@mui/material'\r\nimport DownloadIcon from '@mui/icons-material/Download'\r\nimport { getErrorMessage } from './helpers'\r\nimport { tryParseCsvFileToArray } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\n\r\nexport interface IInputFileCsvLocalParserSlots {\r\n /**\r\n * The URL of the sample CSV file that users can download.\r\n * If provided, a \"Download sample\" link will be displayed.\r\n * Example: '/sample.csv' or 'https://example.com/sample.csv'\r\n */\r\n downloadSampleUrl?: string\r\n /**\r\n * Instructional text displayed alongside the download link or file input.\r\n * Useful for guiding users on how to use or fill out the CSV file.\r\n */\r\n instructionalText?: string\r\n /**\r\n * Props to customize the TextField used for uploading the CSV file.\r\n * Allows customization of appearance and behavior (e.g., placeholder, onChange, disabled).\r\n */\r\n textFieldProps?: TextFieldProps\r\n /**\r\n * Props passed to the wrapper element (typically a Box).\r\n * Useful for customizing layout styles such as margin, padding, or display.\r\n */\r\n wrapProps?: BoxProps\r\n /**\r\n * Whether the label should shrink when displayed.\r\n * Defaults to `true` if a label is present to prevent overlap.\r\n * @default true\r\n */\r\n labelShrink?: boolean\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserParams extends IInputFileCsvLocalParserSlots {}\r\n\r\nexport interface IInputFileCsvLocalParserProps<T, C> extends IFormInputBase<T, IInputFileCsvLocalParserSlots> {\r\n onChange?: (value: C[]) => void\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserState<C> {\r\n parsedData: C[]\r\n}\r\n\r\ntype IPickConfigs<T> = Required<Pick<IFormBase<T>, 'onBlur' | 'messageErrors'>>\r\n\r\ninterface IMergeConfigs<T> extends IPickConfigs<T>, IInputFileCsvLocalParserSlots {\r\n name: keyof T\r\n}\r\n\r\n/**\r\n * Creates a React component that renders a file input specifically for CSV files,\r\n * parses the selected file locally into a structured array, and integrates with a form system.\r\n *\r\n * @template T - The main data model used in the form. Represents the shape of the overall form data.\r\n * @template C - The type of each individual item parsed from the CSV file.\r\n *\r\n * @param params - Optional slot parameters to customize the appearance or behavior of the text field.\r\n * @returns A React component configured for uploading and parsing local CSV files.\r\n */\r\nexport function createInputFileCsvLocalParser<T, C>(params?: IInputFileCsvLocalParserParams): ComponentType<IInputFileCsvLocalParserProps<T, C>> {\r\n class InputFileCsvLocalParser extends Component<IInputFileCsvLocalParserProps<T, C>, IInputFileCsvLocalParserState<C>> {\r\n private mergeConfigsCache: IMergeConfigs<T> = { name: '' as keyof T, onBlur: () => {}, messageErrors: {} }\r\n constructor(props: IInputFileCsvLocalParserProps<T, C>) {\r\n super(props)\r\n this.mergeConfigsCache = this.upgradeMergeConfigs(props)\r\n this.state = { parsedData: [] }\r\n }\r\n\r\n get mergeConfigs(): IMergeConfigs<T> {\r\n return this.mergeConfigsCache\r\n }\r\n\r\n get inputValue() {\r\n return this.state.parsedData.length > 0 ? JSON.stringify(this.state.parsedData) : ''\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputFileCsvLocalParserProps<T, C>>): boolean {\r\n if (nextProps !== this.props) this.mergeConfigsCache = this.upgradeMergeConfigs(nextProps)\r\n return true\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refTextFiled: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <Box {...this.mergeConfigs.wrapProps}>\r\n {this.mergeConfigs.downloadSampleUrl && (\r\n <Box sx={{ display: 'flex', alignItems: 'center', mb: '10px' }}>\r\n <Typography variant='subtitle2' component='span'>\r\n {this.mergeConfigs.instructionalText ?? 'Metadata file, please fill out the form we provide.'}\r\n </Typography>\r\n <DownloadButton href={this.mergeConfigs.downloadSampleUrl}>\r\n <span> Download sample</span>\r\n <DownloadIcon fontSize='small' />\r\n </DownloadButton>\r\n </Box>\r\n )}\r\n <input hidden name={this.props.name?.toString()} type='text' ref={(ref) => (this.refInput = ref)} defaultValue='' />\r\n <TextField {...this.getTextFieldProps()} inputRef={(ref) => (this.refTextFiled = ref)} />\r\n </Box>\r\n )\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { label } = this.props\r\n const eMessage = getErrorMessage(this.mergeConfigs.messageErrors, this.mergeConfigs.name)\r\n const mergedProps: TextFieldProps = {\r\n label,\r\n error: eMessage.error,\r\n helperText: eMessage.message,\r\n type: 'file',\r\n variant: 'outlined',\r\n fullWidth: true,\r\n onChange: this.handleChange,\r\n inputProps: { accept: 'text/csv' },\r\n InputLabelProps: { shrink: this.mergeConfigs.labelShrink },\r\n ...this.mergeConfigs.textFieldProps\r\n }\r\n return mergedProps\r\n }\r\n\r\n upgradeMergeConfigs = (currentProps: IInputFileCsvLocalParserProps<T, C>): IMergeConfigs<T> => {\r\n const { name, label, onBlur, messageErrors } = currentProps\r\n return {\r\n textFieldProps: Object.assign({}, params?.textFieldProps, currentProps.slots?.textFieldProps),\r\n wrapProps: Object.assign({}, params?.wrapProps, currentProps.slots?.wrapProps),\r\n name: name as keyof T,\r\n onBlur: onBlur || (() => {}),\r\n messageErrors: messageErrors || {},\r\n downloadSampleUrl: currentProps.slots?.downloadSampleUrl ?? params?.downloadSampleUrl,\r\n instructionalText: currentProps.slots?.instructionalText ?? params?.instructionalText,\r\n labelShrink: (currentProps.slots?.labelShrink ?? params?.labelShrink) !== false && !!label\r\n }\r\n }\r\n\r\n handleChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const file = e.target.files?.[0]\r\n if (!file) return\r\n try {\r\n const result = await tryParseCsvFileToArray(file)\r\n if (this.refInput) this.refInput.value = JSON.stringify(result)\r\n this.setState({ parsedData: result as C[] }, () => {\r\n this.props.onChange && this.props.onChange(result as C[])\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n })\r\n } catch (err) {\r\n console.error('Error parsing CSV:', err)\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n }\r\n }\r\n }\r\n return InputFileCsvLocalParser\r\n}\r\n\r\nconst DownloadButton = styled((p: TypographyProps & { href: string }) => (\r\n <Typography variant='subtitle2' component='a' target='_blank' download {...p} />\r\n))({\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: 'var(--color-blue)',\r\n cursor: 'pointer',\r\n fontWeight: 600,\r\n marginLeft: '6px',\r\n gap: '4px',\r\n '&:hover': {\r\n textDecoration: 'underline'\r\n }\r\n})\r\n"],"names":["createInputFileCsvLocalParser","params","InputFileCsvLocalParser","props","_this","_classCallCheck","_callSuper","_defineProperty","name","onBlur","messageErrors","label","eMessage","getErrorMessage","mergeConfigs","_objectSpread","error","helperText","message","type","variant","fullWidth","onChange","handleChange","inputProps","accept","InputLabelProps","shrink","labelShrink","textFieldProps","currentProps","_currentProps$slots","_currentProps$slots2","_currentProps$slots$d","_currentProps$slots3","_currentProps$slots$i","_currentProps$slots4","_currentProps$slots$l","_currentProps$slots5","Object","assign","slots","wrapProps","downloadSampleUrl","instructionalText","_ref","_asyncToGenerator","_regenerator","m","_callee","e","_e$target$files","file","result","_t","w","_context","n","target","files","a","p","tryParseCsvFileToArray","v","refInput","value","JSON","stringify","setState","parsedData","console","_x","apply","this","arguments","mergeConfigsCache","upgradeMergeConfigs","state","_inherits","Component","_createClass","key","get","length","nextProps","_this$mergeConfigs$in","_this$props$name","_this2","_jsxs","Box","children","sx","display","alignItems","mb","_jsx","Typography","component","DownloadButton","href","DownloadIcon","fontSize","hidden","toString","ref","defaultValue","TextField","getTextFieldProps","inputRef","refTextFiled","styled","download","color","cursor","fontWeight","marginLeft","gap","textDecoration"],"mappings":"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"}
1
+ {"version":3,"file":"create.input-file.csv-local-parser.js","sources":["../../src/form/create.input-file.csv-local-parser.tsx"],"sourcesContent":["import React, { Component, ComponentType } from 'react'\r\nimport { Box, BoxProps, styled, TextField, TextFieldProps, Typography, TypographyProps } from '@mui/material'\r\nimport DownloadIcon from '@mui/icons-material/Download'\r\nimport { getErrorMessage } from './helpers'\r\nimport { tryParseCsvFileToArray } from '../utils'\r\nimport { IFormBase, IFormInputBase } from './types'\r\n\r\nexport interface IInputFileCsvLocalParserSlots {\r\n /**\r\n * The URL of the sample CSV file that users can download.\r\n * If provided, a \"Download sample\" link will be displayed.\r\n * Example: '/sample.csv' or 'https://example.com/sample.csv'\r\n */\r\n downloadSampleUrl?: string\r\n /**\r\n * Instructional text displayed alongside the download link or file input.\r\n * Useful for guiding users on how to use or fill out the CSV file.\r\n */\r\n instructionalText?: string\r\n /**\r\n * Props to customize the TextField used for uploading the CSV file.\r\n * Allows customization of appearance and behavior (e.g., placeholder, onChange, disabled).\r\n */\r\n textFieldProps?: TextFieldProps\r\n /**\r\n * Props passed to the wrapper element (typically a Box).\r\n * Useful for customizing layout styles such as margin, padding, or display.\r\n */\r\n wrapProps?: BoxProps\r\n /**\r\n * Whether the label should shrink when displayed.\r\n * Defaults to `true` if a label is present to prevent overlap.\r\n * @default true\r\n */\r\n labelShrink?: boolean\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserParams extends IInputFileCsvLocalParserSlots {}\r\n\r\nexport interface IInputFileCsvLocalParserProps<T, C> extends IFormInputBase<T, IInputFileCsvLocalParserSlots> {\r\n onChange?: (value: C[]) => void\r\n}\r\n\r\nexport interface IInputFileCsvLocalParserState<C> {\r\n parsedData: C[]\r\n}\r\n\r\ntype IPickConfigs<T> = Required<Pick<IFormBase<T>, 'onBlur' | 'messageErrors'>>\r\n\r\ninterface IMergeConfigs<T> extends IPickConfigs<T>, IInputFileCsvLocalParserSlots {\r\n name: keyof T\r\n}\r\n\r\n/**\r\n * Creates a React component that renders a file input specifically for CSV files,\r\n * parses the selected file locally into a structured array, and integrates with a form system.\r\n *\r\n * @template T - The main data model used in the form. Represents the shape of the overall form data.\r\n * @template C - The type of each individual item parsed from the CSV file.\r\n *\r\n * @param params - Optional slot parameters to customize the appearance or behavior of the text field.\r\n * @returns A React component configured for uploading and parsing local CSV files.\r\n */\r\nexport function createInputFileCsvLocalParser<T, C>(params?: IInputFileCsvLocalParserParams): ComponentType<IInputFileCsvLocalParserProps<T, C>> {\r\n class InputFileCsvLocalParser extends Component<IInputFileCsvLocalParserProps<T, C>, IInputFileCsvLocalParserState<C>> {\r\n private mergeConfigsCache: IMergeConfigs<T> = { name: '' as keyof T, onBlur: () => {}, messageErrors: {} }\r\n constructor(props: IInputFileCsvLocalParserProps<T, C>) {\r\n super(props)\r\n this.mergeConfigsCache = this.upgradeMergeConfigs(props)\r\n this.state = { parsedData: [] }\r\n }\r\n\r\n get mergeConfigs(): IMergeConfigs<T> {\r\n return this.mergeConfigsCache\r\n }\r\n\r\n get inputValue() {\r\n return this.state.parsedData.length > 0 ? JSON.stringify(this.state.parsedData) : ''\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputFileCsvLocalParserProps<T, C>>): boolean {\r\n if (nextProps !== this.props) this.mergeConfigsCache = this.upgradeMergeConfigs(nextProps)\r\n return true\r\n }\r\n\r\n refInput: HTMLInputElement | null = null\r\n refTextFiled: HTMLInputElement | null = null\r\n render() {\r\n return (\r\n <Box {...this.mergeConfigs.wrapProps}>\r\n {this.mergeConfigs.downloadSampleUrl && (\r\n <Box sx={{ display: 'flex', alignItems: 'center', mb: '10px' }}>\r\n <Typography variant='subtitle2' component='span'>\r\n {this.mergeConfigs.instructionalText ?? 'Metadata file, please fill out the form we provide.'}\r\n </Typography>\r\n <DownloadButton href={this.mergeConfigs.downloadSampleUrl}>\r\n <span> Download sample</span>\r\n <DownloadIcon fontSize='small' />\r\n </DownloadButton>\r\n </Box>\r\n )}\r\n <input hidden name={this.props.name?.toString()} type='text' ref={(ref) => (this.refInput = ref)} defaultValue='' />\r\n <TextField {...this.getTextFieldProps()} inputRef={(ref) => (this.refTextFiled = ref)} />\r\n </Box>\r\n )\r\n }\r\n\r\n getTextFieldProps = (): TextFieldProps => {\r\n const { label } = this.props\r\n const eMessage = getErrorMessage(this.mergeConfigs.messageErrors, this.mergeConfigs.name)\r\n const mergedProps: TextFieldProps = {\r\n label,\r\n error: eMessage.error,\r\n helperText: eMessage.message,\r\n type: 'file',\r\n variant: 'outlined',\r\n fullWidth: true,\r\n onChange: this.handleChange,\r\n inputProps: { accept: 'text/csv' },\r\n InputLabelProps: { shrink: this.mergeConfigs.labelShrink },\r\n ...this.mergeConfigs.textFieldProps\r\n }\r\n return mergedProps\r\n }\r\n\r\n upgradeMergeConfigs = (currentProps: IInputFileCsvLocalParserProps<T, C>): IMergeConfigs<T> => {\r\n const { name, label, onBlur, messageErrors } = currentProps\r\n return {\r\n textFieldProps: Object.assign({}, params?.textFieldProps, currentProps.slots?.textFieldProps),\r\n wrapProps: Object.assign({}, params?.wrapProps, currentProps.slots?.wrapProps),\r\n name: name as keyof T,\r\n onBlur: onBlur || (() => {}),\r\n messageErrors: messageErrors || {},\r\n downloadSampleUrl: currentProps.slots?.downloadSampleUrl ?? params?.downloadSampleUrl,\r\n instructionalText: currentProps.slots?.instructionalText ?? params?.instructionalText,\r\n labelShrink: (currentProps.slots?.labelShrink ?? params?.labelShrink) !== false && !!label\r\n }\r\n }\r\n\r\n handleChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const file = e.target.files?.[0]\r\n if (!file) return\r\n try {\r\n const result = await tryParseCsvFileToArray(file)\r\n if (this.refInput) this.refInput.value = JSON.stringify(result)\r\n this.setState({ parsedData: result as C[] }, () => {\r\n this.props.onChange && this.props.onChange(result as C[])\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n })\r\n } catch (err) {\r\n console.error('Error parsing CSV:', err)\r\n this.mergeConfigs.onBlur(this.mergeConfigs.name)\r\n }\r\n }\r\n }\r\n return InputFileCsvLocalParser\r\n}\r\n\r\nconst DownloadButton = styled((p: TypographyProps & { href: string }) => (\r\n <Typography variant='subtitle2' component='a' target='_blank' download {...p} />\r\n))({\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: 'var(--color-blue)',\r\n cursor: 'pointer',\r\n fontWeight: 600,\r\n marginLeft: '6px',\r\n gap: '4px',\r\n '&:hover': {\r\n textDecoration: 'underline'\r\n }\r\n})\r\n"],"names":["createInputFileCsvLocalParser","params","InputFileCsvLocalParser","props","_this","_classCallCheck","_callSuper","_defineProperty","name","onBlur","messageErrors","label","eMessage","getErrorMessage","mergeConfigs","_objectSpread","error","helperText","message","type","variant","fullWidth","onChange","handleChange","inputProps","accept","InputLabelProps","shrink","labelShrink","textFieldProps","currentProps","_currentProps$slots","_currentProps$slots2","_currentProps$slots$d","_currentProps$slots3","_currentProps$slots$i","_currentProps$slots4","_currentProps$slots$l","_currentProps$slots5","Object","assign","slots","wrapProps","downloadSampleUrl","instructionalText","_ref","_asyncToGenerator","_regenerator","m","_callee","e","_e$target$files","file","result","_t","w","_context","n","target","files","a","p","tryParseCsvFileToArray","v","refInput","value","JSON","stringify","setState","parsedData","console","_x","apply","this","arguments","mergeConfigsCache","upgradeMergeConfigs","state","_inherits","Component","_createClass","key","get","length","nextProps","_this$mergeConfigs$in","_this$props$name","_this2","_jsxs","Box","children","sx","display","alignItems","mb","_jsx","Typography","component","DownloadButton","href","DownloadIcon","fontSize","hidden","toString","ref","defaultValue","TextField","getTextFieldProps","inputRef","refTextFiled","styled","download","color","cursor","fontWeight","marginLeft","gap","textDecoration"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as e,createClass as r,classCallCheck as n,callSuper as t,defineProperty as o,objectSpread2 as p}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Component as l}from"react";import{TextField as s}from"@mui/material";import{getErrorMessage as u}from"./helpers.js";function a(a){var c=function(){function c(){var e;n(this,c);for(var r=arguments.length,p=new Array(r),i=0;i<r;i++)p[i]=arguments[i];return e=t(this,c,[].concat(p)),o(e,"refInput",null),o(e,"getMergeConfig",(function(){var r,n,t;return{accept:null!==(r=null==a?void 0:a.accept)&&void 0!==r?r:e.props.accept,multiple:null!==(n=null!==(t=null==a?void 0:a.multiple)&&void 0!==t?t:e.props.multiple)&&void 0!==n&&n}})),o(e,"handleChange",(function(r){e.props.name&&e.props.onBlur&&e.props.onBlur(e.props.name)})),o(e,"isExploreOpen",!1),o(e,"handleClick",(function(r){e.isExploreOpen=!0})),o(e,"handleFocus",(function(r){if(!0===e.isExploreOpen){if(e.isExploreOpen=!1,!e.props.name)return;e.props.onBlur&&e.props.onBlur(e.props.name),setTimeout((function(){e.refInput&&e.refInput.blur()}),50)}})),e}return e(c,l),r(c,[{key:"render",value:function(){var e,r,n=this,t=u(this.props.messageErrors,this.props.name),o=this.getMergeConfig();return i(s,p(p({inputRef:function(e){return n.refInput=e},name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),error:t.error,helperText:t.message,variant:"outlined",type:"file",fullWidth:!0,onChange:this.handleChange,onClick:this.handleClick,onFocus:this.handleFocus},this.props.textFieldProps),{},{inputProps:p({accept:o.accept,multiple:o.multiple},null===(r=this.props.textFieldProps)||void 0===r?void 0:r.inputProps)}))}}])}();return c}export{a as default};
1
+ import{inherits as e,createClass as r,objectSpread2 as n,classCallCheck as t,callSuper as o,defineProperty as p}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as i}from"react/jsx-runtime";import{Component as l}from"react";import{TextField as s}from"@mui/material";import{getErrorMessage as u}from"./helpers.js";function a(a){var c=function(){function c(){var e;t(this,c);for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];return e=o(this,c,[].concat(n)),p(e,"refInput",null),p(e,"getMergeConfig",(function(){var r,n,t;return{accept:null!==(r=null==a?void 0:a.accept)&&void 0!==r?r:e.props.accept,multiple:null!==(n=null!==(t=null==a?void 0:a.multiple)&&void 0!==t?t:e.props.multiple)&&void 0!==n&&n}})),p(e,"handleChange",(function(r){e.props.name&&e.props.onBlur&&e.props.onBlur(e.props.name)})),p(e,"isExploreOpen",!1),p(e,"handleClick",(function(r){e.isExploreOpen=!0})),p(e,"handleFocus",(function(r){if(!0===e.isExploreOpen){if(e.isExploreOpen=!1,!e.props.name)return;e.props.onBlur&&e.props.onBlur(e.props.name),setTimeout((function(){e.refInput&&e.refInput.blur()}),50)}})),e}return e(c,l),r(c,[{key:"render",value:function(){var e,r,t=this,o=u(this.props.messageErrors,this.props.name),p=this.getMergeConfig();return i(s,n(n({inputRef:function(e){return t.refInput=e},name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),error:o.error,helperText:o.message,variant:"outlined",type:"file",fullWidth:!0,onChange:this.handleChange,onClick:this.handleClick,onFocus:this.handleFocus},this.props.textFieldProps),{},{inputProps:n({accept:p.accept,multiple:p.multiple},null===(r=this.props.textFieldProps)||void 0===r?void 0:r.inputProps)}))}}])}();return c}export{a as default};
2
2
  //# sourceMappingURL=create.input.file.js.map
@@ -1,2 +1,2 @@
1
- import{inherits as r,createClass as e,classCallCheck as t,callSuper as i,defineProperty as o,objectSpread2 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 t(this,c),e=i(this,c,[r]),o(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)}))}})),o(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,t=this,i=this.props.name,o=d(this.props.messageErrors,this.props.name),l=this.getImageUrl();return a(g,n(n({},null===(r=this.props.slots)||void 0===r?void 0:r.wrapProps),{},{children:[s(u,{sx:{flex:1},children:s(m,n({name:null==i?void 0:i.toString(),error:o.error,helperText:o.message,variant:"outlined",type:"file",fullWidth:!0,inputProps:n({},{accept:"image/*",multiple:!1}),onBlur:function(){i&&t.props.onBlur&&t.props.onBlur(i)},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};
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
2
  //# sourceMappingURL=create.input.image-file.js.map
@@ -1,2 +1,2 @@
1
- import{inherits as e,createClass as t,classCallCheck as r,callSuper as a,defineProperty as o,objectSpread2 as i,objectWithoutProperties as n,asyncToGenerator as l,regenerator as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsx as u,Fragment as d,jsxs as p}from"react/jsx-runtime";import{Component as c}from"react";import{styled as m,Box as h,InputAdornment as v,IconButton as g,Collapse as f,CircularProgress as b,TextField as x}from"@mui/material";import S from"@mui/icons-material/ContentPaste";import{mergeObjects as k}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import{getErrorMessage as y}from"./helpers.js";import P from"../components/image-with-fallback.js";var j=["srcGetter","element","alt","fallbackSrc","debounceDelay"],L=function(m){return function(){function b(e){var t,p;return r(this,b),p=a(this,b,[e]),o(p,"_cachedSlots",{}),o(p,"mapTextFieldProps",(function(){var e,t,r,a,o=y(p.props.messageErrors,p.props.name),n={fullWidth:!0,variant:"outlined",name:null===(e=p.props.name)||void 0===e?void 0:e.toString(),error:o.error,helperText:o.message,disabled:p.props.disabled,onBlur:function(){p.props.name&&p.props.onBlur&&p.props.onBlur(p.props.name)},label:p.getLabel(),placeholder:p.props.placeholder,InputLabelProps:p.state.value?{shrink:!0}:{},value:null!==(t=p.state.value)&&void 0!==t?t:"",onChange:p.handleChange};return!0===p.slots.pastenable&&(n.InputProps={endAdornment:u(v,{position:"end",children:u(g,{onClick:p.handlePaste,edge:"end",children:u(S,{})})})}),null!==(r=p.slots)&&void 0!==r&&r.maxLength&&(n.inputProps=i(i({},n.inputProps),{},{maxLength:p.slots.maxLength})),k({},n,null===(a=p.slots)||void 0===a?void 0:a.textFieldProps)})),o(p,"renderImageSide",(function(e){var t,r="left"===e?p.slots.imageLeft:p.slots.imageRight;if(!r)return u(d,{});var a=r.srcGetter,o=r.element,l=r.alt,s=void 0===l?"input-image":l,c=r.fallbackSrc,m=void 0===c?"":c,h=r.debounceDelay,v=void 0===h?700:h,g=n(r,j);if(o)return u(w,{children:u(o,{value:p.state.value,model:p.props.data})});var b=a?a(p.state.value,p.props.data):null!==(t=g.src)&&void 0!==t?t:p.state.value,x={src:b,alt:s,fallbackSrc:m,debounceDelay:v};return u(f,{sx:{mx:"10px"},in:!!b,unmountOnExit:!0,orientation:"horizontal",children:u(w,{children:u(P,i(i(i({},g),x),{},{loading:u(C,{})}))})})})),o(p,"mergeSlots",(function(e){var t=k({},m,e),r=t.imageLeft,a=t.imageRight;return null!=r&&r.mirror&&!a?(t.imageRight=i({},r),delete t.imageRight.mirror):null!=a&&a.mirror&&!r&&(t.imageLeft=i({},a),delete t.imageLeft.mirror),t})),o(p,"getLabel",(function(){var e,t,r;if(p.props.label)return null!==(e=p.slots)&&void 0!==e&&e.maxLength?"".concat(p.props.label," (").concat(null!==(t=null===(r=p.state.value)||void 0===r?void 0:r.length)&&void 0!==t?t:0,"/").concat(p.slots.maxLength,")"):p.props.label})),o(p,"handleChange",(function(e){p.setState({value:e.target.value})})),o(p,"handlePaste",l(s().m((function e(){var t,r;return s().w((function(e){for(;;)switch(e.n){case 0:return e.p=0,e.n=1,navigator.clipboard.readText();case 1:t=e.v,p.setState({value:t}),e.n=3;break;case 2:e.p=2,r=e.v,console.error("Error clipboard:",r);case 3:return e.a(2)}}),e,null,[[0,2]])})))),p._cachedSlots=null!==(t=p.mergeSlots(e.slots))&&void 0!==t?t:{},p.state={value:p.defaulValue},p}return e(b,c),t(b,[{key:"slots",get:function(){return this._cachedSlots}},{key:"defaulValue",get:function(){var e,t,r=this.props,a=r.data,o=r.name;return null!==(e=this.props.defaultValue)&&void 0!==e?e:a&&o?null===(t=a[o])||void 0===t?void 0:t.toString():void 0}},{key:"componentDidUpdate",value:function(e){e.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"shouldComponentUpdate",value:function(e){var t=this.props,r=t.name;t.slots;if(r){var a,o,i,n,l=null!==(a=null===(o=this.props.data)||void 0===o||null===(o=o[r])||void 0===o?void 0:o.toString())&&void 0!==a?a:"",s=null!==(i=null===(n=e.data)||void 0===n||null===(n=n[r])||void 0===n?void 0:n.toString())&&void 0!==i?i:"";if(l!==s)return this.setState({value:s}),!1}return e.slots,!0}},{key:"render",value:function(){var e;return p(h,{sx:{display:"flex",alignItems:"center"},children:[!!this.props.disabled&&u("input",{hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.defaulValue}),this.renderImageSide("left"),u(x,i({},this.mapTextFieldProps())),this.renderImageSide("right")]})}}])}()},C=function(){return u("div",{children:u(b,{size:24})})},w=m(h)({fontSize:"1rem",height:"var(--input-base-image-size, 54px)",width:"var(--input-base-image-size, 54px)",position:"relative",borderRadius:"8px",boxShadow:"rgba(0, 0, 0, 0.16) 0px 1px 4px",overflow:"hidden","& > img":{position:"absolute",top:0,left:0,backgroundRepeat:"no-repeat",height:"100%",width:"100%",backgroundSize:"contain"},"& > div":{position:"absolute",top:0,left:0,height:"100%",width:"100%",background:"#fafafa",zIndex:1,display:"flex",alignItems:"center",justifyContent:"center"}});export{L as default};
1
+ import{inherits as e,createClass as t,objectSpread2 as r,classCallCheck as a,callSuper as o,defineProperty as i,objectWithoutProperties as n,asyncToGenerator as l,regenerator as s}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as u,jsx as d,Fragment as p}from"react/jsx-runtime";import{Component as c}from"react";import{styled as m,Box as h,TextField as v,InputAdornment as g,IconButton as f,Collapse as b,CircularProgress as x}from"@mui/material";import S from"@mui/icons-material/ContentPaste";import{mergeObjects as k}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{getErrorMessage as y}from"./helpers.js";import P from"../components/image-with-fallback.js";var j=["srcGetter","element","alt","fallbackSrc","debounceDelay"],L=function(m){return function(){function x(e){var t,u;return a(this,x),u=o(this,x,[e]),i(u,"_cachedSlots",{}),i(u,"mapTextFieldProps",(function(){var e,t,a,o,i=y(u.props.messageErrors,u.props.name),n={fullWidth:!0,variant:"outlined",name:null===(e=u.props.name)||void 0===e?void 0:e.toString(),error:i.error,helperText:i.message,disabled:u.props.disabled,onBlur:function(){u.props.name&&u.props.onBlur&&u.props.onBlur(u.props.name)},label:u.getLabel(),placeholder:u.props.placeholder,InputLabelProps:u.state.value?{shrink:!0}:{},value:null!==(t=u.state.value)&&void 0!==t?t:"",onChange:u.handleChange};return!0===u.slots.pastenable&&(n.InputProps={endAdornment:d(g,{position:"end",children:d(f,{onClick:u.handlePaste,edge:"end",children:d(S,{})})})}),null!==(a=u.slots)&&void 0!==a&&a.maxLength&&(n.inputProps=r(r({},n.inputProps),{},{maxLength:u.slots.maxLength})),k({},n,null===(o=u.slots)||void 0===o?void 0:o.textFieldProps)})),i(u,"renderImageSide",(function(e){var t,a="left"===e?u.slots.imageLeft:u.slots.imageRight;if(!a)return d(p,{});var o=a.srcGetter,i=a.element,l=a.alt,s=void 0===l?"input-image":l,c=a.fallbackSrc,m=void 0===c?"":c,h=a.debounceDelay,v=void 0===h?700:h,g=n(a,j);if(i)return d(w,{children:d(i,{value:u.state.value,model:u.props.data})});var f=o?o(u.state.value,u.props.data):null!==(t=g.src)&&void 0!==t?t:u.state.value,x={src:f,alt:s,fallbackSrc:m,debounceDelay:v};return d(b,{sx:{mx:"10px"},in:!!f,unmountOnExit:!0,orientation:"horizontal",children:d(w,{children:d(P,r(r(r({},g),x),{},{loading:d(C,{})}))})})})),i(u,"mergeSlots",(function(e){var t=k({},m,e),a=t.imageLeft,o=t.imageRight;return null!=a&&a.mirror&&!o?(t.imageRight=r({},a),delete t.imageRight.mirror):null!=o&&o.mirror&&!a&&(t.imageLeft=r({},o),delete t.imageLeft.mirror),t})),i(u,"getLabel",(function(){var e,t,r;if(u.props.label)return null!==(e=u.slots)&&void 0!==e&&e.maxLength?"".concat(u.props.label," (").concat(null!==(t=null===(r=u.state.value)||void 0===r?void 0:r.length)&&void 0!==t?t:0,"/").concat(u.slots.maxLength,")"):u.props.label})),i(u,"handleChange",(function(e){u.setState({value:e.target.value})})),i(u,"handlePaste",l(s().m((function e(){var t,r;return s().w((function(e){for(;;)switch(e.n){case 0:return e.p=0,e.n=1,navigator.clipboard.readText();case 1:t=e.v,u.setState({value:t}),e.n=3;break;case 2:e.p=2,r=e.v,console.error("Error clipboard:",r);case 3:return e.a(2)}}),e,null,[[0,2]])})))),u._cachedSlots=null!==(t=u.mergeSlots(e.slots))&&void 0!==t?t:{},u.state={value:u.defaulValue},u}return e(x,c),t(x,[{key:"slots",get:function(){return this._cachedSlots}},{key:"defaulValue",get:function(){var e,t,r=this.props,a=r.data,o=r.name;return null!==(e=this.props.defaultValue)&&void 0!==e?e:a&&o?null===(t=a[o])||void 0===t?void 0:t.toString():void 0}},{key:"componentDidUpdate",value:function(e){e.slots!==this.props.slots&&(this._cachedSlots=this.mergeSlots(this.props.slots))}},{key:"shouldComponentUpdate",value:function(e){var t=this.props,r=t.name;t.slots;if(r){var a,o,i,n,l=null!==(a=null===(o=this.props.data)||void 0===o||null===(o=o[r])||void 0===o?void 0:o.toString())&&void 0!==a?a:"",s=null!==(i=null===(n=e.data)||void 0===n||null===(n=n[r])||void 0===n?void 0:n.toString())&&void 0!==i?i:"";if(l!==s)return this.setState({value:s}),!1}return e.slots,!0}},{key:"render",value:function(){var e;return u(h,{sx:{display:"flex",alignItems:"center"},children:[!!this.props.disabled&&d("input",{hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.defaulValue}),this.renderImageSide("left"),d(v,r({},this.mapTextFieldProps())),this.renderImageSide("right")]})}}])}()},C=function(){return d("div",{children:d(x,{size:24})})},w=m(h)({fontSize:"1rem",height:"var(--input-base-image-size, 54px)",width:"var(--input-base-image-size, 54px)",position:"relative",borderRadius:"8px",boxShadow:"rgba(0, 0, 0, 0.16) 0px 1px 4px",overflow:"hidden","& > img":{position:"absolute",top:0,left:0,backgroundRepeat:"no-repeat",height:"100%",width:"100%",backgroundSize:"contain"},"& > div":{position:"absolute",top:0,left:0,height:"100%",width:"100%",background:"#fafafa",zIndex:1,display:"flex",alignItems:"center",justifyContent:"center"}});export{L as default};
2
2
  //# sourceMappingURL=create.input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.input.js","sources":["../../src/form/create.input.tsx"],"sourcesContent":["import React, { Component, ComponentType, FC } from 'react'\r\nimport { Box, CircularProgress, Collapse, IconButton, InputAdornment, styled, TextField, TextFieldProps } from '@mui/material'\r\nimport ContentPasteIcon from '@mui/icons-material/ContentPaste'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ImageWithFallback, IImageWithFallbackPropsOwner } from '../components'\r\n\r\nexport interface InputBaseImage<T> extends Partial<IImageWithFallbackPropsOwner> {\r\n srcGetter?: (value: any, model?: Partial<T>) => string\r\n element?: React.ComponentType<{ value: any; model?: Partial<T> }>\r\n mirror?: boolean\r\n}\r\n\r\nexport interface IInputSlots<T> {\r\n maxLength?: number\r\n textFieldProps?: TextFieldProps\r\n pastenable?: boolean\r\n imageLeft?: InputBaseImage<T>\r\n imageRight?: InputBaseImage<T>\r\n}\r\n\r\nexport interface IInputProps<T> extends IFormInputBase<T, IInputSlots<T>> {}\r\n\r\nexport interface IInputState {\r\n value?: string\r\n}\r\n\r\nexport interface IInputParams<T> extends IInputSlots<T> {}\r\n\r\nconst CreateInput = function <T>(params?: IInputParams<T>): ComponentType<IInputProps<T>> {\r\n class InputBase extends Component<IInputProps<T>, IInputState> {\r\n private _cachedSlots: IInputSlots<T> = {}\r\n constructor(props: IInputProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.defaulValue }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n get defaulValue(): string {\r\n const { data, name } = this.props\r\n return this.props.defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n }\r\n\r\n componentDidUpdate(prevProps: IInputProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputProps<T>>): boolean {\r\n const { name, slots } = this.props\r\n if (!!name) {\r\n const currentDataValue = this.props.data?.[name]?.toString() ?? ''\r\n const nextDataValue = nextProps.data?.[name]?.toString() ?? ''\r\n if (currentDataValue !== nextDataValue) {\r\n this.setState({ value: nextDataValue })\r\n return false\r\n }\r\n }\r\n\r\n if (slots !== nextProps.slots) {\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const tfp: TextFieldProps = {\r\n fullWidth: true,\r\n variant: 'outlined',\r\n name: this.props.name?.toString(),\r\n error: errorMessage.error,\r\n helperText: errorMessage.message,\r\n disabled: this.props.disabled,\r\n onBlur: () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n },\r\n label: this.getLabel(),\r\n placeholder: this.props.placeholder,\r\n InputLabelProps: !!this.state.value ? { shrink: true } : {},\r\n value: this.state.value ?? '',\r\n onChange: this.handleChange\r\n }\r\n if (this.slots.pastenable === true) {\r\n tfp.InputProps = {\r\n endAdornment: (\r\n <InputAdornment position='end'>\r\n <IconButton onClick={this.handlePaste} edge='end'>\r\n <ContentPasteIcon />\r\n </IconButton>\r\n </InputAdornment>\r\n )\r\n }\r\n }\r\n if (this.slots?.maxLength) tfp.inputProps = { ...tfp.inputProps, maxLength: this.slots.maxLength }\r\n return mergeObjects<TextFieldProps>({}, tfp, this.slots?.textFieldProps)\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.defaulValue} />}\r\n {this.renderImageSide('left')}\r\n <TextField {...this.mapTextFieldProps()} />\r\n {this.renderImageSide('right')}\r\n </Box>\r\n )\r\n }\r\n\r\n renderImageSide = (side: 'left' | 'right') => {\r\n const image = side === 'left' ? this.slots.imageLeft : this.slots.imageRight\r\n if (!image) return <></>\r\n const { srcGetter, element, alt = 'input-image', fallbackSrc = '', debounceDelay = 700, ...imageOther } = image\r\n if (element) {\r\n const Element = element\r\n return (\r\n <WrapImage>\r\n <Element value={this.state.value} model={this.props.data} />\r\n </WrapImage>\r\n )\r\n }\r\n const src = srcGetter ? srcGetter(this.state.value, this.props.data) : imageOther.src ?? this.state.value\r\n const imageProps: IImageWithFallbackPropsOwner = { src, alt, fallbackSrc, debounceDelay }\r\n return (\r\n <Collapse sx={{ mx: '10px' }} in={!!src} unmountOnExit orientation='horizontal'>\r\n <WrapImage>\r\n <ImageWithFallback {...imageOther} {...imageProps} loading={<LoadingCircularProgress />} />\r\n </WrapImage>\r\n </Collapse>\r\n )\r\n }\r\n //#endregion\r\n\r\n private mergeSlots = (currentSlots?: IInputSlots<T>): IInputSlots<T> => {\r\n const base = mergeObjects<IInputSlots<T>>({}, params, currentSlots)\r\n const { imageLeft, imageRight } = base\r\n\r\n // mirror from left to right\r\n if (imageLeft?.mirror && !imageRight) {\r\n base.imageRight = { ...imageLeft }\r\n delete base.imageRight.mirror\r\n }\r\n // mirror from right to left\r\n else if (imageRight?.mirror && !imageLeft) {\r\n base.imageLeft = { ...imageRight }\r\n delete base.imageLeft.mirror\r\n }\r\n\r\n return base\r\n }\r\n\r\n getLabel = () => {\r\n if (!this.props.label) return\r\n if (!this.slots?.maxLength) return this.props.label\r\n return `${this.props.label} (${this.state.value?.length ?? 0}/${this.slots.maxLength})`\r\n }\r\n\r\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n this.setState({ value: event.target.value })\r\n }\r\n\r\n handlePaste = async () => {\r\n try {\r\n const clipboardText = await navigator.clipboard.readText()\r\n this.setState({ value: clipboardText })\r\n } catch (error) {\r\n console.error('Error clipboard:', error)\r\n }\r\n }\r\n }\r\n return InputBase\r\n}\r\n\r\nexport default CreateInput\r\n\r\n// export type InputTextType<T> = ReturnType<typeof CreateInputBase<T>>\r\n\r\nconst LoadingCircularProgress: FC = () => (\r\n <div>\r\n <CircularProgress size={24} />\r\n </div>\r\n)\r\n\r\nconst WrapImage = styled(Box)({\r\n fontSize: '1rem',\r\n height: 'var(--input-base-image-size, 54px)',\r\n width: 'var(--input-base-image-size, 54px)',\r\n position: 'relative',\r\n borderRadius: '8px',\r\n boxShadow: 'rgba(0, 0, 0, 0.16) 0px 1px 4px',\r\n overflow: 'hidden',\r\n '& > img': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n backgroundRepeat: 'no-repeat',\r\n height: '100%',\r\n width: '100%',\r\n backgroundSize: 'contain'\r\n },\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n height: '100%',\r\n width: '100%',\r\n background: '#fafafa',\r\n zIndex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n})\r\n"],"names":["CreateInput","params","InputBase","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$state$value","_this$slots","_this$slots2","errorMessage","getErrorMessage","messageErrors","name","tfp","fullWidth","variant","toString","error","helperText","message","disabled","onBlur","label","getLabel","placeholder","InputLabelProps","state","value","shrink","onChange","handleChange","slots","pastenable","InputProps","endAdornment","_jsx","InputAdornment","position","children","IconButton","onClick","handlePaste","edge","ContentPasteIcon","maxLength","inputProps","_objectSpread","mergeObjects","textFieldProps","side","_imageOther$src","image","imageLeft","imageRight","srcGetter","element","_image$alt","alt","_image$fallbackSrc","fallbackSrc","_image$debounceDelay","debounceDelay","imageOther","_objectWithoutProperties","_excluded","WrapImage","model","data","src","imageProps","Collapse","sx","mx","in","unmountOnExit","orientation","ImageWithFallback","loading","LoadingCircularProgress","currentSlots","base","mirror","_this$slots3","_this$state$value$len","_this$state$value2","concat","length","event","setState","target","_asyncToGenerator","_regenerator","m","_callee","clipboardText","_t","w","_context","n","p","navigator","clipboard","readText","v","console","a","_cachedSlots","mergeSlots","defaulValue","_inherits","Component","_createClass","key","get","this","_this$props$defaultVa","_data$name","_this$props","defaultValue","undefined","prevProps","nextProps","_this$props2","_this$props$data$name","_this$props$data","_nextProps$data$name$","_nextProps$data","currentDataValue","nextDataValue","_this$props$name2","_jsxs","Box","display","alignItems","hidden","renderImageSide","TextField","mapTextFieldProps","CircularProgress","size","styled","fontSize","height","width","borderRadius","boxShadow","overflow","top","left","backgroundRepeat","backgroundSize","background","zIndex","justifyContent"],"mappings":"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"}
1
+ {"version":3,"file":"create.input.js","sources":["../../src/form/create.input.tsx"],"sourcesContent":["import React, { Component, ComponentType, FC } from 'react'\r\nimport { Box, CircularProgress, Collapse, IconButton, InputAdornment, styled, TextField, TextFieldProps } from '@mui/material'\r\nimport ContentPasteIcon from '@mui/icons-material/ContentPaste'\r\nimport { mergeObjects } from '../utils'\r\nimport { IFormInputBase } from './types'\r\nimport { getErrorMessage } from './helpers'\r\nimport { ImageWithFallback, IImageWithFallbackPropsOwner } from '../components'\r\n\r\nexport interface InputBaseImage<T> extends Partial<IImageWithFallbackPropsOwner> {\r\n srcGetter?: (value: any, model?: Partial<T>) => string\r\n element?: React.ComponentType<{ value: any; model?: Partial<T> }>\r\n mirror?: boolean\r\n}\r\n\r\nexport interface IInputSlots<T> {\r\n maxLength?: number\r\n textFieldProps?: TextFieldProps\r\n pastenable?: boolean\r\n imageLeft?: InputBaseImage<T>\r\n imageRight?: InputBaseImage<T>\r\n}\r\n\r\nexport interface IInputProps<T> extends IFormInputBase<T, IInputSlots<T>> {}\r\n\r\nexport interface IInputState {\r\n value?: string\r\n}\r\n\r\nexport interface IInputParams<T> extends IInputSlots<T> {}\r\n\r\nconst CreateInput = function <T>(params?: IInputParams<T>): ComponentType<IInputProps<T>> {\r\n class InputBase extends Component<IInputProps<T>, IInputState> {\r\n private _cachedSlots: IInputSlots<T> = {}\r\n constructor(props: IInputProps<T>) {\r\n super(props)\r\n this._cachedSlots = this.mergeSlots(props.slots) ?? {}\r\n this.state = { value: this.defaulValue }\r\n }\r\n\r\n get slots() {\r\n return this._cachedSlots\r\n }\r\n\r\n get defaulValue(): string {\r\n const { data, name } = this.props\r\n return this.props.defaultValue ?? (!!data && !!name ? data[name]?.toString() : undefined)\r\n }\r\n\r\n componentDidUpdate(prevProps: IInputProps<T>) {\r\n if (prevProps.slots !== this.props.slots) {\r\n this._cachedSlots = this.mergeSlots(this.props.slots)\r\n }\r\n }\r\n\r\n shouldComponentUpdate(nextProps: Readonly<IInputProps<T>>): boolean {\r\n const { name, slots } = this.props\r\n if (!!name) {\r\n const currentDataValue = this.props.data?.[name]?.toString() ?? ''\r\n const nextDataValue = nextProps.data?.[name]?.toString() ?? ''\r\n if (currentDataValue !== nextDataValue) {\r\n this.setState({ value: nextDataValue })\r\n return false\r\n }\r\n }\r\n\r\n if (slots !== nextProps.slots) {\r\n return true\r\n }\r\n return true\r\n }\r\n\r\n mapTextFieldProps = (): TextFieldProps => {\r\n const errorMessage = getErrorMessage(this.props.messageErrors, this.props.name)\r\n const tfp: TextFieldProps = {\r\n fullWidth: true,\r\n variant: 'outlined',\r\n name: this.props.name?.toString(),\r\n error: errorMessage.error,\r\n helperText: errorMessage.message,\r\n disabled: this.props.disabled,\r\n onBlur: () => {\r\n if (!this.props.name) return\r\n this.props.onBlur && this.props.onBlur(this.props.name)\r\n },\r\n label: this.getLabel(),\r\n placeholder: this.props.placeholder,\r\n InputLabelProps: !!this.state.value ? { shrink: true } : {},\r\n value: this.state.value ?? '',\r\n onChange: this.handleChange\r\n }\r\n if (this.slots.pastenable === true) {\r\n tfp.InputProps = {\r\n endAdornment: (\r\n <InputAdornment position='end'>\r\n <IconButton onClick={this.handlePaste} edge='end'>\r\n <ContentPasteIcon />\r\n </IconButton>\r\n </InputAdornment>\r\n )\r\n }\r\n }\r\n if (this.slots?.maxLength) tfp.inputProps = { ...tfp.inputProps, maxLength: this.slots.maxLength }\r\n return mergeObjects<TextFieldProps>({}, tfp, this.slots?.textFieldProps)\r\n }\r\n\r\n //#region Render\r\n render() {\r\n return (\r\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\r\n {!!this.props.disabled && <input hidden name={this.props.name?.toString()} defaultValue={this.defaulValue} />}\r\n {this.renderImageSide('left')}\r\n <TextField {...this.mapTextFieldProps()} />\r\n {this.renderImageSide('right')}\r\n </Box>\r\n )\r\n }\r\n\r\n renderImageSide = (side: 'left' | 'right') => {\r\n const image = side === 'left' ? this.slots.imageLeft : this.slots.imageRight\r\n if (!image) return <></>\r\n const { srcGetter, element, alt = 'input-image', fallbackSrc = '', debounceDelay = 700, ...imageOther } = image\r\n if (element) {\r\n const Element = element\r\n return (\r\n <WrapImage>\r\n <Element value={this.state.value} model={this.props.data} />\r\n </WrapImage>\r\n )\r\n }\r\n const src = srcGetter ? srcGetter(this.state.value, this.props.data) : imageOther.src ?? this.state.value\r\n const imageProps: IImageWithFallbackPropsOwner = { src, alt, fallbackSrc, debounceDelay }\r\n return (\r\n <Collapse sx={{ mx: '10px' }} in={!!src} unmountOnExit orientation='horizontal'>\r\n <WrapImage>\r\n <ImageWithFallback {...imageOther} {...imageProps} loading={<LoadingCircularProgress />} />\r\n </WrapImage>\r\n </Collapse>\r\n )\r\n }\r\n //#endregion\r\n\r\n private mergeSlots = (currentSlots?: IInputSlots<T>): IInputSlots<T> => {\r\n const base = mergeObjects<IInputSlots<T>>({}, params, currentSlots)\r\n const { imageLeft, imageRight } = base\r\n\r\n // mirror from left to right\r\n if (imageLeft?.mirror && !imageRight) {\r\n base.imageRight = { ...imageLeft }\r\n delete base.imageRight.mirror\r\n }\r\n // mirror from right to left\r\n else if (imageRight?.mirror && !imageLeft) {\r\n base.imageLeft = { ...imageRight }\r\n delete base.imageLeft.mirror\r\n }\r\n\r\n return base\r\n }\r\n\r\n getLabel = () => {\r\n if (!this.props.label) return\r\n if (!this.slots?.maxLength) return this.props.label\r\n return `${this.props.label} (${this.state.value?.length ?? 0}/${this.slots.maxLength})`\r\n }\r\n\r\n handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n this.setState({ value: event.target.value })\r\n }\r\n\r\n handlePaste = async () => {\r\n try {\r\n const clipboardText = await navigator.clipboard.readText()\r\n this.setState({ value: clipboardText })\r\n } catch (error) {\r\n console.error('Error clipboard:', error)\r\n }\r\n }\r\n }\r\n return InputBase\r\n}\r\n\r\nexport default CreateInput\r\n\r\n// export type InputTextType<T> = ReturnType<typeof CreateInputBase<T>>\r\n\r\nconst LoadingCircularProgress: FC = () => (\r\n <div>\r\n <CircularProgress size={24} />\r\n </div>\r\n)\r\n\r\nconst WrapImage = styled(Box)({\r\n fontSize: '1rem',\r\n height: 'var(--input-base-image-size, 54px)',\r\n width: 'var(--input-base-image-size, 54px)',\r\n position: 'relative',\r\n borderRadius: '8px',\r\n boxShadow: 'rgba(0, 0, 0, 0.16) 0px 1px 4px',\r\n overflow: 'hidden',\r\n '& > img': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n backgroundRepeat: 'no-repeat',\r\n height: '100%',\r\n width: '100%',\r\n backgroundSize: 'contain'\r\n },\r\n '& > div': {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n height: '100%',\r\n width: '100%',\r\n background: '#fafafa',\r\n zIndex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n }\r\n})\r\n"],"names":["CreateInput","params","InputBase","props","_this$mergeSlots","_this","_classCallCheck","_callSuper","_defineProperty","_this$props$name","_this$state$value","_this$slots","_this$slots2","errorMessage","getErrorMessage","messageErrors","name","tfp","fullWidth","variant","toString","error","helperText","message","disabled","onBlur","label","getLabel","placeholder","InputLabelProps","state","value","shrink","onChange","handleChange","slots","pastenable","InputProps","endAdornment","_jsx","InputAdornment","position","children","IconButton","onClick","handlePaste","edge","ContentPasteIcon","maxLength","inputProps","_objectSpread","mergeObjects","textFieldProps","side","_imageOther$src","image","imageLeft","imageRight","srcGetter","element","_image$alt","alt","_image$fallbackSrc","fallbackSrc","_image$debounceDelay","debounceDelay","imageOther","_objectWithoutProperties","_excluded","WrapImage","model","data","src","imageProps","Collapse","sx","mx","in","unmountOnExit","orientation","ImageWithFallback","loading","LoadingCircularProgress","currentSlots","base","mirror","_this$slots3","_this$state$value$len","_this$state$value2","concat","length","event","setState","target","_asyncToGenerator","_regenerator","m","_callee","clipboardText","_t","w","_context","n","p","navigator","clipboard","readText","v","console","a","_cachedSlots","mergeSlots","defaulValue","_inherits","Component","_createClass","key","get","this","_this$props$defaultVa","_data$name","_this$props","defaultValue","undefined","prevProps","nextProps","_this$props2","_this$props$data$name","_this$props$data","_nextProps$data$name$","_nextProps$data","currentDataValue","nextDataValue","_this$props$name2","_jsxs","Box","display","alignItems","hidden","renderImageSide","TextField","mapTextFieldProps","CircularProgress","size","styled","fontSize","height","width","borderRadius","boxShadow","overflow","top","left","backgroundRepeat","backgroundSize","background","zIndex","justifyContent"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{inherits as e,createClass as r,classCallCheck as o,callSuper as t,defineProperty as l,objectSpread2 as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as a}from"react/jsx-runtime";import s,{Component as p}from"react";import{FormControl as u,InputLabel as d,Select as v,MenuItem as m,Collapse as f,FormHelperText as c}from"@mui/material";import{mergeObjects as g}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"react-router-dom";import"../utils/query-param.js";import{getErrorMessage as h}from"./helpers.js";function b(b){return function(){function S(e){var r,i;return o(this,S),i=t(this,S,[e]),l(i,"mapProps",(function(){var e,r,o,t,l,n=i.getLabel(),a={id:null===(e=i.props.name)||void 0===e?void 0:e.toString(),labelId:(null===(r=i.props.name)||void 0===r?void 0:r.toString())+n,name:null===(o=i.props.name)||void 0===o?void 0:o.toString(),label:n,defaultValue:i.getDefaultValue(),value:i.state.value,onChange:function(e){var r=e.target.value+"";i.setState({value:r},(function(){i.props.name&&i.props.onBlur&&i.props.onBlur(i.props.name);var e=i.getOptions().find((function(e){var o;return(null===(o=e.value)||void 0===o?void 0:o.toString())===r}));e&&i.props.onChange&&i.props.onChange(e)}))},disabled:i.props.disabled,fullWidth:void 0===i.props.fullWidth||i.props.fullWidth},s=null!==(t=null===(l=i.props.slots)||void 0===l?void 0:l.selectProps)&&void 0!==t?t:null==b?void 0:b.selectProps;return g({},a,s)})),l(i,"getLabel",(function(){var e,r;return i.props.label&&"string"==typeof i.props.label?i.props.label:null!==(e=null===(r=i.props.name)||void 0===r?void 0:r.toString())&&void 0!==e?e:""})),l(i,"getDefaultValue",(function(){var e,r,o,t,l=i.props,n=l.data,a=l.name,s=i.getOptions();return null!==(e=null!==(r=null===(o=i.props.defaultValue)||void 0===o?void 0:o.toString())&&void 0!==r?r:n&&a?n[a]:void 0)&&void 0!==e?e:null===(t=s[0])||void 0===t?void 0:t.value})),l(i,"getOptions",(function(){var e,r;return null!==(e=null!==(r=null==b?void 0:b.options)&&void 0!==r?r:i.props.options)&&void 0!==e?e:[]})),i.state={value:null===(r=i.getDefaultValue())||void 0===r?void 0:r.toString()},i}return e(S,p),r(S,[{key:"render",value:function(){var e,r,o=this.getOptions(),t=this.getLabel(),l=h(this.props.messageErrors,this.props.name);return n(s.Fragment,{children:[!!this.props.disabled&&a("input",{hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.getDefaultValue()}),n(u,{fullWidth:!0,disabled:this.props.disabled,error:l.error,children:[a(d,{id:(null===(r=this.props.name)||void 0===r?void 0:r.toString())+t,children:t}),a(v,i(i({},this.mapProps()),{},{children:o.map((function(e){return a(m,{value:e.value,children:e.name},e.value)}))})),a(f,{in:l.error,children:a(c,{children:l.message})})]})]})}}])}()}export{b as default};
1
+ import{inherits as e,createClass as r,objectSpread2 as o,classCallCheck as l,callSuper as t,defineProperty as i}from"../_virtual/_rollupPluginBabelHelpers.js";import{jsxs as n,jsx as a}from"react/jsx-runtime";import s,{Component as p}from"react";import{FormControl as u,InputLabel as d,Select as v,MenuItem as m,Collapse as f,FormHelperText as g}from"@mui/material";import{mergeObjects as h}from"../utils/helpers.js";import"../utils/dayjs-config.js";import"../utils/query-param.js";import{getErrorMessage as c}from"./helpers.js";function b(b){return function(){function S(e){var r,o;return l(this,S),o=t(this,S,[e]),i(o,"mapProps",(function(){var e,r,l,t,i,n=o.getLabel(),a={id:null===(e=o.props.name)||void 0===e?void 0:e.toString(),labelId:(null===(r=o.props.name)||void 0===r?void 0:r.toString())+n,name:null===(l=o.props.name)||void 0===l?void 0:l.toString(),label:n,defaultValue:o.getDefaultValue(),value:o.state.value,onChange:function(e){var r=e.target.value+"";o.setState({value:r},(function(){o.props.name&&o.props.onBlur&&o.props.onBlur(o.props.name);var e=o.getOptions().find((function(e){var o;return(null===(o=e.value)||void 0===o?void 0:o.toString())===r}));e&&o.props.onChange&&o.props.onChange(e)}))},disabled:o.props.disabled,fullWidth:void 0===o.props.fullWidth||o.props.fullWidth},s=null!==(t=null===(i=o.props.slots)||void 0===i?void 0:i.selectProps)&&void 0!==t?t:null==b?void 0:b.selectProps;return h({},a,s)})),i(o,"getLabel",(function(){var e,r;return o.props.label&&"string"==typeof o.props.label?o.props.label:null!==(e=null===(r=o.props.name)||void 0===r?void 0:r.toString())&&void 0!==e?e:""})),i(o,"getDefaultValue",(function(){var e,r,l,t,i=o.props,n=i.data,a=i.name,s=o.getOptions();return null!==(e=null!==(r=null===(l=o.props.defaultValue)||void 0===l?void 0:l.toString())&&void 0!==r?r:n&&a?n[a]:void 0)&&void 0!==e?e:null===(t=s[0])||void 0===t?void 0:t.value})),i(o,"getOptions",(function(){var e,r;return null!==(e=null!==(r=null==b?void 0:b.options)&&void 0!==r?r:o.props.options)&&void 0!==e?e:[]})),o.state={value:null===(r=o.getDefaultValue())||void 0===r?void 0:r.toString()},o}return e(S,p),r(S,[{key:"render",value:function(){var e,r,l=this.getOptions(),t=this.getLabel(),i=c(this.props.messageErrors,this.props.name);return n(s.Fragment,{children:[!!this.props.disabled&&a("input",{hidden:!0,name:null===(e=this.props.name)||void 0===e?void 0:e.toString(),defaultValue:this.getDefaultValue()}),n(u,{fullWidth:!0,disabled:this.props.disabled,error:i.error,children:[a(d,{id:(null===(r=this.props.name)||void 0===r?void 0:r.toString())+t,children:t}),a(v,o(o({},this.mapProps()),{},{children:l.map((function(e){return a(m,{value:e.value,children:e.name},e.value)}))})),a(f,{in:i.error,children:a(g,{children:i.message})})]})]})}}])}()}export{b as default};
2
2
  //# sourceMappingURL=create.select-simple.js.map