aril 2.0.1-dev.4 → 2.0.1
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/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/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 +11 -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/tab-session.service.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-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-oxzMhRXe.mjs → aril-boot-mfe-app.component-DtspQ3J8.mjs} +3 -2
- package/fesm2022/{aril-boot-mfe-app.component-oxzMhRXe.mjs.map → aril-boot-mfe-app.component-DtspQ3J8.mjs.map} +1 -1
- package/fesm2022/{aril-boot-mfe-aril-boot-mfe-CKOM61xb.mjs → aril-boot-mfe-aril-boot-mfe-lovoFcgw.mjs} +12 -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 +4 -193
- 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 +14 -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 +184 -208
- package/scripts/mf-shared.js +47 -47
- 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 +1 -1
- package/theme/layout/index.d.ts +1 -1
- package/theme/layout/index.ts +3 -1
- package/theme/layout/service/tab-session.service.ts +138 -138
- 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 -195
- 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-CKOM61xb.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 -209
- 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
package/scripts/mf-shared.js
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Thor MFE app'lerinin (host + tüm remote'lar) ORTAK Module Federation sharing politikası.
|
|
3
|
-
* Tek sahip: politika değişiklikleri (skip listesi, strictVersion vb.) yalnızca burada yapılır;
|
|
4
|
-
* tüm repoların webpack config'leri bu preset'i require eder — repo başına kopya/drift olmaz.
|
|
5
|
-
* (Drift'in maliyeti: tek bir remote farklı sharing rejimiyle kalırsa o remote'ta ikinci bir
|
|
6
|
-
* @angular/core yaşar → bridge signal reactivity'si ve DI class-identity sessizce kırılır.)
|
|
7
|
-
*
|
|
8
|
-
* Politika:
|
|
9
|
-
* - @angular/* (+ rxjs, transloco vb. tüm DİREKT package.json dep'leri) singleton shared →
|
|
10
|
-
* cross-MFE TEK @angular/core → bridge signal/effect reactivity'si MFE'ler arası çalışır.
|
|
11
|
-
* - `aril` SKIP (per-app): shared edilseydi entrypoint'leri farklı container'lardan çözülürdü
|
|
12
|
-
* (host önce `aril/provider`'ı yükler → host'un KeycloakService class'ı; remote `aril/boot/mfe`'yi
|
|
13
|
-
* yükler → remote'unki). keycloak-angular/primeng aril üzerinden TRANSITIVE geldiği için shareAll
|
|
14
|
-
* onları paylaşamaz (yalnızca direkt dep'leri okur) → iki ayrı class → DI uyuşmaz ("No provider
|
|
15
|
-
* for KeycloakService"). aril per-app olunca her app kendi tam aril'ini taşır → DI tutarlı;
|
|
16
|
-
* cross-MFE state globalThis bridge ile köprülenir (bkz. aril/boot/bridge).
|
|
17
|
-
* - Kütüphane default skip listeleri spread ile KORUNUR (custom array vermek ikisini de ezerdi):
|
|
18
|
-
* DEFAULT_SKIP_LIST = @softarc/* + @angular-architects/* (MF orkestrasyon runtime'ı MF üzerinden
|
|
19
|
-
* paylaşılmaz) + tslib + zone.js (eager polyfill → MF lazy shared ile "eager consumption" + NG0908).
|
|
20
|
-
* DEFAULT_SECONARIES_SKIP_LIST = @angular/*\/upgrade secondaries (@angular/upgrade kurulu değil).
|
|
21
|
-
* - `@angular-architects/module-federation-tools` SKIP: app'lerde direkt dep olduğundan shareAll
|
|
22
|
-
* onu paylaşırdı; kardeşleri default listede zaten skip. aril'in boot kodu import ettiğinden,
|
|
23
|
-
* singleton paylaşımda host'un versiyonu tüm remote'lara sessizce dayatılırdı — MF runtime
|
|
24
|
-
* ailesinin tamamı aril ile aynı mantıkla per-app kalır.
|
|
25
|
-
*
|
|
26
|
-
* Kullanım (webpack.config.js, app root'unda):
|
|
27
|
-
* const { arilMfShared } = require('./node_modules/aril/scripts/mf-shared.js');
|
|
28
|
-
* ...
|
|
29
|
-
* shared: arilMfShared()
|
|
30
|
-
*
|
|
31
|
-
* NOT: relative require ŞART — aril'in package.json `exports` haritası `./scripts/*` subpath'ini
|
|
32
|
-
* içermediğinden bare `require('aril/scripts/...')` ERR_PACKAGE_PATH_NOT_EXPORTED fırlatır.
|
|
33
|
-
*/
|
|
34
|
-
const { shareAll, DEFAULT_SKIP_LIST, DEFAULT_SECONARIES_SKIP_LIST } = require('@angular-architects/module-federation/webpack');
|
|
35
|
-
|
|
36
|
-
function arilMfShared() {
|
|
37
|
-
return shareAll(
|
|
38
|
-
{
|
|
39
|
-
singleton: true,
|
|
40
|
-
strictVersion: false,
|
|
41
|
-
requiredVersion: 'auto'
|
|
42
|
-
},
|
|
43
|
-
[...DEFAULT_SKIP_LIST, ...DEFAULT_SECONARIES_SKIP_LIST, '@angular-architects/module-federation-tools', 'aril']
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
module.exports = { arilMfShared };
|
|
1
|
+
/**
|
|
2
|
+
* Thor MFE app'lerinin (host + tüm remote'lar) ORTAK Module Federation sharing politikası.
|
|
3
|
+
* Tek sahip: politika değişiklikleri (skip listesi, strictVersion vb.) yalnızca burada yapılır;
|
|
4
|
+
* tüm repoların webpack config'leri bu preset'i require eder — repo başına kopya/drift olmaz.
|
|
5
|
+
* (Drift'in maliyeti: tek bir remote farklı sharing rejimiyle kalırsa o remote'ta ikinci bir
|
|
6
|
+
* @angular/core yaşar → bridge signal reactivity'si ve DI class-identity sessizce kırılır.)
|
|
7
|
+
*
|
|
8
|
+
* Politika:
|
|
9
|
+
* - @angular/* (+ rxjs, transloco vb. tüm DİREKT package.json dep'leri) singleton shared →
|
|
10
|
+
* cross-MFE TEK @angular/core → bridge signal/effect reactivity'si MFE'ler arası çalışır.
|
|
11
|
+
* - `aril` SKIP (per-app): shared edilseydi entrypoint'leri farklı container'lardan çözülürdü
|
|
12
|
+
* (host önce `aril/provider`'ı yükler → host'un KeycloakService class'ı; remote `aril/boot/mfe`'yi
|
|
13
|
+
* yükler → remote'unki). keycloak-angular/primeng aril üzerinden TRANSITIVE geldiği için shareAll
|
|
14
|
+
* onları paylaşamaz (yalnızca direkt dep'leri okur) → iki ayrı class → DI uyuşmaz ("No provider
|
|
15
|
+
* for KeycloakService"). aril per-app olunca her app kendi tam aril'ini taşır → DI tutarlı;
|
|
16
|
+
* cross-MFE state globalThis bridge ile köprülenir (bkz. aril/boot/bridge).
|
|
17
|
+
* - Kütüphane default skip listeleri spread ile KORUNUR (custom array vermek ikisini de ezerdi):
|
|
18
|
+
* DEFAULT_SKIP_LIST = @softarc/* + @angular-architects/* (MF orkestrasyon runtime'ı MF üzerinden
|
|
19
|
+
* paylaşılmaz) + tslib + zone.js (eager polyfill → MF lazy shared ile "eager consumption" + NG0908).
|
|
20
|
+
* DEFAULT_SECONARIES_SKIP_LIST = @angular/*\/upgrade secondaries (@angular/upgrade kurulu değil).
|
|
21
|
+
* - `@angular-architects/module-federation-tools` SKIP: app'lerde direkt dep olduğundan shareAll
|
|
22
|
+
* onu paylaşırdı; kardeşleri default listede zaten skip. aril'in boot kodu import ettiğinden,
|
|
23
|
+
* singleton paylaşımda host'un versiyonu tüm remote'lara sessizce dayatılırdı — MF runtime
|
|
24
|
+
* ailesinin tamamı aril ile aynı mantıkla per-app kalır.
|
|
25
|
+
*
|
|
26
|
+
* Kullanım (webpack.config.js, app root'unda):
|
|
27
|
+
* const { arilMfShared } = require('./node_modules/aril/scripts/mf-shared.js');
|
|
28
|
+
* ...
|
|
29
|
+
* shared: arilMfShared()
|
|
30
|
+
*
|
|
31
|
+
* NOT: relative require ŞART — aril'in package.json `exports` haritası `./scripts/*` subpath'ini
|
|
32
|
+
* içermediğinden bare `require('aril/scripts/...')` ERR_PACKAGE_PATH_NOT_EXPORTED fırlatır.
|
|
33
|
+
*/
|
|
34
|
+
const { shareAll, DEFAULT_SKIP_LIST, DEFAULT_SECONARIES_SKIP_LIST } = require('@angular-architects/module-federation/webpack');
|
|
35
|
+
|
|
36
|
+
function arilMfShared() {
|
|
37
|
+
return shareAll(
|
|
38
|
+
{
|
|
39
|
+
singleton: true,
|
|
40
|
+
strictVersion: false,
|
|
41
|
+
requiredVersion: 'auto'
|
|
42
|
+
},
|
|
43
|
+
[...DEFAULT_SKIP_LIST, ...DEFAULT_SECONARIES_SKIP_LIST, '@angular-architects/module-federation-tools', 'aril']
|
|
44
|
+
);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
module.exports = { arilMfShared };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/selection-group.service';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { SelectionGroupDTO } from '
|
|
2
|
+
import { SelectionGroupDTO } from 'aril/boot/bridge';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export declare class SelectionGroupService {
|
|
5
5
|
private readonly http;
|
package/theme/layout/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export * from './app/layout/app.layout.component';
|
|
2
2
|
export * from './app/layout/mfe.layout.component';
|
|
3
3
|
export * from './service/app.menu.service';
|
|
4
|
-
export
|
|
4
|
+
export { SelectionGroupService } from 'aril/selection';
|
|
5
5
|
export * from './service/breadcrumb.service';
|
|
6
6
|
export * from './service/app.layout.service';
|
|
7
7
|
export * from './app/favorite-pages/favorite-pages.service';
|
package/theme/layout/index.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export * from './app/layout/app.layout.component';
|
|
2
2
|
export * from './app/layout/mfe.layout.component';
|
|
3
3
|
export * from './service/app.menu.service';
|
|
4
|
-
|
|
4
|
+
// SelectionGroupService aril/selection entry point'ine taşındı (theme/layout → selectBox circular'ını
|
|
5
|
+
// kırmak için). Mevcut tüketiciler aril/theme/layout'tan import etmeye devam etsin diye re-export edilir.
|
|
6
|
+
export { SelectionGroupService } from 'aril/selection';
|
|
5
7
|
export * from './service/breadcrumb.service';
|
|
6
8
|
export * from './service/app.layout.service';
|
|
7
9
|
export * from './app/favorite-pages/favorite-pages.service';
|
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import { Injectable, Injector, effect, inject } from '@angular/core';
|
|
2
|
-
|
|
3
|
-
import { KeycloakService } from 'keycloak-angular';
|
|
4
|
-
|
|
5
|
-
import { NavItem, NavService } from 'aril/boot/config/apps';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* localStorage'a serialize edilen pinned tab kaydı. `pinned` alanı SAKLANMAZ
|
|
9
|
-
* (yüklenen her kayıt zaten pinned'dir). `tabId` SAKLANIR — F5 sonrası
|
|
10
|
-
* `window.history.state._tab` ile eşleşip `NavService.activeRoute` handler'ının
|
|
11
|
-
* aynı tab'ı tekrar türetmesini (duplicate) engeller.
|
|
12
|
-
*/
|
|
13
|
-
interface PersistedTab {
|
|
14
|
-
tabId: string;
|
|
15
|
-
navLink: string;
|
|
16
|
-
navName: string;
|
|
17
|
-
icon?: string;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Sabitlenmiş (pinned) tab'ları kullanıcı bazlı `localStorage` anahtarında kalıcı
|
|
22
|
-
* kılar. F5 / yeniden login / yeni sekme açılışında pinned tab'lar geri yüklenir;
|
|
23
|
-
* non-pinned tab'lar saklanmaz.
|
|
24
|
-
*
|
|
25
|
-
* **Akış**: `AppLayoutComponent` constructor'da (menü/home provider'ları set
|
|
26
|
-
* edildikten SONRA) `restore()` SENKRON çağrılır → pinned'ler `NavService.activeRoutes`'a
|
|
27
|
-
* eklenir → save effect armlanır. Save effect `restore()` ÖNCESİ kurulmaz; aksi
|
|
28
|
-
* halde Angular effect'in ilk (eager) tick'i boş `activeRoutes`'u yazıp saklı
|
|
29
|
-
* pinned'leri silerdi.
|
|
30
|
-
*
|
|
31
|
-
* **Duplicate önlemi**: Aktif tab pinned'di ise restore SAKLI `tabId` ile ekler;
|
|
32
|
-
* F5 sonrası korunan `history.state._tab` bununla eşleşir → handler türetmez, sadece
|
|
33
|
-
* focus eder. Aktif tab pinned değildiyse eşleşme olmaz → handler gelen URL'i yeni
|
|
34
|
-
* aktif tab olarak ekler (deep-link gereksinimi: "kayıtlıları yükle + URL'i ekle").
|
|
35
|
-
*/
|
|
36
|
-
@Injectable({ providedIn: 'root' })
|
|
37
|
-
export class TabSessionService {
|
|
38
|
-
private readonly navService = inject(NavService);
|
|
39
|
-
private readonly keycloak = inject(KeycloakService);
|
|
40
|
-
private readonly injector = inject(Injector);
|
|
41
|
-
|
|
42
|
-
private readonly STORAGE_PREFIX = 'tab-session:';
|
|
43
|
-
/** `NavService.MAX_TABS` ile aynı tavan — restore ve save iki tarafta da sınırlanır. */
|
|
44
|
-
private readonly MAX_PERSISTED = 20;
|
|
45
|
-
|
|
46
|
-
private restored = false;
|
|
47
|
-
/** Son yazılan payload — değişmediyse gereksiz `localStorage` write'ı atlanır. */
|
|
48
|
-
private lastWritten = '';
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Kullanıcı bazlı storage anahtarı. Mevcut kod (`app.profilesidebar.component.ts`)
|
|
52
|
-
* `idTokenParsed.sub` kullanıyor; her iki token şeklini de kapsamak için fallback
|
|
53
|
-
* zinciri — kullanıcı çözülemezse `anonymous`.
|
|
54
|
-
*/
|
|
55
|
-
private storageKey(): string {
|
|
56
|
-
const kc = this.keycloak.getKeycloakInstance();
|
|
57
|
-
const sub = kc?.tokenParsed?.sub ?? kc?.idTokenParsed?.sub ?? 'anonymous';
|
|
58
|
-
return this.STORAGE_PREFIX + sub;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* SENKRON restore. `AppLayoutComponent` constructor'dan, ilk `NavigationEnd`
|
|
63
|
-
* işlenmeden ÖNCE çağrılmalı — böylece `NavService.activeRoute` handler'ının
|
|
64
|
-
* `knownTab` guard'ı restore edilen tabId'leri görür. Idempotent: ikinci çağrı no-op.
|
|
65
|
-
*/
|
|
66
|
-
restore(): void {
|
|
67
|
-
if (this.restored) return;
|
|
68
|
-
const persisted = this.load();
|
|
69
|
-
const existingIds = new Set(this.navService.activeRoutes().map((t) => t.tabId));
|
|
70
|
-
for (const item of persisted) {
|
|
71
|
-
// Aynı tabId zaten ekliyse atla (idempotency / olası çift çağrı koruması).
|
|
72
|
-
if (existingIds.has(item.tabId)) continue;
|
|
73
|
-
this.navService.addToActiveRoutes({
|
|
74
|
-
tabId: item.tabId,
|
|
75
|
-
navLink: item.navLink,
|
|
76
|
-
navName: item.navName,
|
|
77
|
-
icon: item.icon,
|
|
78
|
-
pinned: true
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
this.restored = true;
|
|
82
|
-
this.armSave();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Save effect'ini `restore()` SONRASI kurar. İlk çalıştığında `activeRoutes` zaten
|
|
87
|
-
* restore edilmiş pinned'leri içerdiği için yazım idempotent kalır. Effect, service'in
|
|
88
|
-
* kendi `Injector`'ına bağlanır (field initializer / constructor dışında kurulduğu için
|
|
89
|
-
* explicit injector zorunlu).
|
|
90
|
-
*/
|
|
91
|
-
private armSave(): void {
|
|
92
|
-
effect(
|
|
93
|
-
() => {
|
|
94
|
-
const pinned = this.navService.activeRoutes().filter((t) => t.pinned);
|
|
95
|
-
this.save(pinned);
|
|
96
|
-
},
|
|
97
|
-
{ injector: this.injector }
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
private save(pinned: NavItem[]): void {
|
|
102
|
-
try {
|
|
103
|
-
const payload: PersistedTab[] = pinned
|
|
104
|
-
.slice(0, this.MAX_PERSISTED)
|
|
105
|
-
.map((t) => ({ tabId: t.tabId, navLink: t.navLink, navName: t.navName, icon: t.icon }));
|
|
106
|
-
const serialized = JSON.stringify(payload);
|
|
107
|
-
if (serialized === this.lastWritten) return;
|
|
108
|
-
this.lastWritten = serialized;
|
|
109
|
-
localStorage.setItem(this.storageKey(), serialized);
|
|
110
|
-
} catch {
|
|
111
|
-
/* quota / serialize hatası: kritik değil, persist sessizce atlanır */
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
private load(): PersistedTab[] {
|
|
116
|
-
try {
|
|
117
|
-
const raw = localStorage.getItem(this.storageKey());
|
|
118
|
-
if (!raw) return [];
|
|
119
|
-
const parsed: unknown = JSON.parse(raw);
|
|
120
|
-
if (!Array.isArray(parsed)) return [];
|
|
121
|
-
return parsed.filter((x): x is PersistedTab => this.isValidPersistedTab(x));
|
|
122
|
-
} catch {
|
|
123
|
-
return []; // bozuk JSON → yok say, uygulama normal açılır
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
private isValidPersistedTab(x: unknown): x is PersistedTab {
|
|
128
|
-
if (!x || typeof x !== 'object') return false;
|
|
129
|
-
const t = x as Record<string, unknown>;
|
|
130
|
-
return (
|
|
131
|
-
typeof t['tabId'] === 'string' &&
|
|
132
|
-
t['tabId'].length > 0 &&
|
|
133
|
-
typeof t['navLink'] === 'string' &&
|
|
134
|
-
t['navLink'].length > 0 &&
|
|
135
|
-
typeof t['navName'] === 'string'
|
|
136
|
-
);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
1
|
+
import { Injectable, Injector, effect, inject } from '@angular/core';
|
|
2
|
+
|
|
3
|
+
import { KeycloakService } from 'keycloak-angular';
|
|
4
|
+
|
|
5
|
+
import { NavItem, NavService } from 'aril/boot/config/apps';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* localStorage'a serialize edilen pinned tab kaydı. `pinned` alanı SAKLANMAZ
|
|
9
|
+
* (yüklenen her kayıt zaten pinned'dir). `tabId` SAKLANIR — F5 sonrası
|
|
10
|
+
* `window.history.state._tab` ile eşleşip `NavService.activeRoute` handler'ının
|
|
11
|
+
* aynı tab'ı tekrar türetmesini (duplicate) engeller.
|
|
12
|
+
*/
|
|
13
|
+
interface PersistedTab {
|
|
14
|
+
tabId: string;
|
|
15
|
+
navLink: string;
|
|
16
|
+
navName: string;
|
|
17
|
+
icon?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Sabitlenmiş (pinned) tab'ları kullanıcı bazlı `localStorage` anahtarında kalıcı
|
|
22
|
+
* kılar. F5 / yeniden login / yeni sekme açılışında pinned tab'lar geri yüklenir;
|
|
23
|
+
* non-pinned tab'lar saklanmaz.
|
|
24
|
+
*
|
|
25
|
+
* **Akış**: `AppLayoutComponent` constructor'da (menü/home provider'ları set
|
|
26
|
+
* edildikten SONRA) `restore()` SENKRON çağrılır → pinned'ler `NavService.activeRoutes`'a
|
|
27
|
+
* eklenir → save effect armlanır. Save effect `restore()` ÖNCESİ kurulmaz; aksi
|
|
28
|
+
* halde Angular effect'in ilk (eager) tick'i boş `activeRoutes`'u yazıp saklı
|
|
29
|
+
* pinned'leri silerdi.
|
|
30
|
+
*
|
|
31
|
+
* **Duplicate önlemi**: Aktif tab pinned'di ise restore SAKLI `tabId` ile ekler;
|
|
32
|
+
* F5 sonrası korunan `history.state._tab` bununla eşleşir → handler türetmez, sadece
|
|
33
|
+
* focus eder. Aktif tab pinned değildiyse eşleşme olmaz → handler gelen URL'i yeni
|
|
34
|
+
* aktif tab olarak ekler (deep-link gereksinimi: "kayıtlıları yükle + URL'i ekle").
|
|
35
|
+
*/
|
|
36
|
+
@Injectable({ providedIn: 'root' })
|
|
37
|
+
export class TabSessionService {
|
|
38
|
+
private readonly navService = inject(NavService);
|
|
39
|
+
private readonly keycloak = inject(KeycloakService);
|
|
40
|
+
private readonly injector = inject(Injector);
|
|
41
|
+
|
|
42
|
+
private readonly STORAGE_PREFIX = 'tab-session:';
|
|
43
|
+
/** `NavService.MAX_TABS` ile aynı tavan — restore ve save iki tarafta da sınırlanır. */
|
|
44
|
+
private readonly MAX_PERSISTED = 20;
|
|
45
|
+
|
|
46
|
+
private restored = false;
|
|
47
|
+
/** Son yazılan payload — değişmediyse gereksiz `localStorage` write'ı atlanır. */
|
|
48
|
+
private lastWritten = '';
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Kullanıcı bazlı storage anahtarı. Mevcut kod (`app.profilesidebar.component.ts`)
|
|
52
|
+
* `idTokenParsed.sub` kullanıyor; her iki token şeklini de kapsamak için fallback
|
|
53
|
+
* zinciri — kullanıcı çözülemezse `anonymous`.
|
|
54
|
+
*/
|
|
55
|
+
private storageKey(): string {
|
|
56
|
+
const kc = this.keycloak.getKeycloakInstance();
|
|
57
|
+
const sub = kc?.tokenParsed?.sub ?? kc?.idTokenParsed?.sub ?? 'anonymous';
|
|
58
|
+
return this.STORAGE_PREFIX + sub;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* SENKRON restore. `AppLayoutComponent` constructor'dan, ilk `NavigationEnd`
|
|
63
|
+
* işlenmeden ÖNCE çağrılmalı — böylece `NavService.activeRoute` handler'ının
|
|
64
|
+
* `knownTab` guard'ı restore edilen tabId'leri görür. Idempotent: ikinci çağrı no-op.
|
|
65
|
+
*/
|
|
66
|
+
restore(): void {
|
|
67
|
+
if (this.restored) return;
|
|
68
|
+
const persisted = this.load();
|
|
69
|
+
const existingIds = new Set(this.navService.activeRoutes().map((t) => t.tabId));
|
|
70
|
+
for (const item of persisted) {
|
|
71
|
+
// Aynı tabId zaten ekliyse atla (idempotency / olası çift çağrı koruması).
|
|
72
|
+
if (existingIds.has(item.tabId)) continue;
|
|
73
|
+
this.navService.addToActiveRoutes({
|
|
74
|
+
tabId: item.tabId,
|
|
75
|
+
navLink: item.navLink,
|
|
76
|
+
navName: item.navName,
|
|
77
|
+
icon: item.icon,
|
|
78
|
+
pinned: true
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
this.restored = true;
|
|
82
|
+
this.armSave();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Save effect'ini `restore()` SONRASI kurar. İlk çalıştığında `activeRoutes` zaten
|
|
87
|
+
* restore edilmiş pinned'leri içerdiği için yazım idempotent kalır. Effect, service'in
|
|
88
|
+
* kendi `Injector`'ına bağlanır (field initializer / constructor dışında kurulduğu için
|
|
89
|
+
* explicit injector zorunlu).
|
|
90
|
+
*/
|
|
91
|
+
private armSave(): void {
|
|
92
|
+
effect(
|
|
93
|
+
() => {
|
|
94
|
+
const pinned = this.navService.activeRoutes().filter((t) => t.pinned);
|
|
95
|
+
this.save(pinned);
|
|
96
|
+
},
|
|
97
|
+
{ injector: this.injector }
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private save(pinned: NavItem[]): void {
|
|
102
|
+
try {
|
|
103
|
+
const payload: PersistedTab[] = pinned
|
|
104
|
+
.slice(0, this.MAX_PERSISTED)
|
|
105
|
+
.map((t) => ({ tabId: t.tabId, navLink: t.navLink, navName: t.navName, icon: t.icon }));
|
|
106
|
+
const serialized = JSON.stringify(payload);
|
|
107
|
+
if (serialized === this.lastWritten) return;
|
|
108
|
+
this.lastWritten = serialized;
|
|
109
|
+
localStorage.setItem(this.storageKey(), serialized);
|
|
110
|
+
} catch {
|
|
111
|
+
/* quota / serialize hatası: kritik değil, persist sessizce atlanır */
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private load(): PersistedTab[] {
|
|
116
|
+
try {
|
|
117
|
+
const raw = localStorage.getItem(this.storageKey());
|
|
118
|
+
if (!raw) return [];
|
|
119
|
+
const parsed: unknown = JSON.parse(raw);
|
|
120
|
+
if (!Array.isArray(parsed)) return [];
|
|
121
|
+
return parsed.filter((x): x is PersistedTab => this.isValidPersistedTab(x));
|
|
122
|
+
} catch {
|
|
123
|
+
return []; // bozuk JSON → yok say, uygulama normal açılır
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
private isValidPersistedTab(x: unknown): x is PersistedTab {
|
|
128
|
+
if (!x || typeof x !== 'object') return false;
|
|
129
|
+
const t = x as Record<string, unknown>;
|
|
130
|
+
return (
|
|
131
|
+
typeof t['tabId'] === 'string' &&
|
|
132
|
+
t['tabId'].length > 0 &&
|
|
133
|
+
typeof t['navLink'] === 'string' &&
|
|
134
|
+
t['navLink'].length > 0 &&
|
|
135
|
+
typeof t['navName'] === 'string'
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
}
|
package/ui/button/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from '@angular/core';
|
|
2
2
|
import { PrimeIcon } from 'aril/ui/lib';
|
|
3
|
+
import { ActivityService } from 'aril/util/activity';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
type Size = 'sm' | 'md' | 'lg';
|
|
5
6
|
type Colors = 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'help' | 'danger';
|
|
@@ -18,6 +19,7 @@ export declare class ButtonComponent {
|
|
|
18
19
|
iconPos: import("@angular/core").InputSignal<ButtonIconPosition, ButtonIconPosition>;
|
|
19
20
|
color: import("@angular/core").InputSignal<Colors, Colors>;
|
|
20
21
|
clickEvent: EventEmitter<Event>;
|
|
22
|
+
protected readonly activity: ActivityService;
|
|
21
23
|
_icon: import("@angular/core").Signal<string>;
|
|
22
24
|
_color: import("@angular/core").Signal<string>;
|
|
23
25
|
_styleClass: import("@angular/core").Signal<string>;
|
package/ui/charts/index.d.ts
CHANGED
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
export * from './src/amCharts/pie/pie-chart.component';
|
|
2
|
-
export * from './src/amCharts/column/column-chart.component';
|
|
3
|
-
export * from './src/amCharts/line/line-chart.component';
|
|
4
|
-
export * from './src/highCharts/pie/pie-chart.component';
|
|
5
|
-
export * from './src/highCharts/bar/bar-chart.component';
|
|
6
|
-
export * from './src/highCharts/column/column-chart.component';
|
|
7
|
-
export * from './src/highCharts/area/area-chart.component';
|
|
8
1
|
export * from './src/highCharts/line/line-chart-datetime-axis.component';
|
|
9
|
-
export * from './src/highCharts/line/line-chart-series.component';
|
|
10
|
-
export * as HighChartLine from './src/highCharts/line/line-chart.component';
|
|
11
2
|
export * from './src/highCharts/gauge/solid-gauge.component';
|
|
12
|
-
export * from './src/highCharts/heatmap/heatMap-chart.component';
|
package/ui/lib/index.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
export * from './src/form/form-error-message.directive';
|
|
2
2
|
export * from './src/form/form-validation';
|
|
3
|
-
export * from './src/form/form-field-builder';
|
|
4
3
|
export * from './src/grid/flex-grid.directive';
|
|
5
4
|
export * from './src/grid/enum-color-picker.pipe';
|
|
6
5
|
export * from './src/input/baseInput';
|
|
7
|
-
export * from './src/input/common-input-validators.service';
|
|
8
6
|
export * from './src/input/dx-input-error-message.pipe';
|
|
9
|
-
export * from './src/input/input-disabled.directive';
|
|
10
7
|
export * from './src/input/input-error-message.pipe';
|
|
11
8
|
export * from './src/input/input-transforms';
|
|
12
9
|
export * from './src/input/value-accessor.directive';
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { ComponentRef, OnInit, ViewContainerRef } from '@angular/core';
|
|
1
|
+
import { ComponentRef, DestroyRef, OnInit, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { FormGroup } from '@angular/forms';
|
|
3
3
|
import { FormErrorMessagesComponent } from './form-error-message.component';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class FormErrorMessageDirective implements OnInit {
|
|
6
|
-
private viewContainerRef;
|
|
7
|
-
|
|
6
|
+
private readonly viewContainerRef;
|
|
7
|
+
private readonly destroyRef;
|
|
8
|
+
constructor(viewContainerRef: ViewContainerRef, destroyRef: DestroyRef);
|
|
8
9
|
formErrorMessage: import("@angular/core").InputSignal<FormGroup<any>, FormGroup<any>>;
|
|
9
10
|
errorKeys: string[];
|
|
10
11
|
componentRef: ComponentRef<FormErrorMessagesComponent>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
1
|
import { TranslocoService } from '@ngneat/transloco';
|
|
2
|
+
import { SelectionGroupService } from 'aril/selection';
|
|
3
3
|
import { BaseInputComponent } from 'aril/ui/lib';
|
|
4
4
|
import { SelectBoxItem } from './interfaces';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
import * as i1 from "aril/ui/lib";
|
|
7
7
|
export declare class MultiSelectComponent extends BaseInputComponent {
|
|
8
|
-
private
|
|
8
|
+
private readonly selectionGroupService;
|
|
9
9
|
translocoService: TranslocoService;
|
|
10
10
|
options: import("@angular/core").InputSignal<[], []>;
|
|
11
11
|
optionLabel: import("@angular/core").InputSignal<string, string>;
|
|
@@ -19,10 +19,9 @@ export declare class MultiSelectComponent extends BaseInputComponent {
|
|
|
19
19
|
tooltipPosition: import("@angular/core").InputSignal<any, any>;
|
|
20
20
|
groupName: import("@angular/core").InputSignal<string, string>;
|
|
21
21
|
parentSelectionKey: import("@angular/core").InputSignal<null, null>;
|
|
22
|
-
selectionItems: import("@angular/core").WritableSignal<SelectBoxItem[] | null>;
|
|
23
22
|
showClear: import("@angular/core").InputSignal<boolean, boolean>;
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
selectionItems: import("@angular/core").Signal<SelectBoxItem[] | null>;
|
|
24
|
+
constructor(selectionGroupService: SelectionGroupService, translocoService: TranslocoService);
|
|
26
25
|
static ɵfac: i0.ɵɵFactoryDeclaration<MultiSelectComponent, never>;
|
|
27
26
|
static ɵcmp: i0.ɵɵComponentDeclaration<MultiSelectComponent, "aril-multi-select[ngModel], aril-multi-select[formControl], aril-multi-select[formControlName]", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "defaultLabel": { "alias": "defaultLabel"; "required": false; "isSignal": true; }; "selectedItemsLabel": { "alias": "selectedItemsLabel"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "groupName": { "alias": "groupName"; "required": false; "isSignal": true; }; "parentSelectionKey": { "alias": "parentSelectionKey"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.ValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
28
27
|
}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
|
2
1
|
import { EventEmitter } from '@angular/core';
|
|
3
2
|
import { TranslocoService } from '@ngneat/transloco';
|
|
4
3
|
import { BaseInputComponent } from 'aril/ui/lib';
|
|
@@ -6,25 +5,21 @@ import { SelectBoxItem } from './interfaces';
|
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
import * as i1 from "aril/ui/lib";
|
|
8
7
|
export declare class SelectBoxComponent extends BaseInputComponent {
|
|
9
|
-
private http;
|
|
10
8
|
translocoService: TranslocoService;
|
|
11
9
|
itemKey: import("@angular/core").InputSignal<string, string>;
|
|
12
10
|
itemText: import("@angular/core").InputSignal<string, string>;
|
|
13
|
-
groupName: import("@angular/core").InputSignal<string, string>;
|
|
14
11
|
parentSelectionKey: import("@angular/core").InputSignal<null, null>;
|
|
15
12
|
tabindex: import("@angular/core").InputSignal<number, number>;
|
|
16
13
|
items: import("@angular/core").InputSignal<SelectBoxItem[], SelectBoxItem[]>;
|
|
17
14
|
selectedItemText: string;
|
|
18
|
-
selectionItems: import("@angular/core").WritableSignal<SelectBoxItem[] | null>;
|
|
19
15
|
/** * @description when grouped = true, option item structure { key:string, items:[] } */
|
|
20
16
|
grouped: import("@angular/core").InputSignal<boolean, boolean>;
|
|
21
17
|
showClearButton: import("@angular/core").InputSignal<boolean, boolean>;
|
|
22
18
|
placeholder: import("@angular/core").InputSignal<string, string>;
|
|
23
19
|
searchExpr: import("@angular/core").InputSignal<string | string[], string | string[]>;
|
|
24
20
|
onSelectionChanged: EventEmitter<SelectBoxItem>;
|
|
25
|
-
constructor(
|
|
21
|
+
constructor(translocoService: TranslocoService);
|
|
26
22
|
setTitle(event?: any): void;
|
|
27
|
-
getSelectionItems(): Promise<void>;
|
|
28
23
|
static ɵfac: i0.ɵɵFactoryDeclaration<SelectBoxComponent, never>;
|
|
29
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SelectBoxComponent, "aril-select-box[ngModel], aril-select-box[formControl], aril-select-box[formControlName]", never, { "itemKey": { "alias": "itemKey"; "required": false; "isSignal": true; }; "itemText": { "alias": "itemText"; "required": false; "isSignal": true; }; "
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SelectBoxComponent, "aril-select-box[ngModel], aril-select-box[formControl], aril-select-box[formControlName]", never, { "itemKey": { "alias": "itemKey"; "required": false; "isSignal": true; }; "itemText": { "alias": "itemText"; "required": false; "isSignal": true; }; "parentSelectionKey": { "alias": "parentSelectionKey"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "grouped": { "alias": "grouped"; "required": false; "isSignal": true; }; "showClearButton": { "alias": "showClearButton"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchExpr": { "alias": "searchExpr"; "required": false; "isSignal": true; }; }, { "onSelectionChanged": "onSelectionChanged"; }, never, never, true, [{ directive: typeof i1.ValueAccessorDirective; inputs: {}; outputs: {}; }]>;
|
|
30
25
|
}
|
|
@@ -65,7 +65,7 @@ export declare class TableComponent {
|
|
|
65
65
|
globalSearchValue?: string;
|
|
66
66
|
isAllSelected: boolean;
|
|
67
67
|
selectedRows: any;
|
|
68
|
-
pageOptions:
|
|
68
|
+
pageOptions: number[];
|
|
69
69
|
exportColumns: Array<{
|
|
70
70
|
title: string;
|
|
71
71
|
dataKey: string;
|
|
@@ -76,10 +76,11 @@ export declare class TableComponent {
|
|
|
76
76
|
private requestedEnumKeys;
|
|
77
77
|
ColumnFilterTypeEnum: typeof ColumnFilterTypeEnum;
|
|
78
78
|
sidebarVisible: boolean;
|
|
79
|
+
currentPageReportText: string;
|
|
79
80
|
constructor(translocoService: TranslocoService, selectionGroupService: SelectionGroupService);
|
|
80
81
|
private isInitialLoad;
|
|
81
82
|
ngOnChanges(changes: SimpleChanges): void;
|
|
82
|
-
|
|
83
|
+
private buildCurrentPageReportText;
|
|
83
84
|
toggleExport: (event: Event) => void;
|
|
84
85
|
handleLazyLoadEvent(event: any): void;
|
|
85
86
|
filterGlobal(e: any): void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ActivityEventType } from './activity.types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ActivityService {
|
|
4
|
+
private readonly keycloak;
|
|
5
|
+
private readonly router;
|
|
6
|
+
private readonly location;
|
|
7
|
+
private sessionId;
|
|
8
|
+
private username;
|
|
9
|
+
private previousPath;
|
|
10
|
+
private started;
|
|
11
|
+
getSessionId(): string | null;
|
|
12
|
+
start(options?: {
|
|
13
|
+
shellMode?: boolean;
|
|
14
|
+
}): void;
|
|
15
|
+
track(event: string, properties?: Record<string, unknown>, type?: ActivityEventType): void;
|
|
16
|
+
private readSessionIdFromKeycloak;
|
|
17
|
+
private captureSessionContext;
|
|
18
|
+
private subscribeKeycloakRefresh;
|
|
19
|
+
private subscribeLifecycleEvents;
|
|
20
|
+
private subscribeRouterEvents;
|
|
21
|
+
private maybeEmitPageView;
|
|
22
|
+
private handleSessionStart;
|
|
23
|
+
private purgeStaleSessionMarkers;
|
|
24
|
+
private sendSessionEnd;
|
|
25
|
+
private toAbsoluteUrl;
|
|
26
|
+
/**
|
|
27
|
+
* MFE shared scope'unda `Router` ve `Location` null (her ikisi de child injector'da yaşıyor).
|
|
28
|
+
* Bu durumda Angular soyutlamalarına dayanamayız; `window.location.hash`'ten okuruz —
|
|
29
|
+
* browser'ın sahip olduğu güncel URL.
|
|
30
|
+
*/
|
|
31
|
+
private readCurrentPath;
|
|
32
|
+
private send;
|
|
33
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ActivityService, never>;
|
|
34
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ActivityService>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type ActivityEventType = 'SESSION_START' | 'SESSION_END' | 'PAGE_VIEW' | 'BUTTON_CLICK' | 'CUSTOM';
|
|
2
|
+
export interface ActivityEvent {
|
|
3
|
+
type: ActivityEventType;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
username: string;
|
|
6
|
+
event: string;
|
|
7
|
+
page: string;
|
|
8
|
+
ip: string;
|
|
9
|
+
referrer: string;
|
|
10
|
+
traceId: string;
|
|
11
|
+
clientTimestamp?: number;
|
|
12
|
+
properties: Record<string, unknown>;
|
|
13
|
+
}
|