@onehat/ui 0.3.150 → 0.3.152

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onehat/ui",
3
- "version": "0.3.150",
3
+ "version": "0.3.152",
4
4
  "description": "Base UI for OneHat apps",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -61,11 +61,40 @@ export function DateElement(props) {
61
61
  pickerRef = useRef(),
62
62
  [isPickerShown, setIsPickerShown] = useState(false),
63
63
  [isRendered, setIsRendered] = useState(false),
64
+ [localValue, setLocalValue] = useState(value),
64
65
  [textInputValue, setTextInputValue] = useState(value),
65
66
  [isTranslateX, setIsTranslateX] = useState(false),
66
67
  [isTranslateY, setIsTranslateY] = useState(false),
67
68
  [top, setTop] = useState(0),
68
69
  [left, setLeft] = useState(0),
70
+ setBothValues = (value) => {
71
+ setLocalValue(value);
72
+ setValue(value);
73
+ },
74
+ formatByMode = (value) => {
75
+ switch(mode) {
76
+ case DATE:
77
+ if (!_.isNil(value)) {
78
+ value = Parsers.ParseDate(value);
79
+ value = Formatters.FormatDate(value, 'YYYY-MM-DD');
80
+ }
81
+ break;
82
+ case TIME:
83
+ if (!_.isNil(value)) {
84
+ value = Parsers.ParseTime(value);
85
+ value = Formatters.FormatTime(value);
86
+ }
87
+ break;
88
+ case DATETIME:
89
+ if (!_.isNil(value)) {
90
+ value = Parsers.ParseDate(value);
91
+ value = Formatters.FormatDate(value, 'YYYY-MM-DD HH:mm:ss');
92
+ }
93
+ break;
94
+ default:
95
+ }
96
+ return value;
97
+ },
69
98
  showPicker = () => {
70
99
  if (isPickerShown) {
71
100
  return;
@@ -140,34 +169,14 @@ export function DateElement(props) {
140
169
  return;
141
170
  }
142
171
  if (_.isEmpty(value)) {
143
- setValue(null);
172
+ setBothValues(null);
144
173
  setTextInputValue('');
145
174
  return;
146
175
  }
147
- switch(mode) {
148
- case DATE:
149
- if (!_.isNil(value)) {
150
- value = Parsers.ParseDate(value);
151
- value = Formatters.FormatDate(value, 'YYYY-MM-DD');
152
- }
153
- break;
154
- case TIME:
155
- if (!_.isNil(value)) {
156
- value = Parsers.ParseTime(value);
157
- value = Formatters.FormatTime(value);
158
- }
159
- break;
160
- case DATETIME:
161
- if (!_.isNil(value)) {
162
- value = Parsers.ParseDate(value);
163
- value = Formatters.FormatDate(value, 'YYYY-MM-DD HH:mm:ss');
164
- }
165
- break;
166
- default:
167
- }
176
+ value = formatByMode(value);
168
177
 
169
178
  if (value !== 'Invalid date') {
170
- setValue(value);
179
+ setBothValues(value);
171
180
  }
172
181
 
173
182
  setTextInputValue(value);
@@ -219,10 +228,23 @@ export function DateElement(props) {
219
228
  }
220
229
 
221
230
  if (moment && moment?.isValid()) {
222
- setValue(value);
231
+ setBothValues(value);
223
232
  setTextInputValue(value);
224
233
  }
225
234
  };
235
+
236
+
237
+ useEffect(() => {
238
+
239
+ // When value changes from outside, adjust text value
240
+ if (value !== localValue) {
241
+ setLocalValue(value);
242
+
243
+ const textValue = formatByMode(value);
244
+ setTextInputValue(textValue);
245
+ }
246
+
247
+ }, [value]);
226
248
 
227
249
  // Format the display date/time/datetime
228
250
  let title = placeholder,
@@ -42,7 +42,8 @@ export default function withWindowedEditor(WrappedComponent, isTree = false) {
42
42
  h,
43
43
 
44
44
  ...propsToPass
45
- } = props;
45
+ } = props,
46
+ onEditorCancel = props.onEditorCancel;
46
47
 
47
48
  if (!Editor) {
48
49
  throw Error('Editor is not defined');
@@ -53,7 +54,7 @@ export default function withWindowedEditor(WrappedComponent, isTree = false) {
53
54
  {isEditorShown &&
54
55
  <Modal
55
56
  isOpen={true}
56
- onClose={() => setIsEditorShown(false)}
57
+ onClose={onEditorCancel}
57
58
  >
58
59
  <Editor
59
60
  editorType={EDITOR_TYPE__WINDOWED}