@iapps/ng-dhis2-ui 1.2.71 → 1.2.72

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.
@@ -4734,6 +4734,7 @@ class FormField {
4734
4734
  this.selectedOptionsLabel =
4735
4735
  options.availableOptionsLabel ?? 'Selected options';
4736
4736
  this.allowFutureDate = options.allowFutureDate;
4737
+ this.extension = options.extension;
4737
4738
  }
4738
4739
  setMax(field) {
4739
4740
  if (field.controlType !== 'date') {
@@ -5189,6 +5190,7 @@ class FormFieldGroup {
5189
5190
  const hasOptions = (options?.length > 0 ||
5190
5191
  dependentField !== undefined ||
5191
5192
  fieldMetaData['hasOptions']);
5193
+ const extension = this.params.formFieldExtensions?.find((fieldExtension) => fieldExtension?.id === field.id);
5192
5194
  return new FormField({
5193
5195
  ...(fieldMetaData || {}),
5194
5196
  ...field,
@@ -5216,6 +5218,7 @@ class FormFieldGroup {
5216
5218
  controlType: FieldUtil.getFieldControlType(fieldMetaData['valueType'], hasOptions),
5217
5219
  metaType: fieldMetaData['metaType'],
5218
5220
  stepId: fieldMetaData['stepId'],
5221
+ extension,
5219
5222
  });
5220
5223
  })
5221
5224
  .filter((field) => field);
@@ -5356,6 +5359,7 @@ class FormMetadataSection {
5356
5359
  formFieldGroup,
5357
5360
  fieldMetaData: [...this.attributes, ...this.dataElements],
5358
5361
  locale: this.params.locale,
5362
+ formFieldExtensions: this.params.formFieldExtensions,
5359
5363
  }).toJson();
5360
5364
  });
5361
5365
  }
@@ -5387,6 +5391,7 @@ class FormMetaData {
5387
5391
  section,
5388
5392
  program,
5389
5393
  locale: this.params.locale,
5394
+ formFieldExtensions: this.params.formFieldExtensions,
5390
5395
  }).toJson();
5391
5396
  })
5392
5397
  .filter((section) => section !== null);
@@ -5700,10 +5705,11 @@ class FormValue {
5700
5705
  // Use of this source code is governed by a BSD-style
5701
5706
  // license that can be found in the LICENSE file.
5702
5707
  const FileUploadField = (props) => {
5703
- const { label, id, uploadUrl, performUpload, validationText, required, hasError, onChange, onUploadSuccess, } = props;
5708
+ const { label, id, uploadUrl, performUpload, validationText, required, hasError, onChange, onUploadSuccess, extension } = props;
5704
5709
  const d2 = window?.d2Web;
5705
5710
  const [file, setFile] = useState(null);
5706
5711
  const [uploading, setUploading] = useState();
5712
+ const [validationError, setValidationError] = useState(null);
5707
5713
  const valid = useMemo(() => {
5708
5714
  if (isUndefined(hasError)) {
5709
5715
  return undefined;
@@ -5729,8 +5735,14 @@ const FileUploadField = (props) => {
5729
5735
  }
5730
5736
  }
5731
5737
  };
5732
- return (React__default.createElement(FileInputField, { accept: "*", buttonLabel: "Upload a file", label: label, name: id, required: required, validationText: validationText, onChange: (event) => {
5738
+ return (React__default.createElement(FileInputField, { accept: extension?.accept?.join(','), buttonLabel: "Upload a file", label: label, name: id, required: required, error: !!validationError, validationText: validationError || validationText, onChange: (event) => {
5733
5739
  const fileItem = (event?.files || [])[0];
5740
+ setValidationError(null);
5741
+ if (extension?.sizeLimit && fileItem.size > extension?.sizeLimit) {
5742
+ setValidationError(`File size must not exceed ${extension.sizeLimit / (1024 * 1024)}MB`);
5743
+ setFile(null);
5744
+ return;
5745
+ }
5734
5746
  setFile(fileItem);
5735
5747
  if (performUpload) {
5736
5748
  uploadFile(fileItem);
@@ -6157,7 +6169,7 @@ class BaseFormFieldComponent extends ReactWrapperModule {
6157
6169
  });
6158
6170
  setValue(fileId);
6159
6171
  setTouched(true);
6160
- } })));
6172
+ }, extension: this.field()?.extension })));
6161
6173
  default:
6162
6174
  return (React__default.createElement(InputField$1, { error: hasError, validationText: validationError, type: this.field().type, inputWidth: this.fieldConfig()?.inputWidth, required: this.field().required, name: this.field().id, label: this.label(), min: this.field().min?.toString(), max: this.field().max?.toString(), placeholder: this.placeholder(), value: value, readOnly: disabled, onChange: (event) => {
6163
6175
  this.ngZone.run(() => {
@@ -7467,6 +7479,7 @@ class ProgramEntryFormFieldUtil {
7467
7479
  .map((field) => {
7468
7480
  const options = FieldDropdown.getDropdownOptions(field);
7469
7481
  const hasOptions = options?.length > 0;
7482
+ const extension = this.config.formFieldExtensions?.find((fieldExtension) => fieldExtension?.id === field.id);
7470
7483
  return new FormField({
7471
7484
  ...field,
7472
7485
  id: field.id,
@@ -7482,6 +7495,7 @@ class ProgramEntryFormFieldUtil {
7482
7495
  controlType: FieldUtil.getFieldControlType(field.valueType, hasOptions),
7483
7496
  metaType: field.metaType,
7484
7497
  stepId: field.stepId,
7498
+ extension,
7485
7499
  });
7486
7500
  })
7487
7501
  .sort((a, b) => a.order ?? 0 - (b.order ?? 0));