UniqueItemsBy
Validation that ensures that a value does not contain repeated items, where the uniqueness of an item is determined by its key as returned by selector. Values of type Collection, Array (including variants), and Table are supported.
Depending on emitAllRepetitions, an issue with the provided code (defaults to DEFAULT_CODE) is emitted for each pair of repeated items (when true), or only for the first found repetition (when false). emitAllRepetitions defaults to true.
Each emitted issue has a firstIndex and secondIndex data properties with the two indices of the conflicting items. When running this validation on a table, issues will also contain firstRowId and secondRowId data properties with the ids of the conflicting table rows.
Pairs, Triples, and Lists work well to represent composite keys. E.g. say that you have a value of items that should be unique in respect to their fields A and B; you can use UniqueBy as such:
UniqueBy { Pair(it.A, it.B) }When the result of calling selector on an item is null, that item is always considered unique. I.e. if selector(A) == null and selector(B) == null, then A is considered different to B.
If you wish to treat multiple null values as equal to one another, consider wrapping said values in an object (e.g. a list with a single item).
This validation is not stateful and depends on all descendants of the value.
Inheritors
Constructors
Properties
Dependencies of the validation. Mapping of keys to the paths this validation depends on. Keys can be used within a ValidationContext to access the value of the dependencies.
Whether the FormManager should reevaluate this validation whenever a descendant of the value being validated changes. This is false by default.
Whether to emit an issue per each repeated item or only for the first repetition.
Set of external context dependencies of the validation.
Severity of the issue emitted when two items of the value are repeated.
Functions
Runs the validation within a ValidationContext containing the value being validated and the value of all declared dependencies. Returns a flow over all found issues.