@theredhead — Frontend Library - v1.0.0
    Preparing search index...

    A master-detail layout that shows a list of items in a UITableView and renders a detail template for the currently selected item.

    <ui-master-detail-view [datasource]="adapter" title="People">
    <ui-text-column key="name" headerText="Name" />
    <ui-text-column key="email" headerText="Email" />

    <ng-template #detail let-object>
    <h3>{{ object.name }}</h3>
    <p>{{ object.email }}</p>
    </ng-template>
    </ui-master-detail-view>
    <ui-master-detail-view [datasource]="treeDs" [treeDisplayWith]="labelFn">
    <ng-template #detail let-object>
    <h3>{{ object.name }}</h3>
    </ng-template>
    </ui-master-detail-view>
    <!-- Auto-inferred fields from columns + data types -->
    <ui-master-detail-view [datasource]="adapter" [showFilter]="true">
    <ui-text-column key="name" headerText="Name" />
    <ui-text-column key="email" headerText="Email" />
    <ng-template #detail let-object></ng-template>
    </ui-master-detail-view>
    <ui-master-detail-view [datasource]="adapter" [showFilter]="true">
    <ng-template #filter>
    <ui-filter [fields]="fields" [(value)]="descriptor"
    (expressionChange)="ds.filterBy($event)" />
    </ng-template>
    <!-- columns and detail template -->
    </ui-master-detail-view>

    Type Parameters

    • T = unknown
    Index

    Constructors

    • Type Parameters

      • T = unknown

      Returns UIMasterDetailView<T>

    Properties

    caption: InputSignal<string> = ...

    Accessible caption for the embedded table.

    columns: Signal<readonly UITableViewColumn[]> = ...

    Projected table-view columns. These are forwarded to the internal <ui-table-view>.

    datasource: InputSignal<IDatasource<T> | ITreeDatasource<T> | undefined> = ...

    The datasource powering the master list.

    Accepts any IDatasource (for flat table mode) or an ITreeDatasource (for hierarchical tree mode). The component detects the type at runtime and renders the appropriate view.

    detailTemplate: Signal<TemplateRef<MasterDetailContext<T>> | undefined> = ...

    Detail template — rendered when an item is selected.

    disabled: InputSignal<boolean> = ...

    Whether the embedded table view is disabled.

    expressionChange: OutputEmitterRef<FilterExpression<T>> = ...

    Emits the FilterExpression every time the filter rules change. Emits an empty array when no valid rules remain.

    For FilterableArrayDatasource instances the expression is applied automatically — this output is for consumers who use a custom datasource and need to handle filtering manually.

    filterDescriptor: ModelSignal<FilterExpression<T>> = ...

    The filter descriptor state (two-way bindable).

    Provides full read/write access to the filter's rule set and junction mode. Defaults to an empty AND descriptor.

    filterExpanded: InputSignal<boolean> = ...

    Whether the filter section starts expanded.

    filterFields: InputSignal<FilterFieldDefinition<T>[] | undefined> = ...

    Explicit filter field definitions.

    When provided these override the auto-inferred fields. Only relevant when no #filter template is projected.

    filterModeLocked: InputSignal<boolean> = ...

    Whether the filter toggle button is hidden.

    When true, the toggle is removed and the filter section stays permanently in whatever state filterExpanded dictates:

    • filterExpanded: true + filterModeLocked: true → filter is always visible, cannot be collapsed.
    • filterExpanded: false + filterModeLocked: true → filter bar is completely hidden (equivalent to showFilter: false).

    This value is also forwarded to the embedded <ui-filter> as [modeLocked], preventing the user from toggling between simple and advanced filter modes.

    filterTemplate: Signal<TemplateRef<unknown> | undefined> = ...

    Optional filter template — shown in the collapsible filter area.

    listConstraints: InputSignal<SplitPanelConstraints> = ...

    Size constraints for the list (first) panel in pixels. Defaults to { min: 200 }.

    pageIndex: InputSignal<number | undefined> = ...

    External page index (zero-based) for the embedded table view. Leave undefined to let the built-in paginator manage it.

    pageSize: InputSignal<number | undefined> = ...

    Page size for the embedded table view's paginator. Leave undefined to use the table's default.

    placeholder: InputSignal<string> = ...

    Placeholder text shown when no item is selected.

    resizable: InputSignal<boolean> = ...

    Whether table columns can be resized by dragging header borders. Defaults to true.

    rowHeight: InputSignal<number> = ...

    Row height in pixels for the internal table-view. Forwarded to <ui-table-view [rowHeight]>. Defaults to 36 px.

    rowIndexHeaderText: InputSignal<string> = ...

    Header text for the row-index column. Defaults to "#".

    selectedChange: OutputEmitterRef<T | undefined> = ...

    Emits whenever the selection changes. Carries the selected item or undefined.

    selectionModel: SelectionModel<T> = ...

    Selection model for the table-view (single mode).

    showBuiltInPaginator: InputSignal<boolean> = ...

    Whether to show the table's built-in paginator. Defaults to false.

    showFilter: InputSignal<boolean | undefined> = ...

    Whether the filter section is visible.

    • true — always show the filter.
    • false — never show the filter.
    • undefined (default) — auto-detect: show the filter when the resolved datasource is a FilterableArrayDatasource.

    When shown without a projected #filter template, the component embeds a <ui-filter> internally using auto-inferred field definitions.

    showRowIndexIndicator: InputSignal<boolean> = ...

    Whether to show row-index numbers in the table.

    splitCollapseTarget: InputSignal<SplitCollapseTarget> = ...

    Which panel to collapse when the divider is double-clicked. Defaults to 'first' so the list panel can be collapsed.

    splitName: InputSignal<string | undefined> = ...

    Optional localStorage key for persisting the split panel sizes. When set the user's last divider position is restored on init.

    splitSizes: InputSignal<readonly [number, number]> = ...

    Initial split sizes as a [list, detail] percentage tuple. Must sum to 100. Defaults to [33, 67].

    tableId: InputSignal<string> = ...

    Unique table identifier used for persisting column widths. When set, column widths are stored in localStorage.

    title: InputSignal<string> = ...

    Title displayed above the list panel.

    treeDisplayWith: InputSignal<(data: T) => string> = ...

    Function that returns a display string for tree node data. Only used in tree mode when no #nodeTemplate is projected. Defaults to String(data).

    treeNodeTemplate: Signal<TemplateRef<TreeNodeContext<T>> | undefined> = ...

    Optional tree-node template — forwarded to <ui-tree-view>. Receives TreeNodeContext as its context.

    Methods

    • Called by the embedded <ui-filter> when the expression changes.

      • For FilterableArrayDatasource the expression is applied via filterBy() and the adapter is refreshed.
      • For tree mode the expression is compiled into a predicate for the tree-view's filterPredicate input.
      • Always emits via expressionChange so consumers with custom datasources can react.

      Parameters

      Returns void