ngx-edu-sharing-ui 9999.0.2 → 9999.0.3

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 (44) hide show
  1. package/esm2022/lib/actionbar/actionbar.component.mjs +31 -16
  2. package/esm2022/lib/directives/icon.directive.mjs +24 -7
  3. package/esm2022/lib/dropdown/dropdown.component.mjs +15 -8
  4. package/esm2022/lib/node-entries/drag-preview/drag-preview.component.mjs +3 -3
  5. package/esm2022/lib/node-entries/entries-model.mjs +1 -1
  6. package/esm2022/lib/node-entries/node-entries-card/node-entries-card.component.mjs +6 -4
  7. package/esm2022/lib/node-entries/node-entries-card-grid/node-entries-card-grid.component.mjs +12 -9
  8. package/esm2022/lib/node-entries/node-entries-card-small/node-entries-card-small.component.mjs +2 -2
  9. package/esm2022/lib/node-entries/node-entries-table/node-entries-table.component.mjs +5 -3
  10. package/esm2022/lib/node-entries/node-entries-wrapper.component.mjs +8 -3
  11. package/esm2022/lib/node-entries/option-button/option-button.component.mjs +7 -5
  12. package/esm2022/lib/pipes/file-size.pipe.mjs +6 -5
  13. package/esm2022/lib/pipes/node-title.pipe.mjs +7 -1
  14. package/esm2022/lib/pipes/option-tooltip.pipe.mjs +3 -3
  15. package/esm2022/lib/services/abstract/options-helper.service.mjs +1 -1
  16. package/esm2022/lib/services/node-helper.service.mjs +5 -2
  17. package/esm2022/lib/services/options-helper-data.service.mjs +2 -2
  18. package/esm2022/lib/services/search-helper.service.mjs +52 -0
  19. package/esm2022/lib/services/ui.service.mjs +16 -1
  20. package/esm2022/lib/translations/translation-loader.mjs +7 -6
  21. package/esm2022/lib/translations/translations.service.mjs +14 -4
  22. package/esm2022/lib/types/option-item.mjs +6 -1
  23. package/esm2022/module.mjs +2 -1
  24. package/fesm2022/ngx-edu-sharing-ui.mjs +208 -68
  25. package/fesm2022/ngx-edu-sharing-ui.mjs.map +1 -1
  26. package/lib/actionbar/actionbar.component.d.ts +13 -3
  27. package/lib/directives/icon.directive.d.ts +5 -3
  28. package/lib/dropdown/dropdown.component.d.ts +6 -3
  29. package/lib/list-items/list-text/list-text.component.d.ts +1 -1
  30. package/lib/list-items/list-widget.d.ts +1 -1
  31. package/lib/node-entries/entries-model.d.ts +1 -1
  32. package/lib/node-entries/node-entries-card/node-entries-card.component.d.ts +1 -1
  33. package/lib/node-entries/option-button/option-button.component.d.ts +2 -1
  34. package/lib/pipes/node-title.pipe.d.ts +2 -1
  35. package/lib/pipes/option-tooltip.pipe.d.ts +1 -1
  36. package/lib/services/abstract/options-helper.service.d.ts +1 -1
  37. package/lib/services/node-helper.service.d.ts +2 -2
  38. package/lib/services/options-helper-data.service.d.ts +3 -3
  39. package/lib/services/search-helper.service.d.ts +21 -0
  40. package/lib/services/ui.service.d.ts +7 -1
  41. package/lib/translations/translations.service.d.ts +5 -2
  42. package/lib/types/option-item.d.ts +7 -2
  43. package/module.d.ts +1 -0
  44. package/package.json +1 -1
@@ -2,6 +2,8 @@ import { OnChanges, SimpleChanges } from '@angular/core';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
3
  import { OptionItem } from '../types/option-item';
4
4
  import { UIService } from '../services/ui.service';
5
+ import { TooltipPosition } from '@angular/material/tooltip';
6
+ import { BehaviorSubject } from 'rxjs';
5
7
  import * as i0 from "@angular/core";
6
8
  export declare class ActionbarComponent implements OnChanges {
7
9
  private uiService;
@@ -47,13 +49,21 @@ export declare class ActionbarComponent implements OnChanges {
47
49
  * Should disabled ("greyed out") options be shown or hidden?
48
50
  */
49
51
  showDisabled: boolean;
52
+ /**
53
+ * the position of the mat tooltips
54
+ */
55
+ tooltipPosition: TooltipPosition;
50
56
  /**
51
57
  * Set the options, see @OptionItem
52
58
  */
53
59
  set options(options: OptionItem[]);
60
+ /**
61
+ * breakpoint width at which point the mobile display count is used
62
+ */
63
+ mobileBreakpoint: number;
54
64
  optionsIn: OptionItem[];
55
- optionsAlways: OptionItem[];
56
- optionsMenu: OptionItem[];
65
+ optionsAlways$: BehaviorSubject<OptionItem[]>;
66
+ optionsMenu$: BehaviorSubject<OptionItem[]>;
57
67
  optionsToggle: OptionItem[];
58
68
  constructor(uiService: UIService, translate: TranslateService);
59
69
  private prepareOptions;
@@ -70,5 +80,5 @@ export declare class ActionbarComponent implements OnChanges {
70
80
  shouldHighlight(optionIndex: number, option: OptionItem): boolean;
71
81
  ngOnChanges(changes: SimpleChanges): void;
72
82
  static ɵfac: i0.ɵɵFactoryDeclaration<ActionbarComponent, never>;
73
- static ɵcmp: i0.ɵɵComponentDeclaration<ActionbarComponent, "es-actionbar", never, { "numberOfAlwaysVisibleOptions": { "alias": "numberOfAlwaysVisibleOptions"; "required": false; }; "numberOfAlwaysVisibleOptionsMobile": { "alias": "numberOfAlwaysVisibleOptionsMobile"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; "backgroundType": { "alias": "backgroundType"; "required": false; }; "style": { "alias": "style"; "required": false; }; "highlight": { "alias": "highlight"; "required": false; }; "showDisabled": { "alias": "showDisabled"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, {}, never, never, false, never>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionbarComponent, "es-actionbar", never, { "numberOfAlwaysVisibleOptions": { "alias": "numberOfAlwaysVisibleOptions"; "required": false; }; "numberOfAlwaysVisibleOptionsMobile": { "alias": "numberOfAlwaysVisibleOptionsMobile"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "dropdownPosition": { "alias": "dropdownPosition"; "required": false; }; "backgroundType": { "alias": "backgroundType"; "required": false; }; "style": { "alias": "style"; "required": false; }; "highlight": { "alias": "highlight"; "required": false; }; "showDisabled": { "alias": "showDisabled"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; "options": { "alias": "options"; "required": false; }; "mobileBreakpoint": { "alias": "mobileBreakpoint"; "required": false; }; }, {}, never, never, false, never>;
74
84
  }
@@ -1,4 +1,4 @@
1
- import { ElementRef, OnDestroy, OnInit } from '@angular/core';
1
+ import { ElementRef, OnDestroy, OnInit, Renderer2 } from '@angular/core';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
3
  import { ConfigService } from 'ngx-edu-sharing-api';
4
4
  import * as i0 from "@angular/core";
@@ -17,12 +17,14 @@ import * as i0 from "@angular/core";
17
17
  export declare class IconDirective implements OnInit, OnDestroy {
18
18
  private element;
19
19
  private translate;
20
+ private renderer;
20
21
  private config;
21
22
  private originalId$;
22
23
  private _id;
23
24
  private _aria;
24
25
  private altTextSpan;
25
26
  private isReady;
27
+ private svg;
26
28
  /**
27
29
  * An alt text to show to screen readers.
28
30
  *
@@ -34,13 +36,13 @@ export declare class IconDirective implements OnInit, OnDestroy {
34
36
  /** If true, an alt text (see above) will be set based on the icon. */
35
37
  set aria(aria: boolean);
36
38
  set esIcon(id: string);
37
- constructor(element: ElementRef<HTMLElement>, translate: TranslateService, config: ConfigService);
39
+ constructor(element: ElementRef<HTMLElement>, translate: TranslateService, renderer: Renderer2, config: ConfigService);
38
40
  ngOnInit(): Promise<void>;
39
41
  ngOnDestroy(): void;
40
42
  private setIcon;
41
43
  private updateAria;
42
44
  private setAltText;
43
45
  private insertAltTextSpan;
44
- static ɵfac: i0.ɵɵFactoryDeclaration<IconDirective, [null, null, { optional: true; }]>;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconDirective, [null, null, null, { optional: true; }]>;
45
47
  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>;
46
48
  }
@@ -1,17 +1,20 @@
1
+ import { OnChanges, SimpleChanges } from '@angular/core';
1
2
  import { MatMenu, MatMenuTrigger } from '@angular/material/menu';
2
3
  import { OptionItem } from '../types/option-item';
3
4
  import { UIService } from '../services/ui.service';
5
+ import { BehaviorSubject } from 'rxjs';
4
6
  import * as i0 from "@angular/core";
5
7
  /**
6
8
  * The dropdown is one base component of the action bar (showing more actions),
7
9
  * but can also be used standalone.
8
10
  */
9
- export declare class DropdownComponent {
11
+ export declare class DropdownComponent implements OnChanges {
10
12
  private ui;
11
13
  menu: MatMenu;
12
14
  menuTrigger: MatMenuTrigger;
13
15
  position: 'left' | 'right';
14
- set options(options: OptionItem[]);
16
+ options: OptionItem[];
17
+ options$: BehaviorSubject<OptionItem[]>;
15
18
  /**
16
19
  * The object that should be returned via the option's callback.
17
20
  *
@@ -29,8 +32,8 @@ export declare class DropdownComponent {
29
32
  * taken out of the host container by angular.
30
33
  */
31
34
  menuClass: string;
32
- _options: OptionItem[];
33
35
  constructor(ui: UIService);
36
+ ngOnChanges(changes?: SimpleChanges): void;
34
37
  click(option: OptionItem): void;
35
38
  isNewGroup(i: number): boolean;
36
39
  /** Whether there are any enabled options so we can open the menu. */
@@ -17,7 +17,7 @@ export declare class ListTextComponent extends ListWidget implements OnInit {
17
17
  constructor(nodeHelper: NodeHelperService, mds: MdsService, changeDetectorRef: ChangeDetectorRef);
18
18
  ngOnChanges(changes: SimpleChanges): Promise<void>;
19
19
  ngOnInit(): Promise<void>;
20
- getNode(): Node | Constants.Person | Constants.Group | Constants.Statistics;
20
+ getNode(): Node | Constants.Group | Constants.Person | Constants.Statistics;
21
21
  isUserProfileAttribute(attribute: string): boolean;
22
22
  getWorkflowStatus(): import("ngx-edu-sharing-ui").WorkflowDefinition;
23
23
  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 | ProposalNode | Person | Group | Statistics>;
10
+ protected readonly nodeSubject: BehaviorSubject<Node | Group | ProposalNode | Person | Statistics>;
11
11
  get item(): ListItem;
12
12
  set item(value: ListItem);
13
13
  protected readonly itemSubject: BehaviorSubject<ListItem>;
@@ -5,7 +5,7 @@ import { ListItem, ListItemSort } from '../types/list-item';
5
5
  import { CanDrop, DragData, DropAction } from '../types/drag-drop';
6
6
  import { Node, GenericAuthority } from 'ngx-edu-sharing-api';
7
7
  import { ActionbarComponent } from '../actionbar/actionbar.component';
8
- export type NodeRoot = 'MY_FILES' | 'SHARED_FILES' | 'MY_SHARED_FILES' | 'TO_ME_SHARED_FILES' | 'WORKFLOW_RECEIVE' | 'RECYCLE' | 'ALL_FILES';
8
+ export type NodeRoot = 'MY_FILES' | 'COLLECTION_HOME' | 'SHARED_FILES' | 'MY_SHARED_FILES' | 'TO_ME_SHARED_FILES' | 'WORKFLOW_RECEIVE' | 'RECYCLE' | 'ALL_FILES';
9
9
  export declare enum NodeEntriesDisplayType {
10
10
  Table = 0,
11
11
  Grid = 1,
@@ -35,7 +35,7 @@ export declare class NodeEntriesCardComponent<T extends Node> implements OnChang
35
35
  ngOnChanges(changes: SimpleChanges): void;
36
36
  getTextColor(): "#000" | "#fff";
37
37
  optionsOnCard(): import("../../types/option-item").OptionItem[];
38
- openContextmenu(event: MouseEvent | Event): void;
38
+ openContextmenu(event: MouseEvent | Event, node: T): void;
39
39
  getVisibleColumns(): import("ngx-edu-sharing-ui").ListItem[];
40
40
  openMenu(node: T): Promise<void>;
41
41
  ngOnInit(): Promise<void>;
@@ -6,8 +6,9 @@ export declare class OptionButtonComponent implements OnChanges {
6
6
  option: OptionItem;
7
7
  node: Node;
8
8
  isShown: boolean;
9
+ isEnabled: boolean;
9
10
  ngOnChanges(changes: SimpleChanges): Promise<void>;
10
- optionIsValid(optionItem: OptionItem, node: Node): boolean;
11
+ optionIsValid(optionItem: OptionItem, node: Node): Promise<boolean>;
11
12
  private optionIsShown;
12
13
  click(option: OptionItem, node: Node): Promise<void>;
13
14
  static ɵfac: i0.ɵɵFactoryDeclaration<OptionButtonComponent, never>;
@@ -1,10 +1,11 @@
1
1
  import { PipeTransform } from '@angular/core';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
3
  import { Node } from 'ngx-edu-sharing-api';
4
+ import { NodeRoot } from '../node-entries/entries-model';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class NodeTitlePipe implements PipeTransform {
6
7
  private translate;
7
- transform(node: Node, args?: string[]): string;
8
+ transform(node: Node | NodeRoot | 'HOME', args?: string[]): string;
8
9
  constructor(translate: TranslateService);
9
10
  static ɵfac: i0.ɵɵFactoryDeclaration<NodeTitlePipe, never>;
10
11
  static ɵpipe: i0.ɵɵPipeDeclaration<NodeTitlePipe, "nodeTitle", false>;
@@ -5,7 +5,7 @@ import * as i0 from "@angular/core";
5
5
  export declare class OptionTooltipPipe implements PipeTransform {
6
6
  private translate;
7
7
  constructor(translate: TranslateService);
8
- transform(option: OptionItem, args?: string[]): string;
8
+ transform(option: OptionItem, args?: string[]): Promise<string>;
9
9
  getKeyInfo(option: OptionItem): string;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<OptionTooltipPipe, never>;
11
11
  static ɵpipe: i0.ɵɵPipeDeclaration<OptionTooltipPipe, "optionTooltip", false>;
@@ -5,6 +5,6 @@ export declare abstract class OptionsHelperService {
5
5
  abstract wrapOptionCallbacks(data: OptionData): OptionData;
6
6
  abstract refreshComponents(components: OptionsHelperComponents, data: OptionData, refreshListOptions: boolean): Promise<void>;
7
7
  abstract getAvailableOptions(target: Target, objects: Node[], components: OptionsHelperComponents, data: OptionData): Promise<OptionItem[]>;
8
- abstract pasteNode(components: OptionsHelperComponents, data: OptionData, nodes: Node[]): void;
8
+ abstract pasteNode(components: OptionsHelperComponents, data: OptionData, addVirutalNodes: boolean, nodes: Node[]): void;
9
9
  abstract filterOptions(options: OptionItem[], target: Target, data: OptionData, objects: Node[] | any): Promise<OptionItem[]>;
10
10
  }
@@ -1,4 +1,4 @@
1
- import { ApiHelpersService, ConfigService, NetworkService, Node } from 'ngx-edu-sharing-api';
1
+ import { ApiHelpersService, ConfigService, User, NetworkService, Node } from 'ngx-edu-sharing-api';
2
2
  import { TranslateService } from '@ngx-translate/core';
3
3
  import * as Workflow from '../types/workflow';
4
4
  import { RepoUrlService } from './repo-url.service';
@@ -49,7 +49,7 @@ export declare class NodeHelperService {
49
49
  getWorkflowStatus(node: Node, useFromConfig?: boolean): Workflow.WorkflowDefinitionStatus;
50
50
  getDefaultWorkflowStatus(useFromConfig?: boolean): Workflow.WorkflowDefinitionStatus;
51
51
  getWorkflows(): Workflow.WorkflowDefinition[];
52
- copyDataToNode<T extends Node>(target: T, source: T): void;
52
+ copyDataToNode<T extends Node | User>(target: T, source: T): void;
53
53
  isNodeCollection(node: Node): boolean;
54
54
  getSourceIconPath(src: string): string;
55
55
  getNodeLink(mode: 'routerLink' | 'queryParams', node: Node): string | Params;
@@ -1,6 +1,6 @@
1
- import { DropdownComponent } from '../dropdown/dropdown.component';
2
- import { ActionbarComponent } from '../actionbar/actionbar.component';
3
- import { ListEventInterface, NodeEntriesDataType, NodeEntriesDisplayType } from '../node-entries/entries-model';
1
+ import type { DropdownComponent } from '../dropdown/dropdown.component';
2
+ import type { ActionbarComponent } from '../actionbar/actionbar.component';
3
+ import type { ListEventInterface, NodeEntriesDataType, NodeEntriesDisplayType } from '../node-entries/entries-model';
4
4
  import { EventEmitter, NgZone, OnDestroy } from '@angular/core';
5
5
  import { AuthenticationService, NetworkService, Node, UserService } from 'ngx-edu-sharing-api';
6
6
  import { CustomOptions, OptionItem, Scope, Target } from '../types/option-item';
@@ -0,0 +1,21 @@
1
+ import { MdsWidget } from 'ngx-edu-sharing-api';
2
+ import * as i0 from "@angular/core";
3
+ export type Values = {
4
+ [p: string]: string[];
5
+ };
6
+ export declare class SearchHelperService {
7
+ static readonly MAX_QUERY_CONCAT_PARAMS = 400;
8
+ constructor();
9
+ /**
10
+ * converts given filter criteria and converts them for a body to be used for a search request
11
+ * @param properties
12
+ * @param mdsWidgets
13
+ * @param unfoldTrees
14
+ */
15
+ convertCritieria(properties: Values, mdsWidgets: MdsWidget[], unfoldTrees?: boolean): {
16
+ property: string;
17
+ values: string[];
18
+ }[];
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<SearchHelperService, never>;
20
+ static ɵprov: i0.ɵɵInjectableDeclaration<SearchHelperService>;
21
+ }
@@ -1,6 +1,6 @@
1
1
  import { ComponentFactoryResolver, ComponentRef, Injector, NgZone, Type, ViewContainerRef } from '@angular/core';
2
2
  import * as rxjs from 'rxjs';
3
- import { Observable } from 'rxjs';
3
+ import { BehaviorSubject, Observable } from 'rxjs';
4
4
  import { OptionItem } from '../types/option-item';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class UIService {
@@ -25,6 +25,12 @@ export declare class UIService {
25
25
  isMobile(): boolean;
26
26
  static evaluateMediaQuery(type: string, value: number): boolean;
27
27
  filterValidOptions(options: OptionItem[]): OptionItem[];
28
+ /**
29
+ * helper that updates the "isEnabled" flag on all options for the given, selected node
30
+ * can be used by dropdown or action menus to update the state for the current element
31
+ * @param options
32
+ */
33
+ updateOptionEnabledState(options: BehaviorSubject<OptionItem[]>, object?: Node | any): Promise<void>;
28
34
  filterToggleOptions(options: OptionItem[], toggle: boolean): OptionItem[];
29
35
  /**
30
36
  * dynamically inject an angular component into a regular html dom element
@@ -1,3 +1,4 @@
1
+ import { ApplicationRef } from '@angular/core';
1
2
  import { ActivatedRoute } from '@angular/router';
2
3
  import { TranslateService } from '@ngx-translate/core';
3
4
  import { Observable } from 'rxjs';
@@ -9,10 +10,12 @@ export declare class TranslationsService {
9
10
  private route;
10
11
  private storage;
11
12
  private translate;
13
+ private sessionStorage;
14
+ private ref;
12
15
  private appService;
13
16
  private language;
14
17
  private languageLoaded;
15
- constructor(config: ConfigService, route: ActivatedRoute, storage: SessionStorageService, translate: TranslateService, appService: AppService);
18
+ constructor(config: ConfigService, route: ActivatedRoute, storage: SessionStorageService, translate: TranslateService, sessionStorage: SessionStorageService, ref: ApplicationRef, appService: AppService);
16
19
  /**
17
20
  * Determines and configures the language to use and triggers loading of translations with
18
21
  * ngx-translate.
@@ -25,6 +28,6 @@ export declare class TranslationsService {
25
28
  /** Same as `translate.currentLang`. */
26
29
  getLanguage(): string;
27
30
  getISOLanguage(): string;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<TranslationsService, [null, null, null, null, { optional: true; }]>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<TranslationsService, [null, null, null, null, null, null, { optional: true; }]>;
29
32
  static ɵprov: i0.ɵɵInjectableDeclaration<TranslationsService>;
30
33
  }
@@ -48,6 +48,11 @@ export declare class OptionItem {
48
48
  * @type {boolean}
49
49
  */
50
50
  onlyMobile: boolean;
51
+ /**
52
+ * custom aria-label
53
+ * @type {string}
54
+ */
55
+ ariaLabel: string;
51
56
  /**
52
57
  * If true, only displayed on a desktop device (based on the navigator agent)
53
58
  * @type {boolean}
@@ -89,12 +94,12 @@ export declare class OptionItem {
89
94
  * Is handled by optionsHelper and may not be used otherwise
90
95
  * Please use @customEnabledCallback instead
91
96
  */
92
- enabledCallback: (node?: Node | any) => boolean;
97
+ enabledCallback: (node?: Node | any) => Promise<boolean>;
93
98
  /**
94
99
  * A function called with the node as param which should return true or false if the option should be enabled or not
95
100
  * Will be called by the optionsHelper
96
101
  */
97
- customEnabledCallback: (nodes?: Node[] | any[]) => boolean;
102
+ customEnabledCallback: (nodes?: Node[] | any[]) => Promise<boolean>;
98
103
  /**
99
104
  * Optional: A callback that is called when the user clicks on the option when it's currently disabled (greyed out)
100
105
  */
package/module.d.ts CHANGED
@@ -78,3 +78,4 @@ export * from './lib/util/rest-helper';
78
78
  export * from './lib/util/ui-animation';
79
79
  export * from './lib/util/ui-constants';
80
80
  export * from './lib/mds/mds-helper.service';
81
+ export * from './lib/services/search-helper.service';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-edu-sharing-ui",
3
- "version": "9999.0.2",
3
+ "version": "9999.0.3",
4
4
  "license": "GNU GPL v2",
5
5
  "description": "Angular components for Edu-Sharing UX parts",
6
6
  "peerDependencies": {