This file (8kB) exceeds the allowed full mode (48 kb) size. The editor full height is disabled, only scrolling is allowed.
If you wish to edit a file, it is recommended to use the scroll mode as some users do not like the full height mode.
<div class="p3xr-database-treecontrol-controls-leading">
<button class="p3xr-database-treecontrol-icon-button p3xr-database-treecontrol-icon-primary" type="button"
[matMenuTriggerFor]="expandMenu"
[matTooltip]="strings().intention?.extend" matTooltipPosition="above">
<span class="material-icons" aria-hidden="true">keyboard_arrow_down</span>
</button>
<mat-menu #expandMenu="matMenu">
<button mat-menu-item (click)="treeExpandToLevel(1)">{{ strings().page?.treeControls?.level }} 1</button>
<button mat-menu-item (click)="treeExpandToLevel(2)">{{ strings().page?.treeControls?.level }} 2</button>
<button mat-menu-item (click)="treeExpandToLevel(3)">{{ strings().page?.treeControls?.level }} 3</button>
<button mat-menu-item (click)="treeExpandToLevel(4)">{{ strings().page?.treeControls?.level }} 4</button>
<button mat-menu-item (click)="treeExpandToLevel(5)">{{ strings().page?.treeControls?.level }} 5</button>
<mat-divider></mat-divider>
<button mat-menu-item (click)="treeExpandAll()">{{ strings().page?.treeControls?.expandAll }}</button>
</mat-menu>
<button class="p3xr-database-treecontrol-icon-button" type="button" id="p3xr-database-treecontrol-controls-collapse-all"
(click)="treeCollapseAll()" [matTooltip]="strings().page?.treeControls?.collapseAll" matTooltipPosition="above">
<span class="material-icons" aria-hidden="true">keyboard_arrow_up</span>
</button>
<button class="p3xr-database-treecontrol-icon-button" type="button" (click)="refreshTree()"
[matTooltip]="strings().intention?.refresh" matTooltipPosition="above">
<span class="material-icons" aria-hidden="true">refresh</span>
</button>
<button class="p3xr-database-treecontrol-icon-button" type="button" (click)="openTreeSettingDialog($event)"
[matTooltip]="strings().form?.treeSettings?.label?.formName" matTooltipPosition="above">
<span class="material-icons" aria-hidden="true">settings</span>
</button>
<p3xr-ng-input id="p3xr-database-treecontrol-controls-tree-divider-input"
class="p3xr-database-treecontrol-divider-input"
[ngModel]="redisTreeDivider"
(ngModelChange)="onDividerInputChange($event)"
[matTooltip]="strings().form?.treeSettings?.field?.treeSeparator" matTooltipPosition="above">
</p3xr-ng-input>
@if (treeDividers.length > 0) {
<button class="p3xr-database-treecontrol-divider-trigger" type="button"
[matMenuTriggerFor]="dividerMenu"
[matTooltip]="strings().form?.treeSettings?.field?.treeSeparatorSelector" matTooltipPosition="above">
<span class="material-icons" aria-hidden="true">arrow_drop_down</span>
</button>
<mat-menu #dividerMenu="matMenu" class="p3xr-divider-menu">
@for (divider of treeDividers; track divider) {
<button mat-menu-item type="button" (click)="setDivider(divider)">
<span class="p3xr-database-treecontrol-divider-menu-label">{{ divider === '' ? '(empty)' : divider }}</span>
</button>
}
</mat-menu>
}
</div>
@if (pages > 1) {
<span class="p3xr-database-treecontrol-controls-pager" [matTooltip]="keyCountText()">
<button class="p3xr-database-treecontrol-icon-button p3xr-database-treecontrol-icon-primary" type="button" (click)="pageAction('first')"
[matTooltip]="strings().page?.treeControls?.pager?.first">
<span class="material-icons" aria-hidden="true">skip_previous</span>
</button>
<button class="p3xr-database-treecontrol-icon-button" type="button" (click)="pageAction('prev')"
[matTooltip]="strings().page?.treeControls?.pager?.prev">
<span class="material-icons" aria-hidden="true">keyboard_arrow_left</span>
</button>
<p3xr-ng-input class="p3xr-database-treecontrol-page-input" type="number" step="1" min="1" [max]="'' + pages"
[ngModel]="page" (ngModelChange)="onPageInputChange($event)">
</p3xr-ng-input><span class="p3xr-database-treecontrol-pager-text">/ {{ pages }}</span>
<button class="p3xr-database-treecontrol-icon-button" type="button" (click)="pageAction('next')"
[matTooltip]="strings().page?.treeControls?.pager?.next">
<span class="material-icons" aria-hidden="true">keyboard_arrow_right</span>
</button>
<button class="p3xr-database-treecontrol-icon-button p3xr-database-treecontrol-icon-primary" type="button" (click)="pageAction('last')"
[matTooltip]="strings().page?.treeControls?.pager?.last">
<span class="material-icons" aria-hidden="true">skip_next</span>
</button>
</span>
} @else {
<span class="p3xr-database-treecontrol-controls-keycount">
{{ keyCountText() }}
</span>
}
<div class="p3xr-database-treecontrol-controls-search">
<p3xr-ng-input
[class]="'p3xr-database-treecontrol-search-input ' + searchInputClass()"
[placeholder]="searchPlaceholder()"
[ngModel]="search"
(ngModelChange)="onSearchModelChange($event)"
(enterPressed)="onSearchChange()"
[matTooltip]="strings().page?.treeControls?.search?.infoDetails"
matTooltipPosition="right"
matTooltipClass="p3xr-tree-node-tooltip">
</p3xr-ng-input>
<button class="p3xr-database-treecontrol-icon-button p3xr-database-treecontrol-icon-primary" type="button" (click)="onSearchChange()"
[matTooltip]="strings().page?.treeControls?.search?.search" matTooltipPosition="above">
<span class="material-icons" aria-hidden="true">search</span>
</button>
@if (search.length > 0) {
<button class="p3xr-database-treecontrol-icon-button p3xr-database-treecontrol-icon-primary" type="button" (click)="clearSearch()"
[matTooltip]="strings().page?.treeControls?.search?.clear" matTooltipPosition="above">
<span class="material-icons" aria-hidden="true">clear</span>
</button>
}
@if (!isReadonly) {
<span class="material-icons p3xr-database-treecontrol-root-add" (click)="addRootKey($event)"
[matTooltip]="strings().intention?.addKeyRoot" matTooltipPosition="above">add</span>
}
<button class="p3xr-database-treecontrol-icon-button" type="button" [matMenuTriggerFor]="actionsMenu">
<span class="material-icons" aria-hidden="true">more_vert</span>
</button>
<mat-menu #actionsMenu="matMenu">
<button mat-menu-item (click)="exportKeys()">
<mat-icon>file_download</mat-icon>
<span>{{ exportLabel() }}</span>
</button>
@if (search.length > 0) {
<div class="p3xr-menu-hint">{{ strings().label?.exportSearchHint }}</div>
}
@if (!isReadonly) {
<button mat-menu-item (click)="importKeys()">
<mat-icon>file_upload</mat-icon>
<span>{{ strings().intention?.importKeys }}</span>
</button>
@if (search.length > 0) {
<div class="p3xr-menu-hint">{{ strings().label?.importSearchHint }}</div>
}
}
@if (!isReadonly) {
<mat-divider></mat-divider>
<button mat-menu-item (click)="deleteSearchKeys()">
<mat-icon [style.color]="'var(--p3xr-btn-warn-bg)'">delete_sweep</mat-icon>
<span>{{ deleteSearchLabel() }}</span>
</button>
@if (search.length > 0) {
<div class="p3xr-menu-hint">{{ strings().label?.deleteSearchHint }}</div>
}
}
</mat-menu>
</div>
| / | Focus search |
| ? | Show this help |
| Esc | Unfocus input |