Skip to content

Commit 463c942

Browse files
committed
[Library] Add a way to give a logger from outside component
1 parent aeb7b4f commit 463c942

File tree

8 files changed

+43
-18
lines changed

8 files changed

+43
-18
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,11 @@ Function parameters :
274274
| oldValue | Old value of the key | Any | 'test' for data: { object: { string: 'test' } } on 'string' node |
275275
| newValue | New value of the key | Any | 'update' for data: { object: { string: 'update' } } on 'string' node |
276276

277+
### logger
278+
| Key | Description | Type | Required | Default |
279+
|:------:|:----------------------------------------------------------------:|:--------:|:---------:|:---------------------:|
280+
| logger | Object used to log 'catch' from promise (using only 'error' key) | Object | False | `{ error: () => {} }` |
281+
277282
## Design
278283
The library provide CSS class on elements. All are prefixed by "rejt" to avoid conflict.
279284
To avoid being linked with a CSS file, the library will use the inline style.

dev/components/Body.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ class Body extends Component {
327327
readOnly={readOnly}
328328
inputElement={customInputElement}
329329
minusMenuElement={minusMenuElement}
330+
logger={console}
330331
/>
331332
</div>
332333
</td>

src/JsonTree.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const propTypes = {
3838
beforeRemoveAction: PropTypes.func,
3939
beforeAddAction: PropTypes.func,
4040
beforeUpdateAction: PropTypes.func,
41+
logger: PropTypes.object,
4142
};
4243
// Default props
4344
const defaultProps = {
@@ -63,6 +64,7 @@ const defaultProps = {
6364
beforeRemoveAction: (key, keyPath, deep, oldValue) => new Promise(resolve => resolve()),
6465
beforeAddAction: (key, keyPath, deep, newValue) => new Promise(resolve => resolve()),
6566
beforeUpdateAction: (key, keyPath, deep, oldValue, newValue) => new Promise(resolve => resolve()),
67+
logger: { error: () => {} },
6668
/* eslint-enable */
6769
};
6870

@@ -113,6 +115,7 @@ class JsonTree extends Component {
113115
beforeRemoveAction,
114116
beforeAddAction,
115117
beforeUpdateAction,
118+
logger,
116119
} = this.props;
117120

118121
// Node type
@@ -144,6 +147,7 @@ class JsonTree extends Component {
144147
beforeRemoveAction={beforeRemoveAction}
145148
beforeAddAction={beforeAddAction}
146149
beforeUpdateAction={beforeUpdateAction}
150+
logger={logger}
147151
/>);
148152
} else {
149153
node = 'Data must be an Array or Object';

src/components/JsonArray.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const propTypes = {
3939
beforeRemoveAction: PropTypes.func,
4040
beforeAddAction: PropTypes.func,
4141
beforeUpdateAction: PropTypes.func,
42+
logger: PropTypes.object.isRequired,
4243
};
4344
// Default props
4445
const defaultProps = {
@@ -114,7 +115,7 @@ class JsonArray extends Component {
114115

115116
handleRemoveItem(index) {
116117
return () => {
117-
const { beforeRemoveAction } = this.props;
118+
const { beforeRemoveAction, logger } = this.props;
118119
const { data, keyPath, deep } = this.state;
119120
const oldValue = data[index];
120121

@@ -144,14 +145,13 @@ class JsonArray extends Component {
144145
onUpdate(keyPath[keyPath.length - 1], data);
145146
// Spread delta update
146147
onDeltaUpdate(deltaUpdateResult);
147-
}).catch(() => {
148-
});
148+
}).catch(logger.error);
149149
};
150150
}
151151

152152
handleAddValueAdd({ newValue }) {
153153
const { data, keyPath, deep } = this.state;
154-
const { beforeAddAction } = this.props;
154+
const { beforeAddAction, logger } = this.props;
155155

156156
beforeAddAction(data.length, keyPath, deep, newValue).then(() => {
157157
// Update data
@@ -175,8 +175,7 @@ class JsonArray extends Component {
175175
key: newData.length - 1,
176176
newValue,
177177
});
178-
}).catch(() => {
179-
});
178+
}).catch(logger.error);
180179
}
181180

182181
handleAddValueCancel() {
@@ -268,6 +267,7 @@ class JsonArray extends Component {
268267
beforeRemoveAction,
269268
beforeAddAction,
270269
beforeUpdateAction,
270+
logger,
271271
} = this.props;
272272
const { minus, plus, delimiter, ul, addForm } = getStyle(name, data, keyPath, deep, dataType);
273273

@@ -307,6 +307,7 @@ class JsonArray extends Component {
307307
beforeRemoveAction={beforeRemoveAction}
308308
beforeAddAction={beforeAddAction}
309309
beforeUpdateAction={beforeUpdateAction}
310+
logger={logger}
310311
/>);
311312

312313
const onlyValue = true;

src/components/JsonFunctionValue.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const propTypes = {
3131
cancelButtonElement: PropTypes.element,
3232
textareaElement: PropTypes.element,
3333
minusMenuElement: PropTypes.element,
34+
logger: PropTypes.object.isRequired,
3435
};
3536
// Default props
3637
const defaultProps = {
@@ -87,7 +88,7 @@ class JsonFunctionValue extends Component {
8788
}
8889

8990
handleEdit() {
90-
const { handleUpdateValue, originalValue } = this.props;
91+
const { handleUpdateValue, originalValue, logger } = this.props;
9192
const { inputRef, name } = this.state;
9293

9394
const newValue = parse(inputRef.value);
@@ -103,8 +104,7 @@ class JsonFunctionValue extends Component {
103104
if (!isComponentWillChange(originalValue, newValue)) {
104105
this.handleCancelEdit();
105106
}
106-
}).catch(() => {
107-
});
107+
}).catch(logger.error);
108108
}
109109

110110
handleEditMode() {

src/components/JsonNode.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ const propTypes = {
4040
beforeRemoveAction: PropTypes.func,
4141
beforeAddAction: PropTypes.func,
4242
beforeUpdateAction: PropTypes.func,
43+
logger: PropTypes.object.isRequired,
4344
};
4445
// Default props
4546
const defaultProps = {
@@ -87,6 +88,7 @@ class JsonNode extends Component {
8788
beforeRemoveAction,
8889
beforeAddAction,
8990
beforeUpdateAction,
91+
logger,
9092
} = this.props;
9193
const readOnlyTrue = () => (true);
9294

@@ -115,6 +117,7 @@ class JsonNode extends Component {
115117
beforeRemoveAction={beforeRemoveAction}
116118
beforeAddAction={beforeAddAction}
117119
beforeUpdateAction={beforeUpdateAction}
120+
logger={logger}
118121
/>);
119122
case 'Object':
120123
return (<JsonObject
@@ -139,6 +142,7 @@ class JsonNode extends Component {
139142
beforeRemoveAction={beforeRemoveAction}
140143
beforeAddAction={beforeAddAction}
141144
beforeUpdateAction={beforeUpdateAction}
145+
logger={logger}
142146
/>);
143147
case 'Array':
144148
return (<JsonArray
@@ -163,6 +167,7 @@ class JsonNode extends Component {
163167
beforeRemoveAction={beforeRemoveAction}
164168
beforeAddAction={beforeAddAction}
165169
beforeUpdateAction={beforeUpdateAction}
170+
logger={logger}
166171
/>);
167172
case 'String':
168173
return (<JsonValue
@@ -180,6 +185,7 @@ class JsonNode extends Component {
180185
editButtonElement={editButtonElement}
181186
inputElement={inputElement}
182187
minusMenuElement={minusMenuElement}
188+
logger={logger}
183189
/>);
184190
case 'Number':
185191
return (<JsonValue
@@ -197,6 +203,7 @@ class JsonNode extends Component {
197203
editButtonElement={editButtonElement}
198204
inputElement={inputElement}
199205
minusMenuElement={minusMenuElement}
206+
logger={logger}
200207
/>);
201208
case 'Boolean':
202209
return (<JsonValue
@@ -214,6 +221,7 @@ class JsonNode extends Component {
214221
editButtonElement={editButtonElement}
215222
inputElement={inputElement}
216223
minusMenuElement={minusMenuElement}
224+
logger={logger}
217225
/>);
218226
case 'Date':
219227
return (<JsonValue
@@ -231,6 +239,7 @@ class JsonNode extends Component {
231239
editButtonElement={editButtonElement}
232240
inputElement={inputElement}
233241
minusMenuElement={minusMenuElement}
242+
logger={logger}
234243
/>);
235244
case 'Null':
236245
return (<JsonValue
@@ -248,6 +257,7 @@ class JsonNode extends Component {
248257
editButtonElement={editButtonElement}
249258
inputElement={inputElement}
250259
minusMenuElement={minusMenuElement}
260+
logger={logger}
251261
/>);
252262
case 'Undefined':
253263
return (<JsonValue
@@ -265,6 +275,7 @@ class JsonNode extends Component {
265275
editButtonElement={editButtonElement}
266276
inputElement={inputElement}
267277
minusMenuElement={minusMenuElement}
278+
logger={logger}
268279
/>);
269280
case 'Function':
270281
return (<JsonFunctionValue
@@ -282,6 +293,7 @@ class JsonNode extends Component {
282293
editButtonElement={editButtonElement}
283294
textareaElement={textareaElement}
284295
minusMenuElement={minusMenuElement}
296+
logger={logger}
285297
/>);
286298
case 'Symbol':
287299
return (<JsonValue
@@ -299,6 +311,7 @@ class JsonNode extends Component {
299311
editButtonElement={editButtonElement}
300312
inputElement={inputElement}
301313
minusMenuElement={minusMenuElement}
314+
logger={logger}
302315
/>);
303316
default:
304317
return null;

src/components/JsonObject.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const propTypes = {
3939
beforeRemoveAction: PropTypes.func,
4040
beforeAddAction: PropTypes.func,
4141
beforeUpdateAction: PropTypes.func,
42+
logger: PropTypes.object.isRequired,
4243
};
4344
// Default props
4445
const defaultProps = {
@@ -114,7 +115,7 @@ class JsonObject extends Component {
114115

115116
handleAddValueAdd({ key, newValue }) {
116117
const { data, keyPath, deep } = this.state;
117-
const { beforeAddAction } = this.props;
118+
const { beforeAddAction, logger } = this.props;
118119

119120
beforeAddAction(key, keyPath, deep, newValue).then(() => {
120121
// Update data
@@ -135,13 +136,12 @@ class JsonObject extends Component {
135136
key,
136137
newValue,
137138
});
138-
}).catch(() => {
139-
});
139+
}).catch(logger.error);
140140
}
141141

142142
handleRemoveValue(key) {
143143
return () => {
144-
const { beforeRemoveAction } = this.props;
144+
const { beforeRemoveAction, logger } = this.props;
145145
const { data, keyPath, deep } = this.state;
146146
const oldValue = data[key];
147147
// Before Remove Action
@@ -170,8 +170,7 @@ class JsonObject extends Component {
170170
onUpdate(keyPath[keyPath.length - 1], data);
171171
// Spread delta update
172172
onDeltaUpdate(deltaUpdateResult);
173-
}).catch(() => {
174-
});
173+
}).catch(logger.error);
175174
};
176175
}
177176

@@ -264,6 +263,7 @@ class JsonObject extends Component {
264263
beforeRemoveAction,
265264
beforeAddAction,
266265
beforeUpdateAction,
266+
logger,
267267
} = this.props;
268268

269269
const { minus, plus, addForm, ul, delimiter } = getStyle(name, data, keyPath, deep, dataType);
@@ -304,6 +304,7 @@ class JsonObject extends Component {
304304
beforeRemoveAction={beforeRemoveAction}
305305
beforeAddAction={beforeAddAction}
306306
beforeUpdateAction={beforeUpdateAction}
307+
logger={logger}
307308
/>);
308309

309310
const startObject = '{';

src/components/JsonValue.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const propTypes = {
3131
cancelButtonElement: PropTypes.element,
3232
inputElement: PropTypes.element,
3333
minusMenuElement: PropTypes.element,
34+
logger: PropTypes.object.isRequired,
3435
};
3536
// Default props
3637
const defaultProps = {
@@ -86,7 +87,7 @@ class JsonValue extends Component {
8687
}
8788

8889
handleEdit() {
89-
const { handleUpdateValue, originalValue } = this.props;
90+
const { handleUpdateValue, originalValue, logger } = this.props;
9091
const { inputRef, name } = this.state;
9192

9293
const newValue = parse(inputRef.value);
@@ -102,8 +103,7 @@ class JsonValue extends Component {
102103
if (!isComponentWillChange(originalValue, newValue)) {
103104
this.handleCancelEdit();
104105
}
105-
}).catch(() => {
106-
});
106+
}).catch(logger.error);
107107
}
108108

109109
handleEditMode() {

0 commit comments

Comments
 (0)