diff --git a/packages/netlify-cms-core/src/components/Editor/EditorControlPane/Widget.js b/packages/netlify-cms-core/src/components/Editor/EditorControlPane/Widget.js index 94b1942c..5a2b96c2 100644 --- a/packages/netlify-cms-core/src/components/Editor/EditorControlPane/Widget.js +++ b/packages/netlify-cms-core/src/components/Editor/EditorControlPane/Widget.js @@ -97,7 +97,7 @@ export default class Widget extends Component { }; validate = (skipWrapped = false) => { - let value = this.props.value; + let value = this.innerWrappedControl?.getValidateValue?.() || this.props.value; // Convert list input widget value to string for validation test List.isList(value) && (value = value.join(',')); diff --git a/packages/netlify-cms-widget-file/src/withFileControl.js b/packages/netlify-cms-widget-file/src/withFileControl.js index 09ea8576..339c7ff4 100644 --- a/packages/netlify-cms-widget-file/src/withFileControl.js +++ b/packages/netlify-cms-widget-file/src/withFileControl.js @@ -7,6 +7,7 @@ import { once } from 'lodash'; import uuid from 'uuid/v4'; import { oneLine } from 'common-tags'; import { lengths, components, buttons, borders, effects, shadows } from 'netlify-cms-ui-default'; +import { basename } from 'netlify-cms-lib-util'; const MAX_DISPLAY_LENGTH = 50; @@ -175,6 +176,14 @@ export default function withFileControl({ forImage } = {}) { return this.props.onChange(''); }; + getValidateValue = () => { + if (this.props.value) { + return basename(this.props.value); + } + + return this.props.value; + }; + renderFileLink = value => { const size = MAX_DISPLAY_LENGTH; if (!value || value.length <= size) {