@beinformed/ui 1.65.6 → 1.65.7

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 (70) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/esm/hooks/__tests__/UseModularUIModel.spec.js.flow +1 -0
  3. package/esm/hooks/useList.js +47 -3
  4. package/esm/hooks/useList.js.flow +74 -2
  5. package/esm/hooks/useList.js.map +1 -1
  6. package/esm/hooks/usePanel.js +6 -1
  7. package/esm/hooks/usePanel.js.flow +6 -4
  8. package/esm/hooks/usePanel.js.map +1 -1
  9. package/esm/models/filters/AssignmentFilterModel.js +1 -12
  10. package/esm/models/filters/AssignmentFilterModel.js.flow +6 -14
  11. package/esm/models/filters/AssignmentFilterModel.js.map +1 -1
  12. package/esm/models/filters/BaseFilterModel.js +12 -0
  13. package/esm/models/filters/BaseFilterModel.js.flow +12 -0
  14. package/esm/models/filters/BaseFilterModel.js.map +1 -1
  15. package/esm/models/filters/ConceptIndexFilterModel.js.flow +5 -2
  16. package/esm/models/filters/ConceptIndexFilterModel.js.map +1 -1
  17. package/esm/models/filters/FilterCollection.js +26 -8
  18. package/esm/models/filters/FilterCollection.js.flow +23 -6
  19. package/esm/models/filters/FilterCollection.js.map +1 -1
  20. package/esm/models/filters/FilterModel.js.flow +2 -2
  21. package/esm/models/filters/FilterModel.js.map +1 -1
  22. package/esm/models/filters/RangeFilterModel.js.flow +2 -2
  23. package/esm/models/filters/RangeFilterModel.js.map +1 -1
  24. package/esm/models/filters/StringFilterModel.js.flow +2 -2
  25. package/esm/models/filters/StringFilterModel.js.map +1 -1
  26. package/esm/models/list/ListModel.js.flow +2 -2
  27. package/esm/models/list/ListModel.js.map +1 -1
  28. package/esm/models/search/CaseSearchModel.js.flow +2 -2
  29. package/esm/models/search/CaseSearchModel.js.map +1 -1
  30. package/esm/models/types.js +1 -1
  31. package/esm/models/types.js.flow +28 -10
  32. package/esm/models/types.js.map +1 -1
  33. package/esm/react-server/serverUtil.js +2 -2
  34. package/esm/react-server/serverUtil.js.flow +2 -2
  35. package/esm/react-server/serverUtil.js.map +1 -1
  36. package/lib/hooks/useList.js +47 -3
  37. package/lib/hooks/useList.js.map +1 -1
  38. package/lib/hooks/usePanel.js +6 -1
  39. package/lib/hooks/usePanel.js.map +1 -1
  40. package/lib/models/filters/AssignmentFilterModel.js +0 -12
  41. package/lib/models/filters/AssignmentFilterModel.js.map +1 -1
  42. package/lib/models/filters/BaseFilterModel.js +12 -0
  43. package/lib/models/filters/BaseFilterModel.js.map +1 -1
  44. package/lib/models/filters/ConceptIndexFilterModel.js.map +1 -1
  45. package/lib/models/filters/FilterCollection.js +26 -8
  46. package/lib/models/filters/FilterCollection.js.map +1 -1
  47. package/lib/models/filters/FilterModel.js.map +1 -1
  48. package/lib/models/filters/RangeFilterModel.js.map +1 -1
  49. package/lib/models/filters/StringFilterModel.js.map +1 -1
  50. package/lib/models/list/ListModel.js.map +1 -1
  51. package/lib/models/search/CaseSearchModel.js.map +1 -1
  52. package/lib/models/types.js +2 -0
  53. package/lib/models/types.js.map +1 -1
  54. package/lib/react-server/serverUtil.js +5 -5
  55. package/lib/react-server/serverUtil.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/hooks/__tests__/UseModularUIModel.spec.js +1 -0
  58. package/src/hooks/useList.js +74 -2
  59. package/src/hooks/usePanel.js +6 -4
  60. package/src/models/filters/AssignmentFilterModel.js +6 -14
  61. package/src/models/filters/BaseFilterModel.js +12 -0
  62. package/src/models/filters/ConceptIndexFilterModel.js +5 -2
  63. package/src/models/filters/FilterCollection.js +23 -6
  64. package/src/models/filters/FilterModel.js +2 -2
  65. package/src/models/filters/RangeFilterModel.js +2 -2
  66. package/src/models/filters/StringFilterModel.js +2 -2
  67. package/src/models/list/ListModel.js +2 -2
  68. package/src/models/search/CaseSearchModel.js +2 -2
  69. package/src/models/types.js +28 -10
  70. package/src/react-server/serverUtil.js +2 -2
@@ -8,13 +8,13 @@ import ConceptIndexFilterModel from "../filters/ConceptIndexFilterModel";
8
8
  import CompositeAttributeModel from "../attributes/CompositeAttributeModel";
9
9
  import FilterModel from "../filters/FilterModel";
10
10
 
11
- import type { AttributeType, FilterType, ModelOptions } from "../types";
11
+ import type { AttributeType, IFilter, ModelOptions } from "../types";
12
12
  import { PARAMETER_TYPES } from "../../constants";
13
13
 
14
14
  /**
15
15
  * Contains a collection of filters
16
16
  */
17
- export default class FilterCollection extends BaseCollection<FilterType> {
17
+ export default class FilterCollection extends BaseCollection<IFilter> {
18
18
  /**
19
19
  * Construct a collection of filters
20
20
  */
@@ -68,7 +68,7 @@ export default class FilterCollection extends BaseCollection<FilterType> {
68
68
  data: Object,
69
69
  contributions: Object,
70
70
  modelOptions?: ModelOptions,
71
- ): FilterType {
71
+ ): IFilter {
72
72
  const type = contributions.type || "stringfilter";
73
73
  if (type === "choicefilter" && filterKey === "index") {
74
74
  return new ConceptIndexFilterModel(data, contributions, modelOptions);
@@ -92,7 +92,7 @@ export default class FilterCollection extends BaseCollection<FilterType> {
92
92
  /**
93
93
  * Call the reset function on all filters
94
94
  *
95
- * @see {FilterType#reset()}
95
+ * @see {IFilter#reset()}
96
96
  */
97
97
  reset(): FilterCollection {
98
98
  this.collection = this.collection.map((filter) => filter.reset());
@@ -134,10 +134,16 @@ export default class FilterCollection extends BaseCollection<FilterType> {
134
134
  );
135
135
  }
136
136
 
137
+ /**
138
+ */
139
+ getFilterByName(name: string): IFilter | null {
140
+ return this.find((filter) => filter.name === name) || null;
141
+ }
142
+
137
143
  /**
138
144
  * Getting the filter by name
139
145
  */
140
- getFilterByAttributeKey(key: string): FilterType | null {
146
+ getFilterByAttributeKey(key: string): IFilter | null {
141
147
  return (
142
148
  this.find((filter) => {
143
149
  if (filter instanceof RangeFilterModel) {
@@ -148,7 +154,11 @@ export default class FilterCollection extends BaseCollection<FilterType> {
148
154
  return this.checkAssignmentFilterByAttributeKey(filter, key);
149
155
  }
150
156
 
151
- return filter.attribute?.key === key;
157
+ if (filter instanceof FilterModel) {
158
+ return filter.attribute.key === key;
159
+ }
160
+
161
+ return false;
152
162
  }) || null
153
163
  );
154
164
  }
@@ -191,6 +201,13 @@ export default class FilterCollection extends BaseCollection<FilterType> {
191
201
  return this.collection.some((filter) => filter.isActive());
192
202
  }
193
203
 
204
+ /**
205
+ * Retrieve all filters with a value
206
+ */
207
+ getActiveFilters(): Array<IFilter> {
208
+ return this.collection.filter((filter) => filter.isActive());
209
+ }
210
+
194
211
  /**
195
212
  */
196
213
  get formdata(): { [string]: any } | null {
@@ -3,11 +3,11 @@ import BaseFilterModel from "../filters/BaseFilterModel";
3
3
  import createAttribute from "../attributes/_createAttribute";
4
4
  import { IllegalStateException } from "../../exceptions";
5
5
 
6
- import type { AttributeType, ModelOptions } from "../types";
6
+ import type { AttributeType, IFilter, ModelOptions } from "../types";
7
7
 
8
8
  /**
9
9
  */
10
- export default class FilterModel extends BaseFilterModel {
10
+ export default class FilterModel extends BaseFilterModel implements IFilter {
11
11
  _attribute: AttributeType | null = null;
12
12
 
13
13
  /**
@@ -2,12 +2,12 @@
2
2
  import FilterModel from "../filters/FilterModel";
3
3
 
4
4
  import CompositeAttributeModel from "../attributes/CompositeAttributeModel";
5
- import type { AttributeType } from "../types";
5
+ import type { AttributeType, IFilter } from "../types";
6
6
 
7
7
  /**
8
8
  * Range filter, for instance a date range filter or a number range filter
9
9
  */
10
- export default class RangeFilterModel extends FilterModel {
10
+ export default class RangeFilterModel extends FilterModel implements IFilter {
11
11
  /**
12
12
  */
13
13
  update(attribute: AttributeType, value: string) {
@@ -1,12 +1,12 @@
1
1
  // @flow
2
2
 
3
- import type { AttributeType, ModelOptions } from "../types";
3
+ import type { AttributeType, IFilter, ModelOptions } from "../types";
4
4
  import FilterModel from "./FilterModel";
5
5
 
6
6
  /**
7
7
  * StringFilterModel can handle string filters with multiple setting
8
8
  */
9
- export default class StringFilterModel extends FilterModel {
9
+ export default class StringFilterModel extends FilterModel implements IFilter {
10
10
  _isValid: boolean = true;
11
11
  _value: string | null;
12
12
  _inputvalue: string;
@@ -20,7 +20,7 @@ import {
20
20
  SHOW_ONE_RESULT_AS_DETAIL,
21
21
  } from "../../constants/LayoutHints";
22
22
 
23
- import type { ModularUIModel, FilterType } from "../types";
23
+ import type { ModularUIModel, IFilter } from "../types";
24
24
  import type LinkModel from "../links/LinkModel";
25
25
 
26
26
  /**
@@ -288,7 +288,7 @@ export default class ListModel extends ResourceModel {
288
288
  /**
289
289
  * Set filterCollection
290
290
  */
291
- set filterCollection(filterCollection: FilterCollection | Array<FilterType>) {
291
+ set filterCollection(filterCollection: FilterCollection | Array<IFilter>) {
292
292
  if (Array.isArray(filterCollection)) {
293
293
  this._filterCollection.collection = filterCollection;
294
294
  } else {
@@ -2,7 +2,7 @@
2
2
  import ListModel from "../list/ListModel";
3
3
 
4
4
  import type { ModularUIResponse } from "../../modularui";
5
- import type { FilterType } from "../types";
5
+ import type { IFilter } from "../types";
6
6
 
7
7
  /**
8
8
  * Case search model
@@ -32,7 +32,7 @@ export default class CaseSearchModel extends ListModel {
32
32
  /**
33
33
  * Retrieve quick search filters
34
34
  */
35
- getQuickSearchFilters(): Array<FilterType> {
35
+ getQuickSearchFilters(): Array<IFilter> {
36
36
  return this.filterCollection
37
37
  ? this.filterCollection.filter((filter) => filter.isQuickSearch())
38
38
  : [];
@@ -25,10 +25,6 @@ import type SectionModel from "./content/SectionModel";
25
25
  import type ContentTOCModel from "./content/ContentTOCModel";
26
26
  import type ContentTypeModel from "./content/ContentTypeModel";
27
27
  import type DetailModel from "./detail/DetailModel";
28
- import type AssignmentFilterModel from "./filters/AssignmentFilterModel";
29
- import type FilterModel from "./filters/FilterModel";
30
- import type RangeFilterModel from "./filters/RangeFilterModel";
31
- import type ConceptIndexFilterModel from "./filters/ConceptIndexFilterModel";
32
28
  import type FormModel from "./form/FormModel";
33
29
  import type ListDetailModel from "./list/ListDetailModel";
34
30
  import type ListModel from "./list/ListModel";
@@ -45,6 +41,7 @@ import type AttributeCollection from "./attributes/AttributeCollection";
45
41
  import type AttributeModel from "./attributes/AttributeModel";
46
42
  import type LayoutHintCollection from "./layouthint/LayoutHintCollection";
47
43
  import type ErrorResponse from "./error/ErrorResponse";
44
+ import { PARAMETER_TYPES } from "../constants";
48
45
 
49
46
  export type ModularUIModel =
50
47
  | ApplicationModel
@@ -90,12 +87,6 @@ export type RangeChildAttributeType =
90
87
  | NumberAttributeModel
91
88
  | DatetimeAttributeModel;
92
89
 
93
- export type FilterType =
94
- | AssignmentFilterModel
95
- | FilterModel
96
- | RangeFilterModel
97
- | ConceptIndexFilterModel;
98
-
99
90
  export type FormErrorAnchor = {
100
91
  id: string,
101
92
  properties?: {
@@ -135,6 +126,33 @@ export type textfragmentJSON = {
135
126
  type: string,
136
127
  };
137
128
 
129
+ export interface IFilter {
130
+ +type: string;
131
+ +parameterType: $Values<typeof PARAMETER_TYPES>;
132
+ +isMultiple: boolean;
133
+ context: Object;
134
+ +contextid: string;
135
+ +contextLabel: string;
136
+ listkey: string;
137
+ +label: string;
138
+ +key: string;
139
+ +name: string;
140
+ +param: string;
141
+ +params: Array<{ name: string, value: ?string }>;
142
+ isQuickSearch(): boolean;
143
+ +assistantMessage: string | null;
144
+ +value: string | { [string]: string } | null;
145
+ +inputvalue: string | { [string]: string };
146
+ hasValue(): boolean;
147
+ reset(): IFilter;
148
+ update(attribute: AttributeType, value: string): void;
149
+ isActive(): boolean;
150
+ +isValid: boolean;
151
+ +readonlyvalue: string | { [string]: string };
152
+ +formdata: { [string]: any } | null;
153
+ clone(): IFilter;
154
+ }
155
+
138
156
  export interface IConstraintModel {
139
157
  +id: string;
140
158
  +defaultMessage: string;
@@ -22,9 +22,9 @@ import {
22
22
 
23
23
  import { getEnabledLocales } from "../constants/Settings";
24
24
 
25
- import { IllegalArgumentException } from "../exceptions";
25
+ import IllegalArgumentException from "../exceptions/IllegalArgumentException";
26
26
 
27
- import { initModels } from "../redux";
27
+ import { initModels } from "../redux/_modularui/ModularUIActions";
28
28
  import { getLocale } from "../redux/selectors/i18n";
29
29
 
30
30
  import ModularUIRequest from "../modularui/ModularUIRequest";