orc-shared 5.10.0-dev.2 → 5.10.0-dev.21

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 (186) hide show
  1. package/dist/actions/metadata.js +30 -11
  2. package/dist/actions/requestsApi.js +10 -1
  3. package/dist/components/AppFrame/About.js +136 -100
  4. package/dist/components/AppFrame/Anchor.js +45 -21
  5. package/dist/components/AppFrame/AppFrame.js +53 -31
  6. package/dist/components/AppFrame/Help.js +35 -15
  7. package/dist/components/AppFrame/MenuItem.js +148 -114
  8. package/dist/components/AppFrame/Preferences.js +136 -97
  9. package/dist/components/AppFrame/Sidebar.js +51 -28
  10. package/dist/components/AppFrame/Topbar.js +61 -36
  11. package/dist/components/ColumnWrapper.js +28 -5
  12. package/dist/components/Culture.js +33 -14
  13. package/dist/components/DropMenu/Menu.js +79 -45
  14. package/dist/components/DropMenu/index.js +34 -29
  15. package/dist/components/Form/Combination.js +45 -16
  16. package/dist/components/Form/Field.js +57 -38
  17. package/dist/components/Form/FieldElements.js +0 -11
  18. package/dist/components/Form/Fieldset.js +47 -19
  19. package/dist/components/Form/Form.js +22 -9
  20. package/dist/components/Form/FormElement.js +40 -7
  21. package/dist/components/Form/Inputs/Button.js +63 -18
  22. package/dist/components/Form/Inputs/ReadOnly.js +50 -27
  23. package/dist/components/{AppFrame/ApplicationSelector/Header.js → Form/Inputs/Selector.js} +30 -31
  24. package/dist/components/Form/Inputs/Text.js +20 -37
  25. package/dist/components/Form/Inputs/Toggles.js +39 -40
  26. package/dist/components/Form/Inputs/index.js +2 -13
  27. package/dist/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.js +31 -11
  28. package/dist/components/MaterialUI/DataDisplay/PredefinedElements/SectionToolbar.js +89 -0
  29. package/dist/components/MaterialUI/DataDisplay/Table.js +109 -18
  30. package/dist/components/MaterialUI/DataDisplay/TableProps.js +5 -1
  31. package/dist/components/MaterialUI/DataDisplay/TableWithInMemoryPaging.js +198 -0
  32. package/dist/components/MaterialUI/DataDisplay/TooltippedElements/MultipleLinesText.js +4 -1
  33. package/dist/components/MaterialUI/Inputs/DatePicker.js +14 -14
  34. package/dist/components/MaterialUI/Inputs/PredefinedElements/SearchControl.js +1 -0
  35. package/dist/components/MaterialUI/Inputs/Select.js +2 -0
  36. package/dist/components/MaterialUI/Inputs/SelectProps.js +2 -0
  37. package/dist/components/MaterialUI/Inputs/Switch.js +17 -1
  38. package/dist/components/MaterialUI/Inputs/SwitchProps.js +2 -0
  39. package/dist/components/MaterialUI/Inputs/TimePicker.js +14 -21
  40. package/dist/components/MaterialUI/hocs/withDeferredTooltip.js +3 -1
  41. package/dist/components/MaterialUI/muiThemes.js +2 -1
  42. package/dist/components/Provision.js +1 -1
  43. package/dist/constants.js +2 -1
  44. package/dist/content/iconsSheet.svg +740 -116
  45. package/dist/hocs/withScrollBox.js +27 -12
  46. package/dist/hooks/useDaysAndMonthsLocalization.js +77 -0
  47. package/dist/hooks/useInMemoryPaging.js +135 -0
  48. package/dist/hooks/useMultipleFieldEditState.js +12 -3
  49. package/dist/reducers/metadata.js +6 -0
  50. package/dist/schemas/metadata.js +9 -1
  51. package/dist/selectors/locale.js +1 -0
  52. package/dist/selectors/metadata.js +14 -11
  53. package/dist/sharedMessages.js +184 -0
  54. package/dist/utils/ListHelper.js +271 -0
  55. package/dist/utils/comparisonHelper.js +185 -0
  56. package/dist/utils/propertyBagHelper.js +3 -1
  57. package/dist/utils/timezoneHelper.js +18 -31
  58. package/package.json +4 -3
  59. package/src/actions/metadata.js +11 -0
  60. package/src/actions/metadata.test.js +27 -0
  61. package/src/actions/requestsApi.js +6 -0
  62. package/src/components/AppFrame/About.js +97 -117
  63. package/src/components/AppFrame/About.test.js +128 -90
  64. package/src/components/AppFrame/Anchor.js +34 -36
  65. package/src/components/AppFrame/Anchor.test.js +5 -68
  66. package/src/components/AppFrame/AppFrame.js +31 -40
  67. package/src/components/AppFrame/AppFrame.test.js +424 -445
  68. package/src/components/AppFrame/Help.js +23 -20
  69. package/src/components/AppFrame/Help.test.js +3 -3
  70. package/src/components/AppFrame/MenuItem.js +106 -126
  71. package/src/components/AppFrame/MenuItem.test.js +78 -169
  72. package/src/components/AppFrame/Preferences.js +110 -98
  73. package/src/components/AppFrame/Preferences.test.js +115 -219
  74. package/src/components/AppFrame/Sidebar.js +39 -41
  75. package/src/components/AppFrame/Sidebar.test.js +88 -168
  76. package/src/components/AppFrame/Topbar.js +59 -52
  77. package/src/components/AppFrame/Topbar.test.js +31 -39
  78. package/src/components/ColumnWrapper.js +18 -9
  79. package/src/components/Culture.js +20 -10
  80. package/src/components/Culture.test.js +27 -16
  81. package/src/components/DropMenu/DropMenu.test.js +185 -224
  82. package/src/components/DropMenu/Menu.js +73 -80
  83. package/src/components/DropMenu/Menu.test.js +35 -86
  84. package/src/components/DropMenu/index.js +19 -15
  85. package/src/components/Form/Combination.js +35 -28
  86. package/src/components/Form/Combination.test.js +6 -19
  87. package/src/components/Form/Field.js +53 -66
  88. package/src/components/Form/Field.test.js +29 -51
  89. package/src/components/Form/FieldElements.js +0 -14
  90. package/src/components/Form/FieldElements.test.js +104 -111
  91. package/src/components/Form/Fieldset.js +42 -37
  92. package/src/components/Form/Fieldset.test.js +14 -7
  93. package/src/components/Form/Form.js +11 -7
  94. package/src/components/Form/Form.test.js +75 -56
  95. package/src/components/Form/FormElement.js +24 -16
  96. package/src/components/Form/InputField.test.js +24 -30
  97. package/src/components/Form/Inputs/Button.js +58 -14
  98. package/src/components/Form/Inputs/Button.test.js +32 -7
  99. package/src/components/Form/Inputs/Inputs.test.js +0 -7
  100. package/src/components/Form/Inputs/ReadOnly.js +34 -28
  101. package/src/components/Form/Inputs/ReadOnly.test.js +45 -7
  102. package/src/components/Form/Inputs/Selector.js +22 -0
  103. package/src/components/Form/Inputs/Selector.test.js +105 -0
  104. package/src/components/Form/Inputs/Text.js +15 -44
  105. package/src/components/Form/Inputs/Text.test.js +20 -29
  106. package/src/components/Form/Inputs/Toggles.js +27 -26
  107. package/src/components/Form/Inputs/Toggles.test.js +22 -28
  108. package/src/components/Form/Inputs/index.js +4 -15
  109. package/src/components/MaterialUI/DataDisplay/PredefinedElements/InformationItem.test.js +1 -4
  110. package/src/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.js +32 -6
  111. package/src/components/MaterialUI/DataDisplay/PredefinedElements/Placeholder.test.js +3 -1
  112. package/src/components/MaterialUI/DataDisplay/PredefinedElements/SectionToolbar.js +39 -0
  113. package/src/components/MaterialUI/DataDisplay/Table.js +190 -114
  114. package/src/components/MaterialUI/DataDisplay/Table.test.js +246 -1
  115. package/src/components/MaterialUI/DataDisplay/TableProps.js +4 -0
  116. package/src/components/MaterialUI/DataDisplay/TableProps.test.js +2 -0
  117. package/src/components/MaterialUI/DataDisplay/TableWithInMemoryPaging.js +145 -0
  118. package/src/components/MaterialUI/DataDisplay/TableWithInMemoryPaging.test.js +457 -0
  119. package/src/components/MaterialUI/DataDisplay/TooltippedElements/MultipleLinesText.js +5 -1
  120. package/src/components/MaterialUI/DataDisplay/TooltippedElements/MultipleLinesText.test.js +7 -1
  121. package/src/components/MaterialUI/Inputs/DatePicker.js +19 -20
  122. package/src/components/MaterialUI/Inputs/DatePicker.test.js +11 -6
  123. package/src/components/MaterialUI/Inputs/PredefinedElements/SearchControl.js +1 -0
  124. package/src/components/MaterialUI/Inputs/Select.js +2 -0
  125. package/src/components/MaterialUI/Inputs/SelectProps.js +2 -0
  126. package/src/components/MaterialUI/Inputs/SelectProps.test.js +2 -0
  127. package/src/components/MaterialUI/Inputs/Switch.js +22 -1
  128. package/src/components/MaterialUI/Inputs/Switch.test.js +23 -0
  129. package/src/components/MaterialUI/Inputs/SwitchProps.js +2 -0
  130. package/src/components/MaterialUI/Inputs/SwitchProps.test.js +2 -0
  131. package/src/components/MaterialUI/Inputs/TimePicker.js +10 -19
  132. package/src/components/MaterialUI/Inputs/TimePicker.test.js +278 -117
  133. package/src/components/MaterialUI/hocs/withDeferredTooltip.js +4 -1
  134. package/src/components/MaterialUI/hocs/withDeferredTooltip.test.js +27 -0
  135. package/src/components/MaterialUI/muiThemes.js +1 -0
  136. package/src/components/Navigation/Bar.test.js +92 -87
  137. package/src/components/Provision.js +1 -1
  138. package/src/components/TaskDetailsModal.test.js +1 -3
  139. package/src/constants.js +1 -0
  140. package/src/content/iconsSheet.svg +740 -116
  141. package/src/hocs/withScrollBox.js +32 -19
  142. package/src/hocs/withScrollBox.test.js +15 -3
  143. package/src/hooks/useDaysAndMonthsLocalization.js +79 -0
  144. package/src/hooks/useDaysAndMonthsLocalization.test.js +107 -0
  145. package/src/hooks/useInMemoryPaging.js +78 -0
  146. package/src/hooks/useInMemoryPaging.test.js +515 -0
  147. package/src/hooks/useMultipleFieldEditState.js +11 -4
  148. package/src/hooks/useMultipleFieldEditState.test.js +49 -1
  149. package/src/reducers/metadata.js +6 -1
  150. package/src/reducers/metadata.test.js +31 -0
  151. package/src/requests +1 -0
  152. package/src/schemas/metadata.js +3 -0
  153. package/src/selectors/locale.js +1 -1
  154. package/src/selectors/metadata.js +12 -9
  155. package/src/selectors/metadata.test.js +92 -11
  156. package/src/sharedMessages.js +184 -0
  157. package/src/timezones.json +883 -0
  158. package/src/translations/en-US.json +46 -0
  159. package/src/translations/fr-CA.json +46 -0
  160. package/src/utils/ListHelper.js +203 -0
  161. package/src/utils/ListHelper.test.js +710 -0
  162. package/src/utils/comparisonHelper.js +135 -0
  163. package/src/utils/comparisonHelper.test.js +334 -0
  164. package/src/utils/propertyBagHelper.js +2 -0
  165. package/src/utils/propertyBagHelper.test.js +6 -0
  166. package/src/utils/timezoneHelper.js +10 -135
  167. package/src/utils/timezoneHelper.test.js +7 -7
  168. package/dist/components/Form/FieldList.js +0 -270
  169. package/dist/components/Form/Inputs/FieldButtons.js +0 -66
  170. package/dist/components/Form/Inputs/Number.js +0 -117
  171. package/dist/components/Form/Inputs/SmallButton.js +0 -91
  172. package/dist/components/Form/Inputs/Time.js +0 -86
  173. package/dist/components/Form/Inputs/Translation.js +0 -169
  174. package/src/components/AppFrame/ApplicationSelector/Header.js +0 -34
  175. package/src/components/AppFrame/ApplicationSelector/Header.test.js +0 -23
  176. package/src/components/Form/FieldList.js +0 -210
  177. package/src/components/Form/FieldList.test.js +0 -558
  178. package/src/components/Form/Inputs/FieldButtons.js +0 -90
  179. package/src/components/Form/Inputs/Number.js +0 -60
  180. package/src/components/Form/Inputs/Number.test.js +0 -435
  181. package/src/components/Form/Inputs/SmallButton.js +0 -37
  182. package/src/components/Form/Inputs/SmallButton.test.js +0 -65
  183. package/src/components/Form/Inputs/Time.js +0 -32
  184. package/src/components/Form/Inputs/Time.test.js +0 -41
  185. package/src/components/Form/Inputs/Translation.js +0 -93
  186. package/src/components/Form/Inputs/Translation.test.js +0 -204
@@ -1,43 +1,41 @@
1
1
  import React from "react";
2
- import styled from "styled-components";
3
- import { getThemeProp, ifFlag } from "../../utils";
4
- import Icon from "../Icon";
2
+ import { makeStyles } from "@material-ui/core/styles";
3
+ import Icon from "../MaterialUI/DataDisplay/Icon";
5
4
 
6
- export const Header = styled.div`
7
- display: flex;
8
- cursor: pointer;
9
- box-sizing: border-box;
10
- font-family: ${getThemeProp(["fonts", "header"], "sans-serif")};
11
- font-size: 12px;
12
- text-transform: uppercase;
13
- height: 40px;
14
- min-width: 180px;
15
- padding-top: 14px;
16
- padding-right: 14px;
17
- color: ${ifFlag("open", getThemeProp(["colors", "application", "primary"], "#ccc"), "#ccc")};
5
+ const useStyles = makeStyles(theme => ({
6
+ header: props => ({
7
+ display: "flex",
8
+ cursor: "pointer",
9
+ boxSizing: "border-box",
10
+ fontFamily: theme.typography.button.fontFamily,
11
+ fontSize: "12px",
12
+ textTransform: "uppercase",
13
+ height: "40px",
14
+ minWidth: "180px",
15
+ paddingTop: "14px",
16
+ paddingRight: "14px",
17
+ color: props.open ? theme.palette.primary.light : theme.palette.text.disabled,
18
18
 
19
- &:hover {
20
- color: ${getThemeProp(["colors", "application", "primary"], "#ccc")};
21
- }
22
- `;
19
+ "&:hover": {
20
+ color: theme.palette.primary.light,
21
+ },
22
+ }),
23
+ indicator: props => ({
24
+ fontSize: "12px",
25
+ padding: "0 11px",
26
+ color: props.open ? theme.palette.text.disabled : theme.palette.primary.light,
27
+ }),
28
+ }));
23
29
 
24
- export const Indicator = styled(Icon).attrs(props => ({
25
- id: ifFlag(
26
- "open",
27
- getThemeProp(["icons", "indicators", "up"], "chevron-up"),
28
- getThemeProp(["icons", "indicators", "down"], "chevron-down"),
29
- )(props),
30
- }))`
31
- font-size: 12px;
32
- padding: 0 11px;
33
- color: ${ifFlag("open", "#ccc", getThemeProp(["colors", "application", "primary"], "#ccc"))};
34
- `;
30
+ const Anchor = ({ menuLabel, open }) => {
31
+ const classes = useStyles({ open });
35
32
 
36
- const Anchor = ({ menuLabel, open }) => (
37
- <Header {...{ open }}>
38
- {menuLabel}
39
- <Indicator open={open} />
40
- </Header>
41
- );
33
+ return (
34
+ <div className={classes.header}>
35
+ {menuLabel}
36
+ <Icon id={open ? "chevron-up" : "dropdown-chevron-down"} className={classes.indicator} />
37
+ </div>
38
+ );
39
+ };
42
40
 
43
41
  export default Anchor;
@@ -1,16 +1,13 @@
1
1
  import React from "react";
2
- import Anchor, { Header, Indicator } from "./Anchor";
2
+ import Anchor from "./Anchor";
3
3
 
4
4
  describe("Anchor", () => {
5
5
  it("renders a closed menu anchor", () => {
6
6
  expect(
7
7
  <Anchor menuLabel="A Label" />,
8
8
  "when mounted",
9
- "to satisfy",
10
- <Header open={false}>
11
- A Label
12
- <Indicator open={false} />
13
- </Header>,
9
+ "to have style rules satisfying",
10
+ expect.it("to contain", "color: rgba(0, 0, 0, 0.38);"),
14
11
  );
15
12
  });
16
13
 
@@ -18,67 +15,7 @@ describe("Anchor", () => {
18
15
  expect(
19
16
  <Anchor open menuLabel="A Label" />,
20
17
  "when mounted",
21
- "to satisfy",
22
- <Header open>
23
- A Label
24
- <Indicator open />
25
- </Header>,
18
+ "to have style rules satisfying",
19
+ expect.it("to contain", "color: #7986cb;"),
26
20
  ));
27
-
28
- describe("Indicator", () => {
29
- let theme;
30
- beforeEach(() => {
31
- theme = {
32
- colors: { application: { primary: "#ff00ff" } },
33
- };
34
- });
35
-
36
- it("shows the highlight color when closed", () =>
37
- expect(
38
- <Indicator theme={theme} />,
39
- "when mounted",
40
- "to have style rules satisfying",
41
- "to contain",
42
- "color: #ff00ff;",
43
- ));
44
-
45
- it("shows the text color when open", () =>
46
- expect(
47
- <Indicator theme={theme} open />,
48
- "when mounted",
49
- "to have style rules satisfying",
50
- "to contain",
51
- "color: #ccc;",
52
- ));
53
- });
54
-
55
- describe("Header", () => {
56
- let theme;
57
- beforeEach(() => {
58
- theme = {
59
- colors: { application: { primary: "#ff00ff" } },
60
- };
61
- });
62
-
63
- it("shows the text color when closed", () =>
64
- expect(<Header theme={theme} />, "when mounted", "to have style rules satisfying", "to contain", "color: #ccc;"));
65
-
66
- it("shows the highlight color when open", () =>
67
- expect(
68
- <Header theme={theme} open />,
69
- "when mounted",
70
- "to have style rules satisfying",
71
- "to contain",
72
- "color: #ff00ff;",
73
- ));
74
-
75
- it("shows the highlight color when hovering", () =>
76
- expect(
77
- <Header theme={theme} />,
78
- "when mounted",
79
- "to have style rules satisfying",
80
- "to match",
81
- /:hover\s*\{[^}]*\bcolor: #ff00ff;[^}]*\}/,
82
- ));
83
- });
84
21
  });
@@ -1,9 +1,9 @@
1
1
  import React, { useEffect, useMemo } from "react";
2
2
  import { useIntl } from "react-intl";
3
3
  import pt from "prop-types";
4
- import styled, { css } from "styled-components";
5
4
  import { useSelector } from "react-redux";
6
- import { ifFlag, getThemeProp, unwrapImmutable } from "../../utils";
5
+ import { makeStyles } from "@material-ui/core/styles";
6
+ import { unwrapImmutable } from "../../utils";
7
7
  import { getApplications } from "../../actions/applications";
8
8
  import useToggle from "../../hooks/useToggle";
9
9
  import useLoader from "../../hooks/useLoader";
@@ -25,42 +25,36 @@ import sharedMessages from "../../sharedMessages";
25
25
  import ActionModal from "../MaterialUI/DataDisplay/PredefinedElements/ActionModal";
26
26
  import { logoutSelector } from "../../selectors/requests";
27
27
 
28
- export const Base = styled.div`
29
- background-color: ${getThemeProp(["colors", "bgDark"], "#333333")};
30
- height: 100%;
31
- overflow: hidden;
32
- ${ifFlag(
33
- "preferencesOpen",
34
- css`
35
- pointer-events: none;
36
- `,
37
- )};
38
- `;
39
-
40
- export const ViewPort = styled.div`
41
- overflow: hidden;
42
- background-color: white;
43
- border-top-left-radius: 10px;
44
- height: calc(100% - 40px);
45
- width: calc(100% - 50px);
46
- position: absolute;
47
- bottom: 0;
48
- right: 0;
49
- display: flex;
50
- flex-direction: column;
51
- transition: width 0.3s ease-out;
52
- ${ifFlag(
53
- "open",
54
- css`
55
- width: calc(100% - 200px);
56
- `,
57
- )};
58
- `;
28
+ const useStyles = makeStyles(theme => ({
29
+ base: props => ({
30
+ backgroundColor: theme.palette.grey.dark,
31
+ height: "100%",
32
+ overflow: "hidden",
33
+ pointerEvents: props.preferencesOpen ? "none" : undefined,
34
+ }),
35
+ viewPort: props => ({
36
+ overflow: "hidden",
37
+ backgroundColor: "white",
38
+ borderTopLeftRadius: "10px",
39
+ height: "calc(100% - 40px)",
40
+ position: "absolute",
41
+ bottom: 0,
42
+ right: 0,
43
+ display: "flex",
44
+ flexDirection: "column",
45
+ transition: "width 0.3s ease-out",
46
+ width: props.toggleOpen ? "calc(100% - 200px)" : "calc(100% - 50px)",
47
+ }),
48
+ }));
59
49
 
60
50
  const getApp = (apps, id) => apps.filter(app => app.name === id)[0];
61
51
 
62
52
  const AppFrame = ({ initOpen, applicationId, modules, activeModules, children, noScope, forceShowScope = [] }) => {
63
53
  const { formatMessage } = useIntl();
54
+ const [prefViewState] = useViewState(PREFS_NAME);
55
+ const [open, toggle, reset] = useToggle(initOpen);
56
+
57
+ const classes = useStyles({ preferencesOpen: prefViewState.show, toggleOpen: open });
64
58
 
65
59
  const locale = useSelector(currentLocale);
66
60
  const needLogin = useSelector(logoutSelector);
@@ -68,7 +62,6 @@ const AppFrame = ({ initOpen, applicationId, modules, activeModules, children, n
68
62
  const moduleName = useSelector(selectCurrentModuleName);
69
63
  const [helpUrl] = useApplicationHelpUrl(applicationId);
70
64
  useLoader(getApplications(), state => localizedAppSelector(state).size);
71
- const [open, toggle, reset] = useToggle(initOpen);
72
65
  const currentApplication = getApp(applications, applicationId);
73
66
  useLoader(getVersionInfo(locale), () => locale === null || helpUrl !== null);
74
67
 
@@ -100,10 +93,8 @@ const AppFrame = ({ initOpen, applicationId, modules, activeModules, children, n
100
93
  [modules],
101
94
  );
102
95
 
103
- const [prefViewState] = useViewState(PREFS_NAME);
104
-
105
96
  return (
106
- <Base preferencesOpen={prefViewState.show}>
97
+ <div className={classes.base}>
107
98
  <ConnectedToastList />
108
99
  <ActionModal
109
100
  title={formatMessage(sharedMessages.error)}
@@ -121,7 +112,7 @@ const AppFrame = ({ initOpen, applicationId, modules, activeModules, children, n
121
112
  onClick={reset}
122
113
  />
123
114
  <Sidebar {...{ open, toggle, modules: menuItemFromModules, activeModules }} />
124
- <ViewPort open={open} onClick={reset}>
115
+ <div onClick={reset} className={classes.viewPort} data-test-id="viewport">
125
116
  {noScope && !forceShowScope.includes(moduleName) ? (
126
117
  <React.Fragment>
127
118
  <ScopeBar />
@@ -130,11 +121,11 @@ const AppFrame = ({ initOpen, applicationId, modules, activeModules, children, n
130
121
  ) : (
131
122
  <Scope>{children}</Scope>
132
123
  )}
133
- </ViewPort>
124
+ </div>
134
125
  <About currentApplication={currentApplication} />
135
126
  <LoadingScreen />
136
127
  <Preferences />
137
- </Base>
128
+ </div>
138
129
  );
139
130
  };
140
131
  AppFrame.displayName = "AppFrame";