box-ui-elements 23.4.0-beta.1 → 23.4.0-beta.3

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 (125) hide show
  1. package/dist/explorer.js +1 -1
  2. package/dist/preview.js +1 -1
  3. package/dist/sidebar.js +1 -1
  4. package/es/common/types/metadata.js.flow +1 -0
  5. package/es/common/types/metadata.js.map +1 -1
  6. package/es/features/metadata-instance-editor/CascadePolicy.js +6 -2
  7. package/es/features/metadata-instance-editor/CascadePolicy.js.flow +19 -12
  8. package/es/features/metadata-instance-editor/CascadePolicy.js.map +1 -1
  9. package/es/features/metadata-instance-editor/Instance.js +31 -9
  10. package/es/features/metadata-instance-editor/Instance.js.flow +41 -9
  11. package/es/features/metadata-instance-editor/Instance.js.map +1 -1
  12. package/es/features/metadata-instance-editor/Instances.js +2 -0
  13. package/es/features/metadata-instance-editor/Instances.js.flow +3 -0
  14. package/es/features/metadata-instance-editor/Instances.js.map +1 -1
  15. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js +2 -0
  16. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.flow +3 -0
  17. package/es/features/metadata-instance-editor/MetadataInstanceEditor.js.map +1 -1
  18. package/es/features/metadata-instance-editor/TemplateDropdown.js +1 -1
  19. package/es/features/metadata-instance-editor/TemplateDropdown.js.flow +1 -1
  20. package/es/features/metadata-instance-editor/TemplateDropdown.js.map +1 -1
  21. package/es/features/metadata-instance-editor/TemplatedInstance.js +2 -0
  22. package/es/features/metadata-instance-editor/TemplatedInstance.js.flow +11 -1
  23. package/es/features/metadata-instance-editor/TemplatedInstance.js.map +1 -1
  24. package/es/features/metadata-instance-editor/constants.js +2 -1
  25. package/es/features/metadata-instance-editor/constants.js.flow +3 -1
  26. package/es/features/metadata-instance-editor/constants.js.map +1 -1
  27. package/es/features/metadata-instance-fields/DateMetadataField.js +30 -25
  28. package/es/features/metadata-instance-fields/DateMetadataField.js.flow +31 -27
  29. package/es/features/metadata-instance-fields/DateMetadataField.js.map +1 -1
  30. package/es/features/metadata-instance-fields/EnumMetadataField.js +8 -5
  31. package/es/features/metadata-instance-fields/EnumMetadataField.js.flow +8 -6
  32. package/es/features/metadata-instance-fields/EnumMetadataField.js.map +1 -1
  33. package/es/features/metadata-instance-fields/FloatMetadataField.js +2 -0
  34. package/es/features/metadata-instance-fields/FloatMetadataField.js.flow +3 -0
  35. package/es/features/metadata-instance-fields/FloatMetadataField.js.map +1 -1
  36. package/es/features/metadata-instance-fields/IntegerMetadataField.js +2 -0
  37. package/es/features/metadata-instance-fields/IntegerMetadataField.js.flow +3 -0
  38. package/es/features/metadata-instance-fields/IntegerMetadataField.js.map +1 -1
  39. package/es/features/metadata-instance-fields/MetadataField.js +7 -0
  40. package/es/features/metadata-instance-fields/MetadataField.js.flow +8 -0
  41. package/es/features/metadata-instance-fields/MetadataField.js.map +1 -1
  42. package/es/features/metadata-instance-fields/MultiSelectMetadataField.js +2 -0
  43. package/es/features/metadata-instance-fields/MultiSelectMetadataField.js.flow +3 -0
  44. package/es/features/metadata-instance-fields/MultiSelectMetadataField.js.map +1 -1
  45. package/es/features/metadata-instance-fields/TextMetadataField.js +8 -5
  46. package/es/features/metadata-instance-fields/TextMetadataField.js.flow +8 -6
  47. package/es/features/metadata-instance-fields/TextMetadataField.js.map +1 -1
  48. package/i18n/bn-IN.js +4 -4
  49. package/i18n/bn-IN.properties +4 -4
  50. package/i18n/da-DK.js +4 -4
  51. package/i18n/da-DK.properties +4 -4
  52. package/i18n/de-DE.js +4 -4
  53. package/i18n/de-DE.properties +4 -4
  54. package/i18n/es-419.js +3 -3
  55. package/i18n/es-419.properties +3 -3
  56. package/i18n/es-ES.js +3 -3
  57. package/i18n/es-ES.properties +3 -3
  58. package/i18n/fi-FI.js +3 -3
  59. package/i18n/fi-FI.properties +3 -3
  60. package/i18n/fr-CA.js +4 -4
  61. package/i18n/fr-CA.properties +4 -4
  62. package/i18n/fr-FR.js +4 -4
  63. package/i18n/fr-FR.properties +4 -4
  64. package/i18n/hi-IN.js +4 -4
  65. package/i18n/hi-IN.properties +4 -4
  66. package/i18n/it-IT.js +4 -4
  67. package/i18n/it-IT.properties +4 -4
  68. package/i18n/ko-KR.js +4 -4
  69. package/i18n/ko-KR.properties +4 -4
  70. package/i18n/nb-NO.js +4 -4
  71. package/i18n/nb-NO.properties +4 -4
  72. package/i18n/nl-NL.js +4 -4
  73. package/i18n/nl-NL.properties +4 -4
  74. package/i18n/pl-PL.js +4 -4
  75. package/i18n/pl-PL.properties +4 -4
  76. package/i18n/pt-BR.js +4 -4
  77. package/i18n/pt-BR.properties +4 -4
  78. package/i18n/ru-RU.js +4 -4
  79. package/i18n/ru-RU.properties +4 -4
  80. package/i18n/sv-SE.js +4 -4
  81. package/i18n/sv-SE.properties +4 -4
  82. package/i18n/tr-TR.js +4 -4
  83. package/i18n/tr-TR.properties +4 -4
  84. package/i18n/zh-CN.js +4 -4
  85. package/i18n/zh-CN.properties +4 -4
  86. package/i18n/zh-TW.js +4 -4
  87. package/i18n/zh-TW.properties +4 -4
  88. package/package.json +1 -1
  89. package/src/common/types/metadata.js +1 -0
  90. package/src/features/metadata-instance-editor/CascadePolicy.js +19 -12
  91. package/src/features/metadata-instance-editor/Instance.js +41 -9
  92. package/src/features/metadata-instance-editor/Instances.js +3 -0
  93. package/src/features/metadata-instance-editor/MetadataInstanceEditor.js +3 -0
  94. package/src/features/metadata-instance-editor/TemplateDropdown.js +1 -1
  95. package/src/features/metadata-instance-editor/TemplatedInstance.js +11 -1
  96. package/src/features/metadata-instance-editor/__tests__/CascadePolicy.test.js +92 -1
  97. package/src/features/metadata-instance-editor/__tests__/Instance.test.js +207 -2
  98. package/src/features/metadata-instance-editor/__tests__/Instances.test.js +92 -3
  99. package/src/features/metadata-instance-editor/__tests__/MetadataInstanceEditor.test.js +105 -0
  100. package/src/features/metadata-instance-editor/__tests__/TemplatedInstance.test.js +83 -1
  101. package/src/features/metadata-instance-editor/__tests__/__snapshots__/CascadePolicy.test.js.snap +1 -0
  102. package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instance.test.js.snap +16 -5
  103. package/src/features/metadata-instance-editor/__tests__/__snapshots__/Instances.test.js.snap +4 -2
  104. package/src/features/metadata-instance-editor/__tests__/__snapshots__/MetadataInstanceEditor.test.js.snap +1 -0
  105. package/src/features/metadata-instance-editor/__tests__/__snapshots__/TemplatedInstance.test.js.snap +2 -2
  106. package/src/features/metadata-instance-editor/constants.js +3 -1
  107. package/src/features/metadata-instance-fields/DateMetadataField.js +31 -27
  108. package/src/features/metadata-instance-fields/EnumMetadataField.js +8 -6
  109. package/src/features/metadata-instance-fields/FloatMetadataField.js +3 -0
  110. package/src/features/metadata-instance-fields/IntegerMetadataField.js +3 -0
  111. package/src/features/metadata-instance-fields/MetadataField.js +8 -0
  112. package/src/features/metadata-instance-fields/MultiSelectMetadataField.js +3 -0
  113. package/src/features/metadata-instance-fields/TextMetadataField.js +8 -6
  114. package/src/features/metadata-instance-fields/__tests__/DateMetadataField.test.js +59 -8
  115. package/src/features/metadata-instance-fields/__tests__/EnumMetadataField.test.js +63 -18
  116. package/src/features/metadata-instance-fields/__tests__/FloatMetadataField.test.js +68 -4
  117. package/src/features/metadata-instance-fields/__tests__/IntegerMetadataField.test.js +90 -4
  118. package/src/features/metadata-instance-fields/__tests__/MultiSelectMetadataField.test.js +95 -7
  119. package/src/features/metadata-instance-fields/__tests__/TextMetadataField.test.js +107 -14
  120. package/src/features/metadata-instance-fields/__tests__/__snapshots__/DateMetadataField.test.js.snap +0 -18
  121. package/src/features/metadata-instance-fields/__tests__/__snapshots__/EnumMetadataField.test.js.snap +0 -84
  122. package/src/features/metadata-instance-fields/__tests__/__snapshots__/FloatMetadataField.test.js.snap +0 -8
  123. package/src/features/metadata-instance-fields/__tests__/__snapshots__/IntegerMetadataField.test.js.snap +0 -8
  124. package/src/features/metadata-instance-fields/__tests__/__snapshots__/MultiSelectMetadataField.test.js.snap +0 -58
  125. package/src/features/metadata-instance-fields/__tests__/__snapshots__/TextMetadataField.test.js.snap +0 -31
@@ -1,4 +1,6 @@
1
1
  import * as React from 'react';
2
+ import userEvent from '@testing-library/user-event';
3
+ import { render, screen } from '../../../test-utils/testing-library';
2
4
 
3
5
  import Instances from '../Instances';
4
6
 
@@ -182,6 +184,50 @@ const editor2 = {
182
184
  // State of editors from server
183
185
  const editorsOnServer = [editor1, editor2];
184
186
 
187
+ const testInstanceFields = [
188
+ {
189
+ id: 'field1',
190
+ type: 'string',
191
+ key: 'stringfield',
192
+ displayName: 'String Field',
193
+ description: 'example of a string field',
194
+ },
195
+ ];
196
+
197
+ const getInstancesBaseProps = (props = {}) => ({
198
+ editors: [
199
+ {
200
+ instance: {
201
+ id: 'test-instance-1',
202
+ canEdit: true,
203
+ data: { stringfield: 'value1' },
204
+ isDirty: false,
205
+ hasError: false,
206
+ isCascadingPolicyApplicable: true,
207
+ cascadePolicy: {
208
+ id: 'policy-1',
209
+ canEdit: true,
210
+ isEnabled: true,
211
+ scope: 'enterprise_123',
212
+ cascadePolicyType: 'regular',
213
+ },
214
+ },
215
+ template: {
216
+ id: 'template-1',
217
+ displayName: 'Test Template Editor',
218
+ fields: testInstanceFields,
219
+ templateKey: 'editorTemplateKey',
220
+ },
221
+ },
222
+ ],
223
+ onSave: jest.fn(),
224
+ onModification: jest.fn(),
225
+ onRemove: jest.fn(),
226
+ canUseAIFolderExtraction: true,
227
+ isCascadingPolicyApplicable: true,
228
+ ...props,
229
+ });
230
+
185
231
  describe('features/metadata-editor-editor/Instances', () => {
186
232
  test('should correctly render editors', () => {
187
233
  const wrapper = shallow(<Instances editors={editorsOnServer} />);
@@ -190,18 +236,61 @@ describe('features/metadata-editor-editor/Instances', () => {
190
236
 
191
237
  test('should correctly render instances with editors and a selected template', () => {
192
238
  const wrapper = shallow(<Instances editors={editorsOnServer} selectedTemplateKey="template1" />);
193
- const selectedTemplate = wrapper.find('Instance').at(0);
239
+ const selectedTemplate = wrapper.find('injectIntl(Instance)').at(0);
194
240
  expect(selectedTemplate.prop('isOpen')).toBe(true);
195
241
  expect(selectedTemplate.prop('id')).toBe('editor1');
196
242
  });
197
243
 
198
244
  test('should correctly render instances with a selected template and multiple editors', () => {
199
245
  const wrapper = shallow(<Instances editors={editorsOnServer} selectedTemplateKey="template2" />);
200
- const selectedTemplate = wrapper.find('Instance').at(1);
246
+ const selectedTemplate = wrapper.find('injectIntl(Instance)').at(1);
201
247
  expect(selectedTemplate.prop('isOpen')).toBe(true);
202
248
  expect(selectedTemplate.prop('id')).toBe('editor2');
203
- const unselectedTemplate = wrapper.find('Instance').at(0);
249
+ const unselectedTemplate = wrapper.find('injectIntl(Instance)').at(0);
204
250
  expect(unselectedTemplate.prop('isOpen')).toBe(false);
205
251
  expect(unselectedTemplate.prop('id')).toBe('editor1');
206
252
  });
207
253
  });
254
+
255
+ describe('Instances component - canUseAIFolderExtractionAgentSelector prop', () => {
256
+ test('should pass canUseAIFolderExtractionAgentSelector to child Instance components, showing agent selector', async () => {
257
+ render(
258
+ <Instances
259
+ {...getInstancesBaseProps({
260
+ canUseAIFolderExtractionAgentSelector: true,
261
+ })}
262
+ />,
263
+ );
264
+
265
+ const editButton = screen.getByRole('button', { name: 'Edit Metadata' });
266
+ await userEvent.click(editButton);
267
+
268
+ expect(screen.getByRole('button', { name: 'Agent Basic' })).toBeInTheDocument();
269
+ });
270
+
271
+ test('should not show agent selector in child Instance if canUseAIFolderExtractionAgentSelector is false', async () => {
272
+ render(
273
+ <Instances
274
+ {...getInstancesBaseProps({
275
+ canUseAIFolderExtractionAgentSelector: false,
276
+ })}
277
+ />,
278
+ );
279
+
280
+ const editButton = screen.getByRole('button', { name: 'Edit Metadata' });
281
+ await userEvent.click(editButton);
282
+
283
+ expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
284
+ });
285
+
286
+ test('should not show agent selector in child Instance if canUseAIFolderExtractionAgentSelector is undefined', async () => {
287
+ const props = getInstancesBaseProps();
288
+ delete props.canUseAIFolderExtractionAgentSelector;
289
+ render(<Instances {...props} />);
290
+
291
+ const editButton = screen.getByRole('button', { name: 'Edit Metadata' });
292
+ await userEvent.click(editButton);
293
+
294
+ expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
295
+ });
296
+ });
@@ -1,4 +1,6 @@
1
1
  import * as React from 'react';
2
+ import userEvent from '@testing-library/user-event';
3
+ import { render, screen } from '../../../test-utils/testing-library';
2
4
 
3
5
  import MetadataInstanceEditor from '../MetadataInstanceEditor';
4
6
  import Instances from '../Instances';
@@ -443,6 +445,66 @@ const templatesOnServer = [template1, template2, template3, template4, template5
443
445
  // State of editors from server
444
446
  const editorsOnServer = [editor1, editor2, editor3, editor4, editor5];
445
447
 
448
+ const testGrandchildInstanceFields = [
449
+ {
450
+ id: 'field1',
451
+ type: 'string',
452
+ key: 'stringfield',
453
+ displayName: 'String Field',
454
+ description: 'example of a string field',
455
+ },
456
+ ];
457
+
458
+ const getMetadataEditorBaseProps = (props = {}) => ({
459
+ editors: [
460
+ {
461
+ instance: {
462
+ id: 'test-instance-editor-child-1',
463
+ canEdit: true,
464
+ data: { stringfield: 'valueForEditor' },
465
+ isDirty: false,
466
+ hasError: false,
467
+ isCascadingPolicyApplicable: true,
468
+ cascadePolicy: {
469
+ id: 'policy-for-editor-1',
470
+ canEdit: true,
471
+ isEnabled: true,
472
+ scope: 'enterprise_123',
473
+ cascadePolicyType: 'regular',
474
+ },
475
+ },
476
+ template: {
477
+ id: 'template-for-editor-1',
478
+ displayName: 'Test Template In Editor',
479
+ fields: testGrandchildInstanceFields,
480
+ templateKey: 'editorChildTemplateKey',
481
+ },
482
+ },
483
+ ],
484
+ templates: [
485
+ {
486
+ id: 'template-for-editor-1',
487
+ templateKey: 'editorChildTemplateKey',
488
+ displayName: 'Test Template In Editor',
489
+ fields: testGrandchildInstanceFields,
490
+ },
491
+ {
492
+ id: 'template-for-editor-2',
493
+ templateKey: 'anotherEditorTemplateKey',
494
+ displayName: 'Another Test Template',
495
+ fields: [],
496
+ },
497
+ ],
498
+ onSave: jest.fn(),
499
+ onModification: jest.fn(),
500
+ onRemove: jest.fn(),
501
+ onAdd: jest.fn(),
502
+ canAdd: true,
503
+ canUseAIFolderExtraction: true,
504
+ isCascadingPolicyApplicable: true,
505
+ ...props,
506
+ });
507
+
446
508
  describe('features/metadata-editor-editor/MetadataInstanceEditor', () => {
447
509
  test('should correctly render editors', () => {
448
510
  const wrapper = shallow(<MetadataInstanceEditor editors={editorsOnServer} templates={templatesOnServer} />);
@@ -471,3 +533,46 @@ describe('features/metadata-editor-editor/MetadataInstanceEditor', () => {
471
533
  expect(instances.prop('selectedTemplateKey')).toBe(selectedTemplateKey);
472
534
  });
473
535
  });
536
+
537
+ describe('MetadataInstanceEditor - canUseAIFolderExtractionAgentSelector prop', () => {
538
+ test('should propagate canUseAIFolderExtractionAgentSelector, showing agent selector', async () => {
539
+ render(
540
+ <MetadataInstanceEditor
541
+ {...getMetadataEditorBaseProps({
542
+ canUseAIFolderExtractionAgentSelector: true,
543
+ })}
544
+ />,
545
+ );
546
+
547
+ const editButton = await screen.findByRole('button', { name: 'Edit Metadata' }, { timeout: 3000 });
548
+ await userEvent.click(editButton);
549
+
550
+ expect(screen.getByRole('button', { name: 'Agent Basic' })).toBeInTheDocument();
551
+ });
552
+
553
+ test('should not show agent selector if canUseAIFolderExtractionAgentSelector is false', async () => {
554
+ render(
555
+ <MetadataInstanceEditor
556
+ {...getMetadataEditorBaseProps({
557
+ canUseAIFolderExtractionAgentSelector: false,
558
+ })}
559
+ />,
560
+ );
561
+
562
+ const editButton = await screen.findByRole('button', { name: 'Edit Metadata' });
563
+ await userEvent.click(editButton);
564
+
565
+ expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
566
+ });
567
+
568
+ test('should not show agent selector if canUseAIFolderExtractionAgentSelector is undefined', async () => {
569
+ const props = getMetadataEditorBaseProps();
570
+ delete props.canUseAIFolderExtractionAgentSelector;
571
+ render(<MetadataInstanceEditor {...props} />);
572
+
573
+ const editButton = await screen.findByRole('button', { name: 'Edit Metadata' });
574
+ await userEvent.click(editButton);
575
+
576
+ expect(screen.queryByRole('button', { name: 'Agent Basic' })).not.toBeInTheDocument();
577
+ });
578
+ });
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
-
2
+ import { render, screen } from '../../../test-utils/testing-library';
3
3
  import TemplatedInstance from '../TemplatedInstance';
4
4
 
5
5
  const data = {
@@ -118,6 +118,56 @@ const allFieldsHidden = [
118
118
 
119
119
  const noFieldsForTemplate = [];
120
120
 
121
+ const testTemplateFields = [
122
+ {
123
+ id: 'field1',
124
+ type: 'string',
125
+ key: 'stringfield',
126
+ displayName: 'Test String Field',
127
+ description: 'A string field for testing.',
128
+ },
129
+ {
130
+ id: 'field2',
131
+ type: 'float',
132
+ key: 'floatfield',
133
+ displayName: 'Test Float Field',
134
+ description: 'A float field for testing.',
135
+ },
136
+ {
137
+ id: 'field3',
138
+ type: 'enum',
139
+ key: 'enumfield',
140
+ displayName: 'Test Enum Field',
141
+ description: 'An enum field for testing.',
142
+ options: [
143
+ { key: 'yes', displayName: 'Yes' },
144
+ { key: 'no', displayName: 'No' },
145
+ ],
146
+ },
147
+ ];
148
+
149
+ const testTemplateData = {
150
+ stringfield: 'test string',
151
+ floatfield: 12.34,
152
+ enumfield: 'yes',
153
+ };
154
+
155
+ const getTemplatedInstanceBaseProps = (props = {}) => ({
156
+ template: {
157
+ id: 'template-id-1',
158
+ displayName: 'Test Template Name',
159
+ fields: testTemplateFields,
160
+ templateKey: 'testTemplateKeyForTemplated',
161
+ },
162
+ data: testTemplateData,
163
+ errors: {},
164
+ onFieldChange: jest.fn(),
165
+ onFieldRemove: jest.fn(),
166
+ canEdit: true,
167
+ isDisabled: false,
168
+ ...props,
169
+ });
170
+
121
171
  describe('features/metadata-instance-editor/fields/TemplatedInstance', () => {
122
172
  test('should correctly render fields that are visible', () => {
123
173
  const wrapper = shallow(
@@ -161,3 +211,35 @@ describe('features/metadata-instance-editor/fields/TemplatedInstance', () => {
161
211
  expect(wrapper).toMatchSnapshot();
162
212
  });
163
213
  });
214
+
215
+ describe('TemplatedInstance isDisabled prop', () => {
216
+ test('should render all fields as disabled when isDisabled is true', () => {
217
+ render(<TemplatedInstance {...getTemplatedInstanceBaseProps({ isDisabled: true })} />);
218
+
219
+ expect(screen.getByRole('textbox', { name: 'Test String Field A string field for testing.' })).toBeDisabled();
220
+ expect(screen.getByRole('textbox', { name: 'Test Float Field A float field for testing.' })).toBeDisabled();
221
+ expect(screen.getByRole('listbox', { name: 'Test Enum Field An enum field for testing.' })).toBeDisabled();
222
+ });
223
+
224
+ test('should render all fields as enabled when isDisabled is false', () => {
225
+ render(<TemplatedInstance {...getTemplatedInstanceBaseProps({ isDisabled: false })} />);
226
+
227
+ expect(
228
+ screen.getByRole('textbox', { name: 'Test String Field A string field for testing.' }),
229
+ ).not.toBeDisabled();
230
+ expect(screen.getByRole('textbox', { name: 'Test Float Field A float field for testing.' })).not.toBeDisabled();
231
+ expect(screen.getByRole('listbox', { name: 'Test Enum Field An enum field for testing.' })).not.toBeDisabled();
232
+ });
233
+
234
+ test('should render all fields as enabled when isDisabled is not provided (defaults to false)', () => {
235
+ const props = getTemplatedInstanceBaseProps();
236
+ delete props.isDisabled;
237
+ render(<TemplatedInstance {...props} />);
238
+
239
+ expect(
240
+ screen.getByRole('textbox', { name: 'Test String Field A string field for testing.' }),
241
+ ).not.toBeDisabled();
242
+ expect(screen.getByRole('textbox', { name: 'Test Float Field A float field for testing.' })).not.toBeDisabled();
243
+ expect(screen.getByRole('listbox', { name: 'Test Enum Field An enum field for testing.' })).not.toBeDisabled();
244
+ });
245
+ });
@@ -40,6 +40,7 @@ exports[`features/metadata-instance-editor/CascadePolicy should correctly render
40
40
  >
41
41
  <div
42
42
  className="metadata-cascade-enable"
43
+ data-testid="metadata-cascade-enable"
43
44
  >
44
45
  <div>
45
46
  <MemoizedFormattedMessage
@@ -69,6 +69,7 @@ exports[`features/metadata-instance-editor/fields/Instance collapsible isOpen pr
69
69
  }
70
70
  }
71
71
  errors={{}}
72
+ isDisabled={false}
72
73
  onFieldChange={[Function]}
73
74
  onFieldRemove={[Function]}
74
75
  template={
@@ -93,7 +94,7 @@ exports[`features/metadata-instance-editor/fields/Instance collapsible isOpen pr
93
94
  `;
94
95
 
95
96
  exports[`features/metadata-instance-editor/fields/Instance message id should be fileMetadataRemoveCustomTemplateConfirm 1`] = `
96
- <FormattedMessage
97
+ <Memo(MemoizedFormattedMessage)
97
98
  defaultMessage="Are you sure you want to delete this custom metadata and all of its values from this file?"
98
99
  id="boxui.metadataInstanceEditor.fileMetadataRemoveCustomTemplateConfirm"
99
100
  values={
@@ -105,7 +106,7 @@ exports[`features/metadata-instance-editor/fields/Instance message id should be
105
106
  `;
106
107
 
107
108
  exports[`features/metadata-instance-editor/fields/Instance message id should be fileMetadataRemoveTemplateConfirm 1`] = `
108
- <FormattedMessage
109
+ <Memo(MemoizedFormattedMessage)
109
110
  defaultMessage="Are you sure you want to delete "{metadataName}" and all of its values from this file?"
110
111
  id="boxui.metadataInstanceEditor.fileMetadataRemoveTemplateConfirm"
111
112
  values={
@@ -117,7 +118,7 @@ exports[`features/metadata-instance-editor/fields/Instance message id should be
117
118
  `;
118
119
 
119
120
  exports[`features/metadata-instance-editor/fields/Instance message id should be folderMetadataRemoveCustomTemplateConfirm 1`] = `
120
- <FormattedMessage
121
+ <Memo(MemoizedFormattedMessage)
121
122
  defaultMessage="Are you sure you want to delete this custom metadata and all of its values? Any metadata template values already applied to files in this folder will not be deleted."
122
123
  id="boxui.metadataInstanceEditor.folderMetadataRemoveCustomTemplateConfirm"
123
124
  values={
@@ -129,7 +130,7 @@ exports[`features/metadata-instance-editor/fields/Instance message id should be
129
130
  `;
130
131
 
131
132
  exports[`features/metadata-instance-editor/fields/Instance message id should be folderMetadataRemoveTemplateConfirm 1`] = `
132
- <FormattedMessage
133
+ <Memo(MemoizedFormattedMessage)
133
134
  defaultMessage="Are you sure you want to delete "{metadataName}" and all of its values? Any metadata template values already applied to files in this folder will not be deleted."
134
135
  id="boxui.metadataInstanceEditor.folderMetadataRemoveTemplateConfirm"
135
136
  values={
@@ -164,7 +165,7 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
164
165
  <span
165
166
  className="metadata-instance-editor-instance-title-text"
166
167
  >
167
- <FormattedMessage
168
+ <Memo(MemoizedFormattedMessage)
168
169
  defaultMessage="Custom Metadata"
169
170
  id="boxui.metadataInstanceEditor.customTitle"
170
171
  />
@@ -255,6 +256,7 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
255
256
  }
256
257
  }
257
258
  errors={{}}
259
+ isDisabled={false}
258
260
  onFieldChange={[Function]}
259
261
  onFieldRemove={[Function]}
260
262
  template={
@@ -414,10 +416,12 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
414
416
  >
415
417
  <CascadePolicy
416
418
  canUseAIFolderExtraction={false}
419
+ canUseAIFolderExtractionAgentSelector={false}
417
420
  isAIFolderExtractionEnabled={false}
418
421
  isCascadingEnabled={true}
419
422
  isCascadingOverwritten={false}
420
423
  isCustomMetadata={false}
424
+ isExistingAIExtractionCascadePolicy={false}
421
425
  onAIFolderExtractionToggle={[Function]}
422
426
  onCascadeModeChange={[Function]}
423
427
  onCascadeToggle={[Function]}
@@ -437,6 +441,7 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
437
441
  }
438
442
  }
439
443
  errors={{}}
444
+ isDisabled={false}
440
445
  onFieldChange={[Function]}
441
446
  onFieldRemove={[Function]}
442
447
  template={
@@ -609,6 +614,7 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
609
614
  }
610
615
  }
611
616
  errors={{}}
617
+ isDisabled={false}
612
618
  onFieldChange={[Function]}
613
619
  onFieldRemove={[Function]}
614
620
  template={
@@ -799,6 +805,7 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
799
805
  }
800
806
  }
801
807
  errors={{}}
808
+ isDisabled={false}
802
809
  onFieldChange={[Function]}
803
810
  onFieldRemove={[Function]}
804
811
  template={
@@ -994,6 +1001,7 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
994
1001
  }
995
1002
  }
996
1003
  errors={{}}
1004
+ isDisabled={false}
997
1005
  onFieldChange={[Function]}
998
1006
  onFieldRemove={[Function]}
999
1007
  template={
@@ -1098,6 +1106,7 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
1098
1106
  }
1099
1107
  }
1100
1108
  errors={{}}
1109
+ isDisabled={false}
1101
1110
  onFieldChange={[Function]}
1102
1111
  onFieldRemove={[Function]}
1103
1112
  template={
@@ -1169,6 +1178,7 @@ exports[`features/metadata-instance-editor/fields/Instance should correctly rend
1169
1178
  }
1170
1179
  }
1171
1180
  errors={{}}
1181
+ isDisabled={false}
1172
1182
  onFieldChange={[Function]}
1173
1183
  onFieldRemove={[Function]}
1174
1184
  template={
@@ -1346,6 +1356,7 @@ exports[`features/metadata-instance-editor/fields/Instance should not render foo
1346
1356
  }
1347
1357
  }
1348
1358
  errors={{}}
1359
+ isDisabled={false}
1349
1360
  onFieldChange={[Function]}
1350
1361
  onFieldRemove={[Function]}
1351
1362
  template={
@@ -2,9 +2,10 @@
2
2
 
3
3
  exports[`features/metadata-editor-editor/Instances should correctly render editors 1`] = `
4
4
  [
5
- <Instance
5
+ <injectIntl(Instance)
6
6
  canEdit={true}
7
7
  canUseAIFolderExtraction={false}
8
+ canUseAIFolderExtractionAgentSelector={false}
8
9
  data={
9
10
  {
10
11
  "datefield": "2018-06-20T00:00:00.000Z",
@@ -107,9 +108,10 @@ exports[`features/metadata-editor-editor/Instances should correctly render edito
107
108
  }
108
109
  }
109
110
  />,
110
- <Instance
111
+ <injectIntl(Instance)
111
112
  canEdit={false}
112
113
  canUseAIFolderExtraction={false}
114
+ canUseAIFolderExtractionAgentSelector={false}
113
115
  data={
114
116
  {
115
117
  "datefield": "2018-06-20T00:00:00.000Z",
@@ -772,6 +772,7 @@ exports[`features/metadata-editor-editor/MetadataInstanceEditor should correctly
772
772
  >
773
773
  <Instances
774
774
  canUseAIFolderExtraction={false}
775
+ canUseAIFolderExtractionAgentSelector={false}
775
776
  editors={
776
777
  [
777
778
  {
@@ -5,7 +5,7 @@ exports[`features/metadata-instance-editor/fields/TemplatedInstance should corre
5
5
  <div
6
6
  className="attributes-hidden-message"
7
7
  >
8
- <FormattedMessage
8
+ <MemoizedFormattedMessage
9
9
  defaultMessage="All attributes in this template have been hidden."
10
10
  id="boxui.metadataInstanceEditor.allAttributesAreHidden"
11
11
  />
@@ -165,7 +165,7 @@ exports[`features/metadata-instance-editor/fields/TemplatedInstance should corre
165
165
  <div
166
166
  className="no-attributes-message"
167
167
  >
168
- <FormattedMessage
168
+ <MemoizedFormattedMessage
169
169
  defaultMessage="There are no attributes in this template."
170
170
  id="boxui.metadataInstanceEditor.noAttributesForTemplate"
171
171
  />
@@ -1,4 +1,6 @@
1
1
  // @flow
2
2
 
3
+ const CASCADE_POLICY_TYPE_AI_EXTRACT = 'ai_extract';
3
4
  const TEMPLATE_CUSTOM_PROPERTIES: 'properties' = 'properties';
4
- export default TEMPLATE_CUSTOM_PROPERTIES;
5
+
6
+ export { CASCADE_POLICY_TYPE_AI_EXTRACT, TEMPLATE_CUSTOM_PROPERTIES };
@@ -1,6 +1,6 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
- import { injectIntl } from 'react-intl';
3
+ import { useIntl } from 'react-intl';
4
4
 
5
5
  import DatePicker from '../../components/date-picker';
6
6
  import { convertISOStringToUTCDate } from '../../utils/datetime';
@@ -13,34 +13,38 @@ type Props = {
13
13
  dataValue?: MetadataFieldValue,
14
14
  description?: string,
15
15
  displayName: string,
16
- intl: any,
16
+ isDisabled?: boolean,
17
17
  onChange: (key: string, value: MetadataFieldValue) => void,
18
18
  onRemove: (key: string) => void,
19
19
  };
20
20
 
21
- const DateMetadataField = ({ dataKey, dataValue, displayName, description, intl, onChange, onRemove }: Props) => (
22
- <DatePicker
23
- className="bdl-DateMetadataField"
24
- dateFormat="utcISOString"
25
- description={description}
26
- displayFormat={{
27
- day: 'numeric',
28
- month: 'long',
29
- year: 'numeric',
30
- }}
31
- hideOptionalLabel
32
- label={displayName}
33
- onChange={(date: Date, isoDate: string) => {
34
- if (isoDate) {
35
- onChange(dataKey, isoDate);
36
- } else {
37
- onRemove(dataKey);
38
- }
39
- }}
40
- placeholder={intl.formatMessage(messages.metadataFieldSetDate)}
41
- value={typeof dataValue === 'string' ? convertISOStringToUTCDate(dataValue) : undefined}
42
- />
43
- );
21
+ const DateMetadataField = ({ dataKey, dataValue, displayName, description, isDisabled, onChange, onRemove }: Props) => {
22
+ const { formatMessage } = useIntl();
44
23
 
45
- export { DateMetadataField as DateMetadataFieldBase };
46
- export default injectIntl(DateMetadataField);
24
+ return (
25
+ <DatePicker
26
+ className="bdl-DateMetadataField"
27
+ dateFormat="utcISOString"
28
+ description={description}
29
+ displayFormat={{
30
+ day: 'numeric',
31
+ month: 'long',
32
+ year: 'numeric',
33
+ }}
34
+ hideOptionalLabel
35
+ isDisabled={isDisabled}
36
+ label={displayName}
37
+ onChange={(date: Date, isoDate: string) => {
38
+ if (isoDate) {
39
+ onChange(dataKey, isoDate);
40
+ } else {
41
+ onRemove(dataKey);
42
+ }
43
+ }}
44
+ placeholder={formatMessage(messages.metadataFieldSetDate)}
45
+ value={typeof dataValue === 'string' ? convertISOStringToUTCDate(dataValue) : undefined}
46
+ />
47
+ );
48
+ };
49
+
50
+ export default DateMetadataField;
@@ -1,6 +1,6 @@
1
1
  // @flow
2
2
  import * as React from 'react';
3
- import { injectIntl } from 'react-intl';
3
+ import { useIntl } from 'react-intl';
4
4
 
5
5
  import Label from '../../components/label/Label';
6
6
  import SingleSelectField from '../../components/select-field/SingleSelectField';
@@ -20,7 +20,7 @@ type Props = {
20
20
  dataValue?: MetadataFieldValue,
21
21
  description?: string,
22
22
  displayName: string,
23
- intl: any,
23
+ isDisabled?: boolean,
24
24
  onChange: (key: string, value: MetadataFieldValue) => void,
25
25
  onRemove: (key: string) => void,
26
26
  options?: Array<MetadataTemplateFieldOption>,
@@ -32,7 +32,7 @@ const EnumMetadataField = ({
32
32
  dataValue,
33
33
  displayName,
34
34
  description,
35
- intl,
35
+ isDisabled,
36
36
  onChange,
37
37
  onRemove,
38
38
  options = [],
@@ -43,7 +43,9 @@ const EnumMetadataField = ({
43
43
  isSelectable: true,
44
44
  }));
45
45
 
46
- const defaultValue = intl.formatMessage(messages.metadataFieldSelectValue);
46
+ const { formatMessage } = useIntl();
47
+
48
+ const defaultValue = formatMessage(messages.metadataFieldSelectValue);
47
49
 
48
50
  selectOptions.unshift({
49
51
  displayText: defaultValue,
@@ -58,6 +60,7 @@ const EnumMetadataField = ({
58
60
  <SingleSelectField
59
61
  blurExceptionClassNames={blurExceptionClassNames}
60
62
  isEscapedWithReference
63
+ isDisabled={isDisabled}
61
64
  isScrollable
62
65
  onChange={(option: Option) => {
63
66
  if (option.isSelectable) {
@@ -77,5 +80,4 @@ const EnumMetadataField = ({
77
80
  );
78
81
  };
79
82
 
80
- export { EnumMetadataField as EnumMetadataFieldBase };
81
- export default injectIntl(EnumMetadataField);
83
+ export default EnumMetadataField;