UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

81 lines 4.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getStatusForArrayInput = exports.getSelectedReferencesStatus = exports.REFERENCES_STATUS_EMPTY = exports.REFERENCES_STATUS_INCOMPLETE = exports.REFERENCES_STATUS_READY = exports.getStatusForInput = void 0; const isMatchingReferencesError = (matchingReferences) => matchingReferences && matchingReferences.error !== undefined; const getStatusForInput = ({ field, matchingReferences, referenceRecord, translate = x => x, }) => { const matchingReferencesError = isMatchingReferencesError(matchingReferences) ? translate(matchingReferences.error, { _: matchingReferences.error, }) : null; const selectedReferenceError = field.value && !referenceRecord ? translate('ra.input.references.single_missing', { _: 'ra.input.references.single_missing', }) : null; return { waiting: (field.value && selectedReferenceError && !matchingReferences) || (!field.value && !matchingReferences), error: (field.value && selectedReferenceError && matchingReferencesError) || (!field.value && matchingReferencesError) ? field.value ? selectedReferenceError : matchingReferencesError : null, warning: selectedReferenceError || matchingReferencesError, choices: Array.isArray(matchingReferences) ? matchingReferences : [referenceRecord].filter(choice => choice), }; }; exports.getStatusForInput = getStatusForInput; exports.REFERENCES_STATUS_READY = 'REFERENCES_STATUS_READY'; exports.REFERENCES_STATUS_INCOMPLETE = 'REFERENCES_STATUS_INCOMPLETE'; exports.REFERENCES_STATUS_EMPTY = 'REFERENCES_STATUS_EMPTY'; const getSelectedReferencesStatus = (field, referenceRecords) => !field.value || field.value.length === referenceRecords.length ? exports.REFERENCES_STATUS_READY : referenceRecords.length > 0 ? exports.REFERENCES_STATUS_INCOMPLETE : exports.REFERENCES_STATUS_EMPTY; exports.getSelectedReferencesStatus = getSelectedReferencesStatus; const getStatusForArrayInput = ({ field, matchingReferences, referenceRecords, translate = x => x, }) => { // selectedReferencesDataStatus can be "empty" (no data was found for references from input.value) // or "incomplete" (Not all of the reference data was found) // or "ready" (all references data was found or there is no references from input.value) const selectedReferencesDataStatus = (0, exports.getSelectedReferencesStatus)(field, referenceRecords); const matchingReferencesError = isMatchingReferencesError(matchingReferences) ? translate(matchingReferences.error, { _: matchingReferences.error, }) : null; const choices = Array.isArray(matchingReferences) ? referenceRecords.concat(matchingReferences.filter(choice => referenceRecords.findIndex(c => c.id === choice.id) === -1)) : referenceRecords; return { waiting: (!matchingReferences && field.value && selectedReferencesDataStatus === exports.REFERENCES_STATUS_EMPTY) || (!matchingReferences && !field.value), error: matchingReferencesError && (!field.value || (field.value && selectedReferencesDataStatus === exports.REFERENCES_STATUS_EMPTY)) ? translate('ra.input.references.all_missing', { _: 'ra.input.references.all_missing', }) : null, warning: matchingReferencesError || (field.value && selectedReferencesDataStatus !== exports.REFERENCES_STATUS_READY) ? matchingReferencesError || translate('ra.input.references.many_missing', { _: 'ra.input.references.many_missing', }) : null, choices, }; }; exports.getStatusForArrayInput = getStatusForArrayInput; //# sourceMappingURL=referenceDataStatus.js.map