oip-common 0.0.27 → 0.0.29

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.
@@ -43,7 +43,8 @@
43
43
  "label": "Имя",
44
44
  "icon": "Иконка",
45
45
  "cancel": "Отмена",
46
- "save": "Сохранить"
46
+ "save": "Сохранить",
47
+ "security": "Доступ на чтение"
47
48
  },
48
49
  "menuItemCreateDialogComponent": {
49
50
  "header": "Новый элемент меню",
@@ -18,7 +18,7 @@ import { ButtonModule, Button } from 'primeng/button';
18
18
  import * as i5 from '@angular/forms';
19
19
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
20
20
  import * as i2$1 from '@angular/common';
21
- import { isPlatformBrowser, CommonModule, NgComponentOutlet, NgIf, NgClass, NgFor } from '@angular/common';
21
+ import { isPlatformBrowser, CommonModule, NgComponentOutlet, NgClass } from '@angular/common';
22
22
  import * as i3$1 from 'primeng/styleclass';
23
23
  import { StyleClassModule } from 'primeng/styleclass';
24
24
  import { updatePreset, updateSurfacePalette, $t } from '@primeng/themes';
@@ -2179,6 +2179,21 @@ class Menu extends HttpClient {
2179
2179
  secure: true,
2180
2180
  ...params,
2181
2181
  });
2182
+ /**
2183
+ * @description Swaps the order positions of two modules in the menu structure.
2184
+ *
2185
+ * @tags Menu
2186
+ * @name menuChangeOrder
2187
+ * @request POST:/api/menu/change-order
2188
+ * @secure
2189
+ */
2190
+ this.menuChangeOrder = (query, params = {}) => this.request({
2191
+ path: `/api/menu/change-order`,
2192
+ method: "POST",
2193
+ query: query,
2194
+ secure: true,
2195
+ ...params,
2196
+ });
2182
2197
  }
2183
2198
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Menu, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
2184
2199
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Menu }); }
@@ -2342,6 +2357,27 @@ class MenuItemComponent {
2342
2357
  label: this.localization.delete,
2343
2358
  icon: PrimeIcons.TRASH,
2344
2359
  command: (event) => this.deleteItem(event)
2360
+ },
2361
+ { separator: true, visible: this.hasVisibleNext(item) || this.hasVisiblePrev(item) },
2362
+ {
2363
+ label: 'Up',
2364
+ icon: PrimeIcons.ANGLE_UP,
2365
+ command: (event) => {
2366
+ this.moveUp(item);
2367
+ $event.stopPropagation();
2368
+ $event.preventDefault();
2369
+ },
2370
+ visible: this.hasVisiblePrev(item)
2371
+ },
2372
+ {
2373
+ label: 'Down',
2374
+ icon: PrimeIcons.ANGLE_DOWN,
2375
+ command: (event) => {
2376
+ this.moveDown(item);
2377
+ $event.stopPropagation();
2378
+ $event.preventDefault();
2379
+ },
2380
+ visible: this.hasVisibleNext(item)
2345
2381
  }
2346
2382
  ];
2347
2383
  this.contextMenu.show($event);
@@ -2372,76 +2408,147 @@ class MenuItemComponent {
2372
2408
  editClick(event) {
2373
2409
  this.menuItemEditDialogComponent.showDialog().then();
2374
2410
  }
2411
+ moveUp(currentItem) {
2412
+ const items = this.getItems(currentItem);
2413
+ const currentIndex = items.findIndex((item) => item.moduleInstanceId === currentItem.moduleInstanceId);
2414
+ if (currentIndex > 0) {
2415
+ const prevVisibleItem = this.findPrevVisibleItem(items, currentIndex);
2416
+ if (prevVisibleItem !== null) {
2417
+ this.swapItems(items[currentIndex], items[prevVisibleItem]);
2418
+ }
2419
+ }
2420
+ }
2421
+ moveDown(currentItem) {
2422
+ const items = this.getItems(currentItem);
2423
+ const currentIndex = items.findIndex((item) => item.moduleInstanceId === currentItem.moduleInstanceId);
2424
+ if (currentIndex < items.length - 1) {
2425
+ const nextVisibleIndex = this.findNextVisibleIndex(items, currentIndex);
2426
+ if (nextVisibleIndex !== -1) {
2427
+ this.swapItems(items[currentIndex], items[nextVisibleIndex]);
2428
+ }
2429
+ }
2430
+ }
2431
+ findPrevVisibleItem(items, currentIndex) {
2432
+ for (let i = currentIndex - 1; i >= 0; i--) {
2433
+ if (items[i].visible !== false) {
2434
+ return i;
2435
+ }
2436
+ }
2437
+ return -1;
2438
+ }
2439
+ findNextVisibleIndex(items, currentIndex) {
2440
+ for (let i = currentIndex + 1; i < items.length; i++) {
2441
+ if (items[i].visible !== false) {
2442
+ return i;
2443
+ }
2444
+ }
2445
+ return -1;
2446
+ }
2447
+ swapItems(firstModule, secondModule) {
2448
+ const items = this.getItems(firstModule);
2449
+ const firstIndex = items.findIndex((item) => item.moduleInstanceId === firstModule.moduleInstanceId);
2450
+ const secondIndex = items.findIndex((item) => item.moduleInstanceId === secondModule.moduleInstanceId);
2451
+ [items[firstIndex], items[secondIndex]] = [items[secondIndex], items[firstIndex]];
2452
+ this.menuDataService.menuChangeOrder({
2453
+ firstModuleId: firstModule.moduleInstanceId,
2454
+ secondModuleId: secondModule.moduleInstanceId
2455
+ }).then();
2456
+ }
2457
+ hasVisiblePrev(currentItem) {
2458
+ const items = this.getItems(currentItem);
2459
+ const currentIndex = items.findIndex((item) => item.moduleInstanceId == currentItem.moduleInstanceId);
2460
+ return currentIndex > 0;
2461
+ }
2462
+ getItems(currentItem) {
2463
+ return !currentItem.parentId
2464
+ ? this.menuService.menu
2465
+ : this.menuService.menu.find((m) => m.moduleInstanceId == currentItem.parentId).items;
2466
+ }
2467
+ hasVisibleNext(currentItem) {
2468
+ const items = this.getItems(currentItem);
2469
+ const currentIndex = items.findIndex((item) => item.moduleInstanceId == currentItem.moduleInstanceId);
2470
+ return currentIndex < items.length - 1;
2471
+ }
2472
+ swapModulesInBackend(firstModuleId, secondModuleId) {
2473
+ }
2375
2474
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: MenuItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$2.Router }, { token: MenuService }], target: i0.ɵɵFactoryTarget.Component }); }
2376
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: MenuItemComponent, isStandalone: true, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey", menuItemCreateDialogComponent: "menuItemCreateDialogComponent", menuItemEditDialogComponent: "menuItemEditDialogComponent", contextMenu: "contextMenu" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, providers: [ConfirmationService], ngImport: i0, template: `
2377
- <ng-container>
2378
- <p-confirm-dialog />
2379
- <div
2380
- *ngIf="root && item.visible !== false"
2381
- class="layout-menuitem-root-text"
2382
- (contextmenu)="onContextMenu($event, item)">
2383
- {{ item.label }}
2384
- </div>
2385
- <a
2386
- *ngIf="(!item.routerLink || item.items) && item.visible !== false"
2387
- pRipple
2388
- tabindex="0"
2389
- [attr.href]="item.url"
2390
- [attr.target]="item.target"
2391
- [ngClass]="item.class"
2392
- (click)="itemClick($event)">
2393
- <i class="layout-menuitem-icon" [ngClass]="item.icon"></i>
2394
- <span class="layout-menuitem-text">{{ item.label }}</span>
2395
- <i *ngIf="item.items" class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
2396
- </a>
2397
- <a
2398
- *ngIf="item.routerLink && !item.items && item.visible !== false"
2399
- pRipple
2400
- routerLinkActive="active-route"
2401
- tabindex="0"
2402
- [attr.target]="item.target"
2403
- [fragment]="item.fragment"
2404
- [ngClass]="item.class"
2405
- [preserveFragment]="item.preserveFragment"
2406
- [queryParams]="item.queryParams"
2407
- [queryParamsHandling]="item.queryParamsHandling"
2408
- [replaceUrl]="item.replaceUrl"
2409
- [routerLink]="item.routerLink"
2410
- [routerLinkActiveOptions]="
2411
- item.routerLinkActiveOptions || {
2412
- paths: 'exact',
2413
- queryParams: 'ignored',
2414
- matrixParams: 'ignored',
2415
- fragment: 'ignored'
2416
- }
2417
- "
2418
- [skipLocationChange]="item.skipLocationChange"
2419
- [state]="item.state"
2420
- (click)="itemClick($event)"
2421
- (contextmenu)="onContextMenu($event, item)">
2422
- <i class="layout-menuitem-icon" [ngClass]="item.icon"></i>
2423
- <span class="layout-menuitem-text">{{ item.label }}</span>
2424
- <i *ngIf="item.items" class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
2425
- </a>
2426
-
2427
- <ul
2428
- *ngIf="item.items && item.visible !== false"
2429
- [@children]="submenuAnimation"
2430
- (contextmenu)="onContextMenu($event, item)">
2431
- <ng-template let-child let-i="index" ngFor [ngForOf]="item.items">
2432
- <li
2433
- app-menuitem
2434
- [class]="child.badgeClass"
2435
- [contextMenu]="contextMenu"
2436
- [index]="i"
2437
- [item]="child"
2438
- [menuItemCreateDialogComponent]="menuItemCreateDialogComponent"
2439
- [menuItemEditDialogComponent]="menuItemEditDialogComponent"
2440
- [parentKey]="key"></li>
2441
- </ng-template>
2442
- </ul>
2443
- </ng-container>
2444
- `, isInline: true, dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey", "menuItemCreateDialogComponent", "menuItemEditDialogComponent", "contextMenu"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i3$2.Ripple, selector: "[pRipple]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }], animations: [
2475
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: MenuItemComponent, isStandalone: true, selector: "[app-menuitem]", inputs: { item: "item", index: "index", root: "root", parentKey: "parentKey", menuItemCreateDialogComponent: "menuItemCreateDialogComponent", menuItemEditDialogComponent: "menuItemEditDialogComponent", contextMenu: "contextMenu" }, host: { properties: { "class.layout-root-menuitem": "this.root", "class.active-menuitem": "this.activeClass" } }, providers: [ConfirmationService], ngImport: i0, template: `
2476
+ <ng-container>
2477
+ <p-confirm-dialog/>
2478
+ @if (root && item.visible !== false) {
2479
+ <div
2480
+ class="layout-menuitem-root-text"
2481
+ (contextmenu)="onContextMenu($event, item)">
2482
+ {{ item.label }}
2483
+ </div>
2484
+ }
2485
+ @if ((!item.routerLink || item.items) && item.visible !== false) {
2486
+ <a
2487
+ pRipple
2488
+ tabindex="0"
2489
+ [attr.href]="item.url"
2490
+ [attr.target]="item.target"
2491
+ [ngClass]="item.class"
2492
+ (click)="itemClick($event)">
2493
+ <i class="layout-menuitem-icon" [ngClass]="item.icon"></i>
2494
+ <span class="layout-menuitem-text">{{ item.label }}</span>
2495
+ @if (item.items) {
2496
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
2497
+ }
2498
+ </a>
2499
+ }
2500
+ @if (item.routerLink && !item.items && item.visible !== false) {
2501
+ <a
2502
+ pRipple
2503
+ routerLinkActive="active-route"
2504
+ tabindex="0"
2505
+ [attr.target]="item.target"
2506
+ [fragment]="item.fragment"
2507
+ [ngClass]="item.class"
2508
+ [preserveFragment]="item.preserveFragment"
2509
+ [queryParams]="item.queryParams"
2510
+ [queryParamsHandling]="item.queryParamsHandling"
2511
+ [replaceUrl]="item.replaceUrl"
2512
+ [routerLink]="item.routerLink"
2513
+ [routerLinkActiveOptions]="
2514
+ item.routerLinkActiveOptions || {
2515
+ paths: 'exact',
2516
+ queryParams: 'ignored',
2517
+ matrixParams: 'ignored',
2518
+ fragment: 'ignored'
2519
+ }
2520
+ "
2521
+ [skipLocationChange]="item.skipLocationChange"
2522
+ [state]="item.state"
2523
+ (click)="itemClick($event)"
2524
+ (contextmenu)="onContextMenu($event, item)">
2525
+ <i class="layout-menuitem-icon" [ngClass]="item.icon"></i>
2526
+ <span class="layout-menuitem-text">{{ item.label }}</span>
2527
+ @if (item.items) {
2528
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
2529
+ }
2530
+ </a>
2531
+ }
2532
+
2533
+ @if (item.items && item.visible !== false) {
2534
+ <ul
2535
+ [@children]="submenuAnimation"
2536
+ (contextmenu)="onContextMenu($event, item)">
2537
+ @for (child of item.items; track child; let i = $index) {
2538
+ <li
2539
+ app-menuitem
2540
+ [class]="child.badgeClass"
2541
+ [contextMenu]="contextMenu"
2542
+ [index]="i"
2543
+ [item]="child"
2544
+ [menuItemCreateDialogComponent]="menuItemCreateDialogComponent"
2545
+ [menuItemEditDialogComponent]="menuItemEditDialogComponent"
2546
+ [parentKey]="key"></li>
2547
+ }
2548
+ </ul>
2549
+ }
2550
+ </ng-container>
2551
+ `, isInline: true, dependencies: [{ kind: "component", type: MenuItemComponent, selector: "[app-menuitem]", inputs: ["item", "index", "root", "parentKey", "menuItemCreateDialogComponent", "menuItemEditDialogComponent", "contextMenu"] }, { kind: "ngmodule", type: RippleModule }, { kind: "directive", type: i3$2.Ripple, selector: "[pRipple]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: ContextMenuModule }, { kind: "component", type: ConfirmDialog, selector: "p-confirmDialog, p-confirmdialog, p-confirm-dialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "modal", "visible", "position", "draggable"], outputs: ["onHide"] }], animations: [
2445
2552
  trigger('children', [
2446
2553
  state('collapsed', style({
2447
2554
  height: '0'
@@ -2458,74 +2565,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2458
2565
  args: [{
2459
2566
  // eslint-disable-next-line @angular-eslint/component-selector
2460
2567
  selector: '[app-menuitem]',
2461
- template: `
2462
- <ng-container>
2463
- <p-confirm-dialog />
2464
- <div
2465
- *ngIf="root && item.visible !== false"
2466
- class="layout-menuitem-root-text"
2467
- (contextmenu)="onContextMenu($event, item)">
2468
- {{ item.label }}
2469
- </div>
2470
- <a
2471
- *ngIf="(!item.routerLink || item.items) && item.visible !== false"
2472
- pRipple
2473
- tabindex="0"
2474
- [attr.href]="item.url"
2475
- [attr.target]="item.target"
2476
- [ngClass]="item.class"
2477
- (click)="itemClick($event)">
2478
- <i class="layout-menuitem-icon" [ngClass]="item.icon"></i>
2479
- <span class="layout-menuitem-text">{{ item.label }}</span>
2480
- <i *ngIf="item.items" class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
2481
- </a>
2482
- <a
2483
- *ngIf="item.routerLink && !item.items && item.visible !== false"
2484
- pRipple
2485
- routerLinkActive="active-route"
2486
- tabindex="0"
2487
- [attr.target]="item.target"
2488
- [fragment]="item.fragment"
2489
- [ngClass]="item.class"
2490
- [preserveFragment]="item.preserveFragment"
2491
- [queryParams]="item.queryParams"
2492
- [queryParamsHandling]="item.queryParamsHandling"
2493
- [replaceUrl]="item.replaceUrl"
2494
- [routerLink]="item.routerLink"
2495
- [routerLinkActiveOptions]="
2496
- item.routerLinkActiveOptions || {
2497
- paths: 'exact',
2498
- queryParams: 'ignored',
2499
- matrixParams: 'ignored',
2500
- fragment: 'ignored'
2501
- }
2502
- "
2503
- [skipLocationChange]="item.skipLocationChange"
2504
- [state]="item.state"
2505
- (click)="itemClick($event)"
2506
- (contextmenu)="onContextMenu($event, item)">
2507
- <i class="layout-menuitem-icon" [ngClass]="item.icon"></i>
2508
- <span class="layout-menuitem-text">{{ item.label }}</span>
2509
- <i *ngIf="item.items" class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
2510
- </a>
2511
-
2512
- <ul
2513
- *ngIf="item.items && item.visible !== false"
2514
- [@children]="submenuAnimation"
2515
- (contextmenu)="onContextMenu($event, item)">
2516
- <ng-template let-child let-i="index" ngFor [ngForOf]="item.items">
2517
- <li
2518
- app-menuitem
2519
- [class]="child.badgeClass"
2520
- [contextMenu]="contextMenu"
2521
- [index]="i"
2522
- [item]="child"
2523
- [menuItemCreateDialogComponent]="menuItemCreateDialogComponent"
2524
- [menuItemEditDialogComponent]="menuItemEditDialogComponent"
2525
- [parentKey]="key"></li>
2526
- </ng-template>
2527
- </ul>
2528
- </ng-container>
2568
+ template: `
2569
+ <ng-container>
2570
+ <p-confirm-dialog/>
2571
+ @if (root && item.visible !== false) {
2572
+ <div
2573
+ class="layout-menuitem-root-text"
2574
+ (contextmenu)="onContextMenu($event, item)">
2575
+ {{ item.label }}
2576
+ </div>
2577
+ }
2578
+ @if ((!item.routerLink || item.items) && item.visible !== false) {
2579
+ <a
2580
+ pRipple
2581
+ tabindex="0"
2582
+ [attr.href]="item.url"
2583
+ [attr.target]="item.target"
2584
+ [ngClass]="item.class"
2585
+ (click)="itemClick($event)">
2586
+ <i class="layout-menuitem-icon" [ngClass]="item.icon"></i>
2587
+ <span class="layout-menuitem-text">{{ item.label }}</span>
2588
+ @if (item.items) {
2589
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
2590
+ }
2591
+ </a>
2592
+ }
2593
+ @if (item.routerLink && !item.items && item.visible !== false) {
2594
+ <a
2595
+ pRipple
2596
+ routerLinkActive="active-route"
2597
+ tabindex="0"
2598
+ [attr.target]="item.target"
2599
+ [fragment]="item.fragment"
2600
+ [ngClass]="item.class"
2601
+ [preserveFragment]="item.preserveFragment"
2602
+ [queryParams]="item.queryParams"
2603
+ [queryParamsHandling]="item.queryParamsHandling"
2604
+ [replaceUrl]="item.replaceUrl"
2605
+ [routerLink]="item.routerLink"
2606
+ [routerLinkActiveOptions]="
2607
+ item.routerLinkActiveOptions || {
2608
+ paths: 'exact',
2609
+ queryParams: 'ignored',
2610
+ matrixParams: 'ignored',
2611
+ fragment: 'ignored'
2612
+ }
2613
+ "
2614
+ [skipLocationChange]="item.skipLocationChange"
2615
+ [state]="item.state"
2616
+ (click)="itemClick($event)"
2617
+ (contextmenu)="onContextMenu($event, item)">
2618
+ <i class="layout-menuitem-icon" [ngClass]="item.icon"></i>
2619
+ <span class="layout-menuitem-text">{{ item.label }}</span>
2620
+ @if (item.items) {
2621
+ <i class="pi pi-fw pi-angle-down layout-submenu-toggler"></i>
2622
+ }
2623
+ </a>
2624
+ }
2625
+
2626
+ @if (item.items && item.visible !== false) {
2627
+ <ul
2628
+ [@children]="submenuAnimation"
2629
+ (contextmenu)="onContextMenu($event, item)">
2630
+ @for (child of item.items; track child; let i = $index) {
2631
+ <li
2632
+ app-menuitem
2633
+ [class]="child.badgeClass"
2634
+ [contextMenu]="contextMenu"
2635
+ [index]="i"
2636
+ [item]="child"
2637
+ [menuItemCreateDialogComponent]="menuItemCreateDialogComponent"
2638
+ [menuItemEditDialogComponent]="menuItemEditDialogComponent"
2639
+ [parentKey]="key"></li>
2640
+ }
2641
+ </ul>
2642
+ }
2643
+ </ng-container>
2529
2644
  `,
2530
2645
  animations: [
2531
2646
  trigger('children', [
@@ -2538,7 +2653,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2538
2653
  transition('collapsed <=> expanded', animate('400ms cubic-bezier(0.86, 0, 0.07, 1)'))
2539
2654
  ])
2540
2655
  ],
2541
- imports: [NgIf, RippleModule, NgClass, RouterLinkActive, RouterLink, NgFor, ContextMenuModule, ConfirmDialog],
2656
+ imports: [RippleModule, NgClass, RouterLinkActive, RouterLink, ContextMenuModule, ConfirmDialog],
2542
2657
  providers: [ConfirmationService]
2543
2658
  }]
2544
2659
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$2.Router }, { type: MenuService }], propDecorators: { item: [{