@valtimo/teams 13.38.0 → 13.40.0
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.
|
@@ -579,7 +579,7 @@ class TeamsListComponent {
|
|
|
579
579
|
});
|
|
580
580
|
}
|
|
581
581
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", 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.25", 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", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey"], 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"] }] }); }
|
|
582
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", 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", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey", "trackByKey"], 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
584
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TeamsListComponent, decorators: [{
|
|
585
585
|
type: Component,
|
|
@@ -899,7 +899,7 @@ class TeamDetailComponent {
|
|
|
899
899
|
});
|
|
900
900
|
}
|
|
901
901
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", 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.25", 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", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey"], 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"] }] }); }
|
|
902
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", 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", "initialSearchValue", "searchDebounceMs", "invalidSearchFields", "searchFields", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled", "expandedRowTemplate", "expandedRowKey", "trackByKey"], 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
904
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TeamDetailComponent, decorators: [{
|
|
905
905
|
type: Component,
|
|
@@ -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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"}
|