@box/metadata-template-editor 2.2.23 → 2.2.25
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/dist/chunks/chip.js +1 -22
- package/dist/chunks/dropdown-field-configuration.js +1 -62
- package/dist/chunks/field-context-menu.js +1 -91
- package/dist/chunks/field-selector.js +1 -23
- package/dist/chunks/field-type-dropdown.js +1 -31
- package/dist/chunks/levels-chain.js +1 -120
- package/dist/chunks/metadata-field-configurator.module.js +1 -21
- package/dist/chunks/metadata-field-list.js +1 -280
- package/dist/chunks/metadata-template-editor-form.js +1 -132
- package/dist/chunks/metadata-template-editor-modal.js +1 -90
- package/dist/chunks/metadata-template-editor.js +1 -161
- package/dist/chunks/sortable-option-list.js +1 -230
- package/dist/chunks/taxonomy-field-configuration.js +1 -123
- package/dist/chunks/taxonomy-field-configurator-initial-state.js +1 -49
- package/dist/chunks/taxonomy-selector.js +1 -89
- package/dist/chunks/types.js +1 -23
- package/dist/esm/index.js +1 -22
- package/dist/esm/lib/components/field-selector/field-selector.js +1 -2
- package/dist/esm/lib/components/field-selector/index.js +1 -2
- package/dist/esm/lib/components/field-selector/messages.js +1 -12
- package/dist/esm/lib/components/field-type-dropdown/field-type-dropdown.js +1 -2
- package/dist/esm/lib/components/field-type-dropdown/index.js +1 -2
- package/dist/esm/lib/components/field-type-dropdown/messages.js +1 -12
- package/dist/esm/lib/components/field-type-tiles/field-type-tiles.js +1 -33
- package/dist/esm/lib/components/field-type-tiles/index.js +1 -2
- package/dist/esm/lib/components/field-type-tiles/messages.js +1 -12
- package/dist/esm/lib/components/metadata-field-configurator/components/confirmation-modal/confirmation-modal.js +1 -33
- package/dist/esm/lib/components/metadata-field-configurator/components/confirmation-modal/messages.js +1 -16
- package/dist/esm/lib/components/metadata-field-configurator/components/field-action-slot/field-action-slot.js +1 -67
- package/dist/esm/lib/components/metadata-field-configurator/components/field-context-menu/field-context-menu.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/field-edit-content/field-edit-content.js +1 -84
- package/dist/esm/lib/components/metadata-field-configurator/components/levels-chain/chip.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/levels-chain/index.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/levels-chain/levels-chain.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/levels-chain/utils.js +1 -17
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/dropdown/__mocks__/getInitialValues.js +1 -35
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/dropdown/dropdown-default-values.js +1 -11
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/dropdown/dropdown-field-configuration.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/dropdown/sortable-option-list.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/index.js +1 -3
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-default-values.js +1 -11
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-field-configuration.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-field-configurator-initial-state.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-selector-messages.js +1 -36
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-selector.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/useTaxonomySelect.js +1 -15
- package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/utils.js +1 -2
- package/dist/esm/lib/components/metadata-field-configurator/context/editor-config-context.js +1 -3
- package/dist/esm/lib/components/metadata-field-configurator/context/field-configurator-context.js +1 -62
- package/dist/esm/lib/components/metadata-field-configurator/context/field-extensions-context.js +1 -6
- package/dist/esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js +1 -17
- package/dist/esm/lib/components/metadata-field-configurator/hooks/useFieldConfiguratorBehavior.js +1 -102
- package/dist/esm/lib/components/metadata-field-configurator/hooks/useFieldValidation.js +1 -54
- package/dist/esm/lib/components/metadata-field-configurator/hooks/useTaxonomyFetch.js +1 -24
- package/dist/esm/lib/components/metadata-field-configurator/hooks/useTemplateFieldSchema.js +1 -35
- package/dist/esm/lib/components/metadata-field-configurator/index.js +1 -14
- package/dist/esm/lib/components/metadata-field-configurator/messages/configurator-messages.js +1 -133
- package/dist/esm/lib/components/metadata-field-configurator/messages/dropdown-messages.js +1 -36
- package/dist/esm/lib/components/metadata-field-configurator/messages/levels-chain-messages.js +1 -16
- package/dist/esm/lib/components/metadata-field-configurator/messages/taxonomy-messages.js +1 -36
- package/dist/esm/lib/components/metadata-field-configurator/metadata-field-configurator.js +1 -106
- package/dist/esm/lib/components/metadata-field-configurator/utils.js +1 -46
- package/dist/esm/lib/components/metadata-field-list/index.js +1 -2
- package/dist/esm/lib/components/metadata-field-list/metadata-field-list.js +1 -2
- package/dist/esm/lib/components/metadata-template-editor-form/metadata-template-editor-form.js +1 -2
- package/dist/esm/lib/components/metadata-template-editor-modal/index.js +1 -2
- package/dist/esm/lib/components/metadata-template-editor-modal/metadata-template-editor-modal.js +1 -2
- package/dist/esm/lib/hooks/useMetadataTemplateFormSchema.js +1 -14
- package/dist/esm/lib/hooks/useTemplateNameSchema.js +1 -10
- package/dist/esm/lib/index.js +1 -8
- package/dist/esm/lib/messages.js +1 -128
- package/dist/esm/lib/metadata-template-editor.js +1 -2
- package/dist/esm/lib/utils/constants.js +1 -2
- package/dist/esm/lib/utils/field-options/field-type-icon.js +1 -15
- package/dist/esm/lib/utils/field-options/index.js +1 -4
- package/dist/esm/lib/utils/field-options/messages.js +1 -45
- package/dist/esm/lib/utils/field-options/useFieldOptions.js +1 -16
- package/dist/esm/lib/utils/key-generation.js +1 -18
- package/dist/esm/lib/utils/template-type-conversion/convertLocalConfiguratorToTemplateField.js +1 -64
- package/dist/esm/lib/utils/template-type-conversion/convertTemplateFieldToLocalConfigurator.js +1 -70
- package/dist/esm/lib/utils/template-type-conversion/generateJSONPatchTemplateOperations.js +1 -160
- package/dist/esm/lib/utils/template-type-conversion/mapFieldsWithUniqueKeys.js +1 -9
- package/package.json +7 -7
package/dist/esm/lib/utils/template-type-conversion/convertTemplateFieldToLocalConfigurator.js
CHANGED
|
@@ -1,70 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import r from "lodash/uniqueId";
|
|
3
|
-
var i = (i, a = !1) => {
|
|
4
|
-
let { key: o, displayName: s, description: c, type: l, isHidden: u } = i, d = {
|
|
5
|
-
key: o,
|
|
6
|
-
name: s,
|
|
7
|
-
id: r(),
|
|
8
|
-
description: c || "",
|
|
9
|
-
hidden: u,
|
|
10
|
-
dropdown: {
|
|
11
|
-
allowMultipleSelections: !1,
|
|
12
|
-
options: [],
|
|
13
|
-
isAllowMultipleSelectionsEnabled: !1
|
|
14
|
-
},
|
|
15
|
-
taxonomy: {
|
|
16
|
-
availableTaxonomies: [],
|
|
17
|
-
allowMultipleSelections: !1,
|
|
18
|
-
selection: t.RequireSpecific,
|
|
19
|
-
selectedLevels: [],
|
|
20
|
-
taxonomySearchValue: "",
|
|
21
|
-
taxonomyKey: "",
|
|
22
|
-
namespace: ""
|
|
23
|
-
},
|
|
24
|
-
isFieldNew: !1,
|
|
25
|
-
isFieldReadOnly: a
|
|
26
|
-
};
|
|
27
|
-
switch (l) {
|
|
28
|
-
case n.String: return {
|
|
29
|
-
...d,
|
|
30
|
-
type: e.Text
|
|
31
|
-
};
|
|
32
|
-
case n.Float: return {
|
|
33
|
-
...d,
|
|
34
|
-
type: e.Number
|
|
35
|
-
};
|
|
36
|
-
case n.Date: return {
|
|
37
|
-
...d,
|
|
38
|
-
type: e.Date
|
|
39
|
-
};
|
|
40
|
-
case n.Enum:
|
|
41
|
-
case n.MultiSelect: return {
|
|
42
|
-
...d,
|
|
43
|
-
type: e.Dropdown,
|
|
44
|
-
dropdown: {
|
|
45
|
-
options: i.options?.map((e) => ({
|
|
46
|
-
id: r(),
|
|
47
|
-
key: e.key,
|
|
48
|
-
isNew: !1
|
|
49
|
-
})) || [],
|
|
50
|
-
allowMultipleSelections: l === n.MultiSelect,
|
|
51
|
-
isAllowMultipleSelectionsEnabled: l === n.MultiSelect
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
case n.Taxonomy: return {
|
|
55
|
-
...d,
|
|
56
|
-
type: e.Taxonomy,
|
|
57
|
-
taxonomy: {
|
|
58
|
-
availableTaxonomies: [],
|
|
59
|
-
allowMultipleSelections: i.optionsRules?.multiSelect || !1,
|
|
60
|
-
selection: i.optionsRules?.selectableLevels?.length === 1 ? t.RequireSpecific : t.AllowAny,
|
|
61
|
-
selectedLevels: i.optionsRules.selectableLevels,
|
|
62
|
-
taxonomySearchValue: "",
|
|
63
|
-
taxonomyKey: i.taxonomyKey || "",
|
|
64
|
-
namespace: i.namespace || ""
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
default: throw Error(`Unsupported field type: ${l}`);
|
|
68
|
-
}
|
|
69
|
-
};
|
|
70
|
-
export { i as convertApiMetadataTemplateFieldToLocalConfiguratorField };
|
|
1
|
+
import{a as FieldType,c as TaxonomySelection,n as ApiMetadataTemplateFieldType}from"../../../../chunks/types.js";import uniqueId from"lodash/uniqueId";var convertApiMetadataTemplateFieldToLocalConfiguratorField=(field,isReadOnly=!1)=>{let{key,displayName:name,description,type,isHidden}=field,baseField={key,name,id:uniqueId(),description:description||``,hidden:isHidden,dropdown:{allowMultipleSelections:!1,options:[],isAllowMultipleSelectionsEnabled:!1},taxonomy:{availableTaxonomies:[],allowMultipleSelections:!1,selection:TaxonomySelection.RequireSpecific,selectedLevels:[],taxonomySearchValue:``,taxonomyKey:``,namespace:``},isFieldNew:!1,isFieldReadOnly:isReadOnly};switch(type){case ApiMetadataTemplateFieldType.String:return{...baseField,type:FieldType.Text};case ApiMetadataTemplateFieldType.Float:return{...baseField,type:FieldType.Number};case ApiMetadataTemplateFieldType.Date:return{...baseField,type:FieldType.Date};case ApiMetadataTemplateFieldType.Enum:case ApiMetadataTemplateFieldType.MultiSelect:return{...baseField,type:FieldType.Dropdown,dropdown:{options:field.options?.map(option=>({id:uniqueId(),key:option.key,isNew:!1}))||[],allowMultipleSelections:type===ApiMetadataTemplateFieldType.MultiSelect,isAllowMultipleSelectionsEnabled:type===ApiMetadataTemplateFieldType.MultiSelect}};case ApiMetadataTemplateFieldType.Taxonomy:return{...baseField,type:FieldType.Taxonomy,taxonomy:{availableTaxonomies:[],allowMultipleSelections:field.optionsRules?.multiSelect||!1,selection:field.optionsRules?.selectableLevels?.length===1?TaxonomySelection.RequireSpecific:TaxonomySelection.AllowAny,selectedLevels:field.optionsRules.selectableLevels,taxonomySearchValue:``,taxonomyKey:field.taxonomyKey||``,namespace:field.namespace||``}};default:throw Error(`Unsupported field type: ${type}`)}};export{convertApiMetadataTemplateFieldToLocalConfiguratorField};
|
|
@@ -1,160 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import "../constants.js";
|
|
3
|
-
import { generateKey as i } from "../key-generation.js";
|
|
4
|
-
import { resolveSelectableLevels as a } from "./convertLocalConfiguratorToTemplateField.js";
|
|
5
|
-
import o from "lodash/isEqual";
|
|
6
|
-
var s = {
|
|
7
|
-
[e.Text]: n.String,
|
|
8
|
-
[e.Date]: n.Date,
|
|
9
|
-
[e.Number]: n.Float
|
|
10
|
-
};
|
|
11
|
-
function c(e, t) {
|
|
12
|
-
let n = [], i = {};
|
|
13
|
-
return e.displayName !== t.displayName && (i.displayName = t.displayName), e.hidden !== t.hidden && (i.hidden = t.hidden), Object.keys(i).length > 0 && n.push({
|
|
14
|
-
op: r.EditTemplate,
|
|
15
|
-
data: i
|
|
16
|
-
}), n;
|
|
17
|
-
}
|
|
18
|
-
function l(e, t, n) {
|
|
19
|
-
if (e.description !== t.description || e.name !== t.name || e.hidden !== t.hidden) {
|
|
20
|
-
let i = {};
|
|
21
|
-
e.name !== t.name && (i.displayName = e.name), e.description !== t.description && (i.description = e.description), e.hidden !== t.hidden && (i.hidden = e.hidden), n.push({
|
|
22
|
-
op: r.EditField,
|
|
23
|
-
fieldKey: e.key,
|
|
24
|
-
data: i
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function u(t, n, i) {
|
|
29
|
-
if (t.type !== e.Dropdown || n?.type !== e.Dropdown) return;
|
|
30
|
-
let a = t.dropdown.allowMultipleSelections, s = n.dropdown.options, c = t.dropdown.options, l = new Map(s.map((e) => [e.id, e])), u = new Map(c.map((e) => [e.id, e]));
|
|
31
|
-
s.forEach((e) => {
|
|
32
|
-
if (!u.has(e.id) && t.key) {
|
|
33
|
-
if (!e.key) throw Error("optionKey is required");
|
|
34
|
-
i.push({
|
|
35
|
-
fieldKey: t.key,
|
|
36
|
-
...a ? {
|
|
37
|
-
op: r.RemoveMultiSelectOption,
|
|
38
|
-
multiSelectOptionKey: e.key
|
|
39
|
-
} : {
|
|
40
|
-
op: r.RemoveEnumOption,
|
|
41
|
-
enumOptionKey: e.key
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}), c.forEach((e) => {
|
|
46
|
-
let n = l.get(e.id);
|
|
47
|
-
if (!n) i.push({
|
|
48
|
-
op: a ? r.AddMultiSelectOption : r.AddEnumOption,
|
|
49
|
-
fieldKey: t.key,
|
|
50
|
-
data: { key: e.key }
|
|
51
|
-
});
|
|
52
|
-
else if (n.key !== e.key) {
|
|
53
|
-
if (!e.key) throw Error("optionKey is required");
|
|
54
|
-
i.push({
|
|
55
|
-
fieldKey: t.key,
|
|
56
|
-
...a ? {
|
|
57
|
-
op: r.EditMultiSelectOption,
|
|
58
|
-
multiSelectOptionKey: n.key
|
|
59
|
-
} : {
|
|
60
|
-
op: r.EditEnumOption,
|
|
61
|
-
enumOptionKey: n.key
|
|
62
|
-
},
|
|
63
|
-
data: { key: e.key }
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
let d = s.map((e) => e.key), f = c.map((e) => e.key);
|
|
68
|
-
o(d, f) || i.push({
|
|
69
|
-
fieldKey: t.key,
|
|
70
|
-
...a ? {
|
|
71
|
-
op: r.ReorderMultiSelectOptions,
|
|
72
|
-
multiSelectOptionKeys: f
|
|
73
|
-
} : {
|
|
74
|
-
op: r.ReorderEnumOptions,
|
|
75
|
-
enumOptionKeys: f
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
function d(t, r) {
|
|
80
|
-
let i = {
|
|
81
|
-
displayName: t.name,
|
|
82
|
-
isHidden: t.hidden,
|
|
83
|
-
key: r,
|
|
84
|
-
description: t.description
|
|
85
|
-
};
|
|
86
|
-
return t.type === e.Taxonomy ? {
|
|
87
|
-
...i,
|
|
88
|
-
type: n.Taxonomy,
|
|
89
|
-
taxonomyKey: t.taxonomy.taxonomyKey,
|
|
90
|
-
optionsRules: {
|
|
91
|
-
selectableLevels: a(t),
|
|
92
|
-
multiSelect: t.taxonomy.allowMultipleSelections
|
|
93
|
-
},
|
|
94
|
-
namespace: t.taxonomy.namespace
|
|
95
|
-
} : t.type === e.Dropdown ? {
|
|
96
|
-
...i,
|
|
97
|
-
type: t.dropdown.allowMultipleSelections ? n.MultiSelect : n.Enum,
|
|
98
|
-
options: t.dropdown.options.map((e) => ({ key: e.key }))
|
|
99
|
-
} : {
|
|
100
|
-
...i,
|
|
101
|
-
type: s[t.type]
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
function f(e, t, n) {
|
|
105
|
-
let a = i({
|
|
106
|
-
displayName: e.name,
|
|
107
|
-
existingKeys: Array.from(t),
|
|
108
|
-
defaultKey: "field",
|
|
109
|
-
maxKeyLength: 256
|
|
110
|
-
});
|
|
111
|
-
return t.add(a), n.push({
|
|
112
|
-
op: r.AddField,
|
|
113
|
-
fieldKey: a,
|
|
114
|
-
data: d(e, a)
|
|
115
|
-
}), {
|
|
116
|
-
...e,
|
|
117
|
-
key: a
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
function p(e, t) {
|
|
121
|
-
let n = new Map(e.map((e) => [e.key, e])), i = new Set(t.filter((e) => e.key).map((e) => e.key)), a = [], o = new Set(t.filter((e) => e.key).map((e) => e.key));
|
|
122
|
-
e.forEach((e) => {
|
|
123
|
-
o.has(e.key) || a.push({
|
|
124
|
-
op: r.RemoveField,
|
|
125
|
-
fieldKey: e.key
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
let s = [], c = [];
|
|
129
|
-
return t.forEach((e) => {
|
|
130
|
-
let t = n.get(e.key);
|
|
131
|
-
if (!t) {
|
|
132
|
-
c.push(f(e, i, s));
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
c.push(e), l(e, t, s), u(e, t, s);
|
|
136
|
-
}), {
|
|
137
|
-
patchItems: [...a, ...s],
|
|
138
|
-
resolvedFields: c
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
function m(e, t) {
|
|
142
|
-
let n = e.map((e) => e.key).filter(Boolean), i = t.map((e) => e.key).filter(Boolean);
|
|
143
|
-
return n.length !== i.length || n.some((e, t) => e !== i[t]) ? [{
|
|
144
|
-
op: r.ReorderFields,
|
|
145
|
-
fieldKeys: i
|
|
146
|
-
}] : [];
|
|
147
|
-
}
|
|
148
|
-
function h(e, t) {
|
|
149
|
-
let n = [];
|
|
150
|
-
n.push(...c(e, t));
|
|
151
|
-
let { patchItems: r, resolvedFields: i } = p(e.fields || [], t.fields || []);
|
|
152
|
-
return n.push(...r), n.push(...m(e.fields || [], i)), n;
|
|
153
|
-
}
|
|
154
|
-
function g(e) {
|
|
155
|
-
return [{
|
|
156
|
-
op: t.EditTemplate,
|
|
157
|
-
data: { displayName: e }
|
|
158
|
-
}];
|
|
159
|
-
}
|
|
160
|
-
export { s as configuratorFieldTypeToMetadataFieldTypeMap, g as generateJSONPatchTemplateOperationToUpdateTemplateName, h as generateJSONPatchTemplateOperations };
|
|
1
|
+
import{a as FieldType,l as TemplateOperations,n as ApiMetadataTemplateFieldType,t as AllOps}from"../../../../chunks/types.js";import"../constants.js";import{generateKey}from"../key-generation.js";import{resolveSelectableLevels}from"./convertLocalConfiguratorToTemplateField.js";import isEqual from"lodash/isEqual";var configuratorFieldTypeToMetadataFieldTypeMap={[FieldType.Text]:ApiMetadataTemplateFieldType.String,[FieldType.Date]:ApiMetadataTemplateFieldType.Date,[FieldType.Number]:ApiMetadataTemplateFieldType.Float};function handleTemplateLevelChanges(initialTemplate,updatedTemplate){let patchItems=[],data={};return initialTemplate.displayName!==updatedTemplate.displayName&&(data.displayName=updatedTemplate.displayName),initialTemplate.hidden!==updatedTemplate.hidden&&(data.hidden=updatedTemplate.hidden),Object.keys(data).length>0&&patchItems.push({op:AllOps.EditTemplate,data}),patchItems}function handleFieldEdits(field,initialField,patchItems){if(field.description!==initialField.description||field.name!==initialField.name||field.hidden!==initialField.hidden){let data={};field.name!==initialField.name&&(data.displayName=field.name),field.description!==initialField.description&&(data.description=field.description),field.hidden!==initialField.hidden&&(data.hidden=field.hidden),patchItems.push({op:AllOps.EditField,fieldKey:field.key,data})}}function handleDropdownOptionChanges(field,initialField,patchItems){if(field.type!==FieldType.Dropdown||initialField?.type!==FieldType.Dropdown)return;let isMultiSelect=field.dropdown.allowMultipleSelections,initialOptions=initialField.dropdown.options,updatedOptions=field.dropdown.options,initialOptionKeysMap=new Map(initialOptions.map(option=>[option.id,option])),updatedOptionKeysMap=new Map(updatedOptions.map(option=>[option.id,option]));initialOptions.forEach(option=>{if(!updatedOptionKeysMap.has(option.id)&&field.key){if(!option.key)throw Error(`optionKey is required`);patchItems.push({fieldKey:field.key,...isMultiSelect?{op:AllOps.RemoveMultiSelectOption,multiSelectOptionKey:option.key}:{op:AllOps.RemoveEnumOption,enumOptionKey:option.key}})}}),updatedOptions.forEach(option=>{let initialOption=initialOptionKeysMap.get(option.id);if(!initialOption)patchItems.push({op:isMultiSelect?AllOps.AddMultiSelectOption:AllOps.AddEnumOption,fieldKey:field.key,data:{key:option.key}});else if(initialOption.key!==option.key){if(!option.key)throw Error(`optionKey is required`);patchItems.push({fieldKey:field.key,...isMultiSelect?{op:AllOps.EditMultiSelectOption,multiSelectOptionKey:initialOption.key}:{op:AllOps.EditEnumOption,enumOptionKey:initialOption.key},data:{key:option.key}})}});let initialOptionOrder=initialOptions.map(option=>option.key),updatedOptionOrder=updatedOptions.map(option=>option.key);isEqual(initialOptionOrder,updatedOptionOrder)||patchItems.push({fieldKey:field.key,...isMultiSelect?{op:AllOps.ReorderMultiSelectOptions,multiSelectOptionKeys:updatedOptionOrder}:{op:AllOps.ReorderEnumOptions,enumOptionKeys:updatedOptionOrder}})}function buildApiFieldData(field,key){let baseData={displayName:field.name,isHidden:field.hidden,key,description:field.description};return field.type===FieldType.Taxonomy?{...baseData,type:ApiMetadataTemplateFieldType.Taxonomy,taxonomyKey:field.taxonomy.taxonomyKey,optionsRules:{selectableLevels:resolveSelectableLevels(field),multiSelect:field.taxonomy.allowMultipleSelections},namespace:field.taxonomy.namespace}:field.type===FieldType.Dropdown?{...baseData,type:field.dropdown.allowMultipleSelections?ApiMetadataTemplateFieldType.MultiSelect:ApiMetadataTemplateFieldType.Enum,options:field.dropdown.options.map(option=>({key:option.key}))}:{...baseData,type:configuratorFieldTypeToMetadataFieldTypeMap[field.type]}}function handleNewField(field,knownKeys,patchItems){let uniqueKey=generateKey({displayName:field.name,existingKeys:Array.from(knownKeys),defaultKey:`field`,maxKeyLength:256});return knownKeys.add(uniqueKey),patchItems.push({op:AllOps.AddField,fieldKey:uniqueKey,data:buildApiFieldData(field,uniqueKey)}),{...field,key:uniqueKey}}function handleFieldChanges(initialFields,updatedFields){let initialFieldMap=new Map(initialFields.map(field=>[field.key,field])),knownKeys=new Set(updatedFields.filter(f=>f.key).map(f=>f.key)),removePatchItems=[],updatedFieldKeySet=new Set(updatedFields.filter(f=>f.key).map(f=>f.key));initialFields.forEach(field=>{updatedFieldKeySet.has(field.key)||removePatchItems.push({op:AllOps.RemoveField,fieldKey:field.key})});let addEditPatchItems=[],resolvedFields=[];return updatedFields.forEach(field=>{let initialField=initialFieldMap.get(field.key);if(!initialField){resolvedFields.push(handleNewField(field,knownKeys,addEditPatchItems));return}resolvedFields.push(field),handleFieldEdits(field,initialField,addEditPatchItems),handleDropdownOptionChanges(field,initialField,addEditPatchItems)}),{patchItems:[...removePatchItems,...addEditPatchItems],resolvedFields}}function handleFieldReordering(initialFields,updatedFields){let initialFieldOrder=initialFields.map(field=>field.key).filter(Boolean),updatedFieldOrder=updatedFields.map(field=>field.key).filter(Boolean);return initialFieldOrder.length!==updatedFieldOrder.length||initialFieldOrder.some((key,i)=>key!==updatedFieldOrder[i])?[{op:AllOps.ReorderFields,fieldKeys:updatedFieldOrder}]:[]}function generateJSONPatchTemplateOperations(initialTemplate,updatedTemplate){let patchItems=[];patchItems.push(...handleTemplateLevelChanges(initialTemplate,updatedTemplate));let{patchItems:fieldPatchItems,resolvedFields}=handleFieldChanges(initialTemplate.fields||[],updatedTemplate.fields||[]);return patchItems.push(...fieldPatchItems),patchItems.push(...handleFieldReordering(initialTemplate.fields||[],resolvedFields)),patchItems}function generateJSONPatchTemplateOperationToUpdateTemplateName(displayName){return[{op:TemplateOperations.EditTemplate,data:{displayName}}]}export{configuratorFieldTypeToMetadataFieldTypeMap,generateJSONPatchTemplateOperationToUpdateTemplateName,generateJSONPatchTemplateOperations};
|
|
@@ -1,9 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
var t = (t) => {
|
|
3
|
-
let n = [];
|
|
4
|
-
return t.map((t) => {
|
|
5
|
-
let { field: r, updatedKeys: i } = e(t, n);
|
|
6
|
-
return n = i, r;
|
|
7
|
-
});
|
|
8
|
-
};
|
|
9
|
-
export { t as mapFieldsWithUniqueKeys };
|
|
1
|
+
import{convertLocalConfiguratorToTemplateField}from"./convertLocalConfiguratorToTemplateField.js";var mapFieldsWithUniqueKeys=fields=>{let generatedKeys=[];return fields.map(field=>{let{field:convertedField,updatedKeys}=convertLocalConfiguratorToTemplateField(field,generatedKeys);return generatedKeys=updatedKeys,convertedField})};export{mapFieldsWithUniqueKeys};
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@box/metadata-template-editor",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.25",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@box/blueprint-web": "^16.
|
|
7
|
-
"@box/blueprint-web-assets": "^5.5.
|
|
6
|
+
"@box/blueprint-web": "^16.13.1",
|
|
7
|
+
"@box/blueprint-web-assets": "^5.5.10",
|
|
8
8
|
"@dnd-kit/core": "^6.1.0",
|
|
9
9
|
"@dnd-kit/sortable": "^8.0.0",
|
|
10
10
|
"@dnd-kit/utilities": "^3.2.2",
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"yup": "^1.6.1"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@box/blueprint-web": "^16.
|
|
21
|
-
"@box/blueprint-web-assets": "^5.5.
|
|
22
|
-
"@box/eslint-plugin-blueprint": "2.1.
|
|
23
|
-
"@box/storybook-utils": "1.1.
|
|
20
|
+
"@box/blueprint-web": "^16.13.1",
|
|
21
|
+
"@box/blueprint-web-assets": "^5.5.10",
|
|
22
|
+
"@box/eslint-plugin-blueprint": "2.1.11",
|
|
23
|
+
"@box/storybook-utils": "1.1.34",
|
|
24
24
|
"@dnd-kit/core": "^6.1.0",
|
|
25
25
|
"@dnd-kit/sortable": "^8.0.0",
|
|
26
26
|
"@dnd-kit/utilities": "^3.2.2",
|