ngx-edu-sharing-ui 10.0.26 → 10.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/scss/branding.scss +32 -7
- package/assets/scss/material-theme.scss +29 -0
- package/assets/scss/variables.scss +2 -1
- package/fesm2022/ngx-edu-sharing-ui.mjs +207 -109
- package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
- package/lib/common/edu-sharing-ui-common.module.d.ts +25 -24
- package/lib/directives/icon.directive.d.ts +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/info-message/info-message.component.d.ts +13 -0
- package/lib/list-items/list-text/list-text.component.d.ts +1 -1
- package/lib/list-items/list-widget.d.ts +1 -1
- package/lib/mds-viewer/mds-editor-instance-service.abstract.d.ts +2 -1
- package/lib/mds-viewer/widget/mds-widget.component.d.ts +1 -1
- package/lib/node-entries/entries-model.d.ts +3 -1
- package/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.d.ts +0 -2
- package/lib/node-entries/node-entries-table/node-entries-table.component.d.ts +9 -3
- package/lib/node-entries/node-entries-wrapper.component.d.ts +3 -1
- package/lib/node-entries/node-entries.module.d.ts +1 -1
- package/lib/node-entries/node-type-badge/node-type-badge.component.d.ts +3 -1
- package/lib/services/node-entries.service.d.ts +2 -1
- package/lib/services/node-helper.service.d.ts +1 -1
- package/lib/services/render-helper.service.d.ts +1 -0
- package/lib/services/ui.service.d.ts +4 -0
- package/lib/types/option-item.d.ts +5 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Pipe, ViewChildren, Injectable, InjectionToken,
|
|
3
|
-
import * as
|
|
2
|
+
import { Pipe, ViewChildren, Injectable, InjectionToken, Input, Optional, Directive, signal, computed, ViewChild, ChangeDetectionStrategy, Component, EventEmitter, Output, HostListener, HostBinding, CUSTOM_ELEMENTS_SCHEMA, NgModule, ContentChild, Inject, effect, ElementRef, SkipSelf } from '@angular/core';
|
|
3
|
+
import * as i9 from '@angular/material/core';
|
|
4
4
|
import { MatRipple, MatRippleModule } from '@angular/material/core';
|
|
5
5
|
import { map, distinctUntilChanged, take, filter, takeUntil, first, switchMap, pairwise, tap, startWith, delay as delay$1, debounceTime, shareReplay, skip, catchError, reduce } from 'rxjs/operators';
|
|
6
6
|
import * as i2 from 'ngx-edu-sharing-api';
|
|
@@ -11,12 +11,12 @@ import * as i3 from '@angular/common';
|
|
|
11
11
|
import { DatePipe, CommonModule } from '@angular/common';
|
|
12
12
|
import * as i1 from '@ngx-translate/core';
|
|
13
13
|
import { TranslateModule, MissingTranslationHandler, TranslateLoader } from '@ngx-translate/core';
|
|
14
|
-
import * as i2$1 from '@angular/router';
|
|
15
|
-
import { RouterModule } from '@angular/router';
|
|
16
14
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
17
15
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
18
16
|
import * as i1$1 from '@angular/common/http';
|
|
19
17
|
import { HttpClient } from '@angular/common/http';
|
|
18
|
+
import * as i2$1 from '@angular/router';
|
|
19
|
+
import { RouterModule } from '@angular/router';
|
|
20
20
|
import * as i3$1 from '@angular/platform-browser';
|
|
21
21
|
import * as i1$2 from '@angular/material/progress-spinner';
|
|
22
22
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
@@ -24,14 +24,14 @@ import { transition, style, animate, state, trigger } from '@angular/animations'
|
|
|
24
24
|
import { isArray as isArray$1, isString } from 'lodash-es';
|
|
25
25
|
import * as i3$2 from '@angular/material/menu';
|
|
26
26
|
import { MatMenuModule } from '@angular/material/menu';
|
|
27
|
-
import * as
|
|
27
|
+
import * as i6 from '@angular/material/button';
|
|
28
28
|
import { MatButtonModule } from '@angular/material/button';
|
|
29
|
-
import * as
|
|
29
|
+
import * as i5 from '@angular/material/tooltip';
|
|
30
30
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
31
31
|
import { isArray as isArray$2 } from 'lodash';
|
|
32
|
-
import * as i8
|
|
32
|
+
import * as i8 from '@angular/cdk/drag-drop';
|
|
33
33
|
import { moveItemInArray, CdkDropList, DragDropModule } from '@angular/cdk/drag-drop';
|
|
34
|
-
import * as
|
|
34
|
+
import * as i10 from '@angular/cdk/a11y';
|
|
35
35
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
36
36
|
import * as i2$3 from '@angular/cdk/overlay';
|
|
37
37
|
import { OverlayModule } from '@angular/cdk/overlay';
|
|
@@ -41,13 +41,13 @@ import * as i3$3 from '@angular/material/badge';
|
|
|
41
41
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
42
42
|
import * as i5$1 from '@angular/material/checkbox';
|
|
43
43
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
44
|
-
import * as i8$
|
|
44
|
+
import * as i8$1 from '@angular/material/paginator';
|
|
45
45
|
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
46
46
|
import * as i7 from '@angular/material/slide-toggle';
|
|
47
47
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
48
|
-
import * as
|
|
48
|
+
import * as i25 from '@angular/material/sort';
|
|
49
49
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
50
|
-
import * as
|
|
50
|
+
import * as i23 from '@angular/material/table';
|
|
51
51
|
import { MatTableModule } from '@angular/material/table';
|
|
52
52
|
import { DataSource, SelectionModel } from '@angular/cdk/collections';
|
|
53
53
|
import { RSApiConfiguration } from 'ngx-rendering-service-api';
|
|
@@ -687,7 +687,7 @@ class MdsViewerService {
|
|
|
687
687
|
return value.map((v) => {
|
|
688
688
|
if (definition.format) {
|
|
689
689
|
try {
|
|
690
|
-
return new DatePipe(
|
|
690
|
+
return new DatePipe('en-US').transform(v, definition.format);
|
|
691
691
|
}
|
|
692
692
|
catch (e) {
|
|
693
693
|
console.warn('Could not format date', e, definition);
|
|
@@ -728,6 +728,8 @@ class MdsViewerService {
|
|
|
728
728
|
case 'color':
|
|
729
729
|
case 'textarea':
|
|
730
730
|
case 'singleoption':
|
|
731
|
+
case 'radioVertical':
|
|
732
|
+
case 'radioHorizontal':
|
|
731
733
|
return 'text';
|
|
732
734
|
case 'number':
|
|
733
735
|
return 'number';
|
|
@@ -767,6 +769,8 @@ class MdsEditorInstanceServiceAbstract {
|
|
|
767
769
|
this.values$ = new BehaviorSubject(null);
|
|
768
770
|
/** Nodes with updated and complete metadata. */
|
|
769
771
|
this.nodes$ = new BehaviorSubject(null);
|
|
772
|
+
// Mutable state
|
|
773
|
+
this.shouldShowExtendedWidgets$ = new BehaviorSubject(false);
|
|
770
774
|
}
|
|
771
775
|
}
|
|
772
776
|
|
|
@@ -940,6 +944,12 @@ class UIService {
|
|
|
940
944
|
}, delay);
|
|
941
945
|
return component;
|
|
942
946
|
}
|
|
947
|
+
/**
|
|
948
|
+
* returns true if the current browser is safari running
|
|
949
|
+
*/
|
|
950
|
+
static isSafari() {
|
|
951
|
+
return /AppleWebKit/.test(navigator.userAgent) && /Safari/.test(navigator.userAgent);
|
|
952
|
+
}
|
|
943
953
|
/**
|
|
944
954
|
* dynamically inject an angular component into a regular html dom element
|
|
945
955
|
* @param componentFactoryResolver The resolver service
|
|
@@ -1178,6 +1188,11 @@ class OptionItem {
|
|
|
1178
1188
|
* @type {boolean}
|
|
1179
1189
|
*/
|
|
1180
1190
|
this.isToggle = false;
|
|
1191
|
+
/**
|
|
1192
|
+
* toggle type. Default is a flat, grayish
|
|
1193
|
+
* primary is a primary colored button with label (if space is available)
|
|
1194
|
+
*/
|
|
1195
|
+
this.toggleType = 'default';
|
|
1181
1196
|
/**
|
|
1182
1197
|
* Only when @isToggle. is the toggle currently visible
|
|
1183
1198
|
*/
|
|
@@ -1540,7 +1555,7 @@ class NodeHelperService {
|
|
|
1540
1555
|
if (name == '') {
|
|
1541
1556
|
name = 'NONE';
|
|
1542
1557
|
}
|
|
1543
|
-
return this.translate
|
|
1558
|
+
return this.translate.instant('LICENSE.NAMES.' + name);
|
|
1544
1559
|
// return name.replace(/_/g,"-");
|
|
1545
1560
|
}
|
|
1546
1561
|
/**
|
|
@@ -1560,7 +1575,7 @@ class NodeHelperService {
|
|
|
1560
1575
|
.replace('{{version}}', licenseVersion)
|
|
1561
1576
|
.replace('{{locale}}', locale)
|
|
1562
1577
|
// use base language for de- special variants
|
|
1563
|
-
.replace('{{language}}', this.translate
|
|
1578
|
+
.replace('{{language}}', this.translate.currentLang?.split('-')?.[0] || 'en'));
|
|
1564
1579
|
}
|
|
1565
1580
|
getWorkflowStatusById(id) {
|
|
1566
1581
|
const workflows = this.getWorkflows();
|
|
@@ -1746,7 +1761,7 @@ class NodeHelperService {
|
|
|
1746
1761
|
}
|
|
1747
1762
|
return true;
|
|
1748
1763
|
}
|
|
1749
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeHelperService, deps: [{ token: i1.TranslateService
|
|
1764
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeHelperService, deps: [{ token: i1.TranslateService }, { token: i2.ApiHelpersService }, { token: i2.NetworkService }, { token: i2.ConfigService }, { token: EduSharingUiConfiguration }, { token: RepoUrlService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1750
1765
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeHelperService, providedIn: 'root' }); }
|
|
1751
1766
|
}
|
|
1752
1767
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeHelperService, decorators: [{
|
|
@@ -1754,9 +1769,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
1754
1769
|
args: [{
|
|
1755
1770
|
providedIn: 'root',
|
|
1756
1771
|
}]
|
|
1757
|
-
}], ctorParameters: () => [{ type: i1.TranslateService,
|
|
1758
|
-
type: Optional
|
|
1759
|
-
}] }, { type: i2.ApiHelpersService }, { type: i2.NetworkService }, { type: i2.ConfigService }, { type: EduSharingUiConfiguration }, { type: RepoUrlService }] });
|
|
1772
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.ApiHelpersService }, { type: i2.NetworkService }, { type: i2.ConfigService }, { type: EduSharingUiConfiguration }, { type: RepoUrlService }] });
|
|
1760
1773
|
|
|
1761
1774
|
function notNull(value) {
|
|
1762
1775
|
return value !== undefined && value !== null;
|
|
@@ -1867,6 +1880,11 @@ class IconDirective {
|
|
|
1867
1880
|
}
|
|
1868
1881
|
svgElement.classList.add('svg-icons');
|
|
1869
1882
|
this.svg = svgElement;
|
|
1883
|
+
// remove possible existing SVG element to avoid duplicate icons
|
|
1884
|
+
const existingSvg = this.element.nativeElement.querySelector('.svg-icons');
|
|
1885
|
+
if (existingSvg) {
|
|
1886
|
+
this.renderer.removeChild(this.element.nativeElement, existingSvg);
|
|
1887
|
+
}
|
|
1870
1888
|
this.renderer.appendChild(this.element.nativeElement, this.svg);
|
|
1871
1889
|
if (this._aria) {
|
|
1872
1890
|
this.updateAria();
|
|
@@ -1942,13 +1960,12 @@ class IconDirective {
|
|
|
1942
1960
|
this.element.nativeElement.insertAdjacentElement('afterend', this.altTextSpan);
|
|
1943
1961
|
}
|
|
1944
1962
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: IconDirective, deps: [{ token: i0.ElementRef }, { token: i1$1.HttpClient }, { token: i1.TranslateService }, { token: i0.Renderer2 }, { token: i2.ConfigService, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1945
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: IconDirective, isStandalone:
|
|
1963
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: IconDirective, isStandalone: true, selector: "i[esIcon], i.material-icons", inputs: { altText: "altText", aria: "aria", esIcon: "esIcon", esIconContext: "esIconContext" }, ngImport: i0 }); }
|
|
1946
1964
|
}
|
|
1947
1965
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: IconDirective, decorators: [{
|
|
1948
1966
|
type: Directive,
|
|
1949
1967
|
args: [{
|
|
1950
1968
|
selector: 'i[esIcon], i.material-icons',
|
|
1951
|
-
standalone: false,
|
|
1952
1969
|
}]
|
|
1953
1970
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1$1.HttpClient }, { type: i1.TranslateService }, { type: i0.Renderer2 }, { type: i2.ConfigService, decorators: [{
|
|
1954
1971
|
type: Optional
|
|
@@ -2169,7 +2186,7 @@ class MdsWidgetComponent {
|
|
|
2169
2186
|
}
|
|
2170
2187
|
click() {
|
|
2171
2188
|
if (this.getDefinition().link === '_BLANK') {
|
|
2172
|
-
window.open(this.mdsViewerService.getFormattedValue(this.value(), this.
|
|
2189
|
+
window.open(this.mdsViewerService.getFormattedValue(this.value(), this.getDefinition(), 'text')[0]);
|
|
2173
2190
|
}
|
|
2174
2191
|
else if (this.getDefinition().link === '_SELF') {
|
|
2175
2192
|
window.location.href = this.mdsViewerService.getFormattedValue(this.value(), this.definition, 'text')[0];
|
|
@@ -2265,11 +2282,11 @@ class MdsWidgetComponent {
|
|
|
2265
2282
|
void this.view.injectEditField(this, this.editWrapper.nativeElement.children[0]);
|
|
2266
2283
|
}
|
|
2267
2284
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MdsWidgetComponent, deps: [{ token: MdsEditorInstanceServiceAbstract, optional: true }, { token: i1.TranslateService }, { token: UIService }, { token: ViewInstanceService }, { token: MdsViewerService }, { token: i0.Injector }, { token: NodeHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: MdsWidgetComponent, isStandalone: false, selector: "es-mds-widget", inputs: { widget: "widget", showCaption: "showCaption", inlineEditing: "inlineEditing", definition: "definition", view: "view" }, viewQueries: [{ propertyName: "editWrapper", first: true, predicate: ["editWrapper"], descendants: true }, { propertyName: "matRipple", first: true, predicate: MatRipple, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType() }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType() }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"['text', 'number', 'date'].includes(basicType())\">{{ formatValue() }}</div>\n <div *ngIf=\"basicType() === 'license' && (license$ | async) as license\">\n <img alt=\"\" [src]=\"license.icon\" /> {{ license.name }}\n </div>\n <div *ngIf=\"basicType() === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType() === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType() === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType() === 'slider'\">\n <span class=\"slider-value\">{{ value() }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType() === 'duration'\">\n <span class=\"duration-value\">{{ value()[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType() === 'range'\">\n <span class=\"slider-value\">{{ value()[0] }}</span\n >-<span class=\"slider-value\">{{ value()[1] }}</span>\n </div>\n <div *ngIf=\"basicType() === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type:
|
|
2285
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: MdsWidgetComponent, isStandalone: false, selector: "es-mds-widget", inputs: { widget: "widget", showCaption: "showCaption", inlineEditing: "inlineEditing", definition: "definition", view: "view" }, viewQueries: [{ propertyName: "editWrapper", first: true, predicate: ["editWrapper"], descendants: true }, { propertyName: "matRipple", first: true, predicate: MatRipple, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"\n (!isEmpty() || !widget.definition.hideIfEmpty || isEditable()) &&\n (!widget.definition.isExtended ||\n !mdsEditorInstance ||\n (mdsEditorInstance?.shouldShowExtendedWidgets$ | async))\n \"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType() }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType() }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"['text', 'number', 'date'].includes(basicType())\">{{ formatValue() }}</div>\n <div *ngIf=\"basicType() === 'license' && (license$ | async) as license\">\n <img alt=\"\" [src]=\"license.icon\" /> {{ license.name }}\n </div>\n <div *ngIf=\"basicType() === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType() === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType() === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType() === 'slider'\">\n <span class=\"slider-value\">{{ value() }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType() === 'duration'\">\n <span class=\"duration-value\">{{ value()[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType() === 'range'\">\n <span class=\"slider-value\">{{ value()[0] }}</span\n >-<span class=\"slider-value\">{{ value()[1] }}</span>\n </div>\n <div *ngIf=\"basicType() === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: i9.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: MdsDurationPipe, name: "appMdsDuration" }, { kind: "pipe", type: VCardNamePipe, name: "vcardName" }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
|
|
2269
2286
|
}
|
|
2270
2287
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MdsWidgetComponent, decorators: [{
|
|
2271
2288
|
type: Component,
|
|
2272
|
-
args: [{ selector: 'es-mds-widget', changeDetection: ChangeDetectionStrategy.Default, standalone: false, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"!isEmpty() || !widget.definition.hideIfEmpty || isEditable()\"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType() }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType() }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"['text', 'number', 'date'].includes(basicType())\">{{ formatValue() }}</div>\n <div *ngIf=\"basicType() === 'license' && (license$ | async) as license\">\n <img alt=\"\" [src]=\"license.icon\" /> {{ license.name }}\n </div>\n <div *ngIf=\"basicType() === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType() === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType() === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType() === 'slider'\">\n <span class=\"slider-value\">{{ value() }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType() === 'duration'\">\n <span class=\"duration-value\">{{ value()[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType() === 'range'\">\n <span class=\"slider-value\">{{ value()[0] }}</span\n >-<span class=\"slider-value\">{{ value()[1] }}</span>\n </div>\n <div *ngIf=\"basicType() === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"] }]
|
|
2289
|
+
args: [{ selector: 'es-mds-widget', changeDetection: ChangeDetectionStrategy.Default, standalone: false, template: "<es-mds-editor-widget-container\n *ngIf=\"!editWrapper.innerText.trim()\"\n [injectedView]=\"this\"\n [widget]=\"widget\"\n [label]=\"false\"\n [wrapInFormField]=\"false\"\n [wrapInGroup]=\"false\"\n [valueType]=\"valueType\"\n matRipple\n [matRippleDisabled]=\"true\"\n>\n <div class=\"edit-wrapper\">\n <div\n *ngIf=\"\n (!isEmpty() || !widget.definition.hideIfEmpty || isEditable()) &&\n (!widget.definition.isExtended ||\n !mdsEditorInstance ||\n (mdsEditorInstance?.shouldShowExtendedWidgets$ | async))\n \"\n class=\"widget-wrapper\"\n >\n <div\n class=\"widget-label\"\n [attr.role]=\"headingLevel ? 'heading' : null\"\n [attr.aria-level]=\"headingLevel\"\n *ngIf=\"widget.definition.caption && showCaption\"\n >\n {{ widget.definition.caption\n }}<span *ngIf=\"!headingLevel\" class=\"cdk-visually-hidden\">: </span>\n </div>\n <div\n class=\"value-wrapper\"\n [class.value-wrapper-edit]=\"isEditable()\"\n (click)=\"isEditable() ? startEdit($event) : null\"\n >\n <div *ngIf=\"isEmpty()\" class=\"widget-data widget-no-data widget-type-{{ basicType() }}\">\n -\n </div>\n <div\n *ngIf=\"!isEmpty()\"\n class=\"widget-data widget-type-{{ basicType() }} {{\n widget.definition.link ? 'widget-link' : ''\n }}\"\n (click)=\"click()\"\n >\n <div *ngIf=\"['text', 'number', 'date'].includes(basicType())\">{{ formatValue() }}</div>\n <div *ngIf=\"basicType() === 'license' && (license$ | async) as license\">\n <img alt=\"\" [src]=\"license.icon\" /> {{ license.name }}\n </div>\n <div *ngIf=\"basicType() === 'array'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v }}</div>\n </div>\n <div *ngIf=\"basicType() === 'tree'\">\n <div class=\"tree-entry\" *ngFor=\"let v of rawValue\">\n <ng-container *ngTemplateOutlet=\"treeEntry; context: { path: v.path }\"></ng-container>\n </div>\n </div>\n <div *ngIf=\"basicType() === 'vcard'\">\n <div class=\"array-entry\" *ngFor=\"let v of value()\">{{ v | vcardName }}</div>\n </div>\n <div *ngIf=\"basicType() === 'slider'\">\n <span class=\"slider-value\">{{ value() }}</span\n ><span> / </span><span class=\"slider-max\">{{ widget.definition.max }}</span>\n </div>\n <div *ngIf=\"basicType() === 'duration'\">\n <span class=\"duration-value\">{{ value()[0] | appMdsDuration }}</span>\n </div>\n <div *ngIf=\"basicType() === 'range'\">\n <span class=\"slider-value\">{{ value()[0] }}</span\n >-<span class=\"slider-value\">{{ value()[1] }}</span>\n </div>\n <div *ngIf=\"basicType() === 'unknown'\">\n The widget type {{ widget.definition.type }} is currently not supported via angular\n rendering\n </div>\n </div>\n </div>\n </div>\n <!--<button mat-icon-button\n *ngIf=\"mdsEditorInstance.editorMode === 'inline' && widget.definition.interactionType === 'Input'\"\n (click)=\"view.injectEditField(this, edit)\"\n class=\"btn-edit\">\n <i esIcon=\"edit\"></i>\n </button>-->\n </div>\n</es-mds-editor-widget-container>\n<div class=\"edit-wrapper\">\n <div #editWrapper><div #edit></div></div>\n <!--<button *ngIf=\"!!editWrapper.innerText.trim()\" mat-icon-button><i esIcon=\"save\"></i></button>-->\n</div>\n<ng-template #treeEntry let-path=\"path\">\n <ng-container *ngFor=\"let t of path; let first = first\">\n <ng-container *ngIf=\"!first\">\n <span class=\"cdk-visually-hidden\">{{ 'SUB_CATEGORY_ARIA' | translate }}</span>\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"false\"></i>\n </ng-container>\n <a\n [routerLink]=\"'/' + ROUTER_PREFIX + 'search'\"\n [queryParams]=\"getSearchParams(t)\"\n *ngIf=\"widget.definition.isSearchable\"\n >{{ t.caption }}</a\n >\n <span *ngIf=\"!widget.definition.isSearchable\">{{ t.caption }}</span>\n </ng-container>\n</ng-template>\n", styles: [".widget-label{font-size:90%;opacity:.8}.edit-wrapper{display:flex;align-items:center;transition:var(--transitionNormal) all}.edit-wrapper>div:first-child{flex-grow:1}.edit-wrapper>button{margin-left:10px}.edit-wrapper .widget-wrapper{padding:2px 5px}.edit-wrapper .value-wrapper-edit:hover{outline:1px solid #ccc;cursor:text}.widget-data{padding:4px 0 10px;word-break:break-word}.widget-data.widget-type-slider{opacity:.8}.widget-data.widget-type-slider .slider-value{opacity:.9;font-weight:700}.widget-data.widget-type-array .array-entry,.widget-data.widget-type-vcard .array-entry{display:inline}.widget-data.widget-type-array .array-entry:not(:last-child):after,.widget-data.widget-type-vcard .array-entry:not(:last-child):after{content:\", \";padding-right:.3em;display:inline;align-items:flex-end}.widget-data.widget-type-tree>div{display:flex;flex-wrap:wrap;gap:10px}.widget-data.widget-type-tree .tree-entry{display:inline-block;border-radius:5px;padding:5px 10px;background-color:#f9f9f9}.widget-data.widget-type-tree .tree-entry>a{color:var(--palette-primary-800);text-decoration:none}.widget-data.widget-type-tree .tree-entry>*{vertical-align:middle}.widget-data.widget-type-tree .tree-entry>i{font-size:18px}.widget-data.widget-link{text-decoration:underline;cursor:pointer}.widget-type-text>div{white-space:pre-line}:host ::ng-deep .edit-wrapper .widget-container mat-form-field{margin-top:.5em}\n"] }]
|
|
2273
2290
|
}], ctorParameters: () => [{ type: MdsEditorInstanceServiceAbstract, decorators: [{
|
|
2274
2291
|
type: Optional
|
|
2275
2292
|
}] }, { type: i1.TranslateService }, { type: UIService }, { type: ViewInstanceService }, { type: MdsViewerService }, { type: i0.Injector }, { type: NodeHelperService }], propDecorators: { widget: [{
|
|
@@ -2492,7 +2509,7 @@ class MdsViewerComponent {
|
|
|
2492
2509
|
}
|
|
2493
2510
|
}
|
|
2494
2511
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MdsViewerComponent, deps: [{ token: i2.MdsService }, { token: MdsViewerService }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }, { token: i0.ViewContainerRef }, { token: i3$1.DomSanitizer }, { token: ViewInstanceService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2495
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: MdsViewerComponent, isStandalone: false, selector: "es-mds-viewer", inputs: { mdsEditorInstanceService: "mdsEditorInstanceService", groupId: "groupId", setId: "setId", data: "data", mds: "mds", showGroupHeadings: "showGroupHeadings", headingLevel: "headingLevel" }, providers: [MdsViewerService, ViewInstanceService], viewQueries: [{ propertyName: "container", predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-spinner-small *ngIf=\"!templates()\"></es-spinner-small>\n<div *ngFor=\"let t of templates()\" #container class=\"mds-viewer\">\n <div *ngIf=\"showGroupHeadings && t.view.caption\" class=\"card-title-element group-heading\">\n <i [esIcon]=\"t.view.icon\" *ngIf=\"t.view.icon\"></i><span>{{ t.view.caption }}</span>\n </div>\n <div class=\"template\" [innerHTML]=\"t.html\"></div>\n</div>\n", styles: [":host ::ng-deep es-mds-editor-widget-container{margin-bottom:0}:host ::ng-deep .mdsContributorGroup{padding:5px}:host ::ng-deep .mdsContributorGroup .mdsContributorTitle{font-weight:700;padding-bottom:3px}:host{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(450px,max(200px,100%)),1fr));grid-gap:10px}.mds-viewer{display:flex;flex-direction:column;gap:10px}es-spinner-small{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.card-title-element{font-size:140%;font-weight:700;border-bottom:1px solid #888;padding:10px;background-color:#f7f7f7}.card-title-element i{margin-left:10px;margin-right:10px;color:#666;position:relative;top:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "
|
|
2512
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: MdsViewerComponent, isStandalone: false, selector: "es-mds-viewer", inputs: { mdsEditorInstanceService: "mdsEditorInstanceService", groupId: "groupId", setId: "setId", data: "data", mds: "mds", showGroupHeadings: "showGroupHeadings", headingLevel: "headingLevel" }, providers: [MdsViewerService, ViewInstanceService], viewQueries: [{ propertyName: "container", predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-spinner-small *ngIf=\"!templates()\"></es-spinner-small>\n<div *ngFor=\"let t of templates()\" #container class=\"mds-viewer\">\n <div *ngIf=\"showGroupHeadings && t.view.caption\" class=\"card-title-element group-heading\">\n <i [esIcon]=\"t.view.icon\" *ngIf=\"t.view.icon\"></i><span>{{ t.view.caption }}</span>\n </div>\n <div class=\"template\" [innerHTML]=\"t.html\"></div>\n</div>\n", styles: [":host ::ng-deep es-mds-editor-widget-container{margin-bottom:0}:host ::ng-deep .mdsContributorGroup{padding:5px}:host ::ng-deep .mdsContributorGroup .mdsContributorTitle{font-weight:700;padding-bottom:3px}:host{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(450px,max(200px,100%)),1fr));grid-gap:10px}.mds-viewer{display:flex;flex-direction:column;gap:10px}es-spinner-small{display:flex;justify-content:center;align-items:center;width:100%;height:100%}.card-title-element{font-size:140%;font-weight:700;border-bottom:1px solid #888;padding:10px;background-color:#f7f7f7}.card-title-element i{margin-left:10px;margin-right:10px;color:#666;position:relative;top:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: SpinnerSmallComponent, selector: "es-spinner-small", inputs: ["diameter"] }] }); }
|
|
2496
2513
|
}
|
|
2497
2514
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MdsViewerComponent, decorators: [{
|
|
2498
2515
|
type: Component,
|
|
@@ -2833,7 +2850,7 @@ class DropdownComponent {
|
|
|
2833
2850
|
return this.options$.value?.some((o) => o.isEnabled);
|
|
2834
2851
|
}
|
|
2835
2852
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DropdownComponent, deps: [{ token: UIService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2836
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DropdownComponent, isStandalone: false, selector: "es-dropdown", inputs: { position: "position", options: "options", callbackObjects: "callbackObjects", showDisabled: "showDisabled", menuClass: "menuClass" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of options$ | async; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" esIconContext=\"option\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>span{word-break:break-all}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: 600px){::ng-deep .mat-dropdown-menu.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu.mat-mdc-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0;max-height:calc(100vh - 150px);overflow-y:auto}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type:
|
|
2853
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DropdownComponent, isStandalone: false, selector: "es-dropdown", inputs: { position: "position", options: "options", callbackObjects: "callbackObjects", showDisabled: "showDisabled", menuClass: "menuClass" }, viewQueries: [{ propertyName: "menu", first: true, predicate: ["dropdown"], descendants: true, static: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<mat-menu\n #dropdown=\"matMenu\"\n class=\"mat-dropdown-menu\"\n [class]=\"menuClass\"\n backdropClass=\"mat-dropdown-menu\"\n [xPosition]=\"position === 'right' ? 'after' : 'before'\"\n>\n <!-- MatMenu has role=\"menu\", so the only meaningful role of descendants is \"menuitem\" -->\n <ul role=\"none\">\n <ng-container *ngFor=\"let option of options$ | async; let i = index\">\n <li *ngIf=\"option.isEnabled || showDisabled\" role=\"none\">\n <button\n mat-menu-item\n class=\"mat-menu-item collection-item-{{\n option.name | replaceChars : { search: '.', replace: '-' }\n }}\"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n matTooltipPosition=\"right\"\n matTooltipTouchGestures=\"off\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n [class.mat-menu-item-separate]=\"option.isSeparate || isNewGroup(i)\"\n [class.mat-menu-item-selected]=\"option.isSelected\"\n [disabled]=\"!option.isEnabled\"\n (click)=\"click(option)\"\n attr.data-test=\"menu-item-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" esIconContext=\"option\"></i> {{ option.name | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</mat-menu>\n<div #menuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" class=\"display-none\"></div>\n", styles: ["::ng-deep .mat-dropdown-menu .mat-mdc-menu-content{min-width:200px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button{display:flex;align-items:center}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button:not(:disabled)>span{color:var(--primary)}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>i{width:35px}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content>ul>li>button>span{word-break:break-all}::ng-deep .mat-dropdown-menu .mat-mdc-menu-content:not(:empty){padding:0!important}::ng-deep .mat-dropdown-menu ul{margin:0;list-style:none;padding-left:0}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text{display:flex;align-items:center}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item .mat-mdc-menu-item-text i{margin-right:10px}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item:hover:not([disabled]),::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-focused{color:var(--itemSelectedTextColor);background-color:var(--listItemSelectedBackground)}::ng-deep .mat-dropdown-menu ul li .mat-mdc-menu-item.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}::ng-deep .mat-dropdown-menu ul li .mat-menu-item-separate{border-top:1px solid #ccc}@media screen and (max-width: 600px){::ng-deep .mat-dropdown-menu.cdk-overlay-backdrop{background:#000c}::ng-deep .mat-dropdown-menu.mat-mdc-menu-panel{position:fixed;bottom:0;left:0;max-width:100%;width:100%;border-radius:0;max-height:calc(100vh - 150px);overflow-y:auto}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i3$2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: OptionTooltipPipe, name: "optionTooltip" }, { kind: "pipe", type: ReplaceCharsPipe, name: "replaceChars" }] }); }
|
|
2837
2854
|
}
|
|
2838
2855
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
2839
2856
|
type: Component,
|
|
@@ -2856,6 +2873,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
2856
2873
|
type: Input
|
|
2857
2874
|
}] } });
|
|
2858
2875
|
|
|
2876
|
+
class PropertySlugPipe {
|
|
2877
|
+
transform(value) {
|
|
2878
|
+
return value?.replace(/[:. ]/g, '_');
|
|
2879
|
+
}
|
|
2880
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PropertySlugPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2881
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: PropertySlugPipe, isStandalone: false, name: "propertySlug" }); }
|
|
2882
|
+
}
|
|
2883
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PropertySlugPipe, decorators: [{
|
|
2884
|
+
type: Pipe,
|
|
2885
|
+
args: [{
|
|
2886
|
+
name: 'propertySlug',
|
|
2887
|
+
standalone: false,
|
|
2888
|
+
}]
|
|
2889
|
+
}] });
|
|
2890
|
+
|
|
2859
2891
|
/**
|
|
2860
2892
|
* The action bar provides several icons, usually at the top right, with actions for a current context
|
|
2861
2893
|
*/
|
|
@@ -3016,11 +3048,11 @@ class ActionbarComponent {
|
|
|
3016
3048
|
this.invalidate();
|
|
3017
3049
|
}
|
|
3018
3050
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActionbarComponent, deps: [{ token: UIService }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3019
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ActionbarComponent, isStandalone: false, selector: "es-actionbar", inputs: { numberOfAlwaysVisibleOptions: "numberOfAlwaysVisibleOptions", numberOfAlwaysVisibleOptionsMobile: "numberOfAlwaysVisibleOptionsMobile", appearance: "appearance", dropdownPosition: "dropdownPosition", backgroundType: "backgroundType", style: "style", highlight: "highlight", showDisabled: "showDisabled", tooltipPosition: "tooltipPosition", options: "options", mobileBreakpoint: "mobileBreakpoint" }, usesOnChanges: true, ngImport: i0, template: "<es-dropdown\n #dropdownRef\n [options]=\"optionsMenu$ | async\"\n [showDisabled]=\"showDisabled\"\n [position]=\"dropdownPosition\"\n></es-dropdown>\n<div\n class=\"actionbar\"\n [class.actionbar-all-flat]=\"style === 'flat'\"\n [class.actionbar-background-dark]=\"backgroundType === 'dark'\"\n [class.actionbar-background-primary]=\"backgroundType === 'primary'\"\n [class.actionbar-round]=\"appearance === 'round'\"\n [class.actionbar-icon-button]=\"appearance === 'icon-button'\"\n>\n <div\n *ngIf=\"optionsToggleBefore.length\"\n class=\"actionToggle before\"\n [class.actionToggleDivider]=\"(optionsAlways$ | async).length\"\n >\n <ng-container\n *ngTemplateOutlet=\"toggle; context: { optionsToggle: optionsToggleBefore }\"\n ></ng-container>\n </div>\n <ng-container *ngFor=\"let option of optionsAlways$ | async; let i = index\">\n <button\n *ngIf=\"shouldHighlight(i, option)\"\n mat-flat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class
|
|
3051
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ActionbarComponent, isStandalone: false, selector: "es-actionbar", inputs: { numberOfAlwaysVisibleOptions: "numberOfAlwaysVisibleOptions", numberOfAlwaysVisibleOptionsMobile: "numberOfAlwaysVisibleOptionsMobile", appearance: "appearance", dropdownPosition: "dropdownPosition", backgroundType: "backgroundType", style: "style", highlight: "highlight", showDisabled: "showDisabled", tooltipPosition: "tooltipPosition", options: "options", mobileBreakpoint: "mobileBreakpoint" }, usesOnChanges: true, ngImport: i0, template: "<es-dropdown\n #dropdownRef\n [options]=\"optionsMenu$ | async\"\n [showDisabled]=\"showDisabled\"\n [position]=\"dropdownPosition\"\n></es-dropdown>\n<div\n class=\"actionbar\"\n [class.actionbar-all-flat]=\"style === 'flat'\"\n [class.actionbar-background-dark]=\"backgroundType === 'dark'\"\n [class.actionbar-background-primary]=\"backgroundType === 'primary'\"\n [class.actionbar-round]=\"appearance === 'round'\"\n [class.actionbar-icon-button]=\"appearance === 'icon-button'\"\n>\n <div\n *ngIf=\"optionsToggleBefore.length\"\n class=\"actionToggle before\"\n [class.actionToggleDivider]=\"(optionsAlways$ | async).length\"\n >\n <ng-container\n *ngTemplateOutlet=\"toggle; context: { optionsToggle: optionsToggleBefore }\"\n ></ng-container>\n </div>\n <ng-container *ngFor=\"let option of optionsAlways$ | async; let i = index\">\n <button\n *ngIf=\"shouldHighlight(i, option)\"\n mat-flat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class]=\"\n (!option.isEnabled && !showDisabled ? 'display-none ' : '') + (option.name | propertySlug)\n \"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n [matTooltipPosition]=\"tooltipPosition\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n <button\n *ngIf=\"!shouldHighlight(i, option)\"\n mat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class]=\"\n (!option.isEnabled && !showDisabled ? 'display-none ' : '') + (option.name | propertySlug)\n \"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n [matTooltipPosition]=\"tooltipPosition\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n </ng-container>\n <button\n mat-button\n color=\"primary\"\n class=\"more\"\n [attr.aria-label]=\"'OPTIONS.SHOW_ALL_OPTIONS' | translate\"\n [matMenuTriggerFor]=\"dropdownRef.menu\"\n *ngIf=\"canShowDropdown()\"\n data-test=\"more-actions-button\"\n >\n <i esIcon=\"more_vert\" [aria]=\"false\"></i>\n </button>\n <div\n *ngIf=\"optionsToggleAfter.length\"\n class=\"actionToggle after\"\n [class.actionToggleDivider]=\"(optionsAlways$ | async).length\"\n >\n <ng-container\n *ngTemplateOutlet=\"toggle; context: { optionsToggle: optionsToggleAfter }\"\n ></ng-container>\n </div>\n</div>\n<ng-template #toggle let-optionsToggle=\"optionsToggle\">\n <ng-container *ngFor=\"let option of optionsToggle\">\n <button\n *ngIf=\"option.isToggleVisible && option.toggleType === 'default'\"\n mat-icon-button\n matTooltip=\"{{ option.name | translate }}\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n [class]=\"\n 'toggle-default toggle-' +\n (option.name | replaceChars : { search: '.', replace: '-' }) +\n (option.isEnabled ? '' : ' disabled')\n \"\n attr.data-test=\"toggle-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" [aria]=\"false\"></i>\n </button>\n <button\n *ngIf=\"option.isToggleVisible && option.toggleType === 'primary'\"\n mat-flat-button\n color=\"primary\"\n matTooltip=\"{{ option.name | translate }}\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n [class]=\"\n 'toggle-primary toggle-' +\n (option.name | replaceChars : { search: '.', replace: '-' }) +\n (option.isEnabled ? '' : ' disabled')\n \"\n attr.data-test=\"toggle-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" [aria]=\"false\"></i>\n <span class=\"action-always-caption\"> {{ option.name | translate }}</span>\n </button>\n </ng-container>\n</ng-template>\n", styles: [".actionbar{display:flex;align-items:center;gap:10px}.actionToggle{display:flex;gap:2px;align-items:center}.actionToggle>button.toggle-default{color:var(--textLight)}.actionToggle>button.toggle-primary{margin:0 6px}button{min-width:unset}.light{color:#fff;background:transparent}.disabled{pointer-events:all}.light a{color:#fff}.actionToggle.after.actionToggleDivider{padding-left:10px;border-left:1px solid #ddd}.actionToggle.before.actionToggleDivider{padding-right:10px;margin-right:10px;border-right:1px solid #ddd}.more{color:var(--primary);background-color:transparent}.actionbar-background-dark .mat-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-dark .mat-button:disabled{color:rgba(var(--palette-foreground-text-dark),.75)}.actionbar-background-primary .mdc-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-primary .mat-mdc-unelevated-button{background-color:#fff;color:var(--primary)}.actionbar-background-primary .mat-mdc-unelevated-button:disabled{color:#00000080;background-color:#eee}.actionbar-round button{width:45px;height:45px;justify-content:center}.actionbar-round button{border-radius:50%;box-shadow:0 0 5px #0000004d}.actionbar-round.actionbar-background-primary .mat-button{background-color:#fff;color:var(--primary)}.actionbar-round.actionbar-all-flat button{background:#fff;color:var(--primary)!important}.actionbar-round.actionbar-all-flat button:disabled{color:var(--textLight)!important}.actionbar-round .more,.actionbar-round .actionAlways{background:#fff;color:var(--primary);display:flex;width:45px;height:45px;line-height:45px;text-align:center;align-items:center}.actionbar-round .more .edu-icons,.actionbar-round .more .material-icons,.actionbar-round .actionAlways .edu-icons,.actionbar-round .actionAlways .material-icons{position:relative;font-size:24px}.actionbar-round .more span,.actionbar-round .actionAlways span{display:none}.actionbar-round .action-always .edu-icons,.actionbar-round .action-always .material-icons{right:4px!important}@media screen and (max-width: 1100px){.action-always-caption{display:none}.action-always{padding:0 1rem}::ng-deep .action-always-caption{display:none}.mat-flat-button{padding:5px}}.actionbar-icon-button .action-always{padding:0 1rem}.actionbar-icon-button ::ng-deep .action-always-caption{display:none}.actionbar-icon-button .mat-flat-button{padding:5px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: DropdownComponent, selector: "es-dropdown", inputs: ["position", "options", "callbackObjects", "showDisabled", "menuClass"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: PropertySlugPipe, name: "propertySlug" }, { kind: "pipe", type: OptionTooltipPipe, name: "optionTooltip" }, { kind: "pipe", type: ReplaceCharsPipe, name: "replaceChars" }], animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))] }); }
|
|
3020
3052
|
}
|
|
3021
3053
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ActionbarComponent, decorators: [{
|
|
3022
3054
|
type: Component,
|
|
3023
|
-
args: [{ selector: 'es-actionbar', animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))], standalone: false, template: "<es-dropdown\n #dropdownRef\n [options]=\"optionsMenu$ | async\"\n [showDisabled]=\"showDisabled\"\n [position]=\"dropdownPosition\"\n></es-dropdown>\n<div\n class=\"actionbar\"\n [class.actionbar-all-flat]=\"style === 'flat'\"\n [class.actionbar-background-dark]=\"backgroundType === 'dark'\"\n [class.actionbar-background-primary]=\"backgroundType === 'primary'\"\n [class.actionbar-round]=\"appearance === 'round'\"\n [class.actionbar-icon-button]=\"appearance === 'icon-button'\"\n>\n <div\n *ngIf=\"optionsToggleBefore.length\"\n class=\"actionToggle before\"\n [class.actionToggleDivider]=\"(optionsAlways$ | async).length\"\n >\n <ng-container\n *ngTemplateOutlet=\"toggle; context: { optionsToggle: optionsToggleBefore }\"\n ></ng-container>\n </div>\n <ng-container *ngFor=\"let option of optionsAlways$ | async; let i = index\">\n <button\n *ngIf=\"shouldHighlight(i, option)\"\n mat-flat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class
|
|
3055
|
+
args: [{ selector: 'es-actionbar', animations: [trigger('openOverlay', UIAnimation.openOverlay(UIAnimation.ANIMATION_TIME_FAST))], standalone: false, template: "<es-dropdown\n #dropdownRef\n [options]=\"optionsMenu$ | async\"\n [showDisabled]=\"showDisabled\"\n [position]=\"dropdownPosition\"\n></es-dropdown>\n<div\n class=\"actionbar\"\n [class.actionbar-all-flat]=\"style === 'flat'\"\n [class.actionbar-background-dark]=\"backgroundType === 'dark'\"\n [class.actionbar-background-primary]=\"backgroundType === 'primary'\"\n [class.actionbar-round]=\"appearance === 'round'\"\n [class.actionbar-icon-button]=\"appearance === 'icon-button'\"\n>\n <div\n *ngIf=\"optionsToggleBefore.length\"\n class=\"actionToggle before\"\n [class.actionToggleDivider]=\"(optionsAlways$ | async).length\"\n >\n <ng-container\n *ngTemplateOutlet=\"toggle; context: { optionsToggle: optionsToggleBefore }\"\n ></ng-container>\n </div>\n <ng-container *ngFor=\"let option of optionsAlways$ | async; let i = index\">\n <button\n *ngIf=\"shouldHighlight(i, option)\"\n mat-flat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class]=\"\n (!option.isEnabled && !showDisabled ? 'display-none ' : '') + (option.name | propertySlug)\n \"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n [matTooltipPosition]=\"tooltipPosition\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n <button\n *ngIf=\"!shouldHighlight(i, option)\"\n mat-button\n color=\"primary\"\n [disabled]=\"!option.isEnabled\"\n [class]=\"\n (!option.isEnabled && !showDisabled ? 'display-none ' : '') + (option.name | propertySlug)\n \"\n matTooltip=\"{{ option | optionTooltip | async }}\"\n [matTooltipPosition]=\"tooltipPosition\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n >\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"action-always-caption\" *ngIf=\"option.showName && appearance === 'button'\">\n {{ option.name | translate }}</span\n >\n </button>\n </ng-container>\n <button\n mat-button\n color=\"primary\"\n class=\"more\"\n [attr.aria-label]=\"'OPTIONS.SHOW_ALL_OPTIONS' | translate\"\n [matMenuTriggerFor]=\"dropdownRef.menu\"\n *ngIf=\"canShowDropdown()\"\n data-test=\"more-actions-button\"\n >\n <i esIcon=\"more_vert\" [aria]=\"false\"></i>\n </button>\n <div\n *ngIf=\"optionsToggleAfter.length\"\n class=\"actionToggle after\"\n [class.actionToggleDivider]=\"(optionsAlways$ | async).length\"\n >\n <ng-container\n *ngTemplateOutlet=\"toggle; context: { optionsToggle: optionsToggleAfter }\"\n ></ng-container>\n </div>\n</div>\n<ng-template #toggle let-optionsToggle=\"optionsToggle\">\n <ng-container *ngFor=\"let option of optionsToggle\">\n <button\n *ngIf=\"option.isToggleVisible && option.toggleType === 'default'\"\n mat-icon-button\n matTooltip=\"{{ option.name | translate }}\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n [class]=\"\n 'toggle-default toggle-' +\n (option.name | replaceChars : { search: '.', replace: '-' }) +\n (option.isEnabled ? '' : ' disabled')\n \"\n attr.data-test=\"toggle-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" [aria]=\"false\"></i>\n </button>\n <button\n *ngIf=\"option.isToggleVisible && option.toggleType === 'primary'\"\n mat-flat-button\n color=\"primary\"\n matTooltip=\"{{ option.name | translate }}\"\n [attr.aria-label]=\"option.ariaLabel || option.name | translate\"\n (click)=\"click(option)\"\n [class]=\"\n 'toggle-primary toggle-' +\n (option.name | replaceChars : { search: '.', replace: '-' }) +\n (option.isEnabled ? '' : ' disabled')\n \"\n attr.data-test=\"toggle-{{ option.name }}\"\n >\n <i [esIcon]=\"option.icon\" [aria]=\"false\"></i>\n <span class=\"action-always-caption\"> {{ option.name | translate }}</span>\n </button>\n </ng-container>\n</ng-template>\n", styles: [".actionbar{display:flex;align-items:center;gap:10px}.actionToggle{display:flex;gap:2px;align-items:center}.actionToggle>button.toggle-default{color:var(--textLight)}.actionToggle>button.toggle-primary{margin:0 6px}button{min-width:unset}.light{color:#fff;background:transparent}.disabled{pointer-events:all}.light a{color:#fff}.actionToggle.after.actionToggleDivider{padding-left:10px;border-left:1px solid #ddd}.actionToggle.before.actionToggleDivider{padding-right:10px;margin-right:10px;border-right:1px solid #ddd}.more{color:var(--primary);background-color:transparent}.actionbar-background-dark .mat-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-dark .mat-button:disabled{color:rgba(var(--palette-foreground-text-dark),.75)}.actionbar-background-primary .mdc-button{color:rgb(var(--palette-foreground-text-dark))}.actionbar-background-primary .mat-mdc-unelevated-button{background-color:#fff;color:var(--primary)}.actionbar-background-primary .mat-mdc-unelevated-button:disabled{color:#00000080;background-color:#eee}.actionbar-round button{width:45px;height:45px;justify-content:center}.actionbar-round button{border-radius:50%;box-shadow:0 0 5px #0000004d}.actionbar-round.actionbar-background-primary .mat-button{background-color:#fff;color:var(--primary)}.actionbar-round.actionbar-all-flat button{background:#fff;color:var(--primary)!important}.actionbar-round.actionbar-all-flat button:disabled{color:var(--textLight)!important}.actionbar-round .more,.actionbar-round .actionAlways{background:#fff;color:var(--primary);display:flex;width:45px;height:45px;line-height:45px;text-align:center;align-items:center}.actionbar-round .more .edu-icons,.actionbar-round .more .material-icons,.actionbar-round .actionAlways .edu-icons,.actionbar-round .actionAlways .material-icons{position:relative;font-size:24px}.actionbar-round .more span,.actionbar-round .actionAlways span{display:none}.actionbar-round .action-always .edu-icons,.actionbar-round .action-always .material-icons{right:4px!important}@media screen and (max-width: 1100px){.action-always-caption{display:none}.action-always{padding:0 1rem}::ng-deep .action-always-caption{display:none}.mat-flat-button{padding:5px}}.actionbar-icon-button .action-always{padding:0 1rem}.actionbar-icon-button ::ng-deep .action-always-caption{display:none}.actionbar-icon-button .mat-flat-button{padding:5px}\n"] }]
|
|
3024
3056
|
}], ctorParameters: () => [{ type: UIService }, { type: i1.TranslateService }], propDecorators: { numberOfAlwaysVisibleOptions: [{
|
|
3025
3057
|
type: Input
|
|
3026
3058
|
}], numberOfAlwaysVisibleOptionsMobile: [{
|
|
@@ -3443,7 +3475,7 @@ class NodeUrlComponent {
|
|
|
3443
3475
|
return false;
|
|
3444
3476
|
}
|
|
3445
3477
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeUrlComponent, deps: [{ token: NodeHelperService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3446
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeUrlComponent, isStandalone: false, selector: "es-node-url", inputs: { node: "node", nodes: "nodes", target: "target", scope: "scope", queryParams: "queryParams", mode: "mode", disabled: "disabled", alwaysRipple: "alwaysRipple", ariaDescribedby: ["aria-describedby", "ariaDescribedby"], ariaLabel: ["aria-label", "ariaLabel"] }, outputs: { buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "link", first: true, predicate: ["link"], descendants: true }], ngImport: i0, template: "<ng-template #content><ng-content></ng-content></ng-template>\n<ng-container *ngIf=\"mode === 'link'\">\n <a\n *ngIf=\"!disabled\"\n #link\n matRipple\n matRippleColor=\"primary\"\n [matRippleDisabled]=\"isNested\"\n [routerLink]=\"get('routerLink')\"\n [state]=\"getState()\"\n [target]=\"target\"\n [queryParams]=\"get('queryParams')\"\n queryParamsHandling=\"merge\"\n cdkMonitorElementFocus\n [attr.aria-label]=\"ariaLabel ? node.name : null\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n <!-- We use `div`s instead of `span`s here because the legacy `ListTable` component will insert\n `div` elements into this component's content. However, this will lead to invalid HTML for \"button\"\n mode. So really, users of this component should only insert flow content. -->\n <div *ngIf=\"disabled && !alwaysRipple\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div *ngIf=\"disabled && alwaysRipple\" matRipple matRippleColor=\"primary\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n</ng-container>\n<ng-container *ngIf=\"mode === 'wrapper'\">\n <div\n class=\"node-url-wrapper\"\n #wrapper\n matRipple\n matRippleColor=\"primary\"\n [matRippleDisabled]=\"disabled && !alwaysRipple\"\n (click)=\"clickWrapper($event)\"\n (auxclick)=\"clickWrapper($event)\"\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <!-- An invisible link that will by clicked programmatically by `clickWrapper()`. -->\n <a\n #link\n [routerLink]=\"get('routerLink')\"\n [state]=\"getState()\"\n [queryParams]=\"get('queryParams')\"\n queryParamsHandling=\"merge\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n class=\"cdk-visually-hidden\"\n ></a>\n</ng-container>\n<ng-container *ngIf=\"mode === 'button'\">\n <button\n [disabled]=\"disabled\"\n #link\n matRipple\n matRippleColor=\"primary\"\n [matRippleDisabled]=\"disabled && !alwaysRipple\"\n (click)=\"buttonClick.emit($event)\"\n cdkMonitorElementFocus\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}:host>*{flex-grow:1}:host>a{text-decoration:none}.cdk-keyboard-focused{outline:none;outline:2px solid var(--palette-primary-300);outline-offset:2px}button{background-color:unset;border:unset;padding:unset;text-align:unset}div.node-url-wrapper{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type:
|
|
3478
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeUrlComponent, isStandalone: false, selector: "es-node-url", inputs: { node: "node", nodes: "nodes", target: "target", scope: "scope", queryParams: "queryParams", mode: "mode", disabled: "disabled", alwaysRipple: "alwaysRipple", ariaDescribedby: ["aria-describedby", "ariaDescribedby"], ariaLabel: ["aria-label", "ariaLabel"] }, outputs: { buttonClick: "buttonClick" }, viewQueries: [{ propertyName: "link", first: true, predicate: ["link"], descendants: true }], ngImport: i0, template: "<ng-template #content><ng-content></ng-content></ng-template>\n<ng-container *ngIf=\"mode === 'link'\">\n <a\n *ngIf=\"!disabled\"\n #link\n matRipple\n matRippleColor=\"primary\"\n [matRippleDisabled]=\"isNested\"\n [routerLink]=\"get('routerLink')\"\n [state]=\"getState()\"\n [target]=\"target\"\n [queryParams]=\"get('queryParams')\"\n queryParamsHandling=\"merge\"\n cdkMonitorElementFocus\n [attr.aria-label]=\"ariaLabel ? node.name : null\"\n [attr.aria-describedby]=\"ariaDescribedby\"\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </a>\n <!-- We use `div`s instead of `span`s here because the legacy `ListTable` component will insert\n `div` elements into this component's content. However, this will lead to invalid HTML for \"button\"\n mode. So really, users of this component should only insert flow content. -->\n <div *ngIf=\"disabled && !alwaysRipple\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <div *ngIf=\"disabled && alwaysRipple\" matRipple matRippleColor=\"primary\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n</ng-container>\n<ng-container *ngIf=\"mode === 'wrapper'\">\n <div\n class=\"node-url-wrapper\"\n #wrapper\n matRipple\n matRippleColor=\"primary\"\n [matRippleDisabled]=\"disabled && !alwaysRipple\"\n (click)=\"clickWrapper($event)\"\n (auxclick)=\"clickWrapper($event)\"\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n <!-- An invisible link that will by clicked programmatically by `clickWrapper()`. -->\n <a\n #link\n [routerLink]=\"get('routerLink')\"\n [state]=\"getState()\"\n [queryParams]=\"get('queryParams')\"\n queryParamsHandling=\"merge\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n class=\"cdk-visually-hidden\"\n ></a>\n</ng-container>\n<ng-container *ngIf=\"mode === 'button'\">\n <button\n [disabled]=\"disabled\"\n #link\n matRipple\n matRippleColor=\"primary\"\n [matRippleDisabled]=\"disabled && !alwaysRipple\"\n (click)=\"buttonClick.emit($event)\"\n cdkMonitorElementFocus\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </button>\n</ng-container>\n", styles: [":host{position:relative;display:flex}:host>*{flex-grow:1}:host>a{text-decoration:none}.cdk-keyboard-focused{outline:none;outline:2px solid var(--palette-primary-300);outline-offset:2px}button{background-color:unset;border:unset;padding:unset;text-align:unset}div.node-url-wrapper{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i9.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i2$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
|
|
3447
3479
|
}
|
|
3448
3480
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeUrlComponent, decorators: [{
|
|
3449
3481
|
type: Component,
|
|
@@ -3764,21 +3796,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3764
3796
|
args: ['attr.data-test']
|
|
3765
3797
|
}] } });
|
|
3766
3798
|
|
|
3767
|
-
class PropertySlugPipe {
|
|
3768
|
-
transform(value) {
|
|
3769
|
-
return value?.replace(/[:.]/, '_');
|
|
3770
|
-
}
|
|
3771
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PropertySlugPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3772
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: PropertySlugPipe, isStandalone: false, name: "propertySlug" }); }
|
|
3773
|
-
}
|
|
3774
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PropertySlugPipe, decorators: [{
|
|
3775
|
-
type: Pipe,
|
|
3776
|
-
args: [{
|
|
3777
|
-
name: 'propertySlug',
|
|
3778
|
-
standalone: false,
|
|
3779
|
-
}]
|
|
3780
|
-
}] });
|
|
3781
|
-
|
|
3782
3799
|
class NodeLicensePipe {
|
|
3783
3800
|
constructor(translate) {
|
|
3784
3801
|
this.translate = translate;
|
|
@@ -3805,6 +3822,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3805
3822
|
}]
|
|
3806
3823
|
}], ctorParameters: () => [{ type: i1.TranslateService }] });
|
|
3807
3824
|
|
|
3825
|
+
class InfoMessageComponent {
|
|
3826
|
+
constructor() {
|
|
3827
|
+
this.mode = 'info';
|
|
3828
|
+
this.ICONS = {
|
|
3829
|
+
info: 'info',
|
|
3830
|
+
warning: 'warning',
|
|
3831
|
+
error: 'error',
|
|
3832
|
+
};
|
|
3833
|
+
}
|
|
3834
|
+
getIcon() {
|
|
3835
|
+
return this.ICONS[this.mode];
|
|
3836
|
+
}
|
|
3837
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: InfoMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3838
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: InfoMessageComponent, isStandalone: true, selector: "es-info-message", inputs: { message: "message", mode: "mode" }, ngImport: i0, template: "<div class=\"block {{ mode }}\">\n <div>\n <i [esIcon]=\"getIcon()\"></i>\n </div>\n <div class=\"message-container\">\n <div class=\"message\">{{ message | translate }}</div>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".block{display:flex;flex-grow:1;align-items:center;border-radius:2px;padding:15px 20px}.block .message-container{display:flex;flex-direction:column;width:100%}.block.warning{background-color:#fdf6ec;border:1px solid rgb(190.608,112.86,18.392);color:#623a09}.block.error{background-color:#fdf3f6;border:1px solid rgb(118.2365145228,20.7634854772,50.1784232365);color:#4b0d20}.block.info{background-color:var(--palette-primary-50);border:1px solid var(--primary);color:var(--palette-primary-900)}.block>div:first-child{display:flex;align-items:center;padding-right:20px}.block>.text{white-space:pre-line}.block>.link{color:var(--primary);text-transform:uppercase}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }] }); }
|
|
3839
|
+
}
|
|
3840
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: InfoMessageComponent, decorators: [{
|
|
3841
|
+
type: Component,
|
|
3842
|
+
args: [{ selector: 'es-info-message', imports: [TranslateModule, IconDirective], template: "<div class=\"block {{ mode }}\">\n <div>\n <i [esIcon]=\"getIcon()\"></i>\n </div>\n <div class=\"message-container\">\n <div class=\"message\">{{ message | translate }}</div>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".block{display:flex;flex-grow:1;align-items:center;border-radius:2px;padding:15px 20px}.block .message-container{display:flex;flex-direction:column;width:100%}.block.warning{background-color:#fdf6ec;border:1px solid rgb(190.608,112.86,18.392);color:#623a09}.block.error{background-color:#fdf3f6;border:1px solid rgb(118.2365145228,20.7634854772,50.1784232365);color:#4b0d20}.block.info{background-color:var(--palette-primary-50);border:1px solid var(--primary);color:var(--palette-primary-900)}.block>div:first-child{display:flex;align-items:center;padding-right:20px}.block>.text{white-space:pre-line}.block>.link{color:var(--primary);text-transform:uppercase}\n"] }]
|
|
3843
|
+
}], ctorParameters: () => [], propDecorators: { message: [{
|
|
3844
|
+
type: Input
|
|
3845
|
+
}], mode: [{
|
|
3846
|
+
type: Input
|
|
3847
|
+
}] } });
|
|
3848
|
+
|
|
3808
3849
|
class EduSharingUiCommonModule {
|
|
3809
3850
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: EduSharingUiCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3810
3851
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: EduSharingUiCommonModule, declarations: [MdsViewerComponent,
|
|
@@ -3816,7 +3857,6 @@ class EduSharingUiCommonModule {
|
|
|
3816
3857
|
FocusStateDirective,
|
|
3817
3858
|
FormatDatePipe,
|
|
3818
3859
|
FormatSizePipe,
|
|
3819
|
-
IconDirective,
|
|
3820
3860
|
MdsDurationPipe,
|
|
3821
3861
|
InfiniteScrollDirective,
|
|
3822
3862
|
PropertySlugPipe,
|
|
@@ -3833,7 +3873,9 @@ class EduSharingUiCommonModule {
|
|
|
3833
3873
|
VCardNamePipe], imports: [CommonModule,
|
|
3834
3874
|
MatMenuModule,
|
|
3835
3875
|
SpinnerComponent,
|
|
3876
|
+
IconDirective,
|
|
3836
3877
|
SpinnerSmallComponent,
|
|
3878
|
+
InfoMessageComponent,
|
|
3837
3879
|
MatButtonModule,
|
|
3838
3880
|
MatTooltipModule,
|
|
3839
3881
|
MatRippleModule,
|
|
@@ -3850,6 +3892,7 @@ class EduSharingUiCommonModule {
|
|
|
3850
3892
|
MdsDurationPipe,
|
|
3851
3893
|
IconDirective,
|
|
3852
3894
|
InfiniteScrollDirective,
|
|
3895
|
+
InfoMessageComponent,
|
|
3853
3896
|
PropertySlugPipe,
|
|
3854
3897
|
NodeIconPipe,
|
|
3855
3898
|
NodeImagePipe,
|
|
@@ -3865,6 +3908,7 @@ class EduSharingUiCommonModule {
|
|
|
3865
3908
|
MatMenuModule,
|
|
3866
3909
|
SpinnerComponent,
|
|
3867
3910
|
SpinnerSmallComponent,
|
|
3911
|
+
InfoMessageComponent,
|
|
3868
3912
|
MatButtonModule,
|
|
3869
3913
|
MatTooltipModule,
|
|
3870
3914
|
MatRippleModule,
|
|
@@ -3885,7 +3929,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3885
3929
|
FocusStateDirective,
|
|
3886
3930
|
FormatDatePipe,
|
|
3887
3931
|
FormatSizePipe,
|
|
3888
|
-
IconDirective,
|
|
3889
3932
|
MdsDurationPipe,
|
|
3890
3933
|
InfiniteScrollDirective,
|
|
3891
3934
|
PropertySlugPipe,
|
|
@@ -3905,7 +3948,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3905
3948
|
CommonModule,
|
|
3906
3949
|
MatMenuModule,
|
|
3907
3950
|
SpinnerComponent,
|
|
3951
|
+
IconDirective,
|
|
3908
3952
|
SpinnerSmallComponent,
|
|
3953
|
+
InfoMessageComponent,
|
|
3909
3954
|
MatButtonModule,
|
|
3910
3955
|
MatTooltipModule,
|
|
3911
3956
|
MatRippleModule,
|
|
@@ -3925,6 +3970,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
3925
3970
|
MdsDurationPipe,
|
|
3926
3971
|
IconDirective,
|
|
3927
3972
|
InfiniteScrollDirective,
|
|
3973
|
+
InfoMessageComponent,
|
|
3928
3974
|
PropertySlugPipe,
|
|
3929
3975
|
NodeIconPipe,
|
|
3930
3976
|
NodeImagePipe,
|
|
@@ -4443,7 +4489,7 @@ class NodesDragDirective {
|
|
|
4443
4489
|
document.body.removeChild(style);
|
|
4444
4490
|
});
|
|
4445
4491
|
}
|
|
4446
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodesDragDirective, deps: [{ token: i8
|
|
4492
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodesDragDirective, deps: [{ token: i8.CdkDrag }, { token: NodesDragDropService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
4447
4493
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: NodesDragDirective, isStandalone: false, selector: "[esNodesDrag]", ngImport: i0 }); }
|
|
4448
4494
|
}
|
|
4449
4495
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodesDragDirective, decorators: [{
|
|
@@ -4452,7 +4498,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
4452
4498
|
selector: '[esNodesDrag]',
|
|
4453
4499
|
standalone: false,
|
|
4454
4500
|
}]
|
|
4455
|
-
}], ctorParameters: () => [{ type: i8
|
|
4501
|
+
}], ctorParameters: () => [{ type: i8.CdkDrag }, { type: NodesDragDropService }] });
|
|
4456
4502
|
|
|
4457
4503
|
const ACTIVE_DROP_TARGET_ACCEPT_CLASS = 'es-nodes-active-drop-target-accept';
|
|
4458
4504
|
const ACTIVE_DROP_TARGET_DENY_CLASS = 'es-nodes-active-drop-target-deny';
|
|
@@ -4818,7 +4864,7 @@ class ListCollectionInfoComponent extends ListWidget {
|
|
|
4818
4864
|
this.indicatorIcons$ = this.accessibility.observe('indicatorIcons');
|
|
4819
4865
|
}
|
|
4820
4866
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListCollectionInfoComponent, deps: [{ token: AccessibilityService }, { token: NodeHelperService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4821
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListCollectionInfoComponent, isStandalone: false, selector: "es-list-collection-info", usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"item.name\">\n <ng-container *ngSwitchCase=\"'info'\">\n <ng-container *ngIf=\"indicatorIcons$ | async; else textRepresentation\">\n <i\n esIcon=\"layers\"\n [altText]=\"'COLLECTION.INFO_REFERENCES_MULTI' | translate\"\n [matTooltip]=\"'COLLECTION.INFO_REFERENCES_MULTI' | translate\"\n ></i>\n {{ $any(node).collection?.childCollectionsCount }}\n <i\n esIcon=\"insert_drive_file\"\n [altText]=\"'collections_content' | translate\"\n [matTooltip]=\"'collections_content' | translate\"\n ></i>\n {{ $any(node).collection?.childReferencesCount }}\n </ng-container>\n <ng-template #textRepresentation>\n <div class=\"rows\">\n <p>\n {{ 'COLLECTION.INFO_REFERENCES_MULTI' | translate }}:\n {{ $any(node).collection?.childCollectionsCount }}\n </p>\n <p>\n {{ 'collections_content' | translate }}:\n {{ $any(node).collection?.childReferencesCount }}\n </p>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'scope'\">\n <i\n *ngIf=\"indicatorIcons$ | async; else textRepresentation\"\n class=\"collectionScope\"\n [esIcon]=\"nodeHelper.getCollectionScopeInfo($any(node)).icon\"\n esIconContext=\"collection-scope\"\n [matTooltip]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [altText]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n ></i>\n <ng-template #textRepresentation>\n {{\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n }}\n </ng-template>\n </ng-container>\n</ng-container>\n", styles: [".rows{display:flex;flex-direction:column;text-align:start}.rows p{margin:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type:
|
|
4867
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListCollectionInfoComponent, isStandalone: false, selector: "es-list-collection-info", usesInheritance: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"item.name\">\n <ng-container *ngSwitchCase=\"'info'\">\n <ng-container *ngIf=\"indicatorIcons$ | async; else textRepresentation\">\n <i\n esIcon=\"layers\"\n [altText]=\"'COLLECTION.INFO_REFERENCES_MULTI' | translate\"\n [matTooltip]=\"'COLLECTION.INFO_REFERENCES_MULTI' | translate\"\n ></i>\n {{ $any(node).collection?.childCollectionsCount }}\n <i\n esIcon=\"insert_drive_file\"\n [altText]=\"'collections_content' | translate\"\n [matTooltip]=\"'collections_content' | translate\"\n ></i>\n {{ $any(node).collection?.childReferencesCount }}\n </ng-container>\n <ng-template #textRepresentation>\n <div class=\"rows\">\n <p>\n {{ 'COLLECTION.INFO_REFERENCES_MULTI' | translate }}:\n {{ $any(node).collection?.childCollectionsCount }}\n </p>\n <p>\n {{ 'collections_content' | translate }}:\n {{ $any(node).collection?.childReferencesCount }}\n </p>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'scope'\">\n <i\n *ngIf=\"indicatorIcons$ | async; else textRepresentation\"\n class=\"collectionScope\"\n [esIcon]=\"nodeHelper.getCollectionScopeInfo($any(node)).icon\"\n esIconContext=\"collection-scope\"\n [matTooltip]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [altText]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n ></i>\n <ng-template #textRepresentation>\n {{\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n }}\n </ng-template>\n </ng-container>\n</ng-container>\n", styles: [".rows{display:flex;flex-direction:column;text-align:start}.rows p{margin:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
4822
4868
|
}
|
|
4823
4869
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListCollectionInfoComponent, decorators: [{
|
|
4824
4870
|
type: Component,
|
|
@@ -4899,7 +4945,7 @@ class ListNodeLicenseComponent extends ListWidget {
|
|
|
4899
4945
|
this.indicatorIcons$ = this.accessibility.observe('indicatorIcons');
|
|
4900
4946
|
}
|
|
4901
4947
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListNodeLicenseComponent, deps: [{ token: AccessibilityService }, { token: NodeHelperService }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4902
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListNodeLicenseComponent, isStandalone: false, selector: "es-list-node-license", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"licenseIcon$ | async as licenseIcon\">\n <span *ngIf=\"indicatorIcons$ | async; else textRepresentation\" [matTooltip]=\"tooltip$ | async\"\n ><img [alt]=\"tooltip$ | async\" [src]=\"licenseIcon\"\n /></span>\n <ng-template #textRepresentation>\n <span>{{ tooltip$ | async }}</span>\n </ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
4948
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListNodeLicenseComponent, isStandalone: false, selector: "es-list-node-license", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"licenseIcon$ | async as licenseIcon\">\n <span *ngIf=\"indicatorIcons$ | async; else textRepresentation\" [matTooltip]=\"tooltip$ | async\"\n ><img [alt]=\"tooltip$ | async\" [src]=\"licenseIcon\"\n /></span>\n <ng-template #textRepresentation>\n <span>{{ tooltip$ | async }}</span>\n </ng-template>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
4903
4949
|
}
|
|
4904
4950
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListNodeLicenseComponent, decorators: [{
|
|
4905
4951
|
type: Component,
|
|
@@ -4980,7 +5026,7 @@ class ListNodeReplicationSourceComponent extends ListWidget {
|
|
|
4980
5026
|
this.indicatorIcons$ = this.accessibility.observe('indicatorIcons');
|
|
4981
5027
|
}
|
|
4982
5028
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListNodeReplicationSourceComponent, deps: [{ token: AccessibilityService }, { token: NodeSourcePipe }, { token: i1.TranslateService }, { token: i2.NetworkService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4983
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListNodeReplicationSourceComponent, isStandalone: false, selector: "es-list-node-replication-source", providers: [NodeSourcePipe], usesInheritance: true, ngImport: i0, template: "<span *ngIf=\"indicatorIcons$ | async; else textRepresentation\" [matTooltip]=\"tooltip$ | async\">\n <img\n [src]=\"replicationSource$ | async | appNodeSource : { mode: 'url' }\"\n (error)=\"$any($event.target).style.display = 'none'\"\n [alt]=\"tooltip$ | async\"\n />\n</span>\n\n<ng-template #textRepresentation>\n <span>{{ tooltip$ | async }}</span>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type:
|
|
5029
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListNodeReplicationSourceComponent, isStandalone: false, selector: "es-list-node-replication-source", providers: [NodeSourcePipe], usesInheritance: true, ngImport: i0, template: "<span *ngIf=\"indicatorIcons$ | async; else textRepresentation\" [matTooltip]=\"tooltip$ | async\">\n <img\n [src]=\"replicationSource$ | async | appNodeSource : { mode: 'url' }\"\n (error)=\"$any($event.target).style.display = 'none'\"\n [alt]=\"tooltip$ | async\"\n />\n</span>\n\n<ng-template #textRepresentation>\n <span>{{ tooltip$ | async }}</span>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: NodeSourcePipe, name: "appNodeSource" }] }); }
|
|
4984
5030
|
}
|
|
4985
5031
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListNodeReplicationSourceComponent, decorators: [{
|
|
4986
5032
|
type: Component,
|
|
@@ -5085,7 +5131,7 @@ class ListTextComponent extends ListWidget {
|
|
|
5085
5131
|
}
|
|
5086
5132
|
}
|
|
5087
5133
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListTextComponent, deps: [{ token: NodeHelperService }, { token: i2.MdsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5088
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListTextComponent, isStandalone: false, selector: "es-list-text", usesInheritance: true, ngImport: i0, template: "<label *ngIf=\"item.config?.showLabel\">\n {{ getI18n(item) | translate }}\n</label>\n<ng-container *ngIf=\"item.type === 'ORG' || item.type === 'GROUP'\">\n <ng-container [ngSwitch]=\"item.name\">\n <span *ngSwitchCase=\"'displayName'\" [class.type-danger]=\"isDangerousGroup()\">\n {{ $any(getNode()).profile?.displayName || $any(getNode()).authorityName }}\n </span>\n <span *ngSwitchCase=\"'groupType'\">\n {{ 'PERMISSIONS.GROUP_TYPE.' + $any(getNode()).profile?.groupType | translate }}\n </span>\n <span *ngSwitchDefault>\n {{ $any(getNode())[item.name] }}\n </span>\n </ng-container>\n</ng-container>\n<ng-container *ngIf=\"item.type === 'USER'\">\n <span *ngIf=\"isUserProfileAttribute(item.name)\">\n {{ $any(getNode()).profile?.[item.name] }}\n </span>\n <span *ngIf=\"item.name === 'status'\">\n {{ 'PERMISSIONS.USER_STATUS.' + $any(getNode()).status.status | translate }}\n </span>\n <span *ngIf=\"!isUserProfileAttribute(item.name) && item.name !== 'status'\">\n {{ $any(getNode())[item.name] }}\n </span>\n</ng-container>\n<ng-container\n [ngSwitch]=\"item.name\"\n *ngIf=\"item.type === 'NODE' || item.type === 'NODE_PROPOSAL' || item.type === 'COLLECTION'\"\n>\n <span *ngSwitchCase=\"'name'\">\n {{ $any(getNode()).name }}\n </span>\n <span\n *ngSwitchCase=\"'mediatype'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ 'MEDIATYPE.' + $any(getNode()).mediatype | translate }}\n </span>\n <span *ngSwitchCase=\"'size'\" [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\">\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ $any(getNode()).size | formatSize }}\n </span>\n <span\n *ngSwitchCase=\"'cclom:size'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ $any(getNode()).size | formatSize }}\n </span>\n <span\n *ngSwitchCase=\"'dimensions'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ $any(getNode()) | NodeImageSize }}\n </span>\n <span\n *ngSwitchCase=\"'ccm:wf_status'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <es-list-node-workflow\n [item]=\"item\"\n [node]=\"node\"\n [provideLabel]=\"false\"\n ></es-list-node-workflow>\n <!--<span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ 'WORKFLOW.' + getWorkflowStatus().id | translate }}-->\n </span>\n <span\n *ngSwitchCase=\"'cm:creator'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ $any(getNode()).createdBy | nodePersonName }}\n </span>\n <span\n *ngSwitchCase=\"'cm:modifier'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.cm:modifier' | translate }}:</span\n >\n {{ $any(getNode()).modifiedBy | nodePersonName }}\n </span>\n <span\n *ngSwitchCase=\"'ccm:replicationsource'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.ccm:replicationsource' | translate }}:</span\n >\n {{ $any(getNode()).properties['ccm:replicationsource'] | appNodeSource : { mode: 'text' } }}\n </span>\n <span\n *ngSwitchCase=\"'ccm:commonlicense_key'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.ccm:commonlicense_key' | translate }}:</span\n >\n <ng-container *ngIf=\"$any(getNode()).properties['ccm:commonlicense_key'] as license\">\n {{\n license[0] === 'CUSTOM'\n ? $any(getNode()).properties['cclom:rights_description']\n : ('LICENSE.NAMES.' + $any(getNode()).properties['ccm:commonlicense_key']\n | translate : { fallback: $any(getNode()).properties['ccm:commonlicense_key'] })\n }}\n </ng-container>\n <ng-container *ngIf=\"!$any(getNode()).properties['ccm:commonlicense_key']\">\n {{ 'LICENSE.NAMES.NONE' | translate }}\n </ng-container>\n </span>\n <span\n *ngSwitchCase=\"'ccm:educationaltypicalagerange'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.ccm:educationaltypicalagerange' | translate }}:</span\n >\n <ng-container\n *ngIf=\"\n $any(getNode()).properties['ccm:educationaltypicalagerange_from'] ||\n $any(getNode()).properties['ccm:educationaltypicalagerange_to']\n \"\n >\n {{ $any(getNode()).properties['ccm:educationaltypicalagerange_from'] }} -\n {{ $any(getNode()).properties['ccm:educationaltypicalagerange_to'] }}\n </ng-container>\n </span>\n <span\n *ngSwitchCase=\"'cclom:duration'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.cclom:duration' | translate }}:</span\n >\n {{ $any(getNode()).properties['cclom:duration']?.[0] | formatDuration }}\n </span>\n <span\n *ngSwitchCase=\"'ccm:collection_proposal_status'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.ccm:collection_proposal_status' | translate }}:</span\n >\n <!-- use node instead of getNode() to access the raw proposal data! -->\n {{\n 'PROPOSAL_STATUS.' + $any(node).properties['ccm:collection_proposal_status']?.[0]\n | translate: { fallback: '' }\n }}\n </span>\n <span\n *ngSwitchDefault\n esCheckTextOverflow\n #text=\"esCheckTextOverflow\"\n [matTooltip]=\"\n provideLabel ? (getI18n(item) | translate) : text.hasTextOverflow() ? content.innerText : null\n \"\n #content\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n <ng-container *ngIf=\"['title', 'cm:title', 'cclom:title'].includes(item.name)\">\n {{ $any(getNode()) | nodeTitle }}\n </ng-container>\n <ng-container *ngIf=\"['name', 'cm:name'].includes(item.name)\">\n {{ $any(getNode()) | nodeTitle : { type: 'name' } }}\n </ng-container>\n <ng-container\n *ngIf=\"!['name', 'cm:name', 'title', 'cm:title', 'cclom:title'].includes(item.name)\"\n >\n <ng-container\n *ngIf=\"DATE_FIELDS.indexOf(item.name) === -1 && VCARD_FIELDS.indexOf(item.name) === -1\"\n >\n {{ displayName$ | async }}\n </ng-container>\n <ng-container *ngIf=\"DATE_FIELDS.includes(item.name)\">\n {{\n ($any(getNode()).properties[item.name + '_LONG']?.[0] || $any(getNode()).properties[item.name]?.[0])\n | formatDate: { async: true, time: true, relative: true }\n | async\n }}\n </ng-container>\n <ng-container *ngIf=\"VCARD_FIELDS.includes(item.name)\">\n {{\n $any(getNode()).properties[item.name]\n ? ($any(getNode()).properties[item.name] | vcardName)\n : ''\n }}\n </ng-container>\n </ng-container>\n </span>\n</ng-container>\n", styles: [".type-danger{color:var(--warning)}span{display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: CheckTextOverflowDirective, selector: "[esCheckTextOverflow]", inputs: ["esCheckTextOverflow"], exportAs: ["esCheckTextOverflow"] }, { kind: "directive", type:
|
|
5134
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListTextComponent, isStandalone: false, selector: "es-list-text", usesInheritance: true, ngImport: i0, template: "<label *ngIf=\"item.config?.showLabel\">\n {{ getI18n(item) | translate }}\n</label>\n<ng-container *ngIf=\"item.type === 'ORG' || item.type === 'GROUP'\">\n <ng-container [ngSwitch]=\"item.name\">\n <span *ngSwitchCase=\"'displayName'\" [class.type-danger]=\"isDangerousGroup()\">\n {{ $any(getNode()).profile?.displayName || $any(getNode()).authorityName }}\n </span>\n <span *ngSwitchCase=\"'groupType'\">\n {{ 'PERMISSIONS.GROUP_TYPE.' + $any(getNode()).profile?.groupType | translate }}\n </span>\n <span *ngSwitchDefault>\n {{ $any(getNode())[item.name] }}\n </span>\n </ng-container>\n</ng-container>\n<ng-container *ngIf=\"item.type === 'USER'\">\n <span *ngIf=\"isUserProfileAttribute(item.name)\">\n {{ $any(getNode()).profile?.[item.name] }}\n </span>\n <span *ngIf=\"item.name === 'status'\">\n {{ 'PERMISSIONS.USER_STATUS.' + $any(getNode()).status.status | translate }}\n </span>\n <span *ngIf=\"!isUserProfileAttribute(item.name) && item.name !== 'status'\">\n {{ $any(getNode())[item.name] }}\n </span>\n</ng-container>\n<ng-container\n [ngSwitch]=\"item.name\"\n *ngIf=\"item.type === 'NODE' || item.type === 'NODE_PROPOSAL' || item.type === 'COLLECTION'\"\n>\n <span *ngSwitchCase=\"'name'\">\n {{ $any(getNode()).name }}\n </span>\n <span\n *ngSwitchCase=\"'mediatype'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ 'MEDIATYPE.' + $any(getNode()).mediatype | translate }}\n </span>\n <span *ngSwitchCase=\"'size'\" [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\">\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ $any(getNode()).size | formatSize }}\n </span>\n <span\n *ngSwitchCase=\"'cclom:size'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ $any(getNode()).size | formatSize }}\n </span>\n <span\n *ngSwitchCase=\"'dimensions'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ $any(getNode()) | NodeImageSize }}\n </span>\n <span\n *ngSwitchCase=\"'ccm:wf_status'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <es-list-node-workflow\n [item]=\"item\"\n [node]=\"node\"\n [provideLabel]=\"false\"\n ></es-list-node-workflow>\n <!--<span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ 'WORKFLOW.' + getWorkflowStatus().id | translate }}-->\n </span>\n <span\n *ngSwitchCase=\"'cm:creator'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n {{ $any(getNode()).createdBy | nodePersonName }}\n </span>\n <span\n *ngSwitchCase=\"'cm:modifier'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.cm:modifier' | translate }}:</span\n >\n {{ $any(getNode()).modifiedBy | nodePersonName }}\n </span>\n <span\n *ngSwitchCase=\"'ccm:replicationsource'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.ccm:replicationsource' | translate }}:</span\n >\n {{ $any(getNode()).properties['ccm:replicationsource'] | appNodeSource : { mode: 'text' } }}\n </span>\n <span\n *ngSwitchCase=\"'ccm:commonlicense_key'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.ccm:commonlicense_key' | translate }}:</span\n >\n <ng-container *ngIf=\"$any(getNode()).properties['ccm:commonlicense_key'] as license\">\n {{\n license[0] === 'CUSTOM'\n ? $any(getNode()).properties['cclom:rights_description']\n : ('LICENSE.NAMES.' + $any(getNode()).properties['ccm:commonlicense_key']\n | translate : { fallback: $any(getNode()).properties['ccm:commonlicense_key'] })\n }}\n </ng-container>\n <ng-container *ngIf=\"!$any(getNode()).properties['ccm:commonlicense_key']\">\n {{ 'LICENSE.NAMES.NONE' | translate }}\n </ng-container>\n </span>\n <span\n *ngSwitchCase=\"'ccm:educationaltypicalagerange'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.ccm:educationaltypicalagerange' | translate }}:</span\n >\n <ng-container\n *ngIf=\"\n $any(getNode()).properties['ccm:educationaltypicalagerange_from'] ||\n $any(getNode()).properties['ccm:educationaltypicalagerange_to']\n \"\n >\n {{ $any(getNode()).properties['ccm:educationaltypicalagerange_from'] }} -\n {{ $any(getNode()).properties['ccm:educationaltypicalagerange_to'] }}\n </ng-container>\n </span>\n <span\n *ngSwitchCase=\"'cclom:duration'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.cclom:duration' | translate }}:</span\n >\n {{ $any(getNode()).properties['cclom:duration']?.[0] | formatDuration }}\n </span>\n <span\n *ngSwitchCase=\"'ccm:collection_proposal_status'\"\n [matTooltip]=\"provideLabel ? (getI18n(item) | translate) : null\"\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\"\n >{{ 'NODE.ccm:collection_proposal_status' | translate }}:</span\n >\n <!-- use node instead of getNode() to access the raw proposal data! -->\n {{\n 'PROPOSAL_STATUS.' + $any(node).properties['ccm:collection_proposal_status']?.[0]\n | translate: { fallback: '' }\n }}\n </span>\n <span\n *ngSwitchDefault\n esCheckTextOverflow\n #text=\"esCheckTextOverflow\"\n [matTooltip]=\"\n provideLabel ? (getI18n(item) | translate) : text.hasTextOverflow() ? content.innerText : null\n \"\n #content\n >\n <span *ngIf=\"provideLabel\" class=\"cdk-visually-hidden\">{{ getI18n(item) | translate }}:</span>\n <ng-container *ngIf=\"['title', 'cm:title', 'cclom:title'].includes(item.name)\">\n {{ $any(getNode()) | nodeTitle }}\n </ng-container>\n <ng-container *ngIf=\"['name', 'cm:name'].includes(item.name)\">\n {{ $any(getNode()) | nodeTitle : { type: 'name' } }}\n </ng-container>\n <ng-container\n *ngIf=\"!['name', 'cm:name', 'title', 'cm:title', 'cclom:title'].includes(item.name)\"\n >\n <ng-container\n *ngIf=\"DATE_FIELDS.indexOf(item.name) === -1 && VCARD_FIELDS.indexOf(item.name) === -1\"\n >\n {{ displayName$ | async }}\n </ng-container>\n <ng-container *ngIf=\"DATE_FIELDS.includes(item.name)\">\n {{\n ($any(getNode()).properties[item.name + '_LONG']?.[0] || $any(getNode()).properties[item.name]?.[0])\n | formatDate: { async: true, time: true, relative: true }\n | async\n }}\n </ng-container>\n <ng-container *ngIf=\"VCARD_FIELDS.includes(item.name)\">\n {{\n $any(getNode()).properties[item.name]\n ? ($any(getNode()).properties[item.name] | vcardName)\n : ''\n }}\n </ng-container>\n </ng-container>\n </span>\n</ng-container>\n", styles: [".type-danger{color:var(--warning)}span{display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: CheckTextOverflowDirective, selector: "[esCheckTextOverflow]", inputs: ["esCheckTextOverflow"], exportAs: ["esCheckTextOverflow"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ListNodeWorkflowComponent, selector: "es-list-node-workflow" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: FormatDatePipe, name: "formatDate" }, { kind: "pipe", type: FormatSizePipe, name: "formatSize" }, { kind: "pipe", type: NodeImageSizePipe, name: "NodeImageSize" }, { kind: "pipe", type: NodePersonNamePipe, name: "nodePersonName" }, { kind: "pipe", type: NodeTitlePipe, name: "nodeTitle" }, { kind: "pipe", type: VCardNamePipe, name: "vcardName" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: NodeSourcePipe, name: "appNodeSource" }, { kind: "pipe", type: FormatDurationPipe, name: "formatDuration" }] }); }
|
|
5089
5135
|
}
|
|
5090
5136
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListTextComponent, decorators: [{
|
|
5091
5137
|
type: Component,
|
|
@@ -5221,7 +5267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
5221
5267
|
class NodeRowComponent {
|
|
5222
5268
|
constructor() { }
|
|
5223
5269
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5224
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeRowComponent, isStandalone: false, selector: "es-node-row", inputs: { node: "node", columns: "columns" }, queries: [{ propertyName: "customMetadataRef", first: true, predicate: ["customMetadata"], descendants: true }], ngImport: i0, template: "<div class=\"node-row\" *ngIf=\"node\">\n <div class=\"icon-bg\">\n <img\n [src]=\"node | esNodeIcon | async\"\n [alt]=\"\n node.mediatype\n ? ('NODE.mediatype' | translate) + ': ' + ('MEDIATYPE.' + node.mediatype | translate)\n : ''\n \"\n [matTooltip]=\"\n node.mediatype\n ? ('NODE.mediatype' | translate) + ': ' + ('MEDIATYPE.' + node.mediatype | translate)\n : ''\n \"\n />\n </div>\n <div class=\"node-data\">\n <div class=\"node-data-primary\">\n <es-list-text [node]=\"node\" [item]=\"columns[0]\"> </es-list-text>\n </div>\n <div class=\"node-data-secondary\">\n <es-list-text\n *ngFor=\"let column of columns.slice(1)\"\n [node]=\"node\"\n [item]=\"column\"\n [provideLabel]=\"true\"\n ></es-list-text>\n <ng-container *ngTemplateOutlet=\"customMetadataRef; context: { node: node }\"></ng-container>\n </div>\n </div>\n</div>\n", styles: [".node-row{width:100%;display:grid;grid-template-columns:var(--tableIconSize) auto;grid-gap:10px;align-items:center;padding:10px;white-space:normal}.node-row .node-data{flex-grow:1;display:flex;flex-direction:column}.node-row .node-data .node-data-primary{font-weight:700;padding-bottom:5px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-height:1.25em;max-height:1.25em;-webkit-line-clamp:1;-webkit-box-orient:vertical}.node-row .node-data .node-data-secondary{color:var(--textLight);display:flex;justify-content:space-between}.node-row .icon-bg{background-color:rgb(var(--palette-foreground-text-dark));border-radius:50%;width:var(--tableIconSize);height:var(--tableIconSize)!important;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 3px #0000001a}.node-row .icon-bg img,.node-row .icon-bg i{width:50%;z-index:0}.node-row .icon-bg i{color:rgb(var(--palette-foreground-text));font-size:20px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type:
|
|
5270
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeRowComponent, isStandalone: false, selector: "es-node-row", inputs: { node: "node", columns: "columns" }, queries: [{ propertyName: "customMetadataRef", first: true, predicate: ["customMetadata"], descendants: true }], ngImport: i0, template: "<div class=\"node-row\" *ngIf=\"node\">\n <div class=\"icon-bg\">\n <img\n [src]=\"node | esNodeIcon | async\"\n [alt]=\"\n node.mediatype\n ? ('NODE.mediatype' | translate) + ': ' + ('MEDIATYPE.' + node.mediatype | translate)\n : ''\n \"\n [matTooltip]=\"\n node.mediatype\n ? ('NODE.mediatype' | translate) + ': ' + ('MEDIATYPE.' + node.mediatype | translate)\n : ''\n \"\n />\n </div>\n <div class=\"node-data\">\n <div class=\"node-data-primary\">\n <es-list-text [node]=\"node\" [item]=\"columns[0]\"> </es-list-text>\n </div>\n <div class=\"node-data-secondary\">\n <es-list-text\n *ngFor=\"let column of columns.slice(1)\"\n [node]=\"node\"\n [item]=\"column\"\n [provideLabel]=\"true\"\n ></es-list-text>\n <ng-container *ngTemplateOutlet=\"customMetadataRef; context: { node: node }\"></ng-container>\n </div>\n </div>\n</div>\n", styles: [".node-row{width:100%;display:grid;grid-template-columns:var(--tableIconSize) auto;grid-gap:10px;align-items:center;padding:10px;white-space:normal}.node-row .node-data{flex-grow:1;display:flex;flex-direction:column}.node-row .node-data .node-data-primary{font-weight:700;padding-bottom:5px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-height:1.25em;max-height:1.25em;-webkit-line-clamp:1;-webkit-box-orient:vertical}.node-row .node-data .node-data-secondary{color:var(--textLight);display:flex;justify-content:space-between}.node-row .icon-bg{background-color:rgb(var(--palette-foreground-text-dark));border-radius:50%;width:var(--tableIconSize);height:var(--tableIconSize)!important;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 3px #0000001a}.node-row .icon-bg img,.node-row .icon-bg i{width:50%;z-index:0}.node-row .icon-bg i{color:rgb(var(--palette-foreground-text));font-size:20px}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ListTextComponent, selector: "es-list-text" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: NodeIconPipe, name: "esNodeIcon" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
5225
5271
|
}
|
|
5226
5272
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeRowComponent, decorators: [{
|
|
5227
5273
|
type: Component,
|
|
@@ -5509,7 +5555,7 @@ class TranslationsService {
|
|
|
5509
5555
|
return LANGUAGES[this.language];
|
|
5510
5556
|
}
|
|
5511
5557
|
getLocale() {
|
|
5512
|
-
return this.getISOLanguage()
|
|
5558
|
+
return this.getISOLanguage()?.replace('_', '-');
|
|
5513
5559
|
}
|
|
5514
5560
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TranslationsService, deps: [{ token: i2.ConfigService }, { token: i0.Injector }, { token: i2$1.ActivatedRoute, optional: true }, { token: I18N_CONFIG, optional: true }, { token: i1.TranslateService }, { token: i0.ApplicationRef }, { token: AppService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5515
5561
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TranslationsService, providedIn: 'root' }); }
|
|
@@ -5642,7 +5688,7 @@ class SortSelectPanelComponent {
|
|
|
5642
5688
|
});
|
|
5643
5689
|
}
|
|
5644
5690
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SortSelectPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5645
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: SortSelectPanelComponent, isStandalone: false, selector: "es-sort-select-panel", inputs: { active: "active", direction: "direction", columns: "columns", customSortingInProgress: "customSortingInProgress" }, outputs: { sortChange: "sortChange", customSortingInProgressChange: "customSortingInProgressChange" }, ngImport: i0, template: "<mat-slide-toggle\n *ngIf=\"active === 'ccm:collection_ordered_position'\"\n [(ngModel)]=\"customSortingInProgress\"\n (ngModelChange)=\"customSortingInProgressChange.emit($event)\"\n>\n {{ 'COLLECTIONS.SORT_SLIDER' | translate }}\n</mat-slide-toggle>\n<ng-container *ngIf=\"columns?.length\">\n <button\n *ngIf=\"sortDropdown.menu\"\n [matMenuTriggerFor]=\"sortDropdown.menu\"\n mat-button\n color=\"primary\"\n >\n <span *ngIf=\"active\">{{\n 'NODE_SORT.' + active | translate : { fallback: ('NODE.' + active | translate) }\n }}</span>\n <span *ngIf=\"!active\">{{ 'SORT_BY' | translate }}</span>\n <i\n *ngIf=\"active && active !== 'ccm:collection_ordered_position'\"\n [esIcon]=\"'arrow_' + (direction === 'asc' ? 'upward' : 'downward')\"\n ></i>\n </button>\n\n <es-sort-dropdown\n #sortDropdown\n [columns]=\"columns\"\n [sortBy]=\"active\"\n [sortAscending]=\"direction === 'asc'\"\n (sort)=\"onSort($event)\"\n ></es-sort-dropdown>\n</ng-container>\n", styles: [":host{display:flex;justify-content:flex-end;align-items:center}mat-slide-toggle{margin-right:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: SortDropdownComponent, selector: "es-sort-dropdown", inputs: ["columns", "sortBy", "sortAscending"], outputs: ["sort"] }, { kind: "component", type:
|
|
5691
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: SortSelectPanelComponent, isStandalone: false, selector: "es-sort-select-panel", inputs: { active: "active", direction: "direction", columns: "columns", customSortingInProgress: "customSortingInProgress" }, outputs: { sortChange: "sortChange", customSortingInProgressChange: "customSortingInProgressChange" }, ngImport: i0, template: "<mat-slide-toggle\n *ngIf=\"active === 'ccm:collection_ordered_position'\"\n [(ngModel)]=\"customSortingInProgress\"\n (ngModelChange)=\"customSortingInProgressChange.emit($event)\"\n>\n {{ 'COLLECTIONS.SORT_SLIDER' | translate }}\n</mat-slide-toggle>\n<ng-container *ngIf=\"columns?.length\">\n <button\n *ngIf=\"sortDropdown.menu\"\n [matMenuTriggerFor]=\"sortDropdown.menu\"\n mat-button\n color=\"primary\"\n >\n <span *ngIf=\"active\">{{\n 'NODE_SORT.' + active | translate : { fallback: ('NODE.' + active | translate) }\n }}</span>\n <span *ngIf=\"!active\">{{ 'SORT_BY' | translate }}</span>\n <i\n *ngIf=\"active && active !== 'ccm:collection_ordered_position'\"\n [esIcon]=\"'arrow_' + (direction === 'asc' ? 'upward' : 'downward')\"\n ></i>\n </button>\n\n <es-sort-dropdown\n #sortDropdown\n [columns]=\"columns\"\n [sortBy]=\"active\"\n [sortAscending]=\"direction === 'asc'\"\n (sort)=\"onSort($event)\"\n ></es-sort-dropdown>\n</ng-container>\n", styles: [":host{display:flex;justify-content:flex-end;align-items:center}mat-slide-toggle{margin-right:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: SortDropdownComponent, selector: "es-sort-dropdown", inputs: ["columns", "sortBy", "sortAscending"], outputs: ["sort"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
5646
5692
|
}
|
|
5647
5693
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SortSelectPanelComponent, decorators: [{
|
|
5648
5694
|
type: Component,
|
|
@@ -5977,6 +6023,27 @@ class NodeEntriesService {
|
|
|
5977
6023
|
}
|
|
5978
6024
|
});
|
|
5979
6025
|
}
|
|
6026
|
+
getSortColumns() {
|
|
6027
|
+
return this.sort?.columns?.filter((c) => {
|
|
6028
|
+
const result = this.columns
|
|
6029
|
+
?.concat(new ListItemSort('NODE', 'score'), new ListItemSort('NODE', RestConstants.CCM_PROP_COLLECTION_ORDERED_POSITION), new ListItemSort('NODE', RestConstants.CM_PROP_TITLE), new ListItemSort('NODE', RestConstants.CM_NAME), new ListItemSort('NODE', RestConstants.CM_PROP_C_CREATED), new ListItemSort('NODE', RestConstants.CM_MODIFIED_DATE), new ListItemSort('NODE', RestConstants.CCM_PROP_REPLICATIONMODIFIED), new ListItemSort('NODE', RestConstants.CCM_PROP_REPLICATIONSOURCETIMESTAMP))
|
|
6030
|
+
.some((c2) => c.type === c2.type && c2.name === c.name);
|
|
6031
|
+
if (!result && !this.configureColumns) {
|
|
6032
|
+
return this.sort?.columns;
|
|
6033
|
+
/*
|
|
6034
|
+
const warning =
|
|
6035
|
+
'Sort field ' +
|
|
6036
|
+
c.name +
|
|
6037
|
+
' was specified but is not present as a column. ' +
|
|
6038
|
+
'It will be ignored. Please also configure this field in the <lists> section';
|
|
6039
|
+
if (!displayedWarnings.includes(warning)) {
|
|
6040
|
+
console.warn(warning);
|
|
6041
|
+
displayedWarnings.push(warning);
|
|
6042
|
+
}*/
|
|
6043
|
+
}
|
|
6044
|
+
return result;
|
|
6045
|
+
});
|
|
6046
|
+
}
|
|
5980
6047
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesService, deps: [{ token: UIService }, { token: Toast }, { token: NodeEntriesGlobalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
5981
6048
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesService }); }
|
|
5982
6049
|
}
|
|
@@ -6009,7 +6076,7 @@ class ColumnChooserComponent {
|
|
|
6009
6076
|
this.columnsChange.emit(this.columns);
|
|
6010
6077
|
}
|
|
6011
6078
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnChooserComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6012
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnChooserComponent, isStandalone: false, selector: "es-column-chooser", inputs: { origin: "origin", columnChooserVisible: "columnChooserVisible", columns: "columns" }, outputs: { columnChooserVisibleChange: "columnChooserVisibleChange", columnsChange: "columnsChange" }, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"columnChooserVisible\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayMinWidth]=\"250\"\n [cdkConnectedOverlayViewportMargin]=\"5\"\n (backdropClick)=\"columnChooserVisibleChange.emit(false)\"\n cdkConnectedOverlayBackdropClass=\"column-chooser-backdrop\"\n>\n <div\n cdkDropList\n class=\"column-chooser mat-elevation-z2\"\n (cdkDropListDropped)=\"columnChooserDrop($event)\"\n >\n <div class=\"column-chooser-item\" *ngFor=\"let column of columns; index as index\" cdkDrag>\n <mat-checkbox\n [checked]=\"column.visible\"\n (change)=\"columnChooserToggle(index)\"\n color=\"primary\"\n >\n {{ column | esListItemLabel | async }}\n </mat-checkbox>\n <div class=\"drag-handle\" cdkDragHandle>\n <i esIcon=\"drag_handle\"></i>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".column-chooser{max-width:100%;width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:auto}.column-chooser-item{border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;background:#fff;font-size:14px;justify-content:space-between}.column-chooser-item mat-checkbox{margin:0 12px}.column-chooser-item .drag-handle{color:#00000080;cursor:move;padding:20px}.column-chooser-backdrop{background:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i8
|
|
6079
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ColumnChooserComponent, isStandalone: false, selector: "es-column-chooser", inputs: { origin: "origin", columnChooserVisible: "columnChooserVisible", columns: "columns" }, outputs: { columnChooserVisibleChange: "columnChooserVisibleChange", columnsChange: "columnsChange" }, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"columnChooserVisible\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayMinWidth]=\"250\"\n [cdkConnectedOverlayViewportMargin]=\"5\"\n (backdropClick)=\"columnChooserVisibleChange.emit(false)\"\n cdkConnectedOverlayBackdropClass=\"column-chooser-backdrop\"\n>\n <div\n cdkDropList\n class=\"column-chooser mat-elevation-z2\"\n (cdkDropListDropped)=\"columnChooserDrop($event)\"\n >\n <div class=\"column-chooser-item\" *ngFor=\"let column of columns; index as index\" cdkDrag>\n <mat-checkbox\n [checked]=\"column.visible\"\n (change)=\"columnChooserToggle(index)\"\n color=\"primary\"\n >\n {{ column | esListItemLabel | async }}\n </mat-checkbox>\n <div class=\"drag-handle\" cdkDragHandle>\n <i esIcon=\"drag_handle\"></i>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".column-chooser{max-width:100%;width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:4px;overflow:auto}.column-chooser-item{border-bottom:solid 1px #ccc;color:#000000de;display:flex;flex-direction:row;align-items:center;background:#fff;font-size:14px;justify-content:space-between}.column-chooser-item mat-checkbox{margin:0 12px}.column-chooser-item .drag-handle{color:#00000080;cursor:move;padding:20px}.column-chooser-backdrop{background:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: ListItemLabelPipe, name: "esListItemLabel" }] }); }
|
|
6013
6080
|
}
|
|
6014
6081
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ColumnChooserComponent, decorators: [{
|
|
6015
6082
|
type: Component,
|
|
@@ -6254,7 +6321,7 @@ class NodeRatingComponent {
|
|
|
6254
6321
|
return this.networkApi.isFromHomeRepository(node);
|
|
6255
6322
|
}
|
|
6256
6323
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeRatingComponent, deps: [{ token: Toast }, { token: i2.ConfigService }, { token: i2.NetworkService }, { token: i2.AuthenticationService }, { token: i0.ChangeDetectorRef }, { token: i2.RatingV1Service }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6257
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeRatingComponent, isStandalone: false, selector: "es-node-rating", inputs: { node: "node" }, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission && node.type === 'ccm:io' && isFromHomeRepo(node)\">\n <div *ngIf=\"mode === 'likes'\" class=\"likes\">\n <button\n (click)=\"toogleLike()\"\n [disabled]=\"(authenticationService.observeLoginInfo() | async)?.isGuest\"\n mat-icon-button\n color=\"primary\"\n matTooltip=\"{{ 'RATING.LIKES' | translate }}\"\n >\n <i [esIcon]=\"'edu-thumb_up' + (!node.rating?.user ? '_off' : '')\"></i>\n </button>\n <span matTooltip=\"{{ 'RATING.COUNT_LIKES' | translate }}\">{{\n node.rating?.overall.count\n }}</span>\n </div>\n <div *ngIf=\"mode === 'stars'\" class=\"stars\" mat-icon-button color=\"primary\">\n <button\n *ngFor=\"let rating of [1, 2, 3, 4, 5]\"\n mat-icon-button\n color=\"primary\"\n class=\"star\"\n (click)=\"setRating(rating)\"\n [disabled]=\"(authenticationService.observeLoginInfo() | async)?.isGuest\"\n (focus)=\"hoverStar = rating\"\n (mouseenter)=\"hoverStar = rating\"\n (mouseleave)=\"hoverStar = 0\"\n (blur)=\"hoverStar = 0\"\n [class.star-hover]=\"hoverStar >= rating\"\n >\n <i\n [esIcon]=\"\n 'star' +\n ((hoverStar ? hoverStar >= rating : getPrimaryRating() >= rating) ? '' : '_border')\n \"\n matTooltip=\"{{ 'RATING.STARS_RATE' | translate : { rating: rating } }}\"\n ></i>\n </button>\n <button\n *ngIf=\"!!node.rating?.user\"\n mat-icon-button\n color=\"primary\"\n class=\"delete\"\n matTooltip=\"{{ 'RATING.DELETE_RATING' | translate }}\"\n (click)=\"deleteRating()\"\n [disabled]=\"(authenticationService.observeLoginInfo() | async)?.isGuest\"\n >\n <i esIcon=\"clear\"></i>\n </button>\n <span matTooltip=\"{{ 'RATING.COUNT_RATINGS' | translate }}\"\n >({{ node.rating?.overall.count }})</span\n >\n </div>\n</ng-container>\n", styles: [".stars{display:flex;align-items:center}.stars span{padding-left:8px}.likes{display:flex;align-items:center}.mdc-icon-button.mat-primary{color:var(--textLight);display:flex;align-items:center;padding:0}.mdc-icon-button.mat-primary.star,.mdc-icon-button.mat-primary.delete{min-width:unset;width:18px;height:18px}.mdc-icon-button.mat-primary.star i,.mdc-icon-button.mat-primary.delete i{font-size:17px;line-height:1}.mdc-icon-button.mat-primary.star ::ng-deep .mat-mdc-button-touch-target,.mdc-icon-button.mat-primary.delete ::ng-deep .mat-mdc-button-touch-target{display:none}.mdc-icon-button.mat-primary.star.star-hover,.mdc-icon-button.mat-primary.delete.star-hover{color:var(--colorStarActive)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type:
|
|
6324
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeRatingComponent, isStandalone: false, selector: "es-node-rating", inputs: { node: "node" }, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission && node.type === 'ccm:io' && isFromHomeRepo(node)\">\n <div *ngIf=\"mode === 'likes'\" class=\"likes\">\n <button\n (click)=\"toogleLike()\"\n [disabled]=\"(authenticationService.observeLoginInfo() | async)?.isGuest\"\n mat-icon-button\n color=\"primary\"\n matTooltip=\"{{ 'RATING.LIKES' | translate }}\"\n >\n <i [esIcon]=\"'edu-thumb_up' + (!node.rating?.user ? '_off' : '')\"></i>\n </button>\n <span matTooltip=\"{{ 'RATING.COUNT_LIKES' | translate }}\">{{\n node.rating?.overall.count\n }}</span>\n </div>\n <div *ngIf=\"mode === 'stars'\" class=\"stars\" mat-icon-button color=\"primary\">\n <button\n *ngFor=\"let rating of [1, 2, 3, 4, 5]\"\n mat-icon-button\n color=\"primary\"\n class=\"star\"\n (click)=\"setRating(rating)\"\n [disabled]=\"(authenticationService.observeLoginInfo() | async)?.isGuest\"\n (focus)=\"hoverStar = rating\"\n (mouseenter)=\"hoverStar = rating\"\n (mouseleave)=\"hoverStar = 0\"\n (blur)=\"hoverStar = 0\"\n [class.star-hover]=\"hoverStar >= rating\"\n >\n <i\n [esIcon]=\"\n 'star' +\n ((hoverStar ? hoverStar >= rating : getPrimaryRating() >= rating) ? '' : '_border')\n \"\n matTooltip=\"{{ 'RATING.STARS_RATE' | translate : { rating: rating } }}\"\n ></i>\n </button>\n <button\n *ngIf=\"!!node.rating?.user\"\n mat-icon-button\n color=\"primary\"\n class=\"delete\"\n matTooltip=\"{{ 'RATING.DELETE_RATING' | translate }}\"\n (click)=\"deleteRating()\"\n [disabled]=\"(authenticationService.observeLoginInfo() | async)?.isGuest\"\n >\n <i esIcon=\"clear\"></i>\n </button>\n <span matTooltip=\"{{ 'RATING.COUNT_RATINGS' | translate }}\"\n >({{ node.rating?.overall.count }})</span\n >\n </div>\n</ng-container>\n", styles: [".stars{display:flex;align-items:center}.stars span{padding-left:8px}.likes{display:flex;align-items:center}.mdc-icon-button.mat-primary{color:var(--textLight);display:flex;align-items:center;padding:0}.mdc-icon-button.mat-primary.star,.mdc-icon-button.mat-primary.delete{min-width:unset;width:18px;height:18px}.mdc-icon-button.mat-primary.star i,.mdc-icon-button.mat-primary.delete i{font-size:17px;line-height:1}.mdc-icon-button.mat-primary.star ::ng-deep .mat-mdc-button-touch-target,.mdc-icon-button.mat-primary.delete ::ng-deep .mat-mdc-button-touch-target{display:none}.mdc-icon-button.mat-primary.star.star-hover,.mdc-icon-button.mat-primary.delete.star-hover{color:var(--colorStarActive)}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
6258
6325
|
}
|
|
6259
6326
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeRatingComponent, decorators: [{
|
|
6260
6327
|
type: Component,
|
|
@@ -6334,12 +6401,21 @@ class NodeTypeBadgeComponent {
|
|
|
6334
6401
|
getCustomTemplate() {
|
|
6335
6402
|
return this.nodeEntriesGlobalService.getCustomFieldTemplate({ type: 'NODE', name: CustomFieldSpecialType.type }, this.node);
|
|
6336
6403
|
}
|
|
6404
|
+
materialIcon() {
|
|
6405
|
+
if (this.node.authorityType === 'USER') {
|
|
6406
|
+
return 'person';
|
|
6407
|
+
}
|
|
6408
|
+
else if (this.node.authorityType === 'GROUP') {
|
|
6409
|
+
return 'group';
|
|
6410
|
+
}
|
|
6411
|
+
return null;
|
|
6412
|
+
}
|
|
6337
6413
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeTypeBadgeComponent, deps: [{ token: NodeHelperService }, { token: NodeEntriesGlobalService }, { token: NodeEntriesService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6338
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeTypeBadgeComponent, isStandalone: false, selector: "es-node-type-badge", inputs: { node: "node", collectionIcons: "collectionIcons" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"isCollection && collectionIcons\">\n <i\n [matTooltip]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [altText]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [esIcon]=\"nodeHelper.getCollectionScopeInfo($any(node)).icon\"\n ></i>\n</ng-container>\n<ng-container *ngIf=\"!(isCollection && collectionIcons)\">\n <ng-container *ngIf=\"getCustomTemplate() as ref\">\n <ng-container\n *ngTemplateOutlet=\"ref; context: { node: node, entriesService: nodeEntriesService }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!getCustomTemplate()\">\n <img\n
|
|
6414
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeTypeBadgeComponent, isStandalone: false, selector: "es-node-type-badge", inputs: { node: "node", collectionIcons: "collectionIcons" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"isCollection && collectionIcons\">\n <i\n [matTooltip]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [altText]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [esIcon]=\"nodeHelper.getCollectionScopeInfo($any(node)).icon\"\n ></i>\n</ng-container>\n<ng-container *ngIf=\"!(isCollection && collectionIcons)\">\n <ng-container *ngIf=\"getCustomTemplate() as ref\">\n <ng-container\n *ngTemplateOutlet=\"ref; context: { node: node, entriesService: nodeEntriesService }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!getCustomTemplate()\">\n <i *ngIf=\"materialIcon() as icon\" [esIcon]=\"icon\"></i>\n <ng-container *ngIf=\"!materialIcon()\">\n <img\n *ngIf=\"$any(node).relations?.Original || node as n\"\n [src]=\"n | esNodeIcon | async\"\n [alt]=\"\n n.mediatype\n ? ('NODE.mediatype' | translate) + ': ' + ('MEDIATYPE.' + n.mediatype | translate)\n : ''\n \"\n [matTooltip]=\"\n n.mediatype\n ? ('NODE.mediatype' | translate) + ': ' + ('MEDIATYPE.' + n.mediatype | translate)\n : ''\n \"\n />\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;border-radius:50%;background-color:#fff;padding:5px;position:relative;z-index:1;box-shadow:0 0 5px #0000004d}:host i{font-size:18px;color:#333}:host img{width:18px;height:18px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: NodeIconPipe, name: "esNodeIcon" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
6339
6415
|
}
|
|
6340
6416
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeTypeBadgeComponent, decorators: [{
|
|
6341
6417
|
type: Component,
|
|
6342
|
-
args: [{ selector: 'es-node-type-badge', standalone: false, template: "<ng-container *ngIf=\"isCollection && collectionIcons\">\n <i\n [matTooltip]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [altText]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [esIcon]=\"nodeHelper.getCollectionScopeInfo($any(node)).icon\"\n ></i>\n</ng-container>\n<ng-container *ngIf=\"!(isCollection && collectionIcons)\">\n <ng-container *ngIf=\"getCustomTemplate() as ref\">\n <ng-container\n *ngTemplateOutlet=\"ref; context: { node: node, entriesService: nodeEntriesService }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!getCustomTemplate()\">\n <img\n
|
|
6418
|
+
args: [{ selector: 'es-node-type-badge', standalone: false, template: "<ng-container *ngIf=\"isCollection && collectionIcons\">\n <i\n [matTooltip]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [altText]=\"\n 'COLLECTION.SCOPE.' + nodeHelper.getCollectionScopeInfo($any(node)).scopeName | translate\n \"\n [esIcon]=\"nodeHelper.getCollectionScopeInfo($any(node)).icon\"\n ></i>\n</ng-container>\n<ng-container *ngIf=\"!(isCollection && collectionIcons)\">\n <ng-container *ngIf=\"getCustomTemplate() as ref\">\n <ng-container\n *ngTemplateOutlet=\"ref; context: { node: node, entriesService: nodeEntriesService }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!getCustomTemplate()\">\n <i *ngIf=\"materialIcon() as icon\" [esIcon]=\"icon\"></i>\n <ng-container *ngIf=\"!materialIcon()\">\n <img\n *ngIf=\"$any(node).relations?.Original || node as n\"\n [src]=\"n | esNodeIcon | async\"\n [alt]=\"\n n.mediatype\n ? ('NODE.mediatype' | translate) + ': ' + ('MEDIATYPE.' + n.mediatype | translate)\n : ''\n \"\n [matTooltip]=\"\n n.mediatype\n ? ('NODE.mediatype' | translate) + ': ' + ('MEDIATYPE.' + n.mediatype | translate)\n : ''\n \"\n />\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [":host{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;border-radius:50%;background-color:#fff;padding:5px;position:relative;z-index:1;box-shadow:0 0 5px #0000004d}:host i{font-size:18px;color:#333}:host img{width:18px;height:18px}\n"] }]
|
|
6343
6419
|
}], ctorParameters: () => [{ type: NodeHelperService }, { type: NodeEntriesGlobalService }, { type: NodeEntriesService, decorators: [{
|
|
6344
6420
|
type: Optional
|
|
6345
6421
|
}] }], propDecorators: { node: [{
|
|
@@ -6391,7 +6467,7 @@ class OptionButtonComponent {
|
|
|
6391
6467
|
>
|
|
6392
6468
|
<i esIcon="{{ option.icon }}" [aria]="false"></i>
|
|
6393
6469
|
</button>
|
|
6394
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type:
|
|
6470
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
6395
6471
|
}
|
|
6396
6472
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OptionButtonComponent, decorators: [{
|
|
6397
6473
|
type: Component,
|
|
@@ -6442,7 +6518,7 @@ class NodeStatsBadgesComponent {
|
|
|
6442
6518
|
}
|
|
6443
6519
|
}
|
|
6444
6520
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeStatsBadgesComponent, deps: [{ token: NodeEntriesService, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6445
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeStatsBadgesComponent, isStandalone: false, selector: "es-node-stats-badges", inputs: { node: "node", backgroundStyle: "backgroundStyle" }, host: { properties: { "attr.backgroundStyle": "this.backgroundStyle" } }, ngImport: i0, template: "<!--\n <div\n *ngIf=\"node.aspects?.includes('ccm:published')\"\n class=\"card-top-bar-published-copy\"\n >\n <div class=\"node-published-copy\">\n <i\n esIcon=\"content_copy\"\n [matTooltip]=\"'PUBLISHED_COPY_TOOLTIP' | translate\"\n ></i>\n </div>\n </div>\n -->\n<div class=\"card-top-bar-comments\">\n <div\n class=\"node-comments\"\n *ngIf=\"node.type === 'ccm:io'\"\n (click)=\"\n entriesService?.onClicked({\n event: $event,\n element: node,\n source: ClickSource.Comments\n })\n \"\n [matTooltip]=\"('COMMENTS_MULTIPLE' | translate) + ': ' + node.commentCount\"\n >\n <i esIcon=\"comment\"></i>\n <span>{{ node.commentCount }}</span>\n </div>\n</div>\n<div class=\"card-top-bar-childobjects\" *ngIf=\"childObjectCount > 0\">\n <div\n class=\"childobject-count\"\n matTooltip=\"{{ 'CHILDOBJECT_COUNT' | translate : { count: childObjectCount + 1 } }}\"\n >\n <span>{{ childObjectCount + 1 }}</span\n ><i esIcon=\"filter_none\"></i>\n </div>\n</div>\n", styles: [":host{display:flex;gap:15px}.card-top-bar-comments>div,.card-top-bar-published-copy>div,.card-top-bar-childobjects>div{border-radius:15px;display:inline-flex;align-items:center;min-width:35px;min-height:22px;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none;padding:2px 8px}:host[backgroundStyle=lighten] .card-top-bar-comments>div,:host[backgroundStyle=lighten] .card-top-bar-published-copy>div,:host[backgroundStyle=lighten] .card-top-bar-childobjects>div{background-color:#ffffffbf}:host[backgroundStyle=darken] .card-top-bar-comments>div,:host[backgroundStyle=darken] .card-top-bar-published-copy>div,:host[backgroundStyle=darken] .card-top-bar-childobjects>div{background-color:#0003}.card-top-bar-comments>div.childobject-count>i,.card-top-bar-published-copy>div.childobject-count>i,.card-top-bar-childobjects>div.childobject-count>i{font-size:13px;margin-left:4px}.card-top-bar-comments>div.node-published-copy,.card-top-bar-published-copy>div.node-published-copy,.card-top-bar-childobjects>div.node-published-copy{min-width:auto}.card-top-bar-comments>div.node-published-copy>i,.card-top-bar-published-copy>div.node-published-copy>i,.card-top-bar-childobjects>div.node-published-copy>i{font-size:13px}.card-top-bar-comments>div.node-comments>i,.card-top-bar-published-copy>div.node-comments>i,.card-top-bar-childobjects>div.node-comments>i{font-size:13px;margin-right:4px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type:
|
|
6521
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeStatsBadgesComponent, isStandalone: false, selector: "es-node-stats-badges", inputs: { node: "node", backgroundStyle: "backgroundStyle" }, host: { properties: { "attr.backgroundStyle": "this.backgroundStyle" } }, ngImport: i0, template: "<!--\n <div\n *ngIf=\"node.aspects?.includes('ccm:published')\"\n class=\"card-top-bar-published-copy\"\n >\n <div class=\"node-published-copy\">\n <i\n esIcon=\"content_copy\"\n [matTooltip]=\"'PUBLISHED_COPY_TOOLTIP' | translate\"\n ></i>\n </div>\n </div>\n -->\n<div class=\"card-top-bar-comments\">\n <div\n class=\"node-comments\"\n *ngIf=\"node.type === 'ccm:io'\"\n (click)=\"\n entriesService?.onClicked({\n event: $event,\n element: node,\n source: ClickSource.Comments\n })\n \"\n [matTooltip]=\"('COMMENTS_MULTIPLE' | translate) + ': ' + node.commentCount\"\n >\n <i esIcon=\"comment\"></i>\n <span>{{ node.commentCount }}</span>\n </div>\n</div>\n<div class=\"card-top-bar-childobjects\" *ngIf=\"childObjectCount > 0\">\n <div\n class=\"childobject-count\"\n matTooltip=\"{{ 'CHILDOBJECT_COUNT' | translate : { count: childObjectCount + 1 } }}\"\n >\n <span>{{ childObjectCount + 1 }}</span\n ><i esIcon=\"filter_none\"></i>\n </div>\n</div>\n", styles: [":host{display:flex;gap:15px}.card-top-bar-comments>div,.card-top-bar-published-copy>div,.card-top-bar-childobjects>div{border-radius:15px;display:inline-flex;align-items:center;min-width:35px;min-height:22px;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none;padding:2px 8px}:host[backgroundStyle=lighten] .card-top-bar-comments>div,:host[backgroundStyle=lighten] .card-top-bar-published-copy>div,:host[backgroundStyle=lighten] .card-top-bar-childobjects>div{background-color:#ffffffbf}:host[backgroundStyle=darken] .card-top-bar-comments>div,:host[backgroundStyle=darken] .card-top-bar-published-copy>div,:host[backgroundStyle=darken] .card-top-bar-childobjects>div{background-color:#0003}.card-top-bar-comments>div.childobject-count>i,.card-top-bar-published-copy>div.childobject-count>i,.card-top-bar-childobjects>div.childobject-count>i{font-size:13px;margin-left:4px}.card-top-bar-comments>div.node-published-copy,.card-top-bar-published-copy>div.node-published-copy,.card-top-bar-childobjects>div.node-published-copy{min-width:auto}.card-top-bar-comments>div.node-published-copy>i,.card-top-bar-published-copy>div.node-published-copy>i,.card-top-bar-childobjects>div.node-published-copy>i{font-size:13px}.card-top-bar-comments>div.node-comments>i,.card-top-bar-published-copy>div.node-comments>i,.card-top-bar-childobjects>div.node-comments>i{font-size:13px;margin-right:4px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
|
|
6446
6522
|
}
|
|
6447
6523
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeStatsBadgesComponent, decorators: [{
|
|
6448
6524
|
type: Component,
|
|
@@ -6526,7 +6602,7 @@ class NodeEntriesCardComponent {
|
|
|
6526
6602
|
}, this.node);
|
|
6527
6603
|
}
|
|
6528
6604
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesCardComponent, deps: [{ token: NodeEntriesService }, { token: NodeHelperService }, { token: i0.ApplicationRef }, { token: i2.ConfigService }, { token: i2.AuthenticationService }, { token: NodeEntriesTemplatesService }, { token: NodeEntriesGlobalService }, { token: Toast, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6529
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesCardComponent, isStandalone: false, selector: "es-node-entries-card", inputs: { dropdown: "dropdown", node: "node" }, viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n [class]=\"\n 'grid-card' +\n (isCollection\n ? ' grid-card-collection grid-card-collection-scope-' +\n node.collection.scope +\n ' grid-card-collection-type-' +\n node.collection.type\n : '') +\n ($any(node).virtual ? ' grid-card-virtual' : '') +\n ' ' +\n nodeEntriesGlobalService.getCustomCssClass(node)\n \"\n [style.background-color]=\"isCollection ? node.collection.color : null\"\n [class.dynamic-single-click]=\"entriesService.singleClickHint === 'dynamic'\"\n [class.selected]=\"entriesService.selection.isSelected(node)\"\n (contextmenu)=\"openContextmenu($event, node)\"\n (keydown.ContextMenu)=\"openContextmenu($event, node)\"\n>\n <div\n *ngIf=\"templatesService.overlay\"\n class=\"card-overlay\"\n (click)=\"\n entriesService.clickItem.emit({\n element: node,\n source: ClickSource.Overlay,\n })\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templatesService.overlay; context: { element: node }\"\n ></ng-container>\n </div>\n <button\n *ngIf=\"dropdown\"\n #menuTrigger=\"matMenuTrigger\"\n mat-button\n class=\"dropdown-dummy cdk-visually-hidden\"\n [style.left.px]=\"dropdownLeft\"\n [style.top.px]=\"dropdownTop\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n ></button>\n <div class=\"card-top-bar\" [style.background-color]=\"isCollection ? node.collection.color : null\">\n <div class=\"card-top-bar-collection-color\" *ngIf=\"nodeHelper.isNodeCollection(node)\"></div>\n <es-node-type-badge [node]=\"node\"></es-node-type-badge>\n <div *ngIf=\"isCollection && node.collection.pinned\" class=\"card-top-bar-flag\">\n <i esIcon=\"edu-pin\"></i>\n </div>\n <div class=\"card-top-bar-empty\"></div>\n <es-node-stats-badges [node]=\"node\"></es-node-stats-badges>\n <div class=\"card-top-bar-checkbox\" *ngIf=\"entriesService.checkbox\">\n <mat-checkbox\n [checked]=\"entriesService.selection.isSelected(node)\"\n (change)=\"entriesService.onCheckboxChanged(node, $event.checked)\"\n color=\"primary\"\n aria-label=\"{{ 'SELECT' | translate : { element: (node | nodeTitle) } }}\"\n ></mat-checkbox>\n </div>\n </div>\n <es-node-url\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n mode=\"wrapper\"\n [node]=\"node\"\n esFocusState\n #cardFocusState=\"esFocusState\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n image;\n context: { playAnimation: cardFocusState.hovering || cardFocusState.hasFocus }\n \"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"meta\"></ng-container>\n </es-node-url>\n <button\n *ngIf=\"entriesService.elementInteractionType === InteractionType.Emitter\"\n class=\"card-body\"\n matRipple\n (click)=\"\n entriesService.onClicked({\n event: $event,\n element: node,\n source: ClickSource.Metadata,\n })\n \"\n (dblclick)=\"\n entriesService.dblClickItem.emit({\n element: node,\n source: ClickSource.Metadata,\n })\n \"\n esFocusState\n #cardFocusState=\"esFocusState\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n image;\n context: { playAnimation: cardFocusState.hovering || cardFocusState.hasFocus }\n \"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"meta\"></ng-container>\n </button>\n <div\n *ngIf=\"entriesService.elementInteractionType === InteractionType.None\"\n esFocusState\n #cardFocusState=\"esFocusState\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n image;\n context: { playAnimation: cardFocusState.hovering || cardFocusState.hasFocus }\n \"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"meta\"></ng-container>\n </div>\n <div class=\"card-options\" *ngIf=\"entriesService.options || showRatings\">\n <div class=\"card-rating-area\">\n <es-node-rating [node]=\"node\"></es-node-rating>\n </div>\n <div class=\"card-options-area\">\n <es-option-button\n *ngFor=\"let option of optionsOnCard()\"\n class=\"card-options-always\"\n [option]=\"option\"\n [node]=\"node\"\n ></es-option-button>\n <div class=\"card-options-spacer\"></div>\n <button\n *ngIf=\"dropdown\"\n mat-icon-button\n color=\"primary\"\n (click)=\"openMenu(node)\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n [attr.aria-label]=\"'OPTIONS_FOR' | translate : { element: (node | nodeTitle) }\"\n data-test=\"card-options-button\"\n >\n <i esIcon=\"more_vert\"></i>\n </button>\n </div>\n </div>\n <ng-template #image let-playAnimation=\"playAnimation\">\n <div\n class=\"card-image-area\"\n [style.background-color]=\"isCollection ? node.collection.color : null\"\n >\n <ng-container *ngIf=\"getTemplate(CustomFieldSpecialType.preview) as ref\">\n <ng-container\n *ngTemplateOutlet=\"ref; context: { node: node, entriesService: entriesService }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!getTemplate(CustomFieldSpecialType.preview)\">\n <es-preview-image\n *ngIf=\"!(isCollection && node.preview.isIcon)\"\n [node]=\"node\"\n [playAnimation]=\"playAnimation\"\n ></es-preview-image>\n <div *ngIf=\"isCollection && node.preview.isIcon\" class=\"card-collection-image\">\n <i esIcon=\"layers\"></i>\n </div>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #meta let-link=\"link\">\n <div class=\"card-meta\">\n <div\n *ngFor=\"let displayPart of getVisibleColumns(); let first = first\"\n class=\"card-meta-row card-meta-row-{{ displayPart.name | lowercase | propertySlug }}\"\n [class.card-meta-row-primary]=\"first\"\n >\n <ng-container *ngIf=\"first\">\n <es-node-url\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n [node]=\"node\"\n #link\n >\n <es-list-base [item]=\"displayPart\" [node]=\"node\" [provideLabel]=\"false\"> </es-list-base>\n </es-node-url>\n <div *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\">\n <es-list-base [item]=\"displayPart\" [node]=\"node\" [provideLabel]=\"false\"> </es-list-base>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!first\">\n <label>\n {{ displayPart | esListItemLabel | async }}\n </label>\n <es-list-base [item]=\"displayPart\" [node]=\"node\" [provideLabel]=\"false\"> </es-list-base>\n </ng-container>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".grid-card{transition:all var(--transitionNormal);overflow:hidden;background-color:#fff;box-shadow:0 3px 3px #0000001a;display:grid;height:100%;grid-template-columns:auto}:host-context(body.es-contrast-mode) .grid-card{border:1px solid rgba(0,0,0,.42)}.grid-card.selected{background-color:rgb(var(--palette-primary-50))}.grid-card .dropdown-dummy{position:fixed}.grid-card .card-options{display:grid;grid-template-columns:1fr auto;grid-column-gap:10px}.grid-card .card-options .card-rating-area{display:flex;align-items:center;height:100%;padding-left:10px}.grid-card .card-options .card-options-area{display:flex}.grid-card .card-options .card-options-area es-option-button,.grid-card .card-options .card-options-area button{transition:all var(--transitionNormal);margin:0 2px;border-radius:50%}.grid-card .card-options .card-options-area es-option-button:hover,.grid-card .card-options .card-options-area es-option-button:focus,.grid-card .card-options .card-options-area button:hover,.grid-card .card-options .card-options-area button:focus{background-color:#fff}.grid-card:not(.grid-card-collection) .card-top-bar{background-color:var(--palette-primary-200)}.grid-card.grid-card-virtual{outline:2px dashed var(--nodeVirtualColor)}.grid-card .card-top-bar{height:40px;display:flex;gap:15px;align-items:center;padding:0 20px;position:relative}.grid-card .card-top-bar .card-top-bar-collection-color{position:absolute;background-color:#ffffff80;inset:0}.grid-card .card-top-bar .card-top-bar-flag{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;border-radius:50%;background-color:#fff;padding:5px;position:relative;z-index:1;box-shadow:0 0 5px #0000004d}.grid-card .card-top-bar .card-top-bar-flag i{font-size:18px;color:#333}.grid-card .card-top-bar .card-top-bar-flag img{width:18px;height:18px}.grid-card .card-top-bar .card-top-bar-checkbox mat-checkbox{margin-right:-5px;position:relative;top:-1.3px}.grid-card .card-top-bar .card-top-bar-checkbox mat-checkbox.cdk-keyboard-focused ::ng-deep .mat-focus-indicator{outline:none}.grid-card .card-top-bar .card-top-bar-checkbox mat-checkbox.cdk-keyboard-focused ::ng-deep .mat-focus-indicator:after{content:\"\";position:absolute;inset:2px;outline:none;border:2px solid var(--palette-primary-300);border-color:#fff}.grid-card .card-top-bar .card-top-bar-empty{width:0;flex-grow:1}.grid-card button.card-body{border:unset;padding:unset;background-color:unset}.grid-card .card-image-area{height:150px;padding:0;display:flex}.grid-card .card-image-area es-preview-image{flex-grow:1}.grid-card .card-image-area .card-collection-image{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.grid-card .card-image-area .card-collection-image i{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;color:#000000bf;background-color:#ffffff80;padding:40px;font-size:40px;border-radius:50%}.grid-card .card-meta{padding:10px 20px 0;display:grid;flex-direction:row}.grid-card .card-meta .card-meta-row{display:flex;flex-direction:row;align-items:center;min-height:2.8em;gap:5px}.grid-card .card-meta .card-meta-row:not(:first-child)>label{cursor:inherit;color:var(--textLight);font-size:85%}.grid-card .card-meta .card-meta-row:not(:first-child)>es-list-base{color:#000;flex-grow:1;margin:5px 0;display:flex;justify-content:flex-end;text-align:end;word-break:break-word}.grid-card .card-meta .card-meta-row:first-child{font-size:120%}.grid-card .card-meta .card-meta-row:first-child>es-list-base,.grid-card .card-meta .card-meta-row:first-child>es-node-url{width:100%;font-size:120%;color:var(--textMain);height:2.8em;text-align:left;word-break:break-word}.grid-card.dynamic-single-click:hover{box-shadow:0 0 25px #0003;background-color:rgb(var(--palette-primary-50))}.grid-card.dynamic-single-click.grid-card-collection:hover .card-meta{background-color:#ffffffe6}.grid-card.grid-card-collection .card-meta{background-color:#fffc}.grid-card.grid-card-collection .card-options{background-color:#ffffffe6}.grid-card .card-options{border-top:1px solid #ddd}:host ::ng-deep .grid-card .card-meta-row:first-child es-list-base,:host ::ng-deep .grid-card .card-meta-row:first-child es-node-url a es-list-base{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-height:1.4em;max-height:2.8em;-webkit-line-clamp:2;-webkit-box-orient:vertical}:host ::ng-deep .grid-card .card-meta-row:first-child es-list-base>es-list-text,:host ::ng-deep .grid-card .card-meta-row:first-child es-node-url a es-list-base>es-list-text{word-break:break-word}:host ::ng-deep .grid-card .card-meta-row:first-child es-list-base>es-list-text span,:host ::ng-deep .grid-card .card-meta-row:first-child es-node-url a es-list-base>es-list-text span{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-height:1.4em;max-height:2.8em;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-align:left}:host ::ng-deep .grid-card .card-meta-row es-node-url a{color:var(--textMain)}:host ::ng-deep .grid-card .card-meta-row es-node-url a.cdk-keyboard-focused{display:inline-flex;outline:none;outline:2px solid var(--palette-primary-300);outline-offset:2px}:host ::ng-deep .card-meta es-list-base img{max-width:100px;max-height:20px}:host ::ng-deep .card-meta es-list-base es-list-node-license img{height:20px}:host ::ng-deep .card-meta es-list-base es-list-collection-info{display:flex;align-items:center}:host ::ng-deep .card-meta es-list-base es-list-collection-info i{font-size:12pt;margin:0 6px}:host ::ng-deep .grid-card-collection es-node-url a.cdk-keyboard-focused .card-meta{background-color:#fff}.card-overlay{position:absolute;z-index:2;inset:0;pointer-events:none}.card-overlay ::ng-deep>*{pointer-events:auto}.grid-card{grid-template-rows:40px auto auto}.grid-card .card-meta .card-meta-row>es-list-base{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-height:1.4em;max-height:2.8em;-webkit-line-clamp:2;-webkit-box-orient:vertical}:host ::ng-deep .grid-card es-node-url .node-url-wrapper{height:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FocusStateDirective, selector: "[esFocusState]", exportAs: ["esFocusState"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: NodeUrlComponent, selector: "es-node-url", inputs: ["node", "nodes", "target", "scope", "queryParams", "mode", "disabled", "alwaysRipple", "aria-describedby", "aria-label"], outputs: ["buttonClick"] }, { kind: "component", type: ListBaseComponent, selector: "es-list-base", inputs: ["forceText"] }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i8.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: NodeRatingComponent, selector: "es-node-rating", inputs: ["node"] }, { kind: "component", type: PreviewImageComponent, selector: "es-preview-image", inputs: ["node", "playAnimation"] }, { kind: "component", type: NodeTypeBadgeComponent, selector: "es-node-type-badge", inputs: ["node", "collectionIcons"] }, { kind: "component", type: OptionButtonComponent, selector: "es-option-button", inputs: ["option", "node"] }, { kind: "component", type: NodeStatsBadgesComponent, selector: "es-node-stats-badges", inputs: ["node", "backgroundStyle"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: PropertySlugPipe, name: "propertySlug" }, { kind: "pipe", type: NodeTitlePipe, name: "nodeTitle" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: ListItemLabelPipe, name: "esListItemLabel" }] }); }
|
|
6605
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesCardComponent, isStandalone: false, selector: "es-node-entries-card", inputs: { dropdown: "dropdown", node: "node" }, viewQueries: [{ propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n [class]=\"\n 'grid-card' +\n (isCollection\n ? ' grid-card-collection grid-card-collection-scope-' +\n node.collection.scope +\n ' grid-card-collection-type-' +\n node.collection.type\n : '') +\n ($any(node).virtual ? ' grid-card-virtual' : '') +\n ' ' +\n nodeEntriesGlobalService.getCustomCssClass(node)\n \"\n [style.background-color]=\"isCollection ? node.collection.color : null\"\n [class.dynamic-single-click]=\"entriesService.singleClickHint === 'dynamic'\"\n [class.selected]=\"entriesService.selection.isSelected(node)\"\n (contextmenu)=\"openContextmenu($event, node)\"\n (keydown.ContextMenu)=\"openContextmenu($event, node)\"\n>\n <div\n *ngIf=\"templatesService.overlay\"\n class=\"card-overlay\"\n (click)=\"\n entriesService.clickItem.emit({\n element: node,\n source: ClickSource.Overlay,\n })\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"templatesService.overlay; context: { element: node }\"\n ></ng-container>\n </div>\n <button\n *ngIf=\"dropdown\"\n #menuTrigger=\"matMenuTrigger\"\n mat-button\n class=\"dropdown-dummy cdk-visually-hidden\"\n [style.left.px]=\"dropdownLeft\"\n [style.top.px]=\"dropdownTop\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n ></button>\n <div class=\"card-top-bar\" [style.background-color]=\"isCollection ? node.collection.color : null\">\n <div class=\"card-top-bar-collection-color\" *ngIf=\"nodeHelper.isNodeCollection(node)\"></div>\n <es-node-type-badge [node]=\"node\"></es-node-type-badge>\n <div *ngIf=\"isCollection && node.collection.pinned\" class=\"card-top-bar-flag\">\n <i esIcon=\"edu-pin\"></i>\n </div>\n <div class=\"card-top-bar-empty\"></div>\n <es-node-stats-badges [node]=\"node\"></es-node-stats-badges>\n <div class=\"card-top-bar-checkbox\" *ngIf=\"entriesService.checkbox\">\n <mat-checkbox\n [checked]=\"entriesService.selection.isSelected(node)\"\n (change)=\"entriesService.onCheckboxChanged(node, $event.checked)\"\n color=\"primary\"\n aria-label=\"{{ 'SELECT' | translate : { element: (node | nodeTitle) } }}\"\n ></mat-checkbox>\n </div>\n </div>\n <es-node-url\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n mode=\"wrapper\"\n [node]=\"node\"\n esFocusState\n #cardFocusState=\"esFocusState\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n image;\n context: { playAnimation: cardFocusState.hovering || cardFocusState.hasFocus }\n \"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"meta\"></ng-container>\n </es-node-url>\n <button\n *ngIf=\"entriesService.elementInteractionType === InteractionType.Emitter\"\n class=\"card-body\"\n matRipple\n (click)=\"\n entriesService.onClicked({\n event: $event,\n element: node,\n source: ClickSource.Metadata,\n })\n \"\n (dblclick)=\"\n entriesService.dblClickItem.emit({\n element: node,\n source: ClickSource.Metadata,\n })\n \"\n esFocusState\n #cardFocusState=\"esFocusState\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n image;\n context: { playAnimation: cardFocusState.hovering || cardFocusState.hasFocus }\n \"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"meta\"></ng-container>\n </button>\n <div\n *ngIf=\"entriesService.elementInteractionType === InteractionType.None\"\n esFocusState\n #cardFocusState=\"esFocusState\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n image;\n context: { playAnimation: cardFocusState.hovering || cardFocusState.hasFocus }\n \"\n ></ng-container>\n <ng-container *ngTemplateOutlet=\"meta\"></ng-container>\n </div>\n <div class=\"card-options\" *ngIf=\"entriesService.options || showRatings\">\n <div class=\"card-rating-area\">\n <es-node-rating [node]=\"node\"></es-node-rating>\n </div>\n <div class=\"card-options-area\">\n <es-option-button\n *ngFor=\"let option of optionsOnCard()\"\n class=\"card-options-always\"\n [option]=\"option\"\n [node]=\"node\"\n ></es-option-button>\n <div class=\"card-options-spacer\"></div>\n <button\n *ngIf=\"dropdown\"\n mat-icon-button\n color=\"primary\"\n (click)=\"openMenu(node)\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n [attr.aria-label]=\"'OPTIONS_FOR' | translate : { element: (node | nodeTitle) }\"\n data-test=\"card-options-button\"\n >\n <i esIcon=\"more_vert\"></i>\n </button>\n </div>\n </div>\n <ng-template #image let-playAnimation=\"playAnimation\">\n <div\n class=\"card-image-area\"\n [style.background-color]=\"isCollection ? node.collection.color : null\"\n >\n <ng-container *ngIf=\"getTemplate(CustomFieldSpecialType.preview) as ref\">\n <ng-container\n *ngTemplateOutlet=\"ref; context: { node: node, entriesService: entriesService }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!getTemplate(CustomFieldSpecialType.preview)\">\n <es-preview-image\n *ngIf=\"!(isCollection && node.preview.isIcon)\"\n [node]=\"node\"\n [playAnimation]=\"playAnimation\"\n ></es-preview-image>\n <div *ngIf=\"isCollection && node.preview.isIcon\" class=\"card-collection-image\">\n <i esIcon=\"layers\"></i>\n </div>\n </ng-container>\n </div>\n </ng-template>\n <ng-template #meta let-link=\"link\">\n <div class=\"card-meta\">\n <div\n *ngFor=\"let displayPart of getVisibleColumns(); let first = first\"\n class=\"card-meta-row card-meta-row-{{ displayPart.name | lowercase | propertySlug }}\"\n [class.card-meta-row-primary]=\"first\"\n >\n <ng-container *ngIf=\"first\">\n <es-node-url\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n [node]=\"node\"\n #link\n >\n <es-list-base [item]=\"displayPart\" [node]=\"node\" [provideLabel]=\"false\"> </es-list-base>\n </es-node-url>\n <div *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\">\n <es-list-base [item]=\"displayPart\" [node]=\"node\" [provideLabel]=\"false\"> </es-list-base>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!first\">\n <label>\n {{ displayPart | esListItemLabel | async }}\n </label>\n <es-list-base [item]=\"displayPart\" [node]=\"node\" [provideLabel]=\"false\"> </es-list-base>\n </ng-container>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".grid-card{transition:all var(--transitionNormal);overflow:hidden;background-color:#fff;box-shadow:0 3px 3px #0000001a;display:grid;height:100%;grid-template-columns:auto}:host-context(body.es-contrast-mode) .grid-card{border:1px solid rgba(0,0,0,.42)}.grid-card.selected{background-color:rgb(var(--palette-primary-50))}.grid-card .dropdown-dummy{position:fixed}.grid-card .card-options{display:grid;grid-template-columns:1fr auto;grid-column-gap:10px}.grid-card .card-options .card-rating-area{display:flex;align-items:center;height:100%;padding-left:10px}.grid-card .card-options .card-options-area{display:flex}.grid-card .card-options .card-options-area es-option-button,.grid-card .card-options .card-options-area button{transition:all var(--transitionNormal);margin:0 2px;border-radius:50%}.grid-card .card-options .card-options-area es-option-button:hover,.grid-card .card-options .card-options-area es-option-button:focus,.grid-card .card-options .card-options-area button:hover,.grid-card .card-options .card-options-area button:focus{background-color:#fff}.grid-card:not(.grid-card-collection) .card-top-bar{background-color:var(--palette-primary-200)}.grid-card.grid-card-virtual{outline:2px dashed var(--nodeVirtualColor)}.grid-card .card-top-bar{height:40px;display:flex;gap:15px;align-items:center;padding:0 20px;position:relative}.grid-card .card-top-bar .card-top-bar-collection-color{position:absolute;background-color:#ffffff80;inset:0}.grid-card .card-top-bar .card-top-bar-flag{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;border-radius:50%;background-color:#fff;padding:5px;position:relative;z-index:1;box-shadow:0 0 5px #0000004d}.grid-card .card-top-bar .card-top-bar-flag i{font-size:18px;color:#333}.grid-card .card-top-bar .card-top-bar-flag img{width:18px;height:18px}.grid-card .card-top-bar .card-top-bar-checkbox mat-checkbox{margin-right:-5px;position:relative;top:-1.3px}.grid-card .card-top-bar .card-top-bar-checkbox mat-checkbox.cdk-keyboard-focused ::ng-deep .mat-focus-indicator{outline:none}.grid-card .card-top-bar .card-top-bar-checkbox mat-checkbox.cdk-keyboard-focused ::ng-deep .mat-focus-indicator:after{content:\"\";position:absolute;inset:2px;outline:none;border:2px solid var(--palette-primary-300);border-color:#fff}.grid-card .card-top-bar .card-top-bar-empty{width:0;flex-grow:1}.grid-card button.card-body{border:unset;padding:unset;background-color:unset}.grid-card .card-image-area{height:150px;padding:0;display:flex}.grid-card .card-image-area es-preview-image{flex-grow:1}.grid-card .card-image-area .card-collection-image{display:flex;width:100%;height:100%;align-items:center;justify-content:center}.grid-card .card-image-area .card-collection-image i{display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;color:#000000bf;background-color:#ffffff80;padding:40px;font-size:40px;border-radius:50%}.grid-card .card-meta{padding:10px 20px 0;display:grid;flex-direction:row}.grid-card .card-meta .card-meta-row{display:flex;flex-direction:row;align-items:center;min-height:2.8em;gap:5px}.grid-card .card-meta .card-meta-row:not(:first-child)>label{cursor:inherit;color:var(--textLight);font-size:85%}.grid-card .card-meta .card-meta-row:not(:first-child)>es-list-base{color:#000;flex-grow:1;margin:5px 0;display:flex;justify-content:flex-end;text-align:end;word-break:break-word}.grid-card .card-meta .card-meta-row:first-child{font-size:120%}.grid-card .card-meta .card-meta-row:first-child>es-list-base,.grid-card .card-meta .card-meta-row:first-child>es-node-url{width:100%;font-size:120%;color:var(--textMain);height:2.8em;text-align:left;word-break:break-word}.grid-card.dynamic-single-click:hover{box-shadow:0 0 25px #0003;background-color:rgb(var(--palette-primary-50))}.grid-card.dynamic-single-click.grid-card-collection:hover .card-meta{background-color:#ffffffe6}.grid-card.grid-card-collection .card-meta{background-color:#fffc}.grid-card.grid-card-collection .card-options{background-color:#ffffffe6}.grid-card .card-options{border-top:1px solid #ddd}:host ::ng-deep .grid-card .card-meta-row:first-child es-list-base,:host ::ng-deep .grid-card .card-meta-row:first-child es-node-url a es-list-base{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-height:1.4em;max-height:2.8em;-webkit-line-clamp:2;-webkit-box-orient:vertical}:host ::ng-deep .grid-card .card-meta-row:first-child es-list-base>es-list-text,:host ::ng-deep .grid-card .card-meta-row:first-child es-node-url a es-list-base>es-list-text{word-break:break-word}:host ::ng-deep .grid-card .card-meta-row:first-child es-list-base>es-list-text span,:host ::ng-deep .grid-card .card-meta-row:first-child es-node-url a es-list-base>es-list-text span{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-height:1.4em;max-height:2.8em;-webkit-line-clamp:2;-webkit-box-orient:vertical;text-align:left}:host ::ng-deep .grid-card .card-meta-row es-node-url a{color:var(--textMain)}:host ::ng-deep .grid-card .card-meta-row es-node-url a.cdk-keyboard-focused{display:inline-flex;outline:none;outline:2px solid var(--palette-primary-300);outline-offset:2px}:host ::ng-deep .card-meta es-list-base img{max-width:100px;max-height:20px}:host ::ng-deep .card-meta es-list-base es-list-node-license img{height:20px}:host ::ng-deep .card-meta es-list-base es-list-collection-info{display:flex;align-items:center}:host ::ng-deep .card-meta es-list-base es-list-collection-info i{font-size:12pt;margin:0 6px}:host ::ng-deep .grid-card-collection es-node-url a.cdk-keyboard-focused .card-meta{background-color:#fff}.card-overlay{position:absolute;z-index:2;inset:0;pointer-events:none}.card-overlay ::ng-deep>*{pointer-events:auto}.grid-card{grid-template-rows:40px auto auto}.grid-card .card-meta .card-meta-row>es-list-base{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-height:1.4em;max-height:2.8em;-webkit-line-clamp:2;-webkit-box-orient:vertical}:host ::ng-deep .grid-card es-node-url .node-url-wrapper{height:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FocusStateDirective, selector: "[esFocusState]", exportAs: ["esFocusState"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: NodeUrlComponent, selector: "es-node-url", inputs: ["node", "nodes", "target", "scope", "queryParams", "mode", "disabled", "alwaysRipple", "aria-describedby", "aria-label"], outputs: ["buttonClick"] }, { kind: "component", type: ListBaseComponent, selector: "es-list-base", inputs: ["forceText"] }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i9.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: NodeRatingComponent, selector: "es-node-rating", inputs: ["node"] }, { kind: "component", type: PreviewImageComponent, selector: "es-preview-image", inputs: ["node", "playAnimation"] }, { kind: "component", type: NodeTypeBadgeComponent, selector: "es-node-type-badge", inputs: ["node", "collectionIcons"] }, { kind: "component", type: OptionButtonComponent, selector: "es-option-button", inputs: ["option", "node"] }, { kind: "component", type: NodeStatsBadgesComponent, selector: "es-node-stats-badges", inputs: ["node", "backgroundStyle"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: PropertySlugPipe, name: "propertySlug" }, { kind: "pipe", type: NodeTitlePipe, name: "nodeTitle" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: ListItemLabelPipe, name: "esListItemLabel" }] }); }
|
|
6530
6606
|
}
|
|
6531
6607
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesCardComponent, decorators: [{
|
|
6532
6608
|
type: Component,
|
|
@@ -6582,11 +6658,11 @@ class NodeEntriesGlobalOptionsComponent {
|
|
|
6582
6658
|
return this.entriesService.globalOptionsSubject.pipe(map((options) => options.filter((e) => e.isEnabled)));
|
|
6583
6659
|
}
|
|
6584
6660
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesGlobalOptionsComponent, deps: [{ token: NodeEntriesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6585
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesGlobalOptionsComponent, isStandalone: false, selector: "es-node-entries-global-options", inputs: { displayType: "displayType" }, ngImport: i0, template: "<div\n *ngIf=\"(getEnabledOptions() | async)?.length\"\n role=\"listitem\"\n class=\"global-options\"\n [class.global-options-small]=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n [class.global-options-table]=\"displayType === NodeEntriesDisplayType.Table\"\n>\n <button\n mat-button\n *ngFor=\"let option of getEnabledOptions() | async\"\n (click)=\"option.callback()\"\n class=\"global-option-btn\"\n attr.data-test=\"card-button-{{ option.name }}\"\n >\n <ng-container *ngTemplateOutlet=\"globalOption; context: { option: option }\"></ng-container>\n </button>\n</div>\n<ng-template #globalOption let-option=\"option\">\n <span class=\"global-option\">\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"label\">{{ option.name | translate }}</span>\n </span>\n</ng-template>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #
|
|
6661
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesGlobalOptionsComponent, isStandalone: false, selector: "es-node-entries-global-options", inputs: { displayType: "displayType" }, ngImport: i0, template: "<div\n *ngIf=\"(getEnabledOptions() | async)?.length\"\n role=\"listitem\"\n class=\"global-options\"\n [class.global-options-small]=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n [class.global-options-table]=\"displayType === NodeEntriesDisplayType.Table\"\n>\n <button\n mat-button\n *ngFor=\"let option of getEnabledOptions() | async\"\n (click)=\"option.callback()\"\n class=\"global-option-btn\"\n attr.data-test=\"card-button-{{ option.name }}\"\n >\n <ng-container *ngTemplateOutlet=\"globalOption; context: { option: option }\"></ng-container>\n </button>\n</div>\n<ng-template #globalOption let-option=\"option\">\n <span class=\"global-option\">\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"label\">{{ option.name | translate }}</span>\n </span>\n</ng-template>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #2c0799;--aiColorChipBg: color-mix(in srgb, var(--aiColor), #fff 75%);--aiColorText: #fff;--aiColorChip: #fff;--aiColorChipRemove: #555;--aiColorChipBorder: #ddd;--aiColorChipText: var(--aiColor);--tableIconSize: 38px;--textLight: #585858;--textMediumLight: #888;--textMain: #383838;--cardWidth: 240px;--chipsSeperatorLineColor: #e2e2e2;--colorStatusPositive: #40bf8e;--colorStatusNegative: var(--warning);--colorStarActive: #ba7c00;--nodeVirtualColor: #42ca8d;--nodeVirtualColorLight: #b8fcdd;--transitionNormal: .2s;--genericSeperatorLineColor: #ececec;--tableSeperatorLineColor: #d2d2d2;--focusColor: var(--palette-primary-300);--focusWidth: 2px;--fontSizeXSmall: 85%;--topBarSearchFocusColor: var(--palette-primary-300);--workspaceTopBarSafeBackground: #963a3a;--workspaceTopBarNewAlpha: .1;--itemSelectedTextColor: var(--palette-primary-700);--listItemSelectedBackground: var(--palette-primary-50);--listItemSelectedBackgroundEffect: linear-gradient( to right, var(--primary) 0, var(--primary) 5px, var(--palette-primary-50) 5px, var(--palette-primary-50) 5px ) no-repeat}.global-options{display:grid;grid-template-columns:auto;grid-template-rows:repeat(auto-fit,minmax(70px,1fr));grid-row-gap:20px;height:100%;min-height:250px}.global-options.global-options-small{min-height:130px}.global-options.global-options-table{min-height:100px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-column-gap:20px}.global-options .global-option-btn{display:flex;height:100%;padding:0}.global-options .global-option{cursor:pointer;display:flex;box-shadow:0 0 5px #0000004d;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;border:3px dashed var(--primary);color:var(--primary)}.global-options .global-option>i{font-size:32px;margin-bottom:5px}.global-options .global-option>.label{cursor:pointer;font-weight:700}.global-options .global-option:hover,.global-options .global-option:focus{background-color:rgb(var(--palette-primary-50))}:host ::ng-deep .global-options .global-option-btn .mdc-button__label{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6586
6662
|
}
|
|
6587
6663
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesGlobalOptionsComponent, decorators: [{
|
|
6588
6664
|
type: Component,
|
|
6589
|
-
args: [{ selector: 'es-node-entries-global-options', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"(getEnabledOptions() | async)?.length\"\n role=\"listitem\"\n class=\"global-options\"\n [class.global-options-small]=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n [class.global-options-table]=\"displayType === NodeEntriesDisplayType.Table\"\n>\n <button\n mat-button\n *ngFor=\"let option of getEnabledOptions() | async\"\n (click)=\"option.callback()\"\n class=\"global-option-btn\"\n attr.data-test=\"card-button-{{ option.name }}\"\n >\n <ng-container *ngTemplateOutlet=\"globalOption; context: { option: option }\"></ng-container>\n </button>\n</div>\n<ng-template #globalOption let-option=\"option\">\n <span class=\"global-option\">\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"label\">{{ option.name | translate }}</span>\n </span>\n</ng-template>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #
|
|
6665
|
+
args: [{ selector: 'es-node-entries-global-options', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\n *ngIf=\"(getEnabledOptions() | async)?.length\"\n role=\"listitem\"\n class=\"global-options\"\n [class.global-options-small]=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n [class.global-options-table]=\"displayType === NodeEntriesDisplayType.Table\"\n>\n <button\n mat-button\n *ngFor=\"let option of getEnabledOptions() | async\"\n (click)=\"option.callback()\"\n class=\"global-option-btn\"\n attr.data-test=\"card-button-{{ option.name }}\"\n >\n <ng-container *ngTemplateOutlet=\"globalOption; context: { option: option }\"></ng-container>\n </button>\n</div>\n<ng-template #globalOption let-option=\"option\">\n <span class=\"global-option\">\n <i [esIcon]=\"option.icon\"></i>\n <span class=\"label\">{{ option.name | translate }}</span>\n </span>\n</ng-template>\n", styles: [":root{--primary: var(--palette-primary-500);--warning: #cd2457;--aiColor: #2c0799;--aiColorChipBg: color-mix(in srgb, var(--aiColor), #fff 75%);--aiColorText: #fff;--aiColorChip: #fff;--aiColorChipRemove: #555;--aiColorChipBorder: #ddd;--aiColorChipText: var(--aiColor);--tableIconSize: 38px;--textLight: #585858;--textMediumLight: #888;--textMain: #383838;--cardWidth: 240px;--chipsSeperatorLineColor: #e2e2e2;--colorStatusPositive: #40bf8e;--colorStatusNegative: var(--warning);--colorStarActive: #ba7c00;--nodeVirtualColor: #42ca8d;--nodeVirtualColorLight: #b8fcdd;--transitionNormal: .2s;--genericSeperatorLineColor: #ececec;--tableSeperatorLineColor: #d2d2d2;--focusColor: var(--palette-primary-300);--focusWidth: 2px;--fontSizeXSmall: 85%;--topBarSearchFocusColor: var(--palette-primary-300);--workspaceTopBarSafeBackground: #963a3a;--workspaceTopBarNewAlpha: .1;--itemSelectedTextColor: var(--palette-primary-700);--listItemSelectedBackground: var(--palette-primary-50);--listItemSelectedBackgroundEffect: linear-gradient( to right, var(--primary) 0, var(--primary) 5px, var(--palette-primary-50) 5px, var(--palette-primary-50) 5px ) no-repeat}.global-options{display:grid;grid-template-columns:auto;grid-template-rows:repeat(auto-fit,minmax(70px,1fr));grid-row-gap:20px;height:100%;min-height:250px}.global-options.global-options-small{min-height:130px}.global-options.global-options-table{min-height:100px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));grid-column-gap:20px}.global-options .global-option-btn{display:flex;height:100%;padding:0}.global-options .global-option{cursor:pointer;display:flex;box-shadow:0 0 5px #0000004d;width:100%;height:100%;flex-direction:column;align-items:center;justify-content:center;border:3px dashed var(--primary);color:var(--primary)}.global-options .global-option>i{font-size:32px;margin-bottom:5px}.global-options .global-option>.label{cursor:pointer;font-weight:700}.global-options .global-option:hover,.global-options .global-option:focus{background-color:rgb(var(--palette-primary-50))}:host ::ng-deep .global-options .global-option-btn .mdc-button__label{width:100%;height:100%}\n"] }]
|
|
6590
6666
|
}], ctorParameters: () => [{ type: NodeEntriesService }], propDecorators: { displayType: [{
|
|
6591
6667
|
type: Input
|
|
6592
6668
|
}] } });
|
|
@@ -6761,27 +6837,6 @@ class NodeEntriesCardGridComponent {
|
|
|
6761
6837
|
.getPropertyValue('grid-template-columns')
|
|
6762
6838
|
.split(' ').length;
|
|
6763
6839
|
}
|
|
6764
|
-
getSortColumns() {
|
|
6765
|
-
return this.entriesService.sort?.columns?.filter((c) => {
|
|
6766
|
-
const result = this.entriesService.columns
|
|
6767
|
-
.concat(new ListItemSort('NODE', 'score'), new ListItemSort('NODE', RestConstants.CCM_PROP_COLLECTION_ORDERED_POSITION), new ListItemSort('NODE', RestConstants.CM_PROP_TITLE), new ListItemSort('NODE', RestConstants.CM_NAME), new ListItemSort('NODE', RestConstants.CM_PROP_C_CREATED), new ListItemSort('NODE', RestConstants.CM_MODIFIED_DATE), new ListItemSort('NODE', RestConstants.CCM_PROP_REPLICATIONMODIFIED), new ListItemSort('NODE', RestConstants.CCM_PROP_REPLICATIONSOURCETIMESTAMP))
|
|
6768
|
-
.some((c2) => c.type === c2.type && c2.name === c.name);
|
|
6769
|
-
if (!result && !this.entriesService.configureColumns) {
|
|
6770
|
-
return this.entriesService.sort?.columns;
|
|
6771
|
-
/*
|
|
6772
|
-
const warning =
|
|
6773
|
-
'Sort field ' +
|
|
6774
|
-
c.name +
|
|
6775
|
-
' was specified but is not present as a column. ' +
|
|
6776
|
-
'It will be ignored. Please also configure this field in the <lists> section';
|
|
6777
|
-
if (!displayedWarnings.includes(warning)) {
|
|
6778
|
-
console.warn(warning);
|
|
6779
|
-
displayedWarnings.push(warning);
|
|
6780
|
-
}*/
|
|
6781
|
-
}
|
|
6782
|
-
return result;
|
|
6783
|
-
});
|
|
6784
|
-
}
|
|
6785
6840
|
onNodesDropped(dragData) {
|
|
6786
6841
|
this.entriesService.dragDrop.dropped(dragData.target, {
|
|
6787
6842
|
element: dragData.draggedNodes,
|
|
@@ -6854,11 +6909,11 @@ class NodeEntriesCardGridComponent {
|
|
|
6854
6909
|
this.nodeHelperService.isNodeRevoked(node));
|
|
6855
6910
|
}
|
|
6856
6911
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesCardGridComponent, deps: [{ token: NodeEntriesService }, { token: NodeEntriesGlobalService }, { token: NodeEntriesTemplatesService }, { token: NodeHelperService }, { token: UIService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6857
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesCardGridComponent, isStandalone: false, selector: "es-node-entries-card-grid", inputs: { displayType: "displayType" }, host: { properties: { "style.--scroll-gradient-color": "this.scrollGradientColor" } }, viewQueries: [{ propertyName: "columnChooserTrigger", first: true, predicate: ["columnChooserTrigger"], descendants: true }, { propertyName: "gridTop", first: true, predicate: ["gridTop"], descendants: true, static: true }, { propertyName: "sortPanel", first: true, predicate: SortSelectPanelComponent, descendants: true }, { propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true }, { propertyName: "dropListsQuery", predicate: CdkDropList, descendants: true }, { propertyName: "itemRefs", predicate: ["item"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-template #gridTop>\n <button\n *ngIf=\"entriesService.configureColumns\"\n class=\"configure-columns\"\n mat-icon-button\n (click)=\"columnChooserVisible$.next(!columnChooserVisible$.value)\"\n cdkOverlayOrigin\n #columnChooserTrigger=\"cdkOverlayOrigin\"\n [matTooltip]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n [attr.aria-label]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n >\n <i esIcon=\"settings\"></i>\n </button>\n <es-sort-select-panel\n *ngIf=\"entriesService.sort?.allowed\"\n class=\"order-panel\"\n [active]=\"entriesService.sort.active\"\n [direction]=\"entriesService.sort.direction\"\n [columns]=\"getSortColumns()\"\n (sortChange)=\"onSortChange($event)\"\n [(customSortingInProgress)]=\"entriesService.sort.customSortingInProgress\"\n (customSortingInProgressChange)=\"onCustomSortingInProgressChange()\"\n ></es-sort-select-panel>\n</ng-template>\n<es-column-chooser\n *ngIf=\"entriesService.configureColumns\"\n [(columns)]=\"entriesService.columns\"\n [columnChooserVisible]=\"columnChooserVisible$ | async\"\n [origin]=\"columnChooserTrigger\"\n (columnChooserVisibleChange)=\"columnChooserVisible$.next($event)\"\n></es-column-chooser>\n<es-dropdown #dropdown [options]=\"entriesService.options?.[Target.ListDropdown]\"></es-dropdown>\n\n<!-- Do not render the list element (`role=\"list\"` or `li`) when there are no list items. -->\n<ng-container\n *ngIf=\"(nodes$ | async)?.length > 0 || (entriesService.globalOptionsSubject | async)?.length > 0\"\n>\n <!-- FIXME: Ideally, we would use native `ul` and `li` elements, but these have a strict model,\n that only allows `li` elements as direct children of `ul` elements. So we would need to use the\n native elements at all places without any elements between `ul` and `li`. -->\n <div\n *ngIf=\"entriesService.sort?.customSortingInProgress\"\n role=\"list\"\n class=\"card-grid card-grid-reorder\"\n cdkDropListGroup\n >\n <ng-container *ngIf=\"nodes$ | async as nodes\">\n <div\n class=\"card-grid-order-wrapper\"\n *ngFor=\"let node of nodes; let i = index\"\n role=\"none\"\n cdkDropList\n [cdkDropListConnectedTo]=\"dropLists\"\n [cdkDropListData]=\"i\"\n >\n <es-node-entries-card\n *ngIf=\"displayType === NodeEntriesDisplayType.Grid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragData]=\"i\"\n [cdkDragStartDelay]=\"getDragStartDelay()\"\n cdkDragPreviewClass=\"es-card-grid-rearrange-drag-preview\"\n (cdkDragEntered)=\"onRearrangeDragEntered($event)\"\n (cdkDragStarted)=\"onRearrangeDragStarted()\"\n (cdkDragEnded)=\"onRearrangeDragEnded()\"\n ></es-node-entries-card>\n <es-node-entries-card-small\n *ngIf=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragData]=\"i\"\n [cdkDragStartDelay]=\"getDragStartDelay()\"\n cdkDragPreviewClass=\"es-card-grid-rearrange-drag-preview\"\n (cdkDragEntered)=\"onRearrangeDragEntered($event)\"\n (cdkDragStarted)=\"onRearrangeDragStarted()\"\n (cdkDragEnded)=\"onRearrangeDragEnded()\"\n ></es-node-entries-card-small>\n </div>\n </ng-container>\n </div>\n <div class=\"card-grid-wrapper\" *ngIf=\"!entriesService.sort?.customSortingInProgress\">\n <ng-container *ngTemplateOutlet=\"scrollHelper\"></ng-container>\n <div\n role=\"list\"\n class=\"card-grid card-grid-layout-{{ layout }}\"\n #grid\n (esBorderBoxObserver)=\"onGridSizeChanges()\"\n esInfiniteScroll\n (scroll)=\"updateScrollState()\"\n (scrolled)=\"!visibleItemsLimited && loadData('scroll')\"\n >\n <es-node-entries-global-options\n *ngIf=\"(entriesService.globalOptionsSubject | async)?.length\"\n [displayType]=\"displayType\"\n >\n </es-node-entries-global-options>\n <ng-container *ngIf=\"nodes$ | async as nodes\">\n <div\n class=\"card-grid-drag-wrapper\"\n *ngFor=\"let node of nodes; let i = index\"\n role=\"none\"\n [esNodesDropTarget]=\"node\"\n [canDropNodes]=\"canDropNodes\"\n (nodeDropped)=\"onNodesDropped($event)\"\n #dropTarget=\"esNodesDropTarget\"\n >\n <ng-container *ngIf=\"isCustomTemplate(node)\">\n <ng-container\n *ngTemplateOutlet=\"\n templatesService.customCard || $any(node);\n context: { element: node, options: entriesService.options }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!isCustomTemplate(node)\">\n <es-node-entries-card\n *ngIf=\"displayType === NodeEntriesDisplayType.Grid\"\n #item\n [node]=\"node\"\n [dropdown]=\"dropdown\"\n role=\"listitem\"\n cdkDrag\n [cdkDragDisabled]=\"(getDragEnabled() | async) === false\"\n [cdkDragData]=\"getDragData(node)\"\n esNodesDrag\n (cdkDragStarted)=\"onDragStarted(node)\"\n (cdkDragEnded)=\"onDragEnded()\"\n [class.card-import-blocked]=\"isBlocked(node)\"\n [class.selected-when-dragging]=\"\n isDragging && entriesService.selection.isSelected(node)\n \"\n >\n <ng-container *ngIf=\"entriesService.selection.selected.length > 1\">\n <es-node-entries-card\n *cdkDragPreview\n [node]=\"node\"\n [matBadge]=\"\n entriesService.selection.selected.length > 1\n ? entriesService.selection.selected.length\n : null\n \"\n class=\"card-drag-preview\"\n ></es-node-entries-card>\n </ng-container>\n </es-node-entries-card>\n <es-node-entries-card-small\n *ngIf=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragDisabled]=\"(getDragEnabled() | async) === false\"\n [cdkDragData]=\"[node]\"\n esNodesDrag\n >\n </es-node-entries-card-small>\n </ng-container>\n <div\n *ngIf=\"dropTarget.active?.canDrop?.denyExplicit\"\n class=\"card-grid-drop-blocked-container\"\n >\n <i esIcon=\"cancel\"></i>\n </div>\n <div *ngIf=\"dropTarget.active?.canDrop?.accept\" class=\"card-grid-drop-allowed-container\">\n <i\n [esIcon]=\"dropTarget.active.action === 'copy' ? 'add_circle_outline' : 'archive'\"\n ></i>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container\n *ngIf=\"\n !entriesService.dataSource.isLoading &&\n entriesService.dataSource.hasMore() &&\n !visibleItemsLimited &&\n entriesService.paginationStrategy === 'infinite-scroll' &&\n layout !== 'scroll'\n \"\n>\n <div class=\"load-more\">\n <button mat-button color=\"primary\" (click)=\"loadData('button')\">\n <i esIcon=\"refresh\"></i>\n <span>{{ 'LOAD_MORE' | translate }}</span>\n </button>\n </div>\n</ng-container>\n<ng-container\n *ngIf=\"\n entriesService.dataSource.isLoading === true ||\n entriesService.dataSource.isLoading === 'initial' ||\n (entriesService.dataSource.isLoading === 'page' &&\n entriesService.paginationStrategy === 'infinite-scroll')\n \"\n>\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n</ng-container>\n\n<ng-template #loading>\n <es-spinner></es-spinner>\n</ng-template>\n<ng-template #scrollHelper>\n <ng-container *ngIf=\"layout === 'scroll'\">\n <div\n class=\"scroll-helper-left\"\n role=\"presentation\"\n (click)=\"doScroll('left')\"\n *ngIf=\"scroll.left\"\n >\n <button mat-icon-button color=\"primary\" (click)=\"$event.stopPropagation(); doScroll('left')\">\n <i esIcon=\"keyboard_arrow_left\" [aria]=\"true\"></i>\n </button>\n </div>\n <div\n class=\"scroll-helper-right\"\n role=\"presentation\"\n (click)=\"doScroll('right')\"\n *ngIf=\"scroll.right\"\n >\n <button mat-icon-button color=\"primary\" (click)=\"$event.stopPropagation(); doScroll('right')\">\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"true\"></i>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["@keyframes OrderAnimationCards{0%{transform:rotate(-.25deg)}50%{transform:rotate(.25deg)}to{transform:rotate(-.25deg)}}:host{--scroll-gradient-color: white}.order-panel{margin-left:auto}.load-more{display:flex;justify-content:center}.card-grid-wrapper{position:relative;z-index:0}.card-grid-wrapper .scroll-helper-left,.card-grid-wrapper .scroll-helper-right{position:absolute;width:15%;min-width:60px;max-width:calc(var(--cardWidth) * .4);display:flex;align-items:center;height:calc(100% - 10px);z-index:5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.card-grid-wrapper .scroll-helper-left>button,.card-grid-wrapper .scroll-helper-right>button{background-color:#fff;color:var(--primary);box-shadow:0 0 25px #00000040}.card-grid-wrapper .scroll-helper-left{left:-1.5em;justify-content:flex-start;background:linear-gradient(to left,transparent 0,var(--scroll-gradient-color) calc(100% - 1.5em))}.card-grid-wrapper .scroll-helper-left>button{margin-left:calc(1.5em - 8px)}.card-grid-wrapper .scroll-helper-right{right:-1.5em;justify-content:flex-end;background:linear-gradient(to right,transparent 0,var(--scroll-gradient-color) calc(100% - 1.5em))}.card-grid-wrapper .scroll-helper-right>button{margin-right:calc(1.5em - 8px)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--cardWidth),1fr));grid-column-gap:20px;grid-row-gap:20px;grid-template-rows:auto;padding-block-start:1em;padding-block-end:1em}.card-grid.card-grid-layout-scroll{position:relative;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;grid-auto-flow:column;grid-template-columns:repeat(auto-fit,var(--cardWidth));grid-auto-columns:minmax(var(--cardWidth),1fr);padding:1.5em;margin:-.5em -1.5em 0}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-track{margin:0 1.5em}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.1);border-radius:10px;background-color:transparent}.card-grid.card-grid-layout-scroll::-webkit-scrollbar{height:10px;background-color:transparent}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-thumb{max-width:20px;border-radius:10px;background-color:var(--primary)}.card-grid.card-grid-layout-scroll>.card-grid-drag-wrapper{scroll-snap-align:center;scroll-snap-stop:always}.card-grid .card-import-blocked ::ng-deep .card-meta{opacity:.75;text-decoration:line-through}.card-grid>.card-grid-drag-wrapper{position:relative}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container,.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container{position:absolute;z-index:1;inset:0;display:flex;justify-content:center;align-items:center}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container>i,.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container>i{background:radial-gradient(circle,#fff 30%,#fff0 70%);width:200px;height:200px;font-size:80px;display:flex;align-items:center;justify-content:center}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container>i{color:var(--colorStatusPositive)}.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container>i{color:var(--colorStatusNegative)}.card-grid>.card-grid-drag-wrapper .selected-when-dragging{opacity:.5}.card-grid>.card-grid-drag-wrapper.cdk-drop-list-dragging>*:first-child{display:none}.card-grid.card-grid-reorder>.card-grid-order-wrapper{animation-iteration-count:infinite;animation-duration:.5s;animation-name:OrderAnimationCards}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(2n){animation-delay:0s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(odd){animation-delay:-.25s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(3n){animation-delay:-.125s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(5n){animation-delay:-.0625s}.card-grid.card-grid-reorder>.card-grid-order-wrapper .cdk-drag-placeholder{display:none}.card-drag-preview{width:250px}.configure-columns{color:var(--textMediumLight)}::ng-deep .es-card-grid-rearrange-drag-preview.cdk-drag-animating{transition:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i8$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8$1.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i8$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8$1.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: BorderBoxObserverDirective, selector: "[esBorderBoxObserver]", outputs: ["esBorderBoxObserver"], exportAs: ["borderBoxObserver"] }, { kind: "component", type: DropdownComponent, selector: "es-dropdown", inputs: ["position", "options", "callbackObjects", "showDisabled", "menuClass"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[esInfiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollThrottle", "scrollWindow"], outputs: ["scrolled"] }, { kind: "component", type: SpinnerComponent, selector: "es-spinner" }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ColumnChooserComponent, selector: "es-column-chooser", inputs: ["origin", "columnChooserVisible", "columns"], outputs: ["columnChooserVisibleChange", "columnsChange"] }, { kind: "component", type: NodeEntriesCardComponent, selector: "es-node-entries-card", inputs: ["dropdown", "node"] }, { kind: "component", type: NodeEntriesCardSmallComponent, selector: "es-node-entries-card-small", inputs: ["node"] }, { kind: "component", type: SortSelectPanelComponent, selector: "es-sort-select-panel", inputs: ["active", "direction", "columns", "customSortingInProgress"], outputs: ["sortChange", "customSortingInProgressChange"] }, { kind: "directive", type: NodesDragDirective, selector: "[esNodesDrag]" }, { kind: "directive", type: NodesDropTargetDirective, selector: "[esNodesDropTarget]", inputs: ["esNodesDropTarget", "canDropNodes"], outputs: ["nodeDropped"], exportAs: ["esNodesDropTarget"] }, { kind: "component", type: NodeEntriesGlobalOptionsComponent, selector: "es-node-entries-global-options", inputs: ["displayType"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6912
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesCardGridComponent, isStandalone: false, selector: "es-node-entries-card-grid", inputs: { displayType: "displayType" }, host: { properties: { "style.--scroll-gradient-color": "this.scrollGradientColor" } }, viewQueries: [{ propertyName: "columnChooserTrigger", first: true, predicate: ["columnChooserTrigger"], descendants: true }, { propertyName: "gridTop", first: true, predicate: ["gridTop"], descendants: true, static: true }, { propertyName: "sortPanel", first: true, predicate: SortSelectPanelComponent, descendants: true }, { propertyName: "gridRef", first: true, predicate: ["grid"], descendants: true }, { propertyName: "dropListsQuery", predicate: CdkDropList, descendants: true }, { propertyName: "itemRefs", predicate: ["item"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ng-template #gridTop>\n <button\n *ngIf=\"entriesService.configureColumns\"\n class=\"configure-columns\"\n mat-icon-button\n (click)=\"columnChooserVisible$.next(!columnChooserVisible$.value)\"\n cdkOverlayOrigin\n #columnChooserTrigger=\"cdkOverlayOrigin\"\n [matTooltip]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n [attr.aria-label]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n >\n <i esIcon=\"settings\"></i>\n </button>\n <es-sort-select-panel\n *ngIf=\"entriesService.sort?.allowed\"\n class=\"order-panel\"\n [active]=\"entriesService.sort.active\"\n [direction]=\"entriesService.sort.direction\"\n [columns]=\"entriesService.getSortColumns()\"\n (sortChange)=\"onSortChange($event)\"\n [(customSortingInProgress)]=\"entriesService.sort.customSortingInProgress\"\n (customSortingInProgressChange)=\"onCustomSortingInProgressChange()\"\n ></es-sort-select-panel>\n</ng-template>\n<es-column-chooser\n *ngIf=\"entriesService.configureColumns\"\n [(columns)]=\"entriesService.columns\"\n [columnChooserVisible]=\"columnChooserVisible$ | async\"\n [origin]=\"columnChooserTrigger\"\n (columnChooserVisibleChange)=\"columnChooserVisible$.next($event)\"\n></es-column-chooser>\n<es-dropdown #dropdown [options]=\"entriesService.options?.[Target.ListDropdown]\"></es-dropdown>\n\n<!-- Do not render the list element (`role=\"list\"` or `li`) when there are no list items. -->\n<ng-container\n *ngIf=\"(nodes$ | async)?.length > 0 || (entriesService.globalOptionsSubject | async)?.length > 0\"\n>\n <!-- FIXME: Ideally, we would use native `ul` and `li` elements, but these have a strict model,\n that only allows `li` elements as direct children of `ul` elements. So we would need to use the\n native elements at all places without any elements between `ul` and `li`. -->\n <div\n *ngIf=\"entriesService.sort?.customSortingInProgress\"\n role=\"list\"\n class=\"card-grid card-grid-reorder\"\n cdkDropListGroup\n >\n <ng-container *ngIf=\"nodes$ | async as nodes\">\n <div\n class=\"card-grid-order-wrapper\"\n *ngFor=\"let node of nodes; let i = index\"\n role=\"none\"\n cdkDropList\n [cdkDropListConnectedTo]=\"dropLists\"\n [cdkDropListData]=\"i\"\n >\n <es-node-entries-card\n *ngIf=\"displayType === NodeEntriesDisplayType.Grid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragData]=\"i\"\n [cdkDragStartDelay]=\"getDragStartDelay()\"\n cdkDragPreviewClass=\"es-card-grid-rearrange-drag-preview\"\n (cdkDragEntered)=\"onRearrangeDragEntered($event)\"\n (cdkDragStarted)=\"onRearrangeDragStarted()\"\n (cdkDragEnded)=\"onRearrangeDragEnded()\"\n ></es-node-entries-card>\n <es-node-entries-card-small\n *ngIf=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragData]=\"i\"\n [cdkDragStartDelay]=\"getDragStartDelay()\"\n cdkDragPreviewClass=\"es-card-grid-rearrange-drag-preview\"\n (cdkDragEntered)=\"onRearrangeDragEntered($event)\"\n (cdkDragStarted)=\"onRearrangeDragStarted()\"\n (cdkDragEnded)=\"onRearrangeDragEnded()\"\n ></es-node-entries-card-small>\n </div>\n </ng-container>\n </div>\n <div class=\"card-grid-wrapper\" *ngIf=\"!entriesService.sort?.customSortingInProgress\">\n <ng-container *ngTemplateOutlet=\"scrollHelper\"></ng-container>\n <div\n role=\"list\"\n class=\"card-grid card-grid-layout-{{ layout }}\"\n #grid\n (esBorderBoxObserver)=\"onGridSizeChanges()\"\n esInfiniteScroll\n (scroll)=\"updateScrollState()\"\n (scrolled)=\"!visibleItemsLimited && loadData('scroll')\"\n >\n <es-node-entries-global-options\n *ngIf=\"(entriesService.globalOptionsSubject | async)?.length\"\n [displayType]=\"displayType\"\n >\n </es-node-entries-global-options>\n <ng-container *ngIf=\"nodes$ | async as nodes\">\n <div\n class=\"card-grid-drag-wrapper\"\n *ngFor=\"let node of nodes; let i = index\"\n role=\"none\"\n [esNodesDropTarget]=\"node\"\n [canDropNodes]=\"canDropNodes\"\n (nodeDropped)=\"onNodesDropped($event)\"\n #dropTarget=\"esNodesDropTarget\"\n >\n <ng-container *ngIf=\"isCustomTemplate(node)\">\n <ng-container\n *ngTemplateOutlet=\"\n templatesService.customCard || $any(node);\n context: { element: node, options: entriesService.options }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!isCustomTemplate(node)\">\n <es-node-entries-card\n *ngIf=\"displayType === NodeEntriesDisplayType.Grid\"\n #item\n [node]=\"node\"\n [dropdown]=\"dropdown\"\n role=\"listitem\"\n cdkDrag\n [cdkDragDisabled]=\"(getDragEnabled() | async) === false\"\n [cdkDragData]=\"getDragData(node)\"\n esNodesDrag\n (cdkDragStarted)=\"onDragStarted(node)\"\n (cdkDragEnded)=\"onDragEnded()\"\n [class.card-import-blocked]=\"isBlocked(node)\"\n [class.selected-when-dragging]=\"\n isDragging && entriesService.selection.isSelected(node)\n \"\n >\n <ng-container *ngIf=\"entriesService.selection.selected.length > 1\">\n <es-node-entries-card\n *cdkDragPreview\n [node]=\"node\"\n [matBadge]=\"\n entriesService.selection.selected.length > 1\n ? entriesService.selection.selected.length\n : null\n \"\n class=\"card-drag-preview\"\n ></es-node-entries-card>\n </ng-container>\n </es-node-entries-card>\n <es-node-entries-card-small\n *ngIf=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragDisabled]=\"(getDragEnabled() | async) === false\"\n [cdkDragData]=\"[node]\"\n esNodesDrag\n >\n </es-node-entries-card-small>\n </ng-container>\n <div\n *ngIf=\"dropTarget.active?.canDrop?.denyExplicit\"\n class=\"card-grid-drop-blocked-container\"\n >\n <i esIcon=\"cancel\"></i>\n </div>\n <div *ngIf=\"dropTarget.active?.canDrop?.accept\" class=\"card-grid-drop-allowed-container\">\n <i\n [esIcon]=\"dropTarget.active.action === 'copy' ? 'add_circle_outline' : 'archive'\"\n ></i>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container\n *ngIf=\"\n !entriesService.dataSource.isLoading &&\n entriesService.dataSource.hasMore() &&\n !visibleItemsLimited &&\n entriesService.paginationStrategy === 'infinite-scroll' &&\n layout !== 'scroll'\n \"\n>\n <div class=\"load-more\">\n <button mat-button color=\"primary\" (click)=\"loadData('button')\">\n <i esIcon=\"refresh\"></i>\n <span>{{ 'LOAD_MORE' | translate }}</span>\n </button>\n </div>\n</ng-container>\n<ng-container\n *ngIf=\"\n entriesService.dataSource.isLoading === true ||\n entriesService.dataSource.isLoading === 'initial' ||\n (entriesService.dataSource.isLoading === 'page' &&\n entriesService.paginationStrategy === 'infinite-scroll')\n \"\n>\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n</ng-container>\n\n<ng-template #loading>\n <es-spinner></es-spinner>\n</ng-template>\n<ng-template #scrollHelper>\n <ng-container *ngIf=\"layout === 'scroll'\">\n <div\n class=\"scroll-helper-left\"\n role=\"presentation\"\n (click)=\"doScroll('left')\"\n *ngIf=\"scroll.left\"\n >\n <button mat-icon-button color=\"primary\" (click)=\"$event.stopPropagation(); doScroll('left')\">\n <i esIcon=\"keyboard_arrow_left\" [aria]=\"true\"></i>\n </button>\n </div>\n <div\n class=\"scroll-helper-right\"\n role=\"presentation\"\n (click)=\"doScroll('right')\"\n *ngIf=\"scroll.right\"\n >\n <button mat-icon-button color=\"primary\" (click)=\"$event.stopPropagation(); doScroll('right')\">\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"true\"></i>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["@keyframes OrderAnimationCards{0%{transform:rotate(-.25deg)}50%{transform:rotate(.25deg)}to{transform:rotate(-.25deg)}}:host{--scroll-gradient-color: white}.order-panel{margin-left:auto}.load-more{display:flex;justify-content:center}.card-grid-wrapper{position:relative;z-index:0}.card-grid-wrapper .scroll-helper-left,.card-grid-wrapper .scroll-helper-right{position:absolute;width:15%;min-width:60px;max-width:calc(var(--cardWidth) * .4);display:flex;align-items:center;height:calc(100% - 10px);z-index:5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.card-grid-wrapper .scroll-helper-left>button,.card-grid-wrapper .scroll-helper-right>button{background-color:#fff;color:var(--primary);box-shadow:0 0 25px #00000040}.card-grid-wrapper .scroll-helper-left{left:-1.5em;justify-content:flex-start;background:linear-gradient(to left,transparent 0,var(--scroll-gradient-color) calc(100% - 1.5em))}.card-grid-wrapper .scroll-helper-left>button{margin-left:calc(1.5em - 8px)}.card-grid-wrapper .scroll-helper-right{right:-1.5em;justify-content:flex-end;background:linear-gradient(to right,transparent 0,var(--scroll-gradient-color) calc(100% - 1.5em))}.card-grid-wrapper .scroll-helper-right>button{margin-right:calc(1.5em - 8px)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--cardWidth),1fr));grid-column-gap:20px;grid-row-gap:20px;grid-template-rows:auto;padding-block-start:1em;padding-block-end:1em}.card-grid.card-grid-layout-scroll{position:relative;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;grid-auto-flow:column;grid-template-columns:repeat(auto-fit,var(--cardWidth));grid-auto-columns:minmax(var(--cardWidth),1fr);padding:1.5em;margin:-.5em -1.5em 0}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-track{margin:0 1.5em}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.1);border-radius:10px;background-color:transparent}.card-grid.card-grid-layout-scroll::-webkit-scrollbar{height:10px;background-color:transparent}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-thumb{max-width:20px;border-radius:10px;background-color:var(--primary)}.card-grid.card-grid-layout-scroll>.card-grid-drag-wrapper{scroll-snap-align:center;scroll-snap-stop:always}.card-grid .card-import-blocked ::ng-deep .card-meta{opacity:.75;text-decoration:line-through}.card-grid>.card-grid-drag-wrapper{position:relative}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container,.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container{position:absolute;z-index:1;inset:0;display:flex;justify-content:center;align-items:center}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container>i,.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container>i{background:radial-gradient(circle,#fff 30%,#fff0 70%);width:200px;height:200px;font-size:80px;display:flex;align-items:center;justify-content:center}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container>i{color:var(--colorStatusPositive)}.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container>i{color:var(--colorStatusNegative)}.card-grid>.card-grid-drag-wrapper .selected-when-dragging{opacity:.5}.card-grid>.card-grid-drag-wrapper.cdk-drop-list-dragging>*:first-child{display:none}.card-grid.card-grid-reorder>.card-grid-order-wrapper{animation-iteration-count:infinite;animation-duration:.5s;animation-name:OrderAnimationCards}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(2n){animation-delay:0s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(odd){animation-delay:-.25s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(3n){animation-delay:-.125s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(5n){animation-delay:-.0625s}.card-grid.card-grid-reorder>.card-grid-order-wrapper .cdk-drag-placeholder{display:none}.card-drag-preview{width:250px}.configure-columns{color:var(--textMediumLight)}::ng-deep .es-card-grid-rearrange-drag-preview.cdk-drag-animating{transition:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i8.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i8.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: BorderBoxObserverDirective, selector: "[esBorderBoxObserver]", outputs: ["esBorderBoxObserver"], exportAs: ["borderBoxObserver"] }, { kind: "component", type: DropdownComponent, selector: "es-dropdown", inputs: ["position", "options", "callbackObjects", "showDisabled", "menuClass"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[esInfiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollThrottle", "scrollWindow"], outputs: ["scrolled"] }, { kind: "component", type: SpinnerComponent, selector: "es-spinner" }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$3.MatBadge, selector: "[matBadge]", inputs: ["matBadgeColor", "matBadgeOverlap", "matBadgeDisabled", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ColumnChooserComponent, selector: "es-column-chooser", inputs: ["origin", "columnChooserVisible", "columns"], outputs: ["columnChooserVisibleChange", "columnsChange"] }, { kind: "component", type: NodeEntriesCardComponent, selector: "es-node-entries-card", inputs: ["dropdown", "node"] }, { kind: "component", type: NodeEntriesCardSmallComponent, selector: "es-node-entries-card-small", inputs: ["node"] }, { kind: "component", type: SortSelectPanelComponent, selector: "es-sort-select-panel", inputs: ["active", "direction", "columns", "customSortingInProgress"], outputs: ["sortChange", "customSortingInProgressChange"] }, { kind: "directive", type: NodesDragDirective, selector: "[esNodesDrag]" }, { kind: "directive", type: NodesDropTargetDirective, selector: "[esNodesDropTarget]", inputs: ["esNodesDropTarget", "canDropNodes"], outputs: ["nodeDropped"], exportAs: ["esNodesDropTarget"] }, { kind: "component", type: NodeEntriesGlobalOptionsComponent, selector: "es-node-entries-global-options", inputs: ["displayType"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6858
6913
|
}
|
|
6859
6914
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesCardGridComponent, decorators: [{
|
|
6860
6915
|
type: Component,
|
|
6861
|
-
args: [{ selector: 'es-node-entries-card-grid', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-template #gridTop>\n <button\n *ngIf=\"entriesService.configureColumns\"\n class=\"configure-columns\"\n mat-icon-button\n (click)=\"columnChooserVisible$.next(!columnChooserVisible$.value)\"\n cdkOverlayOrigin\n #columnChooserTrigger=\"cdkOverlayOrigin\"\n [matTooltip]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n [attr.aria-label]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n >\n <i esIcon=\"settings\"></i>\n </button>\n <es-sort-select-panel\n *ngIf=\"entriesService.sort?.allowed\"\n class=\"order-panel\"\n [active]=\"entriesService.sort.active\"\n [direction]=\"entriesService.sort.direction\"\n [columns]=\"getSortColumns()\"\n (sortChange)=\"onSortChange($event)\"\n [(customSortingInProgress)]=\"entriesService.sort.customSortingInProgress\"\n (customSortingInProgressChange)=\"onCustomSortingInProgressChange()\"\n ></es-sort-select-panel>\n</ng-template>\n<es-column-chooser\n *ngIf=\"entriesService.configureColumns\"\n [(columns)]=\"entriesService.columns\"\n [columnChooserVisible]=\"columnChooserVisible$ | async\"\n [origin]=\"columnChooserTrigger\"\n (columnChooserVisibleChange)=\"columnChooserVisible$.next($event)\"\n></es-column-chooser>\n<es-dropdown #dropdown [options]=\"entriesService.options?.[Target.ListDropdown]\"></es-dropdown>\n\n<!-- Do not render the list element (`role=\"list\"` or `li`) when there are no list items. -->\n<ng-container\n *ngIf=\"(nodes$ | async)?.length > 0 || (entriesService.globalOptionsSubject | async)?.length > 0\"\n>\n <!-- FIXME: Ideally, we would use native `ul` and `li` elements, but these have a strict model,\n that only allows `li` elements as direct children of `ul` elements. So we would need to use the\n native elements at all places without any elements between `ul` and `li`. -->\n <div\n *ngIf=\"entriesService.sort?.customSortingInProgress\"\n role=\"list\"\n class=\"card-grid card-grid-reorder\"\n cdkDropListGroup\n >\n <ng-container *ngIf=\"nodes$ | async as nodes\">\n <div\n class=\"card-grid-order-wrapper\"\n *ngFor=\"let node of nodes; let i = index\"\n role=\"none\"\n cdkDropList\n [cdkDropListConnectedTo]=\"dropLists\"\n [cdkDropListData]=\"i\"\n >\n <es-node-entries-card\n *ngIf=\"displayType === NodeEntriesDisplayType.Grid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragData]=\"i\"\n [cdkDragStartDelay]=\"getDragStartDelay()\"\n cdkDragPreviewClass=\"es-card-grid-rearrange-drag-preview\"\n (cdkDragEntered)=\"onRearrangeDragEntered($event)\"\n (cdkDragStarted)=\"onRearrangeDragStarted()\"\n (cdkDragEnded)=\"onRearrangeDragEnded()\"\n ></es-node-entries-card>\n <es-node-entries-card-small\n *ngIf=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragData]=\"i\"\n [cdkDragStartDelay]=\"getDragStartDelay()\"\n cdkDragPreviewClass=\"es-card-grid-rearrange-drag-preview\"\n (cdkDragEntered)=\"onRearrangeDragEntered($event)\"\n (cdkDragStarted)=\"onRearrangeDragStarted()\"\n (cdkDragEnded)=\"onRearrangeDragEnded()\"\n ></es-node-entries-card-small>\n </div>\n </ng-container>\n </div>\n <div class=\"card-grid-wrapper\" *ngIf=\"!entriesService.sort?.customSortingInProgress\">\n <ng-container *ngTemplateOutlet=\"scrollHelper\"></ng-container>\n <div\n role=\"list\"\n class=\"card-grid card-grid-layout-{{ layout }}\"\n #grid\n (esBorderBoxObserver)=\"onGridSizeChanges()\"\n esInfiniteScroll\n (scroll)=\"updateScrollState()\"\n (scrolled)=\"!visibleItemsLimited && loadData('scroll')\"\n >\n <es-node-entries-global-options\n *ngIf=\"(entriesService.globalOptionsSubject | async)?.length\"\n [displayType]=\"displayType\"\n >\n </es-node-entries-global-options>\n <ng-container *ngIf=\"nodes$ | async as nodes\">\n <div\n class=\"card-grid-drag-wrapper\"\n *ngFor=\"let node of nodes; let i = index\"\n role=\"none\"\n [esNodesDropTarget]=\"node\"\n [canDropNodes]=\"canDropNodes\"\n (nodeDropped)=\"onNodesDropped($event)\"\n #dropTarget=\"esNodesDropTarget\"\n >\n <ng-container *ngIf=\"isCustomTemplate(node)\">\n <ng-container\n *ngTemplateOutlet=\"\n templatesService.customCard || $any(node);\n context: { element: node, options: entriesService.options }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!isCustomTemplate(node)\">\n <es-node-entries-card\n *ngIf=\"displayType === NodeEntriesDisplayType.Grid\"\n #item\n [node]=\"node\"\n [dropdown]=\"dropdown\"\n role=\"listitem\"\n cdkDrag\n [cdkDragDisabled]=\"(getDragEnabled() | async) === false\"\n [cdkDragData]=\"getDragData(node)\"\n esNodesDrag\n (cdkDragStarted)=\"onDragStarted(node)\"\n (cdkDragEnded)=\"onDragEnded()\"\n [class.card-import-blocked]=\"isBlocked(node)\"\n [class.selected-when-dragging]=\"\n isDragging && entriesService.selection.isSelected(node)\n \"\n >\n <ng-container *ngIf=\"entriesService.selection.selected.length > 1\">\n <es-node-entries-card\n *cdkDragPreview\n [node]=\"node\"\n [matBadge]=\"\n entriesService.selection.selected.length > 1\n ? entriesService.selection.selected.length\n : null\n \"\n class=\"card-drag-preview\"\n ></es-node-entries-card>\n </ng-container>\n </es-node-entries-card>\n <es-node-entries-card-small\n *ngIf=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragDisabled]=\"(getDragEnabled() | async) === false\"\n [cdkDragData]=\"[node]\"\n esNodesDrag\n >\n </es-node-entries-card-small>\n </ng-container>\n <div\n *ngIf=\"dropTarget.active?.canDrop?.denyExplicit\"\n class=\"card-grid-drop-blocked-container\"\n >\n <i esIcon=\"cancel\"></i>\n </div>\n <div *ngIf=\"dropTarget.active?.canDrop?.accept\" class=\"card-grid-drop-allowed-container\">\n <i\n [esIcon]=\"dropTarget.active.action === 'copy' ? 'add_circle_outline' : 'archive'\"\n ></i>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container\n *ngIf=\"\n !entriesService.dataSource.isLoading &&\n entriesService.dataSource.hasMore() &&\n !visibleItemsLimited &&\n entriesService.paginationStrategy === 'infinite-scroll' &&\n layout !== 'scroll'\n \"\n>\n <div class=\"load-more\">\n <button mat-button color=\"primary\" (click)=\"loadData('button')\">\n <i esIcon=\"refresh\"></i>\n <span>{{ 'LOAD_MORE' | translate }}</span>\n </button>\n </div>\n</ng-container>\n<ng-container\n *ngIf=\"\n entriesService.dataSource.isLoading === true ||\n entriesService.dataSource.isLoading === 'initial' ||\n (entriesService.dataSource.isLoading === 'page' &&\n entriesService.paginationStrategy === 'infinite-scroll')\n \"\n>\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n</ng-container>\n\n<ng-template #loading>\n <es-spinner></es-spinner>\n</ng-template>\n<ng-template #scrollHelper>\n <ng-container *ngIf=\"layout === 'scroll'\">\n <div\n class=\"scroll-helper-left\"\n role=\"presentation\"\n (click)=\"doScroll('left')\"\n *ngIf=\"scroll.left\"\n >\n <button mat-icon-button color=\"primary\" (click)=\"$event.stopPropagation(); doScroll('left')\">\n <i esIcon=\"keyboard_arrow_left\" [aria]=\"true\"></i>\n </button>\n </div>\n <div\n class=\"scroll-helper-right\"\n role=\"presentation\"\n (click)=\"doScroll('right')\"\n *ngIf=\"scroll.right\"\n >\n <button mat-icon-button color=\"primary\" (click)=\"$event.stopPropagation(); doScroll('right')\">\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"true\"></i>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["@keyframes OrderAnimationCards{0%{transform:rotate(-.25deg)}50%{transform:rotate(.25deg)}to{transform:rotate(-.25deg)}}:host{--scroll-gradient-color: white}.order-panel{margin-left:auto}.load-more{display:flex;justify-content:center}.card-grid-wrapper{position:relative;z-index:0}.card-grid-wrapper .scroll-helper-left,.card-grid-wrapper .scroll-helper-right{position:absolute;width:15%;min-width:60px;max-width:calc(var(--cardWidth) * .4);display:flex;align-items:center;height:calc(100% - 10px);z-index:5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.card-grid-wrapper .scroll-helper-left>button,.card-grid-wrapper .scroll-helper-right>button{background-color:#fff;color:var(--primary);box-shadow:0 0 25px #00000040}.card-grid-wrapper .scroll-helper-left{left:-1.5em;justify-content:flex-start;background:linear-gradient(to left,transparent 0,var(--scroll-gradient-color) calc(100% - 1.5em))}.card-grid-wrapper .scroll-helper-left>button{margin-left:calc(1.5em - 8px)}.card-grid-wrapper .scroll-helper-right{right:-1.5em;justify-content:flex-end;background:linear-gradient(to right,transparent 0,var(--scroll-gradient-color) calc(100% - 1.5em))}.card-grid-wrapper .scroll-helper-right>button{margin-right:calc(1.5em - 8px)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--cardWidth),1fr));grid-column-gap:20px;grid-row-gap:20px;grid-template-rows:auto;padding-block-start:1em;padding-block-end:1em}.card-grid.card-grid-layout-scroll{position:relative;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;grid-auto-flow:column;grid-template-columns:repeat(auto-fit,var(--cardWidth));grid-auto-columns:minmax(var(--cardWidth),1fr);padding:1.5em;margin:-.5em -1.5em 0}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-track{margin:0 1.5em}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.1);border-radius:10px;background-color:transparent}.card-grid.card-grid-layout-scroll::-webkit-scrollbar{height:10px;background-color:transparent}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-thumb{max-width:20px;border-radius:10px;background-color:var(--primary)}.card-grid.card-grid-layout-scroll>.card-grid-drag-wrapper{scroll-snap-align:center;scroll-snap-stop:always}.card-grid .card-import-blocked ::ng-deep .card-meta{opacity:.75;text-decoration:line-through}.card-grid>.card-grid-drag-wrapper{position:relative}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container,.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container{position:absolute;z-index:1;inset:0;display:flex;justify-content:center;align-items:center}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container>i,.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container>i{background:radial-gradient(circle,#fff 30%,#fff0 70%);width:200px;height:200px;font-size:80px;display:flex;align-items:center;justify-content:center}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container>i{color:var(--colorStatusPositive)}.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container>i{color:var(--colorStatusNegative)}.card-grid>.card-grid-drag-wrapper .selected-when-dragging{opacity:.5}.card-grid>.card-grid-drag-wrapper.cdk-drop-list-dragging>*:first-child{display:none}.card-grid.card-grid-reorder>.card-grid-order-wrapper{animation-iteration-count:infinite;animation-duration:.5s;animation-name:OrderAnimationCards}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(2n){animation-delay:0s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(odd){animation-delay:-.25s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(3n){animation-delay:-.125s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(5n){animation-delay:-.0625s}.card-grid.card-grid-reorder>.card-grid-order-wrapper .cdk-drag-placeholder{display:none}.card-drag-preview{width:250px}.configure-columns{color:var(--textMediumLight)}::ng-deep .es-card-grid-rearrange-drag-preview.cdk-drag-animating{transition:none}\n"] }]
|
|
6916
|
+
args: [{ selector: 'es-node-entries-card-grid', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-template #gridTop>\n <button\n *ngIf=\"entriesService.configureColumns\"\n class=\"configure-columns\"\n mat-icon-button\n (click)=\"columnChooserVisible$.next(!columnChooserVisible$.value)\"\n cdkOverlayOrigin\n #columnChooserTrigger=\"cdkOverlayOrigin\"\n [matTooltip]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n [attr.aria-label]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n >\n <i esIcon=\"settings\"></i>\n </button>\n <es-sort-select-panel\n *ngIf=\"entriesService.sort?.allowed\"\n class=\"order-panel\"\n [active]=\"entriesService.sort.active\"\n [direction]=\"entriesService.sort.direction\"\n [columns]=\"entriesService.getSortColumns()\"\n (sortChange)=\"onSortChange($event)\"\n [(customSortingInProgress)]=\"entriesService.sort.customSortingInProgress\"\n (customSortingInProgressChange)=\"onCustomSortingInProgressChange()\"\n ></es-sort-select-panel>\n</ng-template>\n<es-column-chooser\n *ngIf=\"entriesService.configureColumns\"\n [(columns)]=\"entriesService.columns\"\n [columnChooserVisible]=\"columnChooserVisible$ | async\"\n [origin]=\"columnChooserTrigger\"\n (columnChooserVisibleChange)=\"columnChooserVisible$.next($event)\"\n></es-column-chooser>\n<es-dropdown #dropdown [options]=\"entriesService.options?.[Target.ListDropdown]\"></es-dropdown>\n\n<!-- Do not render the list element (`role=\"list\"` or `li`) when there are no list items. -->\n<ng-container\n *ngIf=\"(nodes$ | async)?.length > 0 || (entriesService.globalOptionsSubject | async)?.length > 0\"\n>\n <!-- FIXME: Ideally, we would use native `ul` and `li` elements, but these have a strict model,\n that only allows `li` elements as direct children of `ul` elements. So we would need to use the\n native elements at all places without any elements between `ul` and `li`. -->\n <div\n *ngIf=\"entriesService.sort?.customSortingInProgress\"\n role=\"list\"\n class=\"card-grid card-grid-reorder\"\n cdkDropListGroup\n >\n <ng-container *ngIf=\"nodes$ | async as nodes\">\n <div\n class=\"card-grid-order-wrapper\"\n *ngFor=\"let node of nodes; let i = index\"\n role=\"none\"\n cdkDropList\n [cdkDropListConnectedTo]=\"dropLists\"\n [cdkDropListData]=\"i\"\n >\n <es-node-entries-card\n *ngIf=\"displayType === NodeEntriesDisplayType.Grid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragData]=\"i\"\n [cdkDragStartDelay]=\"getDragStartDelay()\"\n cdkDragPreviewClass=\"es-card-grid-rearrange-drag-preview\"\n (cdkDragEntered)=\"onRearrangeDragEntered($event)\"\n (cdkDragStarted)=\"onRearrangeDragStarted()\"\n (cdkDragEnded)=\"onRearrangeDragEnded()\"\n ></es-node-entries-card>\n <es-node-entries-card-small\n *ngIf=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragData]=\"i\"\n [cdkDragStartDelay]=\"getDragStartDelay()\"\n cdkDragPreviewClass=\"es-card-grid-rearrange-drag-preview\"\n (cdkDragEntered)=\"onRearrangeDragEntered($event)\"\n (cdkDragStarted)=\"onRearrangeDragStarted()\"\n (cdkDragEnded)=\"onRearrangeDragEnded()\"\n ></es-node-entries-card-small>\n </div>\n </ng-container>\n </div>\n <div class=\"card-grid-wrapper\" *ngIf=\"!entriesService.sort?.customSortingInProgress\">\n <ng-container *ngTemplateOutlet=\"scrollHelper\"></ng-container>\n <div\n role=\"list\"\n class=\"card-grid card-grid-layout-{{ layout }}\"\n #grid\n (esBorderBoxObserver)=\"onGridSizeChanges()\"\n esInfiniteScroll\n (scroll)=\"updateScrollState()\"\n (scrolled)=\"!visibleItemsLimited && loadData('scroll')\"\n >\n <es-node-entries-global-options\n *ngIf=\"(entriesService.globalOptionsSubject | async)?.length\"\n [displayType]=\"displayType\"\n >\n </es-node-entries-global-options>\n <ng-container *ngIf=\"nodes$ | async as nodes\">\n <div\n class=\"card-grid-drag-wrapper\"\n *ngFor=\"let node of nodes; let i = index\"\n role=\"none\"\n [esNodesDropTarget]=\"node\"\n [canDropNodes]=\"canDropNodes\"\n (nodeDropped)=\"onNodesDropped($event)\"\n #dropTarget=\"esNodesDropTarget\"\n >\n <ng-container *ngIf=\"isCustomTemplate(node)\">\n <ng-container\n *ngTemplateOutlet=\"\n templatesService.customCard || $any(node);\n context: { element: node, options: entriesService.options }\n \"\n ></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!isCustomTemplate(node)\">\n <es-node-entries-card\n *ngIf=\"displayType === NodeEntriesDisplayType.Grid\"\n #item\n [node]=\"node\"\n [dropdown]=\"dropdown\"\n role=\"listitem\"\n cdkDrag\n [cdkDragDisabled]=\"(getDragEnabled() | async) === false\"\n [cdkDragData]=\"getDragData(node)\"\n esNodesDrag\n (cdkDragStarted)=\"onDragStarted(node)\"\n (cdkDragEnded)=\"onDragEnded()\"\n [class.card-import-blocked]=\"isBlocked(node)\"\n [class.selected-when-dragging]=\"\n isDragging && entriesService.selection.isSelected(node)\n \"\n >\n <ng-container *ngIf=\"entriesService.selection.selected.length > 1\">\n <es-node-entries-card\n *cdkDragPreview\n [node]=\"node\"\n [matBadge]=\"\n entriesService.selection.selected.length > 1\n ? entriesService.selection.selected.length\n : null\n \"\n class=\"card-drag-preview\"\n ></es-node-entries-card>\n </ng-container>\n </es-node-entries-card>\n <es-node-entries-card-small\n *ngIf=\"displayType === NodeEntriesDisplayType.SmallGrid\"\n #item\n [node]=\"node\"\n role=\"listitem\"\n cdkDrag\n [cdkDragDisabled]=\"(getDragEnabled() | async) === false\"\n [cdkDragData]=\"[node]\"\n esNodesDrag\n >\n </es-node-entries-card-small>\n </ng-container>\n <div\n *ngIf=\"dropTarget.active?.canDrop?.denyExplicit\"\n class=\"card-grid-drop-blocked-container\"\n >\n <i esIcon=\"cancel\"></i>\n </div>\n <div *ngIf=\"dropTarget.active?.canDrop?.accept\" class=\"card-grid-drop-allowed-container\">\n <i\n [esIcon]=\"dropTarget.active.action === 'copy' ? 'add_circle_outline' : 'archive'\"\n ></i>\n </div>\n </div>\n </ng-container>\n </div>\n </div>\n</ng-container>\n<ng-container\n *ngIf=\"\n !entriesService.dataSource.isLoading &&\n entriesService.dataSource.hasMore() &&\n !visibleItemsLimited &&\n entriesService.paginationStrategy === 'infinite-scroll' &&\n layout !== 'scroll'\n \"\n>\n <div class=\"load-more\">\n <button mat-button color=\"primary\" (click)=\"loadData('button')\">\n <i esIcon=\"refresh\"></i>\n <span>{{ 'LOAD_MORE' | translate }}</span>\n </button>\n </div>\n</ng-container>\n<ng-container\n *ngIf=\"\n entriesService.dataSource.isLoading === true ||\n entriesService.dataSource.isLoading === 'initial' ||\n (entriesService.dataSource.isLoading === 'page' &&\n entriesService.paginationStrategy === 'infinite-scroll')\n \"\n>\n <ng-container *ngTemplateOutlet=\"loading\"></ng-container>\n</ng-container>\n\n<ng-template #loading>\n <es-spinner></es-spinner>\n</ng-template>\n<ng-template #scrollHelper>\n <ng-container *ngIf=\"layout === 'scroll'\">\n <div\n class=\"scroll-helper-left\"\n role=\"presentation\"\n (click)=\"doScroll('left')\"\n *ngIf=\"scroll.left\"\n >\n <button mat-icon-button color=\"primary\" (click)=\"$event.stopPropagation(); doScroll('left')\">\n <i esIcon=\"keyboard_arrow_left\" [aria]=\"true\"></i>\n </button>\n </div>\n <div\n class=\"scroll-helper-right\"\n role=\"presentation\"\n (click)=\"doScroll('right')\"\n *ngIf=\"scroll.right\"\n >\n <button mat-icon-button color=\"primary\" (click)=\"$event.stopPropagation(); doScroll('right')\">\n <i esIcon=\"keyboard_arrow_right\" [aria]=\"true\"></i>\n </button>\n </div>\n </ng-container>\n</ng-template>\n", styles: ["@keyframes OrderAnimationCards{0%{transform:rotate(-.25deg)}50%{transform:rotate(.25deg)}to{transform:rotate(-.25deg)}}:host{--scroll-gradient-color: white}.order-panel{margin-left:auto}.load-more{display:flex;justify-content:center}.card-grid-wrapper{position:relative;z-index:0}.card-grid-wrapper .scroll-helper-left,.card-grid-wrapper .scroll-helper-right{position:absolute;width:15%;min-width:60px;max-width:calc(var(--cardWidth) * .4);display:flex;align-items:center;height:calc(100% - 10px);z-index:5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.card-grid-wrapper .scroll-helper-left>button,.card-grid-wrapper .scroll-helper-right>button{background-color:#fff;color:var(--primary);box-shadow:0 0 25px #00000040}.card-grid-wrapper .scroll-helper-left{left:-1.5em;justify-content:flex-start;background:linear-gradient(to left,transparent 0,var(--scroll-gradient-color) calc(100% - 1.5em))}.card-grid-wrapper .scroll-helper-left>button{margin-left:calc(1.5em - 8px)}.card-grid-wrapper .scroll-helper-right{right:-1.5em;justify-content:flex-end;background:linear-gradient(to right,transparent 0,var(--scroll-gradient-color) calc(100% - 1.5em))}.card-grid-wrapper .scroll-helper-right>button{margin-right:calc(1.5em - 8px)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--cardWidth),1fr));grid-column-gap:20px;grid-row-gap:20px;grid-template-rows:auto;padding-block-start:1em;padding-block-end:1em}.card-grid.card-grid-layout-scroll{position:relative;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;grid-auto-flow:column;grid-template-columns:repeat(auto-fit,var(--cardWidth));grid-auto-columns:minmax(var(--cardWidth),1fr);padding:1.5em;margin:-.5em -1.5em 0}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-track{margin:0 1.5em}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.1);border-radius:10px;background-color:transparent}.card-grid.card-grid-layout-scroll::-webkit-scrollbar{height:10px;background-color:transparent}.card-grid.card-grid-layout-scroll::-webkit-scrollbar-thumb{max-width:20px;border-radius:10px;background-color:var(--primary)}.card-grid.card-grid-layout-scroll>.card-grid-drag-wrapper{scroll-snap-align:center;scroll-snap-stop:always}.card-grid .card-import-blocked ::ng-deep .card-meta{opacity:.75;text-decoration:line-through}.card-grid>.card-grid-drag-wrapper{position:relative}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container,.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container{position:absolute;z-index:1;inset:0;display:flex;justify-content:center;align-items:center}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container>i,.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container>i{background:radial-gradient(circle,#fff 30%,#fff0 70%);width:200px;height:200px;font-size:80px;display:flex;align-items:center;justify-content:center}.card-grid>.card-grid-drag-wrapper .card-grid-drop-allowed-container>i{color:var(--colorStatusPositive)}.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.card-grid>.card-grid-drag-wrapper .card-grid-drop-blocked-container>i{color:var(--colorStatusNegative)}.card-grid>.card-grid-drag-wrapper .selected-when-dragging{opacity:.5}.card-grid>.card-grid-drag-wrapper.cdk-drop-list-dragging>*:first-child{display:none}.card-grid.card-grid-reorder>.card-grid-order-wrapper{animation-iteration-count:infinite;animation-duration:.5s;animation-name:OrderAnimationCards}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(2n){animation-delay:0s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(odd){animation-delay:-.25s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(3n){animation-delay:-.125s}.card-grid.card-grid-reorder>.card-grid-order-wrapper:nth-of-type(5n){animation-delay:-.0625s}.card-grid.card-grid-reorder>.card-grid-order-wrapper .cdk-drag-placeholder{display:none}.card-drag-preview{width:250px}.configure-columns{color:var(--textMediumLight)}::ng-deep .es-card-grid-rearrange-drag-preview.cdk-drag-animating{transition:none}\n"] }]
|
|
6862
6917
|
}], ctorParameters: () => [{ type: NodeEntriesService }, { type: NodeEntriesGlobalService }, { type: NodeEntriesTemplatesService }, { type: NodeHelperService }, { type: UIService }, { type: i0.NgZone }], propDecorators: { columnChooserTrigger: [{
|
|
6863
6918
|
type: ViewChild,
|
|
6864
6919
|
args: ['columnChooserTrigger']
|
|
@@ -6885,11 +6940,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
6885
6940
|
}] } });
|
|
6886
6941
|
|
|
6887
6942
|
class NodeEntriesTableComponent {
|
|
6888
|
-
|
|
6943
|
+
set gridTop(value) {
|
|
6944
|
+
this.registerGridTop(value);
|
|
6945
|
+
}
|
|
6946
|
+
constructor(entriesService, entriesGlobalService, applicationRef, toast, templatesService, translations, nodeHelperService, changeDetectorRef, ui, ngZone, elementRef) {
|
|
6889
6947
|
this.entriesService = entriesService;
|
|
6890
6948
|
this.entriesGlobalService = entriesGlobalService;
|
|
6891
6949
|
this.applicationRef = applicationRef;
|
|
6892
6950
|
this.toast = toast;
|
|
6951
|
+
this.templatesService = templatesService;
|
|
6893
6952
|
this.translations = translations;
|
|
6894
6953
|
this.nodeHelperService = nodeHelperService;
|
|
6895
6954
|
this.changeDetectorRef = changeDetectorRef;
|
|
@@ -6908,6 +6967,7 @@ class NodeEntriesTableComponent {
|
|
|
6908
6967
|
this.pageSizeOptions = [25, 50, 100];
|
|
6909
6968
|
this.isDragging = false;
|
|
6910
6969
|
this.maximumColumnsNumber$ = new BehaviorSubject(1);
|
|
6970
|
+
this.hasHiddenSortColumns$ = new BehaviorSubject(false);
|
|
6911
6971
|
this.destroyed = new Subject();
|
|
6912
6972
|
this.containerWidth$ = new BehaviorSubject(null);
|
|
6913
6973
|
this.canDrop = (dragData) => {
|
|
@@ -6966,11 +7026,11 @@ class NodeEntriesTableComponent {
|
|
|
6966
7026
|
}
|
|
6967
7027
|
this.entriesService.openDropdown(this.dropdown, node, () => this.menuTrigger.openMenu());
|
|
6968
7028
|
}
|
|
6969
|
-
updateSort() {
|
|
7029
|
+
updateSort(disableClear = false) {
|
|
6970
7030
|
this.sort.sort({
|
|
6971
7031
|
id: this.entriesService.sort?.active,
|
|
6972
7032
|
start: this.entriesService.sort?.direction,
|
|
6973
|
-
disableClear
|
|
7033
|
+
disableClear,
|
|
6974
7034
|
});
|
|
6975
7035
|
/*
|
|
6976
7036
|
this.route.queryParams.pipe(first()).subscribe((queryParams: Params) => {
|
|
@@ -7012,10 +7072,12 @@ class NodeEntriesTableComponent {
|
|
|
7012
7072
|
this.maximumColumnsNumber$,
|
|
7013
7073
|
this.entriesService.columnsSubject.pipe(map((c) => c?.columns)),
|
|
7014
7074
|
])
|
|
7015
|
-
.pipe(map(([maximumColumnsNumber, columns]) =>
|
|
7016
|
-
|
|
7017
|
-
|
|
7018
|
-
|
|
7075
|
+
.pipe(map(([maximumColumnsNumber, columns]) => (columns ?? [])
|
|
7076
|
+
.filter((column) => column.visible)
|
|
7077
|
+
.filter((_, index) => index < maximumColumnsNumber)), tap((columns) => {
|
|
7078
|
+
this.hasHiddenSortColumns$.next(this.entriesService
|
|
7079
|
+
.getSortColumns()
|
|
7080
|
+
?.some((c) => !columns?.some((c2) => c2.name === c.name)));
|
|
7019
7081
|
}), shareReplay(1));
|
|
7020
7082
|
}
|
|
7021
7083
|
getVisibleColumnNames() {
|
|
@@ -7041,6 +7103,18 @@ class NodeEntriesTableComponent {
|
|
|
7041
7103
|
this.entriesService.selection.clear();
|
|
7042
7104
|
}
|
|
7043
7105
|
}
|
|
7106
|
+
registerGridTop(gridTop) {
|
|
7107
|
+
setTimeout(() => {
|
|
7108
|
+
this.templatesService.entriesTopMatter = gridTop;
|
|
7109
|
+
});
|
|
7110
|
+
this.destroyed.subscribe(() => {
|
|
7111
|
+
if (this.templatesService.entriesTopMatter === gridTop) {
|
|
7112
|
+
setTimeout(() => {
|
|
7113
|
+
this.templatesService.entriesTopMatter = null;
|
|
7114
|
+
});
|
|
7115
|
+
}
|
|
7116
|
+
});
|
|
7117
|
+
}
|
|
7044
7118
|
registerSortChanges() {
|
|
7045
7119
|
this.sort.sortChange.subscribe((sort) => {
|
|
7046
7120
|
this.entriesService.sort.active = sort.active;
|
|
@@ -7108,13 +7182,22 @@ class NodeEntriesTableComponent {
|
|
|
7108
7182
|
return (node.properties?.[RestConstants.CCM_PROP_IMPORT_BLOCKED]?.[0] === 'true' ||
|
|
7109
7183
|
this.nodeHelperService.isNodeRevoked(node));
|
|
7110
7184
|
}
|
|
7111
|
-
|
|
7112
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesTableComponent, isStandalone: false, selector: "es-node-entries-table", host: { properties: { "class.scroll": "this.isScroll" } }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "columnChooserTrigger", first: true, predicate: ["columnChooserTrigger"], descendants: true }, { propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<es-dropdown #dropdown [options]=\"entriesService.options?.[Target.ListDropdown]\"></es-dropdown>\n<button\n #menuTrigger=\"matMenuTrigger\"\n mat-button\n class=\"dropdown-dummy cdk-visually-hidden\"\n [style.left.px]=\"dropdownLeft\"\n [style.top.px]=\"dropdownTop\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n></button>\n<es-node-entries-global-options\n *ngIf=\"(entriesService.globalOptionsSubject | async)?.length\"\n [displayType]=\"NodeEntriesDisplayType.Table\"\n>\n</es-node-entries-global-options>\n<mat-table\n [dataSource]=\"entriesService.dataSource\"\n matSort\n [matSortDisableClear]=\"true\"\n [matSortActive]=\"entriesService.sort?.active\"\n [matSortDirection]=\"entriesService.sort?.direction\"\n esInfiniteScroll\n (scrolled)=\"loadData('scroll')\"\n>\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\" [sticky]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [ngModel]=\"entriesService.selection.selected.length > 0\"\n [indeterminate]=\"\n entriesService.selection.selected.length > 0 &&\n entriesService.selection.selected.length !== entriesService.dataSource.getData().length\n \"\n (ngModelChange)=\"toggleAll($event)\"\n color=\"primary\"\n aria-label=\"{{ 'LIST_TABLE.TOGGLE_ALL' | translate }}\"\n ></mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\">\n <mat-checkbox\n [checked]=\"entriesService.selection.isSelected(node)\"\n (change)=\"entriesService.onCheckboxChanged(node, $event.checked)\"\n aria-label=\"{{ 'SELECT' | translate : { element: (node | nodeTitle) } }}\"\n color=\"primary\"\n ></mat-checkbox>\n </mat-cell>\n </ng-container>\n <div matColumnDef=\"icon\" [sticky]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef class=\"cell-icon cell-count\">\n ({{ entriesService.selection.selected.length\n }}<ng-container *ngIf=\"entriesService.dataSource?.getTotal() !== undefined\">\n / {{ entriesService.dataSource?.getTotal() }}</ng-container\n >)\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\" class=\"cell-icon\">\n <ng-container\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n >\n <ng-container *ngTemplateOutlet=\"icon; context: { node: node }\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\"\n (click)=\"\n entriesService.onClicked({ event: $event, element: node, source: ClickSource.Icon })\n \"\n (dblclick)=\"entriesService.dblClickItem.emit({ element: node, source: ClickSource.Icon })\"\n >\n <ng-container\n *ngTemplateOutlet=\"icon; context: { node: node }\"\n (click)=\"\n entriesService.onClicked({ event: $event, element: node, source: ClickSource.Icon })\n \"\n (dblclick)=\"entriesService.dblClickItem.emit({ element: node, source: ClickSource.Icon })\"\n ></ng-container>\n </div>\n </mat-cell>\n </div>\n <ng-container matColumnDef=\"actions\" [stickyEnd]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef>\n <button\n *ngIf=\"entriesService.configureColumns\"\n mat-icon-button\n (click)=\"columnChooserVisible = !columnChooserVisible\"\n cdkOverlayOrigin\n #columnChooserTrigger=\"cdkOverlayOrigin\"\n [matTooltip]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n [attr.aria-label]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n >\n <i esIcon=\"settings\"></i>\n </button>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\">\n <button\n mat-icon-button\n *ngIf=\"entriesService.options?.[Target.List]?.length\"\n color=\"primary\"\n (click)=\"openMenu(node)\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n >\n <i esIcon=\"more_vert\" [aria]=\"true\"></i>\n </button>\n </mat-cell>\n </ng-container>\n <!-- Data Columns -->\n <ng-container\n *ngFor=\"let column of visibleDataColumns$ | async; let first = first\"\n [matColumnDef]=\"column.name\"\n [sticky]=\"first && isScroll\"\n >\n <ng-container>\n <mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(entriesService.sort?.allowed && isSortable(column))\"\n [class.mat-column-primary]=\"first\"\n [style.min-width]=\"first ? (containerWidth$ | async) / 3 + 'px' : null\"\n >{{ column | esListItemLabel | async }}</mat-header-cell\n >\n </ng-container>\n <mat-cell\n *matCellDef=\"let node\"\n #cell\n [class.mat-column-primary]=\"first\"\n [style.min-width]=\"first ? (containerWidth$ | async) / 3 + 'px' : null\"\n attr.data-test=\"table-cell-{{ column.name }}\"\n >\n <ng-container\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n >\n <es-node-url cdkMonitorSubtreeFocus [node]=\"node\" [mode]=\"first ? 'link' : 'wrapper'\">\n <es-list-base\n [forceText]=\"true\"\n [node]=\"node\"\n [item]=\"column\"\n esCheckTextOverflow\n #text=\"esCheckTextOverflow\"\n [matTooltip]=\"text.hasTextOverflow() ? cell.innerText : null\"\n matTooltipTouchGestures=\"off\"\n ></es-list-base>\n </es-node-url>\n </ng-container>\n <es-list-base\n *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\"\n [forceText]=\"true\"\n [node]=\"node\"\n [item]=\"column\"\n (click)=\"\n entriesService.onClicked({\n event: $event,\n element: node,\n source: ClickSource.Metadata,\n attribute: column,\n })\n \"\n (dblclick)=\"\n entriesService.dblClickItem.emit({\n element: node,\n source: ClickSource.Metadata,\n attribute: column,\n })\n \"\n ></es-list-base>\n <ng-container *ngIf=\"first\">\n <div class=\"childobjects\" *ngIf=\"node.properties?.['virtual:childobjectcount'] > 0\">\n <div\n class=\"childobject-count\"\n matTooltip=\"{{\n 'CHILDOBJECT_COUNT'\n | translate : { count: node.properties['virtual:childobjectcount'] * 1 + 1 }\n }}\"\n >\n <span>{{ node.properties['virtual:childobjectcount'] * 1 + 1 }}</span\n ><i esIcon=\"filter_none\"></i>\n </div>\n </div>\n </ng-container>\n </mat-cell>\n </ng-container>\n <mat-header-row mat-header-row *matHeaderRowDef=\"visibleColumnNames$ | async\"></mat-header-row>\n <mat-row\n mat-row\n matRipple\n [matRippleDisabled]=\"isScroll\"\n cdkDrag\n esNodesDrag\n [cdkDragDisabled]=\"!entriesService.dragDrop?.dragAllowed || (ui.isTouchSubject | async)\"\n [cdkDragData]=\"getDragData(node)\"\n (cdkDragStarted)=\"onDragStarted(node)\"\n (cdkDragEnded)=\"onDragEnded()\"\n [esNodesDropTarget]=\"node\"\n [canDropNodes]=\"canDrop\"\n (nodeDropped)=\"drop($event)\"\n class=\"mat-row\"\n [class.mat-row-selected]=\"entriesService.selection.isSelected(node)\"\n [class.mat-row-import-blocked]=\"isBlocked(node)\"\n [class.selected-when-dragging]=\"isDragging && entriesService.selection.isSelected(node)\"\n [class.mat-row-virtual]=\"node.virtual\"\n [class.mat-row-virtual-first]=\"\n node.virtual && !$any(entriesService.dataSource.getData()[i - 1])?.virtual\n \"\n [class.mat-row-virtual-last]=\"\n node.virtual && !$any(entriesService.dataSource.getData()[i + 1])?.virtual\n \"\n [class.dynamic-single-click]=\"entriesService.singleClickHint === 'dynamic'\"\n *matRowDef=\"let node; let i = index; let last = last; columns: visibleColumnNames$ | async\"\n (contextmenu)=\"onRowContextMenu({ event: $event, node: node })\"\n (keydown.ContextMenu)=\"onRowContextMenu({ event: $event, node: node })\"\n >\n <es-drag-preview\n *cdkDragPreview\n [node]=\"node\"\n [selected]=\"entriesService.selection.selected\"\n [item]=\"(visibleDataColumns$ | async)[0]\"\n ></es-drag-preview>\n </mat-row>\n</mat-table>\n<ng-container\n *ngIf=\"\n (entriesService.dataSource.isLoadingSubject | async) === false &&\n entriesService.dataSource.hasMore() &&\n entriesService.paginationStrategy === 'infinite-scroll'\n \"\n>\n <div class=\"load-more\">\n <button mat-button color=\"primary\" (click)=\"loadData('button')\">\n <i esIcon=\"refresh\"></i>\n <span>{{ 'LOAD_MORE' | translate }}</span>\n </button>\n </div>\n</ng-container>\n<ng-container *ngIf=\"entriesService.dataSource.isLoadingSubject | async\">\n <ng-container *ngTemplateOutlet=\"loading\"> </ng-container>\n</ng-container>\n<!--\n<mat-paginator #paginator [pageSizeOptions]=\"pageSizeOptions\"></mat-paginator>\n-->\n\n<!-- Wait for ready state to avoid changed-after-checked error when `columnChooserTrigger` becomes\navailable. -->\n<es-column-chooser\n *ngIf=\"columnChooserTriggerReady\"\n [(columns)]=\"entriesService.columns\"\n [(columnChooserVisible)]=\"columnChooserVisible\"\n [origin]=\"columnChooserTrigger\"\n></es-column-chooser>\n<ng-template #loading>\n <es-spinner></es-spinner>\n</ng-template>\n<ng-template #icon let-node=\"node\">\n <div class=\"icon-bg\">\n <es-node-type-badge [node]=\"node\" [collectionIcons]=\"false\"></es-node-type-badge>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column}:host.scroll{overflow-x:auto}:host.scroll>mat-table{width:fit-content}:host.scroll>mat-table .mat-row{overflow:visible}:host.scroll>mat-table mat-header-cell:not(.mat-mdc-table-sticky),:host.scroll>mat-table mat-cell:not(.mat-mdc-table-sticky){min-width:150px}:host.scroll>mat-table mat-header-cell.mat-column-primary,:host.scroll>mat-table mat-cell.mat-column-primary{box-shadow:4px 0 8px -4px #00000026}:host.scroll>mat-table mat-header-cell.mat-mdc-table-sticky-border-elem-right,:host.scroll>mat-table mat-cell.mat-mdc-table-sticky-border-elem-right{box-shadow:-4px 0 8px -4px #00000026}:host ::ng-deep mat-header-cell{color:var(--textMediumLight)}:host ::ng-deep mat-cell,:host ::ng-deep mat-header-cell{margin:0!important}:host ::ng-deep mat-cell es-node-url{width:100%}:host ::ng-deep mat-cell es-node-url a{color:#000}:host ::ng-deep mat-cell es-node-url.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}:host ::ng-deep es-list-base{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline;width:100%;padding:20.3px 0;align-items:center}:host ::ng-deep es-list-base>div{display:inline}:host ::ng-deep es-list-base>div>div{display:inline}mat-header-cell,mat-cell{margin:0 3px}mat-header-cell.mat-mdc-table-sticky,mat-cell.mat-mdc-table-sticky{background:var(--mat-table-background-color, var(--mat-sys-surface))}mat-header-cell:not(.mat-column-primary),mat-cell:not(.mat-column-primary){flex:0 145px}mat-header-cell.mat-column-primary,mat-cell.mat-column-primary{min-width:30%}mat-header-cell.mat-column-select,mat-cell.mat-column-select{flex:0 58px;min-width:58px;padding-left:14px}mat-header-cell.mat-column-icon,mat-cell.mat-column-icon{flex:0 85px;min-width:85px;justify-content:center}mat-header-cell.mat-column-actions,mat-cell.mat-column-actions{flex:0 58px;min-width:58px;display:flex;justify-content:flex-end;padding-right:5px}.mat-row{background:unset}.mat-row.dynamic-single-click{cursor:pointer}.mat-row.dynamic-single-click:hover{background-color:rgb(var(--palette-primary-50))}.mat-row.mat-row-import-blocked{opacity:.75;text-decoration:line-through}.mat-row.mat-row-selected{background:var(--listItemSelectedBackgroundEffect)}.mat-row.mat-row-selected .mat-mdc-cell{background:var(--listItemSelectedBackground)}.mat-row.mat-row-virtual{background:linear-gradient(to right,var(--nodeVirtualColor) 5px,transparent 5px) no-repeat;border-right:2px dashed var(--nodeVirtualColorLight)}.mat-row.mat-row-virtual .mat-mdc-cell{background:transparent}.mat-row.mat-row-virtual.mat-row-selected{background:linear-gradient(to right,var(--nodeVirtualColor) 0,var(--nodeVirtualColor) 5px,var(--listItemSelectedBackground) 5px,var(--listItemSelectedBackground) 5px)}.mat-row.mat-row-virtual-first{border-top:2px dashed var(--nodeVirtualColorLight)}.mat-row.mat-row-virtual-last{border-bottom:2px dashed var(--nodeVirtualColorLight)}.mat-row.selected-when-dragging{opacity:.5}.dropdown-dummy{position:fixed}.childobjects{background-color:#0000000d;border-radius:15px;display:inline-flex;align-items:center;min-width:51px;min-height:26px;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none;padding:2px 8px;margin-left:5px}.childobjects>.childobject-count{display:inline-flex;align-items:center}.childobjects>.childobject-count>i{font-size:13px;margin-left:4px}.cell-icon .icon-bg{width:36px;height:36px;padding:3px;margin:1px 0;background-color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 3px #0000004d}.cell-icon .icon-bg>es-node-type-badge{box-shadow:none}.cell-icon .icon-bg>img{width:18px;height:auto}.cell-icon .icon-bg>i{color:#666;font-size:18px}.mat-column-link{flex:0 60px}.mat-column-link a,.load-more{display:flex;justify-content:center}es-node-entries-global-options{padding:20px 0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i9.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i2$3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i8$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8$1.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: CheckTextOverflowDirective, selector: "[esCheckTextOverflow]", inputs: ["esCheckTextOverflow"], exportAs: ["esCheckTextOverflow"] }, { kind: "component", type: DropdownComponent, selector: "es-dropdown", inputs: ["position", "options", "callbackObjects", "showDisabled", "menuClass"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[esInfiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollThrottle", "scrollWindow"], outputs: ["scrolled"] }, { kind: "component", type: NodeUrlComponent, selector: "es-node-url", inputs: ["node", "nodes", "target", "scope", "queryParams", "mode", "disabled", "alwaysRipple", "aria-describedby", "aria-label"], outputs: ["buttonClick"] }, { kind: "component", type: SpinnerComponent, selector: "es-spinner" }, { kind: "component", type: ListBaseComponent, selector: "es-list-base", inputs: ["forceText"] }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i22.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i22.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i22.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i22.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i22.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i22.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i22.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i22.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i22.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i22.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i8.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i24.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i24.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ColumnChooserComponent, selector: "es-column-chooser", inputs: ["origin", "columnChooserVisible", "columns"], outputs: ["columnChooserVisibleChange", "columnsChange"] }, { kind: "component", type: DragPreviewComponent, selector: "es-drag-preview", inputs: ["node", "selected", "item"] }, { kind: "component", type: NodeTypeBadgeComponent, selector: "es-node-type-badge", inputs: ["node", "collectionIcons"] }, { kind: "directive", type: NodesDragDirective, selector: "[esNodesDrag]" }, { kind: "directive", type: NodesDropTargetDirective, selector: "[esNodesDropTarget]", inputs: ["esNodesDropTarget", "canDropNodes"], outputs: ["nodeDropped"], exportAs: ["esNodesDropTarget"] }, { kind: "component", type: NodeEntriesGlobalOptionsComponent, selector: "es-node-entries-global-options", inputs: ["displayType"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: NodeTitlePipe, name: "nodeTitle" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: ListItemLabelPipe, name: "esListItemLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7185
|
+
selectSortChange(sort) {
|
|
7186
|
+
this.entriesService.sort.active = sort.active;
|
|
7187
|
+
this.entriesService.sort.direction = sort.direction;
|
|
7188
|
+
console.log(sort);
|
|
7189
|
+
this.updateSort(true);
|
|
7190
|
+
/*this.sort.active = sort.active;
|
|
7191
|
+
this.sort.direction = sort.direction;
|
|
7192
|
+
this.changeDetectorRef.detectChanges();*/
|
|
7193
|
+
}
|
|
7194
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesTableComponent, deps: [{ token: NodeEntriesService }, { token: NodeEntriesGlobalService }, { token: i0.ApplicationRef }, { token: Toast }, { token: NodeEntriesTemplatesService }, { token: TranslationsService }, { token: NodeHelperService }, { token: i0.ChangeDetectorRef }, { token: UIService }, { token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7195
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesTableComponent, isStandalone: false, selector: "es-node-entries-table", host: { properties: { "class.scroll": "this.isScroll" } }, viewQueries: [{ propertyName: "sort", first: true, predicate: MatSort, descendants: true }, { propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }, { propertyName: "columnChooserTrigger", first: true, predicate: ["columnChooserTrigger"], descendants: true }, { propertyName: "dropdown", first: true, predicate: DropdownComponent, descendants: true }, { propertyName: "menuTrigger", first: true, predicate: ["menuTrigger"], descendants: true }, { propertyName: "gridTop", first: true, predicate: ["gridTop"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #gridTop>\n <es-sort-select-panel\n *ngIf=\"entriesService.sort?.allowed && (hasHiddenSortColumns$ | async)\"\n class=\"order-panel\"\n [active]=\"entriesService.sort.active\"\n (sortChange)=\"selectSortChange($event)\"\n [direction]=\"entriesService.sort.direction\"\n [columns]=\"entriesService.getSortColumns()\"\n ></es-sort-select-panel>\n</ng-template>\n<es-dropdown #dropdown [options]=\"entriesService.options?.[Target.ListDropdown]\"></es-dropdown>\n<button\n #menuTrigger=\"matMenuTrigger\"\n mat-button\n class=\"dropdown-dummy cdk-visually-hidden\"\n [style.left.px]=\"dropdownLeft\"\n [style.top.px]=\"dropdownTop\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n></button>\n<es-node-entries-global-options\n *ngIf=\"(entriesService.globalOptionsSubject | async)?.length\"\n [displayType]=\"NodeEntriesDisplayType.Table\"\n>\n</es-node-entries-global-options>\n<mat-table\n [dataSource]=\"entriesService.dataSource\"\n matSort\n [matSortDisableClear]=\"true\"\n [matSortActive]=\"entriesService.sort?.active\"\n [matSortDirection]=\"entriesService.sort?.direction\"\n esInfiniteScroll\n (scrolled)=\"loadData('scroll')\"\n>\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\" [sticky]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [ngModel]=\"entriesService.selection.selected.length > 0\"\n [indeterminate]=\"\n entriesService.selection.selected.length > 0 &&\n entriesService.selection.selected.length !== entriesService.dataSource.getData().length\n \"\n (ngModelChange)=\"toggleAll($event)\"\n color=\"primary\"\n aria-label=\"{{ 'LIST_TABLE.TOGGLE_ALL' | translate }}\"\n ></mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\">\n <mat-checkbox\n [checked]=\"entriesService.selection.isSelected(node)\"\n (change)=\"entriesService.onCheckboxChanged(node, $event.checked)\"\n aria-label=\"{{ 'SELECT' | translate : { element: (node | nodeTitle) } }}\"\n color=\"primary\"\n ></mat-checkbox>\n </mat-cell>\n </ng-container>\n <div matColumnDef=\"icon\" [sticky]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef class=\"cell-icon cell-count\">\n ({{ entriesService.selection.selected.length\n }}<ng-container *ngIf=\"entriesService.dataSource?.getTotal() !== undefined\">\n / {{ entriesService.dataSource?.getTotal() }}</ng-container\n >)\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\" class=\"cell-icon\">\n <ng-container\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n >\n <ng-container *ngTemplateOutlet=\"icon; context: { node: node }\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\"\n (click)=\"\n entriesService.onClicked({ event: $event, element: node, source: ClickSource.Icon })\n \"\n (dblclick)=\"entriesService.dblClickItem.emit({ element: node, source: ClickSource.Icon })\"\n >\n <ng-container\n *ngTemplateOutlet=\"icon; context: { node: node }\"\n (click)=\"\n entriesService.onClicked({ event: $event, element: node, source: ClickSource.Icon })\n \"\n (dblclick)=\"entriesService.dblClickItem.emit({ element: node, source: ClickSource.Icon })\"\n ></ng-container>\n </div>\n </mat-cell>\n </div>\n <ng-container matColumnDef=\"actions\" [stickyEnd]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef>\n <button\n *ngIf=\"entriesService.configureColumns\"\n mat-icon-button\n (click)=\"columnChooserVisible = !columnChooserVisible\"\n cdkOverlayOrigin\n #columnChooserTrigger=\"cdkOverlayOrigin\"\n [matTooltip]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n [attr.aria-label]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n >\n <i esIcon=\"settings\"></i>\n </button>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\">\n <button\n mat-icon-button\n *ngIf=\"entriesService.options?.[Target.List]?.length\"\n color=\"primary\"\n (click)=\"openMenu(node)\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n >\n <i esIcon=\"more_vert\" [aria]=\"true\"></i>\n </button>\n </mat-cell>\n </ng-container>\n <!-- Data Columns -->\n <ng-container\n *ngFor=\"let column of visibleDataColumns$ | async; let first = first\"\n [matColumnDef]=\"column.name\"\n [sticky]=\"first && isScroll\"\n >\n <ng-container>\n <mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(entriesService.sort?.allowed && isSortable(column))\"\n [class.mat-column-primary]=\"first\"\n [style.min-width]=\"first ? (containerWidth$ | async) / 3 + 'px' : null\"\n >{{ column | esListItemLabel | async }}</mat-header-cell\n >\n </ng-container>\n <mat-cell\n *matCellDef=\"let node\"\n #cell\n [class.mat-column-primary]=\"first\"\n [style.min-width]=\"first ? (containerWidth$ | async) / 3 + 'px' : null\"\n attr.data-test=\"table-cell-{{ column.name }}\"\n >\n <ng-container\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n >\n <es-node-url cdkMonitorSubtreeFocus [node]=\"node\" [mode]=\"first ? 'link' : 'wrapper'\">\n <es-list-base\n [forceText]=\"true\"\n [node]=\"node\"\n [item]=\"column\"\n esCheckTextOverflow\n #text=\"esCheckTextOverflow\"\n [matTooltip]=\"text.hasTextOverflow() ? cell.innerText : null\"\n matTooltipTouchGestures=\"off\"\n ></es-list-base>\n </es-node-url>\n </ng-container>\n <es-list-base\n *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\"\n [forceText]=\"true\"\n [node]=\"node\"\n [item]=\"column\"\n (click)=\"\n entriesService.onClicked({\n event: $event,\n element: node,\n source: ClickSource.Metadata,\n attribute: column,\n })\n \"\n (dblclick)=\"\n entriesService.dblClickItem.emit({\n element: node,\n source: ClickSource.Metadata,\n attribute: column,\n })\n \"\n ></es-list-base>\n <ng-container *ngIf=\"first\">\n <div class=\"childobjects\" *ngIf=\"node.properties?.['virtual:childobjectcount'] > 0\">\n <div\n class=\"childobject-count\"\n matTooltip=\"{{\n 'CHILDOBJECT_COUNT'\n | translate : { count: node.properties['virtual:childobjectcount'] * 1 + 1 }\n }}\"\n >\n <span>{{ node.properties['virtual:childobjectcount'] * 1 + 1 }}</span\n ><i esIcon=\"filter_none\"></i>\n </div>\n </div>\n </ng-container>\n </mat-cell>\n </ng-container>\n <mat-header-row mat-header-row *matHeaderRowDef=\"visibleColumnNames$ | async\"></mat-header-row>\n <mat-row\n mat-row\n matRipple\n [matRippleDisabled]=\"isScroll\"\n cdkDrag\n esNodesDrag\n [cdkDragDisabled]=\"!entriesService.dragDrop?.dragAllowed || (ui.isTouchSubject | async)\"\n [cdkDragData]=\"getDragData(node)\"\n (cdkDragStarted)=\"onDragStarted(node)\"\n (cdkDragEnded)=\"onDragEnded()\"\n [esNodesDropTarget]=\"node\"\n [canDropNodes]=\"canDrop\"\n (nodeDropped)=\"drop($event)\"\n class=\"mat-row\"\n [class.mat-row-selected]=\"entriesService.selection.isSelected(node)\"\n [class.mat-row-import-blocked]=\"isBlocked(node)\"\n [class.selected-when-dragging]=\"isDragging && entriesService.selection.isSelected(node)\"\n [class.mat-row-virtual]=\"node.virtual\"\n [class.mat-row-virtual-first]=\"\n node.virtual && !$any(entriesService.dataSource.getData()[i - 1])?.virtual\n \"\n [class.mat-row-virtual-last]=\"\n node.virtual && !$any(entriesService.dataSource.getData()[i + 1])?.virtual\n \"\n [class.dynamic-single-click]=\"entriesService.singleClickHint === 'dynamic'\"\n *matRowDef=\"let node; let i = index; let last = last; columns: visibleColumnNames$ | async\"\n (contextmenu)=\"onRowContextMenu({ event: $event, node: node })\"\n (keydown.ContextMenu)=\"onRowContextMenu({ event: $event, node: node })\"\n >\n <es-drag-preview\n *cdkDragPreview\n [node]=\"node\"\n [selected]=\"entriesService.selection.selected\"\n [item]=\"(visibleDataColumns$ | async)[0]\"\n ></es-drag-preview>\n </mat-row>\n</mat-table>\n<ng-container\n *ngIf=\"\n (entriesService.dataSource.isLoadingSubject | async) === false &&\n entriesService.dataSource.hasMore() &&\n entriesService.paginationStrategy === 'infinite-scroll'\n \"\n>\n <div class=\"load-more\">\n <button mat-button color=\"primary\" (click)=\"loadData('button')\">\n <i esIcon=\"refresh\"></i>\n <span>{{ 'LOAD_MORE' | translate }}</span>\n </button>\n </div>\n</ng-container>\n<ng-container *ngIf=\"entriesService.dataSource.isLoadingSubject | async\">\n <ng-container *ngTemplateOutlet=\"loading\"> </ng-container>\n</ng-container>\n<!--\n<mat-paginator #paginator [pageSizeOptions]=\"pageSizeOptions\"></mat-paginator>\n-->\n\n<!-- Wait for ready state to avoid changed-after-checked error when `columnChooserTrigger` becomes\navailable. -->\n<es-column-chooser\n *ngIf=\"columnChooserTriggerReady\"\n [(columns)]=\"entriesService.columns\"\n [(columnChooserVisible)]=\"columnChooserVisible\"\n [origin]=\"columnChooserTrigger\"\n></es-column-chooser>\n<ng-template #loading>\n <es-spinner></es-spinner>\n</ng-template>\n<ng-template #icon let-node=\"node\">\n <div class=\"icon-bg\">\n <es-node-type-badge [node]=\"node\" [collectionIcons]=\"false\"></es-node-type-badge>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column}:host.scroll{overflow-x:auto}:host.scroll>mat-table{width:fit-content}:host.scroll>mat-table .mat-row{overflow:visible}:host.scroll>mat-table mat-header-cell:not(.mat-mdc-table-sticky),:host.scroll>mat-table mat-cell:not(.mat-mdc-table-sticky){min-width:150px}:host.scroll>mat-table mat-header-cell.mat-column-primary,:host.scroll>mat-table mat-cell.mat-column-primary{box-shadow:4px 0 8px -4px #00000026}:host.scroll>mat-table mat-header-cell.mat-mdc-table-sticky-border-elem-right,:host.scroll>mat-table mat-cell.mat-mdc-table-sticky-border-elem-right{box-shadow:-4px 0 8px -4px #00000026}:host ::ng-deep mat-header-cell{color:var(--textMediumLight)}:host ::ng-deep mat-cell,:host ::ng-deep mat-header-cell{margin:0!important}:host ::ng-deep mat-cell es-node-url{width:100%}:host ::ng-deep mat-cell es-node-url a{color:#000}:host ::ng-deep mat-cell es-node-url.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}:host ::ng-deep es-list-base{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline;width:100%;padding:20.3px 0;align-items:center}:host ::ng-deep es-list-base>div{display:inline}:host ::ng-deep es-list-base>div>div{display:inline}mat-header-cell,mat-cell{margin:0 3px}mat-header-cell.mat-mdc-table-sticky,mat-cell.mat-mdc-table-sticky{background:var(--mat-table-background-color, var(--mat-sys-surface))}mat-header-cell:not(.mat-column-primary),mat-cell:not(.mat-column-primary){flex:0 145px}mat-header-cell.mat-column-primary,mat-cell.mat-column-primary{min-width:30%}mat-header-cell.mat-column-select,mat-cell.mat-column-select{flex:0 58px;min-width:58px;padding-left:14px}mat-header-cell.mat-column-icon,mat-cell.mat-column-icon{flex:0 85px;min-width:85px;justify-content:center}mat-header-cell.mat-column-actions,mat-cell.mat-column-actions{flex:0 58px;min-width:58px;display:flex;justify-content:flex-end;padding-right:5px}.mat-row{background:unset}.mat-row.dynamic-single-click{cursor:pointer}.mat-row.dynamic-single-click:hover{background-color:rgb(var(--palette-primary-50))}.mat-row.mat-row-import-blocked{opacity:.75;text-decoration:line-through}.mat-row.mat-row-selected{background:var(--listItemSelectedBackgroundEffect)}.mat-row.mat-row-selected .mat-mdc-cell{background:var(--listItemSelectedBackground)}.mat-row.mat-row-virtual{background:linear-gradient(to right,var(--nodeVirtualColor) 5px,transparent 5px) no-repeat;border-right:2px dashed var(--nodeVirtualColorLight)}.mat-row.mat-row-virtual .mat-mdc-cell{background:transparent}.mat-row.mat-row-virtual.mat-row-selected{background:linear-gradient(to right,var(--nodeVirtualColor) 0,var(--nodeVirtualColor) 5px,var(--listItemSelectedBackground) 5px,var(--listItemSelectedBackground) 5px)}.mat-row.mat-row-virtual-first{border-top:2px dashed var(--nodeVirtualColorLight)}.mat-row.mat-row-virtual-last{border-bottom:2px dashed var(--nodeVirtualColorLight)}.mat-row.selected-when-dragging{opacity:.5}.dropdown-dummy{position:fixed}.childobjects{background-color:#0000000d;border-radius:15px;display:inline-flex;align-items:center;min-width:51px;min-height:26px;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none;padding:2px 8px;margin-left:5px}.childobjects>.childobject-count{display:inline-flex;align-items:center}.childobjects>.childobject-count>i{font-size:13px;margin-left:4px}.cell-icon .icon-bg{width:36px;height:36px;padding:3px;margin:1px 0;background-color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 3px #0000004d}.cell-icon .icon-bg>es-node-type-badge{box-shadow:none}.cell-icon .icon-bg>img{width:18px;height:auto}.cell-icon .icon-bg>i{color:#666;font-size:18px}.mat-column-link{flex:0 60px}.mat-column-link a,.load-more{display:flex;justify-content:center}es-node-entries-global-options{padding:20px 0}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "directive", type: i2$3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: i8.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i8.CdkDragPreview, selector: "ng-template[cdkDragPreview]", inputs: ["data", "matchSize"] }, { kind: "directive", type: CheckTextOverflowDirective, selector: "[esCheckTextOverflow]", inputs: ["esCheckTextOverflow"], exportAs: ["esCheckTextOverflow"] }, { kind: "component", type: DropdownComponent, selector: "es-dropdown", inputs: ["position", "options", "callbackObjects", "showDisabled", "menuClass"] }, { kind: "directive", type: IconDirective, selector: "i[esIcon], i.material-icons", inputs: ["altText", "aria", "esIcon", "esIconContext"] }, { kind: "directive", type: InfiniteScrollDirective, selector: "[esInfiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollThrottle", "scrollWindow"], outputs: ["scrolled"] }, { kind: "component", type: NodeUrlComponent, selector: "es-node-url", inputs: ["node", "nodes", "target", "scope", "queryParams", "mode", "disabled", "alwaysRipple", "aria-describedby", "aria-label"], outputs: ["buttonClick"] }, { kind: "component", type: SpinnerComponent, selector: "es-spinner" }, { kind: "component", type: ListBaseComponent, selector: "es-list-base", inputs: ["forceText"] }, { kind: "component", type: i5$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: i3$2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: i23.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i23.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i23.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i23.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i23.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i23.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i23.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i23.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i23.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i23.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "directive", type: i9.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i25.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i25.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: ColumnChooserComponent, selector: "es-column-chooser", inputs: ["origin", "columnChooserVisible", "columns"], outputs: ["columnChooserVisibleChange", "columnsChange"] }, { kind: "component", type: DragPreviewComponent, selector: "es-drag-preview", inputs: ["node", "selected", "item"] }, { kind: "component", type: NodeTypeBadgeComponent, selector: "es-node-type-badge", inputs: ["node", "collectionIcons"] }, { kind: "component", type: SortSelectPanelComponent, selector: "es-sort-select-panel", inputs: ["active", "direction", "columns", "customSortingInProgress"], outputs: ["sortChange", "customSortingInProgressChange"] }, { kind: "directive", type: NodesDragDirective, selector: "[esNodesDrag]" }, { kind: "directive", type: NodesDropTargetDirective, selector: "[esNodesDropTarget]", inputs: ["esNodesDropTarget", "canDropNodes"], outputs: ["nodeDropped"], exportAs: ["esNodesDropTarget"] }, { kind: "component", type: NodeEntriesGlobalOptionsComponent, selector: "es-node-entries-global-options", inputs: ["displayType"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: NodeTitlePipe, name: "nodeTitle" }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "pipe", type: ListItemLabelPipe, name: "esListItemLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7113
7196
|
}
|
|
7114
7197
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesTableComponent, decorators: [{
|
|
7115
7198
|
type: Component,
|
|
7116
|
-
args: [{ selector: 'es-node-entries-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<es-dropdown #dropdown [options]=\"entriesService.options?.[Target.ListDropdown]\"></es-dropdown>\n<button\n #menuTrigger=\"matMenuTrigger\"\n mat-button\n class=\"dropdown-dummy cdk-visually-hidden\"\n [style.left.px]=\"dropdownLeft\"\n [style.top.px]=\"dropdownTop\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n></button>\n<es-node-entries-global-options\n *ngIf=\"(entriesService.globalOptionsSubject | async)?.length\"\n [displayType]=\"NodeEntriesDisplayType.Table\"\n>\n</es-node-entries-global-options>\n<mat-table\n [dataSource]=\"entriesService.dataSource\"\n matSort\n [matSortDisableClear]=\"true\"\n [matSortActive]=\"entriesService.sort?.active\"\n [matSortDirection]=\"entriesService.sort?.direction\"\n esInfiniteScroll\n (scrolled)=\"loadData('scroll')\"\n>\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\" [sticky]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [ngModel]=\"entriesService.selection.selected.length > 0\"\n [indeterminate]=\"\n entriesService.selection.selected.length > 0 &&\n entriesService.selection.selected.length !== entriesService.dataSource.getData().length\n \"\n (ngModelChange)=\"toggleAll($event)\"\n color=\"primary\"\n aria-label=\"{{ 'LIST_TABLE.TOGGLE_ALL' | translate }}\"\n ></mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\">\n <mat-checkbox\n [checked]=\"entriesService.selection.isSelected(node)\"\n (change)=\"entriesService.onCheckboxChanged(node, $event.checked)\"\n aria-label=\"{{ 'SELECT' | translate : { element: (node | nodeTitle) } }}\"\n color=\"primary\"\n ></mat-checkbox>\n </mat-cell>\n </ng-container>\n <div matColumnDef=\"icon\" [sticky]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef class=\"cell-icon cell-count\">\n ({{ entriesService.selection.selected.length\n }}<ng-container *ngIf=\"entriesService.dataSource?.getTotal() !== undefined\">\n / {{ entriesService.dataSource?.getTotal() }}</ng-container\n >)\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\" class=\"cell-icon\">\n <ng-container\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n >\n <ng-container *ngTemplateOutlet=\"icon; context: { node: node }\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\"\n (click)=\"\n entriesService.onClicked({ event: $event, element: node, source: ClickSource.Icon })\n \"\n (dblclick)=\"entriesService.dblClickItem.emit({ element: node, source: ClickSource.Icon })\"\n >\n <ng-container\n *ngTemplateOutlet=\"icon; context: { node: node }\"\n (click)=\"\n entriesService.onClicked({ event: $event, element: node, source: ClickSource.Icon })\n \"\n (dblclick)=\"entriesService.dblClickItem.emit({ element: node, source: ClickSource.Icon })\"\n ></ng-container>\n </div>\n </mat-cell>\n </div>\n <ng-container matColumnDef=\"actions\" [stickyEnd]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef>\n <button\n *ngIf=\"entriesService.configureColumns\"\n mat-icon-button\n (click)=\"columnChooserVisible = !columnChooserVisible\"\n cdkOverlayOrigin\n #columnChooserTrigger=\"cdkOverlayOrigin\"\n [matTooltip]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n [attr.aria-label]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n >\n <i esIcon=\"settings\"></i>\n </button>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\">\n <button\n mat-icon-button\n *ngIf=\"entriesService.options?.[Target.List]?.length\"\n color=\"primary\"\n (click)=\"openMenu(node)\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n >\n <i esIcon=\"more_vert\" [aria]=\"true\"></i>\n </button>\n </mat-cell>\n </ng-container>\n <!-- Data Columns -->\n <ng-container\n *ngFor=\"let column of visibleDataColumns$ | async; let first = first\"\n [matColumnDef]=\"column.name\"\n [sticky]=\"first && isScroll\"\n >\n <ng-container>\n <mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(entriesService.sort?.allowed && isSortable(column))\"\n [class.mat-column-primary]=\"first\"\n [style.min-width]=\"first ? (containerWidth$ | async) / 3 + 'px' : null\"\n >{{ column | esListItemLabel | async }}</mat-header-cell\n >\n </ng-container>\n <mat-cell\n *matCellDef=\"let node\"\n #cell\n [class.mat-column-primary]=\"first\"\n [style.min-width]=\"first ? (containerWidth$ | async) / 3 + 'px' : null\"\n attr.data-test=\"table-cell-{{ column.name }}\"\n >\n <ng-container\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n >\n <es-node-url cdkMonitorSubtreeFocus [node]=\"node\" [mode]=\"first ? 'link' : 'wrapper'\">\n <es-list-base\n [forceText]=\"true\"\n [node]=\"node\"\n [item]=\"column\"\n esCheckTextOverflow\n #text=\"esCheckTextOverflow\"\n [matTooltip]=\"text.hasTextOverflow() ? cell.innerText : null\"\n matTooltipTouchGestures=\"off\"\n ></es-list-base>\n </es-node-url>\n </ng-container>\n <es-list-base\n *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\"\n [forceText]=\"true\"\n [node]=\"node\"\n [item]=\"column\"\n (click)=\"\n entriesService.onClicked({\n event: $event,\n element: node,\n source: ClickSource.Metadata,\n attribute: column,\n })\n \"\n (dblclick)=\"\n entriesService.dblClickItem.emit({\n element: node,\n source: ClickSource.Metadata,\n attribute: column,\n })\n \"\n ></es-list-base>\n <ng-container *ngIf=\"first\">\n <div class=\"childobjects\" *ngIf=\"node.properties?.['virtual:childobjectcount'] > 0\">\n <div\n class=\"childobject-count\"\n matTooltip=\"{{\n 'CHILDOBJECT_COUNT'\n | translate : { count: node.properties['virtual:childobjectcount'] * 1 + 1 }\n }}\"\n >\n <span>{{ node.properties['virtual:childobjectcount'] * 1 + 1 }}</span\n ><i esIcon=\"filter_none\"></i>\n </div>\n </div>\n </ng-container>\n </mat-cell>\n </ng-container>\n <mat-header-row mat-header-row *matHeaderRowDef=\"visibleColumnNames$ | async\"></mat-header-row>\n <mat-row\n mat-row\n matRipple\n [matRippleDisabled]=\"isScroll\"\n cdkDrag\n esNodesDrag\n [cdkDragDisabled]=\"!entriesService.dragDrop?.dragAllowed || (ui.isTouchSubject | async)\"\n [cdkDragData]=\"getDragData(node)\"\n (cdkDragStarted)=\"onDragStarted(node)\"\n (cdkDragEnded)=\"onDragEnded()\"\n [esNodesDropTarget]=\"node\"\n [canDropNodes]=\"canDrop\"\n (nodeDropped)=\"drop($event)\"\n class=\"mat-row\"\n [class.mat-row-selected]=\"entriesService.selection.isSelected(node)\"\n [class.mat-row-import-blocked]=\"isBlocked(node)\"\n [class.selected-when-dragging]=\"isDragging && entriesService.selection.isSelected(node)\"\n [class.mat-row-virtual]=\"node.virtual\"\n [class.mat-row-virtual-first]=\"\n node.virtual && !$any(entriesService.dataSource.getData()[i - 1])?.virtual\n \"\n [class.mat-row-virtual-last]=\"\n node.virtual && !$any(entriesService.dataSource.getData()[i + 1])?.virtual\n \"\n [class.dynamic-single-click]=\"entriesService.singleClickHint === 'dynamic'\"\n *matRowDef=\"let node; let i = index; let last = last; columns: visibleColumnNames$ | async\"\n (contextmenu)=\"onRowContextMenu({ event: $event, node: node })\"\n (keydown.ContextMenu)=\"onRowContextMenu({ event: $event, node: node })\"\n >\n <es-drag-preview\n *cdkDragPreview\n [node]=\"node\"\n [selected]=\"entriesService.selection.selected\"\n [item]=\"(visibleDataColumns$ | async)[0]\"\n ></es-drag-preview>\n </mat-row>\n</mat-table>\n<ng-container\n *ngIf=\"\n (entriesService.dataSource.isLoadingSubject | async) === false &&\n entriesService.dataSource.hasMore() &&\n entriesService.paginationStrategy === 'infinite-scroll'\n \"\n>\n <div class=\"load-more\">\n <button mat-button color=\"primary\" (click)=\"loadData('button')\">\n <i esIcon=\"refresh\"></i>\n <span>{{ 'LOAD_MORE' | translate }}</span>\n </button>\n </div>\n</ng-container>\n<ng-container *ngIf=\"entriesService.dataSource.isLoadingSubject | async\">\n <ng-container *ngTemplateOutlet=\"loading\"> </ng-container>\n</ng-container>\n<!--\n<mat-paginator #paginator [pageSizeOptions]=\"pageSizeOptions\"></mat-paginator>\n-->\n\n<!-- Wait for ready state to avoid changed-after-checked error when `columnChooserTrigger` becomes\navailable. -->\n<es-column-chooser\n *ngIf=\"columnChooserTriggerReady\"\n [(columns)]=\"entriesService.columns\"\n [(columnChooserVisible)]=\"columnChooserVisible\"\n [origin]=\"columnChooserTrigger\"\n></es-column-chooser>\n<ng-template #loading>\n <es-spinner></es-spinner>\n</ng-template>\n<ng-template #icon let-node=\"node\">\n <div class=\"icon-bg\">\n <es-node-type-badge [node]=\"node\" [collectionIcons]=\"false\"></es-node-type-badge>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column}:host.scroll{overflow-x:auto}:host.scroll>mat-table{width:fit-content}:host.scroll>mat-table .mat-row{overflow:visible}:host.scroll>mat-table mat-header-cell:not(.mat-mdc-table-sticky),:host.scroll>mat-table mat-cell:not(.mat-mdc-table-sticky){min-width:150px}:host.scroll>mat-table mat-header-cell.mat-column-primary,:host.scroll>mat-table mat-cell.mat-column-primary{box-shadow:4px 0 8px -4px #00000026}:host.scroll>mat-table mat-header-cell.mat-mdc-table-sticky-border-elem-right,:host.scroll>mat-table mat-cell.mat-mdc-table-sticky-border-elem-right{box-shadow:-4px 0 8px -4px #00000026}:host ::ng-deep mat-header-cell{color:var(--textMediumLight)}:host ::ng-deep mat-cell,:host ::ng-deep mat-header-cell{margin:0!important}:host ::ng-deep mat-cell es-node-url{width:100%}:host ::ng-deep mat-cell es-node-url a{color:#000}:host ::ng-deep mat-cell es-node-url.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}:host ::ng-deep es-list-base{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline;width:100%;padding:20.3px 0;align-items:center}:host ::ng-deep es-list-base>div{display:inline}:host ::ng-deep es-list-base>div>div{display:inline}mat-header-cell,mat-cell{margin:0 3px}mat-header-cell.mat-mdc-table-sticky,mat-cell.mat-mdc-table-sticky{background:var(--mat-table-background-color, var(--mat-sys-surface))}mat-header-cell:not(.mat-column-primary),mat-cell:not(.mat-column-primary){flex:0 145px}mat-header-cell.mat-column-primary,mat-cell.mat-column-primary{min-width:30%}mat-header-cell.mat-column-select,mat-cell.mat-column-select{flex:0 58px;min-width:58px;padding-left:14px}mat-header-cell.mat-column-icon,mat-cell.mat-column-icon{flex:0 85px;min-width:85px;justify-content:center}mat-header-cell.mat-column-actions,mat-cell.mat-column-actions{flex:0 58px;min-width:58px;display:flex;justify-content:flex-end;padding-right:5px}.mat-row{background:unset}.mat-row.dynamic-single-click{cursor:pointer}.mat-row.dynamic-single-click:hover{background-color:rgb(var(--palette-primary-50))}.mat-row.mat-row-import-blocked{opacity:.75;text-decoration:line-through}.mat-row.mat-row-selected{background:var(--listItemSelectedBackgroundEffect)}.mat-row.mat-row-selected .mat-mdc-cell{background:var(--listItemSelectedBackground)}.mat-row.mat-row-virtual{background:linear-gradient(to right,var(--nodeVirtualColor) 5px,transparent 5px) no-repeat;border-right:2px dashed var(--nodeVirtualColorLight)}.mat-row.mat-row-virtual .mat-mdc-cell{background:transparent}.mat-row.mat-row-virtual.mat-row-selected{background:linear-gradient(to right,var(--nodeVirtualColor) 0,var(--nodeVirtualColor) 5px,var(--listItemSelectedBackground) 5px,var(--listItemSelectedBackground) 5px)}.mat-row.mat-row-virtual-first{border-top:2px dashed var(--nodeVirtualColorLight)}.mat-row.mat-row-virtual-last{border-bottom:2px dashed var(--nodeVirtualColorLight)}.mat-row.selected-when-dragging{opacity:.5}.dropdown-dummy{position:fixed}.childobjects{background-color:#0000000d;border-radius:15px;display:inline-flex;align-items:center;min-width:51px;min-height:26px;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none;padding:2px 8px;margin-left:5px}.childobjects>.childobject-count{display:inline-flex;align-items:center}.childobjects>.childobject-count>i{font-size:13px;margin-left:4px}.cell-icon .icon-bg{width:36px;height:36px;padding:3px;margin:1px 0;background-color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 3px #0000004d}.cell-icon .icon-bg>es-node-type-badge{box-shadow:none}.cell-icon .icon-bg>img{width:18px;height:auto}.cell-icon .icon-bg>i{color:#666;font-size:18px}.mat-column-link{flex:0 60px}.mat-column-link a,.load-more{display:flex;justify-content:center}es-node-entries-global-options{padding:20px 0}\n"] }]
|
|
7117
|
-
}], ctorParameters: () => [{ type: NodeEntriesService }, { type: NodeEntriesGlobalService }, { type: i0.ApplicationRef }, { type: Toast }, { type: TranslationsService }, { type: NodeHelperService }, { type: i0.ChangeDetectorRef }, { type: UIService }, { type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { sort: [{
|
|
7199
|
+
args: [{ selector: 'es-node-entries-table', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-template #gridTop>\n <es-sort-select-panel\n *ngIf=\"entriesService.sort?.allowed && (hasHiddenSortColumns$ | async)\"\n class=\"order-panel\"\n [active]=\"entriesService.sort.active\"\n (sortChange)=\"selectSortChange($event)\"\n [direction]=\"entriesService.sort.direction\"\n [columns]=\"entriesService.getSortColumns()\"\n ></es-sort-select-panel>\n</ng-template>\n<es-dropdown #dropdown [options]=\"entriesService.options?.[Target.ListDropdown]\"></es-dropdown>\n<button\n #menuTrigger=\"matMenuTrigger\"\n mat-button\n class=\"dropdown-dummy cdk-visually-hidden\"\n [style.left.px]=\"dropdownLeft\"\n [style.top.px]=\"dropdownTop\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n></button>\n<es-node-entries-global-options\n *ngIf=\"(entriesService.globalOptionsSubject | async)?.length\"\n [displayType]=\"NodeEntriesDisplayType.Table\"\n>\n</es-node-entries-global-options>\n<mat-table\n [dataSource]=\"entriesService.dataSource\"\n matSort\n [matSortDisableClear]=\"true\"\n [matSortActive]=\"entriesService.sort?.active\"\n [matSortDirection]=\"entriesService.sort?.direction\"\n esInfiniteScroll\n (scrolled)=\"loadData('scroll')\"\n>\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\" [sticky]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox\n [ngModel]=\"entriesService.selection.selected.length > 0\"\n [indeterminate]=\"\n entriesService.selection.selected.length > 0 &&\n entriesService.selection.selected.length !== entriesService.dataSource.getData().length\n \"\n (ngModelChange)=\"toggleAll($event)\"\n color=\"primary\"\n aria-label=\"{{ 'LIST_TABLE.TOGGLE_ALL' | translate }}\"\n ></mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\">\n <mat-checkbox\n [checked]=\"entriesService.selection.isSelected(node)\"\n (change)=\"entriesService.onCheckboxChanged(node, $event.checked)\"\n aria-label=\"{{ 'SELECT' | translate : { element: (node | nodeTitle) } }}\"\n color=\"primary\"\n ></mat-checkbox>\n </mat-cell>\n </ng-container>\n <div matColumnDef=\"icon\" [sticky]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef class=\"cell-icon cell-count\">\n ({{ entriesService.selection.selected.length\n }}<ng-container *ngIf=\"entriesService.dataSource?.getTotal() !== undefined\">\n / {{ entriesService.dataSource?.getTotal() }}</ng-container\n >)\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\" class=\"cell-icon\">\n <ng-container\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n >\n <ng-container *ngTemplateOutlet=\"icon; context: { node: node }\"></ng-container>\n </ng-container>\n <div\n *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\"\n (click)=\"\n entriesService.onClicked({ event: $event, element: node, source: ClickSource.Icon })\n \"\n (dblclick)=\"entriesService.dblClickItem.emit({ element: node, source: ClickSource.Icon })\"\n >\n <ng-container\n *ngTemplateOutlet=\"icon; context: { node: node }\"\n (click)=\"\n entriesService.onClicked({ event: $event, element: node, source: ClickSource.Icon })\n \"\n (dblclick)=\"entriesService.dblClickItem.emit({ element: node, source: ClickSource.Icon })\"\n ></ng-container>\n </div>\n </mat-cell>\n </div>\n <ng-container matColumnDef=\"actions\" [stickyEnd]=\"isScroll\">\n <mat-header-cell *matHeaderCellDef>\n <button\n *ngIf=\"entriesService.configureColumns\"\n mat-icon-button\n (click)=\"columnChooserVisible = !columnChooserVisible\"\n cdkOverlayOrigin\n #columnChooserTrigger=\"cdkOverlayOrigin\"\n [matTooltip]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n [attr.aria-label]=\"'LIST_TABLE.CONFIGURE_COLUMNS' | translate\"\n >\n <i esIcon=\"settings\"></i>\n </button>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let node\">\n <button\n mat-icon-button\n *ngIf=\"entriesService.options?.[Target.List]?.length\"\n color=\"primary\"\n (click)=\"openMenu(node)\"\n [matMenuTriggerFor]=\"dropdown.menu\"\n >\n <i esIcon=\"more_vert\" [aria]=\"true\"></i>\n </button>\n </mat-cell>\n </ng-container>\n <!-- Data Columns -->\n <ng-container\n *ngFor=\"let column of visibleDataColumns$ | async; let first = first\"\n [matColumnDef]=\"column.name\"\n [sticky]=\"first && isScroll\"\n >\n <ng-container>\n <mat-header-cell\n *matHeaderCellDef\n mat-sort-header\n [disabled]=\"!(entriesService.sort?.allowed && isSortable(column))\"\n [class.mat-column-primary]=\"first\"\n [style.min-width]=\"first ? (containerWidth$ | async) / 3 + 'px' : null\"\n >{{ column | esListItemLabel | async }}</mat-header-cell\n >\n </ng-container>\n <mat-cell\n *matCellDef=\"let node\"\n #cell\n [class.mat-column-primary]=\"first\"\n [style.min-width]=\"first ? (containerWidth$ | async) / 3 + 'px' : null\"\n attr.data-test=\"table-cell-{{ column.name }}\"\n >\n <ng-container\n *ngIf=\"entriesService.elementInteractionType === InteractionType.DefaultActionLink\"\n >\n <es-node-url cdkMonitorSubtreeFocus [node]=\"node\" [mode]=\"first ? 'link' : 'wrapper'\">\n <es-list-base\n [forceText]=\"true\"\n [node]=\"node\"\n [item]=\"column\"\n esCheckTextOverflow\n #text=\"esCheckTextOverflow\"\n [matTooltip]=\"text.hasTextOverflow() ? cell.innerText : null\"\n matTooltipTouchGestures=\"off\"\n ></es-list-base>\n </es-node-url>\n </ng-container>\n <es-list-base\n *ngIf=\"entriesService.elementInteractionType !== InteractionType.DefaultActionLink\"\n [forceText]=\"true\"\n [node]=\"node\"\n [item]=\"column\"\n (click)=\"\n entriesService.onClicked({\n event: $event,\n element: node,\n source: ClickSource.Metadata,\n attribute: column,\n })\n \"\n (dblclick)=\"\n entriesService.dblClickItem.emit({\n element: node,\n source: ClickSource.Metadata,\n attribute: column,\n })\n \"\n ></es-list-base>\n <ng-container *ngIf=\"first\">\n <div class=\"childobjects\" *ngIf=\"node.properties?.['virtual:childobjectcount'] > 0\">\n <div\n class=\"childobject-count\"\n matTooltip=\"{{\n 'CHILDOBJECT_COUNT'\n | translate : { count: node.properties['virtual:childobjectcount'] * 1 + 1 }\n }}\"\n >\n <span>{{ node.properties['virtual:childobjectcount'] * 1 + 1 }}</span\n ><i esIcon=\"filter_none\"></i>\n </div>\n </div>\n </ng-container>\n </mat-cell>\n </ng-container>\n <mat-header-row mat-header-row *matHeaderRowDef=\"visibleColumnNames$ | async\"></mat-header-row>\n <mat-row\n mat-row\n matRipple\n [matRippleDisabled]=\"isScroll\"\n cdkDrag\n esNodesDrag\n [cdkDragDisabled]=\"!entriesService.dragDrop?.dragAllowed || (ui.isTouchSubject | async)\"\n [cdkDragData]=\"getDragData(node)\"\n (cdkDragStarted)=\"onDragStarted(node)\"\n (cdkDragEnded)=\"onDragEnded()\"\n [esNodesDropTarget]=\"node\"\n [canDropNodes]=\"canDrop\"\n (nodeDropped)=\"drop($event)\"\n class=\"mat-row\"\n [class.mat-row-selected]=\"entriesService.selection.isSelected(node)\"\n [class.mat-row-import-blocked]=\"isBlocked(node)\"\n [class.selected-when-dragging]=\"isDragging && entriesService.selection.isSelected(node)\"\n [class.mat-row-virtual]=\"node.virtual\"\n [class.mat-row-virtual-first]=\"\n node.virtual && !$any(entriesService.dataSource.getData()[i - 1])?.virtual\n \"\n [class.mat-row-virtual-last]=\"\n node.virtual && !$any(entriesService.dataSource.getData()[i + 1])?.virtual\n \"\n [class.dynamic-single-click]=\"entriesService.singleClickHint === 'dynamic'\"\n *matRowDef=\"let node; let i = index; let last = last; columns: visibleColumnNames$ | async\"\n (contextmenu)=\"onRowContextMenu({ event: $event, node: node })\"\n (keydown.ContextMenu)=\"onRowContextMenu({ event: $event, node: node })\"\n >\n <es-drag-preview\n *cdkDragPreview\n [node]=\"node\"\n [selected]=\"entriesService.selection.selected\"\n [item]=\"(visibleDataColumns$ | async)[0]\"\n ></es-drag-preview>\n </mat-row>\n</mat-table>\n<ng-container\n *ngIf=\"\n (entriesService.dataSource.isLoadingSubject | async) === false &&\n entriesService.dataSource.hasMore() &&\n entriesService.paginationStrategy === 'infinite-scroll'\n \"\n>\n <div class=\"load-more\">\n <button mat-button color=\"primary\" (click)=\"loadData('button')\">\n <i esIcon=\"refresh\"></i>\n <span>{{ 'LOAD_MORE' | translate }}</span>\n </button>\n </div>\n</ng-container>\n<ng-container *ngIf=\"entriesService.dataSource.isLoadingSubject | async\">\n <ng-container *ngTemplateOutlet=\"loading\"> </ng-container>\n</ng-container>\n<!--\n<mat-paginator #paginator [pageSizeOptions]=\"pageSizeOptions\"></mat-paginator>\n-->\n\n<!-- Wait for ready state to avoid changed-after-checked error when `columnChooserTrigger` becomes\navailable. -->\n<es-column-chooser\n *ngIf=\"columnChooserTriggerReady\"\n [(columns)]=\"entriesService.columns\"\n [(columnChooserVisible)]=\"columnChooserVisible\"\n [origin]=\"columnChooserTrigger\"\n></es-column-chooser>\n<ng-template #loading>\n <es-spinner></es-spinner>\n</ng-template>\n<ng-template #icon let-node=\"node\">\n <div class=\"icon-bg\">\n <es-node-type-badge [node]=\"node\" [collectionIcons]=\"false\"></es-node-type-badge>\n </div>\n</ng-template>\n", styles: [":host{display:flex;flex-direction:column}:host.scroll{overflow-x:auto}:host.scroll>mat-table{width:fit-content}:host.scroll>mat-table .mat-row{overflow:visible}:host.scroll>mat-table mat-header-cell:not(.mat-mdc-table-sticky),:host.scroll>mat-table mat-cell:not(.mat-mdc-table-sticky){min-width:150px}:host.scroll>mat-table mat-header-cell.mat-column-primary,:host.scroll>mat-table mat-cell.mat-column-primary{box-shadow:4px 0 8px -4px #00000026}:host.scroll>mat-table mat-header-cell.mat-mdc-table-sticky-border-elem-right,:host.scroll>mat-table mat-cell.mat-mdc-table-sticky-border-elem-right{box-shadow:-4px 0 8px -4px #00000026}:host ::ng-deep mat-header-cell{color:var(--textMediumLight)}:host ::ng-deep mat-cell,:host ::ng-deep mat-header-cell{margin:0!important}:host ::ng-deep mat-cell es-node-url{width:100%}:host ::ng-deep mat-cell es-node-url a{color:#000}:host ::ng-deep mat-cell es-node-url.cdk-keyboard-focused{outline:none;border:2px solid var(--palette-primary-300)}:host ::ng-deep es-list-base{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:inline;width:100%;padding:20.3px 0;align-items:center}:host ::ng-deep es-list-base>div{display:inline}:host ::ng-deep es-list-base>div>div{display:inline}mat-header-cell,mat-cell{margin:0 3px}mat-header-cell.mat-mdc-table-sticky,mat-cell.mat-mdc-table-sticky{background:var(--mat-table-background-color, var(--mat-sys-surface))}mat-header-cell:not(.mat-column-primary),mat-cell:not(.mat-column-primary){flex:0 145px}mat-header-cell.mat-column-primary,mat-cell.mat-column-primary{min-width:30%}mat-header-cell.mat-column-select,mat-cell.mat-column-select{flex:0 58px;min-width:58px;padding-left:14px}mat-header-cell.mat-column-icon,mat-cell.mat-column-icon{flex:0 85px;min-width:85px;justify-content:center}mat-header-cell.mat-column-actions,mat-cell.mat-column-actions{flex:0 58px;min-width:58px;display:flex;justify-content:flex-end;padding-right:5px}.mat-row{background:unset}.mat-row.dynamic-single-click{cursor:pointer}.mat-row.dynamic-single-click:hover{background-color:rgb(var(--palette-primary-50))}.mat-row.mat-row-import-blocked{opacity:.75;text-decoration:line-through}.mat-row.mat-row-selected{background:var(--listItemSelectedBackgroundEffect)}.mat-row.mat-row-selected .mat-mdc-cell{background:var(--listItemSelectedBackground)}.mat-row.mat-row-virtual{background:linear-gradient(to right,var(--nodeVirtualColor) 5px,transparent 5px) no-repeat;border-right:2px dashed var(--nodeVirtualColorLight)}.mat-row.mat-row-virtual .mat-mdc-cell{background:transparent}.mat-row.mat-row-virtual.mat-row-selected{background:linear-gradient(to right,var(--nodeVirtualColor) 0,var(--nodeVirtualColor) 5px,var(--listItemSelectedBackground) 5px,var(--listItemSelectedBackground) 5px)}.mat-row.mat-row-virtual-first{border-top:2px dashed var(--nodeVirtualColorLight)}.mat-row.mat-row-virtual-last{border-bottom:2px dashed var(--nodeVirtualColorLight)}.mat-row.selected-when-dragging{opacity:.5}.dropdown-dummy{position:fixed}.childobjects{background-color:#0000000d;border-radius:15px;display:inline-flex;align-items:center;min-width:51px;min-height:26px;justify-content:center;cursor:default;-webkit-user-select:none;user-select:none;padding:2px 8px;margin-left:5px}.childobjects>.childobject-count{display:inline-flex;align-items:center}.childobjects>.childobject-count>i{font-size:13px;margin-left:4px}.cell-icon .icon-bg{width:36px;height:36px;padding:3px;margin:1px 0;background-color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;box-shadow:0 0 3px #0000004d}.cell-icon .icon-bg>es-node-type-badge{box-shadow:none}.cell-icon .icon-bg>img{width:18px;height:auto}.cell-icon .icon-bg>i{color:#666;font-size:18px}.mat-column-link{flex:0 60px}.mat-column-link a,.load-more{display:flex;justify-content:center}es-node-entries-global-options{padding:20px 0}\n"] }]
|
|
7200
|
+
}], ctorParameters: () => [{ type: NodeEntriesService }, { type: NodeEntriesGlobalService }, { type: i0.ApplicationRef }, { type: Toast }, { type: NodeEntriesTemplatesService }, { type: TranslationsService }, { type: NodeHelperService }, { type: i0.ChangeDetectorRef }, { type: UIService }, { type: i0.NgZone }, { type: i0.ElementRef }], propDecorators: { sort: [{
|
|
7118
7201
|
type: ViewChild,
|
|
7119
7202
|
args: [MatSort]
|
|
7120
7203
|
}], paginator: [{
|
|
@@ -7132,6 +7215,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
7132
7215
|
}], isScroll: [{
|
|
7133
7216
|
type: HostBinding,
|
|
7134
7217
|
args: ['class.scroll']
|
|
7218
|
+
}], gridTop: [{
|
|
7219
|
+
type: ViewChild,
|
|
7220
|
+
args: ['gridTop', { static: false }]
|
|
7135
7221
|
}] } });
|
|
7136
7222
|
|
|
7137
7223
|
/**
|
|
@@ -7475,11 +7561,11 @@ class NodeEntriesComponent {
|
|
|
7475
7561
|
});
|
|
7476
7562
|
}
|
|
7477
7563
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: NodeEntriesGlobalService }, { token: NodeEntriesService }, { token: NodeEntriesTemplatesService }, { token: KeyboardShortcutsService, optional: true }, { token: i2$1.ActivatedRoute }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7478
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesComponent, isStandalone: false, selector: "es-node-entries", viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<div class=\"top-matter\">\n <div class=\"title\">\n <ng-container *ngTemplateOutlet=\"templatesService.title\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"templatesService.entriesTopMatter\"></ng-container>\n</div>\n<ng-container *ngIf=\"entriesService.dataSource\">\n <ng-container *ngIf=\"entriesService.displayType === NodeEntriesDisplayType.Table\">\n <es-node-entries-table></es-node-entries-table>\n </ng-container>\n <ng-container\n *ngIf=\"\n entriesService.displayType === NodeEntriesDisplayType.SmallGrid ||\n entriesService.displayType === NodeEntriesDisplayType.Grid\n \"\n >\n <es-node-entries-card-grid [displayType]=\"entriesService.displayType\">\n </es-node-entries-card-grid>\n </ng-container>\n <ng-container *ngIf=\"entriesService.dataSource.isEmpty() && !entriesService.dataSource.isLoading\">\n <ng-container *ngTemplateOutlet=\"templatesService.empty\"></ng-container>\n </ng-container>\n</ng-container>\n<mat-paginator\n #paginator\n [pageSizeOptions]=\"entriesGlobalService.getPaginatorSizeOptions(entriesService.scope)\"\n *ngIf=\"entriesService.paginationStrategy === 'paginator'\"\n [class.display-none]=\"\n (entriesService.dataSource.isLoading && entriesService.dataSource.isLoading !== 'page') ||\n entriesService.dataSource.isEmpty()\n \"\n (page)=\"openPage($event)\"\n></mat-paginator>\n", styles: [".top-matter{display:flex;align-items:center;flex-wrap:wrap;gap:12px 10px;position:relative;z-index:1}.top-matter .title{display:flex;flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8$
|
|
7564
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: NodeEntriesComponent, isStandalone: false, selector: "es-node-entries", viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true }], ngImport: i0, template: "<div class=\"top-matter\">\n <div class=\"title\">\n <ng-container *ngTemplateOutlet=\"templatesService.title\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"templatesService.entriesTopMatter\"></ng-container>\n</div>\n<ng-container *ngIf=\"entriesService.dataSource\">\n <ng-container *ngIf=\"entriesService.displayType === NodeEntriesDisplayType.Table\">\n <es-node-entries-table></es-node-entries-table>\n </ng-container>\n <ng-container\n *ngIf=\"\n entriesService.displayType === NodeEntriesDisplayType.SmallGrid ||\n entriesService.displayType === NodeEntriesDisplayType.Grid\n \"\n >\n <es-node-entries-card-grid [displayType]=\"entriesService.displayType\">\n </es-node-entries-card-grid>\n </ng-container>\n <ng-container *ngIf=\"entriesService.dataSource.isEmpty() && !entriesService.dataSource.isLoading\">\n <ng-container *ngTemplateOutlet=\"templatesService.empty\"></ng-container>\n </ng-container>\n</ng-container>\n<mat-paginator\n #paginator\n [pageSizeOptions]=\"entriesGlobalService.getPaginatorSizeOptions(entriesService.scope)\"\n *ngIf=\"entriesService.paginationStrategy === 'paginator'\"\n [class.display-none]=\"\n (entriesService.dataSource.isLoading && entriesService.dataSource.isLoading !== 'page') ||\n entriesService.dataSource.isEmpty()\n \"\n (page)=\"openPage($event)\"\n></mat-paginator>\n", styles: [".top-matter{display:flex;align-items:center;flex-wrap:wrap;gap:12px 10px;position:relative;justify-content:flex-end;z-index:1}.top-matter .title{display:flex;flex-grow:1}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "component", type: NodeEntriesCardGridComponent, selector: "es-node-entries-card-grid", inputs: ["displayType"] }, { kind: "component", type: NodeEntriesTableComponent, selector: "es-node-entries-table" }] }); }
|
|
7479
7565
|
}
|
|
7480
7566
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesComponent, decorators: [{
|
|
7481
7567
|
type: Component,
|
|
7482
|
-
args: [{ selector: 'es-node-entries', standalone: false, template: "<div class=\"top-matter\">\n <div class=\"title\">\n <ng-container *ngTemplateOutlet=\"templatesService.title\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"templatesService.entriesTopMatter\"></ng-container>\n</div>\n<ng-container *ngIf=\"entriesService.dataSource\">\n <ng-container *ngIf=\"entriesService.displayType === NodeEntriesDisplayType.Table\">\n <es-node-entries-table></es-node-entries-table>\n </ng-container>\n <ng-container\n *ngIf=\"\n entriesService.displayType === NodeEntriesDisplayType.SmallGrid ||\n entriesService.displayType === NodeEntriesDisplayType.Grid\n \"\n >\n <es-node-entries-card-grid [displayType]=\"entriesService.displayType\">\n </es-node-entries-card-grid>\n </ng-container>\n <ng-container *ngIf=\"entriesService.dataSource.isEmpty() && !entriesService.dataSource.isLoading\">\n <ng-container *ngTemplateOutlet=\"templatesService.empty\"></ng-container>\n </ng-container>\n</ng-container>\n<mat-paginator\n #paginator\n [pageSizeOptions]=\"entriesGlobalService.getPaginatorSizeOptions(entriesService.scope)\"\n *ngIf=\"entriesService.paginationStrategy === 'paginator'\"\n [class.display-none]=\"\n (entriesService.dataSource.isLoading && entriesService.dataSource.isLoading !== 'page') ||\n entriesService.dataSource.isEmpty()\n \"\n (page)=\"openPage($event)\"\n></mat-paginator>\n", styles: [".top-matter{display:flex;align-items:center;flex-wrap:wrap;gap:12px 10px;position:relative;z-index:1}.top-matter .title{display:flex;flex-grow:1}\n"] }]
|
|
7568
|
+
args: [{ selector: 'es-node-entries', standalone: false, template: "<div class=\"top-matter\">\n <div class=\"title\">\n <ng-container *ngTemplateOutlet=\"templatesService.title\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"templatesService.entriesTopMatter\"></ng-container>\n</div>\n<ng-container *ngIf=\"entriesService.dataSource\">\n <ng-container *ngIf=\"entriesService.displayType === NodeEntriesDisplayType.Table\">\n <es-node-entries-table></es-node-entries-table>\n </ng-container>\n <ng-container\n *ngIf=\"\n entriesService.displayType === NodeEntriesDisplayType.SmallGrid ||\n entriesService.displayType === NodeEntriesDisplayType.Grid\n \"\n >\n <es-node-entries-card-grid [displayType]=\"entriesService.displayType\">\n </es-node-entries-card-grid>\n </ng-container>\n <ng-container *ngIf=\"entriesService.dataSource.isEmpty() && !entriesService.dataSource.isLoading\">\n <ng-container *ngTemplateOutlet=\"templatesService.empty\"></ng-container>\n </ng-container>\n</ng-container>\n<mat-paginator\n #paginator\n [pageSizeOptions]=\"entriesGlobalService.getPaginatorSizeOptions(entriesService.scope)\"\n *ngIf=\"entriesService.paginationStrategy === 'paginator'\"\n [class.display-none]=\"\n (entriesService.dataSource.isLoading && entriesService.dataSource.isLoading !== 'page') ||\n entriesService.dataSource.isEmpty()\n \"\n (page)=\"openPage($event)\"\n></mat-paginator>\n", styles: [".top-matter{display:flex;align-items:center;flex-wrap:wrap;gap:12px 10px;position:relative;justify-content:flex-end;z-index:1}.top-matter .title{display:flex;flex-grow:1}\n"] }]
|
|
7483
7569
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: NodeEntriesGlobalService }, { type: NodeEntriesService }, { type: NodeEntriesTemplatesService }, { type: KeyboardShortcutsService, decorators: [{
|
|
7484
7570
|
type: Optional
|
|
7485
7571
|
}] }, { type: i2$1.ActivatedRoute }, { type: i1.TranslateService }], propDecorators: { paginator: [{
|
|
@@ -7704,7 +7790,7 @@ class NodeEntriesWrapperComponent {
|
|
|
7704
7790
|
this.changeDetectorRef.detectChanges();
|
|
7705
7791
|
}
|
|
7706
7792
|
showReorderColumnsDialog() { }
|
|
7707
|
-
addVirtualNodes(virtual) {
|
|
7793
|
+
addVirtualNodes(virtual, options) {
|
|
7708
7794
|
virtual = virtual.map((o) => {
|
|
7709
7795
|
o.virtual = true;
|
|
7710
7796
|
return o;
|
|
@@ -7734,8 +7820,10 @@ class NodeEntriesWrapperComponent {
|
|
|
7734
7820
|
});
|
|
7735
7821
|
}
|
|
7736
7822
|
});
|
|
7737
|
-
|
|
7738
|
-
|
|
7823
|
+
if (options?.select !== false) {
|
|
7824
|
+
this.entriesService.selection.clear();
|
|
7825
|
+
this.entriesService.selection.select(...virtual);
|
|
7826
|
+
}
|
|
7739
7827
|
this.virtualNodesAdded.emit(virtual);
|
|
7740
7828
|
this.changeDetectorRef.detectChanges();
|
|
7741
7829
|
}
|
|
@@ -7922,7 +8010,8 @@ class NodeEntriesModule {
|
|
|
7922
8010
|
NodesDragSourceDirective,
|
|
7923
8011
|
NodesDropTargetDirective,
|
|
7924
8012
|
NodeStatsBadgesComponent,
|
|
7925
|
-
NodeTypeBadgeComponent
|
|
8013
|
+
NodeTypeBadgeComponent,
|
|
8014
|
+
OptionButtonComponent] }); }
|
|
7926
8015
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NodeEntriesModule, imports: [CommonModule,
|
|
7927
8016
|
FormsModule,
|
|
7928
8017
|
A11yModule,
|
|
@@ -7999,6 +8088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
7999
8088
|
NodesDropTargetDirective,
|
|
8000
8089
|
NodeStatsBadgesComponent,
|
|
8001
8090
|
NodeTypeBadgeComponent,
|
|
8091
|
+
OptionButtonComponent,
|
|
8002
8092
|
],
|
|
8003
8093
|
}]
|
|
8004
8094
|
}] });
|
|
@@ -8196,6 +8286,7 @@ class RenderHelperService {
|
|
|
8196
8286
|
const securedNode = await firstValueFrom(this.nodeApiUnwrapped.getMetadataSigned({
|
|
8197
8287
|
repository: repository || HOME_REPOSITORY,
|
|
8198
8288
|
node: nodeId,
|
|
8289
|
+
version: version || RestConstants.NODE_VERSION_CURRENT,
|
|
8199
8290
|
}));
|
|
8200
8291
|
const node = securedNode.node;
|
|
8201
8292
|
const user = await firstValueFrom(this.userService.observeCurrentUserInfo());
|
|
@@ -8225,11 +8316,8 @@ class RenderHelperService {
|
|
|
8225
8316
|
error: 'RENDERING.ERROR.RS2_NOT_CONFIGURED',
|
|
8226
8317
|
};
|
|
8227
8318
|
}
|
|
8228
|
-
console.info(about.renderingService2?.url);
|
|
8229
8319
|
this.prepareRootUrl();
|
|
8230
|
-
console.info(this.injector.get(RSApiConfiguration));
|
|
8231
8320
|
const token = securedNode.jwt;
|
|
8232
|
-
console.info(token, node);
|
|
8233
8321
|
const request = {
|
|
8234
8322
|
nodeId: node.ref.id,
|
|
8235
8323
|
repoId: node.ref.repo,
|
|
@@ -8250,9 +8338,9 @@ class RenderHelperService {
|
|
|
8250
8338
|
}
|
|
8251
8339
|
async getRenderDataForLms(encodedNode, signature, jwt, renderUrl, encodedUser) {
|
|
8252
8340
|
this.injector.get(RSApiConfiguration).rootUrl = renderUrl;
|
|
8253
|
-
const decodedNodeString =
|
|
8341
|
+
const decodedNodeString = this.base64ToUtf8(encodedNode);
|
|
8254
8342
|
const node = JSON.parse(decodedNodeString);
|
|
8255
|
-
const userData = JSON.parse(
|
|
8343
|
+
const userData = JSON.parse(this.base64ToUtf8(encodedUser));
|
|
8256
8344
|
const request = {
|
|
8257
8345
|
nodeId: node.ref.id,
|
|
8258
8346
|
repoId: node.ref.repo,
|
|
@@ -8282,6 +8370,16 @@ class RenderHelperService {
|
|
|
8282
8370
|
}
|
|
8283
8371
|
console.info(this.injector.get(RSApiConfiguration));
|
|
8284
8372
|
}
|
|
8373
|
+
base64ToUtf8(b64) {
|
|
8374
|
+
// Support Base64URL and missing padding
|
|
8375
|
+
const normalized = b64.replace(/-/g, '+').replace(/_/g, '/');
|
|
8376
|
+
const padded = normalized + '='.repeat((4 - (normalized.length % 4)) % 4);
|
|
8377
|
+
const binary = atob(padded);
|
|
8378
|
+
const bytes = new Uint8Array(binary.length);
|
|
8379
|
+
for (let i = 0; i < binary.length; i++)
|
|
8380
|
+
bytes[i] = binary.charCodeAt(i);
|
|
8381
|
+
return new TextDecoder('utf-8', { fatal: false }).decode(bytes);
|
|
8382
|
+
}
|
|
8285
8383
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RenderHelperService, deps: [{ token: i0.Injector }, { token: i2.AboutService }, { token: i2.NodeServiceUnwrapped }, { token: EduSharingUiConfiguration }, { token: i2.UserService }, { token: OptionsHelperDataService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8286
8384
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: RenderHelperService, providedIn: 'root' }); }
|
|
8287
8385
|
}
|
|
@@ -8638,5 +8736,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
8638
8736
|
* Generated bundle index. Do not edit.
|
|
8639
8737
|
*/
|
|
8640
8738
|
|
|
8641
|
-
export { AccessibilityService, AccessibilitySettings, ActionbarComponent, AppContainerService, AppService, BorderBoxObserverDirective, CheckTextOverflowDirective, ClickSource, ColorHelper, CombinedDataSource, Constrain, CustomFieldSpecialType, CustomOptions, CustomSelectionModel, CustomTemplatesDataSource, DateHelper, DefaultGroups, DropdownComponent, DurationFormat, DurationHelper, EDU_SHARING_UI_CONFIG, EduSharingUiCommonModule, EduSharingUiConfiguration, EduSharingUiModule, ElementType, FallbackTranslationHandler, FocusStateDirective, FormatDatePipe, FormatDurationPipe, FormatOptions, FormatSizePipe, Helper, HideMode, I18N_CONFIG, I18nConfig, IconDirective, InfiniteScrollDirective, InteractionType, ItemsCap, KeyboardShortcutsService, ListBaseComponent, ListCountsComponent, ListItem, ListItemLabelPipe, ListItemSort, ListItemsModule, ListTextComponent, LocalEventsService, MdsDurationPipe, MdsEditorInstanceServiceAbstract, MdsHelperService, MdsModule, MdsType, MdsViewerComponent, MdsViewerService, MdsViewerWidget, MdsWidgetComponent, MdsWidgetType, NodeCache, NodeDataSource, NodeDataSourceRemote, NodeEntriesDisplayType, NodeEntriesGlobalService, NodeEntriesModule, NodeEntriesService, NodeEntriesWrapperComponent, NodeHelperService, NodeIconPipe, NodeImagePipe, NodeImageSizePipe, NodeLicensePipe, NodePersonNamePipe, NodeRatingComponent, NodeRowComponent, NodeStatsBadgesComponent, NodeTitlePipe, NodeTypeBadgeComponent, NodeUrlComponent, NodesDragDirective, NodesDragDropService, NodesDragSourceDirective, NodesDropTargetDirective, NodesRightMode, OPEN_URL_MODE, OptionGroup, OptionItem, OptionsHelperDataService, OptionsHelperService, PreferredColor, PropertySlugPipe, RelativeMode, RenderHelperService, RepoUrlService, RestHelper, Scope, SearchHelperService, SortDropdownComponent, SortEvent, SpinnerComponent, SpinnerSmallComponent, TRANSLATION_LIST, Target, TemporaryStorageService, Toast, ToastDuration, TranslationLoader, TranslationsModule, TranslationsService, UIAnimation, UIConstants, UIService, VCard, VCardNamePipe, ValueType, ViewInstanceService, WORKFLOW_STATUS_CHECKED, WORKFLOW_STATUS_HASFLAWS, WORKFLOW_STATUS_TO_CHECK, WORKFLOW_STATUS_UNCHECKED, clearDraggedNodes, dragNodesTransferType, getConfigProvider, isNumeric, isTrue, macroTick, matchesShortcutCondition, microTick, notNull, readDraggedNodes, replaceElementWithDiv, saveDraggedNodes };
|
|
8739
|
+
export { AccessibilityService, AccessibilitySettings, ActionbarComponent, AppContainerService, AppService, BorderBoxObserverDirective, CheckTextOverflowDirective, ClickSource, ColorHelper, CombinedDataSource, Constrain, CustomFieldSpecialType, CustomOptions, CustomSelectionModel, CustomTemplatesDataSource, DateHelper, DefaultGroups, DropdownComponent, DurationFormat, DurationHelper, EDU_SHARING_UI_CONFIG, EduSharingUiCommonModule, EduSharingUiConfiguration, EduSharingUiModule, ElementType, FallbackTranslationHandler, FocusStateDirective, FormatDatePipe, FormatDurationPipe, FormatOptions, FormatSizePipe, Helper, HideMode, I18N_CONFIG, I18nConfig, IconDirective, InfiniteScrollDirective, InfoMessageComponent, InteractionType, ItemsCap, KeyboardShortcutsService, ListBaseComponent, ListCountsComponent, ListItem, ListItemLabelPipe, ListItemSort, ListItemsModule, ListTextComponent, LocalEventsService, MdsDurationPipe, MdsEditorInstanceServiceAbstract, MdsHelperService, MdsModule, MdsType, MdsViewerComponent, MdsViewerService, MdsViewerWidget, MdsWidgetComponent, MdsWidgetType, NodeCache, NodeDataSource, NodeDataSourceRemote, NodeEntriesDisplayType, NodeEntriesGlobalService, NodeEntriesModule, NodeEntriesService, NodeEntriesWrapperComponent, NodeHelperService, NodeIconPipe, NodeImagePipe, NodeImageSizePipe, NodeLicensePipe, NodePersonNamePipe, NodeRatingComponent, NodeRowComponent, NodeStatsBadgesComponent, NodeTitlePipe, NodeTypeBadgeComponent, NodeUrlComponent, NodesDragDirective, NodesDragDropService, NodesDragSourceDirective, NodesDropTargetDirective, NodesRightMode, OPEN_URL_MODE, OptionButtonComponent, OptionGroup, OptionItem, OptionsHelperDataService, OptionsHelperService, PreferredColor, PropertySlugPipe, RelativeMode, RenderHelperService, RepoUrlService, RestHelper, Scope, SearchHelperService, SortDropdownComponent, SortEvent, SpinnerComponent, SpinnerSmallComponent, TRANSLATION_LIST, Target, TemporaryStorageService, Toast, ToastDuration, TranslationLoader, TranslationsModule, TranslationsService, UIAnimation, UIConstants, UIService, VCard, VCardNamePipe, ValueType, ViewInstanceService, WORKFLOW_STATUS_CHECKED, WORKFLOW_STATUS_HASFLAWS, WORKFLOW_STATUS_TO_CHECK, WORKFLOW_STATUS_UNCHECKED, clearDraggedNodes, dragNodesTransferType, getConfigProvider, isNumeric, isTrue, macroTick, matchesShortcutCondition, microTick, notNull, readDraggedNodes, replaceElementWithDiv, saveDraggedNodes };
|
|
8642
8740
|
//# sourceMappingURL=ngx-edu-sharing-ui.mjs.map
|