util.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // form item name black list. in form ,you can use form.id get the form item element.
  2. // use object hasOwnProperty will get better performance if black list is longer.
  3. const formItemNameBlackList = ['parentNode'];
  4. // default form item id prefix.
  5. const defaultItemNamePrefixCls = 'form_item';
  6. export function toArray(candidate) {
  7. if (candidate === undefined || candidate === false) return [];
  8. return Array.isArray(candidate) ? candidate : [candidate];
  9. }
  10. export function getFieldId(namePath, formName) {
  11. if (!namePath.length) {
  12. return undefined;
  13. }
  14. const mergedId = namePath.join('_');
  15. if (formName) {
  16. return `${formName}_${mergedId}`;
  17. }
  18. const isIllegalName = formItemNameBlackList.includes(mergedId);
  19. return isIllegalName ? `${defaultItemNamePrefixCls}_${mergedId}` : mergedId;
  20. }
  21. /**
  22. * Get merged status by meta or passed `validateStatus`.
  23. */
  24. export function getStatus(errors, warnings, meta, defaultValidateStatus, hasFeedback, validateStatus) {
  25. let status = defaultValidateStatus;
  26. if (validateStatus !== undefined) {
  27. status = validateStatus;
  28. } else if (meta.validating) {
  29. status = 'validating';
  30. } else if (errors.length) {
  31. status = 'error';
  32. } else if (warnings.length) {
  33. status = 'warning';
  34. } else if (meta.touched || hasFeedback && meta.validated) {
  35. // success feedback should display when pass hasFeedback prop and current value is valid value
  36. status = 'success';
  37. }
  38. return status;
  39. }