@colijnit/corecomponents_v12 300.1.2 → 300.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10720,6 +10720,7 @@ class PopupWindowShellComponent {
10720
10720
  popupWindow;
10721
10721
  hasMobileSizings;
10722
10722
  _viewContainer;
10723
+ _blankViewContainer;
10723
10724
  _appPopupButtons;
10724
10725
  isError;
10725
10726
  isWarning;
@@ -10762,8 +10763,10 @@ class PopupWindowShellComponent {
10762
10763
  ngOnDestroy() {
10763
10764
  this._close();
10764
10765
  this._viewContainer.clear();
10766
+ this._blankViewContainer.clear();
10765
10767
  this._popupCompRef = undefined;
10766
10768
  this._viewContainer = undefined;
10769
+ this._blankViewContainer = undefined;
10767
10770
  this._changeDetector = undefined;
10768
10771
  }
10769
10772
  async close(eventType) {
@@ -10795,7 +10798,12 @@ class PopupWindowShellComponent {
10795
10798
  this.onCloseClick();
10796
10799
  };
10797
10800
  _createPopupComponent() {
10798
- this._popupCompRef = this._viewContainer.createComponent(this.popupWindow.factory);
10801
+ if (this._viewContainer) {
10802
+ this._popupCompRef = this._viewContainer.createComponent(this.popupWindow.factory);
10803
+ }
10804
+ else {
10805
+ this._popupCompRef = this._blankViewContainer.createComponent(this.popupWindow.factory);
10806
+ }
10799
10807
  ObjectUtils.ForOwnProperty(this.popupWindow.inputs, (value, key) => {
10800
10808
  this._popupCompRef.instance[key] = value;
10801
10809
  });
@@ -10840,45 +10848,61 @@ class PopupWindowShellComponent {
10840
10848
  }
10841
10849
  }
10842
10850
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PopupWindowShellComponent, deps: [{ token: IconCacheService }, { token: i0.ChangeDetectorRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
10843
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: PopupWindowShellComponent, isStandalone: false, selector: "co-popup-window-shell", inputs: { popupWindow: "popupWindow", hasMobileSizings: "hasMobileSizings" }, host: { properties: { "class.mobile-sizings": "this.hasMobileSizings", "class.popup-error": "this.isError", "class.popup-warning": "this.isWarning", "class.popup-notification": "this.isNotification", "class.popup-question": "this.isQuestion", "class.movable": "this.isMovable" } }, viewQueries: [{ propertyName: "_viewContainer", first: true, predicate: ["popupContent"], descendants: true, read: ViewContainerRef }, { propertyName: "_appPopupButtons", first: true, predicate: PopupButtonsComponent, descendants: true }], ngImport: i0, template: `
10844
- <ng-container *ngIf="!isBlank">
10845
- <co-button *ngIf="popupWindow?.settings.downloadable" class="circle shadowed popup-downloadable" [iconData]="downloadIcon"
10846
- iconClass="light"
10847
- (click)="onDownloadClick()"></co-button>
10848
- <co-button *ngIf="!popupWindow?.settings.hideCloseIcon" class="circle shadowed popup-close" [iconData]="closeIcon"
10849
- iconClass="light"
10850
- (click)="onCloseClick()"></co-button>
10851
- <div class="popup-wrapper" *ngIf="!isBlank">
10852
- <div class="popup-title"><h2 [textContent]="popupWindow?.settings.title"></h2></div>
10853
- <div class="popup-content" (mousedown)="$event.stopImmediatePropagation()">
10854
- <ng-template #popupContent></ng-template>
10851
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: PopupWindowShellComponent, isStandalone: false, selector: "co-popup-window-shell", inputs: { popupWindow: "popupWindow", hasMobileSizings: "hasMobileSizings" }, host: { properties: { "class.mobile-sizings": "this.hasMobileSizings", "class.popup-error": "this.isError", "class.popup-warning": "this.isWarning", "class.popup-notification": "this.isNotification", "class.popup-question": "this.isQuestion", "class.movable": "this.isMovable" } }, viewQueries: [{ propertyName: "_viewContainer", first: true, predicate: ["popupContent"], descendants: true, read: ViewContainerRef }, { propertyName: "_blankViewContainer", first: true, predicate: ["blankPopupContent"], descendants: true, read: ViewContainerRef }, { propertyName: "_appPopupButtons", first: true, predicate: PopupButtonsComponent, descendants: true }], ngImport: i0, template: `
10852
+ @if (!isBlank) {
10853
+ @if (popupWindow?.settings.downloadable) {
10854
+ <co-button class="circle shadowed popup-downloadable" [iconData]="downloadIcon"
10855
+ iconClass="light"
10856
+ (click)="onDownloadClick()"></co-button>
10857
+ }
10858
+ @if (!popupWindow?.settings.hideCloseIcon) {
10859
+ <co-button class="circle shadowed popup-close" [iconData]="closeIcon"
10860
+ iconClass="light"
10861
+ (click)="onCloseClick()"></co-button>
10862
+ }
10863
+ @if (!isBlank) {
10864
+ <div class="popup-wrapper">
10865
+ <div class="popup-title"><h2 [textContent]="popupWindow?.settings.title"></h2></div>
10866
+ <div class="popup-content" (mousedown)="$event.stopImmediatePropagation()">
10867
+ <ng-template #popupContent></ng-template>
10868
+ </div>
10869
+ <co-popup-buttons [popupWindow]="popupWindow" (buttonClick)="onButtonClick($event)"></co-popup-buttons>
10855
10870
  </div>
10856
- <co-popup-buttons [popupWindow]="popupWindow" (buttonClick)="onButtonClick($event)"></co-popup-buttons>
10857
- </div>
10858
- </ng-container>
10859
- <ng-template #popupContent *ngIf="isBlank"></ng-template>
10860
- `, isInline: true, styles: [":host{position:fixed;display:flex;top:50%;left:50%;transform:translate(-50%,-50%)}:host.popup-error div.popup-wrapper{background:#cfd0d1}:host.popup-warning .secondary-font{color:#fff}:host.popup-warning div.popup-wrapper{background:#484f60}:host.popup-warning div.popup-title,:host.popup-warning div.popup-content{color:#fff}:host.popup-notification div.popup-wrapper,:host.popup-question div.popup-wrapper{background:#cfd0d1}co-button.popup-close,co-button.popup-downloadable{position:absolute;transform:translateY(-50%)}co-button.popup-close{right:5px}co-button.popup-downloadable{right:45px}.popup-wrapper{padding:30px;border-radius:5px;box-shadow:0 0 13px -2px #0003;background:#cfd0d1;min-width:320px}.popup-wrapper .popup-title{padding-bottom:20px;border-bottom:1px solid #DAD9D9}.popup-wrapper .popup-content{margin-top:20px;margin-bottom:20px;max-height:50vh;max-width:80vw;overflow:auto}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ButtonComponent, selector: "co-button", inputs: ["label", "iconData", "iconDataRight", "isToggleButton", "isToggled", "hidden", "disabled"], outputs: ["onClick", "clickedWhileDisabled", "isToggledChange"] }, { kind: "component", type: PopupButtonsComponent, selector: "co-popup-buttons", inputs: ["popupWindow"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10871
+ }
10872
+ }
10873
+ @if (isBlank) {
10874
+ <ng-template #blankPopupContent></ng-template>
10875
+ }
10876
+ `, isInline: true, styles: [":host{position:fixed;display:flex;top:50%;left:50%;transform:translate(-50%,-50%)}:host.popup-error div.popup-wrapper{background:#cfd0d1}:host.popup-warning .secondary-font{color:#fff}:host.popup-warning div.popup-wrapper{background:#484f60}:host.popup-warning div.popup-title,:host.popup-warning div.popup-content{color:#fff}:host.popup-notification div.popup-wrapper,:host.popup-question div.popup-wrapper{background:#cfd0d1}co-button.popup-close,co-button.popup-downloadable{position:absolute;transform:translateY(-50%)}co-button.popup-close{right:5px}co-button.popup-downloadable{right:45px}.popup-wrapper{padding:30px;border-radius:5px;box-shadow:0 0 13px -2px #0003;background:#cfd0d1;min-width:320px}.popup-wrapper .popup-title{padding-bottom:20px;border-bottom:1px solid #DAD9D9}.popup-wrapper .popup-content{margin-top:20px;margin-bottom:20px;max-height:50vh;max-width:80vw;overflow:auto}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "co-button", inputs: ["label", "iconData", "iconDataRight", "isToggleButton", "isToggled", "hidden", "disabled"], outputs: ["onClick", "clickedWhileDisabled", "isToggledChange"] }, { kind: "component", type: PopupButtonsComponent, selector: "co-popup-buttons", inputs: ["popupWindow"], outputs: ["buttonClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10861
10877
  }
10862
10878
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: PopupWindowShellComponent, decorators: [{
10863
10879
  type: Component,
10864
10880
  args: [{ selector: "co-popup-window-shell", template: `
10865
- <ng-container *ngIf="!isBlank">
10866
- <co-button *ngIf="popupWindow?.settings.downloadable" class="circle shadowed popup-downloadable" [iconData]="downloadIcon"
10867
- iconClass="light"
10868
- (click)="onDownloadClick()"></co-button>
10869
- <co-button *ngIf="!popupWindow?.settings.hideCloseIcon" class="circle shadowed popup-close" [iconData]="closeIcon"
10870
- iconClass="light"
10871
- (click)="onCloseClick()"></co-button>
10872
- <div class="popup-wrapper" *ngIf="!isBlank">
10873
- <div class="popup-title"><h2 [textContent]="popupWindow?.settings.title"></h2></div>
10874
- <div class="popup-content" (mousedown)="$event.stopImmediatePropagation()">
10875
- <ng-template #popupContent></ng-template>
10881
+ @if (!isBlank) {
10882
+ @if (popupWindow?.settings.downloadable) {
10883
+ <co-button class="circle shadowed popup-downloadable" [iconData]="downloadIcon"
10884
+ iconClass="light"
10885
+ (click)="onDownloadClick()"></co-button>
10886
+ }
10887
+ @if (!popupWindow?.settings.hideCloseIcon) {
10888
+ <co-button class="circle shadowed popup-close" [iconData]="closeIcon"
10889
+ iconClass="light"
10890
+ (click)="onCloseClick()"></co-button>
10891
+ }
10892
+ @if (!isBlank) {
10893
+ <div class="popup-wrapper">
10894
+ <div class="popup-title"><h2 [textContent]="popupWindow?.settings.title"></h2></div>
10895
+ <div class="popup-content" (mousedown)="$event.stopImmediatePropagation()">
10896
+ <ng-template #popupContent></ng-template>
10897
+ </div>
10898
+ <co-popup-buttons [popupWindow]="popupWindow" (buttonClick)="onButtonClick($event)"></co-popup-buttons>
10876
10899
  </div>
10877
- <co-popup-buttons [popupWindow]="popupWindow" (buttonClick)="onButtonClick($event)"></co-popup-buttons>
10878
- </div>
10879
- </ng-container>
10880
- <ng-template #popupContent *ngIf="isBlank"></ng-template>
10881
- `, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{position:fixed;display:flex;top:50%;left:50%;transform:translate(-50%,-50%)}:host.popup-error div.popup-wrapper{background:#cfd0d1}:host.popup-warning .secondary-font{color:#fff}:host.popup-warning div.popup-wrapper{background:#484f60}:host.popup-warning div.popup-title,:host.popup-warning div.popup-content{color:#fff}:host.popup-notification div.popup-wrapper,:host.popup-question div.popup-wrapper{background:#cfd0d1}co-button.popup-close,co-button.popup-downloadable{position:absolute;transform:translateY(-50%)}co-button.popup-close{right:5px}co-button.popup-downloadable{right:45px}.popup-wrapper{padding:30px;border-radius:5px;box-shadow:0 0 13px -2px #0003;background:#cfd0d1;min-width:320px}.popup-wrapper .popup-title{padding-bottom:20px;border-bottom:1px solid #DAD9D9}.popup-wrapper .popup-content{margin-top:20px;margin-bottom:20px;max-height:50vh;max-width:80vw;overflow:auto}\n"] }]
10900
+ }
10901
+ }
10902
+ @if (isBlank) {
10903
+ <ng-template #blankPopupContent></ng-template>
10904
+ }
10905
+ `, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: [":host{position:fixed;display:flex;top:50%;left:50%;transform:translate(-50%,-50%)}:host.popup-error div.popup-wrapper{background:#cfd0d1}:host.popup-warning .secondary-font{color:#fff}:host.popup-warning div.popup-wrapper{background:#484f60}:host.popup-warning div.popup-title,:host.popup-warning div.popup-content{color:#fff}:host.popup-notification div.popup-wrapper,:host.popup-question div.popup-wrapper{background:#cfd0d1}co-button.popup-close,co-button.popup-downloadable{position:absolute;transform:translateY(-50%)}co-button.popup-close{right:5px}co-button.popup-downloadable{right:45px}.popup-wrapper{padding:30px;border-radius:5px;box-shadow:0 0 13px -2px #0003;background:#cfd0d1;min-width:320px}.popup-wrapper .popup-title{padding-bottom:20px;border-bottom:1px solid #DAD9D9}.popup-wrapper .popup-content{margin-top:20px;margin-bottom:20px;max-height:50vh;max-width:80vw;overflow:auto}\n"] }]
10882
10906
  }], ctorParameters: () => [{ type: IconCacheService }, { type: i0.ChangeDetectorRef }, { type: i0.ViewContainerRef }], propDecorators: { popupWindow: [{
10883
10907
  type: Input
10884
10908
  }], hasMobileSizings: [{
@@ -10889,6 +10913,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
10889
10913
  }], _viewContainer: [{
10890
10914
  type: ViewChild,
10891
10915
  args: ["popupContent", { read: ViewContainerRef }]
10916
+ }], _blankViewContainer: [{
10917
+ type: ViewChild,
10918
+ args: ["blankPopupContent", { read: ViewContainerRef }]
10892
10919
  }], _appPopupButtons: [{
10893
10920
  type: ViewChild,
10894
10921
  args: [PopupButtonsComponent]
@@ -12043,38 +12070,36 @@ class SimpleGridCellComponent {
12043
12070
  this._changeDetector.detectChanges();
12044
12071
  }
12045
12072
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SimpleGridCellComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Injector }, { token: FormComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
12046
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.16", type: SimpleGridCellComponent, isStandalone: false, selector: "co-simple-grid-cell", inputs: { editMode: "editMode", column: "column", row: "row", fieldEditMode: "fieldEditMode" }, outputs: { cellClick: "cellClick" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class.co-simple-grid-cell": "this.showClass" } }, viewQueries: [{ propertyName: "editTemplateContent", first: true, predicate: ["editTemplate"], descendants: true, read: BaseInputComponent }, { propertyName: "noEditTemplateContent", first: true, predicate: ["noEditTemplate"], descendants: true }, { propertyName: "noTemplateContent", first: true, predicate: ["noTemplate"], descendants: true }], ngImport: i0, template: `
12073
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: SimpleGridCellComponent, isStandalone: false, selector: "co-simple-grid-cell", inputs: { editMode: "editMode", column: "column", row: "row", fieldEditMode: "fieldEditMode" }, outputs: { cellClick: "cellClick" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class.co-simple-grid-cell": "this.showClass" } }, viewQueries: [{ propertyName: "editTemplateContent", first: true, predicate: ["editTemplate"], descendants: true, read: BaseInputComponent }, { propertyName: "noEditTemplateContent", first: true, predicate: ["noEditTemplate"], descendants: true }, { propertyName: "noTemplateContent", first: true, predicate: ["noTemplate"], descendants: true }], ngImport: i0, template: `
12047
12074
  <div class="simple-grid-column-cell-value" [ngClass]="column.textAlign ? column.textAlign : defaultTextAlign">
12048
- <ng-container *ngIf="editMode; else noInlineEdit">
12049
- <div class="simple-grid-column-cell-field">
12050
- <ng-container #editTemplate *ngIf="column.editTemplate; else noEditTemplate"
12051
- [ngTemplateOutlet]="column.editTemplate"
12052
- [ngTemplateOutletInjector]="columnInjector"
12053
- [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12054
- <ng-template #noEditTemplate>
12055
- <ng-container *ngIf="column.template; else noTemplate">
12056
- <ng-container [ngTemplateOutlet]="column.template"
12057
- [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12058
- </ng-container>
12059
- <ng-template #noTemplate>
12060
- <co-input-text [(model)]="row[column.field]" [required]="column.required"></co-input-text>
12061
- </ng-template>
12062
- </ng-template>
12063
- </div>
12064
- </ng-container>
12065
- <ng-template #noInlineEdit>
12066
- <div class="simple-grid-column-cell-field">
12067
- <ng-container *ngIf="column.template; else noTemplate">
12068
- <ng-container [ngTemplateOutlet]="column.template"
12069
- [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12070
- </ng-container>
12071
- <ng-template #noTemplate>
12072
- <span [textContent]="column.getFieldValue(row[column.field])" [title]="row[column.field]"></span>
12073
- </ng-template>
12074
- </div>
12075
- </ng-template>
12075
+ @if (editMode) {
12076
+ <div class="simple-grid-column-cell-field">
12077
+ @if (column.editTemplate) {
12078
+ <ng-container #editTemplate
12079
+ [ngTemplateOutlet]="column.editTemplate"
12080
+ [ngTemplateOutletInjector]="columnInjector"
12081
+ [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12082
+ } @else {
12083
+ @if (column.template) {
12084
+ <ng-container [ngTemplateOutlet]="column.template"
12085
+ [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12086
+ } @else {
12087
+ <co-input-text [(model)]="row[column.field]" [required]="column.required"></co-input-text>
12088
+ }
12089
+ }
12090
+ </div>
12091
+ } @else {
12092
+ <div class="simple-grid-column-cell-field">
12093
+ @if (column.template) {
12094
+ <ng-container [ngTemplateOutlet]="column.template"
12095
+ [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12096
+ } @else {
12097
+ <span [textContent]="column.getFieldValue(row[column.field])" [title]="row[column.field]"></span>
12098
+ }
12099
+ </div>
12100
+ }
12076
12101
  </div>
12077
- `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InputTextComponent, selector: "co-input-text", inputs: ["useContent", "placeholder", "align", "type", "formatPipe", "min", "max", "pattern", "digitsOnly", "excludePlusMinus", "showClearButton", "keyDownWhiteList", "showPlaceholderOnFocus", "leftIcon", "rightIcon", "leftIconData", "rightIconData", "selectOnFocus", "emptyPlace", "firstDayOfWeek", "noStyle", "hideArrowButtons", "model"], outputs: ["leftIconClick", "leftIconMouseDown", "leftIconMouseUp", "rightIconClick", "rightIconMouseDown", "rightIconMouseUp", "clearIconClick", "isFocused"] }], encapsulation: i0.ViewEncapsulation.None });
12102
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: InputTextComponent, selector: "co-input-text", inputs: ["useContent", "placeholder", "align", "type", "formatPipe", "min", "max", "pattern", "digitsOnly", "excludePlusMinus", "showClearButton", "keyDownWhiteList", "showPlaceholderOnFocus", "leftIcon", "rightIcon", "leftIconData", "rightIconData", "selectOnFocus", "emptyPlace", "firstDayOfWeek", "noStyle", "hideArrowButtons", "model"], outputs: ["leftIconClick", "leftIconMouseDown", "leftIconMouseUp", "rightIconClick", "rightIconMouseDown", "rightIconMouseUp", "clearIconClick", "isFocused"] }], encapsulation: i0.ViewEncapsulation.None });
12078
12103
  }
12079
12104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: SimpleGridCellComponent, decorators: [{
12080
12105
  type: Component,
@@ -12082,36 +12107,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
12082
12107
  selector: "co-simple-grid-cell",
12083
12108
  template: `
12084
12109
  <div class="simple-grid-column-cell-value" [ngClass]="column.textAlign ? column.textAlign : defaultTextAlign">
12085
- <ng-container *ngIf="editMode; else noInlineEdit">
12086
- <div class="simple-grid-column-cell-field">
12087
- <ng-container #editTemplate *ngIf="column.editTemplate; else noEditTemplate"
12088
- [ngTemplateOutlet]="column.editTemplate"
12089
- [ngTemplateOutletInjector]="columnInjector"
12090
- [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12091
- <ng-template #noEditTemplate>
12092
- <ng-container *ngIf="column.template; else noTemplate">
12093
- <ng-container [ngTemplateOutlet]="column.template"
12094
- [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12095
- </ng-container>
12096
- <ng-template #noTemplate>
12097
- <co-input-text [(model)]="row[column.field]" [required]="column.required"></co-input-text>
12098
- </ng-template>
12099
- </ng-template>
12100
- </div>
12101
- </ng-container>
12102
- <ng-template #noInlineEdit>
12103
- <div class="simple-grid-column-cell-field">
12104
- <ng-container *ngIf="column.template; else noTemplate">
12105
- <ng-container [ngTemplateOutlet]="column.template"
12106
- [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12107
- </ng-container>
12108
- <ng-template #noTemplate>
12109
- <span [textContent]="column.getFieldValue(row[column.field])" [title]="row[column.field]"></span>
12110
- </ng-template>
12111
- </div>
12112
- </ng-template>
12110
+ @if (editMode) {
12111
+ <div class="simple-grid-column-cell-field">
12112
+ @if (column.editTemplate) {
12113
+ <ng-container #editTemplate
12114
+ [ngTemplateOutlet]="column.editTemplate"
12115
+ [ngTemplateOutletInjector]="columnInjector"
12116
+ [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12117
+ } @else {
12118
+ @if (column.template) {
12119
+ <ng-container [ngTemplateOutlet]="column.template"
12120
+ [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12121
+ } @else {
12122
+ <co-input-text [(model)]="row[column.field]" [required]="column.required"></co-input-text>
12123
+ }
12124
+ }
12125
+ </div>
12126
+ } @else {
12127
+ <div class="simple-grid-column-cell-field">
12128
+ @if (column.template) {
12129
+ <ng-container [ngTemplateOutlet]="column.template"
12130
+ [ngTemplateOutletContext]="{value: row[column.field], row: row}"></ng-container>
12131
+ } @else {
12132
+ <span [textContent]="column.getFieldValue(row[column.field])" [title]="row[column.field]"></span>
12133
+ }
12134
+ </div>
12135
+ }
12113
12136
  </div>
12114
- `,
12137
+ `,
12115
12138
  encapsulation: ViewEncapsulation.None,
12116
12139
  standalone: false
12117
12140
  }]
@@ -14319,6 +14342,7 @@ class ListOfValuesComponent extends BaseInputComponent {
14319
14342
  searchPlaceholder = '';
14320
14343
  searchDisabled = false;
14321
14344
  showChips = true;
14345
+ leftIconClick = new EventEmitter();
14322
14346
  showClass() {
14323
14347
  return true;
14324
14348
  }
@@ -14578,7 +14602,7 @@ class ListOfValuesComponent extends BaseInputComponent {
14578
14602
  }
14579
14603
  }
14580
14604
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: ListOfValuesComponent, deps: [{ token: FormComponent, optional: true }, { token: IconCacheService }, { token: i0.ChangeDetectorRef }, { token: OverlayService }, { token: FormInputUserModelChangeListenerService }, { token: NgZoneWrapperService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
14581
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ListOfValuesComponent, isStandalone: false, selector: "co-list-of-values", inputs: { model: "model", multiselect: "multiselect", showToggleAll: "showToggleAll", largeCollection: "largeCollection", displayField: "displayField", optionIcon: "optionIcon", collection: "collection", collectionLoadFn: "collectionLoadFn", collectionLoadFnProp: "collectionLoadFnProp", leftIconData: "leftIconData", searchPlaceholder: "searchPlaceholder", searchDisabled: "searchDisabled", showChips: "showChips" }, host: { properties: { "class.custom-height": "this.multiselect", "class.multi-select": "this.multiselect", "class.co-list-of-values": "this.showClass" } }, providers: [
14605
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: ListOfValuesComponent, isStandalone: false, selector: "co-list-of-values", inputs: { model: "model", multiselect: "multiselect", showToggleAll: "showToggleAll", largeCollection: "largeCollection", displayField: "displayField", optionIcon: "optionIcon", collection: "collection", collectionLoadFn: "collectionLoadFn", collectionLoadFnProp: "collectionLoadFnProp", leftIconData: "leftIconData", searchPlaceholder: "searchPlaceholder", searchDisabled: "searchDisabled", showChips: "showChips" }, outputs: { leftIconClick: "leftIconClick" }, host: { properties: { "class.custom-height": "this.multiselect", "class.multi-select": "this.multiselect", "class.co-list-of-values": "this.showClass" } }, providers: [
14582
14606
  OverlayService,
14583
14607
  {
14584
14608
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
@@ -14613,6 +14637,7 @@ class ListOfValuesComponent extends BaseInputComponent {
14613
14637
  (click)="openPopup()"
14614
14638
  (rightIconClick)="toggleSelect()"
14615
14639
  (keydown)="handleInputKeyDown($event)"
14640
+ (leftIconClick)="leftIconClick.emit()"
14616
14641
  (clearIconClick)="clearModel($event)"
14617
14642
  (blur)="checkModel()">
14618
14643
  @if (multiselect && showChips) {
@@ -14665,6 +14690,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
14665
14690
  (click)="openPopup()"
14666
14691
  (rightIconClick)="toggleSelect()"
14667
14692
  (keydown)="handleInputKeyDown($event)"
14693
+ (leftIconClick)="leftIconClick.emit()"
14668
14694
  (clearIconClick)="clearModel($event)"
14669
14695
  (blur)="checkModel()">
14670
14696
  @if (multiselect && showChips) {
@@ -14730,6 +14756,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
14730
14756
  type: Input
14731
14757
  }], showChips: [{
14732
14758
  type: Input
14759
+ }], leftIconClick: [{
14760
+ type: Output
14733
14761
  }], showClass: [{
14734
14762
  type: HostBinding,
14735
14763
  args: ['class.co-list-of-values']
@@ -19694,6 +19722,7 @@ class HourSchedulingExpandableComponent {
19694
19722
  hourLabels = [];
19695
19723
  scheduledObjects = [];
19696
19724
  selectedHour;
19725
+ layouts = [];
19697
19726
  resizing = false;
19698
19727
  resizeDirection;
19699
19728
  initialY;
@@ -19784,6 +19813,7 @@ class HourSchedulingExpandableComponent {
19784
19813
  });
19785
19814
  }
19786
19815
  this.scheduledObjects = schedulingObjects;
19816
+ this.layouts = this.calculateLeftAndWidthOfObjects();
19787
19817
  this.cdRef.markForCheck();
19788
19818
  this.cdRef.detectChanges();
19789
19819
  }
@@ -19837,6 +19867,7 @@ class HourSchedulingExpandableComponent {
19837
19867
  this.moveBetweenCalendarsEvent.emit({ hour: hour, data: parsed });
19838
19868
  }
19839
19869
  }
19870
+ this.layouts = this.calculateLeftAndWidthOfObjects();
19840
19871
  }
19841
19872
  allowDrop(event, hour) {
19842
19873
  event.preventDefault();
@@ -19914,6 +19945,7 @@ class HourSchedulingExpandableComponent {
19914
19945
  this.resizing = false;
19915
19946
  this.currentResizingObject.selected = false;
19916
19947
  this.currentResizingObject = null;
19948
+ this.layouts = this.calculateLeftAndWidthOfObjects();
19917
19949
  }
19918
19950
  document.removeEventListener("mousemove", this._onMouseMove);
19919
19951
  document.removeEventListener("mouseup", this._onMouseUp);
@@ -19982,6 +20014,48 @@ class HourSchedulingExpandableComponent {
19982
20014
  this.taskCreationEvent.emit(hour);
19983
20015
  this.selectedHour = "";
19984
20016
  }
20017
+ calculateLeftAndWidthOfObjects() {
20018
+ const layoutData = new Array(this.scheduledObjects.length);
20019
+ // Helper: check if two time ranges overlap
20020
+ const isOverlapping = (startA, endA, startB, endB) => {
20021
+ return startA < endB && startB < endA;
20022
+ };
20023
+ // Step 1: build overlap groups
20024
+ const overlapGroups = [];
20025
+ const processed = new Set();
20026
+ for (let i = 0; i < this.scheduledObjects.length; i++) {
20027
+ if (processed.has(i)) {
20028
+ continue;
20029
+ }
20030
+ const group = [i];
20031
+ const objA = this.scheduledObjects[i];
20032
+ const startA = new Date(objA.start);
20033
+ const endA = new Date(objA.end);
20034
+ for (let j = i + 1; j < this.scheduledObjects.length; j++) {
20035
+ const objB = this.scheduledObjects[j];
20036
+ const startB = new Date(objB.start);
20037
+ const endB = new Date(objB.end);
20038
+ if (isOverlapping(startA, endA, startB, endB)) {
20039
+ group.push(j);
20040
+ processed.add(j);
20041
+ }
20042
+ }
20043
+ group.forEach(index => processed.add(index));
20044
+ overlapGroups.push(group);
20045
+ }
20046
+ // Step 2: assign layout per group
20047
+ overlapGroups.forEach(group => {
20048
+ const total = group.length;
20049
+ const width = 100 / total;
20050
+ group.forEach((objectIndex, i) => {
20051
+ layoutData[objectIndex] = {
20052
+ leftPercent: i * width,
20053
+ widthPercent: width
20054
+ };
20055
+ });
20056
+ });
20057
+ return layoutData;
20058
+ }
19985
20059
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HourSchedulingExpandableComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: IconCacheService }], target: i0.ɵɵFactoryTarget.Component });
19986
20060
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: HourSchedulingExpandableComponent, isStandalone: false, selector: "co-hour-scheduling-expandable", inputs: { schedule: "schedule", startTimeProp: "startTimeProp", endTimeProp: "endTimeProp", objectsProp: "objectsProp", childProp: "childProp", customTemplate: "customTemplate", idProp: "idProp" }, outputs: { timeChangeEvent: "timeChangeEvent", newObjectPlanEvent: "newObjectPlanEvent", taskCreationEvent: "taskCreationEvent", moveBetweenCalendarsEvent: "moveBetweenCalendarsEvent" }, host: { listeners: { "window:resize": "onResize($event)", "document:click": "clickOut($event)" }, properties: { "class.co-hour-scheduling-expandable": "this.showClass" } }, ngImport: i0, template: `
19987
20061
  <div class="wrapper">
@@ -20016,6 +20090,7 @@ class HourSchedulingExpandableComponent {
20016
20090
  [ngTemplateOutlet]="customTemplate"
20017
20091
  [ngTemplateOutletContext]="{
20018
20092
  objects: scheduledObjects,
20093
+ layouts: layouts,
20019
20094
  onSelectBlock: this.onSelectBlock.bind(this),
20020
20095
  onResizeStart: this.onResizeStart.bind(this),
20021
20096
  onResizeEnd: this.onResizeEnd.bind(this),
@@ -20069,6 +20144,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
20069
20144
  [ngTemplateOutlet]="customTemplate"
20070
20145
  [ngTemplateOutletContext]="{
20071
20146
  objects: scheduledObjects,
20147
+ layouts: layouts,
20072
20148
  onSelectBlock: this.onSelectBlock.bind(this),
20073
20149
  onResizeStart: this.onResizeStart.bind(this),
20074
20150
  onResizeEnd: this.onResizeEnd.bind(this),
@@ -20127,7 +20203,6 @@ class HourSchedulingExpandableTemplateComponent {
20127
20203
  objectTemplate;
20128
20204
  set objects(objects) {
20129
20205
  this._objects = objects;
20130
- this.layouts = this.calculateLeftAndWidthOfObjects();
20131
20206
  }
20132
20207
  get objects() {
20133
20208
  return this._objects;
@@ -20144,50 +20219,8 @@ class HourSchedulingExpandableTemplateComponent {
20144
20219
  event.dataTransfer?.setData("text", JSON.stringify(obj));
20145
20220
  this.onDragStartCustom?.(obj);
20146
20221
  }
20147
- calculateLeftAndWidthOfObjects() {
20148
- const layoutData = new Array(this._objects.length);
20149
- // Helper: check if two time ranges overlap
20150
- const isOverlapping = (startA, endA, startB, endB) => {
20151
- return startA < endB && startB < endA;
20152
- };
20153
- // Step 1: build overlap groups
20154
- const overlapGroups = [];
20155
- const processed = new Set();
20156
- for (let i = 0; i < this._objects.length; i++) {
20157
- if (processed.has(i)) {
20158
- continue;
20159
- }
20160
- const group = [i];
20161
- const objA = this._objects[i];
20162
- const startA = new Date(objA.start);
20163
- const endA = new Date(objA.end);
20164
- for (let j = i + 1; j < this._objects.length; j++) {
20165
- const objB = this._objects[j];
20166
- const startB = new Date(objB.start);
20167
- const endB = new Date(objB.end);
20168
- if (isOverlapping(startA, endA, startB, endB)) {
20169
- group.push(j);
20170
- processed.add(j);
20171
- }
20172
- }
20173
- group.forEach(index => processed.add(index));
20174
- overlapGroups.push(group);
20175
- }
20176
- // Step 2: assign layout per group
20177
- overlapGroups.forEach(group => {
20178
- const total = group.length;
20179
- const width = 100 / total;
20180
- group.forEach((objectIndex, i) => {
20181
- layoutData[objectIndex] = {
20182
- leftPercent: i * width,
20183
- widthPercent: width
20184
- };
20185
- });
20186
- });
20187
- return layoutData;
20188
- }
20189
20222
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: HourSchedulingExpandableTemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20190
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: HourSchedulingExpandableTemplateComponent, isStandalone: false, selector: "co-hour-scheduling-expandable-template", inputs: { objectTemplate: "objectTemplate", objects: "objects", onDragStartCustom: "onDragStartCustom", onResizeStart: "onResizeStart", onSelectBlock: "onSelectBlock", startTimeProp: "startTimeProp", endTimeProp: "endTimeProp" }, host: { properties: { "class.co-hour-scheduling-expandable-template": "this.showClass" } }, ngImport: i0, template: `
20223
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: HourSchedulingExpandableTemplateComponent, isStandalone: false, selector: "co-hour-scheduling-expandable-template", inputs: { layouts: "layouts", objectTemplate: "objectTemplate", objects: "objects", onDragStartCustom: "onDragStartCustom", onResizeStart: "onResizeStart", onSelectBlock: "onSelectBlock", startTimeProp: "startTimeProp", endTimeProp: "endTimeProp" }, host: { properties: { "class.co-hour-scheduling-expandable-template": "this.showClass" } }, ngImport: i0, template: `
20191
20224
 
20192
20225
  @for (obj of objects; track obj.id; let i = $index) {
20193
20226
  <div
@@ -20206,7 +20239,7 @@ class HourSchedulingExpandableTemplateComponent {
20206
20239
 
20207
20240
  <ng-template
20208
20241
  [ngTemplateOutlet]="objectTemplate"
20209
- [ngTemplateOutletContext]="{object: obj}">
20242
+ [ngTemplateOutletContext]="{object: obj, layouts: layouts}">
20210
20243
  </ng-template>
20211
20244
 
20212
20245
  @if (obj.selected) {
@@ -20239,7 +20272,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
20239
20272
 
20240
20273
  <ng-template
20241
20274
  [ngTemplateOutlet]="objectTemplate"
20242
- [ngTemplateOutletContext]="{object: obj}">
20275
+ [ngTemplateOutletContext]="{object: obj, layouts: layouts}">
20243
20276
  </ng-template>
20244
20277
 
20245
20278
  @if (obj.selected) {
@@ -20251,7 +20284,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
20251
20284
  encapsulation: ViewEncapsulation.None,
20252
20285
  standalone: false
20253
20286
  }]
20254
- }], propDecorators: { objectTemplate: [{
20287
+ }], propDecorators: { layouts: [{
20288
+ type: Input
20289
+ }], objectTemplate: [{
20255
20290
  type: Input
20256
20291
  }], objects: [{
20257
20292
  type: Input