diff --git a/packages/netlify-cms-locales/src/ca/index.js b/packages/netlify-cms-locales/src/ca/index.js index 6aac6278..94458c98 100644 --- a/packages/netlify-cms-locales/src/ca/index.js +++ b/packages/netlify-cms-locales/src/ca/index.js @@ -84,8 +84,8 @@ const ca = { max: '%{fieldLabel} ha de ser %{maxValue} o més.', rangeCount: '%{fieldLabel} ha de tenir entre %{minCount} i %{maxCount} element(s).', rangeCountExact: '%{fieldLabel} ha de tenir exactament %{count} element(s).', - minCount: '%{fieldLabel} ha de tenir com a mínim %{minCount} element(s).', - maxCount: '%{fieldLabel} ha de ser %{maxCount} o inferior.', + rangeMin: '%{fieldLabel} ha de tenir com a mínim %{minCount} element(s).', + rangeMax: '%{fieldLabel} ha de ser %{maxCount} o inferior.', invalidPath: `'%{path}' no és un camí vàlid`, pathExists: `'%{path}' ja existeix`, }, diff --git a/packages/netlify-cms-locales/src/da/index.js b/packages/netlify-cms-locales/src/da/index.js index 61d3eb37..22364113 100644 --- a/packages/netlify-cms-locales/src/da/index.js +++ b/packages/netlify-cms-locales/src/da/index.js @@ -85,8 +85,8 @@ const da = { max: '%{fieldLabel} være være %{maxValue} eller mindre.', rangeCount: '%{fieldLabel} skal have mellem %{minCount} og %{maxCount} element(er).', rangeCountExact: '%{fieldLabel} skal have præcis %{count} element(er).', - minCount: '%{fieldLabel} skal have mindst %{minCount} element(er).', - maxCount: '%{fieldLabel} skal have %{maxCount} eller færre element(er).', + rangeMin: '%{fieldLabel} skal have mindst %{minCount} element(er).', + rangeMax: '%{fieldLabel} skal have %{maxCount} eller færre element(er).', invalidPath: `'%{path}' er ikke en gyldig sti`, pathExists: `Stien '%{path}' findes allerede`, }, diff --git a/packages/netlify-cms-locales/src/de/index.js b/packages/netlify-cms-locales/src/de/index.js index 70ccae9d..96451bf8 100644 --- a/packages/netlify-cms-locales/src/de/index.js +++ b/packages/netlify-cms-locales/src/de/index.js @@ -79,8 +79,8 @@ const de = { max: '%{fieldLabel} darf nicht größer als %{maxValue} sein.', rangeCount: '%{fieldLabel} muss %{minCount} bis %{maxCount} Element(e) enthalten.', rangeCountExact: '%{fieldLabel} muss exakt %{count} Element(e) enthalten.', - minCount: '%{fieldLabel} muss mindestens %{minCount} Element(e) enthalten.', - maxCount: '%{fieldLabel} darf maximal %{maxCount} Element(e) enthalten.', + rangeMin: '%{fieldLabel} muss mindestens %{minCount} Element(e) enthalten.', + rangeMax: '%{fieldLabel} darf maximal %{maxCount} Element(e) enthalten.', invalidPath: `'%{path}' ist kein gültiger Pfad`, pathExists: `Pfad '%{path}' existiert bereits`, }, diff --git a/packages/netlify-cms-locales/src/en/index.js b/packages/netlify-cms-locales/src/en/index.js index 6fa827ab..7c4f6137 100644 --- a/packages/netlify-cms-locales/src/en/index.js +++ b/packages/netlify-cms-locales/src/en/index.js @@ -85,8 +85,8 @@ const en = { max: '%{fieldLabel} must be %{maxValue} or less.', rangeCount: '%{fieldLabel} must have between %{minCount} and %{maxCount} item(s).', rangeCountExact: '%{fieldLabel} must have exactly %{count} item(s).', - minCount: '%{fieldLabel} must be at least %{minCount} item(s).', - maxCount: '%{fieldLabel} must be %{maxCount} or less item(s).', + rangeMin: '%{fieldLabel} must be at least %{minCount} item(s).', + rangeMax: '%{fieldLabel} must be %{maxCount} or less item(s).', invalidPath: `'%{path}' is not a valid path`, pathExists: `Path '%{path}' already exists`, }, diff --git a/packages/netlify-cms-locales/src/es/index.js b/packages/netlify-cms-locales/src/es/index.js index 2767551c..5ed8d663 100644 --- a/packages/netlify-cms-locales/src/es/index.js +++ b/packages/netlify-cms-locales/src/es/index.js @@ -74,8 +74,8 @@ const es = { max: '%{fieldLabel} debe ser %{maxValue} o menos.', rangeCount: '%{fieldLabel} debe tener entre %{minCount} y %{maxCount} elemento(s).', rangeCountExact: '%{fieldLabel} debe tener exactamente %{count} elemento(s).', - minCount: '%{fieldLabel} debe ser por lo menos %{minCount} elemento(s).', - maxCount: '%{fieldLabel} debe ser %{maxCount} o menos elemento(s).', + rangeMin: '%{fieldLabel} debe ser por lo menos %{minCount} elemento(s).', + rangeMax: '%{fieldLabel} debe ser %{maxCount} o menos elemento(s).', }, }, editor: { diff --git a/packages/netlify-cms-locales/src/fr/index.js b/packages/netlify-cms-locales/src/fr/index.js index 25117dbf..48cdd862 100644 --- a/packages/netlify-cms-locales/src/fr/index.js +++ b/packages/netlify-cms-locales/src/fr/index.js @@ -86,8 +86,8 @@ const fr = { max: 'Le champ %{fieldLabel} doit avoir une valeur de %{maxValue} ou moins.', rangeCount: '%{fieldLabel} doit avoir entre %{minCount} et %{maxCount} élément(s).', rangeCountExact: '%{fieldLabel} doit avoir exactement %{count} éléments(s).', - minCount: '%{fieldLabel} doit avoir au moins %{minCount} éléments(s).', - maxCount: '%{fieldLabel} doit avoir %{maxCount} éléments(s) ou moins.', + rangeMin: '%{fieldLabel} doit avoir au moins %{minCount} éléments(s).', + rangeMax: '%{fieldLabel} doit avoir %{maxCount} éléments(s) ou moins.', invalidPath: `'%{path}' n'est pas un chemin valide`, pathExists: `Le chemin '%{path}' existe déjà`, }, diff --git a/packages/netlify-cms-locales/src/hr/index.js b/packages/netlify-cms-locales/src/hr/index.js index 992e352d..3690a455 100644 --- a/packages/netlify-cms-locales/src/hr/index.js +++ b/packages/netlify-cms-locales/src/hr/index.js @@ -85,8 +85,8 @@ const hr = { max: '%{fieldLabel} mora biti %{maxValue} ili manje.', rangeCount: '%{fieldLabel} mora imati izeđu %{minCount} i %{maxCount} predmeta.', rangeCountExact: '%{fieldLabel} mora imati točno %{count} predmeta.', - minCount: '%{fieldLabel} mora imati najmanje %{minCount} predmet(a).', - maxCount: '%{fieldLabel} mora imate %{maxCount} ili manje predmeta.', + rangeMin: '%{fieldLabel} mora imati najmanje %{minCount} predmet(a).', + rangeMax: '%{fieldLabel} mora imate %{maxCount} ili manje predmeta.', invalidPath: `'%{path}' nije valjana putanja`, pathExists: `Putanja '%{path}' već postoji`, }, diff --git a/packages/netlify-cms-locales/src/ja/index.js b/packages/netlify-cms-locales/src/ja/index.js index aadca425..17f56378 100644 --- a/packages/netlify-cms-locales/src/ja/index.js +++ b/packages/netlify-cms-locales/src/ja/index.js @@ -85,8 +85,8 @@ const ja = { max: '%{fieldLabel}の最大値は%{maxValue}です。', rangeCount: '%{fieldLabel}は%{minCount}個から%{maxCount}個まで選択してください。', rangeCountExact: '%{fieldLabel}はちょうど%{count}個選択してください。', - minCount: '%{fieldLabel}は%{minCount}個以上選択してください。', - maxCount: '%{fieldLabel}は%{maxCount}個以下選択してください。', + rangeMin: '%{fieldLabel}は%{minCount}個以上選択してください。', + rangeMax: '%{fieldLabel}は%{maxCount}個以下選択してください。', invalidPath: `'%{path}'は有効なパスではありません。`, pathExists: `'%{path}'というパスはすでに存在しています。`, }, diff --git a/packages/netlify-cms-locales/src/ko/index.js b/packages/netlify-cms-locales/src/ko/index.js index d211f45e..3db20da0 100644 --- a/packages/netlify-cms-locales/src/ko/index.js +++ b/packages/netlify-cms-locales/src/ko/index.js @@ -79,8 +79,8 @@ const ko = { max: '%{fieldLabel} 은(는) 최대 %{maxValue} 여야 합니다.', rangeCount: '%{fieldLabel} 개수는 %{minCount} 개 에서 %{maxCount} 개 사이여야 합니다.', rangeCountExact: '%{fieldLabel} 개수는 정확히 %{count} 개 여야 합니다.', - minCount: '%{fieldLabel} 개수는 적어도 %{minCount} 개 이상 이여야 합니다.', - maxCount: '%{fieldLabel} 개수는 최대 %{maxCount} 개 여야 합니다.', + rangeMin: '%{fieldLabel} 개수는 적어도 %{minCount} 개 이상 이여야 합니다.', + rangeMax: '%{fieldLabel} 개수는 최대 %{maxCount} 개 여야 합니다.', invalidPath: `'%{path}' 은(는) 올바른 경로가 아닙니다.`, pathExists: `'%{path}' 경로가 이미 존재합니다.`, }, diff --git a/packages/netlify-cms-locales/src/lt/index.js b/packages/netlify-cms-locales/src/lt/index.js index 85946098..11f2874e 100644 --- a/packages/netlify-cms-locales/src/lt/index.js +++ b/packages/netlify-cms-locales/src/lt/index.js @@ -86,8 +86,8 @@ const lt = { max: '%{fieldLabel} turi būti %{maxValue} arba mažiau.', rangeCount: '%{fieldLabel} turi būti tarp %{minCount} ir %{maxCount} elementų/-o.', rangeCountExact: '%{fieldLabel} turi turėti būtent tik %{count} elementų/-us.', - minCount: '%{fieldLabel} turi būti bent %{minCount} elementų.', - maxCount: '%{fieldLabel} turi būti %{maxCount} arba mažiau elementų.', + rangeMin: '%{fieldLabel} turi būti bent %{minCount} elementų.', + rangeMax: '%{fieldLabel} turi būti %{maxCount} arba mažiau elementų.', invalidPath: `'%{path}' nėra taisyklinga nuoroda/adresas į resursą/-us`, pathExists: `Adresas '%{path}' jau egzistuoja`, }, diff --git a/packages/netlify-cms-locales/src/nb_no/index.js b/packages/netlify-cms-locales/src/nb_no/index.js index 17f1efe4..ed630afb 100644 --- a/packages/netlify-cms-locales/src/nb_no/index.js +++ b/packages/netlify-cms-locales/src/nb_no/index.js @@ -74,8 +74,8 @@ const nb_no = { max: '%{fieldLabel} må være %{maxValue} eller mindre.', rangeCount: '%{fieldLabel} må ha mellom %{minCount} og %{maxCount} element(er).', rangeCountExact: '%{fieldLabel} må ha nøyaktig %{count} element(er).', - minCount: '%{fieldLabel} må minst ha %{minCount} element(er).', - maxCount: '%{fieldLabel} må ha %{maxCount} eller færre element(er).', + rangeMin: '%{fieldLabel} må minst ha %{minCount} element(er).', + rangeMax: '%{fieldLabel} må ha %{maxCount} eller færre element(er).', }, }, editor: { diff --git a/packages/netlify-cms-locales/src/nl/index.js b/packages/netlify-cms-locales/src/nl/index.js index 703d92fc..0be48649 100644 --- a/packages/netlify-cms-locales/src/nl/index.js +++ b/packages/netlify-cms-locales/src/nl/index.js @@ -85,8 +85,8 @@ const nl = { max: '%{fieldLabel} moet hoogstens %{maxValue} bevatten.', rangeCount: '%{fieldLabel} moet tussen %{minCount} en %{maxCount} item(s) bevatten.', rangeCountExact: '%{fieldLabel} moet exact %{count} item(s) bevatten.', - minCount: '%{fieldLabel} moet tenminste %{minCount} item(s) bevatten.', - maxCount: '%{fieldLabel} moet hoogstens %{maxCount} item(s) bevatten.', + rangeMin: '%{fieldLabel} moet tenminste %{minCount} item(s) bevatten.', + rangeMax: '%{fieldLabel} moet hoogstens %{maxCount} item(s) bevatten.', }, i18n: { writingInLocale: '%{locale} aan het bewerken', diff --git a/packages/netlify-cms-locales/src/nn_no/index.js b/packages/netlify-cms-locales/src/nn_no/index.js index d8ed891d..eb86d57b 100644 --- a/packages/netlify-cms-locales/src/nn_no/index.js +++ b/packages/netlify-cms-locales/src/nn_no/index.js @@ -74,8 +74,8 @@ const nn_no = { max: '%{fieldLabel} må vera %{maxValue} eller mindre.', rangeCount: '%{fieldLabel} må ha mellom %{minCount} og %{maxCount} element.', rangeCountExact: '%{fieldLabel} må ha nøyaktig %{count} element.', - minCount: '%{fieldLabel} må minst ha %{minCount} element.', - maxCount: '%{fieldLabel} må ha %{maxCount} eller færre element.', + rangeMin: '%{fieldLabel} må minst ha %{minCount} element.', + rangeMax: '%{fieldLabel} må ha %{maxCount} eller færre element.', }, }, editor: { diff --git a/packages/netlify-cms-locales/src/pl/index.js b/packages/netlify-cms-locales/src/pl/index.js index 1166ff80..a5b18bf9 100644 --- a/packages/netlify-cms-locales/src/pl/index.js +++ b/packages/netlify-cms-locales/src/pl/index.js @@ -74,8 +74,8 @@ const pl = { max: '%{fieldLabel} musi być %{maxValue} lub mniej.', rangeCount: '%{fieldLabel} musi mieć od %{minCount} do %{maxCount} elementów', rangeCountExact: '%{fieldLabel} musi mieć %{count} elementów', - minCount: '%{fieldLabel} musi mieć przynajmniej %{minCount} elementów', - maxCount: '%{fieldLabel} może mieć maksymalnie %{maxCount} elementów', + rangeMin: '%{fieldLabel} musi mieć przynajmniej %{minCount} elementów', + rangeMax: '%{fieldLabel} może mieć maksymalnie %{maxCount} elementów', }, }, editor: { diff --git a/packages/netlify-cms-locales/src/pt/index.js b/packages/netlify-cms-locales/src/pt/index.js index fe128258..9c26520d 100644 --- a/packages/netlify-cms-locales/src/pt/index.js +++ b/packages/netlify-cms-locales/src/pt/index.js @@ -79,8 +79,8 @@ const pt = { max: '%{fieldLabel} deve ser igual ou menor que %{maxValue}.', rangeCount: '%{fieldLabel} deve ser entre %{minCount} e %{maxCount}.', rangeCountExact: '%{fieldLabel} deve ser exatamente %{count}.', - minCount: '%{fieldLabel} deve ter, pelo menos, %{minCount}.', - maxCount: '%{fieldLabel} deve ter %{maxCount} ou menos.', + rangeMin: '%{fieldLabel} deve ter, pelo menos, %{minCount}.', + rangeMax: '%{fieldLabel} deve ter %{maxCount} ou menos.', invalidPath: `'%{path}' não é um caminho válido`, pathExists: `O caminho '%{path}' já existe`, }, diff --git a/packages/netlify-cms-locales/src/ru/index.js b/packages/netlify-cms-locales/src/ru/index.js index 49841b98..532403b2 100644 --- a/packages/netlify-cms-locales/src/ru/index.js +++ b/packages/netlify-cms-locales/src/ru/index.js @@ -85,8 +85,8 @@ const ru = { max: 'Значение поля %{fieldLabel} должно быть %{maxValue} или менее.', rangeCount: '%{fieldLabel} должно содержать от %{minCount} до %{maxCount} элементов.', rangeCountExact: '%{fieldLabel} должно содержать строго %{count} элементов.', - minCount: '%{fieldLabel} должно содержать не менее %{minCount} элементов.', - maxCount: '%{fieldLabel} должно содержать %{maxCount} или менее элементов.', + rangeMin: '%{fieldLabel} должно содержать не менее %{minCount} элементов.', + rangeMax: '%{fieldLabel} должно содержать %{maxCount} или менее элементов.', invalidPath: `Путь '%{path}' содежрит ошибки`, pathExists: `Путь '%{path}' уже существует`, }, diff --git a/packages/netlify-cms-locales/src/sv/index.js b/packages/netlify-cms-locales/src/sv/index.js index f460440d..72f5d52f 100644 --- a/packages/netlify-cms-locales/src/sv/index.js +++ b/packages/netlify-cms-locales/src/sv/index.js @@ -74,8 +74,8 @@ const sv = { max: '%{fieldLabel} måste vara %{maxValue} eller mindre.', rangeCount: '%{fieldLabel} måste ha mellan %{minCount} och %{maxCount} element.', rangeCountExact: '%{fieldLabel} måste ha exakt %{count} element.', - minCount: '%{fieldLabel} måste ha åtminstone %{minCount} element.', - maxCount: '%{fieldLabel} måste ha %{maxCount} eller färre element.', + rangeMin: '%{fieldLabel} måste ha åtminstone %{minCount} element.', + rangeMax: '%{fieldLabel} måste ha %{maxCount} eller färre element.', }, }, editor: { diff --git a/packages/netlify-cms-locales/src/th/index.js b/packages/netlify-cms-locales/src/th/index.js index 8c151f7b..750e6c11 100644 --- a/packages/netlify-cms-locales/src/th/index.js +++ b/packages/netlify-cms-locales/src/th/index.js @@ -79,8 +79,8 @@ const th = { max: '%{fieldLabel} จะต้องมีค่าไม่มากกว่า %{maxValue}', rangeCount: '%{fieldLabel} จะต้องอยู่ระหว่าง %{minCount} และ %{maxCount} รายการ', rangeCountExact: '%{fieldLabel} จะต้องมี %{count} รายการ', - minCount: '%{fieldLabel} จะต้องมีไม่ต่ำกว่า %{minCount} รายการ', - maxCount: '%{fieldLabel} จะต้องมีไม่มากกว่า %{maxCount} รายการ', + rangeMin: '%{fieldLabel} จะต้องมีไม่ต่ำกว่า %{minCount} รายการ', + rangeMax: '%{fieldLabel} จะต้องมีไม่มากกว่า %{maxCount} รายการ', invalidPath: `'%{path}' พาทไม่ถูกต้อง`, pathExists: `พาท '%{path}' มีอยู่แล้ว`, }, diff --git a/packages/netlify-cms-locales/src/tr/index.js b/packages/netlify-cms-locales/src/tr/index.js index 2eceaaf9..ce499747 100644 --- a/packages/netlify-cms-locales/src/tr/index.js +++ b/packages/netlify-cms-locales/src/tr/index.js @@ -63,8 +63,8 @@ const tr = { max: '%{fieldLabel}, %{maxValue} veya daha az olmalı.', rangeCount: '%{fieldLabel}, %{minCount} ve %{maxCount} öğeleri arasında olmalı.', rangeCountExact: '%{fieldLabel}, %{count} öğe olmalıdır.', - minCount: '%{fieldLabel}, en az %{minCount} öğe olmalıdır.', - maxCount: '%{fieldLabel}, %{maxCount} veya daha az öğe olmalıdır.', + rangeMin: '%{fieldLabel}, en az %{minCount} öğe olmalıdır.', + rangeMax: '%{fieldLabel}, %{maxCount} veya daha az öğe olmalıdır.', }, }, editor: { diff --git a/packages/netlify-cms-locales/src/vi/index.js b/packages/netlify-cms-locales/src/vi/index.js index 1a5def91..9b578954 100644 --- a/packages/netlify-cms-locales/src/vi/index.js +++ b/packages/netlify-cms-locales/src/vi/index.js @@ -79,8 +79,8 @@ const vi = { max: '%{fieldLabel} tối đa %{maxValue} hoặc ít hơn.', rangeCount: '%{fieldLabel} phải nằm trong khoảng từ %{minCount} đến %{maxCount} mục.', rangeCountExact: '%{fieldLabel} phải có %{count} mục.', - minCount: '%{fieldLabel} phải có ít nhất %{minCount} mục.', - maxCount: '%{fieldLabel} phải có tối đa %{maxCount} mục hoặc ít hơn.', + rangeMin: '%{fieldLabel} phải có ít nhất %{minCount} mục.', + rangeMax: '%{fieldLabel} phải có tối đa %{maxCount} mục hoặc ít hơn.', invalidPath: `Đường dẫn '%{path}' không hợp lệ`, pathExists: `Đường dẫn '%{path}' đã tồn tại`, }, diff --git a/packages/netlify-cms-locales/src/zh_Hant/index.js b/packages/netlify-cms-locales/src/zh_Hant/index.js index 8f6e4df8..3ca0f81b 100644 --- a/packages/netlify-cms-locales/src/zh_Hant/index.js +++ b/packages/netlify-cms-locales/src/zh_Hant/index.js @@ -79,8 +79,8 @@ const zh_Hant = { max: '%{fieldLabel} 必須小於或等於 %{maxValue}', rangeCount: '%{fieldLabel} 必須有 %{minCount} 到 %{maxCount} 個項目。', rangeCountExact: '%{fieldLabel} 必須正好有 %{count} 個項目。', - minCount: '%{fieldLabel} 必須至少有 %{minCount} 個項目。', - maxCount: '%{fieldLabel} 最多只能有 %{maxCount} 個項目。', + rangeMin: '%{fieldLabel} 必須至少有 %{minCount} 個項目。', + rangeMax: '%{fieldLabel} 最多只能有 %{maxCount} 個項目。', invalidPath: `'%{path}' 不是有效的路徑`, pathExists: `路徑 '%{path}' 已經存在`, }, diff --git a/packages/netlify-cms-widget-relation/src/RelationControl.js b/packages/netlify-cms-widget-relation/src/RelationControl.js index 7d537511..1e6871c3 100644 --- a/packages/netlify-cms-widget-relation/src/RelationControl.js +++ b/packages/netlify-cms-widget-relation/src/RelationControl.js @@ -5,7 +5,7 @@ import { Async as AsyncSelect } from 'react-select'; import { find, isEmpty, last, debounce, get, uniqBy } from 'lodash'; import { List, Map, fromJS } from 'immutable'; import { reactSelectStyles } from 'netlify-cms-ui-default'; -import { stringTemplate } from 'netlify-cms-lib-widgets'; +import { stringTemplate, validations } from 'netlify-cms-lib-widgets'; import { FixedSizeList } from 'react-window'; function Option({ index, style, data }) { @@ -97,6 +97,26 @@ export default class RelationControl extends React.Component { setInactiveStyle: PropTypes.func.isRequired, }; + isValid = () => { + const { field, value, t } = this.props; + const min = field.get('min'); + const max = field.get('max'); + + if (!this.isMultiple()) { + return { error: false }; + } + + const error = validations.validateMinMax( + t, + field.get('label', field.get('name')), + value, + min, + max, + ); + + return error ? { error } : { error: false }; + }; + shouldComponentUpdate(nextProps) { return ( this.props.value !== nextProps.value || diff --git a/packages/netlify-cms-widget-relation/src/__tests__/relation.spec.js b/packages/netlify-cms-widget-relation/src/__tests__/relation.spec.js index c2ad480e..e0ad2edf 100644 --- a/packages/netlify-cms-widget-relation/src/__tests__/relation.spec.js +++ b/packages/netlify-cms-widget-relation/src/__tests__/relation.spec.js @@ -133,7 +133,6 @@ const numberFieldsHits = [ }, }, ]; - class RelationController extends React.Component { state = { value: this.props.value, diff --git a/packages/netlify-cms-widget-relation/src/schema.js b/packages/netlify-cms-widget-relation/src/schema.js index bec450d5..6aff33e8 100644 --- a/packages/netlify-cms-widget-relation/src/schema.js +++ b/packages/netlify-cms-widget-relation/src/schema.js @@ -5,6 +5,8 @@ export default { search_fields: { type: 'array', minItems: 1, items: { type: 'string' } }, file: { type: 'string' }, multiple: { type: 'boolean' }, + min: { type: 'integer' }, + max: { type: 'integer' }, display_fields: { type: 'array', minItems: 1, items: { type: 'string' } }, options_length: { type: 'integer' }, }, diff --git a/website/content/docs/widgets/relation.md b/website/content/docs/widgets/relation.md index e1349a4a..0bc656b7 100644 --- a/website/content/docs/widgets/relation.md +++ b/website/content/docs/widgets/relation.md @@ -16,6 +16,8 @@ The relation widget allows you to reference items from another collection. It pr * `display_fields`: list of one or more names of fields in the referenced collection that will render in the autocomplete menu of the control. Defaults to `value_field`. Syntax to reference nested fields is similar to that of *value_field*. * `default`: accepts any widget data type; defaults to an empty string * `multiple` : accepts a boolean, defaults to `false` + * `min`: minimum number of items; ignored if **multiple** is `false` + * `max`: maximum number of items; ignored if **multiple** is `false` * `options_length`: accepts integer to override number of options presented to user. Defaults to `20`. * **Referencing a folder collection example** (assuming a separate "authors" collection with "name" and "twitterHandle" fields with subfields "first" and "last" for the "name" field):