@beinformed/ui 1.64.0 → 1.65.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [1.65.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.63.14...v1.65.0) (2025-12-18)
6
+
7
+
8
+ ### Features
9
+
10
+ * **filter-post:** indicate if a filter is a POST or GET filter ([374c74d](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/374c74dc97706eab0bedaa5400e6f0e978f7456e))
11
+ * **filter-post:** retrieve post data from lists ([32ae39a](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/32ae39acc6fb43431caa7d1e191d8b24595ff287))
12
+ * **hooks:** refactor and reintroduce hooks for list and panel management ([dfca996](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/dfca9967cbbd2a3840706f946d432fc656d7f7c2))
13
+ * **types:** update type definitions for filters, requests, and hooks ([80f2fd2](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/80f2fd23df6356ed850f7cb2d8ef3109aab2df3b))
14
+
15
+
16
+ ### Bug Fixes
17
+
18
+ * **flowtype:** handle flowtype errors ([0f661bf](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/commit/0f661bf023926f1e0eda361e9ccd18479a15ca26))
19
+
5
20
  ## [1.64.0](https://git.beinformed.com/public/nl.beinformed.bi.layout.lib.ui/compare/v1.63.14...v1.64.0) (2025-12-18)
6
21
 
7
22
 
@@ -38,14 +38,12 @@ const useUrl = (href, fromRoute = false) => {
38
38
  /**
39
39
  */
40
40
  export const usePanel = (href, options) => {
41
- const {
42
- fromRoute = false,
43
- ...modUIOptions
44
- } = options || {};
45
- const url = useUrl(href, fromRoute);
46
- return useModularUIBasic("panel", url, {
41
+ const url = useUrl(href, options?.fromRoute || false);
42
+ const basicOptions = {
47
43
  expectedModels: ["List", "GroupingPanel", "Detail"],
48
- ...modUIOptions
49
- });
44
+ origin: options?.origin,
45
+ contextPath: options?.contextPath
46
+ };
47
+ return useModularUIBasic("panel", url, basicOptions);
50
48
  };
51
49
  //# sourceMappingURL=usePanel.js.map
@@ -65,12 +65,12 @@ export const usePanel = (
65
65
  href?: string | Href,
66
66
  options?: HookOptions & { fromRoute?: boolean },
67
67
  ): ListModel | GroupingPanelModel | DetailModel | null => {
68
- const { fromRoute = false, ...modUIOptions } = options || {};
69
-
70
- const url = useUrl(href, fromRoute);
71
-
72
- return useModularUIBasic("panel", url, {
68
+ const url = useUrl(href, options?.fromRoute || false);
69
+ const basicOptions = {
73
70
  expectedModels: ["List", "GroupingPanel", "Detail"],
74
- ...modUIOptions,
75
- });
71
+ origin: options?.origin,
72
+ contextPath: options?.contextPath,
73
+ };
74
+
75
+ return useModularUIBasic("panel", url, basicOptions);
76
76
  };
@@ -1 +1 @@
1
- {"version":3,"file":"usePanel.js","names":["useState","useMemo","useLocation","useRouteMatch","Href","useModularUIBasic","useUrl","href","fromRoute","previousUrl","setPreviousUrl","previousExact","setPreviousExact","match","location","_context","url","isExact","addParametersFromString","search","equalsWithParameters","shouldUpdate","Function","call","bind","_startsWithInstanceProperty","usePanel","options","modUIOptions","expectedModels"],"sources":["../../src/hooks/usePanel.js"],"sourcesContent":["// @flow\nimport { useState, useMemo } from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router\";\nimport Href from \"../models/href/Href\";\nimport { useModularUIBasic } from \"./useModularUIBasic\";\n\nimport type { HookOptions } from \"./useModularUIBasic\";\nimport type GroupingPanelModel from \"../models/panels/GroupingPanelModel\";\nimport type ListModel from \"../models/list/ListModel\";\nimport type DetailModel from \"../models/detail/DetailModel\";\n\nconst useUrl = (href?: string | Href, fromRoute: boolean = false) => {\n const [previousUrl, setPreviousUrl] = useState(null);\n const [previousExact, setPreviousExact] = useState(false);\n\n const match = useRouteMatch();\n const location = useLocation();\n\n return useMemo(() => {\n if (href == null && previousUrl == null) {\n return new Href(\"\");\n }\n\n const url = href instanceof Href ? href : new Href(href);\n\n if (!fromRoute) {\n return url;\n }\n\n if (match.isExact) {\n url.addParametersFromString(location.search);\n }\n\n // Check equality to prevent unnecessary state updates\n if (url.equalsWithParameters(previousUrl)) {\n return previousUrl || url;\n }\n\n const shouldUpdate =\n match.isExact === true ||\n previousExact === match.isExact ||\n !previousUrl?.startsWith(match.url);\n\n if (shouldUpdate) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n return url;\n }\n\n return previousUrl || new Href(\"\");\n }, [\n href,\n previousUrl,\n fromRoute,\n match.isExact,\n match.url,\n previousExact,\n location.search,\n ]);\n};\n\n/**\n */\nexport const usePanel = (\n href?: string | Href,\n options?: HookOptions & { fromRoute?: boolean },\n): ListModel | GroupingPanelModel | DetailModel | null => {\n const { fromRoute = false, ...modUIOptions } = options || {};\n\n const url = useUrl(href, fromRoute);\n\n return useModularUIBasic(\"panel\", url, {\n expectedModels: [\"List\", \"GroupingPanel\", \"Detail\"],\n ...modUIOptions,\n });\n};\n"],"mappings":";AACA,SAASA,QAAQ,EAAEC,OAAO,QAAQ,OAAO;AACzC,SAASC,WAAW,EAAEC,aAAa,QAAQ,cAAc;AACzD,OAAOC,IAAI,MAAM,qBAAqB;AACtC,SAASC,iBAAiB,QAAQ,qBAAqB;AAOvD,MAAMC,MAAM,GAAGA,CAACC,IAAoB,EAAEC,SAAkB,GAAG,KAAK,KAAK;EACnE,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGV,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAM,CAACW,aAAa,EAAEC,gBAAgB,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMa,KAAK,GAAGV,aAAa,CAAC,CAAC;EAC7B,MAAMW,QAAQ,GAAGZ,WAAW,CAAC,CAAC;EAE9B,OAAOD,OAAO,CAAC,MAAM;IAAA,IAAAc,QAAA;IACnB,IAAIR,IAAI,IAAI,IAAI,IAAIE,WAAW,IAAI,IAAI,EAAE;MACvC,OAAO,IAAIL,IAAI,CAAC,EAAE,CAAC;IACrB;IAEA,MAAMY,GAAG,GAAGT,IAAI,YAAYH,IAAI,GAAGG,IAAI,GAAG,IAAIH,IAAI,CAACG,IAAI,CAAC;IAExD,IAAI,CAACC,SAAS,EAAE;MACd,OAAOQ,GAAG;IACZ;IAEA,IAAIH,KAAK,CAACI,OAAO,EAAE;MACjBD,GAAG,CAACE,uBAAuB,CAACJ,QAAQ,CAACK,MAAM,CAAC;IAC9C;;IAEA;IACA,IAAIH,GAAG,CAACI,oBAAoB,CAACX,WAAW,CAAC,EAAE;MACzC,OAAOA,WAAW,IAAIO,GAAG;IAC3B;IAEA,MAAMK,YAAY,GAChBR,KAAK,CAACI,OAAO,KAAK,IAAI,IACtBN,aAAa,KAAKE,KAAK,CAACI,OAAO,IAC/B,CAAC,EAAAF,QAAA,GAAAN,WAAW,qBAAAa,QAAA,CAAAC,IAAA,CAAAC,IAAA,CAAAC,2BAAA,CAAAV,QAAA,GAAAA,QAAA,KAAaF,KAAK,CAACG,GAAG,CAAC;IAErC,IAAIK,YAAY,EAAE;MAChBX,cAAc,CAACM,GAAG,CAAC;MACnBJ,gBAAgB,CAACC,KAAK,CAACI,OAAO,CAAC;MAC/B,OAAOD,GAAG;IACZ;IAEA,OAAOP,WAAW,IAAI,IAAIL,IAAI,CAAC,EAAE,CAAC;EACpC,CAAC,EAAE,CACDG,IAAI,EACJE,WAAW,EACXD,SAAS,EACTK,KAAK,CAACI,OAAO,EACbJ,KAAK,CAACG,GAAG,EACTL,aAAa,EACbG,QAAQ,CAACK,MAAM,CAChB,CAAC;AACJ,CAAC;;AAED;AACA;AACA,OAAO,MAAMO,QAAQ,GAAGA,CACtBnB,IAAoB,EACpBoB,OAA+C,KACS;EACxD,MAAM;IAAEnB,SAAS,GAAG,KAAK;IAAE,GAAGoB;EAAa,CAAC,GAAGD,OAAO,IAAI,CAAC,CAAC;EAE5D,MAAMX,GAAG,GAAGV,MAAM,CAACC,IAAI,EAAEC,SAAS,CAAC;EAEnC,OAAOH,iBAAiB,CAAC,OAAO,EAAEW,GAAG,EAAE;IACrCa,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC;IACnD,GAAGD;EACL,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"usePanel.js","names":["useState","useMemo","useLocation","useRouteMatch","Href","useModularUIBasic","useUrl","href","fromRoute","previousUrl","setPreviousUrl","previousExact","setPreviousExact","match","location","_context","url","isExact","addParametersFromString","search","equalsWithParameters","shouldUpdate","Function","call","bind","_startsWithInstanceProperty","usePanel","options","basicOptions","expectedModels","origin","contextPath"],"sources":["../../src/hooks/usePanel.js"],"sourcesContent":["// @flow\nimport { useState, useMemo } from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router\";\nimport Href from \"../models/href/Href\";\nimport { useModularUIBasic } from \"./useModularUIBasic\";\n\nimport type { HookOptions } from \"./useModularUIBasic\";\nimport type GroupingPanelModel from \"../models/panels/GroupingPanelModel\";\nimport type ListModel from \"../models/list/ListModel\";\nimport type DetailModel from \"../models/detail/DetailModel\";\n\nconst useUrl = (href?: string | Href, fromRoute: boolean = false) => {\n const [previousUrl, setPreviousUrl] = useState(null);\n const [previousExact, setPreviousExact] = useState(false);\n\n const match = useRouteMatch();\n const location = useLocation();\n\n return useMemo(() => {\n if (href == null && previousUrl == null) {\n return new Href(\"\");\n }\n\n const url = href instanceof Href ? href : new Href(href);\n\n if (!fromRoute) {\n return url;\n }\n\n if (match.isExact) {\n url.addParametersFromString(location.search);\n }\n\n // Check equality to prevent unnecessary state updates\n if (url.equalsWithParameters(previousUrl)) {\n return previousUrl || url;\n }\n\n const shouldUpdate =\n match.isExact === true ||\n previousExact === match.isExact ||\n !previousUrl?.startsWith(match.url);\n\n if (shouldUpdate) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n return url;\n }\n\n return previousUrl || new Href(\"\");\n }, [\n href,\n previousUrl,\n fromRoute,\n match.isExact,\n match.url,\n previousExact,\n location.search,\n ]);\n};\n\n/**\n */\nexport const usePanel = (\n href?: string | Href,\n options?: HookOptions & { fromRoute?: boolean },\n): ListModel | GroupingPanelModel | DetailModel | null => {\n const url = useUrl(href, options?.fromRoute || false);\n const basicOptions = {\n expectedModels: [\"List\", \"GroupingPanel\", \"Detail\"],\n origin: options?.origin,\n contextPath: options?.contextPath,\n };\n\n return useModularUIBasic(\"panel\", url, basicOptions);\n};\n"],"mappings":";AACA,SAASA,QAAQ,EAAEC,OAAO,QAAQ,OAAO;AACzC,SAASC,WAAW,EAAEC,aAAa,QAAQ,cAAc;AACzD,OAAOC,IAAI,MAAM,qBAAqB;AACtC,SAASC,iBAAiB,QAAQ,qBAAqB;AAOvD,MAAMC,MAAM,GAAGA,CAACC,IAAoB,EAAEC,SAAkB,GAAG,KAAK,KAAK;EACnE,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGV,QAAQ,CAAC,IAAI,CAAC;EACpD,MAAM,CAACW,aAAa,EAAEC,gBAAgB,CAAC,GAAGZ,QAAQ,CAAC,KAAK,CAAC;EAEzD,MAAMa,KAAK,GAAGV,aAAa,CAAC,CAAC;EAC7B,MAAMW,QAAQ,GAAGZ,WAAW,CAAC,CAAC;EAE9B,OAAOD,OAAO,CAAC,MAAM;IAAA,IAAAc,QAAA;IACnB,IAAIR,IAAI,IAAI,IAAI,IAAIE,WAAW,IAAI,IAAI,EAAE;MACvC,OAAO,IAAIL,IAAI,CAAC,EAAE,CAAC;IACrB;IAEA,MAAMY,GAAG,GAAGT,IAAI,YAAYH,IAAI,GAAGG,IAAI,GAAG,IAAIH,IAAI,CAACG,IAAI,CAAC;IAExD,IAAI,CAACC,SAAS,EAAE;MACd,OAAOQ,GAAG;IACZ;IAEA,IAAIH,KAAK,CAACI,OAAO,EAAE;MACjBD,GAAG,CAACE,uBAAuB,CAACJ,QAAQ,CAACK,MAAM,CAAC;IAC9C;;IAEA;IACA,IAAIH,GAAG,CAACI,oBAAoB,CAACX,WAAW,CAAC,EAAE;MACzC,OAAOA,WAAW,IAAIO,GAAG;IAC3B;IAEA,MAAMK,YAAY,GAChBR,KAAK,CAACI,OAAO,KAAK,IAAI,IACtBN,aAAa,KAAKE,KAAK,CAACI,OAAO,IAC/B,CAAC,EAAAF,QAAA,GAAAN,WAAW,qBAAAa,QAAA,CAAAC,IAAA,CAAAC,IAAA,CAAAC,2BAAA,CAAAV,QAAA,GAAAA,QAAA,KAAaF,KAAK,CAACG,GAAG,CAAC;IAErC,IAAIK,YAAY,EAAE;MAChBX,cAAc,CAACM,GAAG,CAAC;MACnBJ,gBAAgB,CAACC,KAAK,CAACI,OAAO,CAAC;MAC/B,OAAOD,GAAG;IACZ;IAEA,OAAOP,WAAW,IAAI,IAAIL,IAAI,CAAC,EAAE,CAAC;EACpC,CAAC,EAAE,CACDG,IAAI,EACJE,WAAW,EACXD,SAAS,EACTK,KAAK,CAACI,OAAO,EACbJ,KAAK,CAACG,GAAG,EACTL,aAAa,EACbG,QAAQ,CAACK,MAAM,CAChB,CAAC;AACJ,CAAC;;AAED;AACA;AACA,OAAO,MAAMO,QAAQ,GAAGA,CACtBnB,IAAoB,EACpBoB,OAA+C,KACS;EACxD,MAAMX,GAAG,GAAGV,MAAM,CAACC,IAAI,EAAEoB,OAAO,EAAEnB,SAAS,IAAI,KAAK,CAAC;EACrD,MAAMoB,YAAY,GAAG;IACnBC,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC;IACnDC,MAAM,EAAEH,OAAO,EAAEG,MAAM;IACvBC,WAAW,EAAEJ,OAAO,EAAEI;EACxB,CAAC;EAED,OAAO1B,iBAAiB,CAAC,OAAO,EAAEW,GAAG,EAAEY,YAAY,CAAC;AACtD,CAAC","ignoreList":[]}
@@ -149,6 +149,8 @@ export default class FilterCollection extends BaseCollection {
149
149
  var _context7;
150
150
  let data = {};
151
151
  _filterInstanceProperty(_context7 = this).call(_context7, f => f.parameterType === PARAMETER_TYPES.BODY && f.hasValue()).forEach(f => {
152
+ // $FlowIgnore[cannot-spread-indexer]
153
+ // $FlowIgnore[exponential-spread]
152
154
  data = {
153
155
  ...data,
154
156
  ...f.formdata
@@ -198,6 +198,8 @@ export default class FilterCollection extends BaseCollection<FilterType> {
198
198
  this.filter(
199
199
  (f) => f.parameterType === PARAMETER_TYPES.BODY && f.hasValue(),
200
200
  ).forEach((f) => {
201
+ // $FlowIgnore[cannot-spread-indexer]
202
+ // $FlowIgnore[exponential-spread]
201
203
  data = {
202
204
  ...data,
203
205
  ...f.formdata,
@@ -1 +1 @@
1
- {"version":3,"file":"FilterCollection.js","names":["BaseCollection","StringFilterModel","RangeFilterModel","AssignmentFilterModel","ConceptIndexFilterModel","CompositeAttributeModel","FilterModel","PARAMETER_TYPES","FilterCollection","constructor","data","contributions","modelOptions","Array","isArray","_filterInstanceProperty","_context","_context2","collection","_mapInstanceProperty","call","filterContribution","_Object$keys","filterKey","filterData","filterContributionByKey","filter","createFilter","dynamicschema","listkey","contexts","contextid","_context3","filterContext","_findInstanceProperty","context","id","type","_includesInstanceProperty","reset","_context4","checkRangeFilterByAttributeKey","key","rangeAttribute","attribute","start","end","checkAssignmentFilterByAttributeKey","user","assignmenttype","getFilterByAttributeKey","_context5","update","value","_context6","filterToUpdate","parentKey","Error","newFilter","clone","name","isValid","every","hasActiveFilters","some","isActive","formdata","_context7","f","parameterType","BODY","hasValue","forEach"],"sources":["../../../src/models/filters/FilterCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport StringFilterModel from \"../filters/StringFilterModel\";\nimport RangeFilterModel from \"../filters/RangeFilterModel\";\nimport AssignmentFilterModel from \"../filters/AssignmentFilterModel\";\nimport ConceptIndexFilterModel from \"../filters/ConceptIndexFilterModel\";\nimport CompositeAttributeModel from \"../attributes/CompositeAttributeModel\";\nimport FilterModel from \"../filters/FilterModel\";\n\nimport type { AttributeType, FilterType, ModelOptions } from \"../types\";\nimport { PARAMETER_TYPES } from \"../../constants\";\n\n/**\n * Contains a collection of filters\n */\nexport default class FilterCollection extends BaseCollection<FilterType> {\n /**\n * Construct a collection of filters\n */\n constructor(\n data: Object = {},\n contributions: Object = {},\n modelOptions?: ModelOptions,\n ) {\n super();\n\n if (data && contributions && Array.isArray(contributions.filter)) {\n this.collection = contributions.filter\n .filter((filterContribution) => Object.keys(filterContribution)[0])\n .map((filterContribution) => {\n const [filterKey] = Object.keys(filterContribution);\n const filterData = data[filterKey];\n const filterContributionByKey = filterContribution[filterKey];\n\n const filter = this.createFilter(\n filterKey,\n {\n ...filterData,\n dynamicschema: contributions.dynamicschema,\n },\n filterContributionByKey,\n modelOptions,\n );\n\n if (contributions.listkey) {\n filter.listkey = contributions.listkey;\n }\n\n if (contributions.contexts && filterContributionByKey.contextid) {\n const filterContext = contributions.contexts.find(\n (context) => context.id === filterContributionByKey.contextid,\n );\n if (filterContext) {\n filter.context = filterContext;\n }\n }\n\n return filter;\n });\n }\n }\n\n /**\n */\n createFilter(\n filterKey: string,\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ): FilterType {\n const type = contributions.type || \"stringfilter\";\n if (type === \"choicefilter\" && filterKey === \"index\") {\n return new ConceptIndexFilterModel(data, contributions, modelOptions);\n }\n\n if (type.includes(\"rangefilter\")) {\n return new RangeFilterModel(data, contributions, modelOptions);\n }\n\n if (type === \"assignmentfilter\") {\n return new AssignmentFilterModel(data, contributions, modelOptions);\n }\n\n if (type === \"stringfilter\") {\n return new StringFilterModel(data, contributions, modelOptions);\n }\n\n return new FilterModel(data, contributions, modelOptions);\n }\n\n /**\n * Call the reset function on all filters\n *\n * @see {FilterType#reset()}\n */\n reset(): FilterCollection {\n this.collection = this.collection.map((filter) => filter.reset());\n\n return this;\n }\n\n /**\n * Checks if range attribute key equals key\n */\n checkRangeFilterByAttributeKey(\n filter: RangeFilterModel,\n key: string,\n ): boolean {\n const rangeAttribute = filter.attribute;\n\n if (rangeAttribute instanceof CompositeAttributeModel) {\n return (\n rangeAttribute.key === key ||\n (rangeAttribute.start && rangeAttribute.start.key === key) ||\n (rangeAttribute.end && rangeAttribute.end.key === key)\n );\n }\n\n return false;\n }\n\n /**\n * Check if assignment filter attribute matches key\n */\n checkAssignmentFilterByAttributeKey(\n filter: AssignmentFilterModel,\n key: string,\n ): boolean {\n return (\n filter.key === key ||\n filter.user?.key === key ||\n filter.assignmenttype?.key === key\n );\n }\n\n /**\n * Getting the filter by name\n */\n getFilterByAttributeKey(key: string): FilterType | null {\n return (\n this.find((filter) => {\n if (filter instanceof RangeFilterModel) {\n return this.checkRangeFilterByAttributeKey(filter, key);\n }\n\n if (filter instanceof AssignmentFilterModel) {\n return this.checkAssignmentFilterByAttributeKey(filter, key);\n }\n\n return filter.attribute?.key === key;\n }) || null\n );\n }\n\n /**\n * Update Filter by input name and value\n */\n update(attribute: AttributeType, value: string): void {\n const filterToUpdate = attribute.parentKey\n ? this.getFilterByAttributeKey(attribute.parentKey)\n : this.getFilterByAttributeKey(attribute.key);\n\n if (!filterToUpdate) {\n throw new Error(`Can not find filter by attribute key: ${attribute.key}`);\n }\n\n const newFilter = filterToUpdate.clone();\n newFilter.update(attribute, value);\n\n this.collection = this.collection.map((filter) => {\n if (filter.name === newFilter.name) {\n return newFilter;\n }\n\n return filter;\n });\n }\n\n /**\n * Retrieve if all filters are valid\n */\n get isValid(): boolean {\n return this.collection.every((filter) => filter.isValid);\n }\n\n /**\n * Indicates if an active filter is present in the collection\n */\n hasActiveFilters(): boolean {\n return this.collection.some((filter) => filter.isActive());\n }\n\n /**\n */\n get formdata(): { [string]: any } | null {\n let data = {};\n this.filter(\n (f) => f.parameterType === PARAMETER_TYPES.BODY && f.hasValue(),\n ).forEach((f) => {\n data = {\n ...data,\n ...f.formdata,\n };\n });\n return data;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FilterCollection.js","names":["BaseCollection","StringFilterModel","RangeFilterModel","AssignmentFilterModel","ConceptIndexFilterModel","CompositeAttributeModel","FilterModel","PARAMETER_TYPES","FilterCollection","constructor","data","contributions","modelOptions","Array","isArray","_filterInstanceProperty","_context","_context2","collection","_mapInstanceProperty","call","filterContribution","_Object$keys","filterKey","filterData","filterContributionByKey","filter","createFilter","dynamicschema","listkey","contexts","contextid","_context3","filterContext","_findInstanceProperty","context","id","type","_includesInstanceProperty","reset","_context4","checkRangeFilterByAttributeKey","key","rangeAttribute","attribute","start","end","checkAssignmentFilterByAttributeKey","user","assignmenttype","getFilterByAttributeKey","_context5","update","value","_context6","filterToUpdate","parentKey","Error","newFilter","clone","name","isValid","every","hasActiveFilters","some","isActive","formdata","_context7","f","parameterType","BODY","hasValue","forEach"],"sources":["../../../src/models/filters/FilterCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport StringFilterModel from \"../filters/StringFilterModel\";\nimport RangeFilterModel from \"../filters/RangeFilterModel\";\nimport AssignmentFilterModel from \"../filters/AssignmentFilterModel\";\nimport ConceptIndexFilterModel from \"../filters/ConceptIndexFilterModel\";\nimport CompositeAttributeModel from \"../attributes/CompositeAttributeModel\";\nimport FilterModel from \"../filters/FilterModel\";\n\nimport type { AttributeType, FilterType, ModelOptions } from \"../types\";\nimport { PARAMETER_TYPES } from \"../../constants\";\n\n/**\n * Contains a collection of filters\n */\nexport default class FilterCollection extends BaseCollection<FilterType> {\n /**\n * Construct a collection of filters\n */\n constructor(\n data: Object = {},\n contributions: Object = {},\n modelOptions?: ModelOptions,\n ) {\n super();\n\n if (data && contributions && Array.isArray(contributions.filter)) {\n this.collection = contributions.filter\n .filter((filterContribution) => Object.keys(filterContribution)[0])\n .map((filterContribution) => {\n const [filterKey] = Object.keys(filterContribution);\n const filterData = data[filterKey];\n const filterContributionByKey = filterContribution[filterKey];\n\n const filter = this.createFilter(\n filterKey,\n {\n ...filterData,\n dynamicschema: contributions.dynamicschema,\n },\n filterContributionByKey,\n modelOptions,\n );\n\n if (contributions.listkey) {\n filter.listkey = contributions.listkey;\n }\n\n if (contributions.contexts && filterContributionByKey.contextid) {\n const filterContext = contributions.contexts.find(\n (context) => context.id === filterContributionByKey.contextid,\n );\n if (filterContext) {\n filter.context = filterContext;\n }\n }\n\n return filter;\n });\n }\n }\n\n /**\n */\n createFilter(\n filterKey: string,\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ): FilterType {\n const type = contributions.type || \"stringfilter\";\n if (type === \"choicefilter\" && filterKey === \"index\") {\n return new ConceptIndexFilterModel(data, contributions, modelOptions);\n }\n\n if (type.includes(\"rangefilter\")) {\n return new RangeFilterModel(data, contributions, modelOptions);\n }\n\n if (type === \"assignmentfilter\") {\n return new AssignmentFilterModel(data, contributions, modelOptions);\n }\n\n if (type === \"stringfilter\") {\n return new StringFilterModel(data, contributions, modelOptions);\n }\n\n return new FilterModel(data, contributions, modelOptions);\n }\n\n /**\n * Call the reset function on all filters\n *\n * @see {FilterType#reset()}\n */\n reset(): FilterCollection {\n this.collection = this.collection.map((filter) => filter.reset());\n\n return this;\n }\n\n /**\n * Checks if range attribute key equals key\n */\n checkRangeFilterByAttributeKey(\n filter: RangeFilterModel,\n key: string,\n ): boolean {\n const rangeAttribute = filter.attribute;\n\n if (rangeAttribute instanceof CompositeAttributeModel) {\n return (\n rangeAttribute.key === key ||\n (rangeAttribute.start && rangeAttribute.start.key === key) ||\n (rangeAttribute.end && rangeAttribute.end.key === key)\n );\n }\n\n return false;\n }\n\n /**\n * Check if assignment filter attribute matches key\n */\n checkAssignmentFilterByAttributeKey(\n filter: AssignmentFilterModel,\n key: string,\n ): boolean {\n return (\n filter.key === key ||\n filter.user?.key === key ||\n filter.assignmenttype?.key === key\n );\n }\n\n /**\n * Getting the filter by name\n */\n getFilterByAttributeKey(key: string): FilterType | null {\n return (\n this.find((filter) => {\n if (filter instanceof RangeFilterModel) {\n return this.checkRangeFilterByAttributeKey(filter, key);\n }\n\n if (filter instanceof AssignmentFilterModel) {\n return this.checkAssignmentFilterByAttributeKey(filter, key);\n }\n\n return filter.attribute?.key === key;\n }) || null\n );\n }\n\n /**\n * Update Filter by input name and value\n */\n update(attribute: AttributeType, value: string): void {\n const filterToUpdate = attribute.parentKey\n ? this.getFilterByAttributeKey(attribute.parentKey)\n : this.getFilterByAttributeKey(attribute.key);\n\n if (!filterToUpdate) {\n throw new Error(`Can not find filter by attribute key: ${attribute.key}`);\n }\n\n const newFilter = filterToUpdate.clone();\n newFilter.update(attribute, value);\n\n this.collection = this.collection.map((filter) => {\n if (filter.name === newFilter.name) {\n return newFilter;\n }\n\n return filter;\n });\n }\n\n /**\n * Retrieve if all filters are valid\n */\n get isValid(): boolean {\n return this.collection.every((filter) => filter.isValid);\n }\n\n /**\n * Indicates if an active filter is present in the collection\n */\n hasActiveFilters(): boolean {\n return this.collection.some((filter) => filter.isActive());\n }\n\n /**\n */\n get formdata(): { [string]: any } | null {\n let data = {};\n this.filter(\n (f) => f.parameterType === PARAMETER_TYPES.BODY && f.hasValue(),\n ).forEach((f) => {\n // $FlowIgnore[cannot-spread-indexer]\n // $FlowIgnore[exponential-spread]\n data = {\n ...data,\n ...f.formdata,\n };\n });\n return data;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -45,15 +45,13 @@ const useUrl = (href, fromRoute = false) => {
45
45
  /**
46
46
  */
47
47
  const usePanel = (href, options) => {
48
- const {
49
- fromRoute = false,
50
- ...modUIOptions
51
- } = options || {};
52
- const url = useUrl(href, fromRoute);
53
- return (0, _useModularUIBasic.useModularUIBasic)("panel", url, {
48
+ const url = useUrl(href, options?.fromRoute || false);
49
+ const basicOptions = {
54
50
  expectedModels: ["List", "GroupingPanel", "Detail"],
55
- ...modUIOptions
56
- });
51
+ origin: options?.origin,
52
+ contextPath: options?.contextPath
53
+ };
54
+ return (0, _useModularUIBasic.useModularUIBasic)("panel", url, basicOptions);
57
55
  };
58
56
  exports.usePanel = usePanel;
59
57
  //# sourceMappingURL=usePanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePanel.js","names":["_react","require","_reactRouter","_Href","_interopRequireDefault","_useModularUIBasic","useUrl","href","fromRoute","previousUrl","setPreviousUrl","useState","previousExact","setPreviousExact","match","useRouteMatch","location","useLocation","useMemo","_context","Href","url","isExact","addParametersFromString","search","equalsWithParameters","shouldUpdate","Function","call","bind","_startsWith","default","usePanel","options","modUIOptions","useModularUIBasic","expectedModels","exports"],"sources":["../../src/hooks/usePanel.js"],"sourcesContent":["// @flow\nimport { useState, useMemo } from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router\";\nimport Href from \"../models/href/Href\";\nimport { useModularUIBasic } from \"./useModularUIBasic\";\n\nimport type { HookOptions } from \"./useModularUIBasic\";\nimport type GroupingPanelModel from \"../models/panels/GroupingPanelModel\";\nimport type ListModel from \"../models/list/ListModel\";\nimport type DetailModel from \"../models/detail/DetailModel\";\n\nconst useUrl = (href?: string | Href, fromRoute: boolean = false) => {\n const [previousUrl, setPreviousUrl] = useState(null);\n const [previousExact, setPreviousExact] = useState(false);\n\n const match = useRouteMatch();\n const location = useLocation();\n\n return useMemo(() => {\n if (href == null && previousUrl == null) {\n return new Href(\"\");\n }\n\n const url = href instanceof Href ? href : new Href(href);\n\n if (!fromRoute) {\n return url;\n }\n\n if (match.isExact) {\n url.addParametersFromString(location.search);\n }\n\n // Check equality to prevent unnecessary state updates\n if (url.equalsWithParameters(previousUrl)) {\n return previousUrl || url;\n }\n\n const shouldUpdate =\n match.isExact === true ||\n previousExact === match.isExact ||\n !previousUrl?.startsWith(match.url);\n\n if (shouldUpdate) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n return url;\n }\n\n return previousUrl || new Href(\"\");\n }, [\n href,\n previousUrl,\n fromRoute,\n match.isExact,\n match.url,\n previousExact,\n location.search,\n ]);\n};\n\n/**\n */\nexport const usePanel = (\n href?: string | Href,\n options?: HookOptions & { fromRoute?: boolean },\n): ListModel | GroupingPanelModel | DetailModel | null => {\n const { fromRoute = false, ...modUIOptions } = options || {};\n\n const url = useUrl(href, fromRoute);\n\n return useModularUIBasic(\"panel\", url, {\n expectedModels: [\"List\", \"GroupingPanel\", \"Detail\"],\n ...modUIOptions,\n });\n};\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AAOA,MAAMK,MAAM,GAAGA,CAACC,IAAoB,EAAEC,SAAkB,GAAG,KAAK,KAAK;EACnE,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAC,IAAI,CAAC;EACpD,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EAEzD,MAAMG,KAAK,GAAG,IAAAC,0BAAa,EAAC,CAAC;EAC7B,MAAMC,QAAQ,GAAG,IAAAC,wBAAW,EAAC,CAAC;EAE9B,OAAO,IAAAC,cAAO,EAAC,MAAM;IAAA,IAAAC,QAAA;IACnB,IAAIZ,IAAI,IAAI,IAAI,IAAIE,WAAW,IAAI,IAAI,EAAE;MACvC,OAAO,IAAIW,aAAI,CAAC,EAAE,CAAC;IACrB;IAEA,MAAMC,GAAG,GAAGd,IAAI,YAAYa,aAAI,GAAGb,IAAI,GAAG,IAAIa,aAAI,CAACb,IAAI,CAAC;IAExD,IAAI,CAACC,SAAS,EAAE;MACd,OAAOa,GAAG;IACZ;IAEA,IAAIP,KAAK,CAACQ,OAAO,EAAE;MACjBD,GAAG,CAACE,uBAAuB,CAACP,QAAQ,CAACQ,MAAM,CAAC;IAC9C;;IAEA;IACA,IAAIH,GAAG,CAACI,oBAAoB,CAAChB,WAAW,CAAC,EAAE;MACzC,OAAOA,WAAW,IAAIY,GAAG;IAC3B;IAEA,MAAMK,YAAY,GAChBZ,KAAK,CAACQ,OAAO,KAAK,IAAI,IACtBV,aAAa,KAAKE,KAAK,CAACQ,OAAO,IAC/B,CAAC,EAAAH,QAAA,GAAAV,WAAW,qBAAAkB,QAAA,CAAAC,IAAA,CAAAC,IAAA,KAAAC,WAAA,CAAAC,OAAA,EAAAZ,QAAA,GAAAA,QAAA,KAAaL,KAAK,CAACO,GAAG,CAAC;IAErC,IAAIK,YAAY,EAAE;MAChBhB,cAAc,CAACW,GAAG,CAAC;MACnBR,gBAAgB,CAACC,KAAK,CAACQ,OAAO,CAAC;MAC/B,OAAOD,GAAG;IACZ;IAEA,OAAOZ,WAAW,IAAI,IAAIW,aAAI,CAAC,EAAE,CAAC;EACpC,CAAC,EAAE,CACDb,IAAI,EACJE,WAAW,EACXD,SAAS,EACTM,KAAK,CAACQ,OAAO,EACbR,KAAK,CAACO,GAAG,EACTT,aAAa,EACbI,QAAQ,CAACQ,MAAM,CAChB,CAAC;AACJ,CAAC;;AAED;AACA;AACO,MAAMQ,QAAQ,GAAGA,CACtBzB,IAAoB,EACpB0B,OAA+C,KACS;EACxD,MAAM;IAAEzB,SAAS,GAAG,KAAK;IAAE,GAAG0B;EAAa,CAAC,GAAGD,OAAO,IAAI,CAAC,CAAC;EAE5D,MAAMZ,GAAG,GAAGf,MAAM,CAACC,IAAI,EAAEC,SAAS,CAAC;EAEnC,OAAO,IAAA2B,oCAAiB,EAAC,OAAO,EAAEd,GAAG,EAAE;IACrCe,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC;IACnD,GAAGF;EACL,CAAC,CAAC;AACJ,CAAC;AAACG,OAAA,CAAAL,QAAA,GAAAA,QAAA","ignoreList":[]}
1
+ {"version":3,"file":"usePanel.js","names":["_react","require","_reactRouter","_Href","_interopRequireDefault","_useModularUIBasic","useUrl","href","fromRoute","previousUrl","setPreviousUrl","useState","previousExact","setPreviousExact","match","useRouteMatch","location","useLocation","useMemo","_context","Href","url","isExact","addParametersFromString","search","equalsWithParameters","shouldUpdate","Function","call","bind","_startsWith","default","usePanel","options","basicOptions","expectedModels","origin","contextPath","useModularUIBasic","exports"],"sources":["../../src/hooks/usePanel.js"],"sourcesContent":["// @flow\nimport { useState, useMemo } from \"react\";\nimport { useLocation, useRouteMatch } from \"react-router\";\nimport Href from \"../models/href/Href\";\nimport { useModularUIBasic } from \"./useModularUIBasic\";\n\nimport type { HookOptions } from \"./useModularUIBasic\";\nimport type GroupingPanelModel from \"../models/panels/GroupingPanelModel\";\nimport type ListModel from \"../models/list/ListModel\";\nimport type DetailModel from \"../models/detail/DetailModel\";\n\nconst useUrl = (href?: string | Href, fromRoute: boolean = false) => {\n const [previousUrl, setPreviousUrl] = useState(null);\n const [previousExact, setPreviousExact] = useState(false);\n\n const match = useRouteMatch();\n const location = useLocation();\n\n return useMemo(() => {\n if (href == null && previousUrl == null) {\n return new Href(\"\");\n }\n\n const url = href instanceof Href ? href : new Href(href);\n\n if (!fromRoute) {\n return url;\n }\n\n if (match.isExact) {\n url.addParametersFromString(location.search);\n }\n\n // Check equality to prevent unnecessary state updates\n if (url.equalsWithParameters(previousUrl)) {\n return previousUrl || url;\n }\n\n const shouldUpdate =\n match.isExact === true ||\n previousExact === match.isExact ||\n !previousUrl?.startsWith(match.url);\n\n if (shouldUpdate) {\n setPreviousUrl(url);\n setPreviousExact(match.isExact);\n return url;\n }\n\n return previousUrl || new Href(\"\");\n }, [\n href,\n previousUrl,\n fromRoute,\n match.isExact,\n match.url,\n previousExact,\n location.search,\n ]);\n};\n\n/**\n */\nexport const usePanel = (\n href?: string | Href,\n options?: HookOptions & { fromRoute?: boolean },\n): ListModel | GroupingPanelModel | DetailModel | null => {\n const url = useUrl(href, options?.fromRoute || false);\n const basicOptions = {\n expectedModels: [\"List\", \"GroupingPanel\", \"Detail\"],\n origin: options?.origin,\n contextPath: options?.contextPath,\n };\n\n return useModularUIBasic(\"panel\", url, basicOptions);\n};\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,kBAAA,GAAAJ,OAAA;AAOA,MAAMK,MAAM,GAAGA,CAACC,IAAoB,EAAEC,SAAkB,GAAG,KAAK,KAAK;EACnE,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAC,IAAI,CAAC;EACpD,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAG,IAAAF,eAAQ,EAAC,KAAK,CAAC;EAEzD,MAAMG,KAAK,GAAG,IAAAC,0BAAa,EAAC,CAAC;EAC7B,MAAMC,QAAQ,GAAG,IAAAC,wBAAW,EAAC,CAAC;EAE9B,OAAO,IAAAC,cAAO,EAAC,MAAM;IAAA,IAAAC,QAAA;IACnB,IAAIZ,IAAI,IAAI,IAAI,IAAIE,WAAW,IAAI,IAAI,EAAE;MACvC,OAAO,IAAIW,aAAI,CAAC,EAAE,CAAC;IACrB;IAEA,MAAMC,GAAG,GAAGd,IAAI,YAAYa,aAAI,GAAGb,IAAI,GAAG,IAAIa,aAAI,CAACb,IAAI,CAAC;IAExD,IAAI,CAACC,SAAS,EAAE;MACd,OAAOa,GAAG;IACZ;IAEA,IAAIP,KAAK,CAACQ,OAAO,EAAE;MACjBD,GAAG,CAACE,uBAAuB,CAACP,QAAQ,CAACQ,MAAM,CAAC;IAC9C;;IAEA;IACA,IAAIH,GAAG,CAACI,oBAAoB,CAAChB,WAAW,CAAC,EAAE;MACzC,OAAOA,WAAW,IAAIY,GAAG;IAC3B;IAEA,MAAMK,YAAY,GAChBZ,KAAK,CAACQ,OAAO,KAAK,IAAI,IACtBV,aAAa,KAAKE,KAAK,CAACQ,OAAO,IAC/B,CAAC,EAAAH,QAAA,GAAAV,WAAW,qBAAAkB,QAAA,CAAAC,IAAA,CAAAC,IAAA,KAAAC,WAAA,CAAAC,OAAA,EAAAZ,QAAA,GAAAA,QAAA,KAAaL,KAAK,CAACO,GAAG,CAAC;IAErC,IAAIK,YAAY,EAAE;MAChBhB,cAAc,CAACW,GAAG,CAAC;MACnBR,gBAAgB,CAACC,KAAK,CAACQ,OAAO,CAAC;MAC/B,OAAOD,GAAG;IACZ;IAEA,OAAOZ,WAAW,IAAI,IAAIW,aAAI,CAAC,EAAE,CAAC;EACpC,CAAC,EAAE,CACDb,IAAI,EACJE,WAAW,EACXD,SAAS,EACTM,KAAK,CAACQ,OAAO,EACbR,KAAK,CAACO,GAAG,EACTT,aAAa,EACbI,QAAQ,CAACQ,MAAM,CAChB,CAAC;AACJ,CAAC;;AAED;AACA;AACO,MAAMQ,QAAQ,GAAGA,CACtBzB,IAAoB,EACpB0B,OAA+C,KACS;EACxD,MAAMZ,GAAG,GAAGf,MAAM,CAACC,IAAI,EAAE0B,OAAO,EAAEzB,SAAS,IAAI,KAAK,CAAC;EACrD,MAAM0B,YAAY,GAAG;IACnBC,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC;IACnDC,MAAM,EAAEH,OAAO,EAAEG,MAAM;IACvBC,WAAW,EAAEJ,OAAO,EAAEI;EACxB,CAAC;EAED,OAAO,IAAAC,oCAAiB,EAAC,OAAO,EAAEjB,GAAG,EAAEa,YAAY,CAAC;AACtD,CAAC;AAACK,OAAA,CAAAP,QAAA,GAAAA,QAAA","ignoreList":[]}
@@ -155,6 +155,8 @@ class FilterCollection extends _BaseCollection.default {
155
155
  var _context7;
156
156
  let data = {};
157
157
  (0, _filter.default)(_context7 = this).call(_context7, f => f.parameterType === _constants.PARAMETER_TYPES.BODY && f.hasValue()).forEach(f => {
158
+ // $FlowIgnore[cannot-spread-indexer]
159
+ // $FlowIgnore[exponential-spread]
158
160
  data = {
159
161
  ...data,
160
162
  ...f.formdata
@@ -1 +1 @@
1
- {"version":3,"file":"FilterCollection.js","names":["_BaseCollection","_interopRequireDefault","require","_StringFilterModel","_RangeFilterModel","_AssignmentFilterModel","_ConceptIndexFilterModel","_CompositeAttributeModel","_FilterModel","_constants","FilterCollection","BaseCollection","constructor","data","contributions","modelOptions","Array","isArray","_filter","default","_context","_context2","collection","_map","call","filterContribution","_keys","filterKey","filterData","filterContributionByKey","filter","createFilter","dynamicschema","listkey","contexts","contextid","_context3","filterContext","_find","context","id","type","ConceptIndexFilterModel","_includes","RangeFilterModel","AssignmentFilterModel","StringFilterModel","FilterModel","reset","_context4","checkRangeFilterByAttributeKey","key","rangeAttribute","attribute","CompositeAttributeModel","start","end","checkAssignmentFilterByAttributeKey","user","assignmenttype","getFilterByAttributeKey","_context5","update","value","_context6","filterToUpdate","parentKey","Error","newFilter","clone","name","isValid","every","hasActiveFilters","some","isActive","formdata","_context7","f","parameterType","PARAMETER_TYPES","BODY","hasValue","forEach","exports"],"sources":["../../../src/models/filters/FilterCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport StringFilterModel from \"../filters/StringFilterModel\";\nimport RangeFilterModel from \"../filters/RangeFilterModel\";\nimport AssignmentFilterModel from \"../filters/AssignmentFilterModel\";\nimport ConceptIndexFilterModel from \"../filters/ConceptIndexFilterModel\";\nimport CompositeAttributeModel from \"../attributes/CompositeAttributeModel\";\nimport FilterModel from \"../filters/FilterModel\";\n\nimport type { AttributeType, FilterType, ModelOptions } from \"../types\";\nimport { PARAMETER_TYPES } from \"../../constants\";\n\n/**\n * Contains a collection of filters\n */\nexport default class FilterCollection extends BaseCollection<FilterType> {\n /**\n * Construct a collection of filters\n */\n constructor(\n data: Object = {},\n contributions: Object = {},\n modelOptions?: ModelOptions,\n ) {\n super();\n\n if (data && contributions && Array.isArray(contributions.filter)) {\n this.collection = contributions.filter\n .filter((filterContribution) => Object.keys(filterContribution)[0])\n .map((filterContribution) => {\n const [filterKey] = Object.keys(filterContribution);\n const filterData = data[filterKey];\n const filterContributionByKey = filterContribution[filterKey];\n\n const filter = this.createFilter(\n filterKey,\n {\n ...filterData,\n dynamicschema: contributions.dynamicschema,\n },\n filterContributionByKey,\n modelOptions,\n );\n\n if (contributions.listkey) {\n filter.listkey = contributions.listkey;\n }\n\n if (contributions.contexts && filterContributionByKey.contextid) {\n const filterContext = contributions.contexts.find(\n (context) => context.id === filterContributionByKey.contextid,\n );\n if (filterContext) {\n filter.context = filterContext;\n }\n }\n\n return filter;\n });\n }\n }\n\n /**\n */\n createFilter(\n filterKey: string,\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ): FilterType {\n const type = contributions.type || \"stringfilter\";\n if (type === \"choicefilter\" && filterKey === \"index\") {\n return new ConceptIndexFilterModel(data, contributions, modelOptions);\n }\n\n if (type.includes(\"rangefilter\")) {\n return new RangeFilterModel(data, contributions, modelOptions);\n }\n\n if (type === \"assignmentfilter\") {\n return new AssignmentFilterModel(data, contributions, modelOptions);\n }\n\n if (type === \"stringfilter\") {\n return new StringFilterModel(data, contributions, modelOptions);\n }\n\n return new FilterModel(data, contributions, modelOptions);\n }\n\n /**\n * Call the reset function on all filters\n *\n * @see {FilterType#reset()}\n */\n reset(): FilterCollection {\n this.collection = this.collection.map((filter) => filter.reset());\n\n return this;\n }\n\n /**\n * Checks if range attribute key equals key\n */\n checkRangeFilterByAttributeKey(\n filter: RangeFilterModel,\n key: string,\n ): boolean {\n const rangeAttribute = filter.attribute;\n\n if (rangeAttribute instanceof CompositeAttributeModel) {\n return (\n rangeAttribute.key === key ||\n (rangeAttribute.start && rangeAttribute.start.key === key) ||\n (rangeAttribute.end && rangeAttribute.end.key === key)\n );\n }\n\n return false;\n }\n\n /**\n * Check if assignment filter attribute matches key\n */\n checkAssignmentFilterByAttributeKey(\n filter: AssignmentFilterModel,\n key: string,\n ): boolean {\n return (\n filter.key === key ||\n filter.user?.key === key ||\n filter.assignmenttype?.key === key\n );\n }\n\n /**\n * Getting the filter by name\n */\n getFilterByAttributeKey(key: string): FilterType | null {\n return (\n this.find((filter) => {\n if (filter instanceof RangeFilterModel) {\n return this.checkRangeFilterByAttributeKey(filter, key);\n }\n\n if (filter instanceof AssignmentFilterModel) {\n return this.checkAssignmentFilterByAttributeKey(filter, key);\n }\n\n return filter.attribute?.key === key;\n }) || null\n );\n }\n\n /**\n * Update Filter by input name and value\n */\n update(attribute: AttributeType, value: string): void {\n const filterToUpdate = attribute.parentKey\n ? this.getFilterByAttributeKey(attribute.parentKey)\n : this.getFilterByAttributeKey(attribute.key);\n\n if (!filterToUpdate) {\n throw new Error(`Can not find filter by attribute key: ${attribute.key}`);\n }\n\n const newFilter = filterToUpdate.clone();\n newFilter.update(attribute, value);\n\n this.collection = this.collection.map((filter) => {\n if (filter.name === newFilter.name) {\n return newFilter;\n }\n\n return filter;\n });\n }\n\n /**\n * Retrieve if all filters are valid\n */\n get isValid(): boolean {\n return this.collection.every((filter) => filter.isValid);\n }\n\n /**\n * Indicates if an active filter is present in the collection\n */\n hasActiveFilters(): boolean {\n return this.collection.some((filter) => filter.isActive());\n }\n\n /**\n */\n get formdata(): { [string]: any } | null {\n let data = {};\n this.filter(\n (f) => f.parameterType === PARAMETER_TYPES.BODY && f.hasValue(),\n ).forEach((f) => {\n data = {\n ...data,\n ...f.formdata,\n };\n });\n return data;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FilterCollection.js","names":["_BaseCollection","_interopRequireDefault","require","_StringFilterModel","_RangeFilterModel","_AssignmentFilterModel","_ConceptIndexFilterModel","_CompositeAttributeModel","_FilterModel","_constants","FilterCollection","BaseCollection","constructor","data","contributions","modelOptions","Array","isArray","_filter","default","_context","_context2","collection","_map","call","filterContribution","_keys","filterKey","filterData","filterContributionByKey","filter","createFilter","dynamicschema","listkey","contexts","contextid","_context3","filterContext","_find","context","id","type","ConceptIndexFilterModel","_includes","RangeFilterModel","AssignmentFilterModel","StringFilterModel","FilterModel","reset","_context4","checkRangeFilterByAttributeKey","key","rangeAttribute","attribute","CompositeAttributeModel","start","end","checkAssignmentFilterByAttributeKey","user","assignmenttype","getFilterByAttributeKey","_context5","update","value","_context6","filterToUpdate","parentKey","Error","newFilter","clone","name","isValid","every","hasActiveFilters","some","isActive","formdata","_context7","f","parameterType","PARAMETER_TYPES","BODY","hasValue","forEach","exports"],"sources":["../../../src/models/filters/FilterCollection.js"],"sourcesContent":["// @flow\nimport BaseCollection from \"../base/BaseCollection\";\n\nimport StringFilterModel from \"../filters/StringFilterModel\";\nimport RangeFilterModel from \"../filters/RangeFilterModel\";\nimport AssignmentFilterModel from \"../filters/AssignmentFilterModel\";\nimport ConceptIndexFilterModel from \"../filters/ConceptIndexFilterModel\";\nimport CompositeAttributeModel from \"../attributes/CompositeAttributeModel\";\nimport FilterModel from \"../filters/FilterModel\";\n\nimport type { AttributeType, FilterType, ModelOptions } from \"../types\";\nimport { PARAMETER_TYPES } from \"../../constants\";\n\n/**\n * Contains a collection of filters\n */\nexport default class FilterCollection extends BaseCollection<FilterType> {\n /**\n * Construct a collection of filters\n */\n constructor(\n data: Object = {},\n contributions: Object = {},\n modelOptions?: ModelOptions,\n ) {\n super();\n\n if (data && contributions && Array.isArray(contributions.filter)) {\n this.collection = contributions.filter\n .filter((filterContribution) => Object.keys(filterContribution)[0])\n .map((filterContribution) => {\n const [filterKey] = Object.keys(filterContribution);\n const filterData = data[filterKey];\n const filterContributionByKey = filterContribution[filterKey];\n\n const filter = this.createFilter(\n filterKey,\n {\n ...filterData,\n dynamicschema: contributions.dynamicschema,\n },\n filterContributionByKey,\n modelOptions,\n );\n\n if (contributions.listkey) {\n filter.listkey = contributions.listkey;\n }\n\n if (contributions.contexts && filterContributionByKey.contextid) {\n const filterContext = contributions.contexts.find(\n (context) => context.id === filterContributionByKey.contextid,\n );\n if (filterContext) {\n filter.context = filterContext;\n }\n }\n\n return filter;\n });\n }\n }\n\n /**\n */\n createFilter(\n filterKey: string,\n data: Object,\n contributions: Object,\n modelOptions?: ModelOptions,\n ): FilterType {\n const type = contributions.type || \"stringfilter\";\n if (type === \"choicefilter\" && filterKey === \"index\") {\n return new ConceptIndexFilterModel(data, contributions, modelOptions);\n }\n\n if (type.includes(\"rangefilter\")) {\n return new RangeFilterModel(data, contributions, modelOptions);\n }\n\n if (type === \"assignmentfilter\") {\n return new AssignmentFilterModel(data, contributions, modelOptions);\n }\n\n if (type === \"stringfilter\") {\n return new StringFilterModel(data, contributions, modelOptions);\n }\n\n return new FilterModel(data, contributions, modelOptions);\n }\n\n /**\n * Call the reset function on all filters\n *\n * @see {FilterType#reset()}\n */\n reset(): FilterCollection {\n this.collection = this.collection.map((filter) => filter.reset());\n\n return this;\n }\n\n /**\n * Checks if range attribute key equals key\n */\n checkRangeFilterByAttributeKey(\n filter: RangeFilterModel,\n key: string,\n ): boolean {\n const rangeAttribute = filter.attribute;\n\n if (rangeAttribute instanceof CompositeAttributeModel) {\n return (\n rangeAttribute.key === key ||\n (rangeAttribute.start && rangeAttribute.start.key === key) ||\n (rangeAttribute.end && rangeAttribute.end.key === key)\n );\n }\n\n return false;\n }\n\n /**\n * Check if assignment filter attribute matches key\n */\n checkAssignmentFilterByAttributeKey(\n filter: AssignmentFilterModel,\n key: string,\n ): boolean {\n return (\n filter.key === key ||\n filter.user?.key === key ||\n filter.assignmenttype?.key === key\n );\n }\n\n /**\n * Getting the filter by name\n */\n getFilterByAttributeKey(key: string): FilterType | null {\n return (\n this.find((filter) => {\n if (filter instanceof RangeFilterModel) {\n return this.checkRangeFilterByAttributeKey(filter, key);\n }\n\n if (filter instanceof AssignmentFilterModel) {\n return this.checkAssignmentFilterByAttributeKey(filter, key);\n }\n\n return filter.attribute?.key === key;\n }) || null\n );\n }\n\n /**\n * Update Filter by input name and value\n */\n update(attribute: AttributeType, value: string): void {\n const filterToUpdate = attribute.parentKey\n ? this.getFilterByAttributeKey(attribute.parentKey)\n : this.getFilterByAttributeKey(attribute.key);\n\n if (!filterToUpdate) {\n throw new Error(`Can not find filter by attribute key: ${attribute.key}`);\n }\n\n const newFilter = filterToUpdate.clone();\n newFilter.update(attribute, value);\n\n this.collection = this.collection.map((filter) => {\n if (filter.name === newFilter.name) {\n return newFilter;\n }\n\n return filter;\n });\n }\n\n /**\n * Retrieve if all filters are valid\n */\n get isValid(): boolean {\n return this.collection.every((filter) => filter.isValid);\n }\n\n /**\n * Indicates if an active filter is present in the collection\n */\n hasActiveFilters(): boolean {\n return this.collection.some((filter) => filter.isActive());\n }\n\n /**\n */\n get formdata(): { [string]: any } | null {\n let data = {};\n this.filter(\n (f) => f.parameterType === PARAMETER_TYPES.BODY && f.hasValue(),\n ).forEach((f) => {\n // $FlowIgnore[cannot-spread-indexer]\n // $FlowIgnore[exponential-spread]\n data = {\n ...data,\n ...f.formdata,\n };\n });\n return data;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beinformed/ui",
3
- "version": "1.64.0",
3
+ "version": "1.65.0",
4
4
  "description": "Toolbox for be informed javascript layouts",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "bugs": "https://support.beinformed.com",
@@ -65,12 +65,12 @@ export const usePanel = (
65
65
  href?: string | Href,
66
66
  options?: HookOptions & { fromRoute?: boolean },
67
67
  ): ListModel | GroupingPanelModel | DetailModel | null => {
68
- const { fromRoute = false, ...modUIOptions } = options || {};
69
-
70
- const url = useUrl(href, fromRoute);
71
-
72
- return useModularUIBasic("panel", url, {
68
+ const url = useUrl(href, options?.fromRoute || false);
69
+ const basicOptions = {
73
70
  expectedModels: ["List", "GroupingPanel", "Detail"],
74
- ...modUIOptions,
75
- });
71
+ origin: options?.origin,
72
+ contextPath: options?.contextPath,
73
+ };
74
+
75
+ return useModularUIBasic("panel", url, basicOptions);
76
76
  };
@@ -198,6 +198,8 @@ export default class FilterCollection extends BaseCollection<FilterType> {
198
198
  this.filter(
199
199
  (f) => f.parameterType === PARAMETER_TYPES.BODY && f.hasValue(),
200
200
  ).forEach((f) => {
201
+ // $FlowIgnore[cannot-spread-indexer]
202
+ // $FlowIgnore[exponential-spread]
201
203
  data = {
202
204
  ...data,
203
205
  ...f.formdata,