Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
5a08eab
Merge pull request #277 from netgrif/release/6.4.1
machacjozef Mar 19, 2025
576d4cd
CI - Update documentation
github-actions[bot] Mar 19, 2025
499f346
Merge pull request #323 from netgrif/release/6.4.2
Kovy95 Apr 7, 2026
186403a
Release 6.4.2
machacjozef Apr 7, 2026
b744557
Release 6.4.2
machacjozef Apr 7, 2026
5d304de
Release 6.4.2
machacjozef Apr 7, 2026
90d2d13
Release 6.4.2
machacjozef Apr 7, 2026
5068569
Release 6.4.2
machacjozef Apr 7, 2026
78b3725
Release 6.4.2
machacjozef Apr 7, 2026
e9af132
Release 6.4.2
machacjozef Apr 7, 2026
54a8341
Release 6.4.2
machacjozef Apr 7, 2026
5ceed27
Release 6.4.2
machacjozef Apr 7, 2026
ac5591e
Release 6.4.2
machacjozef Apr 7, 2026
bb0c472
Release 6.4.2
machacjozef Apr 7, 2026
5557634
Upgrade Node.js version from 18 to 20
machacjozef Apr 13, 2026
3ef0500
CI - Update documentation
github-actions[bot] Apr 13, 2026
20e9445
[NAE-2463] Builder change localStorage sets
Kovy95 Jul 3, 2026
7d389f0
[NAE-2463] Builder change localStorage sets
Kovy95 Jul 7, 2026
feee4e0
[NAE-2463] Builder change localStorage sets
Kovy95 Jul 8, 2026
80380f0
[NAE-2462] Builder component decomposition
Kovy95 Jul 16, 2026
cf5567e
[NAE-2463] Builder change localStorage sets
Kovy95 Jul 16, 2026
945f9dd
[NAE-2463] Builder change localStorage sets
Kovy95 Jul 17, 2026
718ca0b
Merge pull request #341 from netgrif/NAE-2463
mazarijuraj Jul 17, 2026
ce9a26b
Merge remote-tracking branch 'refs/remotes/origin/master' into releas…
mazarijuraj Jul 20, 2026
7e467d6
[NAE-2054] - Release 6.5.0 CE
mazarijuraj Jul 20, 2026
18b5d38
[NAE-2462] Builder component decomposition
Kovy95 Jul 21, 2026
8d08764
[NAE-2462] Builder component decomposition
Kovy95 Jul 23, 2026
d980f0e
[NAE-2462] Builder component decomposition
Kovy95 Jul 24, 2026
b7ccfb8
[NAE-2462] Builder component decomposition
Kovy95 Jul 28, 2026
b0c8567
[NAE-2462] Builder component decomposition
Kovy95 Jul 30, 2026
f44d77e
Merge remote-tracking branch 'origin/release/6.5.0' into NAE-2462
Kovy95 Jul 30, 2026
040af1e
Merge remote-tracking branch 'origin/release/6.6.0' into NAE-2462
Kovy95 Aug 3, 2026
6b66398
[NAE-2462] Builder component decomposition
Kovy95 Aug 3, 2026
fe17c87
[NAE-2462] Builder component decomposition
Kovy95 Aug 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,22 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres
to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Full Changelog: [https://github.com/netgrif/components/commits/v6.5.0](https://github.com/netgrif/components/commits/v6.5.0)
## [6.5.0](https://github.com/netgrif/components/releases/tag/v6.5.0) (2026-07-20)

## [6.5.0](https://github.com/netgrif/components/releases/tag/v6.5.0) (2025-02-18)
### Fixed

- [NAE-2413] Minor CSS changes & fixes
- [NAE-2056] Fix NAE-2048 in release 6.4.1

### Added

- [NAE-2033] Welcome dashboard
- [NAE-2041] Implementing Ticket View
- [NAE-2439] Implement new filter data types
- [ETASK-23] Dynamic view configuration
- [ETASK-33] Builder integration
- [ETASK-29] Menu item creation in menu
- [NAE-2450] Filter field PFQL support

### Changed

Expand All @@ -24,9 +32,11 @@ Full Changelog: [https://github.com/netgrif/components/commits/v6.5.0](https://g
- [NAE-2040] Search in role management
- [NAE-2052] Integrate ticket view with menu items
- [NAE-2039] Search in workflow view
- [NAE-2063] Action API 6.5.0
- [NAE-2060] Merge 6.2.10, 6.4.2 into 6.5.0
- [NAE-2444] Upgrade Angular to 17
- [NAE-2463] Builder change localStorage sets

Full Changelog: [https://github.com/netgrif/components/commits/v6.4.2](https://github.com/netgrif/components/commits/v6.4.2)

## [6.4.2](https://github.com/netgrif/components/releases/tag/v6.4.2) (2026-04-02)

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
"@mdi/angular-material": "^7.2.96",
"@mdi/font": "^7.4.47",
"@netgrif/petri.svg": "1.1.1",
"@netgrif/petriflow": "2.2.3",
"@netgrif/petriflow": "2.2.4",
"@netgrif/petriflow.svg": "1.1.1",
"@ngbracket/ngx-layout": "^17.0.1",
"@ngx-translate/core": "~15.0.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@ import {
SimpleFilter,
AbstractTabbedCaseViewComponent,
ViewIdService, NAE_DEFAULT_HEADERS,
NAE_BASE_FILTER, AllowedNetsServiceFactory, AllowedNetsService, OverflowService
NAE_BASE_FILTER, AllowedNetsServiceFactory, AllowedNetsService, OverflowService, Case
} from '@netgrif/components-core';
import {HeaderComponent} from '@netgrif/components';
import {Case} from "../../../../../../netgrif-components-core/src/lib/resources/interface/case";
import {TranslateService} from "@ngx-translate/core";

const baseFilterFactory = (injectedData: InjectedTabbedCaseViewData) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';
import {Component, OnInit} from '@angular/core';
Comment thread
coderabbitai[bot] marked this conversation as resolved.
import {NAE_TASK_FORCE_OPEN, NAE_VIEW_ID_SEGMENT, TabContent, ViewIdService} from '@netgrif/components-core';
import {BuilderTabbedCaseViewComponent} from './builder-tabbed-case-view/builder-tabbed-case-view.component';
import {
Expand All @@ -14,8 +14,7 @@ import {TranslateService} from "@ngx-translate/core";
{provide: NAE_VIEW_ID_SEGMENT, useValue: 'all-cases'},
{provide: NAE_TASK_FORCE_OPEN, useValue: false},
ViewIdService
],
changeDetection: ChangeDetectionStrategy.OnPush
]
})
export class BuilderTabsExampleComponent implements OnInit {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export enum ComponentPrefixes {
NUMBER = 'number-',
TASK_REF = 'task-ref-',
CASE_REF = 'case-ref-',
PROCESS_REF = 'process-ref-',
TEXT = 'text-',
USER = 'user-',
USER_LIST = 'user-list-',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import {DataField} from '../../models/abstract-data-field';
import {Behavior} from '../../models/behavior';
import {Layout} from '../../models/layout';
import {Validation} from '../../models/validation';
import {Component, ComponentPrefixes} from '../../models/component';

export class ProcessRefField extends DataField<Array<string>> {

constructor(stringId: string, title: string, initialValue: Array<string>, behavior: Behavior,
placeholder?: string, description?: string, layout?: Layout, validations?: Array<Validation>, component?: Component,
parentTaskId?: string) {
super(stringId, title, initialValue, behavior, placeholder, description, layout, validations, component, parentTaskId);
}

public getTypedComponentType(): string {
return ComponentPrefixes.PROCESS_REF + this.getComponentType();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import {Component, Inject, Injector, Optional, Type} from '@angular/core';
import {DATA_FIELD_PORTAL_DATA, DataFieldPortalData} from '../../models/data-field-portal-data-injection-token';
import {AbstractBaseDataFieldComponent} from '../../base-component/abstract-base-data-field.component';
import {ComponentPortal} from '@angular/cdk/portal';
import {ProcessRefField} from '../model/process-ref-field';

@Component({
selector: 'ncc-abstract-process-ref-default',
template: ''
})
export abstract class AbstractProcessRefDefaultComponent extends AbstractBaseDataFieldComponent<ProcessRefField> {

public componentPortal: ComponentPortal<any>;

protected constructor(protected injector: Injector,
protected builderComponent: Type<any>,
@Optional() @Inject(DATA_FIELD_PORTAL_DATA) dataFieldPortalData: DataFieldPortalData<ProcessRefField>) {
super(dataFieldPortalData);
}

createPortal() {
const portalInjector = Injector.create({
providers: [],
parent: this.injector
});
this.componentPortal = new ComponentPortal(this.builderComponent, null, portalInjector);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ export * from './task-ref-field/task-ref-dashboard-field/task-ref-dashboard-tile
export * from './task-ref-field/task-ref-dashboard-field/abstract-task-ref-dashboard-field.component';
export * from './task-ref-field/task-ref-list-field/abstract-task-ref-list-field.component';
export * from './case-ref-field/case-ref-default/case-ref-default.component';
export * from './process-ref-field/process-ref-default/abstract-process-ref-default.component';
export * from './process-ref-field/model/process-ref-field';
export * from './case-ref-field/model/case-ref-injection-tokens';
export * from './string-collection-field/string-collection-default-field/abstract-string-collection-default-field.component';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export enum FieldTypeResource {
MULTICHOICE_MAP = 'multichoice_map',
TASK_REF = 'taskRef',
CASE_REF = 'caseRef',
PROCESS_REF = 'processRef',
CASE_FILTER = 'caseFilter',
TASK_FILTER = 'taskFilter',
PROCESS_FILTER = 'processFilter',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {UserListValue} from '../../data-fields/user-list-field/models/user-list-
import {decodeBase64, encodeBase64} from "../../utility/base64";
import {CaseRefField} from '../../data-fields/case-ref-field/model/case-ref-field';
import {StringCollectionField} from '../../data-fields/string-collection-field/models/string-collection-field';
import {ProcessRefField} from '../../data-fields/process-ref-field/model/process-ref-field';

@Injectable({
providedIn: 'root'
Expand Down Expand Up @@ -108,6 +109,9 @@ export class FieldConverterService {
case FieldTypeResource.CASE_REF:
return new CaseRefField(item.stringId, item.name, item.value ? item.value : [], item.behavior,
item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
case FieldTypeResource.PROCESS_REF:
return new ProcessRefField(item.stringId, item.name, item.value ? item.value : [], item.behavior,
item.placeholder, item.description, item.layout, item.validations, item.component, item.parentTaskId);
Comment thread
coderabbitai[bot] marked this conversation as resolved.
case FieldTypeResource.CASE_FILTER:
case FieldTypeResource.TASK_FILTER:
case FieldTypeResource.PROCESS_FILTER:
Expand Down Expand Up @@ -153,6 +157,8 @@ export class FieldConverterService {
return FieldTypeResource.I18N;
} else if (item instanceof CaseRefField) {
return FieldTypeResource.CASE_REF;
} else if (item instanceof ProcessRefField) {
return FieldTypeResource.PROCESS_REF;
} else if (item instanceof StringCollectionField) {
return FieldTypeResource.STRING_COLLECTION;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,6 @@ export class UserService implements OnDestroy {
return this._userChange$.asObservable();
}

get anonymousUser(): User {
return this.anonymousUser;
}

get anonymousUser$(): Observable<User> {
return this._anonymousUserChange$.asObservable();
}
Expand Down
2 changes: 1 addition & 1 deletion projects/netgrif-components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
"@mdi/angular-material": "^7.2.96",
"@mdi/font": "^7.4.47",
"@netgrif/petri.svg": "1.1.1",
"@netgrif/petriflow": "2.2.3",
"@netgrif/petriflow": "2.2.4",
"@netgrif/petriflow.svg": "1.1.1",
"@ngx-translate/core": "~15.0.0",
"@ngx-translate/http-loader": "~8.0.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {MatDialog} from '@angular/material/dialog';
import {ActivatedRoute, Router} from '@angular/router';
import {ImportService} from '@netgrif/petriflow';
import {of} from 'rxjs';
import {BuilderModeService} from './builder-mode.service';
import {BuilderModeService} from './services/builder-mode.service';
import {ArcFactory} from './modeler/edit-mode/domain/arc-builders/arc-factory.service';
import {EditModeService} from './modeler/edit-mode/edit-mode.service';
import {ExportService} from '@netgrif/petriflow';
Expand Down
37 changes: 30 additions & 7 deletions projects/netgrif-components/src/lib/builder/builder.component.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import {Component, Inject, Optional} from '@angular/core';
import {BuilderMode, BuilderModeService} from "./builder-mode.service";
import {Component, Inject, Optional, Type} from '@angular/core';
import {BuilderMode, BuilderModeService} from "./services/builder-mode.service";
import {ModelService} from "./modeler/services/model/model.service";
import {ActivatedRoute, Router} from "@angular/router";
import {MatDialog} from "@angular/material/dialog";
import {HttpClient} from "@angular/common/http";
import {HistoryService} from "./modeler/services/history/history.service";
import {CaseResourceService, LoadingEmitter, NAE_TAB_DATA, ImmediateData} from "@netgrif/components-core";
import {CaseResourceService, LoadingEmitter, NAE_TAB_DATA, ImmediateData, DATA_FIELD_PORTAL_DATA, CaseRefField, DataFieldPortalData} from "@netgrif/components-core";
import {InjectedTabbedBuilderViewData} from "./injected-builder-data";
import {FieldListService} from './form-builder/field-list/field-list.service';
import {GridsterService} from './form-builder/gridster/gridster.service';
Expand Down Expand Up @@ -52,8 +52,10 @@ import {MatPaginatorIntl} from '@angular/material/paginator';
import {BuilderPaginatorIntl} from './modeler/components/master-detail/main-master/builder-paginator-inpl';
import {MAT_FORM_FIELD_DEFAULT_OPTIONS} from '@angular/material/form-field';
import {I18nControlService} from './modeler/i18n-mode/i18n-control.service';
import {BuilderIntegrationService} from "./builder-integration.service";
import {BuilderIntegrationService} from "./services/builder-integration.service";
import {TaskModeService} from "./modeler/task-mode/task-mode.service";
import {LocalStorageService} from "./services/local-storage.service";
import {PetriflowCanvasService} from '@netgrif/petriflow.svg';

@Component({
selector: 'nc-builder',
Expand Down Expand Up @@ -108,7 +110,12 @@ import {TaskModeService} from "./modeler/task-mode/task-mode.service";
BuilderModeService,
I18nControlService,
BuilderIntegrationService,
TaskModeService
TaskModeService,
LocalStorageService,
// PetriflowCanvasService is `providedIn: 'root'` in @netgrif/petriflow.svg, which would make it a
// single instance shared by every open builder tab (wrong canvas/model rendered on tab switch).
// Re-provided here so each <nc-builder> instance gets its own canvas/panzoom state.
{provide: PetriflowCanvasService, useClass: PetriflowCanvasService as unknown as Type<PetriflowCanvasService>}
]
})
export class BuilderComponent {
Expand All @@ -124,9 +131,10 @@ export class BuilderComponent {
public builderModeService: BuilderModeService,
protected _caseResourceService: CaseResourceService,
protected _builderIntegrationService: BuilderIntegrationService,
@Optional() @Inject(NAE_TAB_DATA) injectedTabData: InjectedTabbedBuilderViewData) {
@Optional() @Inject(NAE_TAB_DATA) injectedTabData: InjectedTabbedBuilderViewData,
@Optional() @Inject(DATA_FIELD_PORTAL_DATA) dataFieldPortalData: DataFieldPortalData<CaseRefField>) {
this.loading = new LoadingEmitter(true);
if (injectedTabData?.processCase) {
if (injectedTabData !== null && injectedTabData?.processCase) {
this._builderIntegrationService.isIntegrated = true;
this._builderIntegrationService.processCase = injectedTabData.processCase;
this.resolveIntegratedMode();
Expand All @@ -137,6 +145,21 @@ export class BuilderComponent {
this._builderIntegrationService.reloadModes = true;
})
});
} else if (dataFieldPortalData !== null && dataFieldPortalData?.dataField?.value?.length > 0) {
this._builderIntegrationService.isIntegrated = true;
this._caseResourceService.getOneCase(dataFieldPortalData?.dataField?.value[0]).subscribe({next: processCase => {
this._builderIntegrationService.processCase = processCase;
this.resolveIntegratedMode();
}, error: () => {
this.loading.off();
}})
this._builderIntegrationService.reloadCase.subscribe(() => {
this._caseResourceService.getOneCase(this._builderIntegrationService.processCase?.stringId).subscribe(processCase => {
this._builderIntegrationService.processCase = processCase;
this.resolveIntegratedMode()
this._builderIntegrationService.reloadModes = true;
})
});
} else {
this.loading.off();
this.resolveRouterModel();
Expand Down
11 changes: 9 additions & 2 deletions projects/netgrif-components/src/lib/builder/builder.module.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import {NgModule} from '@angular/core';
import {Injector, NgModule} from '@angular/core';
import {CommonModule, NgOptimizedImage} from '@angular/common';
import {BuilderComponent} from './builder.component';
import {MaterialModule} from '@netgrif/components-core';
import {MaterialModule, ComponentRegistryService} from '@netgrif/components-core';
import {FormBuilderModule} from './form-builder/form-builder.module';
import {ModelerModule} from './modeler/modeler.module';
import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
Expand All @@ -12,11 +12,14 @@ import {TaskContentComponentModule} from '../task-content/task-content.module';
import {MaterialIconPickerComponent} from './modeler/components/material-icon-picker/material-icon-picker.component';
import {BuilderDialogsModule} from './dialogs/dialogs.module';
import {FlexLayoutModule} from "@ngbracket/ngx-layout";
import {ComponentPortal} from '@angular/cdk/portal';
import {ProcessRefDefaultComponent} from '../data-fields/process-ref/process-ref-default/process-ref-default.component';


@NgModule({
declarations: [
BuilderComponent,
ProcessRefDefaultComponent,
],
imports: [
BuilderDialogsModule,
Expand All @@ -36,4 +39,8 @@ import {FlexLayoutModule} from "@ngbracket/ngx-layout";
exports: [BuilderComponent]
})
export class BuilderModule {

constructor(registry: ComponentRegistryService) {
registry.register("process-ref-default", (injector: Injector) => new ComponentPortal<any>(ProcessRefDefaultComponent, null, injector));
}
}
16 changes: 16 additions & 0 deletions projects/netgrif-components/src/lib/builder/builder.theme.scss
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,18 @@
$warn: map-get($theme, warn);

// BUILDER

.single-task-fix {
.fix-datafield-expansion-panel {
.mat-expansion-panel:not(.mat-expanded) > .mat-expansion-panel-content {
height: 0 !important;
}

.mat-expansion-panel.mat-expanded > .mat-expansion-panel-content {
height: 100% !important;
}
}
}
.svg-active-stroke {
stroke: mat.get-color-from-palette($accent, 500) !important;
}
Expand All @@ -15,6 +27,10 @@
}

.builder-fix {
.info-label-icon {
color: mat.get-color-from-palette($primary, 500);
}

.app-mat-viewnav {
background-color: mat.get-color-from-palette($primary, 600) !important;

Expand Down
Loading
Loading