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,12 +1,10 @@
1
1
  import React from "react";
2
- import styled from "styled-components";
3
2
  import { useSelector, useDispatch } from "react-redux";
4
- import { getThemeProp, memoize, unwrapImmutable } from "../../utils";
3
+ import { FormattedMessage } from "react-intl";
4
+ import { makeStyles } from "@material-ui/core/styles";
5
+ import Button from "@material-ui/core/Button";
6
+ import { memoize, unwrapImmutable } from "../../utils";
5
7
  import Sidepanel from "../Sidepanel";
6
- import Button from "../Button";
7
- import Text from "../Text";
8
- import { FormContext } from "../Form/Form";
9
- import FieldElements from "../Form/FieldElements";
10
8
  import useViewState from "../../hooks/useViewState";
11
9
  import { setValue } from "../../actions/view";
12
10
  import { setDefaultLanguage } from "../../actions/locale";
@@ -18,78 +16,102 @@ import { defaultAppId } from "../../selectors/settings";
18
16
  import withClickOutside from "../../hocs/withClickOutside";
19
17
  import { resetVersionInfo } from "../../actions/versionInfo";
20
18
  import sharedMessages from "./../../sharedMessages";
19
+ import SelectProps from "../MaterialUI/Inputs/SelectProps";
20
+ import InformationItem from "../MaterialUI/DataDisplay/PredefinedElements/InformationItem";
21
+ import Select from "../MaterialUI/Inputs/Select";
21
22
 
22
23
  export const PREFS_NAME = "__prefsDialog";
23
24
 
24
- export const PrefPanel = styled(Sidepanel)`
25
- background-color: #f7f7f7;
26
- border-left: 1px solid ${getThemeProp(["colors", "borderLight"], "#cccccc")};
27
- border-top: 1px solid ${getThemeProp(["colors", "borderLight"], "#cccccc")};
28
- border-top-left-radius: 5px;
29
- top: 40px;
30
- box-shadow: -3px 2px 5px 0px rgba(0, 0, 0, 0.2);
31
- z-index: 9998;
32
- `;
25
+ const useStyles = makeStyles(theme => ({
26
+ prefPanel: {
27
+ backgroundColor: "#f7f7f7",
28
+ borderLeft: `1px solid ${theme.palette.grey.borders}`,
29
+ borderTop: `1px solid ${theme.palette.grey.borders}`,
30
+ borderTopLeftRadius: "5px",
31
+ top: "40px",
32
+ boxShadow: "-3px 2px 5px 0px rgba(0, 0, 0, 0.2)",
33
+ zIndex: 9998,
34
+ transition: "right 400ms ease-out",
35
+ },
36
+ header: {
37
+ flex: "0 0 auto",
38
+ borderBottom: `1px solid ${theme.palette.grey.borders}`,
39
+ borderTopLeftRadius: "5px",
40
+ padding: "15px 30px",
41
+ height: "18px",
42
+ fontSize: "15px",
43
+ fontFamily: theme.typography.button.fontFamily,
44
+ textTransform: "uppercase",
45
+ color: theme.palette.primary.main,
46
+ backgroundColor: "#ffffff",
47
+ },
48
+ prefForm: {
49
+ flex: "1 1 auto",
50
+ display: "flex",
51
+ flexDirection: "column",
52
+ padding: "20px 30px",
53
+ fontSize: "12px",
54
+ },
55
+ footer: {
56
+ flex: "0 0 auto",
57
+ display: "flex",
58
+ alignItems: "center",
59
+ justifyContent: "flex-end",
60
+ backgroundColor: "#ffffff",
61
+ borderTop: `1px solid ${theme.palette.grey.borders}`,
62
+ paddingRight: "10px",
63
+ height: "60px",
64
+ },
65
+ prefButton: {
66
+ marginRight: "20px",
67
+ minWidth: "110px",
68
+ },
69
+ wrapper: {
70
+ display: "flex",
71
+ flexDirection: "column",
72
+ height: "100%",
73
+ },
74
+ }));
33
75
 
34
- export const Wrapper = withClickOutside(styled.div`
35
- display: flex;
36
- flex-direction: column;
37
- height: 100%;
38
- `);
76
+ export const Wrapper = withClickOutside(
77
+ React.forwardRef(({ children }, ref) => {
78
+ const classes = useStyles();
39
79
 
40
- export const Header = styled.div`
41
- flex: 0 0 auto;
42
- border-bottom: 1px solid ${getThemeProp(["colors", "borderLight"], "#cccccc")};
43
- border-top-left-radius: 5px;
44
- padding: 15px 30px;
45
- height: 18px;
46
- font-size: 15px;
47
- font-family: ${getThemeProp(["fonts", "header"], "sans-serif")};
48
- text-transform: uppercase;
49
- color: ${getThemeProp(["colors", "application", "base"], "#ccc")};
50
- background-color: #ffffff;
51
- `;
80
+ return (
81
+ <div ref={ref} className={classes.wrapper}>
82
+ {children}
83
+ </div>
84
+ );
85
+ }),
86
+ );
52
87
 
53
- export const PrefForm = styled.div`
54
- flex: 1 1 auto;
55
- display: flex;
56
- flex-direction: column;
57
- padding: 20px 30px;
58
- font-size: 12px;
59
- `;
60
-
61
- export const Footer = styled.div`
62
- flex: 0 0 auto;
63
- display: flex;
64
- align-items: center;
65
- justify-content: flex-end;
66
- background-color: #ffffff;
67
- border-top: 1px solid ${getThemeProp(["colors", "borderLight"], "#cccccc")};
68
- padding-right: 10px;
69
- height: 60px;
70
- `;
71
-
72
- export const PrefButton = styled(Button)`
73
- margin-right: 20px;
74
- min-width: 110px;
75
- `;
76
-
77
- export const createGetUpdater = memoize(update => memoize(name => value => update(name, value)));
88
+ export const stateEventUpdater = memoize((update, key) => value => update(key, value));
78
89
 
79
90
  const usePreferenceSetup = () => {
80
91
  const dispatch = useDispatch();
81
92
  const [viewState, updateViewState] = useViewState(PREFS_NAME);
82
93
 
94
+ const initialLanguage = useSelector(currentLocaleOrDefault);
95
+ const initialApplication = useSelector(defaultAppId) || "";
96
+
97
+ const languageSelectProps = new SelectProps();
98
+ languageSelectProps.set(SelectProps.propNames.value, viewState.language ?? initialLanguage);
99
+ languageSelectProps.set(SelectProps.propNames.disabled, false);
100
+ languageSelectProps.set(SelectProps.propNames.positionOverride, { disablePortal: true });
101
+ languageSelectProps.set(SelectProps.propNames.update, stateEventUpdater(updateViewState, "language"));
102
+
103
+ const applicationSelectProps = new SelectProps();
104
+ applicationSelectProps.set(SelectProps.propNames.value, viewState.application ?? initialApplication);
105
+ applicationSelectProps.set(SelectProps.propNames.disabled, false);
106
+ applicationSelectProps.set(SelectProps.propNames.positionOverride, { disablePortal: true });
107
+ applicationSelectProps.set(SelectProps.propNames.update, stateEventUpdater(updateViewState, "application"));
108
+
83
109
  return {
84
110
  show: viewState.show,
85
- values: {
86
- language: useSelector(currentLocaleOrDefault),
87
- application: useSelector(defaultAppId) || "",
88
- ...viewState,
89
- },
90
- getUpdater: createGetUpdater(updateViewState),
91
111
  languageOptions: unwrapImmutable(useSelector(cultureOptionList)),
112
+ languageSelectProps,
92
113
  applicationOptions: unwrapImmutable(useSelector(localizedAppOptionSelector)),
114
+ applicationSelectProps,
93
115
  clear: () => dispatch(setValue(PREFS_NAME, { show: false })),
94
116
  save: () => {
95
117
  if (viewState.language) {
@@ -112,44 +134,34 @@ export const clickOutsideHandler = e => {
112
134
  };
113
135
 
114
136
  export const Preferences = () => {
115
- const { show, getUpdater, save, clear, languageOptions, applicationOptions, values } = usePreferenceSetup();
137
+ const classes = useStyles();
138
+
139
+ const { show, save, clear, languageOptions, languageSelectProps, applicationOptions, applicationSelectProps } =
140
+ usePreferenceSetup();
116
141
  return (
117
- <PrefPanel in={show} width="380px" timeout={400}>
142
+ <Sidepanel in={show} width="380px" timeout={400} className={classes.prefPanel}>
118
143
  <Wrapper onClickOutside={clickOutsideHandler}>
119
- <Header>
120
- <Text message={sharedMessages.preferences} />
121
- </Header>
122
- <PrefForm>
123
- <FormContext.Provider value={{ values }}>
124
- <FieldElements
125
- fields={[
126
- {
127
- label: sharedMessages.displayLanguage,
128
- type: "Selector",
129
- name: "language",
130
- options: languageOptions,
131
- },
132
- {
133
- label: sharedMessages.defaultApp,
134
- type: "Selector",
135
- name: "application",
136
- options: applicationOptions,
137
- },
138
- ]}
139
- getUpdater={getUpdater}
140
- />
141
- </FormContext.Provider>
142
- </PrefForm>
143
- <Footer>
144
- <PrefButton id="cancelPrefs" onClick={clear}>
145
- <Text message={sharedMessages.cancel} />
146
- </PrefButton>
147
- <PrefButton id="savePrefs" primary onClick={save}>
148
- <Text message={sharedMessages.save} />
149
- </PrefButton>
150
- </Footer>
144
+ <div className={classes.header}>
145
+ <FormattedMessage {...sharedMessages.preferences} />
146
+ </div>
147
+ <div className={classes.prefForm}>
148
+ <InformationItem label={sharedMessages.displayLanguage}>
149
+ <Select options={languageOptions} selectProps={languageSelectProps} />
150
+ </InformationItem>
151
+ <InformationItem label={sharedMessages.defaultApp}>
152
+ <Select options={applicationOptions} selectProps={applicationSelectProps} />
153
+ </InformationItem>
154
+ </div>
155
+ <div className={classes.footer}>
156
+ <Button id="cancelPrefs" onClick={clear} className={classes.prefButton} variant="outlined">
157
+ <FormattedMessage {...sharedMessages.cancel} />
158
+ </Button>
159
+ <Button id="savePrefs" onClick={save} className={classes.prefButton} variant="outlined" color="primary">
160
+ <FormattedMessage {...sharedMessages.save} />
161
+ </Button>
162
+ </div>
151
163
  </Wrapper>
152
- </PrefPanel>
164
+ </Sidepanel>
153
165
  );
154
166
  };
155
167