@ng-vagabond-lab/ng-dsv 0.2.61 → 0.2.63

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.
Files changed (149) hide show
  1. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs +161 -156
  2. package/fesm2022/ng-vagabond-lab-ng-dsv-api.mjs.map +1 -1
  3. package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs +193 -152
  4. package/fesm2022/ng-vagabond-lab-ng-dsv-base-service.mjs.map +1 -1
  5. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs +318 -200
  6. package/fesm2022/ng-vagabond-lab-ng-dsv-base.mjs.map +1 -1
  7. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs +58 -51
  8. package/fesm2022/ng-vagabond-lab-ng-dsv-date.mjs.map +1 -1
  9. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs +116 -45
  10. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-accordion.mjs.map +1 -1
  11. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs +94 -47
  12. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-avatar.mjs.map +1 -1
  13. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs +310 -109
  14. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-button.mjs.map +1 -1
  15. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs +209 -54
  16. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-card.mjs.map +1 -1
  17. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs +104 -40
  18. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-chip.mjs.map +1 -1
  19. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs +183 -62
  20. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-color.mjs.map +1 -1
  21. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs +68 -29
  22. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-container.mjs.map +1 -1
  23. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs +434 -147
  24. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-file.mjs.map +1 -1
  25. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs +1032 -196
  26. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-reactive.mjs.map +1 -1
  27. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs +1016 -266
  28. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-form-signal.mjs.map +1 -1
  29. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs +120 -32
  30. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-header.mjs.map +1 -1
  31. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs +138 -40
  32. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-img.mjs.map +1 -1
  33. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs +158 -48
  34. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-item.mjs.map +1 -1
  35. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs +90 -23
  36. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-linear-progress.mjs.map +1 -1
  37. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs +80 -50
  38. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-link-pipe.mjs.map +1 -1
  39. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs +292 -161
  40. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-list.mjs.map +1 -1
  41. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-markdown.mjs +104 -34
  42. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-markdown.mjs.map +1 -1
  43. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs +302 -141
  44. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-menu.mjs.map +1 -1
  45. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs +511 -136
  46. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-modal.mjs.map +1 -1
  47. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs +101 -26
  48. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-paginate.mjs.map +1 -1
  49. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs +395 -192
  50. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-scroll.mjs.map +1 -1
  51. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs +39 -17
  52. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-skeleton.mjs.map +1 -1
  53. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs +245 -80
  54. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tab.mjs.map +1 -1
  55. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs +181 -88
  56. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-table.mjs.map +1 -1
  57. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs +145 -68
  58. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-theme.mjs.map +1 -1
  59. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs +162 -101
  60. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-toast.mjs.map +1 -1
  61. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs +130 -76
  62. package/fesm2022/ng-vagabond-lab-ng-dsv-ds-tooltip.mjs.map +1 -1
  63. package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs +56 -46
  64. package/fesm2022/ng-vagabond-lab-ng-dsv-environment.mjs.map +1 -1
  65. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs +73 -69
  66. package/fesm2022/ng-vagabond-lab-ng-dsv-i18n.mjs.map +1 -1
  67. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs +857 -411
  68. package/fesm2022/ng-vagabond-lab-ng-dsv-module-admin.mjs.map +1 -1
  69. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs +298 -233
  70. package/fesm2022/ng-vagabond-lab-ng-dsv-module-auth.mjs.map +1 -1
  71. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs +109 -24
  72. package/fesm2022/ng-vagabond-lab-ng-dsv-module-contact.mjs.map +1 -1
  73. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-form.container-CIOlZpZl.mjs +168 -0
  74. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-form.container-CIOlZpZl.mjs.map +1 -0
  75. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.container-B_dudCv6.mjs +137 -0
  76. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.container-B_dudCv6.mjs.map +1 -0
  77. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.service-DGCx3RVt.mjs +48 -0
  78. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.service-DGCx3RVt.mjs.map +1 -0
  79. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news.container-BoB6VYne.mjs +306 -0
  80. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news.container-BoB6VYne.mjs.map +1 -0
  81. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news.mjs +141 -54
  82. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news.mjs.map +1 -1
  83. package/fesm2022/ng-vagabond-lab-ng-dsv-module-notification.mjs +492 -182
  84. package/fesm2022/ng-vagabond-lab-ng-dsv-module-notification.mjs.map +1 -1
  85. package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs +116 -81
  86. package/fesm2022/ng-vagabond-lab-ng-dsv-platform.mjs.map +1 -1
  87. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs +188 -117
  88. package/fesm2022/ng-vagabond-lab-ng-dsv-router.mjs.map +1 -1
  89. package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs +122 -123
  90. package/fesm2022/ng-vagabond-lab-ng-dsv-storage.mjs.map +1 -1
  91. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs +613 -127
  92. package/fesm2022/ng-vagabond-lab-ng-dsv-template.mjs.map +1 -1
  93. package/fesm2022/ng-vagabond-lab-ng-dsv-type.mjs +33 -27
  94. package/fesm2022/ng-vagabond-lab-ng-dsv-type.mjs.map +1 -1
  95. package/fesm2022/ng-vagabond-lab-ng-dsv.mjs +33 -27
  96. package/fesm2022/ng-vagabond-lab-ng-dsv.mjs.map +1 -1
  97. package/package.json +1 -1
  98. package/types/ng-vagabond-lab-ng-dsv-api.d.ts +94 -101
  99. package/types/ng-vagabond-lab-ng-dsv-base-service.d.ts +44 -51
  100. package/types/ng-vagabond-lab-ng-dsv-base.d.ts +90 -105
  101. package/types/ng-vagabond-lab-ng-dsv-date.d.ts +9 -13
  102. package/types/ng-vagabond-lab-ng-dsv-ds-accordion.d.ts +29 -16
  103. package/types/ng-vagabond-lab-ng-dsv-ds-avatar.d.ts +22 -17
  104. package/types/ng-vagabond-lab-ng-dsv-ds-button.d.ts +60 -20
  105. package/types/ng-vagabond-lab-ng-dsv-ds-card.d.ts +34 -23
  106. package/types/ng-vagabond-lab-ng-dsv-ds-chip.d.ts +19 -14
  107. package/types/ng-vagabond-lab-ng-dsv-ds-color.d.ts +55 -27
  108. package/types/ng-vagabond-lab-ng-dsv-ds-container.d.ts +13 -10
  109. package/types/ng-vagabond-lab-ng-dsv-ds-file.d.ts +102 -48
  110. package/types/ng-vagabond-lab-ng-dsv-ds-form-reactive.d.ts +170 -68
  111. package/types/ng-vagabond-lab-ng-dsv-ds-form-signal.d.ts +219 -102
  112. package/types/ng-vagabond-lab-ng-dsv-ds-header.d.ts +28 -15
  113. package/types/ng-vagabond-lab-ng-dsv-ds-img.d.ts +41 -18
  114. package/types/ng-vagabond-lab-ng-dsv-ds-item.d.ts +44 -19
  115. package/types/ng-vagabond-lab-ng-dsv-ds-linear-progress.d.ts +24 -11
  116. package/types/ng-vagabond-lab-ng-dsv-ds-link-pipe.d.ts +14 -18
  117. package/types/ng-vagabond-lab-ng-dsv-ds-list.d.ts +52 -46
  118. package/types/ng-vagabond-lab-ng-dsv-ds-markdown.d.ts +15 -12
  119. package/types/ng-vagabond-lab-ng-dsv-ds-menu.d.ts +64 -51
  120. package/types/ng-vagabond-lab-ng-dsv-ds-modal.d.ts +128 -57
  121. package/types/ng-vagabond-lab-ng-dsv-ds-paginate.d.ts +22 -12
  122. package/types/ng-vagabond-lab-ng-dsv-ds-scroll.d.ts +75 -57
  123. package/types/ng-vagabond-lab-ng-dsv-ds-skeleton.d.ts +5 -8
  124. package/types/ng-vagabond-lab-ng-dsv-ds-tab.d.ts +53 -33
  125. package/types/ng-vagabond-lab-ng-dsv-ds-table.d.ts +45 -30
  126. package/types/ng-vagabond-lab-ng-dsv-ds-theme.d.ts +25 -31
  127. package/types/ng-vagabond-lab-ng-dsv-ds-toast.d.ts +44 -39
  128. package/types/ng-vagabond-lab-ng-dsv-ds-tooltip.d.ts +37 -32
  129. package/types/ng-vagabond-lab-ng-dsv-environment.d.ts +22 -27
  130. package/types/ng-vagabond-lab-ng-dsv-i18n.d.ts +25 -28
  131. package/types/ng-vagabond-lab-ng-dsv-module-admin.d.ts +164 -148
  132. package/types/ng-vagabond-lab-ng-dsv-module-auth.d.ts +59 -66
  133. package/types/ng-vagabond-lab-ng-dsv-module-contact.d.ts +12 -9
  134. package/types/ng-vagabond-lab-ng-dsv-module-news.d.ts +25 -25
  135. package/types/ng-vagabond-lab-ng-dsv-module-notification.d.ts +75 -73
  136. package/types/ng-vagabond-lab-ng-dsv-platform.d.ts +26 -27
  137. package/types/ng-vagabond-lab-ng-dsv-router.d.ts +44 -39
  138. package/types/ng-vagabond-lab-ng-dsv-storage.d.ts +31 -37
  139. package/types/ng-vagabond-lab-ng-dsv-template.d.ts +91 -55
  140. package/types/ng-vagabond-lab-ng-dsv-type.d.ts +23 -27
  141. package/types/ng-vagabond-lab-ng-dsv.d.ts +23 -27
  142. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-form.container-kXmxZfBB.mjs +0 -64
  143. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-form.container-kXmxZfBB.mjs.map +0 -1
  144. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.container-BLxxUo6e.mjs +0 -38
  145. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.container-BLxxUo6e.mjs.map +0 -1
  146. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.service-Bf6hMWCh.mjs +0 -38
  147. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news-list.service-Bf6hMWCh.mjs.map +0 -1
  148. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news.container-B24oxywT.mjs +0 -114
  149. package/fesm2022/ng-vagabond-lab-ng-dsv-module-news-news.container-B24oxywT.mjs.map +0 -1
@@ -1,153 +1,194 @@
1
- import * as i0 from '@angular/core';
2
- import { inject, TransferState, signal, Directive, makeStateKey } from '@angular/core';
3
- import { ApiService } from '@ng-vagabond-lab/ng-dsv/api';
4
- import { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';
5
- import { I18nService } from '@ng-vagabond-lab/ng-dsv/i18n';
6
- import { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';
7
- import { removeDuplicate } from '@ng-vagabond-lab/ng-dsv/storage';
8
-
9
- class BaseService {
10
- toastService = inject(ToastService);
11
- transferState = inject(TransferState);
12
- platformService = inject(PlatformService);
13
- i18nService = inject(I18nService);
14
- translateService = this.i18nService.translateService;
15
- loaded = signal(true, /* @ts-ignore */
16
- ...(ngDevMode ? [{ debugName: "loaded" }] : /* istanbul ignore next */ []));
17
- isPlatformBrowser() {
18
- return this.platformService.isPlatformBrowser();
19
- }
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: BaseService, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: BaseService, isStandalone: true, ngImport: i0 });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: BaseService, decorators: [{
24
- type: Directive
25
- }] });
26
-
27
- class BaseApiService extends BaseService {
28
- apiService = inject(ApiService);
29
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: BaseApiService, deps: null, target: i0.ɵɵFactoryTarget.Directive });
30
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: BaseApiService, isStandalone: true, usesInheritance: true, ngImport: i0 });
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: BaseApiService, decorators: [{
33
- type: Directive
34
- }] });
35
-
36
- class BaseFetchService extends BaseApiService {
37
- ssr = signal(true, /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "ssr" }] : /* istanbul ignore next */ []));
39
- getStateKey(url) {
40
- return makeStateKey(url);
41
- }
42
- getDataFromState(url) {
43
- const key = this.getStateKey(url);
44
- let data = null;
45
- if (this.transferState.hasKey(key)) {
46
- data = this.transferState.get(key, null);
47
- this.transferState.remove(key);
48
- this.apiService.info('load state', data);
49
- }
50
- return data;
51
- }
52
- setDataToState(url, data) {
53
- if (!this.isPlatformBrowser()) {
54
- const key = this.getStateKey(url);
55
- this.transferState.set(key, data);
56
- }
57
- }
58
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: BaseFetchService, deps: null, target: i0.ɵɵFactoryTarget.Directive });
59
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: BaseFetchService, isStandalone: true, usesInheritance: true, ngImport: i0 });
60
- }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: BaseFetchService, decorators: [{
62
- type: Directive
63
- }] });
64
-
65
- class BaseSearchService extends BaseFetchService {
66
- datas = signal([], /* @ts-ignore */
67
- ...(ngDevMode ? [{ debugName: "datas" }] : /* istanbul ignore next */ []));
68
- total = signal(undefined, /* @ts-ignore */
69
- ...(ngDevMode ? [{ debugName: "total" }] : /* istanbul ignore next */ []));
70
- page = signal(1, /* @ts-ignore */
71
- ...(ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []));
72
- search = signal('', /* @ts-ignore */
73
- ...(ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []));
74
- lastSearch = signal('', /* @ts-ignore */
75
- ...(ngDevMode ? [{ debugName: "lastSearch" }] : /* istanbul ignore next */ []));
76
- lasturl = signal('', /* @ts-ignore */
77
- ...(ngDevMode ? [{ debugName: "lasturl" }] : /* istanbul ignore next */ []));
78
- isLoading = signal(false, /* @ts-ignore */
79
- ...(ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []));
80
- stopFetch = signal(false, /* @ts-ignore */
81
- ...(ngDevMode ? [{ debugName: "stopFetch" }] : /* istanbul ignore next */ []));
82
- getUrl() {
83
- let url = this.getEndPoint();
84
- const params = this.getParams();
85
- url += '?page=' + this.page() + params + '&search=';
86
- return url;
87
- }
88
- getParams() {
89
- return '';
90
- }
91
- fetchByPage(search, page, force = false) {
92
- this.search.set(search);
93
- if (search !== this.lastSearch()) {
94
- this.lastSearch.set(search);
95
- page = 1;
96
- }
97
- if (page === 1) {
98
- this.stopFetch.set(false);
99
- }
100
- if (this.stopFetch()) {
101
- return;
102
- }
103
- this.page.set(page);
104
- const url = this.getUrl() + search;
105
- if (this.lasturl() === url && !force) {
106
- return;
107
- }
108
- this.lasturl.set(url);
109
- const data = this.getDataFromState(url);
110
- if (data) {
111
- this.total.set(data.totalElements);
112
- this.updateData(page, data.content);
113
- this.isLoading.set(false);
114
- return;
115
- }
116
- this.isLoading.set(true);
117
- this.apiService.get(url, (data) => {
118
- this.page.set(page + 1);
119
- this.total.set(data.totalElements);
120
- this.setDataToState(url, data);
121
- this.isLoading.set(false);
122
- this.updateData(page, data.content);
123
- }, () => {
124
- this.isLoading.set(false);
125
- this.stopFetch.set(true);
126
- });
127
- }
128
- updateData(page, datas) {
129
- if (page === 1) {
130
- this.datas.set([]);
131
- }
132
- this.datas.update((current) => removeDuplicate([...current, ...datas]));
133
- if (datas?.length === 0) {
134
- this.stopFetch.set(true);
135
- }
136
- this.afterFetch(datas);
137
- }
138
- afterFetch(_) {
139
- return;
140
- }
141
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: BaseSearchService, deps: null, target: i0.ɵɵFactoryTarget.Directive });
142
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.6", type: BaseSearchService, isStandalone: true, usesInheritance: true, ngImport: i0 });
143
- }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: BaseSearchService, decorators: [{
145
- type: Directive
146
- }] });
147
-
148
- /**
149
- * Generated bundle index. Do not edit.
150
- */
151
-
1
+ import * as i0 from "@angular/core";
2
+ import { Directive, TransferState, inject, makeStateKey, signal } from "@angular/core";
3
+ import { ApiService } from "@ng-vagabond-lab/ng-dsv/api";
4
+ import { ToastService } from "@ng-vagabond-lab/ng-dsv/ds/toast";
5
+ import { I18nService } from "@ng-vagabond-lab/ng-dsv/i18n";
6
+ import { PlatformService } from "@ng-vagabond-lab/ng-dsv/platform";
7
+ import { removeDuplicate } from "@ng-vagabond-lab/ng-dsv/storage";
8
+ var BaseService = class BaseService {
9
+ toastService = inject(ToastService);
10
+ transferState = inject(TransferState);
11
+ platformService = inject(PlatformService);
12
+ i18nService = inject(I18nService);
13
+ translateService = this.i18nService.translateService;
14
+ loaded = signal(true, ...ngDevMode ? [{ debugName: "loaded" }] : /* istanbul ignore next */ []);
15
+ isPlatformBrowser() {
16
+ return this.platformService.isPlatformBrowser();
17
+ }
18
+ static ɵfac = i0.ɵɵngDeclareFactory({
19
+ minVersion: "12.0.0",
20
+ version: "22.2.1",
21
+ ngImport: i0,
22
+ type: BaseService,
23
+ deps: [],
24
+ target: i0.ɵɵFactoryTarget.Directive
25
+ });
26
+ static ɵdir = i0.ɵɵngDeclareDirective({
27
+ minVersion: "14.0.0",
28
+ version: "22.2.1",
29
+ type: BaseService,
30
+ isStandalone: true,
31
+ ngImport: i0
32
+ });
33
+ };
34
+ i0.ɵɵngDeclareClassMetadata({
35
+ minVersion: "12.0.0",
36
+ version: "22.2.1",
37
+ ngImport: i0,
38
+ type: BaseService,
39
+ decorators: [{ type: Directive }]
40
+ });
41
+ var BaseApiService = class BaseApiService extends BaseService {
42
+ apiService = inject(ApiService);
43
+ static ɵfac = i0.ɵɵngDeclareFactory({
44
+ minVersion: "12.0.0",
45
+ version: "22.2.1",
46
+ ngImport: i0,
47
+ type: BaseApiService,
48
+ deps: null,
49
+ target: i0.ɵɵFactoryTarget.Directive
50
+ });
51
+ static ɵdir = i0.ɵɵngDeclareDirective({
52
+ minVersion: "14.0.0",
53
+ version: "22.2.1",
54
+ type: BaseApiService,
55
+ isStandalone: true,
56
+ usesInheritance: true,
57
+ ngImport: i0
58
+ });
59
+ };
60
+ i0.ɵɵngDeclareClassMetadata({
61
+ minVersion: "12.0.0",
62
+ version: "22.2.1",
63
+ ngImport: i0,
64
+ type: BaseApiService,
65
+ decorators: [{ type: Directive }]
66
+ });
67
+ var BaseFetchService = class BaseFetchService extends BaseApiService {
68
+ ssr = signal(true, ...ngDevMode ? [{ debugName: "ssr" }] : /* istanbul ignore next */ []);
69
+ getStateKey(url) {
70
+ return makeStateKey(url);
71
+ }
72
+ getDataFromState(url) {
73
+ const key = this.getStateKey(url);
74
+ let data = null;
75
+ if (this.transferState.hasKey(key)) {
76
+ data = this.transferState.get(key, null);
77
+ this.transferState.remove(key);
78
+ this.apiService.info("load state", data);
79
+ }
80
+ return data;
81
+ }
82
+ setDataToState(url, data) {
83
+ if (!this.isPlatformBrowser()) {
84
+ const key = this.getStateKey(url);
85
+ this.transferState.set(key, data);
86
+ }
87
+ }
88
+ static ɵfac = i0.ɵɵngDeclareFactory({
89
+ minVersion: "12.0.0",
90
+ version: "22.2.1",
91
+ ngImport: i0,
92
+ type: BaseFetchService,
93
+ deps: null,
94
+ target: i0.ɵɵFactoryTarget.Directive
95
+ });
96
+ static ɵdir = i0.ɵɵngDeclareDirective({
97
+ minVersion: "14.0.0",
98
+ version: "22.2.1",
99
+ type: BaseFetchService,
100
+ isStandalone: true,
101
+ usesInheritance: true,
102
+ ngImport: i0
103
+ });
104
+ };
105
+ i0.ɵɵngDeclareClassMetadata({
106
+ minVersion: "12.0.0",
107
+ version: "22.2.1",
108
+ ngImport: i0,
109
+ type: BaseFetchService,
110
+ decorators: [{ type: Directive }]
111
+ });
112
+ var BaseSearchService = class BaseSearchService extends BaseFetchService {
113
+ datas = signal([], ...ngDevMode ? [{ debugName: "datas" }] : /* istanbul ignore next */ []);
114
+ total = signal(void 0, ...ngDevMode ? [{ debugName: "total" }] : /* istanbul ignore next */ []);
115
+ page = signal(1, ...ngDevMode ? [{ debugName: "page" }] : /* istanbul ignore next */ []);
116
+ search = signal("", ...ngDevMode ? [{ debugName: "search" }] : /* istanbul ignore next */ []);
117
+ lastSearch = signal("", ...ngDevMode ? [{ debugName: "lastSearch" }] : /* istanbul ignore next */ []);
118
+ lasturl = signal("", ...ngDevMode ? [{ debugName: "lasturl" }] : /* istanbul ignore next */ []);
119
+ isLoading = signal(false, ...ngDevMode ? [{ debugName: "isLoading" }] : /* istanbul ignore next */ []);
120
+ stopFetch = signal(false, ...ngDevMode ? [{ debugName: "stopFetch" }] : /* istanbul ignore next */ []);
121
+ getUrl() {
122
+ let url = this.getEndPoint();
123
+ const params = this.getParams();
124
+ url += "?page=" + this.page() + params + "&search=";
125
+ return url;
126
+ }
127
+ getParams() {
128
+ return "";
129
+ }
130
+ fetchByPage(search, page, force = false) {
131
+ this.search.set(search);
132
+ if (search !== this.lastSearch()) {
133
+ this.lastSearch.set(search);
134
+ page = 1;
135
+ }
136
+ if (page === 1) this.stopFetch.set(false);
137
+ if (this.stopFetch()) return;
138
+ this.page.set(page);
139
+ const url = this.getUrl() + search;
140
+ if (this.lasturl() === url && !force) return;
141
+ this.lasturl.set(url);
142
+ const data = this.getDataFromState(url);
143
+ if (data) {
144
+ this.total.set(data.totalElements);
145
+ this.updateData(page, data.content);
146
+ this.isLoading.set(false);
147
+ return;
148
+ }
149
+ this.isLoading.set(true);
150
+ this.apiService.get(url, (data) => {
151
+ this.page.set(page + 1);
152
+ this.total.set(data.totalElements);
153
+ this.setDataToState(url, data);
154
+ this.isLoading.set(false);
155
+ this.updateData(page, data.content);
156
+ }, () => {
157
+ this.isLoading.set(false);
158
+ this.stopFetch.set(true);
159
+ });
160
+ }
161
+ updateData(page, datas) {
162
+ if (page === 1) this.datas.set([]);
163
+ this.datas.update((current) => removeDuplicate([...current, ...datas]));
164
+ if (datas?.length === 0) this.stopFetch.set(true);
165
+ this.afterFetch(datas);
166
+ }
167
+ afterFetch(_) {}
168
+ static ɵfac = i0.ɵɵngDeclareFactory({
169
+ minVersion: "12.0.0",
170
+ version: "22.2.1",
171
+ ngImport: i0,
172
+ type: BaseSearchService,
173
+ deps: null,
174
+ target: i0.ɵɵFactoryTarget.Directive
175
+ });
176
+ static ɵdir = i0.ɵɵngDeclareDirective({
177
+ minVersion: "14.0.0",
178
+ version: "22.2.1",
179
+ type: BaseSearchService,
180
+ isStandalone: true,
181
+ usesInheritance: true,
182
+ ngImport: i0
183
+ });
184
+ };
185
+ i0.ɵɵngDeclareClassMetadata({
186
+ minVersion: "12.0.0",
187
+ version: "22.2.1",
188
+ ngImport: i0,
189
+ type: BaseSearchService,
190
+ decorators: [{ type: Directive }]
191
+ });
152
192
  export { BaseApiService, BaseFetchService, BaseSearchService };
153
- //# sourceMappingURL=ng-vagabond-lab-ng-dsv-base-service.mjs.map
193
+
194
+ //# sourceMappingURL=ng-vagabond-lab-ng-dsv-base-service.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-base-service.mjs","sources":["../../../projects/ng-dsv/base/service/base/base.service.ts","../../../projects/ng-dsv/base/service/base/base-api.service.ts","../../../projects/ng-dsv/base/service/fetch/base-fetch.service.ts","../../../projects/ng-dsv/base/service/search/base-search.service.ts","../../../projects/ng-dsv/base/service/ng-vagabond-lab-ng-dsv-base-service.ts"],"sourcesContent":["import { Directive, inject, signal, TransferState } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { I18nService } from '@ng-vagabond-lab/ng-dsv/i18n';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\n\n@Directive()\nexport abstract class BaseService {\n readonly toastService = inject(ToastService);\n readonly transferState = inject(TransferState);\n readonly platformService = inject(PlatformService);\n readonly i18nService = inject(I18nService);\n readonly translateService = this.i18nService.translateService;\n\n readonly loaded = signal<boolean>(true);\n\n isPlatformBrowser(): boolean {\n return this.platformService.isPlatformBrowser();\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { ApiService } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseService } from './base.service';\n\n@Directive()\nexport abstract class BaseApiService extends BaseService {\n readonly apiService = inject(ApiService);\n}\n","import { Directive, makeStateKey, signal, StateKey } from '@angular/core';\nimport { ApiDto, JSONObject, PageableDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseApiService } from '../base/base-api.service';\n\n@Directive()\nexport abstract class BaseFetchService<\n A extends ApiDto | ApiDto[] | PageableDto<ApiDto[]>,\n> extends BaseApiService {\n readonly ssr = signal<boolean>(true);\n\n getStateKey(url: string): StateKey<A> {\n return makeStateKey<A>(url);\n }\n\n getDataFromState(url: string): A | null {\n const key = this.getStateKey(url);\n let data = null;\n if (this.transferState.hasKey(key)) {\n data = this.transferState.get(key, null);\n this.transferState.remove(key);\n this.apiService.info('load state', data as JSONObject);\n }\n return data;\n }\n\n setDataToState(url: string, data: A | null): void {\n if (!this.isPlatformBrowser()) {\n const key = this.getStateKey(url);\n this.transferState.set(key, data);\n }\n }\n}\n","import { Directive, signal } from '@angular/core';\nimport { ApiDto, PageableDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { removeDuplicate } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { BaseFetchService } from '../fetch/base-fetch.service';\n\n@Directive()\nexport abstract class BaseSearchService<T extends ApiDto> extends BaseFetchService<PageableDto<T[]>> {\n readonly datas = signal<T[]>([]);\n readonly total = signal<number | undefined>(undefined);\n\n readonly page = signal<number>(1);\n readonly search = signal<string>('');\n readonly lastSearch = signal<string>('');\n readonly lasturl = signal<string>('');\n readonly isLoading = signal<boolean>(false);\n readonly stopFetch = signal<boolean>(false);\n\n getUrl(): string {\n let url = this.getEndPoint();\n const params = this.getParams();\n url += '?page=' + this.page() + params + '&search=';\n return url;\n }\n\n abstract getEndPoint(): string;\n\n getParams(): string {\n return '';\n }\n\n fetchByPage(search: string, page: number, force: boolean = false): void {\n this.search.set(search);\n if (search !== this.lastSearch()) {\n this.lastSearch.set(search);\n page = 1;\n }\n if (page === 1) {\n this.stopFetch.set(false);\n }\n if (this.stopFetch()) {\n return;\n }\n this.page.set(page);\n const url = this.getUrl() + search;\n\n if (this.lasturl() === url && !force) {\n return;\n }\n this.lasturl.set(url);\n\n const data = this.getDataFromState(url);\n if (data) {\n this.total.set(data.totalElements);\n this.updateData(page, data.content);\n this.isLoading.set(false);\n return;\n }\n this.isLoading.set(true);\n\n this.apiService.get<PageableDto<T[]>>(\n url,\n (data) => {\n this.page.set(page + 1);\n this.total.set(data.totalElements);\n this.setDataToState(url, data);\n this.isLoading.set(false);\n this.updateData(page, data.content);\n },\n () => {\n this.isLoading.set(false);\n this.stopFetch.set(true);\n },\n );\n }\n\n updateData(page: number, datas: T[]): void {\n if (page === 1) {\n this.datas.set([]);\n }\n this.datas.update((current) => removeDuplicate([...current, ...datas]));\n if (datas?.length === 0) {\n this.stopFetch.set(true);\n }\n this.afterFetch(datas);\n }\n\n afterFetch(_: T[]): void {\n return;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-base-service.mjs","names":[],"sources":["../../../projects/ng-dsv/base/service/base/base.service.ts","../../../projects/ng-dsv/base/service/base/base-api.service.ts","../../../projects/ng-dsv/base/service/fetch/base-fetch.service.ts","../../../projects/ng-dsv/base/service/search/base-search.service.ts"],"sourcesContent":["import { Directive, inject, signal, TransferState } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { I18nService } from '@ng-vagabond-lab/ng-dsv/i18n';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\n\n@Directive()\nexport abstract class BaseService {\n readonly toastService = inject(ToastService);\n readonly transferState = inject(TransferState);\n readonly platformService = inject(PlatformService);\n readonly i18nService = inject(I18nService);\n readonly translateService = this.i18nService.translateService;\n\n readonly loaded = signal<boolean>(true);\n\n isPlatformBrowser(): boolean {\n return this.platformService.isPlatformBrowser();\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { ApiService } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseService } from './base.service';\n\n@Directive()\nexport abstract class BaseApiService extends BaseService {\n readonly apiService = inject(ApiService);\n}\n","import { Directive, makeStateKey, signal, StateKey } from '@angular/core';\nimport { ApiDto, JSONObject, PageableDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { BaseApiService } from '../base/base-api.service';\n\n@Directive()\nexport abstract class BaseFetchService<\n A extends ApiDto | ApiDto[] | PageableDto<ApiDto[]>,\n> extends BaseApiService {\n readonly ssr = signal<boolean>(true);\n\n getStateKey(url: string): StateKey<A> {\n return makeStateKey<A>(url);\n }\n\n getDataFromState(url: string): A | null {\n const key = this.getStateKey(url);\n let data = null;\n if (this.transferState.hasKey(key)) {\n data = this.transferState.get(key, null);\n this.transferState.remove(key);\n this.apiService.info('load state', data as JSONObject);\n }\n return data;\n }\n\n setDataToState(url: string, data: A | null): void {\n if (!this.isPlatformBrowser()) {\n const key = this.getStateKey(url);\n this.transferState.set(key, data);\n }\n }\n}\n","import { Directive, signal } from '@angular/core';\nimport { ApiDto, PageableDto } from '@ng-vagabond-lab/ng-dsv/api';\nimport { removeDuplicate } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { BaseFetchService } from '../fetch/base-fetch.service';\n\n@Directive()\nexport abstract class BaseSearchService<T extends ApiDto> extends BaseFetchService<PageableDto<T[]>> {\n readonly datas = signal<T[]>([]);\n readonly total = signal<number | undefined>(undefined);\n\n readonly page = signal<number>(1);\n readonly search = signal<string>('');\n readonly lastSearch = signal<string>('');\n readonly lasturl = signal<string>('');\n readonly isLoading = signal<boolean>(false);\n readonly stopFetch = signal<boolean>(false);\n\n getUrl(): string {\n let url = this.getEndPoint();\n const params = this.getParams();\n url += '?page=' + this.page() + params + '&search=';\n return url;\n }\n\n abstract getEndPoint(): string;\n\n getParams(): string {\n return '';\n }\n\n fetchByPage(search: string, page: number, force: boolean = false): void {\n this.search.set(search);\n if (search !== this.lastSearch()) {\n this.lastSearch.set(search);\n page = 1;\n }\n if (page === 1) {\n this.stopFetch.set(false);\n }\n if (this.stopFetch()) {\n return;\n }\n this.page.set(page);\n const url = this.getUrl() + search;\n\n if (this.lasturl() === url && !force) {\n return;\n }\n this.lasturl.set(url);\n\n const data = this.getDataFromState(url);\n if (data) {\n this.total.set(data.totalElements);\n this.updateData(page, data.content);\n this.isLoading.set(false);\n return;\n }\n this.isLoading.set(true);\n\n this.apiService.get<PageableDto<T[]>>(\n url,\n (data) => {\n this.page.set(page + 1);\n this.total.set(data.totalElements);\n this.setDataToState(url, data);\n this.isLoading.set(false);\n this.updateData(page, data.content);\n },\n () => {\n this.isLoading.set(false);\n this.stopFetch.set(true);\n },\n );\n }\n\n updateData(page: number, datas: T[]): void {\n if (page === 1) {\n this.datas.set([]);\n }\n this.datas.update((current) => removeDuplicate([...current, ...datas]));\n if (datas?.length === 0) {\n this.stopFetch.set(true);\n }\n this.afterFetch(datas);\n }\n\n afterFetch(_: T[]): void {\n return;\n }\n}\n"],"mappings":"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"}