@masterteam/properties 0.0.26 → 0.0.27

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Injectable, computed, input, signal, linkedSignal, Component, DestroyRef, effect, forwardRef, ChangeDetectionStrategy, EnvironmentInjector, ViewContainerRef, ViewChild } from '@angular/core';
2
+ import { inject, Injectable, computed, input, linkedSignal, signal, Component, DestroyRef, effect, forwardRef, ChangeDetectionStrategy, EnvironmentInjector, ViewContainerRef, ViewChild } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { Table } from '@masterteam/components/table';
5
5
  import { Router, ActivatedRoute } from '@angular/router';
@@ -765,20 +765,26 @@ class PropertiesList {
765
765
  transloco = inject(TranslocoService);
766
766
  defaultTab = 'all';
767
767
  tab = input(...(ngDevMode ? [undefined, { debugName: "tab" }] : []));
768
- tabs = signal([
769
- {
770
- label: this.transloco.translate('properties.list.tabAll'),
771
- value: 'all',
772
- },
773
- {
774
- label: this.transloco.translate('properties.list.tabSystem'),
775
- value: 'system',
776
- },
777
- {
778
- label: this.transloco.translate('properties.list.tabCustom'),
779
- value: 'custom',
780
- },
781
- ], ...(ngDevMode ? [{ debugName: "tabs" }] : []));
768
+ tabs = linkedSignal(() => {
769
+ const systemProperties = this.facade.systemProperties();
770
+ if (!systemProperties || systemProperties.length === 0) {
771
+ return [];
772
+ }
773
+ return [
774
+ {
775
+ label: this.transloco.translate('properties.list.tabAll'),
776
+ value: 'all',
777
+ },
778
+ {
779
+ label: this.transloco.translate('properties.list.tabSystem'),
780
+ value: 'system',
781
+ },
782
+ {
783
+ label: this.transloco.translate('properties.list.tabCustom'),
784
+ value: 'custom',
785
+ },
786
+ ];
787
+ }, ...(ngDevMode ? [{ debugName: "tabs" }] : []));
782
788
  activeTab = linkedSignal(() => {
783
789
  return this.tab() || this.defaultTab;
784
790
  }, ...(ngDevMode ? [{ debugName: "activeTab" }] : []));
@@ -842,6 +848,7 @@ class PropertiesList {
842
848
  key: 'isRequired',
843
849
  label: this.transloco.translate('properties.list.columnRequired'),
844
850
  type: 'boolean',
851
+ readonly: true,
845
852
  filterConfig: {
846
853
  type: 'select',
847
854
  label: this.transloco.translate('properties.list.columnRequired'),
@@ -1126,7 +1133,7 @@ class ApiConfiguration {
1126
1133
  useExisting: forwardRef(() => ApiConfiguration),
1127
1134
  multi: true,
1128
1135
  },
1129
- ], ngImport: i0, template: "<div [formGroup]=\"form\" class=\"space-y-6\">\r\n <div class=\"space-y-4 rounded-xl bg-content px-6 py-4 shadow-sm\">\r\n <div class=\"grid items-end gap-3 md:grid-cols-[minmax(0,1fr)_auto]\">\r\n <mt-text-field\r\n formControlName=\"endpoint\"\r\n [label]=\"'properties.form.endpoint' | transloco\"\r\n [placeholder]=\"'properties.form.endpointPlaceholder' | transloco\"\r\n />\r\n <div class=\"flex justify-end gap-2\">\r\n <mt-button\r\n type=\"button\"\r\n [text]=\"true\"\r\n icon=\"general.plus\"\r\n [label]=\"'properties.form.addHeader' | transloco\"\r\n (click)=\"addHeader()\"\r\n />\r\n <mt-button\r\n type=\"button\"\r\n [label]=\"'properties.form.testApi' | transloco\"\r\n [loading]=\"isTesting()\"\r\n (click)=\"testApi()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (headers.controls.length) {\r\n <div class=\"space-y-3\">\r\n <div class=\"text-sm font-medium text-surface-500\">\r\n {{ \"properties.form.headers\" | transloco }}\r\n </div>\r\n <div class=\"space-y-3\">\r\n @for (\r\n headerCtrl of headers.controls;\r\n track headerCtrl;\r\n let i = $index\r\n ) {\r\n <div\r\n [formGroup]=\"headerCtrl\"\r\n class=\"grid items-end gap-3 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto]\"\r\n >\r\n <mt-text-field\r\n formControlName=\"key\"\r\n [label]=\"'properties.form.headerKey' | transloco\"\r\n />\r\n <mt-text-field\r\n formControlName=\"value\"\r\n [label]=\"'properties.form.headerValue' | transloco\"\r\n />\r\n <mt-button\r\n type=\"button\"\r\n [text]=\"true\"\r\n icon=\"general.trash-01\"\r\n (click)=\"removeHeader(i)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <p class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.noHeadersMessage\" | transloco }}\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"space-y-4 rounded-xl bg-content px-6 py-4 shadow-sm\">\r\n @if (hasDetectedSchema()) {\r\n <div class=\"grid gap-4 md:grid-cols-2\">\r\n <mt-select-field\r\n formControlName=\"key\"\r\n [options]=\"apiProperties()\"\r\n [showClear]=\"true\"\r\n optionLabel=\"name\"\r\n optionValue=\"key\"\r\n [label]=\"'properties.form.keyField' | transloco\"\r\n />\r\n <mt-select-field\r\n formControlName=\"value\"\r\n [options]=\"apiProperties()\"\r\n [showClear]=\"true\"\r\n optionLabel=\"name\"\r\n optionValue=\"key\"\r\n [label]=\"'properties.form.valueField' | transloco\"\r\n />\r\n </div>\r\n } @else {\r\n <p class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.messageTestApiPrompt\" | transloco }}\r\n </p>\r\n }\r\n\r\n <div class=\"flex items-center justify-between gap-4\">\r\n <mt-toggle-field\r\n formControlName=\"supportMultiSelect\"\r\n [label]=\"'properties.form.labelSupportMultiSelect' | transloco\"\r\n />\r\n @if (isTesting()) {\r\n <span class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.messageTesting\" | transloco }}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TextField, selector: "mt-text-field", inputs: ["field", "hint", "label", "placeholder", "class", "type", "readonly", "pInputs", "required", "icon", "iconPosition"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "optionGroupLabel", "optionGroupChildren", "loading"], outputs: ["onChange"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required", "toggleShape", "icon", "descriptionCard"], outputs: ["onChange"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i1.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1136
+ ], ngImport: i0, template: "<div [formGroup]=\"form\" class=\"space-y-6\">\r\n <div class=\"space-y-4 rounded-xl bg-content px-6 py-4 shadow-sm\">\r\n <div class=\"grid items-end gap-3 md:grid-cols-[minmax(0,1fr)_auto]\">\r\n <mt-text-field\r\n formControlName=\"endpoint\"\r\n [label]=\"'properties.form.endpoint' | transloco\"\r\n [placeholder]=\"'properties.form.endpointPlaceholder' | transloco\"\r\n />\r\n <div class=\"flex justify-end gap-2\">\r\n <mt-button\r\n type=\"button\"\r\n [text]=\"true\"\r\n icon=\"general.plus\"\r\n [label]=\"'properties.form.addHeader' | transloco\"\r\n (click)=\"addHeader()\"\r\n />\r\n <mt-button\r\n type=\"button\"\r\n [label]=\"'properties.form.testApi' | transloco\"\r\n [loading]=\"isTesting()\"\r\n (click)=\"testApi()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (headers.controls.length) {\r\n <div class=\"space-y-3\">\r\n <div class=\"text-sm font-medium text-surface-500\">\r\n {{ \"properties.form.headers\" | transloco }}\r\n </div>\r\n <div class=\"space-y-3\">\r\n @for (\r\n headerCtrl of headers.controls;\r\n track headerCtrl;\r\n let i = $index\r\n ) {\r\n <div\r\n [formGroup]=\"headerCtrl\"\r\n class=\"grid items-end gap-3 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto]\"\r\n >\r\n <mt-text-field\r\n formControlName=\"key\"\r\n [label]=\"'properties.form.headerKey' | transloco\"\r\n />\r\n <mt-text-field\r\n formControlName=\"value\"\r\n [label]=\"'properties.form.headerValue' | transloco\"\r\n />\r\n <mt-button\r\n type=\"button\"\r\n [text]=\"true\"\r\n icon=\"general.trash-01\"\r\n (click)=\"removeHeader(i)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <p class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.noHeadersMessage\" | transloco }}\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"space-y-4 rounded-xl bg-content px-6 py-4 shadow-sm\">\r\n @if (hasDetectedSchema()) {\r\n <div class=\"grid gap-4 md:grid-cols-2\">\r\n <mt-select-field\r\n formControlName=\"key\"\r\n [options]=\"apiProperties()\"\r\n [showClear]=\"true\"\r\n optionLabel=\"name\"\r\n optionValue=\"key\"\r\n [label]=\"'properties.form.keyField' | transloco\"\r\n />\r\n <mt-select-field\r\n formControlName=\"value\"\r\n [options]=\"apiProperties()\"\r\n [showClear]=\"true\"\r\n optionLabel=\"name\"\r\n optionValue=\"key\"\r\n [label]=\"'properties.form.valueField' | transloco\"\r\n />\r\n </div>\r\n } @else {\r\n <p class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.messageTestApiPrompt\" | transloco }}\r\n </p>\r\n }\r\n\r\n <div class=\"flex items-center justify-between gap-4\">\r\n <mt-toggle-field\r\n formControlName=\"supportMultiSelect\"\r\n [label]=\"'properties.form.labelSupportMultiSelect' | transloco\"\r\n />\r\n @if (isTesting()) {\r\n <span class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.messageTesting\" | transloco }}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: TextField, selector: "mt-text-field", inputs: ["field", "hint", "label", "placeholder", "class", "type", "readonly", "pInputs", "required", "icon", "iconPosition"] }, { kind: "component", type: SelectField, selector: "mt-select-field", inputs: ["field", "label", "placeholder", "hasPlaceholderPrefix", "class", "readonly", "pInputs", "options", "optionValue", "optionLabel", "filter", "filterBy", "dataKey", "showClear", "clearAfterSelect", "required", "group", "optionGroupLabel", "optionGroupChildren", "loading"], outputs: ["onChange"] }, { kind: "component", type: ToggleField, selector: "mt-toggle-field", inputs: ["label", "labelPosition", "placeholder", "readonly", "pInputs", "required", "toggleShape", "size", "icon", "descriptionCard"], outputs: ["onChange"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TranslocoModule }, { kind: "pipe", type: i1.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1130
1137
  }
1131
1138
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: ApiConfiguration, decorators: [{
1132
1139
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"masterteam-properties.mjs","sources":["../../../../packages/masterteam/properties/src/store/utils/state-helpers.ts","../../../../packages/masterteam/properties/src/store/properties/properties.actions.ts","../../../../packages/masterteam/properties/src/store/properties/properties.state.ts","../../../../packages/masterteam/properties/src/store/properties/properties.facade.ts","../../../../packages/masterteam/properties/src/store/app.state.ts","../../../../packages/masterteam/properties/src/store/index.ts","../../../../packages/masterteam/properties/src/lib/properties-list/properties-list.ts","../../../../packages/masterteam/properties/src/lib/properties-list/properties-list.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/api-configuration/api-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/api-configuration/api-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/check-list-form-configuration/check-list-form-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/check-list-form-configuration/check-list-form-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/dynamic-list-configuration/dynamic-list-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/dynamic-list-configuration/dynamic-list-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/editable-list-view-configuration/editable-list-view-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/editable-list-view-configuration/editable-list-view-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/internal-module-configuration/internal-module-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/internal-module-configuration/internal-module-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/location-configuration/location-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/location-configuration/location-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/lookup-configuration/lookup-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/lookup-configuration/lookup-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/percentage-configuration/percentage-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/percentage-configuration/percentage-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/user-configuration/user-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/user-configuration/user-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/attachment-configuration/attachment-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/attachment-configuration/attachment-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/property-form.ts","../../../../packages/masterteam/properties/src/lib/property-form/property-form.html","../../../../packages/masterteam/properties/src/public-api.ts","../../../../packages/masterteam/properties/src/masterteam-properties.ts"],"sourcesContent":["import type { StateContext } from '@ngxs/store';\r\n\r\nexport interface LoadingStateShape<L extends string = string> {\r\n loadingActive: L[];\r\n errors: Partial<Record<L, string>>;\r\n}\r\n\r\ntype LoadingName<T extends LoadingStateShape<string>> =\r\n T['loadingActive'][number];\r\n\r\nexport function startLoading<T extends LoadingStateShape<string>>(\r\n ctx: StateContext<T>,\r\n loadingName: LoadingName<T>,\r\n): void {\r\n const { loadingActive, errors } = ctx.getState();\r\n\r\n if (!loadingActive.includes(loadingName)) {\r\n ctx.patchState({\r\n loadingActive: [...loadingActive, loadingName],\r\n } as Partial<T>);\r\n }\r\n\r\n if (errors && errors[loadingName]) {\r\n const { [loadingName]: _removed, ...rest } = errors;\r\n ctx.patchState({ errors: rest } as Partial<T>);\r\n }\r\n}\r\n\r\nexport function endLoading<T extends LoadingStateShape<string>>(\r\n ctx: StateContext<T>,\r\n loadingName: LoadingName<T>,\r\n): void {\r\n const { loadingActive } = ctx.getState();\r\n\r\n ctx.patchState({\r\n loadingActive: loadingActive.filter((name) => name !== loadingName),\r\n } as Partial<T>);\r\n}\r\n\r\nexport function setLoadingError<T extends LoadingStateShape<string>>(\r\n ctx: StateContext<T>,\r\n loadingName: LoadingName<T>,\r\n message: string,\r\n): void {\r\n const { errors } = ctx.getState();\r\n ctx.patchState({\r\n errors: { ...errors, [loadingName]: message },\r\n } as Partial<T>);\r\n}\r\n","import type {\r\n PropertiesQueryParams,\r\n PropertyPayload,\r\n ApiTestPayload,\r\n} from './properties.model';\r\nimport type { BreadcrumbItem } from '@masterteam/components/breadcrumb';\r\n\r\nexport class GetProperties {\r\n static readonly type = '[Properties] Get All';\r\n\r\n constructor(public readonly params?: PropertiesQueryParams) {}\r\n}\r\n\r\nexport class GetProperty {\r\n static readonly type = '[Properties] Get One';\r\n\r\n constructor(\r\n public readonly id: string | number,\r\n public readonly mode: 'edit' = 'edit',\r\n ) {}\r\n}\r\n\r\nexport class GetLookups {\r\n static readonly type = '[Properties] Get Lookups';\r\n}\r\n\r\nexport class GetGroups {\r\n static readonly type = '[Properties] Get Groups';\r\n}\r\n\r\nexport class GetConfigAsType {\r\n static readonly type = '[Properties] Get Config As Type';\r\n\r\n constructor(public readonly viewType: string) {}\r\n}\r\n\r\nexport class GetCountries {\r\n static readonly type = '[Properties] Get Countries';\r\n}\r\n\r\nexport class TestApiConfiguration {\r\n static readonly type = '[Properties] Test API Configuration';\r\n\r\n constructor(public readonly payload: ApiTestPayload) {}\r\n}\r\n\r\nexport class ResetApiConfiguration {\r\n static readonly type = '[Properties] Reset API Configuration';\r\n}\r\n\r\nexport class GetPropertiesForConfigType {\r\n static readonly type = '[Properties] Get By Config Type';\r\n\r\n constructor(\r\n public readonly moduleType: string,\r\n public readonly moduleId: string | number,\r\n ) {}\r\n}\r\n\r\nexport class ResetConfigProperties {\r\n static readonly type = '[Properties] Reset Config Properties';\r\n}\r\n\r\nexport class ResetConfigScopes {\r\n static readonly type = '[Properties] Reset Config Scopes';\r\n}\r\n\r\nexport class ResetSelectedProperty {\r\n static readonly type = '[Properties] Reset Selected Property';\r\n}\r\n\r\nexport class DeleteProperty {\r\n static readonly type = '[Properties] Delete';\r\n\r\n constructor(public readonly id: string | number) {}\r\n}\r\n\r\nexport class CreateProperty {\r\n static readonly type = '[Properties] Create';\r\n\r\n constructor(public readonly payload: PropertyPayload) {}\r\n}\r\n\r\nexport class UpdateProperty {\r\n static readonly type = '[Properties] Update';\r\n\r\n constructor(\r\n public readonly id: string | number,\r\n public readonly payload: PropertyPayload,\r\n ) {}\r\n}\r\n\r\nexport class SetPropertiesModuleInfo {\r\n static readonly type = '[Properties] Set Module Info';\r\n\r\n constructor(\r\n public readonly moduleType: string,\r\n public readonly moduleId: string | number,\r\n public readonly parentModuleType?: string,\r\n public readonly parentModuleId?: string | number,\r\n public readonly parentPath?: string,\r\n ) {}\r\n}\r\nexport class SetPropertyTypes {\r\n static readonly type = '[Properties] Set Property Types';\r\n\r\n constructor(public readonly payload: any) {}\r\n}\r\n\r\nexport class SetBreadcrumb {\r\n static readonly type = '[Properties] Set Breadcrumb';\r\n\r\n constructor(public readonly items: BreadcrumbItem[]) {}\r\n}\r\n\r\nexport class SetDefaultViewType {\r\n static readonly type = '[Properties] Set Default ViewType';\r\n\r\n constructor(public readonly viewType: string) {}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, finalize, switchMap, tap } from 'rxjs/operators';\r\n\r\nimport {\r\n endLoading,\r\n setLoadingError,\r\n startLoading,\r\n} from '../utils/state-helpers';\r\n\r\nimport {\r\n ApiPropertyOption,\r\n ApiSchema,\r\n ConfigScope,\r\n CountryDefinition,\r\n GroupDefinition,\r\n LookupDefinition,\r\n PropertiesLoadingName,\r\n PropertiesStateModel,\r\n PropertyItem,\r\n} from './properties.model';\r\nimport type { BreadcrumbItem } from '@masterteam/components/breadcrumb';\r\nimport {\r\n CreateProperty,\r\n DeleteProperty,\r\n GetGroups,\r\n GetConfigAsType,\r\n GetLookups,\r\n GetPropertiesForConfigType,\r\n GetProperties,\r\n GetProperty,\r\n GetCountries,\r\n TestApiConfiguration,\r\n ResetApiConfiguration,\r\n ResetConfigProperties,\r\n ResetConfigScopes,\r\n ResetSelectedProperty,\r\n SetPropertiesModuleInfo,\r\n UpdateProperty,\r\n SetPropertyTypes,\r\n SetBreadcrumb,\r\n SetDefaultViewType,\r\n} from './properties.actions';\r\nimport { Response } from './api.model';\r\n\r\nconst DEFAULT_STATE: PropertiesStateModel = {\r\n properties: [],\r\n selectedProperty: null,\r\n loadingActive: [],\r\n errors: {},\r\n moduleType: null,\r\n moduleId: null,\r\n parentModuleType: null,\r\n parentModuleId: null,\r\n lastQueryParams: null,\r\n lookups: [],\r\n configTypeProperties: [],\r\n groups: [],\r\n configScopes: [],\r\n countries: [],\r\n apiSchema: null,\r\n apiProperties: [],\r\n breadcrumbItems: [],\r\n defaultViewType: null,\r\n};\r\n\r\n@State<PropertiesStateModel>({\r\n name: 'properties',\r\n defaults: DEFAULT_STATE,\r\n})\r\n@Injectable()\r\nexport class PropertiesState {\r\n private readonly http = inject(HttpClient);\r\n private readonly baseUrl = 'Properties';\r\n private readonly lookupsUrl = 'Lookups';\r\n private readonly configPropertiesUrl = 'Properties';\r\n private readonly groupsUrl = 'identity/Groups';\r\n private readonly countriesUrl = '/assets/countries/countries.json';\r\n private readonly apiTestUrl = 'app/testAPI';\r\n private readonly apiDetectUrl = 'app/detect';\r\n\r\n @Selector()\r\n static properties(state: PropertiesStateModel): PropertyItem[] {\r\n return state.properties;\r\n }\r\n\r\n @Selector()\r\n static selectedProperty(state: PropertiesStateModel): PropertyItem | null {\r\n return state.selectedProperty;\r\n }\r\n\r\n @Selector()\r\n static lookups(state: PropertiesStateModel): LookupDefinition[] {\r\n return state.lookups;\r\n }\r\n\r\n @Selector()\r\n static configTypeProperties(state: PropertiesStateModel): PropertyItem[] {\r\n return state.configTypeProperties;\r\n }\r\n\r\n @Selector()\r\n static groups(state: PropertiesStateModel): GroupDefinition[] {\r\n return state.groups;\r\n }\r\n\r\n @Selector()\r\n static configScopes(state: PropertiesStateModel): ConfigScope[] {\r\n return state.configScopes;\r\n }\r\n\r\n @Selector()\r\n static countries(state: PropertiesStateModel): CountryDefinition[] {\r\n return state.countries;\r\n }\r\n\r\n @Selector()\r\n static apiSchema(state: PropertiesStateModel): ApiSchema | null {\r\n return state.apiSchema;\r\n }\r\n\r\n @Selector()\r\n static apiProperties(state: PropertiesStateModel): ApiPropertyOption[] {\r\n return state.apiProperties;\r\n }\r\n @Selector()\r\n static propertyTypes(state: PropertiesStateModel): any[] {\r\n return state.propertyTypes ?? [];\r\n }\r\n\r\n @Selector()\r\n static breadcrumbItems(state: PropertiesStateModel): BreadcrumbItem[] {\r\n return state.breadcrumbItems;\r\n }\r\n\r\n @Selector()\r\n static defaultViewType(state: PropertiesStateModel): string | null {\r\n return state.defaultViewType;\r\n }\r\n\r\n @Selector()\r\n static isLoadingFactory(state: PropertiesStateModel) {\r\n return (loadingName: PropertiesLoadingName) =>\r\n state.loadingActive.includes(loadingName);\r\n }\r\n\r\n @Selector()\r\n static errorFactory(state: PropertiesStateModel) {\r\n return (loadingName: PropertiesLoadingName) =>\r\n state.errors?.[loadingName] ?? null;\r\n }\r\n\r\n @Selector()\r\n static propertyById(state: PropertiesStateModel) {\r\n return (id: number | string) =>\r\n state.properties.find((property) => property.id === Number(id)) ?? null;\r\n }\r\n\r\n @Action(GetProperties)\r\n getAll(ctx: StateContext<PropertiesStateModel>, action: GetProperties) {\r\n startLoading(ctx, 'getAll');\r\n const state = ctx.getState();\r\n const moduleType = state.moduleType ?? undefined;\r\n const moduleId = state.moduleId ?? undefined;\r\n const parentPath = state.parentPath ?? '';\r\n const params = { ...action.params };\r\n\r\n ctx.patchState({\r\n lastQueryParams: params ?? null,\r\n });\r\n return this.http\r\n .get<Response<PropertyItem[]>>(\r\n `${this.baseUrl}${parentPath}/${moduleType}/${moduleId}`,\r\n {\r\n params: params,\r\n },\r\n )\r\n .pipe(\r\n tap((response) => {\r\n const properties = Array.isArray(response?.data) ? response.data : [];\r\n ctx.patchState({ properties });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load properties';\r\n setLoadingError(ctx, 'getAll', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'getAll')),\r\n );\r\n }\r\n\r\n @Action(GetProperty)\r\n getOne(ctx: StateContext<PropertiesStateModel>, action: GetProperty) {\r\n startLoading(ctx, 'getOne');\r\n\r\n const params = { mode: action.mode ?? 'edit' };\r\n\r\n return this.http\r\n .get<Response<PropertyItem>>(`${this.baseUrl}/${action.id}`, { params })\r\n .pipe(\r\n tap((response) => {\r\n ctx.patchState({\r\n selectedProperty: response?.data ?? null,\r\n });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load property';\r\n setLoadingError(ctx, 'getOne', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'getOne')),\r\n );\r\n }\r\n\r\n @Action(GetLookups)\r\n getLookups(ctx: StateContext<PropertiesStateModel>, _action: GetLookups) {\r\n const state = ctx.getState();\r\n if (state.lookups.length) {\r\n return of(state.lookups);\r\n }\r\n\r\n startLoading(ctx, 'getLookups');\r\n\r\n return this.http.get<Response<LookupDefinition[]>>(this.lookupsUrl).pipe(\r\n tap((response) => {\r\n const lookups = Array.isArray(response?.data) ? response.data : [];\r\n ctx.patchState({ lookups });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to load lookups';\r\n setLoadingError(ctx, 'getLookups', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getLookups')),\r\n );\r\n }\r\n\r\n @Action(GetGroups)\r\n getGroups(ctx: StateContext<PropertiesStateModel>, _action: GetGroups) {\r\n const state = ctx.getState();\r\n if (state.groups.length) {\r\n return of(state.groups);\r\n }\r\n\r\n startLoading(ctx, 'getGroups');\r\n\r\n return this.http.get<Response<GroupDefinition[]>>(this.groupsUrl).pipe(\r\n tap((response) => {\r\n const groups = Array.isArray(response?.data) ? response.data : [];\r\n ctx.patchState({ groups });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to load groups';\r\n setLoadingError(ctx, 'getGroups', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getGroups')),\r\n );\r\n }\r\n\r\n @Action(GetConfigAsType)\r\n getConfigAsType(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: GetConfigAsType,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n // Don't reload if we already have data for this viewType\r\n if (state.configScopes.length) {\r\n return of(state.configScopes);\r\n }\r\n\r\n startLoading(ctx, 'getConfigAsType');\r\n\r\n const url = `${this.baseUrl}/${action.viewType}/GetViewTypeProperties`;\r\n\r\n return this.http.get<Response<ConfigScope[]>>(url).pipe(\r\n tap((response) => {\r\n const configScopes = Array.isArray(response?.data) ? response.data : [];\r\n ctx.patchState({ configScopes });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load configuration scopes';\r\n setLoadingError(ctx, 'getConfigAsType', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getConfigAsType')),\r\n );\r\n }\r\n\r\n @Action(GetCountries)\r\n getCountries(ctx: StateContext<PropertiesStateModel>, _action: GetCountries) {\r\n const state = ctx.getState();\r\n if (state.countries.length) {\r\n return of(state.countries);\r\n }\r\n\r\n startLoading(ctx, 'getCountries');\r\n\r\n return this.http.get<CountryDefinition[]>(this.countriesUrl).pipe(\r\n tap((response) => {\r\n const countries = Array.isArray(response) ? response : [];\r\n ctx.patchState({ countries });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to load countries';\r\n setLoadingError(ctx, 'getCountries', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getCountries')),\r\n );\r\n }\r\n\r\n @Action(TestApiConfiguration)\r\n testApiConfiguration(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: TestApiConfiguration,\r\n ) {\r\n startLoading(ctx, 'testApiConfiguration');\r\n ctx.patchState({\r\n apiSchema: null,\r\n apiProperties: [],\r\n });\r\n\r\n return this.http.post<Response<any>>(this.apiTestUrl, action.payload).pipe(\r\n switchMap((testResponse) => {\r\n const rawData = testResponse?.data;\r\n if (!rawData) {\r\n return of(null);\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('jsonData', JSON.stringify(rawData));\r\n\r\n return this.http\r\n .post<Response<ApiSchema>>(this.apiDetectUrl, formData)\r\n .pipe(\r\n tap((detectResponse) => {\r\n const schema = detectResponse?.data ?? null;\r\n const apiProperties = this.mapSchemaToOptions(schema);\r\n ctx.patchState({\r\n apiSchema: schema,\r\n apiProperties,\r\n });\r\n }),\r\n );\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to test API';\r\n setLoadingError(ctx, 'testApiConfiguration', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'testApiConfiguration')),\r\n );\r\n }\r\n\r\n @Action(ResetApiConfiguration)\r\n resetApiConfiguration(ctx: StateContext<PropertiesStateModel>) {\r\n ctx.patchState({\r\n apiSchema: null,\r\n apiProperties: [],\r\n });\r\n }\r\n\r\n private mapSchemaToOptions(schema: ApiSchema | null): ApiPropertyOption[] {\r\n if (!schema?.properties) {\r\n return [];\r\n }\r\n\r\n return Object.entries(schema.properties).map(([key, definition]) => {\r\n const typeLabel = definition?.type ? ` | ${definition.type}` : '';\r\n return {\r\n key,\r\n name: `${key}${typeLabel}`,\r\n type: definition?.type,\r\n } as ApiPropertyOption;\r\n });\r\n }\r\n\r\n @Action(GetPropertiesForConfigType)\r\n getPropertiesForConfigType(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: GetPropertiesForConfigType,\r\n ) {\r\n startLoading(ctx, 'getConfigProperties');\r\n\r\n const { moduleType, moduleId } = action;\r\n\r\n return this.http\r\n .get<\r\n Response<PropertyItem[]>\r\n >(`${this.configPropertiesUrl}/${moduleType}/${moduleId}`)\r\n .pipe(\r\n tap((response) => {\r\n const configTypeProperties = Array.isArray(response?.data)\r\n ? response.data\r\n : [];\r\n ctx.patchState({ configTypeProperties });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load properties';\r\n setLoadingError(ctx, 'getConfigProperties', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getConfigProperties')),\r\n );\r\n }\r\n\r\n @Action(ResetConfigProperties)\r\n resetConfigProperties(ctx: StateContext<PropertiesStateModel>) {\r\n ctx.patchState({ configTypeProperties: [] });\r\n }\r\n\r\n @Action(ResetConfigScopes)\r\n resetConfigScopes(ctx: StateContext<PropertiesStateModel>) {\r\n ctx.patchState({ configScopes: [] });\r\n }\r\n\r\n @Action(ResetSelectedProperty)\r\n resetSelectedProperty(ctx: StateContext<PropertiesStateModel>) {\r\n ctx.patchState({ selectedProperty: null });\r\n }\r\n\r\n @Action(SetPropertiesModuleInfo)\r\n setModuleInfo(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: SetPropertiesModuleInfo,\r\n ) {\r\n let parentPath = '';\r\n if (action.parentModuleType && action.parentModuleId) {\r\n parentPath = `/${action.parentModuleType}/${action.parentModuleId}`;\r\n } else if (action.parentPath) {\r\n parentPath = action.parentPath;\r\n }\r\n ctx.patchState({\r\n moduleType: action.moduleType,\r\n moduleId: action.moduleId,\r\n parentModuleType: action.parentModuleType ?? null,\r\n parentModuleId: action.parentModuleId ?? null,\r\n parentPath: parentPath ?? '',\r\n });\r\n }\r\n\r\n @Action(CreateProperty)\r\n create(ctx: StateContext<PropertiesStateModel>, action: CreateProperty) {\r\n startLoading(ctx, 'create');\r\n\r\n const state = ctx.getState();\r\n const moduleType = state.moduleType ?? undefined;\r\n const moduleId = state.moduleId ?? undefined;\r\n const parentPath = state.parentPath ?? '';\r\n\r\n if (!moduleType || moduleId === undefined || moduleId === null) {\r\n const message = 'Missing module context for creating property';\r\n setLoadingError(ctx, 'create', message);\r\n endLoading(ctx, 'create');\r\n return of(null);\r\n }\r\n\r\n return this.http\r\n .post<\r\n Response<PropertyItem>\r\n >(`${this.baseUrl}${parentPath}/${moduleType}/${moduleId}`, action.payload)\r\n .pipe(\r\n tap((response) => {\r\n const created = response?.data;\r\n if (!created) {\r\n return;\r\n }\r\n\r\n const state = ctx.getState();\r\n ctx.patchState({\r\n properties: [...state.properties, created],\r\n selectedProperty: created,\r\n });\r\n }),\r\n finalize(() => endLoading(ctx, 'create')),\r\n );\r\n }\r\n\r\n @Action(UpdateProperty)\r\n update(ctx: StateContext<PropertiesStateModel>, action: UpdateProperty) {\r\n startLoading(ctx, 'update');\r\n\r\n const state = ctx.getState();\r\n const moduleType = state.moduleType ?? undefined;\r\n const moduleId = state.moduleId ?? undefined;\r\n const parentPath = state.parentPath ?? '';\r\n\r\n if (!moduleType || moduleId === undefined || moduleId === null) {\r\n const message = 'Missing module context for updating property';\r\n setLoadingError(ctx, 'update', message);\r\n endLoading(ctx, 'update');\r\n return of(null);\r\n }\r\n return this.http\r\n .put<\r\n Response<PropertyItem>\r\n >(`${this.baseUrl}${parentPath}/${moduleType}/${moduleId}/${action.id}`, action.payload)\r\n .pipe(\r\n tap((response) => {\r\n const updated = response?.data;\r\n if (!updated) {\r\n return;\r\n }\r\n\r\n const updatedId = updated.id ?? Number(action.id);\r\n const state = ctx.getState();\r\n const properties = state.properties.some(\r\n (item) => item.id === updatedId,\r\n )\r\n ? state.properties.map((item) =>\r\n item.id === updatedId ? { ...item, ...updated } : item,\r\n )\r\n : [...state.properties, updated];\r\n\r\n ctx.patchState({\r\n properties,\r\n selectedProperty: updated,\r\n });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to update property';\r\n setLoadingError(ctx, 'update', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'update')),\r\n );\r\n }\r\n\r\n @Action(DeleteProperty)\r\n delete(ctx: StateContext<PropertiesStateModel>, action: DeleteProperty) {\r\n startLoading(ctx, 'delete');\r\n\r\n return this.http\r\n .delete<void>(`${this.baseUrl}/${encodeURIComponent(String(action.id))}`)\r\n .pipe(\r\n tap(() => {\r\n const { properties, selectedProperty } = ctx.getState();\r\n const remaining = properties.filter(\r\n (item) => item.id !== Number(action.id),\r\n );\r\n const nextSelected =\r\n selectedProperty && selectedProperty.id === Number(action.id)\r\n ? null\r\n : selectedProperty;\r\n ctx.patchState({\r\n properties: remaining,\r\n selectedProperty: nextSelected,\r\n });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to delete property';\r\n setLoadingError(ctx, 'delete', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'delete')),\r\n );\r\n }\r\n\r\n @Action(SetPropertyTypes)\r\n SetPropertyTypes(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: SetPropertyTypes,\r\n ) {\r\n ctx.patchState({\r\n propertyTypes: action.payload,\r\n });\r\n }\r\n\r\n @Action(SetBreadcrumb)\r\n setBreadcrumb(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: SetBreadcrumb,\r\n ) {\r\n ctx.patchState({\r\n breadcrumbItems: action.items,\r\n });\r\n }\r\n\r\n @Action(SetDefaultViewType)\r\n setDefaultViewType(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: SetDefaultViewType,\r\n ) {\r\n ctx.patchState({\r\n defaultViewType: action.viewType,\r\n });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport type { GroupDefinition } from './properties.model';\r\nimport type { ConfigScope } from './properties.model';\r\nimport type { PropertyItem } from './properties.model';\r\nimport type { CountryDefinition } from './properties.model';\r\nimport type { ApiPropertyOption } from './properties.model';\r\nimport type { ApiSchema } from './properties.model';\r\nimport type { ApiTestPayload } from './properties.model';\r\nimport type { BreadcrumbItem } from '@masterteam/components/breadcrumb';\r\nimport {\r\n CreateProperty,\r\n DeleteProperty,\r\n GetGroups,\r\n GetConfigAsType,\r\n GetLookups,\r\n GetCountries,\r\n TestApiConfiguration,\r\n ResetApiConfiguration,\r\n GetPropertiesForConfigType,\r\n GetProperties,\r\n GetProperty,\r\n ResetConfigProperties,\r\n ResetConfigScopes,\r\n ResetSelectedProperty,\r\n SetPropertiesModuleInfo,\r\n UpdateProperty,\r\n SetPropertyTypes,\r\n SetBreadcrumb,\r\n SetDefaultViewType,\r\n} from './properties.actions';\r\nimport { PropertiesState } from './properties.state';\r\nimport type {\r\n LookupDefinition,\r\n PropertiesLoadingName,\r\n PropertiesQueryParams,\r\n PropertyPayload,\r\n} from './properties.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PropertiesFacade {\r\n private readonly store = inject(Store);\r\n readonly list = select(PropertiesState.properties);\r\n readonly propertyTypes = select<any>(PropertiesState.propertyTypes);\r\n readonly selected = select(PropertiesState.selectedProperty);\r\n readonly lookups = select<LookupDefinition[]>(PropertiesState.lookups);\r\n readonly configProperties = select<PropertyItem[]>(\r\n PropertiesState.configTypeProperties,\r\n );\r\n readonly groups = select<GroupDefinition[]>(PropertiesState.groups);\r\n readonly configScopes = select<ConfigScope[]>(PropertiesState.configScopes);\r\n readonly countries = select<CountryDefinition[]>(PropertiesState.countries);\r\n readonly apiSchema = select<ApiSchema | null>(PropertiesState.apiSchema);\r\n readonly apiProperties = select<ApiPropertyOption[]>(\r\n PropertiesState.apiProperties,\r\n );\r\n readonly breadcrumbItems = select<BreadcrumbItem[]>(\r\n PropertiesState.breadcrumbItems,\r\n );\r\n readonly defaultViewType = select<string | null>(\r\n PropertiesState.defaultViewType,\r\n );\r\n readonly systemProperties = computed(() =>\r\n this.list().filter((property) => Boolean(property.isSystem)),\r\n );\r\n readonly customProperties = computed(() =>\r\n this.list().filter((property) => !Boolean(property.isSystem)),\r\n );\r\n\r\n isLoading(loadingName: PropertiesLoadingName) {\r\n const loadingFactory = select<(name: PropertiesLoadingName) => boolean>(\r\n PropertiesState.isLoadingFactory,\r\n );\r\n return computed(() => loadingFactory()(loadingName));\r\n }\r\n\r\n loadAll(params?: Partial<PropertiesQueryParams>): Observable<unknown> {\r\n return this.store.dispatch(new GetProperties(params));\r\n }\r\n\r\n loadOne(id: string | number, mode: 'edit' = 'edit'): Observable<unknown> {\r\n return this.store.dispatch(new GetProperty(id, mode));\r\n }\r\n\r\n delete(id: string | number): Observable<unknown> {\r\n return this.store.dispatch(new DeleteProperty(id));\r\n }\r\n\r\n create(payload: PropertyPayload): Observable<unknown> {\r\n return this.store.dispatch(new CreateProperty(payload));\r\n }\r\n\r\n update(id: string | number, payload: PropertyPayload): Observable<unknown> {\r\n return this.store.dispatch(new UpdateProperty(id, payload));\r\n }\r\n\r\n setModuleInfo(\r\n moduleType: string,\r\n moduleId: string | number,\r\n parentModuleType?: string,\r\n parentModuleId?: string | number,\r\n parentPath?: string,\r\n ): Observable<unknown> {\r\n return this.store.dispatch(\r\n new SetPropertiesModuleInfo(\r\n moduleType,\r\n moduleId,\r\n parentModuleType,\r\n parentModuleId,\r\n parentPath,\r\n ),\r\n );\r\n }\r\n\r\n loadLookups(): Observable<unknown> {\r\n return this.store.dispatch(new GetLookups());\r\n }\r\n\r\n loadGroups(): Observable<unknown> {\r\n return this.store.dispatch(new GetGroups());\r\n }\r\n\r\n loadConfigAsType(viewType: string): Observable<unknown> {\r\n return this.store.dispatch(new GetConfigAsType(viewType));\r\n }\r\n\r\n loadCountries(): Observable<unknown> {\r\n return this.store.dispatch(new GetCountries());\r\n }\r\n\r\n testApiConfiguration(payload: ApiTestPayload): Observable<unknown> {\r\n return this.store.dispatch(new TestApiConfiguration(payload));\r\n }\r\n\r\n resetApiConfiguration(): Observable<unknown> {\r\n return this.store.dispatch(new ResetApiConfiguration());\r\n }\r\n setPropertyTypes(propertyTypes: any) {\r\n return this.store.dispatch(new SetPropertyTypes(propertyTypes));\r\n }\r\n\r\n loadPropertiesForConfigType(\r\n moduleType: string,\r\n moduleId: string | number,\r\n ): Observable<unknown> {\r\n return this.store.dispatch(\r\n new GetPropertiesForConfigType(moduleType, moduleId),\r\n );\r\n }\r\n\r\n resetSelectedProperty(): Observable<unknown> {\r\n return this.store.dispatch(new ResetSelectedProperty());\r\n }\r\n\r\n resetConfigProperties(): Observable<unknown> {\r\n return this.store.dispatch(new ResetConfigProperties());\r\n }\r\n\r\n resetConfigScopes(): Observable<unknown> {\r\n return this.store.dispatch(new ResetConfigScopes());\r\n }\r\n\r\n setBreadcrumb(items: BreadcrumbItem[]): Observable<unknown> {\r\n return this.store.dispatch(new SetBreadcrumb(items));\r\n }\r\n\r\n setDefaultViewType(viewType: string): Observable<unknown> {\r\n return this.store.dispatch(new SetDefaultViewType(viewType));\r\n }\r\n}\r\n","// store/app.state.ts\r\n\r\nimport { HttpContextToken } from '@angular/common/http';\r\n\r\nexport const REQUEST_CONTEXT = new HttpContextToken<{ useBaseUrl: boolean }>(\r\n () => ({\r\n useBaseUrl: false,\r\n }),\r\n);\r\n","// store/index.ts\r\n// This file exports EVERYTHING - one import for all state needs\r\n\r\n// States\r\n\r\nexport * from './properties/properties.state';\r\nexport * from './properties/properties.model';\r\n\r\n// Actions\r\n\r\nexport * from './properties/properties.actions';\r\n\r\n// Facades\r\n\r\nexport * from './properties/properties.facade';\r\n\r\n// Re-export app state\r\nexport * from './app.state';\r\n","import {\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n linkedSignal,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Table, ColumnDef, TableAction } from '@masterteam/components/table';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { PropertiesFacade, PropertyItem } from '../../store';\r\nimport { Breadcrumb } from '@masterteam/components/breadcrumb';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Divider } from 'primeng/divider';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-properties-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Table,\r\n Breadcrumb,\r\n Card,\r\n Avatar,\r\n Divider,\r\n Button,\r\n TranslocoModule,\r\n ],\r\n templateUrl: './properties-list.html',\r\n styleUrl: './properties-list.scss',\r\n})\r\nexport class PropertiesList {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly defaultTab = 'all';\r\n\r\n tab = input<string>();\r\n\r\n tabs = signal([\r\n {\r\n label: this.transloco.translate('properties.list.tabAll'),\r\n value: 'all',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.tabSystem'),\r\n value: 'system',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.tabCustom'),\r\n value: 'custom',\r\n },\r\n ]);\r\n\r\n activeTab = linkedSignal(() => {\r\n return this.tab() || this.defaultTab;\r\n });\r\n propertyTypes = signal([\r\n {\r\n label: this.transloco.translate('properties.list.typeShortText'),\r\n icon: 'editor.type-square',\r\n value: 'Text',\r\n color: 'pink',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeParagraph'),\r\n icon: 'editor.line-height',\r\n value: 'LongText',\r\n color: 'sky',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeUser'),\r\n icon: 'user.user-01',\r\n value: 'User',\r\n color: 'yellow',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeNumber'),\r\n icon: 'editor.letter-spacing-01',\r\n value: 'Number',\r\n color: 'violet',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeCurrency'),\r\n icon: 'finance.currency-dollar',\r\n value: 'Currency',\r\n color: 'indigo',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeLookup'),\r\n icon: 'custom.list-cards',\r\n value: 'Lookup',\r\n color: 'lime',\r\n },\r\n ]);\r\n\r\n readonly tableColumns = signal<ColumnDef[]>([\r\n {\r\n key: 'name',\r\n label: this.transloco.translate('properties.list.columnName'),\r\n filterConfig: {\r\n type: 'text',\r\n label: this.transloco.translate('properties.list.columnName'),\r\n },\r\n },\r\n {\r\n key: 'viewType',\r\n label: this.transloco.translate('properties.list.columnType'),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.transloco.translate('properties.list.columnType'),\r\n options: this.propertyTypes(),\r\n },\r\n },\r\n {\r\n key: 'isRequired',\r\n label: this.transloco.translate('properties.list.columnRequired'),\r\n type: 'boolean',\r\n filterConfig: {\r\n type: 'select',\r\n label: this.transloco.translate('properties.list.columnRequired'),\r\n options: [\r\n { label: 'Yes', value: true },\r\n { label: 'No', value: false },\r\n ],\r\n },\r\n },\r\n ]);\r\n\r\n tableActions = computed<TableAction[]>(() => {\r\n if (this.tableData().length === 0 || this.activeTab() === 'system') {\r\n return [];\r\n }\r\n return [\r\n {\r\n icon: 'general.plus',\r\n label: this.transloco.translate('properties.list.createAction'),\r\n color: 'primary',\r\n action: () => {\r\n this.createProperty();\r\n },\r\n },\r\n ];\r\n });\r\n deletingRowIds = signal<any[]>([]);\r\n readonly rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.transloco.translate('properties.list.editAction'),\r\n color: 'primary',\r\n action: (row) => this.editRow(row),\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.transloco.translate('properties.list.deleteAction'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row) => this.deleteRow(row),\r\n hidden: (row: any) => !!row.isSystem,\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: PropertyItem) => this.deletingRowIds().includes(row.id),\r\n },\r\n ]);\r\n\r\n readonly loading = this.facade.isLoading('getAll');\r\n\r\n readonly tableData = computed(() => {\r\n const tab = this.activeTab();\r\n const allProperties = this.facade.list();\r\n\r\n switch (tab) {\r\n case 'system':\r\n return this.facade.systemProperties();\r\n case 'custom':\r\n return this.facade.customProperties();\r\n case 'all':\r\n default:\r\n return allProperties;\r\n }\r\n });\r\n\r\n readonly breadcrumbItems = this.facade.breadcrumbItems;\r\n\r\n private editRow(row: PropertyItem): void {\r\n if (!row?.id) {\r\n return;\r\n }\r\n this.navigatePreservingTab(['../properties-form', row.id]);\r\n }\r\n\r\n private deleteRow(row: PropertyItem): void {\r\n if (!row?.id) {\r\n return;\r\n }\r\n this.deletingRowIds.update((ids) => [...ids, row.id]);\r\n this.facade\r\n .delete(row.id)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.id),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n createProperty() {\r\n this.navigatePreservingTab(['../properties-form']);\r\n }\r\n\r\n createPropertyWithType(viewType: string) {\r\n this.facade.setDefaultViewType(viewType);\r\n this.createProperty();\r\n }\r\n onTabChange(tab: string): void {\r\n const currentTab = tab;\r\n if (currentTab != this.tab()) {\r\n this.updateTabQueryParam(currentTab);\r\n }\r\n }\r\n private updateTabQueryParam(tab: string): void {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { tab },\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n });\r\n }\r\n\r\n private navigatePreservingTab(commands: any[]): void {\r\n this.router.navigate(commands, {\r\n relativeTo: this.route,\r\n queryParams: { tab: this.activeTab() },\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n}\r\n","<div class=\"space-y-3\">\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"space-y-1\">\r\n <h1 class=\"text-xl font-semibold text-slate-900 tracking-tight\">\r\n {{ \"properties.list.pageTitle\" | transloco }}\r\n </h1>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems()\"\r\n [styleClass]=\"'flex justify-center'\"\r\n >\r\n </mt-breadcrumb>\r\n </div>\r\n </div>\r\n <mt-card paddingless>\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n (onTabChange)=\"onTabChange($event)\"\r\n [data]=\"tableData()\"\r\n [actions]=\"tableActions()\"\r\n [columns]=\"tableColumns()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n >\r\n <ng-template #empty>\r\n <div headless class=\"flex-col justify-center items-center w-full p-5\">\r\n <div\r\n class=\"content flex flex-col gap-5 items-center text-center mb-5\"\r\n >\r\n <svg\r\n width=\"152\"\r\n height=\"120\"\r\n viewBox=\"0 0 152 120\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <circle cx=\"76\" cy=\"52\" r=\"52\" fill=\"#E9EAEB\" />\r\n <g filter=\"url(#filter0_ddd_2474_28277)\">\r\n <path\r\n d=\"M77.6 16C66.8273 16 57.2978 21.3233 51.4987 29.4829C49.605 29.0363 47.6301 28.8 45.6 28.8C31.4615 28.8 20 40.2615 20 54.4C20 68.5385 31.4615 80 45.6 80L109.6 80C121.971 80 132 69.9712 132 57.6C132 45.2288 121.971 35.2 109.6 35.2C108.721 35.2 107.854 35.2506 107.002 35.349C102.098 23.9677 90.7797 16 77.6 16Z\"\r\n fill=\"#FAFAFA\"\r\n />\r\n <ellipse\r\n cx=\"45.6\"\r\n cy=\"54.3998\"\r\n rx=\"25.6\"\r\n ry=\"25.6\"\r\n fill=\"url(#paint0_linear_2474_28277)\"\r\n />\r\n <circle\r\n cx=\"77.6016\"\r\n cy=\"48\"\r\n r=\"32\"\r\n fill=\"url(#paint1_linear_2474_28277)\"\r\n />\r\n <ellipse\r\n cx=\"109.599\"\r\n cy=\"57.6002\"\r\n rx=\"22.4\"\r\n ry=\"22.4\"\r\n fill=\"url(#paint2_linear_2474_28277)\"\r\n />\r\n </g>\r\n <circle cx=\"21\" cy=\"19\" r=\"5\" fill=\"#F5F5F5\" />\r\n <circle cx=\"18\" cy=\"109\" r=\"7\" fill=\"#F5F5F5\" />\r\n <circle cx=\"145\" cy=\"35\" r=\"7\" fill=\"#F5F5F5\" />\r\n <circle cx=\"134\" cy=\"8\" r=\"4\" fill=\"#F5F5F5\" />\r\n <foreignObject x=\"44\" y=\"54\" width=\"64\" height=\"64\">\r\n <div\r\n xmlns=\"http://www.w3.org/1999/xhtml\"\r\n style=\"\r\n backdrop-filter: blur(4px);\r\n clip-path: url(#bgblur_0_2474_28277_clip_path);\r\n height: 100%;\r\n width: 100%;\r\n \"\r\n ></div>\r\n </foreignObject>\r\n <g data-figma-bg-blur-radius=\"8\">\r\n <path\r\n d=\"M52 86C52 72.7452 62.7452 62 76 62C89.2548 62 100 72.7452 100 86C100 99.2548 89.2548 110 76 110C62.7452 110 52 99.2548 52 86Z\"\r\n fill=\"#344054\"\r\n fill-opacity=\"0.4\"\r\n />\r\n <path\r\n d=\"M85 95L81.5001 91.5M84 85.5C84 90.1944 80.1944 94 75.5 94C70.8056 94 67 90.1944 67 85.5C67 80.8056 70.8056 77 75.5 77C80.1944 77 84 80.8056 84 85.5Z\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_ddd_2474_28277\"\r\n x=\"0\"\r\n y=\"16\"\r\n width=\"152\"\r\n height=\"104\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\"\r\n >\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feMorphology\r\n radius=\"1.5\"\r\n operator=\"erode\"\r\n in=\"SourceAlpha\"\r\n result=\"effect1_dropShadow_2474_28277\"\r\n />\r\n <feOffset dy=\"3\" />\r\n <feGaussianBlur stdDeviation=\"1.5\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.0392157 0 0 0 0 0.0496732 0 0 0 0 0.0705882 0 0 0 0.04 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2474_28277\"\r\n />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feMorphology\r\n radius=\"4\"\r\n operator=\"erode\"\r\n in=\"SourceAlpha\"\r\n result=\"effect2_dropShadow_2474_28277\"\r\n />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.0392157 0 0 0 0 0.0496732 0 0 0 0 0.0705882 0 0 0 0.03 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"effect1_dropShadow_2474_28277\"\r\n result=\"effect2_dropShadow_2474_28277\"\r\n />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feMorphology\r\n radius=\"4\"\r\n operator=\"erode\"\r\n in=\"SourceAlpha\"\r\n result=\"effect3_dropShadow_2474_28277\"\r\n />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.0392157 0 0 0 0 0.0496732 0 0 0 0 0.0705882 0 0 0 0.08 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"effect2_dropShadow_2474_28277\"\r\n result=\"effect3_dropShadow_2474_28277\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect3_dropShadow_2474_28277\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <clipPath\r\n id=\"bgblur_0_2474_28277_clip_path\"\r\n transform=\"translate(-44 -54)\"\r\n >\r\n <path\r\n d=\"M52 86C52 72.7452 62.7452 62 76 62C89.2548 62 100 72.7452 100 86C100 99.2548 89.2548 110 76 110C62.7452 110 52 99.2548 52 86Z\"\r\n />\r\n </clipPath>\r\n <linearGradient\r\n id=\"paint0_linear_2474_28277\"\r\n x1=\"25.9429\"\r\n y1=\"37.4855\"\r\n x2=\"71.2\"\r\n y2=\"79.9998\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stop-color=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"paint1_linear_2474_28277\"\r\n x1=\"53.0301\"\r\n y1=\"26.8571\"\r\n x2=\"109.602\"\r\n y2=\"80\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stop-color=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"paint2_linear_2474_28277\"\r\n x1=\"92.3992\"\r\n y1=\"42.8002\"\r\n x2=\"131.999\"\r\n y2=\"80.0002\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stop-color=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n\r\n <div class=\"flex flex-col gap-1\">\r\n <div class=\"text-md text-surface-600\">\r\n {{ \"properties.list.emptyStateNoData\" | transloco }}\r\n </div>\r\n </div>\r\n <div>\r\n <mt-button\r\n [label]=\"'properties.list.addNewProperty' | transloco\"\r\n icon=\"general.plus\"\r\n (click)=\"createProperty()\"\r\n />\r\n </div>\r\n </div>\r\n <p-divider type=\"solid\">\r\n <div class=\"text-lg text-surface-600\">\r\n {{ \"properties.list.emptyStateTemplate\" | transloco }}\r\n </div>\r\n </p-divider>\r\n <div class=\"flex gap-3 mt-5 justify-center\">\r\n @for (card of propertyTypes(); track card.label) {\r\n <mt-card\r\n headless\r\n class=\"w-25 tailwind-4 cursor-pointer\"\r\n style=\"background-color: #fafafa\"\r\n (click)=\"createPropertyWithType(card.value)\"\r\n >\r\n <div\r\n class=\"content flex flex-col gap-3 items-center text-center\"\r\n >\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + card.color + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"'var(--p-' + card.color + '-600)'\"\r\n [icon]=\"card.icon\"\r\n shape=\"square\"\r\n ></mt-avatar>\r\n <div class=\"flex flex-col gap-1\">\r\n <div class=\"text-xs font-normal\">{{ card.label }}</div>\r\n </div>\r\n </div>\r\n </mt-card>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n </mt-table>\r\n </mt-card>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n effect,\r\n forwardRef,\r\n inject,\r\n signal,\r\n computed,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n NG_VALUE_ACCESSOR,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { TextField } from '@masterteam/components/text-field';\r\nimport { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport type { ApiConfigurationValue, ApiSchema } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\ntype HeaderFormGroup = FormGroup<{\r\n key: FormControl<string>;\r\n value: FormControl<string>;\r\n}>;\r\n\r\n@Component({\r\n selector: 'mt-api-configuration',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n TextField,\r\n SelectField,\r\n ToggleField,\r\n Button,\r\n TranslocoModule,\r\n ],\r\n templateUrl: './api-configuration.html',\r\n styleUrl: './api-configuration.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ApiConfiguration),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ApiConfiguration implements ControlValueAccessor {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly destroyRef = inject(DestroyRef);\r\n readonly transloco = inject(TranslocoService);\r\n\r\n private readonly schema = signal<ApiSchema | null>(null);\r\n private isWriting = false;\r\n private touched = false;\r\n\r\n readonly isTesting = this.facade.isLoading('testApiConfiguration');\r\n readonly apiProperties = this.facade.apiProperties;\r\n readonly hasDetectedSchema = computed(() => this.apiProperties().length > 0);\r\n\r\n readonly form = new FormGroup({\r\n endpoint: new FormControl<string>('', {\r\n nonNullable: true,\r\n validators: [Validators.required],\r\n }),\r\n headers: new FormArray<HeaderFormGroup>([]),\r\n key: new FormControl<string | null>(null),\r\n value: new FormControl<string | null>(null),\r\n supportMultiSelect: new FormControl<boolean>(false, { nonNullable: true }),\r\n });\r\n\r\n private onChange: (value: ApiConfigurationValue | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n private readonly formChanges = toSignal(this.form.valueChanges, {\r\n initialValue: this.form.getRawValue(),\r\n });\r\n\r\n constructor() {\r\n this.facade.resetApiConfiguration();\r\n effect(() => {\r\n this.formChanges();\r\n this.emitValue();\r\n });\r\n\r\n effect(() => {\r\n const latestSchema = this.facade.apiSchema();\r\n if (latestSchema !== undefined) {\r\n this.schema.set(latestSchema);\r\n if (!this.isWriting) {\r\n this.emitValue(false);\r\n }\r\n }\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.facade.resetApiConfiguration();\r\n });\r\n }\r\n\r\n get headers(): FormArray<HeaderFormGroup> {\r\n return this.form.controls.headers;\r\n }\r\n\r\n writeValue(value: ApiConfigurationValue | null): void {\r\n this.isWriting = true;\r\n try {\r\n if (!value) {\r\n this.form.reset(\r\n {\r\n endpoint: '',\r\n key: null,\r\n value: null,\r\n supportMultiSelect: false,\r\n },\r\n { emitEvent: false },\r\n );\r\n this.setHeadersFromRecord({});\r\n this.schema.set(null);\r\n this.touched = false;\r\n return;\r\n }\r\n\r\n this.schema.set(value.schema ?? null);\r\n this.form.patchValue(\r\n {\r\n endpoint: value.endpoint ?? '',\r\n key: value.key ?? null,\r\n value: value.value ?? null,\r\n supportMultiSelect: !!value.supportMultiSelect,\r\n },\r\n { emitEvent: false },\r\n );\r\n this.setHeadersFromRecord(value.headers ?? {});\r\n this.touched = false;\r\n } finally {\r\n this.isWriting = false;\r\n this.emitValue(false);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: ApiConfigurationValue | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.form.disable({ emitEvent: false });\r\n } else {\r\n this.form.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n addHeader(): void {\r\n this.headers.push(this.createHeaderGroup());\r\n }\r\n\r\n removeHeader(index: number): void {\r\n this.headers.removeAt(index);\r\n this.emitValue();\r\n }\r\n\r\n testApi(): void {\r\n if (!this.form.controls.endpoint.valid) {\r\n this.form.controls.endpoint.markAsTouched();\r\n return;\r\n }\r\n\r\n const headers = this.headersToRecord();\r\n const payload = {\r\n endpoint: this.form.controls.endpoint.value,\r\n headers: Object.keys(headers).length ? headers : undefined,\r\n };\r\n\r\n this.facade.testApiConfiguration(payload).subscribe();\r\n }\r\n\r\n private emitValue(triggerTouched = true): void {\r\n if (this.isWriting) {\r\n return;\r\n }\r\n\r\n const headers = this.headersToRecord();\r\n const value: ApiConfigurationValue = {\r\n endpoint: this.form.controls.endpoint.value,\r\n headers,\r\n key: this.form.controls.key.value ?? undefined,\r\n value: this.form.controls.value.value ?? undefined,\r\n supportMultiSelect: this.form.controls.supportMultiSelect.value,\r\n schema: this.schema(),\r\n };\r\n\r\n this.onChange(value);\r\n\r\n if (triggerTouched && !this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n private createHeaderGroup(\r\n initial: Partial<{ key: string; value: string }> = {},\r\n ): HeaderFormGroup {\r\n return new FormGroup({\r\n key: new FormControl(initial.key ?? '', { nonNullable: true }),\r\n value: new FormControl(initial.value ?? '', { nonNullable: true }),\r\n });\r\n }\r\n\r\n private setHeadersFromRecord(headers: Record<string, string>): void {\r\n while (this.headers.length) {\r\n this.headers.removeAt(0);\r\n }\r\n\r\n Object.entries(headers).forEach(([key, value]) => {\r\n this.headers.push(this.createHeaderGroup({ key, value }));\r\n });\r\n }\r\n\r\n private headersToRecord(): Record<string, string> {\r\n return this.headers.controls.reduce<Record<string, string>>(\r\n (acc, group) => {\r\n const key = group.controls.key.value?.trim();\r\n if (key) {\r\n acc[key] = group.controls.value.value ?? '';\r\n }\r\n return acc;\r\n },\r\n {},\r\n );\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"space-y-6\">\r\n <div class=\"space-y-4 rounded-xl bg-content px-6 py-4 shadow-sm\">\r\n <div class=\"grid items-end gap-3 md:grid-cols-[minmax(0,1fr)_auto]\">\r\n <mt-text-field\r\n formControlName=\"endpoint\"\r\n [label]=\"'properties.form.endpoint' | transloco\"\r\n [placeholder]=\"'properties.form.endpointPlaceholder' | transloco\"\r\n />\r\n <div class=\"flex justify-end gap-2\">\r\n <mt-button\r\n type=\"button\"\r\n [text]=\"true\"\r\n icon=\"general.plus\"\r\n [label]=\"'properties.form.addHeader' | transloco\"\r\n (click)=\"addHeader()\"\r\n />\r\n <mt-button\r\n type=\"button\"\r\n [label]=\"'properties.form.testApi' | transloco\"\r\n [loading]=\"isTesting()\"\r\n (click)=\"testApi()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (headers.controls.length) {\r\n <div class=\"space-y-3\">\r\n <div class=\"text-sm font-medium text-surface-500\">\r\n {{ \"properties.form.headers\" | transloco }}\r\n </div>\r\n <div class=\"space-y-3\">\r\n @for (\r\n headerCtrl of headers.controls;\r\n track headerCtrl;\r\n let i = $index\r\n ) {\r\n <div\r\n [formGroup]=\"headerCtrl\"\r\n class=\"grid items-end gap-3 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto]\"\r\n >\r\n <mt-text-field\r\n formControlName=\"key\"\r\n [label]=\"'properties.form.headerKey' | transloco\"\r\n />\r\n <mt-text-field\r\n formControlName=\"value\"\r\n [label]=\"'properties.form.headerValue' | transloco\"\r\n />\r\n <mt-button\r\n type=\"button\"\r\n [text]=\"true\"\r\n icon=\"general.trash-01\"\r\n (click)=\"removeHeader(i)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <p class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.noHeadersMessage\" | transloco }}\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"space-y-4 rounded-xl bg-content px-6 py-4 shadow-sm\">\r\n @if (hasDetectedSchema()) {\r\n <div class=\"grid gap-4 md:grid-cols-2\">\r\n <mt-select-field\r\n formControlName=\"key\"\r\n [options]=\"apiProperties()\"\r\n [showClear]=\"true\"\r\n optionLabel=\"name\"\r\n optionValue=\"key\"\r\n [label]=\"'properties.form.keyField' | transloco\"\r\n />\r\n <mt-select-field\r\n formControlName=\"value\"\r\n [options]=\"apiProperties()\"\r\n [showClear]=\"true\"\r\n optionLabel=\"name\"\r\n optionValue=\"key\"\r\n [label]=\"'properties.form.valueField' | transloco\"\r\n />\r\n </div>\r\n } @else {\r\n <p class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.messageTestApiPrompt\" | transloco }}\r\n </p>\r\n }\r\n\r\n <div class=\"flex items-center justify-between gap-4\">\r\n <mt-toggle-field\r\n formControlName=\"supportMultiSelect\"\r\n [label]=\"'properties.form.labelSupportMultiSelect' | transloco\"\r\n />\r\n @if (isTesting()) {\r\n <span class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.messageTesting\" | transloco }}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n} from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-check-list-form-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './check-list-form-configuration.html',\r\n styleUrl: './check-list-form-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class CheckListFormConfiguration implements OnDestroy {\r\n private readonly propertiesFacade = inject(PropertiesFacade);\r\n private readonly controlContainer = inject(ControlContainer);\r\n private readonly parentGroup = this.controlContainer.control as FormGroup;\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly lookups = this.propertiesFacade.lookups;\r\n readonly configScopes = this.propertiesFacade.configScopes;\r\n readonly configProperties = this.propertiesFacade.configProperties;\r\n\r\n readonly configuration = toSignal(\r\n this.parentGroup.valueChanges.pipe(\r\n startWith(this.parentGroup.value),\r\n map((value) => value?.configuration),\r\n distinctUntilChanged(),\r\n ),\r\n { initialValue: this.parentGroup.value?.configuration },\r\n );\r\n\r\n readonly scopeItems = computed(() => {\r\n const scope = this.configScopes()[0];\r\n return scope?.items ?? [];\r\n });\r\n\r\n readonly formConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n {\r\n key: 'lookup',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectLookup'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n filter: true,\r\n options: this.lookups(),\r\n },\r\n {\r\n key: 'scopeId',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectScope'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n options: this.scopeItems(),\r\n filter: true,\r\n },\r\n new PickListFieldConfig({\r\n key: 'properties',\r\n cssClass: 'md:col-span-2',\r\n options: this.configProperties(),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableProperties',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedProperties',\r\n ),\r\n }),\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.lookups().length) {\r\n this.propertiesFacade.loadLookups();\r\n }\r\n });\r\n\r\n effect(() => {\r\n const scopeId = this.configuration()?.scopeId;\r\n if (scopeId) {\r\n const scopeType = this.configScopes()[0]?.scope;\r\n if (scopeType) {\r\n this.propertiesFacade.loadPropertiesForConfigType(scopeType, scopeId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.propertiesFacade.resetConfigProperties();\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n} from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-dynamic-list-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './dynamic-list-configuration.html',\r\n styleUrl: './dynamic-list-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class DynamicListConfiguration implements OnDestroy {\r\n private readonly propertiesFacade = inject(PropertiesFacade);\r\n private readonly controlContainer = inject(ControlContainer);\r\n private readonly parentGroup = this.controlContainer.control as FormGroup;\r\n private readonly transloco = inject(TranslocoService);\r\n readonly configScopes = this.propertiesFacade.configScopes;\r\n readonly configProperties = this.propertiesFacade.configProperties;\r\n\r\n readonly configuration = toSignal(\r\n this.parentGroup.valueChanges.pipe(\r\n startWith(this.parentGroup.value),\r\n map((value) => value?.configuration),\r\n distinctUntilChanged(),\r\n ),\r\n { initialValue: this.parentGroup.value?.configuration },\r\n );\r\n\r\n readonly scopeItems = computed(() => {\r\n const scope = this.configScopes()[0];\r\n return scope?.items ?? [];\r\n });\r\n\r\n readonly formConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n {\r\n key: 'scopeId',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectScope'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n filter: true,\r\n\r\n options: this.scopeItems(),\r\n },\r\n new PickListFieldConfig({\r\n key: 'properties',\r\n cssClass: 'md:col-span-2',\r\n options: this.configProperties(),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableProperties',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedProperties',\r\n ),\r\n }),\r\n {\r\n key: 'mappingBehaviour',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.mapToActual'),\r\n cssClass: 'md:col-span-2',\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n const scopeId = this.configuration()?.scopeId;\r\n if (scopeId) {\r\n const scopeType = this.configScopes()[0]?.scope;\r\n if (scopeType) {\r\n this.propertiesFacade.loadPropertiesForConfigType(scopeType, scopeId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.propertiesFacade.resetConfigProperties();\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n} from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-editable-list-view-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './editable-list-view-configuration.html',\r\n styleUrl: './editable-list-view-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class EditableListViewConfiguration implements OnDestroy {\r\n private readonly propertiesFacade = inject(PropertiesFacade);\r\n private readonly controlContainer = inject(ControlContainer);\r\n private readonly parentGroup = this.controlContainer.control as FormGroup;\r\n private readonly transloco = inject(TranslocoService);\r\n readonly configScopes = this.propertiesFacade.configScopes;\r\n readonly configProperties = this.propertiesFacade.configProperties;\r\n\r\n readonly configuration = toSignal(\r\n this.parentGroup.valueChanges.pipe(\r\n startWith(this.parentGroup.value),\r\n map((value) => value?.configuration),\r\n distinctUntilChanged(),\r\n ),\r\n { initialValue: this.parentGroup.value?.configuration },\r\n );\r\n\r\n readonly scopeItems = computed(() => {\r\n const scope = this.configScopes()[0];\r\n return scope?.items ?? [];\r\n });\r\n\r\n readonly formConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n {\r\n key: 'scopeId',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectScope'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n options: this.scopeItems(),\r\n },\r\n\r\n new PickListFieldConfig({\r\n key: 'Properties',\r\n cssClass: 'md:col-span-2',\r\n options: this.configProperties(),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableProperties',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedProperties',\r\n ),\r\n }),\r\n {\r\n key: 'isEditable',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.isEditable'),\r\n },\r\n {\r\n key: 'preserveValue',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.preserveValue'),\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n const scopeId = this.configuration()?.scopeId;\r\n if (scopeId) {\r\n const scopeType = this.configScopes()[0]?.scope;\r\n if (scopeType) {\r\n this.propertiesFacade.loadPropertiesForConfigType(scopeType, scopeId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.propertiesFacade.resetConfigProperties();\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n signal,\r\n} from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-internal-module-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './internal-module-configuration.html',\r\n styleUrl: './internal-module-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class InternalModuleConfiguration implements OnDestroy {\r\n // private readonly workspaceStructureFacade = inject(WorkspaceStructureFacade);\r\n // = this.workspaceStructureFacade.workspaceNodes;\r\n levels: any;\r\n private readonly propertiesFacade = inject(PropertiesFacade);\r\n private cc = inject(ControlContainer);\r\n private readonly transloco = inject(TranslocoService);\r\n parentGroup = this.cc.control as FormGroup;\r\n readonly configProperties = this.propertiesFacade.configProperties;\r\n readonly configScopes = this.propertiesFacade.configScopes;\r\n readonly configuration = toSignal(\r\n this.parentGroup.valueChanges.pipe(\r\n startWith(this.parentGroup.value),\r\n map((v) => v?.configuration),\r\n distinctUntilChanged(),\r\n ),\r\n { initialValue: this.parentGroup.value?.configuration },\r\n );\r\n PrevModuleId = signal<string | null>(null);\r\n\r\n readonly scopeItems = computed(() => {\r\n const selectedType = this.configuration()?.type;\r\n if (!selectedType) return [];\r\n const scope = this.configScopes().find((s) => s.scope === selectedType);\r\n return scope?.items ?? [];\r\n });\r\n readonly formConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3 align-items-end ',\r\n fields: [\r\n {\r\n key: 'type',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.type'),\r\n optionLabel: 'scope',\r\n optionValue: 'scope',\r\n options: this.configScopes(),\r\n },\r\n {\r\n key: 'scopeId',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectScope'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n filter: true,\r\n\r\n options: this.scopeItems(),\r\n },\r\n {\r\n type: 'select',\r\n key: 'property',\r\n label: this.transloco.translate('properties.form.valueProperty'),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n options: this.configProperties(),\r\n },\r\n\r\n new PickListFieldConfig({\r\n cssClass: 'md:col-span-2 mt-2',\r\n key: 'propertyDetails',\r\n options: this.configProperties(),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableProperties',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedProperties',\r\n ),\r\n }),\r\n {\r\n cssClass: 'md:col-span-2',\r\n key: 'preserveValue',\r\n type: 'toggle',\r\n label: this.transloco.translate(\r\n 'properties.form.labelPreserveValue',\r\n ),\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n constructor() {\r\n effect(() => {\r\n if (this.configuration()?.scopeId) {\r\n const moduleType = this.configuration()?.type;\r\n const moduleId = this.configuration()?.scopeId;\r\n if (moduleId == this.PrevModuleId()) {\r\n return;\r\n }\r\n if (moduleType && moduleId) {\r\n this.PrevModuleId.set(moduleId);\r\n this.propertiesFacade.loadPropertiesForConfigType(\r\n moduleType,\r\n moduleId,\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.propertiesFacade.resetConfigProperties();\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, computed, effect, inject } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\n\r\n@Component({\r\n selector: 'mt-location-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './location-configuration.html',\r\n styleUrl: './location-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class LocationConfiguration {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly countries = this.facade.countries;\r\n\r\n readonly formConfig = computed<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass:\r\n 'grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3',\r\n fields: [\r\n {\r\n key: 'country',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectCountry'),\r\n optionLabel: 'name',\r\n optionValue: 'name',\r\n options: this.countries(),\r\n filter: true,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.countries().length) {\r\n this.facade.loadCountries();\r\n }\r\n });\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, computed, effect, inject } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\n\r\n@Component({\r\n selector: 'mt-lookup-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './lookup-configuration.html',\r\n styleUrl: './lookup-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class LookupConfiguration {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly lookups = this.facade.lookups;\r\n\r\n readonly formConfig = computed<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass:\r\n 'grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3',\r\n fields: [\r\n {\r\n key: 'lookup',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectLookup'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n options: this.lookups(),\r\n filter: true,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.lookups().length) {\r\n this.facade.loadLookups();\r\n }\r\n });\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, inject, signal } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Component({\r\n selector: 'mt-percentage-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './percentage-configuration.html',\r\n styleUrl: './percentage-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class PercentageConfiguration {\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly formConfig = signal<DynamicFormConfig>({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass:\r\n 'grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3',\r\n fields: [\r\n {\r\n key: 'color',\r\n type: 'color-picker',\r\n label: this.transloco.translate('properties.form.selectColor'),\r\n },\r\n ],\r\n },\r\n ],\r\n });\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, computed, effect, inject } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\n\r\n@Component({\r\n selector: 'mt-user-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './user-configuration.html',\r\n styleUrl: './user-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class UserConfiguration {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly groups = this.facade.groups;\r\n\r\n readonly formConfig = computed<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass:\r\n 'grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3',\r\n fields: [\r\n {\r\n key: 'group',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectGroup'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n options: this.groups(),\r\n filter: true,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.groups().length) {\r\n this.facade.loadGroups();\r\n }\r\n });\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, inject, signal } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\nexport const ATTACHMENT_ACCEPT = [\r\n {\r\n key: 'image/*',\r\n name: 'image',\r\n },\r\n {\r\n key: 'application/pdf',\r\n name: 'pdf',\r\n },\r\n {\r\n key: '.mpp',\r\n name: 'mpp',\r\n },\r\n {\r\n key: '.xer',\r\n name: 'xer',\r\n },\r\n {\r\n key: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n name: 'word',\r\n },\r\n {\r\n key: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n name: 'excel',\r\n },\r\n {\r\n key: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n name: 'powrpoint',\r\n },\r\n {\r\n key: '.eml',\r\n name: 'eml',\r\n },\r\n {\r\n key: '.doc',\r\n name: 'doc',\r\n },\r\n {\r\n key: '.docx',\r\n name: 'docx',\r\n },\r\n {\r\n key: '.ppt',\r\n name: 'ppt',\r\n },\r\n {\r\n key: '.pptx',\r\n name: 'pptx',\r\n },\r\n {\r\n key: '.xls',\r\n name: 'xls',\r\n },\r\n {\r\n key: '.xlsx',\r\n name: 'xlsx',\r\n },\r\n {\r\n key: '.csv',\r\n name: 'csv',\r\n },\r\n {\r\n key: '.mp4',\r\n name: 'mp4',\r\n },\r\n {\r\n key: '.mov',\r\n name: 'mov',\r\n },\r\n {\r\n key: '.wmv',\r\n name: 'wmv',\r\n },\r\n {\r\n key: '.avi',\r\n name: 'avi',\r\n },\r\n {\r\n key: '.mkv',\r\n name: 'mkv',\r\n },\r\n {\r\n key: '.msg',\r\n name: 'msg',\r\n },\r\n {\r\n key: '.zip',\r\n name: 'zip',\r\n },\r\n {\r\n key: '.rar',\r\n name: 'rar',\r\n },\r\n {\r\n key: '.7z',\r\n name: '7z',\r\n },\r\n {\r\n key: '.gz',\r\n name: 'gz',\r\n },\r\n {\r\n key: '.gzip',\r\n name: 'gzip',\r\n },\r\n {\r\n key: '.gzip',\r\n name: 'gzip',\r\n },\r\n];\r\n\r\n@Component({\r\n selector: 'mt-attachment-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './attachment-configuration.html',\r\n styleUrl: './attachment-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class AttachmentConfiguration {\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly formConfig = signal<DynamicFormConfig>({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n new PickListFieldConfig({\r\n key: 'AcceptTypes',\r\n options: ATTACHMENT_ACCEPT,\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableTypes',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedTypes',\r\n ),\r\n cssClass: 'md:col-span-2',\r\n }),\r\n {\r\n key: 'IsMulitple',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.allowMultiple'),\r\n },\r\n ],\r\n },\r\n ],\r\n });\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import {\r\n Component,\r\n ComponentRef,\r\n EnvironmentInjector,\r\n OnDestroy,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n linkedSignal,\r\n signal,\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Page } from '@masterteam/components/page';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, ValidatorConfig } from '@masterteam/components';\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { Subscription, distinctUntilChanged, map } from 'rxjs';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\r\nimport { ApiConfiguration } from './configuration-types/api-configuration/api-configuration';\r\nimport { CheckListFormConfiguration } from './configuration-types/check-list-form-configuration/check-list-form-configuration';\r\nimport { DynamicListConfiguration } from './configuration-types/dynamic-list-configuration/dynamic-list-configuration';\r\nimport { EditableListViewConfiguration } from './configuration-types/editable-list-view-configuration/editable-list-view-configuration';\r\nimport { InternalModuleConfiguration } from './configuration-types/internal-module-configuration/internal-module-configuration';\r\nimport { LocationConfiguration } from './configuration-types/location-configuration/location-configuration';\r\nimport { LookupConfiguration } from './configuration-types/lookup-configuration/lookup-configuration';\r\nimport { PercentageConfiguration } from './configuration-types/percentage-configuration/percentage-configuration';\r\nimport { UserConfiguration } from './configuration-types/user-configuration/user-configuration';\r\nimport {\r\n PropertyItem,\r\n PropertyPayload,\r\n} from '../../store/properties/properties.model';\r\nimport { AttachmentConfiguration } from './configuration-types/attachment-configuration/attachment-configuration';\r\nimport { PropertiesFacade } from '../../store';\r\n\r\n@Component({\r\n selector: 'mt-property-form',\r\n imports: [\r\n Page,\r\n Button,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n ApiConfiguration,\r\n CheckListFormConfiguration,\r\n DynamicListConfiguration,\r\n EditableListViewConfiguration,\r\n InternalModuleConfiguration,\r\n LocationConfiguration,\r\n LookupConfiguration,\r\n PercentageConfiguration,\r\n UserConfiguration,\r\n AttachmentConfiguration,\r\n SkeletonModule,\r\n TranslocoModule,\r\n ],\r\n templateUrl: './property-form.html',\r\n styleUrl: './property-form.scss',\r\n})\r\nexport class PropertyForm implements OnDestroy {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n propertyId = input<string>('');\r\n\r\n private readonly propertyTypes = this.facade.propertyTypes;\r\n\r\n submitLabel = computed(() =>\r\n this.propertyId()\r\n ? this.transloco.translate('properties.form.updateButton')\r\n : this.transloco.translate('properties.form.createButton'),\r\n );\r\n isEditing = computed(() => !!this.propertyId());\r\n\r\n // Keep your original structure: \"main\" is a FormControl<any>, \"configuration\" is FormControl<any|null>\r\n readonly propertyForm = new FormGroup({\r\n main: new FormControl<any>({\r\n isCalculated: false,\r\n viewType: null,\r\n name: { ar: '', en: '' },\r\n description: '',\r\n }),\r\n configuration: new FormControl<any | null>(null),\r\n });\r\n\r\n private readonly mainControl = this.propertyForm.get(\r\n 'main',\r\n ) as FormControl<any>;\r\n private readonly configurationControl = this.propertyForm.get(\r\n 'configuration',\r\n ) as FormControl<any | null>;\r\n\r\n private readonly creating = this.facade.isLoading('create');\r\n private readonly updating = this.facade.isLoading('update');\r\n readonly loading = this.facade.isLoading('getOne');\r\n readonly submitting = computed(() => this.creating() || this.updating());\r\n readonly propertyType = toSignal(\r\n this.mainControl.valueChanges.pipe(\r\n map((v) => v?.viewType),\r\n distinctUntilChanged(),\r\n ),\r\n );\r\n\r\n private readonly selectedPropertyTypeConfiguration = computed(() => {\r\n const propertyTypesSetting = this.propertyTypes();\r\n const selectedViewType = this.propertyType();\r\n\r\n if (!propertyTypesSetting?.value || !selectedViewType) return null;\r\n const match = propertyTypesSetting.value.find(\r\n (item: any) =>\r\n item.viewType?.toLowerCase() === selectedViewType.toLowerCase(),\r\n );\r\n\r\n return match?.configuration ?? null;\r\n });\r\n\r\n readonly configurationFormConfig = computed(\r\n () => this.selectedPropertyTypeConfiguration()?.configurationForm ?? null,\r\n );\r\n\r\n @ViewChild('configurationHost', { read: ViewContainerRef })\r\n private configurationHost?: ViewContainerRef;\r\n\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n\r\n private readonly configurationComponentType = signal<Type<any> | null>(null);\r\n private configurationComponentRef: ComponentRef<any> | null = null;\r\n private configurationComponentLoadId = 0;\r\n private readonly externalConfigurationForm = signal<FormGroup | null>(null);\r\n private externalConfigurationSubscriptions: Subscription | null = null;\r\n private readonly externalConfigurationInvalid = signal(false);\r\n\r\n readonly configurationComponentExists = computed(\r\n () => !!this.configurationComponentType(),\r\n );\r\n readonly configurationFormInvalid = computed(() =>\r\n this.externalConfigurationInvalid(),\r\n );\r\n readonly submitDisabled = computed(\r\n () => this.submitting() || this.configurationFormInvalid(),\r\n );\r\n // Your existing dynamic form config unchanged\r\n dynamicFormConfigMain = linkedSignal<DynamicFormConfig>(() => ({\r\n layout: {\r\n containerClass: `space-y-2`,\r\n },\r\n sections: [\r\n {\r\n key: 'top-row',\r\n type: 'none',\r\n cssClass: ' rounded-xl bg-content shadow-sm p-6 mt-3 mb-0',\r\n bodyClass: 'flex justify-between items-center gap-6',\r\n fields: [\r\n {\r\n key: 'viewType',\r\n type: 'select',\r\n placeholder: this.transloco.translate(\r\n 'properties.form.selectPropertyType',\r\n ),\r\n optionLabel: 'label.en',\r\n optionValue: 'viewType',\r\n cssClass: 'w-1/2',\r\n options: this.propertyTypes()?.value,\r\n disabled: this.isEditing(),\r\n filter: true,\r\n hasPlaceholderPrefix: false,\r\n },\r\n {\r\n key: 'isCalculated',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.calculated'),\r\n cssClass: 'justify-self-end',\r\n relations: [\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Text',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'LongText',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Percentage',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Date',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Currency',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Number',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Checkbox',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Lookup',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'LookupMultiSelect',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Time',\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n key: 'default-info',\r\n label: this.transloco.translate('properties.form.defaultInfoSection'),\r\n type: 'header',\r\n cssClass: ' rounded-xl bg-content shadow-sm p-6',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n {\r\n key: 'name.en',\r\n label: this.transloco.translate('properties.form.englishName'),\r\n placeholder: this.transloco.translate(\r\n 'properties.form.enterEnglishName',\r\n ),\r\n validators: [new ValidatorConfig({ type: 'required' })],\r\n },\r\n {\r\n key: 'name.ar',\r\n label: this.transloco.translate('properties.form.arabicName'),\r\n placeholder: this.transloco.translate(\r\n 'properties.form.enterArabicName',\r\n ),\r\n validators: [new ValidatorConfig({ type: 'required' })],\r\n },\r\n {\r\n key: 'description',\r\n label: this.transloco.translate('properties.form.description'),\r\n type: 'textarea',\r\n cssClass: 'md:col-span-2',\r\n },\r\n // {\r\n // key: 'defaultValue',\r\n // label: 'Default Value',\r\n // cssClass: 'md:col-span-2',\r\n // },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n // Load when editing\r\n effect(() => {\r\n if (this.propertyId()) {\r\n this.facade.loadOne(this.propertyId());\r\n }\r\n });\r\n\r\n // Patch viewType from store when creating new property\r\n effect(() => {\r\n const defaultViewType = this.facade.defaultViewType();\r\n if (!this.propertyId() && defaultViewType) {\r\n this.mainControl.patchValue(\r\n { ...this.mainControl.value, viewType: defaultViewType },\r\n { emitEvent: true },\r\n );\r\n }\r\n });\r\n\r\n // Track previous property type\r\n let prev: any;\r\n effect(() => {\r\n const currentPropertyType = this.propertyType();\r\n if (!currentPropertyType || !prev || prev == currentPropertyType) {\r\n prev = this.propertyType();\r\n return;\r\n }\r\n\r\n this.configurationControl.reset(null);\r\n });\r\n effect(() => {\r\n const currentPropertyType = this.propertyType();\r\n if (!currentPropertyType) return;\r\n\r\n // Reset config scopes before loading new ones\r\n this.facade.resetConfigScopes();\r\n\r\n // Load config scopes for specific property types\r\n const supportedTypes = [\r\n 'InternalModule',\r\n 'DynamicList',\r\n 'EditableListView',\r\n 'LookupLog',\r\n ];\r\n if (supportedTypes.includes(currentPropertyType)) {\r\n this.facade.loadConfigAsType(currentPropertyType);\r\n }\r\n });\r\n effect(() => {\r\n const property = this.facade.selected();\r\n this.syncFormWithSelectedProperty(property);\r\n });\r\n\r\n effect(() => {\r\n this.resolveConfigurationComponent(\r\n this.selectedPropertyTypeConfiguration(),\r\n );\r\n });\r\n\r\n effect(() => {\r\n this.renderConfigurationComponent(this.configurationComponentType());\r\n });\r\n }\r\n\r\n private renderConfigurationComponent(componentType: Type<any> | null) {\r\n if (!this.configurationHost) return;\r\n\r\n this.destroyConfigurationComponent();\r\n\r\n if (!componentType) return;\r\n\r\n const componentRef = this.configurationHost.createComponent(componentType, {\r\n environmentInjector: this.environmentInjector,\r\n });\r\n\r\n this.configurationComponentRef = componentRef;\r\n this.connectExternalConfigurationForm(componentRef.instance);\r\n }\r\n\r\n private destroyConfigurationComponent() {\r\n this.externalConfigurationSubscriptions?.unsubscribe();\r\n this.externalConfigurationSubscriptions = null;\r\n this.externalConfigurationForm.set(null);\r\n this.externalConfigurationInvalid.set(false);\r\n this.configurationComponentRef?.destroy();\r\n this.configurationComponentRef = null;\r\n this.configurationHost?.clear();\r\n }\r\n\r\n private connectExternalConfigurationForm(instance: any) {\r\n const form = this.extractConfigurationForm(instance);\r\n if (!form) return;\r\n\r\n this.externalConfigurationForm.set(form);\r\n this.externalConfigurationInvalid.set(form.invalid);\r\n\r\n const currentValue = this.configurationControl.value;\r\n if (currentValue) {\r\n form.patchValue(currentValue);\r\n }\r\n\r\n this.configurationControl.setValue(form.value ?? null, {\r\n emitEvent: false,\r\n });\r\n\r\n this.externalConfigurationSubscriptions = new Subscription();\r\n this.externalConfigurationSubscriptions.add(\r\n form.valueChanges.subscribe((value) =>\r\n this.configurationControl.setValue(value, { emitEvent: false }),\r\n ),\r\n );\r\n this.externalConfigurationSubscriptions.add(\r\n form.statusChanges.subscribe(() =>\r\n this.externalConfigurationInvalid.set(form.invalid),\r\n ),\r\n );\r\n }\r\n\r\n private extractConfigurationForm(instance: any): FormGroup | null {\r\n const form = (instance as { form?: any })?.form;\r\n return form instanceof FormGroup ? form : null;\r\n }\r\n // PropertyTypeConfiguration\r\n private resolveConfigurationComponent(configuration: any | null) {\r\n const componentLoader = configuration?.configurationComponent;\r\n const loadId = ++this.configurationComponentLoadId;\r\n\r\n if (!componentLoader) {\r\n this.configurationComponentType.set(null);\r\n return;\r\n }\r\n\r\n // Direct component type\r\n if (typeof componentLoader !== 'function' || componentLoader.prototype) {\r\n this.configurationComponentType.set(componentLoader as Type<any>);\r\n return;\r\n }\r\n\r\n // Async loader factory\r\n try {\r\n const result = (\r\n componentLoader as () => Type<any> | Promise<Type<any>>\r\n )();\r\n this.applyConfigurationComponentResult(result, loadId);\r\n } catch (error) {\r\n console.error('Failed to resolve configuration component.', error);\r\n this.configurationComponentType.set(null);\r\n }\r\n }\r\n\r\n private applyConfigurationComponentResult(\r\n result: Type<any> | Promise<Type<any>>,\r\n loadId: number,\r\n ) {\r\n // Async promise result\r\n if (result instanceof Promise) {\r\n this.configurationComponentType.set(null);\r\n result\r\n .then((component) => {\r\n if (loadId !== this.configurationComponentLoadId) return;\r\n\r\n // Handle default export\r\n const resolved = (component as any)?.default ?? component;\r\n this.configurationComponentType.set(resolved as Type<any>);\r\n })\r\n .catch((error) => {\r\n if (loadId === this.configurationComponentLoadId) {\r\n this.configurationComponentType.set(null);\r\n }\r\n console.error('Unable to load configuration component.', error);\r\n });\r\n return;\r\n }\r\n\r\n // Direct component type\r\n this.configurationComponentType.set(result);\r\n }\r\n\r\n createOrEditProperty() {\r\n const mainValue = this.mainControl.value;\r\n if (!mainValue) return;\r\n\r\n const payload: PropertyPayload = {\r\n ...mainValue,\r\n Configuration:\r\n this.configurationControl.value ?? mainValue.Configuration ?? null,\r\n };\r\n\r\n const request$ = this.propertyId()\r\n ? this.facade.update(this.propertyId(), payload)\r\n : this.facade.create(payload);\r\n\r\n request$.subscribe(() => this.goBack());\r\n }\r\n\r\n private syncFormWithSelectedProperty(\r\n property: PropertyItem | PropertyPayload | null,\r\n ) {\r\n if (!property) return;\r\n this.mainControl.patchValue(property, {\r\n emitEvent: false,\r\n });\r\n this.configurationControl.setValue(property?.configuration);\r\n }\r\n\r\n goBack() {\r\n const path = this.isEditing()\r\n ? '../../properties-list'\r\n : '../properties-list';\r\n this.router.navigate([path], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.facade.resetSelectedProperty();\r\n this.facade.setDefaultViewType('');\r\n this.destroyConfigurationComponent();\r\n }\r\n}\r\n","<mt-page\r\n [title]=\"\r\n propertyId()\r\n ? ('properties.form.editProperty' | transloco)\r\n : ('properties.form.createNewProperty' | transloco)\r\n \"\r\n avatarIcon=\"custom.user-pp\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n class=\"h-full\"\r\n>\r\n <ng-template #headerEnd>\r\n <mt-button\r\n class=\"mx-2\"\r\n [label]=\"submitLabel()\"\r\n [icon]=\"isEditing() ? 'custom.pencil' : 'general.plus'\"\r\n [loading]=\"submitting()\"\r\n [disabled]=\"submitDisabled() || this.propertyForm.invalid\"\r\n (click)=\"createOrEditProperty()\"\r\n />\r\n </ng-template>\r\n <div\r\n [formGroup]=\"propertyForm\"\r\n class=\"h-full py-4 h-full overflow-y-auto flex justify-center\"\r\n >\r\n <div class=\"w-1/2 flex flex-col gap-6\">\r\n @if (loading()) {\r\n <!-- Skeleton Loading State -->\r\n <div class=\"rounded-xl bg-white shadow-sm p-6 space-y-4\">\r\n <div class=\"flex justify-between items-center gap-6\">\r\n <p-skeleton width=\"50%\" height=\"3rem\"></p-skeleton>\r\n <p-skeleton width=\"8rem\" height=\"2.5rem\"></p-skeleton>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rounded-xl bg-white shadow-sm p-6 space-y-4\">\r\n <p-skeleton\r\n width=\"12rem\"\r\n height=\"1.5rem\"\r\n styleClass=\"mb-4\"\r\n ></p-skeleton>\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n <p-skeleton height=\"3rem\"></p-skeleton>\r\n <p-skeleton height=\"3rem\"></p-skeleton>\r\n <p-skeleton height=\"6rem\" styleClass=\"md:col-span-2\"></p-skeleton>\r\n <p-skeleton height=\"3rem\" styleClass=\"md:col-span-2\"></p-skeleton>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rounded-xl bg-white shadow-sm p-6 space-y-4\">\r\n <p-skeleton\r\n width=\"10rem\"\r\n height=\"1.5rem\"\r\n styleClass=\"mb-4\"\r\n ></p-skeleton>\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n <p-skeleton height=\"3rem\"></p-skeleton>\r\n <p-skeleton height=\"3rem\"></p-skeleton>\r\n <p-skeleton height=\"8rem\" styleClass=\"md:col-span-2\"></p-skeleton>\r\n </div>\r\n </div>\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"dynamicFormConfigMain()\"\r\n [formControlName]=\"'main'\"\r\n />\r\n @if (configurationFormConfig()) {\r\n <mt-dynamic-form\r\n formControlName=\"configuration\"\r\n [formConfig]=\"configurationFormConfig()!\"\r\n />\r\n } @else {\r\n <ng-container #configurationHost></ng-container>\r\n @if (!configurationComponentExists()) {\r\n @switch (propertyType()) {\r\n @case (\"User\") {\r\n <mt-user-configuration />\r\n }\r\n @case (\"Percentage\") {\r\n <mt-percentage-configuration />\r\n }\r\n @case (\"Lookup\") {\r\n <mt-lookup-configuration />\r\n }\r\n @case (\"LookupMultiSelect\") {\r\n <mt-lookup-configuration />\r\n }\r\n @case (\"InternalModule\") {\r\n <mt-internal-module-configuration />\r\n }\r\n @case (\"DynamicList\") {\r\n <mt-dynamic-list-configuration />\r\n }\r\n @case (\"API\") {\r\n <mt-api-configuration formControlName=\"configuration\" />\r\n }\r\n <!-- @case('ViewList') { REMOVED FOR NOW\r\n <mt-view-list-configuration />\r\n } -->\r\n @case (\"Attachment\") {\r\n <mt-attachment-configuration />\r\n }\r\n <!-- @case('ReferenceProperty') { REMOVED FOR NOW\r\n } -->\r\n @case (\"EditableListView\") {\r\n <mt-editable-list-view-configuration />\r\n }\r\n @case (\"LookupLog\") {\r\n <mt-check-list-form-configuration />\r\n }\r\n <!-- @case('LookupMatrix') { REMOVED FOR NOW\r\n <mt-lookup-configuration />\r\n } -->\r\n @case (\"Location\") {\r\n <mt-location-configuration />\r\n }\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n</mt-page>\r\n","/*\r\n * Public API Surface of structure-builder\r\n */\r\n\r\nexport * from './lib/properties-list/properties-list';\r\nexport * from './lib/property-form/property-form';\r\n\r\nexport * from './store';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["finalize","i1","i2","i3"],"mappings":"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"}
1
+ {"version":3,"file":"masterteam-properties.mjs","sources":["../../../../packages/masterteam/properties/src/store/utils/state-helpers.ts","../../../../packages/masterteam/properties/src/store/properties/properties.actions.ts","../../../../packages/masterteam/properties/src/store/properties/properties.state.ts","../../../../packages/masterteam/properties/src/store/properties/properties.facade.ts","../../../../packages/masterteam/properties/src/store/app.state.ts","../../../../packages/masterteam/properties/src/store/index.ts","../../../../packages/masterteam/properties/src/lib/properties-list/properties-list.ts","../../../../packages/masterteam/properties/src/lib/properties-list/properties-list.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/api-configuration/api-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/api-configuration/api-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/check-list-form-configuration/check-list-form-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/check-list-form-configuration/check-list-form-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/dynamic-list-configuration/dynamic-list-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/dynamic-list-configuration/dynamic-list-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/editable-list-view-configuration/editable-list-view-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/editable-list-view-configuration/editable-list-view-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/internal-module-configuration/internal-module-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/internal-module-configuration/internal-module-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/location-configuration/location-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/location-configuration/location-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/lookup-configuration/lookup-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/lookup-configuration/lookup-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/percentage-configuration/percentage-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/percentage-configuration/percentage-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/user-configuration/user-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/user-configuration/user-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/attachment-configuration/attachment-configuration.ts","../../../../packages/masterteam/properties/src/lib/property-form/configuration-types/attachment-configuration/attachment-configuration.html","../../../../packages/masterteam/properties/src/lib/property-form/property-form.ts","../../../../packages/masterteam/properties/src/lib/property-form/property-form.html","../../../../packages/masterteam/properties/src/public-api.ts","../../../../packages/masterteam/properties/src/masterteam-properties.ts"],"sourcesContent":["import type { StateContext } from '@ngxs/store';\r\n\r\nexport interface LoadingStateShape<L extends string = string> {\r\n loadingActive: L[];\r\n errors: Partial<Record<L, string>>;\r\n}\r\n\r\ntype LoadingName<T extends LoadingStateShape<string>> =\r\n T['loadingActive'][number];\r\n\r\nexport function startLoading<T extends LoadingStateShape<string>>(\r\n ctx: StateContext<T>,\r\n loadingName: LoadingName<T>,\r\n): void {\r\n const { loadingActive, errors } = ctx.getState();\r\n\r\n if (!loadingActive.includes(loadingName)) {\r\n ctx.patchState({\r\n loadingActive: [...loadingActive, loadingName],\r\n } as Partial<T>);\r\n }\r\n\r\n if (errors && errors[loadingName]) {\r\n const { [loadingName]: _removed, ...rest } = errors;\r\n ctx.patchState({ errors: rest } as Partial<T>);\r\n }\r\n}\r\n\r\nexport function endLoading<T extends LoadingStateShape<string>>(\r\n ctx: StateContext<T>,\r\n loadingName: LoadingName<T>,\r\n): void {\r\n const { loadingActive } = ctx.getState();\r\n\r\n ctx.patchState({\r\n loadingActive: loadingActive.filter((name) => name !== loadingName),\r\n } as Partial<T>);\r\n}\r\n\r\nexport function setLoadingError<T extends LoadingStateShape<string>>(\r\n ctx: StateContext<T>,\r\n loadingName: LoadingName<T>,\r\n message: string,\r\n): void {\r\n const { errors } = ctx.getState();\r\n ctx.patchState({\r\n errors: { ...errors, [loadingName]: message },\r\n } as Partial<T>);\r\n}\r\n","import type {\r\n PropertiesQueryParams,\r\n PropertyPayload,\r\n ApiTestPayload,\r\n} from './properties.model';\r\nimport type { BreadcrumbItem } from '@masterteam/components/breadcrumb';\r\n\r\nexport class GetProperties {\r\n static readonly type = '[Properties] Get All';\r\n\r\n constructor(public readonly params?: PropertiesQueryParams) {}\r\n}\r\n\r\nexport class GetProperty {\r\n static readonly type = '[Properties] Get One';\r\n\r\n constructor(\r\n public readonly id: string | number,\r\n public readonly mode: 'edit' = 'edit',\r\n ) {}\r\n}\r\n\r\nexport class GetLookups {\r\n static readonly type = '[Properties] Get Lookups';\r\n}\r\n\r\nexport class GetGroups {\r\n static readonly type = '[Properties] Get Groups';\r\n}\r\n\r\nexport class GetConfigAsType {\r\n static readonly type = '[Properties] Get Config As Type';\r\n\r\n constructor(public readonly viewType: string) {}\r\n}\r\n\r\nexport class GetCountries {\r\n static readonly type = '[Properties] Get Countries';\r\n}\r\n\r\nexport class TestApiConfiguration {\r\n static readonly type = '[Properties] Test API Configuration';\r\n\r\n constructor(public readonly payload: ApiTestPayload) {}\r\n}\r\n\r\nexport class ResetApiConfiguration {\r\n static readonly type = '[Properties] Reset API Configuration';\r\n}\r\n\r\nexport class GetPropertiesForConfigType {\r\n static readonly type = '[Properties] Get By Config Type';\r\n\r\n constructor(\r\n public readonly moduleType: string,\r\n public readonly moduleId: string | number,\r\n ) {}\r\n}\r\n\r\nexport class ResetConfigProperties {\r\n static readonly type = '[Properties] Reset Config Properties';\r\n}\r\n\r\nexport class ResetConfigScopes {\r\n static readonly type = '[Properties] Reset Config Scopes';\r\n}\r\n\r\nexport class ResetSelectedProperty {\r\n static readonly type = '[Properties] Reset Selected Property';\r\n}\r\n\r\nexport class DeleteProperty {\r\n static readonly type = '[Properties] Delete';\r\n\r\n constructor(public readonly id: string | number) {}\r\n}\r\n\r\nexport class CreateProperty {\r\n static readonly type = '[Properties] Create';\r\n\r\n constructor(public readonly payload: PropertyPayload) {}\r\n}\r\n\r\nexport class UpdateProperty {\r\n static readonly type = '[Properties] Update';\r\n\r\n constructor(\r\n public readonly id: string | number,\r\n public readonly payload: PropertyPayload,\r\n ) {}\r\n}\r\n\r\nexport class SetPropertiesModuleInfo {\r\n static readonly type = '[Properties] Set Module Info';\r\n\r\n constructor(\r\n public readonly moduleType: string,\r\n public readonly moduleId: string | number,\r\n public readonly parentModuleType?: string,\r\n public readonly parentModuleId?: string | number,\r\n public readonly parentPath?: string,\r\n ) {}\r\n}\r\nexport class SetPropertyTypes {\r\n static readonly type = '[Properties] Set Property Types';\r\n\r\n constructor(public readonly payload: any) {}\r\n}\r\n\r\nexport class SetBreadcrumb {\r\n static readonly type = '[Properties] Set Breadcrumb';\r\n\r\n constructor(public readonly items: BreadcrumbItem[]) {}\r\n}\r\n\r\nexport class SetDefaultViewType {\r\n static readonly type = '[Properties] Set Default ViewType';\r\n\r\n constructor(public readonly viewType: string) {}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, finalize, switchMap, tap } from 'rxjs/operators';\r\n\r\nimport {\r\n endLoading,\r\n setLoadingError,\r\n startLoading,\r\n} from '../utils/state-helpers';\r\n\r\nimport {\r\n ApiPropertyOption,\r\n ApiSchema,\r\n ConfigScope,\r\n CountryDefinition,\r\n GroupDefinition,\r\n LookupDefinition,\r\n PropertiesLoadingName,\r\n PropertiesStateModel,\r\n PropertyItem,\r\n} from './properties.model';\r\nimport type { BreadcrumbItem } from '@masterteam/components/breadcrumb';\r\nimport {\r\n CreateProperty,\r\n DeleteProperty,\r\n GetGroups,\r\n GetConfigAsType,\r\n GetLookups,\r\n GetPropertiesForConfigType,\r\n GetProperties,\r\n GetProperty,\r\n GetCountries,\r\n TestApiConfiguration,\r\n ResetApiConfiguration,\r\n ResetConfigProperties,\r\n ResetConfigScopes,\r\n ResetSelectedProperty,\r\n SetPropertiesModuleInfo,\r\n UpdateProperty,\r\n SetPropertyTypes,\r\n SetBreadcrumb,\r\n SetDefaultViewType,\r\n} from './properties.actions';\r\nimport { Response } from './api.model';\r\n\r\nconst DEFAULT_STATE: PropertiesStateModel = {\r\n properties: [],\r\n selectedProperty: null,\r\n loadingActive: [],\r\n errors: {},\r\n moduleType: null,\r\n moduleId: null,\r\n parentModuleType: null,\r\n parentModuleId: null,\r\n lastQueryParams: null,\r\n lookups: [],\r\n configTypeProperties: [],\r\n groups: [],\r\n configScopes: [],\r\n countries: [],\r\n apiSchema: null,\r\n apiProperties: [],\r\n breadcrumbItems: [],\r\n defaultViewType: null,\r\n};\r\n\r\n@State<PropertiesStateModel>({\r\n name: 'properties',\r\n defaults: DEFAULT_STATE,\r\n})\r\n@Injectable()\r\nexport class PropertiesState {\r\n private readonly http = inject(HttpClient);\r\n private readonly baseUrl = 'Properties';\r\n private readonly lookupsUrl = 'Lookups';\r\n private readonly configPropertiesUrl = 'Properties';\r\n private readonly groupsUrl = 'identity/Groups';\r\n private readonly countriesUrl = '/assets/countries/countries.json';\r\n private readonly apiTestUrl = 'app/testAPI';\r\n private readonly apiDetectUrl = 'app/detect';\r\n\r\n @Selector()\r\n static properties(state: PropertiesStateModel): PropertyItem[] {\r\n return state.properties;\r\n }\r\n\r\n @Selector()\r\n static selectedProperty(state: PropertiesStateModel): PropertyItem | null {\r\n return state.selectedProperty;\r\n }\r\n\r\n @Selector()\r\n static lookups(state: PropertiesStateModel): LookupDefinition[] {\r\n return state.lookups;\r\n }\r\n\r\n @Selector()\r\n static configTypeProperties(state: PropertiesStateModel): PropertyItem[] {\r\n return state.configTypeProperties;\r\n }\r\n\r\n @Selector()\r\n static groups(state: PropertiesStateModel): GroupDefinition[] {\r\n return state.groups;\r\n }\r\n\r\n @Selector()\r\n static configScopes(state: PropertiesStateModel): ConfigScope[] {\r\n return state.configScopes;\r\n }\r\n\r\n @Selector()\r\n static countries(state: PropertiesStateModel): CountryDefinition[] {\r\n return state.countries;\r\n }\r\n\r\n @Selector()\r\n static apiSchema(state: PropertiesStateModel): ApiSchema | null {\r\n return state.apiSchema;\r\n }\r\n\r\n @Selector()\r\n static apiProperties(state: PropertiesStateModel): ApiPropertyOption[] {\r\n return state.apiProperties;\r\n }\r\n @Selector()\r\n static propertyTypes(state: PropertiesStateModel): any[] {\r\n return state.propertyTypes ?? [];\r\n }\r\n\r\n @Selector()\r\n static breadcrumbItems(state: PropertiesStateModel): BreadcrumbItem[] {\r\n return state.breadcrumbItems;\r\n }\r\n\r\n @Selector()\r\n static defaultViewType(state: PropertiesStateModel): string | null {\r\n return state.defaultViewType;\r\n }\r\n\r\n @Selector()\r\n static isLoadingFactory(state: PropertiesStateModel) {\r\n return (loadingName: PropertiesLoadingName) =>\r\n state.loadingActive.includes(loadingName);\r\n }\r\n\r\n @Selector()\r\n static errorFactory(state: PropertiesStateModel) {\r\n return (loadingName: PropertiesLoadingName) =>\r\n state.errors?.[loadingName] ?? null;\r\n }\r\n\r\n @Selector()\r\n static propertyById(state: PropertiesStateModel) {\r\n return (id: number | string) =>\r\n state.properties.find((property) => property.id === Number(id)) ?? null;\r\n }\r\n\r\n @Action(GetProperties)\r\n getAll(ctx: StateContext<PropertiesStateModel>, action: GetProperties) {\r\n startLoading(ctx, 'getAll');\r\n const state = ctx.getState();\r\n const moduleType = state.moduleType ?? undefined;\r\n const moduleId = state.moduleId ?? undefined;\r\n const parentPath = state.parentPath ?? '';\r\n const params = { ...action.params };\r\n\r\n ctx.patchState({\r\n lastQueryParams: params ?? null,\r\n });\r\n return this.http\r\n .get<Response<PropertyItem[]>>(\r\n `${this.baseUrl}${parentPath}/${moduleType}/${moduleId}`,\r\n {\r\n params: params,\r\n },\r\n )\r\n .pipe(\r\n tap((response) => {\r\n const properties = Array.isArray(response?.data) ? response.data : [];\r\n ctx.patchState({ properties });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load properties';\r\n setLoadingError(ctx, 'getAll', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'getAll')),\r\n );\r\n }\r\n\r\n @Action(GetProperty)\r\n getOne(ctx: StateContext<PropertiesStateModel>, action: GetProperty) {\r\n startLoading(ctx, 'getOne');\r\n\r\n const params = { mode: action.mode ?? 'edit' };\r\n\r\n return this.http\r\n .get<Response<PropertyItem>>(`${this.baseUrl}/${action.id}`, { params })\r\n .pipe(\r\n tap((response) => {\r\n ctx.patchState({\r\n selectedProperty: response?.data ?? null,\r\n });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load property';\r\n setLoadingError(ctx, 'getOne', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'getOne')),\r\n );\r\n }\r\n\r\n @Action(GetLookups)\r\n getLookups(ctx: StateContext<PropertiesStateModel>, _action: GetLookups) {\r\n const state = ctx.getState();\r\n if (state.lookups.length) {\r\n return of(state.lookups);\r\n }\r\n\r\n startLoading(ctx, 'getLookups');\r\n\r\n return this.http.get<Response<LookupDefinition[]>>(this.lookupsUrl).pipe(\r\n tap((response) => {\r\n const lookups = Array.isArray(response?.data) ? response.data : [];\r\n ctx.patchState({ lookups });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to load lookups';\r\n setLoadingError(ctx, 'getLookups', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getLookups')),\r\n );\r\n }\r\n\r\n @Action(GetGroups)\r\n getGroups(ctx: StateContext<PropertiesStateModel>, _action: GetGroups) {\r\n const state = ctx.getState();\r\n if (state.groups.length) {\r\n return of(state.groups);\r\n }\r\n\r\n startLoading(ctx, 'getGroups');\r\n\r\n return this.http.get<Response<GroupDefinition[]>>(this.groupsUrl).pipe(\r\n tap((response) => {\r\n const groups = Array.isArray(response?.data) ? response.data : [];\r\n ctx.patchState({ groups });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to load groups';\r\n setLoadingError(ctx, 'getGroups', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getGroups')),\r\n );\r\n }\r\n\r\n @Action(GetConfigAsType)\r\n getConfigAsType(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: GetConfigAsType,\r\n ) {\r\n const state = ctx.getState();\r\n\r\n // Don't reload if we already have data for this viewType\r\n if (state.configScopes.length) {\r\n return of(state.configScopes);\r\n }\r\n\r\n startLoading(ctx, 'getConfigAsType');\r\n\r\n const url = `${this.baseUrl}/${action.viewType}/GetViewTypeProperties`;\r\n\r\n return this.http.get<Response<ConfigScope[]>>(url).pipe(\r\n tap((response) => {\r\n const configScopes = Array.isArray(response?.data) ? response.data : [];\r\n ctx.patchState({ configScopes });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load configuration scopes';\r\n setLoadingError(ctx, 'getConfigAsType', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getConfigAsType')),\r\n );\r\n }\r\n\r\n @Action(GetCountries)\r\n getCountries(ctx: StateContext<PropertiesStateModel>, _action: GetCountries) {\r\n const state = ctx.getState();\r\n if (state.countries.length) {\r\n return of(state.countries);\r\n }\r\n\r\n startLoading(ctx, 'getCountries');\r\n\r\n return this.http.get<CountryDefinition[]>(this.countriesUrl).pipe(\r\n tap((response) => {\r\n const countries = Array.isArray(response) ? response : [];\r\n ctx.patchState({ countries });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to load countries';\r\n setLoadingError(ctx, 'getCountries', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getCountries')),\r\n );\r\n }\r\n\r\n @Action(TestApiConfiguration)\r\n testApiConfiguration(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: TestApiConfiguration,\r\n ) {\r\n startLoading(ctx, 'testApiConfiguration');\r\n ctx.patchState({\r\n apiSchema: null,\r\n apiProperties: [],\r\n });\r\n\r\n return this.http.post<Response<any>>(this.apiTestUrl, action.payload).pipe(\r\n switchMap((testResponse) => {\r\n const rawData = testResponse?.data;\r\n if (!rawData) {\r\n return of(null);\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('jsonData', JSON.stringify(rawData));\r\n\r\n return this.http\r\n .post<Response<ApiSchema>>(this.apiDetectUrl, formData)\r\n .pipe(\r\n tap((detectResponse) => {\r\n const schema = detectResponse?.data ?? null;\r\n const apiProperties = this.mapSchemaToOptions(schema);\r\n ctx.patchState({\r\n apiSchema: schema,\r\n apiProperties,\r\n });\r\n }),\r\n );\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ?? error?.message ?? 'Failed to test API';\r\n setLoadingError(ctx, 'testApiConfiguration', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'testApiConfiguration')),\r\n );\r\n }\r\n\r\n @Action(ResetApiConfiguration)\r\n resetApiConfiguration(ctx: StateContext<PropertiesStateModel>) {\r\n ctx.patchState({\r\n apiSchema: null,\r\n apiProperties: [],\r\n });\r\n }\r\n\r\n private mapSchemaToOptions(schema: ApiSchema | null): ApiPropertyOption[] {\r\n if (!schema?.properties) {\r\n return [];\r\n }\r\n\r\n return Object.entries(schema.properties).map(([key, definition]) => {\r\n const typeLabel = definition?.type ? ` | ${definition.type}` : '';\r\n return {\r\n key,\r\n name: `${key}${typeLabel}`,\r\n type: definition?.type,\r\n } as ApiPropertyOption;\r\n });\r\n }\r\n\r\n @Action(GetPropertiesForConfigType)\r\n getPropertiesForConfigType(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: GetPropertiesForConfigType,\r\n ) {\r\n startLoading(ctx, 'getConfigProperties');\r\n\r\n const { moduleType, moduleId } = action;\r\n\r\n return this.http\r\n .get<\r\n Response<PropertyItem[]>\r\n >(`${this.configPropertiesUrl}/${moduleType}/${moduleId}`)\r\n .pipe(\r\n tap((response) => {\r\n const configTypeProperties = Array.isArray(response?.data)\r\n ? response.data\r\n : [];\r\n ctx.patchState({ configTypeProperties });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to load properties';\r\n setLoadingError(ctx, 'getConfigProperties', message);\r\n return of([]);\r\n }),\r\n finalize(() => endLoading(ctx, 'getConfigProperties')),\r\n );\r\n }\r\n\r\n @Action(ResetConfigProperties)\r\n resetConfigProperties(ctx: StateContext<PropertiesStateModel>) {\r\n ctx.patchState({ configTypeProperties: [] });\r\n }\r\n\r\n @Action(ResetConfigScopes)\r\n resetConfigScopes(ctx: StateContext<PropertiesStateModel>) {\r\n ctx.patchState({ configScopes: [] });\r\n }\r\n\r\n @Action(ResetSelectedProperty)\r\n resetSelectedProperty(ctx: StateContext<PropertiesStateModel>) {\r\n ctx.patchState({ selectedProperty: null });\r\n }\r\n\r\n @Action(SetPropertiesModuleInfo)\r\n setModuleInfo(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: SetPropertiesModuleInfo,\r\n ) {\r\n let parentPath = '';\r\n if (action.parentModuleType && action.parentModuleId) {\r\n parentPath = `/${action.parentModuleType}/${action.parentModuleId}`;\r\n } else if (action.parentPath) {\r\n parentPath = action.parentPath;\r\n }\r\n ctx.patchState({\r\n moduleType: action.moduleType,\r\n moduleId: action.moduleId,\r\n parentModuleType: action.parentModuleType ?? null,\r\n parentModuleId: action.parentModuleId ?? null,\r\n parentPath: parentPath ?? '',\r\n });\r\n }\r\n\r\n @Action(CreateProperty)\r\n create(ctx: StateContext<PropertiesStateModel>, action: CreateProperty) {\r\n startLoading(ctx, 'create');\r\n\r\n const state = ctx.getState();\r\n const moduleType = state.moduleType ?? undefined;\r\n const moduleId = state.moduleId ?? undefined;\r\n const parentPath = state.parentPath ?? '';\r\n\r\n if (!moduleType || moduleId === undefined || moduleId === null) {\r\n const message = 'Missing module context for creating property';\r\n setLoadingError(ctx, 'create', message);\r\n endLoading(ctx, 'create');\r\n return of(null);\r\n }\r\n\r\n return this.http\r\n .post<\r\n Response<PropertyItem>\r\n >(`${this.baseUrl}${parentPath}/${moduleType}/${moduleId}`, action.payload)\r\n .pipe(\r\n tap((response) => {\r\n const created = response?.data;\r\n if (!created) {\r\n return;\r\n }\r\n\r\n const state = ctx.getState();\r\n ctx.patchState({\r\n properties: [...state.properties, created],\r\n selectedProperty: created,\r\n });\r\n }),\r\n finalize(() => endLoading(ctx, 'create')),\r\n );\r\n }\r\n\r\n @Action(UpdateProperty)\r\n update(ctx: StateContext<PropertiesStateModel>, action: UpdateProperty) {\r\n startLoading(ctx, 'update');\r\n\r\n const state = ctx.getState();\r\n const moduleType = state.moduleType ?? undefined;\r\n const moduleId = state.moduleId ?? undefined;\r\n const parentPath = state.parentPath ?? '';\r\n\r\n if (!moduleType || moduleId === undefined || moduleId === null) {\r\n const message = 'Missing module context for updating property';\r\n setLoadingError(ctx, 'update', message);\r\n endLoading(ctx, 'update');\r\n return of(null);\r\n }\r\n return this.http\r\n .put<\r\n Response<PropertyItem>\r\n >(`${this.baseUrl}${parentPath}/${moduleType}/${moduleId}/${action.id}`, action.payload)\r\n .pipe(\r\n tap((response) => {\r\n const updated = response?.data;\r\n if (!updated) {\r\n return;\r\n }\r\n\r\n const updatedId = updated.id ?? Number(action.id);\r\n const state = ctx.getState();\r\n const properties = state.properties.some(\r\n (item) => item.id === updatedId,\r\n )\r\n ? state.properties.map((item) =>\r\n item.id === updatedId ? { ...item, ...updated } : item,\r\n )\r\n : [...state.properties, updated];\r\n\r\n ctx.patchState({\r\n properties,\r\n selectedProperty: updated,\r\n });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to update property';\r\n setLoadingError(ctx, 'update', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'update')),\r\n );\r\n }\r\n\r\n @Action(DeleteProperty)\r\n delete(ctx: StateContext<PropertiesStateModel>, action: DeleteProperty) {\r\n startLoading(ctx, 'delete');\r\n\r\n return this.http\r\n .delete<void>(`${this.baseUrl}/${encodeURIComponent(String(action.id))}`)\r\n .pipe(\r\n tap(() => {\r\n const { properties, selectedProperty } = ctx.getState();\r\n const remaining = properties.filter(\r\n (item) => item.id !== Number(action.id),\r\n );\r\n const nextSelected =\r\n selectedProperty && selectedProperty.id === Number(action.id)\r\n ? null\r\n : selectedProperty;\r\n ctx.patchState({\r\n properties: remaining,\r\n selectedProperty: nextSelected,\r\n });\r\n }),\r\n catchError((error) => {\r\n const message =\r\n error?.error?.message ??\r\n error?.message ??\r\n 'Failed to delete property';\r\n setLoadingError(ctx, 'delete', message);\r\n return of(null);\r\n }),\r\n finalize(() => endLoading(ctx, 'delete')),\r\n );\r\n }\r\n\r\n @Action(SetPropertyTypes)\r\n SetPropertyTypes(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: SetPropertyTypes,\r\n ) {\r\n ctx.patchState({\r\n propertyTypes: action.payload,\r\n });\r\n }\r\n\r\n @Action(SetBreadcrumb)\r\n setBreadcrumb(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: SetBreadcrumb,\r\n ) {\r\n ctx.patchState({\r\n breadcrumbItems: action.items,\r\n });\r\n }\r\n\r\n @Action(SetDefaultViewType)\r\n setDefaultViewType(\r\n ctx: StateContext<PropertiesStateModel>,\r\n action: SetDefaultViewType,\r\n ) {\r\n ctx.patchState({\r\n defaultViewType: action.viewType,\r\n });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\nimport type { Observable } from 'rxjs';\r\n\r\nimport type { GroupDefinition } from './properties.model';\r\nimport type { ConfigScope } from './properties.model';\r\nimport type { PropertyItem } from './properties.model';\r\nimport type { CountryDefinition } from './properties.model';\r\nimport type { ApiPropertyOption } from './properties.model';\r\nimport type { ApiSchema } from './properties.model';\r\nimport type { ApiTestPayload } from './properties.model';\r\nimport type { BreadcrumbItem } from '@masterteam/components/breadcrumb';\r\nimport {\r\n CreateProperty,\r\n DeleteProperty,\r\n GetGroups,\r\n GetConfigAsType,\r\n GetLookups,\r\n GetCountries,\r\n TestApiConfiguration,\r\n ResetApiConfiguration,\r\n GetPropertiesForConfigType,\r\n GetProperties,\r\n GetProperty,\r\n ResetConfigProperties,\r\n ResetConfigScopes,\r\n ResetSelectedProperty,\r\n SetPropertiesModuleInfo,\r\n UpdateProperty,\r\n SetPropertyTypes,\r\n SetBreadcrumb,\r\n SetDefaultViewType,\r\n} from './properties.actions';\r\nimport { PropertiesState } from './properties.state';\r\nimport type {\r\n LookupDefinition,\r\n PropertiesLoadingName,\r\n PropertiesQueryParams,\r\n PropertyPayload,\r\n} from './properties.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PropertiesFacade {\r\n private readonly store = inject(Store);\r\n readonly list = select(PropertiesState.properties);\r\n readonly propertyTypes = select<any>(PropertiesState.propertyTypes);\r\n readonly selected = select(PropertiesState.selectedProperty);\r\n readonly lookups = select<LookupDefinition[]>(PropertiesState.lookups);\r\n readonly configProperties = select<PropertyItem[]>(\r\n PropertiesState.configTypeProperties,\r\n );\r\n readonly groups = select<GroupDefinition[]>(PropertiesState.groups);\r\n readonly configScopes = select<ConfigScope[]>(PropertiesState.configScopes);\r\n readonly countries = select<CountryDefinition[]>(PropertiesState.countries);\r\n readonly apiSchema = select<ApiSchema | null>(PropertiesState.apiSchema);\r\n readonly apiProperties = select<ApiPropertyOption[]>(\r\n PropertiesState.apiProperties,\r\n );\r\n readonly breadcrumbItems = select<BreadcrumbItem[]>(\r\n PropertiesState.breadcrumbItems,\r\n );\r\n readonly defaultViewType = select<string | null>(\r\n PropertiesState.defaultViewType,\r\n );\r\n readonly systemProperties = computed(() =>\r\n this.list().filter((property) => Boolean(property.isSystem)),\r\n );\r\n readonly customProperties = computed(() =>\r\n this.list().filter((property) => !Boolean(property.isSystem)),\r\n );\r\n\r\n isLoading(loadingName: PropertiesLoadingName) {\r\n const loadingFactory = select<(name: PropertiesLoadingName) => boolean>(\r\n PropertiesState.isLoadingFactory,\r\n );\r\n return computed(() => loadingFactory()(loadingName));\r\n }\r\n\r\n loadAll(params?: Partial<PropertiesQueryParams>): Observable<unknown> {\r\n return this.store.dispatch(new GetProperties(params));\r\n }\r\n\r\n loadOne(id: string | number, mode: 'edit' = 'edit'): Observable<unknown> {\r\n return this.store.dispatch(new GetProperty(id, mode));\r\n }\r\n\r\n delete(id: string | number): Observable<unknown> {\r\n return this.store.dispatch(new DeleteProperty(id));\r\n }\r\n\r\n create(payload: PropertyPayload): Observable<unknown> {\r\n return this.store.dispatch(new CreateProperty(payload));\r\n }\r\n\r\n update(id: string | number, payload: PropertyPayload): Observable<unknown> {\r\n return this.store.dispatch(new UpdateProperty(id, payload));\r\n }\r\n\r\n setModuleInfo(\r\n moduleType: string,\r\n moduleId: string | number,\r\n parentModuleType?: string,\r\n parentModuleId?: string | number,\r\n parentPath?: string,\r\n ): Observable<unknown> {\r\n return this.store.dispatch(\r\n new SetPropertiesModuleInfo(\r\n moduleType,\r\n moduleId,\r\n parentModuleType,\r\n parentModuleId,\r\n parentPath,\r\n ),\r\n );\r\n }\r\n\r\n loadLookups(): Observable<unknown> {\r\n return this.store.dispatch(new GetLookups());\r\n }\r\n\r\n loadGroups(): Observable<unknown> {\r\n return this.store.dispatch(new GetGroups());\r\n }\r\n\r\n loadConfigAsType(viewType: string): Observable<unknown> {\r\n return this.store.dispatch(new GetConfigAsType(viewType));\r\n }\r\n\r\n loadCountries(): Observable<unknown> {\r\n return this.store.dispatch(new GetCountries());\r\n }\r\n\r\n testApiConfiguration(payload: ApiTestPayload): Observable<unknown> {\r\n return this.store.dispatch(new TestApiConfiguration(payload));\r\n }\r\n\r\n resetApiConfiguration(): Observable<unknown> {\r\n return this.store.dispatch(new ResetApiConfiguration());\r\n }\r\n setPropertyTypes(propertyTypes: any) {\r\n return this.store.dispatch(new SetPropertyTypes(propertyTypes));\r\n }\r\n\r\n loadPropertiesForConfigType(\r\n moduleType: string,\r\n moduleId: string | number,\r\n ): Observable<unknown> {\r\n return this.store.dispatch(\r\n new GetPropertiesForConfigType(moduleType, moduleId),\r\n );\r\n }\r\n\r\n resetSelectedProperty(): Observable<unknown> {\r\n return this.store.dispatch(new ResetSelectedProperty());\r\n }\r\n\r\n resetConfigProperties(): Observable<unknown> {\r\n return this.store.dispatch(new ResetConfigProperties());\r\n }\r\n\r\n resetConfigScopes(): Observable<unknown> {\r\n return this.store.dispatch(new ResetConfigScopes());\r\n }\r\n\r\n setBreadcrumb(items: BreadcrumbItem[]): Observable<unknown> {\r\n return this.store.dispatch(new SetBreadcrumb(items));\r\n }\r\n\r\n setDefaultViewType(viewType: string): Observable<unknown> {\r\n return this.store.dispatch(new SetDefaultViewType(viewType));\r\n }\r\n}\r\n","// store/app.state.ts\r\n\r\nimport { HttpContextToken } from '@angular/common/http';\r\n\r\nexport const REQUEST_CONTEXT = new HttpContextToken<{ useBaseUrl: boolean }>(\r\n () => ({\r\n useBaseUrl: false,\r\n }),\r\n);\r\n","// store/index.ts\r\n// This file exports EVERYTHING - one import for all state needs\r\n\r\n// States\r\n\r\nexport * from './properties/properties.state';\r\nexport * from './properties/properties.model';\r\n\r\n// Actions\r\n\r\nexport * from './properties/properties.actions';\r\n\r\n// Facades\r\n\r\nexport * from './properties/properties.facade';\r\n\r\n// Re-export app state\r\nexport * from './app.state';\r\n","import {\r\n Component,\r\n computed,\r\n inject,\r\n input,\r\n linkedSignal,\r\n signal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Table, ColumnDef, TableAction } from '@masterteam/components/table';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { PropertiesFacade, PropertyItem } from '../../store';\r\nimport { Breadcrumb } from '@masterteam/components/breadcrumb';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { Divider } from 'primeng/divider';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { TranslocoModule, TranslocoService } from '@jsverse/transloco';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-properties-list',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Table,\r\n Breadcrumb,\r\n Card,\r\n Avatar,\r\n Divider,\r\n Button,\r\n TranslocoModule,\r\n ],\r\n templateUrl: './properties-list.html',\r\n styleUrl: './properties-list.scss',\r\n})\r\nexport class PropertiesList {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly transloco = inject(TranslocoService);\r\n private readonly defaultTab = 'all';\r\n\r\n tab = input<string>();\r\n\r\n tabs = linkedSignal(() => {\r\n const systemProperties = this.facade.systemProperties();\r\n if (!systemProperties || systemProperties.length === 0) {\r\n return [];\r\n }\r\n return [\r\n {\r\n label: this.transloco.translate('properties.list.tabAll'),\r\n value: 'all',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.tabSystem'),\r\n value: 'system',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.tabCustom'),\r\n value: 'custom',\r\n },\r\n ];\r\n });\r\n\r\n activeTab = linkedSignal(() => {\r\n return this.tab() || this.defaultTab;\r\n });\r\n propertyTypes = signal([\r\n {\r\n label: this.transloco.translate('properties.list.typeShortText'),\r\n icon: 'editor.type-square',\r\n value: 'Text',\r\n color: 'pink',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeParagraph'),\r\n icon: 'editor.line-height',\r\n value: 'LongText',\r\n color: 'sky',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeUser'),\r\n icon: 'user.user-01',\r\n value: 'User',\r\n color: 'yellow',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeNumber'),\r\n icon: 'editor.letter-spacing-01',\r\n value: 'Number',\r\n color: 'violet',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeCurrency'),\r\n icon: 'finance.currency-dollar',\r\n value: 'Currency',\r\n color: 'indigo',\r\n },\r\n {\r\n label: this.transloco.translate('properties.list.typeLookup'),\r\n icon: 'custom.list-cards',\r\n value: 'Lookup',\r\n color: 'lime',\r\n },\r\n ]);\r\n\r\n readonly tableColumns = signal<ColumnDef[]>([\r\n {\r\n key: 'name',\r\n label: this.transloco.translate('properties.list.columnName'),\r\n filterConfig: {\r\n type: 'text',\r\n label: this.transloco.translate('properties.list.columnName'),\r\n },\r\n },\r\n {\r\n key: 'viewType',\r\n label: this.transloco.translate('properties.list.columnType'),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.transloco.translate('properties.list.columnType'),\r\n options: this.propertyTypes(),\r\n },\r\n },\r\n {\r\n key: 'isRequired',\r\n label: this.transloco.translate('properties.list.columnRequired'),\r\n type: 'boolean',\r\n readonly: true,\r\n filterConfig: {\r\n type: 'select',\r\n label: this.transloco.translate('properties.list.columnRequired'),\r\n options: [\r\n { label: 'Yes', value: true },\r\n { label: 'No', value: false },\r\n ],\r\n },\r\n },\r\n ]);\r\n\r\n tableActions = computed<TableAction[]>(() => {\r\n if (this.tableData().length === 0 || this.activeTab() === 'system') {\r\n return [];\r\n }\r\n return [\r\n {\r\n icon: 'general.plus',\r\n label: this.transloco.translate('properties.list.createAction'),\r\n color: 'primary',\r\n action: () => {\r\n this.createProperty();\r\n },\r\n },\r\n ];\r\n });\r\n deletingRowIds = signal<any[]>([]);\r\n readonly rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.transloco.translate('properties.list.editAction'),\r\n color: 'primary',\r\n action: (row) => this.editRow(row),\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.transloco.translate('properties.list.deleteAction'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row) => this.deleteRow(row),\r\n hidden: (row: any) => !!row.isSystem,\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: PropertyItem) => this.deletingRowIds().includes(row.id),\r\n },\r\n ]);\r\n\r\n readonly loading = this.facade.isLoading('getAll');\r\n\r\n readonly tableData = computed(() => {\r\n const tab = this.activeTab();\r\n const allProperties = this.facade.list();\r\n\r\n switch (tab) {\r\n case 'system':\r\n return this.facade.systemProperties();\r\n case 'custom':\r\n return this.facade.customProperties();\r\n case 'all':\r\n default:\r\n return allProperties;\r\n }\r\n });\r\n\r\n readonly breadcrumbItems = this.facade.breadcrumbItems;\r\n\r\n private editRow(row: PropertyItem): void {\r\n if (!row?.id) {\r\n return;\r\n }\r\n this.navigatePreservingTab(['../properties-form', row.id]);\r\n }\r\n\r\n private deleteRow(row: PropertyItem): void {\r\n if (!row?.id) {\r\n return;\r\n }\r\n this.deletingRowIds.update((ids) => [...ids, row.id]);\r\n this.facade\r\n .delete(row.id)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.id),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n }\r\n\r\n createProperty() {\r\n this.navigatePreservingTab(['../properties-form']);\r\n }\r\n\r\n createPropertyWithType(viewType: string) {\r\n this.facade.setDefaultViewType(viewType);\r\n this.createProperty();\r\n }\r\n onTabChange(tab: string): void {\r\n const currentTab = tab;\r\n if (currentTab != this.tab()) {\r\n this.updateTabQueryParam(currentTab);\r\n }\r\n }\r\n private updateTabQueryParam(tab: string): void {\r\n this.router.navigate([], {\r\n relativeTo: this.route,\r\n queryParams: { tab },\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n });\r\n }\r\n\r\n private navigatePreservingTab(commands: any[]): void {\r\n this.router.navigate(commands, {\r\n relativeTo: this.route,\r\n queryParams: { tab: this.activeTab() },\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n}\r\n","<div class=\"space-y-3\">\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"space-y-1\">\r\n <h1 class=\"text-xl font-semibold text-slate-900 tracking-tight\">\r\n {{ \"properties.list.pageTitle\" | transloco }}\r\n </h1>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems()\"\r\n [styleClass]=\"'flex justify-center'\"\r\n >\r\n </mt-breadcrumb>\r\n </div>\r\n </div>\r\n <mt-card paddingless>\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n (onTabChange)=\"onTabChange($event)\"\r\n [data]=\"tableData()\"\r\n [actions]=\"tableActions()\"\r\n [columns]=\"tableColumns()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n >\r\n <ng-template #empty>\r\n <div headless class=\"flex-col justify-center items-center w-full p-5\">\r\n <div\r\n class=\"content flex flex-col gap-5 items-center text-center mb-5\"\r\n >\r\n <svg\r\n width=\"152\"\r\n height=\"120\"\r\n viewBox=\"0 0 152 120\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <circle cx=\"76\" cy=\"52\" r=\"52\" fill=\"#E9EAEB\" />\r\n <g filter=\"url(#filter0_ddd_2474_28277)\">\r\n <path\r\n d=\"M77.6 16C66.8273 16 57.2978 21.3233 51.4987 29.4829C49.605 29.0363 47.6301 28.8 45.6 28.8C31.4615 28.8 20 40.2615 20 54.4C20 68.5385 31.4615 80 45.6 80L109.6 80C121.971 80 132 69.9712 132 57.6C132 45.2288 121.971 35.2 109.6 35.2C108.721 35.2 107.854 35.2506 107.002 35.349C102.098 23.9677 90.7797 16 77.6 16Z\"\r\n fill=\"#FAFAFA\"\r\n />\r\n <ellipse\r\n cx=\"45.6\"\r\n cy=\"54.3998\"\r\n rx=\"25.6\"\r\n ry=\"25.6\"\r\n fill=\"url(#paint0_linear_2474_28277)\"\r\n />\r\n <circle\r\n cx=\"77.6016\"\r\n cy=\"48\"\r\n r=\"32\"\r\n fill=\"url(#paint1_linear_2474_28277)\"\r\n />\r\n <ellipse\r\n cx=\"109.599\"\r\n cy=\"57.6002\"\r\n rx=\"22.4\"\r\n ry=\"22.4\"\r\n fill=\"url(#paint2_linear_2474_28277)\"\r\n />\r\n </g>\r\n <circle cx=\"21\" cy=\"19\" r=\"5\" fill=\"#F5F5F5\" />\r\n <circle cx=\"18\" cy=\"109\" r=\"7\" fill=\"#F5F5F5\" />\r\n <circle cx=\"145\" cy=\"35\" r=\"7\" fill=\"#F5F5F5\" />\r\n <circle cx=\"134\" cy=\"8\" r=\"4\" fill=\"#F5F5F5\" />\r\n <foreignObject x=\"44\" y=\"54\" width=\"64\" height=\"64\">\r\n <div\r\n xmlns=\"http://www.w3.org/1999/xhtml\"\r\n style=\"\r\n backdrop-filter: blur(4px);\r\n clip-path: url(#bgblur_0_2474_28277_clip_path);\r\n height: 100%;\r\n width: 100%;\r\n \"\r\n ></div>\r\n </foreignObject>\r\n <g data-figma-bg-blur-radius=\"8\">\r\n <path\r\n d=\"M52 86C52 72.7452 62.7452 62 76 62C89.2548 62 100 72.7452 100 86C100 99.2548 89.2548 110 76 110C62.7452 110 52 99.2548 52 86Z\"\r\n fill=\"#344054\"\r\n fill-opacity=\"0.4\"\r\n />\r\n <path\r\n d=\"M85 95L81.5001 91.5M84 85.5C84 90.1944 80.1944 94 75.5 94C70.8056 94 67 90.1944 67 85.5C67 80.8056 70.8056 77 75.5 77C80.1944 77 84 80.8056 84 85.5Z\"\r\n stroke=\"white\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </g>\r\n <defs>\r\n <filter\r\n id=\"filter0_ddd_2474_28277\"\r\n x=\"0\"\r\n y=\"16\"\r\n width=\"152\"\r\n height=\"104\"\r\n filterUnits=\"userSpaceOnUse\"\r\n color-interpolation-filters=\"sRGB\"\r\n >\r\n <feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\" />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feMorphology\r\n radius=\"1.5\"\r\n operator=\"erode\"\r\n in=\"SourceAlpha\"\r\n result=\"effect1_dropShadow_2474_28277\"\r\n />\r\n <feOffset dy=\"3\" />\r\n <feGaussianBlur stdDeviation=\"1.5\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.0392157 0 0 0 0 0.0496732 0 0 0 0 0.0705882 0 0 0 0.04 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"BackgroundImageFix\"\r\n result=\"effect1_dropShadow_2474_28277\"\r\n />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feMorphology\r\n radius=\"4\"\r\n operator=\"erode\"\r\n in=\"SourceAlpha\"\r\n result=\"effect2_dropShadow_2474_28277\"\r\n />\r\n <feOffset dy=\"8\" />\r\n <feGaussianBlur stdDeviation=\"4\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.0392157 0 0 0 0 0.0496732 0 0 0 0 0.0705882 0 0 0 0.03 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"effect1_dropShadow_2474_28277\"\r\n result=\"effect2_dropShadow_2474_28277\"\r\n />\r\n <feColorMatrix\r\n in=\"SourceAlpha\"\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\r\n result=\"hardAlpha\"\r\n />\r\n <feMorphology\r\n radius=\"4\"\r\n operator=\"erode\"\r\n in=\"SourceAlpha\"\r\n result=\"effect3_dropShadow_2474_28277\"\r\n />\r\n <feOffset dy=\"20\" />\r\n <feGaussianBlur stdDeviation=\"12\" />\r\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\r\n <feColorMatrix\r\n type=\"matrix\"\r\n values=\"0 0 0 0 0.0392157 0 0 0 0 0.0496732 0 0 0 0 0.0705882 0 0 0 0.08 0\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in2=\"effect2_dropShadow_2474_28277\"\r\n result=\"effect3_dropShadow_2474_28277\"\r\n />\r\n <feBlend\r\n mode=\"normal\"\r\n in=\"SourceGraphic\"\r\n in2=\"effect3_dropShadow_2474_28277\"\r\n result=\"shape\"\r\n />\r\n </filter>\r\n <clipPath\r\n id=\"bgblur_0_2474_28277_clip_path\"\r\n transform=\"translate(-44 -54)\"\r\n >\r\n <path\r\n d=\"M52 86C52 72.7452 62.7452 62 76 62C89.2548 62 100 72.7452 100 86C100 99.2548 89.2548 110 76 110C62.7452 110 52 99.2548 52 86Z\"\r\n />\r\n </clipPath>\r\n <linearGradient\r\n id=\"paint0_linear_2474_28277\"\r\n x1=\"25.9429\"\r\n y1=\"37.4855\"\r\n x2=\"71.2\"\r\n y2=\"79.9998\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stop-color=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"paint1_linear_2474_28277\"\r\n x1=\"53.0301\"\r\n y1=\"26.8571\"\r\n x2=\"109.602\"\r\n y2=\"80\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stop-color=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </linearGradient>\r\n <linearGradient\r\n id=\"paint2_linear_2474_28277\"\r\n x1=\"92.3992\"\r\n y1=\"42.8002\"\r\n x2=\"131.999\"\r\n y2=\"80.0002\"\r\n gradientUnits=\"userSpaceOnUse\"\r\n >\r\n <stop stop-color=\"#D0D5DD\" />\r\n <stop offset=\"0.350715\" stop-color=\"white\" stop-opacity=\"0\" />\r\n </linearGradient>\r\n </defs>\r\n </svg>\r\n\r\n <div class=\"flex flex-col gap-1\">\r\n <div class=\"text-md text-surface-600\">\r\n {{ \"properties.list.emptyStateNoData\" | transloco }}\r\n </div>\r\n </div>\r\n <div>\r\n <mt-button\r\n [label]=\"'properties.list.addNewProperty' | transloco\"\r\n icon=\"general.plus\"\r\n (click)=\"createProperty()\"\r\n />\r\n </div>\r\n </div>\r\n <p-divider type=\"solid\">\r\n <div class=\"text-lg text-surface-600\">\r\n {{ \"properties.list.emptyStateTemplate\" | transloco }}\r\n </div>\r\n </p-divider>\r\n <div class=\"flex gap-3 mt-5 justify-center\">\r\n @for (card of propertyTypes(); track card.label) {\r\n <mt-card\r\n headless\r\n class=\"w-25 tailwind-4 cursor-pointer\"\r\n style=\"background-color: #fafafa\"\r\n (click)=\"createPropertyWithType(card.value)\"\r\n >\r\n <div\r\n class=\"content flex flex-col gap-3 items-center text-center\"\r\n >\r\n <mt-avatar\r\n [style.--p-avatar-background]=\"\r\n 'var(--p-' + card.color + '-100)'\r\n \"\r\n [style.--p-avatar-color]=\"'var(--p-' + card.color + '-600)'\"\r\n [icon]=\"card.icon\"\r\n shape=\"square\"\r\n ></mt-avatar>\r\n <div class=\"flex flex-col gap-1\">\r\n <div class=\"text-xs font-normal\">{{ card.label }}</div>\r\n </div>\r\n </div>\r\n </mt-card>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n </mt-table>\r\n </mt-card>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n DestroyRef,\r\n effect,\r\n forwardRef,\r\n inject,\r\n signal,\r\n computed,\r\n} from '@angular/core';\r\nimport {\r\n ControlValueAccessor,\r\n FormArray,\r\n FormControl,\r\n FormGroup,\r\n NG_VALUE_ACCESSOR,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SelectField } from '@masterteam/components/select-field';\r\nimport { TextField } from '@masterteam/components/text-field';\r\nimport { ToggleField } from '@masterteam/components/toggle-field';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport type { ApiConfigurationValue, ApiSchema } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\ntype HeaderFormGroup = FormGroup<{\r\n key: FormControl<string>;\r\n value: FormControl<string>;\r\n}>;\r\n\r\n@Component({\r\n selector: 'mt-api-configuration',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n ReactiveFormsModule,\r\n TextField,\r\n SelectField,\r\n ToggleField,\r\n Button,\r\n TranslocoModule,\r\n ],\r\n templateUrl: './api-configuration.html',\r\n styleUrl: './api-configuration.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ApiConfiguration),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class ApiConfiguration implements ControlValueAccessor {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly destroyRef = inject(DestroyRef);\r\n readonly transloco = inject(TranslocoService);\r\n\r\n private readonly schema = signal<ApiSchema | null>(null);\r\n private isWriting = false;\r\n private touched = false;\r\n\r\n readonly isTesting = this.facade.isLoading('testApiConfiguration');\r\n readonly apiProperties = this.facade.apiProperties;\r\n readonly hasDetectedSchema = computed(() => this.apiProperties().length > 0);\r\n\r\n readonly form = new FormGroup({\r\n endpoint: new FormControl<string>('', {\r\n nonNullable: true,\r\n validators: [Validators.required],\r\n }),\r\n headers: new FormArray<HeaderFormGroup>([]),\r\n key: new FormControl<string | null>(null),\r\n value: new FormControl<string | null>(null),\r\n supportMultiSelect: new FormControl<boolean>(false, { nonNullable: true }),\r\n });\r\n\r\n private onChange: (value: ApiConfigurationValue | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n private readonly formChanges = toSignal(this.form.valueChanges, {\r\n initialValue: this.form.getRawValue(),\r\n });\r\n\r\n constructor() {\r\n this.facade.resetApiConfiguration();\r\n effect(() => {\r\n this.formChanges();\r\n this.emitValue();\r\n });\r\n\r\n effect(() => {\r\n const latestSchema = this.facade.apiSchema();\r\n if (latestSchema !== undefined) {\r\n this.schema.set(latestSchema);\r\n if (!this.isWriting) {\r\n this.emitValue(false);\r\n }\r\n }\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.facade.resetApiConfiguration();\r\n });\r\n }\r\n\r\n get headers(): FormArray<HeaderFormGroup> {\r\n return this.form.controls.headers;\r\n }\r\n\r\n writeValue(value: ApiConfigurationValue | null): void {\r\n this.isWriting = true;\r\n try {\r\n if (!value) {\r\n this.form.reset(\r\n {\r\n endpoint: '',\r\n key: null,\r\n value: null,\r\n supportMultiSelect: false,\r\n },\r\n { emitEvent: false },\r\n );\r\n this.setHeadersFromRecord({});\r\n this.schema.set(null);\r\n this.touched = false;\r\n return;\r\n }\r\n\r\n this.schema.set(value.schema ?? null);\r\n this.form.patchValue(\r\n {\r\n endpoint: value.endpoint ?? '',\r\n key: value.key ?? null,\r\n value: value.value ?? null,\r\n supportMultiSelect: !!value.supportMultiSelect,\r\n },\r\n { emitEvent: false },\r\n );\r\n this.setHeadersFromRecord(value.headers ?? {});\r\n this.touched = false;\r\n } finally {\r\n this.isWriting = false;\r\n this.emitValue(false);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: ApiConfigurationValue | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n if (isDisabled) {\r\n this.form.disable({ emitEvent: false });\r\n } else {\r\n this.form.enable({ emitEvent: false });\r\n }\r\n }\r\n\r\n addHeader(): void {\r\n this.headers.push(this.createHeaderGroup());\r\n }\r\n\r\n removeHeader(index: number): void {\r\n this.headers.removeAt(index);\r\n this.emitValue();\r\n }\r\n\r\n testApi(): void {\r\n if (!this.form.controls.endpoint.valid) {\r\n this.form.controls.endpoint.markAsTouched();\r\n return;\r\n }\r\n\r\n const headers = this.headersToRecord();\r\n const payload = {\r\n endpoint: this.form.controls.endpoint.value,\r\n headers: Object.keys(headers).length ? headers : undefined,\r\n };\r\n\r\n this.facade.testApiConfiguration(payload).subscribe();\r\n }\r\n\r\n private emitValue(triggerTouched = true): void {\r\n if (this.isWriting) {\r\n return;\r\n }\r\n\r\n const headers = this.headersToRecord();\r\n const value: ApiConfigurationValue = {\r\n endpoint: this.form.controls.endpoint.value,\r\n headers,\r\n key: this.form.controls.key.value ?? undefined,\r\n value: this.form.controls.value.value ?? undefined,\r\n supportMultiSelect: this.form.controls.supportMultiSelect.value,\r\n schema: this.schema(),\r\n };\r\n\r\n this.onChange(value);\r\n\r\n if (triggerTouched && !this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n }\r\n\r\n private createHeaderGroup(\r\n initial: Partial<{ key: string; value: string }> = {},\r\n ): HeaderFormGroup {\r\n return new FormGroup({\r\n key: new FormControl(initial.key ?? '', { nonNullable: true }),\r\n value: new FormControl(initial.value ?? '', { nonNullable: true }),\r\n });\r\n }\r\n\r\n private setHeadersFromRecord(headers: Record<string, string>): void {\r\n while (this.headers.length) {\r\n this.headers.removeAt(0);\r\n }\r\n\r\n Object.entries(headers).forEach(([key, value]) => {\r\n this.headers.push(this.createHeaderGroup({ key, value }));\r\n });\r\n }\r\n\r\n private headersToRecord(): Record<string, string> {\r\n return this.headers.controls.reduce<Record<string, string>>(\r\n (acc, group) => {\r\n const key = group.controls.key.value?.trim();\r\n if (key) {\r\n acc[key] = group.controls.value.value ?? '';\r\n }\r\n return acc;\r\n },\r\n {},\r\n );\r\n }\r\n}\r\n","<div [formGroup]=\"form\" class=\"space-y-6\">\r\n <div class=\"space-y-4 rounded-xl bg-content px-6 py-4 shadow-sm\">\r\n <div class=\"grid items-end gap-3 md:grid-cols-[minmax(0,1fr)_auto]\">\r\n <mt-text-field\r\n formControlName=\"endpoint\"\r\n [label]=\"'properties.form.endpoint' | transloco\"\r\n [placeholder]=\"'properties.form.endpointPlaceholder' | transloco\"\r\n />\r\n <div class=\"flex justify-end gap-2\">\r\n <mt-button\r\n type=\"button\"\r\n [text]=\"true\"\r\n icon=\"general.plus\"\r\n [label]=\"'properties.form.addHeader' | transloco\"\r\n (click)=\"addHeader()\"\r\n />\r\n <mt-button\r\n type=\"button\"\r\n [label]=\"'properties.form.testApi' | transloco\"\r\n [loading]=\"isTesting()\"\r\n (click)=\"testApi()\"\r\n />\r\n </div>\r\n </div>\r\n\r\n @if (headers.controls.length) {\r\n <div class=\"space-y-3\">\r\n <div class=\"text-sm font-medium text-surface-500\">\r\n {{ \"properties.form.headers\" | transloco }}\r\n </div>\r\n <div class=\"space-y-3\">\r\n @for (\r\n headerCtrl of headers.controls;\r\n track headerCtrl;\r\n let i = $index\r\n ) {\r\n <div\r\n [formGroup]=\"headerCtrl\"\r\n class=\"grid items-end gap-3 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)_auto]\"\r\n >\r\n <mt-text-field\r\n formControlName=\"key\"\r\n [label]=\"'properties.form.headerKey' | transloco\"\r\n />\r\n <mt-text-field\r\n formControlName=\"value\"\r\n [label]=\"'properties.form.headerValue' | transloco\"\r\n />\r\n <mt-button\r\n type=\"button\"\r\n [text]=\"true\"\r\n icon=\"general.trash-01\"\r\n (click)=\"removeHeader(i)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n } @else {\r\n <p class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.noHeadersMessage\" | transloco }}\r\n </p>\r\n }\r\n </div>\r\n\r\n <div class=\"space-y-4 rounded-xl bg-content px-6 py-4 shadow-sm\">\r\n @if (hasDetectedSchema()) {\r\n <div class=\"grid gap-4 md:grid-cols-2\">\r\n <mt-select-field\r\n formControlName=\"key\"\r\n [options]=\"apiProperties()\"\r\n [showClear]=\"true\"\r\n optionLabel=\"name\"\r\n optionValue=\"key\"\r\n [label]=\"'properties.form.keyField' | transloco\"\r\n />\r\n <mt-select-field\r\n formControlName=\"value\"\r\n [options]=\"apiProperties()\"\r\n [showClear]=\"true\"\r\n optionLabel=\"name\"\r\n optionValue=\"key\"\r\n [label]=\"'properties.form.valueField' | transloco\"\r\n />\r\n </div>\r\n } @else {\r\n <p class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.messageTestApiPrompt\" | transloco }}\r\n </p>\r\n }\r\n\r\n <div class=\"flex items-center justify-between gap-4\">\r\n <mt-toggle-field\r\n formControlName=\"supportMultiSelect\"\r\n [label]=\"'properties.form.labelSupportMultiSelect' | transloco\"\r\n />\r\n @if (isTesting()) {\r\n <span class=\"text-xs text-surface-400\">\r\n {{ \"properties.form.messageTesting\" | transloco }}\r\n </span>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n} from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-check-list-form-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './check-list-form-configuration.html',\r\n styleUrl: './check-list-form-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class CheckListFormConfiguration implements OnDestroy {\r\n private readonly propertiesFacade = inject(PropertiesFacade);\r\n private readonly controlContainer = inject(ControlContainer);\r\n private readonly parentGroup = this.controlContainer.control as FormGroup;\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly lookups = this.propertiesFacade.lookups;\r\n readonly configScopes = this.propertiesFacade.configScopes;\r\n readonly configProperties = this.propertiesFacade.configProperties;\r\n\r\n readonly configuration = toSignal(\r\n this.parentGroup.valueChanges.pipe(\r\n startWith(this.parentGroup.value),\r\n map((value) => value?.configuration),\r\n distinctUntilChanged(),\r\n ),\r\n { initialValue: this.parentGroup.value?.configuration },\r\n );\r\n\r\n readonly scopeItems = computed(() => {\r\n const scope = this.configScopes()[0];\r\n return scope?.items ?? [];\r\n });\r\n\r\n readonly formConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n {\r\n key: 'lookup',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectLookup'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n filter: true,\r\n options: this.lookups(),\r\n },\r\n {\r\n key: 'scopeId',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectScope'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n options: this.scopeItems(),\r\n filter: true,\r\n },\r\n new PickListFieldConfig({\r\n key: 'properties',\r\n cssClass: 'md:col-span-2',\r\n options: this.configProperties(),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableProperties',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedProperties',\r\n ),\r\n }),\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.lookups().length) {\r\n this.propertiesFacade.loadLookups();\r\n }\r\n });\r\n\r\n effect(() => {\r\n const scopeId = this.configuration()?.scopeId;\r\n if (scopeId) {\r\n const scopeType = this.configScopes()[0]?.scope;\r\n if (scopeType) {\r\n this.propertiesFacade.loadPropertiesForConfigType(scopeType, scopeId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.propertiesFacade.resetConfigProperties();\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n} from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-dynamic-list-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './dynamic-list-configuration.html',\r\n styleUrl: './dynamic-list-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class DynamicListConfiguration implements OnDestroy {\r\n private readonly propertiesFacade = inject(PropertiesFacade);\r\n private readonly controlContainer = inject(ControlContainer);\r\n private readonly parentGroup = this.controlContainer.control as FormGroup;\r\n private readonly transloco = inject(TranslocoService);\r\n readonly configScopes = this.propertiesFacade.configScopes;\r\n readonly configProperties = this.propertiesFacade.configProperties;\r\n\r\n readonly configuration = toSignal(\r\n this.parentGroup.valueChanges.pipe(\r\n startWith(this.parentGroup.value),\r\n map((value) => value?.configuration),\r\n distinctUntilChanged(),\r\n ),\r\n { initialValue: this.parentGroup.value?.configuration },\r\n );\r\n\r\n readonly scopeItems = computed(() => {\r\n const scope = this.configScopes()[0];\r\n return scope?.items ?? [];\r\n });\r\n\r\n readonly formConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n {\r\n key: 'scopeId',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectScope'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n filter: true,\r\n\r\n options: this.scopeItems(),\r\n },\r\n new PickListFieldConfig({\r\n key: 'properties',\r\n cssClass: 'md:col-span-2',\r\n options: this.configProperties(),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableProperties',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedProperties',\r\n ),\r\n }),\r\n {\r\n key: 'mappingBehaviour',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.mapToActual'),\r\n cssClass: 'md:col-span-2',\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n const scopeId = this.configuration()?.scopeId;\r\n if (scopeId) {\r\n const scopeType = this.configScopes()[0]?.scope;\r\n if (scopeType) {\r\n this.propertiesFacade.loadPropertiesForConfigType(scopeType, scopeId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.propertiesFacade.resetConfigProperties();\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n} from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-editable-list-view-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './editable-list-view-configuration.html',\r\n styleUrl: './editable-list-view-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class EditableListViewConfiguration implements OnDestroy {\r\n private readonly propertiesFacade = inject(PropertiesFacade);\r\n private readonly controlContainer = inject(ControlContainer);\r\n private readonly parentGroup = this.controlContainer.control as FormGroup;\r\n private readonly transloco = inject(TranslocoService);\r\n readonly configScopes = this.propertiesFacade.configScopes;\r\n readonly configProperties = this.propertiesFacade.configProperties;\r\n\r\n readonly configuration = toSignal(\r\n this.parentGroup.valueChanges.pipe(\r\n startWith(this.parentGroup.value),\r\n map((value) => value?.configuration),\r\n distinctUntilChanged(),\r\n ),\r\n { initialValue: this.parentGroup.value?.configuration },\r\n );\r\n\r\n readonly scopeItems = computed(() => {\r\n const scope = this.configScopes()[0];\r\n return scope?.items ?? [];\r\n });\r\n\r\n readonly formConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n {\r\n key: 'scopeId',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectScope'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n options: this.scopeItems(),\r\n },\r\n\r\n new PickListFieldConfig({\r\n key: 'Properties',\r\n cssClass: 'md:col-span-2',\r\n options: this.configProperties(),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableProperties',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedProperties',\r\n ),\r\n }),\r\n {\r\n key: 'isEditable',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.isEditable'),\r\n },\r\n {\r\n key: 'preserveValue',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.preserveValue'),\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n const scopeId = this.configuration()?.scopeId;\r\n if (scopeId) {\r\n const scopeType = this.configScopes()[0]?.scope;\r\n if (scopeType) {\r\n this.propertiesFacade.loadPropertiesForConfigType(scopeType, scopeId);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.propertiesFacade.resetConfigProperties();\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import {\r\n Component,\r\n OnDestroy,\r\n computed,\r\n effect,\r\n inject,\r\n linkedSignal,\r\n signal,\r\n} from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroup,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { distinctUntilChanged, map, startWith } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-internal-module-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './internal-module-configuration.html',\r\n styleUrl: './internal-module-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class InternalModuleConfiguration implements OnDestroy {\r\n // private readonly workspaceStructureFacade = inject(WorkspaceStructureFacade);\r\n // = this.workspaceStructureFacade.workspaceNodes;\r\n levels: any;\r\n private readonly propertiesFacade = inject(PropertiesFacade);\r\n private cc = inject(ControlContainer);\r\n private readonly transloco = inject(TranslocoService);\r\n parentGroup = this.cc.control as FormGroup;\r\n readonly configProperties = this.propertiesFacade.configProperties;\r\n readonly configScopes = this.propertiesFacade.configScopes;\r\n readonly configuration = toSignal(\r\n this.parentGroup.valueChanges.pipe(\r\n startWith(this.parentGroup.value),\r\n map((v) => v?.configuration),\r\n distinctUntilChanged(),\r\n ),\r\n { initialValue: this.parentGroup.value?.configuration },\r\n );\r\n PrevModuleId = signal<string | null>(null);\r\n\r\n readonly scopeItems = computed(() => {\r\n const selectedType = this.configuration()?.type;\r\n if (!selectedType) return [];\r\n const scope = this.configScopes().find((s) => s.scope === selectedType);\r\n return scope?.items ?? [];\r\n });\r\n readonly formConfig = linkedSignal<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3 align-items-end ',\r\n fields: [\r\n {\r\n key: 'type',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.type'),\r\n optionLabel: 'scope',\r\n optionValue: 'scope',\r\n options: this.configScopes(),\r\n },\r\n {\r\n key: 'scopeId',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectScope'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n filter: true,\r\n\r\n options: this.scopeItems(),\r\n },\r\n {\r\n type: 'select',\r\n key: 'property',\r\n label: this.transloco.translate('properties.form.valueProperty'),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n options: this.configProperties(),\r\n },\r\n\r\n new PickListFieldConfig({\r\n cssClass: 'md:col-span-2 mt-2',\r\n key: 'propertyDetails',\r\n options: this.configProperties(),\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableProperties',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedProperties',\r\n ),\r\n }),\r\n {\r\n cssClass: 'md:col-span-2',\r\n key: 'preserveValue',\r\n type: 'toggle',\r\n label: this.transloco.translate(\r\n 'properties.form.labelPreserveValue',\r\n ),\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n constructor() {\r\n effect(() => {\r\n if (this.configuration()?.scopeId) {\r\n const moduleType = this.configuration()?.type;\r\n const moduleId = this.configuration()?.scopeId;\r\n if (moduleId == this.PrevModuleId()) {\r\n return;\r\n }\r\n if (moduleType && moduleId) {\r\n this.PrevModuleId.set(moduleId);\r\n this.propertiesFacade.loadPropertiesForConfigType(\r\n moduleType,\r\n moduleId,\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.propertiesFacade.resetConfigProperties();\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, computed, effect, inject } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\n\r\n@Component({\r\n selector: 'mt-location-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './location-configuration.html',\r\n styleUrl: './location-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class LocationConfiguration {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly countries = this.facade.countries;\r\n\r\n readonly formConfig = computed<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass:\r\n 'grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3',\r\n fields: [\r\n {\r\n key: 'country',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectCountry'),\r\n optionLabel: 'name',\r\n optionValue: 'name',\r\n options: this.countries(),\r\n filter: true,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.countries().length) {\r\n this.facade.loadCountries();\r\n }\r\n });\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, computed, effect, inject } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\n\r\n@Component({\r\n selector: 'mt-lookup-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './lookup-configuration.html',\r\n styleUrl: './lookup-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class LookupConfiguration {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly lookups = this.facade.lookups;\r\n\r\n readonly formConfig = computed<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass:\r\n 'grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3',\r\n fields: [\r\n {\r\n key: 'lookup',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectLookup'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n options: this.lookups(),\r\n filter: true,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.lookups().length) {\r\n this.facade.loadLookups();\r\n }\r\n });\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, inject, signal } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\n@Component({\r\n selector: 'mt-percentage-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './percentage-configuration.html',\r\n styleUrl: './percentage-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class PercentageConfiguration {\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly formConfig = signal<DynamicFormConfig>({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass:\r\n 'grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3',\r\n fields: [\r\n {\r\n key: 'color',\r\n type: 'color-picker',\r\n label: this.transloco.translate('properties.form.selectColor'),\r\n },\r\n ],\r\n },\r\n ],\r\n });\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, computed, effect, inject } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\nimport { PropertiesFacade } from '../../../../store';\r\n\r\n@Component({\r\n selector: 'mt-user-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './user-configuration.html',\r\n styleUrl: './user-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class UserConfiguration {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly transloco = inject(TranslocoService);\r\n readonly groups = this.facade.groups;\r\n\r\n readonly formConfig = computed<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass:\r\n 'grid grid-cols-1 md:grid-cols-[minmax(0,1fr)_minmax(0,1fr)] gap-3',\r\n fields: [\r\n {\r\n key: 'group',\r\n type: 'select',\r\n label: this.transloco.translate('properties.form.selectGroup'),\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n options: this.groups(),\r\n filter: true,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.groups().length) {\r\n this.facade.loadGroups();\r\n }\r\n });\r\n }\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import { Component, inject, signal } from '@angular/core';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, PickListFieldConfig } from '@masterteam/components';\r\nimport {\r\n ControlContainer,\r\n FormGroupDirective,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { TranslocoService } from '@jsverse/transloco';\r\n\r\nexport const ATTACHMENT_ACCEPT = [\r\n {\r\n key: 'image/*',\r\n name: 'image',\r\n },\r\n {\r\n key: 'application/pdf',\r\n name: 'pdf',\r\n },\r\n {\r\n key: '.mpp',\r\n name: 'mpp',\r\n },\r\n {\r\n key: '.xer',\r\n name: 'xer',\r\n },\r\n {\r\n key: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n name: 'word',\r\n },\r\n {\r\n key: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n name: 'excel',\r\n },\r\n {\r\n key: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n name: 'powrpoint',\r\n },\r\n {\r\n key: '.eml',\r\n name: 'eml',\r\n },\r\n {\r\n key: '.doc',\r\n name: 'doc',\r\n },\r\n {\r\n key: '.docx',\r\n name: 'docx',\r\n },\r\n {\r\n key: '.ppt',\r\n name: 'ppt',\r\n },\r\n {\r\n key: '.pptx',\r\n name: 'pptx',\r\n },\r\n {\r\n key: '.xls',\r\n name: 'xls',\r\n },\r\n {\r\n key: '.xlsx',\r\n name: 'xlsx',\r\n },\r\n {\r\n key: '.csv',\r\n name: 'csv',\r\n },\r\n {\r\n key: '.mp4',\r\n name: 'mp4',\r\n },\r\n {\r\n key: '.mov',\r\n name: 'mov',\r\n },\r\n {\r\n key: '.wmv',\r\n name: 'wmv',\r\n },\r\n {\r\n key: '.avi',\r\n name: 'avi',\r\n },\r\n {\r\n key: '.mkv',\r\n name: 'mkv',\r\n },\r\n {\r\n key: '.msg',\r\n name: 'msg',\r\n },\r\n {\r\n key: '.zip',\r\n name: 'zip',\r\n },\r\n {\r\n key: '.rar',\r\n name: 'rar',\r\n },\r\n {\r\n key: '.7z',\r\n name: '7z',\r\n },\r\n {\r\n key: '.gz',\r\n name: 'gz',\r\n },\r\n {\r\n key: '.gzip',\r\n name: 'gzip',\r\n },\r\n {\r\n key: '.gzip',\r\n name: 'gzip',\r\n },\r\n];\r\n\r\n@Component({\r\n selector: 'mt-attachment-configuration',\r\n imports: [DynamicForm, ReactiveFormsModule],\r\n templateUrl: './attachment-configuration.html',\r\n styleUrl: './attachment-configuration.scss',\r\n viewProviders: [\r\n { provide: ControlContainer, useExisting: FormGroupDirective },\r\n ],\r\n})\r\nexport class AttachmentConfiguration {\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n readonly formConfig = signal<DynamicFormConfig>({\r\n sections: [\r\n {\r\n key: 'configuration',\r\n label: this.transloco.translate('properties.form.configurationSection'),\r\n cssClass:\r\n ' rounded-xl bg-content \\\r\n shadow-sm \\\r\n px-6 py-4',\r\n type: 'header',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n new PickListFieldConfig({\r\n key: 'AcceptTypes',\r\n options: ATTACHMENT_ACCEPT,\r\n optionLabel: 'name',\r\n optionValue: 'key',\r\n sourceHeader: this.transloco.translate(\r\n 'properties.form.availableTypes',\r\n ),\r\n targetHeader: this.transloco.translate(\r\n 'properties.form.selectedTypes',\r\n ),\r\n cssClass: 'md:col-span-2',\r\n }),\r\n {\r\n key: 'IsMulitple',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.allowMultiple'),\r\n },\r\n ],\r\n },\r\n ],\r\n });\r\n}\r\n","<mt-dynamic-form formControlName=\"configuration\" [formConfig]=\"formConfig()\" />\r\n","import {\r\n Component,\r\n ComponentRef,\r\n EnvironmentInjector,\r\n OnDestroy,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n linkedSignal,\r\n signal,\r\n} from '@angular/core';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Page } from '@masterteam/components/page';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { DynamicFormConfig, ValidatorConfig } from '@masterteam/components';\r\nimport { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms';\r\nimport { Subscription, distinctUntilChanged, map } from 'rxjs';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { TranslocoService, TranslocoModule } from '@jsverse/transloco';\r\nimport { ApiConfiguration } from './configuration-types/api-configuration/api-configuration';\r\nimport { CheckListFormConfiguration } from './configuration-types/check-list-form-configuration/check-list-form-configuration';\r\nimport { DynamicListConfiguration } from './configuration-types/dynamic-list-configuration/dynamic-list-configuration';\r\nimport { EditableListViewConfiguration } from './configuration-types/editable-list-view-configuration/editable-list-view-configuration';\r\nimport { InternalModuleConfiguration } from './configuration-types/internal-module-configuration/internal-module-configuration';\r\nimport { LocationConfiguration } from './configuration-types/location-configuration/location-configuration';\r\nimport { LookupConfiguration } from './configuration-types/lookup-configuration/lookup-configuration';\r\nimport { PercentageConfiguration } from './configuration-types/percentage-configuration/percentage-configuration';\r\nimport { UserConfiguration } from './configuration-types/user-configuration/user-configuration';\r\nimport {\r\n PropertyItem,\r\n PropertyPayload,\r\n} from '../../store/properties/properties.model';\r\nimport { AttachmentConfiguration } from './configuration-types/attachment-configuration/attachment-configuration';\r\nimport { PropertiesFacade } from '../../store';\r\n\r\n@Component({\r\n selector: 'mt-property-form',\r\n imports: [\r\n Page,\r\n Button,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n ApiConfiguration,\r\n CheckListFormConfiguration,\r\n DynamicListConfiguration,\r\n EditableListViewConfiguration,\r\n InternalModuleConfiguration,\r\n LocationConfiguration,\r\n LookupConfiguration,\r\n PercentageConfiguration,\r\n UserConfiguration,\r\n AttachmentConfiguration,\r\n SkeletonModule,\r\n TranslocoModule,\r\n ],\r\n templateUrl: './property-form.html',\r\n styleUrl: './property-form.scss',\r\n})\r\nexport class PropertyForm implements OnDestroy {\r\n private readonly facade = inject(PropertiesFacade);\r\n private readonly router = inject(Router);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly transloco = inject(TranslocoService);\r\n\r\n propertyId = input<string>('');\r\n\r\n private readonly propertyTypes = this.facade.propertyTypes;\r\n\r\n submitLabel = computed(() =>\r\n this.propertyId()\r\n ? this.transloco.translate('properties.form.updateButton')\r\n : this.transloco.translate('properties.form.createButton'),\r\n );\r\n isEditing = computed(() => !!this.propertyId());\r\n\r\n // Keep your original structure: \"main\" is a FormControl<any>, \"configuration\" is FormControl<any|null>\r\n readonly propertyForm = new FormGroup({\r\n main: new FormControl<any>({\r\n isCalculated: false,\r\n viewType: null,\r\n name: { ar: '', en: '' },\r\n description: '',\r\n }),\r\n configuration: new FormControl<any | null>(null),\r\n });\r\n\r\n private readonly mainControl = this.propertyForm.get(\r\n 'main',\r\n ) as FormControl<any>;\r\n private readonly configurationControl = this.propertyForm.get(\r\n 'configuration',\r\n ) as FormControl<any | null>;\r\n\r\n private readonly creating = this.facade.isLoading('create');\r\n private readonly updating = this.facade.isLoading('update');\r\n readonly loading = this.facade.isLoading('getOne');\r\n readonly submitting = computed(() => this.creating() || this.updating());\r\n readonly propertyType = toSignal(\r\n this.mainControl.valueChanges.pipe(\r\n map((v) => v?.viewType),\r\n distinctUntilChanged(),\r\n ),\r\n );\r\n\r\n private readonly selectedPropertyTypeConfiguration = computed(() => {\r\n const propertyTypesSetting = this.propertyTypes();\r\n const selectedViewType = this.propertyType();\r\n\r\n if (!propertyTypesSetting?.value || !selectedViewType) return null;\r\n const match = propertyTypesSetting.value.find(\r\n (item: any) =>\r\n item.viewType?.toLowerCase() === selectedViewType.toLowerCase(),\r\n );\r\n\r\n return match?.configuration ?? null;\r\n });\r\n\r\n readonly configurationFormConfig = computed(\r\n () => this.selectedPropertyTypeConfiguration()?.configurationForm ?? null,\r\n );\r\n\r\n @ViewChild('configurationHost', { read: ViewContainerRef })\r\n private configurationHost?: ViewContainerRef;\r\n\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n\r\n private readonly configurationComponentType = signal<Type<any> | null>(null);\r\n private configurationComponentRef: ComponentRef<any> | null = null;\r\n private configurationComponentLoadId = 0;\r\n private readonly externalConfigurationForm = signal<FormGroup | null>(null);\r\n private externalConfigurationSubscriptions: Subscription | null = null;\r\n private readonly externalConfigurationInvalid = signal(false);\r\n\r\n readonly configurationComponentExists = computed(\r\n () => !!this.configurationComponentType(),\r\n );\r\n readonly configurationFormInvalid = computed(() =>\r\n this.externalConfigurationInvalid(),\r\n );\r\n readonly submitDisabled = computed(\r\n () => this.submitting() || this.configurationFormInvalid(),\r\n );\r\n // Your existing dynamic form config unchanged\r\n dynamicFormConfigMain = linkedSignal<DynamicFormConfig>(() => ({\r\n layout: {\r\n containerClass: `space-y-2`,\r\n },\r\n sections: [\r\n {\r\n key: 'top-row',\r\n type: 'none',\r\n cssClass: ' rounded-xl bg-content shadow-sm p-6 mt-3 mb-0',\r\n bodyClass: 'flex justify-between items-center gap-6',\r\n fields: [\r\n {\r\n key: 'viewType',\r\n type: 'select',\r\n placeholder: this.transloco.translate(\r\n 'properties.form.selectPropertyType',\r\n ),\r\n optionLabel: 'label.en',\r\n optionValue: 'viewType',\r\n cssClass: 'w-1/2',\r\n options: this.propertyTypes()?.value,\r\n disabled: this.isEditing(),\r\n filter: true,\r\n hasPlaceholderPrefix: false,\r\n },\r\n {\r\n key: 'isCalculated',\r\n type: 'toggle',\r\n label: this.transloco.translate('properties.form.calculated'),\r\n cssClass: 'justify-self-end',\r\n relations: [\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Text',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'LongText',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Percentage',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Date',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Currency',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Number',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Checkbox',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Lookup',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'LookupMultiSelect',\r\n },\r\n {\r\n action: 'show',\r\n key: 'viewType',\r\n value: 'Time',\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n key: 'default-info',\r\n label: this.transloco.translate('properties.form.defaultInfoSection'),\r\n type: 'header',\r\n cssClass: ' rounded-xl bg-content shadow-sm p-6',\r\n bodyClass: 'grid grid-cols-1 md:grid-cols-2 gap-3',\r\n fields: [\r\n {\r\n key: 'name.en',\r\n label: this.transloco.translate('properties.form.englishName'),\r\n placeholder: this.transloco.translate(\r\n 'properties.form.enterEnglishName',\r\n ),\r\n validators: [new ValidatorConfig({ type: 'required' })],\r\n },\r\n {\r\n key: 'name.ar',\r\n label: this.transloco.translate('properties.form.arabicName'),\r\n placeholder: this.transloco.translate(\r\n 'properties.form.enterArabicName',\r\n ),\r\n validators: [new ValidatorConfig({ type: 'required' })],\r\n },\r\n {\r\n key: 'description',\r\n label: this.transloco.translate('properties.form.description'),\r\n type: 'textarea',\r\n cssClass: 'md:col-span-2',\r\n },\r\n // {\r\n // key: 'defaultValue',\r\n // label: 'Default Value',\r\n // cssClass: 'md:col-span-2',\r\n // },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n // Load when editing\r\n effect(() => {\r\n if (this.propertyId()) {\r\n this.facade.loadOne(this.propertyId());\r\n }\r\n });\r\n\r\n // Patch viewType from store when creating new property\r\n effect(() => {\r\n const defaultViewType = this.facade.defaultViewType();\r\n if (!this.propertyId() && defaultViewType) {\r\n this.mainControl.patchValue(\r\n { ...this.mainControl.value, viewType: defaultViewType },\r\n { emitEvent: true },\r\n );\r\n }\r\n });\r\n\r\n // Track previous property type\r\n let prev: any;\r\n effect(() => {\r\n const currentPropertyType = this.propertyType();\r\n if (!currentPropertyType || !prev || prev == currentPropertyType) {\r\n prev = this.propertyType();\r\n return;\r\n }\r\n\r\n this.configurationControl.reset(null);\r\n });\r\n effect(() => {\r\n const currentPropertyType = this.propertyType();\r\n if (!currentPropertyType) return;\r\n\r\n // Reset config scopes before loading new ones\r\n this.facade.resetConfigScopes();\r\n\r\n // Load config scopes for specific property types\r\n const supportedTypes = [\r\n 'InternalModule',\r\n 'DynamicList',\r\n 'EditableListView',\r\n 'LookupLog',\r\n ];\r\n if (supportedTypes.includes(currentPropertyType)) {\r\n this.facade.loadConfigAsType(currentPropertyType);\r\n }\r\n });\r\n effect(() => {\r\n const property = this.facade.selected();\r\n this.syncFormWithSelectedProperty(property);\r\n });\r\n\r\n effect(() => {\r\n this.resolveConfigurationComponent(\r\n this.selectedPropertyTypeConfiguration(),\r\n );\r\n });\r\n\r\n effect(() => {\r\n this.renderConfigurationComponent(this.configurationComponentType());\r\n });\r\n }\r\n\r\n private renderConfigurationComponent(componentType: Type<any> | null) {\r\n if (!this.configurationHost) return;\r\n\r\n this.destroyConfigurationComponent();\r\n\r\n if (!componentType) return;\r\n\r\n const componentRef = this.configurationHost.createComponent(componentType, {\r\n environmentInjector: this.environmentInjector,\r\n });\r\n\r\n this.configurationComponentRef = componentRef;\r\n this.connectExternalConfigurationForm(componentRef.instance);\r\n }\r\n\r\n private destroyConfigurationComponent() {\r\n this.externalConfigurationSubscriptions?.unsubscribe();\r\n this.externalConfigurationSubscriptions = null;\r\n this.externalConfigurationForm.set(null);\r\n this.externalConfigurationInvalid.set(false);\r\n this.configurationComponentRef?.destroy();\r\n this.configurationComponentRef = null;\r\n this.configurationHost?.clear();\r\n }\r\n\r\n private connectExternalConfigurationForm(instance: any) {\r\n const form = this.extractConfigurationForm(instance);\r\n if (!form) return;\r\n\r\n this.externalConfigurationForm.set(form);\r\n this.externalConfigurationInvalid.set(form.invalid);\r\n\r\n const currentValue = this.configurationControl.value;\r\n if (currentValue) {\r\n form.patchValue(currentValue);\r\n }\r\n\r\n this.configurationControl.setValue(form.value ?? null, {\r\n emitEvent: false,\r\n });\r\n\r\n this.externalConfigurationSubscriptions = new Subscription();\r\n this.externalConfigurationSubscriptions.add(\r\n form.valueChanges.subscribe((value) =>\r\n this.configurationControl.setValue(value, { emitEvent: false }),\r\n ),\r\n );\r\n this.externalConfigurationSubscriptions.add(\r\n form.statusChanges.subscribe(() =>\r\n this.externalConfigurationInvalid.set(form.invalid),\r\n ),\r\n );\r\n }\r\n\r\n private extractConfigurationForm(instance: any): FormGroup | null {\r\n const form = (instance as { form?: any })?.form;\r\n return form instanceof FormGroup ? form : null;\r\n }\r\n // PropertyTypeConfiguration\r\n private resolveConfigurationComponent(configuration: any | null) {\r\n const componentLoader = configuration?.configurationComponent;\r\n const loadId = ++this.configurationComponentLoadId;\r\n\r\n if (!componentLoader) {\r\n this.configurationComponentType.set(null);\r\n return;\r\n }\r\n\r\n // Direct component type\r\n if (typeof componentLoader !== 'function' || componentLoader.prototype) {\r\n this.configurationComponentType.set(componentLoader as Type<any>);\r\n return;\r\n }\r\n\r\n // Async loader factory\r\n try {\r\n const result = (\r\n componentLoader as () => Type<any> | Promise<Type<any>>\r\n )();\r\n this.applyConfigurationComponentResult(result, loadId);\r\n } catch (error) {\r\n console.error('Failed to resolve configuration component.', error);\r\n this.configurationComponentType.set(null);\r\n }\r\n }\r\n\r\n private applyConfigurationComponentResult(\r\n result: Type<any> | Promise<Type<any>>,\r\n loadId: number,\r\n ) {\r\n // Async promise result\r\n if (result instanceof Promise) {\r\n this.configurationComponentType.set(null);\r\n result\r\n .then((component) => {\r\n if (loadId !== this.configurationComponentLoadId) return;\r\n\r\n // Handle default export\r\n const resolved = (component as any)?.default ?? component;\r\n this.configurationComponentType.set(resolved as Type<any>);\r\n })\r\n .catch((error) => {\r\n if (loadId === this.configurationComponentLoadId) {\r\n this.configurationComponentType.set(null);\r\n }\r\n console.error('Unable to load configuration component.', error);\r\n });\r\n return;\r\n }\r\n\r\n // Direct component type\r\n this.configurationComponentType.set(result);\r\n }\r\n\r\n createOrEditProperty() {\r\n const mainValue = this.mainControl.value;\r\n if (!mainValue) return;\r\n\r\n const payload: PropertyPayload = {\r\n ...mainValue,\r\n Configuration:\r\n this.configurationControl.value ?? mainValue.Configuration ?? null,\r\n };\r\n\r\n const request$ = this.propertyId()\r\n ? this.facade.update(this.propertyId(), payload)\r\n : this.facade.create(payload);\r\n\r\n request$.subscribe(() => this.goBack());\r\n }\r\n\r\n private syncFormWithSelectedProperty(\r\n property: PropertyItem | PropertyPayload | null,\r\n ) {\r\n if (!property) return;\r\n this.mainControl.patchValue(property, {\r\n emitEvent: false,\r\n });\r\n this.configurationControl.setValue(property?.configuration);\r\n }\r\n\r\n goBack() {\r\n const path = this.isEditing()\r\n ? '../../properties-list'\r\n : '../properties-list';\r\n this.router.navigate([path], {\r\n relativeTo: this.route,\r\n queryParamsHandling: 'preserve',\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.facade.resetSelectedProperty();\r\n this.facade.setDefaultViewType('');\r\n this.destroyConfigurationComponent();\r\n }\r\n}\r\n","<mt-page\r\n [title]=\"\r\n propertyId()\r\n ? ('properties.form.editProperty' | transloco)\r\n : ('properties.form.createNewProperty' | transloco)\r\n \"\r\n avatarIcon=\"custom.user-pp\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n class=\"h-full\"\r\n>\r\n <ng-template #headerEnd>\r\n <mt-button\r\n class=\"mx-2\"\r\n [label]=\"submitLabel()\"\r\n [icon]=\"isEditing() ? 'custom.pencil' : 'general.plus'\"\r\n [loading]=\"submitting()\"\r\n [disabled]=\"submitDisabled() || this.propertyForm.invalid\"\r\n (click)=\"createOrEditProperty()\"\r\n />\r\n </ng-template>\r\n <div\r\n [formGroup]=\"propertyForm\"\r\n class=\"h-full py-4 h-full overflow-y-auto flex justify-center\"\r\n >\r\n <div class=\"w-1/2 flex flex-col gap-6\">\r\n @if (loading()) {\r\n <!-- Skeleton Loading State -->\r\n <div class=\"rounded-xl bg-white shadow-sm p-6 space-y-4\">\r\n <div class=\"flex justify-between items-center gap-6\">\r\n <p-skeleton width=\"50%\" height=\"3rem\"></p-skeleton>\r\n <p-skeleton width=\"8rem\" height=\"2.5rem\"></p-skeleton>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rounded-xl bg-white shadow-sm p-6 space-y-4\">\r\n <p-skeleton\r\n width=\"12rem\"\r\n height=\"1.5rem\"\r\n styleClass=\"mb-4\"\r\n ></p-skeleton>\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n <p-skeleton height=\"3rem\"></p-skeleton>\r\n <p-skeleton height=\"3rem\"></p-skeleton>\r\n <p-skeleton height=\"6rem\" styleClass=\"md:col-span-2\"></p-skeleton>\r\n <p-skeleton height=\"3rem\" styleClass=\"md:col-span-2\"></p-skeleton>\r\n </div>\r\n </div>\r\n\r\n <div class=\"rounded-xl bg-white shadow-sm p-6 space-y-4\">\r\n <p-skeleton\r\n width=\"10rem\"\r\n height=\"1.5rem\"\r\n styleClass=\"mb-4\"\r\n ></p-skeleton>\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\r\n <p-skeleton height=\"3rem\"></p-skeleton>\r\n <p-skeleton height=\"3rem\"></p-skeleton>\r\n <p-skeleton height=\"8rem\" styleClass=\"md:col-span-2\"></p-skeleton>\r\n </div>\r\n </div>\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"dynamicFormConfigMain()\"\r\n [formControlName]=\"'main'\"\r\n />\r\n @if (configurationFormConfig()) {\r\n <mt-dynamic-form\r\n formControlName=\"configuration\"\r\n [formConfig]=\"configurationFormConfig()!\"\r\n />\r\n } @else {\r\n <ng-container #configurationHost></ng-container>\r\n @if (!configurationComponentExists()) {\r\n @switch (propertyType()) {\r\n @case (\"User\") {\r\n <mt-user-configuration />\r\n }\r\n @case (\"Percentage\") {\r\n <mt-percentage-configuration />\r\n }\r\n @case (\"Lookup\") {\r\n <mt-lookup-configuration />\r\n }\r\n @case (\"LookupMultiSelect\") {\r\n <mt-lookup-configuration />\r\n }\r\n @case (\"InternalModule\") {\r\n <mt-internal-module-configuration />\r\n }\r\n @case (\"DynamicList\") {\r\n <mt-dynamic-list-configuration />\r\n }\r\n @case (\"API\") {\r\n <mt-api-configuration formControlName=\"configuration\" />\r\n }\r\n <!-- @case('ViewList') { REMOVED FOR NOW\r\n <mt-view-list-configuration />\r\n } -->\r\n @case (\"Attachment\") {\r\n <mt-attachment-configuration />\r\n }\r\n <!-- @case('ReferenceProperty') { REMOVED FOR NOW\r\n } -->\r\n @case (\"EditableListView\") {\r\n <mt-editable-list-view-configuration />\r\n }\r\n @case (\"LookupLog\") {\r\n <mt-check-list-form-configuration />\r\n }\r\n <!-- @case('LookupMatrix') { REMOVED FOR NOW\r\n <mt-lookup-configuration />\r\n } -->\r\n @case (\"Location\") {\r\n <mt-location-configuration />\r\n }\r\n }\r\n }\r\n }\r\n }\r\n </div>\r\n </div>\r\n</mt-page>\r\n","/*\r\n * Public API Surface of structure-builder\r\n */\r\n\r\nexport * from './lib/properties-list/properties-list';\r\nexport * from './lib/property-form/property-form';\r\n\r\nexport * from './store';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["finalize","i1","i2","i3"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@masterteam/properties",
3
- "version": "0.0.26",
3
+ "version": "0.0.27",
4
4
  "publishConfig": {
5
5
  "directory": "../../../dist/masterteam/properties",
6
6
  "linkDirectory": false,
@@ -19,7 +19,7 @@
19
19
  "tailwindcss": "^4.1.17",
20
20
  "tailwindcss-primeui": "^0.6.1",
21
21
  "@ngxs/store": "^20.1.0",
22
- "@masterteam/components": "^0.0.75",
22
+ "@masterteam/components": "^0.0.78",
23
23
  "@masterteam/icons": "^0.0.12",
24
24
  "@masterteam/forms": "^0.0.33"
25
25
  },