tp-react-elements-dev 1.9.0 → 1.10.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.
package/dist/index.js CHANGED
@@ -59252,6 +59252,79 @@ function TimePickerFieldWrapper({ props, }) {
59252
59252
  }, label: props.variant === "standard" ? "" : props.item.label, disabled: props.item.disable, slotProps: { textField: { readOnly: true, size: "small" } } }))] })) }), jsxRuntimeExports.jsx(ErrorMessageComponent, { children: jsxRuntimeExports.jsx(s, { errors: props.errors, name: props.item.name }) })] })));
59253
59253
  }
59254
59254
 
59255
+ const FormRenderMultiFileUpload = ({ props, variant, }) => {
59256
+ var _a;
59257
+ React$1.useEffect(() => {
59258
+ if (props.getValues(props.item.name) === null ||
59259
+ props.getValues(props.item.name) === undefined) {
59260
+ const element = document.getElementById(props.item.name);
59261
+ console.log(element, "elementelement");
59262
+ if (element) {
59263
+ element.value = ""; // Ensure it's an input element
59264
+ }
59265
+ }
59266
+ }, [props.getValues(props.item.name)]);
59267
+ return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsxs(Box, Object.assign({ paddingLeft: "4px", sx: Object.assign({}, props.item.sx) }, { children: [((_a = props.item) === null || _a === void 0 ? void 0 : _a.label) && (jsxRuntimeExports.jsx(Box, Object.assign({ sx: { fontSize: "10px;" } }, { children: renderLabel(variant, props) }))), jsxRuntimeExports.jsx(TextField, { type: "file", id: props.item.name, inputProps: {
59268
+ multiple: true,
59269
+ accept: props.item.fileType === "excel"
59270
+ ? ".xls,.xlsx"
59271
+ : props.item.fileType === "pdf"
59272
+ ? ".pdf"
59273
+ : props.item.fileType === "image"
59274
+ ? ".jpg,.jpeg,.png"
59275
+ : props.item.fileType === "all"
59276
+ ? ".pdf,.jpg,.jpeg,.png,.xls,.xlsx,.doc,.docx"
59277
+ : "",
59278
+ }, onChange: (event) => {
59279
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
59280
+ const file = event.target.files;
59281
+ const fileName = file && file.length > 0
59282
+ ? Array.from(file)
59283
+ .map((item) => item.name)
59284
+ .join(",")
59285
+ : null;
59286
+ console.log(file, "filefile", file.length, fileName);
59287
+ const allowedExtensions = {
59288
+ excel: ["xls", "xlsx"],
59289
+ pdf: ["pdf"],
59290
+ image: ["jpg", "jpeg", "png"],
59291
+ all: ["pdf", "jpg", "jpeg", "png", "xls", "xlsx", "doc", "docx"],
59292
+ };
59293
+ const fileExtension = fileName
59294
+ ? fileName.split(".").pop().toLowerCase()
59295
+ : null;
59296
+ const validExtensions = props.item.fileType === "excel"
59297
+ ? allowedExtensions.excel
59298
+ : props.item.fileType === "pdf"
59299
+ ? allowedExtensions.pdf
59300
+ : props.item.fileType === "image"
59301
+ ? allowedExtensions.image
59302
+ : allowedExtensions.all;
59303
+ if (((_a = props.item) === null || _a === void 0 ? void 0 : _a.fileType) &&
59304
+ fileExtension &&
59305
+ !validExtensions.includes(fileExtension)) {
59306
+ ((_b = props.item) === null || _b === void 0 ? void 0 : _b.handleFileError) &&
59307
+ ((_c = props.item) === null || _c === void 0 ? void 0 : _c.handleFileError(`Please upload ${allowedExtensions[props.item.fileType].join(",")} Files only`));
59308
+ event.target.value = ""; // Clear the file input\
59309
+ props.setValue((_d = props.item) === null || _d === void 0 ? void 0 : _d.name, null);
59310
+ props.setValue(((_e = props.item) === null || _e === void 0 ? void 0 : _e.name) + "Name", "");
59311
+ return;
59312
+ }
59313
+ else if (event.target.files[event.target.files.length - 1].size > 20000000) {
59314
+ ((_f = props.item) === null || _f === void 0 ? void 0 : _f.handleFileError) &&
59315
+ ((_g = props.item) === null || _g === void 0 ? void 0 : _g.handleFileError(`File size should be less than 20MB`));
59316
+ event.target.files = null; // Clear the file input
59317
+ props.setValue((_h = props.item) === null || _h === void 0 ? void 0 : _h.name, null);
59318
+ props.setValue(((_j = props.item) === null || _j === void 0 ? void 0 : _j.name) + "File", []);
59319
+ return;
59320
+ }
59321
+ const fileArray = Array.from(file);
59322
+ console.log(fileArray, 'fileArrayfileArray');
59323
+ props.setValue((_k = props.item) === null || _k === void 0 ? void 0 : _k.name, fileName);
59324
+ props.setValue(((_l = props.item) === null || _l === void 0 ? void 0 : _l.name) + "File", fileArray);
59325
+ }, sx: { width: "100%" } })] })), jsxRuntimeExports.jsx(ErrorMessageComponent, { children: jsxRuntimeExports.jsx(s, { errors: props.errors, name: props.item.name }) })] }));
59326
+ };
59327
+
59255
59328
  // export const renderLabel = (
59256
59329
  // label: string,
59257
59330
  // isRequired?: boolean,
@@ -59663,6 +59736,8 @@ const RenderForm = (props) => {
59663
59736
  return (jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: jsxRuntimeExports.jsx(MultiSelectV1, { props: props, variant: variant }) }));
59664
59737
  case "file":
59665
59738
  return jsxRuntimeExports.jsx(FormRenderFileUpload, { props: props, variant: variant });
59739
+ case "multifile":
59740
+ return jsxRuntimeExports.jsx(FormRenderMultiFileUpload, { props: props, variant: variant });
59666
59741
  case "textarea":
59667
59742
  return (jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, { children: jsxRuntimeExports.jsx(Controller, { control: props.control, name: props.item.name, render: ({ field }) => (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [renderLabel(variant, props), jsxRuntimeExports.jsx(TextField, Object.assign({ multiline: true, size: "small", InputProps: {
59668
59743
  style: {
@@ -62199,6 +62274,25 @@ const useFormValidatingContext = (formArray) => {
62199
62274
  }
62200
62275
  renderCustomError(field);
62201
62276
  break;
62277
+ case "multifile":
62278
+ initialValues[field.name] = null;
62279
+ if (field.required && field.errorMessage) {
62280
+ validationShape[field.name] = create$6()
62281
+ .test("hasAtLeastOneFile", field.errorMessage, (value) => {
62282
+ if (!value)
62283
+ return false;
62284
+ // Split by comma, trim, and filter out empty values
62285
+ const files = value
62286
+ .split(",")
62287
+ .map((f) => f.trim())
62288
+ .filter((f) => f !== "");
62289
+ return files.length > 0;
62290
+ })
62291
+ .required(field.errorMessage);
62292
+ renderCustomError(field);
62293
+ }
62294
+ renderCustomError(field);
62295
+ break;
62202
62296
  case "number":
62203
62297
  initialValues[field.name] = null;
62204
62298
  if (field.required && field.errorMessage) {
@@ -62302,6 +62396,16 @@ const useFormValidatingContext = (formArray) => {
62302
62396
  }
62303
62397
  renderCustomError(field);
62304
62398
  break;
62399
+ case "checkbox-group":
62400
+ initialValues[field.name] = "";
62401
+ if (field.required && field.errorMessage) {
62402
+ validationShape[field.name] = create$6()
62403
+ .typeError(`Select ${field.label}`)
62404
+ .required(field.errorMessage);
62405
+ renderCustomError(field);
62406
+ }
62407
+ renderCustomError(field);
62408
+ break;
62305
62409
  case "multiselect":
62306
62410
  initialValues[field.name] = null;
62307
62411
  if (field.required && field.errorMessage) {