Member Junction
    Preparing search index...

    FilterRuleComponent - A single filter condition row

    Displays field selector, operator selector, and value editor based on the field type.

    Architectural Note — Purpose-Built Rich Field Picker (vs. <mj-combobox> / <mj-dropdown>): FilterRuleComponent intentionally uses a custom fixed-positioned searchable field dropdown (role="listbox" / role="option") rather than a generic single-line <mj-combobox> or native <select>. This enables:

    • Multi-line field options displaying FilterFieldInfo.description alongside type badges
    • Two-pane multi-source entity navigation (Sources list + per-source field list)
    • Automatic viewport measurement (dropUp) so the menu flips above the trigger when opened near the bottom of a dialog or inside transformed ancestors
    • Contained keyboard navigation (ArrowDown/ArrowUp/Enter/Escape) that closes only the open field menu without dismissing parent modals.

    Implements

    • OnInit
    • OnChanges
    Index

    Constructors

    Properties

    Accessors

    Methods

    Constructors

    Properties

    ActiveSourceKey: string | null = null
    AvailableOperators: OperatorInfo[] = []

    Available operators for the selected field type

    delete: EventEmitter<void> = ...

    Use Delete.

    The same emitter under the old binding name, so a template still binding (delete) keeps working. Must stay AFTER Delete: class fields initialise in order, and the other way round this captures undefined.

    Delete: EventEmitter<void> = ...

    Emitted when the delete button is clicked

    Disabled: boolean = false

    Whether the component is disabled

    DropdownDropUp: boolean = false
    DropdownMenuStyle: Record<string, string> = {}
    FieldDropdownBtn: ElementRef<HTMLButtonElement>
    FieldDropdownOpen: boolean = false
    FieldHighlightIndex: number = -1
    fields: FilterFieldInfo[] = []

    Available fields to filter on

    FieldSearchText: string = ''

    The filter descriptor for this rule

    filterChange: EventEmitter<FilterDescriptor> = ...

    Use FilterChange.

    The same emitter under the old binding name, so a template still binding (filterChange) keeps working. Must stay AFTER FilterChange: class fields initialise in order, and the other way round this captures undefined.

    FilterChange: EventEmitter<FilterDescriptor> = ...

    Emitted when the filter changes

    OperatorDropdownBtn: ElementRef<HTMLButtonElement>
    OperatorDropdownOpen: boolean = false
    OperatorHighlightIndex: number = -1
    RequiresValue: boolean = true

    Whether the current operator requires a value

    SelectedField: FilterFieldInfo | null = null

    Currently selected field info

    ShowDelete: boolean = true

    Whether to show the delete button

    Sources: FilterSource[] = []
    ValueDropdownBtn: ElementRef<HTMLButtonElement>
    ValueDropdownOpen: boolean = false
    ValueHighlightIndex: number = -1

    Accessors

    Methods

    • A callback method that is invoked immediately after the default change detector has checked data-bound properties if at least one has changed, and before the view and content children are checked.

      Parameters

      • changes: { [propName: string]: SimpleChange<any> }

        The changed properties.

      Returns void

    • A callback method that is invoked immediately after the default change detector has checked the directive's data-bound properties for the first time, and before any of the view or content children have been checked. It is invoked only once when the directive is instantiated.

      Returns void

    • Handle value selection from value list option (supports union type)

      Parameters

      • value: string | number | boolean

      Returns void