diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index b8cc89d4..43b7bfa7 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -8,7 +8,7 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [12.x, 14.x, 16.x] steps: - uses: actions/checkout@v2 diff --git a/vocabularies/UI.json b/vocabularies/UI.json index 1870aeb4..58cfe9e0 100644 --- a/vocabularies/UI.json +++ b/vocabularies/UI.json @@ -1126,6 +1126,9 @@ "$Kind": "ComplexType", "$Abstract": true, "@Core.Description": "Abstract base type for facets", + "@Validation.ApplicableTerms": [ + "UI.PartOfPreview" + ], "Label": { "$Nullable": true, "@Core.IsLanguageDependent": true, @@ -1503,8 +1506,8 @@ "$AppliesTo": [ "Record" ], - "@Core.Description": "This Facet and all included Facets are part of the Thing preview", - "@Core.RequiresType": "UI.Facet" + "@Core.Description": "This record and all included structural elements are part of the Thing preview", + "@Core.LongDescription": "This term can be applied e.g. to UI.Facet and UI.DataField" }, "Map": { "$Kind": "Term", @@ -1687,6 +1690,7 @@ "@Validation.ApplicableTerms": [ "UI.Hidden", "UI.Importance", + "UI.PartOfPreview", "HTML5.CssDefaults" ], "Label": { diff --git a/vocabularies/UI.md b/vocabularies/UI.md index d9be6b15..9255b656 100644 --- a/vocabularies/UI.md +++ b/vocabularies/UI.md @@ -42,35 +42,35 @@ Term|Type|Description [QuickViewFacets](./UI.xml#L943:~:text=Facets that may be used for a quick overview of the object [QuickCreateFacets](./UI.xml#L947:~:text=Facets that may be used for a (quick) create of the object [FilterFacets](./UI.xml#L951:~:text=Facets that reference UI.FieldGroup annotations to group filterable fields -[SelectionPresentationVariant](./UI.xml#L1012:~:text=A SelectionPresentationVariant bundles a Selection Variant and a Presentation Variant -[PresentationVariant](./UI.xml#L1036:~:text=Defines how the result of a queried collection of entities is shaped and how this result is displayed -[SelectionVariant](./UI.xml#L1149:~:text=A SelectionVariant denotes a combination of parameters and filters to query the annotated entity set -[ThingPerspective](./UI.xml#L1313:~:text=The annotated term is a Thing Perspective -[IsSummary](./UI.xml#L1316:~:text=This Facet and all included Facets are the summary of the thing. At most one Facet of a thing can be tagged with this term -[PartOfPreview](./UI.xml#L1320:~:text=This Facet and all included Facets are part of the Thing preview -[Map](./UI.xml#L1324:~:text=Target MUST reference a UI.GeoLocation, Communication.Address or a collection of these -[Gallery](./UI.xml#L1328:~:text=Target MUST reference a UI.MediaResource -[IsImageURL](./UI.xml#L1333:~:text=Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image
Can be annotated with:
- [IsNaturalPerson](Common.md#IsNaturalPerson) -[IsImage](./UI.xml#L1343:~:text=Properties annotated with this term MUST be a stream property annotated with a MIME type image
Can be annotated with:
- [IsNaturalPerson](Common.md#IsNaturalPerson) -[MultiLineText](./UI.xml#L1354:~:text=Properties annotated with this annotation should be rendered as multi-line text (e.g. text area) -[Placeholder](./UI.xml#L1359:~:text=A short, human-readable text that gives a hint or an example to help the user with data entry -[TextArrangement](./UI.xml#L1365:~:text=Describes the arrangement of a code or ID value and its text
If used for a single property the Common.Text annotation is annotated -[Importance](./UI.xml#L1384:~:text=Expresses the importance of e.g. a DataField or an annotation -[Hidden](./UI.xml#L1399:~:text=Properties or facets (see UI.Facet) annotated with this term will not be rendered if the annotation evaluates to true.
Hidden properties usually carry technical information that is used for application control and is of no direct interest to end users. The annotation value may be an expression to dynamically hide or render the annotated feature. If a navigation property is annotated with `Hidden` true, all subsequent parts are hidden - independent of their own potential `Hidden` annotations. -[CreateHidden](./UI.xml#L1407:~:text=EntitySets annotated with this term can control the visibility of the Create operation dynamically
The annotation value should be a path to another property from a related entity. -[UpdateHidden](./UI.xml#L1412:~:text=EntitySets annotated with this term can control the visibility of the Edit/Save operation dynamically
The annotation value should be a path to another property from the same or a related entity. -[DeleteHidden](./UI.xml#L1417:~:text=EntitySets annotated with this term can control the visibility of the Delete operation dynamically
The annotation value should be a path to another property from the same or a related entity. -[HiddenFilter](./UI.xml#L1422:~:text=Properties annotated with this term will not be rendered as filter criteria if the annotation evaluates to true.
Properties annotated with `HiddenFilter` are intended as parts of a `$filter` expression that cannot be directly influenced by end users. The properties will be rendered in all other places, e.g. table columns or form fields. This is in contrast to properties annotated with [Hidden](#Hidden) that are not rendered at all. If a navigation property is annotated with `HiddenFilter` true, all subsequent parts are hidden in filter - independent of their own potential `HiddenFilter` annotations. -[DataFieldDefault](./UI.xml#L1431:~:text=Default representation of a property as a datafield, e.g. when the property is added as a table column or form field via personalization
Only concrete subtypes of [DataFieldAbstract](#DataFieldAbstract) can be used for a DataFieldDefault. For type [DataField](#DataField) and its subtypes the annotation target SHOULD be the same property that is referenced via a path expression in the `Value` of the datafield. -[Criticality](./UI.xml#L1606:~:text=Service-calculated criticality, alternative to UI.CriticalityCalculation -[CriticalityCalculation](./UI.xml#L1610:~:text=Parameters for client-calculated criticality, alternative to UI.Criticality -[Emphasized](./UI.xml#L1614:~:text=Highlight something that is of special interest
The usage of a property or operation should be highlighted as it's of special interest for the end user -[OrderBy](./UI.xml#L1620:~:text=Sort by the referenced property instead of by the annotated property
Example: annotated property `SizeCode` has string values XS, S, M, L, XL, referenced property SizeOrder has numeric values -2, -1, 0, 1, 2. Numeric ordering by SizeOrder will be more understandable than lexicographic ordering by SizeCode. -[ParameterDefaultValue](./UI.xml#L1626:~:text=Define default values for action parameters
For unbound actions the default value can either be a constant expression, or a dynamic expression using absolute paths, e.g. singletons or function import results. Whereas for bound actions the bound entity and its properties and associated properties can be used as default values -[RecommendationState](./UI.xml#L1632:~:text=Indicates whether a field contains or has a recommended value
Intelligent systems can help users by recommending input the user may "prefer". -[RecommendationList](./UI.xml#L1662:~:text=Specifies how to get a list of recommended values for a property or parameter
Intelligent systems can help users by recommending input the user may "prefer". -[ExcludeFromNavigationContext](./UI.xml#L1694:~:text=The contents of this property must not be propagated to the app-to-app navigation context -[DoNotCheckScaleOfMeasuredQuantity](./UI.xml#L1698:~:text=Do not check the number of fractional digits of the annotated measured quantity
The annotated property contains a measured quantity, and the user may enter more fractional digits than defined for the corresponding unit of measure.
This switches off the validation of user input with respect to decimals. +[SelectionPresentationVariant](./UI.xml#L1017:~:text=A SelectionPresentationVariant bundles a Selection Variant and a Presentation Variant +[PresentationVariant](./UI.xml#L1041:~:text=Defines how the result of a queried collection of entities is shaped and how this result is displayed +[SelectionVariant](./UI.xml#L1154:~:text=A SelectionVariant denotes a combination of parameters and filters to query the annotated entity set +[ThingPerspective](./UI.xml#L1318:~:text=The annotated term is a Thing Perspective +[IsSummary](./UI.xml#L1321:~:text=This Facet and all included Facets are the summary of the thing. At most one Facet of a thing can be tagged with this term +[PartOfPreview](./UI.xml#L1325:~:text=This record and all included structural elements are part of the Thing preview
This term can be applied e.g. to UI.Facet and UI.DataField +[Map](./UI.xml#L1329:~:text=Target MUST reference a UI.GeoLocation, Communication.Address or a collection of these +[Gallery](./UI.xml#L1333:~:text=Target MUST reference a UI.MediaResource +[IsImageURL](./UI.xml#L1338:~:text=Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image
Can be annotated with:
- [IsNaturalPerson](Common.md#IsNaturalPerson) +[IsImage](./UI.xml#L1348:~:text=Properties annotated with this term MUST be a stream property annotated with a MIME type image
Can be annotated with:
- [IsNaturalPerson](Common.md#IsNaturalPerson) +[MultiLineText](./UI.xml#L1359:~:text=Properties annotated with this annotation should be rendered as multi-line text (e.g. text area) +[Placeholder](./UI.xml#L1364:~:text=A short, human-readable text that gives a hint or an example to help the user with data entry +[TextArrangement](./UI.xml#L1370:~:text=Describes the arrangement of a code or ID value and its text
If used for a single property the Common.Text annotation is annotated +[Importance](./UI.xml#L1389:~:text=Expresses the importance of e.g. a DataField or an annotation +[Hidden](./UI.xml#L1404:~:text=Properties or facets (see UI.Facet) annotated with this term will not be rendered if the annotation evaluates to true.
Hidden properties usually carry technical information that is used for application control and is of no direct interest to end users. The annotation value may be an expression to dynamically hide or render the annotated feature. If a navigation property is annotated with `Hidden` true, all subsequent parts are hidden - independent of their own potential `Hidden` annotations. +[CreateHidden](./UI.xml#L1412:~:text=EntitySets annotated with this term can control the visibility of the Create operation dynamically
The annotation value should be a path to another property from a related entity. +[UpdateHidden](./UI.xml#L1417:~:text=EntitySets annotated with this term can control the visibility of the Edit/Save operation dynamically
The annotation value should be a path to another property from the same or a related entity. +[DeleteHidden](./UI.xml#L1422:~:text=EntitySets annotated with this term can control the visibility of the Delete operation dynamically
The annotation value should be a path to another property from the same or a related entity. +[HiddenFilter](./UI.xml#L1427:~:text=Properties annotated with this term will not be rendered as filter criteria if the annotation evaluates to true.
Properties annotated with `HiddenFilter` are intended as parts of a `$filter` expression that cannot be directly influenced by end users. The properties will be rendered in all other places, e.g. table columns or form fields. This is in contrast to properties annotated with [Hidden](#Hidden) that are not rendered at all. If a navigation property is annotated with `HiddenFilter` true, all subsequent parts are hidden in filter - independent of their own potential `HiddenFilter` annotations. +[DataFieldDefault](./UI.xml#L1436:~:text=Default representation of a property as a datafield, e.g. when the property is added as a table column or form field via personalization
Only concrete subtypes of [DataFieldAbstract](#DataFieldAbstract) can be used for a DataFieldDefault. For type [DataField](#DataField) and its subtypes the annotation target SHOULD be the same property that is referenced via a path expression in the `Value` of the datafield. +[Criticality](./UI.xml#L1612:~:text=Service-calculated criticality, alternative to UI.CriticalityCalculation +[CriticalityCalculation](./UI.xml#L1616:~:text=Parameters for client-calculated criticality, alternative to UI.Criticality +[Emphasized](./UI.xml#L1620:~:text=Highlight something that is of special interest
The usage of a property or operation should be highlighted as it's of special interest for the end user +[OrderBy](./UI.xml#L1626:~:text=Sort by the referenced property instead of by the annotated property
Example: annotated property `SizeCode` has string values XS, S, M, L, XL, referenced property SizeOrder has numeric values -2, -1, 0, 1, 2. Numeric ordering by SizeOrder will be more understandable than lexicographic ordering by SizeCode. +[ParameterDefaultValue](./UI.xml#L1632:~:text=Define default values for action parameters
For unbound actions the default value can either be a constant expression, or a dynamic expression using absolute paths, e.g. singletons or function import results. Whereas for bound actions the bound entity and its properties and associated properties can be used as default values +[RecommendationState](./UI.xml#L1638:~:text=Indicates whether a field contains or has a recommended value
Intelligent systems can help users by recommending input the user may "prefer". +[RecommendationList](./UI.xml#L1668:~:text=Specifies how to get a list of recommended values for a property or parameter
Intelligent systems can help users by recommending input the user may "prefer". +[ExcludeFromNavigationContext](./UI.xml#L1700:~:text=The contents of this property must not be propagated to the app-to-app navigation context +[DoNotCheckScaleOfMeasuredQuantity](./UI.xml#L1704:~:text=Do not check the number of fractional digits of the annotated measured quantity
The annotated property contains a measured quantity, and the user may enter more fractional digits than defined for the corresponding unit of measure.
This switches off the validation of user input with respect to decimals. ## [HeaderInfoType](./UI.xml#L62:~:text=[CollectionFacet](./UI.xml#L965:~:text=[CollectionFacet](./UI.xml#L970:~:text=[ReferenceFacet](./UI.xml#L971:~:text=[ReferenceFacet](./UI.xml#L976:~:text=Allowed terms:
- [Address](Communication.md#Address)
- [Contact](Communication.md#Contact)
- [Badge](#Badge)
- [Chart](#Chart)
- [Contacts](#Contacts)
- [DataPoint](#DataPoint)
- [FieldGroup](#FieldGroup)
- [GeoLocation](#GeoLocation)
- [GeoLocations](#GeoLocations)
- [HeaderInfo](#HeaderInfo)
- [Identification](#Identification)
- [KPI](#KPI)
- [LineItem](#LineItem)
- [MediaResource](#MediaResource)
- [PresentationVariant](#PresentationVariant)
- [SelectionFields](#SelectionFields)
- [SelectionPresentationVariant](#SelectionPresentationVariant)
- [StatusInfo](#StatusInfo) +[*Label*](./UI.xml#L962:~:text=Allowed terms:
- [Address](Communication.md#Address)
- [Contact](Communication.md#Contact)
- [Badge](#Badge)
- [Chart](#Chart)
- [Contacts](#Contacts)
- [DataPoint](#DataPoint)
- [FieldGroup](#FieldGroup)
- [GeoLocation](#GeoLocation)
- [GeoLocations](#GeoLocations)
- [HeaderInfo](#HeaderInfo)
- [Identification](#Identification)
- [KPI](#KPI)
- [LineItem](#LineItem)
- [MediaResource](#MediaResource)
- [PresentationVariant](#PresentationVariant)
- [SelectionFields](#SelectionFields)
- [SelectionPresentationVariant](#SelectionPresentationVariant)
- [StatusInfo](#StatusInfo) -## [ReferenceURLFacet](./UI.xml#L999:~:text=[ReferenceURLFacet](./UI.xml#L1004:~:text=[SelectionPresentationVariantType](./UI.xml#L1018:~:text=[SelectionPresentationVariantType](./UI.xml#L1023:~:text=[PresentationVariantType](./UI.xml#L1042:~:text=[PresentationVariantType](./UI.xml#L1047:~:text=If the annotation referenced by an annotation path does not apply to the same collection of entities as the one being presented according to the `UI.PresentationVariant` annotation, the annotation path MUST be silently ignored.
Allowed terms:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](#CustomAggregate) -[IncludeGrandTotal](./UI.xml#L1091:~:text=Allowed terms:
- [Chart](#Chart)
- [DataPoint](#DataPoint)
- [LineItem](#LineItem) -[RequestAtLeast](./UI.xml#L1117:~:text=Properties in `RequestAtLeast` must occur either in the `$select` clause of an OData request or among the grouping properties in an `$apply=groupby((grouping properties),...)` clause of an aggregating OData request. -[SelectionFields](./UI.xml#L1140:~:text=If the annotation referenced by an annotation path does not apply to the same collection of entities as the one being presented according to the `UI.PresentationVariant` annotation, the annotation path MUST be silently ignored.
Allowed terms:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](#CustomAggregate) +[IncludeGrandTotal](./UI.xml#L1096:~:text=Allowed terms:
- [Chart](#Chart)
- [DataPoint](#DataPoint)
- [LineItem](#LineItem) +[RequestAtLeast](./UI.xml#L1122:~:text=Properties in `RequestAtLeast` must occur either in the `$select` clause of an OData request or among the grouping properties in an `$apply=groupby((grouping properties),...)` clause of an aggregating OData request. +[SelectionFields](./UI.xml#L1145:~:text=[SelectionVariantType](./UI.xml#L1154:~:text=[SelectionVariantType](./UI.xml#L1159:~:text=[*ParameterAbstract*](./UI.xml#L1179:~:text=[*ParameterAbstract*](./UI.xml#L1184:~:text=[Parameter](./UI.xml#L1182:~:text=[Parameter](./UI.xml#L1187:~:text=[IntervalParameter](./UI.xml#L1191:~:text=[IntervalParameter](./UI.xml#L1196:~:text=[SelectOptionType](./UI.xml#L1207:~:text=[SelectOptionType](./UI.xml#L1212:~:text=If the annotation referenced by the annotation path does not apply to the same collection of entities as the one being filtered according to the `UI.SelectionVariant` annotation, this instance of `UI.SelectionVariant/SelectOptions` MUST be silently ignored. For an example, see the `UI.SelectionVariant` annotation in the [example](../examples/DynamicProperties-sample.xml).
Allowed terms:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](#CustomAggregate) -[Ranges](./UI.xml#L1236:~:text=If the annotation referenced by the annotation path does not apply to the same collection of entities as the one being filtered according to the `UI.SelectionVariant` annotation, this instance of `UI.SelectionVariant/SelectOptions` MUST be silently ignored. For an example, see the `UI.SelectionVariant` annotation in the [example](../examples/DynamicProperties-sample.xml).
Allowed terms:
- [AggregatedProperty](#AggregatedProperty)
- [CustomAggregate](#CustomAggregate) +[Ranges](./UI.xml#L1241:~:text=[SelectionRangeType](./UI.xml#L1241:~:text=[SelectionRangeType](./UI.xml#L1246:~:text=[SelectionRangeSignType](./UI.xml#L1267:~:text=[SelectionRangeSignType](./UI.xml#L1272:~:text=[SelectionRangeOptionType](./UI.xml#L1276:~:text=[SelectionRangeOptionType](./UI.xml#L1281:~:text=[TextArrangementType](./UI.xml#L1369:~:text=[TextArrangementType](./UI.xml#L1374:~:text=