@beinformed/ui 1.12.2 → 1.13.3

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 (291) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/esm/builder/mergeLayoutHintConfigurations.js +3 -3
  3. package/esm/builder/mergeLayoutHintConfigurations.js.map +1 -1
  4. package/esm/constants/LayoutHintConfig.js +9 -0
  5. package/esm/constants/LayoutHintConfig.js.map +1 -1
  6. package/esm/constants/LayoutHints.js +5 -0
  7. package/esm/constants/LayoutHints.js.map +1 -1
  8. package/esm/constants/Settings.js +2 -1
  9. package/esm/constants/Settings.js.map +1 -1
  10. package/esm/exceptions/ConfigurationException.js +2 -1
  11. package/esm/exceptions/ConfigurationException.js.map +1 -1
  12. package/esm/exceptions/FetchException.js +4 -3
  13. package/esm/exceptions/FetchException.js.map +1 -1
  14. package/esm/exceptions/IllegalArgumentException.js +2 -1
  15. package/esm/exceptions/IllegalArgumentException.js.map +1 -1
  16. package/esm/exceptions/IllegalReturnException.js +2 -1
  17. package/esm/exceptions/IllegalReturnException.js.map +1 -1
  18. package/esm/exceptions/IllegalStateException.js +2 -1
  19. package/esm/exceptions/IllegalStateException.js.map +1 -1
  20. package/esm/exceptions/JsonParseException.js +2 -1
  21. package/esm/exceptions/JsonParseException.js.map +1 -1
  22. package/esm/exceptions/MissingPropertyException.js +2 -1
  23. package/esm/exceptions/MissingPropertyException.js.map +1 -1
  24. package/esm/exceptions/NetworkException.js +2 -1
  25. package/esm/exceptions/NetworkException.js.map +1 -1
  26. package/esm/exceptions/NotAllowedUriException.js +2 -1
  27. package/esm/exceptions/NotAllowedUriException.js.map +1 -1
  28. package/esm/exceptions/NotFoundException.js +2 -1
  29. package/esm/exceptions/NotFoundException.js.map +1 -1
  30. package/esm/exceptions/ServerRequestException.js +2 -1
  31. package/esm/exceptions/ServerRequestException.js.map +1 -1
  32. package/esm/exceptions/ThemePropertyException.js +2 -1
  33. package/esm/exceptions/ThemePropertyException.js.map +1 -1
  34. package/esm/exceptions/TimeoutException.js +2 -1
  35. package/esm/exceptions/TimeoutException.js.map +1 -1
  36. package/esm/exceptions/UnauthorizedException.js +2 -1
  37. package/esm/exceptions/UnauthorizedException.js.map +1 -1
  38. package/esm/exceptions/UnsupportedOperationException.js +2 -1
  39. package/esm/exceptions/UnsupportedOperationException.js.map +1 -1
  40. package/esm/hooks/useContent.js +2 -2
  41. package/esm/hooks/useContent.js.map +1 -1
  42. package/esm/hooks/useDeepCompareEffect.js +2 -1
  43. package/esm/hooks/useDeepCompareEffect.js.map +1 -1
  44. package/esm/hooks/useForm.js.map +1 -1
  45. package/esm/hooks/useModal.js +2 -2
  46. package/esm/hooks/useModal.js.map +1 -1
  47. package/esm/hooks/useModularUI.js +0 -1
  48. package/esm/hooks/useModularUI.js.map +1 -1
  49. package/esm/hooks/useProgressIndicator.js +2 -2
  50. package/esm/i18n/Locale.js +11 -4
  51. package/esm/i18n/Locale.js.map +1 -1
  52. package/esm/i18n/Locales.js +2 -2
  53. package/esm/i18n/Message.js +2 -2
  54. package/esm/i18n/languages.js +2 -1
  55. package/esm/i18n/languages.js.map +1 -1
  56. package/esm/models/attributes/AttributeCollection.js +2 -2
  57. package/esm/models/attributes/AttributeContent.js +2 -2
  58. package/esm/models/attributes/AttributeDataHelper.js +2 -2
  59. package/esm/models/attributes/BooleanAttributeModel.js +2 -2
  60. package/esm/models/attributes/ChoiceAttributeModel.js +2 -2
  61. package/esm/models/attributes/ChoiceAttributeOptionCollection.js +2 -2
  62. package/esm/models/attributes/CompositeAttributeChildCollection.js +2 -2
  63. package/esm/models/attributes/DatetimeAttributeModel.js +7 -3
  64. package/esm/models/attributes/DatetimeAttributeModel.js.map +1 -1
  65. package/esm/models/attributes/_createAttribute.js +2 -2
  66. package/esm/models/base/ResourceModel.js +2 -2
  67. package/esm/models/caseview/CaseViewModel.js +2 -1
  68. package/esm/models/caseview/CaseViewModel.js.map +1 -1
  69. package/esm/models/concepts/ConceptDetailModel.js +2 -2
  70. package/esm/models/concepts/SourceReferenceModel.js +2 -2
  71. package/esm/models/content/ContentTOCModel.js +2 -2
  72. package/esm/models/filters/AssignmentFilterModel.js +2 -2
  73. package/esm/models/filters/BaseFilterModel.js +2 -2
  74. package/esm/models/filters/ConceptIndexFilterModel.js +2 -1
  75. package/esm/models/filters/ConceptIndexFilterModel.js.map +1 -1
  76. package/esm/models/filters/FilterCollection.js +2 -2
  77. package/esm/models/filters/FilterModel.js +2 -1
  78. package/esm/models/filters/FilterModel.js.map +1 -1
  79. package/esm/models/form/FormModel.js +28 -4
  80. package/esm/models/form/FormModel.js.map +1 -1
  81. package/esm/models/form/FormObjectModel.js +2 -2
  82. package/esm/models/grouping/GroupingModel.js +2 -2
  83. package/esm/models/links/normalizeLinkJSON.js +2 -2
  84. package/esm/models/list/ListDetailModel.js +2 -2
  85. package/esm/models/list/ListItemCollection.js +38 -0
  86. package/esm/models/list/ListItemCollection.js.map +1 -1
  87. package/esm/models/list/ListItemModel.js +14 -2
  88. package/esm/models/list/ListItemModel.js.map +1 -1
  89. package/esm/models/list/ListModel.js +17 -70
  90. package/esm/models/list/ListModel.js.map +1 -1
  91. package/esm/models/lookup/LookupOptionCollection.js +2 -2
  92. package/esm/modularui/ModularUIError.js +2 -1
  93. package/esm/modularui/ModularUIError.js.map +1 -1
  94. package/esm/modularui/ModularUIRequest.js +71 -49
  95. package/esm/modularui/ModularUIRequest.js.map +1 -1
  96. package/esm/react-server/serverUtil.js +2 -2
  97. package/esm/react-theme/createTheme.js +2 -2
  98. package/esm/redux/_i18n/reducer.js +2 -2
  99. package/esm/redux/_modularui/actions.js +2 -2
  100. package/esm/redux/_modularui/connector.js +2 -2
  101. package/esm/redux/_modularui/reducer.js +2 -2
  102. package/esm/redux/_modularui/selectors.js +2 -2
  103. package/esm/redux/reducers/AuthReducer.js +2 -2
  104. package/esm/redux/reducers/ModalsReducer.js +2 -2
  105. package/esm/redux/reducers/NotificationReducer.js +2 -2
  106. package/esm/redux/reducers/PreferencesReducer.js +2 -2
  107. package/esm/redux/reducers/ProgressIndicatorReducer.js +2 -2
  108. package/esm/redux/store/configureStore.js +2 -2
  109. package/esm/utils/browser/Cookies.js +18 -32
  110. package/esm/utils/browser/Cookies.js.map +1 -1
  111. package/esm/utils/fetch/xhr.js +6 -4
  112. package/esm/utils/fetch/xhr.js.map +1 -1
  113. package/lib/builder/mergeLayoutHintConfigurations.js +3 -3
  114. package/lib/builder/mergeLayoutHintConfigurations.js.flow +3 -3
  115. package/lib/builder/mergeLayoutHintConfigurations.js.map +1 -1
  116. package/lib/constants/LayoutHintConfig.js +9 -0
  117. package/lib/constants/LayoutHintConfig.js.flow +9 -0
  118. package/lib/constants/LayoutHintConfig.js.map +1 -1
  119. package/lib/constants/LayoutHints.js +8 -2
  120. package/lib/constants/LayoutHints.js.flow +4 -0
  121. package/lib/constants/LayoutHints.js.map +1 -1
  122. package/lib/constants/Settings.js +2 -1
  123. package/lib/constants/Settings.js.flow +2 -0
  124. package/lib/constants/Settings.js.map +1 -1
  125. package/lib/exceptions/ConfigurationException.js +3 -1
  126. package/lib/exceptions/ConfigurationException.js.map +1 -1
  127. package/lib/exceptions/FetchException.js +5 -3
  128. package/lib/exceptions/FetchException.js.map +1 -1
  129. package/lib/exceptions/IllegalArgumentException.js +3 -1
  130. package/lib/exceptions/IllegalArgumentException.js.map +1 -1
  131. package/lib/exceptions/IllegalReturnException.js +3 -1
  132. package/lib/exceptions/IllegalReturnException.js.map +1 -1
  133. package/lib/exceptions/IllegalStateException.js +3 -1
  134. package/lib/exceptions/IllegalStateException.js.map +1 -1
  135. package/lib/exceptions/JsonParseException.js +3 -1
  136. package/lib/exceptions/JsonParseException.js.map +1 -1
  137. package/lib/exceptions/MissingPropertyException.js +3 -1
  138. package/lib/exceptions/MissingPropertyException.js.map +1 -1
  139. package/lib/exceptions/NetworkException.js +3 -1
  140. package/lib/exceptions/NetworkException.js.map +1 -1
  141. package/lib/exceptions/NotAllowedUriException.js +3 -1
  142. package/lib/exceptions/NotAllowedUriException.js.map +1 -1
  143. package/lib/exceptions/NotFoundException.js +3 -1
  144. package/lib/exceptions/NotFoundException.js.map +1 -1
  145. package/lib/exceptions/ServerRequestException.js +3 -1
  146. package/lib/exceptions/ServerRequestException.js.map +1 -1
  147. package/lib/exceptions/ThemePropertyException.js +3 -1
  148. package/lib/exceptions/ThemePropertyException.js.map +1 -1
  149. package/lib/exceptions/TimeoutException.js +3 -1
  150. package/lib/exceptions/TimeoutException.js.map +1 -1
  151. package/lib/exceptions/UnauthorizedException.js +3 -1
  152. package/lib/exceptions/UnauthorizedException.js.map +1 -1
  153. package/lib/exceptions/UnsupportedOperationException.js +3 -1
  154. package/lib/exceptions/UnsupportedOperationException.js.map +1 -1
  155. package/lib/hooks/useContent.js +2 -2
  156. package/lib/hooks/useContent.js.flow +2 -2
  157. package/lib/hooks/useContent.js.map +1 -1
  158. package/lib/hooks/useDeepCompareEffect.js +2 -1
  159. package/lib/hooks/useDeepCompareEffect.js.flow +1 -1
  160. package/lib/hooks/useDeepCompareEffect.js.map +1 -1
  161. package/lib/hooks/useForm.js.flow +1 -2
  162. package/lib/hooks/useForm.js.map +1 -1
  163. package/lib/hooks/useModal.js +2 -2
  164. package/lib/hooks/useModal.js.flow +1 -1
  165. package/lib/hooks/useModal.js.map +1 -1
  166. package/lib/hooks/useModularUI.js +0 -1
  167. package/lib/hooks/useModularUI.js.flow +0 -2
  168. package/lib/hooks/useModularUI.js.map +1 -1
  169. package/lib/hooks/useProgressIndicator.js +2 -2
  170. package/lib/i18n/Locale.js +11 -5
  171. package/lib/i18n/Locale.js.flow +7 -0
  172. package/lib/i18n/Locale.js.map +1 -1
  173. package/lib/i18n/Locales.js +2 -2
  174. package/lib/i18n/Message.js +2 -2
  175. package/lib/i18n/__tests__/Locale.spec.js.flow +14 -0
  176. package/lib/i18n/languages.js +2 -1
  177. package/lib/i18n/languages.js.flow +1 -0
  178. package/lib/i18n/languages.js.map +1 -1
  179. package/lib/i18n/types.js.flow +1 -0
  180. package/lib/models/attributes/AttributeCollection.js +2 -2
  181. package/lib/models/attributes/AttributeContent.js +2 -2
  182. package/lib/models/attributes/AttributeDataHelper.js +2 -2
  183. package/lib/models/attributes/BooleanAttributeModel.js +2 -2
  184. package/lib/models/attributes/ChoiceAttributeModel.js +2 -2
  185. package/lib/models/attributes/ChoiceAttributeOptionCollection.js +2 -2
  186. package/lib/models/attributes/CompositeAttributeChildCollection.js +2 -2
  187. package/lib/models/attributes/DatetimeAttributeModel.js +7 -3
  188. package/lib/models/attributes/DatetimeAttributeModel.js.flow +9 -4
  189. package/lib/models/attributes/DatetimeAttributeModel.js.map +1 -1
  190. package/lib/models/attributes/__tests__/StringAttributeModel.spec.js.flow +1 -1
  191. package/lib/models/attributes/_createAttribute.js +2 -2
  192. package/lib/models/base/ResourceModel.js +2 -2
  193. package/lib/models/base/__tests__/BaseModel.spec.js.flow +5 -5
  194. package/lib/models/caseview/CaseViewModel.js +3 -1
  195. package/lib/models/caseview/CaseViewModel.js.flow +3 -1
  196. package/lib/models/caseview/CaseViewModel.js.map +1 -1
  197. package/lib/models/caseview/__tests__/CaseViewModel.spec.js.flow +38 -1
  198. package/lib/models/concepts/ConceptDetailModel.js +2 -2
  199. package/lib/models/concepts/SourceReferenceModel.js +2 -2
  200. package/lib/models/content/ContentTOCModel.js +2 -2
  201. package/lib/models/filters/AssignmentFilterModel.js +2 -2
  202. package/lib/models/filters/BaseFilterModel.js +2 -2
  203. package/lib/models/filters/ConceptIndexFilterModel.js +3 -1
  204. package/lib/models/filters/ConceptIndexFilterModel.js.map +1 -1
  205. package/lib/models/filters/FilterCollection.js +2 -2
  206. package/lib/models/filters/FilterModel.js +3 -1
  207. package/lib/models/filters/FilterModel.js.map +1 -1
  208. package/lib/models/form/FormModel.js +28 -4
  209. package/lib/models/form/FormModel.js.flow +18 -1
  210. package/lib/models/form/FormModel.js.map +1 -1
  211. package/lib/models/form/FormObjectModel.js +2 -2
  212. package/lib/models/form/__tests__/FormModel.getters.spec.js.flow +15 -0
  213. package/lib/models/grouping/GroupingModel.js +2 -2
  214. package/lib/models/links/normalizeLinkJSON.js +2 -2
  215. package/lib/models/list/ListDetailModel.js +2 -2
  216. package/lib/models/list/ListItemCollection.js +40 -0
  217. package/lib/models/list/ListItemCollection.js.flow +38 -1
  218. package/lib/models/list/ListItemCollection.js.map +1 -1
  219. package/lib/models/list/ListItemModel.js +14 -2
  220. package/lib/models/list/ListItemModel.js.flow +15 -0
  221. package/lib/models/list/ListItemModel.js.map +1 -1
  222. package/lib/models/list/ListModel.js +16 -71
  223. package/lib/models/list/ListModel.js.flow +1 -45
  224. package/lib/models/list/ListModel.js.map +1 -1
  225. package/lib/models/list/__tests__/ListItemCollection.spec.js.flow +22 -0
  226. package/lib/models/list/__tests__/ListModel.spec.js.flow +0 -2
  227. package/lib/models/lookup/LookupOptionCollection.js +2 -2
  228. package/lib/models/panels/__tests__/GroupingPanelModel.spec.js.flow +38 -21
  229. package/lib/models/process/__tests__/ProcessStatusSettingsModel.spec.js.flow +11 -0
  230. package/lib/modularui/ModularUIError.js +3 -1
  231. package/lib/modularui/ModularUIError.js.map +1 -1
  232. package/lib/modularui/ModularUIRequest.js +69 -49
  233. package/lib/modularui/ModularUIRequest.js.flow +38 -22
  234. package/lib/modularui/ModularUIRequest.js.map +1 -1
  235. package/lib/react-server/serverUtil.js +2 -2
  236. package/lib/react-theme/createTheme.js +2 -2
  237. package/lib/redux/_i18n/reducer.js +2 -2
  238. package/lib/redux/_modularui/actions.js +2 -2
  239. package/lib/redux/_modularui/connector.js +2 -2
  240. package/lib/redux/_modularui/reducer.js +2 -2
  241. package/lib/redux/_modularui/selectors.js +2 -2
  242. package/lib/redux/reducers/AuthReducer.js +2 -2
  243. package/lib/redux/reducers/ModalsReducer.js +2 -2
  244. package/lib/redux/reducers/NotificationReducer.js +2 -2
  245. package/lib/redux/reducers/PreferencesReducer.js +2 -2
  246. package/lib/redux/reducers/ProgressIndicatorReducer.js +2 -2
  247. package/lib/redux/store/configureStore.js +2 -2
  248. package/lib/utils/browser/Cookies.js +18 -31
  249. package/lib/utils/browser/Cookies.js.flow +22 -28
  250. package/lib/utils/browser/Cookies.js.map +1 -1
  251. package/lib/utils/browser/__tests__/Cookies.spec.js.flow +51 -0
  252. package/lib/utils/fetch/xhr.js +7 -4
  253. package/lib/utils/fetch/xhr.js.flow +6 -2
  254. package/lib/utils/fetch/xhr.js.map +1 -1
  255. package/package.json +37 -35
  256. package/src/builder/mergeLayoutHintConfigurations.js +3 -3
  257. package/src/constants/LayoutHintConfig.js +9 -0
  258. package/src/constants/LayoutHints.js +4 -0
  259. package/src/constants/Settings.js +2 -0
  260. package/src/hooks/useContent.js +2 -2
  261. package/src/hooks/useDeepCompareEffect.js +1 -1
  262. package/src/hooks/useForm.js +1 -2
  263. package/src/hooks/useModal.js +1 -1
  264. package/src/hooks/useModularUI.js +0 -2
  265. package/src/i18n/Locale.js +7 -0
  266. package/src/i18n/__tests__/Locale.spec.js +14 -0
  267. package/src/i18n/languages.js +1 -0
  268. package/src/i18n/types.js +1 -0
  269. package/src/models/attributes/DatetimeAttributeModel.js +9 -4
  270. package/src/models/attributes/__tests__/StringAttributeModel.spec.js +1 -1
  271. package/src/models/base/__tests__/BaseModel.spec.js +5 -5
  272. package/src/models/caseview/CaseViewModel.js +3 -1
  273. package/src/models/caseview/__tests__/CaseViewModel.spec.js +38 -1
  274. package/src/models/caseview/__tests__/caseview.json +14 -3
  275. package/src/models/caseview/__tests__/caseviewContributions.json +48 -77
  276. package/src/models/caseview/__tests__/caseview_local_taskgroup.json +57 -0
  277. package/src/models/form/FormModel.js +18 -1
  278. package/src/models/form/__tests__/FormModel.getters.spec.js +15 -0
  279. package/src/models/list/ListItemCollection.js +38 -1
  280. package/src/models/list/ListItemModel.js +15 -0
  281. package/src/models/list/ListModel.js +1 -45
  282. package/src/models/list/__tests__/ListItemCollection.spec.js +22 -0
  283. package/src/models/list/__tests__/ListModel.spec.js +0 -2
  284. package/src/models/panels/__tests__/GroupingPanelModel.spec.js +38 -21
  285. package/src/models/panels/__tests__/groupingPanel.json +20 -1
  286. package/src/models/panels/__tests__/groupingPanelContributions.json +14 -1
  287. package/src/models/process/__tests__/ProcessStatusSettingsModel.spec.js +11 -0
  288. package/src/modularui/ModularUIRequest.js +38 -22
  289. package/src/utils/browser/Cookies.js +22 -28
  290. package/src/utils/browser/__tests__/Cookies.spec.js +51 -0
  291. package/src/utils/fetch/xhr.js +6 -2
@@ -386,6 +386,20 @@ class ModularUIRequest {
386
386
  return Promise.resolve();
387
387
  }
388
388
 
389
+ /**
390
+ * Retrieve an object of key: link
391
+ */
392
+ dataLinksPerName(dataLinks: any): { [linkName: string]: any } {
393
+ if (Array.isArray(dataLinks)) {
394
+ const links = {};
395
+ for (const dataLink of dataLinks) {
396
+ links[dataLink.name] = dataLink;
397
+ }
398
+ return links;
399
+ }
400
+ return dataLinks;
401
+ }
402
+
389
403
  /**
390
404
  * Check if links are empty and hide them when hide-when-empty hint exists
391
405
  */
@@ -393,42 +407,44 @@ class ModularUIRequest {
393
407
  dataLinks: any,
394
408
  contributionLinks: any
395
409
  ): Promise<Object | Array<Object>> {
410
+ const linksPerName = this.dataLinksPerName(dataLinks);
411
+ const hideWhenEmptyLinks = contributionLinks.filter((contributionLink) =>
412
+ contributionLink.layouthint?.includes(HIDE_WHEN_EMPTY)
413
+ );
414
+
396
415
  const isHiddenListChecks = [];
397
- for (const contributionLink of contributionLinks) {
398
- if (contributionLink.layouthint?.includes(HIDE_WHEN_EMPTY)) {
399
- const dataLink = Array.isArray(dataLinks)
400
- ? dataLinks.find((link) => link.name === contributionLink.name)
401
- : dataLinks[contributionLink.name];
402
-
403
- if (dataLink?.href) {
404
- isHiddenListChecks.push(
405
- this.isHiddenList(contributionLink.name, dataLink.href)
406
- );
407
- }
416
+
417
+ for (const contributionLink of hideWhenEmptyLinks) {
418
+ const dataLink = linksPerName[contributionLink.name];
419
+ if (dataLink?.href) {
420
+ isHiddenListChecks.push(
421
+ this.isHiddenList(contributionLink.name, dataLink.href)
422
+ );
408
423
  }
409
424
  }
410
425
 
411
- return Promise.all(isHiddenListChecks).then((hiddenLinks) => {
412
- let newDataLinks;
413
- if (Array.isArray(dataLinks)) {
414
- newDataLinks = dataLinks.filter(
415
- (dataLink) => !hiddenLinks.includes(dataLink.name)
416
- );
417
- } else {
418
- newDataLinks = {};
426
+ return Promise.all(isHiddenListChecks).then(
427
+ (hiddenLinks: Array<string>) => {
428
+ if (Array.isArray(dataLinks)) {
429
+ return dataLinks.filter(
430
+ (dataLink) => !hiddenLinks.includes(dataLink.name)
431
+ );
432
+ }
433
+
434
+ const newDataLinks = {};
419
435
  for (const dataLinkKey in dataLinks) {
420
436
  if (!hiddenLinks.includes(dataLinkKey)) {
421
437
  newDataLinks[dataLinkKey] = dataLinks[dataLinkKey];
422
438
  }
423
439
  }
440
+ return newDataLinks;
424
441
  }
425
- return newDataLinks;
426
- });
442
+ );
427
443
  }
428
444
 
429
445
  /**
430
446
  */
431
- isHiddenList(name: string, href: string): Promise<?string> {
447
+ isHiddenList(name: string, href: string): Promise<string> {
432
448
  return universalFetch({
433
449
  ...this.options,
434
450
  url: `${BASE}${href}`,
@@ -1,4 +1,6 @@
1
1
  // @flow
2
+ import Cookies from "js-cookie";
3
+
2
4
  import { BASE } from "../../constants/Constants";
3
5
 
4
6
  type CookieOptions = {
@@ -7,18 +9,17 @@ type CookieOptions = {
7
9
  secure?: boolean,
8
10
  };
9
11
 
12
+ type CookieAttributes = {
13
+ path: string,
14
+ expires?: number,
15
+ sameSite?: string,
16
+ secure?: boolean,
17
+ };
18
+
10
19
  /**
11
20
  */
12
21
  const getCookie = (name: string): null | string => {
13
- if (typeof document !== "undefined") {
14
- const value = `;${document.cookie}`;
15
- const parts = value.split(`; ${name}=`);
16
- if (parts.length === 2) {
17
- return parts.pop().split(";").shift();
18
- }
19
- }
20
-
21
- return null;
22
+ return Cookies.get(name);
22
23
  };
23
24
 
24
25
  /**
@@ -28,31 +29,24 @@ const setCookie = (
28
29
  value: any,
29
30
  { days, sameSite = "Strict", secure }: CookieOptions = {}
30
31
  ) => {
31
- if (typeof document !== "undefined") {
32
- const valuePart = `${name}=${value || ""}`;
33
-
34
- let expires = "";
35
- if (days) {
36
- const date = new Date();
37
- date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
38
- expires = `; expires=${date.toUTCString()}`;
39
- }
40
- let sameSitePart = "";
41
- if (sameSite) {
42
- sameSitePart = `; SameSite=${sameSite}`;
43
- }
44
- const securePart = secure ? "Secure" : "";
45
-
46
- document.cookie = `${valuePart}${expires}${sameSitePart}${securePart}; path=${BASE}`;
32
+ const attributes: CookieAttributes = { path: BASE };
33
+ if (days) {
34
+ attributes.expires = days;
35
+ }
36
+ if (sameSite) {
37
+ attributes.sameSite = sameSite;
38
+ }
39
+ if (secure) {
40
+ attributes.secure = secure;
47
41
  }
42
+
43
+ Cookies.set(name, value, attributes);
48
44
  };
49
45
 
50
46
  /**
51
47
  */
52
48
  const clearCookie = (name: string) => {
53
- if (typeof document !== "undefined") {
54
- document.cookie = `${name}=; Max-Age=-99999999;`;
55
- }
49
+ Cookies.remove(name, { path: BASE });
56
50
  };
57
51
 
58
52
  export { getCookie, setCookie, clearCookie };
@@ -0,0 +1,51 @@
1
+ import { getCookie, setCookie, clearCookie } from "../Cookies";
2
+
3
+ describe("cookies util", () => {
4
+ beforeEach(() => {
5
+ Object.defineProperty(
6
+ window.document,
7
+ "cookie",
8
+ (function (cookies) {
9
+ return {
10
+ get: function _get() {
11
+ const output = [];
12
+ for (const cookieName in cookies) {
13
+ output.push(cookieName + "=" + cookies[cookieName]);
14
+ }
15
+ return output.join("; ");
16
+ },
17
+ set: function _set(s) {
18
+ const indexOfSeparator = s.indexOf("=");
19
+ const key = s.substr(0, indexOfSeparator);
20
+ const value = s.substring(indexOfSeparator + 1);
21
+ const valueWithoutAttributes = value.substr(0, value.indexOf(";"));
22
+
23
+ if (valueWithoutAttributes === "") {
24
+ delete cookies[key];
25
+ } else {
26
+ cookies[key] = value;
27
+ }
28
+ return key + "=" + value;
29
+ },
30
+ reset: function _reset() {
31
+ cookies = {};
32
+ },
33
+ configurable: true,
34
+ };
35
+ })({})
36
+ );
37
+ });
38
+
39
+ it("should be able retrieve cookies by name", () => {
40
+ setCookie("newCookie", "test");
41
+ expect(getCookie("newCookie")).toBe("test");
42
+
43
+ setCookie("newCookie2", "test2");
44
+ expect(getCookie("newCookie")).toBe("test");
45
+ expect(getCookie("newCookie2")).toBe("test2");
46
+
47
+ clearCookie("newCookie2");
48
+ expect(getCookie("newCookie")).toBe("test");
49
+ expect(getCookie("newCookie2")).toBeUndefined();
50
+ });
51
+ });
@@ -15,6 +15,8 @@ import Cache from "../browser/Cache";
15
15
 
16
16
  import { HTTP_METHODS } from "../../constants/Constants";
17
17
 
18
+ import { getSetting } from "../../constants/Settings";
19
+
18
20
  import type { RequestOptions } from "./types";
19
21
 
20
22
  const NETWORK_ERROR_CODE = 0;
@@ -116,7 +118,7 @@ class XHR {
116
118
  /**
117
119
  */
118
120
  get timeout() {
119
- return this.options.timeout || 300000;
121
+ return this.options.timeout || getSetting("XHR_TIMEOUT_MS", 300000);
120
122
  }
121
123
 
122
124
  /**
@@ -132,7 +134,9 @@ class XHR {
132
134
  return this.options.onProgress;
133
135
  }
134
136
 
135
- return () => {};
137
+ return () => {
138
+ // do nothing
139
+ };
136
140
  }
137
141
 
138
142
  /**