@valtimo/teams 13.23.0 → 13.24.1

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.
@@ -94,10 +94,10 @@ class TeamsApiService extends BaseApiService {
94
94
  getCurrentUserTeams() {
95
95
  return this.httpClient.get(this.getApiUrl('v1/user/team'));
96
96
  }
97
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsApiService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
98
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsApiService, providedIn: 'root' }); }
97
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsApiService, deps: [{ token: i1.ConfigService }, { token: i2.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
98
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsApiService, providedIn: 'root' }); }
99
99
  }
100
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsApiService, decorators: [{
100
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsApiService, decorators: [{
101
101
  type: Injectable,
102
102
  args: [{
103
103
  providedIn: 'root',
@@ -160,10 +160,10 @@ class TeamsService {
160
160
  this._showDeleteModal$.next(false);
161
161
  this._teamToDelete$.next(null);
162
162
  }
163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
164
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsService }); }
163
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
164
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsService }); }
165
165
  }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsService, decorators: [{
166
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsService, decorators: [{
167
167
  type: Injectable
168
168
  }] });
169
169
 
@@ -282,10 +282,10 @@ class TeamDetailService {
282
282
  ngOnDestroy() {
283
283
  this._subscriptions.unsubscribe();
284
284
  }
285
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailService, deps: [{ token: TeamsApiService }, { token: i3.PageTitleService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
286
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailService }); }
285
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailService, deps: [{ token: TeamsApiService }, { token: i3.PageTitleService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
286
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailService }); }
287
287
  }
288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailService, decorators: [{
288
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailService, decorators: [{
289
289
  type: Injectable
290
290
  }], ctorParameters: () => [{ type: TeamsApiService }, { type: i3.PageTitleService }, { type: i3$1.Router }] });
291
291
 
@@ -395,10 +395,10 @@ class TeamsCreateEditModalComponent {
395
395
  this.editingTeam = null;
396
396
  });
397
397
  }
398
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsCreateEditModalComponent, deps: [{ token: TeamsApiService }, { token: TeamsService }, { token: i2$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
399
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TeamsCreateEditModalComponent, isStandalone: true, selector: "valtimo-teams-create-edit-modal", ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{showModal: showModal$ | async} as obs\"\n [open]=\"obs.showModal\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n (isEditMode ? 'teams.createEditModal.editTitle' : 'teams.createEditModal.createTitle')\n | translate\n }}\n </h3>\n <p cdsModalHeaderDescription *ngIf=\"!isEditMode\">\n {{ 'teams.createEditModal.createDescription' | translate }}\n </p>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"valtimo-teams-create__content\"\n [cdsLayer]=\"1\"\n >\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"formGroup.disabled\" [invalid]=\"title.touched && title.invalid\">\n {{ 'teams.createEditModal.teamName' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'teams.createEditModal.teamNamePlaceholder' | translate }}\"\n />\n </cds-label>\n </div>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid || formGroup.disabled\"\n (click)=\"onSave()\"\n >\n {{ (isEditMode ? 'teams.createEditModal.save' : 'teams.createEditModal.create') | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-teams-create__content{display:flex;flex-direction:column;gap:16px}.cds--text-input__field-wrapper cds-label{width:100%}.cds--text-input__field-wrapper ::ng-deep .cds--label{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "component", type: AutoKeyInputComponent, selector: "valtimo-auto-key-input", inputs: ["labelTranslationKey", "placeholderTranslationKey", "mode", "usedKeys", "sourceText"] }] }); }
398
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsCreateEditModalComponent, deps: [{ token: TeamsApiService }, { token: TeamsService }, { token: i2$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
399
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TeamsCreateEditModalComponent, isStandalone: true, selector: "valtimo-teams-create-edit-modal", ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{showModal: showModal$ | async} as obs\"\n [open]=\"obs.showModal\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n (isEditMode ? 'teams.createEditModal.editTitle' : 'teams.createEditModal.createTitle')\n | translate\n }}\n </h3>\n <p cdsModalHeaderDescription *ngIf=\"!isEditMode\">\n {{ 'teams.createEditModal.createDescription' | translate }}\n </p>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"valtimo-teams-create__content\"\n [cdsLayer]=\"1\"\n >\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"formGroup.disabled\" [invalid]=\"title.touched && title.invalid\">\n {{ 'teams.createEditModal.teamName' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'teams.createEditModal.teamNamePlaceholder' | translate }}\"\n />\n </cds-label>\n </div>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid || formGroup.disabled\"\n (click)=\"onSave()\"\n >\n {{ (isEditMode ? 'teams.createEditModal.save' : 'teams.createEditModal.create') | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-teams-create__content{display:flex;flex-direction:column;gap:16px}.cds--text-input__field-wrapper cds-label{width:100%}.cds--text-input__field-wrapper ::ng-deep .cds--label{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }, { kind: "component", type: AutoKeyInputComponent, selector: "valtimo-auto-key-input", inputs: ["labelTranslationKey", "placeholderTranslationKey", "mode", "usedKeys", "sourceText"] }] }); }
400
400
  }
401
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsCreateEditModalComponent, decorators: [{
401
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsCreateEditModalComponent, decorators: [{
402
402
  type: Component,
403
403
  args: [{ standalone: true, selector: 'valtimo-teams-create-edit-modal', imports: [
404
404
  CommonModule,
@@ -578,10 +578,10 @@ class TeamsListComponent {
578
578
  ...(resetPage && { page: 1 }),
579
579
  });
580
580
  }
581
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsListComponent, deps: [{ token: TeamsApiService }, { token: TeamsService }, { token: i2$2.PermissionService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
582
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TeamsListComponent, isStandalone: true, selector: "valtimo-teams-list", providers: [TeamsService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n teams: teams$ | async,\n pagination: pagination$ | async,\n canCreateTeam: canCreateTeam$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [fields]=\"FIELDS\"\n [items]=\"obs.teams\"\n [loading]=\"$loading()\"\n [actionItems]=\"ACTION_ITEMS\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"teams\"\n (rowClicked)=\"onRowClick($event)\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"teamActions\"></ng-container>\n\n <valtimo-no-results\n [action]=\"teamActions\"\n [description]=\"'teams.noResults.description' | translate\"\n [title]=\"'teams.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<ng-template #teamActions>\n <button\n cdsButton=\"primary\"\n [disabled]=\"(canCreateTeam$ | async) === false\"\n (click)=\"showCreateModal()\"\n >\n {{ 'teams.newTeam' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-teams-create-edit-modal></valtimo-teams-create-edit-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.deleteModal.content\"\n [outputOnConfirm]=\"teamToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"teams.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i3.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i3.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: TeamsCreateEditModalComponent, selector: "valtimo-teams-create-edit-modal" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i3.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
581
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsListComponent, deps: [{ token: TeamsApiService }, { token: TeamsService }, { token: i2$2.PermissionService }, { token: i3$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
582
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TeamsListComponent, isStandalone: true, selector: "valtimo-teams-list", providers: [TeamsService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n teams: teams$ | async,\n pagination: pagination$ | async,\n canCreateTeam: canCreateTeam$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [fields]=\"FIELDS\"\n [items]=\"obs.teams\"\n [loading]=\"$loading()\"\n [actionItems]=\"ACTION_ITEMS\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"teams\"\n (rowClicked)=\"onRowClick($event)\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"teamActions\"></ng-container>\n\n <valtimo-no-results\n [action]=\"teamActions\"\n [description]=\"'teams.noResults.description' | translate\"\n [title]=\"'teams.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<ng-template #teamActions>\n <button\n cdsButton=\"primary\"\n [disabled]=\"(canCreateTeam$ | async) === false\"\n (click)=\"showCreateModal()\"\n >\n {{ 'teams.newTeam' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-teams-create-edit-modal></valtimo-teams-create-edit-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.deleteModal.content\"\n [outputOnConfirm]=\"teamToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"teams.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i3.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i3.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: TeamsCreateEditModalComponent, selector: "valtimo-teams-create-edit-modal" }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i3.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }] }); }
583
583
  }
584
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsListComponent, decorators: [{
584
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsListComponent, decorators: [{
585
585
  type: Component,
586
586
  args: [{ standalone: true, selector: 'valtimo-teams-list', imports: [
587
587
  CommonModule,
@@ -661,10 +661,10 @@ class TeamDetailEditModalComponent {
661
661
  this.formGroup.enable();
662
662
  });
663
663
  }
664
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailEditModalComponent, deps: [{ token: TeamsApiService }, { token: TeamDetailService }, { token: i2$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
665
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TeamDetailEditModalComponent, isStandalone: true, selector: "valtimo-team-detail-edit-modal", ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{showModal: showModal$ | async} as obs\"\n [open]=\"obs.showModal\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'teams.createEditModal.editTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"valtimo-team-edit__content\"\n [cdsLayer]=\"1\"\n >\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"formGroup.disabled\" [invalid]=\"title.touched && title.invalid\">\n {{ 'teams.createEditModal.teamName' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'teams.createEditModal.teamNamePlaceholder' | translate }}\"\n />\n </cds-label>\n </div>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid || formGroup.disabled\"\n (click)=\"onSave()\"\n >\n {{ 'teams.createEditModal.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-team-edit__content{display:flex;flex-direction:column;gap:16px}.cds--text-input__field-wrapper cds-label{width:100%}.cds--text-input__field-wrapper ::ng-deep .cds--label{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }] }); }
664
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailEditModalComponent, deps: [{ token: TeamsApiService }, { token: TeamDetailService }, { token: i2$1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
665
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TeamDetailEditModalComponent, isStandalone: true, selector: "valtimo-team-detail-edit-modal", ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{showModal: showModal$ | async} as obs\"\n [open]=\"obs.showModal\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'teams.createEditModal.editTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"valtimo-team-edit__content\"\n [cdsLayer]=\"1\"\n >\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"formGroup.disabled\" [invalid]=\"title.touched && title.invalid\">\n {{ 'teams.createEditModal.teamName' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'teams.createEditModal.teamNamePlaceholder' | translate }}\"\n />\n </cds-label>\n </div>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid || formGroup.disabled\"\n (click)=\"onSave()\"\n >\n {{ 'teams.createEditModal.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-team-edit__content{display:flex;flex-direction:column;gap:16px}.cds--text-input__field-wrapper cds-label{width:100%}.cds--text-input__field-wrapper ::ng-deep .cds--label{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "directive", type: ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["minContentHeight"] }] }); }
666
666
  }
667
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailEditModalComponent, decorators: [{
667
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailEditModalComponent, decorators: [{
668
668
  type: Component,
669
669
  args: [{ standalone: true, selector: 'valtimo-team-detail-edit-modal', imports: [
670
670
  CommonModule,
@@ -776,10 +776,10 @@ class TeamDetailAddMemberComponent {
776
776
  this.showComboBox$.next(false);
777
777
  setTimeout(() => this.showComboBox$.next(true));
778
778
  }
779
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailAddMemberComponent, deps: [{ token: TeamsApiService }, { token: TeamDetailService }, { token: i4.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
780
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TeamDetailAddMemberComponent, isStandalone: true, selector: "valtimo-team-detail-add-member", inputs: { disabled: "disabled" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-overflow-menu placement=\"bottom-end\" [closeOnSelect]=\"false\" (openChange)=\"onOpenChange($event)\">\n <button overflowTrigger cdsButton=\"primary\" [disabled]=\"disabled\" class=\"add-member-button\">\n {{ 'teams.detail.addMember' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <section\n overflowPane\n class=\"valtimo-team-add-member__pane\"\n (click)=\"$event.stopImmediatePropagation()\"\n *ngIf=\"{\n users: availableUsers$ | async,\n noUsersAvailable: noUsersAvailable$ | async,\n selectedUsername: selectedUsername$ | async,\n saving: saving$ | async,\n showComboBox: showComboBox$ | async,\n } as obs\"\n >\n <cds-combo-box\n *ngIf=\"obs.showComboBox\"\n [label]=\"'teams.detail.addMemberModal.selectMember' | translate\"\n [placeholder]=\"\n obs.noUsersAvailable\n ? ('teams.detail.addMemberModal.noUsersAvailable' | translate)\n : ('teams.detail.addMemberModal.selectMemberPlaceholder' | translate)\n \"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [cdsLayer]=\"1\"\n [items]=\"obs.users || []\"\n [disabled]=\"obs.saving || obs.noUsersAvailable\"\n itemValueKey=\"id\"\n (selected)=\"onUserSelect($event)\"\n (clear)=\"onComboBoxClear()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton=\"primary\"\n [cdsLayer]=\"1\"\n class=\"add-to-team-button\"\n [disabled]=\"!obs.selectedUsername || obs.saving || obs.noUsersAvailable\"\n (click)=\"onAddToTeam()\"\n >\n {{ 'teams.detail.addMemberModal.addToTeam' | translate }}\n <svg cdsIcon=\"user--follow\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </section>\n</v-overflow-menu>\n", styles: [".valtimo-team-add-member__pane{padding:16px;display:flex;flex-direction:column;gap:16px;min-width:280px}.add-to-team-button{width:100%;max-width:100%}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i4$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }] }); }
779
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailAddMemberComponent, deps: [{ token: TeamsApiService }, { token: TeamDetailService }, { token: i4.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
780
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TeamDetailAddMemberComponent, isStandalone: true, selector: "valtimo-team-detail-add-member", inputs: { disabled: "disabled" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-overflow-menu placement=\"bottom-end\" [closeOnSelect]=\"false\" (openChange)=\"onOpenChange($event)\">\n <button overflowTrigger cdsButton=\"primary\" [disabled]=\"disabled\" class=\"add-member-button\">\n {{ 'teams.detail.addMember' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <section\n overflowPane\n class=\"valtimo-team-add-member__pane\"\n (click)=\"$event.stopImmediatePropagation()\"\n *ngIf=\"{\n users: availableUsers$ | async,\n noUsersAvailable: noUsersAvailable$ | async,\n selectedUsername: selectedUsername$ | async,\n saving: saving$ | async,\n showComboBox: showComboBox$ | async,\n } as obs\"\n >\n <cds-combo-box\n *ngIf=\"obs.showComboBox\"\n [label]=\"'teams.detail.addMemberModal.selectMember' | translate\"\n [placeholder]=\"\n obs.noUsersAvailable\n ? ('teams.detail.addMemberModal.noUsersAvailable' | translate)\n : ('teams.detail.addMemberModal.selectMemberPlaceholder' | translate)\n \"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [cdsLayer]=\"1\"\n [items]=\"obs.users || []\"\n [disabled]=\"obs.saving || obs.noUsersAvailable\"\n itemValueKey=\"id\"\n (selected)=\"onUserSelect($event)\"\n (clear)=\"onComboBoxClear()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton=\"primary\"\n [cdsLayer]=\"1\"\n class=\"add-to-team-button\"\n [disabled]=\"!obs.selectedUsername || obs.saving || obs.noUsersAvailable\"\n (click)=\"onAddToTeam()\"\n >\n {{ 'teams.detail.addMemberModal.addToTeam' | translate }}\n <svg cdsIcon=\"user--follow\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </section>\n</v-overflow-menu>\n", styles: [".valtimo-team-add-member__pane{padding:16px;display:flex;flex-direction:column;gap:16px;min-width:280px}.add-to-team-button{width:100%;max-width:100%}\n/*!\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled", "readonly", "fluid"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i4$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: DialogModule }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i4.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "component", type: OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }] }); }
781
781
  }
782
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailAddMemberComponent, decorators: [{
782
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailAddMemberComponent, decorators: [{
783
783
  type: Component,
784
784
  args: [{ standalone: true, selector: 'valtimo-team-detail-add-member', imports: [
785
785
  CommonModule,
@@ -898,10 +898,10 @@ class TeamDetailComponent {
898
898
  ...(resetPage && { page: 1 }),
899
899
  });
900
900
  }
901
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailComponent, deps: [{ token: i3$1.ActivatedRoute }, { token: TeamDetailService }, { token: TeamsApiService }, { token: i3.PageTitleService }, { token: i2$2.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
902
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TeamDetailComponent, isStandalone: true, selector: "valtimo-team-detail", providers: [TeamDetailService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n members: members$ | async,\n pagination: membersPagination$ | async,\n canAddMember: canAddMember$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [fields]=\"MEMBER_FIELDS\"\n [items]=\"obs.members\"\n [loading]=\"$loadingMembers()\"\n [actionItems]=\"MEMBER_ACTION_ITEMS\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"teamMembers\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n >\n <div carbonToolbarContent>\n <valtimo-team-detail-add-member\n [disabled]=\"obs.canAddMember === false\"\n ></valtimo-team-detail-add-member>\n </div>\n\n <valtimo-no-results\n [description]=\"'teams.detail.noMembers.description' | translate\"\n [title]=\"'teams.detail.noMembers.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n class=\"team-detail__header\"\n *ngIf=\"{\n canModify: canModifyTeam$ | async,\n canDelete: canDeleteTeam$ | async,\n } as perms\"\n >\n <v-overflow-menu\n class=\"overflow-button\"\n [menuWidth]=\"250\"\n placement=\"bottom-end\"\n >\n <button overflowTrigger cdsButton=\"tertiary\">\n {{ 'teams.detail.more' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n\n <v-overflow-menu-option (selected)=\"onEditTeam()\" [disabled]=\"!perms.canModify\">\n {{ 'teams.detail.editTeam' | translate }}\n </v-overflow-menu-option>\n\n <v-overflow-menu-option\n (selected)=\"onDeleteTeam()\"\n type=\"danger\"\n [disabled]=\"!perms.canDelete\"\n >\n {{ 'teams.detail.deleteTeam' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </ng-template>\n</ng-container>\n\n<valtimo-team-detail-edit-modal></valtimo-team-detail-edit-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"teams.detail.removeMember\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.detail.removeMemberModal.content\"\n [outputOnConfirm]=\"memberToRemove$ | async\"\n [showModalSubject$]=\"showRemoveMemberModal$\"\n titleTranslationKey=\"teams.detail.removeMemberModal.title\"\n (confirmEvent)=\"onRemoveMemberConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.deleteModal.content\"\n [outputOnConfirm]=\"team$ | async\"\n [showModalSubject$]=\"showDeleteTeamModal$\"\n titleTranslationKey=\"teams.deleteModal.title\"\n (confirmEvent)=\"onDeleteTeamConfirm()\"\n></valtimo-confirmation-modal>\n", styles: [":host ::ng-deep .team-detail__header{display:flex;align-items:center;gap:.75rem;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i3.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i3.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: DialogModule }, { kind: "directive", type: RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i3.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: TeamDetailEditModalComponent, selector: "valtimo-team-detail-edit-modal" }, { kind: "component", type: TeamDetailAddMemberComponent, selector: "valtimo-team-detail-add-member", inputs: ["disabled"] }] }); }
901
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailComponent, deps: [{ token: i3$1.ActivatedRoute }, { token: TeamDetailService }, { token: TeamsApiService }, { token: i3.PageTitleService }, { token: i2$2.PermissionService }], target: i0.ɵɵFactoryTarget.Component }); }
902
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TeamDetailComponent, isStandalone: true, selector: "valtimo-team-detail", providers: [TeamDetailService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n members: members$ | async,\n pagination: membersPagination$ | async,\n canAddMember: canAddMember$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [fields]=\"MEMBER_FIELDS\"\n [items]=\"obs.members\"\n [loading]=\"$loadingMembers()\"\n [actionItems]=\"MEMBER_ACTION_ITEMS\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"teamMembers\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n >\n <div carbonToolbarContent>\n <valtimo-team-detail-add-member\n [disabled]=\"obs.canAddMember === false\"\n ></valtimo-team-detail-add-member>\n </div>\n\n <valtimo-no-results\n [description]=\"'teams.detail.noMembers.description' | translate\"\n [title]=\"'teams.detail.noMembers.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n class=\"team-detail__header\"\n *ngIf=\"{\n canModify: canModifyTeam$ | async,\n canDelete: canDeleteTeam$ | async,\n } as perms\"\n >\n <v-overflow-menu\n class=\"overflow-button\"\n [menuWidth]=\"250\"\n placement=\"bottom-end\"\n >\n <button overflowTrigger cdsButton=\"tertiary\">\n {{ 'teams.detail.more' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n\n <v-overflow-menu-option (selected)=\"onEditTeam()\" [disabled]=\"!perms.canModify\">\n {{ 'teams.detail.editTeam' | translate }}\n </v-overflow-menu-option>\n\n <v-overflow-menu-option\n (selected)=\"onDeleteTeam()\"\n type=\"danger\"\n [disabled]=\"!perms.canDelete\"\n >\n {{ 'teams.detail.deleteTeam' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </ng-template>\n</ng-container>\n\n<valtimo-team-detail-edit-modal></valtimo-team-detail-edit-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"teams.detail.removeMember\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.detail.removeMemberModal.content\"\n [outputOnConfirm]=\"memberToRemove$ | async\"\n [showModalSubject$]=\"showRemoveMemberModal$\"\n titleTranslationKey=\"teams.detail.removeMemberModal.title\"\n (confirmEvent)=\"onRemoveMemberConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.deleteModal.content\"\n [outputOnConfirm]=\"team$ | async\"\n [showModalSubject$]=\"showDeleteTeamModal$\"\n titleTranslationKey=\"teams.deleteModal.title\"\n (confirmEvent)=\"onDeleteTeamConfirm()\"\n></valtimo-confirmation-modal>\n", styles: [":host ::ng-deep .team-detail__header{display:flex;align-items:center;gap:.75rem;justify-content:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i3.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "skeletonRowCount", "actions", "actionItems", "showActionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i3.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: DialogModule }, { kind: "directive", type: RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: OverflowMenuComponent, selector: "v-overflow-menu", inputs: ["open", "placement", "menuWidth", "offsetX", "offsetY", "closeOnSelect", "useHostAsReference", "portalToBody"], outputs: ["openChange"] }, { kind: "component", type: OverflowMenuOptionComponent, selector: "v-overflow-menu-option", inputs: ["disabled", "type", "testId", "optionId"], outputs: ["selected"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i3.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }, { kind: "component", type: TeamDetailEditModalComponent, selector: "valtimo-team-detail-edit-modal" }, { kind: "component", type: TeamDetailAddMemberComponent, selector: "valtimo-team-detail-add-member", inputs: ["disabled"] }] }); }
903
903
  }
904
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamDetailComponent, decorators: [{
904
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamDetailComponent, decorators: [{
905
905
  type: Component,
906
906
  args: [{ standalone: true, selector: 'valtimo-team-detail', imports: [
907
907
  CommonModule,
@@ -949,11 +949,11 @@ const routes = [
949
949
  },
950
950
  ];
951
951
  class TeamsRouting {
952
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsRouting, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
953
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: TeamsRouting, imports: [CommonModule, i3$1.RouterModule], exports: [RouterModule] }); }
954
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsRouting, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
952
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsRouting, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
953
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: TeamsRouting, imports: [CommonModule, i3$1.RouterModule], exports: [RouterModule] }); }
954
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsRouting, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
955
955
  }
956
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsRouting, decorators: [{
956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsRouting, decorators: [{
957
957
  type: NgModule,
958
958
  args: [{
959
959
  declarations: [],
@@ -978,11 +978,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
978
978
  * limitations under the License.
979
979
  */
980
980
  class TeamsModule {
981
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
982
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: TeamsModule, imports: [TeamsRouting, TeamsListComponent] }); }
983
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsModule, imports: [TeamsRouting, TeamsListComponent] }); }
981
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
982
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: TeamsModule, imports: [TeamsRouting, TeamsListComponent] }); }
983
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsModule, imports: [TeamsRouting, TeamsListComponent] }); }
984
984
  }
985
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TeamsModule, decorators: [{
985
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TeamsModule, decorators: [{
986
986
  type: NgModule,
987
987
  args: [{
988
988
  declarations: [],
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-teams.mjs","sources":["../../../../projects/valtimo/teams/src/lib/services/teams-api.service.ts","../../../../projects/valtimo/teams/src/lib/services/teams.service.ts","../../../../projects/valtimo/teams/src/lib/services/team-detail.service.ts","../../../../projects/valtimo/teams/src/lib/services/index.ts","../../../../projects/valtimo/teams/src/lib/components/teams-create-edit-modal/teams-create-edit-modal.component.ts","../../../../projects/valtimo/teams/src/lib/components/teams-create-edit-modal/teams-create-edit-modal.component.html","../../../../projects/valtimo/teams/src/lib/permissions/team.permissions.ts","../../../../projects/valtimo/teams/src/lib/permissions/index.ts","../../../../projects/valtimo/teams/src/lib/components/teams-list/teams-list.component.ts","../../../../projects/valtimo/teams/src/lib/components/teams-list/teams-list.component.html","../../../../projects/valtimo/teams/src/lib/components/team-detail-edit-modal/team-detail-edit-modal.component.ts","../../../../projects/valtimo/teams/src/lib/components/team-detail-edit-modal/team-detail-edit-modal.component.html","../../../../projects/valtimo/teams/src/lib/components/team-detail-add-member-modal/team-detail-add-member-modal.component.ts","../../../../projects/valtimo/teams/src/lib/components/team-detail-add-member-modal/team-detail-add-member-modal.component.html","../../../../projects/valtimo/teams/src/lib/components/team-detail/team-detail.component.ts","../../../../projects/valtimo/teams/src/lib/components/team-detail/team-detail.component.html","../../../../projects/valtimo/teams/src/lib/teams-routing.ts","../../../../projects/valtimo/teams/src/lib/teams.module.ts","../../../../projects/valtimo/teams/src/public-api.ts","../../../../projects/valtimo/teams/src/valtimo-teams.ts"],"sourcesContent":["/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n BaseApiService,\n ConfigService,\n Page,\n TeamCreateRequestDto,\n TeamListResponseDto,\n TeamResponseDto,\n TeamUpdateRequestDto,\n TeamUserCreateRequestDto,\n TeamUserResponseDto,\n User,\n} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TeamsApiService extends BaseApiService {\n constructor(\n protected readonly configService: ConfigService,\n protected readonly httpClient: HttpClient\n ) {\n super(httpClient, configService);\n }\n\n public getCandidateUsers(teamKey: string): Observable<User[]> {\n return this.httpClient.get<User[]>(this.getApiUrl(`v1/team/${teamKey}/candidate-user`));\n }\n\n public getTeams(params?: {\n titleContains?: string;\n page?: number;\n size?: number;\n sort?: string;\n }): Observable<Page<TeamListResponseDto>> {\n let httpParams = new HttpParams();\n if (params?.titleContains) {\n httpParams = httpParams.set('titleContains', params.titleContains);\n }\n if (params?.page !== undefined) {\n httpParams = httpParams.set('page', params.page.toString());\n }\n if (params?.size !== undefined) {\n httpParams = httpParams.set('size', params.size.toString());\n }\n httpParams = httpParams.set('sort', params?.sort ?? 'title,asc');\n return this.httpClient.get<Page<TeamListResponseDto>>(this.getApiUrl('v1/team'), {\n params: httpParams,\n });\n }\n\n public getTeam(key: string): Observable<TeamResponseDto> {\n return this.httpClient.get<TeamResponseDto>(this.getApiUrl(`v1/team/${key}`));\n }\n\n public createTeam(dto: TeamCreateRequestDto): Observable<TeamResponseDto> {\n return this.httpClient.post<TeamResponseDto>(this.getApiUrl('v1/team'), dto);\n }\n\n public updateTeam(key: string, dto: TeamUpdateRequestDto): Observable<TeamResponseDto> {\n return this.httpClient.put<TeamResponseDto>(this.getApiUrl(`v1/team/${key}`), dto);\n }\n\n public deleteTeam(key: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl(`v1/team/${key}`));\n }\n\n public getTeamUsers(\n teamKey: string,\n params?: {page?: number; size?: number}\n ): Observable<Page<TeamUserResponseDto>> {\n let httpParams = new HttpParams();\n if (params?.page !== undefined) {\n httpParams = httpParams.set('page', params.page.toString());\n }\n if (params?.size !== undefined) {\n httpParams = httpParams.set('size', params.size.toString());\n }\n return this.httpClient.get<Page<TeamUserResponseDto>>(\n this.getApiUrl(`v1/team/${teamKey}/user`),\n {params: httpParams}\n );\n }\n\n public addTeamUser(\n teamKey: string,\n dto: TeamUserCreateRequestDto\n ): Observable<TeamUserResponseDto> {\n return this.httpClient.post<TeamUserResponseDto>(\n this.getApiUrl(`v1/team/${teamKey}/user`),\n dto\n );\n }\n\n public removeTeamUser(teamKey: string, username: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl(`v1/team/${teamKey}/user/${username}`));\n }\n\n public getCurrentUserTeams(): Observable<{key: string}[]> {\n return this.httpClient.get<{key: string}[]>(this.getApiUrl('v1/user/team'));\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {TeamListResponseDto} from '@valtimo/shared';\nimport {runAfterCarbonModalClosed} from '@valtimo/components';\n\n@Injectable()\nexport class TeamsService {\n private readonly _reload$ = new BehaviorSubject<null>(null);\n public readonly reload$ = this._reload$.asObservable();\n\n private readonly _showCreateEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly showCreateEditModal$ = this._showCreateEditModal$.asObservable();\n\n private readonly _editingTeam$ = new BehaviorSubject<TeamListResponseDto | null>(null);\n public readonly editingTeam$ = this._editingTeam$.asObservable();\n\n private readonly _showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = this._showDeleteModal$.asObservable();\n\n private readonly _teamToDelete$ = new BehaviorSubject<TeamListResponseDto | null>(null);\n public readonly teamToDelete$ = this._teamToDelete$.asObservable();\n\n private readonly _loadedTeams$ = new BehaviorSubject<TeamListResponseDto[]>([]);\n public readonly loadedTeams$ = this._loadedTeams$.asObservable();\n\n public setLoadedTeams(teams: TeamListResponseDto[]): void {\n this._loadedTeams$.next(teams);\n }\n\n public reload(): void {\n this._reload$.next(null);\n }\n\n public showCreateModal(): void {\n this._editingTeam$.next(null);\n this._showCreateEditModal$.next(true);\n }\n\n public showEditModal(team: TeamListResponseDto): void {\n this._editingTeam$.next(team);\n this._showCreateEditModal$.next(true);\n }\n\n public hideCreateEditModal(): void {\n this._showCreateEditModal$.next(false);\n runAfterCarbonModalClosed(() => this._editingTeam$.next(null));\n }\n\n public showDeleteConfirmation(team: TeamListResponseDto): void {\n this._teamToDelete$.next(team);\n this._showDeleteModal$.next(true);\n }\n\n public hideDeleteModal(): void {\n this._showDeleteModal$.next(false);\n this._teamToDelete$.next(null);\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n Observable,\n Subscription,\n switchMap,\n tap,\n map,\n} from 'rxjs';\nimport {TeamResponseDto, TeamUserResponseDto} from '@valtimo/shared';\nimport {TeamsApiService} from './teams-api.service';\nimport {DEFAULT_PAGINATION, PageTitleService, Pagination} from '@valtimo/components';\n\n@Injectable()\nexport class TeamDetailService implements OnDestroy {\n private readonly _loadingTeam$ = new BehaviorSubject<boolean>(true);\n public get loadingTeam$(): Observable<boolean> {\n return this._loadingTeam$.asObservable();\n }\n\n private readonly _routeSubject$ = new BehaviorSubject<ActivatedRoute | null>(null);\n private get _route$() {\n return this._routeSubject$.pipe(filter(route => route !== null));\n }\n\n public get teamKey$(): Observable<string> {\n return this._route$.pipe(\n switchMap(route =>\n route.paramMap.pipe(\n map(params => params.get('teamKey')!),\n filter(key => !!key),\n tap(key => (this._teamKey = key))\n )\n )\n );\n }\n\n private _teamKey!: string;\n public get teamKey(): string {\n return this._teamKey;\n }\n\n private readonly _team$ = new BehaviorSubject<TeamResponseDto | null>(null);\n public get team$(): Observable<TeamResponseDto> {\n return this._team$.pipe(filter(team => team !== null));\n }\n\n private readonly _reload$ = new BehaviorSubject<null>(null);\n\n private readonly _loadingMembers$ = new BehaviorSubject<boolean>(true);\n public get loadingMembers$(): Observable<boolean> {\n return this._loadingMembers$.asObservable();\n }\n\n private readonly _members$ = new BehaviorSubject<TeamUserResponseDto[]>([]);\n public get members$(): Observable<TeamUserResponseDto[]> {\n return this._members$.asObservable();\n }\n\n public readonly membersPagination$ = new BehaviorSubject<Pagination>({...DEFAULT_PAGINATION});\n\n private readonly _membersPaginationParams$ = this.membersPagination$.pipe(\n map(p => ({page: p.page, size: p.size})),\n distinctUntilChanged((a, b) => a.page === b.page && a.size === b.size)\n );\n\n private readonly _reloadMembers$ = new BehaviorSubject<null>(null);\n\n private readonly _showEditTeamModal$ = new BehaviorSubject<boolean>(false);\n public readonly showEditTeamModal$ = this._showEditTeamModal$.asObservable();\n\n private readonly _showDeleteTeamModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteTeamModal$ = this._showDeleteTeamModal$.asObservable();\n\n private readonly _showRemoveMemberModal$ = new BehaviorSubject<boolean>(false);\n public readonly showRemoveMemberModal$ = this._showRemoveMemberModal$.asObservable();\n\n private readonly _memberToRemove$ = new BehaviorSubject<TeamUserResponseDto | null>(null);\n public readonly memberToRemove$ = this._memberToRemove$.asObservable();\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router\n ) {}\n\n public setRoute(route: ActivatedRoute): void {\n this._routeSubject$.next(route);\n\n this._subscriptions.add(\n this.teamKey$\n .pipe(\n switchMap(key =>\n this._reload$.pipe(\n tap(() => this._loadingTeam$.next(true)),\n switchMap(() => this.teamsApiService.getTeam(key))\n )\n ),\n tap(team => {\n this._team$.next(team);\n this.pageTitleService.setCustomPageTitle(team.title);\n this._loadingTeam$.next(false);\n })\n )\n .subscribe()\n );\n\n this._subscriptions.add(\n this.teamKey$\n .pipe(\n switchMap(key =>\n combineLatest([this._reloadMembers$, this._membersPaginationParams$]).pipe(\n tap(() => this._loadingMembers$.next(true)),\n switchMap(([_, params]) =>\n this.teamsApiService.getTeamUsers(key, {\n page: params.page - 1,\n size: params.size,\n })\n )\n )\n ),\n tap(page => {\n this.membersPagination$.next({\n ...this.membersPagination$.getValue(),\n collectionSize: page.totalElements,\n });\n this._members$.next(page.content);\n this._loadingMembers$.next(false);\n })\n )\n .subscribe()\n );\n }\n\n public reload(): void {\n this._reload$.next(null);\n }\n\n public reloadMembers(): void {\n this._reloadMembers$.next(null);\n }\n\n public showEditTeamModal(): void {\n this._showEditTeamModal$.next(true);\n }\n\n public hideEditTeamModal(): void {\n this._showEditTeamModal$.next(false);\n }\n\n public showDeleteTeamModal(): void {\n this._showDeleteTeamModal$.next(true);\n }\n\n public hideDeleteTeamModal(): void {\n this._showDeleteTeamModal$.next(false);\n }\n\n public showRemoveMemberConfirmation(member: TeamUserResponseDto): void {\n this._memberToRemove$.next(member);\n this._showRemoveMemberModal$.next(true);\n }\n\n public hideRemoveMemberModal(): void {\n this._showRemoveMemberModal$.next(false);\n this._memberToRemove$.next(null);\n }\n\n public navigateToTeamsList(): void {\n this.router.navigate(['/teams']);\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './teams-api.service';\nexport * from './teams.service';\nexport * from './team-detail.service';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule, InputModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {AutoKeyInputComponent, runAfterCarbonModalClosed, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {TeamsApiService, TeamsService} from '../../services';\nimport {catchError, map, of, Subscription} from 'rxjs';\nimport {ModalMode, TeamListResponseDto} from '@valtimo/shared';\n\n@Component({\n standalone: true,\n selector: 'valtimo-teams-create-edit-modal',\n templateUrl: './teams-create-edit-modal.component.html',\n styleUrls: ['./teams-create-edit-modal.component.scss'],\n imports: [\n CommonModule,\n ModalModule,\n ButtonModule,\n InputModule,\n LayerModule,\n ReactiveFormsModule,\n TranslatePipe,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n ],\n})\nexport class TeamsCreateEditModalComponent implements OnDestroy {\n public readonly showModal$ = this.teamsService.showCreateEditModal$;\n\n public editingTeam: TeamListResponseDto | null = null;\n\n public formGroup: FormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', Validators.required),\n });\n\n public get title(): FormControl<string> {\n return this.formGroup.get('title') as FormControl<string>;\n }\n\n public get key(): FormControl<string> {\n return this.formGroup.get('key') as FormControl<string>;\n }\n\n public get isEditMode(): boolean {\n return this.editingTeam !== null;\n }\n\n public get modalMode(): ModalMode {\n return this.isEditMode ? 'edit' : 'add';\n }\n\n public usedKeys: string[] = [];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly teamsService: TeamsService,\n private readonly fb: FormBuilder\n ) {\n this._subscriptions.add(\n this.teamsService.editingTeam$.subscribe(team => {\n this.editingTeam = team;\n if (team) {\n this.formGroup.patchValue({title: team.title, key: team.key});\n }\n })\n );\n\n this._subscriptions.add(\n this.teamsService.loadedTeams$\n .pipe(map(teams => teams.map(t => t.key)))\n .subscribe(keys => (this.usedKeys = keys))\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onCloseModal(): void {\n this.teamsService.hideCreateEditModal();\n this.resetForm();\n }\n\n public onSave(): void {\n this.formGroup.disable();\n\n const titleValue = this.title.value;\n const keyValue = this.key.value;\n\n const request$ = this.isEditMode\n ? this.teamsApiService.updateTeam(this.editingTeam!.key, {\n key: this.editingTeam!.key,\n title: titleValue,\n })\n : this.teamsApiService.createTeam({\n key: keyValue,\n title: titleValue,\n });\n\n request$\n .pipe(\n catchError(() => {\n this.formGroup.enable();\n return of(null);\n })\n )\n .subscribe(result => {\n if (result) {\n this.teamsService.hideCreateEditModal();\n this.resetForm();\n this.teamsService.reload();\n }\n });\n }\n\n private resetForm(): void {\n runAfterCarbonModalClosed(() => {\n this.formGroup.reset();\n this.formGroup.enable();\n this.editingTeam = null;\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{showModal: showModal$ | async} as obs\"\n [open]=\"obs.showModal\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n (isEditMode ? 'teams.createEditModal.editTitle' : 'teams.createEditModal.createTitle')\n | translate\n }}\n </h3>\n <p cdsModalHeaderDescription *ngIf=\"!isEditMode\">\n {{ 'teams.createEditModal.createDescription' | translate }}\n </p>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"valtimo-teams-create__content\"\n [cdsLayer]=\"1\"\n >\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"formGroup.disabled\" [invalid]=\"title.touched && title.invalid\">\n {{ 'teams.createEditModal.teamName' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'teams.createEditModal.teamNamePlaceholder' | translate }}\"\n />\n </cds-label>\n </div>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid || formGroup.disabled\"\n (click)=\"onSave()\"\n >\n {{ (isEditMode ? 'teams.createEditModal.save' : 'teams.createEditModal.create') | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum TEAM_PERMISSION_ACTION {\n create = 'create',\n modify = 'modify',\n delete = 'delete',\n assign = 'assign',\n}\n\nenum TEAM_PERMISSION_RESOURCE {\n team = 'com.ritense.team.domain.Team',\n}\n\nenum USER_PERMISSION_ACTION {\n view_list = 'view_list',\n}\n\nenum USER_PERMISSION_RESOURCE {\n user = 'com.ritense.valtimo.contract.authentication.User',\n}\n\nconst CAN_CREATE_TEAM_PERMISSION: PermissionRequest = {\n action: TEAM_PERMISSION_ACTION.create,\n resource: TEAM_PERMISSION_RESOURCE.team,\n};\n\nconst CAN_MODIFY_TEAM_PERMISSION: PermissionRequest = {\n action: TEAM_PERMISSION_ACTION.modify,\n resource: TEAM_PERMISSION_RESOURCE.team,\n};\n\nconst CAN_DELETE_TEAM_PERMISSION: PermissionRequest = {\n action: TEAM_PERMISSION_ACTION.delete,\n resource: TEAM_PERMISSION_RESOURCE.team,\n};\n\nconst CAN_ASSIGN_TEAM_PERMISSION: PermissionRequest = {\n action: TEAM_PERMISSION_ACTION.assign,\n resource: TEAM_PERMISSION_RESOURCE.team,\n};\n\nconst CAN_VIEW_USERS_PERMISSION: PermissionRequest = {\n action: USER_PERMISSION_ACTION.view_list,\n resource: USER_PERMISSION_RESOURCE.user,\n};\n\nexport {\n TEAM_PERMISSION_ACTION,\n TEAM_PERMISSION_RESOURCE,\n USER_PERMISSION_ACTION,\n USER_PERMISSION_RESOURCE,\n CAN_CREATE_TEAM_PERMISSION,\n CAN_MODIFY_TEAM_PERMISSION,\n CAN_DELETE_TEAM_PERMISSION,\n CAN_ASSIGN_TEAM_PERMISSION,\n CAN_VIEW_USERS_PERMISSION,\n};\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './team.permissions';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, signal} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n DEFAULT_PAGINATION,\n Pagination,\n ViewType,\n} from '@valtimo/components';\nimport {PermissionService} from '@valtimo/access-control';\nimport {TeamsApiService, TeamsService} from '../../services';\nimport {BehaviorSubject, combineLatest, distinctUntilChanged, map, Subscription, switchMap, tap} from 'rxjs';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {TeamListResponseDto} from '@valtimo/shared';\nimport {Router} from '@angular/router';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {TeamsCreateEditModalComponent} from '../teams-create-edit-modal/teams-create-edit-modal.component';\nimport {\n CAN_CREATE_TEAM_PERMISSION,\n CAN_DELETE_TEAM_PERMISSION,\n CAN_MODIFY_TEAM_PERMISSION,\n} from '../../permissions';\n\n@Component({\n standalone: true,\n selector: 'valtimo-teams-list',\n templateUrl: './teams-list.component.html',\n styleUrls: ['./teams-list.component.scss'],\n imports: [\n CommonModule,\n CarbonListModule,\n TranslatePipe,\n ButtonModule,\n IconModule,\n TeamsCreateEditModalComponent,\n ConfirmationModalModule,\n ],\n providers: [TeamsService],\n})\nexport class TeamsListComponent implements OnDestroy {\n public readonly $loading = signal<boolean>(true);\n\n public readonly canCreateTeam$ = this.permissionService.requestPermission(\n CAN_CREATE_TEAM_PERMISSION\n );\n\n private canModify = false;\n private canDelete = false;\n private readonly permissionSubscription = new Subscription();\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.onEditTeam.bind(this),\n disabledCallback: () => !this.canModify,\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteTeam.bind(this),\n type: 'danger',\n disabledCallback: () => !this.canDelete,\n },\n ];\n\n public readonly pagination$ = new BehaviorSubject<Pagination>({...DEFAULT_PAGINATION});\n\n private readonly paginationParams$ = this.pagination$.pipe(\n map(p => ({page: p.page, size: p.size})),\n distinctUntilChanged((a, b) => a.page === b.page && a.size === b.size)\n );\n\n public readonly teams$ = combineLatest([this.teamsService.reload$, this.paginationParams$]).pipe(\n tap(() => this.$loading.set(true)),\n switchMap(([_, params]) =>\n this.teamsApiService.getTeams({page: params.page - 1, size: params.size})\n ),\n map(page => {\n this.pagination$.next({\n ...this.pagination$.getValue(),\n collectionSize: page.totalElements,\n });\n return page.content;\n }),\n tap(teams => {\n this.teamsService.setLoadedTeams(teams);\n this.$loading.set(false);\n })\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {key: 'title', label: 'teams.listColumns.name'},\n {key: 'userCount', label: 'teams.listColumns.members', viewType: ViewType.NUMBER},\n ];\n\n public readonly showDeleteModal$ = this.teamsService.showDeleteModal$;\n public readonly teamToDelete$ = this.teamsService.teamToDelete$;\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly teamsService: TeamsService,\n private readonly permissionService: PermissionService,\n private readonly router: Router\n ) {\n this.permissionSubscription.add(\n this.permissionService.requestPermission(CAN_MODIFY_TEAM_PERMISSION)\n .subscribe(canModify => this.canModify = canModify)\n );\n this.permissionSubscription.add(\n this.permissionService.requestPermission(CAN_DELETE_TEAM_PERMISSION)\n .subscribe(canDelete => this.canDelete = canDelete)\n );\n }\n\n public ngOnDestroy(): void {\n this.permissionSubscription.unsubscribe();\n }\n\n public onRowClick(team: TeamListResponseDto): void {\n this.router.navigate(['/teams', team.key]);\n }\n\n public showCreateModal(): void {\n this.teamsService.showCreateModal();\n }\n\n public onEditTeam(team: TeamListResponseDto): void {\n this.teamsService.showEditModal(team);\n }\n\n public onDeleteTeam(team: TeamListResponseDto): void {\n this.teamsService.showDeleteConfirmation(team);\n }\n\n public onDeleteConfirm(team: TeamListResponseDto): void {\n this.teamsApiService.deleteTeam(team.key).subscribe(() => {\n this.teamsService.reload();\n });\n }\n\n public onPaginationClicked(page: number): void {\n this.pagination$.next({...this.pagination$.getValue(), page});\n }\n\n public onPaginationSet(size: number): void {\n const {collectionSize, page} = this.pagination$.getValue();\n const resetPage =\n Math.ceil(+collectionSize / size) <= +page && +collectionSize > 0;\n this.pagination$.next({\n ...this.pagination$.getValue(),\n size,\n ...(resetPage && {page: 1}),\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n teams: teams$ | async,\n pagination: pagination$ | async,\n canCreateTeam: canCreateTeam$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [fields]=\"FIELDS\"\n [items]=\"obs.teams\"\n [loading]=\"$loading()\"\n [actionItems]=\"ACTION_ITEMS\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"teams\"\n (rowClicked)=\"onRowClick($event)\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"teamActions\"></ng-container>\n\n <valtimo-no-results\n [action]=\"teamActions\"\n [description]=\"'teams.noResults.description' | translate\"\n [title]=\"'teams.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<ng-template #teamActions>\n <button\n cdsButton=\"primary\"\n [disabled]=\"(canCreateTeam$ | async) === false\"\n (click)=\"showCreateModal()\"\n >\n {{ 'teams.newTeam' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-teams-create-edit-modal></valtimo-teams-create-edit-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.deleteModal.content\"\n [outputOnConfirm]=\"teamToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"teams.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule, InputModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {runAfterCarbonModalClosed, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {TeamsApiService, TeamDetailService} from '../../services';\nimport {catchError, of, Subscription} from 'rxjs';\n\n@Component({\n standalone: true,\n selector: 'valtimo-team-detail-edit-modal',\n templateUrl: './team-detail-edit-modal.component.html',\n styleUrls: ['./team-detail-edit-modal.component.scss'],\n imports: [\n CommonModule,\n ModalModule,\n ButtonModule,\n InputModule,\n LayerModule,\n ReactiveFormsModule,\n TranslatePipe,\n ValtimoCdsModalDirective,\n ],\n})\nexport class TeamDetailEditModalComponent implements OnDestroy {\n public readonly showModal$ = this.teamDetailService.showEditTeamModal$;\n\n public formGroup: FormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n });\n\n public get title(): FormControl<string> {\n return this.formGroup.get('title') as FormControl<string>;\n }\n\n private readonly _teamSubscription: Subscription;\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly teamDetailService: TeamDetailService,\n private readonly fb: FormBuilder\n ) {\n this._teamSubscription = this.teamDetailService.showEditTeamModal$.subscribe(show => {\n if (show) {\n this.teamDetailService.team$.subscribe(team => {\n this.formGroup.patchValue({title: team.title});\n });\n }\n });\n }\n\n public ngOnDestroy(): void {\n this._teamSubscription.unsubscribe();\n }\n\n public onCloseModal(): void {\n this.teamDetailService.hideEditTeamModal();\n this.resetForm();\n }\n\n public onSave(): void {\n this.formGroup.disable();\n\n this.teamsApiService\n .updateTeam(this.teamDetailService.teamKey, {\n key: this.teamDetailService.teamKey,\n title: this.title.value,\n })\n .pipe(\n catchError(() => {\n this.formGroup.enable();\n return of(null);\n })\n )\n .subscribe(result => {\n if (result) {\n this.teamDetailService.hideEditTeamModal();\n this.resetForm();\n this.teamDetailService.reload();\n }\n });\n }\n\n private resetForm(): void {\n runAfterCarbonModalClosed(() => {\n this.formGroup.reset();\n this.formGroup.enable();\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{showModal: showModal$ | async} as obs\"\n [open]=\"obs.showModal\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'teams.createEditModal.editTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"valtimo-team-edit__content\"\n [cdsLayer]=\"1\"\n >\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"formGroup.disabled\" [invalid]=\"title.touched && title.invalid\">\n {{ 'teams.createEditModal.teamName' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'teams.createEditModal.teamNamePlaceholder' | translate }}\"\n />\n </cds-label>\n </div>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid || formGroup.disabled\"\n (click)=\"onSave()\"\n >\n {{ 'teams.createEditModal.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n ComboBoxModule,\n DialogModule,\n IconModule,\n IconService,\n LayerModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {OverflowMenuComponent} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Add16, UserFollow16} from '@carbon/icons';\nimport {BehaviorSubject, catchError, of, Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {TeamsApiService, TeamDetailService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'valtimo-team-detail-add-member',\n templateUrl: './team-detail-add-member-modal.component.html',\n styleUrls: ['./team-detail-add-member-modal.component.scss'],\n imports: [\n CommonModule,\n ButtonModule,\n ComboBoxModule,\n DialogModule,\n IconModule,\n LayerModule,\n TranslateModule,\n OverflowMenuComponent,\n ],\n})\nexport class TeamDetailAddMemberComponent implements OnInit, OnDestroy {\n @Input() public disabled = false;\n\n public readonly availableUsers$ = new BehaviorSubject<ListItem[]>([]);\n public readonly noUsersAvailable$ = this.availableUsers$.pipe(map(users => users.length === 0));\n public readonly selectedUsername$ = new BehaviorSubject<string | null>(null);\n public readonly saving$ = new BehaviorSubject<boolean>(false);\n public readonly showComboBox$ = new BehaviorSubject<boolean>(true);\n\n private readonly subscription = new Subscription();\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly teamDetailService: TeamDetailService,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Add16, UserFollow16]);\n }\n\n public ngOnInit(): void {\n this.fetchCandidateUsers();\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public onUserSelect(event: ListItem): void {\n if (!event?.id) return;\n this.selectedUsername$.next(event.id as string);\n }\n\n public onComboBoxClear(): void {\n this.selectedUsername$.next(null);\n }\n\n public onAddToTeam(): void {\n const username = this.selectedUsername$.getValue();\n if (!username) return;\n\n this.saving$.next(true);\n\n this.teamsApiService\n .addTeamUser(this.teamDetailService.teamKey, {username})\n .pipe(\n catchError(() => {\n this.saving$.next(false);\n return of(null);\n })\n )\n .subscribe(result => {\n if (result) {\n this.saving$.next(false);\n this.selectedUsername$.next(null);\n this.resetComboBox();\n this.teamDetailService.reloadMembers();\n this.fetchCandidateUsers();\n }\n });\n }\n\n public onOpenChange(open?: boolean): void {\n if (open) {\n this.fetchCandidateUsers();\n this.selectedUsername$.next(null);\n this.resetComboBox();\n }\n }\n\n private fetchCandidateUsers(): void {\n this.subscription.add(\n this.teamsApiService\n .getCandidateUsers(this.teamDetailService.teamKey)\n .pipe(\n map(users =>\n users.map(user => ({\n content: this.getUserLabel(user),\n id: (user as any).username ?? user.id,\n selected: false,\n }))\n )\n )\n .subscribe(items => this.availableUsers$.next(items))\n );\n }\n\n private getUserLabel(user: any): string {\n const firstName = user.firstName?.trim();\n const lastName = user.lastName?.trim();\n if (firstName && lastName) return `${firstName} ${lastName}`;\n if (firstName) return firstName;\n if (lastName) return lastName;\n if (user.email) return user.email;\n return user.username ?? user.id;\n }\n\n private resetComboBox(): void {\n this.showComboBox$.next(false);\n setTimeout(() => this.showComboBox$.next(true));\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-overflow-menu placement=\"bottom-end\" [closeOnSelect]=\"false\" (openChange)=\"onOpenChange($event)\">\n <button overflowTrigger cdsButton=\"primary\" [disabled]=\"disabled\" class=\"add-member-button\">\n {{ 'teams.detail.addMember' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <section\n overflowPane\n class=\"valtimo-team-add-member__pane\"\n (click)=\"$event.stopImmediatePropagation()\"\n *ngIf=\"{\n users: availableUsers$ | async,\n noUsersAvailable: noUsersAvailable$ | async,\n selectedUsername: selectedUsername$ | async,\n saving: saving$ | async,\n showComboBox: showComboBox$ | async,\n } as obs\"\n >\n <cds-combo-box\n *ngIf=\"obs.showComboBox\"\n [label]=\"'teams.detail.addMemberModal.selectMember' | translate\"\n [placeholder]=\"\n obs.noUsersAvailable\n ? ('teams.detail.addMemberModal.noUsersAvailable' | translate)\n : ('teams.detail.addMemberModal.selectMemberPlaceholder' | translate)\n \"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [cdsLayer]=\"1\"\n [items]=\"obs.users || []\"\n [disabled]=\"obs.saving || obs.noUsersAvailable\"\n itemValueKey=\"id\"\n (selected)=\"onUserSelect($event)\"\n (clear)=\"onComboBoxClear()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton=\"primary\"\n [cdsLayer]=\"1\"\n class=\"add-to-team-button\"\n [disabled]=\"!obs.selectedUsername || obs.saving || obs.noUsersAvailable\"\n (click)=\"onAddToTeam()\"\n >\n {{ 'teams.detail.addMemberModal.addToTeam' | translate }}\n <svg cdsIcon=\"user--follow\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </section>\n</v-overflow-menu>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {PermissionService} from '@valtimo/access-control';\nimport {TeamUserResponseDto} from '@valtimo/shared';\nimport {ButtonModule, DialogModule, IconModule} from 'carbon-components-angular';\nimport {combineLatest, map, Subscription, switchMap} from 'rxjs';\nimport {TeamsApiService, TeamDetailService} from '../../services';\nimport {TeamDetailEditModalComponent} from '../team-detail-edit-modal/team-detail-edit-modal.component';\nimport {TeamDetailAddMemberComponent} from '../team-detail-add-member-modal/team-detail-add-member-modal.component';\nimport {\n CAN_ASSIGN_TEAM_PERMISSION,\n CAN_DELETE_TEAM_PERMISSION,\n CAN_MODIFY_TEAM_PERMISSION,\n CAN_VIEW_USERS_PERMISSION,\n TEAM_PERMISSION_RESOURCE,\n} from '../../permissions';\n\n@Component({\n standalone: true,\n selector: 'valtimo-team-detail',\n templateUrl: './team-detail.component.html',\n styleUrls: ['./team-detail.component.scss'],\n imports: [\n CommonModule,\n CarbonListModule,\n TranslatePipe,\n ButtonModule,\n IconModule,\n DialogModule,\n RenderInPageHeaderDirective,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n ConfirmationModalModule,\n TeamDetailEditModalComponent,\n TeamDetailAddMemberComponent,\n ],\n providers: [TeamDetailService],\n})\nexport class TeamDetailComponent implements OnInit, OnDestroy {\n public readonly $loadingMembers = signal<boolean>(true);\n\n public readonly members$ = this.teamDetailService.members$;\n public readonly membersPagination$ = this.teamDetailService.membersPagination$;\n public readonly showRemoveMemberModal$ = this.teamDetailService.showRemoveMemberModal$;\n public readonly memberToRemove$ = this.teamDetailService.memberToRemove$;\n public readonly showDeleteTeamModal$ = this.teamDetailService.showDeleteTeamModal$;\n public readonly team$ = this.teamDetailService.team$;\n\n private readonly teamContext$ = this.teamDetailService.teamKey$.pipe(\n map(teamKey => ({\n identifier: teamKey,\n resource: TEAM_PERMISSION_RESOURCE.team,\n }))\n );\n\n public readonly canModifyTeam$ = this.teamContext$.pipe(\n switchMap(context => this.permissionService.requestPermission(CAN_MODIFY_TEAM_PERMISSION, context))\n );\n\n public readonly canDeleteTeam$ = this.teamContext$.pipe(\n switchMap(context => this.permissionService.requestPermission(CAN_DELETE_TEAM_PERMISSION, context))\n );\n\n public readonly canViewUsers$ = this.permissionService.requestPermission(\n CAN_VIEW_USERS_PERMISSION\n );\n\n private canAssign = false;\n private readonly permissionSubscription = new Subscription();\n\n public readonly canAddMember$ = combineLatest([\n this.teamContext$.pipe(\n switchMap(context => this.permissionService.requestPermission(CAN_ASSIGN_TEAM_PERMISSION, context))\n ),\n this.canViewUsers$,\n ]).pipe(\n map(([canAssign, canViewUsers]) => canAssign && canViewUsers)\n );\n\n public readonly MEMBER_ACTION_ITEMS: ActionItem[] = [\n {\n label: 'teams.detail.removeMember',\n callback: this.onRemoveMember.bind(this),\n type: 'danger',\n disabledCallback: () => !this.canAssign,\n },\n ];\n\n public readonly MEMBER_FIELDS: ColumnConfig[] = [\n {key: 'fullName', label: 'teams.detail.memberColumns.name'},\n {key: 'email', label: 'teams.detail.memberColumns.email'},\n ];\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly teamDetailService: TeamDetailService,\n private readonly teamsApiService: TeamsApiService,\n private readonly pageTitleService: PageTitleService,\n private readonly permissionService: PermissionService\n ) {\n this.teamDetailService.setRoute(this.route);\n\n this.permissionSubscription.add(\n this.teamDetailService.loadingMembers$.subscribe(loading => {\n this.$loadingMembers.set(loading);\n })\n );\n\n this.permissionSubscription.add(\n this.teamContext$.pipe(\n switchMap(context => this.permissionService.requestPermission(CAN_ASSIGN_TEAM_PERMISSION, context))\n ).subscribe(canAssign => this.canAssign = canAssign)\n );\n }\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this.permissionSubscription.unsubscribe();\n }\n\n public onEditTeam(): void {\n this.teamDetailService.showEditTeamModal();\n }\n\n public onDeleteTeam(): void {\n this.teamDetailService.showDeleteTeamModal();\n }\n\n public onDeleteTeamConfirm(): void {\n this.permissionSubscription.add(\n this.teamsApiService.deleteTeam(this.teamDetailService.teamKey).subscribe(() => {\n this.teamDetailService.navigateToTeamsList();\n })\n );\n }\n\n public onRemoveMember(member: TeamUserResponseDto): void {\n this.teamDetailService.showRemoveMemberConfirmation(member);\n }\n\n public onRemoveMemberConfirm(member: TeamUserResponseDto): void {\n this.permissionSubscription.add(\n this.teamsApiService\n .removeTeamUser(this.teamDetailService.teamKey, member.username)\n .subscribe(() => {\n this.teamDetailService.reloadMembers();\n })\n );\n }\n\n public onPaginationClicked(page: number): void {\n this.teamDetailService.membersPagination$.next({\n ...this.teamDetailService.membersPagination$.getValue(),\n page,\n });\n }\n\n public onPaginationSet(size: number): void {\n const {collectionSize, page} = this.teamDetailService.membersPagination$.getValue();\n const resetPage =\n Math.ceil(+collectionSize / size) <= +page && +collectionSize > 0;\n this.teamDetailService.membersPagination$.next({\n ...this.teamDetailService.membersPagination$.getValue(),\n size,\n ...(resetPage && {page: 1}),\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n members: members$ | async,\n pagination: membersPagination$ | async,\n canAddMember: canAddMember$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [fields]=\"MEMBER_FIELDS\"\n [items]=\"obs.members\"\n [loading]=\"$loadingMembers()\"\n [actionItems]=\"MEMBER_ACTION_ITEMS\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"teamMembers\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n >\n <div carbonToolbarContent>\n <valtimo-team-detail-add-member\n [disabled]=\"obs.canAddMember === false\"\n ></valtimo-team-detail-add-member>\n </div>\n\n <valtimo-no-results\n [description]=\"'teams.detail.noMembers.description' | translate\"\n [title]=\"'teams.detail.noMembers.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n class=\"team-detail__header\"\n *ngIf=\"{\n canModify: canModifyTeam$ | async,\n canDelete: canDeleteTeam$ | async,\n } as perms\"\n >\n <v-overflow-menu\n class=\"overflow-button\"\n [menuWidth]=\"250\"\n placement=\"bottom-end\"\n >\n <button overflowTrigger cdsButton=\"tertiary\">\n {{ 'teams.detail.more' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n\n <v-overflow-menu-option (selected)=\"onEditTeam()\" [disabled]=\"!perms.canModify\">\n {{ 'teams.detail.editTeam' | translate }}\n </v-overflow-menu-option>\n\n <v-overflow-menu-option\n (selected)=\"onDeleteTeam()\"\n type=\"danger\"\n [disabled]=\"!perms.canDelete\"\n >\n {{ 'teams.detail.deleteTeam' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </ng-template>\n</ng-container>\n\n<valtimo-team-detail-edit-modal></valtimo-team-detail-edit-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"teams.detail.removeMember\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.detail.removeMemberModal.content\"\n [outputOnConfirm]=\"memberToRemove$ | async\"\n [showModalSubject$]=\"showRemoveMemberModal$\"\n titleTranslationKey=\"teams.detail.removeMemberModal.title\"\n (confirmEvent)=\"onRemoveMemberConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.deleteModal.content\"\n [outputOnConfirm]=\"team$ | async\"\n [showModalSubject$]=\"showDeleteTeamModal$\"\n titleTranslationKey=\"teams.deleteModal.title\"\n (confirmEvent)=\"onDeleteTeamConfirm()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {TeamsListComponent} from './components/teams-list/teams-list.component';\nimport {TeamDetailComponent} from './components/team-detail/team-detail.component';\n\nconst routes: Routes = [\n {\n path: 'teams',\n component: TeamsListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'teams.title', roles: [ROLE_USER]},\n },\n {\n path: 'teams/:teamKey',\n component: TeamDetailComponent,\n canActivate: [AuthGuardService],\n data: {title: 'teams.detail.title', roles: [ROLE_USER], customPageTitle: true},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TeamsRouting {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {TeamsListComponent} from './components/teams-list/teams-list.component';\nimport {TeamsRouting} from './teams-routing';\n\n@NgModule({\n declarations: [],\n imports: [TeamsRouting, TeamsListComponent],\n providers: [],\n})\nexport class TeamsModule {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of teams\n */\n\nexport * from './lib/teams.module';\nexport * from './lib/services';\nexport * from './lib/permissions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TeamsApiService","i2","i3","i1.TeamsService","i4","i5","i6","i1.TeamDetailService","map","i1","i2.TeamDetailService","i2.TeamsApiService"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-teams.mjs","sources":["../../../../projects/valtimo/teams/src/lib/services/teams-api.service.ts","../../../../projects/valtimo/teams/src/lib/services/teams.service.ts","../../../../projects/valtimo/teams/src/lib/services/team-detail.service.ts","../../../../projects/valtimo/teams/src/lib/services/index.ts","../../../../projects/valtimo/teams/src/lib/components/teams-create-edit-modal/teams-create-edit-modal.component.ts","../../../../projects/valtimo/teams/src/lib/components/teams-create-edit-modal/teams-create-edit-modal.component.html","../../../../projects/valtimo/teams/src/lib/permissions/team.permissions.ts","../../../../projects/valtimo/teams/src/lib/permissions/index.ts","../../../../projects/valtimo/teams/src/lib/components/teams-list/teams-list.component.ts","../../../../projects/valtimo/teams/src/lib/components/teams-list/teams-list.component.html","../../../../projects/valtimo/teams/src/lib/components/team-detail-edit-modal/team-detail-edit-modal.component.ts","../../../../projects/valtimo/teams/src/lib/components/team-detail-edit-modal/team-detail-edit-modal.component.html","../../../../projects/valtimo/teams/src/lib/components/team-detail-add-member-modal/team-detail-add-member-modal.component.ts","../../../../projects/valtimo/teams/src/lib/components/team-detail-add-member-modal/team-detail-add-member-modal.component.html","../../../../projects/valtimo/teams/src/lib/components/team-detail/team-detail.component.ts","../../../../projects/valtimo/teams/src/lib/components/team-detail/team-detail.component.html","../../../../projects/valtimo/teams/src/lib/teams-routing.ts","../../../../projects/valtimo/teams/src/lib/teams.module.ts","../../../../projects/valtimo/teams/src/public-api.ts","../../../../projects/valtimo/teams/src/valtimo-teams.ts"],"sourcesContent":["/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {HttpClient, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {\n BaseApiService,\n ConfigService,\n Page,\n TeamCreateRequestDto,\n TeamListResponseDto,\n TeamResponseDto,\n TeamUpdateRequestDto,\n TeamUserCreateRequestDto,\n TeamUserResponseDto,\n User,\n} from '@valtimo/shared';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TeamsApiService extends BaseApiService {\n constructor(\n protected readonly configService: ConfigService,\n protected readonly httpClient: HttpClient\n ) {\n super(httpClient, configService);\n }\n\n public getCandidateUsers(teamKey: string): Observable<User[]> {\n return this.httpClient.get<User[]>(this.getApiUrl(`v1/team/${teamKey}/candidate-user`));\n }\n\n public getTeams(params?: {\n titleContains?: string;\n page?: number;\n size?: number;\n sort?: string;\n }): Observable<Page<TeamListResponseDto>> {\n let httpParams = new HttpParams();\n if (params?.titleContains) {\n httpParams = httpParams.set('titleContains', params.titleContains);\n }\n if (params?.page !== undefined) {\n httpParams = httpParams.set('page', params.page.toString());\n }\n if (params?.size !== undefined) {\n httpParams = httpParams.set('size', params.size.toString());\n }\n httpParams = httpParams.set('sort', params?.sort ?? 'title,asc');\n return this.httpClient.get<Page<TeamListResponseDto>>(this.getApiUrl('v1/team'), {\n params: httpParams,\n });\n }\n\n public getTeam(key: string): Observable<TeamResponseDto> {\n return this.httpClient.get<TeamResponseDto>(this.getApiUrl(`v1/team/${key}`));\n }\n\n public createTeam(dto: TeamCreateRequestDto): Observable<TeamResponseDto> {\n return this.httpClient.post<TeamResponseDto>(this.getApiUrl('v1/team'), dto);\n }\n\n public updateTeam(key: string, dto: TeamUpdateRequestDto): Observable<TeamResponseDto> {\n return this.httpClient.put<TeamResponseDto>(this.getApiUrl(`v1/team/${key}`), dto);\n }\n\n public deleteTeam(key: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl(`v1/team/${key}`));\n }\n\n public getTeamUsers(\n teamKey: string,\n params?: {page?: number; size?: number}\n ): Observable<Page<TeamUserResponseDto>> {\n let httpParams = new HttpParams();\n if (params?.page !== undefined) {\n httpParams = httpParams.set('page', params.page.toString());\n }\n if (params?.size !== undefined) {\n httpParams = httpParams.set('size', params.size.toString());\n }\n return this.httpClient.get<Page<TeamUserResponseDto>>(\n this.getApiUrl(`v1/team/${teamKey}/user`),\n {params: httpParams}\n );\n }\n\n public addTeamUser(\n teamKey: string,\n dto: TeamUserCreateRequestDto\n ): Observable<TeamUserResponseDto> {\n return this.httpClient.post<TeamUserResponseDto>(\n this.getApiUrl(`v1/team/${teamKey}/user`),\n dto\n );\n }\n\n public removeTeamUser(teamKey: string, username: string): Observable<void> {\n return this.httpClient.delete<void>(this.getApiUrl(`v1/team/${teamKey}/user/${username}`));\n }\n\n public getCurrentUserTeams(): Observable<{key: string}[]> {\n return this.httpClient.get<{key: string}[]>(this.getApiUrl('v1/user/team'));\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\nimport {TeamListResponseDto} from '@valtimo/shared';\nimport {runAfterCarbonModalClosed} from '@valtimo/components';\n\n@Injectable()\nexport class TeamsService {\n private readonly _reload$ = new BehaviorSubject<null>(null);\n public readonly reload$ = this._reload$.asObservable();\n\n private readonly _showCreateEditModal$ = new BehaviorSubject<boolean>(false);\n public readonly showCreateEditModal$ = this._showCreateEditModal$.asObservable();\n\n private readonly _editingTeam$ = new BehaviorSubject<TeamListResponseDto | null>(null);\n public readonly editingTeam$ = this._editingTeam$.asObservable();\n\n private readonly _showDeleteModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteModal$ = this._showDeleteModal$.asObservable();\n\n private readonly _teamToDelete$ = new BehaviorSubject<TeamListResponseDto | null>(null);\n public readonly teamToDelete$ = this._teamToDelete$.asObservable();\n\n private readonly _loadedTeams$ = new BehaviorSubject<TeamListResponseDto[]>([]);\n public readonly loadedTeams$ = this._loadedTeams$.asObservable();\n\n public setLoadedTeams(teams: TeamListResponseDto[]): void {\n this._loadedTeams$.next(teams);\n }\n\n public reload(): void {\n this._reload$.next(null);\n }\n\n public showCreateModal(): void {\n this._editingTeam$.next(null);\n this._showCreateEditModal$.next(true);\n }\n\n public showEditModal(team: TeamListResponseDto): void {\n this._editingTeam$.next(team);\n this._showCreateEditModal$.next(true);\n }\n\n public hideCreateEditModal(): void {\n this._showCreateEditModal$.next(false);\n runAfterCarbonModalClosed(() => this._editingTeam$.next(null));\n }\n\n public showDeleteConfirmation(team: TeamListResponseDto): void {\n this._teamToDelete$.next(team);\n this._showDeleteModal$.next(true);\n }\n\n public hideDeleteModal(): void {\n this._showDeleteModal$.next(false);\n this._teamToDelete$.next(null);\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n Observable,\n Subscription,\n switchMap,\n tap,\n map,\n} from 'rxjs';\nimport {TeamResponseDto, TeamUserResponseDto} from '@valtimo/shared';\nimport {TeamsApiService} from './teams-api.service';\nimport {DEFAULT_PAGINATION, PageTitleService, Pagination} from '@valtimo/components';\n\n@Injectable()\nexport class TeamDetailService implements OnDestroy {\n private readonly _loadingTeam$ = new BehaviorSubject<boolean>(true);\n public get loadingTeam$(): Observable<boolean> {\n return this._loadingTeam$.asObservable();\n }\n\n private readonly _routeSubject$ = new BehaviorSubject<ActivatedRoute | null>(null);\n private get _route$() {\n return this._routeSubject$.pipe(filter(route => route !== null));\n }\n\n public get teamKey$(): Observable<string> {\n return this._route$.pipe(\n switchMap(route =>\n route.paramMap.pipe(\n map(params => params.get('teamKey')!),\n filter(key => !!key),\n tap(key => (this._teamKey = key))\n )\n )\n );\n }\n\n private _teamKey!: string;\n public get teamKey(): string {\n return this._teamKey;\n }\n\n private readonly _team$ = new BehaviorSubject<TeamResponseDto | null>(null);\n public get team$(): Observable<TeamResponseDto> {\n return this._team$.pipe(filter(team => team !== null));\n }\n\n private readonly _reload$ = new BehaviorSubject<null>(null);\n\n private readonly _loadingMembers$ = new BehaviorSubject<boolean>(true);\n public get loadingMembers$(): Observable<boolean> {\n return this._loadingMembers$.asObservable();\n }\n\n private readonly _members$ = new BehaviorSubject<TeamUserResponseDto[]>([]);\n public get members$(): Observable<TeamUserResponseDto[]> {\n return this._members$.asObservable();\n }\n\n public readonly membersPagination$ = new BehaviorSubject<Pagination>({...DEFAULT_PAGINATION});\n\n private readonly _membersPaginationParams$ = this.membersPagination$.pipe(\n map(p => ({page: p.page, size: p.size})),\n distinctUntilChanged((a, b) => a.page === b.page && a.size === b.size)\n );\n\n private readonly _reloadMembers$ = new BehaviorSubject<null>(null);\n\n private readonly _showEditTeamModal$ = new BehaviorSubject<boolean>(false);\n public readonly showEditTeamModal$ = this._showEditTeamModal$.asObservable();\n\n private readonly _showDeleteTeamModal$ = new BehaviorSubject<boolean>(false);\n public readonly showDeleteTeamModal$ = this._showDeleteTeamModal$.asObservable();\n\n private readonly _showRemoveMemberModal$ = new BehaviorSubject<boolean>(false);\n public readonly showRemoveMemberModal$ = this._showRemoveMemberModal$.asObservable();\n\n private readonly _memberToRemove$ = new BehaviorSubject<TeamUserResponseDto | null>(null);\n public readonly memberToRemove$ = this._memberToRemove$.asObservable();\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly pageTitleService: PageTitleService,\n private readonly router: Router\n ) {}\n\n public setRoute(route: ActivatedRoute): void {\n this._routeSubject$.next(route);\n\n this._subscriptions.add(\n this.teamKey$\n .pipe(\n switchMap(key =>\n this._reload$.pipe(\n tap(() => this._loadingTeam$.next(true)),\n switchMap(() => this.teamsApiService.getTeam(key))\n )\n ),\n tap(team => {\n this._team$.next(team);\n this.pageTitleService.setCustomPageTitle(team.title);\n this._loadingTeam$.next(false);\n })\n )\n .subscribe()\n );\n\n this._subscriptions.add(\n this.teamKey$\n .pipe(\n switchMap(key =>\n combineLatest([this._reloadMembers$, this._membersPaginationParams$]).pipe(\n tap(() => this._loadingMembers$.next(true)),\n switchMap(([_, params]) =>\n this.teamsApiService.getTeamUsers(key, {\n page: params.page - 1,\n size: params.size,\n })\n )\n )\n ),\n tap(page => {\n this.membersPagination$.next({\n ...this.membersPagination$.getValue(),\n collectionSize: page.totalElements,\n });\n this._members$.next(page.content);\n this._loadingMembers$.next(false);\n })\n )\n .subscribe()\n );\n }\n\n public reload(): void {\n this._reload$.next(null);\n }\n\n public reloadMembers(): void {\n this._reloadMembers$.next(null);\n }\n\n public showEditTeamModal(): void {\n this._showEditTeamModal$.next(true);\n }\n\n public hideEditTeamModal(): void {\n this._showEditTeamModal$.next(false);\n }\n\n public showDeleteTeamModal(): void {\n this._showDeleteTeamModal$.next(true);\n }\n\n public hideDeleteTeamModal(): void {\n this._showDeleteTeamModal$.next(false);\n }\n\n public showRemoveMemberConfirmation(member: TeamUserResponseDto): void {\n this._memberToRemove$.next(member);\n this._showRemoveMemberModal$.next(true);\n }\n\n public hideRemoveMemberModal(): void {\n this._showRemoveMemberModal$.next(false);\n this._memberToRemove$.next(null);\n }\n\n public navigateToTeamsList(): void {\n this.router.navigate(['/teams']);\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './teams-api.service';\nexport * from './teams.service';\nexport * from './team-detail.service';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule, InputModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {AutoKeyInputComponent, runAfterCarbonModalClosed, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {TeamsApiService, TeamsService} from '../../services';\nimport {catchError, map, of, Subscription} from 'rxjs';\nimport {ModalMode, TeamListResponseDto} from '@valtimo/shared';\n\n@Component({\n standalone: true,\n selector: 'valtimo-teams-create-edit-modal',\n templateUrl: './teams-create-edit-modal.component.html',\n styleUrls: ['./teams-create-edit-modal.component.scss'],\n imports: [\n CommonModule,\n ModalModule,\n ButtonModule,\n InputModule,\n LayerModule,\n ReactiveFormsModule,\n TranslatePipe,\n ValtimoCdsModalDirective,\n AutoKeyInputComponent,\n ],\n})\nexport class TeamsCreateEditModalComponent implements OnDestroy {\n public readonly showModal$ = this.teamsService.showCreateEditModal$;\n\n public editingTeam: TeamListResponseDto | null = null;\n\n public formGroup: FormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n key: this.fb.control('', Validators.required),\n });\n\n public get title(): FormControl<string> {\n return this.formGroup.get('title') as FormControl<string>;\n }\n\n public get key(): FormControl<string> {\n return this.formGroup.get('key') as FormControl<string>;\n }\n\n public get isEditMode(): boolean {\n return this.editingTeam !== null;\n }\n\n public get modalMode(): ModalMode {\n return this.isEditMode ? 'edit' : 'add';\n }\n\n public usedKeys: string[] = [];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly teamsService: TeamsService,\n private readonly fb: FormBuilder\n ) {\n this._subscriptions.add(\n this.teamsService.editingTeam$.subscribe(team => {\n this.editingTeam = team;\n if (team) {\n this.formGroup.patchValue({title: team.title, key: team.key});\n }\n })\n );\n\n this._subscriptions.add(\n this.teamsService.loadedTeams$\n .pipe(map(teams => teams.map(t => t.key)))\n .subscribe(keys => (this.usedKeys = keys))\n );\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onCloseModal(): void {\n this.teamsService.hideCreateEditModal();\n this.resetForm();\n }\n\n public onSave(): void {\n this.formGroup.disable();\n\n const titleValue = this.title.value;\n const keyValue = this.key.value;\n\n const request$ = this.isEditMode\n ? this.teamsApiService.updateTeam(this.editingTeam!.key, {\n key: this.editingTeam!.key,\n title: titleValue,\n })\n : this.teamsApiService.createTeam({\n key: keyValue,\n title: titleValue,\n });\n\n request$\n .pipe(\n catchError(() => {\n this.formGroup.enable();\n return of(null);\n })\n )\n .subscribe(result => {\n if (result) {\n this.teamsService.hideCreateEditModal();\n this.resetForm();\n this.teamsService.reload();\n }\n });\n }\n\n private resetForm(): void {\n runAfterCarbonModalClosed(() => {\n this.formGroup.reset();\n this.formGroup.enable();\n this.editingTeam = null;\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{showModal: showModal$ | async} as obs\"\n [open]=\"obs.showModal\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n (isEditMode ? 'teams.createEditModal.editTitle' : 'teams.createEditModal.createTitle')\n | translate\n }}\n </h3>\n <p cdsModalHeaderDescription *ngIf=\"!isEditMode\">\n {{ 'teams.createEditModal.createDescription' | translate }}\n </p>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"valtimo-teams-create__content\"\n [cdsLayer]=\"1\"\n >\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"formGroup.disabled\" [invalid]=\"title.touched && title.invalid\">\n {{ 'teams.createEditModal.teamName' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'teams.createEditModal.teamNamePlaceholder' | translate }}\"\n />\n </cds-label>\n </div>\n\n <valtimo-auto-key-input\n [mode]=\"modalMode\"\n [usedKeys]=\"usedKeys\"\n [sourceText]=\"title.value\"\n formControlName=\"key\"\n placeholderTranslationKey=\"interface.key\"\n >\n </valtimo-auto-key-input>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid || formGroup.disabled\"\n (click)=\"onSave()\"\n >\n {{ (isEditMode ? 'teams.createEditModal.save' : 'teams.createEditModal.create') | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {PermissionRequest} from '@valtimo/access-control';\n\nenum TEAM_PERMISSION_ACTION {\n create = 'create',\n modify = 'modify',\n delete = 'delete',\n assign = 'assign',\n}\n\nenum TEAM_PERMISSION_RESOURCE {\n team = 'com.ritense.team.domain.Team',\n}\n\nenum USER_PERMISSION_ACTION {\n view_list = 'view_list',\n}\n\nenum USER_PERMISSION_RESOURCE {\n user = 'com.ritense.valtimo.contract.authentication.User',\n}\n\nconst CAN_CREATE_TEAM_PERMISSION: PermissionRequest = {\n action: TEAM_PERMISSION_ACTION.create,\n resource: TEAM_PERMISSION_RESOURCE.team,\n};\n\nconst CAN_MODIFY_TEAM_PERMISSION: PermissionRequest = {\n action: TEAM_PERMISSION_ACTION.modify,\n resource: TEAM_PERMISSION_RESOURCE.team,\n};\n\nconst CAN_DELETE_TEAM_PERMISSION: PermissionRequest = {\n action: TEAM_PERMISSION_ACTION.delete,\n resource: TEAM_PERMISSION_RESOURCE.team,\n};\n\nconst CAN_ASSIGN_TEAM_PERMISSION: PermissionRequest = {\n action: TEAM_PERMISSION_ACTION.assign,\n resource: TEAM_PERMISSION_RESOURCE.team,\n};\n\nconst CAN_VIEW_USERS_PERMISSION: PermissionRequest = {\n action: USER_PERMISSION_ACTION.view_list,\n resource: USER_PERMISSION_RESOURCE.user,\n};\n\nexport {\n TEAM_PERMISSION_ACTION,\n TEAM_PERMISSION_RESOURCE,\n USER_PERMISSION_ACTION,\n USER_PERMISSION_RESOURCE,\n CAN_CREATE_TEAM_PERMISSION,\n CAN_MODIFY_TEAM_PERMISSION,\n CAN_DELETE_TEAM_PERMISSION,\n CAN_ASSIGN_TEAM_PERMISSION,\n CAN_VIEW_USERS_PERMISSION,\n};\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './team.permissions';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, signal} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n DEFAULT_PAGINATION,\n Pagination,\n ViewType,\n} from '@valtimo/components';\nimport {PermissionService} from '@valtimo/access-control';\nimport {TeamsApiService, TeamsService} from '../../services';\nimport {BehaviorSubject, combineLatest, distinctUntilChanged, map, Subscription, switchMap, tap} from 'rxjs';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {TeamListResponseDto} from '@valtimo/shared';\nimport {Router} from '@angular/router';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {TeamsCreateEditModalComponent} from '../teams-create-edit-modal/teams-create-edit-modal.component';\nimport {\n CAN_CREATE_TEAM_PERMISSION,\n CAN_DELETE_TEAM_PERMISSION,\n CAN_MODIFY_TEAM_PERMISSION,\n} from '../../permissions';\n\n@Component({\n standalone: true,\n selector: 'valtimo-teams-list',\n templateUrl: './teams-list.component.html',\n styleUrls: ['./teams-list.component.scss'],\n imports: [\n CommonModule,\n CarbonListModule,\n TranslatePipe,\n ButtonModule,\n IconModule,\n TeamsCreateEditModalComponent,\n ConfirmationModalModule,\n ],\n providers: [TeamsService],\n})\nexport class TeamsListComponent implements OnDestroy {\n public readonly $loading = signal<boolean>(true);\n\n public readonly canCreateTeam$ = this.permissionService.requestPermission(\n CAN_CREATE_TEAM_PERMISSION\n );\n\n private canModify = false;\n private canDelete = false;\n private readonly permissionSubscription = new Subscription();\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.onEditTeam.bind(this),\n disabledCallback: () => !this.canModify,\n },\n {\n label: 'interface.delete',\n callback: this.onDeleteTeam.bind(this),\n type: 'danger',\n disabledCallback: () => !this.canDelete,\n },\n ];\n\n public readonly pagination$ = new BehaviorSubject<Pagination>({...DEFAULT_PAGINATION});\n\n private readonly paginationParams$ = this.pagination$.pipe(\n map(p => ({page: p.page, size: p.size})),\n distinctUntilChanged((a, b) => a.page === b.page && a.size === b.size)\n );\n\n public readonly teams$ = combineLatest([this.teamsService.reload$, this.paginationParams$]).pipe(\n tap(() => this.$loading.set(true)),\n switchMap(([_, params]) =>\n this.teamsApiService.getTeams({page: params.page - 1, size: params.size})\n ),\n map(page => {\n this.pagination$.next({\n ...this.pagination$.getValue(),\n collectionSize: page.totalElements,\n });\n return page.content;\n }),\n tap(teams => {\n this.teamsService.setLoadedTeams(teams);\n this.$loading.set(false);\n })\n );\n\n public readonly FIELDS: ColumnConfig[] = [\n {key: 'title', label: 'teams.listColumns.name'},\n {key: 'userCount', label: 'teams.listColumns.members', viewType: ViewType.NUMBER},\n ];\n\n public readonly showDeleteModal$ = this.teamsService.showDeleteModal$;\n public readonly teamToDelete$ = this.teamsService.teamToDelete$;\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly teamsService: TeamsService,\n private readonly permissionService: PermissionService,\n private readonly router: Router\n ) {\n this.permissionSubscription.add(\n this.permissionService.requestPermission(CAN_MODIFY_TEAM_PERMISSION)\n .subscribe(canModify => this.canModify = canModify)\n );\n this.permissionSubscription.add(\n this.permissionService.requestPermission(CAN_DELETE_TEAM_PERMISSION)\n .subscribe(canDelete => this.canDelete = canDelete)\n );\n }\n\n public ngOnDestroy(): void {\n this.permissionSubscription.unsubscribe();\n }\n\n public onRowClick(team: TeamListResponseDto): void {\n this.router.navigate(['/teams', team.key]);\n }\n\n public showCreateModal(): void {\n this.teamsService.showCreateModal();\n }\n\n public onEditTeam(team: TeamListResponseDto): void {\n this.teamsService.showEditModal(team);\n }\n\n public onDeleteTeam(team: TeamListResponseDto): void {\n this.teamsService.showDeleteConfirmation(team);\n }\n\n public onDeleteConfirm(team: TeamListResponseDto): void {\n this.teamsApiService.deleteTeam(team.key).subscribe(() => {\n this.teamsService.reload();\n });\n }\n\n public onPaginationClicked(page: number): void {\n this.pagination$.next({...this.pagination$.getValue(), page});\n }\n\n public onPaginationSet(size: number): void {\n const {collectionSize, page} = this.pagination$.getValue();\n const resetPage =\n Math.ceil(+collectionSize / size) <= +page && +collectionSize > 0;\n this.pagination$.next({\n ...this.pagination$.getValue(),\n size,\n ...(resetPage && {page: 1}),\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n teams: teams$ | async,\n pagination: pagination$ | async,\n canCreateTeam: canCreateTeam$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [fields]=\"FIELDS\"\n [items]=\"obs.teams\"\n [loading]=\"$loading()\"\n [actionItems]=\"ACTION_ITEMS\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"teams\"\n (rowClicked)=\"onRowClick($event)\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"teamActions\"></ng-container>\n\n <valtimo-no-results\n [action]=\"teamActions\"\n [description]=\"'teams.noResults.description' | translate\"\n [title]=\"'teams.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<ng-template #teamActions>\n <button\n cdsButton=\"primary\"\n [disabled]=\"(canCreateTeam$ | async) === false\"\n (click)=\"showCreateModal()\"\n >\n {{ 'teams.newTeam' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<valtimo-teams-create-edit-modal></valtimo-teams-create-edit-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.deleteModal.content\"\n [outputOnConfirm]=\"teamToDelete$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"teams.deleteModal.title\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ButtonModule, InputModule, LayerModule, ModalModule} from 'carbon-components-angular';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {runAfterCarbonModalClosed, ValtimoCdsModalDirective} from '@valtimo/components';\nimport {TeamsApiService, TeamDetailService} from '../../services';\nimport {catchError, of, Subscription} from 'rxjs';\n\n@Component({\n standalone: true,\n selector: 'valtimo-team-detail-edit-modal',\n templateUrl: './team-detail-edit-modal.component.html',\n styleUrls: ['./team-detail-edit-modal.component.scss'],\n imports: [\n CommonModule,\n ModalModule,\n ButtonModule,\n InputModule,\n LayerModule,\n ReactiveFormsModule,\n TranslatePipe,\n ValtimoCdsModalDirective,\n ],\n})\nexport class TeamDetailEditModalComponent implements OnDestroy {\n public readonly showModal$ = this.teamDetailService.showEditTeamModal$;\n\n public formGroup: FormGroup = this.fb.group({\n title: this.fb.control('', Validators.required),\n });\n\n public get title(): FormControl<string> {\n return this.formGroup.get('title') as FormControl<string>;\n }\n\n private readonly _teamSubscription: Subscription;\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly teamDetailService: TeamDetailService,\n private readonly fb: FormBuilder\n ) {\n this._teamSubscription = this.teamDetailService.showEditTeamModal$.subscribe(show => {\n if (show) {\n this.teamDetailService.team$.subscribe(team => {\n this.formGroup.patchValue({title: team.title});\n });\n }\n });\n }\n\n public ngOnDestroy(): void {\n this._teamSubscription.unsubscribe();\n }\n\n public onCloseModal(): void {\n this.teamDetailService.hideEditTeamModal();\n this.resetForm();\n }\n\n public onSave(): void {\n this.formGroup.disable();\n\n this.teamsApiService\n .updateTeam(this.teamDetailService.teamKey, {\n key: this.teamDetailService.teamKey,\n title: this.title.value,\n })\n .pipe(\n catchError(() => {\n this.formGroup.enable();\n return of(null);\n })\n )\n .subscribe(result => {\n if (result) {\n this.teamDetailService.hideEditTeamModal();\n this.resetForm();\n this.teamDetailService.reload();\n }\n });\n }\n\n private resetForm(): void {\n runAfterCarbonModalClosed(() => {\n this.formGroup.reset();\n this.formGroup.enable();\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{showModal: showModal$ | async} as obs\"\n [open]=\"obs.showModal\"\n showFooter=\"true\"\n valtimoCdsModal\n (close)=\"onCloseModal()\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'teams.createEditModal.editTitle' | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n [formGroup]=\"formGroup\"\n cdsModalContent\n class=\"valtimo-team-edit__content\"\n [cdsLayer]=\"1\"\n >\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"formGroup.disabled\" [invalid]=\"title.touched && title.invalid\">\n {{ 'teams.createEditModal.teamName' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'teams.createEditModal.teamNamePlaceholder' | translate }}\"\n />\n </cds-label>\n </div>\n </form>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"formGroup.invalid || formGroup.disabled\"\n (click)=\"onSave()\"\n >\n {{ 'teams.createEditModal.save' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, Input, OnDestroy, OnInit} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n ButtonModule,\n ComboBoxModule,\n DialogModule,\n IconModule,\n IconService,\n LayerModule,\n ListItem,\n} from 'carbon-components-angular';\nimport {OverflowMenuComponent} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {Add16, UserFollow16} from '@carbon/icons';\nimport {BehaviorSubject, catchError, of, Subscription} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {TeamsApiService, TeamDetailService} from '../../services';\n\n@Component({\n standalone: true,\n selector: 'valtimo-team-detail-add-member',\n templateUrl: './team-detail-add-member-modal.component.html',\n styleUrls: ['./team-detail-add-member-modal.component.scss'],\n imports: [\n CommonModule,\n ButtonModule,\n ComboBoxModule,\n DialogModule,\n IconModule,\n LayerModule,\n TranslateModule,\n OverflowMenuComponent,\n ],\n})\nexport class TeamDetailAddMemberComponent implements OnInit, OnDestroy {\n @Input() public disabled = false;\n\n public readonly availableUsers$ = new BehaviorSubject<ListItem[]>([]);\n public readonly noUsersAvailable$ = this.availableUsers$.pipe(map(users => users.length === 0));\n public readonly selectedUsername$ = new BehaviorSubject<string | null>(null);\n public readonly saving$ = new BehaviorSubject<boolean>(false);\n public readonly showComboBox$ = new BehaviorSubject<boolean>(true);\n\n private readonly subscription = new Subscription();\n\n constructor(\n private readonly teamsApiService: TeamsApiService,\n private readonly teamDetailService: TeamDetailService,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Add16, UserFollow16]);\n }\n\n public ngOnInit(): void {\n this.fetchCandidateUsers();\n }\n\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n public onUserSelect(event: ListItem): void {\n if (!event?.id) return;\n this.selectedUsername$.next(event.id as string);\n }\n\n public onComboBoxClear(): void {\n this.selectedUsername$.next(null);\n }\n\n public onAddToTeam(): void {\n const username = this.selectedUsername$.getValue();\n if (!username) return;\n\n this.saving$.next(true);\n\n this.teamsApiService\n .addTeamUser(this.teamDetailService.teamKey, {username})\n .pipe(\n catchError(() => {\n this.saving$.next(false);\n return of(null);\n })\n )\n .subscribe(result => {\n if (result) {\n this.saving$.next(false);\n this.selectedUsername$.next(null);\n this.resetComboBox();\n this.teamDetailService.reloadMembers();\n this.fetchCandidateUsers();\n }\n });\n }\n\n public onOpenChange(open?: boolean): void {\n if (open) {\n this.fetchCandidateUsers();\n this.selectedUsername$.next(null);\n this.resetComboBox();\n }\n }\n\n private fetchCandidateUsers(): void {\n this.subscription.add(\n this.teamsApiService\n .getCandidateUsers(this.teamDetailService.teamKey)\n .pipe(\n map(users =>\n users.map(user => ({\n content: this.getUserLabel(user),\n id: (user as any).username ?? user.id,\n selected: false,\n }))\n )\n )\n .subscribe(items => this.availableUsers$.next(items))\n );\n }\n\n private getUserLabel(user: any): string {\n const firstName = user.firstName?.trim();\n const lastName = user.lastName?.trim();\n if (firstName && lastName) return `${firstName} ${lastName}`;\n if (firstName) return firstName;\n if (lastName) return lastName;\n if (user.email) return user.email;\n return user.username ?? user.id;\n }\n\n private resetComboBox(): void {\n this.showComboBox$.next(false);\n setTimeout(() => this.showComboBox$.next(true));\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<v-overflow-menu placement=\"bottom-end\" [closeOnSelect]=\"false\" (openChange)=\"onOpenChange($event)\">\n <button overflowTrigger cdsButton=\"primary\" [disabled]=\"disabled\" class=\"add-member-button\">\n {{ 'teams.detail.addMember' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <section\n overflowPane\n class=\"valtimo-team-add-member__pane\"\n (click)=\"$event.stopImmediatePropagation()\"\n *ngIf=\"{\n users: availableUsers$ | async,\n noUsersAvailable: noUsersAvailable$ | async,\n selectedUsername: selectedUsername$ | async,\n saving: saving$ | async,\n showComboBox: showComboBox$ | async,\n } as obs\"\n >\n <cds-combo-box\n *ngIf=\"obs.showComboBox\"\n [label]=\"'teams.detail.addMemberModal.selectMember' | translate\"\n [placeholder]=\"\n obs.noUsersAvailable\n ? ('teams.detail.addMemberModal.noUsersAvailable' | translate)\n : ('teams.detail.addMemberModal.selectMemberPlaceholder' | translate)\n \"\n [appendInline]=\"true\"\n [dropUp]=\"false\"\n [cdsLayer]=\"1\"\n [items]=\"obs.users || []\"\n [disabled]=\"obs.saving || obs.noUsersAvailable\"\n itemValueKey=\"id\"\n (selected)=\"onUserSelect($event)\"\n (clear)=\"onComboBoxClear()\"\n >\n <cds-dropdown-list onclick=\"event.stopPropagation()\"></cds-dropdown-list>\n </cds-combo-box>\n\n <button\n cdsButton=\"primary\"\n [cdsLayer]=\"1\"\n class=\"add-to-team-button\"\n [disabled]=\"!obs.selectedUsername || obs.saving || obs.noUsersAvailable\"\n (click)=\"onAddToTeam()\"\n >\n {{ 'teams.detail.addMemberModal.addToTeam' | translate }}\n <svg cdsIcon=\"user--follow\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </section>\n</v-overflow-menu>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Component, OnDestroy, OnInit, signal} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslatePipe} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n PageTitleService,\n RenderInPageHeaderDirective,\n} from '@valtimo/components';\nimport {PermissionService} from '@valtimo/access-control';\nimport {TeamUserResponseDto} from '@valtimo/shared';\nimport {ButtonModule, DialogModule, IconModule} from 'carbon-components-angular';\nimport {combineLatest, map, Subscription, switchMap} from 'rxjs';\nimport {TeamsApiService, TeamDetailService} from '../../services';\nimport {TeamDetailEditModalComponent} from '../team-detail-edit-modal/team-detail-edit-modal.component';\nimport {TeamDetailAddMemberComponent} from '../team-detail-add-member-modal/team-detail-add-member-modal.component';\nimport {\n CAN_ASSIGN_TEAM_PERMISSION,\n CAN_DELETE_TEAM_PERMISSION,\n CAN_MODIFY_TEAM_PERMISSION,\n CAN_VIEW_USERS_PERMISSION,\n TEAM_PERMISSION_RESOURCE,\n} from '../../permissions';\n\n@Component({\n standalone: true,\n selector: 'valtimo-team-detail',\n templateUrl: './team-detail.component.html',\n styleUrls: ['./team-detail.component.scss'],\n imports: [\n CommonModule,\n CarbonListModule,\n TranslatePipe,\n ButtonModule,\n IconModule,\n DialogModule,\n RenderInPageHeaderDirective,\n OverflowMenuComponent,\n OverflowMenuOptionComponent,\n ConfirmationModalModule,\n TeamDetailEditModalComponent,\n TeamDetailAddMemberComponent,\n ],\n providers: [TeamDetailService],\n})\nexport class TeamDetailComponent implements OnInit, OnDestroy {\n public readonly $loadingMembers = signal<boolean>(true);\n\n public readonly members$ = this.teamDetailService.members$;\n public readonly membersPagination$ = this.teamDetailService.membersPagination$;\n public readonly showRemoveMemberModal$ = this.teamDetailService.showRemoveMemberModal$;\n public readonly memberToRemove$ = this.teamDetailService.memberToRemove$;\n public readonly showDeleteTeamModal$ = this.teamDetailService.showDeleteTeamModal$;\n public readonly team$ = this.teamDetailService.team$;\n\n private readonly teamContext$ = this.teamDetailService.teamKey$.pipe(\n map(teamKey => ({\n identifier: teamKey,\n resource: TEAM_PERMISSION_RESOURCE.team,\n }))\n );\n\n public readonly canModifyTeam$ = this.teamContext$.pipe(\n switchMap(context => this.permissionService.requestPermission(CAN_MODIFY_TEAM_PERMISSION, context))\n );\n\n public readonly canDeleteTeam$ = this.teamContext$.pipe(\n switchMap(context => this.permissionService.requestPermission(CAN_DELETE_TEAM_PERMISSION, context))\n );\n\n public readonly canViewUsers$ = this.permissionService.requestPermission(\n CAN_VIEW_USERS_PERMISSION\n );\n\n private canAssign = false;\n private readonly permissionSubscription = new Subscription();\n\n public readonly canAddMember$ = combineLatest([\n this.teamContext$.pipe(\n switchMap(context => this.permissionService.requestPermission(CAN_ASSIGN_TEAM_PERMISSION, context))\n ),\n this.canViewUsers$,\n ]).pipe(\n map(([canAssign, canViewUsers]) => canAssign && canViewUsers)\n );\n\n public readonly MEMBER_ACTION_ITEMS: ActionItem[] = [\n {\n label: 'teams.detail.removeMember',\n callback: this.onRemoveMember.bind(this),\n type: 'danger',\n disabledCallback: () => !this.canAssign,\n },\n ];\n\n public readonly MEMBER_FIELDS: ColumnConfig[] = [\n {key: 'fullName', label: 'teams.detail.memberColumns.name'},\n {key: 'email', label: 'teams.detail.memberColumns.email'},\n ];\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly teamDetailService: TeamDetailService,\n private readonly teamsApiService: TeamsApiService,\n private readonly pageTitleService: PageTitleService,\n private readonly permissionService: PermissionService\n ) {\n this.teamDetailService.setRoute(this.route);\n\n this.permissionSubscription.add(\n this.teamDetailService.loadingMembers$.subscribe(loading => {\n this.$loadingMembers.set(loading);\n })\n );\n\n this.permissionSubscription.add(\n this.teamContext$.pipe(\n switchMap(context => this.permissionService.requestPermission(CAN_ASSIGN_TEAM_PERMISSION, context))\n ).subscribe(canAssign => this.canAssign = canAssign)\n );\n }\n\n public ngOnInit(): void {\n this.pageTitleService.disableReset();\n }\n\n public ngOnDestroy(): void {\n this.pageTitleService.enableReset();\n this.permissionSubscription.unsubscribe();\n }\n\n public onEditTeam(): void {\n this.teamDetailService.showEditTeamModal();\n }\n\n public onDeleteTeam(): void {\n this.teamDetailService.showDeleteTeamModal();\n }\n\n public onDeleteTeamConfirm(): void {\n this.permissionSubscription.add(\n this.teamsApiService.deleteTeam(this.teamDetailService.teamKey).subscribe(() => {\n this.teamDetailService.navigateToTeamsList();\n })\n );\n }\n\n public onRemoveMember(member: TeamUserResponseDto): void {\n this.teamDetailService.showRemoveMemberConfirmation(member);\n }\n\n public onRemoveMemberConfirm(member: TeamUserResponseDto): void {\n this.permissionSubscription.add(\n this.teamsApiService\n .removeTeamUser(this.teamDetailService.teamKey, member.username)\n .subscribe(() => {\n this.teamDetailService.reloadMembers();\n })\n );\n }\n\n public onPaginationClicked(page: number): void {\n this.teamDetailService.membersPagination$.next({\n ...this.teamDetailService.membersPagination$.getValue(),\n page,\n });\n }\n\n public onPaginationSet(size: number): void {\n const {collectionSize, page} = this.teamDetailService.membersPagination$.getValue();\n const resetPage =\n Math.ceil(+collectionSize / size) <= +page && +collectionSize > 0;\n this.teamDetailService.membersPagination$.next({\n ...this.teamDetailService.membersPagination$.getValue(),\n size,\n ...(resetPage && {page: 1}),\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n members: members$ | async,\n pagination: membersPagination$ | async,\n canAddMember: canAddMember$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [fields]=\"MEMBER_FIELDS\"\n [items]=\"obs.members\"\n [loading]=\"$loadingMembers()\"\n [actionItems]=\"MEMBER_ACTION_ITEMS\"\n [pagination]=\"obs.pagination\"\n paginationIdentifier=\"teamMembers\"\n (paginationClicked)=\"onPaginationClicked($event)\"\n (paginationSet)=\"onPaginationSet($event)\"\n >\n <div carbonToolbarContent>\n <valtimo-team-detail-add-member\n [disabled]=\"obs.canAddMember === false\"\n ></valtimo-team-detail-add-member>\n </div>\n\n <valtimo-no-results\n [description]=\"'teams.detail.noMembers.description' | translate\"\n [title]=\"'teams.detail.noMembers.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <div\n class=\"team-detail__header\"\n *ngIf=\"{\n canModify: canModifyTeam$ | async,\n canDelete: canDeleteTeam$ | async,\n } as perms\"\n >\n <v-overflow-menu\n class=\"overflow-button\"\n [menuWidth]=\"250\"\n placement=\"bottom-end\"\n >\n <button overflowTrigger cdsButton=\"tertiary\">\n {{ 'teams.detail.more' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"overflow-menu--vertical\" size=\"16\"></svg>\n </button>\n\n <v-overflow-menu-option (selected)=\"onEditTeam()\" [disabled]=\"!perms.canModify\">\n {{ 'teams.detail.editTeam' | translate }}\n </v-overflow-menu-option>\n\n <v-overflow-menu-option\n (selected)=\"onDeleteTeam()\"\n type=\"danger\"\n [disabled]=\"!perms.canDelete\"\n >\n {{ 'teams.detail.deleteTeam' | translate }}\n </v-overflow-menu-option>\n </v-overflow-menu>\n </div>\n </ng-template>\n</ng-container>\n\n<valtimo-team-detail-edit-modal></valtimo-team-detail-edit-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"teams.detail.removeMember\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.detail.removeMemberModal.content\"\n [outputOnConfirm]=\"memberToRemove$ | async\"\n [showModalSubject$]=\"showRemoveMemberModal$\"\n titleTranslationKey=\"teams.detail.removeMemberModal.title\"\n (confirmEvent)=\"onRemoveMemberConfirm($event)\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"teams.deleteModal.content\"\n [outputOnConfirm]=\"team$ | async\"\n [showModalSubject$]=\"showDeleteTeamModal$\"\n titleTranslationKey=\"teams.deleteModal.title\"\n (confirmEvent)=\"onDeleteTeamConfirm()\"\n></valtimo-confirmation-modal>\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {TeamsListComponent} from './components/teams-list/teams-list.component';\nimport {TeamDetailComponent} from './components/team-detail/team-detail.component';\n\nconst routes: Routes = [\n {\n path: 'teams',\n component: TeamsListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'teams.title', roles: [ROLE_USER]},\n },\n {\n path: 'teams/:teamKey',\n component: TeamDetailComponent,\n canActivate: [AuthGuardService],\n data: {title: 'teams.detail.title', roles: [ROLE_USER], customPageTitle: true},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class TeamsRouting {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {TeamsListComponent} from './components/teams-list/teams-list.component';\nimport {TeamsRouting} from './teams-routing';\n\n@NgModule({\n declarations: [],\n imports: [TeamsRouting, TeamsListComponent],\n providers: [],\n})\nexport class TeamsModule {}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of teams\n */\n\nexport * from './lib/teams.module';\nexport * from './lib/services';\nexport * from './lib/permissions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.TeamsApiService","i2","i3","i1.TeamsService","i4","i5","i6","i1.TeamDetailService","map","i1","i2.TeamDetailService","i2.TeamsApiService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@valtimo/teams",
3
3
  "license": "EUPL-1.2",
4
- "version": "13.23.0",
4
+ "version": "13.24.1",
5
5
  "peerDependencies": {
6
- "@angular/common": "^19.2.8",
7
- "@angular/core": "^19.2.8"
6
+ "@angular/common": "19.2.20",
7
+ "@angular/core": "19.2.20"
8
8
  },
9
9
  "dependencies": {
10
10
  "tslib": "2.8.1"