@onehat/ui 0.4.30 → 0.4.31

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.4.30",
3
+ "version": "0.4.31",
4
4
  "description": "Base UI for OneHat apps",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -72,7 +72,8 @@ export default function withPresetButtons(WrappedComponent, isGrid = false) {
72
72
  disableCopy = !isGrid,
73
73
  disableDuplicate = !isEditor,
74
74
  disablePrint = !isGrid,
75
-
75
+ protectedValues, // records with these values cannot be edited or deleted
76
+
76
77
  // withAlert
77
78
  showInfo,
78
79
 
@@ -178,6 +179,25 @@ export default function withPresetButtons(WrappedComponent, isGrid = false) {
178
179
  }
179
180
  return isDisabled;
180
181
  },
182
+ isNoSelectorSelected = () => {
183
+ return selectorId && !selectorSelected;
184
+ },
185
+ isEmptySelection = () => {
186
+ return _.isEmpty(selection);
187
+ },
188
+ isMultiSelection = () => {
189
+ return _.isArray(selection) && selection.length > 1;
190
+ },
191
+ isProtectedValue = () => {
192
+ if (!protectedValues) {
193
+ return false;
194
+ }
195
+ const value = selection[0]?.id;
196
+ if (_.isNil(value)) {
197
+ return false;
198
+ }
199
+ return inArray(value, protectedValues);
200
+ },
181
201
  getPresetButtonProps = (type) => {
182
202
  let key,
183
203
  text,
@@ -190,10 +210,9 @@ export default function withPresetButtons(WrappedComponent, isGrid = false) {
190
210
  text = 'Add';
191
211
  handler = (parent, e) => onAdd();
192
212
  icon = Plus;
193
- if (selectorId && !selectorSelected) {
194
- isDisabled = true;
195
- }
196
- if (isTree && _.isEmpty(selection)) {
213
+ if (isNoSelectorSelected() ||
214
+ (isTree && isEmptySelection())
215
+ ) {
197
216
  isDisabled = true;
198
217
  }
199
218
  break;
@@ -202,13 +221,12 @@ export default function withPresetButtons(WrappedComponent, isGrid = false) {
202
221
  text = 'Edit';
203
222
  handler = (parent, e) => onEdit();
204
223
  icon = Edit;
205
- if (selectorId && !selectorSelected) {
206
- isDisabled = true;
207
- }
208
- if (_.isEmpty(selection) || (_.isArray(selection) && selection.length > 1)) {
209
- isDisabled = true;
210
- }
211
- if (canRecordBeEdited && !canRecordBeEdited(selection)) {
224
+ if (isNoSelectorSelected() ||
225
+ isEmptySelection() ||
226
+ isMultiSelection() ||
227
+ isProtectedValue() ||
228
+ (canRecordBeEdited && !canRecordBeEdited(selection))
229
+ ) {
212
230
  isDisabled = true;
213
231
  }
214
232
  break;
@@ -218,13 +236,12 @@ export default function withPresetButtons(WrappedComponent, isGrid = false) {
218
236
  handler = onDelete;
219
237
  handler = (parent, e) => onDelete();
220
238
  icon = Trash;
221
- if (selectorId && !selectorSelected) {
222
- isDisabled = true;
223
- }
224
- if (_.isEmpty(selection) || (_.isArray(selection) && selection.length > 1)) {
225
- isDisabled = true;
226
- }
227
- if (canRecordBeDeleted && !canRecordBeDeleted(selection)) {
239
+ if (isNoSelectorSelected() ||
240
+ isEmptySelection() ||
241
+ isMultiSelection() ||
242
+ isProtectedValue() ||
243
+ (canRecordBeEdited && !canRecordBeEdited(selection))
244
+ ) {
228
245
  isDisabled = true;
229
246
  }
230
247
  if (isTree) {
@@ -240,10 +257,10 @@ export default function withPresetButtons(WrappedComponent, isGrid = false) {
240
257
  handler = (parent, e) => onView();
241
258
  icon = Eye;
242
259
  isDisabled = !selection.length || selection.length !== 1;
243
- if (selectorId && !selectorSelected) {
244
- isDisabled = true;
245
- }
246
- if (_.isEmpty(selection) || selection.length > 1) {
260
+ if (isNoSelectorSelected() ||
261
+ isEmptySelection() ||
262
+ isMultiSelection()
263
+ ) {
247
264
  isDisabled = true;
248
265
  }
249
266
  break;
@@ -253,10 +270,9 @@ export default function withPresetButtons(WrappedComponent, isGrid = false) {
253
270
  handler = (parent, e) => onCopyToClipboard();
254
271
  icon = Clipboard;
255
272
  isDisabled = !selection.length;
256
- if (selectorId && !selectorSelected) {
257
- isDisabled = true;
258
- }
259
- if (_.isEmpty(selection)) {
273
+ if (isNoSelectorSelected() ||
274
+ isEmptySelection()
275
+ ) {
260
276
  isDisabled = true;
261
277
  }
262
278
  break;
@@ -266,13 +282,11 @@ export default function withPresetButtons(WrappedComponent, isGrid = false) {
266
282
  handler = (parent, e) => onDuplicate();
267
283
  icon = Duplicate;
268
284
  isDisabled = !selection.length || selection.length !== 1;
269
- if (selectorId && !selectorSelected) {
270
- isDisabled = true;
271
- }
272
- if (_.isEmpty(selection) || selection.length > 1) {
273
- isDisabled = true;
274
- }
275
- if (canRecordBeDuplicated && !canRecordBeDuplicated(selection)) {
285
+ if (isNoSelectorSelected() ||
286
+ isEmptySelection() ||
287
+ isMultiSelection() ||
288
+ (canRecordBeDuplicated && !canRecordBeDuplicated(selection))
289
+ ) {
276
290
  isDisabled = true;
277
291
  }
278
292
  break;