@trackunit/custom-field-components 0.0.695 → 0.0.698
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/index.cjs.js +51 -52
- package/index.esm.js +51 -52
- package/package.json +1 -1
- package/src/CustomField.d.ts +7 -3
package/index.cjs.js
CHANGED
|
@@ -408,12 +408,12 @@ const useUnitTranslation = () => {
|
|
|
408
408
|
* and functions for form registration and state management.
|
|
409
409
|
* @returns {JSX.Element | null} - The JSX Element for the custom field or null if the field definition is not provided.
|
|
410
410
|
*/
|
|
411
|
-
const useCustomFieldResolver = ({ field, register, setValue, formState, formValue, unitPreference = "SI", language, fieldId, isEditable, }) => {
|
|
412
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
411
|
+
const useCustomFieldResolver = ({ field, definition, register, setValue, formState, formValue, unitPreference = "SI", language, fieldId, isEditable, }) => {
|
|
412
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
413
413
|
const validation = { register, setValue, formState };
|
|
414
414
|
const { unitTranslation } = useUnitTranslation();
|
|
415
415
|
const [numberValue, setNumberValue] = React.useState(() => {
|
|
416
|
-
if (field.definition && field.__typename === "NumberFieldValueAndDefinition") {
|
|
416
|
+
if ((field === null || field === void 0 ? void 0 : field.definition) && field.__typename === "NumberFieldValueAndDefinition") {
|
|
417
417
|
const fieldValue = field.numberValue;
|
|
418
418
|
const unit = unitPreference === "US_CUSTOMARY" && field.definition.unitUs
|
|
419
419
|
? field.definition.unitUs
|
|
@@ -425,91 +425,90 @@ const useCustomFieldResolver = ({ field, register, setValue, formState, formValu
|
|
|
425
425
|
return "";
|
|
426
426
|
}
|
|
427
427
|
});
|
|
428
|
-
|
|
428
|
+
const def = (_a = field === null || field === void 0 ? void 0 : field.definition) !== null && _a !== void 0 ? _a : definition;
|
|
429
|
+
if (def === undefined || def.__typename === undefined) {
|
|
429
430
|
return null;
|
|
430
431
|
}
|
|
431
|
-
const
|
|
432
|
-
const
|
|
432
|
+
const uniqueIdentifier = (_b = fieldId !== null && fieldId !== void 0 ? fieldId : def === null || def === void 0 ? void 0 : def.id) !== null && _b !== void 0 ? _b : "";
|
|
433
|
+
const key = (_c = def === null || def === void 0 ? void 0 : def.key) !== null && _c !== void 0 ? _c : uniqueIdentifier;
|
|
433
434
|
const fieldError = key ? validation.formState.errors[key] : undefined;
|
|
434
435
|
const errorMessage = fieldError ? fieldError.message + "" : undefined;
|
|
435
|
-
const { description, title } =
|
|
436
|
-
const isEditableCombined = isEditable !== null && isEditable !== void 0 ? isEditable :
|
|
437
|
-
switch (
|
|
438
|
-
case "
|
|
439
|
-
const value = field.stringValue;
|
|
440
|
-
const rules = getWebAddressValidationRules(
|
|
441
|
-
return (jsxRuntime.jsx(reactFormComponents.TextField, Object.assign({ actions: !isEditableCombined && formValue && jsxRuntime.jsx(reactFormComponents.ActionButton, { type: "WEB_ADDRESS", value: formValue }), dataTestId: `${
|
|
436
|
+
const { description, title } = def !== null && def !== void 0 ? def : {};
|
|
437
|
+
const isEditableCombined = isEditable !== null && isEditable !== void 0 ? isEditable : def === null || def === void 0 ? void 0 : def.uiEditable;
|
|
438
|
+
switch (def.__typename) {
|
|
439
|
+
case "WebAddressFieldDefinition": {
|
|
440
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "WebAddressFieldValueAndDefinition" ? field.stringValue : undefined;
|
|
441
|
+
const rules = getWebAddressValidationRules(def);
|
|
442
|
+
return (jsxRuntime.jsx(reactFormComponents.TextField, Object.assign({ actions: !isEditableCombined && formValue && jsxRuntime.jsx(reactFormComponents.ActionButton, { type: "WEB_ADDRESS", value: formValue }), dataTestId: `${key}`, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title, placeholder: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })))));
|
|
442
443
|
}
|
|
443
|
-
case "
|
|
444
|
-
const value = field.stringValue;
|
|
445
|
-
const rules = getEmailValidationRules(
|
|
446
|
-
return (jsxRuntime.jsx(reactFormComponents.TextField, Object.assign({ actions: !isEditableCombined && formValue && jsxRuntime.jsx(reactFormComponents.ActionButton, { type: "EMAIL", value: formValue }), dataTestId: `${
|
|
444
|
+
case "EmailFieldDefinition": {
|
|
445
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "EmailFieldValueAndDefinition" ? field.stringValue : undefined;
|
|
446
|
+
const rules = getEmailValidationRules(def);
|
|
447
|
+
return (jsxRuntime.jsx(reactFormComponents.TextField, Object.assign({ actions: !isEditableCombined && formValue && jsxRuntime.jsx(reactFormComponents.ActionButton, { type: "EMAIL", value: formValue }), dataTestId: `${key}`, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title, placeholder: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })))));
|
|
447
448
|
}
|
|
448
|
-
case "
|
|
449
|
-
const value = field.stringValue;
|
|
450
|
-
const rules = getPhoneNumberValidationRules(
|
|
451
|
-
return (jsxRuntime.jsx(reactFormComponents.PhoneField, Object.assign({ dataTestId: `${
|
|
452
|
-
validation.setValue(
|
|
449
|
+
case "PhoneNumberFieldDefinition": {
|
|
450
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "PhoneNumberFieldValueAndDefinition" ? field.stringValue : undefined;
|
|
451
|
+
const rules = getPhoneNumberValidationRules(def);
|
|
452
|
+
return (jsxRuntime.jsx(reactFormComponents.PhoneField, Object.assign({ dataTestId: `${key}`, helpText: description, id: uniqueIdentifier, isCountryCodeClearable: !!isEditableCombined, label: title, placeholder: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined, value: value !== null && value !== void 0 ? value : "" }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })), { onChangeValue: props => {
|
|
453
|
+
validation.setValue(uniqueIdentifier, props.phone, {
|
|
453
454
|
shouldDirty: true,
|
|
454
455
|
shouldValidate: true,
|
|
455
456
|
});
|
|
456
457
|
} })));
|
|
457
458
|
}
|
|
458
|
-
case "
|
|
459
|
-
const value = field.stringValue;
|
|
460
|
-
const rules = getStringValidationRules(
|
|
461
|
-
return (jsxRuntime.jsx(reactFormComponents.TextField, Object.assign({ dataTestId: `${
|
|
459
|
+
case "StringFieldDefinition": {
|
|
460
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "StringFieldValueAndDefinition" ? field.stringValue : undefined;
|
|
461
|
+
const rules = getStringValidationRules(def);
|
|
462
|
+
return (jsxRuntime.jsx(reactFormComponents.TextField, Object.assign({ dataTestId: `${key}`, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title, placeholder: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })))));
|
|
462
463
|
}
|
|
463
|
-
case "
|
|
464
|
-
const value = field.numberValue;
|
|
465
|
-
const rules = getNumberValidationRules(
|
|
466
|
-
const unit = unitPreference === "US_CUSTOMARY" &&
|
|
467
|
-
? field.definition.unitUs
|
|
468
|
-
: field.definition.unitSi;
|
|
464
|
+
case "NumberFieldDefinition": {
|
|
465
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "NumberFieldValueAndDefinition" ? field.numberValue : undefined;
|
|
466
|
+
const rules = getNumberValidationRules(def);
|
|
467
|
+
const unit = unitPreference === "US_CUSTOMARY" && def.unitUs ? def.unitUs : def.unitSi;
|
|
469
468
|
const numberProps = {
|
|
470
469
|
placeholder: title !== null && title !== void 0 ? title : "",
|
|
471
470
|
addonAfter: unitTranslation(unit),
|
|
472
471
|
};
|
|
473
|
-
return (jsxRuntime.jsx(reactFormComponents.NumberField, Object.assign({ dataTestId: `${
|
|
472
|
+
return (jsxRuntime.jsx(reactFormComponents.NumberField, Object.assign({ dataTestId: `${key}`, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title, max: (_d = def.maximumNumber) !== null && _d !== void 0 ? _d : undefined, min: (_e = def.minimumNumber) !== null && _e !== void 0 ? _e : undefined, readOnly: !isEditableCombined, step: def.isInteger ? 1 : "any" }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })), numberProps)));
|
|
474
473
|
}
|
|
475
|
-
case "
|
|
476
|
-
const value = field.booleanValue;
|
|
477
|
-
const rules = getBooleanValidationRules(
|
|
478
|
-
return (jsxRuntime.jsx(BooleanCustomField, { dataTestId: `${
|
|
474
|
+
case "BooleanFieldDefinition": {
|
|
475
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "BooleanFieldValueAndDefinition" ? field.booleanValue : undefined;
|
|
476
|
+
const rules = getBooleanValidationRules();
|
|
477
|
+
return (jsxRuntime.jsx(BooleanCustomField, { dataTestId: `${key}`, defaultValue: value !== null && value !== void 0 ? value : undefined, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined, register: validation.register, setValue: validation.setValue, validationRules: rules }));
|
|
479
478
|
}
|
|
480
|
-
case "
|
|
481
|
-
const value = field.stringArrayValue;
|
|
482
|
-
const rules = getDropdownValidationRules(
|
|
483
|
-
return (jsxRuntime.jsx(DropdownCustomField, { allValues: (
|
|
479
|
+
case "DropDownFieldDefinition": {
|
|
480
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "DropDownFieldValueAndDefinition" ? field.stringArrayValue : undefined;
|
|
481
|
+
const rules = getDropdownValidationRules();
|
|
482
|
+
return (jsxRuntime.jsx(DropdownCustomField, { allValues: (_f = def.allValues) !== null && _f !== void 0 ? _f : undefined, dataTestId: `${key}`, defaultValue: value !== null && value !== void 0 ? value : undefined, disabled: !isEditableCombined, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title || "", multiSelect: (_g = def.multiSelect) !== null && _g !== void 0 ? _g : false, register: validation.register, setValue: validation.setValue, validationRules: rules }));
|
|
484
483
|
}
|
|
485
|
-
case "
|
|
486
|
-
const value = field.dateValue;
|
|
487
|
-
const rules = getDateValidationRules(
|
|
484
|
+
case "DateFieldDefinition": {
|
|
485
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "DateFieldValueAndDefinition" ? field.dateValue : undefined;
|
|
486
|
+
const rules = getDateValidationRules();
|
|
488
487
|
let defaultValue;
|
|
489
488
|
if (value !== undefined && value !== null) {
|
|
490
489
|
defaultValue = new Date(value);
|
|
491
490
|
}
|
|
492
|
-
return (jsxRuntime.jsx(DateCustomField, { dataTestId: `${
|
|
491
|
+
return (jsxRuntime.jsx(DateCustomField, { dataTestId: `${key}`, defaultValue: defaultValue, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title || "", readOnly: !isEditableCombined, register: validation.register, setValue: validation.setValue, title: title || "", validationRules: rules }));
|
|
493
492
|
}
|
|
494
|
-
case "
|
|
493
|
+
case "JsonFieldDefinition": {
|
|
495
494
|
return null;
|
|
496
495
|
}
|
|
497
|
-
case "
|
|
498
|
-
const rules = getNumberValidationRules(
|
|
496
|
+
case "MonetaryFieldDefinition": {
|
|
497
|
+
const rules = getNumberValidationRules(def);
|
|
499
498
|
const numberProps = {
|
|
500
499
|
placeholder: title !== null && title !== void 0 ? title : "",
|
|
501
|
-
addonAfter:
|
|
500
|
+
addonAfter: def.currency,
|
|
502
501
|
};
|
|
503
502
|
const value = numberValue === undefined || numberValue === null || numberValue === ""
|
|
504
503
|
? ""
|
|
505
504
|
: parseFloat(Number(numberValue).toPrecision(4));
|
|
506
|
-
return (jsxRuntime.jsx(reactFormComponents.NumberField, Object.assign({ dataTestId:
|
|
505
|
+
return (jsxRuntime.jsx(reactFormComponents.NumberField, Object.assign({ dataTestId: key ? key : `monetaryField`, defaultValue: value, disabled: !isEditableCombined, helpText: errorMessage || description, id: uniqueIdentifier, isInvalid: errorMessage ? true : false, label: title, max: (_h = def.maximumNumber) !== null && _h !== void 0 ? _h : undefined, min: (_j = def.minimumNumber) !== null && _j !== void 0 ? _j : undefined, readOnly: !isEditableCombined, step: "any" }, validation.register(uniqueIdentifier, rules), { onChange: e => {
|
|
507
506
|
setNumberValue(e.target.value === "" ? null : e.target.value);
|
|
508
|
-
validation.register(
|
|
507
|
+
validation.register(uniqueIdentifier, rules).onChange(e);
|
|
509
508
|
} }, numberProps)));
|
|
510
509
|
}
|
|
511
510
|
default:
|
|
512
|
-
return sharedUtils.exhaustiveCheck(
|
|
511
|
+
return sharedUtils.exhaustiveCheck(def.__typename);
|
|
513
512
|
}
|
|
514
513
|
};
|
|
515
514
|
/**
|
package/index.esm.js
CHANGED
|
@@ -385,12 +385,12 @@ const useUnitTranslation = () => {
|
|
|
385
385
|
* and functions for form registration and state management.
|
|
386
386
|
* @returns {JSX.Element | null} - The JSX Element for the custom field or null if the field definition is not provided.
|
|
387
387
|
*/
|
|
388
|
-
const useCustomFieldResolver = ({ field, register, setValue, formState, formValue, unitPreference = "SI", language, fieldId, isEditable, }) => {
|
|
389
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
388
|
+
const useCustomFieldResolver = ({ field, definition, register, setValue, formState, formValue, unitPreference = "SI", language, fieldId, isEditable, }) => {
|
|
389
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
390
390
|
const validation = { register, setValue, formState };
|
|
391
391
|
const { unitTranslation } = useUnitTranslation();
|
|
392
392
|
const [numberValue, setNumberValue] = useState(() => {
|
|
393
|
-
if (field.definition && field.__typename === "NumberFieldValueAndDefinition") {
|
|
393
|
+
if ((field === null || field === void 0 ? void 0 : field.definition) && field.__typename === "NumberFieldValueAndDefinition") {
|
|
394
394
|
const fieldValue = field.numberValue;
|
|
395
395
|
const unit = unitPreference === "US_CUSTOMARY" && field.definition.unitUs
|
|
396
396
|
? field.definition.unitUs
|
|
@@ -402,91 +402,90 @@ const useCustomFieldResolver = ({ field, register, setValue, formState, formValu
|
|
|
402
402
|
return "";
|
|
403
403
|
}
|
|
404
404
|
});
|
|
405
|
-
|
|
405
|
+
const def = (_a = field === null || field === void 0 ? void 0 : field.definition) !== null && _a !== void 0 ? _a : definition;
|
|
406
|
+
if (def === undefined || def.__typename === undefined) {
|
|
406
407
|
return null;
|
|
407
408
|
}
|
|
408
|
-
const
|
|
409
|
-
const
|
|
409
|
+
const uniqueIdentifier = (_b = fieldId !== null && fieldId !== void 0 ? fieldId : def === null || def === void 0 ? void 0 : def.id) !== null && _b !== void 0 ? _b : "";
|
|
410
|
+
const key = (_c = def === null || def === void 0 ? void 0 : def.key) !== null && _c !== void 0 ? _c : uniqueIdentifier;
|
|
410
411
|
const fieldError = key ? validation.formState.errors[key] : undefined;
|
|
411
412
|
const errorMessage = fieldError ? fieldError.message + "" : undefined;
|
|
412
|
-
const { description, title } =
|
|
413
|
-
const isEditableCombined = isEditable !== null && isEditable !== void 0 ? isEditable :
|
|
414
|
-
switch (
|
|
415
|
-
case "
|
|
416
|
-
const value = field.stringValue;
|
|
417
|
-
const rules = getWebAddressValidationRules(
|
|
418
|
-
return (jsx(TextField, Object.assign({ actions: !isEditableCombined && formValue && jsx(ActionButton, { type: "WEB_ADDRESS", value: formValue }), dataTestId: `${
|
|
413
|
+
const { description, title } = def !== null && def !== void 0 ? def : {};
|
|
414
|
+
const isEditableCombined = isEditable !== null && isEditable !== void 0 ? isEditable : def === null || def === void 0 ? void 0 : def.uiEditable;
|
|
415
|
+
switch (def.__typename) {
|
|
416
|
+
case "WebAddressFieldDefinition": {
|
|
417
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "WebAddressFieldValueAndDefinition" ? field.stringValue : undefined;
|
|
418
|
+
const rules = getWebAddressValidationRules(def);
|
|
419
|
+
return (jsx(TextField, Object.assign({ actions: !isEditableCombined && formValue && jsx(ActionButton, { type: "WEB_ADDRESS", value: formValue }), dataTestId: `${key}`, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title, placeholder: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })))));
|
|
419
420
|
}
|
|
420
|
-
case "
|
|
421
|
-
const value = field.stringValue;
|
|
422
|
-
const rules = getEmailValidationRules(
|
|
423
|
-
return (jsx(TextField, Object.assign({ actions: !isEditableCombined && formValue && jsx(ActionButton, { type: "EMAIL", value: formValue }), dataTestId: `${
|
|
421
|
+
case "EmailFieldDefinition": {
|
|
422
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "EmailFieldValueAndDefinition" ? field.stringValue : undefined;
|
|
423
|
+
const rules = getEmailValidationRules(def);
|
|
424
|
+
return (jsx(TextField, Object.assign({ actions: !isEditableCombined && formValue && jsx(ActionButton, { type: "EMAIL", value: formValue }), dataTestId: `${key}`, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title, placeholder: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })))));
|
|
424
425
|
}
|
|
425
|
-
case "
|
|
426
|
-
const value = field.stringValue;
|
|
427
|
-
const rules = getPhoneNumberValidationRules(
|
|
428
|
-
return (jsx(PhoneField, Object.assign({ dataTestId: `${
|
|
429
|
-
validation.setValue(
|
|
426
|
+
case "PhoneNumberFieldDefinition": {
|
|
427
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "PhoneNumberFieldValueAndDefinition" ? field.stringValue : undefined;
|
|
428
|
+
const rules = getPhoneNumberValidationRules(def);
|
|
429
|
+
return (jsx(PhoneField, Object.assign({ dataTestId: `${key}`, helpText: description, id: uniqueIdentifier, isCountryCodeClearable: !!isEditableCombined, label: title, placeholder: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined, value: value !== null && value !== void 0 ? value : "" }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })), { onChangeValue: props => {
|
|
430
|
+
validation.setValue(uniqueIdentifier, props.phone, {
|
|
430
431
|
shouldDirty: true,
|
|
431
432
|
shouldValidate: true,
|
|
432
433
|
});
|
|
433
434
|
} })));
|
|
434
435
|
}
|
|
435
|
-
case "
|
|
436
|
-
const value = field.stringValue;
|
|
437
|
-
const rules = getStringValidationRules(
|
|
438
|
-
return (jsx(TextField, Object.assign({ dataTestId: `${
|
|
436
|
+
case "StringFieldDefinition": {
|
|
437
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "StringFieldValueAndDefinition" ? field.stringValue : undefined;
|
|
438
|
+
const rules = getStringValidationRules(def);
|
|
439
|
+
return (jsx(TextField, Object.assign({ dataTestId: `${key}`, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title, placeholder: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })))));
|
|
439
440
|
}
|
|
440
|
-
case "
|
|
441
|
-
const value = field.numberValue;
|
|
442
|
-
const rules = getNumberValidationRules(
|
|
443
|
-
const unit = unitPreference === "US_CUSTOMARY" &&
|
|
444
|
-
? field.definition.unitUs
|
|
445
|
-
: field.definition.unitSi;
|
|
441
|
+
case "NumberFieldDefinition": {
|
|
442
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "NumberFieldValueAndDefinition" ? field.numberValue : undefined;
|
|
443
|
+
const rules = getNumberValidationRules(def);
|
|
444
|
+
const unit = unitPreference === "US_CUSTOMARY" && def.unitUs ? def.unitUs : def.unitSi;
|
|
446
445
|
const numberProps = {
|
|
447
446
|
placeholder: title !== null && title !== void 0 ? title : "",
|
|
448
447
|
addonAfter: unitTranslation(unit),
|
|
449
448
|
};
|
|
450
|
-
return (jsx(NumberField, Object.assign({ dataTestId: `${
|
|
449
|
+
return (jsx(NumberField, Object.assign({ dataTestId: `${key}`, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title, max: (_d = def.maximumNumber) !== null && _d !== void 0 ? _d : undefined, min: (_e = def.minimumNumber) !== null && _e !== void 0 ? _e : undefined, readOnly: !isEditableCombined, step: def.isInteger ? 1 : "any" }, validation.register(uniqueIdentifier, Object.assign(Object.assign({}, rules), { value })), numberProps)));
|
|
451
450
|
}
|
|
452
|
-
case "
|
|
453
|
-
const value = field.booleanValue;
|
|
454
|
-
const rules = getBooleanValidationRules(
|
|
455
|
-
return (jsx(BooleanCustomField, { dataTestId: `${
|
|
451
|
+
case "BooleanFieldDefinition": {
|
|
452
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "BooleanFieldValueAndDefinition" ? field.booleanValue : undefined;
|
|
453
|
+
const rules = getBooleanValidationRules();
|
|
454
|
+
return (jsx(BooleanCustomField, { dataTestId: `${key}`, defaultValue: value !== null && value !== void 0 ? value : undefined, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title !== null && title !== void 0 ? title : "", readOnly: !isEditableCombined, register: validation.register, setValue: validation.setValue, validationRules: rules }));
|
|
456
455
|
}
|
|
457
|
-
case "
|
|
458
|
-
const value = field.stringArrayValue;
|
|
459
|
-
const rules = getDropdownValidationRules(
|
|
460
|
-
return (jsx(DropdownCustomField, { allValues: (
|
|
456
|
+
case "DropDownFieldDefinition": {
|
|
457
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "DropDownFieldValueAndDefinition" ? field.stringArrayValue : undefined;
|
|
458
|
+
const rules = getDropdownValidationRules();
|
|
459
|
+
return (jsx(DropdownCustomField, { allValues: (_f = def.allValues) !== null && _f !== void 0 ? _f : undefined, dataTestId: `${key}`, defaultValue: value !== null && value !== void 0 ? value : undefined, disabled: !isEditableCombined, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title || "", multiSelect: (_g = def.multiSelect) !== null && _g !== void 0 ? _g : false, register: validation.register, setValue: validation.setValue, validationRules: rules }));
|
|
461
460
|
}
|
|
462
|
-
case "
|
|
463
|
-
const value = field.dateValue;
|
|
464
|
-
const rules = getDateValidationRules(
|
|
461
|
+
case "DateFieldDefinition": {
|
|
462
|
+
const value = (field === null || field === void 0 ? void 0 : field.__typename) === "DateFieldValueAndDefinition" ? field.dateValue : undefined;
|
|
463
|
+
const rules = getDateValidationRules();
|
|
465
464
|
let defaultValue;
|
|
466
465
|
if (value !== undefined && value !== null) {
|
|
467
466
|
defaultValue = new Date(value);
|
|
468
467
|
}
|
|
469
|
-
return (jsx(DateCustomField, { dataTestId: `${
|
|
468
|
+
return (jsx(DateCustomField, { dataTestId: `${key}`, defaultValue: defaultValue, errorMessage: errorMessage, helpText: description, id: uniqueIdentifier, label: title || "", readOnly: !isEditableCombined, register: validation.register, setValue: validation.setValue, title: title || "", validationRules: rules }));
|
|
470
469
|
}
|
|
471
|
-
case "
|
|
470
|
+
case "JsonFieldDefinition": {
|
|
472
471
|
return null;
|
|
473
472
|
}
|
|
474
|
-
case "
|
|
475
|
-
const rules = getNumberValidationRules(
|
|
473
|
+
case "MonetaryFieldDefinition": {
|
|
474
|
+
const rules = getNumberValidationRules(def);
|
|
476
475
|
const numberProps = {
|
|
477
476
|
placeholder: title !== null && title !== void 0 ? title : "",
|
|
478
|
-
addonAfter:
|
|
477
|
+
addonAfter: def.currency,
|
|
479
478
|
};
|
|
480
479
|
const value = numberValue === undefined || numberValue === null || numberValue === ""
|
|
481
480
|
? ""
|
|
482
481
|
: parseFloat(Number(numberValue).toPrecision(4));
|
|
483
|
-
return (jsx(NumberField, Object.assign({ dataTestId:
|
|
482
|
+
return (jsx(NumberField, Object.assign({ dataTestId: key ? key : `monetaryField`, defaultValue: value, disabled: !isEditableCombined, helpText: errorMessage || description, id: uniqueIdentifier, isInvalid: errorMessage ? true : false, label: title, max: (_h = def.maximumNumber) !== null && _h !== void 0 ? _h : undefined, min: (_j = def.minimumNumber) !== null && _j !== void 0 ? _j : undefined, readOnly: !isEditableCombined, step: "any" }, validation.register(uniqueIdentifier, rules), { onChange: e => {
|
|
484
483
|
setNumberValue(e.target.value === "" ? null : e.target.value);
|
|
485
|
-
validation.register(
|
|
484
|
+
validation.register(uniqueIdentifier, rules).onChange(e);
|
|
486
485
|
} }, numberProps)));
|
|
487
486
|
}
|
|
488
487
|
default:
|
|
489
|
-
return exhaustiveCheck(
|
|
488
|
+
return exhaustiveCheck(def.__typename);
|
|
490
489
|
}
|
|
491
490
|
};
|
|
492
491
|
/**
|
package/package.json
CHANGED
package/src/CustomField.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { CustomFieldValueAndDefinition } from "@trackunit/custom-field-api";
|
|
2
|
+
import { CustomFieldDefinition, CustomFieldValueAndDefinition } from "@trackunit/custom-field-api";
|
|
3
3
|
import { FieldValues, FormState, UseFormRegister, UseFormSetValue } from "react-hook-form";
|
|
4
4
|
import { UnitPreference } from "./UnitPreference";
|
|
5
5
|
/**
|
|
@@ -10,7 +10,11 @@ interface CustomFieldProps {
|
|
|
10
10
|
/**
|
|
11
11
|
* The value and definition of the custom field to be rendered.
|
|
12
12
|
*/
|
|
13
|
-
field
|
|
13
|
+
field?: CustomFieldValueAndDefinition;
|
|
14
|
+
/**
|
|
15
|
+
* The definition of the custom field to be rendered.
|
|
16
|
+
*/
|
|
17
|
+
definition?: CustomFieldDefinition;
|
|
14
18
|
/**
|
|
15
19
|
* A function from react-hook-form to register input for validation.
|
|
16
20
|
*/
|
|
@@ -53,7 +57,7 @@ interface CustomFieldProps {
|
|
|
53
57
|
* and functions for form registration and state management.
|
|
54
58
|
* @returns {JSX.Element | null} - The JSX Element for the custom field or null if the field definition is not provided.
|
|
55
59
|
*/
|
|
56
|
-
export declare const useCustomFieldResolver: ({ field, register, setValue, formState, formValue, unitPreference, language, fieldId, isEditable, }: CustomFieldProps) => JSX.Element | null;
|
|
60
|
+
export declare const useCustomFieldResolver: ({ field, definition, register, setValue, formState, formValue, unitPreference, language, fieldId, isEditable, }: CustomFieldProps) => JSX.Element | null;
|
|
57
61
|
/**
|
|
58
62
|
* CustomField is a React component that takes in the properties of a custom field and renders it.
|
|
59
63
|
* It utilizes the `useCustomFieldResolver` hook to resolve the field into an input element
|