@box/metadata-template-editor 2.2.24 → 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.
Files changed (83) hide show
  1. package/dist/chunks/chip.js +1 -22
  2. package/dist/chunks/dropdown-field-configuration.js +1 -62
  3. package/dist/chunks/field-context-menu.js +1 -91
  4. package/dist/chunks/field-selector.js +1 -23
  5. package/dist/chunks/field-type-dropdown.js +1 -31
  6. package/dist/chunks/levels-chain.js +1 -120
  7. package/dist/chunks/metadata-field-configurator.module.js +1 -21
  8. package/dist/chunks/metadata-field-list.js +1 -280
  9. package/dist/chunks/metadata-template-editor-form.js +1 -132
  10. package/dist/chunks/metadata-template-editor-modal.js +1 -90
  11. package/dist/chunks/metadata-template-editor.js +1 -161
  12. package/dist/chunks/sortable-option-list.js +1 -230
  13. package/dist/chunks/taxonomy-field-configuration.js +1 -123
  14. package/dist/chunks/taxonomy-field-configurator-initial-state.js +1 -49
  15. package/dist/chunks/taxonomy-selector.js +1 -89
  16. package/dist/chunks/types.js +1 -23
  17. package/dist/esm/index.js +1 -22
  18. package/dist/esm/lib/components/field-selector/field-selector.js +1 -2
  19. package/dist/esm/lib/components/field-selector/index.js +1 -2
  20. package/dist/esm/lib/components/field-selector/messages.js +1 -12
  21. package/dist/esm/lib/components/field-type-dropdown/field-type-dropdown.js +1 -2
  22. package/dist/esm/lib/components/field-type-dropdown/index.js +1 -2
  23. package/dist/esm/lib/components/field-type-dropdown/messages.js +1 -12
  24. package/dist/esm/lib/components/field-type-tiles/field-type-tiles.js +1 -33
  25. package/dist/esm/lib/components/field-type-tiles/index.js +1 -2
  26. package/dist/esm/lib/components/field-type-tiles/messages.js +1 -12
  27. package/dist/esm/lib/components/metadata-field-configurator/components/confirmation-modal/confirmation-modal.js +1 -33
  28. package/dist/esm/lib/components/metadata-field-configurator/components/confirmation-modal/messages.js +1 -16
  29. package/dist/esm/lib/components/metadata-field-configurator/components/field-action-slot/field-action-slot.js +1 -67
  30. package/dist/esm/lib/components/metadata-field-configurator/components/field-context-menu/field-context-menu.js +1 -2
  31. package/dist/esm/lib/components/metadata-field-configurator/components/field-edit-content/field-edit-content.js +1 -84
  32. package/dist/esm/lib/components/metadata-field-configurator/components/levels-chain/chip.js +1 -2
  33. package/dist/esm/lib/components/metadata-field-configurator/components/levels-chain/index.js +1 -2
  34. package/dist/esm/lib/components/metadata-field-configurator/components/levels-chain/levels-chain.js +1 -2
  35. package/dist/esm/lib/components/metadata-field-configurator/components/levels-chain/utils.js +1 -17
  36. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/dropdown/__mocks__/getInitialValues.js +1 -35
  37. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/dropdown/dropdown-default-values.js +1 -11
  38. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/dropdown/dropdown-field-configuration.js +1 -2
  39. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/dropdown/sortable-option-list.js +1 -2
  40. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/index.js +1 -3
  41. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-default-values.js +1 -11
  42. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-field-configuration.js +1 -2
  43. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-field-configurator-initial-state.js +1 -2
  44. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-selector-messages.js +1 -36
  45. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-selector.js +1 -2
  46. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/useTaxonomySelect.js +1 -15
  47. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/utils.js +1 -2
  48. package/dist/esm/lib/components/metadata-field-configurator/context/editor-config-context.js +1 -3
  49. package/dist/esm/lib/components/metadata-field-configurator/context/field-configurator-context.js +1 -62
  50. package/dist/esm/lib/components/metadata-field-configurator/context/field-extensions-context.js +1 -6
  51. package/dist/esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js +1 -17
  52. package/dist/esm/lib/components/metadata-field-configurator/hooks/useFieldConfiguratorBehavior.js +1 -102
  53. package/dist/esm/lib/components/metadata-field-configurator/hooks/useFieldValidation.js +1 -54
  54. package/dist/esm/lib/components/metadata-field-configurator/hooks/useTaxonomyFetch.js +1 -24
  55. package/dist/esm/lib/components/metadata-field-configurator/hooks/useTemplateFieldSchema.js +1 -35
  56. package/dist/esm/lib/components/metadata-field-configurator/index.js +1 -14
  57. package/dist/esm/lib/components/metadata-field-configurator/messages/configurator-messages.js +1 -133
  58. package/dist/esm/lib/components/metadata-field-configurator/messages/dropdown-messages.js +1 -36
  59. package/dist/esm/lib/components/metadata-field-configurator/messages/levels-chain-messages.js +1 -16
  60. package/dist/esm/lib/components/metadata-field-configurator/messages/taxonomy-messages.js +1 -36
  61. package/dist/esm/lib/components/metadata-field-configurator/metadata-field-configurator.js +1 -106
  62. package/dist/esm/lib/components/metadata-field-configurator/utils.js +1 -46
  63. package/dist/esm/lib/components/metadata-field-list/index.js +1 -2
  64. package/dist/esm/lib/components/metadata-field-list/metadata-field-list.js +1 -2
  65. package/dist/esm/lib/components/metadata-template-editor-form/metadata-template-editor-form.js +1 -2
  66. package/dist/esm/lib/components/metadata-template-editor-modal/index.js +1 -2
  67. package/dist/esm/lib/components/metadata-template-editor-modal/metadata-template-editor-modal.js +1 -2
  68. package/dist/esm/lib/hooks/useMetadataTemplateFormSchema.js +1 -14
  69. package/dist/esm/lib/hooks/useTemplateNameSchema.js +1 -10
  70. package/dist/esm/lib/index.js +1 -8
  71. package/dist/esm/lib/messages.js +1 -128
  72. package/dist/esm/lib/metadata-template-editor.js +1 -2
  73. package/dist/esm/lib/utils/constants.js +1 -2
  74. package/dist/esm/lib/utils/field-options/field-type-icon.js +1 -15
  75. package/dist/esm/lib/utils/field-options/index.js +1 -4
  76. package/dist/esm/lib/utils/field-options/messages.js +1 -45
  77. package/dist/esm/lib/utils/field-options/useFieldOptions.js +1 -16
  78. package/dist/esm/lib/utils/key-generation.js +1 -18
  79. package/dist/esm/lib/utils/template-type-conversion/convertLocalConfiguratorToTemplateField.js +1 -64
  80. package/dist/esm/lib/utils/template-type-conversion/convertTemplateFieldToLocalConfigurator.js +1 -70
  81. package/dist/esm/lib/utils/template-type-conversion/generateJSONPatchTemplateOperations.js +1 -160
  82. package/dist/esm/lib/utils/template-type-conversion/mapFieldsWithUniqueKeys.js +1 -9
  83. package/package.json +7 -7
@@ -1,36 +1 @@
1
- import { defineMessages as e } from "react-intl";
2
- var t = e({
3
- callToActionHeader: {
4
- id: "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.callToActionHeader",
5
- defaultMessage: "Choose or Create a Taxonomy"
6
- },
7
- callToActionSubheader: {
8
- id: "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.callToActionSubheader",
9
- defaultMessage: "Taxonomies allow you to set dynamic, reusable options for dropdown fields."
10
- },
11
- allowMultipleTaxonomySelections: {
12
- id: "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.allowMultipleTaxonomySelections",
13
- defaultMessage: "Users can pick multiple values"
14
- },
15
- selection: {
16
- id: "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection",
17
- defaultMessage: "What level(s) can users select a value from?"
18
- },
19
- requiredSelection: {
20
- id: "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.requiredSelection",
21
- defaultMessage: "Users must pick from the following level:"
22
- },
23
- anyLevelSelection: {
24
- id: "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.anyLevelSelection",
25
- defaultMessage: "Users can pick from any level in the list"
26
- },
27
- chooseTaxonomyLevel: {
28
- id: "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.chooseTaxonomyLevel",
29
- defaultMessage: "Choose the taxonomy level"
30
- },
31
- noTaxonomySelectedError: {
32
- id: "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.noTaxonomySelectedError",
33
- defaultMessage: "Please select a taxonomy"
34
- }
35
- });
36
- export { t as default };
1
+ import{defineMessages}from"react-intl";var taxonomy_messages_default=defineMessages({callToActionHeader:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.callToActionHeader`,defaultMessage:`Choose or Create a Taxonomy`},callToActionSubheader:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.callToActionSubheader`,defaultMessage:`Taxonomies allow you to set dynamic, reusable options for dropdown fields.`},allowMultipleTaxonomySelections:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.allowMultipleTaxonomySelections`,defaultMessage:`Users can pick multiple values`},selection:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection`,defaultMessage:`What level(s) can users select a value from?`},requiredSelection:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.requiredSelection`,defaultMessage:`Users must pick from the following level:`},anyLevelSelection:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.anyLevelSelection`,defaultMessage:`Users can pick from any level in the list`},chooseTaxonomyLevel:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.chooseTaxonomyLevel`,defaultMessage:`Choose the taxonomy level`},noTaxonomySelectedError:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.noTaxonomySelectedError`,defaultMessage:`Please select a taxonomy`}});export{taxonomy_messages_default as default};
@@ -1,106 +1 @@
1
- import { general as e } from "./messages/configurator-messages.js";
2
- import t from "./components/confirmation-modal/confirmation-modal.js";
3
- import { t as n } from "../../../../chunks/metadata-field-configurator.module.js";
4
- import { FieldActionSlot as r } from "./components/field-action-slot/field-action-slot.js";
5
- import { FieldConfiguratorContext as i } from "./context/field-configurator-context.js";
6
- import { TaxonomyOptionsContext as ee } from "./context/taxonomy-options-context.js";
7
- import { FieldEditContent as te } from "./components/field-edit-content/field-edit-content.js";
8
- import { FieldExtensionsContext as a } from "./context/field-extensions-context.js";
9
- import { EDIT_TAB_ID as o, useFieldConfiguratorBehavior as s } from "./hooks/useFieldConfiguratorBehavior.js";
10
- import { Accordion as c, Tabs as l } from "@box/blueprint-web";
11
- import { useIntl as u } from "react-intl";
12
- import { Fragment as ne, jsx as d, jsxs as f } from "react/jsx-runtime";
13
- import "react";
14
- var p = ({ index: p, maxIndex: m, values: h, onValuesChange: g, onDelete: _, onDuplicate: v, onReorderFields: y, onTouchStart: b, onDragStart: x, onDragEnd: S, externalErrors: re, externalTouched: ie, dndDragHandleProps: C, fieldCollapsedText: ae, isExpanded: w, onExpandedChange: T, taxonomyOptions: E, fetchTaxonomies: D, submitAttemptCount: O, fieldExtensions: k, onValidationChange: A, readOnly: j = !1 }) => {
15
- let M = u(), { contextValue: N, taxonomyContextValue: P, extensions: F, isActive: I, handleAccordionValueChange: L, isDeleteConfirmationModalOpen: R, openConfirmationModal: z, closeConfirmationModal: oe, handleDeleteField: B, activeTabId: V, setActiveTabId: H, isTypeEditable: U, uniqueKey: W, nameInputId: G, descriptionInputId: K, accordionTitle: q, TitleIcon: se, hasErrors: ce, handleTypeChange: le, handleChangeVisibility: ue } = s({
16
- values: h,
17
- onValuesChange: g,
18
- onDelete: _,
19
- isExpanded: w,
20
- onExpandedChange: T,
21
- submitAttemptCount: O,
22
- taxonomyOptions: E,
23
- fetchTaxonomies: D,
24
- fieldExtensionsProp: k,
25
- onValidationChange: A
26
- }), de = j ? {
27
- ...N,
28
- values: {
29
- ...N.values,
30
- isFieldReadOnly: !0
31
- }
32
- } : N, J = /* @__PURE__ */ d(te, {
33
- nameInputId: G,
34
- descriptionInputId: K,
35
- isTypeEditable: U,
36
- externalErrors: re,
37
- externalTouched: ie,
38
- handleTypeChange: le,
39
- readOnly: j
40
- }), fe = F.length > 0 ? /* @__PURE__ */ f(ne, { children: [/* @__PURE__ */ d(l.TabPanel, {
41
- tabId: o,
42
- children: J
43
- }), F.map((e, t) => /* @__PURE__ */ d(l.TabPanel, {
44
- tabId: `ext-${t}`,
45
- className: n.extensionContent,
46
- children: e.renderContent(h)
47
- }, e.label))] }) : J, Y = w === !1, X = /* @__PURE__ */ d(c.Item, {
48
- highlighted: !0,
49
- startElement: /* @__PURE__ */ d(se, {
50
- fontSize: "20px",
51
- role: "presentation"
52
- }),
53
- value: W,
54
- title: q,
55
- action: /* @__PURE__ */ d(r, {
56
- fieldCollapsedText: ae,
57
- isHidden: h.hidden,
58
- isExpanded: I,
59
- index: p,
60
- maxIndex: m,
61
- onReorderFields: y,
62
- onToggleVisibility: ue,
63
- onRequestDelete: z,
64
- onRequestDuplicate: v,
65
- extensions: F,
66
- readOnly: j
67
- }),
68
- className: n.fieldAccordionItem,
69
- iconVariant: ce ? "alert-error" : void 0,
70
- children: fe
71
- }), Z = F.length > 0 ? /* @__PURE__ */ d(l, {
72
- selectedId: V,
73
- setSelectedId: (e) => H(e ?? "edit"),
74
- children: X
75
- }) : X, Q = /* @__PURE__ */ f(i.Provider, {
76
- value: de,
77
- children: [/* @__PURE__ */ d("div", {
78
- draggable: Y && !C,
79
- onDragStart: Y && !C && x ? (e) => x(e, p) : void 0,
80
- onDragEnd: Y && !C && S ? (e) => S(e, p) : void 0,
81
- onTouchStart: Y && !C && b ? (e) => b(e, p) : void 0,
82
- ...Y ? C?.listeners ?? {} : {},
83
- ...Y ? C?.attributes ?? {} : {},
84
- children: w === void 0 ? /* @__PURE__ */ d(c, {
85
- type: "single",
86
- collapsible: !0,
87
- value: I ? W : "",
88
- onValueChange: L,
89
- children: Z
90
- }) : Z
91
- }), R && /* @__PURE__ */ d(t, {
92
- onClose: oe,
93
- onConfirm: B,
94
- title: M.formatMessage(e.deleteFieldTitle, { fieldName: h.name }),
95
- body: M.formatMessage(e.deleteFieldDescription)
96
- })]
97
- }), $ = E !== void 0 || D !== void 0 ? /* @__PURE__ */ d(ee.Provider, {
98
- value: P,
99
- children: Q
100
- }) : Q;
101
- return k === void 0 ? $ : /* @__PURE__ */ d(a.Provider, {
102
- value: k,
103
- children: $
104
- });
105
- };
106
- export { p as MetadataFieldConfigurator };
1
+ import{general}from"./messages/configurator-messages.js";import ConfirmationModal from"./components/confirmation-modal/confirmation-modal.js";import{t as metadata_field_configurator_module_default}from"../../../../chunks/metadata-field-configurator.module.js";import{FieldActionSlot}from"./components/field-action-slot/field-action-slot.js";import{FieldConfiguratorContext}from"./context/field-configurator-context.js";import{TaxonomyOptionsContext}from"./context/taxonomy-options-context.js";import{FieldEditContent}from"./components/field-edit-content/field-edit-content.js";import{FieldExtensionsContext}from"./context/field-extensions-context.js";import{EDIT_TAB_ID,useFieldConfiguratorBehavior}from"./hooks/useFieldConfiguratorBehavior.js";import{Accordion,Tabs}from"@box/blueprint-web";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import"react";var MetadataFieldConfigurator=({index,maxIndex,values,onValuesChange,onDelete,onDuplicate,onReorderFields,onTouchStart,onDragStart,onDragEnd,externalErrors,externalTouched,dndDragHandleProps,fieldCollapsedText,isExpanded,onExpandedChange,taxonomyOptions,fetchTaxonomies,submitAttemptCount,fieldExtensions:fieldExtensionsProp,onValidationChange,readOnly=!1})=>{let intl=useIntl(),{contextValue,taxonomyContextValue,extensions,isActive,handleAccordionValueChange,isDeleteConfirmationModalOpen,openConfirmationModal,closeConfirmationModal,handleDeleteField,activeTabId,setActiveTabId,isTypeEditable,uniqueKey,nameInputId,descriptionInputId,accordionTitle,TitleIcon,hasErrors,handleTypeChange,handleChangeVisibility}=useFieldConfiguratorBehavior({values,onValuesChange,onDelete,isExpanded,onExpandedChange,submitAttemptCount,taxonomyOptions,fetchTaxonomies,fieldExtensionsProp,onValidationChange}),effectiveContextValue=readOnly?{...contextValue,values:{...contextValue.values,isFieldReadOnly:!0}}:contextValue,editContent=jsx(FieldEditContent,{nameInputId,descriptionInputId,isTypeEditable,externalErrors,externalTouched,handleTypeChange,readOnly}),accordionBody=extensions.length>0?jsxs(Fragment,{children:[jsx(Tabs.TabPanel,{tabId:EDIT_TAB_ID,children:editContent}),extensions.map((ext,i)=>jsx(Tabs.TabPanel,{tabId:`ext-${i}`,className:metadata_field_configurator_module_default.extensionContent,children:ext.renderContent(values)},ext.label))]}):editContent,isDraggable=isExpanded===!1,accordionItemEl=jsx(Accordion.Item,{highlighted:!0,startElement:jsx(TitleIcon,{fontSize:`20px`,role:`presentation`}),value:uniqueKey,title:accordionTitle,action:jsx(FieldActionSlot,{fieldCollapsedText,isHidden:values.hidden,isExpanded:isActive,index,maxIndex,onReorderFields,onToggleVisibility:handleChangeVisibility,onRequestDelete:openConfirmationModal,onRequestDuplicate:onDuplicate,extensions,readOnly}),className:metadata_field_configurator_module_default.fieldAccordionItem,iconVariant:hasErrors?`alert-error`:void 0,children:accordionBody}),accordionItem=extensions.length>0?jsx(Tabs,{selectedId:activeTabId,setSelectedId:id=>setActiveTabId(id??`edit`),children:accordionItemEl}):accordionItemEl,content=jsxs(FieldConfiguratorContext.Provider,{value:effectiveContextValue,children:[jsx(`div`,{draggable:isDraggable&&!dndDragHandleProps,onDragStart:isDraggable&&!dndDragHandleProps&&onDragStart?e=>onDragStart(e,index):void 0,onDragEnd:isDraggable&&!dndDragHandleProps&&onDragEnd?e=>onDragEnd(e,index):void 0,onTouchStart:isDraggable&&!dndDragHandleProps&&onTouchStart?e=>onTouchStart(e,index):void 0,...isDraggable?dndDragHandleProps?.listeners??{}:{},...isDraggable?dndDragHandleProps?.attributes??{}:{},children:isExpanded===void 0?jsx(Accordion,{type:`single`,collapsible:!0,value:isActive?uniqueKey:``,onValueChange:handleAccordionValueChange,children:accordionItem}):accordionItem}),isDeleteConfirmationModalOpen&&jsx(ConfirmationModal,{onClose:closeConfirmationModal,onConfirm:handleDeleteField,title:intl.formatMessage(general.deleteFieldTitle,{fieldName:values.name}),body:intl.formatMessage(general.deleteFieldDescription)})]}),withTaxonomyContext=taxonomyOptions!==void 0||fetchTaxonomies!==void 0?jsx(TaxonomyOptionsContext.Provider,{value:taxonomyContextValue,children:content}):content;return fieldExtensionsProp===void 0?withTaxonomyContext:jsx(FieldExtensionsContext.Provider,{value:fieldExtensionsProp,children:withTaxonomyContext})};export{MetadataFieldConfigurator};
@@ -1,46 +1 @@
1
- import { a as e } from "../../../../chunks/types.js";
2
- import { t } from "../../../../chunks/dropdown-field-configuration.js";
3
- import { t as n } from "../../../../chunks/taxonomy-field-configuration.js";
4
- import { taxonomyDefaultValues as r } from "./components/type-specific-configuration/taxonomy/taxonomy-default-values.js";
5
- import { jsx as i } from "react/jsx-runtime";
6
- import "react";
7
- import a from "lodash/uniqueId";
8
- function o(t) {
9
- return {
10
- id: a("field-"),
11
- key: "",
12
- hidden: !1,
13
- name: "",
14
- type: t ?? void 0,
15
- description: "",
16
- isFieldNew: !0,
17
- isFieldReadOnly: !1,
18
- ...r,
19
- dropdown: {
20
- options: t === e.Dropdown ? [{
21
- id: a(),
22
- key: "",
23
- isNew: !0
24
- }] : [],
25
- allowMultipleSelections: !1,
26
- isAllowMultipleSelectionsEnabled: !0
27
- }
28
- };
29
- }
30
- var s = (r) => {
31
- switch (r) {
32
- case e.Dropdown: return /* @__PURE__ */ i(t, {});
33
- case e.Taxonomy: return /* @__PURE__ */ i(n, {});
34
- default: return null;
35
- }
36
- };
37
- function c(e, t) {
38
- return e ? t === !0 ? !0 : typeof e != "object" || typeof t != "object" || !t ? !1 : Object.keys(e).some((n) => c(e[n], t[n])) : !1;
39
- }
40
- function l(e) {
41
- return Object.keys(e).reduce((t, n) => {
42
- let r = e[n];
43
- return Array.isArray(r) ? t[n] = r.map((e) => typeof e == "object" && e ? l(e) : !0) : typeof r == "object" && r ? t[n] = l(r) : t[n] = !0, t;
44
- }, {});
45
- }
46
- export { o as createDefaultFieldValues, s as getConfigurationByType, c as hasVisibleErrors, l as markAllTouched };
1
+ import{a as FieldType}from"../../../../chunks/types.js";import{t as DropdownFieldConfiguration}from"../../../../chunks/dropdown-field-configuration.js";import{t as TaxonomyFieldConfiguration}from"../../../../chunks/taxonomy-field-configuration.js";import{taxonomyDefaultValues}from"./components/type-specific-configuration/taxonomy/taxonomy-default-values.js";import{jsx}from"react/jsx-runtime";import"react";import uniqueId from"lodash/uniqueId";function createDefaultFieldValues(type){return{id:uniqueId(`field-`),key:``,hidden:!1,name:``,type:type??void 0,description:``,isFieldNew:!0,isFieldReadOnly:!1,...taxonomyDefaultValues,dropdown:{options:type===FieldType.Dropdown?[{id:uniqueId(),key:``,isNew:!0}]:[],allowMultipleSelections:!1,isAllowMultipleSelectionsEnabled:!0}}}var getConfigurationByType=type=>{switch(type){case FieldType.Dropdown:return jsx(DropdownFieldConfiguration,{});case FieldType.Taxonomy:return jsx(TaxonomyFieldConfiguration,{});default:return null}};function hasVisibleErrors(errors,touched){return errors?touched===!0?!0:typeof errors!=`object`||typeof touched!=`object`||!touched?!1:Object.keys(errors).some(key=>hasVisibleErrors(errors[key],touched[key])):!1}function markAllTouched(obj){return Object.keys(obj).reduce((acc,key)=>{let val=obj[key];return Array.isArray(val)?acc[key]=val.map(item=>typeof item==`object`&&item?markAllTouched(item):!0):typeof val==`object`&&val?acc[key]=markAllTouched(val):acc[key]=!0,acc},{})}export{createDefaultFieldValues,getConfigurationByType,hasVisibleErrors,markAllTouched};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../chunks/metadata-field-list.js";
2
- export { e as MetadataFieldList, e as MetadataFieldListDefault };
1
+ import{t as MetadataFieldList}from"../../../../chunks/metadata-field-list.js";export{MetadataFieldList,MetadataFieldList as MetadataFieldListDefault};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../chunks/metadata-field-list.js";
2
- export { e as MetadataFieldList, e as default };
1
+ import{t as MetadataFieldList}from"../../../../chunks/metadata-field-list.js";export{MetadataFieldList,MetadataFieldList as default};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../chunks/metadata-template-editor-form.js";
2
- export { e as default };
1
+ import{t as MetadataTemplateEditorForm}from"../../../../chunks/metadata-template-editor-form.js";export{MetadataTemplateEditorForm as default};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../chunks/metadata-template-editor-modal.js";
2
- export { e as MetadataTemplateEditorModal };
1
+ import{t as MetadataTemplateEditorModal}from"../../../../chunks/metadata-template-editor-modal.js";export{MetadataTemplateEditorModal};
@@ -1,2 +1 @@
1
- import { t as e } from "../../../../chunks/metadata-template-editor-modal.js";
2
- export { e as MetadataTemplateEditorModal, e as default };
1
+ import{t as MetadataTemplateEditorModal}from"../../../../chunks/metadata-template-editor-modal.js";export{MetadataTemplateEditorModal,MetadataTemplateEditorModal as default};
@@ -1,14 +1 @@
1
- import { useTemplateFieldSchema as e } from "../components/metadata-field-configurator/hooks/useTemplateFieldSchema.js";
2
- import { useTemplateNameSchema as t } from "./useTemplateNameSchema.js";
3
- import { useMemo as n } from "react";
4
- import * as r from "yup";
5
- var i = () => {
6
- let i = e(), a = t();
7
- return n(() => r.object().shape({
8
- displayName: a,
9
- templateKey: r.string().notRequired(),
10
- fields: r.array().of(i).notRequired(),
11
- hidden: r.boolean()
12
- }), [i, a]);
13
- };
14
- export { i as useMetadataTemplateFormSchema };
1
+ import{useTemplateFieldSchema}from"../components/metadata-field-configurator/hooks/useTemplateFieldSchema.js";import{useTemplateNameSchema}from"./useTemplateNameSchema.js";import{useMemo}from"react";import*as Yup from"yup";var useMetadataTemplateFormSchema=()=>{let templateFieldSchema=useTemplateFieldSchema(),templateNameSchema=useTemplateNameSchema();return useMemo(()=>Yup.object().shape({displayName:templateNameSchema,templateKey:Yup.string().notRequired(),fields:Yup.array().of(templateFieldSchema).notRequired(),hidden:Yup.boolean()}),[templateFieldSchema,templateNameSchema])};export{useMetadataTemplateFormSchema};
@@ -1,10 +1 @@
1
- import { METADATA_TEMPLATE_NAME_MAX_LENGTH as e } from "../utils/constants.js";
2
- import t from "../messages.js";
3
- import { useIntl as n } from "react-intl";
4
- import { useMemo as r } from "react";
5
- import * as i from "yup";
6
- var a = ["new_template"], o = () => {
7
- let o = n();
8
- return r(() => i.string().min(1).max(e, o.formatMessage(t.fieldNameTooLong)).required(o.formatMessage(t.fieldRequired)).test("no-whitespace-only", o.formatMessage(t.fieldRequired), (e) => !e || e.trim().length > 0).test("forbidden-display-name", o.formatMessage(t.forbiddenDisplayName), (e) => !a.some((t) => e.toLowerCase().includes(t))), [o]);
9
- };
10
- export { o as useTemplateNameSchema };
1
+ import{METADATA_TEMPLATE_NAME_MAX_LENGTH}from"../utils/constants.js";import messages_default from"../messages.js";import{useIntl}from"react-intl";import{useMemo}from"react";import*as Yup from"yup";var FORBIDDEN_WORDS=[`new_template`],useTemplateNameSchema=()=>{let intl=useIntl();return useMemo(()=>Yup.string().min(1).max(METADATA_TEMPLATE_NAME_MAX_LENGTH,intl.formatMessage(messages_default.fieldNameTooLong)).required(intl.formatMessage(messages_default.fieldRequired)).test(`no-whitespace-only`,intl.formatMessage(messages_default.fieldRequired),value=>!value||value.trim().length>0).test(`forbidden-display-name`,intl.formatMessage(messages_default.forbiddenDisplayName),value=>!FORBIDDEN_WORDS.some(word=>value.toLowerCase().includes(word))),[intl])};export{useTemplateNameSchema};
@@ -1,8 +1 @@
1
- import { EditorConfigContext as e, useEditorConfig as t } from "./components/metadata-field-configurator/context/editor-config-context.js";
2
- import { useTemplateNameSchema as n } from "./hooks/useTemplateNameSchema.js";
3
- import { useMetadataTemplateFormSchema as r } from "./hooks/useMetadataTemplateFormSchema.js";
4
- import { convertApiMetadataTemplateFieldToLocalConfiguratorField as i } from "./utils/template-type-conversion/convertTemplateFieldToLocalConfigurator.js";
5
- import { mapFieldsWithUniqueKeys as a } from "./utils/template-type-conversion/mapFieldsWithUniqueKeys.js";
6
- import { generateJSONPatchTemplateOperations as o } from "./utils/template-type-conversion/generateJSONPatchTemplateOperations.js";
7
- import { t as s } from "../../chunks/metadata-template-editor.js";
8
- export { e as EditorConfigContext, s as MetadataTemplateEditor, i as convertApiMetadataTemplateFieldToLocalConfiguratorField, o as generateJSONPatchTemplateOperations, a as mapFieldsWithUniqueKeys, t as useEditorConfig, r as useMetadataTemplateFormSchema, n as useTemplateNameSchema };
1
+ import{EditorConfigContext,useEditorConfig}from"./components/metadata-field-configurator/context/editor-config-context.js";import{useTemplateNameSchema}from"./hooks/useTemplateNameSchema.js";import{useMetadataTemplateFormSchema}from"./hooks/useMetadataTemplateFormSchema.js";import{convertApiMetadataTemplateFieldToLocalConfiguratorField}from"./utils/template-type-conversion/convertTemplateFieldToLocalConfigurator.js";import{mapFieldsWithUniqueKeys}from"./utils/template-type-conversion/mapFieldsWithUniqueKeys.js";import{generateJSONPatchTemplateOperations}from"./utils/template-type-conversion/generateJSONPatchTemplateOperations.js";import{t as MetadataTemplateEditor}from"../../chunks/metadata-template-editor.js";export{EditorConfigContext,MetadataTemplateEditor,convertApiMetadataTemplateFieldToLocalConfiguratorField,generateJSONPatchTemplateOperations,mapFieldsWithUniqueKeys,useEditorConfig,useMetadataTemplateFormSchema,useTemplateNameSchema};
@@ -1,128 +1 @@
1
- import { defineMessages as e } from "react-intl";
2
- var t = e({
3
- createTitle: {
4
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.createTitle",
5
- defaultMessage: "New Metadata Template"
6
- },
7
- editTitle: {
8
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.editTitle",
9
- defaultMessage: "Edit \"{templateName}\" Metadata Template"
10
- },
11
- templateName: {
12
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.templateName.label",
13
- defaultMessage: "Template Name"
14
- },
15
- templateNameDescription: {
16
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.templateName.description",
17
- defaultMessage: "Display name of the template shown to users"
18
- },
19
- cancel: {
20
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.cancel",
21
- defaultMessage: "Cancel"
22
- },
23
- save: {
24
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.save",
25
- defaultMessage: "Save"
26
- },
27
- fields: {
28
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.fields.label",
29
- defaultMessage: "Fields"
30
- },
31
- fieldsAddFirst: {
32
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.fields.description",
33
- defaultMessage: "Add your first field to the Template:"
34
- },
35
- fieldsLearnMore: {
36
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.fields.learnMore",
37
- defaultMessage: "Learn more about Metadata Field Types"
38
- },
39
- fieldRequired: {
40
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.fieldRequired",
41
- defaultMessage: "This field is required"
42
- },
43
- forbiddenDisplayName: {
44
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.forbiddenDisplayName",
45
- defaultMessage: "This display name is forbidden. Please choose another one."
46
- },
47
- invalidCharacters: {
48
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.invalidCharacters",
49
- defaultMessage: "The field contains illegal characters."
50
- },
51
- fieldNameTooLong: {
52
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.fieldNameTooLong",
53
- defaultMessage: "The field name is too long."
54
- },
55
- displayNameUsedBefore: {
56
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.displayNameUsedBefore",
57
- defaultMessage: "This display name has already been used before. Please choose another one."
58
- },
59
- submitting: {
60
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.submitting",
61
- defaultMessage: "Submitting..."
62
- },
63
- closeAriaLabel: {
64
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.closeAriaLabel",
65
- defaultMessage: "Close metadata template editor"
66
- },
67
- saveSuccessNotification: {
68
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.saveSuccessNotification",
69
- defaultMessage: "Template saved successfully."
70
- },
71
- saveErrorNotification: {
72
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.saveErrorNotification",
73
- defaultMessage: "Failed to save template. Please try again."
74
- },
75
- notificationSuccessIconAriaLabel: {
76
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.notificationSuccessIconAriaLabel",
77
- defaultMessage: "Success"
78
- },
79
- notificationErrorIconAriaLabel: {
80
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.notificationErrorIconAriaLabel",
81
- defaultMessage: "Error"
82
- },
83
- notificationCloseButtonAriaLabel: {
84
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.notificationCloseButtonAriaLabel",
85
- defaultMessage: "Close notification"
86
- },
87
- loading: {
88
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.loading",
89
- defaultMessage: "Loading template…"
90
- },
91
- fetchError: {
92
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.fetchError",
93
- defaultMessage: "Something went wrong. Please reload to try again."
94
- },
95
- reload: {
96
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.reload",
97
- defaultMessage: "Reload"
98
- },
99
- unsavedChangesTitle: {
100
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesTitle",
101
- defaultMessage: "Unsaved Changes"
102
- },
103
- unsavedChangesBody: {
104
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesBody",
105
- defaultMessage: "You have unsaved changes. If you leave now, your changes will be lost."
106
- },
107
- unsavedChangesDiscard: {
108
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesDiscard",
109
- defaultMessage: "Leave Without Saving"
110
- },
111
- unsavedChangesKeepEditing: {
112
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesKeepEditing",
113
- defaultMessage: "Keep Editing"
114
- },
115
- close: {
116
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.close",
117
- defaultMessage: "Close"
118
- },
119
- viewTitle: {
120
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.viewTitle",
121
- defaultMessage: "{templateName}"
122
- },
123
- noFields: {
124
- id: "groupSharedFeatures.metadataTemplateEditor.templateForm.noFields",
125
- defaultMessage: "This template contains no fields."
126
- }
127
- });
128
- export { t as default };
1
+ import{defineMessages}from"react-intl";var messages_default=defineMessages({createTitle:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.createTitle`,defaultMessage:`New Metadata Template`},editTitle:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.editTitle`,defaultMessage:`Edit "{templateName}" Metadata Template`},templateName:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.templateName.label`,defaultMessage:`Template Name`},templateNameDescription:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.templateName.description`,defaultMessage:`Display name of the template shown to users`},cancel:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.cancel`,defaultMessage:`Cancel`},save:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.save`,defaultMessage:`Save`},fields:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.fields.label`,defaultMessage:`Fields`},fieldsAddFirst:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.fields.description`,defaultMessage:`Add your first field to the Template:`},fieldsLearnMore:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.fields.learnMore`,defaultMessage:`Learn more about Metadata Field Types`},fieldRequired:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.fieldRequired`,defaultMessage:`This field is required`},forbiddenDisplayName:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.forbiddenDisplayName`,defaultMessage:`This display name is forbidden. Please choose another one.`},invalidCharacters:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.invalidCharacters`,defaultMessage:`The field contains illegal characters.`},fieldNameTooLong:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.fieldNameTooLong`,defaultMessage:`The field name is too long.`},displayNameUsedBefore:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.displayNameUsedBefore`,defaultMessage:`This display name has already been used before. Please choose another one.`},submitting:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.submitting`,defaultMessage:`Submitting...`},closeAriaLabel:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.closeAriaLabel`,defaultMessage:`Close metadata template editor`},saveSuccessNotification:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.saveSuccessNotification`,defaultMessage:`Template saved successfully.`},saveErrorNotification:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.saveErrorNotification`,defaultMessage:`Failed to save template. Please try again.`},notificationSuccessIconAriaLabel:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.notificationSuccessIconAriaLabel`,defaultMessage:`Success`},notificationErrorIconAriaLabel:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.notificationErrorIconAriaLabel`,defaultMessage:`Error`},notificationCloseButtonAriaLabel:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.notificationCloseButtonAriaLabel`,defaultMessage:`Close notification`},loading:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.loading`,defaultMessage:`Loading template…`},fetchError:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.fetchError`,defaultMessage:`Something went wrong. Please reload to try again.`},reload:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.reload`,defaultMessage:`Reload`},unsavedChangesTitle:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesTitle`,defaultMessage:`Unsaved Changes`},unsavedChangesBody:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesBody`,defaultMessage:`You have unsaved changes. If you leave now, your changes will be lost.`},unsavedChangesDiscard:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesDiscard`,defaultMessage:`Leave Without Saving`},unsavedChangesKeepEditing:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesKeepEditing`,defaultMessage:`Keep Editing`},close:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.close`,defaultMessage:`Close`},viewTitle:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.viewTitle`,defaultMessage:`{templateName}`},noFields:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.noFields`,defaultMessage:`This template contains no fields.`}});export{messages_default as default};
@@ -1,2 +1 @@
1
- import { t as e } from "../../chunks/metadata-template-editor.js";
2
- export { e as MetadataTemplateEditor, e as default };
1
+ import{t as MetadataTemplateEditor}from"../../chunks/metadata-template-editor.js";export{MetadataTemplateEditor,MetadataTemplateEditor as default};
@@ -1,2 +1 @@
1
- var e = 4096, t = 256, n = 64, r = 4096, i = 409;
2
- export { i as CONFLICT_HTTP_STATUS, t as METADATA_TEMPLATE_FIELD_KEY_MAX_LENGTH, e as METADATA_TEMPLATE_FIELD_NAME_MAX_LENGTH, n as METADATA_TEMPLATE_KEY_MAX_LENGTH, r as METADATA_TEMPLATE_NAME_MAX_LENGTH };
1
+ var METADATA_TEMPLATE_FIELD_NAME_MAX_LENGTH=4096,METADATA_TEMPLATE_FIELD_KEY_MAX_LENGTH=256,METADATA_TEMPLATE_KEY_MAX_LENGTH=64,METADATA_TEMPLATE_NAME_MAX_LENGTH=4096,CONFLICT_HTTP_STATUS=409;export{CONFLICT_HTTP_STATUS,METADATA_TEMPLATE_FIELD_KEY_MAX_LENGTH,METADATA_TEMPLATE_FIELD_NAME_MAX_LENGTH,METADATA_TEMPLATE_KEY_MAX_LENGTH,METADATA_TEMPLATE_NAME_MAX_LENGTH};
@@ -1,15 +1 @@
1
- import { a as e } from "../../../../chunks/types.js";
2
- import { Calendar as t, Numbers as n, Section as r, Taxonomy as i, TextInput as a } from "@box/blueprint-web-assets/icons/Medium";
3
- import { jsx as o } from "react/jsx-runtime";
4
- import "react";
5
- var s = (s) => (c) => {
6
- switch (s) {
7
- case e.Text: return /* @__PURE__ */ o(a, { ...c });
8
- case e.Number: return /* @__PURE__ */ o(n, { ...c });
9
- case e.Date: return /* @__PURE__ */ o(t, { ...c });
10
- case e.Dropdown: return /* @__PURE__ */ o(r, { ...c });
11
- case e.Taxonomy: return /* @__PURE__ */ o(i, { ...c });
12
- default: return /* @__PURE__ */ o(a, { ...c });
13
- }
14
- };
15
- export { s as FieldTypeIcon };
1
+ import{a as FieldType}from"../../../../chunks/types.js";import{Calendar,Numbers,Section,Taxonomy,TextInput}from"@box/blueprint-web-assets/icons/Medium";import{jsx}from"react/jsx-runtime";import"react";var FieldTypeIcon=type=>props=>{switch(type){case FieldType.Text:return jsx(TextInput,{...props});case FieldType.Number:return jsx(Numbers,{...props});case FieldType.Date:return jsx(Calendar,{...props});case FieldType.Dropdown:return jsx(Section,{...props});case FieldType.Taxonomy:return jsx(Taxonomy,{...props});default:return jsx(TextInput,{...props})}};export{FieldTypeIcon};
@@ -1,4 +1 @@
1
- import { FieldTypeIcon as e } from "./field-type-icon.js";
2
- import { fieldTypeDescriptionMessages as t, fieldTypesTitleMessages as n } from "./messages.js";
3
- import { useFieldOptions as r } from "./useFieldOptions.js";
4
- export { e as FieldTypeIcon, t as fieldTypeDescriptionMessages, n as fieldTypesTitleMessages, r as useFieldOptions };
1
+ import{FieldTypeIcon}from"./field-type-icon.js";import{fieldTypeDescriptionMessages,fieldTypesTitleMessages}from"./messages.js";import{useFieldOptions}from"./useFieldOptions.js";export{FieldTypeIcon,fieldTypeDescriptionMessages,fieldTypesTitleMessages,useFieldOptions};
@@ -1,45 +1 @@
1
- import { defineMessages as e } from "react-intl";
2
- var t = e({
3
- text: {
4
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypes.text",
5
- defaultMessage: "Text"
6
- },
7
- number: {
8
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypes.number",
9
- defaultMessage: "Number"
10
- },
11
- date: {
12
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypes.date",
13
- defaultMessage: "Date"
14
- },
15
- dropdown: {
16
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypes.dropdown",
17
- defaultMessage: "Dropdown"
18
- },
19
- taxonomy: {
20
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypes.taxonomy",
21
- defaultMessage: "Taxonomy"
22
- }
23
- }), n = e({
24
- text: {
25
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.text",
26
- defaultMessage: "Free text input up to 10,000 characters"
27
- },
28
- number: {
29
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.number",
30
- defaultMessage: "Supports all numeric values"
31
- },
32
- date: {
33
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.date",
34
- defaultMessage: "Date field with calendar picker"
35
- },
36
- dropdown: {
37
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.dropdown",
38
- defaultMessage: "Supports single and multiple selections"
39
- },
40
- taxonomy: {
41
- id: "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.taxonomy",
42
- defaultMessage: "Hierarchical list of selectable options"
43
- }
44
- });
45
- export { n as fieldTypeDescriptionMessages, t as fieldTypesTitleMessages };
1
+ import{defineMessages}from"react-intl";var fieldTypesTitleMessages=defineMessages({text:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypes.text`,defaultMessage:`Text`},number:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypes.number`,defaultMessage:`Number`},date:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypes.date`,defaultMessage:`Date`},dropdown:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypes.dropdown`,defaultMessage:`Dropdown`},taxonomy:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypes.taxonomy`,defaultMessage:`Taxonomy`}}),fieldTypeDescriptionMessages=defineMessages({text:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.text`,defaultMessage:`Free text input up to 10,000 characters`},number:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.number`,defaultMessage:`Supports all numeric values`},date:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.date`,defaultMessage:`Date field with calendar picker`},dropdown:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.dropdown`,defaultMessage:`Supports single and multiple selections`},taxonomy:{id:`groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.taxonomy`,defaultMessage:`Hierarchical list of selectable options`}});export{fieldTypeDescriptionMessages,fieldTypesTitleMessages};
@@ -1,16 +1 @@
1
- import { a as e } from "../../../../chunks/types.js";
2
- import { FieldTypeIcon as t } from "./field-type-icon.js";
3
- import { fieldTypeDescriptionMessages as n, fieldTypesTitleMessages as r } from "./messages.js";
4
- import { useEditorConfig as i } from "../../components/metadata-field-configurator/context/editor-config-context.js";
5
- import { useIntl as a } from "react-intl";
6
- import { useMemo as o } from "react";
7
- function s() {
8
- let s = a(), { disabledFieldTypes: c } = i();
9
- return { availableFieldTypes: o(() => Object.values(e).filter((e) => !c?.includes(e)).map((e) => ({
10
- type: e,
11
- label: s.formatMessage(r[e]),
12
- description: s.formatMessage(n[e]),
13
- Icon: t(e)
14
- })), [s, c]) };
15
- }
16
- export { s as useFieldOptions };
1
+ import{a as FieldType}from"../../../../chunks/types.js";import{FieldTypeIcon}from"./field-type-icon.js";import{fieldTypeDescriptionMessages,fieldTypesTitleMessages}from"./messages.js";import{useEditorConfig}from"../../components/metadata-field-configurator/context/editor-config-context.js";import{useIntl}from"react-intl";import{useMemo}from"react";function useFieldOptions(){let intl=useIntl(),{disabledFieldTypes}=useEditorConfig();return{availableFieldTypes:useMemo(()=>Object.values(FieldType).filter(type=>!disabledFieldTypes?.includes(type)).map(type=>({type,label:intl.formatMessage(fieldTypesTitleMessages[type]),description:intl.formatMessage(fieldTypeDescriptionMessages[type]),Icon:FieldTypeIcon(type)})),[intl,disabledFieldTypes])}}export{useFieldOptions};
@@ -1,18 +1 @@
1
- var e = 3, t = 1e3;
2
- function n(e, t) {
3
- let n = e.replace(/[^a-zA-Z0-9\s]/g, "").replace(/\w*/g, (e) => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()).replace(/\s/g, ""), r = n.charAt(0).toLowerCase() + n.slice(1);
4
- return r.length === 0 ? t : /^\d/.test(r) ? t + r : r;
5
- }
6
- var r = (e, t) => !t.includes(e), i = ({ displayName: i, existingKeys: a, defaultKey: o, maxKeyLength: s }) => {
7
- if (s <= e) throw Error("max key length is too short");
8
- let c = s - e, l = n(i, o).substring(0, c);
9
- if (r(l, a)) return l;
10
- let u = 1, d = 0, f;
11
- do {
12
- if (d >= t) throw Error("Exceeded maximum iterations while generating unique key");
13
- f = `${l}${u}`, u += 1, d += 1;
14
- } while (!r(f, a));
15
- if (f.length > s) throw Error("could not generate unique key less than max key length");
16
- return f;
17
- };
18
- export { n as displayNameToKey, i as generateKey };
1
+ var KEY_LENGTH_PADDING=3,MAX_LOOP_ITERATIONS=1e3;function displayNameToKey(displayName,defaultKey){let noSpaces=displayName.replace(/[^a-zA-Z0-9\s]/g,``).replace(/\w*/g,word=>word.charAt(0).toUpperCase()+word.slice(1).toLowerCase()).replace(/\s/g,``),proposedKey=noSpaces.charAt(0).toLowerCase()+noSpaces.slice(1);return proposedKey.length===0?defaultKey:/^\d/.test(proposedKey)?defaultKey+proposedKey:proposedKey}var isUnique=(key,existingKeys)=>!existingKeys.includes(key),generateKey=({displayName,existingKeys,defaultKey,maxKeyLength})=>{if(maxKeyLength<=KEY_LENGTH_PADDING)throw Error(`max key length is too short`);let safeKeyLength=maxKeyLength-KEY_LENGTH_PADDING,key=displayNameToKey(displayName,defaultKey).substring(0,safeKeyLength);if(isUnique(key,existingKeys))return key;let uniqueToken=1,iterations=0,proposedKey;do{if(iterations>=MAX_LOOP_ITERATIONS)throw Error(`Exceeded maximum iterations while generating unique key`);proposedKey=`${key}${uniqueToken}`,uniqueToken+=1,iterations+=1}while(!isUnique(proposedKey,existingKeys));if(proposedKey.length>maxKeyLength)throw Error(`could not generate unique key less than max key length`);return proposedKey};export{displayNameToKey,generateKey};
@@ -1,64 +1 @@
1
- import { a as e, c as t, n } from "../../../../chunks/types.js";
2
- import "../constants.js";
3
- import { generateKey as r } from "../key-generation.js";
4
- var i = (e) => {
5
- let { taxonomy: n } = e, r = n.availableTaxonomies.find((e) => e.taxonomyKey === n.taxonomyKey)?.levels.map((e) => e.level) || [];
6
- return n.selection === t.AllowAny ? r : n.selectedLevels || [];
7
- }, a = (t, a = []) => {
8
- let { name: o, description: s, hidden: c, type: l } = t, u = r({
9
- displayName: o,
10
- existingKeys: a,
11
- defaultKey: "field",
12
- maxKeyLength: 256
13
- }), d = {
14
- key: u,
15
- displayName: o,
16
- description: s,
17
- hidden: c
18
- }, f;
19
- switch (l) {
20
- case e.Text:
21
- f = {
22
- ...d,
23
- type: n.String
24
- };
25
- break;
26
- case e.Number:
27
- f = {
28
- ...d,
29
- type: n.Float
30
- };
31
- break;
32
- case e.Date:
33
- f = {
34
- ...d,
35
- type: n.Date
36
- };
37
- break;
38
- case e.Dropdown:
39
- f = {
40
- ...d,
41
- type: t.dropdown.allowMultipleSelections ? n.MultiSelect : n.Enum,
42
- options: t.dropdown.options.map((e) => ({ key: e.key }))
43
- };
44
- break;
45
- case e.Taxonomy:
46
- f = {
47
- ...d,
48
- type: n.Taxonomy,
49
- taxonomyKey: t.taxonomy.taxonomyKey,
50
- optionsRules: {
51
- selectableLevels: i(t),
52
- multiSelect: t.taxonomy.allowMultipleSelections
53
- },
54
- namespace: t.taxonomy.namespace
55
- };
56
- break;
57
- default: throw Error(`Unsupported field type: ${l}`);
58
- }
59
- return {
60
- field: f,
61
- updatedKeys: [...a, u]
62
- };
63
- };
64
- export { a as convertLocalConfiguratorToTemplateField, i as resolveSelectableLevels };
1
+ import{a as FieldType,c as TaxonomySelection,n as ApiMetadataTemplateFieldType}from"../../../../chunks/types.js";import"../constants.js";import{generateKey}from"../key-generation.js";var resolveSelectableLevels=field=>{let{taxonomy}=field,levels=taxonomy.availableTaxonomies.find(availableTaxonomy=>availableTaxonomy.taxonomyKey===taxonomy.taxonomyKey)?.levels.map(level=>level.level)||[];return taxonomy.selection===TaxonomySelection.AllowAny?levels:taxonomy.selectedLevels||[]},convertLocalConfiguratorToTemplateField=(field,existingKeys=[])=>{let{name:displayName,description,hidden,type}=field,key=generateKey({displayName,existingKeys,defaultKey:`field`,maxKeyLength:256}),baseFieldData={key,displayName,description,hidden},result;switch(type){case FieldType.Text:result={...baseFieldData,type:ApiMetadataTemplateFieldType.String};break;case FieldType.Number:result={...baseFieldData,type:ApiMetadataTemplateFieldType.Float};break;case FieldType.Date:result={...baseFieldData,type:ApiMetadataTemplateFieldType.Date};break;case FieldType.Dropdown:result={...baseFieldData,type:field.dropdown.allowMultipleSelections?ApiMetadataTemplateFieldType.MultiSelect:ApiMetadataTemplateFieldType.Enum,options:field.dropdown.options.map(option=>({key:option.key}))};break;case FieldType.Taxonomy:result={...baseFieldData,type:ApiMetadataTemplateFieldType.Taxonomy,taxonomyKey:field.taxonomy.taxonomyKey,optionsRules:{selectableLevels:resolveSelectableLevels(field),multiSelect:field.taxonomy.allowMultipleSelections},namespace:field.taxonomy.namespace};break;default:throw Error(`Unsupported field type: ${type}`)}return{field:result,updatedKeys:[...existingKeys,key]}};export{convertLocalConfiguratorToTemplateField,resolveSelectableLevels};