ngx-edu-sharing-ui 10.0.25 → 10.0.27

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.
Files changed (36) hide show
  1. package/assets/scss/branding.scss +4 -3
  2. package/assets/scss/material-theme.scss +38 -3
  3. package/assets/scss/mixins.scss +2 -2
  4. package/assets/scss/variables-scss.scss +2 -1
  5. package/assets/scss/variables.scss +8 -1
  6. package/fesm2022/ngx-edu-sharing-ui.mjs +2071 -1864
  7. package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
  8. package/lib/directives/icon.directive.d.ts +3 -1
  9. package/lib/edu-sharing-ui-configuration.d.ts +7 -0
  10. package/lib/edu-sharing-ui.module.d.ts +2 -2
  11. package/lib/index.d.ts +3 -0
  12. package/lib/list-items/list-text/list-text.component.d.ts +1 -1
  13. package/lib/list-items/list-widget.d.ts +1 -1
  14. package/lib/mds/mds-helper.service.d.ts +14 -2
  15. package/lib/mds-viewer/mds-editor-instance-service.abstract.d.ts +3 -2
  16. package/lib/mds-viewer/mds-viewer.component.d.ts +1 -0
  17. package/lib/mds-viewer/mds-viewer.service.d.ts +14 -1
  18. package/lib/mds-viewer/widget/mds-widget.component.d.ts +15 -13
  19. package/lib/node-entries/entries-model.d.ts +13 -2
  20. package/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.d.ts +0 -2
  21. package/lib/node-entries/node-entries-global.service.d.ts +3 -0
  22. package/lib/node-entries/node-entries-table/node-entries-table.component.d.ts +11 -3
  23. package/lib/node-entries/node-entries-templates.service.d.ts +4 -0
  24. package/lib/node-entries/node-entries-wrapper.component.d.ts +18 -4
  25. package/lib/node-entries/node-entries.module.d.ts +1 -1
  26. package/lib/node-entries/node-type-badge/node-type-badge.component.d.ts +13 -4
  27. package/lib/pipes/node-image.pipe.d.ts +1 -1
  28. package/lib/services/node-entries.service.d.ts +7 -2
  29. package/lib/services/node-helper.service.d.ts +6 -4
  30. package/lib/services/render-helper.service.d.ts +2 -1
  31. package/lib/services/ui.service.d.ts +4 -0
  32. package/lib/translations/translation-loader.d.ts +3 -3
  33. package/lib/types/injection-tokens.d.ts +9 -16
  34. package/lib/types/option-item.d.ts +10 -4
  35. package/lib/util/ui-constants.d.ts +1 -0
  36. package/package.json +2 -2
@@ -22,6 +22,7 @@ export declare class IconDirective implements OnInit, OnDestroy {
22
22
  private renderer;
23
23
  private config;
24
24
  private originalId$;
25
+ private iconContext$;
25
26
  private _id;
26
27
  private _aria;
27
28
  private altTextSpan;
@@ -38,6 +39,7 @@ export declare class IconDirective implements OnInit, OnDestroy {
38
39
  /** If true, an alt text (see above) will be set based on the icon. */
39
40
  set aria(aria: boolean);
40
41
  set esIcon(id: string);
42
+ set esIconContext(context: string);
41
43
  constructor(element: ElementRef<HTMLElement>, http: HttpClient, translate: TranslateService, renderer: Renderer2, config: ConfigService);
42
44
  ngOnInit(): Promise<void>;
43
45
  ngOnDestroy(): void;
@@ -46,5 +48,5 @@ export declare class IconDirective implements OnInit, OnDestroy {
46
48
  private setAltText;
47
49
  private insertAltTextSpan;
48
50
  static ɵfac: i0.ɵɵFactoryDeclaration<IconDirective, [null, null, null, null, { optional: true; }]>;
49
- static ɵdir: i0.ɵɵDirectiveDeclaration<IconDirective, "i[esIcon], i.material-icons", never, { "altText": { "alias": "altText"; "required": false; }; "aria": { "alias": "aria"; "required": false; }; "esIcon": { "alias": "esIcon"; "required": false; }; }, {}, never, never, false, never>;
51
+ static ɵdir: i0.ɵɵDirectiveDeclaration<IconDirective, "i[esIcon], i.material-icons", never, { "altText": { "alias": "altText"; "required": false; }; "aria": { "alias": "aria"; "required": false; }; "esIcon": { "alias": "esIcon"; "required": false; }; "esIconContext": { "alias": "esIconContext"; "required": false; }; }, {}, never, never, false, never>;
50
52
  }
@@ -8,6 +8,13 @@ export declare class EduSharingUiConfiguration {
8
8
  * web page.
9
9
  */
10
10
  isEmbedded: boolean;
11
+ /**
12
+ * A custom base path for the assets directory.
13
+ *
14
+ * This is useful when the application cannot be served from the base HREF set in index.html. This
15
+ * is the case when it is embedded as a web component into another website.
16
+ */
17
+ assetsBasePath?: string;
11
18
  static create(params?: EduSharingUiConfigurationParams): EduSharingUiConfiguration;
12
19
  static ɵfac: i0.ɵɵFactoryDeclaration<EduSharingUiConfiguration, never>;
13
20
  static ɵprov: i0.ɵɵInjectableDeclaration<EduSharingUiConfiguration>;
@@ -1,4 +1,4 @@
1
- import { ModuleWithProviders } from '@angular/core';
1
+ import { ModuleWithProviders, Provider } from '@angular/core';
2
2
  import { EduSharingUiConfigurationParams } from './edu-sharing-ui-configuration';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
@@ -13,7 +13,7 @@ import * as i9 from "./pipes/format-date.pipe";
13
13
  import * as i10 from "./node-entries/list-item-label.pipe";
14
14
  import * as i11 from "./sort-dropdown/sort-dropdown.component";
15
15
  export declare class EduSharingUiModule {
16
- static forRoot(config: EduSharingUiConfigurationParams): ModuleWithProviders<EduSharingUiModule>;
16
+ static forRoot(config: EduSharingUiConfigurationParams, providers?: Provider[]): ModuleWithProviders<EduSharingUiModule>;
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<EduSharingUiModule, never>;
18
18
  static ɵmod: i0.ɵɵNgModuleDeclaration<EduSharingUiModule, never, [typeof i1.CommonModule, typeof i2.TranslateModule, typeof i3.EduSharingUiCommonModule, typeof i4.ListItemsModule, typeof i5.NodeEntriesModule], [typeof i1.CommonModule, typeof i6.MdsModule, typeof i7.MatTooltipModule, typeof i2.TranslateModule, typeof i3.EduSharingUiCommonModule, typeof i4.ListItemsModule, typeof i5.NodeEntriesModule, typeof i8.NodeImageSizePipe, typeof i9.FormatDatePipe, typeof i4.ListItemsModule, typeof i10.ListItemLabelPipe, typeof i11.SortDropdownComponent]>;
19
19
  static ɵinj: i0.ɵɵInjectorDeclaration<EduSharingUiModule>;
package/lib/index.d.ts CHANGED
@@ -29,6 +29,9 @@ export * from './node-entries/entries-model';
29
29
  export * from './node-entries/items-cap';
30
30
  export * from './node-entries/list-item-label.pipe';
31
31
  export * from './node-entries/node-cache';
32
+ export * from './node-entries/node-rating/node-rating.component';
33
+ export * from './node-entries/node-type-badge/node-type-badge.component';
34
+ export * from './node-entries/node-stats-badges/node-stats-badges.component';
32
35
  export * from './node-entries/node-data-source';
33
36
  export * from './node-entries/node-data-source-remote';
34
37
  export * from './node-entries/node-entries-global.service';
@@ -16,7 +16,7 @@ export declare class ListTextComponent extends ListWidget implements OnInit {
16
16
  displayName$: BehaviorSubject<string>;
17
17
  constructor(nodeHelper: NodeHelperService, mds: MdsService, changeDetectorRef: ChangeDetectorRef);
18
18
  ngOnInit(): Promise<void>;
19
- getNode(): Constants.Node | Constants.Group | Constants.Person | Constants.Statistics;
19
+ getNode(): Constants.Node | Constants.Person | Constants.Group | Constants.Statistics;
20
20
  isUserProfileAttribute(attribute: string): boolean;
21
21
  getWorkflowStatus(): import("ngx-edu-sharing-ui").WorkflowDefinition;
22
22
  getI18n(item: ListItem): string;
@@ -7,7 +7,7 @@ import * as i0 from "@angular/core";
7
7
  export declare class ListWidget {
8
8
  get node(): Node | ProposalNode | Group | Person | Statistics;
9
9
  set node(value: Node | ProposalNode | Group | Person | Statistics);
10
- protected readonly nodeSubject: BehaviorSubject<Node | Group | Person | ProposalNode | Statistics>;
10
+ protected readonly nodeSubject: BehaviorSubject<Node | ProposalNode | Person | Group | Statistics>;
11
11
  get item(): ListItem;
12
12
  set item(value: ListItem);
13
13
  protected readonly itemSubject: BehaviorSubject<ListItem>;
@@ -2,10 +2,21 @@ import { TranslateService } from '@ngx-translate/core';
2
2
  import { AuthenticationService, MdsDefinition, MdsSort, MdsWidget } from 'ngx-edu-sharing-api';
3
3
  import { ListItem } from '../types/list-item';
4
4
  import * as i0 from "@angular/core";
5
+ type ColumnTypeInternal<T extends string> = {
6
+ [k in T]?: ListItem[];
7
+ };
8
+ export type ColumnType = ColumnTypeInternal<'Default' | 'Table'>;
5
9
  export declare class MdsHelperService {
6
10
  private authentication;
11
+ private translate;
7
12
  static getSortInfo(mdsSet: MdsDefinition, name: string): MdsSort;
8
- static getColumns(translate: TranslateService, mdsSet: any, name: string): ListItem[];
13
+ /**
14
+ *
15
+ * get columns as an object structure
16
+ * There are always Columns in the result.Default but there can also be further types
17
+ * See @ColumnType
18
+ */
19
+ getColumns(mdsSet: MdsDefinition, name: string): ColumnType;
9
20
  /**
10
21
  * Finds the appropriate widget with the id, but will not check any widget conditions
11
22
  * @param cid
@@ -13,7 +24,7 @@ export declare class MdsHelperService {
13
24
  * @param widgets
14
25
  */
15
26
  static getWidget(cid: string, template: string | undefined | null, widgets: MdsWidget[]): MdsWidget;
16
- constructor(authentication: AuthenticationService);
27
+ constructor(authentication: AuthenticationService, translate: TranslateService);
17
28
  /**
18
29
  * Same as getWidget, but will also check the widget conditions
19
30
  * @param connector
@@ -35,3 +46,4 @@ export declare class MdsHelperService {
35
46
  static ɵfac: i0.ɵɵFactoryDeclaration<MdsHelperService, never>;
36
47
  static ɵprov: i0.ɵɵInjectableDeclaration<MdsHelperService>;
37
48
  }
49
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { BehaviorSubject } from 'rxjs';
2
2
  import { Node } from 'ngx-edu-sharing-api';
3
3
  import { Values } from '../services/search-helper.service';
4
- export type EditorMode = 'nodes' | 'search' | 'form' | 'inline' | 'viewer';
4
+ export type EditorMode = 'nodes' | 'search' | 'form' | 'inline' | 'viewer' | 'searchFacetSuggestion';
5
5
  export declare abstract class MdsEditorInstanceServiceAbstract {
6
6
  mdsId: string;
7
7
  editorMode: EditorMode;
@@ -9,6 +9,7 @@ export declare abstract class MdsEditorInstanceServiceAbstract {
9
9
  values$: BehaviorSubject<Values>;
10
10
  /** Nodes with updated and complete metadata. */
11
11
  nodes$: BehaviorSubject<Node[]>;
12
+ shouldShowExtendedWidgets$: BehaviorSubject<boolean>;
12
13
  abstract saveWidgetValue(widget: any): Promise<void>;
13
- abstract fetchDisplayValues(widget: any): Promise<void>;
14
+ abstract fetchDisplayValues(widget: any, additionalKeys?: string[]): Promise<void>;
14
15
  }
@@ -47,6 +47,7 @@ export declare class MdsViewerComponent implements OnChanges {
47
47
  */
48
48
  private prepareHTML;
49
49
  ngOnChanges(changes: SimpleChanges): Promise<void>;
50
+ private hideEmpty;
50
51
  static ɵfac: i0.ɵɵFactoryDeclaration<MdsViewerComponent, never>;
51
52
  static ɵcmp: i0.ɵɵComponentDeclaration<MdsViewerComponent, "es-mds-viewer", never, { "mdsEditorInstanceService": { "alias": "mdsEditorInstanceService"; "required": false; }; "groupId": { "alias": "groupId"; "required": false; }; "setId": { "alias": "setId"; "required": false; }; "data": { "alias": "data"; "required": false; }; "mds": { "alias": "mds"; "required": false; }; "showGroupHeadings": { "alias": "showGroupHeadings"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; }, {}, never, never, false, never>;
52
53
  }
@@ -1,12 +1,25 @@
1
1
  import { ElementRef, QueryList } from '@angular/core';
2
- import { MdsDefinition } from 'ngx-edu-sharing-api';
2
+ import { MdsDefinition, MdsWidget } from 'ngx-edu-sharing-api';
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
  import { Values } from '../services/search-helper.service';
5
+ import { TranslateService } from '@ngx-translate/core';
5
6
  import * as i0 from "@angular/core";
6
7
  export declare class MdsViewerService {
8
+ private translate;
7
9
  container: QueryList<ElementRef>;
8
10
  values$: BehaviorSubject<Values>;
9
11
  mds$: BehaviorSubject<MdsDefinition>;
12
+ constructor(translate: TranslateService);
13
+ getFormattedValue(value: string[], definition: MdsWidget, basicType: string): string[];
14
+ private formatVCard;
15
+ private formatDate;
16
+ private formatText;
17
+ private formatNumber;
18
+ /**
19
+ * returns the basic type for a widget definition
20
+ * @param flat (flatten trees?)
21
+ */
22
+ static getBasicType(definition: MdsWidget, flat?: boolean): string;
10
23
  static ɵfac: i0.ɵɵFactoryDeclaration<MdsViewerService, never>;
11
24
  static ɵprov: i0.ɵɵInjectableDeclaration<MdsViewerService>;
12
25
  }
@@ -1,10 +1,10 @@
1
- import { ElementRef, Injector, OnChanges, OnInit, SimpleChanges } from '@angular/core';
1
+ import { ElementRef, Injector, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
3
  import { MatRipple } from '@angular/material/core';
4
4
  import { MdsValue, MdsWidget, Suggestion } from 'ngx-edu-sharing-api';
5
5
  import { UIService } from '../../services/ui.service';
6
6
  import { ViewInstanceService } from '../view-instance.service';
7
- import { BehaviorSubject } from 'rxjs';
7
+ import { BehaviorSubject, Subject } from 'rxjs';
8
8
  import { MdsViewerService } from '../mds-viewer.service';
9
9
  import { NodeHelperService } from '../../services/node-helper.service';
10
10
  import { MdsEditorInstanceServiceAbstract } from '../mds-editor-instance-service.abstract';
@@ -23,10 +23,11 @@ export declare enum MdsType {
23
23
  export interface MdsValueList {
24
24
  values: Suggestion[];
25
25
  }
26
- export interface MdsViewerWidget {
26
+ export declare abstract class MdsViewerWidget {
27
27
  definition: MdsWidget;
28
- getInitalValuesAsync(): Promise<InitialValues>;
29
- getInitialDisplayValues(): BehaviorSubject<MdsValueList>;
28
+ focusTrigger: Subject<void>;
29
+ abstract getInitalValuesAsync(): Promise<InitialValues>;
30
+ abstract getInitialDisplayValues(): BehaviorSubject<MdsValueList>;
30
31
  }
31
32
  export declare enum MdsWidgetType {
32
33
  Text = "text",
@@ -55,7 +56,8 @@ export declare enum MdsWidgetType {
55
56
  SingleValueSuggestBadges = "singlevalueSuggestBadges",
56
57
  MultiValueTree = "multivalueTree",
57
58
  DefaultValue = "defaultvalue",
58
- FacetList = "facetList"
59
+ FacetList = "facetList",
60
+ Toggle = "toggle"
59
61
  }
60
62
  export interface InitialValues {
61
63
  /** Values that are initially present in all nodes. */
@@ -72,8 +74,8 @@ export declare enum ValueType {
72
74
  MultiValue = 1,
73
75
  Range = 2
74
76
  }
75
- export declare class MdsWidgetComponent implements OnInit, OnChanges {
76
- private mdsEditorInstance;
77
+ export declare class MdsWidgetComponent implements OnInit, OnDestroy, OnChanges {
78
+ mdsEditorInstance: MdsEditorInstanceServiceAbstract;
77
79
  translate: TranslateService;
78
80
  private ui;
79
81
  private viewInstance;
@@ -81,6 +83,8 @@ export declare class MdsWidgetComponent implements OnInit, OnChanges {
81
83
  private injector;
82
84
  private nodeHelper;
83
85
  readonly ROUTER_PREFIX: string;
86
+ readonly focusTrigger: Subject<void>;
87
+ readonly destroyed$: Subject<void>;
84
88
  private static readonly inlineEditing;
85
89
  readonly valueType = ValueType.String;
86
90
  widget: MdsViewerWidget;
@@ -107,18 +111,16 @@ export declare class MdsWidgetComponent implements OnInit, OnChanges {
107
111
  value: import("@angular/core").WritableSignal<string[]>;
108
112
  private temporaryValue;
109
113
  constructor(mdsEditorInstance: MdsEditorInstanceServiceAbstract, translate: TranslateService, ui: UIService, viewInstance: ViewInstanceService, mdsViewerService: MdsViewerService, injector: Injector, nodeHelper: NodeHelperService);
114
+ ngOnDestroy(): void;
110
115
  ngOnChanges(changes: SimpleChanges): Promise<void>;
111
116
  ngOnInit(): Promise<void>;
112
117
  getDefinition(): MdsWidget;
113
- getBasicType(): "number" | "text" | "date" | "vcard" | "slider" | "range" | "duration" | "license" | "array" | "tree" | "unknown";
114
118
  supportsInlineEditing(): boolean;
115
119
  private getNodeValues;
116
120
  private getNodeValue;
117
121
  getValue(data: string[]): any[];
118
122
  click(): void;
119
- formatDate(): string[];
120
- formatNumber(): string[];
121
- formatText(): string[];
123
+ formatValue(): string[];
122
124
  finishEdit(instance: any, store?: boolean): Promise<void>;
123
125
  isEditable(): boolean;
124
126
  focus(): Promise<void>;
@@ -132,7 +134,7 @@ export declare class MdsWidgetComponent implements OnInit, OnChanges {
132
134
  */
133
135
  private getRawValue;
134
136
  getSearchParams(key: MdsValue): any;
135
- startEdit(event: MouseEvent): void;
137
+ startEdit(event?: MouseEvent): void;
136
138
  static ɵfac: i0.ɵɵFactoryDeclaration<MdsWidgetComponent, [{ optional: true; }, null, null, null, null, null, null]>;
137
139
  static ɵcmp: i0.ɵɵComponentDeclaration<MdsWidgetComponent, "es-mds-widget", never, { "widget": { "alias": "widget"; "required": false; }; "showCaption": { "alias": "showCaption"; "required": false; }; "inlineEditing": { "alias": "inlineEditing"; "required": false; }; "definition": { "alias": "definition"; "required": false; }; "view": { "alias": "view"; "required": false; }; }, {}, never, never, false, never>;
138
140
  }
@@ -3,7 +3,7 @@ import { SelectionModel } from '@angular/cdk/collections';
3
3
  import { CustomOptions, OptionItem, Target } from '../types/option-item';
4
4
  import { ListItem, ListItemSort } from '../types/list-item';
5
5
  import { CanDrop, DragData, DropAction } from '../types/drag-drop';
6
- import { Node, GenericAuthority } from 'ngx-edu-sharing-api';
6
+ import { GenericAuthority, Node } from 'ngx-edu-sharing-api';
7
7
  import { ActionbarComponent } from '../actionbar/actionbar.component';
8
8
  import { Observable } from 'rxjs';
9
9
  export type NodeRoot = 'MY_FILES' | 'COLLECTION_HOME' | 'SHARED_FILES' | 'MY_SHARED_FILES' | 'TO_ME_SHARED_FILES' | 'WORKFLOW_RECEIVE' | 'RECYCLE' | 'ALL_FILES';
@@ -75,13 +75,24 @@ export type GridConfig = {
75
75
  */
76
76
  layout?: GridLayout;
77
77
  };
78
+ export type TableConfig = {
79
+ dataColumnWidth?: number;
80
+ /**
81
+ * how the columns should be shown (in table mode)
82
+ * limit: limits the max amount based on the avgColumnWidth
83
+ * scroll: horizontal scrolling
84
+ */
85
+ dataColumnLayout: 'scroll' | 'limit';
86
+ };
78
87
  export interface ListEventInterface<T extends NodeEntriesDataType> {
79
88
  updateNodes(nodes: void | T[]): void;
80
89
  onDisplayTypeChange(): Observable<NodeEntriesDisplayType>;
81
90
  getDisplayType(): NodeEntriesDisplayType;
82
91
  setDisplayType(displayType: NodeEntriesDisplayType): void;
83
92
  showReorderColumnsDialog(): void;
84
- addVirtualNodes(virtual: T[]): void;
93
+ addVirtualNodes(virtual: T[], options?: {
94
+ select: boolean;
95
+ }): void;
85
96
  setOptions(options: ListOptions): void;
86
97
  /**
87
98
  * activate option (dropdown) generation
@@ -11,7 +11,6 @@ import { SortSelectPanelComponent } from '../sort-select-panel/sort-select-panel
11
11
  import { Target } from '../../types/option-item';
12
12
  import { NodeEntriesService } from '../../services/node-entries.service';
13
13
  import { UIService } from '../../services/ui.service';
14
- import { ListItemSort } from '../../types/list-item';
15
14
  import { DragData } from '../../types/drag-drop';
16
15
  import { CdkOverlayOrigin } from '@angular/cdk/overlay';
17
16
  import { NodeHelperService } from '../../services/node-helper.service';
@@ -82,7 +81,6 @@ export declare class NodeEntriesCardGridComponent<T extends Node> implements OnI
82
81
  private focusOnce;
83
82
  onGridSizeChanges(): void;
84
83
  private getItemsPerRow;
85
- getSortColumns(): ListItemSort[];
86
84
  canDropNodes: (dragData: DragData<T>) => import("../../types/drag-drop").CanDrop;
87
85
  onNodesDropped(dragData: DragData<Node>): void;
88
86
  getDragEnabled(): rxjs.Observable<boolean>;
@@ -49,6 +49,9 @@ export declare class NodeEntriesGlobalService {
49
49
  * Registers a custom (node) attribute you want to render via the given template.
50
50
  *
51
51
  * You may also override existing attributes if you want to provide a custom view.
52
+ * each template gets two bindings:
53
+ * node: the current node
54
+ * entriesService: the injected service which provides state & config infos of the current view *
52
55
  */
53
56
  registerCustomFieldRendering(customFieldInfo: CustomFieldInfo): void;
54
57
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeEntriesGlobalService, never>;
@@ -1,8 +1,8 @@
1
1
  import { CdkOverlayOrigin } from '@angular/cdk/overlay';
2
- import { AfterViewInit, ApplicationRef, ChangeDetectorRef, ElementRef, NgZone, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
2
+ import { AfterViewInit, ApplicationRef, ChangeDetectorRef, ElementRef, NgZone, OnChanges, OnDestroy, SimpleChanges, TemplateRef } from '@angular/core';
3
3
  import { MatMenuTrigger } from '@angular/material/menu';
4
4
  import { MatPaginator } from '@angular/material/paginator';
5
- import { MatSort } from '@angular/material/sort';
5
+ import { MatSort, Sort } from '@angular/material/sort';
6
6
  import * as rxjs from 'rxjs';
7
7
  import { Observable } from 'rxjs';
8
8
  import { ClickSource, InteractionType, NodeEntriesDataType, NodeEntriesDisplayType } from '../entries-model';
@@ -17,12 +17,14 @@ import { Toast } from '../../services/abstract/toast.service';
17
17
  import { DropdownComponent } from '../../dropdown/dropdown.component';
18
18
  import { TranslationsService } from '../../translations/translations.service';
19
19
  import { NodeHelperService } from '../../services/node-helper.service';
20
+ import { NodeEntriesTemplatesService } from '../node-entries-templates.service';
20
21
  import * as i0 from "@angular/core";
21
22
  export declare class NodeEntriesTableComponent<T extends NodeEntriesDataType> implements OnChanges, AfterViewInit, OnDestroy {
22
23
  entriesService: NodeEntriesService<T>;
23
24
  entriesGlobalService: NodeEntriesGlobalService;
24
25
  private applicationRef;
25
26
  private toast;
27
+ templatesService: NodeEntriesTemplatesService;
26
28
  private translations;
27
29
  private nodeHelperService;
28
30
  private changeDetectorRef;
@@ -38,6 +40,8 @@ export declare class NodeEntriesTableComponent<T extends NodeEntriesDataType> im
38
40
  columnChooserTrigger: CdkOverlayOrigin;
39
41
  dropdown: DropdownComponent;
40
42
  menuTrigger: MatMenuTrigger;
43
+ isScroll: boolean;
44
+ set gridTop(value: TemplateRef<unknown>);
41
45
  dropdownLeft: number;
42
46
  dropdownTop: number;
43
47
  loading: Observable<boolean>;
@@ -49,10 +53,12 @@ export declare class NodeEntriesTableComponent<T extends NodeEntriesDataType> im
49
53
  pageSizeOptions: number[];
50
54
  isDragging: boolean;
51
55
  private readonly maximumColumnsNumber$;
56
+ readonly hasHiddenSortColumns$: rxjs.BehaviorSubject<boolean>;
52
57
  readonly visibleDataColumns$: rxjs.Observable<ListItem[]>;
53
58
  readonly visibleColumnNames$: rxjs.Observable<string[]>;
54
59
  private destroyed;
55
- constructor(entriesService: NodeEntriesService<T>, entriesGlobalService: NodeEntriesGlobalService, applicationRef: ApplicationRef, toast: Toast, translations: TranslationsService, nodeHelperService: NodeHelperService, changeDetectorRef: ChangeDetectorRef, ui: UIService, ngZone: NgZone, elementRef: ElementRef<HTMLElement>);
60
+ containerWidth$: rxjs.BehaviorSubject<number>;
61
+ constructor(entriesService: NodeEntriesService<T>, entriesGlobalService: NodeEntriesGlobalService, applicationRef: ApplicationRef, toast: Toast, templatesService: NodeEntriesTemplatesService, translations: TranslationsService, nodeHelperService: NodeHelperService, changeDetectorRef: ChangeDetectorRef, ui: UIService, ngZone: NgZone, elementRef: ElementRef<HTMLElement>);
56
62
  ngAfterViewInit(): void;
57
63
  ngOnChanges(changes: SimpleChanges): void;
58
64
  ngOnDestroy(): void;
@@ -67,6 +73,7 @@ export declare class NodeEntriesTableComponent<T extends NodeEntriesDataType> im
67
73
  private getVisibleColumnNames;
68
74
  isSortable(column: ListItem): boolean;
69
75
  toggleAll(checked: boolean): void;
76
+ private registerGridTop;
70
77
  private registerSortChanges;
71
78
  canDrop: (dragData: DragData<T>) => CanDrop;
72
79
  drop(dragData: DragData<Node>): void;
@@ -76,6 +83,7 @@ export declare class NodeEntriesTableComponent<T extends NodeEntriesDataType> im
76
83
  loadData(source: 'scroll' | 'button'): void;
77
84
  openMenu(node: T): Promise<void>;
78
85
  isBlocked(node: Node): boolean;
86
+ selectSortChange(sort: Sort): void;
79
87
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeEntriesTableComponent<any>, never>;
80
88
  static ɵcmp: i0.ɵɵComponentDeclaration<NodeEntriesTableComponent<any>, "es-node-entries-table", never, {}, {}, never, never, false, never>;
81
89
  }
@@ -22,6 +22,10 @@ export declare class NodeEntriesTemplatesService {
22
22
  * custom container for showing an overlay across each element
23
23
  */
24
24
  overlay: TemplateRef<any>;
25
+ /**
26
+ * custom container for showing an own card layout
27
+ */
28
+ customCard: TemplateRef<any>;
25
29
  constructor();
26
30
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeEntriesTemplatesService, never>;
27
31
  static ɵprov: i0.ɵɵInjectableDeclaration<NodeEntriesTemplatesService>;
@@ -1,7 +1,7 @@
1
1
  import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, OnDestroy, OnInit, SimpleChange, TemplateRef, Type, ViewContainerRef } from '@angular/core';
2
2
  import { NodeEntriesTemplatesService } from './node-entries-templates.service';
3
3
  import { NodeEntriesComponent } from './node-entries.component';
4
- import { FetchEvent, GridConfig, InteractionType, ListDragGropConfig, ListEventInterface, ListOptions, ListOptionsConfig, ListSortConfig, NodeClickEvent, NodeEntriesDataType, NodeEntriesDisplayType } from './entries-model';
4
+ import { FetchEvent, GridConfig, InteractionType, ListDragGropConfig, ListEventInterface, ListOptions, ListOptionsConfig, ListSortConfig, NodeClickEvent, NodeEntriesDataType, NodeEntriesDisplayType, TableConfig } from './entries-model';
5
5
  import { NodeDataSource } from './node-data-source';
6
6
  import { CustomSelectionModel, NodeEntriesService } from '../services/node-entries.service';
7
7
  import { OptionItem, Scope } from '../types/option-item';
@@ -11,6 +11,7 @@ import { TemporaryStorageService } from '../services/temporary-storage.service';
11
11
  import { Node, NodeService } from 'ngx-edu-sharing-api';
12
12
  import { OptionsHelperDataService } from '../services/options-helper-data.service';
13
13
  import { UIService } from '../services/ui.service';
14
+ import { ColumnType } from '../mds/mds-helper.service';
14
15
  import * as i0 from "@angular/core";
15
16
  export declare class NodeEntriesWrapperComponent<T extends NodeEntriesDataType> implements AfterViewInit, OnInit, OnChanges, OnDestroy, ListEventInterface<T> {
16
17
  private viewContainerRef;
@@ -40,10 +41,14 @@ export declare class NodeEntriesWrapperComponent<T extends NodeEntriesDataType>
40
41
  * custom area for an overlay "above" each card (i.e. to show disabled infos), only for NodeEntriesDisplayType.SmallGrid & odeEntriesDisplayType.Grid
41
42
  */
42
43
  overlayRef: TemplateRef<any>;
44
+ /**
45
+ * custom card template for each card only for NodeEntriesDisplayType.Grid
46
+ */
47
+ customCard: TemplateRef<any>;
43
48
  nodeEntriesComponentRef: NodeEntriesComponent<T>;
44
49
  dataSource: NodeDataSource<T>;
45
50
  scope: Scope;
46
- columns: ListItem[];
51
+ columns: ColumnType;
47
52
  configureColumns: boolean;
48
53
  checkbox: boolean;
49
54
  /**
@@ -58,6 +63,7 @@ export declare class NodeEntriesWrapperComponent<T extends NodeEntriesDataType>
58
63
  sort: ListSortConfig;
59
64
  dragDrop: ListDragGropConfig<T>;
60
65
  gridConfig: GridConfig;
66
+ tableConfig: TableConfig;
61
67
  /**
62
68
  * This color defines the base color of gradients visually limiting a grid in scroll direction.
63
69
  * Defaults to white.
@@ -94,6 +100,10 @@ export declare class NodeEntriesWrapperComponent<T extends NodeEntriesDataType>
94
100
  * Do not load more data on scroll.
95
101
  */
96
102
  disableInfiniteScroll: boolean;
103
+ /**
104
+ * show the icon column (table view only)
105
+ */
106
+ showIconColumn: boolean;
97
107
  fetchData: EventEmitter<FetchEvent>;
98
108
  clickItem: EventEmitter<NodeClickEvent<T>>;
99
109
  dblClickItem: EventEmitter<NodeClickEvent<T>>;
@@ -102,7 +112,9 @@ export declare class NodeEntriesWrapperComponent<T extends NodeEntriesDataType>
102
112
  displayTypeChanged: EventEmitter<NodeEntriesDisplayType>;
103
113
  customNodeListComponent: Type<NodeEntriesComponent<T>>;
104
114
  private componentRef;
115
+ lastLoadingCompleted: number;
105
116
  private options;
117
+ private dataSourceDestroy$;
106
118
  private destroyed;
107
119
  constructor(viewContainerRef: ViewContainerRef, temporaryStorageService: TemporaryStorageService, ngZone: NgZone, entriesService: NodeEntriesService<T>, nodeService: NodeService, optionsHelper: OptionsHelperDataService, nodeHelperService: NodeHelperService, uiService: UIService, templatesService: NodeEntriesTemplatesService, changeDetectorRef: ChangeDetectorRef, elementRef: ElementRef);
108
120
  ngOnInit(): void;
@@ -123,7 +135,9 @@ export declare class NodeEntriesWrapperComponent<T extends NodeEntriesDataType>
123
135
  setDisplayType(displayType: NodeEntriesDisplayType): void;
124
136
  updateNodes(nodes: void | T[]): void;
125
137
  showReorderColumnsDialog(): void;
126
- addVirtualNodes(virtual: T[]): void;
138
+ addVirtualNodes(virtual: T[], options?: {
139
+ select: boolean;
140
+ }): void;
127
141
  setOptions(options: ListOptions): void;
128
142
  selectAll(): void;
129
143
  getSelection(): CustomSelectionModel<T>;
@@ -137,5 +151,5 @@ export declare class NodeEntriesWrapperComponent<T extends NodeEntriesDataType>
137
151
  resetPagination(): void;
138
152
  deleteNodes(objects: T[]): void;
139
153
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeEntriesWrapperComponent<any>, never>;
140
- static ɵcmp: i0.ɵɵComponentDeclaration<NodeEntriesWrapperComponent<any>, "es-node-entries-wrapper", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "scope": { "alias": "scope"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "configureColumns": { "alias": "configureColumns"; "required": false; }; "checkbox": { "alias": "checkbox"; "required": false; }; "globalOptions": { "alias": "globalOptions"; "required": false; }; "displayType": { "alias": "displayType"; "required": false; }; "elementInteractionType": { "alias": "elementInteractionType"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "dragDrop": { "alias": "dragDrop"; "required": false; }; "gridConfig": { "alias": "gridConfig"; "required": false; }; "scrollGradientColor": { "alias": "scrollGradientColor"; "required": false; }; "initConfig": { "alias": "initConfig"; "required": false; }; "primaryInstance": { "alias": "primaryInstance"; "required": false; }; "singleClickHint": { "alias": "singleClickHint"; "required": false; }; "disableInfiniteScroll": { "alias": "disableInfiniteScroll"; "required": false; }; }, { "columnsChange": "columnsChange"; "displayTypeChange": "displayTypeChange"; "fetchData": "fetchData"; "clickItem": "clickItem"; "dblClickItem": "dblClickItem"; "sortChange": "sortChange"; "virtualNodesAdded": "virtualNodesAdded"; "displayTypeChanged": "displayTypeChanged"; }, ["titleRef", "emptyRef", "actionAreaRef", "overlayRef"], never, false, never>;
154
+ static ɵcmp: i0.ɵɵComponentDeclaration<NodeEntriesWrapperComponent<any>, "es-node-entries-wrapper", never, { "dataSource": { "alias": "dataSource"; "required": false; }; "scope": { "alias": "scope"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "configureColumns": { "alias": "configureColumns"; "required": false; }; "checkbox": { "alias": "checkbox"; "required": false; }; "globalOptions": { "alias": "globalOptions"; "required": false; }; "displayType": { "alias": "displayType"; "required": false; }; "elementInteractionType": { "alias": "elementInteractionType"; "required": false; }; "sort": { "alias": "sort"; "required": false; }; "dragDrop": { "alias": "dragDrop"; "required": false; }; "gridConfig": { "alias": "gridConfig"; "required": false; }; "tableConfig": { "alias": "tableConfig"; "required": false; }; "scrollGradientColor": { "alias": "scrollGradientColor"; "required": false; }; "initConfig": { "alias": "initConfig"; "required": false; }; "primaryInstance": { "alias": "primaryInstance"; "required": false; }; "singleClickHint": { "alias": "singleClickHint"; "required": false; }; "disableInfiniteScroll": { "alias": "disableInfiniteScroll"; "required": false; }; "showIconColumn": { "alias": "showIconColumn"; "required": false; }; }, { "columnsChange": "columnsChange"; "displayTypeChange": "displayTypeChange"; "fetchData": "fetchData"; "clickItem": "clickItem"; "dblClickItem": "dblClickItem"; "sortChange": "sortChange"; "virtualNodesAdded": "virtualNodesAdded"; "displayTypeChanged": "displayTypeChanged"; }, ["titleRef", "emptyRef", "actionAreaRef", "overlayRef", "customCard"], never, false, never>;
141
155
  }
@@ -38,6 +38,6 @@ import * as i36 from "@angular/material/tooltip";
38
38
  import * as i37 from "@ngx-translate/core";
39
39
  export declare class NodeEntriesModule {
40
40
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeEntriesModule, never>;
41
- static ɵmod: i0.ɵɵNgModuleDeclaration<NodeEntriesModule, [typeof i1.ColumnChooserComponent, typeof i2.DragPreviewComponent, typeof i3.ListItemLabelPipe, typeof i4.NodeEntriesCardComponent, typeof i5.NodeEntriesCardGridComponent, typeof i6.NodeEntriesCardSmallComponent, typeof i7.NodeEntriesTableComponent, typeof i8.NodeRatingComponent, typeof i9.PreviewImageComponent, typeof i10.NodeEntriesComponent, typeof i11.NodeEntriesWrapperComponent, typeof i8.NodeRatingComponent, typeof i12.NodeTypeBadgeComponent, typeof i13.OptionButtonComponent, typeof i9.PreviewImageComponent, typeof i14.SortSelectPanelComponent, typeof i15.NodesDragDirective, typeof i16.NodesDragSourceDirective, typeof i17.NodesDropTargetDirective, typeof i18.NodeEntriesGlobalOptionsComponent, typeof i19.NodeStatsBadgesComponent], [typeof i20.CommonModule, typeof i21.FormsModule, typeof i22.A11yModule, typeof i23.OverlayModule, typeof i24.DragDropModule, typeof i25.EduSharingUiCommonModule, typeof i26.ListItemsModule, typeof i27.MatCheckboxModule, typeof i28.MatButtonModule, typeof i29.MatBadgeModule, typeof i30.MatMenuModule, typeof i31.MatTableModule, typeof i27.MatCheckboxModule, typeof i32.MatPaginatorModule, typeof i33.MatRippleModule, typeof i34.MatSlideToggleModule, typeof i35.MatSortModule, typeof i36.MatTooltipModule, typeof i37.TranslateModule], [typeof i11.NodeEntriesWrapperComponent, typeof i15.NodesDragDirective, typeof i16.NodesDragSourceDirective, typeof i17.NodesDropTargetDirective, typeof i3.ListItemLabelPipe]>;
41
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NodeEntriesModule, [typeof i1.ColumnChooserComponent, typeof i2.DragPreviewComponent, typeof i3.ListItemLabelPipe, typeof i4.NodeEntriesCardComponent, typeof i5.NodeEntriesCardGridComponent, typeof i6.NodeEntriesCardSmallComponent, typeof i7.NodeEntriesTableComponent, typeof i8.NodeRatingComponent, typeof i9.PreviewImageComponent, typeof i10.NodeEntriesComponent, typeof i11.NodeEntriesWrapperComponent, typeof i8.NodeRatingComponent, typeof i12.NodeTypeBadgeComponent, typeof i13.OptionButtonComponent, typeof i9.PreviewImageComponent, typeof i14.SortSelectPanelComponent, typeof i15.NodesDragDirective, typeof i16.NodesDragSourceDirective, typeof i17.NodesDropTargetDirective, typeof i18.NodeEntriesGlobalOptionsComponent, typeof i19.NodeStatsBadgesComponent], [typeof i20.CommonModule, typeof i21.FormsModule, typeof i22.A11yModule, typeof i23.OverlayModule, typeof i24.DragDropModule, typeof i25.EduSharingUiCommonModule, typeof i26.ListItemsModule, typeof i27.MatCheckboxModule, typeof i28.MatButtonModule, typeof i29.MatBadgeModule, typeof i30.MatMenuModule, typeof i31.MatTableModule, typeof i27.MatCheckboxModule, typeof i32.MatPaginatorModule, typeof i33.MatRippleModule, typeof i34.MatSlideToggleModule, typeof i35.MatSortModule, typeof i36.MatTooltipModule, typeof i37.TranslateModule], [typeof i3.ListItemLabelPipe, typeof i11.NodeEntriesWrapperComponent, typeof i8.NodeRatingComponent, typeof i15.NodesDragDirective, typeof i16.NodesDragSourceDirective, typeof i17.NodesDropTargetDirective, typeof i19.NodeStatsBadgesComponent, typeof i12.NodeTypeBadgeComponent]>;
42
42
  static ɵinj: i0.ɵɵInjectorDeclaration<NodeEntriesModule>;
43
43
  }
@@ -2,6 +2,8 @@ import { OnChanges } from '@angular/core';
2
2
  import { Node } from 'ngx-edu-sharing-api';
3
3
  import { NodeEntriesGlobalService } from '../node-entries-global.service';
4
4
  import { NodeHelperService } from '../../services/node-helper.service';
5
+ import { NodeEntriesService } from '../../services/node-entries.service';
6
+ import { NodeEntriesDataType } from '../entries-model';
5
7
  import * as i0 from "@angular/core";
6
8
  /**
7
9
  * A small circular badge that depicts the node's type.
@@ -11,11 +13,18 @@ import * as i0 from "@angular/core";
11
13
  export declare class NodeTypeBadgeComponent implements OnChanges {
12
14
  nodeHelper: NodeHelperService;
13
15
  private nodeEntriesGlobalService;
14
- node: Node;
16
+ nodeEntriesService: NodeEntriesService<Node>;
17
+ node: NodeEntriesDataType;
18
+ /**
19
+ * when true, collection icons will resolve based on their type (editorial, private...)
20
+ * When false, the generic svg image is used
21
+ */
22
+ collectionIcons: boolean;
15
23
  isCollection: boolean;
16
- constructor(nodeHelper: NodeHelperService, nodeEntriesGlobalService: NodeEntriesGlobalService);
24
+ constructor(nodeHelper: NodeHelperService, nodeEntriesGlobalService: NodeEntriesGlobalService, nodeEntriesService: NodeEntriesService<Node>);
17
25
  ngOnChanges(): void;
18
26
  getCustomTemplate(): import("@angular/core").TemplateRef<unknown>;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<NodeTypeBadgeComponent, never>;
20
- static ɵcmp: i0.ɵɵComponentDeclaration<NodeTypeBadgeComponent, "es-node-type-badge", never, { "node": { "alias": "node"; "required": false; }; }, {}, never, never, false, never>;
27
+ materialIcon(): "group" | "person";
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<NodeTypeBadgeComponent, [null, null, { optional: true; }]>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<NodeTypeBadgeComponent, "es-node-type-badge", never, { "node": { "alias": "node"; "required": false; }; "collectionIcons": { "alias": "collectionIcons"; "required": false; }; }, {}, never, never, false, never>;
21
30
  }
@@ -18,7 +18,7 @@ export declare class NodeImagePipe implements PipeTransform {
18
18
  private repoUrlService;
19
19
  private networkApi;
20
20
  constructor(nodeHelper: NodeHelperService, sanitizer: DomSanitizer, repoUrlService: RepoUrlService, networkApi: NetworkService);
21
- transform(node: Node, preferences: NodeImagePreferences): Observable<SafeResourceUrl>;
21
+ transform(node: Node, preferences?: NodeImagePreferences): Observable<SafeResourceUrl>;
22
22
  private getPreviewUrl;
23
23
  private isEduSharingNode;
24
24
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeImagePipe, never>;
@@ -1,11 +1,11 @@
1
1
  import { SelectionModel } from '@angular/cdk/collections';
2
2
  import { EventEmitter, WritableSignal } from '@angular/core';
3
3
  import { BehaviorSubject } from 'rxjs';
4
- import { ClickSource, FetchEvent, GridConfig, InteractionType, ListDragGropConfig, ListEventInterface, ListOptions, ListSortConfig, NodeClickEvent, NodeEntriesDataType, NodeEntriesDisplayType } from '../node-entries/entries-model';
4
+ import { ClickSource, FetchEvent, GridConfig, InteractionType, ListDragGropConfig, ListEventInterface, ListOptions, ListSortConfig, NodeClickEvent, NodeEntriesDataType, NodeEntriesDisplayType, TableConfig } from '../node-entries/entries-model';
5
5
  import { NodeDataSource } from '../node-entries/node-data-source';
6
6
  import { NodeEntriesGlobalService, PaginationStrategy } from '../node-entries/node-entries-global.service';
7
7
  import { OptionItem, Scope } from '../types/option-item';
8
- import { ListItem } from '../types/list-item';
8
+ import { ListItem, ListItemSort } from '../types/list-item';
9
9
  import { UIService } from './ui.service';
10
10
  import { DropdownComponent } from '../dropdown/dropdown.component';
11
11
  import { Toast } from './abstract/toast.service';
@@ -79,11 +79,15 @@ export declare class NodeEntriesService<T extends NodeEntriesDataType> {
79
79
  dblClickItem: EventEmitter<NodeClickEvent<T>>;
80
80
  fetchData: EventEmitter<FetchEvent>;
81
81
  readonly gridConfig$: BehaviorSubject<GridConfig>;
82
+ readonly tableConfig$: BehaviorSubject<TableConfig>;
82
83
  get gridConfig(): GridConfig;
83
84
  set gridConfig(value: GridConfig);
85
+ get tableConfig(): TableConfig;
86
+ set tableConfig(value: TableConfig);
84
87
  primaryInstance: boolean;
85
88
  singleClickHint: 'dynamic' | 'static';
86
89
  disableInfiniteScroll: boolean;
90
+ showIconColumn: BehaviorSubject<boolean>;
87
91
  scrollGradientColor: WritableSignal<string>;
88
92
  constructor(uiService: UIService, toast: Toast, entriesGlobal: NodeEntriesGlobalService);
89
93
  onClicked({ event, ...data }: NodeClickEvent<T> & {
@@ -96,6 +100,7 @@ export declare class NodeEntriesService<T extends NodeEntriesDataType> {
96
100
  private isAllSelected;
97
101
  private expandSelectionTo;
98
102
  openDropdown(dropdown: DropdownComponent, node: T, onDone?: () => void): void;
103
+ getSortColumns(): ListItemSort[];
99
104
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeEntriesService<any>, never>;
100
105
  static ɵprov: i0.ɵɵInjectableDeclaration<NodeEntriesService<any>>;
101
106
  }