@valtimo/task-management 13.38.0 → 13.39.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.
|
@@ -768,7 +768,7 @@ class TaskManagementColumnsComponent {
|
|
|
768
768
|
this.selectedTaskListColumn$.next(null);
|
|
769
769
|
}
|
|
770
770
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TaskManagementColumnsComponent, deps: [{ token: i1$1.ActivatedRoute }, { token: TaskManagementApiService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
771
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TaskManagementColumnsComponent, isStandalone: true, selector: "valtimo-task-management-columns", inputs: { carbonTheme: "carbonTheme" }, providers: [TaskManagementService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 taskListColumns: taskListColumns$ | async,\n cachedTaskListColumns: cachedTaskListColumns$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n loadingColumns: loadingColumns$ | async,\n modalType: modalType$ | async,\n showModal: showModal$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.taskListColumns\"\n [loading]=\"obs.loadingColumns\"\n [fields]=\"fields\"\n [header]=\"false\"\n [dragAndDrop]=\"true\"\n (rowClicked)=\"editColumn($event)\"\n (itemsReordered)=\"onItemsReordered($event, obs.caseDefinitionKey)\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addButton\"\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-task-management-column-modal\n [taskListColumns]=\"obs.cachedTaskListColumns\"\n [type]=\"obs.modalType\"\n [show]=\"obs.showModal\"\n [caseDefinitionKey]=\"obs.caseDefinitionKey\"\n [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n (closeEvent)=\"onModalCloseEvent($event)\"\n ></valtimo-task-management-column-modal>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteColumnKey$ | async\"\n (confirmEvent)=\"deleteColumnConfirmation($event, obs.caseDefinitionKey)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n <button\n carbonToolbarContent\n cdsButton=\"primary\"\n [disabled]=\"disabled$ | async\"\n (click)=\"showModal('add')\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.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: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: TaskManagementColumnModalComponent, selector: "valtimo-task-management-column-modal", inputs: ["carbonTheme", "taskListColumns", "type", "show", "caseDefinitionKey", "selectedTaskListColumn"], outputs: ["closeEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i6.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
771
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TaskManagementColumnsComponent, isStandalone: true, selector: "valtimo-task-management-columns", inputs: { carbonTheme: "carbonTheme" }, providers: [TaskManagementService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 taskListColumns: taskListColumns$ | async,\n cachedTaskListColumns: cachedTaskListColumns$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n loadingColumns: loadingColumns$ | async,\n modalType: modalType$ | async,\n showModal: showModal$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.taskListColumns\"\n [loading]=\"obs.loadingColumns\"\n [fields]=\"fields\"\n [header]=\"false\"\n [dragAndDrop]=\"true\"\n (rowClicked)=\"editColumn($event)\"\n (itemsReordered)=\"onItemsReordered($event, obs.caseDefinitionKey)\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addButton\"\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-task-management-column-modal\n [taskListColumns]=\"obs.cachedTaskListColumns\"\n [type]=\"obs.modalType\"\n [show]=\"obs.showModal\"\n [caseDefinitionKey]=\"obs.caseDefinitionKey\"\n [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n (closeEvent)=\"onModalCloseEvent($event)\"\n ></valtimo-task-management-column-modal>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteColumnKey$ | async\"\n (confirmEvent)=\"deleteColumnConfirmation($event, obs.caseDefinitionKey)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n <button\n carbonToolbarContent\n cdsButton=\"primary\"\n [disabled]=\"disabled$ | async\"\n (click)=\"showModal('add')\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.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: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: TaskManagementColumnModalComponent, selector: "valtimo-task-management-column-modal", inputs: ["carbonTheme", "taskListColumns", "type", "show", "caseDefinitionKey", "selectedTaskListColumn"], outputs: ["closeEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i6.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
772
772
|
}
|
|
773
773
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TaskManagementColumnsComponent, decorators: [{
|
|
774
774
|
type: Component,
|
|
@@ -1102,7 +1102,7 @@ class TaskManagementSearchFieldsModalComponent {
|
|
|
1102
1102
|
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
1103
1103
|
}
|
|
1104
1104
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TaskManagementSearchFieldsModalComponent, deps: [{ token: i1$2.DocumentService }, { token: i2$1.IconService }, { token: i3.FormBuilder }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1105
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TaskManagementSearchFieldsModalComponent, isStandalone: true, selector: "valtimo-task-management-search-fields-modal", inputs: { open: "open", caseDefinitionKey: "caseDefinitionKey", prefillData: "prefillData" }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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<cds-modal [open]=\"open\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ (!prefillData ? 'searchFieldsOverview.add' : 'searchFieldsOverview.edit') | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n cdsModalContent\n [formGroup]=\"form\"\n class=\"valtimo-task-management-search-fields-modal__content\"\n >\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.title' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input-label>\n\n <input\n data-testid=\"task-management-search-title\"\n cdsText\n type=\"text\"\n formControlName=\"title\"\n cdsLayer\n />\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.key' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input-label>\n\n <input\n cdsLayer\n data-testid=\"task-management-search-key\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n />\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n ></valtimo-value-path-selector>\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-dataType\"\n formControlName=\"dataType\"\n >\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dataTypeValue === TaskListSearchFieldDataType.TEXT) {\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-matchType\"\n formControlName=\"matchType\"\n >\n <cds-dropdown-list [items]=\"matchTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n }\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-fieldType\"\n formControlName=\"fieldType\"\n >\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (\n dataTypeValue === TaskListSearchFieldDataType.TEXT &&\n (fieldTypeValue === TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n fieldTypeValue === TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN)\n ) {\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n data-testid=\"task-management-search-dropdownDataProvider\"\n formControlName=\"dropdownDataProvider\"\n cdsLayer\n >\n <cds-dropdown-list [items]=\"dataProviderItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.DATABASE) {\n <div\n class=\"valtimo-task-management-search-fields-modal__list\"\n formArrayName=\"dropdownValues\"\n >\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n [noMargin]=\"true\"\n >\n </v-input-label>\n\n @for (dropdownValue of dropdownValuesArray?.controls; track $index) {\n <form\n [formGroup]=\"dropdownValue\"\n class=\"valtimo-task-management-search-fields-modal__dropdown-values\"\n >\n <cds-text-label>\n {{ 'interface.value' | translate }}\n\n <input\n data-testid=\"task-management-search-dropdownKey\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n cdsLayer\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'interface.display' | translate }}\n\n <input\n data-testid=\"task-management-search-dropdownValue\"\n cdsText\n type=\"text\"\n formControlName=\"value\"\n cdsLayer\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger\"\n data-testid=\"task-management-search-deleteEnum\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n (click)=\"removeDropdownValue($index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n data-testid=\"task-management-search-addDropdownValue\"\n cdsButton=\"primary\"\n (click)=\"addDropdownValue()\"\n >\n {{ 'interface.addRow' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n } @else if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.JSON) {\n <valtimo-carbon-list\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [fields]=\"DROPDOWN_FIELDS\"\n [items]=\"dropdownReadonlyItems$ | async\"\n ></valtimo-carbon-list>\n }\n }\n </form>\n\n <cds-modal-footer>\n <button data-testid=\"task-management-search-cancel\" cdsButton=\"secondary\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-testid=\"task-management-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"form.invalid\"\n (click)=\"onSave()\"\n >\n {{ (!prefillData ? 'interface.create' : 'interface.save') | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-task-management-search-fields-modal__content,.valtimo-task-management-search-fields-modal__dropdown-values{display:flex;gap:16px}.valtimo-task-management-search-fields-modal__content{flex-direction:column}.valtimo-task-management-search-fields-modal__dropdown-values{align-items:flex-end;gap:16px}.valtimo-task-management-search-fields-modal__label{display:flex;gap:4px}.valtimo-task-management-search-fields-modal__list{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2$1.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i2$1.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i2$1.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i2$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.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: "ngmodule", type: InputLabelModule }, { kind: "component", type: i6.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "excludePrefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1105
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TaskManagementSearchFieldsModalComponent, isStandalone: true, selector: "valtimo-task-management-search-fields-modal", inputs: { open: "open", caseDefinitionKey: "caseDefinitionKey", prefillData: "prefillData" }, outputs: { closeEvent: "closeEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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<cds-modal [open]=\"open\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ (!prefillData ? 'searchFieldsOverview.add' : 'searchFieldsOverview.edit') | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n cdsModalContent\n [formGroup]=\"form\"\n class=\"valtimo-task-management-search-fields-modal__content\"\n >\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.title' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input-label>\n\n <input\n data-testid=\"task-management-search-title\"\n cdsText\n type=\"text\"\n formControlName=\"title\"\n cdsLayer\n />\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.key' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input-label>\n\n <input\n cdsLayer\n data-testid=\"task-management-search-key\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n />\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n ></valtimo-value-path-selector>\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-dataType\"\n formControlName=\"dataType\"\n >\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dataTypeValue === TaskListSearchFieldDataType.TEXT) {\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-matchType\"\n formControlName=\"matchType\"\n >\n <cds-dropdown-list [items]=\"matchTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n }\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-fieldType\"\n formControlName=\"fieldType\"\n >\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (\n dataTypeValue === TaskListSearchFieldDataType.TEXT &&\n (fieldTypeValue === TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n fieldTypeValue === TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN)\n ) {\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n data-testid=\"task-management-search-dropdownDataProvider\"\n formControlName=\"dropdownDataProvider\"\n cdsLayer\n >\n <cds-dropdown-list [items]=\"dataProviderItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.DATABASE) {\n <div\n class=\"valtimo-task-management-search-fields-modal__list\"\n formArrayName=\"dropdownValues\"\n >\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n [noMargin]=\"true\"\n >\n </v-input-label>\n\n @for (dropdownValue of dropdownValuesArray?.controls; track $index) {\n <form\n [formGroup]=\"dropdownValue\"\n class=\"valtimo-task-management-search-fields-modal__dropdown-values\"\n >\n <cds-text-label>\n {{ 'interface.value' | translate }}\n\n <input\n data-testid=\"task-management-search-dropdownKey\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n cdsLayer\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'interface.display' | translate }}\n\n <input\n data-testid=\"task-management-search-dropdownValue\"\n cdsText\n type=\"text\"\n formControlName=\"value\"\n cdsLayer\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger\"\n data-testid=\"task-management-search-deleteEnum\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n (click)=\"removeDropdownValue($index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n data-testid=\"task-management-search-addDropdownValue\"\n cdsButton=\"primary\"\n (click)=\"addDropdownValue()\"\n >\n {{ 'interface.addRow' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n } @else if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.JSON) {\n <valtimo-carbon-list\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [fields]=\"DROPDOWN_FIELDS\"\n [items]=\"dropdownReadonlyItems$ | async\"\n ></valtimo-carbon-list>\n }\n }\n </form>\n\n <cds-modal-footer>\n <button data-testid=\"task-management-search-cancel\" cdsButton=\"secondary\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-testid=\"task-management-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"form.invalid\"\n (click)=\"onSave()\"\n >\n {{ (!prefillData ? 'interface.create' : 'interface.save') | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-task-management-search-fields-modal__content,.valtimo-task-management-search-fields-modal__dropdown-values{display:flex;gap:16px}.valtimo-task-management-search-fields-modal__content{flex-direction:column}.valtimo-task-management-search-fields-modal__dropdown-values{align-items:flex-end;gap:16px}.valtimo-task-management-search-fields-modal__label{display:flex;gap:4px}.valtimo-task-management-search-fields-modal__list{display:flex;flex-direction:column;gap:16px}\n/*!\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2$1.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "readonly", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp", "fluid"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2$1.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i2$1.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel", "fluid"] }, { kind: "directive", type: i2$1.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i2$1.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2$1.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2$1.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2$1.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2$1.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.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: "ngmodule", type: InputLabelModule }, { kind: "component", type: i6.InputLabelComponent, selector: "v-input-label", inputs: ["name", "tooltip", "tooltipTranslationKey", "largeMargin", "small", "noMargin", "title", "titleTranslationKey", "required", "disabled", "carbonTheme"] }, { kind: "component", type: ValuePathSelectorComponent, selector: "valtimo-value-path-selector", inputs: ["name", "appendInline", "margin", "marginLg", "marginXl", "disabled", "caseDefinitionKey", "caseDefinitionVersionTag", "buildingBlockDefinitionKey", "buildingBlockDefinitionVersionTag", "prefixes", "excludePrefixes", "label", "tooltip", "required", "showCaseDefinitionSelector", "notation", "dropUp", "defaultValue", "type", "parentItem", "filterItems"], outputs: ["valueChangeEvent", "collectionSelected"] }, { kind: "ngmodule", type: LayerModule }, { kind: "directive", type: i2$1.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1106
1106
|
}
|
|
1107
1107
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TaskManagementSearchFieldsModalComponent, decorators: [{
|
|
1108
1108
|
type: Component,
|
|
@@ -1279,7 +1279,7 @@ class TaskManagementSearchFieldsComponent {
|
|
|
1279
1279
|
}
|
|
1280
1280
|
}
|
|
1281
1281
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TaskManagementSearchFieldsComponent, deps: [{ token: i1$2.DocumentService }, { token: i1$1.ActivatedRoute }, { token: TaskManagementSearchFieldsService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1282
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TaskManagementSearchFieldsComponent, isStandalone: true, selector: "valtimo-task-management-search-fields", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 fieldModalOpen: fieldModalOpen$ | async,\n fields: fields$ | async,\n itemToDelete: itemToDelete$ | async,\n prefillData: prefillData$ | async,\n searchFields: searchFields$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"obs.fields\"\n [items]=\"obs.searchFields\"\n [dragAndDrop]=\"true\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editField($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addButton\"\n [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-task-management-search-fields-modal\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [open]=\"obs.fieldModalOpen\"\n [prefillData]=\"obs.prefillData\"\n (closeEvent)=\"onCloseEvent($event, obs.prefillData)\"\n ></valtimo-task-management-search-fields-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n [outputOnConfirm]=\"obs.itemToDelete\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n (confirmEvent)=\"onDeleteFieldConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n <button cdsButton=\"primary\" (click)=\"onAddButtonClick()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.add' | translate }}\n </button>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.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: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: TaskManagementSearchFieldsModalComponent, selector: "valtimo-task-management-search-fields-modal", inputs: ["open", "caseDefinitionKey", "prefillData"], outputs: ["closeEvent"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i6.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1282
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: TaskManagementSearchFieldsComponent, isStandalone: true, selector: "valtimo-task-management-search-fields", ngImport: i0, template: "<!--\n ~ Copyright 2015-2025 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 fieldModalOpen: fieldModalOpen$ | async,\n fields: fields$ | async,\n itemToDelete: itemToDelete$ | async,\n prefillData: prefillData$ | async,\n searchFields: searchFields$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"obs.fields\"\n [items]=\"obs.searchFields\"\n [dragAndDrop]=\"true\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editField($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addButton\"\n [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-task-management-search-fields-modal\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [open]=\"obs.fieldModalOpen\"\n [prefillData]=\"obs.prefillData\"\n (closeEvent)=\"onCloseEvent($event, obs.prefillData)\"\n ></valtimo-task-management-search-fields-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n [outputOnConfirm]=\"obs.itemToDelete\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n (confirmEvent)=\"onDeleteFieldConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n <button cdsButton=\"primary\" (click)=\"onAddButtonClick()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.add' | translate }}\n </button>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i6.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: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i2$1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: TaskManagementSearchFieldsModalComponent, selector: "valtimo-task-management-search-fields-modal", inputs: ["open", "caseDefinitionKey", "prefillData"], outputs: ["closeEvent"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i6.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"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1283
1283
|
}
|
|
1284
1284
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TaskManagementSearchFieldsComponent, decorators: [{
|
|
1285
1285
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-task-management.mjs","sources":["../../../../projects/valtimo/task-management/src/lib/models/task-management.model.ts","../../../../projects/valtimo/task-management/src/lib/models/index.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management.service.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management-api.service.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management-search-fields.service.ts","../../../../projects/valtimo/task-management/src/lib/services/index.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-column-modal/task-management-column-modal.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-column-modal/task-management-column-modal.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-columns/task-management-columns.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-columns/task-management-columns.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields/task-management-search-fields.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields/task-management-search-fields.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-detail/task-management-detail.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-detail/task-management-detail.component.html","../../../../projects/valtimo/task-management/src/lib/components/index.ts","../../../../projects/valtimo/task-management/src/public_api.ts","../../../../projects/valtimo/task-management/src/valtimo-task-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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\nenum TaskManagementTab {\n COLUMNS = 'columns',\n SEARCH_FIELDS = 'searchFields',\n}\n\nexport {TaskManagementTab};\n","/*\n * Copyright 2015-2025 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 './task-management.model';\n","/*\n * Copyright 2015-2025 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, Observable} from 'rxjs';\nimport {TaskManagementTab} from '../models';\n\n@Injectable()\nexport class TaskManagementService {\n private readonly _activeTab$ = new BehaviorSubject<TaskManagementTab>(TaskManagementTab.COLUMNS);\n\n public get activeTab$(): Observable<TaskManagementTab> {\n return this._activeTab$.asObservable();\n }\n\n public setActiveTab(tab: TaskManagementTab): void {\n this._activeTab$.next(tab);\n }\n}\n","/*\n * Copyright 2015-2025 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 {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {TaskListColumn} from '@valtimo/task';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaskManagementApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getTaskListColumns(caseDefinitionKey: string): Observable<TaskListColumn[]> {\n return this.httpClient.get<TaskListColumn[]>(\n this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column`)\n );\n }\n\n public updateTaskListColumn(\n caseDefinitionKey: string,\n column: TaskListColumn\n ): Observable<TaskListColumn> {\n return this.httpClient.put<TaskListColumn>(\n this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column/${column.key}`),\n column\n );\n }\n\n public deleteTaskListColumn(\n caseDefinitionKey: string,\n columnKey: string\n ): Observable<TaskListColumn> {\n return this.httpClient.delete<TaskListColumn>(\n this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column/${columnKey}`)\n );\n }\n\n public updateTaskListColumnOrder(\n caseDefinitionKey: string,\n columnKeys: string[]\n ): Observable<TaskListColumn[]> {\n return this.httpClient.post<TaskListColumn[]>(\n this.getApiUrl(`/management/v2/case/${caseDefinitionKey}/task-list-column`),\n columnKeys\n );\n }\n\n public swapTaskListColumns(\n caseDefinitionKey: string,\n firstColumn: TaskListColumn,\n secondColumn: TaskListColumn\n ): Observable<TaskListColumn[]> {\n return this.httpClient.post<TaskListColumn[]>(\n this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column`),\n {first: firstColumn.key, second: secondColumn.key}\n );\n }\n}\n","/*\n * Copyright 2015-2025 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} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {TaskListSearchField} from '@valtimo/task';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaskManagementSearchFieldsService extends BaseApiService {\n private _caseDefinitionKey: string;\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public setCaseDefinitionKey(caseDefinitionKey: string): void {\n this._caseDefinitionKey = caseDefinitionKey;\n }\n\n public getTaskListSearchFields(): Observable<TaskListSearchField[]> {\n return this.httpClient.get<TaskListSearchField[]>(\n this.getApiUrl(`/v1/search/field/TaskListSearchColumns/${this._caseDefinitionKey}`)\n );\n }\n\n public createTaskListSearchField(\n searchField: TaskListSearchField\n ): Observable<TaskListSearchField> {\n return this.httpClient.post<TaskListSearchField>(\n this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}`),\n {\n ...searchField,\n ownerType: 'TaskListSearchColumns',\n ownerId: this._caseDefinitionKey,\n }\n );\n }\n\n public updateTaskListSearchField(\n searchField: TaskListSearchField\n ): Observable<TaskListSearchField> {\n return this.httpClient.put<TaskListSearchField>(\n this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}/${searchField.key}`),\n {\n ...searchField,\n ownerType: 'TaskListSearchColumns',\n ownerId: this._caseDefinitionKey,\n }\n );\n }\n\n public deleteTaskListSearchField(searchFieldKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(\n `/v1/search/field/TaskListSearchColumns/${this._caseDefinitionKey}/${searchFieldKey}`\n )\n );\n }\n\n public orderTaskListSearchFields(searchFields: TaskListSearchField[]): Observable<any[]> {\n return this.httpClient.put<any[]>(\n this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}/fields`),\n searchFields\n );\n }\n}\n","/*\n * Copyright 2015-2025 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 './task-management.service';\nexport * from './task-management-api.service';\nexport * from './task-management-search-fields.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 {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {\n CARBON_CONSTANTS,\n CARBON_THEME,\n CarbonListModule,\n CarbonMultiInputModule,\n MultiInputValues,\n TooltipIconModule,\n ValtimoCdsModalDirective,\n ValuePathSelectorComponent,\n ViewType,\n} from '@valtimo/components';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ButtonModule,\n CheckboxModule,\n DropdownModule,\n InputModule,\n LayerModule,\n ModalModule,\n TabsModule,\n} from 'carbon-components-angular';\nimport {TaskManagementApiService} from '../../services';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, map, Observable, of, startWith, tap} from 'rxjs';\nimport {\n TaskListColumn,\n TaskListColumnDefaultSort,\n TaskListColumnEnum,\n TaskListColumnListItem,\n TaskListColumnModalCloseEvent,\n TaskListColumnModalType,\n} from '@valtimo/task';\nimport {distinctUntilChanged} from 'rxjs/operators';\nimport {isEqual} from 'lodash';\n\n@Component({\n selector: 'valtimo-task-management-column-modal',\n templateUrl: './task-management-column-modal.component.html',\n styleUrls: ['./task-management-column-modal.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n TranslateModule,\n TabsModule,\n FormsModule,\n ModalModule,\n CheckboxModule,\n DropdownModule,\n InputModule,\n ReactiveFormsModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n ButtonModule,\n ValtimoCdsModalDirective,\n ValuePathSelectorComponent,\n LayerModule,\n ],\n})\nexport class TaskManagementColumnModalComponent {\n @Input() public carbonTheme: CARBON_THEME = CARBON_THEME.G10;\n @Input() public set taskListColumns(value: TaskListColumn[]) {\n if (value?.length > 0) {\n this._taskListColumns$.next(value);\n }\n }\n @Input() public set type(value: TaskListColumnModalType) {\n this.type$.next(value);\n }\n public get type(): TaskListColumnModalType {\n return this.type$.getValue();\n }\n @Input() public set show(showModal: boolean) {\n this.show$.next(showModal);\n if (showModal) this.enable();\n if (!showModal) this.resetFormAfterTimeout();\n }\n @Input() public caseDefinitionKey!: string;\n @Input() public set selectedTaskListColumn(column: TaskListColumn) {\n if (column) this.prefillForm(column);\n }\n @Output() closeEvent = new EventEmitter<TaskListColumnModalCloseEvent>();\n\n public readonly type$ = new BehaviorSubject<TaskListColumnModalType>('add');\n public readonly isAdd$ = this.type$.pipe(map(type => type === 'add'));\n public readonly isEdit$ = this.type$.pipe(\n map(type => type === 'edit'),\n tap(isEdit => {\n if (isEdit) {\n this.key?.disable();\n } else {\n this.key?.enable();\n }\n })\n );\n public readonly show$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _taskListColumns$ = new BehaviorSubject<TaskListColumn[]>([]);\n\n public get taskListColumns$(): Observable<TaskListColumn[]> {\n return this._taskListColumns$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n private readonly _INVALID_KEY = 'INVALID_KEY';\n\n private readonly DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.TAGS,\n ViewType.UNDERSCORES_TO_SPACES,\n ];\n\n private getInvalidListItem = (translateKey: string): TaskListColumnListItem => ({\n content: this.translateService.instant(translateKey),\n key: this._INVALID_KEY,\n selected: true,\n });\n\n private uniqueKeyValidator = (\n keyFormControl: AbstractControl<TaskListColumnListItem>\n ): {notUnique: boolean} | null => {\n const taskListColumns = this._taskListColumns$.getValue();\n\n return !taskListColumns?.find(\n column => column?.key?.trim()?.toLowerCase() === keyFormControl?.value?.trim()?.toLowerCase()\n )\n ? null\n : {notUnique: true};\n };\n\n private listItemValidator = (\n listItemControl: AbstractControl<TaskListColumnListItem>\n ): {invalidItem: boolean} | null =>\n listItemControl?.value?.key && listItemControl.value.key !== this._INVALID_KEY\n ? null\n : {invalidItem: true};\n\n public readonly formGroup = new FormGroup({\n title: new FormControl<string | null>(null),\n key: new FormControl<string | null>(null, [\n this.uniqueKeyValidator.bind(this),\n Validators.required,\n ]),\n path: new FormControl<string | null>(null, Validators.required),\n dateFormat: new FormControl<string | null>(null),\n displayType: new FormControl<TaskListColumnListItem>(\n this.getInvalidListItem(`listColumn.selectDefaultSort`),\n [Validators.required, this.listItemValidator.bind(this)]\n ),\n sortable: new FormControl<boolean>(false),\n defaultSort: new FormControl<TaskListColumnListItem>(\n this.getInvalidListItem(`listColumn.selectDefaultSort`),\n [Validators.required]\n ),\n });\n\n public get title(): AbstractControl<string | null> | null {\n return this.formGroup.get('title');\n }\n public get key(): AbstractControl<string | null> | null {\n return this.formGroup.get('key');\n }\n public get keyValue$(): Observable<string | null> {\n return this.key?.valueChanges.pipe(distinctUntilChanged()) ?? of(null);\n }\n public get path(): AbstractControl<string | null> | null {\n return this.formGroup.get('path');\n }\n public get dateFormat(): AbstractControl<string | null> | null {\n return this.formGroup.get('dateFormat');\n }\n public get displayType(): AbstractControl<TaskListColumnListItem | null> | null {\n return this.formGroup.get('displayType');\n }\n public get sortable(): AbstractControl<boolean | null> | null {\n return this.formGroup.get('sortable');\n }\n public get defaultSort(): AbstractControl<TaskListColumnListItem | null> | null {\n return this.formGroup.get('defaultSort');\n }\n\n private get _SORT_ASC_ITEM() {\n return {\n content: this.translateService.instant(`listColumn.sortableAsc`),\n key: 'ASC',\n } as TaskListColumnListItem;\n }\n private get _SORT_DESC_ITEM() {\n return {\n content: this.translateService.instant(`listColumn.sortableDesc`),\n key: 'DESC',\n } as TaskListColumnListItem;\n }\n public readonly sortItems$: Observable<Array<TaskListColumnListItem>> = combineLatest([\n this.defaultSort?.valueChanges || of(null),\n this.translateService.stream('key'),\n ]).pipe(\n map(([defaultSortItem]) =>\n [\n this.getInvalidListItem(`listColumn.selectDefaultSort`),\n this._SORT_ASC_ITEM,\n this._SORT_DESC_ITEM,\n ].map((item, index) => ({\n ...item,\n selected: defaultSortItem?.key === item?.key,\n }))\n )\n );\n\n public readonly viewTypeItems$: Observable<Array<TaskListColumnListItem>> = combineLatest([\n this.displayType?.valueChanges || of(null),\n this.translateService.stream('key'),\n ]).pipe(\n map(([displayTypeItem]) =>\n [\n {\n content: this.translateService.instant(`listColumnDisplayType.select`),\n key: this._INVALID_KEY,\n },\n ...this.DISPLAY_TYPES.map(type => this.getListItemFromViewType(type)),\n ].map((item, index) => ({\n ...item,\n selected: displayTypeItem?.key === item?.key,\n }))\n )\n );\n\n private _showDateFormat!: boolean;\n public readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])),\n tap(showDateFormat => (this._showDateFormat = showDateFormat))\n );\n\n private _showEnum!: boolean;\n public readonly showEnum$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === ViewType.ENUM)),\n tap(showEnum => {\n this._showEnum = showEnum;\n if ((this._enumValues$.getValue() || []).length === 0) this.resetEnumValues();\n })\n );\n\n private _showYesNo!: boolean;\n public readonly showYesNo$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === ViewType.BOOLEAN)),\n tap(showYesNo => {\n this._showYesNo = showYesNo;\n if ((this._yesNoValues$.getValue() || []).length === 0) this.resetYesNoValues();\n })\n );\n\n public readonly CARBON_THEME_WHITE = CARBON_THEME.WHITE;\n\n private static readonly SORTABLE_PATH_REGEX = /^(doc:|case:|task:)/;\n\n public readonly displaySortable$: Observable<boolean> = (\n this.path?.valueChanges ?? of(this.path?.value)\n ).pipe(\n startWith(this.path?.value),\n map(value =>\n TaskManagementColumnModalComponent.SORTABLE_PATH_REGEX.test(String(value ?? ''))\n ),\n tap(displaySortable => {\n this._displaySortable = displaySortable;\n if (!displaySortable) {\n const sortableValue = this.sortable?.value;\n const defaultSortKey = this.defaultSort?.value?.key;\n if (sortableValue || (defaultSortKey && defaultSortKey !== this._INVALID_KEY)) {\n this.sortable?.setValue(false, {emitEvent: false});\n this.defaultSort?.setValue(this.getInvalidListItem(`listColumn.selectDefaultSort`), {\n emitEvent: false,\n });\n }\n }\n })\n );\n\n private _displaySortable = true;\n\n public readonly disableDefaultSort$ = combineLatest([this.taskListColumns$, this.keyValue$]).pipe(\n map(([taskListColumns, keyValue]) => {\n const defaultSortColumn = taskListColumns.find(\n column =>\n column?.defaultSort === TaskListColumnDefaultSort.ASC ||\n column?.defaultSort === TaskListColumnDefaultSort.DESC\n );\n const defaultSortColumnExists = !!defaultSortColumn;\n const enabled = !defaultSortColumnExists || defaultSortColumn.key === keyValue;\n\n if (enabled) {\n this.defaultSort?.enable();\n } else {\n this.defaultSort?.disable();\n }\n\n return !enabled;\n })\n );\n\n private readonly _DEFAULT_ENUM_VALUES: MultiInputValues = [{key: '', value: ''}];\n\n private readonly _enumValues$ = new BehaviorSubject<MultiInputValues>(this._DEFAULT_ENUM_VALUES);\n\n public get enumValues$(): Observable<MultiInputValues> {\n return this._enumValues$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n public get enumValid$(): Observable<boolean> {\n return this.enumValues$.pipe(map(values => this.getValidEnumValues(values).length > 0));\n }\n\n private readonly _enumInitialValues$ = new BehaviorSubject<MultiInputValues>(\n this._DEFAULT_ENUM_VALUES\n );\n\n public get enumInitialValues$(): Observable<MultiInputValues> {\n return this._enumInitialValues$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n private readonly _yesNoValues$ = new BehaviorSubject<MultiInputValues>(this._DEFAULT_ENUM_VALUES);\n\n public get yesNoValues$(): Observable<MultiInputValues> {\n return this._yesNoValues$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n private readonly _yesNoInitialValues$ = new BehaviorSubject<MultiInputValues>(\n this._DEFAULT_ENUM_VALUES\n );\n\n public get yesNoInitialValues$(): Observable<MultiInputValues> {\n return this._yesNoInitialValues$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly taskManagementApiService: TaskManagementApiService\n ) {}\n\n public closeModal(): void {\n this.closeEvent.emit('close');\n }\n\n public save(): void {\n this.disable();\n\n this.taskManagementApiService\n .updateTaskListColumn(\n this.caseDefinitionKey,\n this.getTaskListColumnFromFormValue(this._showEnum, this._showDateFormat, this._showYesNo)\n )\n .subscribe({\n next: () => {\n this.closeModalAndRefresh();\n this.enableAfterTimeout();\n },\n error: () => {\n this.enable();\n },\n });\n }\n\n public enumValueChange(value: MultiInputValues): void {\n this._enumValues$.next(value);\n }\n\n public yesNoValueChange(value: MultiInputValues): void {\n this._yesNoValues$.next(value);\n }\n\n private resetEnumValues(): void {\n this._enumValues$.next(this._DEFAULT_ENUM_VALUES);\n this._enumInitialValues$.next(this._DEFAULT_ENUM_VALUES);\n }\n\n private resetYesNoValues(): void {\n this._yesNoValues$.next(this._DEFAULT_ENUM_VALUES);\n this._yesNoInitialValues$.next(this._DEFAULT_ENUM_VALUES);\n }\n\n private resetFormAfterTimeout(): void {\n setTimeout(() => {\n this.resetForm();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n private resetForm(): void {\n this.resetEnumValues();\n this.resetYesNoValues();\n this.formGroup.reset({\n title: null,\n key: null,\n dateFormat: null,\n displayType: this.getInvalidListItem('listColumnDisplayType.select'),\n sortable: false,\n defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),\n });\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enableAfterTimeout(): void {\n setTimeout(() => {\n this.enable();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private closeModalAndRefresh(): void {\n this.closeEvent.emit('refresh');\n }\n\n private getTaskListColumnFromFormValue(\n includeEnum: boolean,\n includeDateFormat: boolean,\n includeYesNo: boolean\n ): TaskListColumn {\n const validEnumValues = this.getValidEnumValues(this._enumValues$.getValue());\n const mappedEnumValues =\n validEnumValues && validEnumValues.length > 0 && this.mapEnumValues(validEnumValues);\n const validYesNoValues = this.getValidEnumValues(this._yesNoValues$.getValue());\n const mappedYesNoValues =\n validYesNoValues && validYesNoValues.length > 0 && this.mapEnumValues(validYesNoValues);\n\n const formValue = this.formGroup.getRawValue();\n const taskListColumn: TaskListColumn = {\n title: formValue?.title ?? '',\n key: formValue.key ?? '',\n path: formValue.path ?? '',\n displayType: {\n type: formValue?.displayType?.key ?? '',\n displayTypeParameters: {\n ...(!!includeDateFormat && {dateFormat: formValue.dateFormat ?? ''}),\n ...(includeEnum && mappedEnumValues && {enum: mappedEnumValues}),\n ...(includeYesNo && mappedYesNoValues && {enum: mappedYesNoValues}),\n },\n },\n sortable: this._displaySortable ? formValue.sortable ?? false : false,\n ...(this._displaySortable &&\n formValue?.defaultSort?.key !== this._INVALID_KEY && {\n defaultSort: formValue?.defaultSort?.key as TaskListColumnDefaultSort,\n }),\n };\n\n return taskListColumn;\n }\n\n private mapEnumValues(enumValues: MultiInputValues): TaskListColumnEnum {\n return enumValues.reduce((acc, curr) => ({...acc, [curr?.key ?? '']: curr.value}), {});\n }\n\n private getValidEnumValues(values: MultiInputValues): MultiInputValues {\n return (values || []).filter(value => value.value && value.key);\n }\n\n private getListItemFromViewType(viewType: ViewType | string): TaskListColumnListItem {\n return {\n content: this.translateService.instant(`listColumnDisplayType.${viewType}`),\n key: viewType,\n } as TaskListColumnListItem;\n }\n\n private getMultiInputValuesFromTaskListColumnEnum(\n taskListColumnEnum: TaskListColumnEnum\n ): MultiInputValues {\n return Object.keys(taskListColumnEnum).reduce(\n (acc, curr) => [...acc, {key: curr, value: taskListColumnEnum[curr]}],\n [] as MultiInputValues\n );\n }\n\n private prefillForm(column: TaskListColumn): void {\n if (\n column?.displayType?.type === ViewType.ENUM &&\n column?.displayType?.displayTypeParameters?.enum\n ) {\n const prefilledEnum = this.getMultiInputValuesFromTaskListColumnEnum(\n column.displayType.displayTypeParameters.enum\n );\n this._enumValues$.next(prefilledEnum);\n this._enumInitialValues$.next(prefilledEnum);\n }\n\n if (\n column?.displayType?.type === ViewType.BOOLEAN &&\n column?.displayType?.displayTypeParameters?.enum\n ) {\n const prefilledYesNo = this.getMultiInputValuesFromTaskListColumnEnum(\n column.displayType.displayTypeParameters.enum\n );\n this._yesNoValues$.next(prefilledYesNo);\n this._yesNoInitialValues$.next(prefilledYesNo);\n }\n\n this.formGroup.patchValue({\n key: column.key,\n path: column.path,\n sortable: column.sortable,\n displayType: this.getListItemFromViewType(column.displayType.type),\n ...(column.title && {title: column.title}),\n ...(!column.defaultSort && {\n defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),\n }),\n ...(column.defaultSort === 'ASC' && {defaultSort: this._SORT_ASC_ITEM}),\n ...(column.defaultSort === 'DESC' && {defaultSort: this._SORT_DESC_ITEM}),\n ...(column.displayType?.type === ViewType.DATE && {\n dateFormat: column.displayType?.displayTypeParameters?.dateFormat,\n }),\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 show: show$ | async,\n type: type$ | async,\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n disabled: disabled$ | async,\n showDateFormat: showDateFormat$ | async,\n showEnum: showEnum$ | async,\n showYesNo: showYesNo$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n enumInitialValues: enumInitialValues$ | async,\n enumValid: enumValid$ | async,\n yesNoInitialValues: yesNoInitialValues$ | async,\n viewTypeItems: viewTypeItems$ | async,\n sortItems: sortItems$ | async,\n displaySortable: displaySortable$ | async,\n } as obs\"\n>\n <cds-modal size=\"sm\" [open]=\"obs.show\" valtimoCdsModal (close)=\"closeModal()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n obs.type === 'add'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText cdsLayer formControlName=\"title\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [invalid]=\"key?.touched && key?.invalid\"\n [disabled]=\"obs.disabled || obs.isEdit\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText cdsLayer formControlName=\"key\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"caseDefinitionKey\"\n ></valtimo-value-path-selector>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n *ngIf=\"obs.viewTypeItems\"\n cdsLayer\n formControlName=\"displayType\"\n [disabled]=\"obs.disabled\"\n >\n <cds-dropdown-list [items]=\"obs.viewTypeItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showDateFormat\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText cdsLayer formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showEnum\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showEnum\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.enumInitialValues\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showYesNo\" [ngClass]=\"'no-margin'\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitleOptional' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltipOptional' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showYesNo\"\n [fullWidth]=\"true\"\n [defaultValues]=\"obs.yesNoInitialValues\"\n type=\"keyValue\"\n [hideAddButton]=\"true\"\n [hideDeleteButton]=\"true\"\n [maxRows]=\"1\"\n [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n (valueChange)=\"yesNoValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.displaySortable\">\n <cds-checkbox formControlName=\"sortable\" [disabled]=\"obs.disabled\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.displaySortable\">\n <cds-label [disabled]=\"obs.disabled || obs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n formControlName=\"defaultSort\"\n [disabled]=\"obs.disabled\"\n cdsLayer\n *ngIf=\"obs.sortItems\"\n >\n <cds-dropdown-list [items]=\"obs.sortItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n\n <cds-modal-footer>\n <button (click)=\"closeModal()\" cdsButton=\"secondary\" [disabled]=\"obs.disabled\">\n {{ 'listColumn.close' | translate }}\n </button>\n\n <button\n (click)=\"save()\"\n cdsButton=\"primary\"\n [disabled]=\"obs.disabled || formGroup.invalid || (obs.showEnum && !obs.enumValid)\"\n >\n {{ (obs.type === 'add' ? 'interface.create' : 'listColumn.save') | translate }}\n </button>\n </cds-modal-footer>\n </cds-modal>\n</ng-container>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CARBON_CONSTANTS,\n CARBON_THEME,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n MoveRowDirection,\n MoveRowEvent,\n} from '@valtimo/components';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {\n TaskListColumn,\n TaskListColumnDisplayTypeParameters,\n TaskListColumnModalCloseEvent,\n TaskListColumnModalType,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, switchMap, take, tap} from 'rxjs';\nimport {TaskManagementApiService, TaskManagementService} from '../../services';\nimport {TaskManagementColumnModalComponent} from '../task-management-column-modal/task-management-column-modal.component';\n\n@Component({\n selector: 'valtimo-task-management-columns',\n templateUrl: './task-management-columns.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n TranslateModule,\n TabsModule,\n TaskManagementColumnModalComponent,\n ButtonModule,\n IconModule,\n ConfirmationModalModule,\n ],\n providers: [TaskManagementService],\n})\nexport class TaskManagementColumnsComponent {\n @Input() public carbonTheme: CARBON_THEME = CARBON_THEME.G10;\n\n private readonly _refreshColumns$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n public readonly caseDefinitionKey$: Observable<string> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n map((params: CaseManagementParams | undefined) => (!params ? '' : params.caseDefinitionKey))\n );\n\n public readonly loadingColumns$ = new BehaviorSubject<boolean>(true);\n\n public readonly selectedTaskListColumn$ = new Subject<TaskListColumn | null>();\n\n public readonly cachedTaskListColumns$ = new BehaviorSubject<TaskListColumn[]>([]);\n\n public readonly taskListColumns$: Observable<TaskListColumn[]> = combineLatest([\n this.caseDefinitionKey$,\n this._refreshColumns$,\n this.translateService.stream('key'),\n ]).pipe(\n tap(([_, refresh]) => {\n if (refresh !== 'noAnimation') this.loadingColumns$.next(true);\n }),\n switchMap(([caseDefinitionKey]) =>\n this.taskManagementApiService.getTaskListColumns(caseDefinitionKey)\n ),\n tap(columns => {\n this.cachedTaskListColumns$.next(columns);\n }),\n map(columns =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n sortable: column.sortable\n ? this.translateService.instant('listColumn.sortableYes')\n : this.translateService.instant('listColumn.sortableNo'),\n defaultSort:\n (column.defaultSort === 'ASC' &&\n this.translateService.instant('listColumn.sortableAsc')) ||\n (column.defaultSort === 'DESC' &&\n this.translateService.instant('listColumn.sortableDesc')) ||\n '-',\n displayType: this.translateService.instant(\n `listColumnDisplayType.${column?.displayType?.type}`\n ),\n displayTypeParameters: this.getDisplayTypeParametersView(\n column?.displayType?.displayTypeParameters\n ),\n }))\n ),\n tap(() => {\n this.enable();\n this.loadingColumns$.next(false);\n })\n );\n\n public readonly showDeleteModal$ = new Subject<boolean>();\n public readonly deleteColumnKey$ = new BehaviorSubject<string>('');\n\n public readonly disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly fields: Array<ColumnConfig> = [\n {\n viewType: 'string',\n sortable: false,\n key: 'title',\n label: 'listColumn.title',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'key',\n label: 'listColumn.key',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'path',\n label: 'listColumn.path',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayType',\n label: 'listColumn.displayType',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'sortable',\n label: 'listColumn.sortable',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'defaultSort',\n label: 'listColumn.defaultSort',\n },\n ];\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editColumn.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteColumn.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly modalType$ = new Subject<TaskListColumnModalType>();\n public readonly showModal$ = new Subject<boolean>();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly taskManagementApiService: TaskManagementApiService,\n private readonly translateService: TranslateService\n ) {}\n\n public refreshColumns(noAnimation = false): void {\n this._refreshColumns$.next(noAnimation ? 'noAnimation' : null);\n }\n\n public deleteColumn(taskListColumn: TaskListColumn): void {\n this.showDeleteModal$.next(true);\n this.deleteColumnKey$.next(taskListColumn.key);\n }\n\n public onItemsReordered(reorderedItems: TaskListColumn[], caseDefinitionKey: string): void {\n this.disable();\n\n this.taskManagementApiService\n .updateTaskListColumnOrder(\n caseDefinitionKey,\n reorderedItems.map((column: TaskListColumn) => column.key)\n )\n .subscribe({\n next: () => {\n this.refreshColumns(true);\n },\n error: () => this.enable(),\n });\n }\n\n public editColumn(columnItem: TaskListColumn): void {\n this.cachedTaskListColumns$.pipe(take(1)).subscribe(cachedTaskListColumns => {\n const selectedTaskListColumn = cachedTaskListColumns.find(\n column => column.key === columnItem.key\n );\n\n this.selectedTaskListColumn$.next(selectedTaskListColumn ?? null);\n this.showModal('edit');\n });\n }\n\n public showModal(type: TaskListColumnModalType): void {\n this.modalType$.next(type);\n this.showModal$.next(true);\n }\n\n public onModalCloseEvent(event: TaskListColumnModalCloseEvent): void {\n this.showModal$.next(false);\n\n if (event === 'refresh') {\n this.disable();\n this.refreshColumns();\n }\n\n setTimeout(() => {\n this.clearSelectedTaskListColumn();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public deleteColumnConfirmation(columnKey: string, caseDefinitionKey: string): void {\n this.disable();\n\n this.taskManagementApiService.deleteTaskListColumn(caseDefinitionKey, columnKey).subscribe({\n next: () => {\n this.refreshColumns(true);\n },\n error: () => this.enable(),\n });\n }\n\n private getDisplayTypeParametersView(\n displayTypeParameters: TaskListColumnDisplayTypeParameters | undefined\n ): string {\n if (!displayTypeParameters) return '-';\n\n if (displayTypeParameters?.dateFormat) {\n return displayTypeParameters.dateFormat;\n } else if (displayTypeParameters?.enum) {\n return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {\n const keyValuePairString = `${curr}: ${displayTypeParameters?.enum?.[curr]}`;\n\n if (!acc) return `${keyValuePairString}`;\n\n return `${acc}, ${keyValuePairString}`;\n }, '');\n }\n\n return '-';\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private clearSelectedTaskListColumn(): void {\n this.selectedTaskListColumn$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 taskListColumns: taskListColumns$ | async,\n cachedTaskListColumns: cachedTaskListColumns$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n loadingColumns: loadingColumns$ | async,\n modalType: modalType$ | async,\n showModal: showModal$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.taskListColumns\"\n [loading]=\"obs.loadingColumns\"\n [fields]=\"fields\"\n [header]=\"false\"\n [dragAndDrop]=\"true\"\n (rowClicked)=\"editColumn($event)\"\n (itemsReordered)=\"onItemsReordered($event, obs.caseDefinitionKey)\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addButton\"\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-task-management-column-modal\n [taskListColumns]=\"obs.cachedTaskListColumns\"\n [type]=\"obs.modalType\"\n [show]=\"obs.showModal\"\n [caseDefinitionKey]=\"obs.caseDefinitionKey\"\n [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n (closeEvent)=\"onModalCloseEvent($event)\"\n ></valtimo-task-management-column-modal>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteColumnKey$ | async\"\n (confirmEvent)=\"deleteColumnConfirmation($event, obs.caseDefinitionKey)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n <button\n carbonToolbarContent\n cdsButton=\"primary\"\n [disabled]=\"disabled$ | async\"\n (click)=\"showModal('add')\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n ReactiveFormsModule,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {InformationFilled16, TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n CarbonListModule,\n ColumnConfig,\n InputLabelModule,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n TaskListSearchDropdownDataProvider,\n TaskListSearchDropdownValue,\n TaskListSearchField,\n TaskListSearchFieldDataType,\n TaskListSearchFieldFieldType,\n TaskListSearchFieldMatchType,\n} from '@valtimo/task';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n LayerModule,\n ListItem,\n ModalModule,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n startWith,\n switchMap,\n} from 'rxjs';\n\n@Component({\n selector: 'valtimo-task-management-search-fields-modal',\n templateUrl: './task-management-search-fields-modal.component.html',\n styleUrl: './task-management-search-fields-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DropdownModule,\n InputModule,\n ModalModule,\n ReactiveFormsModule,\n IconModule,\n CarbonListModule,\n InputLabelModule,\n ValuePathSelectorComponent,\n LayerModule,\n ],\n})\nexport class TaskManagementSearchFieldsModalComponent implements OnInit {\n @Input({required: true}) open: boolean;\n\n public readonly caseDefinitionKey$ = new BehaviorSubject<string>('');\n @Input({required: true}) public set caseDefinitionKey(value: string) {\n this.caseDefinitionKey$.next(value);\n }\n\n private _prefillData: TaskListSearchField | null;\n @Input() public set prefillData(value: TaskListSearchField | null) {\n this._prefillData = value;\n this.setPrefilledForm(value);\n }\n public get prefillData(): TaskListSearchField | null {\n return this._prefillData;\n }\n @Output() closeEvent = new EventEmitter<Partial<TaskListSearchField> | null>();\n\n public readonly form = this.fb.group({\n key: this.fb.control<string>('', Validators.required),\n title: this.fb.control<string>('', Validators.required),\n path: this.fb.control<string>('', Validators.required),\n dataType: this.fb.control<ListItem | null>(null, Validators.required),\n matchType: this.fb.control<ListItem | null>(null, this.matchTypeValidator),\n fieldType: this.fb.control<ListItem | null>(null, Validators.required),\n dropdownDataProvider: this.fb.control<ListItem | null>(null),\n dropdownValues: this.fb.array<{key: string; value: string}>([]),\n });\n\n public get dataType(): AbstractControl<ListItem | null> | null {\n return this.form.get('dataType');\n }\n public get dataTypeValue$(): Observable<ListItem | null> {\n return this.dataType?.valueChanges.pipe(startWith(this.dataType.value)) ?? of(null);\n }\n\n public get matchType(): AbstractControl<ListItem | null> | null {\n return this.form.get('matchType');\n }\n public get matchTypeValue$(): Observable<ListItem | null> {\n return this.matchType?.valueChanges.pipe(startWith(this.matchType.value)) ?? of(null);\n }\n\n public get dropdownDataProvider(): AbstractControl<ListItem | null> | null {\n return this.form.get('dropdownDataProvider');\n }\n\n public get dropdownDataProviderValue$(): Observable<ListItem | null> {\n return (\n this.dropdownDataProvider?.valueChanges.pipe(startWith(this.dropdownDataProvider.value)) ??\n of(null)\n );\n }\n\n public get fieldType(): AbstractControl<ListItem | null> | null {\n return this.form.get('fieldType');\n }\n public get fieldTypeValue$(): Observable<ListItem | null> {\n return this.fieldType?.valueChanges.pipe(startWith(this.fieldType.value)) ?? of(null);\n }\n\n public readonly TaskListSearchFieldDataType = TaskListSearchFieldDataType;\n public readonly TaskListSearchFieldFieldType = TaskListSearchFieldFieldType;\n public readonly TaskListSearchDropdownDataProvider = TaskListSearchDropdownDataProvider;\n\n public get keyValue(): string | null {\n const controlValue = this.form.get('key')?.value;\n\n return !controlValue ? null : controlValue;\n }\n\n public get dataTypeValue(): string | null {\n const controlValue = this.form.get('dataType')?.value;\n this._dataTypeValue$.next(controlValue?.id);\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get fieldTypeValue(): string | null {\n const controlValue = this.form.get('fieldType')?.value;\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get dropdownDataProviderValue(): string | null {\n const controlValue = this.form.get('dropdownDataProvider')?.value;\n this._dropdownProviderValue$.next(controlValue?.id);\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get dropdownValuesArray(): FormArray | null {\n const formArray = this.form.get('dropdownValues');\n\n return !formArray ? null : (formArray as FormArray);\n }\n\n public readonly DROPDOWN_FIELDS: ColumnConfig[] = [\n {\n key: 'key',\n label: 'searchFieldsOverview.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'value',\n label: 'searchFieldsOverview.text',\n viewType: ViewType.TEXT,\n },\n ];\n\n private readonly _dataTypeValue$ = new BehaviorSubject<\n TaskListSearchFieldDataType | null | undefined\n >(null);\n\n private readonly _dropdownProviderValue$ = new BehaviorSubject<\n TaskListSearchDropdownDataProvider | null | undefined\n >(null);\n public readonly dropdownReadonlyItems$ = this._dropdownProviderValue$.pipe(\n distinctUntilChanged(),\n filter(val => !!val && val === TaskListSearchDropdownDataProvider.JSON),\n switchMap((provider: TaskListSearchDropdownDataProvider | null | undefined) =>\n this.documentService.getDropdownData(\n provider ?? '',\n this.caseDefinitionKey$.getValue() ?? '',\n this.keyValue ?? ''\n )\n ),\n map(dropdownData =>\n dropdownData ? Object.entries(dropdownData).map(([key, value]) => ({key, value})) : []\n )\n );\n\n public readonly dataTypeItems$: Observable<ListItem[]> = combineLatest([\n this.dataTypeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeValue]) =>\n [\n {\n content: this.translateService.instant('searchFields.text'),\n id: TaskListSearchFieldDataType.TEXT,\n },\n {\n content: this.translateService.instant('searchFields.boolean'),\n id: TaskListSearchFieldDataType.BOOLEAN,\n },\n {\n content: this.translateService.instant('searchFields.date'),\n id: TaskListSearchFieldDataType.DATE,\n },\n {\n content: this.translateService.instant('searchFields.datetime'),\n id: TaskListSearchFieldDataType.DATETIME,\n },\n {\n content: this.translateService.instant('searchFields.number'),\n id: TaskListSearchFieldDataType.NUMBER,\n },\n {\n content: this.translateService.instant('searchFields.time'),\n id: TaskListSearchFieldDataType.TIME,\n },\n ].map(item => ({...item, selected: item.id === dataTypeValue?.id}))\n )\n );\n\n public readonly fieldTypeItems$: Observable<ListItem[]> = combineLatest([\n this._dataTypeValue$.pipe(distinctUntilChanged()),\n this.fieldTypeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeValue, fieldTypeValue]) =>\n [\n {\n content: this.translateService.instant('searchFieldsOverview.single'),\n id: TaskListSearchFieldFieldType.SINGLE,\n },\n {\n content: this.translateService.instant('searchFieldsOverview.range'),\n id: TaskListSearchFieldFieldType.RANGE,\n },\n ...(dataTypeValue === TaskListSearchFieldDataType.TEXT\n ? [\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.single-select-dropdown'\n ),\n id: TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n },\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.multi-select-dropdown'\n ),\n id: TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n },\n ]\n : []),\n ].map(item => ({...item, selected: item.id === fieldTypeValue?.id}))\n )\n );\n\n public readonly dataProviderItems$: Observable<ListItem[]> = this.translateService\n .stream('key')\n .pipe(\n switchMap(() => this.dropdownDataProviderValue$),\n map(dataProviderValue =>\n [\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.dropdownDatabaseDataProvider'\n ),\n id: TaskListSearchDropdownDataProvider.DATABASE,\n },\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.dropdownJsonFileDataProvider'\n ),\n id: TaskListSearchDropdownDataProvider.JSON,\n },\n ].map(item => ({...item, selected: item.id === dataProviderValue?.id}))\n )\n );\n\n public readonly matchTypeItems$: Observable<ListItem[]> = this.translateService\n .stream('key')\n .pipe(\n switchMap(() => this.matchTypeValue$),\n map(matchTypeValue =>\n [\n {\n content: this.translateService.instant('searchFieldsOverview.like'),\n id: TaskListSearchFieldMatchType.LIKE,\n },\n {\n content: this.translateService.instant('searchFieldsOverview.exact'),\n id: TaskListSearchFieldMatchType.EXACT,\n },\n ].map(item => ({...item, selected: item.id === matchTypeValue?.id}))\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([TrashCan16, InformationFilled16]);\n }\n\n public ngOnInit(): void {\n this.form.setValidators([this.dropdownDataProviderValidator, this.dropdownValuesValidator]);\n }\n\n public addDropdownValue(prefillValue?: {key: string; value: string}): void {\n if (!this.dropdownValuesArray) return;\n\n this.dropdownValuesArray.push(\n this.fb.group({\n key: this.fb.control(prefillValue?.key ?? '', Validators.required),\n value: this.fb.control(prefillValue?.value ?? '', Validators.required),\n })\n );\n }\n\n public removeDropdownValue(index: number): void {\n if (!this.dropdownValuesArray) return;\n\n this.dropdownValuesArray.removeAt(index);\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onSave(): void {\n const groupValue = this.form.getRawValue();\n this.closeEvent.emit({\n ...(groupValue.title && {title: groupValue.title}),\n ...(groupValue.key && {key: groupValue.key}),\n ...(groupValue.path && {path: groupValue.path}),\n ...(groupValue.dataType?.content && {dataType: groupValue.dataType.id}),\n ...(groupValue.matchType?.content && {matchType: groupValue.matchType.id}),\n ...(groupValue.fieldType?.content && {fieldType: groupValue.fieldType.id}),\n ...(groupValue.dropdownDataProvider?.content && {\n dropdownDataProvider: groupValue.dropdownDataProvider.id,\n }),\n ...(groupValue.dropdownValues && {\n dropdownValues: groupValue.dropdownValues.reduce(\n (acc, curr) => ({...acc, ...(!!curr?.key && {[curr.key]: curr.value})}),\n {}\n ),\n }),\n });\n\n this.resetForm();\n }\n\n private setPrefilledForm(prefillData: TaskListSearchField | null): void {\n if (!prefillData) return;\n\n this.form.patchValue({\n ...prefillData,\n dataType: !prefillData.dataType\n ? null\n : {\n content: prefillData.dataType,\n id: prefillData.dataType,\n selected: true,\n },\n matchType: !prefillData.matchType\n ? null\n : {\n content: prefillData.matchType,\n id: prefillData.matchType,\n selected: true,\n },\n fieldType: !prefillData.fieldType\n ? null\n : {\n content: prefillData.fieldType,\n id: prefillData.fieldType,\n selected: true,\n },\n dropdownDataProvider: !prefillData.dropdownDataProvider\n ? null\n : {\n content: prefillData.dropdownDataProvider,\n id: prefillData.dropdownDataProvider,\n selected: true,\n },\n dropdownValues: [],\n });\n\n if (prefillData.dropdownDataProvider && prefillData.dropdownValues)\n this.setPrefilledDropdownValues(prefillData.dropdownValues);\n this.form.get('key')?.disable();\n }\n\n private setPrefilledDropdownValues(dropdownValue: TaskListSearchDropdownValue): void {\n if (!this.dropdownValuesArray || !this.dropdownDataProviderValue) return;\n\n Object.entries(dropdownValue).forEach(([key, value]) => {\n this.addDropdownValue({key, value});\n });\n }\n\n private matchTypeValidator(control: AbstractControl): null | {[key: string]: string} {\n const controlValue: ListItem | undefined = control.value;\n const dataTypeControlValue: ListItem | null | undefined =\n control.parent?.get('dataType')?.value;\n\n if (\n dataTypeControlValue?.id === TaskListSearchFieldDataType.TEXT &&\n (!controlValue || !controlValue.selected)\n )\n return {error: 'Match type not selected'};\n\n return null;\n }\n\n private dropdownDataProviderValidator(group: typeof this.form): ValidationErrors | null {\n const controlValue: ListItem | undefined | null = group.get('dropdownDataProvider')?.value;\n const fieldTypeControlValue: ListItem | null | undefined = group.get('fieldType')?.value;\n\n if (\n [\n TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n ].includes(fieldTypeControlValue?.id) &&\n !controlValue\n )\n return {error: 'Dropdown source provider is not specified'};\n\n return null;\n }\n\n private dropdownValuesValidator(group: typeof this.form): ValidationErrors | null {\n const controlValue: ({key: string; value: string} | null)[] | undefined =\n group.get('dropdownValues')?.value;\n const fieldTypeControlValue = group.get('fieldType')?.value?.id;\n const dropdownProviderValue = group.get('dropdownDataProvider')?.value?.id;\n\n if (\n [\n TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n ].includes(fieldTypeControlValue) &&\n (!controlValue || controlValue?.length === 0) &&\n dropdownProviderValue === TaskListSearchDropdownDataProvider.DATABASE\n )\n return {error: 'Dropdown source provider is not specified or is empty'};\n\n return null;\n }\n\n private resetForm(): void {\n setTimeout(() => {\n while (!!this.dropdownValuesArray?.length) {\n this.dropdownValuesArray.removeAt(0);\n }\n this.form.reset();\n this.form.enable();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<cds-modal [open]=\"open\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ (!prefillData ? 'searchFieldsOverview.add' : 'searchFieldsOverview.edit') | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n cdsModalContent\n [formGroup]=\"form\"\n class=\"valtimo-task-management-search-fields-modal__content\"\n >\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.title' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input-label>\n\n <input\n data-testid=\"task-management-search-title\"\n cdsText\n type=\"text\"\n formControlName=\"title\"\n cdsLayer\n />\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.key' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input-label>\n\n <input\n cdsLayer\n data-testid=\"task-management-search-key\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n />\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n ></valtimo-value-path-selector>\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-dataType\"\n formControlName=\"dataType\"\n >\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dataTypeValue === TaskListSearchFieldDataType.TEXT) {\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-matchType\"\n formControlName=\"matchType\"\n >\n <cds-dropdown-list [items]=\"matchTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n }\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-fieldType\"\n formControlName=\"fieldType\"\n >\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (\n dataTypeValue === TaskListSearchFieldDataType.TEXT &&\n (fieldTypeValue === TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n fieldTypeValue === TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN)\n ) {\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n data-testid=\"task-management-search-dropdownDataProvider\"\n formControlName=\"dropdownDataProvider\"\n cdsLayer\n >\n <cds-dropdown-list [items]=\"dataProviderItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.DATABASE) {\n <div\n class=\"valtimo-task-management-search-fields-modal__list\"\n formArrayName=\"dropdownValues\"\n >\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n [noMargin]=\"true\"\n >\n </v-input-label>\n\n @for (dropdownValue of dropdownValuesArray?.controls; track $index) {\n <form\n [formGroup]=\"dropdownValue\"\n class=\"valtimo-task-management-search-fields-modal__dropdown-values\"\n >\n <cds-text-label>\n {{ 'interface.value' | translate }}\n\n <input\n data-testid=\"task-management-search-dropdownKey\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n cdsLayer\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'interface.display' | translate }}\n\n <input\n data-testid=\"task-management-search-dropdownValue\"\n cdsText\n type=\"text\"\n formControlName=\"value\"\n cdsLayer\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger\"\n data-testid=\"task-management-search-deleteEnum\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n (click)=\"removeDropdownValue($index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n data-testid=\"task-management-search-addDropdownValue\"\n cdsButton=\"primary\"\n (click)=\"addDropdownValue()\"\n >\n {{ 'interface.addRow' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n } @else if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.JSON) {\n <valtimo-carbon-list\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [fields]=\"DROPDOWN_FIELDS\"\n [items]=\"dropdownReadonlyItems$ | async\"\n ></valtimo-carbon-list>\n }\n }\n </form>\n\n <cds-modal-footer>\n <button data-testid=\"task-management-search-cancel\" cdsButton=\"secondary\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-testid=\"task-management-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"form.invalid\"\n (click)=\"onSave()\"\n >\n {{ (!prefillData ? 'interface.create' : 'interface.save') | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n ViewType,\n} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n TaskListSearchDropdownValue,\n TaskListSearchField,\n TaskListSearchFieldFieldType,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {TaskManagementSearchFieldsService} from '../../services';\nimport {TaskManagementSearchFieldsModalComponent} from '../task-management-search-fields-modal/task-management-search-fields-modal.component';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-task-management-search-fields',\n templateUrl: 'task-management-search-fields.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n TaskManagementSearchFieldsModalComponent,\n ConfirmationModalModule,\n ],\n})\nexport class TaskManagementSearchFieldsComponent {\n public readonly caseDefinitionKey$: Observable<string> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n map((params: CaseManagementParams | undefined) => (!params ? '' : params.caseDefinitionKey)),\n tap((caseDefinitionKey: string) =>\n this.searchFieldsService.setCaseDefinitionKey(caseDefinitionKey)\n )\n );\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n public readonly searchFields$: Observable<TaskListSearchField[]> = combineLatest([\n this.caseDefinitionKey$,\n this._refresh$,\n this.trasnlateService.stream('key'),\n ]).pipe(\n switchMap(() => this.searchFieldsService.getTaskListSearchFields()),\n map((searchFields: TaskListSearchField[]) => this.mapTranslations(searchFields))\n );\n\n public readonly fields$: Observable<ColumnConfig[]> = this.trasnlateService.stream('key').pipe(\n map(() => [\n {\n key: 'title',\n label: 'searchFieldsOverview.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'searchFieldsOverview.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'path',\n label: 'searchFieldsOverview.path',\n viewType: ViewType.TEXT,\n },\n {\n key: 'dataTypeTranslation',\n label: 'searchFieldsOverview.dataType',\n viewType: ViewType.TEXT,\n },\n {\n key: 'fieldTypeTranslation',\n label: 'searchFieldsOverview.fieldType',\n viewType: ViewType.TEXT,\n },\n ])\n );\n\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly fieldModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly itemToDelete$ = new BehaviorSubject<TaskListSearchField | null>(null);\n public readonly prefillData$ = new BehaviorSubject<TaskListSearchField | null>(null);\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editField.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.deleteField.bind(this),\n type: 'danger',\n },\n ];\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly searchFieldsService: TaskManagementSearchFieldsService,\n private readonly trasnlateService: TranslateService\n ) {}\n\n public editField(item: TaskListSearchField): void {\n if (!!item.dropdownDataProvider) {\n this.documentService\n .getDropdownData(item.dropdownDataProvider, item.ownerId, item.key)\n .pipe(take(1))\n .subscribe(dropdownValues => {\n item.dropdownValues = dropdownValues as TaskListSearchDropdownValue;\n this.prefillData$.next(item);\n this.fieldModalOpen$.next(true);\n });\n\n return;\n }\n this.prefillData$.next(item);\n this.fieldModalOpen$.next(true);\n }\n\n public onItemsReordered(event): void {\n this.searchFieldsService\n .orderTaskListSearchFields(event)\n .pipe(take(1))\n .subscribe(() => this._refresh$.next(null));\n }\n\n public onAddButtonClick(): void {\n this.fieldModalOpen$.next(true);\n }\n\n public onCloseEvent(\n searchField: TaskListSearchField | null,\n prefillData: TaskListSearchField | null\n ): void {\n this.fieldModalOpen$.next(false);\n this.prefillData$.next(null);\n if (!searchField) return;\n\n const hasDropdownValues: boolean =\n searchField.fieldType === TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n searchField.fieldType === TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN;\n\n (!prefillData\n ? this.searchFieldsService.createTaskListSearchField(searchField)\n : this.searchFieldsService.updateTaskListSearchField(searchField)\n )\n .pipe(\n take(1),\n switchMap((field: TaskListSearchField) => {\n return hasDropdownValues\n ? this.documentService.postDropdownData(\n field.dropdownDataProvider ?? '',\n field.ownerId,\n field.key,\n searchField.dropdownValues ?? {}\n )\n : of(field);\n })\n )\n .subscribe(() => this._refresh$.next(null));\n }\n\n public onDeleteFieldConfirm(item: TaskListSearchField | null): void {\n if (!item) return;\n\n combineLatest([\n this.searchFieldsService.deleteTaskListSearchField(item.key),\n item.dropdownDataProvider\n ? this.documentService.deleteDropdownData(item.dropdownDataProvider, item.ownerId, item.key)\n : of(null),\n ])\n .pipe(take(1))\n .subscribe(() => this._refresh$.next(null));\n }\n\n private deleteField(item: TaskListSearchField): void {\n this.itemToDelete$.next(item);\n this.deleteModalOpen$.next(true);\n }\n\n private mapTranslations(\n searchFields: TaskListSearchField[]\n ): (TaskListSearchField & {dataTypeTranslation: string; fieldTypeTranslation: string})[] {\n return searchFields.map((searchField: TaskListSearchField) => ({\n ...searchField,\n dataTypeTranslation: this.trasnlateService.instant(\n `searchFields.${searchField.dataType.toLowerCase()}`\n ),\n fieldTypeTranslation: this.trasnlateService.instant(\n `searchFieldsOverview.${this.fieldTypeTranslation(searchField.fieldType)}`\n ),\n }));\n }\n\n private fieldTypeTranslation(fieldType: TaskListSearchFieldFieldType): string {\n switch (fieldType) {\n case TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN:\n return 'single-select-dropdown';\n case TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN:\n return 'multi-select-dropdown';\n default:\n return fieldType.toLowerCase();\n }\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 fieldModalOpen: fieldModalOpen$ | async,\n fields: fields$ | async,\n itemToDelete: itemToDelete$ | async,\n prefillData: prefillData$ | async,\n searchFields: searchFields$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"obs.fields\"\n [items]=\"obs.searchFields\"\n [dragAndDrop]=\"true\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editField($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addButton\"\n [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-task-management-search-fields-modal\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [open]=\"obs.fieldModalOpen\"\n [prefillData]=\"obs.prefillData\"\n (closeEvent)=\"onCloseEvent($event, obs.prefillData)\"\n ></valtimo-task-management-search-fields-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n [outputOnConfirm]=\"obs.itemToDelete\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n (confirmEvent)=\"onDeleteFieldConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n <button cdsButton=\"primary\" (click)=\"onAddButtonClick()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.add' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TabsModule} from 'carbon-components-angular';\nimport {TaskManagementTab} from '../../models';\nimport {TaskManagementService} from '../../services';\nimport {TaskManagementColumnsComponent} from '../task-management-columns/task-management-columns.component';\nimport {TaskManagementSearchFieldsComponent} from '../task-management-search-fields/task-management-search-fields.component';\n\n@Component({\n templateUrl: './task-management-detail.component.html',\n styleUrl: './task-management-detail.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n TranslateModule,\n TabsModule,\n TaskManagementColumnsComponent,\n TaskManagementSearchFieldsComponent,\n ],\n providers: [TaskManagementService],\n})\nexport class TaskManagementDetailComponent {\n public readonly activeTab$ = this.taskManagementService.activeTab$;\n\n public readonly TaskManagementTab = TaskManagementTab;\n\n constructor(private readonly taskManagementService: TaskManagementService) {}\n\n public setActiveTab(tab: TaskManagementTab): void {\n this.taskManagementService.setActiveTab(tab);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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@if (activeTab$ | async; as activeTab) {\n <cds-tabs type=\"contained\">\n <cds-tab\n [active]=\"activeTab === TaskManagementTab.COLUMNS\"\n [heading]=\"'taskManagement.columns' | translate\"\n (selected)=\"setActiveTab(TaskManagementTab.COLUMNS)\"\n >\n <valtimo-task-management-columns *ngIf=\"activeTab === TaskManagementTab.COLUMNS\">\n </valtimo-task-management-columns>\n </cds-tab>\n\n <cds-tab\n [active]=\"activeTab === TaskManagementTab.SEARCH_FIELDS\"\n [heading]=\"'taskManagement.searchFields' | translate\"\n (selected)=\"setActiveTab(TaskManagementTab.SEARCH_FIELDS)\"\n >\n <valtimo-task-management-search-fields *ngIf=\"activeTab === TaskManagementTab.SEARCH_FIELDS\">\n </valtimo-task-management-search-fields>\n </cds-tab>\n </cds-tabs>\n}\n","/*\n * Copyright 2015-2025 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 './task-management-column-modal/task-management-column-modal.component';\nexport * from './task-management-columns/task-management-columns.component';\nexport * from './task-management-detail/task-management-detail.component';\nexport * from './task-management-search-fields/task-management-search-fields.component';\n","/*\n * Copyright 2015-2025 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 task\n */\n\nexport * from './lib/components';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.TaskManagementApiService","i4","i5","i3","i6","distinctUntilChanged","i2","i3.TaskManagementSearchFieldsService","i7","i1.TaskManagementService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-task-management.mjs","sources":["../../../../projects/valtimo/task-management/src/lib/models/task-management.model.ts","../../../../projects/valtimo/task-management/src/lib/models/index.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management.service.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management-api.service.ts","../../../../projects/valtimo/task-management/src/lib/services/task-management-search-fields.service.ts","../../../../projects/valtimo/task-management/src/lib/services/index.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-column-modal/task-management-column-modal.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-column-modal/task-management-column-modal.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-columns/task-management-columns.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-columns/task-management-columns.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields/task-management-search-fields.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-search-fields/task-management-search-fields.component.html","../../../../projects/valtimo/task-management/src/lib/components/task-management-detail/task-management-detail.component.ts","../../../../projects/valtimo/task-management/src/lib/components/task-management-detail/task-management-detail.component.html","../../../../projects/valtimo/task-management/src/lib/components/index.ts","../../../../projects/valtimo/task-management/src/public_api.ts","../../../../projects/valtimo/task-management/src/valtimo-task-management.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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\nenum TaskManagementTab {\n COLUMNS = 'columns',\n SEARCH_FIELDS = 'searchFields',\n}\n\nexport {TaskManagementTab};\n","/*\n * Copyright 2015-2025 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 './task-management.model';\n","/*\n * Copyright 2015-2025 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, Observable} from 'rxjs';\nimport {TaskManagementTab} from '../models';\n\n@Injectable()\nexport class TaskManagementService {\n private readonly _activeTab$ = new BehaviorSubject<TaskManagementTab>(TaskManagementTab.COLUMNS);\n\n public get activeTab$(): Observable<TaskManagementTab> {\n return this._activeTab$.asObservable();\n }\n\n public setActiveTab(tab: TaskManagementTab): void {\n this._activeTab$.next(tab);\n }\n}\n","/*\n * Copyright 2015-2025 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 {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {Observable} from 'rxjs';\nimport {TaskListColumn} from '@valtimo/task';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaskManagementApiService extends BaseApiService {\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public getTaskListColumns(caseDefinitionKey: string): Observable<TaskListColumn[]> {\n return this.httpClient.get<TaskListColumn[]>(\n this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column`)\n );\n }\n\n public updateTaskListColumn(\n caseDefinitionKey: string,\n column: TaskListColumn\n ): Observable<TaskListColumn> {\n return this.httpClient.put<TaskListColumn>(\n this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column/${column.key}`),\n column\n );\n }\n\n public deleteTaskListColumn(\n caseDefinitionKey: string,\n columnKey: string\n ): Observable<TaskListColumn> {\n return this.httpClient.delete<TaskListColumn>(\n this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column/${columnKey}`)\n );\n }\n\n public updateTaskListColumnOrder(\n caseDefinitionKey: string,\n columnKeys: string[]\n ): Observable<TaskListColumn[]> {\n return this.httpClient.post<TaskListColumn[]>(\n this.getApiUrl(`/management/v2/case/${caseDefinitionKey}/task-list-column`),\n columnKeys\n );\n }\n\n public swapTaskListColumns(\n caseDefinitionKey: string,\n firstColumn: TaskListColumn,\n secondColumn: TaskListColumn\n ): Observable<TaskListColumn[]> {\n return this.httpClient.post<TaskListColumn[]>(\n this.getApiUrl(`/management/v1/case/${caseDefinitionKey}/task-list-column`),\n {first: firstColumn.key, second: secondColumn.key}\n );\n }\n}\n","/*\n * Copyright 2015-2025 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} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {BaseApiService, ConfigService} from '@valtimo/shared';\nimport {TaskListSearchField} from '@valtimo/task';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TaskManagementSearchFieldsService extends BaseApiService {\n private _caseDefinitionKey: string;\n\n constructor(\n protected readonly httpClient: HttpClient,\n protected readonly configService: ConfigService\n ) {\n super(httpClient, configService);\n }\n\n public setCaseDefinitionKey(caseDefinitionKey: string): void {\n this._caseDefinitionKey = caseDefinitionKey;\n }\n\n public getTaskListSearchFields(): Observable<TaskListSearchField[]> {\n return this.httpClient.get<TaskListSearchField[]>(\n this.getApiUrl(`/v1/search/field/TaskListSearchColumns/${this._caseDefinitionKey}`)\n );\n }\n\n public createTaskListSearchField(\n searchField: TaskListSearchField\n ): Observable<TaskListSearchField> {\n return this.httpClient.post<TaskListSearchField>(\n this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}`),\n {\n ...searchField,\n ownerType: 'TaskListSearchColumns',\n ownerId: this._caseDefinitionKey,\n }\n );\n }\n\n public updateTaskListSearchField(\n searchField: TaskListSearchField\n ): Observable<TaskListSearchField> {\n return this.httpClient.put<TaskListSearchField>(\n this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}/${searchField.key}`),\n {\n ...searchField,\n ownerType: 'TaskListSearchColumns',\n ownerId: this._caseDefinitionKey,\n }\n );\n }\n\n public deleteTaskListSearchField(searchFieldKey: string): Observable<void> {\n return this.httpClient.delete<void>(\n this.getApiUrl(\n `/v1/search/field/TaskListSearchColumns/${this._caseDefinitionKey}/${searchFieldKey}`\n )\n );\n }\n\n public orderTaskListSearchFields(searchFields: TaskListSearchField[]): Observable<any[]> {\n return this.httpClient.put<any[]>(\n this.getApiUrl(`/v1/search/field/${this._caseDefinitionKey}/fields`),\n searchFields\n );\n }\n}\n","/*\n * Copyright 2015-2025 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 './task-management.service';\nexport * from './task-management-api.service';\nexport * from './task-management-search-fields.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 {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {\n CARBON_CONSTANTS,\n CARBON_THEME,\n CarbonListModule,\n CarbonMultiInputModule,\n MultiInputValues,\n TooltipIconModule,\n ValtimoCdsModalDirective,\n ValuePathSelectorComponent,\n ViewType,\n} from '@valtimo/components';\nimport {CommonModule} from '@angular/common';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ButtonModule,\n CheckboxModule,\n DropdownModule,\n InputModule,\n LayerModule,\n ModalModule,\n TabsModule,\n} from 'carbon-components-angular';\nimport {TaskManagementApiService} from '../../services';\nimport {\n AbstractControl,\n FormControl,\n FormGroup,\n FormsModule,\n ReactiveFormsModule,\n Validators,\n} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, map, Observable, of, startWith, tap} from 'rxjs';\nimport {\n TaskListColumn,\n TaskListColumnDefaultSort,\n TaskListColumnEnum,\n TaskListColumnListItem,\n TaskListColumnModalCloseEvent,\n TaskListColumnModalType,\n} from '@valtimo/task';\nimport {distinctUntilChanged} from 'rxjs/operators';\nimport {isEqual} from 'lodash';\n\n@Component({\n selector: 'valtimo-task-management-column-modal',\n templateUrl: './task-management-column-modal.component.html',\n styleUrls: ['./task-management-column-modal.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n TranslateModule,\n TabsModule,\n FormsModule,\n ModalModule,\n CheckboxModule,\n DropdownModule,\n InputModule,\n ReactiveFormsModule,\n TooltipIconModule,\n CarbonMultiInputModule,\n ButtonModule,\n ValtimoCdsModalDirective,\n ValuePathSelectorComponent,\n LayerModule,\n ],\n})\nexport class TaskManagementColumnModalComponent {\n @Input() public carbonTheme: CARBON_THEME = CARBON_THEME.G10;\n @Input() public set taskListColumns(value: TaskListColumn[]) {\n if (value?.length > 0) {\n this._taskListColumns$.next(value);\n }\n }\n @Input() public set type(value: TaskListColumnModalType) {\n this.type$.next(value);\n }\n public get type(): TaskListColumnModalType {\n return this.type$.getValue();\n }\n @Input() public set show(showModal: boolean) {\n this.show$.next(showModal);\n if (showModal) this.enable();\n if (!showModal) this.resetFormAfterTimeout();\n }\n @Input() public caseDefinitionKey!: string;\n @Input() public set selectedTaskListColumn(column: TaskListColumn) {\n if (column) this.prefillForm(column);\n }\n @Output() closeEvent = new EventEmitter<TaskListColumnModalCloseEvent>();\n\n public readonly type$ = new BehaviorSubject<TaskListColumnModalType>('add');\n public readonly isAdd$ = this.type$.pipe(map(type => type === 'add'));\n public readonly isEdit$ = this.type$.pipe(\n map(type => type === 'edit'),\n tap(isEdit => {\n if (isEdit) {\n this.key?.disable();\n } else {\n this.key?.enable();\n }\n })\n );\n public readonly show$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private readonly _taskListColumns$ = new BehaviorSubject<TaskListColumn[]>([]);\n\n public get taskListColumns$(): Observable<TaskListColumn[]> {\n return this._taskListColumns$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n private readonly _INVALID_KEY = 'INVALID_KEY';\n\n private readonly DISPLAY_TYPES: Array<ViewType> = [\n ViewType.TEXT,\n ViewType.DATE,\n ViewType.BOOLEAN,\n ViewType.ENUM,\n ViewType.ARRAY_COUNT,\n ViewType.TAGS,\n ViewType.UNDERSCORES_TO_SPACES,\n ];\n\n private getInvalidListItem = (translateKey: string): TaskListColumnListItem => ({\n content: this.translateService.instant(translateKey),\n key: this._INVALID_KEY,\n selected: true,\n });\n\n private uniqueKeyValidator = (\n keyFormControl: AbstractControl<TaskListColumnListItem>\n ): {notUnique: boolean} | null => {\n const taskListColumns = this._taskListColumns$.getValue();\n\n return !taskListColumns?.find(\n column => column?.key?.trim()?.toLowerCase() === keyFormControl?.value?.trim()?.toLowerCase()\n )\n ? null\n : {notUnique: true};\n };\n\n private listItemValidator = (\n listItemControl: AbstractControl<TaskListColumnListItem>\n ): {invalidItem: boolean} | null =>\n listItemControl?.value?.key && listItemControl.value.key !== this._INVALID_KEY\n ? null\n : {invalidItem: true};\n\n public readonly formGroup = new FormGroup({\n title: new FormControl<string | null>(null),\n key: new FormControl<string | null>(null, [\n this.uniqueKeyValidator.bind(this),\n Validators.required,\n ]),\n path: new FormControl<string | null>(null, Validators.required),\n dateFormat: new FormControl<string | null>(null),\n displayType: new FormControl<TaskListColumnListItem>(\n this.getInvalidListItem(`listColumn.selectDefaultSort`),\n [Validators.required, this.listItemValidator.bind(this)]\n ),\n sortable: new FormControl<boolean>(false),\n defaultSort: new FormControl<TaskListColumnListItem>(\n this.getInvalidListItem(`listColumn.selectDefaultSort`),\n [Validators.required]\n ),\n });\n\n public get title(): AbstractControl<string | null> | null {\n return this.formGroup.get('title');\n }\n public get key(): AbstractControl<string | null> | null {\n return this.formGroup.get('key');\n }\n public get keyValue$(): Observable<string | null> {\n return this.key?.valueChanges.pipe(distinctUntilChanged()) ?? of(null);\n }\n public get path(): AbstractControl<string | null> | null {\n return this.formGroup.get('path');\n }\n public get dateFormat(): AbstractControl<string | null> | null {\n return this.formGroup.get('dateFormat');\n }\n public get displayType(): AbstractControl<TaskListColumnListItem | null> | null {\n return this.formGroup.get('displayType');\n }\n public get sortable(): AbstractControl<boolean | null> | null {\n return this.formGroup.get('sortable');\n }\n public get defaultSort(): AbstractControl<TaskListColumnListItem | null> | null {\n return this.formGroup.get('defaultSort');\n }\n\n private get _SORT_ASC_ITEM() {\n return {\n content: this.translateService.instant(`listColumn.sortableAsc`),\n key: 'ASC',\n } as TaskListColumnListItem;\n }\n private get _SORT_DESC_ITEM() {\n return {\n content: this.translateService.instant(`listColumn.sortableDesc`),\n key: 'DESC',\n } as TaskListColumnListItem;\n }\n public readonly sortItems$: Observable<Array<TaskListColumnListItem>> = combineLatest([\n this.defaultSort?.valueChanges || of(null),\n this.translateService.stream('key'),\n ]).pipe(\n map(([defaultSortItem]) =>\n [\n this.getInvalidListItem(`listColumn.selectDefaultSort`),\n this._SORT_ASC_ITEM,\n this._SORT_DESC_ITEM,\n ].map((item, index) => ({\n ...item,\n selected: defaultSortItem?.key === item?.key,\n }))\n )\n );\n\n public readonly viewTypeItems$: Observable<Array<TaskListColumnListItem>> = combineLatest([\n this.displayType?.valueChanges || of(null),\n this.translateService.stream('key'),\n ]).pipe(\n map(([displayTypeItem]) =>\n [\n {\n content: this.translateService.instant(`listColumnDisplayType.select`),\n key: this._INVALID_KEY,\n },\n ...this.DISPLAY_TYPES.map(type => this.getListItemFromViewType(type)),\n ].map((item, index) => ({\n ...item,\n selected: displayTypeItem?.key === item?.key,\n }))\n )\n );\n\n private _showDateFormat!: boolean;\n public readonly showDateFormat$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])),\n tap(showDateFormat => (this._showDateFormat = showDateFormat))\n );\n\n private _showEnum!: boolean;\n public readonly showEnum$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === ViewType.ENUM)),\n tap(showEnum => {\n this._showEnum = showEnum;\n if ((this._enumValues$.getValue() || []).length === 0) this.resetEnumValues();\n })\n );\n\n private _showYesNo!: boolean;\n public readonly showYesNo$ = this.formGroup.valueChanges.pipe(\n map(formValues => !!(formValues.displayType?.key === ViewType.BOOLEAN)),\n tap(showYesNo => {\n this._showYesNo = showYesNo;\n if ((this._yesNoValues$.getValue() || []).length === 0) this.resetYesNoValues();\n })\n );\n\n public readonly CARBON_THEME_WHITE = CARBON_THEME.WHITE;\n\n private static readonly SORTABLE_PATH_REGEX = /^(doc:|case:|task:)/;\n\n public readonly displaySortable$: Observable<boolean> = (\n this.path?.valueChanges ?? of(this.path?.value)\n ).pipe(\n startWith(this.path?.value),\n map(value =>\n TaskManagementColumnModalComponent.SORTABLE_PATH_REGEX.test(String(value ?? ''))\n ),\n tap(displaySortable => {\n this._displaySortable = displaySortable;\n if (!displaySortable) {\n const sortableValue = this.sortable?.value;\n const defaultSortKey = this.defaultSort?.value?.key;\n if (sortableValue || (defaultSortKey && defaultSortKey !== this._INVALID_KEY)) {\n this.sortable?.setValue(false, {emitEvent: false});\n this.defaultSort?.setValue(this.getInvalidListItem(`listColumn.selectDefaultSort`), {\n emitEvent: false,\n });\n }\n }\n })\n );\n\n private _displaySortable = true;\n\n public readonly disableDefaultSort$ = combineLatest([this.taskListColumns$, this.keyValue$]).pipe(\n map(([taskListColumns, keyValue]) => {\n const defaultSortColumn = taskListColumns.find(\n column =>\n column?.defaultSort === TaskListColumnDefaultSort.ASC ||\n column?.defaultSort === TaskListColumnDefaultSort.DESC\n );\n const defaultSortColumnExists = !!defaultSortColumn;\n const enabled = !defaultSortColumnExists || defaultSortColumn.key === keyValue;\n\n if (enabled) {\n this.defaultSort?.enable();\n } else {\n this.defaultSort?.disable();\n }\n\n return !enabled;\n })\n );\n\n private readonly _DEFAULT_ENUM_VALUES: MultiInputValues = [{key: '', value: ''}];\n\n private readonly _enumValues$ = new BehaviorSubject<MultiInputValues>(this._DEFAULT_ENUM_VALUES);\n\n public get enumValues$(): Observable<MultiInputValues> {\n return this._enumValues$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n public get enumValid$(): Observable<boolean> {\n return this.enumValues$.pipe(map(values => this.getValidEnumValues(values).length > 0));\n }\n\n private readonly _enumInitialValues$ = new BehaviorSubject<MultiInputValues>(\n this._DEFAULT_ENUM_VALUES\n );\n\n public get enumInitialValues$(): Observable<MultiInputValues> {\n return this._enumInitialValues$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n private readonly _yesNoValues$ = new BehaviorSubject<MultiInputValues>(this._DEFAULT_ENUM_VALUES);\n\n public get yesNoValues$(): Observable<MultiInputValues> {\n return this._yesNoValues$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n private readonly _yesNoInitialValues$ = new BehaviorSubject<MultiInputValues>(\n this._DEFAULT_ENUM_VALUES\n );\n\n public get yesNoInitialValues$(): Observable<MultiInputValues> {\n return this._yesNoInitialValues$.pipe(\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n constructor(\n private readonly translateService: TranslateService,\n private readonly taskManagementApiService: TaskManagementApiService\n ) {}\n\n public closeModal(): void {\n this.closeEvent.emit('close');\n }\n\n public save(): void {\n this.disable();\n\n this.taskManagementApiService\n .updateTaskListColumn(\n this.caseDefinitionKey,\n this.getTaskListColumnFromFormValue(this._showEnum, this._showDateFormat, this._showYesNo)\n )\n .subscribe({\n next: () => {\n this.closeModalAndRefresh();\n this.enableAfterTimeout();\n },\n error: () => {\n this.enable();\n },\n });\n }\n\n public enumValueChange(value: MultiInputValues): void {\n this._enumValues$.next(value);\n }\n\n public yesNoValueChange(value: MultiInputValues): void {\n this._yesNoValues$.next(value);\n }\n\n private resetEnumValues(): void {\n this._enumValues$.next(this._DEFAULT_ENUM_VALUES);\n this._enumInitialValues$.next(this._DEFAULT_ENUM_VALUES);\n }\n\n private resetYesNoValues(): void {\n this._yesNoValues$.next(this._DEFAULT_ENUM_VALUES);\n this._yesNoInitialValues$.next(this._DEFAULT_ENUM_VALUES);\n }\n\n private resetFormAfterTimeout(): void {\n setTimeout(() => {\n this.resetForm();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n private resetForm(): void {\n this.resetEnumValues();\n this.resetYesNoValues();\n this.formGroup.reset({\n title: null,\n key: null,\n dateFormat: null,\n displayType: this.getInvalidListItem('listColumnDisplayType.select'),\n sortable: false,\n defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),\n });\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enableAfterTimeout(): void {\n setTimeout(() => {\n this.enable();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private closeModalAndRefresh(): void {\n this.closeEvent.emit('refresh');\n }\n\n private getTaskListColumnFromFormValue(\n includeEnum: boolean,\n includeDateFormat: boolean,\n includeYesNo: boolean\n ): TaskListColumn {\n const validEnumValues = this.getValidEnumValues(this._enumValues$.getValue());\n const mappedEnumValues =\n validEnumValues && validEnumValues.length > 0 && this.mapEnumValues(validEnumValues);\n const validYesNoValues = this.getValidEnumValues(this._yesNoValues$.getValue());\n const mappedYesNoValues =\n validYesNoValues && validYesNoValues.length > 0 && this.mapEnumValues(validYesNoValues);\n\n const formValue = this.formGroup.getRawValue();\n const taskListColumn: TaskListColumn = {\n title: formValue?.title ?? '',\n key: formValue.key ?? '',\n path: formValue.path ?? '',\n displayType: {\n type: formValue?.displayType?.key ?? '',\n displayTypeParameters: {\n ...(!!includeDateFormat && {dateFormat: formValue.dateFormat ?? ''}),\n ...(includeEnum && mappedEnumValues && {enum: mappedEnumValues}),\n ...(includeYesNo && mappedYesNoValues && {enum: mappedYesNoValues}),\n },\n },\n sortable: this._displaySortable ? formValue.sortable ?? false : false,\n ...(this._displaySortable &&\n formValue?.defaultSort?.key !== this._INVALID_KEY && {\n defaultSort: formValue?.defaultSort?.key as TaskListColumnDefaultSort,\n }),\n };\n\n return taskListColumn;\n }\n\n private mapEnumValues(enumValues: MultiInputValues): TaskListColumnEnum {\n return enumValues.reduce((acc, curr) => ({...acc, [curr?.key ?? '']: curr.value}), {});\n }\n\n private getValidEnumValues(values: MultiInputValues): MultiInputValues {\n return (values || []).filter(value => value.value && value.key);\n }\n\n private getListItemFromViewType(viewType: ViewType | string): TaskListColumnListItem {\n return {\n content: this.translateService.instant(`listColumnDisplayType.${viewType}`),\n key: viewType,\n } as TaskListColumnListItem;\n }\n\n private getMultiInputValuesFromTaskListColumnEnum(\n taskListColumnEnum: TaskListColumnEnum\n ): MultiInputValues {\n return Object.keys(taskListColumnEnum).reduce(\n (acc, curr) => [...acc, {key: curr, value: taskListColumnEnum[curr]}],\n [] as MultiInputValues\n );\n }\n\n private prefillForm(column: TaskListColumn): void {\n if (\n column?.displayType?.type === ViewType.ENUM &&\n column?.displayType?.displayTypeParameters?.enum\n ) {\n const prefilledEnum = this.getMultiInputValuesFromTaskListColumnEnum(\n column.displayType.displayTypeParameters.enum\n );\n this._enumValues$.next(prefilledEnum);\n this._enumInitialValues$.next(prefilledEnum);\n }\n\n if (\n column?.displayType?.type === ViewType.BOOLEAN &&\n column?.displayType?.displayTypeParameters?.enum\n ) {\n const prefilledYesNo = this.getMultiInputValuesFromTaskListColumnEnum(\n column.displayType.displayTypeParameters.enum\n );\n this._yesNoValues$.next(prefilledYesNo);\n this._yesNoInitialValues$.next(prefilledYesNo);\n }\n\n this.formGroup.patchValue({\n key: column.key,\n path: column.path,\n sortable: column.sortable,\n displayType: this.getListItemFromViewType(column.displayType.type),\n ...(column.title && {title: column.title}),\n ...(!column.defaultSort && {\n defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),\n }),\n ...(column.defaultSort === 'ASC' && {defaultSort: this._SORT_ASC_ITEM}),\n ...(column.defaultSort === 'DESC' && {defaultSort: this._SORT_DESC_ITEM}),\n ...(column.displayType?.type === ViewType.DATE && {\n dateFormat: column.displayType?.displayTypeParameters?.dateFormat,\n }),\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 show: show$ | async,\n type: type$ | async,\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n disabled: disabled$ | async,\n showDateFormat: showDateFormat$ | async,\n showEnum: showEnum$ | async,\n showYesNo: showYesNo$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n enumInitialValues: enumInitialValues$ | async,\n enumValid: enumValid$ | async,\n yesNoInitialValues: yesNoInitialValues$ | async,\n viewTypeItems: viewTypeItems$ | async,\n sortItems: sortItems$ | async,\n displaySortable: displaySortable$ | async,\n } as obs\"\n>\n <cds-modal size=\"sm\" [open]=\"obs.show\" valtimoCdsModal (close)=\"closeModal()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n obs.type === 'add'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <form cdsModalContent [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText cdsLayer formControlName=\"title\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [invalid]=\"key?.touched && key?.invalid\"\n [disabled]=\"obs.disabled || obs.isEdit\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText cdsLayer formControlName=\"key\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"caseDefinitionKey\"\n ></valtimo-value-path-selector>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n *ngIf=\"obs.viewTypeItems\"\n cdsLayer\n formControlName=\"displayType\"\n [disabled]=\"obs.disabled\"\n >\n <cds-dropdown-list [items]=\"obs.viewTypeItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showDateFormat\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText cdsLayer formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showEnum\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showEnum\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.enumInitialValues\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showYesNo\" [ngClass]=\"'no-margin'\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitleOptional' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltipOptional' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showYesNo\"\n [fullWidth]=\"true\"\n [defaultValues]=\"obs.yesNoInitialValues\"\n type=\"keyValue\"\n [hideAddButton]=\"true\"\n [hideDeleteButton]=\"true\"\n [maxRows]=\"1\"\n [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n (valueChange)=\"yesNoValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.displaySortable\">\n <cds-checkbox formControlName=\"sortable\" [disabled]=\"obs.disabled\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.displaySortable\">\n <cds-label [disabled]=\"obs.disabled || obs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n formControlName=\"defaultSort\"\n [disabled]=\"obs.disabled\"\n cdsLayer\n *ngIf=\"obs.sortItems\"\n >\n <cds-dropdown-list [items]=\"obs.sortItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n\n <cds-modal-footer>\n <button (click)=\"closeModal()\" cdsButton=\"secondary\" [disabled]=\"obs.disabled\">\n {{ 'listColumn.close' | translate }}\n </button>\n\n <button\n (click)=\"save()\"\n cdsButton=\"primary\"\n [disabled]=\"obs.disabled || formGroup.invalid || (obs.showEnum && !obs.enumValid)\"\n >\n {{ (obs.type === 'add' ? 'interface.create' : 'listColumn.save') | translate }}\n </button>\n </cds-modal-footer>\n </cds-modal>\n</ng-container>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CARBON_CONSTANTS,\n CARBON_THEME,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n MoveRowDirection,\n MoveRowEvent,\n} from '@valtimo/components';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\nimport {\n TaskListColumn,\n TaskListColumnDisplayTypeParameters,\n TaskListColumnModalCloseEvent,\n TaskListColumnModalType,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule, TabsModule} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, Subject, switchMap, take, tap} from 'rxjs';\nimport {TaskManagementApiService, TaskManagementService} from '../../services';\nimport {TaskManagementColumnModalComponent} from '../task-management-column-modal/task-management-column-modal.component';\n\n@Component({\n selector: 'valtimo-task-management-columns',\n templateUrl: './task-management-columns.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n TranslateModule,\n TabsModule,\n TaskManagementColumnModalComponent,\n ButtonModule,\n IconModule,\n ConfirmationModalModule,\n ],\n providers: [TaskManagementService],\n})\nexport class TaskManagementColumnsComponent {\n @Input() public carbonTheme: CARBON_THEME = CARBON_THEME.G10;\n\n private readonly _refreshColumns$ = new BehaviorSubject<null | 'noAnimation'>(null);\n\n public readonly caseDefinitionKey$: Observable<string> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n map((params: CaseManagementParams | undefined) => (!params ? '' : params.caseDefinitionKey))\n );\n\n public readonly loadingColumns$ = new BehaviorSubject<boolean>(true);\n\n public readonly selectedTaskListColumn$ = new Subject<TaskListColumn | null>();\n\n public readonly cachedTaskListColumns$ = new BehaviorSubject<TaskListColumn[]>([]);\n\n public readonly taskListColumns$: Observable<TaskListColumn[]> = combineLatest([\n this.caseDefinitionKey$,\n this._refreshColumns$,\n this.translateService.stream('key'),\n ]).pipe(\n tap(([_, refresh]) => {\n if (refresh !== 'noAnimation') this.loadingColumns$.next(true);\n }),\n switchMap(([caseDefinitionKey]) =>\n this.taskManagementApiService.getTaskListColumns(caseDefinitionKey)\n ),\n tap(columns => {\n this.cachedTaskListColumns$.next(columns);\n }),\n map(columns =>\n columns.map(column => ({\n ...column,\n title: column.title || '-',\n sortable: column.sortable\n ? this.translateService.instant('listColumn.sortableYes')\n : this.translateService.instant('listColumn.sortableNo'),\n defaultSort:\n (column.defaultSort === 'ASC' &&\n this.translateService.instant('listColumn.sortableAsc')) ||\n (column.defaultSort === 'DESC' &&\n this.translateService.instant('listColumn.sortableDesc')) ||\n '-',\n displayType: this.translateService.instant(\n `listColumnDisplayType.${column?.displayType?.type}`\n ),\n displayTypeParameters: this.getDisplayTypeParametersView(\n column?.displayType?.displayTypeParameters\n ),\n }))\n ),\n tap(() => {\n this.enable();\n this.loadingColumns$.next(false);\n })\n );\n\n public readonly showDeleteModal$ = new Subject<boolean>();\n public readonly deleteColumnKey$ = new BehaviorSubject<string>('');\n\n public readonly disabled$ = new BehaviorSubject<boolean>(true);\n\n public readonly fields: Array<ColumnConfig> = [\n {\n viewType: 'string',\n sortable: false,\n key: 'title',\n label: 'listColumn.title',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'key',\n label: 'listColumn.key',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'path',\n label: 'listColumn.path',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayType',\n label: 'listColumn.displayType',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'displayTypeParameters',\n label: 'listColumn.displayTypeParameters',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'sortable',\n label: 'listColumn.sortable',\n },\n {\n viewType: 'string',\n sortable: false,\n key: 'defaultSort',\n label: 'listColumn.defaultSort',\n },\n ];\n\n public readonly actionItems: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editColumn.bind(this),\n },\n {\n label: 'interface.delete',\n callback: this.deleteColumn.bind(this),\n type: 'danger',\n },\n ];\n\n public readonly modalType$ = new Subject<TaskListColumnModalType>();\n public readonly showModal$ = new Subject<boolean>();\n\n constructor(\n private readonly route: ActivatedRoute,\n private readonly taskManagementApiService: TaskManagementApiService,\n private readonly translateService: TranslateService\n ) {}\n\n public refreshColumns(noAnimation = false): void {\n this._refreshColumns$.next(noAnimation ? 'noAnimation' : null);\n }\n\n public deleteColumn(taskListColumn: TaskListColumn): void {\n this.showDeleteModal$.next(true);\n this.deleteColumnKey$.next(taskListColumn.key);\n }\n\n public onItemsReordered(reorderedItems: TaskListColumn[], caseDefinitionKey: string): void {\n this.disable();\n\n this.taskManagementApiService\n .updateTaskListColumnOrder(\n caseDefinitionKey,\n reorderedItems.map((column: TaskListColumn) => column.key)\n )\n .subscribe({\n next: () => {\n this.refreshColumns(true);\n },\n error: () => this.enable(),\n });\n }\n\n public editColumn(columnItem: TaskListColumn): void {\n this.cachedTaskListColumns$.pipe(take(1)).subscribe(cachedTaskListColumns => {\n const selectedTaskListColumn = cachedTaskListColumns.find(\n column => column.key === columnItem.key\n );\n\n this.selectedTaskListColumn$.next(selectedTaskListColumn ?? null);\n this.showModal('edit');\n });\n }\n\n public showModal(type: TaskListColumnModalType): void {\n this.modalType$.next(type);\n this.showModal$.next(true);\n }\n\n public onModalCloseEvent(event: TaskListColumnModalCloseEvent): void {\n this.showModal$.next(false);\n\n if (event === 'refresh') {\n this.disable();\n this.refreshColumns();\n }\n\n setTimeout(() => {\n this.clearSelectedTaskListColumn();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public deleteColumnConfirmation(columnKey: string, caseDefinitionKey: string): void {\n this.disable();\n\n this.taskManagementApiService.deleteTaskListColumn(caseDefinitionKey, columnKey).subscribe({\n next: () => {\n this.refreshColumns(true);\n },\n error: () => this.enable(),\n });\n }\n\n private getDisplayTypeParametersView(\n displayTypeParameters: TaskListColumnDisplayTypeParameters | undefined\n ): string {\n if (!displayTypeParameters) return '-';\n\n if (displayTypeParameters?.dateFormat) {\n return displayTypeParameters.dateFormat;\n } else if (displayTypeParameters?.enum) {\n return Object.keys(displayTypeParameters.enum).reduce((acc, curr) => {\n const keyValuePairString = `${curr}: ${displayTypeParameters?.enum?.[curr]}`;\n\n if (!acc) return `${keyValuePairString}`;\n\n return `${acc}, ${keyValuePairString}`;\n }, '');\n }\n\n return '-';\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n\n private clearSelectedTaskListColumn(): void {\n this.selectedTaskListColumn$.next(null);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 taskListColumns: taskListColumns$ | async,\n cachedTaskListColumns: cachedTaskListColumns$ | async,\n caseDefinitionKey: caseDefinitionKey$ | async,\n loadingColumns: loadingColumns$ | async,\n modalType: modalType$ | async,\n showModal: showModal$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [items]=\"obs.taskListColumns\"\n [loading]=\"obs.loadingColumns\"\n [fields]=\"fields\"\n [header]=\"false\"\n [dragAndDrop]=\"true\"\n (rowClicked)=\"editColumn($event)\"\n (itemsReordered)=\"onItemsReordered($event, obs.caseDefinitionKey)\"\n >\n <ng-container carbonToolbarContent [ngTemplateOutlet]=\"addButton\"></ng-container>\n\n <valtimo-no-results\n [action]=\"addButton\"\n [title]=\"'listColumn.noConfigWarningTitle' | translate\"\n [description]=\"'listColumn.noConfigWarning' | translate\"\n illustration=\"valtimo-layout/img/emptystate-empty.svg\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-task-management-column-modal\n [taskListColumns]=\"obs.cachedTaskListColumns\"\n [type]=\"obs.modalType\"\n [show]=\"obs.showModal\"\n [caseDefinitionKey]=\"obs.caseDefinitionKey\"\n [selectedTaskListColumn]=\"selectedTaskListColumn$ | async\"\n (closeEvent)=\"onModalCloseEvent($event)\"\n ></valtimo-task-management-column-modal>\n\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteColumnKey$ | async\"\n (confirmEvent)=\"deleteColumnConfirmation($event, obs.caseDefinitionKey)\"\n confirmButtonTextTranslationKey=\"listColumn.deleteColumn\"\n titleTranslationKey=\"listColumn.deleteColumn\"\n contentTranslationKey=\"listColumn.deleteColumnConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n <button\n carbonToolbarContent\n cdsButton=\"primary\"\n [disabled]=\"disabled$ | async\"\n (click)=\"showModal('add')\"\n >\n {{ 'listColumn.addButtonText' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n ReactiveFormsModule,\n ValidationErrors,\n Validators,\n} from '@angular/forms';\nimport {InformationFilled16, TrashCan16} from '@carbon/icons';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n CarbonListModule,\n ColumnConfig,\n InputLabelModule,\n ValuePathSelectorComponent,\n ValuePathSelectorPrefix,\n ViewType,\n} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n TaskListSearchDropdownDataProvider,\n TaskListSearchDropdownValue,\n TaskListSearchField,\n TaskListSearchFieldDataType,\n TaskListSearchFieldFieldType,\n TaskListSearchFieldMatchType,\n} from '@valtimo/task';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n LayerModule,\n ListItem,\n ModalModule,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n filter,\n map,\n Observable,\n of,\n startWith,\n switchMap,\n} from 'rxjs';\n\n@Component({\n selector: 'valtimo-task-management-search-fields-modal',\n templateUrl: './task-management-search-fields-modal.component.html',\n styleUrl: './task-management-search-fields-modal.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DropdownModule,\n InputModule,\n ModalModule,\n ReactiveFormsModule,\n IconModule,\n CarbonListModule,\n InputLabelModule,\n ValuePathSelectorComponent,\n LayerModule,\n ],\n})\nexport class TaskManagementSearchFieldsModalComponent implements OnInit {\n @Input({required: true}) open: boolean;\n\n public readonly caseDefinitionKey$ = new BehaviorSubject<string>('');\n @Input({required: true}) public set caseDefinitionKey(value: string) {\n this.caseDefinitionKey$.next(value);\n }\n\n private _prefillData: TaskListSearchField | null;\n @Input() public set prefillData(value: TaskListSearchField | null) {\n this._prefillData = value;\n this.setPrefilledForm(value);\n }\n public get prefillData(): TaskListSearchField | null {\n return this._prefillData;\n }\n @Output() closeEvent = new EventEmitter<Partial<TaskListSearchField> | null>();\n\n public readonly form = this.fb.group({\n key: this.fb.control<string>('', Validators.required),\n title: this.fb.control<string>('', Validators.required),\n path: this.fb.control<string>('', Validators.required),\n dataType: this.fb.control<ListItem | null>(null, Validators.required),\n matchType: this.fb.control<ListItem | null>(null, this.matchTypeValidator),\n fieldType: this.fb.control<ListItem | null>(null, Validators.required),\n dropdownDataProvider: this.fb.control<ListItem | null>(null),\n dropdownValues: this.fb.array<{key: string; value: string}>([]),\n });\n\n public get dataType(): AbstractControl<ListItem | null> | null {\n return this.form.get('dataType');\n }\n public get dataTypeValue$(): Observable<ListItem | null> {\n return this.dataType?.valueChanges.pipe(startWith(this.dataType.value)) ?? of(null);\n }\n\n public get matchType(): AbstractControl<ListItem | null> | null {\n return this.form.get('matchType');\n }\n public get matchTypeValue$(): Observable<ListItem | null> {\n return this.matchType?.valueChanges.pipe(startWith(this.matchType.value)) ?? of(null);\n }\n\n public get dropdownDataProvider(): AbstractControl<ListItem | null> | null {\n return this.form.get('dropdownDataProvider');\n }\n\n public get dropdownDataProviderValue$(): Observable<ListItem | null> {\n return (\n this.dropdownDataProvider?.valueChanges.pipe(startWith(this.dropdownDataProvider.value)) ??\n of(null)\n );\n }\n\n public get fieldType(): AbstractControl<ListItem | null> | null {\n return this.form.get('fieldType');\n }\n public get fieldTypeValue$(): Observable<ListItem | null> {\n return this.fieldType?.valueChanges.pipe(startWith(this.fieldType.value)) ?? of(null);\n }\n\n public readonly TaskListSearchFieldDataType = TaskListSearchFieldDataType;\n public readonly TaskListSearchFieldFieldType = TaskListSearchFieldFieldType;\n public readonly TaskListSearchDropdownDataProvider = TaskListSearchDropdownDataProvider;\n\n public get keyValue(): string | null {\n const controlValue = this.form.get('key')?.value;\n\n return !controlValue ? null : controlValue;\n }\n\n public get dataTypeValue(): string | null {\n const controlValue = this.form.get('dataType')?.value;\n this._dataTypeValue$.next(controlValue?.id);\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get fieldTypeValue(): string | null {\n const controlValue = this.form.get('fieldType')?.value;\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get dropdownDataProviderValue(): string | null {\n const controlValue = this.form.get('dropdownDataProvider')?.value;\n this._dropdownProviderValue$.next(controlValue?.id);\n\n return !controlValue ? null : controlValue.id;\n }\n\n public get dropdownValuesArray(): FormArray | null {\n const formArray = this.form.get('dropdownValues');\n\n return !formArray ? null : (formArray as FormArray);\n }\n\n public readonly DROPDOWN_FIELDS: ColumnConfig[] = [\n {\n key: 'key',\n label: 'searchFieldsOverview.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'value',\n label: 'searchFieldsOverview.text',\n viewType: ViewType.TEXT,\n },\n ];\n\n private readonly _dataTypeValue$ = new BehaviorSubject<\n TaskListSearchFieldDataType | null | undefined\n >(null);\n\n private readonly _dropdownProviderValue$ = new BehaviorSubject<\n TaskListSearchDropdownDataProvider | null | undefined\n >(null);\n public readonly dropdownReadonlyItems$ = this._dropdownProviderValue$.pipe(\n distinctUntilChanged(),\n filter(val => !!val && val === TaskListSearchDropdownDataProvider.JSON),\n switchMap((provider: TaskListSearchDropdownDataProvider | null | undefined) =>\n this.documentService.getDropdownData(\n provider ?? '',\n this.caseDefinitionKey$.getValue() ?? '',\n this.keyValue ?? ''\n )\n ),\n map(dropdownData =>\n dropdownData ? Object.entries(dropdownData).map(([key, value]) => ({key, value})) : []\n )\n );\n\n public readonly dataTypeItems$: Observable<ListItem[]> = combineLatest([\n this.dataTypeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeValue]) =>\n [\n {\n content: this.translateService.instant('searchFields.text'),\n id: TaskListSearchFieldDataType.TEXT,\n },\n {\n content: this.translateService.instant('searchFields.boolean'),\n id: TaskListSearchFieldDataType.BOOLEAN,\n },\n {\n content: this.translateService.instant('searchFields.date'),\n id: TaskListSearchFieldDataType.DATE,\n },\n {\n content: this.translateService.instant('searchFields.datetime'),\n id: TaskListSearchFieldDataType.DATETIME,\n },\n {\n content: this.translateService.instant('searchFields.number'),\n id: TaskListSearchFieldDataType.NUMBER,\n },\n {\n content: this.translateService.instant('searchFields.time'),\n id: TaskListSearchFieldDataType.TIME,\n },\n ].map(item => ({...item, selected: item.id === dataTypeValue?.id}))\n )\n );\n\n public readonly fieldTypeItems$: Observable<ListItem[]> = combineLatest([\n this._dataTypeValue$.pipe(distinctUntilChanged()),\n this.fieldTypeValue$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([dataTypeValue, fieldTypeValue]) =>\n [\n {\n content: this.translateService.instant('searchFieldsOverview.single'),\n id: TaskListSearchFieldFieldType.SINGLE,\n },\n {\n content: this.translateService.instant('searchFieldsOverview.range'),\n id: TaskListSearchFieldFieldType.RANGE,\n },\n ...(dataTypeValue === TaskListSearchFieldDataType.TEXT\n ? [\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.single-select-dropdown'\n ),\n id: TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n },\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.multi-select-dropdown'\n ),\n id: TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n },\n ]\n : []),\n ].map(item => ({...item, selected: item.id === fieldTypeValue?.id}))\n )\n );\n\n public readonly dataProviderItems$: Observable<ListItem[]> = this.translateService\n .stream('key')\n .pipe(\n switchMap(() => this.dropdownDataProviderValue$),\n map(dataProviderValue =>\n [\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.dropdownDatabaseDataProvider'\n ),\n id: TaskListSearchDropdownDataProvider.DATABASE,\n },\n {\n content: this.translateService.instant(\n 'searchFieldsOverview.dropdownJsonFileDataProvider'\n ),\n id: TaskListSearchDropdownDataProvider.JSON,\n },\n ].map(item => ({...item, selected: item.id === dataProviderValue?.id}))\n )\n );\n\n public readonly matchTypeItems$: Observable<ListItem[]> = this.translateService\n .stream('key')\n .pipe(\n switchMap(() => this.matchTypeValue$),\n map(matchTypeValue =>\n [\n {\n content: this.translateService.instant('searchFieldsOverview.like'),\n id: TaskListSearchFieldMatchType.LIKE,\n },\n {\n content: this.translateService.instant('searchFieldsOverview.exact'),\n id: TaskListSearchFieldMatchType.EXACT,\n },\n ].map(item => ({...item, selected: item.id === matchTypeValue?.id}))\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly iconService: IconService,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {\n this.iconService.registerAll([TrashCan16, InformationFilled16]);\n }\n\n public ngOnInit(): void {\n this.form.setValidators([this.dropdownDataProviderValidator, this.dropdownValuesValidator]);\n }\n\n public addDropdownValue(prefillValue?: {key: string; value: string}): void {\n if (!this.dropdownValuesArray) return;\n\n this.dropdownValuesArray.push(\n this.fb.group({\n key: this.fb.control(prefillValue?.key ?? '', Validators.required),\n value: this.fb.control(prefillValue?.value ?? '', Validators.required),\n })\n );\n }\n\n public removeDropdownValue(index: number): void {\n if (!this.dropdownValuesArray) return;\n\n this.dropdownValuesArray.removeAt(index);\n }\n\n public onCancel(): void {\n this.closeEvent.emit(null);\n this.resetForm();\n }\n\n public onSave(): void {\n const groupValue = this.form.getRawValue();\n this.closeEvent.emit({\n ...(groupValue.title && {title: groupValue.title}),\n ...(groupValue.key && {key: groupValue.key}),\n ...(groupValue.path && {path: groupValue.path}),\n ...(groupValue.dataType?.content && {dataType: groupValue.dataType.id}),\n ...(groupValue.matchType?.content && {matchType: groupValue.matchType.id}),\n ...(groupValue.fieldType?.content && {fieldType: groupValue.fieldType.id}),\n ...(groupValue.dropdownDataProvider?.content && {\n dropdownDataProvider: groupValue.dropdownDataProvider.id,\n }),\n ...(groupValue.dropdownValues && {\n dropdownValues: groupValue.dropdownValues.reduce(\n (acc, curr) => ({...acc, ...(!!curr?.key && {[curr.key]: curr.value})}),\n {}\n ),\n }),\n });\n\n this.resetForm();\n }\n\n private setPrefilledForm(prefillData: TaskListSearchField | null): void {\n if (!prefillData) return;\n\n this.form.patchValue({\n ...prefillData,\n dataType: !prefillData.dataType\n ? null\n : {\n content: prefillData.dataType,\n id: prefillData.dataType,\n selected: true,\n },\n matchType: !prefillData.matchType\n ? null\n : {\n content: prefillData.matchType,\n id: prefillData.matchType,\n selected: true,\n },\n fieldType: !prefillData.fieldType\n ? null\n : {\n content: prefillData.fieldType,\n id: prefillData.fieldType,\n selected: true,\n },\n dropdownDataProvider: !prefillData.dropdownDataProvider\n ? null\n : {\n content: prefillData.dropdownDataProvider,\n id: prefillData.dropdownDataProvider,\n selected: true,\n },\n dropdownValues: [],\n });\n\n if (prefillData.dropdownDataProvider && prefillData.dropdownValues)\n this.setPrefilledDropdownValues(prefillData.dropdownValues);\n this.form.get('key')?.disable();\n }\n\n private setPrefilledDropdownValues(dropdownValue: TaskListSearchDropdownValue): void {\n if (!this.dropdownValuesArray || !this.dropdownDataProviderValue) return;\n\n Object.entries(dropdownValue).forEach(([key, value]) => {\n this.addDropdownValue({key, value});\n });\n }\n\n private matchTypeValidator(control: AbstractControl): null | {[key: string]: string} {\n const controlValue: ListItem | undefined = control.value;\n const dataTypeControlValue: ListItem | null | undefined =\n control.parent?.get('dataType')?.value;\n\n if (\n dataTypeControlValue?.id === TaskListSearchFieldDataType.TEXT &&\n (!controlValue || !controlValue.selected)\n )\n return {error: 'Match type not selected'};\n\n return null;\n }\n\n private dropdownDataProviderValidator(group: typeof this.form): ValidationErrors | null {\n const controlValue: ListItem | undefined | null = group.get('dropdownDataProvider')?.value;\n const fieldTypeControlValue: ListItem | null | undefined = group.get('fieldType')?.value;\n\n if (\n [\n TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n ].includes(fieldTypeControlValue?.id) &&\n !controlValue\n )\n return {error: 'Dropdown source provider is not specified'};\n\n return null;\n }\n\n private dropdownValuesValidator(group: typeof this.form): ValidationErrors | null {\n const controlValue: ({key: string; value: string} | null)[] | undefined =\n group.get('dropdownValues')?.value;\n const fieldTypeControlValue = group.get('fieldType')?.value?.id;\n const dropdownProviderValue = group.get('dropdownDataProvider')?.value?.id;\n\n if (\n [\n TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN,\n TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN,\n ].includes(fieldTypeControlValue) &&\n (!controlValue || controlValue?.length === 0) &&\n dropdownProviderValue === TaskListSearchDropdownDataProvider.DATABASE\n )\n return {error: 'Dropdown source provider is not specified or is empty'};\n\n return null;\n }\n\n private resetForm(): void {\n setTimeout(() => {\n while (!!this.dropdownValuesArray?.length) {\n this.dropdownValuesArray.removeAt(0);\n }\n this.form.reset();\n this.form.enable();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<cds-modal [open]=\"open\" showFooter=\"true\" (close)=\"onCancel()\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCancel()\">\n <h3 cdsModalHeaderHeading>\n {{ (!prefillData ? 'searchFieldsOverview.add' : 'searchFieldsOverview.edit') | translate }}\n </h3>\n </cds-modal-header>\n\n <form\n cdsModalContent\n [formGroup]=\"form\"\n class=\"valtimo-task-management-search-fields-modal__content\"\n >\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.title' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n >\n </v-input-label>\n\n <input\n data-testid=\"task-management-search-title\"\n cdsText\n type=\"text\"\n formControlName=\"title\"\n cdsLayer\n />\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.key' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n >\n </v-input-label>\n\n <input\n cdsLayer\n data-testid=\"task-management-search-key\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n />\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.path' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.path' | translate\"\n >\n </v-input-label>\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n ></valtimo-value-path-selector>\n </div>\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dataType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-dataType\"\n formControlName=\"dataType\"\n >\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dataTypeValue === TaskListSearchFieldDataType.TEXT) {\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.matchType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.matchType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-matchType\"\n formControlName=\"matchType\"\n >\n <cds-dropdown-list [items]=\"matchTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n }\n\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.fieldType' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n cdsLayer\n data-testid=\"task-management-search-fieldType\"\n formControlName=\"fieldType\"\n >\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (\n dataTypeValue === TaskListSearchFieldDataType.TEXT &&\n (fieldTypeValue === TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n fieldTypeValue === TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN)\n ) {\n <div class=\"valtimo-task-management-search-fields-modal__input\">\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownDataProvider' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownDataProvider' | translate\"\n >\n </v-input-label>\n\n <cds-dropdown\n data-testid=\"task-management-search-dropdownDataProvider\"\n formControlName=\"dropdownDataProvider\"\n cdsLayer\n >\n <cds-dropdown-list [items]=\"dataProviderItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.DATABASE) {\n <div\n class=\"valtimo-task-management-search-fields-modal__list\"\n formArrayName=\"dropdownValues\"\n >\n <v-input-label\n [title]=\"'searchFieldsOverview.dropdownListValues' | translate\"\n [tooltip]=\"'searchFieldsOverviewTooltips.dropdownListValues' | translate\"\n [noMargin]=\"true\"\n >\n </v-input-label>\n\n @for (dropdownValue of dropdownValuesArray?.controls; track $index) {\n <form\n [formGroup]=\"dropdownValue\"\n class=\"valtimo-task-management-search-fields-modal__dropdown-values\"\n >\n <cds-text-label>\n {{ 'interface.value' | translate }}\n\n <input\n data-testid=\"task-management-search-dropdownKey\"\n cdsText\n type=\"text\"\n formControlName=\"key\"\n cdsLayer\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'interface.display' | translate }}\n\n <input\n data-testid=\"task-management-search-dropdownValue\"\n cdsText\n type=\"text\"\n formControlName=\"value\"\n cdsLayer\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger\"\n data-testid=\"task-management-search-deleteEnum\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n (click)=\"removeDropdownValue($index)\"\n >\n <svg cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n data-testid=\"task-management-search-addDropdownValue\"\n cdsButton=\"primary\"\n (click)=\"addDropdownValue()\"\n >\n {{ 'interface.addRow' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n } @else if (dropdownDataProviderValue === TaskListSearchDropdownDataProvider.JSON) {\n <valtimo-carbon-list\n [header]=\"false\"\n [hideToolbar]=\"true\"\n [fields]=\"DROPDOWN_FIELDS\"\n [items]=\"dropdownReadonlyItems$ | async\"\n ></valtimo-carbon-list>\n }\n }\n </form>\n\n <cds-modal-footer>\n <button data-testid=\"task-management-search-cancel\" cdsButton=\"secondary\" (click)=\"onCancel()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n data-testid=\"task-management-search-save\"\n cdsButton=\"primary\"\n [disabled]=\"form.invalid\"\n (click)=\"onSave()\"\n >\n {{ (!prefillData ? 'interface.create' : 'interface.save') | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {TranslateModule, TranslateService} from '@ngx-translate/core';\nimport {\n ActionItem,\n CarbonListModule,\n ColumnConfig,\n ConfirmationModalModule,\n ViewType,\n} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {\n TaskListSearchDropdownValue,\n TaskListSearchField,\n TaskListSearchFieldFieldType,\n} from '@valtimo/task';\nimport {ButtonModule, IconModule} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n of,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {TaskManagementSearchFieldsService} from '../../services';\nimport {TaskManagementSearchFieldsModalComponent} from '../task-management-search-fields-modal/task-management-search-fields-modal.component';\nimport {CaseManagementParams, getCaseManagementRouteParams} from '@valtimo/shared';\n\n@Component({\n selector: 'valtimo-task-management-search-fields',\n templateUrl: 'task-management-search-fields.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n CarbonListModule,\n ButtonModule,\n IconModule,\n TaskManagementSearchFieldsModalComponent,\n ConfirmationModalModule,\n ],\n})\nexport class TaskManagementSearchFieldsComponent {\n public readonly caseDefinitionKey$: Observable<string> = getCaseManagementRouteParams(\n this.route\n ).pipe(\n map((params: CaseManagementParams | undefined) => (!params ? '' : params.caseDefinitionKey)),\n tap((caseDefinitionKey: string) =>\n this.searchFieldsService.setCaseDefinitionKey(caseDefinitionKey)\n )\n );\n\n private readonly _refresh$ = new BehaviorSubject<null>(null);\n\n public readonly searchFields$: Observable<TaskListSearchField[]> = combineLatest([\n this.caseDefinitionKey$,\n this._refresh$,\n this.trasnlateService.stream('key'),\n ]).pipe(\n switchMap(() => this.searchFieldsService.getTaskListSearchFields()),\n map((searchFields: TaskListSearchField[]) => this.mapTranslations(searchFields))\n );\n\n public readonly fields$: Observable<ColumnConfig[]> = this.trasnlateService.stream('key').pipe(\n map(() => [\n {\n key: 'title',\n label: 'searchFieldsOverview.title',\n viewType: ViewType.TEXT,\n },\n {\n key: 'key',\n label: 'searchFieldsOverview.key',\n viewType: ViewType.TEXT,\n },\n {\n key: 'path',\n label: 'searchFieldsOverview.path',\n viewType: ViewType.TEXT,\n },\n {\n key: 'dataTypeTranslation',\n label: 'searchFieldsOverview.dataType',\n viewType: ViewType.TEXT,\n },\n {\n key: 'fieldTypeTranslation',\n label: 'searchFieldsOverview.fieldType',\n viewType: ViewType.TEXT,\n },\n ])\n );\n\n public readonly deleteModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly fieldModalOpen$ = new BehaviorSubject<boolean>(false);\n public readonly itemToDelete$ = new BehaviorSubject<TaskListSearchField | null>(null);\n public readonly prefillData$ = new BehaviorSubject<TaskListSearchField | null>(null);\n\n public readonly ACTION_ITEMS: ActionItem[] = [\n {\n label: 'interface.edit',\n callback: this.editField.bind(this),\n type: 'normal',\n },\n {\n label: 'interface.delete',\n callback: this.deleteField.bind(this),\n type: 'danger',\n },\n ];\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly route: ActivatedRoute,\n private readonly searchFieldsService: TaskManagementSearchFieldsService,\n private readonly trasnlateService: TranslateService\n ) {}\n\n public editField(item: TaskListSearchField): void {\n if (!!item.dropdownDataProvider) {\n this.documentService\n .getDropdownData(item.dropdownDataProvider, item.ownerId, item.key)\n .pipe(take(1))\n .subscribe(dropdownValues => {\n item.dropdownValues = dropdownValues as TaskListSearchDropdownValue;\n this.prefillData$.next(item);\n this.fieldModalOpen$.next(true);\n });\n\n return;\n }\n this.prefillData$.next(item);\n this.fieldModalOpen$.next(true);\n }\n\n public onItemsReordered(event): void {\n this.searchFieldsService\n .orderTaskListSearchFields(event)\n .pipe(take(1))\n .subscribe(() => this._refresh$.next(null));\n }\n\n public onAddButtonClick(): void {\n this.fieldModalOpen$.next(true);\n }\n\n public onCloseEvent(\n searchField: TaskListSearchField | null,\n prefillData: TaskListSearchField | null\n ): void {\n this.fieldModalOpen$.next(false);\n this.prefillData$.next(null);\n if (!searchField) return;\n\n const hasDropdownValues: boolean =\n searchField.fieldType === TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN ||\n searchField.fieldType === TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN;\n\n (!prefillData\n ? this.searchFieldsService.createTaskListSearchField(searchField)\n : this.searchFieldsService.updateTaskListSearchField(searchField)\n )\n .pipe(\n take(1),\n switchMap((field: TaskListSearchField) => {\n return hasDropdownValues\n ? this.documentService.postDropdownData(\n field.dropdownDataProvider ?? '',\n field.ownerId,\n field.key,\n searchField.dropdownValues ?? {}\n )\n : of(field);\n })\n )\n .subscribe(() => this._refresh$.next(null));\n }\n\n public onDeleteFieldConfirm(item: TaskListSearchField | null): void {\n if (!item) return;\n\n combineLatest([\n this.searchFieldsService.deleteTaskListSearchField(item.key),\n item.dropdownDataProvider\n ? this.documentService.deleteDropdownData(item.dropdownDataProvider, item.ownerId, item.key)\n : of(null),\n ])\n .pipe(take(1))\n .subscribe(() => this._refresh$.next(null));\n }\n\n private deleteField(item: TaskListSearchField): void {\n this.itemToDelete$.next(item);\n this.deleteModalOpen$.next(true);\n }\n\n private mapTranslations(\n searchFields: TaskListSearchField[]\n ): (TaskListSearchField & {dataTypeTranslation: string; fieldTypeTranslation: string})[] {\n return searchFields.map((searchField: TaskListSearchField) => ({\n ...searchField,\n dataTypeTranslation: this.trasnlateService.instant(\n `searchFields.${searchField.dataType.toLowerCase()}`\n ),\n fieldTypeTranslation: this.trasnlateService.instant(\n `searchFieldsOverview.${this.fieldTypeTranslation(searchField.fieldType)}`\n ),\n }));\n }\n\n private fieldTypeTranslation(fieldType: TaskListSearchFieldFieldType): string {\n switch (fieldType) {\n case TaskListSearchFieldFieldType.SINGLE_SELECT_DROPDOWN:\n return 'single-select-dropdown';\n case TaskListSearchFieldFieldType.MULTI_SELECT_DROPDOWN:\n return 'multi-select-dropdown';\n default:\n return fieldType.toLowerCase();\n }\n }\n}\n","<!--\n ~ Copyright 2015-2025 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 fieldModalOpen: fieldModalOpen$ | async,\n fields: fields$ | async,\n itemToDelete: itemToDelete$ | async,\n prefillData: prefillData$ | async,\n searchFields: searchFields$ | async,\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"obs.fields\"\n [items]=\"obs.searchFields\"\n [dragAndDrop]=\"true\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editField($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addButton\"\n [description]=\"'searchFieldsOverview.noSearchfieldsDescription' | translate\"\n [title]=\"'searchFieldsOverview.noSearchfieldsTitle' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <valtimo-task-management-search-fields-modal\n [caseDefinitionKey]=\"caseDefinitionKey$ | async\"\n [open]=\"obs.fieldModalOpen\"\n [prefillData]=\"obs.prefillData\"\n (closeEvent)=\"onCloseEvent($event, obs.prefillData)\"\n ></valtimo-task-management-search-fields-modal>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n [outputOnConfirm]=\"obs.itemToDelete\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n (confirmEvent)=\"onDeleteFieldConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n\n<ng-template #addButton>\n <button cdsButton=\"primary\" (click)=\"onAddButtonClick()\">\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n\n {{ 'searchFieldsOverview.add' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2025 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TabsModule} from 'carbon-components-angular';\nimport {TaskManagementTab} from '../../models';\nimport {TaskManagementService} from '../../services';\nimport {TaskManagementColumnsComponent} from '../task-management-columns/task-management-columns.component';\nimport {TaskManagementSearchFieldsComponent} from '../task-management-search-fields/task-management-search-fields.component';\n\n@Component({\n templateUrl: './task-management-detail.component.html',\n styleUrl: './task-management-detail.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n CarbonListModule,\n TranslateModule,\n TabsModule,\n TaskManagementColumnsComponent,\n TaskManagementSearchFieldsComponent,\n ],\n providers: [TaskManagementService],\n})\nexport class TaskManagementDetailComponent {\n public readonly activeTab$ = this.taskManagementService.activeTab$;\n\n public readonly TaskManagementTab = TaskManagementTab;\n\n constructor(private readonly taskManagementService: TaskManagementService) {}\n\n public setActiveTab(tab: TaskManagementTab): void {\n this.taskManagementService.setActiveTab(tab);\n }\n}\n","<!--\n ~ Copyright 2015-2025 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@if (activeTab$ | async; as activeTab) {\n <cds-tabs type=\"contained\">\n <cds-tab\n [active]=\"activeTab === TaskManagementTab.COLUMNS\"\n [heading]=\"'taskManagement.columns' | translate\"\n (selected)=\"setActiveTab(TaskManagementTab.COLUMNS)\"\n >\n <valtimo-task-management-columns *ngIf=\"activeTab === TaskManagementTab.COLUMNS\">\n </valtimo-task-management-columns>\n </cds-tab>\n\n <cds-tab\n [active]=\"activeTab === TaskManagementTab.SEARCH_FIELDS\"\n [heading]=\"'taskManagement.searchFields' | translate\"\n (selected)=\"setActiveTab(TaskManagementTab.SEARCH_FIELDS)\"\n >\n <valtimo-task-management-search-fields *ngIf=\"activeTab === TaskManagementTab.SEARCH_FIELDS\">\n </valtimo-task-management-search-fields>\n </cds-tab>\n </cds-tabs>\n}\n","/*\n * Copyright 2015-2025 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 './task-management-column-modal/task-management-column-modal.component';\nexport * from './task-management-columns/task-management-columns.component';\nexport * from './task-management-detail/task-management-detail.component';\nexport * from './task-management-search-fields/task-management-search-fields.component';\n","/*\n * Copyright 2015-2025 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 task\n */\n\nexport * from './lib/components';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.TaskManagementApiService","i4","i5","i3","i6","distinctUntilChanged","i2","i3.TaskManagementSearchFieldsService","i7","i1.TaskManagementService"],"mappings":"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"}
|