@kris701/ez-ui 1.4.6 → 1.4.8

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.
@@ -15,7 +15,7 @@ import * as i2 from '@taiga-ui/core/components/label';
15
15
  import * as i3 from '@taiga-ui/core/components/textfield';
16
16
  import * as i4 from '@taiga-ui/core/portals/dropdown';
17
17
  import * as i6 from '@taiga-ui/core/components/calendar';
18
- import * as i4$2 from '@taiga-ui/layout';
18
+ import * as i2$2 from '@taiga-ui/layout';
19
19
  import { TuiHeader, TuiBlockStatus, TuiElasticContainer, TuiNavigation, TuiAsideGroupComponent } from '@taiga-ui/layout';
20
20
  import { marked } from 'marked';
21
21
  import Compressor from 'compressorjs';
@@ -27,7 +27,7 @@ import { TuiTablePagination, TuiTable } from '@taiga-ui/addon-table';
27
27
  import { v4 } from 'uuid';
28
28
  import { firstValueFrom, switchMap } from 'rxjs';
29
29
  import * as i1$1 from '@angular/common/http';
30
- import * as i2$2 from '@angular/router';
30
+ import * as i2$3 from '@angular/router';
31
31
  import { RouterLink, NavigationEnd, RouterModule } from '@angular/router';
32
32
 
33
33
  class EzUIBooleanInput {
@@ -380,6 +380,7 @@ class EzUIDialog {
380
380
  layoutService;
381
381
  header;
382
382
  content;
383
+ footer;
383
384
  size = 'm';
384
385
  title = '';
385
386
  isLoading = signal(false, /* @ts-ignore */
@@ -394,7 +395,7 @@ class EzUIDialog {
394
395
  this.layoutService = layoutService;
395
396
  }
396
397
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIDialog, deps: [{ token: EzUILayoutService }], target: i0.ɵɵFactoryTarget.Component });
397
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUIDialog, isStandalone: true, selector: "ezui-dialog", inputs: { size: "size", title: "title", isLoading: "isLoading", showDialog: "showDialog", showSave: "showSave", showDelete: "showDelete" }, outputs: { onSaveItem: "onSaveItem", onDeleteItem: "onDeleteItem" }, queries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: `
398
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUIDialog, isStandalone: true, selector: "ezui-dialog", inputs: { size: "size", title: "title", isLoading: "isLoading", showDialog: "showDialog", showSave: "showSave", showDelete: "showDelete" }, outputs: { onSaveItem: "onSaveItem", onDeleteItem: "onDeleteItem" }, queries: [{ propertyName: "header", first: true, predicate: ["header"], descendants: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "footer", first: true, predicate: ["footer"], descendants: true }], ngImport: i0, template: `
398
399
  <ng-template let-id="id" [tuiDialogOptions]="{size: size, appearance: layoutService.isDesktop() ? 'taiga compact' : 'fullscreen'}" [(tuiDialog)]="showDialog">
399
400
  <header tuiHeader>
400
401
  <hgroup tuiTitle>
@@ -413,7 +414,7 @@ class EzUIDialog {
413
414
  </tui-loader>
414
415
  }
415
416
 
416
- @if(!isLoading() && (showSave || showDelete)){
417
+ @if(!isLoading() && (showSave || showDelete || footer)){
417
418
  <footer class="dialog-footer">
418
419
  @if(showSave){
419
420
  <button tuiButton iconStart="save" size="s" (click)="onSaveItem.emit()">Save</button>
@@ -421,6 +422,9 @@ class EzUIDialog {
421
422
  @if(showDelete){
422
423
  <button tuiButton iconStart="x" size="s" appearance="negative" (click)="onDeleteItem.emit()">Delete</button>
423
424
  }
425
+ @if(footer){
426
+ <ng-container [ngTemplateOutlet]="footer"></ng-container>
427
+ }
424
428
  </footer>
425
429
  }
426
430
  </ng-template>
@@ -455,7 +459,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
455
459
  </tui-loader>
456
460
  }
457
461
 
458
- @if(!isLoading() && (showSave || showDelete)){
462
+ @if(!isLoading() && (showSave || showDelete || footer)){
459
463
  <footer class="dialog-footer">
460
464
  @if(showSave){
461
465
  <button tuiButton iconStart="save" size="s" (click)="onSaveItem.emit()">Save</button>
@@ -463,6 +467,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
463
467
  @if(showDelete){
464
468
  <button tuiButton iconStart="x" size="s" appearance="negative" (click)="onDeleteItem.emit()">Delete</button>
465
469
  }
470
+ @if(footer){
471
+ <ng-container [ngTemplateOutlet]="footer"></ng-container>
472
+ }
466
473
  </footer>
467
474
  }
468
475
  </ng-template>
@@ -473,6 +480,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
473
480
  }], content: [{
474
481
  type: ContentChild,
475
482
  args: ['content', { static: false }]
483
+ }], footer: [{
484
+ type: ContentChild,
485
+ args: ['footer', { static: false }]
476
486
  }], size: [{
477
487
  type: Input
478
488
  }], title: [{
@@ -2499,9 +2509,10 @@ const compressImage = async (file, quality, maxHeight, maxWidth, convertSize) =>
2499
2509
  class EzUIMenuBarSubDataList {
2500
2510
  menuItemTemplate;
2501
2511
  subdatalist = [];
2512
+ sender;
2502
2513
  onItemClick = new EventEmitter();
2503
2514
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIMenuBarSubDataList, deps: [], target: i0.ɵɵFactoryTarget.Component });
2504
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUIMenuBarSubDataList, isStandalone: true, selector: "tui-data-list[subdatalist]", inputs: { menuItemTemplate: "menuItemTemplate", subdatalist: "subdatalist" }, outputs: { onItemClick: "onItemClick" }, ngImport: i0, template: `
2515
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUIMenuBarSubDataList, isStandalone: true, selector: "tui-data-list[subdatalist]", inputs: { menuItemTemplate: "menuItemTemplate", subdatalist: "subdatalist", sender: "sender" }, outputs: { onItemClick: "onItemClick" }, ngImport: i0, template: `
2505
2516
  @for(item of subdatalist; track $index){
2506
2517
  @if(item.items){
2507
2518
  @if(!item.hidden){
@@ -2529,7 +2540,8 @@ class EzUIMenuBarSubDataList {
2529
2540
  <tui-data-list
2530
2541
  class="subdatalist"
2531
2542
  [subdatalist]="item.items"
2532
- (onItemClick)="onItemClick.emit()">
2543
+ (onItemClick)="onItemClick.emit()"
2544
+ [sender]="sender">
2533
2545
  </tui-data-list>
2534
2546
  </ng-template>
2535
2547
  }
@@ -2541,7 +2553,7 @@ class EzUIMenuBarSubDataList {
2541
2553
  tuiOption
2542
2554
  [iconStart]="item.icon"
2543
2555
  [disabled]="item.disabled"
2544
- (click)="item.command(item);onItemClick.emit()"
2556
+ (click)="item.command(sender,item);onItemClick.emit()"
2545
2557
  [style]="item.style"
2546
2558
  >
2547
2559
  @if(menuItemTemplate){
@@ -2554,7 +2566,7 @@ class EzUIMenuBarSubDataList {
2554
2566
  }
2555
2567
  }
2556
2568
  }
2557
- `, isInline: true, styles: [".subdatalist{display:flex;flex-direction:column;padding:10px}.subdatalistitem{padding:0 10px!important}\n"], dependencies: [{ kind: "component", type: EzUIMenuBarSubDataList, selector: "tui-data-list[subdatalist]", inputs: ["menuItemTemplate", "subdatalist"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: i3$1.TuiDropdownPositionSided, selector: "[tuiDropdownSided]", inputs: ["tuiDropdownSided", "tuiDropdownSidedOffset"] }, { kind: "directive", type: TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }] });
2569
+ `, isInline: true, styles: [".subdatalist{display:flex;flex-direction:column;padding:10px}.subdatalistitem{padding:0 10px!important}\n"], dependencies: [{ kind: "component", type: EzUIMenuBarSubDataList, selector: "tui-data-list[subdatalist]", inputs: ["menuItemTemplate", "subdatalist", "sender"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: i3$1.TuiDropdownPositionSided, selector: "[tuiDropdownSided]", inputs: ["tuiDropdownSided", "tuiDropdownSidedOffset"] }, { kind: "directive", type: TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }] });
2558
2570
  }
2559
2571
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIMenuBarSubDataList, decorators: [{
2560
2572
  type: Component,
@@ -2591,7 +2603,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
2591
2603
  <tui-data-list
2592
2604
  class="subdatalist"
2593
2605
  [subdatalist]="item.items"
2594
- (onItemClick)="onItemClick.emit()">
2606
+ (onItemClick)="onItemClick.emit()"
2607
+ [sender]="sender">
2595
2608
  </tui-data-list>
2596
2609
  </ng-template>
2597
2610
  }
@@ -2603,7 +2616,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
2603
2616
  tuiOption
2604
2617
  [iconStart]="item.icon"
2605
2618
  [disabled]="item.disabled"
2606
- (click)="item.command(item);onItemClick.emit()"
2619
+ (click)="item.command(sender,item);onItemClick.emit()"
2607
2620
  [style]="item.style"
2608
2621
  >
2609
2622
  @if(menuItemTemplate){
@@ -2621,6 +2634,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
2621
2634
  type: Input
2622
2635
  }], subdatalist: [{
2623
2636
  type: Input
2637
+ }], sender: [{
2638
+ type: Input
2624
2639
  }], onItemClick: [{
2625
2640
  type: Output
2626
2641
  }] } });
@@ -2628,13 +2643,14 @@ class EzUIMenuBar {
2628
2643
  itemTemplate;
2629
2644
  menuItemTemplate;
2630
2645
  items = [];
2646
+ sender;
2631
2647
  ngOnChanges(changes) {
2632
2648
  if (changes['items'] && changes['items'].currentValue != changes['items'].previousValue) {
2633
2649
  this.items = changes['items'].currentValue;
2634
2650
  }
2635
2651
  }
2636
2652
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIMenuBar, deps: [], target: i0.ɵɵFactoryTarget.Component });
2637
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUIMenuBar, isStandalone: true, selector: "ezui-menubar", inputs: { items: "items" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }, { propertyName: "menuItemTemplate", first: true, predicate: ["menuItemTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
2653
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUIMenuBar, isStandalone: true, selector: "ezui-menubar", inputs: { items: "items", sender: "sender" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }, { propertyName: "menuItemTemplate", first: true, predicate: ["menuItemTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
2638
2654
  <div tuiGroup class="group" [collapsed]="true">
2639
2655
  @for(item of items; track $index){
2640
2656
  @if(item.items){
@@ -2665,7 +2681,8 @@ class EzUIMenuBar {
2665
2681
  class="subdatalist"
2666
2682
  [subdatalist]="item.items"
2667
2683
  [menuItemTemplate]="menuItemTemplate"
2668
- (onItemClick)="item.expanded = false">
2684
+ (onItemClick)="item.expanded = false"
2685
+ [sender]="sender">
2669
2686
  </tui-data-list>
2670
2687
  </ng-template>
2671
2688
  }
@@ -2679,7 +2696,7 @@ class EzUIMenuBar {
2679
2696
  type="button"
2680
2697
  [iconStart]="item.icon"
2681
2698
  [disabled]="item.disabled"
2682
- (click)="item.command(item)"
2699
+ (click)="item.command(sender,item)"
2683
2700
  [style]="item.style"
2684
2701
  >
2685
2702
  @if(itemTemplate){
@@ -2693,7 +2710,7 @@ class EzUIMenuBar {
2693
2710
  }
2694
2711
  }
2695
2712
  </div>
2696
- `, isInline: true, styles: [".group{width:100%;white-space:nowrap}.subdatalist{display:flex;flex-direction:column;padding:10px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiGroup, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "collapsed", "rounded", "size"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i3$1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: EzUIMenuBarSubDataList, selector: "tui-data-list[subdatalist]", inputs: ["menuItemTemplate", "subdatalist"], outputs: ["onItemClick"] }] });
2713
+ `, isInline: true, styles: [".group{width:100%;white-space:nowrap}.subdatalist{display:flex;flex-direction:column;padding:10px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiGroup, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "collapsed", "rounded", "size"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i3$1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: EzUIMenuBarSubDataList, selector: "tui-data-list[subdatalist]", inputs: ["menuItemTemplate", "subdatalist", "sender"], outputs: ["onItemClick"] }] });
2697
2714
  }
2698
2715
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIMenuBar, decorators: [{
2699
2716
  type: Component,
@@ -2736,7 +2753,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
2736
2753
  class="subdatalist"
2737
2754
  [subdatalist]="item.items"
2738
2755
  [menuItemTemplate]="menuItemTemplate"
2739
- (onItemClick)="item.expanded = false">
2756
+ (onItemClick)="item.expanded = false"
2757
+ [sender]="sender">
2740
2758
  </tui-data-list>
2741
2759
  </ng-template>
2742
2760
  }
@@ -2750,7 +2768,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
2750
2768
  type="button"
2751
2769
  [iconStart]="item.icon"
2752
2770
  [disabled]="item.disabled"
2753
- (click)="item.command(item)"
2771
+ (click)="item.command(sender,item)"
2754
2772
  [style]="item.style"
2755
2773
  >
2756
2774
  @if(itemTemplate){
@@ -2773,6 +2791,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
2773
2791
  args: ['menuItemTemplate', { static: false }]
2774
2792
  }], items: [{
2775
2793
  type: Input
2794
+ }], sender: [{
2795
+ type: Input
2776
2796
  }] } });
2777
2797
 
2778
2798
  class EzUIMarkdownEditor {
@@ -2798,16 +2818,16 @@ class EzUIMarkdownEditor {
2798
2818
  items = signal([
2799
2819
  {
2800
2820
  icon: 'save',
2801
- command: async (e) => await this.toggleEdit(true),
2821
+ command: async (s, i) => await this.toggleEdit(true),
2802
2822
  style: 'border-bottom-left-radius: 0px !important;'
2803
2823
  },
2804
2824
  {
2805
2825
  icon: 'x',
2806
- command: async (e) => await this.toggleEdit(false)
2826
+ command: async (s, i) => await this.toggleEdit(false)
2807
2827
  },
2808
2828
  {
2809
2829
  label: 'B',
2810
- command: async (e) => {
2830
+ command: async (s, i) => {
2811
2831
  if (this.editor) {
2812
2832
  const editor = this.editor.nativeElement;
2813
2833
  const start = editor.selectionStart;
@@ -2820,7 +2840,7 @@ class EzUIMarkdownEditor {
2820
2840
  },
2821
2841
  {
2822
2842
  label: 'I',
2823
- command: async (e) => {
2843
+ command: async (s, i) => {
2824
2844
  if (this.editor) {
2825
2845
  const editor = this.editor.nativeElement;
2826
2846
  const start = editor.selectionStart;
@@ -2836,7 +2856,7 @@ class EzUIMarkdownEditor {
2836
2856
  items: [
2837
2857
  {
2838
2858
  label: 'H1',
2839
- command: async (e) => {
2859
+ command: async (s, i) => {
2840
2860
  if (this.editor) {
2841
2861
  const editor = this.editor.nativeElement;
2842
2862
  const start = editor.selectionStart;
@@ -2849,7 +2869,7 @@ class EzUIMarkdownEditor {
2849
2869
  },
2850
2870
  {
2851
2871
  label: 'H2',
2852
- command: async (e) => {
2872
+ command: async (s, i) => {
2853
2873
  if (this.editor) {
2854
2874
  const editor = this.editor.nativeElement;
2855
2875
  const start = editor.selectionStart;
@@ -2862,7 +2882,7 @@ class EzUIMarkdownEditor {
2862
2882
  },
2863
2883
  {
2864
2884
  label: 'H3',
2865
- command: async (e) => {
2885
+ command: async (s, i) => {
2866
2886
  if (this.editor) {
2867
2887
  const editor = this.editor.nativeElement;
2868
2888
  const start = editor.selectionStart;
@@ -2877,7 +2897,7 @@ class EzUIMarkdownEditor {
2877
2897
  },
2878
2898
  {
2879
2899
  icon: 'link',
2880
- command: async (e) => {
2900
+ command: async (s, i) => {
2881
2901
  if (this.editor) {
2882
2902
  const editor = this.editor.nativeElement;
2883
2903
  const start = editor.selectionStart;
@@ -2890,7 +2910,7 @@ class EzUIMarkdownEditor {
2890
2910
  },
2891
2911
  {
2892
2912
  icon: 'image',
2893
- command: async (e) => {
2913
+ command: async (s, i) => {
2894
2914
  if (this.editor) {
2895
2915
  this.fileUpload?.nativeElement.click();
2896
2916
  }
@@ -3035,7 +3055,7 @@ class EzUIMarkdownEditor {
3035
3055
  </tui-scrollbar>
3036
3056
  </div>
3037
3057
  }
3038
- `, isInline: true, styles: [".editor-container{display:flex;flex-direction:row;width:100%;outline:.125rem solid var(--tui-background-accent-1);border-radius:var(--tui-radius-l)}.editor-container .editor{display:flex;flex-direction:column;width:100%}.editor-container .editor .editor-field{block-size:100%;border-radius:0px 0px 0px var(--tui-radius-l)}.preview-container{width:100%;border-radius:0px var(--tui-radius-l) var(--tui-radius-l) 0px;transition-property:box-shadow,background-color,outline-color,border-color,color;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);--t-shadow: 0 .125rem .1875rem rgba(0, 0, 0, .1);background-color:var(--tui-background-base);color:var(--tui-text-tertiary);box-shadow:var(--t-shadow);outline:1px solid var(--tui-border-normal);outline-offset:-1px;border-width:0;block-size:100%}.preview-container ::ng-deep tui-scrollbar{height:100%}.preview-container ::ng-deep .t-content{display:flex;block-size:auto!important}.preview-container .preview{padding:10px}.preview-container .preview ::ng-deep p{margin:0}.preview-readonly-container{width:100%;border-radius:var(--tui-radius-l);transition-property:box-shadow,background-color,outline-color,border-color,color;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);--t-shadow: 0 .125rem .1875rem rgba(0, 0, 0, .1);background-color:var(--tui-background-base);color:var(--tui-text-tertiary);box-shadow:var(--t-shadow);outline:1px solid var(--tui-border-normal);outline-offset:-1px;border-width:0;block-size:100%}.preview-readonly-container .edit-button{position:absolute;z-index:999}.preview-readonly-container ::ng-deep tui-scrollbar{height:100%}.preview-readonly-container ::ng-deep .t-content{display:flex;block-size:auto!important}.preview-readonly-container .preview{padding:10px}.preview-readonly-container .preview ::ng-deep p{margin:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4$1.TuiTextareaComponent, selector: "textarea[tuiTextarea]", inputs: ["min", "max", "content"] }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler", "invalid", "tuiAppearanceFocus", "tuiAppearanceState"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }, { kind: "component", type: EzUIMenuBar, selector: "ezui-menubar", inputs: ["items"] }] });
3058
+ `, isInline: true, styles: [".editor-container{display:flex;flex-direction:row;width:100%;outline:.125rem solid var(--tui-background-accent-1);border-radius:var(--tui-radius-l)}.editor-container .editor{display:flex;flex-direction:column;width:100%}.editor-container .editor .editor-field{block-size:100%;border-radius:0px 0px 0px var(--tui-radius-l)}.preview-container{width:100%;border-radius:0px var(--tui-radius-l) var(--tui-radius-l) 0px;transition-property:box-shadow,background-color,outline-color,border-color,color;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);--t-shadow: 0 .125rem .1875rem rgba(0, 0, 0, .1);background-color:var(--tui-background-base);color:var(--tui-text-tertiary);box-shadow:var(--t-shadow);outline:1px solid var(--tui-border-normal);outline-offset:-1px;border-width:0;block-size:100%}.preview-container ::ng-deep tui-scrollbar{height:100%}.preview-container ::ng-deep .t-content{display:flex;block-size:auto!important}.preview-container .preview{padding:10px}.preview-container .preview ::ng-deep p{margin:0}.preview-readonly-container{width:100%;border-radius:var(--tui-radius-l);transition-property:box-shadow,background-color,outline-color,border-color,color;transition-duration:calc(var(--tui-duration) / 2);transition-timing-function:var(--tui-curve-productive-standard);--t-shadow: 0 .125rem .1875rem rgba(0, 0, 0, .1);background-color:var(--tui-background-base);color:var(--tui-text-tertiary);box-shadow:var(--t-shadow);outline:1px solid var(--tui-border-normal);outline-offset:-1px;border-width:0;block-size:100%}.preview-readonly-container .edit-button{position:absolute;z-index:999}.preview-readonly-container ::ng-deep tui-scrollbar{height:100%}.preview-readonly-container ::ng-deep .t-content{display:flex;block-size:auto!important}.preview-readonly-container .preview{padding:10px}.preview-readonly-container .preview ::ng-deep p{margin:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4$1.TuiTextareaComponent, selector: "textarea[tuiTextarea]", inputs: ["min", "max", "content"] }, { kind: "component", type: i3.TuiTextfieldComponent, selector: "tui-textfield:not([multi])", inputs: ["content", "filler", "invalid", "tuiAppearanceFocus", "tuiAppearanceState"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }, { kind: "component", type: EzUIMenuBar, selector: "ezui-menubar", inputs: ["items", "sender"] }] });
3039
3059
  }
3040
3060
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIMarkdownEditor, decorators: [{
3041
3061
  type: Component,
@@ -3535,9 +3555,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
3535
3555
  class EzUIPopoutMenuSubDataList {
3536
3556
  itemTemplate;
3537
3557
  popsubdatalist = [];
3558
+ sender;
3538
3559
  onItemClick = new EventEmitter();
3539
3560
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIPopoutMenuSubDataList, deps: [], target: i0.ɵɵFactoryTarget.Component });
3540
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUIPopoutMenuSubDataList, isStandalone: true, selector: "tui-data-list[popsubdatalist]", inputs: { itemTemplate: "itemTemplate", popsubdatalist: "popsubdatalist" }, outputs: { onItemClick: "onItemClick" }, ngImport: i0, template: `
3561
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUIPopoutMenuSubDataList, isStandalone: true, selector: "tui-data-list[popsubdatalist]", inputs: { itemTemplate: "itemTemplate", popsubdatalist: "popsubdatalist", sender: "sender" }, outputs: { onItemClick: "onItemClick" }, ngImport: i0, template: `
3541
3562
  @for(item of popsubdatalist; track $index){
3542
3563
  @if(item.items){
3543
3564
  @if(!item.hidden){
@@ -3567,7 +3588,8 @@ class EzUIPopoutMenuSubDataList {
3567
3588
  class="popsubdatalist"
3568
3589
  [popsubdatalist]="item.items"
3569
3590
  [itemTemplate]="itemTemplate"
3570
- (onItemClick)="onItemClick.emit()">
3591
+ (onItemClick)="onItemClick.emit()"
3592
+ [sender]="sender">
3571
3593
  </tui-data-list>
3572
3594
  </div>
3573
3595
  </ng-template>
@@ -3580,7 +3602,7 @@ class EzUIPopoutMenuSubDataList {
3580
3602
  tuiOption
3581
3603
  [iconStart]="item.icon"
3582
3604
  [disabled]="item.disabled"
3583
- (click)="item.command(item);onItemClick.emit()"
3605
+ (click)="item.command(sender, item);onItemClick.emit()"
3584
3606
  [style]="item.style"
3585
3607
  >
3586
3608
  @if(itemTemplate){
@@ -3593,7 +3615,7 @@ class EzUIPopoutMenuSubDataList {
3593
3615
  }
3594
3616
  }
3595
3617
  }
3596
- `, isInline: true, styles: [".popdropdown{margin:10px}.popsubdatalist{display:flex;flex-direction:column}.subdatalistitem{padding:0 10px!important}\n"], dependencies: [{ kind: "component", type: EzUIPopoutMenuSubDataList, selector: "tui-data-list[popsubdatalist]", inputs: ["itemTemplate", "popsubdatalist"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: i3$1.TuiDropdownPositionSided, selector: "[tuiDropdownSided]", inputs: ["tuiDropdownSided", "tuiDropdownSidedOffset"] }, { kind: "directive", type: TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }] });
3618
+ `, isInline: true, styles: [".popdropdown{margin:10px}.popsubdatalist{display:flex;flex-direction:column}.subdatalistitem{padding:0 10px!important}\n"], dependencies: [{ kind: "component", type: EzUIPopoutMenuSubDataList, selector: "tui-data-list[popsubdatalist]", inputs: ["itemTemplate", "popsubdatalist", "sender"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "directive", type: i3$1.TuiDropdownPositionSided, selector: "[tuiDropdownSided]", inputs: ["tuiDropdownSided", "tuiDropdownSidedOffset"] }, { kind: "directive", type: TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }] });
3597
3619
  }
3598
3620
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIPopoutMenuSubDataList, decorators: [{
3599
3621
  type: Component,
@@ -3632,7 +3654,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
3632
3654
  class="popsubdatalist"
3633
3655
  [popsubdatalist]="item.items"
3634
3656
  [itemTemplate]="itemTemplate"
3635
- (onItemClick)="onItemClick.emit()">
3657
+ (onItemClick)="onItemClick.emit()"
3658
+ [sender]="sender">
3636
3659
  </tui-data-list>
3637
3660
  </div>
3638
3661
  </ng-template>
@@ -3645,7 +3668,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
3645
3668
  tuiOption
3646
3669
  [iconStart]="item.icon"
3647
3670
  [disabled]="item.disabled"
3648
- (click)="item.command(item);onItemClick.emit()"
3671
+ (click)="item.command(sender, item);onItemClick.emit()"
3649
3672
  [style]="item.style"
3650
3673
  >
3651
3674
  @if(itemTemplate){
@@ -3663,12 +3686,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
3663
3686
  type: Input
3664
3687
  }], popsubdatalist: [{
3665
3688
  type: Input
3689
+ }], sender: [{
3690
+ type: Input
3666
3691
  }], onItemClick: [{
3667
3692
  type: Output
3668
3693
  }] } });
3669
3694
  class EzUIPopoutMenu {
3670
3695
  itemTemplate;
3671
3696
  items = [];
3697
+ sender;
3672
3698
  dropdownOpen = signal(false, /* @ts-ignore */
3673
3699
  ...(ngDevMode ? [{ debugName: "dropdownOpen" }] : /* istanbul ignore next */ []));
3674
3700
  icon = 'plus';
@@ -3682,7 +3708,7 @@ class EzUIPopoutMenu {
3682
3708
  }
3683
3709
  }
3684
3710
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIPopoutMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
3685
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: EzUIPopoutMenu, isStandalone: true, selector: "ezui-popoutmenu", inputs: { items: "items", icon: "icon", label: "label", size: "size", appearance: "appearance" }, outputs: { onMenuOpen: "onMenuOpen" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
3711
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.0", type: EzUIPopoutMenu, isStandalone: true, selector: "ezui-popoutmenu", inputs: { items: "items", sender: "sender", icon: "icon", label: "label", size: "size", appearance: "appearance" }, outputs: { onMenuOpen: "onMenuOpen" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: ["itemTemplate"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
3686
3712
  <button
3687
3713
  [iconStart]="icon"
3688
3714
  tuiButton
@@ -3702,12 +3728,13 @@ class EzUIPopoutMenu {
3702
3728
  class="popsubdatalist"
3703
3729
  [popsubdatalist]="items"
3704
3730
  [itemTemplate]="itemTemplate"
3705
- (onItemClick)="dropdownOpen.set(false)">
3731
+ (onItemClick)="dropdownOpen.set(false)"
3732
+ [sender]="sender">
3706
3733
  </tui-data-list>
3707
3734
  </div>
3708
3735
  </ng-template>
3709
3736
  </button>
3710
- `, isInline: true, styles: [".popdropdown{margin:10px}.popsubdatalist{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i3$1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "component", type: EzUIPopoutMenuSubDataList, selector: "tui-data-list[popsubdatalist]", inputs: ["itemTemplate", "popsubdatalist"], outputs: ["onItemClick"] }] });
3737
+ `, isInline: true, styles: [".popdropdown{margin:10px}.popsubdatalist{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: i3$1.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownAuto],[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "component", type: EzUIPopoutMenuSubDataList, selector: "tui-data-list[popsubdatalist]", inputs: ["itemTemplate", "popsubdatalist", "sender"], outputs: ["onItemClick"] }] });
3711
3738
  }
3712
3739
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIPopoutMenu, decorators: [{
3713
3740
  type: Component,
@@ -3737,7 +3764,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
3737
3764
  class="popsubdatalist"
3738
3765
  [popsubdatalist]="items"
3739
3766
  [itemTemplate]="itemTemplate"
3740
- (onItemClick)="dropdownOpen.set(false)">
3767
+ (onItemClick)="dropdownOpen.set(false)"
3768
+ [sender]="sender">
3741
3769
  </tui-data-list>
3742
3770
  </div>
3743
3771
  </ng-template>
@@ -3748,6 +3776,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
3748
3776
  args: ['itemTemplate', { static: false }]
3749
3777
  }], items: [{
3750
3778
  type: Input
3779
+ }], sender: [{
3780
+ type: Input
3751
3781
  }], icon: [{
3752
3782
  type: Input
3753
3783
  }], label: [{
@@ -3895,7 +3925,7 @@ class EzUIOrderList {
3895
3925
  </div>
3896
3926
  }
3897
3927
  </div>
3898
- `, isInline: true, styles: [".orderlist-container{height:100%;background-color:var(--tui-background-base-alt);border:2px solid var(--tui-border-normal);border-radius:var(--tui-radius-l);padding:5px}.tile{background:var(--tui-background-base);border-radius:var(--tui-radius-l);border:1px solid var(--tui-border-normal);display:flex;flex-direction:row;gap:5px;padding:5px}.tile .handle{align-self:center;cursor:grab}.tile .content,.tile .button-container{align-self:center}.cdk-drag-disabled{opacity:.7;-webkit-user-select:none;user-select:none}.cdk-drag-disabled .handle{align-self:center;cursor:not-allowed}.cdk-drag-preview{display:flex;background:var(--tui-background-base);border-radius:var(--tui-radius-l);border:1px solid var(--tui-border-normal)}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4$2.TuiBlockStatusComponent, selector: "tui-block-status", inputs: ["card", "size"] }, { kind: "directive", type: i4$2.TuiBlockStatusDirective, selector: "[tuiSlot]", inputs: ["tuiSlot"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: 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: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }] });
3928
+ `, isInline: true, styles: [".orderlist-container{height:100%;background-color:var(--tui-background-base-alt);border:2px solid var(--tui-border-normal);border-radius:var(--tui-radius-l);padding:5px}.tile{background:var(--tui-background-base);border-radius:var(--tui-radius-l);border:1px solid var(--tui-border-normal);display:flex;flex-direction:row;gap:5px;padding:5px}.tile .handle{align-self:center;cursor:grab}.tile .content,.tile .button-container{align-self:center}.cdk-drag-disabled{opacity:.7;-webkit-user-select:none;user-select:none}.cdk-drag-disabled .handle{align-self:center;cursor:not-allowed}.cdk-drag-preview{display:flex;background:var(--tui-background-base);border-radius:var(--tui-radius-l);border:1px solid var(--tui-border-normal)}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$2.TuiBlockStatusComponent, selector: "tui-block-status", inputs: ["card", "size"] }, { kind: "directive", type: i2$2.TuiBlockStatusDirective, selector: "[tuiSlot]", inputs: ["tuiSlot"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: 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: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }] });
3899
3929
  }
3900
3930
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUIOrderList, decorators: [{
3901
3931
  type: Component,
@@ -4805,6 +4835,7 @@ class EzUITable {
4805
4835
  tableHeader;
4806
4836
  tableRows;
4807
4837
  tableExpandedrow;
4838
+ actionsHeader;
4808
4839
  presetHeader;
4809
4840
  disabled = false;
4810
4841
  isLoading = signal(false, /* @ts-ignore */
@@ -4824,6 +4855,8 @@ class EzUITable {
4824
4855
  ...(ngDevMode ? [{ debugName: "filters" }] : /* istanbul ignore next */ []));
4825
4856
  storageKey = null;
4826
4857
  allowPresets = false;
4858
+ showContextMenu = false;
4859
+ contextMenuItems = [];
4827
4860
  constructor(filterService) {
4828
4861
  this.filterService = filterService;
4829
4862
  }
@@ -4917,7 +4950,7 @@ class EzUITable {
4917
4950
  this.applyFilter();
4918
4951
  }
4919
4952
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUITable, deps: [{ token: EzUITableFilterService }], target: i0.ɵɵFactoryTarget.Component });
4920
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUITable, isStandalone: true, selector: "ezui-table", inputs: { disabled: "disabled", isLoading: "isLoading", showAdd: "showAdd", showRefresh: "showRefresh", showClearFilters: "showClearFilters", expandable: "expandable", clickable: "clickable", values: "values", storageKey: "storageKey", allowPresets: "allowPresets", pageSize: "pageSize" }, outputs: { onAddItem: "onAddItem", onLoadItems: "onLoadItems", onRowExpanded: "onRowExpanded", onRowClick: "onRowClick", onPresetChange: "onPresetChange" }, host: { classAttribute: "w-full h-full" }, queries: [{ propertyName: "tableHeader", first: true, predicate: ["tableHeader"], descendants: true }, { propertyName: "tableRows", first: true, predicate: ["tableRows"], descendants: true }, { propertyName: "tableExpandedrow", first: true, predicate: ["tableExpandedrow"], descendants: true }], viewQueries: [{ propertyName: "presetHeader", first: true, predicate: ["presetHeader"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
4953
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUITable, isStandalone: true, selector: "ezui-table", inputs: { disabled: "disabled", isLoading: "isLoading", showAdd: "showAdd", showRefresh: "showRefresh", showClearFilters: "showClearFilters", expandable: "expandable", clickable: "clickable", values: "values", storageKey: "storageKey", allowPresets: "allowPresets", showContextMenu: "showContextMenu", contextMenuItems: "contextMenuItems", pageSize: "pageSize" }, outputs: { onAddItem: "onAddItem", onLoadItems: "onLoadItems", onRowExpanded: "onRowExpanded", onRowClick: "onRowClick", onPresetChange: "onPresetChange" }, host: { classAttribute: "w-full h-full" }, queries: [{ propertyName: "tableHeader", first: true, predicate: ["tableHeader"], descendants: true }, { propertyName: "tableRows", first: true, predicate: ["tableRows"], descendants: true }, { propertyName: "tableExpandedrow", first: true, predicate: ["tableExpandedrow"], descendants: true }, { propertyName: "actionsHeader", first: true, predicate: ["actionsHeader"], descendants: true }], viewQueries: [{ propertyName: "presetHeader", first: true, predicate: ["presetHeader"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
4921
4954
  <div class="ezui-table">
4922
4955
  <tui-loader [inheritColor]="true" [overlay]="true" size="xxl" [loading]="isLoading()">
4923
4956
  @if(values === null || values.length == 0){
@@ -4942,7 +4975,7 @@ class EzUITable {
4942
4975
  }
4943
4976
  }
4944
4977
  @else {
4945
- @if(showAdd || showRefresh || showClearFilters){
4978
+ @if(showAdd || showRefresh || showClearFilters || actionsHeader || allowPresets){
4946
4979
  <div class="ezui-table-header">
4947
4980
  @if(showRefresh){
4948
4981
  <button tuiButton iconStart="rotate-cw" size="s" appearance="info" (click)="onLoadItems.emit()" tuiHint="Refresh the table"></button>
@@ -4953,6 +4986,9 @@ class EzUITable {
4953
4986
  @if(showClearFilters){
4954
4987
  <button tuiButton iconStart="funnel-x" size="s" appearance="info" (click)="clearFilters()" tuiHint="Clear filters"></button>
4955
4988
  }
4989
+ @if(actionsHeader){
4990
+ <ng-container [ngTemplateOutlet]="actionsHeader"></ng-container>
4991
+ }
4956
4992
 
4957
4993
  @if(allowPresets){
4958
4994
  <div class="seperator"></div>
@@ -4986,24 +5022,63 @@ class EzUITable {
4986
5022
  @for (item of displayValues(); track page() * pageSize() + i; let i = $index){
4987
5023
  @let fullIndex = page() * pageSize() + i;
4988
5024
  <tbody tuiTbody>
4989
- <tr [class]="{'rowrlickable':clickable}" (click)="onRowClick.emit(item)">
4990
- @if(expandable){
4991
- <td tuiTd class="ezui-table-expander">
4992
- <button
4993
- class="ezui-table-expander-button"
4994
- appearance="flat-grayscale"
4995
- size="xs"
4996
- tuiIconButton
4997
- type="button"
4998
- [tuiChevron]="state[fullIndex] ?? false"
4999
- (click)="state[fullIndex] = !state[fullIndex];onRowExpanded.emit(item)"
5000
- >
5001
- Toggle
5002
- </button>
5003
- </td>
5004
- }
5005
- <ng-container [ngTemplateOutlet]="tableRows" [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
5006
- </tr>
5025
+ @if(showContextMenu) {
5026
+ <tr
5027
+ [class]="{'rowrlickable':clickable}"
5028
+ (click)="onRowClick.emit(item)"
5029
+ #contextDropdown="tuiDropdown"
5030
+ tuiDropdownContext
5031
+ [tuiDropdown]="contextMenu"
5032
+ >
5033
+ @if(expandable){
5034
+ <td tuiTd class="ezui-table-expander">
5035
+ <button
5036
+ class="ezui-table-expander-button"
5037
+ appearance="flat-grayscale"
5038
+ size="xs"
5039
+ tuiIconButton
5040
+ type="button"
5041
+ [tuiChevron]="state[fullIndex] ?? false"
5042
+ (click)="state[fullIndex] = !state[fullIndex];onRowExpanded.emit(item)"
5043
+ >
5044
+ Toggle
5045
+ </button>
5046
+ </td>
5047
+ }
5048
+ <ng-container [ngTemplateOutlet]="tableRows" [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
5049
+
5050
+ <ng-template #contextMenu let-close>
5051
+ <div class="popdropdown">
5052
+ <tui-data-list
5053
+ class="popsubdatalist"
5054
+ [popsubdatalist]="contextMenuItems"
5055
+ (onItemClick)="close()"
5056
+ [sender]="item">
5057
+ </tui-data-list>
5058
+ </div>
5059
+ </ng-template>
5060
+ </tr>
5061
+ }
5062
+ @else {
5063
+ <tr [class]="{'rowrlickable':clickable}" (click)="onRowClick.emit(item)">
5064
+ @if(expandable){
5065
+ <td tuiTd class="ezui-table-expander">
5066
+ <button
5067
+ class="ezui-table-expander-button"
5068
+ appearance="flat-grayscale"
5069
+ size="xs"
5070
+ tuiIconButton
5071
+ type="button"
5072
+ [tuiChevron]="state[fullIndex] ?? false"
5073
+ (click)="state[fullIndex] = !state[fullIndex];onRowExpanded.emit(item)"
5074
+ >
5075
+ Toggle
5076
+ </button>
5077
+ </td>
5078
+ }
5079
+ <ng-container [ngTemplateOutlet]="tableRows" [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
5080
+ </tr>
5081
+ }
5007
5082
  </tbody>
5008
5083
 
5009
5084
  <tbody tuiTableExpand [expanded]="state[fullIndex] ?? false">
@@ -5031,11 +5106,11 @@ class EzUITable {
5031
5106
  }
5032
5107
  </tui-loader>
5033
5108
  </div>
5034
- `, isInline: true, styles: [".ezui-table{border:2px solid var(--tui-border-normal);border-radius:var(--tui-radius-l);display:flex;height:100%;width:100%;overflow:hidden}.ezui-table ::ng-deep tui-loader{height:100%;width:100%}.ezui-table ::ng-deep tui-loader>.t-content{display:flex;flex-direction:column}.ezui-table ::ng-deep tui-scrollbar{flex-grow:1}.ezui-table ::ng-deep tui-scrollbar>.t-content{display:flex;gap:10px;width:0px}.ezui-table .ezui-table-header{background-color:var(--tui-background-base-alt);display:flex;flex-direction:row;gap:10px;padding:5px}.ezui-table .ezui-table-header .seperator{width:2px;background-color:var(--tui-border-normal)}.ezui-table .ezui-table-footer{display:flex;margin-top:.5rem;margin-bottom:.5rem;padding-left:2rem;padding-right:2rem}.ezui-table .ezui-table-footer tui-table-pagination{flex:1}.ezui-table ::ng-deep table{border-radius:var(--tui-radius-l)}.ezui-table ::ng-deep th{background-color:var(--tui-background-base-alt)!important}.ezui-table ::ng-deep .ezui-table-expander{padding:0}.ezui-table ::ng-deep .ezui-table-expander-button{width:100%!important;height:100%;border-radius:0}.ezui-table th[tuiTh]{align-items:center}.ezui-table .forcefullsize{width:100%!important}.ezui-table tui-block-status{padding-top:20px;padding-bottom:20px}.ezui-table .rowrlickable{cursor:pointer;background-color:var(--tui-background-base)}.ezui-table .rowrlickable ::ng-deep td[tuitd]{background-color:transparent!important}.ezui-table .rowrlickable:hover{background-color:var(--tui-background-neutral-1-hover)!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$2.TuiTableDirective, selector: "table[tuiTable]", inputs: ["columns", "size", "direction", "sorter"], outputs: ["directionChange", "sorterChange", "sortChange"] }, { kind: "component", type: i3$2.TuiTableTbody, selector: "tbody[tuiTbody]", inputs: ["heading", "open"], outputs: ["openChange"] }, { kind: "component", type: i3$2.TuiTableTh, selector: "th[tuiTh]", inputs: ["minWidth", "maxWidth", "sorter", "resizable", "sticky", "requiredSort"], outputs: ["sorterChange"] }, { kind: "component", type: i3$2.TuiTableTd, selector: "th[tuiTd], td[tuiTd]" }, { kind: "component", type: i3$2.TuiTableExpand, selector: "tui-table-expand, tbody[tuiTableExpand]", inputs: ["expanded"], outputs: ["expandedChange"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: TuiTablePagination, selector: "tui-table-pagination", inputs: ["items", "total", "page", "size"], outputs: ["pageChange", "sizeChange", "paginationChange"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }, { kind: "component", type: i4$2.TuiBlockStatusComponent, selector: "tui-block-status", inputs: ["card", "size"] }, { kind: "directive", type: i4$2.TuiBlockStatusDirective, selector: "[tuiSlot]", inputs: ["tuiSlot"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "component", type: EzUITablePresets, selector: "ezui-table-presets", inputs: ["storageKey"], outputs: ["onPresetChange"] }, { kind: "directive", type: i3$1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }] });
5109
+ `, isInline: true, styles: [".ezui-table{border:2px solid var(--tui-border-normal);border-radius:var(--tui-radius-l);display:flex;height:100%;width:100%;overflow:hidden}.ezui-table ::ng-deep tui-loader{height:100%;width:100%}.ezui-table ::ng-deep tui-loader>.t-content{display:flex;flex-direction:column}.ezui-table ::ng-deep tui-scrollbar{flex-grow:1}.ezui-table ::ng-deep tui-scrollbar>.t-content{display:flex;gap:10px;width:0px}.ezui-table .ezui-table-header{background-color:var(--tui-background-base-alt);display:flex;flex-direction:row;gap:10px;padding:5px}.ezui-table .ezui-table-header .seperator{width:2px;background-color:var(--tui-border-normal)}.ezui-table .ezui-table-footer{display:flex;margin-top:.5rem;margin-bottom:.5rem;padding-left:2rem;padding-right:2rem}.ezui-table .ezui-table-footer tui-table-pagination{flex:1}.ezui-table ::ng-deep table{border-radius:var(--tui-radius-l)}.ezui-table ::ng-deep th{background-color:var(--tui-background-base-alt)!important}.ezui-table ::ng-deep .ezui-table-expander{padding:0}.ezui-table ::ng-deep .ezui-table-expander-button{width:100%!important;height:100%;border-radius:0}.ezui-table th[tuiTh]{align-items:center}.ezui-table .forcefullsize{width:100%!important}.ezui-table tui-block-status{padding-top:20px;padding-bottom:20px}.ezui-table .rowrlickable{cursor:pointer;background-color:var(--tui-background-base)}.ezui-table .rowrlickable ::ng-deep td[tuitd]{background-color:transparent!important}.ezui-table .rowrlickable:hover{background-color:var(--tui-background-neutral-1-hover)!important}.popdropdown{margin:10px}.popsubdatalist{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3$2.TuiTableDirective, selector: "table[tuiTable]", inputs: ["columns", "size", "direction", "sorter"], outputs: ["directionChange", "sorterChange", "sortChange"] }, { kind: "component", type: i3$2.TuiTableTbody, selector: "tbody[tuiTbody]", inputs: ["heading", "open"], outputs: ["openChange"] }, { kind: "component", type: i3$2.TuiTableTh, selector: "th[tuiTh]", inputs: ["minWidth", "maxWidth", "sorter", "resizable", "sticky", "requiredSort"], outputs: ["sorterChange"] }, { kind: "component", type: i3$2.TuiTableTd, selector: "th[tuiTd], td[tuiTd]" }, { kind: "component", type: i3$2.TuiTableExpand, selector: "tui-table-expand, tbody[tuiTableExpand]", inputs: ["expanded"], outputs: ["expandedChange"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "directive", type: i3$1.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i3$1.TuiDropdownContext, selector: "[tuiDropdownContext]" }, { kind: "component", type: TuiTablePagination, selector: "tui-table-pagination", inputs: ["items", "total", "page", "size"], outputs: ["pageChange", "sizeChange", "paginationChange"] }, { kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }, { kind: "component", type: i2$2.TuiBlockStatusComponent, selector: "tui-block-status", inputs: ["card", "size"] }, { kind: "directive", type: i2$2.TuiBlockStatusDirective, selector: "[tuiSlot]", inputs: ["tuiSlot"] }, { kind: "component", type: TuiIcon, selector: "tui-icon:not([tuiBadge])", inputs: ["background"] }, { kind: "component", type: EzUITablePresets, selector: "ezui-table-presets", inputs: ["storageKey"], outputs: ["onPresetChange"] }, { kind: "directive", type: i3$1.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"], outputs: ["tuiHintVisible"] }, { kind: "component", type: EzUIPopoutMenuSubDataList, selector: "tui-data-list[popsubdatalist]", inputs: ["itemTemplate", "popsubdatalist", "sender"], outputs: ["onItemClick"] }] });
5035
5110
  }
5036
5111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUITable, decorators: [{
5037
5112
  type: Component,
5038
- args: [{ selector: 'ezui-table', imports: [FormsModule, CommonModule, TuiTable, TuiScrollbar, TuiButton, TuiChevron, TuiDropdown, TuiDataListWrapper, TuiTablePagination, TuiLoader, TuiBlockStatus, TuiIcon, TuiInput, EzUITablePresets, TuiHint], template: `
5113
+ args: [{ selector: 'ezui-table', imports: [FormsModule, CommonModule, TuiTable, TuiScrollbar, TuiButton, TuiChevron, TuiDropdown, TuiDataListWrapper, TuiTablePagination, TuiLoader, TuiBlockStatus, TuiIcon, TuiInput, EzUITablePresets, TuiHint, EzUIPopoutMenuSubDataList], template: `
5039
5114
  <div class="ezui-table">
5040
5115
  <tui-loader [inheritColor]="true" [overlay]="true" size="xxl" [loading]="isLoading()">
5041
5116
  @if(values === null || values.length == 0){
@@ -5060,7 +5135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
5060
5135
  }
5061
5136
  }
5062
5137
  @else {
5063
- @if(showAdd || showRefresh || showClearFilters){
5138
+ @if(showAdd || showRefresh || showClearFilters || actionsHeader || allowPresets){
5064
5139
  <div class="ezui-table-header">
5065
5140
  @if(showRefresh){
5066
5141
  <button tuiButton iconStart="rotate-cw" size="s" appearance="info" (click)="onLoadItems.emit()" tuiHint="Refresh the table"></button>
@@ -5071,6 +5146,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
5071
5146
  @if(showClearFilters){
5072
5147
  <button tuiButton iconStart="funnel-x" size="s" appearance="info" (click)="clearFilters()" tuiHint="Clear filters"></button>
5073
5148
  }
5149
+ @if(actionsHeader){
5150
+ <ng-container [ngTemplateOutlet]="actionsHeader"></ng-container>
5151
+ }
5074
5152
 
5075
5153
  @if(allowPresets){
5076
5154
  <div class="seperator"></div>
@@ -5104,24 +5182,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
5104
5182
  @for (item of displayValues(); track page() * pageSize() + i; let i = $index){
5105
5183
  @let fullIndex = page() * pageSize() + i;
5106
5184
  <tbody tuiTbody>
5107
- <tr [class]="{'rowrlickable':clickable}" (click)="onRowClick.emit(item)">
5108
- @if(expandable){
5109
- <td tuiTd class="ezui-table-expander">
5110
- <button
5111
- class="ezui-table-expander-button"
5112
- appearance="flat-grayscale"
5113
- size="xs"
5114
- tuiIconButton
5115
- type="button"
5116
- [tuiChevron]="state[fullIndex] ?? false"
5117
- (click)="state[fullIndex] = !state[fullIndex];onRowExpanded.emit(item)"
5118
- >
5119
- Toggle
5120
- </button>
5121
- </td>
5122
- }
5123
- <ng-container [ngTemplateOutlet]="tableRows" [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
5124
- </tr>
5185
+ @if(showContextMenu) {
5186
+ <tr
5187
+ [class]="{'rowrlickable':clickable}"
5188
+ (click)="onRowClick.emit(item)"
5189
+ #contextDropdown="tuiDropdown"
5190
+ tuiDropdownContext
5191
+ [tuiDropdown]="contextMenu"
5192
+ >
5193
+ @if(expandable){
5194
+ <td tuiTd class="ezui-table-expander">
5195
+ <button
5196
+ class="ezui-table-expander-button"
5197
+ appearance="flat-grayscale"
5198
+ size="xs"
5199
+ tuiIconButton
5200
+ type="button"
5201
+ [tuiChevron]="state[fullIndex] ?? false"
5202
+ (click)="state[fullIndex] = !state[fullIndex];onRowExpanded.emit(item)"
5203
+ >
5204
+ Toggle
5205
+ </button>
5206
+ </td>
5207
+ }
5208
+ <ng-container [ngTemplateOutlet]="tableRows" [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
5209
+
5210
+ <ng-template #contextMenu let-close>
5211
+ <div class="popdropdown">
5212
+ <tui-data-list
5213
+ class="popsubdatalist"
5214
+ [popsubdatalist]="contextMenuItems"
5215
+ (onItemClick)="close()"
5216
+ [sender]="item">
5217
+ </tui-data-list>
5218
+ </div>
5219
+ </ng-template>
5220
+ </tr>
5221
+ }
5222
+ @else {
5223
+ <tr [class]="{'rowrlickable':clickable}" (click)="onRowClick.emit(item)">
5224
+ @if(expandable){
5225
+ <td tuiTd class="ezui-table-expander">
5226
+ <button
5227
+ class="ezui-table-expander-button"
5228
+ appearance="flat-grayscale"
5229
+ size="xs"
5230
+ tuiIconButton
5231
+ type="button"
5232
+ [tuiChevron]="state[fullIndex] ?? false"
5233
+ (click)="state[fullIndex] = !state[fullIndex];onRowExpanded.emit(item)"
5234
+ >
5235
+ Toggle
5236
+ </button>
5237
+ </td>
5238
+ }
5239
+ <ng-container [ngTemplateOutlet]="tableRows" [ngTemplateOutletContext]="{ $implicit: item }"></ng-container>
5240
+ </tr>
5241
+ }
5125
5242
  </tbody>
5126
5243
 
5127
5244
  <tbody tuiTableExpand [expanded]="state[fullIndex] ?? false">
@@ -5151,7 +5268,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
5151
5268
  </div>
5152
5269
  `, host: {
5153
5270
  class: 'w-full h-full'
5154
- }, styles: [".ezui-table{border:2px solid var(--tui-border-normal);border-radius:var(--tui-radius-l);display:flex;height:100%;width:100%;overflow:hidden}.ezui-table ::ng-deep tui-loader{height:100%;width:100%}.ezui-table ::ng-deep tui-loader>.t-content{display:flex;flex-direction:column}.ezui-table ::ng-deep tui-scrollbar{flex-grow:1}.ezui-table ::ng-deep tui-scrollbar>.t-content{display:flex;gap:10px;width:0px}.ezui-table .ezui-table-header{background-color:var(--tui-background-base-alt);display:flex;flex-direction:row;gap:10px;padding:5px}.ezui-table .ezui-table-header .seperator{width:2px;background-color:var(--tui-border-normal)}.ezui-table .ezui-table-footer{display:flex;margin-top:.5rem;margin-bottom:.5rem;padding-left:2rem;padding-right:2rem}.ezui-table .ezui-table-footer tui-table-pagination{flex:1}.ezui-table ::ng-deep table{border-radius:var(--tui-radius-l)}.ezui-table ::ng-deep th{background-color:var(--tui-background-base-alt)!important}.ezui-table ::ng-deep .ezui-table-expander{padding:0}.ezui-table ::ng-deep .ezui-table-expander-button{width:100%!important;height:100%;border-radius:0}.ezui-table th[tuiTh]{align-items:center}.ezui-table .forcefullsize{width:100%!important}.ezui-table tui-block-status{padding-top:20px;padding-bottom:20px}.ezui-table .rowrlickable{cursor:pointer;background-color:var(--tui-background-base)}.ezui-table .rowrlickable ::ng-deep td[tuitd]{background-color:transparent!important}.ezui-table .rowrlickable:hover{background-color:var(--tui-background-neutral-1-hover)!important}\n"] }]
5271
+ }, styles: [".ezui-table{border:2px solid var(--tui-border-normal);border-radius:var(--tui-radius-l);display:flex;height:100%;width:100%;overflow:hidden}.ezui-table ::ng-deep tui-loader{height:100%;width:100%}.ezui-table ::ng-deep tui-loader>.t-content{display:flex;flex-direction:column}.ezui-table ::ng-deep tui-scrollbar{flex-grow:1}.ezui-table ::ng-deep tui-scrollbar>.t-content{display:flex;gap:10px;width:0px}.ezui-table .ezui-table-header{background-color:var(--tui-background-base-alt);display:flex;flex-direction:row;gap:10px;padding:5px}.ezui-table .ezui-table-header .seperator{width:2px;background-color:var(--tui-border-normal)}.ezui-table .ezui-table-footer{display:flex;margin-top:.5rem;margin-bottom:.5rem;padding-left:2rem;padding-right:2rem}.ezui-table .ezui-table-footer tui-table-pagination{flex:1}.ezui-table ::ng-deep table{border-radius:var(--tui-radius-l)}.ezui-table ::ng-deep th{background-color:var(--tui-background-base-alt)!important}.ezui-table ::ng-deep .ezui-table-expander{padding:0}.ezui-table ::ng-deep .ezui-table-expander-button{width:100%!important;height:100%;border-radius:0}.ezui-table th[tuiTh]{align-items:center}.ezui-table .forcefullsize{width:100%!important}.ezui-table tui-block-status{padding-top:20px;padding-bottom:20px}.ezui-table .rowrlickable{cursor:pointer;background-color:var(--tui-background-base)}.ezui-table .rowrlickable ::ng-deep td[tuitd]{background-color:transparent!important}.ezui-table .rowrlickable:hover{background-color:var(--tui-background-neutral-1-hover)!important}.popdropdown{margin:10px}.popsubdatalist{display:flex;flex-direction:column}\n"] }]
5155
5272
  }], ctorParameters: () => [{ type: EzUITableFilterService }], propDecorators: { tableHeader: [{
5156
5273
  type: ContentChild,
5157
5274
  args: ['tableHeader', { static: false }]
@@ -5161,6 +5278,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
5161
5278
  }], tableExpandedrow: [{
5162
5279
  type: ContentChild,
5163
5280
  args: ['tableExpandedrow', { static: false }]
5281
+ }], actionsHeader: [{
5282
+ type: ContentChild,
5283
+ args: ['actionsHeader', { static: false }]
5164
5284
  }], presetHeader: [{
5165
5285
  type: ViewChild,
5166
5286
  args: ['presetHeader', { static: false }]
@@ -5184,6 +5304,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
5184
5304
  type: Input
5185
5305
  }], allowPresets: [{
5186
5306
  type: Input
5307
+ }], showContextMenu: [{
5308
+ type: Input
5309
+ }], contextMenuItems: [{
5310
+ type: Input
5187
5311
  }], onAddItem: [{
5188
5312
  type: Output
5189
5313
  }], onLoadItems: [{
@@ -6926,7 +7050,7 @@ class EzUISideBarItem {
6926
7050
  </button>
6927
7051
  }
6928
7052
  }
6929
- `, isInline: true, dependencies: [{ kind: "component", type: EzUISideBarItem, selector: "ezui-sidebar-item", inputs: ["item"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: i4$2.TuiAsideGroupComponent, selector: "tui-aside-group", inputs: ["open"], outputs: ["openChange"] }, { kind: "directive", type: i4$2.TuiAsideItemDirective, selector: "[tuiAsideItem]" }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }] });
7053
+ `, isInline: true, dependencies: [{ kind: "component", type: EzUISideBarItem, selector: "ezui-sidebar-item", inputs: ["item"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: i2$2.TuiAsideGroupComponent, selector: "tui-aside-group", inputs: ["open"], outputs: ["openChange"] }, { kind: "directive", type: i2$2.TuiAsideItemDirective, selector: "[tuiAsideItem]" }, { kind: "directive", type: TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }] });
6930
7054
  }
6931
7055
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUISideBarItem, decorators: [{
6932
7056
  type: Component,
@@ -7167,7 +7291,7 @@ class EzUISideBar {
7167
7291
  }
7168
7292
  }
7169
7293
  }
7170
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUISideBar, deps: [{ token: EzUILayoutService }, { token: i2$2.Router }], target: i0.ɵɵFactoryTarget.Component });
7294
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUISideBar, deps: [{ token: EzUILayoutService }, { token: i2$3.Router }], target: i0.ɵɵFactoryTarget.Component });
7171
7295
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.0", type: EzUISideBar, isStandalone: true, selector: "ezui-sidebar", inputs: { sidebarItems: "sidebarItems", sidebarFooterItems: "sidebarFooterItems", baseRoute: "baseRoute" }, ngImport: i0, template: `
7172
7296
  @if(layoutService.isDesktop()){
7173
7297
  <aside style="height:100%" tuitheme="" [tuiNavigationAside]="layoutService.isMenuExpanded()">
@@ -7195,7 +7319,7 @@ class EzUISideBar {
7195
7319
  </footer>
7196
7320
  </aside>
7197
7321
  }
7198
- `, isInline: true, styles: ["::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:4rem!important}::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:6rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i4$2.TuiAsideComponent, selector: "aside[tuiNavigationAside]", inputs: ["tuiNavigationAside"] }, { kind: "component", type: EzUISideBarItem, selector: "ezui-sidebar-item", inputs: ["item"], outputs: ["onItemClick"] }] });
7322
+ `, isInline: true, styles: ["::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:4rem!important}::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:6rem!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i2$2.TuiAsideComponent, selector: "aside[tuiNavigationAside]", inputs: ["tuiNavigationAside"] }, { kind: "component", type: EzUISideBarItem, selector: "ezui-sidebar-item", inputs: ["item"], outputs: ["onItemClick"] }] });
7199
7323
  }
7200
7324
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUISideBar, decorators: [{
7201
7325
  type: Component,
@@ -7227,7 +7351,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
7227
7351
  </aside>
7228
7352
  }
7229
7353
  `, styles: ["::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:4rem!important}::ng-deep tui-aside-group tui-expand tui-aside-group tui-expand tui-aside-group tui-expand [tuiAsideItem]{padding-inline-start:6rem!important}\n"] }]
7230
- }], ctorParameters: () => [{ type: EzUILayoutService }, { type: i2$2.Router }], propDecorators: { sidebarItems: [{
7354
+ }], ctorParameters: () => [{ type: EzUILayoutService }, { type: i2$3.Router }], propDecorators: { sidebarItems: [{
7231
7355
  type: Input
7232
7356
  }], sidebarFooterItems: [{
7233
7357
  type: Input
@@ -7266,7 +7390,7 @@ class EzUITopBar {
7266
7390
 
7267
7391
  <ng-container [ngTemplateOutlet]="layout.topbarright"></ng-container>
7268
7392
  </header>
7269
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4$2.TuiHeaderComponent, selector: "header[tuiNavigationHeader]" }, { kind: "component", type: i4$2.TuiLogoComponent, selector: "[tuiNavigationLogo]" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }] });
7393
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$2.TuiHeaderComponent, selector: "header[tuiNavigationHeader]" }, { kind: "component", type: i2$2.TuiLogoComponent, selector: "[tuiNavigationLogo]" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],label[tuiButton],a[tuiIconButton],button[tuiIconButton],label[tuiIconButton]", inputs: ["size"] }] });
7270
7394
  }
7271
7395
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUITopBar, decorators: [{
7272
7396
  type: Component,
@@ -7340,7 +7464,7 @@ class EzUILayout {
7340
7464
  </div>
7341
7465
  </div>
7342
7466
  </tui-root>
7343
- `, isInline: true, styles: ["::ng-deep .rootContainer .t-root-content{display:flex;height:100vh;width:100vw}.layout-wrapper{display:flex;flex-direction:column;height:100vh;min-height:100vh;max-height:100vh}.layout-wrapper-split{display:flex;flex-direction:row;width:100%;height:100%;overflow:hidden;max-width:100vw}.layout-main-container{display:flex;flex-direction:column;min-height:inherit;max-height:inherit;width:100%;justify-content:space-between;overflow:hidden}.layout-main{flex:1 1 auto;display:flex}::ng-deep .layout-main>.t-content{padding:1rem;display:flex;block-size:auto!important;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$2.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: EzUITopBar, selector: "ezui-topbar" }, { kind: "component", type: EzUISideBar, selector: "ezui-sidebar", inputs: ["sidebarItems", "sidebarFooterItems", "baseRoute"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }, { kind: "component", type: TuiRoot, selector: "tui-root" }] });
7467
+ `, isInline: true, styles: ["::ng-deep .rootContainer .t-root-content{display:flex;height:100vh;width:100vw}.layout-wrapper{display:flex;flex-direction:column;height:100vh;min-height:100vh;max-height:100vh}.layout-wrapper-split{display:flex;flex-direction:row;width:100%;height:100%;overflow:hidden;max-width:100vw}.layout-main-container{display:flex;flex-direction:column;min-height:inherit;max-height:inherit;width:100%;justify-content:space-between;overflow:hidden}.layout-main{flex:1 1 auto;display:flex}::ng-deep .layout-main>.t-content{padding:1rem;display:flex;block-size:auto!important;box-sizing:border-box}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2$3.RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: EzUITopBar, selector: "ezui-topbar" }, { kind: "component", type: EzUISideBar, selector: "ezui-sidebar", inputs: ["sidebarItems", "sidebarFooterItems", "baseRoute"] }, { kind: "component", type: TuiScrollbar, selector: "tui-scrollbar" }, { kind: "component", type: TuiRoot, selector: "tui-root" }] });
7344
7468
  }
7345
7469
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: EzUILayout, decorators: [{
7346
7470
  type: Component,