@box/metadata-editor 0.112.4 → 0.113.0

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.
@@ -1,130 +1,143 @@
1
1
  import "../custom-instance-new-field/custom-instance-new-field.js";
2
- import { DeleteConfirmationModal as q } from "../delete-confirmation-modal/delete-confirmation-modal.js";
2
+ import { DeleteConfirmationModal as G } from "../delete-confirmation-modal/delete-confirmation-modal.js";
3
3
  import "../metadata-instance-form-autofill-button/metadata-instance-form-autofill-button.js";
4
4
  import "../metadata-instance-form-header/metadata-instance-form-header.js";
5
- import z from "clsx";
6
- import { Formik as G, Form as H } from "formik";
7
- import { useState as c, useEffect as M, useRef as Q, useMemo as X } from "react";
8
- import { TEMPLATE_CUSTOM_PROPERTIES as Y } from "../../../../constants.js";
9
- import { useAutofill as Z } from "../../../../utils/autofill-context.js";
10
- import { TemplateInstance as I } from "../../../metadata-editor-fields/metadata-editor-fields.js";
11
- import { MetadataEmptyState as T } from "../../../metadata-empty-state/metadata-empty-state.js";
12
- import { AutofillOverlay as oo } from "../autofill-overlay/autofill-overlay.js";
13
- import { CustomInstance as ro } from "../custom-instance/custom-instance.js";
14
- import { c as to } from "../../../../../../chunks/utils.js";
15
- import { s as m, M as io } from "../../../../../../chunks/metadata-instance-form-card-wrapper.js";
16
- import { jsx as t, jsxs as F } from "react/jsx-runtime";
17
- import { UnsavedChangesModal as ao } from "../../../unsaved-changes-modal/unsaved-changes-modal.js";
18
- const So = (b) => {
5
+ import H from "clsx";
6
+ import { Formik as Q, Form as X } from "formik";
7
+ import Y from "lodash/isEqual";
8
+ import { useState as S, useEffect as y, useRef as O, useMemo as Z } from "react";
9
+ import { TEMPLATE_CUSTOM_PROPERTIES as I } from "../../../../constants.js";
10
+ import { useAutofill as T } from "../../../../utils/autofill-context.js";
11
+ import { TemplateInstance as oo } from "../../../metadata-editor-fields/metadata-editor-fields.js";
12
+ import { MetadataEmptyState as ro } from "../../../metadata-empty-state/metadata-empty-state.js";
13
+ import { AutofillOverlay as to } from "../autofill-overlay/autofill-overlay.js";
14
+ import { CustomInstance as io } from "../custom-instance/custom-instance.js";
15
+ import { c as ao } from "../../../../../../chunks/utils.js";
16
+ import { s as u, M as no } from "../../../../../../chunks/metadata-instance-form-card-wrapper.js";
17
+ import { jsx as i, jsxs as D } from "react/jsx-runtime";
18
+ import { UnsavedChangesModal as eo } from "../../../unsaved-changes-modal/unsaved-changes-modal.js";
19
+ const so = ({
20
+ dirty: s,
21
+ onChange: m,
22
+ values: r
23
+ }) => {
24
+ const n = O(r);
25
+ return s && !Y(n.current.metadata.fields, r.metadata.fields) && (n.current = r, m(r)), null;
26
+ }, Ao = (s) => {
19
27
  const {
20
- areAiSuggestionsAvailable: y,
21
- customRef: a,
22
- isLargeFile: S,
23
- errorCode: n,
24
- isAiSuggestionsFeatureEnabled: s,
25
- isAdvancedExtractAgentEnabled: D = !1,
26
- isBetaLanguageEnabled: v,
27
- isDeleteButtonDisabled: O,
28
- isDeleteConfirmationModalCheckboxEnabled: x,
29
- isMultilevelTaxonomyFieldEnabled: l,
30
- isUnsavedChangesModalOpen: A = !1,
31
- MetadataInstanceFormCustomWrapper: L,
28
+ areAiSuggestionsAvailable: m,
29
+ customRef: r,
30
+ isLargeFile: n,
31
+ errorCode: l,
32
+ isAiSuggestionsFeatureEnabled: f,
33
+ isAdvancedExtractAgentEnabled: x = !1,
34
+ isBetaLanguageEnabled: A,
35
+ isDeleteButtonDisabled: v,
36
+ isDeleteConfirmationModalCheckboxEnabled: L,
37
+ isMultilevelTaxonomyFieldEnabled: d,
38
+ isUnsavedChangesModalOpen: R = !1,
39
+ MetadataInstanceFormCustomWrapper: k,
32
40
  selectedTemplateInstance: o,
33
41
  onCancel: N,
42
+ onChange: g,
34
43
  onDelete: P,
35
- onDiscardUnsavedChanges: R,
36
- onSubmit: U,
37
- setIsUnsavedChangesModalOpen: f,
38
- taxonomyOptionsFetcher: u
39
- } = b, k = L ?? io, [B, d] = c(!1), {
40
- isFetchingSuggestions: i,
41
- isLongLoading: g,
42
- getAiSuggestions: w,
43
- clearState: p,
44
- suggestions: K
45
- } = Z();
46
- M(() => () => {
47
- p();
48
- }, [p, o == null ? void 0 : o.id]);
49
- const h = (o == null ? void 0 : o.templateKey) === Y, W = async (r) => {
50
- await U(r, to(r, o));
51
- }, j = (r) => {
52
- r ? f(!0) : N();
53
- }, V = () => {
54
- d(!0);
55
- }, _ = {
44
+ onDiscardUnsavedChanges: U,
45
+ onSubmit: B,
46
+ setIsUnsavedChangesModalOpen: p,
47
+ taxonomyOptionsFetcher: c
48
+ } = s, w = k ?? no, [K, h] = S(!1), {
49
+ isFetchingSuggestions: a,
50
+ isLongLoading: C,
51
+ getAiSuggestions: V,
52
+ clearState: E,
53
+ suggestions: W
54
+ } = T();
55
+ y(() => () => {
56
+ E();
57
+ }, [E, o == null ? void 0 : o.id]);
58
+ const F = (o == null ? void 0 : o.templateKey) === I, j = async (t) => {
59
+ await B(t, ao(t, o));
60
+ }, _ = (t) => {
61
+ t ? p(!0) : N();
62
+ }, $ = () => {
63
+ h(!0);
64
+ }, q = {
56
65
  metadata: {
57
66
  ...o
58
67
  }
59
- }, C = Q(null), [E, $] = c(null);
60
- M(() => {
61
- $(a ?? C.current);
62
- }, [a, o == null ? void 0 : o.templateKey, o == null ? void 0 : o.scope]);
63
- const J = X(() => {
64
- const r = (o == null ? void 0 : o.fields.length) === 0;
65
- if (h)
66
- return /* @__PURE__ */ t(ro, {
67
- isLoading: i
68
+ }, M = O(null), [b, J] = S(null);
69
+ y(() => {
70
+ J(r ?? M.current);
71
+ }, [r, o == null ? void 0 : o.templateKey, o == null ? void 0 : o.scope]);
72
+ const z = Z(() => {
73
+ const t = (o == null ? void 0 : o.fields.length) === 0;
74
+ if (F)
75
+ return /* @__PURE__ */ i(io, {
76
+ isLoading: a
68
77
  });
69
- if (r)
70
- return /* @__PURE__ */ t(T, {
71
- isBoxAiSuggestionsFeatureEnabled: s,
78
+ if (t)
79
+ return /* @__PURE__ */ i(ro, {
80
+ isBoxAiSuggestionsFeatureEnabled: f,
72
81
  level: "instance"
73
82
  });
74
- const e = !!(i || n);
75
- return /* @__PURE__ */ F("div", {
76
- className: z(m.metadataInstanceFormContent, e && m.showOverlay),
77
- children: [/* @__PURE__ */ t(oo, {
78
- errorCode: n,
79
- isFetchingSuggestions: i,
80
- isLongLoading: g
81
- }), /* @__PURE__ */ t(I, {
82
- disableForm: i,
83
- isMultilevelTaxonomyFieldEnabled: l,
84
- portalElement: a ?? E,
85
- taxonomyOptionsFetcher: u
83
+ const e = !!(a || l);
84
+ return /* @__PURE__ */ D("div", {
85
+ className: H(u.metadataInstanceFormContent, e && u.showOverlay),
86
+ children: [/* @__PURE__ */ i(to, {
87
+ errorCode: l,
88
+ isFetchingSuggestions: a,
89
+ isLongLoading: C
90
+ }), /* @__PURE__ */ i(oo, {
91
+ disableForm: a,
92
+ isMultilevelTaxonomyFieldEnabled: d,
93
+ portalElement: r ?? b,
94
+ taxonomyOptionsFetcher: c
86
95
  })]
87
96
  });
88
- }, [o == null ? void 0 : o.fields.length, h, i, g, a, E, u, s, l, n]);
89
- return /* @__PURE__ */ t(G, {
90
- initialValues: _,
91
- onSubmit: W,
97
+ }, [o == null ? void 0 : o.fields.length, F, a, C, r, b, c, f, d, l]);
98
+ return /* @__PURE__ */ i(Q, {
99
+ initialValues: q,
100
+ onSubmit: j,
92
101
  children: ({
93
- values: r,
102
+ values: t,
94
103
  dirty: e
95
- }) => /* @__PURE__ */ F(H, {
96
- children: [/* @__PURE__ */ t(k, {
97
- areAiSuggestionsAvailable: y,
98
- className: m.metadataInstanceForm,
99
- formRef: C,
100
- formValues: r,
101
- getAiSuggestions: w,
102
- handleCancel: j,
103
- handleDelete: V,
104
- isAdvancedExtractAgentEnabled: D,
105
- isAiSuggestionsFeatureEnabled: s,
106
- isBetaLanguageEnabled: v,
107
- isDeleteButtonDisabled: O,
108
- isFetchingSuggestions: i,
104
+ }) => /* @__PURE__ */ D(X, {
105
+ children: [/* @__PURE__ */ i(w, {
106
+ areAiSuggestionsAvailable: m,
107
+ className: u.metadataInstanceForm,
108
+ formRef: M,
109
+ formValues: t,
110
+ getAiSuggestions: V,
111
+ handleCancel: _,
112
+ handleDelete: $,
113
+ isAdvancedExtractAgentEnabled: x,
114
+ isAiSuggestionsFeatureEnabled: f,
115
+ isBetaLanguageEnabled: A,
116
+ isDeleteButtonDisabled: v,
117
+ isFetchingSuggestions: a,
109
118
  isFormDirty: e,
110
- isLargeFile: S,
119
+ isLargeFile: n,
111
120
  selectedTemplateInstance: o,
112
- suggestions: K,
113
- children: o && J
114
- }), /* @__PURE__ */ t(ao, {
115
- onBackToEdit: () => f(!1),
116
- onDiscardChanges: R,
117
- open: A
118
- }), /* @__PURE__ */ t(q, {
119
- isCheckboxEnabled: x,
121
+ suggestions: W,
122
+ children: o && z
123
+ }), g && /* @__PURE__ */ i(so, {
124
+ dirty: e,
125
+ onChange: g,
126
+ values: t
127
+ }), /* @__PURE__ */ i(eo, {
128
+ onBackToEdit: () => p(!1),
129
+ onDiscardChanges: U,
130
+ open: R
131
+ }), /* @__PURE__ */ i(G, {
132
+ isCheckboxEnabled: L,
120
133
  onConfirm: () => P(o),
121
- onDismiss: () => d(!1),
122
- open: B,
134
+ onDismiss: () => h(!1),
135
+ open: K,
123
136
  templateName: o == null ? void 0 : o.displayName
124
137
  })]
125
138
  })
126
139
  }, `${o == null ? void 0 : o.scope}.${o == null ? void 0 : o.templateKey}`);
127
140
  };
128
141
  export {
129
- So as MetadataInstanceForm
142
+ Ao as MetadataInstanceForm
130
143
  };
@@ -16,6 +16,7 @@ export type MetadataInstanceFormProps = {
16
16
  isUnsavedChangesModalOpen: boolean;
17
17
  selectedTemplateInstance: MetadataTemplateInstance | null;
18
18
  onCancel: () => void;
19
+ onChange?: (values: FormValues) => void;
19
20
  onDelete: (templateInstance: MetadataTemplateInstance) => void;
20
21
  /** Callback invoked when clicking Discard Changes button on the UnsavedChangesModal - can be used to reset form values */
21
22
  onDiscardUnsavedChanges?: () => void;
@@ -45,6 +46,11 @@ export type MetadataInstanceFormWrapperProps<T> = {
45
46
  extraProps?: T;
46
47
  formRef?: React.LegacyRef<HTMLDivElement | null>;
47
48
  } & React.HTMLAttributes<HTMLDivElement>;
49
+ export type MetadataInstanceFormikObserverProps = {
50
+ onChange: (values: FormValues) => void;
51
+ values: FormValues;
52
+ dirty: boolean;
53
+ };
48
54
  export declare const JSONPatchOp: {
49
55
  readonly ADD: "add";
50
56
  readonly REMOVE: "remove";
@@ -43,6 +43,7 @@ declare const customTemplateInstanceWithAllFieldsEmpty: MetadataTemplateInstance
43
43
  declare const templateInstanceWithoutEditPermissions: MetadataTemplateInstance;
44
44
  declare const customTemplateInstanceWithoutEditPermissions: MetadataTemplateInstance;
45
45
  declare const hiddenTemplateInstance: MetadataTemplateInstance;
46
+ declare const shortTemplateInstance: MetadataTemplateInstance;
46
47
  declare const templateInstancesList: MetadataTemplateInstance[];
47
48
  declare const allFieldsWithAiSuggestions: MetadataTemplateField[];
48
49
  declare const allFieldsSuggestions: AutofillSuggestions;
@@ -52,4 +53,4 @@ declare const firstTemplateInstanceFieldsWithSuggestions: MetadataTemplateField[
52
53
  declare const secondTemplateInstance: MetadataTemplate;
53
54
  declare const secondTemplateSuggestions: AutofillSuggestions;
54
55
  declare const secondTemplateInstanceFieldsWithSuggestions: MetadataTemplateField[];
55
- export { allFieldsSuggestions, allFieldsTemplate, allFieldsTemplateInstance, allFieldsWithAiSuggestions, allFieldsTemplateInstanceWithoutTaxonomies, allFieldsTemplateInstanceAiSuggestions, customTemplate, customTemplateInstance, customTemplateInstanceWithAllFieldsEmpty, customTemplateInstanceWithoutEditPermissions, customTemplateInstanceWithoutEmptyValues, dateField, dateSuggestionTemplateInstance, emptyCustomTemplateInstance, emptyTemplateInstance, enumField, fields, firstTemplateInstance, firstTemplateInstanceFieldsWithSuggestions, firstTemplateSuggestions, floatField, floatInstanceField, hiddenField, hiddenTemplate, hiddenTemplateInstance, multiSelectField, noFieldsTemplate, nonHiddenFieldsTemplate, nonHiddenFieldsWithValuesTemplate, noValueField, onlyRequiredPropsTemplateInstance, secondTemplateInstance, secondTemplateInstanceFieldsWithSuggestions, secondTemplateSuggestions, stringField, taxonomyLevels, taxonomyMultiSelectMultiLevelField, taxonomyMultiSelectSingleLevelField, taxonomyMultiSelectSingleLevelFieldWithValue, taxonomySingleSelectMultiLevelField, taxonomySingleSelectSingleLevelField, taxonomySingleSelectSingleLevelFieldWithValue, templateInstancesList, templateInstanceWithAllFieldsEmpty, templateInstanceWithoutEditPermissions, templateInstanceWithoutEmptyValues, templateInstanceWithSomeFieldsEmpty, templateOptions, templates, };
56
+ export { allFieldsSuggestions, allFieldsTemplate, allFieldsTemplateInstance, allFieldsTemplateInstanceAiSuggestions, allFieldsTemplateInstanceWithoutTaxonomies, allFieldsWithAiSuggestions, customTemplate, customTemplateInstance, customTemplateInstanceWithAllFieldsEmpty, customTemplateInstanceWithoutEditPermissions, customTemplateInstanceWithoutEmptyValues, dateField, dateSuggestionTemplateInstance, emptyCustomTemplateInstance, emptyTemplateInstance, enumField, fields, firstTemplateInstance, firstTemplateInstanceFieldsWithSuggestions, firstTemplateSuggestions, floatField, floatInstanceField, hiddenField, hiddenTemplate, hiddenTemplateInstance, multiSelectField, noFieldsTemplate, nonHiddenFieldsTemplate, nonHiddenFieldsWithValuesTemplate, noValueField, onlyRequiredPropsTemplateInstance, secondTemplateInstance, secondTemplateInstanceFieldsWithSuggestions, secondTemplateSuggestions, shortTemplateInstance, stringField, taxonomyLevels, taxonomyMultiSelectMultiLevelField, taxonomyMultiSelectSingleLevelField, taxonomyMultiSelectSingleLevelFieldWithValue, taxonomySingleSelectMultiLevelField, taxonomySingleSelectSingleLevelField, taxonomySingleSelectSingleLevelFieldWithValue, templateInstancesList, templateInstanceWithAllFieldsEmpty, templateInstanceWithoutEditPermissions, templateInstanceWithoutEmptyValues, templateInstanceWithSomeFieldsEmpty, templateOptions, templates, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@box/metadata-editor",
3
- "version": "0.112.4",
3
+ "version": "0.113.0",
4
4
  "peerDependencies": {
5
5
  "@ariakit/react": "0.4.15",
6
6
  "@box/box-ai-agent-selector": "^0.41.7",
@@ -15,9 +15,9 @@
15
15
  },
16
16
  "devDependencies": {
17
17
  "@ariakit/react": "0.4.15",
18
- "@box/box-ai-agent-selector": "^0.43.10",
18
+ "@box/box-ai-agent-selector": "^0.43.11",
19
19
  "@box/babel-plugin-target-attributes": "1.3.0",
20
- "@box/blueprint-web": "^12.14.0",
20
+ "@box/blueprint-web": "^12.15.0",
21
21
  "@box/blueprint-web-assets": "^4.54.0",
22
22
  "@box/storybook-utils": "^0.13.7",
23
23
  "@testing-library/react": "^15.0.6",