Skip to content
Gytis Gurklys
Go back

Search Component: Sections, Controls and Configuration Templates

Gytis Gurklys
LT

The search component in one place: the sections it is built from, the catalogue of filter and result controls, the templates a page fills in, and the property definitions those templates use.

1. Search component

1.1. Structural definition (by section)

SectionPurposeControls (constant and dynamic)
Header sectionProvides context and a top-level action relevant to the current page.PageTitle – displays the title of the current page.
HeaderActionButton – contextual action (e.g., Create Record, Register, Add).
Search panelArea where the user defines search criteria and executes the query.FilterButton – expands or collapses filter panel.
EnableBulkDownloadSwitch – enables filter controls available for bulk download search and XML file generation option.
IncludeHistoricalVersionSwitch – includes historical versions in search results.
DraftsSwitch – toggles between viewing Non-drafts or Drafts.
ApplyButton – runs the search query.
GenerateXmlButton – generates XML file for the records displayed on the current results page only.
ResetButton – clears all filters.
[Filter controls…] (dynamic, see section 2).
Active tags panelDisplays all currently active (search-applied) filters as removable tags and allows clearing them collectively.ActiveTagsPanel – system-managed container showing each active filter as tag.
ActiveTagItem – individual tag representing a single active filter (name + value); removable by user action.
ClearActiveFiltersLink – link control; removes all active filters at once and resets search criteria.
Results sectionDisplays search results with navigation and range indicators.ResultInfoText – always on top; shows range and total results.
PageSizeControl – always on top; defines records per page (options: 5, 10, 20, 50). Label text may vary by implementation (e.g. “Show … entries per page”, “Filter …”).
SortControl – mandatory for card layout; not used in table layout.
[ResultField controls…] (dynamic, see section 3).
[Action controls…] (dynamic, see section 3).
PaginationControls – navigation between result pages.

1.2. Controls catalogue (by section)

1.2.1. Header area

Control typeProperty groups
PageTitleControl: Type: StaticText; Name [default: PageTitle]; Label: Page title text;
Values: Format: Text; ReadOnly: Yes;
Display: Visible: Yes; Enabled: Yes;
HeaderActionButtonControl: Type: Button; Name [default: HeaderActionButton]; Label [default: context-specific];
Display: SecP: (Security permission); Visible: Yes; Enabled: Yes; Style: Primary;
Behaviour: OnClick: Opens related form or management view;

1.2.2. Search panel

Control typeProperty groups
FilterButtonControl: Type: Button; Name [default: FilterButton]; Label [default: Filter];
Display: Visible: Yes; Enabled: Yes; Style: Primary;
Behaviour: OnClick: Expand or collapse Filter panel;
EnableBulkDownloadSwitchControl: Type: Switch; Name [default: EnableBulkDownloadSwitch]; Label [default: Enable search filters available for bulk XML download];
Values: Format: Boolean [default: Off];
Display: Visible: Yes; Enabled: Yes;
Behaviour: OnChange: Enables or disables XML output option;
IncludeHistoricalVersionSwitchControl: Type: Switch; Name [default: IncludeHistoricalVersionSwitch]; Label [default: Include historical versions];
Values: Format: Boolean [default: Off];
Display: Visible: Yes; Enabled: Yes;
Behaviour: OnChange: Includes or excludes historical records;
DraftsSwitchControl: Type: Switch; Name [default: DraftsSwitch]; Label [default: Non-drafts / Drafts];
Values: Format: Boolean [default: Off];
Display: Visible: Conditional; Enabled: Yes;
Behaviour: OnChange: Toggles between viewing Non-drafts or Drafts;
ApplyButtonControl: Type: Button; Name [default: ApplyButton]; Label [default: Apply];
Display: Visible: Yes; Enabled: Yes; Style: Primary;
Behaviour: OnClick: Execute search;
GenerateXmlButtonControl: Type: Button; Name [default: GenerateXmlButton]; Label [default: Generate XML file];
Display: Visible: (default: No); Enabled: (default: No); Style: Secondary;
Behaviour: OnClick: Initiates asynchronous generation of an XML file containing only the records displayed on the currently active results page, according to the active filters and page size settings;
ResetButtonControl: Type: Button; Name [default: ResetButton]; Label [default: Reset];
Display: Visible: Yes; Enabled: Yes; Style: Secondary;
Behaviour: OnClick: Clear filters;
[Filter controls…] (dynamic)Defined in section 2, Filter controls.

1.2.3. Active tags panel

Control typeProperty groups
ActiveTagsPanelControl: Type: Panel; Name [default: ActiveTagsPanel]; Label [default: Active filters];
Values: Format: Dynamic; Source: CurrentFilterSet;
Display: Visible: Yes; Enabled: Yes;
Behaviour: OnRender: Displays all ActiveTagItem controls for currently applied filters; OnUpdate: Refreshes after any filter change.
ActiveTagItemControl: Type: Tag; Name [default: ActiveTagItem]; Label [default: Filter label + value];
Values: Format: Text; ReadOnly: Yes;
Display: Visible: Yes; Enabled: Yes;
Behaviour: OnClick: Removes the corresponding filter and triggers automatic search refresh.
ClearActiveFiltersLinkControl: Type: Link; Name [default: ClearActiveFiltersLink]; Label [default: Clear all filters];
Values: Format: Action; ReadOnly: Yes;
Display: Visible: Yes; Enabled: Yes; Style: Text;
Behaviour: OnClick: Clears all active filters and re-executes search with default criteria.

1.2.4. Results area

Control typeProperty groups
ResultInfoTextControl: Type: StaticText; Name [default: ResultInfoText]; Label [default: System-generated];
Values: TextFormat [default: “Showing X–Y of Z entries”]; ReadOnly: Yes;
Display: Visible: Yes; Enabled: Yes;
Behaviour: Updates automatically on pagination or sorting change;
PageSizeControlControl: Type: Dropdown; Name [default: PageSizeControl]; Label [default: context-specific text, e.g. “Show … entries per page” or “Filter …”];
Values: Options: 5; 10; 20; 50;
Display: Visible: Yes; Enabled: Yes;
Behaviour: OnSelect: Changes number of records displayed per page;
SortControlControl: Type: Dropdown; Name [default: SortControl]; Label [default: Sort by];
Values: Source: Static SortControlValues list of sorting criteria (domain-specific);
Display: Visible: Yes; Enabled: Yes;
Behaviour: OnSelect: Reorders displayed results; (mandatory for card layout; not used in table layout)
[ResultField controls…] (dynamic)Defined in section 3, Result controls.
[Action controls…] (dynamic)Defined in section 3, Result controls.
PaginationControlsControl: Type: System; Name [default: PaginationControls]; Label [default: None];
Values: None [default: None];
Display: Visible: Yes; Enabled: Yes;
Behaviour: OnSelect: Navigate to selected page;

1.3. Search component configuration template

PropertyConfiguration options
Component UsedSearch Component
Reference DocumentSearch Component, v.1
PageTitle[Mandatory] – specify page title text
Default Filter Panel Initial StateCollapsed / Expanded
EnableBulkDownloadSwitch.DisplayedYes / No
IncludeHistoricalVersionSwitch.DisplayedYes / No
DraftsSwitch.DisplayedYes / No
Results Layout TypeTable Layout / Card Layout
Results Section Initial VisibilityDisplayed / Not displayed
Header ActionsNone

1.4. Header actions configuration template

Control nameLabelControl infoBehaviour
HeaderActionButton[Mandatory] – specify button captionType: HeaderActionButton; Style: Primary / Secondary;OnClick: [Specify action];

2. Filter controls

2.1. Catalogue of filter controls

Filter typeProperty groups
TextBox controlControl: Type: TextBox; Name (default: None); Label (default: None);
Mapping: Entity (default: None); Attribute (default: None);
Values: Format: Text (default: None); ReadOnly (default: No); Mandatory (default: No);
Sources: None (default: None);
Display: GuidanceText (default: None); Visible (default: Yes); Enabled (default: Yes); ConditionalLabel (default: None);
Behaviour: OnChange Marks filter as Selected;
DatePicker controlControl: Type: DatePicker; Name (default: None); Label (default: None);
Mapping: Entity (default: None); Attribute (default: None);
Values: Format: Date (default: None); ReadOnly (default: No); Mandatory (default: No);
Sources: None (default: None);
Display: GuidanceText (default: None); Visible (default: Yes); Enabled (default: Yes); ConditionalLabel (default: None);
Behaviour: OnSelect Marks filter as Selected; OnChange Marks filter as Selected;
DateRange controlControl: Type: DateRange; Name (default: None); Label (default: None);
Mapping: Entity (default: None); AttributeFrom (default: None); AttributeTo (default: None);
Values: Format: Date (default: None); ReadOnly (default: No); Mandatory (default: No);
Sources: None (default: None);
Display: GuidanceText (default: None); Visible (default: Yes); Enabled (default: Yes); ConditionalLabel (default: None);
Behaviour: OnSelect Marks filter as Selected; OnChange Marks filter as Selected;
Dropdown controlControl: Type: Dropdown; Name (default: None); Label (default: None);
Mapping: Entity (default: None); Attribute (default: None);
Values: Format: Text (default: None); ReadOnly (default: No); Mandatory (default: No);
Sources: Type (default: None); SourceName (default: None);
Display: GuidanceText (default: None); Visible (default: Yes); Enabled (default: Yes); ConditionalLabel (default: None);
Behaviour: OnSelect Marks filter as Selected; OnChange Marks filter as Selected; DependentOn (default: None);
Autocomplete controlControl: Type: Autocomplete; Name (default: None); Label (default: None);
Mapping: Entity (default: None); Attribute (default: None);
Values: Format: Text (default: None); ReadOnly (default: No); Mandatory (default: No);
Sources: Type (default: None); SourceName (default: None);
Display: GuidanceText (default: None); Visible (default: Yes); Enabled (default: Yes); ConditionalLabel (default: None);
Behaviour: OnSelect Marks filter as Selected; OnChange Marks filter as Selected;
Checkbox controlControl: Type: Checkbox; Name (default: None); Label (default: None);
Mapping: Entity (default: None); Attribute (default: None);
Values: Format: Boolean (default: Off); ReadOnly (default: No); Mandatory (default: No);
Sources: None (not applicable);
Display: GuidanceText (default: None); Visible (default: Yes); Enabled (default: Yes);
Behaviour: OnChange Marks filter as Selected;
Switch controlControl: Type: Switch; Name (default: None); Label (default: None);
Mapping: None (not applicable);
Values: Format: Boolean (default: Off); ReadOnly (default: No); Mandatory (default: No);
Sources: None (not applicable);
Display: GuidanceText (default: None); Visible (default: Yes); Enabled (default: Yes);
Behaviour: OnChange Marks filter as Selected;
Button controlControl: Type: Button; Name (default: None); Label (default: None);
Mapping: None (not applicable);
Values: None (not applicable);
Sources: None (not applicable);
Display: GuidanceText (default: None); Visible (default: Yes); Enabled (default: Yes); Style (default: Secondary);
Behaviour: OnClick;

2.2. Filter specification template

Control nameLabelTypeControl infoDisplay and behaviour
(PascalCaseIdentifier)(User-facing caption)(Control type)Mapping: Entity: (EntityName); Attribute: (AttributeName) / AttributeFrom–AttributeTo (for range);
Values: Format: (Text / Date / Boolean); ReadOnly: (Yes / No); Mandatory: (Yes / No); Composite: (Yes / No);
Sources: Type: (Static / Dynamic); SourceName: (Enum / Dataset / Service name);
Display: GuidanceText: (instructional text); Visible: (Yes / No / Conditional); Enabled: (Yes / No / Conditional); ConditionalLabel: (expression or None); Style: (Primary / Secondary / Text);
Behaviour: OnSelect: (action or system event); OnChange: (action or system event); OnClick: (action or system event); OnRender: (system event); OnUpdate: (system event); DependentOn: (ControlName or None);

3. Result controls

3.1. Catalogue of result controls

Result control typeProperty groupsLayout applicability
ResultField controlControl: Type: ResultField; Name (default: None); Label (default: Column label);
Mapping: Entity (default: None); Attribute (default: None);
Values: Format (default: Text); Composite (default: No); ReadOnly: Yes;
Header: Sortable (default: No); DefaultSort (default: None);
Display: Visible (default: Yes);
Behaviour: None (default: None);
Tabular: displayed as table column with sortable header if enabled.
Card: displayed as field within record card; Header group not used.
Action controlControl: Type: Action; Subtype (Button / Link / Icon); Name (default: None); Label (default: N/A);
Mapping: None (default: always);
Values: Style (default: Secondary); Icon (default: None);
Sources: None (default: None);
Display: Visible (default: Yes); LabelType (default: Static);
Behaviour: OnClick (default: None);
Used in both layouts; provides record-level actions (e.g. View, Open).

3.2. Layout-specific notes

AspectTabular layoutCard layout
ResultField placementEach field corresponds to a table column.Each field displayed as labelled data item within the card body.
SortingControlled by Sortable and DefaultSort header attributes.Not used; sorting handled by SortControl.
Action placementPositioned at the end of the table row.Displayed after or beside field content depending on card layout.

3.3. Result instance template

Control nameLabelTypeControl infoDisplay and behaviour
(PascalCaseIdentifier)(Label text)(Type)Mapping: Entity: (EntityName); Attribute: (AttributeName);
Values: Format: Text / Date / Composite; Composite: (Yes / No);
Header: Sortable: (Yes / No); DefaultSort: (None / Ascending / Descending);
Display: Visible: Yes / Conditional; Enabled: Yes;
Behaviour: None / OnClick (action specific);

Short form, used when every property other than the mapping keeps its default:

Control nameLabelTypeControl infoDisplay and behaviour
(PascalCaseIdentifier)(Label text)(Type)Mapping: Entity: (…); Attribute: (…); default otherwise;Display: default; Behaviour: default;

3.4. Example result instances

3.4.1. Tabular layout

Control nameLabelTypeControl infoDisplay and behaviour
DeviceIdentifierUDI-DI / Device identifierResultFieldMapping: Entity: Device; Attribute: deviceIdentifier;
Values: Format: Text;
Header: Sortable: No; DefaultSort: None;
Display: Visible: Yes;
DeviceNameDevice nameResultFieldMapping: Entity: Device; Attribute: deviceName;
Values: Format: Text;
Header: Sortable: Yes; DefaultSort: Ascending;
Display: Visible: Yes;
DateRegistration dateResultFieldMapping: Entity: Device; Attribute: registrationDate;
Values: Format: Date;
Header: Sortable: Yes; DefaultSort: Descending;
Display: Visible: Yes;
ActionsMenuActionsAction (Icon)Mapping: None;
Values: Icon: Ellipsis; Style: Secondary;
Display: Visible: Yes;
Behaviour: OnClick: Open action menu;

3.4.2. Card layout

Control nameLabelTypeControl infoDisplay and behaviour
DossierTypeDossier TypeResultFieldMapping: Entity: VigilanceDossier; Attribute: dossierType;
Values: Format: Text; ReadOnly: Yes;
Display: Visible: Yes; Enabled: Yes;
ManufacturerManufacturerResultFieldMapping: Entity: VigilanceDossier; Attribute: mfSrn + OrganisationName;
Values: Format: Composite; ReadOnly: Yes;
Display: Visible: Yes;
ViewActionViewAction (Button)Mapping: None;
Values: Style: Secondary;
Display: Visible: Yes;
Behaviour: OnClick: Open dossier details;
ShowAllDevicesShow all devicesAction (Link)Mapping: None;
Values: Style: Text;
Display: Visible: Conditional; Enabled: Yes;
Behaviour: OnClick: Open modal with all devices;

3.5. Control defaults

ControlControl info (defaults)Display and behaviour (defaults)
ResultFieldControl: Type: ResultField; Name (default: None); Label (default: Column label);
Mapping: Entity (default: None); Attribute (default: None);
Values: Format (default: Text); Composite (default: No);
Header: Sortable (default: No); DefaultSort (default: None);
Display: Visible (default: Yes);
Behaviour: None (default: None);
ActionControl: Type: Action; Subtype (Button / Link / Icon); Style (default: Secondary); Icon (default: None); LabelType (default: Static);Display: Visible (default: Yes);
Behaviour: OnClick (default: None);

3.6. Quick reference

Control typeKey propertiesBehaviourLayout use
ResultFieldFormat: Text / Date / Composite; Header: Sortable Yes/No; DefaultSort None / Ascending / Descending;None;Tabular / Card;
ActionSubtype: Button / Link / Icon; Style: Primary / Secondary;OnClick;Tabular / Card;

4. Property definitions appendix

4.1. Control group

PropertyDefinitionPermitted values
TypeIdentifies the control category. Determines applicable property groups and behaviours.TextBox / Dropdown / DatePicker / DateRange / Autocomplete / Checkbox / Switch / Button / Tag / Link / Panel / StaticText / ResultField / Action
NameTechnical identifier of the control, written in PascalCase. Unique within a component.Text (PascalCase identifier)
LabelUser-facing caption displayed beside or within the control; may be omitted when not required (e.g., icon-only button).Text

4.2. Mapping group

PropertyDefinitionPermitted values
EntityLogical data object (e.g., Device, Certificate) the control binds to.Entity name / None (not applicable)
AttributeField within the entity providing or receiving data.Attribute name / None (not applicable)
AttributeFrom / AttributeToUsed in range controls to define paired attributes (e.g., dateFrom, dateTo).Attribute name / None (not applicable)

4.3. Values group

PropertyDefinitionPermitted values
FormatData type or structure accepted by the control.Text / Date / Boolean
MandatorySpecifies whether a value is required for the control to be valid.Yes / No / Conditional
ReadOnlyIf Yes, value cannot be edited by the user.Yes / No / Conditional
CompositeIndicates a value composed of multiple sub-fields.Yes / No

4.4. Sources group

PropertyDefinitionPermitted values
TypeDefines whether the control’s values are provided from a predefined list or retrieved dynamically at runtime.Static / Dynamic
SourceNameSpecifies the exact source (enumeration, dataset, or runtime provider) from which the control retrieves its values.For Static: enumeration name (e.g., CountryEnum, RegulationEnum); for Dynamic: runtime data provider or reference service (e.g., CompetentAuthoritiesList)

4.5. Display group

PropertyDefinitionPermitted values
GuidanceTextInstructional hint shown near the control (e.g., “Select country”).Text
VisibleDefines whether the control is displayed on screen.Yes / No / Conditional
EnabledDefines if an interactive control can be used. When No, it’s visible but inactive.Yes / No / Conditional
ConditionalLabelAlternate label displayed based on another control’s state.Conditional text expression
StyleVisual appearance variant.Primary / Secondary / Text

4.6. Behaviour group

PropertyDefinitionPermitted values
OnSelectAction triggered when a user selects a value or option.Action reference or system event
OnChangeAction triggered when the control value changes.Action reference or system event
OnClickAction triggered when the control is clicked.Action reference or system event
OnRenderTriggered when the control is displayed on screen.System event
OnUpdateTriggered when the control refreshes due to data change.System event
DependentOnDefines dependency on another control’s value or state.Control name

4.7. Notation rules

(default: …) - configurable property with predefined default value.

(not applicable) - property group required structurally but unused for this control type.

Property group order: Control -> Mapping -> Values -> Sources -> Display -> Behaviour



Previous Post
A Theoretical Basis for Modeling the EUDAMED Domain
Next Post
Restricting Enumeration Values in Requirements Specifications: New Enumeration or Constraint?