aril 2.0.1-dev.3 → 2.0.1-dev.5
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.
- package/boot/bridge/src/mfe-bridge.d.ts +33 -0
- package/boot/config/apps/src/interfaces.d.ts +7 -1
- package/boot/config/apps/src/route-close.service.d.ts +8 -3
- package/boot/config/apps/src/route-permissions.d.ts +2 -2
- package/esm2022/boot/bridge/src/mfe-bridge.mjs +18 -1
- package/esm2022/boot/config/api/src/interfaces.mjs +3 -2
- package/esm2022/boot/config/apps/src/apps.service.mjs +2 -2
- package/esm2022/boot/config/apps/src/custom-route-reuse-strategy.class.mjs +4 -4
- package/esm2022/boot/config/apps/src/interfaces.mjs +2 -1
- package/esm2022/boot/config/apps/src/route-close.service.mjs +11 -4
- package/esm2022/boot/config/apps/src/route-permissions.mjs +24 -6
- package/esm2022/boot/config/plugins/src/plugins.service.mjs +7 -5
- package/esm2022/boot/host/src/bootstrap.mjs +5 -3
- package/esm2022/boot/mfe/src/bootstrap.mjs +15 -3
- package/esm2022/http/index.mjs +1 -2
- package/esm2022/http/src/serviceBase.mjs +4 -4
- package/esm2022/http/src/serviceStateMethods.mjs +9 -1
- package/esm2022/keycloak/src/auth.interceptor.mjs +5 -2
- package/esm2022/selection/aril-selection.mjs +5 -0
- package/esm2022/selection/index.mjs +2 -0
- package/esm2022/selection/src/interfaces.mjs +2 -0
- package/esm2022/selection/src/selection-group.service.mjs +195 -0
- package/esm2022/theme/layout/app/profileSidebar/modals/edit-profile-modal/edit-profile-modal.component.mjs +2 -2
- package/esm2022/theme/layout/index.mjs +4 -2
- package/esm2022/theme/layout/service/breadcrumb-publisher.service.mjs +12 -4
- package/esm2022/theme/layout/service/interfaces/interfaces.mjs +1 -1
- package/esm2022/ui/button/index.mjs +1 -2
- package/esm2022/ui/button/src/button.component.mjs +5 -2
- package/esm2022/ui/charts/index.mjs +1 -11
- package/esm2022/ui/lib/index.mjs +1 -4
- package/esm2022/ui/lib/src/form/form-error-message.directive.mjs +9 -5
- package/esm2022/ui/multiSelect/src/multi-select.component.mjs +25 -25
- package/esm2022/ui/relativeDateSelector/src/relative-date-selector.component.mjs +2 -2
- package/esm2022/ui/selectBox/src/select-box.component.mjs +11 -34
- package/esm2022/ui/table/src/table.component.mjs +10 -5
- package/esm2022/ui/value/src/value.component.mjs +3 -2
- package/esm2022/ui-business/enumPicker/src/enum-picker.component.mjs +14 -6
- package/esm2022/util/activity/aril-util-activity.mjs +5 -0
- package/esm2022/util/activity/index.mjs +4 -0
- package/esm2022/util/activity/src/activity.constants.mjs +4 -0
- package/esm2022/util/activity/src/activity.service.mjs +218 -0
- package/esm2022/util/activity/src/activity.types.mjs +2 -0
- package/esm2022/util/block/src/block.mjs +9 -25
- package/esm2022/util/pub-sub/src/pub-sub.service.mjs +10 -5
- package/fesm2022/{aril-app.component-s14ruALV.mjs → aril-app.component-MjG_tPEe.mjs} +2 -1
- package/fesm2022/{aril-app.component-s14ruALV.mjs.map → aril-app.component-MjG_tPEe.mjs.map} +1 -1
- package/fesm2022/aril-boot-bridge.mjs +17 -0
- package/fesm2022/aril-boot-bridge.mjs.map +1 -1
- package/fesm2022/aril-boot-config-api.mjs +2 -1
- package/fesm2022/aril-boot-config-api.mjs.map +1 -1
- package/fesm2022/aril-boot-config-apps.mjs +36 -12
- package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
- package/fesm2022/aril-boot-config-plugins.mjs +6 -4
- package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
- package/fesm2022/aril-boot-host.mjs +4 -2
- package/fesm2022/aril-boot-host.mjs.map +1 -1
- package/fesm2022/{aril-boot-mfe-app.component-AS4MzEo2.mjs → aril-boot-mfe-app.component-DtspQ3J8.mjs} +3 -2
- package/fesm2022/{aril-boot-mfe-app.component-AS4MzEo2.mjs.map → aril-boot-mfe-app.component-DtspQ3J8.mjs.map} +1 -1
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-Ui9Cv3UC.mjs → aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs} +16 -4
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs.map +1 -0
- package/fesm2022/aril-boot-mfe.mjs +2 -1
- package/fesm2022/aril-boot-mfe.mjs.map +1 -1
- package/fesm2022/aril-http.mjs +11 -7
- package/fesm2022/aril-http.mjs.map +1 -1
- package/fesm2022/aril-keycloak.mjs +4 -1
- package/fesm2022/aril-keycloak.mjs.map +1 -1
- package/fesm2022/aril-selection.mjs +202 -0
- package/fesm2022/aril-selection.mjs.map +1 -0
- package/fesm2022/aril-theme-layout.mjs +14 -66
- package/fesm2022/aril-theme-layout.mjs.map +1 -1
- package/fesm2022/aril-ui-business-enumPicker.mjs +14 -6
- package/fesm2022/aril-ui-business-enumPicker.mjs.map +1 -1
- package/fesm2022/aril-ui-button.mjs +5 -17
- package/fesm2022/aril-ui-button.mjs.map +1 -1
- package/fesm2022/aril-ui-charts.mjs +4 -1302
- package/fesm2022/aril-ui-charts.mjs.map +1 -1
- package/fesm2022/aril-ui-lib.mjs +10 -98
- package/fesm2022/aril-ui-lib.mjs.map +1 -1
- package/fesm2022/aril-ui-multiSelect.mjs +24 -24
- package/fesm2022/aril-ui-multiSelect.mjs.map +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs +1 -1
- package/fesm2022/aril-ui-relativeDateSelector.mjs.map +1 -1
- package/fesm2022/aril-ui-selectBox.mjs +10 -33
- package/fesm2022/aril-ui-selectBox.mjs.map +1 -1
- package/fesm2022/aril-ui-table.mjs +9 -4
- package/fesm2022/aril-ui-table.mjs.map +1 -1
- package/fesm2022/aril-ui-value.mjs +2 -1
- package/fesm2022/aril-ui-value.mjs.map +1 -1
- package/fesm2022/aril-util-activity.mjs +228 -0
- package/fesm2022/aril-util-activity.mjs.map +1 -0
- package/fesm2022/aril-util-block.mjs +9 -25
- package/fesm2022/aril-util-block.mjs.map +1 -1
- package/fesm2022/aril-util-pub-sub.mjs +9 -4
- package/fesm2022/aril-util-pub-sub.mjs.map +1 -1
- package/fesm2022/aril.mjs +18 -5
- package/fesm2022/aril.mjs.map +1 -1
- package/http/index.d.ts +0 -1
- package/http/src/serviceStateMethods.d.ts +1 -0
- package/package.json +210 -234
- package/scripts/mf-shared.js +47 -0
- package/selection/index.d.ts +1 -0
- package/selection/src/interfaces.d.ts +8 -0
- package/{theme/layout/service → selection/src}/selection-group.service.d.ts +9 -5
- package/theme/layout/index.d.ts +1 -1
- package/theme/layout/index.ts +3 -1
- package/theme/layout/service/breadcrumb-publisher.service.ts +18 -8
- package/theme/layout/service/interfaces/interfaces.d.ts +3 -17
- package/theme/layout/service/interfaces/interfaces.ts +6 -18
- package/ui/button/index.d.ts +0 -1
- package/ui/button/src/button.component.d.ts +2 -0
- package/ui/charts/index.d.ts +0 -10
- package/ui/lib/index.d.ts +0 -3
- package/ui/lib/src/form/form-error-message.directive.d.ts +4 -3
- package/ui/multiSelect/src/multi-select.component.d.ts +4 -5
- package/ui/selectBox/src/select-box.component.d.ts +2 -7
- package/ui/table/src/table.component.d.ts +3 -2
- package/util/activity/index.d.ts +3 -0
- package/util/activity/src/activity.constants.d.ts +3 -0
- package/util/activity/src/activity.service.d.ts +35 -0
- package/util/activity/src/activity.types.d.ts +13 -0
- package/util/block/src/block.d.ts +4 -10
- package/util/pub-sub/src/pub-sub.service.d.ts +2 -2
- package/esm2022/http/src/serviceMockBase.mjs +0 -4
- package/esm2022/theme/layout/service/selection-group.service.mjs +0 -65
- package/esm2022/ui/button/src/split-button.component.mjs +0 -18
- package/esm2022/ui/charts/src/amCharts/column/column-chart.component.mjs +0 -124
- package/esm2022/ui/charts/src/amCharts/line/line-chart.component.mjs +0 -164
- package/esm2022/ui/charts/src/amCharts/pie/pie-chart.component.mjs +0 -116
- package/esm2022/ui/charts/src/highCharts/area/area-chart.component.mjs +0 -114
- package/esm2022/ui/charts/src/highCharts/bar/bar-chart.component.mjs +0 -100
- package/esm2022/ui/charts/src/highCharts/column/column-chart.component.mjs +0 -117
- package/esm2022/ui/charts/src/highCharts/heatmap/heatMap-chart.component.mjs +0 -252
- package/esm2022/ui/charts/src/highCharts/line/line-chart-series.component.mjs +0 -89
- package/esm2022/ui/charts/src/highCharts/line/line-chart.component.mjs +0 -82
- package/esm2022/ui/charts/src/highCharts/pie/pie-chart.component.mjs +0 -137
- package/esm2022/ui/charts/src/theme/theme.mjs +0 -54
- package/esm2022/ui/dxEditor/aril-ui-dxEditor.mjs +0 -5
- package/esm2022/ui/dxEditor/index.mjs +0 -2
- package/esm2022/ui/dxEditor/src/dx-editor.component.mjs +0 -26
- package/esm2022/ui/lib/src/form/form-field-builder.mjs +0 -23
- package/esm2022/ui/lib/src/input/common-input-validators.service.mjs +0 -49
- package/esm2022/ui/lib/src/input/input-disabled.directive.mjs +0 -25
- package/esm2022/ui/overlayPanel/aril-ui-overlayPanel.mjs +0 -5
- package/esm2022/ui/overlayPanel/index.mjs +0 -2
- package/esm2022/ui/overlayPanel/src/overlay-panel.component.mjs +0 -20
- package/esm2022/ui/tooltip/aril-ui-tooltip.mjs +0 -5
- package/esm2022/ui/tooltip/index.mjs +0 -2
- package/esm2022/ui/tooltip/src/tooltip-component.mjs +0 -23
- package/esm2022/ui/treeTable/aril-ui-treeTable.mjs +0 -5
- package/esm2022/ui/treeTable/index.mjs +0 -2
- package/esm2022/ui/treeTable/src/tree-table.component.mjs +0 -55
- package/esm2022/ui-business/operation-types-dialog/aril-ui-business-operation-types-dialog.mjs +0 -5
- package/esm2022/ui-business/operation-types-dialog/index.mjs +0 -2
- package/esm2022/ui-business/operation-types-dialog/src/operation-types-dialog.component.mjs +0 -76
- package/esm2022/util/unwrap/aril-util-unwrap.mjs +0 -5
- package/esm2022/util/unwrap/index.mjs +0 -2
- package/esm2022/util/unwrap/src/unwrap-tag.directive.mjs +0 -24
- package/fesm2022/aril-boot-mfe-aril-boot-mfe-Ui9Cv3UC.mjs.map +0 -1
- package/fesm2022/aril-ui-business-operation-types-dialog.mjs +0 -83
- package/fesm2022/aril-ui-business-operation-types-dialog.mjs.map +0 -1
- package/fesm2022/aril-ui-dxEditor.mjs +0 -33
- package/fesm2022/aril-ui-dxEditor.mjs.map +0 -1
- package/fesm2022/aril-ui-overlayPanel.mjs +0 -27
- package/fesm2022/aril-ui-overlayPanel.mjs.map +0 -1
- package/fesm2022/aril-ui-tooltip.mjs +0 -30
- package/fesm2022/aril-ui-tooltip.mjs.map +0 -1
- package/fesm2022/aril-ui-treeTable.mjs +0 -62
- package/fesm2022/aril-ui-treeTable.mjs.map +0 -1
- package/fesm2022/aril-util-unwrap.mjs +0 -31
- package/fesm2022/aril-util-unwrap.mjs.map +0 -1
- package/http/src/serviceMockBase.d.ts +0 -6
- package/theme/layout/service/selection-group.service.ts +0 -73
- package/ui/button/src/split-button.component.d.ts +0 -8
- package/ui/charts/src/amCharts/column/column-chart.component.d.ts +0 -25
- package/ui/charts/src/amCharts/line/line-chart.component.d.ts +0 -26
- package/ui/charts/src/amCharts/pie/pie-chart.component.d.ts +0 -24
- package/ui/charts/src/highCharts/area/area-chart.component.d.ts +0 -20
- package/ui/charts/src/highCharts/bar/bar-chart.component.d.ts +0 -26
- package/ui/charts/src/highCharts/column/column-chart.component.d.ts +0 -28
- package/ui/charts/src/highCharts/heatmap/heatMap-chart.component.d.ts +0 -32
- package/ui/charts/src/highCharts/line/line-chart-series.component.d.ts +0 -21
- package/ui/charts/src/highCharts/line/line-chart.component.d.ts +0 -21
- package/ui/charts/src/highCharts/pie/pie-chart.component.d.ts +0 -27
- package/ui/charts/src/theme/theme.d.ts +0 -5
- package/ui/dxEditor/index.d.ts +0 -1
- package/ui/dxEditor/src/dx-editor.component.d.ts +0 -11
- package/ui/lib/src/form/form-field-builder.d.ts +0 -8
- package/ui/lib/src/input/common-input-validators.service.d.ts +0 -20
- package/ui/lib/src/input/input-disabled.directive.d.ts +0 -9
- package/ui/overlayPanel/index.d.ts +0 -1
- package/ui/overlayPanel/src/overlay-panel.component.d.ts +0 -8
- package/ui/tooltip/index.d.ts +0 -1
- package/ui/tooltip/src/tooltip-component.d.ts +0 -14
- package/ui/treeTable/index.d.ts +0 -1
- package/ui/treeTable/src/tree-table.component.d.ts +0 -21
- package/ui-business/operation-types-dialog/index.d.ts +0 -1
- package/ui-business/operation-types-dialog/src/operation-types-dialog.component.d.ts +0 -28
- package/util/unwrap/index.d.ts +0 -1
- package/util/unwrap/src/unwrap-tag.directive.d.ts +0 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-ui-value.mjs","sources":["../../projects/aril/ui/value/src/value.component.ts","../../projects/aril/ui/value/src/value.component.html","../../projects/aril/ui/value/aril-ui-value.ts"],"sourcesContent":["import { CurrencyPipe, DecimalPipe, SlicePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\r\n\r\nimport { MessageService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { SelectionGroupService } from 'aril/theme/layout';\r\nimport { BadgeComponent } from 'aril/ui/badge';\r\nimport { EnumColorPickerPipe } from 'aril/ui/lib';\r\nimport { DecimalRoundingType } from 'aril/util/lib';\r\nimport { RoundNumberPipe } from 'aril/util/pipes';\r\nimport 'aril/util/primitive-extensions';\r\n\r\ntype ValueTypes =\r\n\t| 'text'\r\n\t| 'number'\r\n\t| 'bool'\r\n\t| 'decimal'\r\n\t| 'big_decimal'\r\n\t| 'date'\r\n\t| 'password'\r\n\t| 'enum'\r\n\t| 'array'\r\n\t| 'isoDate'\r\n\t| 'currency';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'aril-value',\r\n\ttemplateUrl: './value.component.html',\r\n\tstyleUrl: './value.component.scss',\r\n\timports: [\r\n\t\tBadgeComponent,\r\n\t\tTooltipModule,\r\n\t\tTranslocoModule,\r\n\t\tOverlayPanelModule,\r\n\t\tEnumColorPickerPipe,\r\n\t\tSlicePipe,\r\n\t\tDecimalPipe,\r\n\t\tCurrencyPipe,\r\n\t\tRoundNumberPipe\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tproviders: [DialogService, DecimalPipe]\r\n})\r\nexport class ValueComponent {\r\n\tmodel = input.required<string | number | boolean | any>();\r\n\ttype = input<ValueTypes>('text');\r\n\tformat = input<string>();\r\n\tisClickable = input<boolean>(false);\r\n\tgroupName = input<string>();\r\n\tparentSelectionKey = input<string>('ALL');\r\n\tisTextClamp = input<boolean>(true);\r\n\ttextClampCharacters = input<number>(50);\r\n\tstyle = input<string>();\r\n\tcopyable = input<boolean>(false);\r\n\tshouldShowCopyForClampedText = input<boolean>(false);\r\n\tshowCopyIcon = computed(\r\n\t\t() =>\r\n\t\t\t(!this.shouldShowCopyForClampedText() && this.copyable()) ||\r\n\t\t\t(this.shouldShowCopyForClampedText() && this.model().length > this.textClampCharacters())\r\n\t);\r\n\r\n\t// only for array type\r\n\tarrayTypeDisplayName = input<string>('valueDesc');\r\n\tarrayTypeMaxBadgeCount = input<number>(3);\r\n\r\n\t// only for big_decimal type\r\n\tbigDecimalRoundingMode = input<DecimalRoundingType>();\r\n\tbigDecimalScale = input<number>();\r\n\r\n\tconstructor(\r\n\t\tpublic translocoService: TranslocoService,\r\n\t\tprivate readonly selectionGroupService: SelectionGroupService,\r\n\t\tprivate readonly messageService: MessageService\r\n\t) {\r\n\t\tthis.translocoService.langChanges$.subscribe((lang) => {\r\n\t\t\tthis.langSignal.set(lang);\r\n\t\t});\r\n\t}\r\n\r\n\tlangSignal = signal(this.translocoService.getActiveLang());\r\n\r\n\tgetNumberFormat(): string {\r\n\t\tif (this.type() === 'number') return '1.0-0';\r\n\t\telse if (this.type() === 'decimal') {\r\n\t\t\tconst format = this.format();\r\n\r\n\t\t\tif (!format) return '1.0-3';\r\n\r\n\t\t\t// Eğer format Angular DecimalPipe formatındaysa direkt kullan\r\n\t\t\tif (format && typeof format === 'string' && format.match(/^\\d+\\.\\d+-\\d+$/)) {\r\n\t\t\t\treturn format;\r\n\t\t\t}\r\n\t\t\t// Eğer eski format string'i varsa (örn: #.00) onu çevir\r\n\t\t\tif (format && typeof format === 'string' && format.includes('.')) {\r\n\t\t\t\tconst decimalPlaces = format.split('.')[1].length;\r\n\t\t\t\treturn `1.${decimalPlaces}-${decimalPlaces}`;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tcolorList = [\r\n\t\t'#1890FF',\r\n\t\t'#FAAD14',\r\n\t\t'#52C41A',\r\n\t\t'#5D6D7E',\r\n\t\t'#FF6B6B',\r\n\t\t'#13C2C2',\r\n\t\t'#58D68D',\r\n\t\t'#722ED1',\r\n\t\t'#85C1E9',\r\n\t\t'#c49e05ff'\r\n\t];\r\n\r\n\tdisplay = computed(() => {\r\n\t\tswitch (this.type()) {\r\n\t\t\tcase 'text':\r\n\t\t\tcase 'number':\r\n\t\t\tcase 'decimal':\r\n\t\t\tcase 'currency':\r\n\t\t\tcase 'big_decimal':\r\n\t\t\t\treturn this.model();\r\n\t\t\tcase 'date':\r\n\t\t\t\treturn (<number>this.model()).longToString(this.format() ?? 'time');\r\n\t\t\tcase 'password':\r\n\t\t\t\treturn (<string>this.model()).replace(/./g, '*');\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.error(\"Invalid type: '\" + this.type() + \"'\");\r\n\t\t\t\treturn '';\r\n\t\t}\r\n\t});\r\n\r\n\tenumSelectionDisplay = computed(() => {\r\n\t\tconst currentLang = this.langSignal();\r\n\r\n\t\tconst selectionGroup =\r\n\t\t\tthis.selectionGroupService.selectionGroups()[`${this.groupName()!}~${this.parentSelectionKey()!}`];\r\n\r\n\t\tif (!selectionGroup) {\r\n\t\t\tthis.selectionGroupService.fetchEnum(this.groupName()!, this.parentSelectionKey()!);\r\n\t\t\treturn this.model();\r\n\t\t}\r\n\r\n\t\tconst rawModel = this.model();\r\n\t\tconst key =\r\n\t\t\ttypeof rawModel === 'object' && rawModel !== null && 'value' in rawModel ? rawModel.value\r\n\t\t\t: typeof rawModel === 'boolean' ? String(rawModel)\r\n\t\t\t: rawModel;\r\n\r\n\t\tconst selectionItem = selectionGroup.selectionItems.find((t) => t.selectionKey === key) as {\r\n\t\t\tselectionMultiLanguageDisplays?: { [lang: string]: string };\r\n\t\t\tselectionDisplay?: string;\r\n\t\t};\r\n\r\n\t\tif (!selectionItem) return key;\r\n\r\n\t\treturn selectionItem.selectionMultiLanguageDisplays?.[currentLang] ?? selectionItem.selectionDisplay ?? key;\r\n\t});\r\n\r\n\tenumBadgeBackgroundColor = computed(() => {\r\n\t\tif (typeof this.model() === 'boolean') {\r\n\t\t\treturn this.model() ? '#22c55e' : '#ef4444'; // true için yeşil, false için kırmızı\r\n\t\t}\r\n\r\n\t\tconst selectionGroup =\r\n\t\t\tthis.selectionGroupService.selectionGroups()[`${this.groupName()!}~${this.parentSelectionKey()!}`];\r\n\t\tconst selectionItems = selectionGroup?.selectionItems ?? [];\r\n\r\n\t\tconst selectionItem = selectionItems.find((t) => t.selectionKey === this.model());\r\n\r\n\t\tif (!selectionItem) {\r\n\t\t\treturn '#1890FF';\r\n\t\t} else if (this.colorList[selectionItem.showOrder] !== undefined) {\r\n\t\t\treturn this.colorList[selectionItem.showOrder];\r\n\t\t}\r\n\t\treturn '#A2AFFF';\r\n\t});\r\n\r\n\tgetArrayItemValue(item: any): any {\r\n\t\treturn item[this.arrayTypeDisplayName()];\r\n\t}\r\n\r\n\tisModelArray = computed(() => {\r\n\t\treturn Array.isArray(this.model());\r\n\t});\r\n\r\n\t// Get enum display for array items\r\n\tenumArrayDisplays = computed(() => {\r\n\t\tif (!this.isModelArray() || !Array.isArray(this.model())) return [];\r\n\r\n\t\tconst currentLang = this.langSignal();\r\n\t\tconst selectionGroup =\r\n\t\t\tthis.selectionGroupService.selectionGroups()[`${this.groupName()!}~${this.parentSelectionKey()!}`];\r\n\r\n\t\tif (!selectionGroup) {\r\n\t\t\tthis.selectionGroupService.fetchEnum(this.groupName()!, this.parentSelectionKey()!);\r\n\t\t\treturn this.model() as string[];\r\n\t\t}\r\n\r\n\t\treturn this.model().map((item: any) => {\r\n\t\t\tconst key =\r\n\t\t\t\ttypeof item === 'object' && item !== null && 'value' in item ? item.value\r\n\t\t\t\t: typeof item === 'boolean' ? String(item)\r\n\t\t\t\t: item;\r\n\r\n\t\t\tconst selectionItem = selectionGroup.selectionItems.find((t) => t.selectionKey === key) as {\r\n\t\t\t\tselectionMultiLanguageDisplays?: { [lang: string]: string };\r\n\t\t\t\tselectionDisplay?: string;\r\n\t\t\t};\r\n\r\n\t\t\tif (!selectionItem) return key;\r\n\r\n\t\t\treturn selectionItem.selectionMultiLanguageDisplays?.[currentLang] ?? selectionItem.selectionDisplay ?? key;\r\n\t\t}) as string[];\r\n\t});\r\n\r\n\t// Get enum background colors for array items\r\n\tenumArrayBackgroundColors = computed(() => {\r\n\t\tif (!this.isModelArray() || !Array.isArray(this.model())) return [];\r\n\r\n\t\tconst selectionGroup =\r\n\t\t\tthis.selectionGroupService.selectionGroups()[`${this.groupName()!}~${this.parentSelectionKey()!}`];\r\n\t\tconst selectionItems = selectionGroup?.selectionItems ?? [];\r\n\r\n\t\treturn this.model().map((item: any) => {\r\n\t\t\tif (typeof item === 'boolean') {\r\n\t\t\t\treturn item ? '#22c55e' : '#ef4444';\r\n\t\t\t}\r\n\r\n\t\t\tconst selectionItem = selectionItems.find((t) => t.selectionKey === item);\r\n\r\n\t\t\tif (!selectionItem) {\r\n\t\t\t\treturn '#1890FF';\r\n\t\t\t} else if (this.colorList[selectionItem.showOrder] !== undefined) {\r\n\t\t\t\treturn this.colorList[selectionItem.showOrder];\r\n\t\t\t}\r\n\t\t\treturn '#A2AFFF';\r\n\t\t});\r\n\t});\r\n\r\n\tcopyToClipboard(value: string | undefined) {\r\n\t\tif (!value) return;\r\n\t\tnavigator.clipboard.writeText(value).then(\r\n\t\t\t() => {\r\n\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\tsummary: this.translocoService.translate('messages.successMessageHeader'),\r\n\t\t\t\t\tdetail: this.translocoService.translate('messages.copyToClipboardSuccess'),\r\n\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t(err) => {\r\n\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\tseverity: 'error',\r\n\t\t\t\t\tsummary: this.translocoService.translate('messages.unsuccessfulMessageHeader'),\r\n\t\t\t\t\tdetail: this.translocoService.translate('messages.copyToClipboardError'),\r\n\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n","@if (model() == undefined || model() == null) {\r\n\t<i\r\n\t\tclass=\"pi pi-minus\"\r\n\t\tstyle=\"color: red\"\r\n\t\t[pTooltip]=\"this.translocoService.translate('validations.noItemToShow')\"></i>\r\n} @else {\r\n\t@if (type() == 'bool') {\r\n\t\t@if (!!model()) {\r\n\t\t\t<i class=\"pi pi-check\" style=\"color: green\"></i>\r\n\t\t} @else {\r\n\t\t\t<i class=\"pi pi-times\" style=\"color: crimson\"></i>\r\n\t\t}\r\n\t} @else if (type() === 'enum') {\r\n\t\t@if (isModelArray()) {\r\n\t\t\t<div class=\"flex align-items-center gap-1\">\r\n\t\t\t\t@for (display of enumArrayDisplays().slice(0, 2); track display; let i = $index) {\r\n\t\t\t\t\t<aril-badge [background]=\"enumArrayBackgroundColors()[i]\" [value]=\"display\" [textClampCharacters]=\"textClampCharacters()\" />\r\n\t\t\t\t}\r\n\t\t\t\t@if (enumArrayDisplays().length > 2) {\r\n\t\t\t\t\t<i class=\"pi pi-ellipsis-v cursor-pointer\" (click)=\"enumOp.toggle($event)\"></i>\r\n\r\n\t\t\t\t\t<p-overlayPanel #enumOp class=\"shadow-4\" appendTo=\"body\">\r\n\t\t\t\t\t\t<div class=\"flex flex-column gap-2 max-w-30rem max-h-20rem pr-3 overflow-y-auto\">\r\n\t\t\t\t\t\t\t@for (display of enumArrayDisplays() | slice: 2; track display; let i = $index) {\r\n\t\t\t\t\t\t\t\t<aril-badge [background]=\"enumArrayBackgroundColors()[i + 2]\" [value]=\"display\" [textClampCharacters]=\"textClampCharacters()\" />\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</p-overlayPanel>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<aril-badge [background]=\"enumBadgeBackgroundColor()\" [value]=\"enumSelectionDisplay()\" [textClampCharacters]=\"textClampCharacters()\" />\r\n\t\t}\r\n\t} @else if (type() === 'array') {\r\n\t\t<div class=\"flex align-items-center gap-1\">\r\n\t\t\t@for (item of model().slice(0, arrayTypeMaxBadgeCount()); track item) {\r\n\t\t\t\t<aril-badge [background]=\"getArrayItemValue(item) || '' | enumColorPicker\" [value]=\"getArrayItemValue(item)\" [textClampCharacters]=\"textClampCharacters()\" />\r\n\t\t\t}\r\n\t\t\t@if (model().length > arrayTypeMaxBadgeCount()) {\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v cursor-pointer\" (click)=\"op.toggle($event)\"></i>\r\n\r\n\t\t\t\t<p-overlayPanel #op class=\"shadow-4\" appendTo=\"body\">\r\n\t\t\t\t\t<div class=\"flex flex-column gap-2 max-w-30rem max-h-20rem pr-3 overflow-y-auto\">\r\n\t\t\t\t\t\t@for (item of model() | slice: arrayTypeMaxBadgeCount(); track item) {\r\n\t\t\t\t\t\t\t<aril-badge\r\n\t\t\t\t\t\t\t\t[background]=\"getArrayItemValue(item) || '' | enumColorPicker\"\r\n\t\t\t\t\t\t\t\t[value]=\"getArrayItemValue(item)\" />\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-overlayPanel>\r\n\t\t\t}\r\n\t\t</div>\r\n\t} @else {\r\n\t\t@if (display() == undefined) {\r\n\t\t\t<i\r\n\t\t\t\tclass=\"pi pi-exclamation-circle\"\r\n\t\t\t\tstyle=\"color: red\"\r\n\t\t\t\t[pTooltip]=\"this.translocoService.translate('validations.invalidDataFormat')\">\r\n\t\t\t</i>\r\n\t\t} @else {\r\n\t\t\t<span class=\"flex align-items-center gap-2\">\r\n\t\t\t\t@if (showCopyIcon()) {\r\n\t\t\t\t\t<i\r\n\t\t\t\t\t\tclass=\"pi pi-copy cursor-pointer\"\r\n\t\t\t\t\t\t(click)=\"copyToClipboard(display()?.toString()); $event.stopPropagation()\"\r\n\t\t\t\t\t\tstyle=\"font-size: 1rem; color: green\"></i>\r\n\t\t\t\t}\r\n\t\t\t\t<span\r\n\t\t\t\t\t[pTooltip]=\"\r\n\t\t\t\t\t\ttype() === 'text' && isTextClamp() && display()?.toString().length > textClampCharacters() ?\r\n\t\t\t\t\t\t\tdisplay()?.toString()\r\n\t\t\t\t\t\t:\t''\r\n\t\t\t\t\t\"\r\n\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t[class.text-no-wrap]=\"isTextClamp()\"\r\n\t\t\t\t\t[style]=\"isClickable() ? { 'text-decoration': 'underline', color: '#0000EE', cursor: 'pointer' } : ''\">\r\n\t\t\t\t\t@if (type() === 'number' || type() === 'decimal') {\r\n\t\t\t\t\t\t{{ model() | number: getNumberFormat() : 'tr-TR' }}\r\n\t\t\t\t\t} @else if (type() === 'big_decimal') {\r\n\t\t\t\t\t\t{{ model() | roundNumber: bigDecimalScale() : bigDecimalRoundingMode() : 'tr-TR' }}\r\n\t\t\t\t\t} @else if (type() === 'currency') {\r\n\t\t\t\t\t\t{{ model() | currency: format() ?? 'TRY' : 'symbol' : '1.0-2' }}\r\n\t\t\t\t\t} @else if (type() === 'text' && isTextClamp()) {\r\n\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\tdisplay().length > textClampCharacters() ? display().slice(0, textClampCharacters()) + '...' : display()\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t{{ display() }}\r\n\t\t\t\t\t}\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t}\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aril-ui-value.mjs","sources":["../../projects/aril/ui/value/src/value.component.ts","../../projects/aril/ui/value/src/value.component.html","../../projects/aril/ui/value/aril-ui-value.ts"],"sourcesContent":["import { CurrencyPipe, DecimalPipe, SlicePipe } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\nimport { MessageService } from 'primeng/api';\r\nimport { DialogService } from 'primeng/dynamicdialog';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\n\r\nimport { TranslocoModule, TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { SelectionGroupService } from 'aril/theme/layout';\r\nimport { BadgeComponent } from 'aril/ui/badge';\r\nimport { EnumColorPickerPipe } from 'aril/ui/lib';\r\nimport { DecimalRoundingType } from 'aril/util/lib';\r\nimport { RoundNumberPipe } from 'aril/util/pipes';\r\nimport 'aril/util/primitive-extensions';\r\n\r\ntype ValueTypes =\r\n\t| 'text'\r\n\t| 'number'\r\n\t| 'bool'\r\n\t| 'decimal'\r\n\t| 'big_decimal'\r\n\t| 'date'\r\n\t| 'password'\r\n\t| 'enum'\r\n\t| 'array'\r\n\t| 'isoDate'\r\n\t| 'currency';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\tselector: 'aril-value',\r\n\ttemplateUrl: './value.component.html',\r\n\tstyleUrl: './value.component.scss',\r\n\timports: [\r\n\t\tBadgeComponent,\r\n\t\tTooltipModule,\r\n\t\tTranslocoModule,\r\n\t\tOverlayPanelModule,\r\n\t\tEnumColorPickerPipe,\r\n\t\tSlicePipe,\r\n\t\tDecimalPipe,\r\n\t\tCurrencyPipe,\r\n\t\tRoundNumberPipe\r\n\t],\r\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\r\n\tproviders: [DialogService, DecimalPipe]\r\n})\r\nexport class ValueComponent {\r\n\tmodel = input.required<string | number | boolean | any>();\r\n\ttype = input<ValueTypes>('text');\r\n\tformat = input<string>();\r\n\tisClickable = input<boolean>(false);\r\n\tgroupName = input<string>();\r\n\tparentSelectionKey = input<string>('ALL');\r\n\tisTextClamp = input<boolean>(true);\r\n\ttextClampCharacters = input<number>(50);\r\n\tstyle = input<string>();\r\n\tcopyable = input<boolean>(false);\r\n\tshouldShowCopyForClampedText = input<boolean>(false);\r\n\tshowCopyIcon = computed(\r\n\t\t() =>\r\n\t\t\t(!this.shouldShowCopyForClampedText() && this.copyable()) ||\r\n\t\t\t(this.shouldShowCopyForClampedText() && this.model().length > this.textClampCharacters())\r\n\t);\r\n\r\n\t// only for array type\r\n\tarrayTypeDisplayName = input<string>('valueDesc');\r\n\tarrayTypeMaxBadgeCount = input<number>(3);\r\n\r\n\t// only for big_decimal type\r\n\tbigDecimalRoundingMode = input<DecimalRoundingType>();\r\n\tbigDecimalScale = input<number>();\r\n\r\n\tconstructor(\r\n\t\tpublic translocoService: TranslocoService,\r\n\t\tprivate readonly selectionGroupService: SelectionGroupService,\r\n\t\tprivate readonly messageService: MessageService\r\n\t) {\r\n\t\tthis.translocoService.langChanges$.pipe(takeUntilDestroyed()).subscribe((lang) => {\r\n\t\t\tthis.langSignal.set(lang);\r\n\t\t});\r\n\t}\r\n\r\n\tlangSignal = signal(this.translocoService.getActiveLang());\r\n\r\n\tgetNumberFormat(): string {\r\n\t\tif (this.type() === 'number') return '1.0-0';\r\n\t\telse if (this.type() === 'decimal') {\r\n\t\t\tconst format = this.format();\r\n\r\n\t\t\tif (!format) return '1.0-3';\r\n\r\n\t\t\t// Eğer format Angular DecimalPipe formatındaysa direkt kullan\r\n\t\t\tif (format && typeof format === 'string' && format.match(/^\\d+\\.\\d+-\\d+$/)) {\r\n\t\t\t\treturn format;\r\n\t\t\t}\r\n\t\t\t// Eğer eski format string'i varsa (örn: #.00) onu çevir\r\n\t\t\tif (format && typeof format === 'string' && format.includes('.')) {\r\n\t\t\t\tconst decimalPlaces = format.split('.')[1].length;\r\n\t\t\t\treturn `1.${decimalPlaces}-${decimalPlaces}`;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tcolorList = [\r\n\t\t'#1890FF',\r\n\t\t'#FAAD14',\r\n\t\t'#52C41A',\r\n\t\t'#5D6D7E',\r\n\t\t'#FF6B6B',\r\n\t\t'#13C2C2',\r\n\t\t'#58D68D',\r\n\t\t'#722ED1',\r\n\t\t'#85C1E9',\r\n\t\t'#c49e05ff'\r\n\t];\r\n\r\n\tdisplay = computed(() => {\r\n\t\tswitch (this.type()) {\r\n\t\t\tcase 'text':\r\n\t\t\tcase 'number':\r\n\t\t\tcase 'decimal':\r\n\t\t\tcase 'currency':\r\n\t\t\tcase 'big_decimal':\r\n\t\t\t\treturn this.model();\r\n\t\t\tcase 'date':\r\n\t\t\t\treturn (<number>this.model()).longToString(this.format() ?? 'time');\r\n\t\t\tcase 'password':\r\n\t\t\t\treturn (<string>this.model()).replace(/./g, '*');\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.error(\"Invalid type: '\" + this.type() + \"'\");\r\n\t\t\t\treturn '';\r\n\t\t}\r\n\t});\r\n\r\n\tenumSelectionDisplay = computed(() => {\r\n\t\tconst currentLang = this.langSignal();\r\n\r\n\t\tconst selectionGroup =\r\n\t\t\tthis.selectionGroupService.selectionGroups()[`${this.groupName()!}~${this.parentSelectionKey()!}`];\r\n\r\n\t\tif (!selectionGroup) {\r\n\t\t\tthis.selectionGroupService.fetchEnum(this.groupName()!, this.parentSelectionKey()!);\r\n\t\t\treturn this.model();\r\n\t\t}\r\n\r\n\t\tconst rawModel = this.model();\r\n\t\tconst key =\r\n\t\t\ttypeof rawModel === 'object' && rawModel !== null && 'value' in rawModel ? rawModel.value\r\n\t\t\t: typeof rawModel === 'boolean' ? String(rawModel)\r\n\t\t\t: rawModel;\r\n\r\n\t\tconst selectionItem = selectionGroup.selectionItems.find((t) => t.selectionKey === key) as {\r\n\t\t\tselectionMultiLanguageDisplays?: { [lang: string]: string };\r\n\t\t\tselectionDisplay?: string;\r\n\t\t};\r\n\r\n\t\tif (!selectionItem) return key;\r\n\r\n\t\treturn selectionItem.selectionMultiLanguageDisplays?.[currentLang] ?? selectionItem.selectionDisplay ?? key;\r\n\t});\r\n\r\n\tenumBadgeBackgroundColor = computed(() => {\r\n\t\tif (typeof this.model() === 'boolean') {\r\n\t\t\treturn this.model() ? '#22c55e' : '#ef4444'; // true için yeşil, false için kırmızı\r\n\t\t}\r\n\r\n\t\tconst selectionGroup =\r\n\t\t\tthis.selectionGroupService.selectionGroups()[`${this.groupName()!}~${this.parentSelectionKey()!}`];\r\n\t\tconst selectionItems = selectionGroup?.selectionItems ?? [];\r\n\r\n\t\tconst selectionItem = selectionItems.find((t) => t.selectionKey === this.model());\r\n\r\n\t\tif (!selectionItem) {\r\n\t\t\treturn '#1890FF';\r\n\t\t} else if (this.colorList[selectionItem.showOrder] !== undefined) {\r\n\t\t\treturn this.colorList[selectionItem.showOrder];\r\n\t\t}\r\n\t\treturn '#A2AFFF';\r\n\t});\r\n\r\n\tgetArrayItemValue(item: any): any {\r\n\t\treturn item[this.arrayTypeDisplayName()];\r\n\t}\r\n\r\n\tisModelArray = computed(() => {\r\n\t\treturn Array.isArray(this.model());\r\n\t});\r\n\r\n\t// Get enum display for array items\r\n\tenumArrayDisplays = computed(() => {\r\n\t\tif (!this.isModelArray() || !Array.isArray(this.model())) return [];\r\n\r\n\t\tconst currentLang = this.langSignal();\r\n\t\tconst selectionGroup =\r\n\t\t\tthis.selectionGroupService.selectionGroups()[`${this.groupName()!}~${this.parentSelectionKey()!}`];\r\n\r\n\t\tif (!selectionGroup) {\r\n\t\t\tthis.selectionGroupService.fetchEnum(this.groupName()!, this.parentSelectionKey()!);\r\n\t\t\treturn this.model() as string[];\r\n\t\t}\r\n\r\n\t\treturn this.model().map((item: any) => {\r\n\t\t\tconst key =\r\n\t\t\t\ttypeof item === 'object' && item !== null && 'value' in item ? item.value\r\n\t\t\t\t: typeof item === 'boolean' ? String(item)\r\n\t\t\t\t: item;\r\n\r\n\t\t\tconst selectionItem = selectionGroup.selectionItems.find((t) => t.selectionKey === key) as {\r\n\t\t\t\tselectionMultiLanguageDisplays?: { [lang: string]: string };\r\n\t\t\t\tselectionDisplay?: string;\r\n\t\t\t};\r\n\r\n\t\t\tif (!selectionItem) return key;\r\n\r\n\t\t\treturn selectionItem.selectionMultiLanguageDisplays?.[currentLang] ?? selectionItem.selectionDisplay ?? key;\r\n\t\t}) as string[];\r\n\t});\r\n\r\n\t// Get enum background colors for array items\r\n\tenumArrayBackgroundColors = computed(() => {\r\n\t\tif (!this.isModelArray() || !Array.isArray(this.model())) return [];\r\n\r\n\t\tconst selectionGroup =\r\n\t\t\tthis.selectionGroupService.selectionGroups()[`${this.groupName()!}~${this.parentSelectionKey()!}`];\r\n\t\tconst selectionItems = selectionGroup?.selectionItems ?? [];\r\n\r\n\t\treturn this.model().map((item: any) => {\r\n\t\t\tif (typeof item === 'boolean') {\r\n\t\t\t\treturn item ? '#22c55e' : '#ef4444';\r\n\t\t\t}\r\n\r\n\t\t\tconst selectionItem = selectionItems.find((t) => t.selectionKey === item);\r\n\r\n\t\t\tif (!selectionItem) {\r\n\t\t\t\treturn '#1890FF';\r\n\t\t\t} else if (this.colorList[selectionItem.showOrder] !== undefined) {\r\n\t\t\t\treturn this.colorList[selectionItem.showOrder];\r\n\t\t\t}\r\n\t\t\treturn '#A2AFFF';\r\n\t\t});\r\n\t});\r\n\r\n\tcopyToClipboard(value: string | undefined) {\r\n\t\tif (!value) return;\r\n\t\tnavigator.clipboard.writeText(value).then(\r\n\t\t\t() => {\r\n\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\tseverity: 'success',\r\n\t\t\t\t\tsummary: this.translocoService.translate('messages.successMessageHeader'),\r\n\t\t\t\t\tdetail: this.translocoService.translate('messages.copyToClipboardSuccess'),\r\n\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\t(err) => {\r\n\t\t\t\tthis.messageService.add({\r\n\t\t\t\t\tseverity: 'error',\r\n\t\t\t\t\tsummary: this.translocoService.translate('messages.unsuccessfulMessageHeader'),\r\n\t\t\t\t\tdetail: this.translocoService.translate('messages.copyToClipboardError'),\r\n\t\t\t\t\tkey: 'toast-root'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n}\r\n","@if (model() == undefined || model() == null) {\r\n\t<i\r\n\t\tclass=\"pi pi-minus\"\r\n\t\tstyle=\"color: red\"\r\n\t\t[pTooltip]=\"this.translocoService.translate('validations.noItemToShow')\"></i>\r\n} @else {\r\n\t@if (type() == 'bool') {\r\n\t\t@if (!!model()) {\r\n\t\t\t<i class=\"pi pi-check\" style=\"color: green\"></i>\r\n\t\t} @else {\r\n\t\t\t<i class=\"pi pi-times\" style=\"color: crimson\"></i>\r\n\t\t}\r\n\t} @else if (type() === 'enum') {\r\n\t\t@if (isModelArray()) {\r\n\t\t\t<div class=\"flex align-items-center gap-1\">\r\n\t\t\t\t@for (display of enumArrayDisplays().slice(0, 2); track display; let i = $index) {\r\n\t\t\t\t\t<aril-badge [background]=\"enumArrayBackgroundColors()[i]\" [value]=\"display\" [textClampCharacters]=\"textClampCharacters()\" />\r\n\t\t\t\t}\r\n\t\t\t\t@if (enumArrayDisplays().length > 2) {\r\n\t\t\t\t\t<i class=\"pi pi-ellipsis-v cursor-pointer\" (click)=\"enumOp.toggle($event)\"></i>\r\n\r\n\t\t\t\t\t<p-overlayPanel #enumOp class=\"shadow-4\" appendTo=\"body\">\r\n\t\t\t\t\t\t<div class=\"flex flex-column gap-2 max-w-30rem max-h-20rem pr-3 overflow-y-auto\">\r\n\t\t\t\t\t\t\t@for (display of enumArrayDisplays() | slice: 2; track display; let i = $index) {\r\n\t\t\t\t\t\t\t\t<aril-badge [background]=\"enumArrayBackgroundColors()[i + 2]\" [value]=\"display\" [textClampCharacters]=\"textClampCharacters()\" />\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</p-overlayPanel>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\t\t} @else {\r\n\t\t\t<aril-badge [background]=\"enumBadgeBackgroundColor()\" [value]=\"enumSelectionDisplay()\" [textClampCharacters]=\"textClampCharacters()\" />\r\n\t\t}\r\n\t} @else if (type() === 'array') {\r\n\t\t<div class=\"flex align-items-center gap-1\">\r\n\t\t\t@for (item of model().slice(0, arrayTypeMaxBadgeCount()); track item) {\r\n\t\t\t\t<aril-badge [background]=\"getArrayItemValue(item) || '' | enumColorPicker\" [value]=\"getArrayItemValue(item)\" [textClampCharacters]=\"textClampCharacters()\" />\r\n\t\t\t}\r\n\t\t\t@if (model().length > arrayTypeMaxBadgeCount()) {\r\n\t\t\t\t<i class=\"pi pi-ellipsis-v cursor-pointer\" (click)=\"op.toggle($event)\"></i>\r\n\r\n\t\t\t\t<p-overlayPanel #op class=\"shadow-4\" appendTo=\"body\">\r\n\t\t\t\t\t<div class=\"flex flex-column gap-2 max-w-30rem max-h-20rem pr-3 overflow-y-auto\">\r\n\t\t\t\t\t\t@for (item of model() | slice: arrayTypeMaxBadgeCount(); track item) {\r\n\t\t\t\t\t\t\t<aril-badge\r\n\t\t\t\t\t\t\t\t[background]=\"getArrayItemValue(item) || '' | enumColorPicker\"\r\n\t\t\t\t\t\t\t\t[value]=\"getArrayItemValue(item)\" />\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</p-overlayPanel>\r\n\t\t\t}\r\n\t\t</div>\r\n\t} @else {\r\n\t\t@if (display() == undefined) {\r\n\t\t\t<i\r\n\t\t\t\tclass=\"pi pi-exclamation-circle\"\r\n\t\t\t\tstyle=\"color: red\"\r\n\t\t\t\t[pTooltip]=\"this.translocoService.translate('validations.invalidDataFormat')\">\r\n\t\t\t</i>\r\n\t\t} @else {\r\n\t\t\t<span class=\"flex align-items-center gap-2\">\r\n\t\t\t\t@if (showCopyIcon()) {\r\n\t\t\t\t\t<i\r\n\t\t\t\t\t\tclass=\"pi pi-copy cursor-pointer\"\r\n\t\t\t\t\t\t(click)=\"copyToClipboard(display()?.toString()); $event.stopPropagation()\"\r\n\t\t\t\t\t\tstyle=\"font-size: 1rem; color: green\"></i>\r\n\t\t\t\t}\r\n\t\t\t\t<span\r\n\t\t\t\t\t[pTooltip]=\"\r\n\t\t\t\t\t\ttype() === 'text' && isTextClamp() && display()?.toString().length > textClampCharacters() ?\r\n\t\t\t\t\t\t\tdisplay()?.toString()\r\n\t\t\t\t\t\t:\t''\r\n\t\t\t\t\t\"\r\n\t\t\t\t\ttooltipPosition=\"top\"\r\n\t\t\t\t\t[class.text-no-wrap]=\"isTextClamp()\"\r\n\t\t\t\t\t[style]=\"isClickable() ? { 'text-decoration': 'underline', color: '#0000EE', cursor: 'pointer' } : ''\">\r\n\t\t\t\t\t@if (type() === 'number' || type() === 'decimal') {\r\n\t\t\t\t\t\t{{ model() | number: getNumberFormat() : 'tr-TR' }}\r\n\t\t\t\t\t} @else if (type() === 'big_decimal') {\r\n\t\t\t\t\t\t{{ model() | roundNumber: bigDecimalScale() : bigDecimalRoundingMode() : 'tr-TR' }}\r\n\t\t\t\t\t} @else if (type() === 'currency') {\r\n\t\t\t\t\t\t{{ model() | currency: format() ?? 'TRY' : 'symbol' : '1.0-2' }}\r\n\t\t\t\t\t} @else if (type() === 'text' && isTextClamp()) {\r\n\t\t\t\t\t\t{{\r\n\t\t\t\t\t\t\tdisplay().length > textClampCharacters() ? display().slice(0, textClampCharacters()) + '...' : display()\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t{{ display() }}\r\n\t\t\t\t\t}\r\n\t\t\t\t</span>\r\n\t\t\t</span>\r\n\t\t}\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, Injectable } from '@angular/core';
|
|
4
|
+
import { Router, NavigationEnd } from '@angular/router';
|
|
5
|
+
import { KeycloakService, KeycloakEventType } from 'keycloak-angular';
|
|
6
|
+
import { filter } from 'rxjs/operators';
|
|
7
|
+
import { API_CONFIGS } from 'aril/boot/config/api';
|
|
8
|
+
import { Apps } from 'aril/boot/config/apps';
|
|
9
|
+
|
|
10
|
+
const ACTIVITY_ENDPOINT_PATH = 'analytics/track';
|
|
11
|
+
const ACTIVITY_SESSION_MARKER_PREFIX = 'aril.activity.session:';
|
|
12
|
+
const LOGGER_SESSION_HEADER = 'x-aril-logger-session-id';
|
|
13
|
+
|
|
14
|
+
class ActivityService {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.keycloak = inject(KeycloakService);
|
|
17
|
+
// Router/Location optional: MFE shared scope'da bunlar yok (child injector'da yaşıyor).
|
|
18
|
+
// Plugin/Host scope'da var. Null durumunda PAGE_VIEW subscribe'ları no-op olur.
|
|
19
|
+
this.router = inject(Router, { optional: true });
|
|
20
|
+
this.location = inject(Location, { optional: true });
|
|
21
|
+
this.sessionId = null;
|
|
22
|
+
this.username = null;
|
|
23
|
+
this.previousPath = null;
|
|
24
|
+
this.started = false;
|
|
25
|
+
}
|
|
26
|
+
getSessionId() {
|
|
27
|
+
if (this.sessionId)
|
|
28
|
+
return this.sessionId;
|
|
29
|
+
const fresh = this.readSessionIdFromKeycloak();
|
|
30
|
+
if (fresh)
|
|
31
|
+
this.sessionId = fresh;
|
|
32
|
+
return fresh;
|
|
33
|
+
}
|
|
34
|
+
start(options = {}) {
|
|
35
|
+
if (this.started)
|
|
36
|
+
return;
|
|
37
|
+
this.started = true;
|
|
38
|
+
this.captureSessionContext();
|
|
39
|
+
this.subscribeKeycloakRefresh();
|
|
40
|
+
if (this.location) {
|
|
41
|
+
this.location.onUrlChange(() => this.maybeEmitPageView(this.location.path()));
|
|
42
|
+
}
|
|
43
|
+
if (options.shellMode) {
|
|
44
|
+
this.subscribeLifecycleEvents();
|
|
45
|
+
this.subscribeRouterEvents();
|
|
46
|
+
this.handleSessionStart();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
track(event, properties = {}, type = 'CUSTOM') {
|
|
50
|
+
if (!this.started)
|
|
51
|
+
return;
|
|
52
|
+
this.send({ type, event, properties });
|
|
53
|
+
}
|
|
54
|
+
readSessionIdFromKeycloak() {
|
|
55
|
+
const kc = this.keycloak.getKeycloakInstance();
|
|
56
|
+
return kc?.sessionId ?? kc?.tokenParsed?.session_state ?? kc?.tokenParsed?.sid ?? null;
|
|
57
|
+
}
|
|
58
|
+
captureSessionContext() {
|
|
59
|
+
this.sessionId = this.readSessionIdFromKeycloak();
|
|
60
|
+
this.username = this.keycloak.getUsername() ?? null;
|
|
61
|
+
}
|
|
62
|
+
subscribeKeycloakRefresh() {
|
|
63
|
+
this.keycloak.keycloakEvents$.subscribe((event) => {
|
|
64
|
+
if (event.type === KeycloakEventType.OnAuthRefreshSuccess) {
|
|
65
|
+
this.captureSessionContext();
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
subscribeLifecycleEvents() {
|
|
70
|
+
this.keycloak.keycloakEvents$.subscribe((event) => {
|
|
71
|
+
if (event.type === KeycloakEventType.OnAuthLogout) {
|
|
72
|
+
this.sendSessionEnd('logout');
|
|
73
|
+
}
|
|
74
|
+
else if (event.type === KeycloakEventType.OnAuthRefreshError) {
|
|
75
|
+
this.sendSessionEnd('refresh_failed');
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
subscribeRouterEvents() {
|
|
80
|
+
if (!this.router)
|
|
81
|
+
return;
|
|
82
|
+
this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe((event) => {
|
|
83
|
+
this.maybeEmitPageView(event.urlAfterRedirects);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
maybeEmitPageView(currentUrl) {
|
|
87
|
+
if (currentUrl === this.previousPath)
|
|
88
|
+
return;
|
|
89
|
+
const slot = globalThis;
|
|
90
|
+
const lastUrl = slot['__arilActivityLastPageUrl'];
|
|
91
|
+
const lastAt = slot['__arilActivityLastPageAt'];
|
|
92
|
+
if (lastUrl === currentUrl && lastAt && Date.now() - lastAt < 1000) {
|
|
93
|
+
this.previousPath = currentUrl;
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const previous = this.previousPath;
|
|
97
|
+
this.previousPath = currentUrl;
|
|
98
|
+
slot['__arilActivityLastPageUrl'] = currentUrl;
|
|
99
|
+
slot['__arilActivityLastPageAt'] = Date.now();
|
|
100
|
+
this.send({
|
|
101
|
+
type: 'PAGE_VIEW',
|
|
102
|
+
event: '',
|
|
103
|
+
page: currentUrl,
|
|
104
|
+
referrer: previous ?? undefined,
|
|
105
|
+
properties: {}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
handleSessionStart() {
|
|
109
|
+
if (!this.sessionId)
|
|
110
|
+
return;
|
|
111
|
+
const currentKey = `${ACTIVITY_SESSION_MARKER_PREFIX}${this.sessionId}`;
|
|
112
|
+
let alreadyMarked = false;
|
|
113
|
+
try {
|
|
114
|
+
alreadyMarked = !!localStorage.getItem(currentKey);
|
|
115
|
+
this.purgeStaleSessionMarkers(currentKey);
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
/* swallow */
|
|
119
|
+
}
|
|
120
|
+
if (alreadyMarked)
|
|
121
|
+
return;
|
|
122
|
+
try {
|
|
123
|
+
localStorage.setItem(currentKey, Date.now().toString());
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
/* swallow */
|
|
127
|
+
}
|
|
128
|
+
this.send({
|
|
129
|
+
type: 'SESSION_START',
|
|
130
|
+
event: 'login',
|
|
131
|
+
properties: { userAgent: navigator.userAgent }
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
purgeStaleSessionMarkers(keepKey) {
|
|
135
|
+
const stale = [];
|
|
136
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
137
|
+
const key = localStorage.key(i);
|
|
138
|
+
if (key && key !== keepKey && key.startsWith(ACTIVITY_SESSION_MARKER_PREFIX)) {
|
|
139
|
+
stale.push(key);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
stale.forEach((k) => localStorage.removeItem(k));
|
|
143
|
+
}
|
|
144
|
+
sendSessionEnd(reason) {
|
|
145
|
+
if (!this.sessionId)
|
|
146
|
+
return;
|
|
147
|
+
const markerKey = `${ACTIVITY_SESSION_MARKER_PREFIX}${this.sessionId}`;
|
|
148
|
+
let durationMs = 0;
|
|
149
|
+
try {
|
|
150
|
+
const loginTimestamp = parseInt(localStorage.getItem(markerKey) ?? '0', 10);
|
|
151
|
+
durationMs = loginTimestamp ? Date.now() - loginTimestamp : 0;
|
|
152
|
+
localStorage.removeItem(markerKey);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
/* swallow */
|
|
156
|
+
}
|
|
157
|
+
this.send({
|
|
158
|
+
type: 'SESSION_END',
|
|
159
|
+
event: reason,
|
|
160
|
+
properties: { durationMs }
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
toAbsoluteUrl(routerPath) {
|
|
164
|
+
if (routerPath.startsWith('http://') || routerPath.startsWith('https://'))
|
|
165
|
+
return routerPath;
|
|
166
|
+
return `${window.location.origin}/#${routerPath}`;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* MFE shared scope'unda `Router` ve `Location` null (her ikisi de child injector'da yaşıyor).
|
|
170
|
+
* Bu durumda Angular soyutlamalarına dayanamayız; `window.location.hash`'ten okuruz —
|
|
171
|
+
* browser'ın sahip olduğu güncel URL.
|
|
172
|
+
*/
|
|
173
|
+
readCurrentPath() {
|
|
174
|
+
if (this.location)
|
|
175
|
+
return this.location.path();
|
|
176
|
+
if (this.router)
|
|
177
|
+
return this.router.url;
|
|
178
|
+
const hash = window.location.hash;
|
|
179
|
+
return hash.startsWith('#') ? hash.slice(1) : '';
|
|
180
|
+
}
|
|
181
|
+
send(partial) {
|
|
182
|
+
if (!this.sessionId)
|
|
183
|
+
return;
|
|
184
|
+
const baseUrl = API_CONFIGS.getExternalAppEndpoint(Apps.EVENT_GATEWAY);
|
|
185
|
+
if (!baseUrl)
|
|
186
|
+
return;
|
|
187
|
+
const currentPath = partial.page ?? this.readCurrentPath();
|
|
188
|
+
const payload = {
|
|
189
|
+
type: partial.type,
|
|
190
|
+
sessionId: this.sessionId,
|
|
191
|
+
username: this.username ?? '',
|
|
192
|
+
event: partial.event,
|
|
193
|
+
page: this.toAbsoluteUrl(currentPath),
|
|
194
|
+
ip: '',
|
|
195
|
+
referrer: partial.referrer ? this.toAbsoluteUrl(partial.referrer) : `${window.location.origin}/#`,
|
|
196
|
+
traceId: '',
|
|
197
|
+
clientTimestamp: Date.now(),
|
|
198
|
+
properties: partial.properties
|
|
199
|
+
};
|
|
200
|
+
const url = `${baseUrl.replace(/\/$/, '')}/${ACTIVITY_ENDPOINT_PATH}`;
|
|
201
|
+
this.keycloak
|
|
202
|
+
.getToken()
|
|
203
|
+
.then((token) => fetch(url, {
|
|
204
|
+
method: 'POST',
|
|
205
|
+
keepalive: true,
|
|
206
|
+
headers: {
|
|
207
|
+
'Content-Type': 'application/json',
|
|
208
|
+
[LOGGER_SESSION_HEADER]: this.sessionId,
|
|
209
|
+
...(token ? { Authorization: `Bearer ${token}` } : {})
|
|
210
|
+
},
|
|
211
|
+
body: JSON.stringify(payload)
|
|
212
|
+
}))
|
|
213
|
+
.catch(() => undefined);
|
|
214
|
+
}
|
|
215
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ActivityService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
216
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ActivityService, providedIn: 'root' }); }
|
|
217
|
+
}
|
|
218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ActivityService, decorators: [{
|
|
219
|
+
type: Injectable,
|
|
220
|
+
args: [{ providedIn: 'root' }]
|
|
221
|
+
}] });
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Generated bundle index. Do not edit.
|
|
225
|
+
*/
|
|
226
|
+
|
|
227
|
+
export { ACTIVITY_ENDPOINT_PATH, ACTIVITY_SESSION_MARKER_PREFIX, ActivityService, LOGGER_SESSION_HEADER };
|
|
228
|
+
//# sourceMappingURL=aril-util-activity.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aril-util-activity.mjs","sources":["../../projects/aril/util/activity/src/activity.constants.ts","../../projects/aril/util/activity/src/activity.service.ts","../../projects/aril/util/activity/aril-util-activity.ts"],"sourcesContent":["export const ACTIVITY_ENDPOINT_PATH = 'analytics/track';\r\nexport const ACTIVITY_SESSION_MARKER_PREFIX = 'aril.activity.session:';\r\nexport const LOGGER_SESSION_HEADER = 'x-aril-logger-session-id';\r\n","import { Location } from '@angular/common';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\n\r\nimport { KeycloakEventType, KeycloakService } from 'keycloak-angular';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { API_CONFIGS } from 'aril/boot/config/api';\r\nimport { Apps } from 'aril/boot/config/apps';\r\n\r\nimport {\r\n\tACTIVITY_ENDPOINT_PATH,\r\n\tACTIVITY_SESSION_MARKER_PREFIX,\r\n\tLOGGER_SESSION_HEADER\r\n} from './activity.constants';\r\nimport { ActivityEvent, ActivityEventType } from './activity.types';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ActivityService {\r\n\tprivate readonly keycloak = inject(KeycloakService);\r\n\t// Router/Location optional: MFE shared scope'da bunlar yok (child injector'da yaşıyor).\r\n\t// Plugin/Host scope'da var. Null durumunda PAGE_VIEW subscribe'ları no-op olur.\r\n\tprivate readonly router = inject(Router, { optional: true });\r\n\tprivate readonly location = inject(Location, { optional: true });\r\n\r\n\tprivate sessionId: string | null = null;\r\n\tprivate username: string | null = null;\r\n\tprivate previousPath: string | null = null;\r\n\tprivate started = false;\r\n\r\n\tgetSessionId(): string | null {\r\n\t\tif (this.sessionId) return this.sessionId;\r\n\t\tconst fresh = this.readSessionIdFromKeycloak();\r\n\t\tif (fresh) this.sessionId = fresh;\r\n\t\treturn fresh;\r\n\t}\r\n\r\n\tstart(options: { shellMode?: boolean } = {}): void {\r\n\t\tif (this.started) return;\r\n\t\tthis.started = true;\r\n\r\n\t\tthis.captureSessionContext();\r\n\t\tthis.subscribeKeycloakRefresh();\r\n\r\n\t\tif (this.location) {\r\n\t\t\tthis.location.onUrlChange(() => this.maybeEmitPageView(this.location!.path()));\r\n\t\t}\r\n\r\n\t\tif (options.shellMode) {\r\n\t\t\tthis.subscribeLifecycleEvents();\r\n\t\t\tthis.subscribeRouterEvents();\r\n\t\t\tthis.handleSessionStart();\r\n\t\t}\r\n\t}\r\n\r\n\ttrack(event: string, properties: Record<string, unknown> = {}, type: ActivityEventType = 'CUSTOM'): void {\r\n\t\tif (!this.started) return;\r\n\t\tthis.send({ type, event, properties });\r\n\t}\r\n\r\n\tprivate readSessionIdFromKeycloak(): string | null {\r\n\t\tconst kc = this.keycloak.getKeycloakInstance() as\r\n\t\t\t| { sessionId?: string; tokenParsed?: { session_state?: string; sid?: string } }\r\n\t\t\t| undefined;\r\n\t\treturn kc?.sessionId ?? kc?.tokenParsed?.session_state ?? kc?.tokenParsed?.sid ?? null;\r\n\t}\r\n\r\n\tprivate captureSessionContext(): void {\r\n\t\tthis.sessionId = this.readSessionIdFromKeycloak();\r\n\t\tthis.username = this.keycloak.getUsername() ?? null;\r\n\t}\r\n\r\n\tprivate subscribeKeycloakRefresh(): void {\r\n\t\tthis.keycloak.keycloakEvents$.subscribe((event) => {\r\n\t\t\tif (event.type === KeycloakEventType.OnAuthRefreshSuccess) {\r\n\t\t\t\tthis.captureSessionContext();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate subscribeLifecycleEvents(): void {\r\n\t\tthis.keycloak.keycloakEvents$.subscribe((event) => {\r\n\t\t\tif (event.type === KeycloakEventType.OnAuthLogout) {\r\n\t\t\t\tthis.sendSessionEnd('logout');\r\n\t\t\t} else if (event.type === KeycloakEventType.OnAuthRefreshError) {\r\n\t\t\t\tthis.sendSessionEnd('refresh_failed');\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate subscribeRouterEvents(): void {\r\n\t\tif (!this.router) return;\r\n\t\tthis.router.events.pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd)).subscribe((event) => {\r\n\t\t\tthis.maybeEmitPageView(event.urlAfterRedirects);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate maybeEmitPageView(currentUrl: string): void {\r\n\t\tif (currentUrl === this.previousPath) return;\r\n\r\n\t\tconst slot = globalThis as Record<string, unknown>;\r\n\t\tconst lastUrl = slot['__arilActivityLastPageUrl'] as string | undefined;\r\n\t\tconst lastAt = slot['__arilActivityLastPageAt'] as number | undefined;\r\n\t\tif (lastUrl === currentUrl && lastAt && Date.now() - lastAt < 1000) {\r\n\t\t\tthis.previousPath = currentUrl;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst previous = this.previousPath;\r\n\t\tthis.previousPath = currentUrl;\r\n\t\tslot['__arilActivityLastPageUrl'] = currentUrl;\r\n\t\tslot['__arilActivityLastPageAt'] = Date.now();\r\n\r\n\t\tthis.send({\r\n\t\t\ttype: 'PAGE_VIEW',\r\n\t\t\tevent: '',\r\n\t\t\tpage: currentUrl,\r\n\t\t\treferrer: previous ?? undefined,\r\n\t\t\tproperties: {}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate handleSessionStart(): void {\r\n\t\tif (!this.sessionId) return;\r\n\t\tconst currentKey = `${ACTIVITY_SESSION_MARKER_PREFIX}${this.sessionId}`;\r\n\t\tlet alreadyMarked = false;\r\n\t\ttry {\r\n\t\t\talreadyMarked = !!localStorage.getItem(currentKey);\r\n\t\t\tthis.purgeStaleSessionMarkers(currentKey);\r\n\t\t} catch {\r\n\t\t\t/* swallow */\r\n\t\t}\r\n\t\tif (alreadyMarked) return;\r\n\t\ttry {\r\n\t\t\tlocalStorage.setItem(currentKey, Date.now().toString());\r\n\t\t} catch {\r\n\t\t\t/* swallow */\r\n\t\t}\r\n\t\tthis.send({\r\n\t\t\ttype: 'SESSION_START',\r\n\t\t\tevent: 'login',\r\n\t\t\tproperties: { userAgent: navigator.userAgent }\r\n\t\t});\r\n\t}\r\n\r\n\tprivate purgeStaleSessionMarkers(keepKey: string): void {\r\n\t\tconst stale: string[] = [];\r\n\t\tfor (let i = 0; i < localStorage.length; i++) {\r\n\t\t\tconst key = localStorage.key(i);\r\n\t\t\tif (key && key !== keepKey && key.startsWith(ACTIVITY_SESSION_MARKER_PREFIX)) {\r\n\t\t\t\tstale.push(key);\r\n\t\t\t}\r\n\t\t}\r\n\t\tstale.forEach((k) => localStorage.removeItem(k));\r\n\t}\r\n\r\n\tprivate sendSessionEnd(reason: 'logout' | 'refresh_failed'): void {\r\n\t\tif (!this.sessionId) return;\r\n\t\tconst markerKey = `${ACTIVITY_SESSION_MARKER_PREFIX}${this.sessionId}`;\r\n\t\tlet durationMs = 0;\r\n\t\ttry {\r\n\t\t\tconst loginTimestamp = parseInt(localStorage.getItem(markerKey) ?? '0', 10);\r\n\t\t\tdurationMs = loginTimestamp ? Date.now() - loginTimestamp : 0;\r\n\t\t\tlocalStorage.removeItem(markerKey);\r\n\t\t} catch {\r\n\t\t\t/* swallow */\r\n\t\t}\r\n\t\tthis.send({\r\n\t\t\ttype: 'SESSION_END',\r\n\t\t\tevent: reason,\r\n\t\t\tproperties: { durationMs }\r\n\t\t});\r\n\t}\r\n\r\n\tprivate toAbsoluteUrl(routerPath: string): string {\r\n\t\tif (routerPath.startsWith('http://') || routerPath.startsWith('https://')) return routerPath;\r\n\t\treturn `${window.location.origin}/#${routerPath}`;\r\n\t}\r\n\r\n\t/**\r\n\t * MFE shared scope'unda `Router` ve `Location` null (her ikisi de child injector'da yaşıyor).\r\n\t * Bu durumda Angular soyutlamalarına dayanamayız; `window.location.hash`'ten okuruz —\r\n\t * browser'ın sahip olduğu güncel URL.\r\n\t */\r\n\tprivate readCurrentPath(): string {\r\n\t\tif (this.location) return this.location.path();\r\n\t\tif (this.router) return this.router.url;\r\n\t\tconst hash = window.location.hash;\r\n\t\treturn hash.startsWith('#') ? hash.slice(1) : '';\r\n\t}\r\n\r\n\tprivate send(partial: {\r\n\t\ttype: ActivityEventType;\r\n\t\tevent: string;\r\n\t\tpage?: string;\r\n\t\treferrer?: string;\r\n\t\tproperties: Record<string, unknown>;\r\n\t}): void {\r\n\t\tif (!this.sessionId) return;\r\n\r\n\t\tconst baseUrl = API_CONFIGS.getExternalAppEndpoint(Apps.EVENT_GATEWAY);\r\n\t\tif (!baseUrl) return;\r\n\r\n\t\tconst currentPath = partial.page ?? this.readCurrentPath();\r\n\t\tconst payload: ActivityEvent = {\r\n\t\t\ttype: partial.type,\r\n\t\t\tsessionId: this.sessionId,\r\n\t\t\tusername: this.username ?? '',\r\n\t\t\tevent: partial.event,\r\n\t\t\tpage: this.toAbsoluteUrl(currentPath),\r\n\t\t\tip: '',\r\n\t\t\treferrer: partial.referrer ? this.toAbsoluteUrl(partial.referrer) : `${window.location.origin}/#`,\r\n\t\t\ttraceId: '',\r\n\t\t\tclientTimestamp: Date.now(),\r\n\t\t\tproperties: partial.properties\r\n\t\t};\r\n\r\n\t\tconst url = `${baseUrl.replace(/\\/$/, '')}/${ACTIVITY_ENDPOINT_PATH}`;\r\n\r\n\t\tthis.keycloak\r\n\t\t\t.getToken()\r\n\t\t\t.then((token) =>\r\n\t\t\t\tfetch(url, {\r\n\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\tkeepalive: true,\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Content-Type': 'application/json',\r\n\t\t\t\t\t\t[LOGGER_SESSION_HEADER]: this.sessionId!,\r\n\t\t\t\t\t\t...(token ? { Authorization: `Bearer ${token}` } : {})\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: JSON.stringify(payload)\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.catch(() => undefined);\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,14 @@ class Block {
|
|
|
22
22
|
this.target.set(this.getTarget(this.element));
|
|
23
23
|
this.blockUI = new KTBlockUI(this.target(), this.blockOptions());
|
|
24
24
|
}
|
|
25
|
+
ngOnDestroy() {
|
|
26
|
+
// KTBlockUI instance'ı KTUtilElementDataStore'da tutuluyor; release overlay'i kaldırır,
|
|
27
|
+
// destroy global store kaydını siler (aksi halde directive yok olsa da DOM bellekte kalır).
|
|
28
|
+
if (this.blockUI) {
|
|
29
|
+
this.blockUI.release();
|
|
30
|
+
this.blockUI.destroy();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
25
33
|
getTarget(element) {
|
|
26
34
|
let nativeElement = element.nativeElement;
|
|
27
35
|
while (nativeElement && !nativeElement.clientWidth)
|
|
@@ -38,34 +46,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
|
|
|
38
46
|
selector: '[arilBlock]'
|
|
39
47
|
}]
|
|
40
48
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
41
|
-
class BlockPage {
|
|
42
|
-
constructor() {
|
|
43
|
-
this.arilBlockPage = input.required();
|
|
44
|
-
this.blockOptions = input({});
|
|
45
|
-
const blockUI = new KTBlockUI(document.body, this.blockOptions());
|
|
46
|
-
effect(() => {
|
|
47
|
-
if (this.arilBlockPage()) {
|
|
48
|
-
blockUI.block();
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
blockUI.release();
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BlockPage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
56
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.1.2", type: BlockPage, isStandalone: true, selector: "[arilBlockPage]", inputs: { arilBlockPage: { classPropertyName: "arilBlockPage", publicName: "arilBlockPage", isSignal: true, isRequired: true, transformFunction: null }, blockOptions: { classPropertyName: "blockOptions", publicName: "blockOptions", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
57
|
-
}
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: BlockPage, decorators: [{
|
|
59
|
-
type: Directive,
|
|
60
|
-
args: [{
|
|
61
|
-
standalone: true,
|
|
62
|
-
selector: '[arilBlockPage]'
|
|
63
|
-
}]
|
|
64
|
-
}], ctorParameters: () => [] });
|
|
65
49
|
|
|
66
50
|
/**
|
|
67
51
|
* Generated bundle index. Do not edit.
|
|
68
52
|
*/
|
|
69
53
|
|
|
70
|
-
export { Block
|
|
54
|
+
export { Block };
|
|
71
55
|
//# sourceMappingURL=aril-util-block.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-util-block.mjs","sources":["../../projects/aril/util/block/src/block.ts","../../projects/aril/util/block/aril-util-block.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, effect, input, signal } from '@angular/core';\r\n\r\ndeclare const KTBlockUI: any;\r\n\r\ninterface BlockOptions {\r\n\tzIndex?: number;\r\n\toverlayClass?: string;\r\n\tmessage?: string;\r\n}\r\n\r\n@Directive({\r\n\tstandalone: true,\r\n\tselector: '[arilBlock]'\r\n})\r\nexport class Block implements AfterViewInit {\r\n\tconstructor(private element: ElementRef) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.target()) {\r\n\t\t\t\tif (this.arilBlock()) {\r\n\t\t\t\t\tthis.blockUI.block();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.blockUI.release();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tarilBlock = input.required<boolean>();\r\n\tblockOptions = input<BlockOptions>({});\r\n\r\n\tblockUI: typeof KTBlockUI;\r\n\ttarget = signal<HTMLElement>(this.element.nativeElement);\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.target.set(this.getTarget(this.element));\r\n\t\tthis.blockUI = new KTBlockUI(this.target(), this.blockOptions());\r\n\t}\r\n\r\n\
|
|
1
|
+
{"version":3,"file":"aril-util-block.mjs","sources":["../../projects/aril/util/block/src/block.ts","../../projects/aril/util/block/aril-util-block.ts"],"sourcesContent":["import { AfterViewInit, Directive, ElementRef, OnDestroy, effect, input, signal } from '@angular/core';\r\n\r\ndeclare const KTBlockUI: any;\r\n\r\ninterface BlockOptions {\r\n\tzIndex?: number;\r\n\toverlayClass?: string;\r\n\tmessage?: string;\r\n}\r\n\r\n@Directive({\r\n\tstandalone: true,\r\n\tselector: '[arilBlock]'\r\n})\r\nexport class Block implements AfterViewInit, OnDestroy {\r\n\tconstructor(private readonly element: ElementRef) {\r\n\t\teffect(() => {\r\n\t\t\tif (this.target()) {\r\n\t\t\t\tif (this.arilBlock()) {\r\n\t\t\t\t\tthis.blockUI.block();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.blockUI.release();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tarilBlock = input.required<boolean>();\r\n\tblockOptions = input<BlockOptions>({});\r\n\r\n\tblockUI: typeof KTBlockUI;\r\n\ttarget = signal<HTMLElement>(this.element.nativeElement);\r\n\r\n\tngAfterViewInit() {\r\n\t\tthis.target.set(this.getTarget(this.element));\r\n\t\tthis.blockUI = new KTBlockUI(this.target(), this.blockOptions());\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\t// KTBlockUI instance'ı KTUtilElementDataStore'da tutuluyor; release overlay'i kaldırır,\r\n\t\t// destroy global store kaydını siler (aksi halde directive yok olsa da DOM bellekte kalır).\r\n\t\tif (this.blockUI) {\r\n\t\t\tthis.blockUI.release();\r\n\t\t\tthis.blockUI.destroy();\r\n\t\t}\r\n\t}\r\n\r\n\tgetTarget(element: ElementRef): HTMLElement {\r\n\t\tlet nativeElement = element.nativeElement;\r\n\t\twhile (nativeElement && !nativeElement.clientWidth) nativeElement = nativeElement.children[0];\r\n\t\treturn nativeElement;\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAca,KAAK,CAAA;AACjB,IAAA,WAAA,CAA6B,OAAmB,EAAA;QAAnB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;AAYhD,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAW,CAAC;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAe,EAAE,CAAC,CAAC;QAGvC,IAAM,CAAA,MAAA,GAAG,MAAM,CAAc,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAfxD,MAAM,CAAC,MAAK;AACX,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;iBACrB;qBAAM;AACN,oBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;iBACvB;aACD;AACF,SAAC,CAAC,CAAC;KACH;IAQD,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;KACjE;IAED,WAAW,GAAA;;;AAGV,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SACvB;KACD;AAED,IAAA,SAAS,CAAC,OAAmB,EAAA;AAC5B,QAAA,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;AAC1C,QAAA,OAAO,aAAa,IAAI,CAAC,aAAa,CAAC,WAAW;AAAE,YAAA,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9F,QAAA,OAAO,aAAa,CAAC;KACrB;8GArCW,KAAK,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAL,KAAK,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAL,KAAK,EAAA,UAAA,EAAA,CAAA;kBAJjB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,aAAa;AACvB,iBAAA,CAAA;;;ACbD;;AAEG;;;;"}
|
|
@@ -12,12 +12,17 @@ class PubSubService {
|
|
|
12
12
|
dispatchEvent(new CustomEvent(e.name, { detail: e.data }));
|
|
13
13
|
}
|
|
14
14
|
subscribe(eventName, listener) {
|
|
15
|
-
addEventListener
|
|
15
|
+
// addEventListener'a kaydedilen wrapper'ı döndür: unSubscribe ancak AYNI referansla kaldırabilir.
|
|
16
|
+
// Eskiden anonim wrapper kaydedilip orijinal listener kaldırılmaya çalışılıyordu; referanslar
|
|
17
|
+
// eşleşmediği için unSubscribe hiçbir zaman çalışmıyordu (kalıcı window listener leak'i).
|
|
18
|
+
const handler = (event) => {
|
|
16
19
|
listener(event.detail);
|
|
17
|
-
}
|
|
20
|
+
};
|
|
21
|
+
addEventListener(eventName, handler);
|
|
22
|
+
return handler;
|
|
18
23
|
}
|
|
19
|
-
unSubscribe(eventName,
|
|
20
|
-
removeEventListener(eventName,
|
|
24
|
+
unSubscribe(eventName, handler) {
|
|
25
|
+
removeEventListener(eventName, handler);
|
|
21
26
|
}
|
|
22
27
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PubSubService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
23
28
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: PubSubService, providedIn: 'root' }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aril-util-pub-sub.mjs","sources":["../../projects/aril/util/pub-sub/src/pub-sub.service.ts","../../projects/aril/util/pub-sub/aril-util-pub-sub.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Injectable } from '@angular/core';\r\n\r\ntype CustomEvent = {\r\n\tname: keyof typeof PubSubEvents;\r\n\tdata: {\r\n\t\tpath: string;\r\n\t\tcustom?: any;\r\n\t};\r\n};\r\n\r\nconst PubSubEvents = {\r\n\tlanguageChanged: 'languageChanged',\r\n\tmenuModeChanged: 'menuModeChanged',\r\n\tbreadcrumbUpdated: 'breadcrumbUpdated'\r\n};\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class PubSubService {\r\n\tpublish(e: CustomEvent) {\r\n\t\tdispatchEvent(new CustomEvent(e.name, { detail: e.data }));\r\n\t}\r\n\r\n\tsubscribe(eventName: keyof typeof PubSubEvents, listener: (data: any) => void) {\r\n\t\
|
|
1
|
+
{"version":3,"file":"aril-util-pub-sub.mjs","sources":["../../projects/aril/util/pub-sub/src/pub-sub.service.ts","../../projects/aril/util/pub-sub/aril-util-pub-sub.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Injectable } from '@angular/core';\r\n\r\ntype CustomEvent = {\r\n\tname: keyof typeof PubSubEvents;\r\n\tdata: {\r\n\t\tpath: string;\r\n\t\tcustom?: any;\r\n\t};\r\n};\r\n\r\nconst PubSubEvents = {\r\n\tlanguageChanged: 'languageChanged',\r\n\tmenuModeChanged: 'menuModeChanged',\r\n\tbreadcrumbUpdated: 'breadcrumbUpdated'\r\n};\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class PubSubService {\r\n\tpublish(e: CustomEvent) {\r\n\t\tdispatchEvent(new CustomEvent(e.name, { detail: e.data }));\r\n\t}\r\n\r\n\tsubscribe(eventName: keyof typeof PubSubEvents, listener: (data: any) => void): EventListener {\r\n\t\t// addEventListener'a kaydedilen wrapper'ı döndür: unSubscribe ancak AYNI referansla kaldırabilir.\r\n\t\t// Eskiden anonim wrapper kaydedilip orijinal listener kaldırılmaya çalışılıyordu; referanslar\r\n\t\t// eşleşmediği için unSubscribe hiçbir zaman çalışmıyordu (kalıcı window listener leak'i).\r\n\t\tconst handler: EventListener = (event: any) => {\r\n\t\t\tlistener(event.detail);\r\n\t\t};\r\n\t\taddEventListener(eventName, handler);\r\n\t\treturn handler;\r\n\t}\r\n\r\n\tunSubscribe(eventName: keyof typeof PubSubEvents, handler: EventListener) {\r\n\t\tremoveEventListener(eventName, handler);\r\n\t}\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAAA;AAWA,MAAM,YAAY,GAAG;AACpB,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,iBAAiB,EAAE,mBAAmB;CACtC,CAAC;MAKW,aAAa,CAAA;AACzB,IAAA,OAAO,CAAC,CAAc,EAAA;AACrB,QAAA,aAAa,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KAC3D;IAED,SAAS,CAAC,SAAoC,EAAE,QAA6B,EAAA;;;;AAI5E,QAAA,MAAM,OAAO,GAAkB,CAAC,KAAU,KAAI;AAC7C,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACxB,SAAC,CAAC;AACF,QAAA,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACrC,QAAA,OAAO,OAAO,CAAC;KACf;IAED,WAAW,CAAC,SAAoC,EAAE,OAAsB,EAAA;AACvE,QAAA,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;KACxC;8GAlBW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFb,MAAM,EAAA,CAAA,CAAA,EAAA;;2FAEN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACX,oBAAA,UAAU,EAAE,MAAM;AAClB,iBAAA,CAAA;;;ACnBD;;AAEG;;;;"}
|
package/fesm2022/aril.mjs
CHANGED
|
@@ -12,6 +12,7 @@ import { loadApiConfigs, loadInitData, setApiConfigOnMFEMode } from 'aril/boot/c
|
|
|
12
12
|
import { CustomRouteReuseStrategy, TabAwareUrlSerializer, MicroAppService } from 'aril/boot/config/apps';
|
|
13
13
|
import { loadPlugins, getNgZone } from 'aril/boot/config/plugins';
|
|
14
14
|
import { i18nFolderName } from 'aril/i18n';
|
|
15
|
+
import { ActivityService } from 'aril/util/activity';
|
|
15
16
|
import * as i1 from 'aril/theme/layout';
|
|
16
17
|
import { AppLayoutComponent } from 'aril/theme/layout';
|
|
17
18
|
import * as i2 from 'aril/util/pub-sub';
|
|
@@ -85,7 +86,7 @@ const boot$1 = (_appName, routes) => {
|
|
|
85
86
|
},
|
|
86
87
|
{
|
|
87
88
|
provide: APP_INITIALIZER,
|
|
88
|
-
useFactory: (httpClient, keycloak, router, folderName, microAppService, location) => {
|
|
89
|
+
useFactory: (httpClient, keycloak, router, folderName, microAppService, location, activityService) => {
|
|
89
90
|
if (router)
|
|
90
91
|
bridge.hostRouter = router;
|
|
91
92
|
if (location)
|
|
@@ -97,10 +98,11 @@ const boot$1 = (_appName, routes) => {
|
|
|
97
98
|
await runLoadApiConfigs();
|
|
98
99
|
await runLoadInitData();
|
|
99
100
|
runLoadPlugins();
|
|
101
|
+
activityService.start({ shellMode: true });
|
|
100
102
|
};
|
|
101
103
|
},
|
|
102
104
|
multi: true,
|
|
103
|
-
deps: [HttpClient, KeycloakService, Router, i18nFolderName, MicroAppService, Location]
|
|
105
|
+
deps: [HttpClient, KeycloakService, Router, i18nFolderName, MicroAppService, Location, ActivityService]
|
|
104
106
|
}
|
|
105
107
|
]
|
|
106
108
|
};
|
|
@@ -108,7 +110,7 @@ const boot$1 = (_appName, routes) => {
|
|
|
108
110
|
};
|
|
109
111
|
|
|
110
112
|
const appComponentLoader = async () => {
|
|
111
|
-
const { AppComponent } = await import('./aril-app.component-
|
|
113
|
+
const { AppComponent } = await import('./aril-app.component-MjG_tPEe.mjs');
|
|
112
114
|
return AppComponent;
|
|
113
115
|
};
|
|
114
116
|
|
|
@@ -528,16 +530,17 @@ const boot = (_appName, _routes, _menuItems) => {
|
|
|
528
530
|
getNgZone(),
|
|
529
531
|
{
|
|
530
532
|
provide: APP_INITIALIZER,
|
|
531
|
-
useFactory: (httpClient, keycloak, folderName) => {
|
|
533
|
+
useFactory: (httpClient, keycloak, folderName, activityService) => {
|
|
532
534
|
const runApiInit = setApiConfigOnMFEMode(httpClient, keycloak, folderName);
|
|
533
535
|
const runLoadPlugins = loadPlugins();
|
|
534
536
|
return async () => {
|
|
535
537
|
await runApiInit();
|
|
536
538
|
runLoadPlugins();
|
|
539
|
+
activityService.start({ shellMode: false });
|
|
537
540
|
};
|
|
538
541
|
},
|
|
539
542
|
multi: true,
|
|
540
|
-
deps: [HttpClient, KeycloakService, i18nFolderName]
|
|
543
|
+
deps: [HttpClient, KeycloakService, i18nFolderName, ActivityService]
|
|
541
544
|
},
|
|
542
545
|
importProvidersFrom(MonacoEditorModule.forRoot()),
|
|
543
546
|
{ provide: NGX_MONACO_EDITOR_CONFIG, useValue: monacoConfig }
|
|
@@ -635,11 +638,21 @@ const boot = (_appName, _routes, _menuItems) => {
|
|
|
635
638
|
// (BreadcrumbService bilinçli olarak child-local bırakıldı: her tab kendi breadcrumb'ı.)
|
|
636
639
|
{ provide: PubSubService, useFactory: () => sharedAppRef.injector.get(PubSubService) },
|
|
637
640
|
{ provide: PrimeNGConfig, useFactory: () => sharedAppRef.injector.get(PrimeNGConfig) },
|
|
641
|
+
// ActivityService shared'da `APP_INITIALIZER` ile başlatıldı (Keycloak listener'ları + sessionId
|
|
642
|
+
// capture). Tab child injector'ında `ɵINJECTOR_SCOPE:'root'` yan etkisiyle ayrı bir instance
|
|
643
|
+
// üretilirdi — bu instance hiç `start()` çağrılmadığı için `track()` no-op olur ve aril-button
|
|
644
|
+
// click'leri sessizce kaybolur. Shared instance'ı forward ederek tek başlatılmış instance'ı
|
|
645
|
+
// her tab'a paylaştırıyoruz (authInterceptor'ın okuduğu `sessionId` ile birebir aynı).
|
|
646
|
+
{ provide: ActivityService, useFactory: () => sharedAppRef.injector.get(ActivityService) },
|
|
638
647
|
// Toast/confirm GLOBAL: tek shared MessageService/ConfirmationService. Aksi halde her tab
|
|
639
648
|
// kendi instance'ına sahip olur → host'tan tetiklenen toast MFE tab'ında (ya da tersi)
|
|
640
649
|
// görünmez. Shared instance ile tüm `<p-toast key="toast-root">` container'ları aynı kuyruğu dinler.
|
|
641
650
|
{ provide: MessageService, useFactory: () => sharedAppRef.injector.get(MessageService) },
|
|
642
651
|
{ provide: ConfirmationService, useFactory: () => sharedAppRef.injector.get(ConfirmationService) }
|
|
652
|
+
// SelectionGroupService bilinçli olarak BURADA YOK: tüm state'i (signal + loaded/loading +
|
|
653
|
+
// init flag'i) globalThis bridge'de yaşar; child-local instance'lar da aynı state'i alias'lar,
|
|
654
|
+
// bu yüzden instance sayısının önemi yoktur — forwarding yalnızca instance-local state'i olan
|
|
655
|
+
// servisler (MessageService vb.) için gereklidir.
|
|
643
656
|
];
|
|
644
657
|
const appComponentPromise = appComponentLoader();
|
|
645
658
|
class MFEAppElement extends HTMLElement {
|