@smartsoft001/crud-shell-react 0.0.0-stage → 2.193.0

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 (195) hide show
  1. package/README.md +12 -3
  2. package/package.json +29 -4
  3. package/src/index.d.ts +19 -0
  4. package/src/index.js +23 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/components/export/export.d.ts +7 -0
  7. package/src/lib/components/export/export.js +15 -0
  8. package/src/lib/components/export/export.js.map +1 -0
  9. package/src/lib/components/export/export.types.d.ts +8 -0
  10. package/src/lib/components/export/export.types.js +3 -0
  11. package/src/lib/components/export/export.types.js.map +1 -0
  12. package/src/lib/components/export/index.d.ts +3 -0
  13. package/src/lib/components/export/index.js +7 -0
  14. package/src/lib/components/export/index.js.map +1 -0
  15. package/src/lib/components/export/use-crud-export.d.ts +16 -0
  16. package/src/lib/components/export/use-crud-export.js +74 -0
  17. package/src/lib/components/export/use-crud-export.js.map +1 -0
  18. package/src/lib/components/filter/base/use-crud-filter.d.ts +68 -0
  19. package/src/lib/components/filter/base/use-crud-filter.js +248 -0
  20. package/src/lib/components/filter/base/use-crud-filter.js.map +1 -0
  21. package/src/lib/components/filter/check/filter-check.d.ts +7 -0
  22. package/src/lib/components/filter/check/filter-check.js +45 -0
  23. package/src/lib/components/filter/check/filter-check.js.map +1 -0
  24. package/src/lib/components/filter/date/filter-date.d.ts +7 -0
  25. package/src/lib/components/filter/date/filter-date.js +19 -0
  26. package/src/lib/components/filter/date/filter-date.js.map +1 -0
  27. package/src/lib/components/filter/date/use-crud-filter-date.d.ts +23 -0
  28. package/src/lib/components/filter/date/use-crud-filter-date.js +41 -0
  29. package/src/lib/components/filter/date/use-crud-filter-date.js.map +1 -0
  30. package/src/lib/components/filter/date/use-crud-filter-ng-model.d.ts +6 -0
  31. package/src/lib/components/filter/date/use-crud-filter-ng-model.js +25 -0
  32. package/src/lib/components/filter/date/use-crud-filter-ng-model.js.map +1 -0
  33. package/src/lib/components/filter/date-time/filter-date-time.d.ts +8 -0
  34. package/src/lib/components/filter/date-time/filter-date-time.js +27 -0
  35. package/src/lib/components/filter/date-time/filter-date-time.js.map +1 -0
  36. package/src/lib/components/filter/date-with-edit/filter-date-with-edit.d.ts +9 -0
  37. package/src/lib/components/filter/date-with-edit/filter-date-with-edit.js +42 -0
  38. package/src/lib/components/filter/date-with-edit/filter-date-with-edit.js.map +1 -0
  39. package/src/lib/components/filter/filter.d.ts +8 -0
  40. package/src/lib/components/filter/filter.js +43 -0
  41. package/src/lib/components/filter/filter.js.map +1 -0
  42. package/src/lib/components/filter/filter.types.d.ts +17 -0
  43. package/src/lib/components/filter/filter.types.js +3 -0
  44. package/src/lib/components/filter/filter.types.js.map +1 -0
  45. package/src/lib/components/filter/flag/filter-flag.d.ts +7 -0
  46. package/src/lib/components/filter/flag/filter-flag.js +20 -0
  47. package/src/lib/components/filter/flag/filter-flag.js.map +1 -0
  48. package/src/lib/components/filter/index.d.ts +13 -0
  49. package/src/lib/components/filter/index.js +17 -0
  50. package/src/lib/components/filter/index.js.map +1 -0
  51. package/src/lib/components/filter/int/filter-int.d.ts +12 -0
  52. package/src/lib/components/filter/int/filter-int.js +47 -0
  53. package/src/lib/components/filter/int/filter-int.js.map +1 -0
  54. package/src/lib/components/filter/radio/filter-radio.d.ts +7 -0
  55. package/src/lib/components/filter/radio/filter-radio.js +20 -0
  56. package/src/lib/components/filter/radio/filter-radio.js.map +1 -0
  57. package/src/lib/components/filter/text/filter-text.d.ts +7 -0
  58. package/src/lib/components/filter/text/filter-text.js +20 -0
  59. package/src/lib/components/filter/text/filter-text.js.map +1 -0
  60. package/src/lib/components/filters/filters.d.ts +10 -0
  61. package/src/lib/components/filters/filters.js +20 -0
  62. package/src/lib/components/filters/filters.js.map +1 -0
  63. package/src/lib/components/filters/filters.types.d.ts +5 -0
  64. package/src/lib/components/filters/filters.types.js +3 -0
  65. package/src/lib/components/filters/filters.types.js.map +1 -0
  66. package/src/lib/components/filters/index.d.ts +3 -0
  67. package/src/lib/components/filters/index.js +7 -0
  68. package/src/lib/components/filters/index.js.map +1 -0
  69. package/src/lib/components/filters/use-crud-filters.d.ts +17 -0
  70. package/src/lib/components/filters/use-crud-filters.js +63 -0
  71. package/src/lib/components/filters/use-crud-filters.js.map +1 -0
  72. package/src/lib/components/filters-config/filters-config.d.ts +6 -0
  73. package/src/lib/components/filters-config/filters-config.js +38 -0
  74. package/src/lib/components/filters-config/filters-config.js.map +1 -0
  75. package/src/lib/components/filters-config/index.d.ts +1 -0
  76. package/src/lib/components/filters-config/index.js +5 -0
  77. package/src/lib/components/filters-config/index.js.map +1 -0
  78. package/src/lib/components/group/group.d.ts +10 -0
  79. package/src/lib/components/group/group.js +19 -0
  80. package/src/lib/components/group/group.js.map +1 -0
  81. package/src/lib/components/group/group.types.d.ts +8 -0
  82. package/src/lib/components/group/group.types.js +3 -0
  83. package/src/lib/components/group/group.types.js.map +1 -0
  84. package/src/lib/components/group/index.d.ts +3 -0
  85. package/src/lib/components/group/index.js +7 -0
  86. package/src/lib/components/group/index.js.map +1 -0
  87. package/src/lib/components/group/use-crud-group.d.ts +17 -0
  88. package/src/lib/components/group/use-crud-group.js +50 -0
  89. package/src/lib/components/group/use-crud-group.js.map +1 -0
  90. package/src/lib/components/multiselect/index.d.ts +2 -0
  91. package/src/lib/components/multiselect/index.js +6 -0
  92. package/src/lib/components/multiselect/index.js.map +1 -0
  93. package/src/lib/components/multiselect/multiselect.d.ts +10 -0
  94. package/src/lib/components/multiselect/multiselect.js +25 -0
  95. package/src/lib/components/multiselect/multiselect.js.map +1 -0
  96. package/src/lib/components/multiselect/use-crud-multiselect.d.ts +24 -0
  97. package/src/lib/components/multiselect/use-crud-multiselect.js +72 -0
  98. package/src/lib/components/multiselect/use-crud-multiselect.js.map +1 -0
  99. package/src/lib/crud.config.d.ts +67 -0
  100. package/src/lib/crud.config.js +3 -0
  101. package/src/lib/crud.config.js.map +1 -0
  102. package/src/lib/crud.context.d.ts +23 -0
  103. package/src/lib/crud.context.js +25 -0
  104. package/src/lib/crud.context.js.map +1 -0
  105. package/src/lib/crud.provider.d.ts +16 -0
  106. package/src/lib/crud.provider.js +69 -0
  107. package/src/lib/crud.provider.js.map +1 -0
  108. package/src/lib/factories/form-options.d.ts +10 -0
  109. package/src/lib/factories/form-options.js +26 -0
  110. package/src/lib/factories/form-options.js.map +1 -0
  111. package/src/lib/hooks.d.ts +15 -0
  112. package/src/lib/hooks.js +66 -0
  113. package/src/lib/hooks.js.map +1 -0
  114. package/src/lib/models/index.d.ts +1 -0
  115. package/src/lib/models/index.js +5 -0
  116. package/src/lib/models/index.js.map +1 -0
  117. package/src/lib/models/interfaces.d.ts +29 -0
  118. package/src/lib/models/interfaces.js +3 -0
  119. package/src/lib/models/interfaces.js.map +1 -0
  120. package/src/lib/pages/crud-pages.d.ts +32 -0
  121. package/src/lib/pages/crud-pages.js +64 -0
  122. package/src/lib/pages/crud-pages.js.map +1 -0
  123. package/src/lib/pages/index.d.ts +12 -0
  124. package/src/lib/pages/index.js +16 -0
  125. package/src/lib/pages/index.js.map +1 -0
  126. package/src/lib/pages/item/item-page.d.ts +18 -0
  127. package/src/lib/pages/item/item-page.js +31 -0
  128. package/src/lib/pages/item/item-page.js.map +1 -0
  129. package/src/lib/pages/item/item-page.types.d.ts +47 -0
  130. package/src/lib/pages/item/item-page.types.js +3 -0
  131. package/src/lib/pages/item/item-page.types.js.map +1 -0
  132. package/src/lib/pages/item/standard/item-page-standard.d.ts +10 -0
  133. package/src/lib/pages/item/standard/item-page-standard.js +19 -0
  134. package/src/lib/pages/item/standard/item-page-standard.js.map +1 -0
  135. package/src/lib/pages/item/use-crud-item-page-base.d.ts +22 -0
  136. package/src/lib/pages/item/use-crud-item-page-base.js +47 -0
  137. package/src/lib/pages/item/use-crud-item-page-base.js.map +1 -0
  138. package/src/lib/pages/item/use-crud-item-page.d.ts +44 -0
  139. package/src/lib/pages/item/use-crud-item-page.js +297 -0
  140. package/src/lib/pages/item/use-crud-item-page.js.map +1 -0
  141. package/src/lib/pages/list/list-page.d.ts +17 -0
  142. package/src/lib/pages/list/list-page.js +32 -0
  143. package/src/lib/pages/list/list-page.js.map +1 -0
  144. package/src/lib/pages/list/list-page.types.d.ts +27 -0
  145. package/src/lib/pages/list/list-page.types.js +3 -0
  146. package/src/lib/pages/list/list-page.types.js.map +1 -0
  147. package/src/lib/pages/list/standard/list-page-standard.d.ts +13 -0
  148. package/src/lib/pages/list/standard/list-page-standard.js +28 -0
  149. package/src/lib/pages/list/standard/list-page-standard.js.map +1 -0
  150. package/src/lib/pages/list/use-crud-list-page.d.ts +35 -0
  151. package/src/lib/pages/list/use-crud-list-page.js +309 -0
  152. package/src/lib/pages/list/use-crud-list-page.js.map +1 -0
  153. package/src/lib/pages/use-crud-bound-component.d.ts +10 -0
  154. package/src/lib/pages/use-crud-bound-component.js +28 -0
  155. package/src/lib/pages/use-crud-bound-component.js.map +1 -0
  156. package/src/lib/pages/use-crud-page-config.d.ts +9 -0
  157. package/src/lib/pages/use-crud-page-config.js +19 -0
  158. package/src/lib/pages/use-crud-page-config.js.map +1 -0
  159. package/src/lib/providers/model-label.provider.d.ts +11 -0
  160. package/src/lib/providers/model-label.provider.js +27 -0
  161. package/src/lib/providers/model-label.provider.js.map +1 -0
  162. package/src/lib/services/crud/crud.service.d.ts +44 -0
  163. package/src/lib/services/crud/crud.service.js +113 -0
  164. package/src/lib/services/crud/crud.service.js.map +1 -0
  165. package/src/lib/services/list-group/list-group.service.d.ts +18 -0
  166. package/src/lib/services/list-group/list-group.service.js +52 -0
  167. package/src/lib/services/list-group/list-group.service.js.map +1 -0
  168. package/src/lib/services/page/page.service.d.ts +8 -0
  169. package/src/lib/services/page/page.service.js +33 -0
  170. package/src/lib/services/page/page.service.js.map +1 -0
  171. package/src/lib/services/search/search.service.d.ts +14 -0
  172. package/src/lib/services/search/search.service.js +28 -0
  173. package/src/lib/services/search/search.service.js.map +1 -0
  174. package/src/lib/state/crud.actions.d.ts +157 -0
  175. package/src/lib/state/crud.actions.js +257 -0
  176. package/src/lib/state/crud.actions.js.map +1 -0
  177. package/src/lib/state/crud.effects.d.ts +20 -0
  178. package/src/lib/state/crud.effects.js +128 -0
  179. package/src/lib/state/crud.effects.js.map +1 -0
  180. package/src/lib/state/crud.facade.d.ts +43 -0
  181. package/src/lib/state/crud.facade.js +93 -0
  182. package/src/lib/state/crud.facade.js.map +1 -0
  183. package/src/lib/state/crud.reducer.d.ts +20 -0
  184. package/src/lib/state/crud.reducer.js +218 -0
  185. package/src/lib/state/crud.reducer.js.map +1 -0
  186. package/src/lib/state/crud.selectors.d.ts +9 -0
  187. package/src/lib/state/crud.selectors.js +25 -0
  188. package/src/lib/state/crud.selectors.js.map +1 -0
  189. package/src/lib/state/crud.store.d.ts +17 -0
  190. package/src/lib/state/crud.store.js +33 -0
  191. package/src/lib/state/crud.store.js.map +1 -0
  192. package/src/lib/state/index.d.ts +6 -0
  193. package/src/lib/state/index.js +10 -0
  194. package/src/lib/state/index.js.map +1 -0
  195. package/styles.css +6001 -0
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrudService = void 0;
4
+ /**
5
+ * The REST client of a CRUD resource, speaking the same contract as the
6
+ * Angular `CrudService` and `@smartsoft001/crud-shell-nestjs`: the same URLs,
7
+ * the same query string (`$search`, `limit`/`offset`, `sort`, `key=value`
8
+ * filters) and the same CSV / XLSX export.
9
+ */
10
+ class CrudService {
11
+ config;
12
+ http;
13
+ formatMap = {
14
+ csv: 'text/csv',
15
+ xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
16
+ };
17
+ constructor(config, http) {
18
+ this.config = config;
19
+ this.http = http;
20
+ }
21
+ /**
22
+ * Creates `item` and resolves with the id of the new item, read from the
23
+ * `Location` header, or `null` when the API sends none.
24
+ */
25
+ async create(item) {
26
+ const response = await this.http.request({
27
+ method: 'POST',
28
+ url: this.config.apiUrl,
29
+ body: item,
30
+ });
31
+ const location = response.headers.get('Location');
32
+ if (!location)
33
+ return null;
34
+ const parts = location.split('/');
35
+ return parts[parts.length - 1];
36
+ }
37
+ createMany(items, options) {
38
+ return this.http.post(this.config.apiUrl + '/bulk?mode=' + options.mode, items);
39
+ }
40
+ getById(id) {
41
+ return this.http.get(this.config.apiUrl + '/' + id);
42
+ }
43
+ getList(filter = null) {
44
+ return this.http.get(this.config.apiUrl + this.getQuery(filter));
45
+ }
46
+ /** Downloads the list matching `filter` as `data.csv` or `data.xlsx`. */
47
+ async exportList(filter = null, format = 'csv') {
48
+ if (!format)
49
+ format = 'csv';
50
+ if (format === 'xlsx') {
51
+ const blob = await this.http.get(this.config.apiUrl + this.getQuery(filter), {
52
+ headers: { 'Content-Type': this.formatMap[format] },
53
+ responseType: 'blob',
54
+ });
55
+ this.download(blob, format);
56
+ return;
57
+ }
58
+ const text = await this.http.get(this.config.apiUrl + this.getQuery(filter), {
59
+ headers: { 'Content-Type': this.formatMap[format] },
60
+ responseType: 'text',
61
+ });
62
+ this.download(new Blob(['', text]), format);
63
+ }
64
+ update(item) {
65
+ return this.http.put(this.config.apiUrl + '/' + item.id, item);
66
+ }
67
+ updatePartial(item) {
68
+ return this.http.patch(this.config.apiUrl + '/' + item.id, item);
69
+ }
70
+ updatePartialMany(items) {
71
+ return Promise.all(items.map((item) => this.updatePartial(item)));
72
+ }
73
+ delete(id) {
74
+ return this.http.delete(this.config.apiUrl + '/' + id);
75
+ }
76
+ getQuery(filter) {
77
+ let query = '';
78
+ if (filter && filter.searchText) {
79
+ query += '&$search=' + filter.searchText;
80
+ }
81
+ if (filter && filter.limit) {
82
+ query += `&limit=${filter.limit}&offset=${filter.offset ? filter.offset : 0}`;
83
+ }
84
+ if (filter && filter.sortBy) {
85
+ query += `&sort=${(filter.sortDesc ? '-' : '') + filter.sortBy}`;
86
+ }
87
+ if (filter && filter.query) {
88
+ filter.query.forEach((q) => {
89
+ if (q.value &&
90
+ typeof q.value === 'string' &&
91
+ q.value.match(/^-?\d+$/) &&
92
+ q.value[0] !== "'" &&
93
+ q.value[0] !== '"') {
94
+ query += '&' + q.key + q.type + `'${q.value}'`;
95
+ }
96
+ else {
97
+ query += '&' + q.key + q.type + q.value;
98
+ }
99
+ });
100
+ }
101
+ return query ? '?' + query.replace('&', '') : '';
102
+ }
103
+ download(blob, format) {
104
+ const downloadLink = document.createElement('a');
105
+ downloadLink.href = URL.createObjectURL(blob);
106
+ downloadLink.download = 'data.' + format;
107
+ document.body.appendChild(downloadLink);
108
+ downloadLink.click();
109
+ document.body.removeChild(downloadLink);
110
+ }
111
+ }
112
+ exports.CrudService = CrudService;
113
+ //# sourceMappingURL=crud.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/react/src/lib/services/crud/crud.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { IEntity } from '@smartsoft001/domain-core';
2
+ import { ICrudListGroup } from '../../models';
3
+ import { CrudFacade } from '../../state/crud.facade';
4
+ /**
5
+ * Filters the list by a group (a `key = value` query item hidden from the
6
+ * filters), and drops the groups' query items again, batched, when the groups
7
+ * go away.
8
+ */
9
+ export declare class CrudListGroupService<T extends IEntity<string>> {
10
+ private readonly facade;
11
+ private destroyed;
12
+ private refreshTimer;
13
+ constructor(facade: CrudFacade<T>);
14
+ change(val: boolean, item: ICrudListGroup, force?: boolean): void;
15
+ destroy(groups: Array<ICrudListGroup>): void;
16
+ private scheduleRefresh;
17
+ private refresh;
18
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrudListGroupService = void 0;
4
+ /**
5
+ * Filters the list by a group (a `key = value` query item hidden from the
6
+ * filters), and drops the groups' query items again, batched, when the groups
7
+ * go away.
8
+ */
9
+ class CrudListGroupService {
10
+ facade;
11
+ destroyed = [];
12
+ refreshTimer = null;
13
+ constructor(facade) {
14
+ this.facade = facade;
15
+ }
16
+ change(val, item, force = false) {
17
+ if (!val && !force)
18
+ return;
19
+ item.changed = true;
20
+ const filter = this.facade.filter;
21
+ let current = filter?.query?.find((q) => q.key === item.key && q.type === '=');
22
+ if (!current) {
23
+ current = { key: item.key, type: '=', value: null };
24
+ if (filter?.query)
25
+ filter.query.push(current);
26
+ }
27
+ current.value = item.value;
28
+ current.hidden = true;
29
+ this.facade.read({ ...this.facade.filter, offset: 0 });
30
+ }
31
+ destroy(groups) {
32
+ this.destroyed = [...this.destroyed, ...groups.filter((g) => g.changed)];
33
+ this.scheduleRefresh();
34
+ }
35
+ scheduleRefresh() {
36
+ if (this.refreshTimer)
37
+ clearTimeout(this.refreshTimer);
38
+ this.refreshTimer = setTimeout(() => {
39
+ this.refreshTimer = null;
40
+ this.refresh();
41
+ }, 250);
42
+ }
43
+ refresh() {
44
+ const list = this.destroyed;
45
+ this.destroyed = [];
46
+ const filter = this.facade.filter;
47
+ const newQuery = filter?.query?.filter((q) => !list.some((i) => q.key === i.key)) || [];
48
+ this.facade.read({ ...this.facade.filter, query: newQuery });
49
+ }
50
+ }
51
+ exports.CrudListGroupService = CrudListGroupService;
52
+ //# sourceMappingURL=list-group.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-group.service.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/react/src/lib/services/list-group/list-group.service.ts"],"names":[],"mappings":";;;AAKA;;;;GAIG;AACH,MAAa,oBAAoB;IAIF;IAHrB,SAAS,GAA0B,EAAE,CAAC;IACtC,YAAY,GAAyC,IAAI,CAAC;IAElE,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,MAAM,CAAC,GAAY,EAAE,IAAoB,EAAE,KAAK,GAAG,KAAK;QACtD,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK;YAAE,OAAO;QAE3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,OAAO,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,CAC/B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAC5C,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YAEpD,IAAI,MAAM,EAAE,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,CAAC,MAA6B;QACnC,IAAI,CAAC,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,YAAY;YAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAEO,OAAO;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,MAAM,QAAQ,GACZ,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAEzE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;CACF;AApDD,oDAoDC"}
@@ -0,0 +1,8 @@
1
+ import { AuthService } from '@smartsoft001/react';
2
+ import { CrudFullConfig } from '../../crud.config';
3
+ /**
4
+ * Turns off `add`, `edit` and `remove` when the model's `create`, `update`
5
+ * or `remove` permissions are not granted. The Angular `PageService` changed
6
+ * the injected config in place; this returns a new config instead.
7
+ */
8
+ export declare function applyPagePermissions<T>(config: CrudFullConfig<T>, authService: Pick<AuthService, 'expectPermissions'>): CrudFullConfig<T>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyPagePermissions = applyPagePermissions;
4
+ const models_1 = require("@smartsoft001/models");
5
+ /**
6
+ * Turns off `add`, `edit` and `remove` when the model's `create`, `update`
7
+ * or `remove` permissions are not granted. The Angular `PageService` changed
8
+ * the injected config in place; this returns a new config instead.
9
+ */
10
+ function applyPagePermissions(config, authService) {
11
+ const val = { ...config };
12
+ const modelOptions = (0, models_1.getModelOptions)(val.type) ?? {};
13
+ if (val.add &&
14
+ modelOptions.create &&
15
+ modelOptions.create.permissions &&
16
+ !authService.expectPermissions(modelOptions.create.permissions)) {
17
+ val.add = false;
18
+ }
19
+ if (val.edit &&
20
+ modelOptions.update &&
21
+ modelOptions.update.permissions &&
22
+ !authService.expectPermissions(modelOptions.update.permissions)) {
23
+ val.edit = false;
24
+ }
25
+ if (val.remove &&
26
+ modelOptions.remove &&
27
+ modelOptions.remove.permissions &&
28
+ !authService.expectPermissions(modelOptions.remove.permissions)) {
29
+ val.remove = false;
30
+ }
31
+ return val;
32
+ }
33
+ //# sourceMappingURL=page.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.service.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/react/src/lib/services/page/page.service.ts"],"names":[],"mappings":";;AAUA,oDAmCC;AA7CD,iDAAuD;AAKvD;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,MAAyB,EACzB,WAAmD;IAEnD,MAAM,GAAG,GAAsB,EAAE,GAAG,MAAM,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAErD,IACE,GAAG,CAAC,GAAG;QACP,YAAY,CAAC,MAAM;QACnB,YAAY,CAAC,MAAM,CAAC,WAAW;QAC/B,CAAC,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EAC/D,CAAC;QACD,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC;IAClB,CAAC;IAED,IACE,GAAG,CAAC,IAAI;QACR,YAAY,CAAC,MAAM;QACnB,YAAY,CAAC,MAAM,CAAC,WAAW;QAC/B,CAAC,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EAC/D,CAAC;QACD,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,IACE,GAAG,CAAC,MAAM;QACV,YAAY,CAAC,MAAM;QACnB,YAAY,CAAC,MAAM,CAAC,WAAW;QAC/B,CAAC,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EAC/D,CAAC;QACD,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { SmartStore } from '@smartsoft001/react';
2
+ import { ICrudFilter } from '../../models';
3
+ /**
4
+ * The search the page header drives and the list applies: a filter that only
5
+ * counts while search is enabled.
6
+ */
7
+ export declare class CrudSearchService {
8
+ readonly filterStore: SmartStore<Partial<ICrudFilter>>;
9
+ readonly enabledStore: SmartStore<boolean>;
10
+ get filter(): Partial<ICrudFilter>;
11
+ get enabled(): boolean;
12
+ setFilter(val: Partial<ICrudFilter>): void;
13
+ setEnabled(val: boolean): void;
14
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrudSearchService = void 0;
4
+ const react_1 = require("@smartsoft001/react");
5
+ /**
6
+ * The search the page header drives and the list applies: a filter that only
7
+ * counts while search is enabled.
8
+ */
9
+ class CrudSearchService {
10
+ filterStore = new react_1.SmartStore({});
11
+ enabledStore = new react_1.SmartStore(false);
12
+ get filter() {
13
+ if (!this.enabledStore.get())
14
+ return {};
15
+ return this.filterStore.get() || {};
16
+ }
17
+ get enabled() {
18
+ return this.enabledStore.get();
19
+ }
20
+ setFilter(val) {
21
+ this.filterStore.set(val);
22
+ }
23
+ setEnabled(val) {
24
+ this.enabledStore.set(val);
25
+ }
26
+ }
27
+ exports.CrudSearchService = CrudSearchService;
28
+ //# sourceMappingURL=search.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.service.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/react/src/lib/services/search/search.service.ts"],"names":[],"mappings":";;;AAAA,+CAAiD;AAIjD;;;GAGG;AACH,MAAa,iBAAiB;IACnB,WAAW,GAAG,IAAI,kBAAU,CAAuB,EAAE,CAAC,CAAC;IACvD,YAAY,GAAG,IAAI,kBAAU,CAAU,KAAK,CAAC,CAAC;IAEvD,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;YAAE,OAAO,EAAE,CAAC;QAExC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,GAAyB;QACjC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU,CAAC,GAAY;QACrB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF;AArBD,8CAqBC"}
@@ -0,0 +1,157 @@
1
+ import { IEntity } from '@smartsoft001/domain-core';
2
+ import { ICrudCreateManyOptions, ICrudFilter } from '../models';
3
+ /** A CRUD action: a `type` naming the entity and the operation, plus its data. */
4
+ export interface CrudAction {
5
+ type: string;
6
+ [key: string]: any;
7
+ }
8
+ type Action = CrudAction;
9
+ export declare const create: <T extends IEntity<string>>(entity: string, item: T) => Action & {
10
+ item: T;
11
+ };
12
+ export declare const createSuccess: <T extends IEntity<string>>(entity: string, item: T) => Action & {
13
+ item: T;
14
+ };
15
+ export declare const createFailure: <T extends IEntity<string>>(entity: string, item: T, error: any) => Action & {
16
+ item: T;
17
+ error: any;
18
+ };
19
+ export declare const createMany: <T extends IEntity<string>>(entity: string, data: {
20
+ items: T[];
21
+ options: ICrudCreateManyOptions;
22
+ }) => Action & {
23
+ data: {
24
+ items: T[];
25
+ options: ICrudCreateManyOptions;
26
+ };
27
+ };
28
+ export declare const createManySuccess: <T extends IEntity<string>>(entity: string, data: {
29
+ items: T[];
30
+ options: ICrudCreateManyOptions;
31
+ }) => Action & {
32
+ data: {
33
+ items: T[];
34
+ options: ICrudCreateManyOptions;
35
+ };
36
+ };
37
+ export declare const createManyFailure: <T extends IEntity<string>>(entity: string, data: {
38
+ items: T[];
39
+ options: ICrudCreateManyOptions;
40
+ }, error: any) => Action & {
41
+ data: {
42
+ items: T[];
43
+ options: ICrudCreateManyOptions;
44
+ };
45
+ error: any;
46
+ };
47
+ export declare const read: (entity: string, filter?: ICrudFilter) => Action & {
48
+ filter?: ICrudFilter;
49
+ };
50
+ export declare const readSuccess: <T extends IEntity<string>, F>(entity: string, filter: F, result: {
51
+ data: T[];
52
+ totalCount: number;
53
+ links: any;
54
+ }) => Action & {
55
+ result: {
56
+ data: T[];
57
+ totalCount: number;
58
+ links: any;
59
+ };
60
+ filter: F;
61
+ };
62
+ export declare const readFailure: <F>(entity: string, filter: F, error: any) => Action & {
63
+ filter: F;
64
+ error: any;
65
+ };
66
+ export declare const clear: (entity: string) => Action;
67
+ export declare const exportList: (entity: string, filter: (ICrudFilter | null) | undefined, format: any) => Action & {
68
+ filter: ICrudFilter;
69
+ format: any;
70
+ };
71
+ export declare const exportListSuccess: <T extends IEntity<string>, F>(entity: string, filter: F) => Action & {
72
+ filter: F;
73
+ };
74
+ export declare const exportListFailure: <F>(entity: string, filter: F, error: any) => Action & {
75
+ filter: F;
76
+ error: any;
77
+ };
78
+ export declare const select: (entity: string, id: string) => Action & {
79
+ id: string;
80
+ };
81
+ export declare const selectSuccess: <T extends IEntity<string>, F>(entity: string, id: string, item: T) => Action & {
82
+ id: string;
83
+ item: T;
84
+ };
85
+ export declare const selectFailure: <F>(entity: string, id: string, error: any) => Action & {
86
+ id: string;
87
+ error: any;
88
+ };
89
+ export declare const unselect: (entity: string) => Action;
90
+ export declare const multiSelect: <T extends IEntity<string>>(entity: string, items: Array<T>) => Action & {
91
+ items: Array<T>;
92
+ };
93
+ export declare const update: <T extends IEntity<string>>(entity: string, item: T) => Action & {
94
+ item: T;
95
+ };
96
+ export declare const updateSuccess: <T extends IEntity<string>>(entity: string, item: T) => Action & {
97
+ item: T;
98
+ };
99
+ export declare const updateFailure: <T extends IEntity<string>>(entity: string, item: T, error: any) => Action & {
100
+ item: T;
101
+ error: any;
102
+ };
103
+ export declare const updatePartial: <T extends IEntity<string>>(entity: string, item: Partial<T> & {
104
+ id: string;
105
+ }) => Action & {
106
+ item: Partial<T> & {
107
+ id: string;
108
+ };
109
+ };
110
+ export declare const updatePartialSuccess: <T extends IEntity<string>>(entity: string, item: Partial<T> & {
111
+ id: string;
112
+ }) => Action & {
113
+ item: Partial<T> & {
114
+ id: string;
115
+ };
116
+ };
117
+ export declare const updatePartialFailure: <T extends IEntity<string>>(entity: string, item: Partial<T> & {
118
+ id: string;
119
+ }, error: any) => Action & {
120
+ item: Partial<T> & {
121
+ id: string;
122
+ };
123
+ error: any;
124
+ };
125
+ export declare const updatePartialMany: <T extends IEntity<string>>(entity: string, items: (Partial<T> & {
126
+ id: string;
127
+ })[]) => Action & {
128
+ items: (Partial<T> & {
129
+ id: string;
130
+ })[];
131
+ };
132
+ export declare const updatePartialManySuccess: <T extends IEntity<string>>(entity: string, items: (Partial<T> & {
133
+ id: string;
134
+ })[]) => Action & {
135
+ items: (Partial<T> & {
136
+ id: string;
137
+ })[];
138
+ };
139
+ export declare const updatePartialManyFailure: <T extends IEntity<string>>(entity: string, items: (Partial<T> & {
140
+ id: string;
141
+ })[], error: any) => Action & {
142
+ items: (Partial<T> & {
143
+ id: string;
144
+ })[];
145
+ error: any;
146
+ };
147
+ export declare const deleteItem: (entity: string, id: string) => Action & {
148
+ id: string;
149
+ };
150
+ export declare const deleteSuccess: (entity: string, id: string) => Action & {
151
+ id: string;
152
+ };
153
+ export declare const deleteFailure: <F>(entity: string, id: string, error: any) => Action & {
154
+ id: string;
155
+ error: any;
156
+ };
157
+ export {};