@box/metadata-template-editor 2.3.45 → 2.4.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.
Files changed (59) hide show
  1. package/dist/chunks/metadata-field-list.js +1 -1
  2. package/dist/chunks/metadata-template-editor-form.js +1 -1
  3. package/dist/chunks/metadata-template-editor.js +1 -1
  4. package/dist/chunks/taxonomy-field-configuration.js +1 -1
  5. package/dist/chunks/taxonomy-field-configurator-initial-state.js +1 -1
  6. package/dist/chunks/taxonomy-selector.js +1 -1
  7. package/dist/esm/index.js +1 -1
  8. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/useTaxonomySelect.js +1 -1
  9. package/dist/esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/utils.js +1 -1
  10. package/dist/esm/lib/components/metadata-field-configurator/context/field-configurator-context.js +1 -1
  11. package/dist/esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js +1 -1
  12. package/dist/esm/lib/components/metadata-field-configurator/hooks/useFieldConfiguratorBehavior.js +1 -1
  13. package/dist/esm/lib/components/metadata-field-configurator/hooks/useTaxonomyFetch.js +1 -1
  14. package/dist/esm/lib/components/metadata-field-configurator/index.js +1 -1
  15. package/dist/esm/lib/components/metadata-field-configurator/messages/taxonomy-messages.js +1 -1
  16. package/dist/esm/lib/components/metadata-field-configurator/metadata-field-configurator.js +1 -1
  17. package/dist/esm/lib/components/metadata-field-configurator/utils.js +1 -1
  18. package/dist/esm/lib/messages.js +1 -1
  19. package/dist/esm/lib/utils/taxonomy-identity.js +1 -0
  20. package/dist/esm/lib/utils/template-type-conversion/convertLocalConfiguratorToTemplateField.js +1 -1
  21. package/dist/i18n/bn-IN.js +2 -0
  22. package/dist/i18n/da-DK.js +2 -0
  23. package/dist/i18n/de-DE.js +2 -0
  24. package/dist/i18n/en-US.js +4 -112
  25. package/dist/i18n/es-419.js +2 -0
  26. package/dist/i18n/es-ES.js +2 -0
  27. package/dist/i18n/fi-FI.js +2 -0
  28. package/dist/i18n/fr-CA.js +2 -0
  29. package/dist/i18n/fr-FR.js +2 -0
  30. package/dist/i18n/hi-IN.js +2 -0
  31. package/dist/i18n/it-IT.js +2 -0
  32. package/dist/i18n/ko-KR.js +2 -0
  33. package/dist/i18n/nb-NO.js +2 -0
  34. package/dist/i18n/nl-NL.js +2 -0
  35. package/dist/i18n/pl-PL.js +2 -0
  36. package/dist/i18n/pt-BR.js +2 -0
  37. package/dist/i18n/ru-RU.js +2 -0
  38. package/dist/i18n/sv-SE.js +2 -0
  39. package/dist/i18n/tr-TR.js +2 -0
  40. package/dist/i18n/zh-CN.js +2 -0
  41. package/dist/i18n/zh-TW.js +2 -0
  42. package/dist/styles/metadata-template-editor-form.css +1 -1
  43. package/dist/styles/taxonomy-field-configuration.css +1 -1
  44. package/dist/styles/taxonomy-selector.css +1 -1
  45. package/dist/types/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/useTaxonomySelect.d.ts +1 -1
  46. package/dist/types/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/utils.d.ts +1 -0
  47. package/dist/types/lib/components/metadata-field-configurator/context/field-configurator-context.d.ts +5 -0
  48. package/dist/types/lib/components/metadata-field-configurator/context/taxonomy-options-context.d.ts +19 -2
  49. package/dist/types/lib/components/metadata-field-configurator/hooks/useFieldConfiguratorBehavior.d.ts +2 -7
  50. package/dist/types/lib/components/metadata-field-configurator/hooks/useTaxonomyFetch.d.ts +13 -8
  51. package/dist/types/lib/components/metadata-field-configurator/messages/taxonomy-messages.d.ts +15 -0
  52. package/dist/types/lib/components/metadata-field-configurator/metadata-field-configurator.d.ts +24 -56
  53. package/dist/types/lib/components/metadata-field-list/metadata-field-list.d.ts +8 -1
  54. package/dist/types/lib/components/metadata-template-editor-form/metadata-template-editor-form.d.ts +3 -1
  55. package/dist/types/lib/messages.d.ts +15 -0
  56. package/dist/types/lib/metadata-template-editor.d.ts +32 -1
  57. package/dist/types/lib/types.d.ts +29 -0
  58. package/dist/types/lib/utils/taxonomy-identity.d.ts +12 -0
  59. package/package.json +1 -1
@@ -1 +1 @@
1
- import{d as isUnsupportedField,o as FieldType}from"./types.js";import{FieldTypeIcon}from"../esm/lib/utils/field-options/field-type-icon.js";import{EditorConfigContext,useEditorConfig}from"../esm/lib/components/metadata-field-configurator/context/editor-config-context.js";import{general}from"../esm/lib/components/metadata-field-configurator/messages/configurator-messages.js";import{useTemplateFieldSchema}from"../esm/lib/components/metadata-field-configurator/hooks/useTemplateFieldSchema.js";import{TaxonomyOptionsContext}from"../esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import{FieldExtensionsContext}from"../esm/lib/components/metadata-field-configurator/context/field-extensions-context.js";import{useTaxonomyFetch}from"../esm/lib/components/metadata-field-configurator/hooks/useTaxonomyFetch.js";import{MetadataFieldConfigurator}from"../esm/lib/components/metadata-field-configurator/metadata-field-configurator.js";import{Accordion,InlineNotice}from"@box/blueprint-web";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{forwardRef,useCallback,useEffect,useImperativeHandle,useMemo,useRef,useState}from"react";import*as Yup from"yup";import clsx from"clsx";import cloneDeep from"lodash/cloneDeep";import uniqueId from"lodash/uniqueId";import{DndContext,DragOverlay,KeyboardSensor,PointerSensor,TouchSensor,closestCenter,useSensor,useSensors}from"@dnd-kit/core";import{SortableContext,arrayMove,sortableKeyboardCoordinates,useSortable,verticalListSortingStrategy}from"@dnd-kit/sortable";import{CSS}from"@dnd-kit/utilities";import '../styles/metadata-field-list.css';var metadata_field_list_module_default={fieldList:`_fieldList_18x5c_1`,fieldItem:`_fieldItem_18x5c_11`,dragging:`_dragging_18x5c_11`,accordionRootContainer:`_accordionRootContainer_18x5c_15`},FIELDS_AGGREGATE_VALIDATION_DEBOUNCE_MS=150;function getFieldId(field){return field.id}var ACCORDION_ANIMATION_MS=150,FieldListKeyboardSensor=class extends KeyboardSensor{static activators=[{eventName:`onKeyDown`,handler:(event,options,context)=>{let target=event.nativeEvent?.target??event.target??null;return target instanceof HTMLElement&&[`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`A`].includes(target.tagName)?!1:KeyboardSensor.activators[0].handler(event,options,context)}}]};function SortableFieldItem({field,index,maxIndex,isExpanded,onChangeField,onDeleteAtIndex,onDuplicateAtIndex,onReorderFields,onRequestExpand,submitAttemptCount}){let id=getFieldId(field),{attributes,listeners,setNodeRef,transform,transition,isDragging}=useSortable({id,disabled:isUnsupportedField(field)});return jsx(`li`,{ref:setNodeRef,style:{transform:CSS.Translate.toString(transform),transition},"data-field-id":id,className:clsx(metadata_field_list_module_default.fieldItem,{[metadata_field_list_module_default.dragging]:isDragging}),children:jsx(MetadataFieldConfigurator,{values:field,onValuesChange:onChangeField,index,maxIndex,onDelete:()=>onDeleteAtIndex(index),onDuplicate:()=>onDuplicateAtIndex(index),onReorderFields,dndDragHandleProps:{listeners,attributes},isExpanded,onExpandedChange:expanded=>{expanded&&onRequestExpand()},submitAttemptCount})})}var MetadataFieldList=forwardRef(function({fields,onChangeFields,onDeleteFieldAtIndex,onDuplicateField,taxonomyOptions,fetchTaxonomies,disabledFieldTypes,taxonomyInitialStateLabels,firstInvalidFieldIndex,submitAttemptCount,fieldExtensions,onValidationChange,readOnly=!1},ref){let{formatMessage}=useIntl(),parentEditorConfig=useEditorConfig(),taxonomyContextValue=useTaxonomyFetch(fetchTaxonomies,taxonomyOptions),fieldListRef=useRef(null),pendingScrollFieldIdRef=useRef(null),seenFieldIdsRef=useRef(new Set(fields.map(field=>getFieldId(field)))),fieldSchema=useTemplateFieldSchema(),lastEmittedAggregateValidRef=useRef(null);useEffect(()=>{lastEmittedAggregateValidRef.current=null},[onValidationChange]),useEffect(()=>{if(!onValidationChange)return;let cancelled=!1,timeoutId=setTimeout(()=>{Yup.array().of(fieldSchema).validate(fields,{abortEarly:!0}).then(()=>{cancelled||lastEmittedAggregateValidRef.current===!0||(lastEmittedAggregateValidRef.current=!0,onValidationChange(!0))}).catch(()=>{cancelled||lastEmittedAggregateValidRef.current===!1||(lastEmittedAggregateValidRef.current=!1,onValidationChange(!1))})},FIELDS_AGGREGATE_VALIDATION_DEBOUNCE_MS);return()=>{cancelled=!0,clearTimeout(timeoutId)}},[fields,fieldSchema,onValidationChange]);let[expandedFieldKey,setExpandedFieldKey]=useState(()=>{let firstNewField=fields.find(f=>f.isFieldNew);return firstNewField?getFieldId(firstNewField):null});useImperativeHandle(ref,()=>({scrollToAndExpand(fieldId){pendingScrollFieldIdRef.current=fieldId,expandedFieldKey===fieldId?(pendingScrollFieldIdRef.current=null,setTimeout(()=>{(fieldListRef.current?.querySelector(`[data-field-id="${fieldId}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`})},0)):setExpandedFieldKey(fieldId)}}),[expandedFieldKey]),useEffect(()=>{fields.forEach(field=>{let id=getFieldId(field);seenFieldIdsRef.current.has(id)||(seenFieldIdsRef.current.add(id),pendingScrollFieldIdRef.current=id,setExpandedFieldKey(id))})},[fields]),useEffect(()=>{if(firstInvalidFieldIndex==null||!submitAttemptCount)return;let field=fields[firstInvalidFieldIndex];if(!field)return;let fieldId=getFieldId(field);setExpandedFieldKey(fieldId),requestAnimationFrame(()=>{(fieldListRef.current?.querySelector(`[data-field-id="${fieldId}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`})})},[submitAttemptCount]),useEffect(()=>{let fieldId=pendingScrollFieldIdRef.current;if(!fieldId||fieldId!==expandedFieldKey)return;pendingScrollFieldIdRef.current=null;let timer=setTimeout(()=>{(fieldListRef.current?.querySelector(`[data-field-id="${fieldId}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`})},ACCORDION_ANIMATION_MS);return()=>clearTimeout(timer)},[expandedFieldKey]);let[activeFieldId,setActiveFieldId]=useState(null),sensors=useSensors(useSensor(PointerSensor,{activationConstraint:{distance:8}}),useSensor(TouchSensor,{activationConstraint:{delay:250,tolerance:5}}),useSensor(FieldListKeyboardSensor,{coordinateGetter:sortableKeyboardCoordinates})),handleDragStart=useCallback(event=>{setActiveFieldId(String(event.active.id))},[]),handleDragEnd=useCallback(event=>{setActiveFieldId(null);let{active,over}=event;if(over&&active.id!==over.id){let oldIndex=fields.findIndex(f=>getFieldId(f)===active.id),newIndex=fields.findIndex(f=>getFieldId(f)===over.id);oldIndex!==-1&&newIndex!==-1&&!isUnsupportedField(fields[oldIndex])&&onChangeFields?.(arrayMove(fields,oldIndex,newIndex))}},[fields,onChangeFields]),handleDragCancel=useCallback(()=>{setActiveFieldId(null)},[]),handleFieldChange=useCallback((index,field)=>{onChangeFields?.(fields.map((f,i)=>i===index?field:f))},[fields,onChangeFields]),handleDeleteAtIndex=useCallback(index=>{let fieldToDelete=fields[index],fieldId=getFieldId(fieldToDelete);setExpandedFieldKey(prev=>prev===fieldId?null:prev),onChangeFields?.(fields.filter((_,i)=>i!==index)),onDeleteFieldAtIndex?.(index,fieldToDelete)},[fields,onChangeFields,onDeleteFieldAtIndex]),handleDuplicateAtIndex=useCallback(index=>{let fieldToDuplicate=fields[index];if(isUnsupportedField(fieldToDuplicate))return;let duplicated=cloneDeep(fieldToDuplicate);duplicated.id=uniqueId(`field-`),duplicated.key=``,duplicated.isFieldNew=!0,duplicated.type===FieldType.Dropdown&&(duplicated.dropdown.options=duplicated.dropdown.options.map(opt=>({...opt,id:uniqueId()})));let newFields=[...fields];newFields.splice(index+1,0,duplicated),onChangeFields?.(newFields),onDuplicateField?.(duplicated)},[fields,onChangeFields,onDuplicateField]),handleReorderFields=useCallback((fromIndex,toIndex)=>{toIndex<0||toIndex>=fields.length||isUnsupportedField(fields[fromIndex])||onChangeFields?.(arrayMove(fields,fromIndex,toIndex))},[fields,onChangeFields]),handleAccordionValueChange=useCallback(value=>{let newKey=value||null;setExpandedFieldKey(newKey),newKey&&setTimeout(()=>{(fieldListRef.current?.querySelector(`[data-field-id="${newKey}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`})},ACCORDION_ANIMATION_MS)},[]),items=fields.map(f=>getFieldId(f)),activeField=activeFieldId?fields.find(f=>getFieldId(f)===activeFieldId):null,OverlayTitleIcon=activeField?FieldTypeIcon(activeField.type):null,overlayTitle=activeField?(field=>{let name=field.name||formatMessage(general.fieldNameInputPlaceholder);return field.type===FieldType.Dropdown?`${name} (${field.dropdown?.options?.length??0})`:name})(activeField):``,editorConfigValue=useMemo(()=>({disabledFieldTypes:disabledFieldTypes??parentEditorConfig.disabledFieldTypes,taxonomyInitialStateLabels:taxonomyInitialStateLabels??parentEditorConfig.taxonomyInitialStateLabels}),[disabledFieldTypes,taxonomyInitialStateLabels,parentEditorConfig]),listItems=readOnly?jsx(`ul`,{ref:fieldListRef,className:metadata_field_list_module_default.fieldList,children:fields.map((field,index)=>{let fieldId=getFieldId(field);return jsx(`li`,{"data-field-id":fieldId,className:metadata_field_list_module_default.fieldItem,children:jsx(MetadataFieldConfigurator,{values:field,onValuesChange:()=>void 0,index,maxIndex:fields.length-1,onDuplicate:()=>void 0,onReorderFields:()=>void 0,onDragStart:()=>void 0,onDragEnd:()=>void 0,onTouchStart:()=>void 0,isExpanded:expandedFieldKey===fieldId,onExpandedChange:expanded=>{expanded&&setExpandedFieldKey(fieldId)},readOnly:!0})},fieldId)})}):jsx(SortableContext,{items,strategy:verticalListSortingStrategy,children:jsx(`ul`,{ref:fieldListRef,className:metadata_field_list_module_default.fieldList,children:fields.map((field,index)=>{let fieldId=getFieldId(field);return jsx(SortableFieldItem,{field,index,maxIndex:fields.length-1,isExpanded:expandedFieldKey===fieldId,onChangeField:updatedField=>handleFieldChange(index,updatedField),onDeleteAtIndex:handleDeleteAtIndex,onDuplicateAtIndex:handleDuplicateAtIndex,onReorderFields:handleReorderFields,onRequestExpand:()=>setExpandedFieldKey(fieldId),submitAttemptCount},fieldId)})})}),accordionContainer=jsx(`div`,{className:metadata_field_list_module_default.accordionRootContainer,children:jsx(Accordion,{type:`single`,collapsible:!0,value:expandedFieldKey??``,onValueChange:handleAccordionValueChange,children:listItems})}),coreContent=readOnly?accordionContainer:jsxs(DndContext,{sensors,collisionDetection:closestCenter,onDragStart:handleDragStart,onDragEnd:handleDragEnd,onDragCancel:handleDragCancel,children:[accordionContainer,jsx(DragOverlay,{dropAnimation:null,children:activeField&&OverlayTitleIcon?jsx(Accordion,{type:`single`,children:jsx(Accordion.Item,{value:`ghost`,title:overlayTitle,startElement:jsx(OverlayTitleIcon,{fontSize:`20px`,role:`presentation`}),children:null})}):null})]}),hasUnsupportedFields=useMemo(()=>fields.some(field=>isUnsupportedField(field)),[fields]),listContent=jsx(EditorConfigContext.Provider,{value:editorConfigValue,children:jsxs(TaxonomyOptionsContext.Provider,{value:taxonomyContextValue,children:[hasUnsupportedFields&&jsx(InlineNotice,{variant:`warning`,variantIconAriaLabel:formatMessage(general.unsupportedFieldsBanner),children:formatMessage(general.unsupportedFieldsBanner)}),coreContent]})});return fieldExtensions===void 0?listContent:jsx(FieldExtensionsContext.Provider,{value:fieldExtensions,children:listContent})});export{MetadataFieldList as t};
1
+ import{d as isUnsupportedField,o as FieldType}from"./types.js";import{FieldTypeIcon}from"../esm/lib/utils/field-options/field-type-icon.js";import{EditorConfigContext,useEditorConfig}from"../esm/lib/components/metadata-field-configurator/context/editor-config-context.js";import{general}from"../esm/lib/components/metadata-field-configurator/messages/configurator-messages.js";import{useTemplateFieldSchema}from"../esm/lib/components/metadata-field-configurator/hooks/useTemplateFieldSchema.js";import{TaxonomyOptionsContext}from"../esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import{FieldExtensionsContext}from"../esm/lib/components/metadata-field-configurator/context/field-extensions-context.js";import{useTaxonomyFetch}from"../esm/lib/components/metadata-field-configurator/hooks/useTaxonomyFetch.js";import{MetadataFieldConfigurator}from"../esm/lib/components/metadata-field-configurator/metadata-field-configurator.js";import{Accordion,InlineNotice}from"@box/blueprint-web";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{forwardRef,useCallback,useEffect,useImperativeHandle,useMemo,useRef,useState}from"react";import*as Yup from"yup";import clsx from"clsx";import cloneDeep from"lodash/cloneDeep";import uniqueId from"lodash/uniqueId";import{DndContext,DragOverlay,KeyboardSensor,PointerSensor,TouchSensor,closestCenter,useSensor,useSensors}from"@dnd-kit/core";import{SortableContext,arrayMove,sortableKeyboardCoordinates,useSortable,verticalListSortingStrategy}from"@dnd-kit/sortable";import{CSS}from"@dnd-kit/utilities";import '../styles/metadata-field-list.css';var metadata_field_list_module_default={fieldList:`_fieldList_18x5c_1`,fieldItem:`_fieldItem_18x5c_11`,dragging:`_dragging_18x5c_11`,accordionRootContainer:`_accordionRootContainer_18x5c_15`},FIELDS_AGGREGATE_VALIDATION_DEBOUNCE_MS=150;function getFieldId(field){return field.id}var ACCORDION_ANIMATION_MS=150,FieldListKeyboardSensor=class extends KeyboardSensor{static activators=[{eventName:`onKeyDown`,handler:(event,options,context)=>{let target=event.nativeEvent?.target??event.target??null;return target instanceof HTMLElement&&[`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`A`].includes(target.tagName)?!1:KeyboardSensor.activators[0].handler(event,options,context)}}]};function SortableFieldItem({field,index,maxIndex,isExpanded,onChangeField,onDeleteAtIndex,onDuplicateAtIndex,onReorderFields,onRequestExpand,fetchTaxonomyByKey,submitAttemptCount}){let id=getFieldId(field),{attributes,listeners,setNodeRef,transform,transition,isDragging}=useSortable({id,disabled:isUnsupportedField(field)});return jsx(`li`,{ref:setNodeRef,style:{transform:CSS.Translate.toString(transform),transition},"data-field-id":id,className:clsx(metadata_field_list_module_default.fieldItem,{[metadata_field_list_module_default.dragging]:isDragging}),children:jsx(MetadataFieldConfigurator,{values:field,onValuesChange:onChangeField,index,maxIndex,onDelete:()=>onDeleteAtIndex(index),onDuplicate:()=>onDuplicateAtIndex(index),onReorderFields,dndDragHandleProps:{listeners,attributes},isExpanded,onExpandedChange:expanded=>{expanded&&onRequestExpand()},submitAttemptCount,fetchTaxonomyByKey})})}var MetadataFieldList=forwardRef(function({fields,onChangeFields,onDeleteFieldAtIndex,onDuplicateField,taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,disabledFieldTypes,taxonomyInitialStateLabels,firstInvalidFieldIndex,submitAttemptCount,fieldExtensions,onValidationChange,readOnly=!1},ref){let{formatMessage}=useIntl(),parentEditorConfig=useEditorConfig(),taxonomyContextValue=useTaxonomyFetch({fetchTaxonomies,staticOptions:taxonomyOptions,fetchTaxonomyByKey}),fieldListRef=useRef(null),pendingScrollFieldIdRef=useRef(null),seenFieldIdsRef=useRef(new Set(fields.map(field=>getFieldId(field)))),fieldSchema=useTemplateFieldSchema(),lastEmittedAggregateValidRef=useRef(null);useEffect(()=>{lastEmittedAggregateValidRef.current=null},[onValidationChange]),useEffect(()=>{if(!onValidationChange)return;let cancelled=!1,timeoutId=setTimeout(()=>{Yup.array().of(fieldSchema).validate(fields,{abortEarly:!0}).then(()=>{cancelled||lastEmittedAggregateValidRef.current===!0||(lastEmittedAggregateValidRef.current=!0,onValidationChange(!0))}).catch(()=>{cancelled||lastEmittedAggregateValidRef.current===!1||(lastEmittedAggregateValidRef.current=!1,onValidationChange(!1))})},FIELDS_AGGREGATE_VALIDATION_DEBOUNCE_MS);return()=>{cancelled=!0,clearTimeout(timeoutId)}},[fields,fieldSchema,onValidationChange]);let[expandedFieldKey,setExpandedFieldKey]=useState(()=>{let firstNewField=fields.find(f=>f.isFieldNew);return firstNewField?getFieldId(firstNewField):null});useImperativeHandle(ref,()=>({scrollToAndExpand(fieldId){pendingScrollFieldIdRef.current=fieldId,expandedFieldKey===fieldId?(pendingScrollFieldIdRef.current=null,setTimeout(()=>{(fieldListRef.current?.querySelector(`[data-field-id="${fieldId}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`})},0)):setExpandedFieldKey(fieldId)}}),[expandedFieldKey]),useEffect(()=>{fields.forEach(field=>{let id=getFieldId(field);seenFieldIdsRef.current.has(id)||(seenFieldIdsRef.current.add(id),pendingScrollFieldIdRef.current=id,setExpandedFieldKey(id))})},[fields]),useEffect(()=>{if(firstInvalidFieldIndex==null||!submitAttemptCount)return;let field=fields[firstInvalidFieldIndex];if(!field)return;let fieldId=getFieldId(field);setExpandedFieldKey(fieldId),requestAnimationFrame(()=>{(fieldListRef.current?.querySelector(`[data-field-id="${fieldId}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`})})},[submitAttemptCount]),useEffect(()=>{let fieldId=pendingScrollFieldIdRef.current;if(!fieldId||fieldId!==expandedFieldKey)return;pendingScrollFieldIdRef.current=null;let timer=setTimeout(()=>{(fieldListRef.current?.querySelector(`[data-field-id="${fieldId}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`})},ACCORDION_ANIMATION_MS);return()=>clearTimeout(timer)},[expandedFieldKey]);let[activeFieldId,setActiveFieldId]=useState(null),sensors=useSensors(useSensor(PointerSensor,{activationConstraint:{distance:8}}),useSensor(TouchSensor,{activationConstraint:{delay:250,tolerance:5}}),useSensor(FieldListKeyboardSensor,{coordinateGetter:sortableKeyboardCoordinates})),handleDragStart=useCallback(event=>{setActiveFieldId(String(event.active.id))},[]),handleDragEnd=useCallback(event=>{setActiveFieldId(null);let{active,over}=event;if(over&&active.id!==over.id){let oldIndex=fields.findIndex(f=>getFieldId(f)===active.id),newIndex=fields.findIndex(f=>getFieldId(f)===over.id);oldIndex!==-1&&newIndex!==-1&&!isUnsupportedField(fields[oldIndex])&&onChangeFields?.(arrayMove(fields,oldIndex,newIndex))}},[fields,onChangeFields]),handleDragCancel=useCallback(()=>{setActiveFieldId(null)},[]),handleFieldChange=useCallback((index,field)=>{onChangeFields?.(fields.map((f,i)=>i===index?field:f))},[fields,onChangeFields]),handleDeleteAtIndex=useCallback(index=>{let fieldToDelete=fields[index],fieldId=getFieldId(fieldToDelete);setExpandedFieldKey(prev=>prev===fieldId?null:prev),onChangeFields?.(fields.filter((_,i)=>i!==index)),onDeleteFieldAtIndex?.(index,fieldToDelete)},[fields,onChangeFields,onDeleteFieldAtIndex]),handleDuplicateAtIndex=useCallback(index=>{let fieldToDuplicate=fields[index];if(isUnsupportedField(fieldToDuplicate))return;let duplicated=cloneDeep(fieldToDuplicate);duplicated.id=uniqueId(`field-`),duplicated.key=``,duplicated.isFieldNew=!0,duplicated.type===FieldType.Dropdown&&(duplicated.dropdown.options=duplicated.dropdown.options.map(opt=>({...opt,id:uniqueId()})));let newFields=[...fields];newFields.splice(index+1,0,duplicated),onChangeFields?.(newFields),onDuplicateField?.(duplicated)},[fields,onChangeFields,onDuplicateField]),handleReorderFields=useCallback((fromIndex,toIndex)=>{toIndex<0||toIndex>=fields.length||isUnsupportedField(fields[fromIndex])||onChangeFields?.(arrayMove(fields,fromIndex,toIndex))},[fields,onChangeFields]),handleAccordionValueChange=useCallback(value=>{let newKey=value||null;setExpandedFieldKey(newKey),newKey&&setTimeout(()=>{(fieldListRef.current?.querySelector(`[data-field-id="${newKey}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`})},ACCORDION_ANIMATION_MS)},[]),items=fields.map(f=>getFieldId(f)),activeField=activeFieldId?fields.find(f=>getFieldId(f)===activeFieldId):null,OverlayTitleIcon=activeField?FieldTypeIcon(activeField.type):null,overlayTitle=activeField?(field=>{let name=field.name||formatMessage(general.fieldNameInputPlaceholder);return field.type===FieldType.Dropdown?`${name} (${field.dropdown?.options?.length??0})`:name})(activeField):``,editorConfigValue=useMemo(()=>({disabledFieldTypes:disabledFieldTypes??parentEditorConfig.disabledFieldTypes,taxonomyInitialStateLabels:taxonomyInitialStateLabels??parentEditorConfig.taxonomyInitialStateLabels}),[disabledFieldTypes,taxonomyInitialStateLabels,parentEditorConfig]),listItems=readOnly?jsx(`ul`,{ref:fieldListRef,className:metadata_field_list_module_default.fieldList,children:fields.map((field,index)=>{let fieldId=getFieldId(field);return jsx(`li`,{"data-field-id":fieldId,className:metadata_field_list_module_default.fieldItem,children:jsx(MetadataFieldConfigurator,{values:field,onValuesChange:()=>void 0,index,maxIndex:fields.length-1,onDuplicate:()=>void 0,onReorderFields:()=>void 0,onDragStart:()=>void 0,onDragEnd:()=>void 0,onTouchStart:()=>void 0,isExpanded:expandedFieldKey===fieldId,onExpandedChange:expanded=>{expanded&&setExpandedFieldKey(fieldId)},fetchTaxonomyByKey,readOnly:!0})},fieldId)})}):jsx(SortableContext,{items,strategy:verticalListSortingStrategy,children:jsx(`ul`,{ref:fieldListRef,className:metadata_field_list_module_default.fieldList,children:fields.map((field,index)=>{let fieldId=getFieldId(field);return jsx(SortableFieldItem,{field,index,maxIndex:fields.length-1,isExpanded:expandedFieldKey===fieldId,onChangeField:updatedField=>handleFieldChange(index,updatedField),onDeleteAtIndex:handleDeleteAtIndex,onDuplicateAtIndex:handleDuplicateAtIndex,onReorderFields:handleReorderFields,onRequestExpand:()=>setExpandedFieldKey(fieldId),submitAttemptCount,fetchTaxonomyByKey},fieldId)})})}),accordionContainer=jsx(`div`,{className:metadata_field_list_module_default.accordionRootContainer,children:jsx(Accordion,{type:`single`,collapsible:!0,value:expandedFieldKey??``,onValueChange:handleAccordionValueChange,children:listItems})}),coreContent=readOnly?accordionContainer:jsxs(DndContext,{sensors,collisionDetection:closestCenter,onDragStart:handleDragStart,onDragEnd:handleDragEnd,onDragCancel:handleDragCancel,children:[accordionContainer,jsx(DragOverlay,{dropAnimation:null,children:activeField&&OverlayTitleIcon?jsx(Accordion,{type:`single`,children:jsx(Accordion.Item,{value:`ghost`,title:overlayTitle,startElement:jsx(OverlayTitleIcon,{fontSize:`20px`,role:`presentation`}),children:null})}):null})]}),hasUnsupportedFields=useMemo(()=>fields.some(field=>isUnsupportedField(field)),[fields]),listContent=jsx(EditorConfigContext.Provider,{value:editorConfigValue,children:jsxs(TaxonomyOptionsContext.Provider,{value:taxonomyContextValue,children:[hasUnsupportedFields&&jsx(InlineNotice,{variant:`warning`,variantIconAriaLabel:formatMessage(general.unsupportedFieldsBanner),children:formatMessage(general.unsupportedFieldsBanner)}),coreContent]})});return fieldExtensions===void 0?listContent:jsx(FieldExtensionsContext.Provider,{value:fieldExtensions,children:listContent})});export{MetadataFieldList as t};
@@ -1 +1 @@
1
- import{t as FieldSelector}from"./field-selector.js";import{t as FieldTypeDropdown}from"./field-type-dropdown.js";import{FieldTypeTiles}from"../esm/lib/components/field-type-tiles/field-type-tiles.js";import{createDefaultFieldValues}from"../esm/lib/components/metadata-field-configurator/utils.js";import{FieldExtensionsContext}from"../esm/lib/components/metadata-field-configurator/context/field-extensions-context.js";import{t as MetadataFieldList}from"./metadata-field-list.js";import messages_default from"../esm/lib/messages.js";import{Button,EmptyState,Link,Text,TextInput}from"@box/blueprint-web";import{FormattedMessage,useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{useEffect,useMemo,useRef}from"react";import clsx from"clsx";import{NoTemplates}from"@box/blueprint-web-assets/illustrations/Medium";import{Form,useFormikContext}from"formik";import '../styles/metadata-template-editor-form.css';var metadata_template_editor_form_module_default={form:`_form_1r59b_1`,fields:`_fields_1r59b_10`,emptyFields:`_emptyFields_1r59b_16`,actions:`_actions_1r59b_21`,fieldsHeader:`_fieldsHeader_1r59b_28`},FIELD_NAME_VARIANT=`bodyDefaultBold`,FIELD_NAME_VARIANT_AS_ELEMENT=`h2`,BOX_METADATA_FIELDS_GUIDE_URL=`https://developer.box.com/guides/metadata/fields/`,MetadataTemplateEditorForm=({formId,onCancel,taxonomyOptions,fetchTaxonomies,hideActions,isEditMode,readOnly=!1,onDirtyStateChange,onValidationChange,fieldExtensions})=>{let intl=useIntl(),{errors,values,setFieldValue,setFieldTouched,isSubmitting,isValid,handleChange,submitCount,dirty,touched}=useFormikContext(),fieldListRef=useRef(null),hasUserFocusedDisplayNameRef=useRef(!1),markDisplayNameUserFocused=()=>{hasUserFocusedDisplayNameRef.current=!0},handleDisplayNameBlur=()=>{hasUserFocusedDisplayNameRef.current&&setFieldTouched(`displayName`,!0)},firstInvalidFieldIndex=useMemo(()=>{if(!Array.isArray(errors.fields))return null;let idx=errors.fields.findIndex(Boolean);return idx>=0?idx:null},[errors.fields]),handleFieldAdd=fieldType=>{let newField=createDefaultFieldValues(fieldType.type);setFieldValue(`fields`,[...values.fields,newField])},handleFieldsChange=fields=>{setFieldValue(`fields`,fields)};useEffect(()=>{onDirtyStateChange?.(dirty)},[dirty,onDirtyStateChange]),useEffect(()=>{onValidationChange?.(isValid)},[isValid,onValidationChange]);let isSaveDisabled=isSubmitting||isEditMode&&!dirty,fieldsContent;fieldsContent=readOnly&&values.fields.length===0?jsx(EmptyState,{size:`large`,illustration:NoTemplates,body:jsx(Text,{as:`p`,children:intl.formatMessage(messages_default.noFields)})}):readOnly?jsx(MetadataFieldList,{ref:fieldListRef,fields:values.fields,taxonomyOptions,fetchTaxonomies,readOnly:!0}):values.fields.length===0?jsxs(Fragment,{children:[jsx(FieldTypeTiles,{onFieldAdd:handleFieldAdd}),jsx(Link,{href:BOX_METADATA_FIELDS_GUIDE_URL,isExternal:!0,target:`_blank`,children:jsx(FormattedMessage,{...messages_default.fieldsLearnMore})})]}):jsxs(Fragment,{children:[jsx(MetadataFieldList,{ref:fieldListRef,fields:values.fields,taxonomyOptions,fetchTaxonomies,onChangeFields:handleFieldsChange,firstInvalidFieldIndex,submitAttemptCount:submitCount}),jsx(FieldTypeDropdown,{onFieldAdd:handleFieldAdd})]});let formElement=jsxs(Form,{noValidate:!0,id:formId,className:metadata_template_editor_form_module_default.form,children:[jsx(`div`,{children:jsx(TextInput,{name:`displayName`,label:intl.formatMessage(messages_default.templateName),placeholder:intl.formatMessage(messages_default.templateNameDescription),value:values.displayName,error:!readOnly&&touched.displayName&&errors.displayName?errors.displayName:void 0,onChange:e=>{handleChange(e)},onPointerDown:markDisplayNameUserFocused,onKeyDown:markDisplayNameUserFocused,onBlur:handleDisplayNameBlur,readOnly})}),jsxs(`div`,{className:metadata_template_editor_form_module_default.fieldsHeader,children:[jsx(Text,{as:FIELD_NAME_VARIANT_AS_ELEMENT,variant:FIELD_NAME_VARIANT,children:jsx(FormattedMessage,{...!readOnly&&values.fields.length===0?messages_default.fieldsAddFirst:messages_default.fields})}),values.fields.length>0&&jsx(FieldSelector,{fields:values.fields,onSelect:fieldId=>fieldListRef.current?.scrollToAndExpand(fieldId)})]}),jsx(`div`,{className:clsx(metadata_template_editor_form_module_default.fields,{[metadata_template_editor_form_module_default.emptyFields]:values.fields.length===0&&readOnly}),children:fieldsContent}),!hideActions&&jsx(`div`,{className:metadata_template_editor_form_module_default.actions,children:readOnly?onCancel&&jsx(Button,{variant:`primary`,type:`button`,onClick:onCancel,children:intl.formatMessage(messages_default.close)}):jsxs(Fragment,{children:[onCancel&&jsx(Button,{variant:`secondary`,type:`button`,onClick:onCancel,loading:isSubmitting,disabled:isSubmitting,loadingAriaLabel:intl.formatMessage(messages_default.submitting),children:intl.formatMessage(messages_default.cancel)}),jsx(Button,{variant:`primary`,type:`submit`,disabled:isSaveDisabled,children:intl.formatMessage(messages_default.save)})]})})]});return fieldExtensions===void 0?formElement:jsx(FieldExtensionsContext.Provider,{value:fieldExtensions,children:formElement})};export{MetadataTemplateEditorForm as t};
1
+ import{t as FieldSelector}from"./field-selector.js";import{t as FieldTypeDropdown}from"./field-type-dropdown.js";import{FieldTypeTiles}from"../esm/lib/components/field-type-tiles/field-type-tiles.js";import{createDefaultFieldValues}from"../esm/lib/components/metadata-field-configurator/utils.js";import{FieldExtensionsContext}from"../esm/lib/components/metadata-field-configurator/context/field-extensions-context.js";import{t as MetadataFieldList}from"./metadata-field-list.js";import messages_default from"../esm/lib/messages.js";import{Button,EmptyState,Link,Switch,Text,TextInput,TooltipProvider}from"@box/blueprint-web";import{FormattedMessage,useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{useEffect,useMemo,useRef}from"react";import clsx from"clsx";import{NoTemplates}from"@box/blueprint-web-assets/illustrations/Medium";import{Form,useFormikContext}from"formik";import '../styles/metadata-template-editor-form.css';var metadata_template_editor_form_module_default={form:`_form_5b5er_1`,templateDetails:`_templateDetails_5b5er_10`,visibilityToggle:`_visibilityToggle_5b5er_16`,fields:`_fields_5b5er_20`,emptyFields:`_emptyFields_5b5er_26`,actions:`_actions_5b5er_31`,fieldsHeader:`_fieldsHeader_5b5er_38`},FIELD_NAME_VARIANT=`bodyDefaultBold`,FIELD_NAME_VARIANT_AS_ELEMENT=`h2`,BOX_METADATA_FIELDS_GUIDE_URL=`https://developer.box.com/guides/metadata/fields/`,MetadataTemplateEditorForm=({formId,onCancel,taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,hideActions,isEditMode,isVisibilityToggleAllowed=!1,readOnly=!1,onDirtyStateChange,onValidationChange,fieldExtensions})=>{let intl=useIntl(),{errors,values,setFieldValue,setFieldTouched,isSubmitting,isValid,handleChange,submitCount,dirty,touched}=useFormikContext(),fieldListRef=useRef(null),hasUserFocusedDisplayNameRef=useRef(!1),markDisplayNameUserFocused=()=>{hasUserFocusedDisplayNameRef.current=!0},handleDisplayNameBlur=()=>{hasUserFocusedDisplayNameRef.current&&setFieldTouched(`displayName`,!0)},firstInvalidFieldIndex=useMemo(()=>{if(!Array.isArray(errors.fields))return null;let idx=errors.fields.findIndex(Boolean);return idx>=0?idx:null},[errors.fields]),handleFieldAdd=fieldType=>{let newField=createDefaultFieldValues(fieldType.type);setFieldValue(`fields`,[...values.fields,newField])},handleFieldsChange=fields=>{setFieldValue(`fields`,fields)};useEffect(()=>{onDirtyStateChange?.(dirty)},[dirty,onDirtyStateChange]),useEffect(()=>{onValidationChange?.(isValid)},[isValid,onValidationChange]);let isSaveDisabled=isSubmitting||isEditMode&&!dirty,fieldsContent;fieldsContent=readOnly&&values.fields.length===0?jsx(EmptyState,{size:`large`,illustration:NoTemplates,body:jsx(Text,{as:`p`,children:intl.formatMessage(messages_default.noFields)})}):readOnly?jsx(MetadataFieldList,{ref:fieldListRef,fields:values.fields,taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,readOnly:!0}):values.fields.length===0?jsxs(Fragment,{children:[jsx(FieldTypeTiles,{onFieldAdd:handleFieldAdd}),jsx(Link,{href:BOX_METADATA_FIELDS_GUIDE_URL,isExternal:!0,target:`_blank`,children:jsx(FormattedMessage,{...messages_default.fieldsLearnMore})})]}):jsxs(Fragment,{children:[jsx(MetadataFieldList,{ref:fieldListRef,fields:values.fields,taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,onChangeFields:handleFieldsChange,firstInvalidFieldIndex,submitAttemptCount:submitCount}),jsx(FieldTypeDropdown,{onFieldAdd:handleFieldAdd})]});let formElement=jsxs(Form,{noValidate:!0,id:formId,className:metadata_template_editor_form_module_default.form,children:[jsxs(`div`,{className:metadata_template_editor_form_module_default.templateDetails,children:[jsx(TextInput,{name:`displayName`,label:intl.formatMessage(messages_default.templateName),placeholder:intl.formatMessage(messages_default.templateNameDescription),value:values.displayName,error:!readOnly&&touched.displayName&&errors.displayName?errors.displayName:void 0,onChange:e=>{handleChange(e)},onPointerDown:markDisplayNameUserFocused,onKeyDown:markDisplayNameUserFocused,onBlur:handleDisplayNameBlur,readOnly}),isVisibilityToggleAllowed&&jsx(TooltipProvider,{children:jsx(Switch.Item,{checked:values.hidden,className:metadata_template_editor_form_module_default.visibilityToggle,disabled:readOnly,label:intl.formatMessage(messages_default.hideTemplate),labelInfoBadgeAriaLabel:intl.formatMessage(messages_default.hideTemplateInfoAriaLabel),labelInfoText:intl.formatMessage(messages_default.hideTemplateInfo),name:`hidden`,onCheckedChange:hidden=>setFieldValue(`hidden`,hidden),value:`true`})})]}),jsxs(`div`,{className:metadata_template_editor_form_module_default.fieldsHeader,children:[jsx(Text,{as:FIELD_NAME_VARIANT_AS_ELEMENT,variant:FIELD_NAME_VARIANT,children:jsx(FormattedMessage,{...!readOnly&&values.fields.length===0?messages_default.fieldsAddFirst:messages_default.fields})}),values.fields.length>0&&jsx(FieldSelector,{fields:values.fields,onSelect:fieldId=>fieldListRef.current?.scrollToAndExpand(fieldId)})]}),jsx(`div`,{className:clsx(metadata_template_editor_form_module_default.fields,{[metadata_template_editor_form_module_default.emptyFields]:values.fields.length===0&&readOnly}),children:fieldsContent}),!hideActions&&jsx(`div`,{className:metadata_template_editor_form_module_default.actions,children:readOnly?onCancel&&jsx(Button,{variant:`primary`,type:`button`,onClick:onCancel,children:intl.formatMessage(messages_default.close)}):jsxs(Fragment,{children:[onCancel&&jsx(Button,{variant:`secondary`,type:`button`,onClick:onCancel,loading:isSubmitting,disabled:isSubmitting,loadingAriaLabel:intl.formatMessage(messages_default.submitting),children:intl.formatMessage(messages_default.cancel)}),jsx(Button,{variant:`primary`,type:`submit`,disabled:isSaveDisabled,children:intl.formatMessage(messages_default.save)})]})})]});return fieldExtensions===void 0?formElement:jsx(FieldExtensionsContext.Provider,{value:fieldExtensions,children:formElement})};export{MetadataTemplateEditorForm as t};
@@ -1 +1 @@
1
- import{s as MetadataTemplateEditorMode}from"./types.js";import{EditorConfigContext}from"../esm/lib/components/metadata-field-configurator/context/editor-config-context.js";import"../esm/lib/utils/constants.js";import ConfirmationModal from"../esm/lib/components/metadata-field-configurator/components/confirmation-modal/confirmation-modal.js";import messages_default from"../esm/lib/messages.js";import{t as MetadataTemplateEditorForm}from"./metadata-template-editor-form.js";import{useMetadataTemplateFormSchema}from"../esm/lib/hooks/useMetadataTemplateFormSchema.js";import{convertApiMetadataTemplateFieldToLocalConfiguratorField}from"../esm/lib/utils/template-type-conversion/convertTemplateFieldToLocalConfigurator.js";import{generateJSONPatchTemplateOperations}from"../esm/lib/utils/template-type-conversion/generateJSONPatchTemplateOperations.js";import{mapFieldsWithUniqueKeys}from"../esm/lib/utils/template-type-conversion/mapFieldsWithUniqueKeys.js";import{EmptyState,LoadingIndicator,Text,useNotification}from"@box/blueprint-web";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{forwardRef,useCallback,useEffect,useImperativeHandle,useMemo,useState}from"react";import{ArrowsRotating}from"@box/blueprint-web-assets/icons/Line";import{ErrorState404}from"@box/blueprint-web-assets/illustrations/Medium";import{Formik}from"formik";import '../styles/metadata-template-editor.css';var metadata_template_editor_module_default={loading:`_loading_fd3t9_1`,error:`_error_fd3t9_8`},DEFAULT_VALUES={displayName:``,templateKey:``,fields:[],hidden:!1},MetadataTemplateEditor=forwardRef(function({onCancel,onDirtyStateChange,onValidationChange,onSubmitError,onTemplateLoad,taxonomyOptions,fetchTaxonomies,disabledFieldTypes,taxonomyInitialStateLabels,formId,hideActions=!1,fieldExtensions,...modeProps},ref){let schema=useMetadataTemplateFormSchema(),{formatMessage}=useIntl(),{addNotification}=useNotification(),isEditMode=modeProps.mode===MetadataTemplateEditorMode.Edit,isReadOnlyMode=modeProps.mode===MetadataTemplateEditorMode.ReadOnly,[isDirty,setIsDirty]=useState(!1),[isUnsavedChangesModalOpen,setIsUnsavedChangesModalOpen]=useState(!1),handleCancel=useCallback(()=>{isDirty?setIsUnsavedChangesModalOpen(!0):onCancel?.()},[isDirty,onCancel]);useImperativeHandle(ref,()=>({requestClose:handleCancel}),[handleCancel]);let handleDirtyStateChange=useCallback(dirty=>{setIsDirty(dirty),onDirtyStateChange?.(dirty)},[onDirtyStateChange]),[isLoading,setIsLoading]=useState(isEditMode||isReadOnlyMode),[hasFetchError,setHasFetchError]=useState(!1),[retryCount,setRetryCount]=useState(0),[fetchedValues,setFetchedValues]=useState(void 0),fetchTemplate=isEditMode||isReadOnlyMode?modeProps.fetchTemplate:void 0,handleRetry=()=>{setRetryCount(c=>c+1)};useEffect(()=>{if(!fetchTemplate)return;let cancelled=!1;return setIsLoading(!0),setHasFetchError(!1),setFetchedValues(void 0),(async()=>{try{let response=await fetchTemplate();cancelled||setFetchedValues(response)}catch{cancelled||setHasFetchError(!0)}finally{cancelled||setIsLoading(!1)}})(),()=>{cancelled=!0}},[fetchTemplate,retryCount]),useEffect(()=>{fetchedValues!==void 0&&onTemplateLoad?.(fetchedValues)},[fetchedValues,onTemplateLoad]);let createNamespace=isEditMode||isReadOnlyMode?void 0:modeProps.namespace,mergedInitialValues=useMemo(()=>fetchedValues?{displayName:fetchedValues.displayName,templateKey:fetchedValues.templateKey,namespace:fetchedValues.namespace,hidden:fetchedValues.hidden,fields:fetchedValues.fields.map(field=>convertApiMetadataTemplateFieldToLocalConfiguratorField(field))}:{...DEFAULT_VALUES,namespace:createNamespace??``},[fetchedValues,createNamespace]),editorConfigValue=useMemo(()=>({disabledFieldTypes,taxonomyInitialStateLabels}),[disabledFieldTypes,taxonomyInitialStateLabels]);return isLoading?jsx(`div`,{className:metadata_template_editor_module_default.loading,children:jsx(LoadingIndicator,{size:`large`,"aria-label":formatMessage(messages_default.loading)})}):hasFetchError?jsx(`div`,{className:metadata_template_editor_module_default.error,children:jsx(EmptyState,{body:jsx(Text,{as:`p`,children:formatMessage(messages_default.fetchError)}),illustration:ErrorState404,size:`large`,children:jsx(EmptyState.PrimaryAction,{startIcon:ArrowsRotating,onClick:handleRetry,children:formatMessage(messages_default.reload)})})}):jsxs(EditorConfigContext.Provider,{value:editorConfigValue,children:[jsx(Formik,{initialValues:mergedInitialValues,validationSchema:isReadOnlyMode?void 0:schema,onSubmit:async values=>{if(!isReadOnlyMode)try{if(isEditMode){let patchItems=generateJSONPatchTemplateOperations(mergedInitialValues,values);await modeProps.onEditTemplate(patchItems,{namespaceFQN:mergedInitialValues.namespace,templateKey:mergedInitialValues.templateKey})}else{let convertedFields=mapFieldsWithUniqueKeys(values.fields),createBody={namespace:values.namespace,templateKey:values.templateKey,displayName:values.displayName,hidden:values.hidden,fields:convertedFields};await modeProps.onCreateTemplate(createBody)}addNotification({sensitivity:`foreground`,variant:`success`,styledText:formatMessage(messages_default.saveSuccessNotification),typeIconAriaLabel:formatMessage(messages_default.notificationSuccessIconAriaLabel),closeButtonAriaLabel:formatMessage(messages_default.notificationCloseButtonAriaLabel)})}catch(error){let errorMessage;if(error instanceof Error&&`status`in error){let{status}=error;errorMessage=formatMessage(status===409?messages_default.displayNameUsedBefore:messages_default.saveErrorNotification)}else errorMessage=formatMessage(messages_default.saveErrorNotification);addNotification({sensitivity:`foreground`,variant:`error`,styledText:errorMessage,typeIconAriaLabel:formatMessage(messages_default.notificationErrorIconAriaLabel),closeButtonAriaLabel:formatMessage(messages_default.notificationCloseButtonAriaLabel)});try{onSubmitError?.(error)}catch{}throw error}},children:jsx(MetadataTemplateEditorForm,{formId,onCancel:handleCancel,taxonomyOptions,fetchTaxonomies,hideActions,isEditMode,readOnly:isReadOnlyMode,onDirtyStateChange:handleDirtyStateChange,onValidationChange,fieldExtensions})}),isUnsavedChangesModalOpen&&jsx(ConfirmationModal,{onClose:()=>setIsUnsavedChangesModalOpen(!1),onConfirm:()=>{setIsUnsavedChangesModalOpen(!1),onCancel?.()},title:formatMessage(messages_default.unsavedChangesTitle),body:formatMessage(messages_default.unsavedChangesBody),confirmLabel:formatMessage(messages_default.unsavedChangesDiscard),cancelLabel:formatMessage(messages_default.unsavedChangesKeepEditing)})]})});export{MetadataTemplateEditor as t};
1
+ import{s as MetadataTemplateEditorMode}from"./types.js";import{EditorConfigContext}from"../esm/lib/components/metadata-field-configurator/context/editor-config-context.js";import"../esm/lib/utils/constants.js";import ConfirmationModal from"../esm/lib/components/metadata-field-configurator/components/confirmation-modal/confirmation-modal.js";import messages_default from"../esm/lib/messages.js";import{t as MetadataTemplateEditorForm}from"./metadata-template-editor-form.js";import{useMetadataTemplateFormSchema}from"../esm/lib/hooks/useMetadataTemplateFormSchema.js";import{convertApiMetadataTemplateFieldToLocalConfiguratorField}from"../esm/lib/utils/template-type-conversion/convertTemplateFieldToLocalConfigurator.js";import{generateJSONPatchTemplateOperations}from"../esm/lib/utils/template-type-conversion/generateJSONPatchTemplateOperations.js";import{mapFieldsWithUniqueKeys}from"../esm/lib/utils/template-type-conversion/mapFieldsWithUniqueKeys.js";import{EmptyState,LoadingIndicator,Text,useNotification}from"@box/blueprint-web";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import{forwardRef,useCallback,useEffect,useImperativeHandle,useMemo,useState}from"react";import{ArrowsRotating}from"@box/blueprint-web-assets/icons/Line";import{ErrorState404}from"@box/blueprint-web-assets/illustrations/Medium";import{Formik}from"formik";import '../styles/metadata-template-editor.css';var metadata_template_editor_module_default={loading:`_loading_fd3t9_1`,error:`_error_fd3t9_8`},DEFAULT_VALUES={displayName:``,templateKey:``,fields:[],hidden:!1},MetadataTemplateEditor=forwardRef(function({onCancel,onDirtyStateChange,onValidationChange,onSubmitError,onTemplateLoad,taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,disabledFieldTypes,taxonomyInitialStateLabels,formId,hideActions=!1,isVisibilityToggleAllowed=!1,fieldExtensions,...modeProps},ref){let schema=useMetadataTemplateFormSchema(),{formatMessage}=useIntl(),{addNotification}=useNotification(),isEditMode=modeProps.mode===MetadataTemplateEditorMode.Edit,isReadOnlyMode=modeProps.mode===MetadataTemplateEditorMode.ReadOnly,[isDirty,setIsDirty]=useState(!1),[isUnsavedChangesModalOpen,setIsUnsavedChangesModalOpen]=useState(!1),handleCancel=useCallback(()=>{isDirty?setIsUnsavedChangesModalOpen(!0):onCancel?.()},[isDirty,onCancel]);useImperativeHandle(ref,()=>({requestClose:handleCancel}),[handleCancel]);let handleDirtyStateChange=useCallback(dirty=>{setIsDirty(dirty),onDirtyStateChange?.(dirty)},[onDirtyStateChange]),[isLoading,setIsLoading]=useState(isEditMode||isReadOnlyMode),[hasFetchError,setHasFetchError]=useState(!1),[retryCount,setRetryCount]=useState(0),[fetchedValues,setFetchedValues]=useState(void 0),fetchTemplate=isEditMode||isReadOnlyMode?modeProps.fetchTemplate:void 0,handleRetry=()=>{setRetryCount(c=>c+1)};useEffect(()=>{if(!fetchTemplate)return;let cancelled=!1;return setIsLoading(!0),setHasFetchError(!1),setFetchedValues(void 0),(async()=>{try{let response=await fetchTemplate();cancelled||setFetchedValues(response)}catch{cancelled||setHasFetchError(!0)}finally{cancelled||setIsLoading(!1)}})(),()=>{cancelled=!0}},[fetchTemplate,retryCount]),useEffect(()=>{fetchedValues!==void 0&&onTemplateLoad?.(fetchedValues)},[fetchedValues,onTemplateLoad]);let createNamespace=isEditMode||isReadOnlyMode?void 0:modeProps.namespace,mergedInitialValues=useMemo(()=>fetchedValues?{displayName:fetchedValues.displayName,templateKey:fetchedValues.templateKey,namespace:fetchedValues.namespace,hidden:fetchedValues.hidden,fields:fetchedValues.fields.map(field=>convertApiMetadataTemplateFieldToLocalConfiguratorField(field))}:{...DEFAULT_VALUES,namespace:createNamespace??``},[fetchedValues,createNamespace]),editorConfigValue=useMemo(()=>({disabledFieldTypes,taxonomyInitialStateLabels}),[disabledFieldTypes,taxonomyInitialStateLabels]);return isLoading?jsx(`div`,{className:metadata_template_editor_module_default.loading,children:jsx(LoadingIndicator,{size:`large`,"aria-label":formatMessage(messages_default.loading)})}):hasFetchError?jsx(`div`,{className:metadata_template_editor_module_default.error,children:jsx(EmptyState,{body:jsx(Text,{as:`p`,children:formatMessage(messages_default.fetchError)}),illustration:ErrorState404,size:`large`,children:jsx(EmptyState.PrimaryAction,{startIcon:ArrowsRotating,onClick:handleRetry,children:formatMessage(messages_default.reload)})})}):jsxs(EditorConfigContext.Provider,{value:editorConfigValue,children:[jsx(Formik,{initialValues:mergedInitialValues,validationSchema:isReadOnlyMode?void 0:schema,onSubmit:async values=>{if(!isReadOnlyMode)try{if(isEditMode){let patchItems=generateJSONPatchTemplateOperations(mergedInitialValues,values);await modeProps.onEditTemplate(patchItems,{namespaceFQN:mergedInitialValues.namespace,templateKey:mergedInitialValues.templateKey})}else{let convertedFields=mapFieldsWithUniqueKeys(values.fields),createBody={namespace:values.namespace,templateKey:values.templateKey,displayName:values.displayName,hidden:values.hidden,fields:convertedFields};await modeProps.onCreateTemplate(createBody)}addNotification({sensitivity:`foreground`,variant:`success`,styledText:formatMessage(messages_default.saveSuccessNotification),typeIconAriaLabel:formatMessage(messages_default.notificationSuccessIconAriaLabel),closeButtonAriaLabel:formatMessage(messages_default.notificationCloseButtonAriaLabel)})}catch(error){let errorMessage;if(error instanceof Error&&`status`in error){let{status}=error;errorMessage=formatMessage(status===409?messages_default.displayNameUsedBefore:messages_default.saveErrorNotification)}else errorMessage=formatMessage(messages_default.saveErrorNotification);addNotification({sensitivity:`foreground`,variant:`error`,styledText:errorMessage,typeIconAriaLabel:formatMessage(messages_default.notificationErrorIconAriaLabel),closeButtonAriaLabel:formatMessage(messages_default.notificationCloseButtonAriaLabel)});try{onSubmitError?.(error)}catch{}throw error}},children:jsx(MetadataTemplateEditorForm,{formId,onCancel:handleCancel,taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,hideActions,isEditMode,isVisibilityToggleAllowed,readOnly:isReadOnlyMode,onDirtyStateChange:handleDirtyStateChange,onValidationChange,fieldExtensions})}),isUnsavedChangesModalOpen&&jsx(ConfirmationModal,{onClose:()=>setIsUnsavedChangesModalOpen(!1),onConfirm:()=>{setIsUnsavedChangesModalOpen(!1),onCancel?.()},title:formatMessage(messages_default.unsavedChangesTitle),body:formatMessage(messages_default.unsavedChangesBody),confirmLabel:formatMessage(messages_default.unsavedChangesDiscard),cancelLabel:formatMessage(messages_default.unsavedChangesKeepEditing)})]})});export{MetadataTemplateEditor as t};
@@ -1 +1 @@
1
- import{l as TaxonomySelection}from"./types.js";import{useFieldConfigurator}from"../esm/lib/components/metadata-field-configurator/context/field-configurator-context.js";import{useTaxonomyOptions}from"../esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import taxonomy_messages_default from"../esm/lib/components/metadata-field-configurator/messages/taxonomy-messages.js";import{t as LevelsChain}from"./levels-chain.js";import{t as TaxonomyFieldConfiguratorInitialState}from"./taxonomy-field-configurator-initial-state.js";import{useTaxonomySelect}from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/useTaxonomySelect.js";import{filterTaxonomiesByValue}from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/utils.js";import{t as TaxonomySelector}from"./taxonomy-selector.js";import{DropdownMenu,InlineNotice,Radio,Switch,TextButton}from"@box/blueprint-web";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{Caret}from"@box/blueprint-web-assets/icons/Fill";import{useEffect,useMemo}from"react";import '../styles/taxonomy-field-configuration.css';var taxonomy_field_configuration_module_default={taxonomyFieldConfiguration:`_taxonomyFieldConfiguration_1smhd_1`},TaxonomyFieldConfiguration=()=>{let{formatMessage}=useIntl(),{values,errors,touched,setFieldValue}=useFieldConfigurator(),{onTaxonomySelect}=useTaxonomySelect({values,setFieldValue}),{options:taxonomyOptionsFromContext}=useTaxonomyOptions(),selectedTaxonomy=values.taxonomy.availableTaxonomies.find(taxonomy=>taxonomy.selected),{selectedLevels}=values.taxonomy,selectableLevels=useMemo(()=>selectedTaxonomy?selectedTaxonomy.levels:[],[selectedTaxonomy]),selectedLevelName=values.taxonomy.selection===TaxonomySelection.RequireSpecific&&selectedLevels.length>0?selectableLevels[selectedLevels[0]-1]?.name:void 0;useEffect(()=>{taxonomyOptionsFromContext.length>0&&setFieldValue(`taxonomy`,{...values.taxonomy,availableTaxonomies:taxonomyOptionsFromContext.map(taxonomy=>({...taxonomy,selected:taxonomy.taxonomyKey===values.taxonomy.taxonomyKey})),selectedLevels:values.taxonomy.selectedLevels,selection:values.taxonomy.selectedLevels.length>1?TaxonomySelection.AllowAny:TaxonomySelection.RequireSpecific})},[taxonomyOptionsFromContext]);let handleSelectionChange=value=>{let newSelectedLevels=value===TaxonomySelection.AllowAny?selectableLevels.map(l=>l.level):[selectableLevels[0].level];setFieldValue(`taxonomy`,{...values.taxonomy,selection:value,selectedLevels:newSelectedLevels})},taxonomySelectorLabel=selectedTaxonomy?.label??formatMessage(taxonomy_messages_default.chooseTaxonomyLevel),hasTaxonomyError=!!errors.taxonomy?.taxonomyKey&&!!touched.taxonomy?.taxonomyKey;if(!selectedTaxonomy&&values.isFieldNew)return jsxs(Fragment,{children:[hasTaxonomyError&&jsx(InlineNotice,{variant:`error`,variantIconAriaLabel:formatMessage(taxonomy_messages_default.noTaxonomySelectedError),children:formatMessage(taxonomy_messages_default.noTaxonomySelectedError)}),jsx(TaxonomyFieldConfiguratorInitialState,{})]});let isDisabled=values.isFieldReadOnly||!values.isFieldNew;return jsxs(`div`,{className:taxonomy_field_configuration_module_default.taxonomyFieldConfiguration,children:[jsx(Switch.Item,{name:`allowMultipleSelections`,disabled:isDisabled,checked:values.taxonomy.allowMultipleSelections,label:formatMessage(taxonomy_messages_default.allowMultipleTaxonomySelections),onCheckedChange:checked=>{setFieldValue(`taxonomy`,{...values.taxonomy,allowMultipleSelections:checked})},value:values.taxonomy.allowMultipleSelections.toString()}),jsx(`div`,{children:jsx(TaxonomySelector,{triggerButton:jsx(TextButton,{disabled:isDisabled,icon:Caret,children:taxonomySelectorLabel}),data:filterTaxonomiesByValue(values.taxonomy.availableTaxonomies,values.taxonomy.taxonomySearchValue),onClick:onTaxonomySelect,onSearchValue:value=>{setFieldValue(`taxonomy`,{...values.taxonomy,taxonomySearchValue:value})}})}),selectableLevels.length>0&&jsx(LevelsChain,{levels:selectableLevels,selectedLevels}),selectedTaxonomy&&selectableLevels.length>1&&jsx(Radio.Legend,{header:formatMessage(taxonomy_messages_default.selection),children:jsxs(Radio.Group,{disabled:isDisabled,defaultValue:TaxonomySelection.RequireSpecific,loop:!0,name:`selection`,onValueChange:handleSelectionChange,orientation:`vertical`,value:values.taxonomy.selection,children:[jsx(Radio.Item,{label:jsxs(Fragment,{children:[formatMessage(taxonomy_messages_default.requiredSelection),jsxs(DropdownMenu.Root,{modal:!1,children:[jsx(DropdownMenu.Trigger,{disabled:values.taxonomy.selection!==TaxonomySelection.RequireSpecific||isDisabled,children:jsx(TextButton,{icon:Caret,children:selectedLevelName??formatMessage(taxonomy_messages_default.chooseTaxonomyLevel)})}),jsx(DropdownMenu.Content,{align:`start`,children:selectedTaxonomy?.levels?.map(entry=>jsx(DropdownMenu.Item,{onClick:()=>{setFieldValue(`taxonomy`,{...values.taxonomy,selectedLevels:[entry.level]})},children:entry.name},entry.level))})]})]}),value:TaxonomySelection.RequireSpecific}),jsx(Radio.Item,{disabled:isDisabled,label:formatMessage(taxonomy_messages_default.anyLevelSelection),value:TaxonomySelection.AllowAny})]})})]})};export{TaxonomyFieldConfiguration as t};
1
+ import{l as TaxonomySelection}from"./types.js";import{useFieldConfigurator}from"../esm/lib/components/metadata-field-configurator/context/field-configurator-context.js";import{findTaxonomyOption,hasHydratedLevels}from"../esm/lib/utils/taxonomy-identity.js";import{useTaxonomyOptions}from"../esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import taxonomy_messages_default from"../esm/lib/components/metadata-field-configurator/messages/taxonomy-messages.js";import{t as LevelsChain}from"./levels-chain.js";import{useTaxonomySelect}from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/useTaxonomySelect.js";import{filterTaxonomiesByValue,mapTaxonomiesWithSelection}from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/utils.js";import{t as TaxonomySelector}from"./taxonomy-selector.js";import{t as TaxonomyFieldConfiguratorInitialState}from"./taxonomy-field-configurator-initial-state.js";import{Button,DropdownMenu,InlineNotice,LoadingIndicator,Radio,Switch,TextButton}from"@box/blueprint-web";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{Caret}from"@box/blueprint-web-assets/icons/Fill";import{useEffect,useMemo}from"react";import '../styles/taxonomy-field-configuration.css';var taxonomy_field_configuration_module_default={taxonomyFieldConfiguration:`_taxonomyFieldConfiguration_l14xl_1`,statusContainer:`_statusContainer_l14xl_8`,loadingIndicator:`_loadingIndicator_l14xl_15`},TaxonomyLoadingStatus=()=>{let{formatMessage}=useIntl();return jsx(`div`,{className:taxonomy_field_configuration_module_default.statusContainer,children:jsx(LoadingIndicator,{"aria-label":formatMessage(taxonomy_messages_default.loadingTaxonomy),className:taxonomy_field_configuration_module_default.loadingIndicator})})},TaxonomyLoadErrorStatus=({onRetry})=>{let{formatMessage}=useIntl();return jsxs(`div`,{className:taxonomy_field_configuration_module_default.statusContainer,children:[jsx(InlineNotice,{variant:`error`,variantIconAriaLabel:formatMessage(taxonomy_messages_default.loadTaxonomyError),children:formatMessage(taxonomy_messages_default.loadTaxonomyError)}),onRetry&&jsx(Button,{variant:`secondary`,size:`small`,onClick:onRetry,children:formatMessage(taxonomy_messages_default.retryLoadTaxonomy)})]})},TaxonomyFieldConfiguration=()=>{let{formatMessage}=useIntl(),{values,errors,touched,setFieldValue,isExpanded}=useFieldConfigurator(),{onTaxonomySelect}=useTaxonomySelect({values,setFieldValue}),{options:taxonomyOptionsFromContext,resolveTaxonomy,getResolveStatus}=useTaxonomyOptions(),selectedTaxonomy=values.taxonomy.availableTaxonomies.find(taxonomy=>taxonomy.selected)??findTaxonomyOption(taxonomyOptionsFromContext,values.taxonomy),{selectedLevels}=values.taxonomy,resolveStatus=getResolveStatus(values.taxonomy.namespace,values.taxonomy.taxonomyKey),selectableLevels=useMemo(()=>selectedTaxonomy?selectedTaxonomy.levels:[],[selectedTaxonomy]),selectedLevelName=values.taxonomy.selection===TaxonomySelection.RequireSpecific&&selectedLevels.length>0?selectableLevels[selectedLevels[0]-1]?.name:void 0;useEffect(()=>{!isExpanded||values.isFieldNew||!values.taxonomy.taxonomyKey||resolveTaxonomy&&(resolveStatus===`error`||resolveStatus===`loading`||resolveStatus===`success`||resolveTaxonomy(values.taxonomy.namespace,values.taxonomy.taxonomyKey))},[isExpanded,resolveStatus,resolveTaxonomy,values.isFieldNew,values.taxonomy.namespace,values.taxonomy.taxonomyKey]);let handleSelectionChange=value=>{let newSelectedLevels=value===TaxonomySelection.AllowAny?selectableLevels.map(l=>l.level):[selectableLevels[0].level];setFieldValue(`taxonomy`,{...values.taxonomy,selection:value,selectedLevels:newSelectedLevels})},taxonomySelectorLabel=selectedTaxonomy?.label??formatMessage(taxonomy_messages_default.chooseTaxonomyLevel),hasTaxonomyError=!!errors.taxonomy?.taxonomyKey&&!!touched.taxonomy?.taxonomyKey,needsResolve=!!values.taxonomy.taxonomyKey&&!values.isFieldNew&&resolveStatus!==`success`&&!hasHydratedLevels(selectedTaxonomy),isResolveLoading=needsResolve&&isExpanded&&(resolveStatus===`idle`||resolveStatus===`loading`),isResolveError=needsResolve&&isExpanded&&resolveStatus===`error`,pickerTaxonomies=taxonomyOptionsFromContext.length>0?mapTaxonomiesWithSelection(taxonomyOptionsFromContext,values.taxonomy):values.taxonomy.availableTaxonomies;if(!selectedTaxonomy&&values.isFieldNew)return jsxs(Fragment,{children:[hasTaxonomyError&&jsx(InlineNotice,{variant:`error`,variantIconAriaLabel:formatMessage(taxonomy_messages_default.noTaxonomySelectedError),children:formatMessage(taxonomy_messages_default.noTaxonomySelectedError)}),jsx(TaxonomyFieldConfiguratorInitialState,{})]});let isDisabled=values.isFieldReadOnly||!values.isFieldNew;return jsxs(`div`,{className:taxonomy_field_configuration_module_default.taxonomyFieldConfiguration,children:[jsx(Switch.Item,{name:`allowMultipleSelections`,disabled:isDisabled,checked:values.taxonomy.allowMultipleSelections,label:formatMessage(taxonomy_messages_default.allowMultipleTaxonomySelections),onCheckedChange:checked=>{setFieldValue(`taxonomy`,{...values.taxonomy,allowMultipleSelections:checked})},value:values.taxonomy.allowMultipleSelections.toString()}),isResolveLoading?jsx(TaxonomyLoadingStatus,{}):isResolveError?jsx(TaxonomyLoadErrorStatus,{onRetry:resolveTaxonomy?()=>resolveTaxonomy(values.taxonomy.namespace,values.taxonomy.taxonomyKey):void 0}):jsxs(Fragment,{children:[jsx(`div`,{children:jsx(TaxonomySelector,{triggerButton:jsx(TextButton,{disabled:isDisabled,icon:Caret,children:taxonomySelectorLabel}),data:filterTaxonomiesByValue(pickerTaxonomies,values.taxonomy.taxonomySearchValue),onClick:onTaxonomySelect,onSearchValue:value=>{setFieldValue(`taxonomy`,{...values.taxonomy,taxonomySearchValue:value})}})}),selectableLevels.length>0&&jsx(LevelsChain,{levels:selectableLevels,selectedLevels}),selectedTaxonomy&&selectableLevels.length>1&&jsx(Radio.Legend,{header:formatMessage(taxonomy_messages_default.selection),children:jsxs(Radio.Group,{disabled:isDisabled,defaultValue:TaxonomySelection.RequireSpecific,loop:!0,name:`selection`,onValueChange:handleSelectionChange,orientation:`vertical`,value:values.taxonomy.selection,children:[jsx(Radio.Item,{label:jsxs(Fragment,{children:[formatMessage(taxonomy_messages_default.requiredSelection),jsxs(DropdownMenu.Root,{modal:!1,children:[jsx(DropdownMenu.Trigger,{disabled:values.taxonomy.selection!==TaxonomySelection.RequireSpecific||isDisabled,children:jsx(TextButton,{icon:Caret,children:selectedLevelName??formatMessage(taxonomy_messages_default.chooseTaxonomyLevel)})}),jsx(DropdownMenu.Content,{align:`start`,children:selectedTaxonomy?.levels?.map(entry=>jsx(DropdownMenu.Item,{onClick:()=>{setFieldValue(`taxonomy`,{...values.taxonomy,selectedLevels:[entry.level]})},children:entry.name},entry.level))})]})]}),value:TaxonomySelection.RequireSpecific}),jsx(Radio.Item,{disabled:isDisabled,label:formatMessage(taxonomy_messages_default.anyLevelSelection),value:TaxonomySelection.AllowAny})]})})]})]})};export{TaxonomyFieldConfiguration as t};
@@ -1 +1 @@
1
- import{useEditorConfig}from"../esm/lib/components/metadata-field-configurator/context/editor-config-context.js";import{useFieldConfigurator}from"../esm/lib/components/metadata-field-configurator/context/field-configurator-context.js";import taxonomy_messages_default from"../esm/lib/components/metadata-field-configurator/messages/taxonomy-messages.js";import{useTaxonomySelect}from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/useTaxonomySelect.js";import{filterTaxonomiesByValue}from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/utils.js";import{t as TaxonomySelector}from"./taxonomy-selector.js";import{Text}from"@box/blueprint-web";import{FormattedMessage}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import"react";import '../styles/taxonomy-field-configurator-initial-state.css';var taxonomy_field_configurator_initial_state_module_default={taxonomyFieldConfiguratorInitialState:`_taxonomyFieldConfiguratorInitialState_il5v7_1`,subheader:`_subheader_il5v7_10`},TaxonomyFieldConfiguratorInitialState=()=>{let{values,setFieldValue}=useFieldConfigurator(),{onTaxonomySelect}=useTaxonomySelect({values,setFieldValue}),{taxonomyInitialStateLabels}=useEditorConfig();return jsxs(`div`,{className:taxonomy_field_configurator_initial_state_module_default.taxonomyFieldConfiguratorInitialState,children:[jsx(Text,{as:`h1`,color:`textOnLightDefault`,variant:`titleMedium`,children:taxonomyInitialStateLabels?.header??jsx(FormattedMessage,{...taxonomy_messages_default.callToActionHeader})}),jsx(Text,{as:`p`,className:taxonomy_field_configurator_initial_state_module_default.subheader,color:`textOnLightDefault`,variant:`bodyDefault`,children:taxonomyInitialStateLabels?.subheader??jsx(FormattedMessage,{...taxonomy_messages_default.callToActionSubheader})}),jsx(TaxonomySelector,{data:filterTaxonomiesByValue(values.taxonomy.availableTaxonomies,values.taxonomy.taxonomySearchValue),onClick:onTaxonomySelect,resetValueOnHide:!0,onSearchValue:value=>{setFieldValue(`taxonomy`,{...values.taxonomy,taxonomySearchValue:value})}})]})};export{TaxonomyFieldConfiguratorInitialState as t};
1
+ import{useEditorConfig}from"../esm/lib/components/metadata-field-configurator/context/editor-config-context.js";import{useFieldConfigurator}from"../esm/lib/components/metadata-field-configurator/context/field-configurator-context.js";import{useTaxonomyOptions}from"../esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import taxonomy_messages_default from"../esm/lib/components/metadata-field-configurator/messages/taxonomy-messages.js";import{useTaxonomySelect}from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/useTaxonomySelect.js";import{filterTaxonomiesByValue,mapTaxonomiesWithSelection}from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/utils.js";import{t as TaxonomySelector}from"./taxonomy-selector.js";import{Text}from"@box/blueprint-web";import{FormattedMessage}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import"react";import '../styles/taxonomy-field-configurator-initial-state.css';var taxonomy_field_configurator_initial_state_module_default={taxonomyFieldConfiguratorInitialState:`_taxonomyFieldConfiguratorInitialState_il5v7_1`,subheader:`_subheader_il5v7_10`},TaxonomyFieldConfiguratorInitialState=()=>{let{values,setFieldValue}=useFieldConfigurator(),{onTaxonomySelect}=useTaxonomySelect({values,setFieldValue}),{taxonomyInitialStateLabels}=useEditorConfig(),{options:taxonomyOptionsFromContext}=useTaxonomyOptions(),pickerTaxonomies=taxonomyOptionsFromContext.length>0?mapTaxonomiesWithSelection(taxonomyOptionsFromContext,values.taxonomy):values.taxonomy.availableTaxonomies;return jsxs(`div`,{className:taxonomy_field_configurator_initial_state_module_default.taxonomyFieldConfiguratorInitialState,children:[jsx(Text,{as:`h1`,color:`textOnLightDefault`,variant:`titleMedium`,children:taxonomyInitialStateLabels?.header??jsx(FormattedMessage,{...taxonomy_messages_default.callToActionHeader})}),jsx(Text,{as:`p`,className:taxonomy_field_configurator_initial_state_module_default.subheader,color:`textOnLightDefault`,variant:`bodyDefault`,children:taxonomyInitialStateLabels?.subheader??jsx(FormattedMessage,{...taxonomy_messages_default.callToActionSubheader})}),jsx(TaxonomySelector,{data:filterTaxonomiesByValue(pickerTaxonomies,values.taxonomy.taxonomySearchValue),onClick:onTaxonomySelect,resetValueOnHide:!0,onSearchValue:value=>{setFieldValue(`taxonomy`,{...values.taxonomy,taxonomySearchValue:value})}})]})};export{TaxonomyFieldConfiguratorInitialState as t};
@@ -1 +1 @@
1
- import{useTaxonomyOptions}from"../esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import taxonomy_selector_messages_default from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-selector-messages.js";import{Button,LoadingIndicator,Popover,Text,TextInput}from"@box/blueprint-web";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{Plus}from"@box/blueprint-web-assets/icons/Fill";import{useState}from"react";import '../styles/taxonomy-selector.css';var taxonomy_selector_module_default={taxonomySelectorLabel:`_taxonomySelectorLabel_fuxhs_1`,listWrapper:`_listWrapper_fuxhs_6`,listWrapperWithPadding:`_listWrapperWithPadding_fuxhs_11`,taxonomyItem:`_taxonomyItem_fuxhs_16`,statusContainer:`_statusContainer_fuxhs_22`},TaxonomySelector=({data,onClick,onSearchValue,triggerButton,disabled,resetValueOnHide})=>{let{formatMessage}=useIntl(),{status,onSelectorOpen}=useTaxonomyOptions(),[searchValue,setSearchValue]=useState(``),[isOpen,setIsOpen]=useState(!1),handleSearchChange=value=>{setSearchValue(value),onSearchValue(value)},handleOpenChange=open=>{setIsOpen(open),open&&onSelectorOpen(),!open&&resetValueOnHide&&(setSearchValue(``),onSearchValue(``))},handleItemClick=option=>{onClick(option),setIsOpen(!1)},trigger=triggerButton??jsx(Button,{variant:`secondary`,size:`large`,endIcon:Plus,"aria-label":formatMessage(taxonomy_selector_messages_default.taxonomySelectorAriaLabel),children:formatMessage(taxonomy_selector_messages_default.taxonomySelector)});return jsxs(Popover.Root,{modal:!1,open:isOpen,onOpenChange:handleOpenChange,children:[jsx(Popover.Trigger,{disabled,children:trigger}),jsx(Popover.ContentContainer,{align:`start`,"aria-label":formatMessage(taxonomy_selector_messages_default.taxonomySelector),children:status===`loading`?jsx(`div`,{className:taxonomy_selector_module_default.statusContainer,children:jsx(LoadingIndicator,{"aria-label":formatMessage(taxonomy_selector_messages_default.loadingTaxonomies)})}):status===`error`?jsxs(`div`,{className:taxonomy_selector_module_default.statusContainer,children:[jsx(Text,{as:`p`,variant:`bodyDefault`,color:`textOnLightSecondary`,children:formatMessage(taxonomy_selector_messages_default.loadTaxonomiesError)}),jsx(Button,{variant:`secondary`,size:`small`,onClick:onSelectorOpen,children:formatMessage(taxonomy_selector_messages_default.retryLoadTaxonomies)})]}):jsxs(Fragment,{children:[jsx(`div`,{className:`${taxonomy_selector_module_default.listWrapper} ${taxonomy_selector_module_default.listWrapperWithPadding}`,children:jsx(TextInput,{label:formatMessage(taxonomy_selector_messages_default.searchTaxonomiesInputPlaceholder),placeholder:formatMessage(taxonomy_selector_messages_default.searchTaxonomiesInputPlaceholder),value:searchValue,onChange:e=>handleSearchChange(e.target.value),hideLabel:!0,"aria-label":formatMessage(taxonomy_selector_messages_default.searchTaxonomiesInputPlaceholder)})}),jsx(Text,{as:`span`,variant:`caption`,color:`textOnLightSecondary`,className:taxonomy_selector_module_default.taxonomySelectorLabel,children:formatMessage(taxonomy_selector_messages_default.allTaxonomies)}),jsx(`div`,{className:taxonomy_selector_module_default.listWrapper,children:data.map(element=>jsx(Button,{type:`button`,variant:`quaternary`,size:`large`,disabled:element?.levels?.length===0,onClick:()=>handleItemClick(element),className:taxonomy_selector_module_default.taxonomyItem,children:element.label},element.id))})]})})]})};export{TaxonomySelector as t};
1
+ import{taxonomyCacheKey}from"../esm/lib/utils/taxonomy-identity.js";import{useTaxonomyOptions}from"../esm/lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import taxonomy_selector_messages_default from"../esm/lib/components/metadata-field-configurator/components/type-specific-configuration/taxonomy/taxonomy-selector-messages.js";import{Button,LoadingIndicator,Popover,Text,TextInput}from"@box/blueprint-web";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import{Plus}from"@box/blueprint-web-assets/icons/Fill";import{useState}from"react";import '../styles/taxonomy-selector.css';var taxonomy_selector_module_default={taxonomySelectorLabel:`_taxonomySelectorLabel_m3x8t_1`,listWrapper:`_listWrapper_m3x8t_6`,listWrapperWithPadding:`_listWrapperWithPadding_m3x8t_11`,taxonomyItem:`_taxonomyItem_m3x8t_16`,statusContainer:`_statusContainer_m3x8t_22`},TaxonomySelector=({data,onClick,onSearchValue,triggerButton,disabled,resetValueOnHide})=>{let{formatMessage}=useIntl(),{status,onSelectorOpen}=useTaxonomyOptions(),[searchValue,setSearchValue]=useState(``),[isOpen,setIsOpen]=useState(!1),handleSearchChange=value=>{setSearchValue(value),onSearchValue(value)},handleOpenChange=open=>{setIsOpen(open),open&&onSelectorOpen(),!open&&resetValueOnHide&&(setSearchValue(``),onSearchValue(``))},handleItemClick=option=>{onClick(option),setIsOpen(!1)},trigger=triggerButton??jsx(Button,{variant:`secondary`,size:`large`,endIcon:Plus,"aria-label":formatMessage(taxonomy_selector_messages_default.taxonomySelectorAriaLabel),children:formatMessage(taxonomy_selector_messages_default.taxonomySelector)});return jsxs(Popover.Root,{modal:!1,open:isOpen,onOpenChange:handleOpenChange,children:[jsx(Popover.Trigger,{disabled,children:trigger}),jsx(Popover.ContentContainer,{align:`start`,"aria-label":formatMessage(taxonomy_selector_messages_default.taxonomySelector),children:status===`loading`?jsx(`div`,{className:taxonomy_selector_module_default.statusContainer,children:jsx(LoadingIndicator,{"aria-label":formatMessage(taxonomy_selector_messages_default.loadingTaxonomies)})}):status===`error`?jsxs(`div`,{className:taxonomy_selector_module_default.statusContainer,children:[jsx(Text,{as:`p`,variant:`bodyDefault`,color:`textOnLightSecondary`,children:formatMessage(taxonomy_selector_messages_default.loadTaxonomiesError)}),jsx(Button,{variant:`secondary`,size:`small`,onClick:onSelectorOpen,children:formatMessage(taxonomy_selector_messages_default.retryLoadTaxonomies)})]}):jsxs(Fragment,{children:[jsx(`div`,{className:`${taxonomy_selector_module_default.listWrapper} ${taxonomy_selector_module_default.listWrapperWithPadding}`,children:jsx(TextInput,{label:formatMessage(taxonomy_selector_messages_default.searchTaxonomiesInputPlaceholder),placeholder:formatMessage(taxonomy_selector_messages_default.searchTaxonomiesInputPlaceholder),value:searchValue,onChange:e=>handleSearchChange(e.target.value),hideLabel:!0,"aria-label":formatMessage(taxonomy_selector_messages_default.searchTaxonomiesInputPlaceholder)})}),jsx(Text,{as:`span`,variant:`caption`,color:`textOnLightSecondary`,className:taxonomy_selector_module_default.taxonomySelectorLabel,children:formatMessage(taxonomy_selector_messages_default.allTaxonomies)}),jsx(`div`,{className:taxonomy_selector_module_default.listWrapper,children:data.map(element=>jsx(Button,{type:`button`,variant:`quaternary`,size:`large`,disabled:element?.levels?.length===0,onClick:()=>handleItemClick(element),className:taxonomy_selector_module_default.taxonomyItem,children:element.label},taxonomyCacheKey(element.namespace,element.taxonomyKey)))})]})})]})};export{TaxonomySelector as t};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{t as FieldSelector}from"../chunks/field-selector.js";import{a as FieldOperations,c as MultiSelectOperations,d as isUnsupportedField,i as EnumOperations,l as TaxonomySelection,n as ApiMetadataTemplateFieldType,o as FieldType,r as CREATABLE_FIELD_TYPES,s as MetadataTemplateEditorMode,t as AllOps,u as TemplateOperations}from"../chunks/types.js";import{EditorConfigContext,useEditorConfig}from"./lib/components/metadata-field-configurator/context/editor-config-context.js";import{t as FieldTypeDropdown}from"../chunks/field-type-dropdown.js";import{FieldTypeTiles}from"./lib/components/field-type-tiles/field-type-tiles.js";import{useTemplateFieldSchema}from"./lib/components/metadata-field-configurator/hooks/useTemplateFieldSchema.js";import ConfirmationModal from"./lib/components/metadata-field-configurator/components/confirmation-modal/confirmation-modal.js";import{FieldActionSlot}from"./lib/components/metadata-field-configurator/components/field-action-slot/field-action-slot.js";import{FieldConfiguratorContext,useFieldConfigurator}from"./lib/components/metadata-field-configurator/context/field-configurator-context.js";import{TaxonomyOptionsContext,createStaticTaxonomyContext,useTaxonomyOptions}from"./lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import{t as TaxonomyFieldConfiguration}from"../chunks/taxonomy-field-configuration.js";import{t as TaxonomySelector}from"../chunks/taxonomy-selector.js";import{createDefaultFieldValues}from"./lib/components/metadata-field-configurator/utils.js";import{FieldEditContent}from"./lib/components/metadata-field-configurator/components/field-edit-content/field-edit-content.js";import{FieldExtensionsContext,useFieldExtensions}from"./lib/components/metadata-field-configurator/context/field-extensions-context.js";import{useFieldConfiguratorBehavior}from"./lib/components/metadata-field-configurator/hooks/useFieldConfiguratorBehavior.js";import{MetadataFieldConfigurator}from"./lib/components/metadata-field-configurator/metadata-field-configurator.js";import{t as MetadataFieldList}from"../chunks/metadata-field-list.js";import{t as MetadataTemplateEditor}from"../chunks/metadata-template-editor.js";import{t as MetadataTemplateEditorModal}from"../chunks/metadata-template-editor-modal.js";import"./lib/components/metadata-template-editor-modal/index.js";export{AllOps,ApiMetadataTemplateFieldType,CREATABLE_FIELD_TYPES,ConfirmationModal,EditorConfigContext,EnumOperations,FieldActionSlot,FieldConfiguratorContext,FieldEditContent,FieldExtensionsContext,FieldOperations,FieldSelector,FieldType,FieldTypeDropdown,FieldTypeTiles,MetadataFieldConfigurator,MetadataFieldList,MetadataFieldList as MetadataFieldListDefault,MetadataTemplateEditor,MetadataTemplateEditorModal,MetadataTemplateEditorMode,MultiSelectOperations,TaxonomyFieldConfiguration,TaxonomyOptionsContext,TaxonomySelection,TaxonomySelector,TemplateOperations,createDefaultFieldValues,createStaticTaxonomyContext,isUnsupportedField,useEditorConfig,useFieldConfigurator,useFieldConfiguratorBehavior,useFieldExtensions,useTaxonomyOptions,useTemplateFieldSchema};
1
+ import{t as FieldSelector}from"../chunks/field-selector.js";import{a as FieldOperations,c as MultiSelectOperations,d as isUnsupportedField,i as EnumOperations,l as TaxonomySelection,n as ApiMetadataTemplateFieldType,o as FieldType,r as CREATABLE_FIELD_TYPES,s as MetadataTemplateEditorMode,t as AllOps,u as TemplateOperations}from"../chunks/types.js";import{EditorConfigContext,useEditorConfig}from"./lib/components/metadata-field-configurator/context/editor-config-context.js";import{t as FieldTypeDropdown}from"../chunks/field-type-dropdown.js";import{FieldTypeTiles}from"./lib/components/field-type-tiles/field-type-tiles.js";import{useTemplateFieldSchema}from"./lib/components/metadata-field-configurator/hooks/useTemplateFieldSchema.js";import ConfirmationModal from"./lib/components/metadata-field-configurator/components/confirmation-modal/confirmation-modal.js";import{FieldActionSlot}from"./lib/components/metadata-field-configurator/components/field-action-slot/field-action-slot.js";import{FieldConfiguratorContext,useFieldConfigurator}from"./lib/components/metadata-field-configurator/context/field-configurator-context.js";import{TaxonomyOptionsContext,createStaticTaxonomyContext,useTaxonomyOptions}from"./lib/components/metadata-field-configurator/context/taxonomy-options-context.js";import{t as TaxonomySelector}from"../chunks/taxonomy-selector.js";import{t as TaxonomyFieldConfiguration}from"../chunks/taxonomy-field-configuration.js";import{createDefaultFieldValues}from"./lib/components/metadata-field-configurator/utils.js";import{FieldEditContent}from"./lib/components/metadata-field-configurator/components/field-edit-content/field-edit-content.js";import{FieldExtensionsContext,useFieldExtensions}from"./lib/components/metadata-field-configurator/context/field-extensions-context.js";import{useFieldConfiguratorBehavior}from"./lib/components/metadata-field-configurator/hooks/useFieldConfiguratorBehavior.js";import{MetadataFieldConfigurator}from"./lib/components/metadata-field-configurator/metadata-field-configurator.js";import{t as MetadataFieldList}from"../chunks/metadata-field-list.js";import{t as MetadataTemplateEditor}from"../chunks/metadata-template-editor.js";import{t as MetadataTemplateEditorModal}from"../chunks/metadata-template-editor-modal.js";import"./lib/components/metadata-template-editor-modal/index.js";export{AllOps,ApiMetadataTemplateFieldType,CREATABLE_FIELD_TYPES,ConfirmationModal,EditorConfigContext,EnumOperations,FieldActionSlot,FieldConfiguratorContext,FieldEditContent,FieldExtensionsContext,FieldOperations,FieldSelector,FieldType,FieldTypeDropdown,FieldTypeTiles,MetadataFieldConfigurator,MetadataFieldList,MetadataFieldList as MetadataFieldListDefault,MetadataTemplateEditor,MetadataTemplateEditorModal,MetadataTemplateEditorMode,MultiSelectOperations,TaxonomyFieldConfiguration,TaxonomyOptionsContext,TaxonomySelection,TaxonomySelector,TemplateOperations,createDefaultFieldValues,createStaticTaxonomyContext,isUnsupportedField,useEditorConfig,useFieldConfigurator,useFieldConfiguratorBehavior,useFieldExtensions,useTaxonomyOptions,useTemplateFieldSchema};
@@ -1 +1 @@
1
- import{taxonomyDefaultValues}from"./taxonomy-default-values.js";var useTaxonomySelect=ctx=>({onTaxonomySelect:option=>{let selectedOptionData=ctx.values.taxonomy.availableTaxonomies.find(taxonomy=>taxonomy.id===option.id);ctx.setFieldValue(`taxonomy`,{...taxonomyDefaultValues.taxonomy,availableTaxonomies:ctx.values.taxonomy.availableTaxonomies.map(taxonomy=>({...taxonomy,selected:taxonomy.id===option.id})),selectedLevels:selectedOptionData?.levels[0]?[selectedOptionData.levels[0].level]:[],taxonomyKey:selectedOptionData?.taxonomyKey??``,namespace:selectedOptionData?.namespace??``})}});export{useTaxonomySelect};
1
+ import{isSameTaxonomyIdentity}from"../../../../../utils/taxonomy-identity.js";import{taxonomyDefaultValues}from"./taxonomy-default-values.js";var withSelectedTaxonomy=(taxonomies,selected)=>taxonomies.some(taxonomy=>isSameTaxonomyIdentity(taxonomy,selected))?taxonomies.map(taxonomy=>({...taxonomy,selected:isSameTaxonomyIdentity(taxonomy,selected)})):[{...selected,selected:!0}],useTaxonomySelect=ctx=>({onTaxonomySelect:option=>{let selected=ctx.values.taxonomy.availableTaxonomies.find(taxonomy=>isSameTaxonomyIdentity(taxonomy,option))??option;ctx.setFieldValue(`taxonomy`,{...taxonomyDefaultValues.taxonomy,availableTaxonomies:withSelectedTaxonomy(ctx.values.taxonomy.availableTaxonomies,selected),selectedLevels:selected.levels[0]?[selected.levels[0].level]:[],taxonomyKey:selected.taxonomyKey??``,namespace:selected.namespace??``})}});export{useTaxonomySelect};
@@ -1 +1 @@
1
- var filterTaxonomiesByValue=(taxonomies,value)=>taxonomies.filter(taxonomy=>taxonomy.label.toLowerCase().includes(value.toLowerCase()));export{filterTaxonomiesByValue};
1
+ import{isSameTaxonomyIdentity}from"../../../../../utils/taxonomy-identity.js";var filterTaxonomiesByValue=(taxonomies,value)=>taxonomies.filter(taxonomy=>taxonomy.label.toLowerCase().includes(value.toLowerCase())),mapTaxonomiesWithSelection=(taxonomies,selected)=>taxonomies.map(taxonomy=>({...taxonomy,selected:isSameTaxonomyIdentity(taxonomy,selected)}));export{filterTaxonomiesByValue,mapTaxonomiesWithSelection};
@@ -1 +1 @@
1
- import{jsx}from"react/jsx-runtime";import{createContext,useCallback,useContext,useMemo,useState}from"react";import cloneDeep from"lodash/cloneDeep";import set from"lodash/set";var FieldConfiguratorContext=createContext(null);function useFieldConfigurator(){let ctx=useContext(FieldConfiguratorContext);if(!ctx)throw Error(`useFieldConfigurator must be used within a FieldConfiguratorContext provider`);return ctx}var FieldConfiguratorProvider=({initialValues,initialErrors={},initialTouched={},children})=>{let[values,setValuesState]=useState(initialValues),[errors]=useState(initialErrors),[touched,setTouchedState]=useState(initialTouched),setFieldValue=useCallback((field,value)=>{setValuesState(prev=>({...prev,[field]:value}))},[]),setValues=useCallback(newValues=>setValuesState(newValues),[]),setFieldTouched=useCallback((field,isTouched=!0)=>{setTouchedState(prev=>{let next=cloneDeep(prev);return set(next,field,isTouched),next})},[]),setTouched=useCallback(newTouched=>setTouchedState(newTouched),[]),handleChange=useCallback(e=>{let{name,value}=e.target;setValuesState(prev=>{let next=cloneDeep(prev);return set(next,name,value),next})},[]),handleBlur=useCallback(e=>{let target=e.target;target.name&&setTouchedState(prev=>{let next=cloneDeep(prev);return set(next,target.name,!0),next})},[]),contextValue=useMemo(()=>({values,errors,touched,isValid:!0,setFieldValue,setValues,setFieldTouched,setTouched,handleChange,handleBlur,validateForm:async()=>{}}),[values,errors,touched,setFieldValue,setValues,setFieldTouched,setTouched,handleChange,handleBlur]);return jsx(FieldConfiguratorContext.Provider,{value:contextValue,children})};export{FieldConfiguratorContext,FieldConfiguratorProvider,useFieldConfigurator};
1
+ import{jsx}from"react/jsx-runtime";import{createContext,useCallback,useContext,useMemo,useState}from"react";import cloneDeep from"lodash/cloneDeep";import set from"lodash/set";var FieldConfiguratorContext=createContext(null);function useFieldConfigurator(){let ctx=useContext(FieldConfiguratorContext);if(!ctx)throw Error(`useFieldConfigurator must be used within a FieldConfiguratorContext provider`);return ctx}var FieldConfiguratorProvider=({initialValues,initialErrors={},initialTouched={},children})=>{let[values,setValuesState]=useState(initialValues),[errors]=useState(initialErrors),[touched,setTouchedState]=useState(initialTouched),setFieldValue=useCallback((field,value)=>{setValuesState(prev=>({...prev,[field]:value}))},[]),setValues=useCallback(newValues=>setValuesState(newValues),[]),setFieldTouched=useCallback((field,isTouched=!0)=>{setTouchedState(prev=>{let next=cloneDeep(prev);return set(next,field,isTouched),next})},[]),setTouched=useCallback(newTouched=>setTouchedState(newTouched),[]),handleChange=useCallback(e=>{let{name,value}=e.target;setValuesState(prev=>{let next=cloneDeep(prev);return set(next,name,value),next})},[]),handleBlur=useCallback(e=>{let target=e.target;target.name&&setTouchedState(prev=>{let next=cloneDeep(prev);return set(next,target.name,!0),next})},[]),contextValue=useMemo(()=>({values,errors,touched,isValid:!0,setFieldValue,setValues,setFieldTouched,setTouched,handleChange,handleBlur,validateForm:async()=>{},isExpanded:!0}),[values,errors,touched,setFieldValue,setValues,setFieldTouched,setTouched,handleChange,handleBlur]);return jsx(FieldConfiguratorContext.Provider,{value:contextValue,children})};export{FieldConfiguratorContext,FieldConfiguratorProvider,useFieldConfigurator};
@@ -1 +1 @@
1
- import{createContext,useContext}from"react";var TaxonomyOptionsContext=createContext({options:[],status:`success`,onSelectorOpen:()=>{}});function useTaxonomyOptions(){return useContext(TaxonomyOptionsContext)}function createStaticTaxonomyContext(options){return{options,status:`success`,onSelectorOpen:()=>{}}}export{TaxonomyOptionsContext,createStaticTaxonomyContext,useTaxonomyOptions};
1
+ import{findTaxonomyOption,hasHydratedLevels}from"../../../utils/taxonomy-identity.js";import{createContext,useContext}from"react";var DEFAULT_CONTEXT={options:[],status:`success`,onSelectorOpen:()=>{},getResolveStatus:()=>`error`},TaxonomyOptionsContext=createContext(DEFAULT_CONTEXT);function useTaxonomyOptions(){return useContext(TaxonomyOptionsContext)}function useHasTaxonomyOptionsProvider(){return useContext(TaxonomyOptionsContext)!==DEFAULT_CONTEXT}function createStaticTaxonomyContext(options){return{options,status:`success`,onSelectorOpen:()=>{},getResolveStatus:(namespace,taxonomyKey)=>hasHydratedLevels(findTaxonomyOption(options,{namespace,taxonomyKey}))?`success`:`error`}}export{TaxonomyOptionsContext,createStaticTaxonomyContext,useHasTaxonomyOptionsProvider,useTaxonomyOptions};
@@ -1 +1 @@
1
- import{FieldTypeIcon}from"../../../utils/field-options/field-type-icon.js";import{general}from"../messages/configurator-messages.js";import{createDefaultFieldValues,hasVisibleErrors}from"../utils.js";import{useFieldExtensions}from"../context/field-extensions-context.js";import{useFieldValidation}from"./useFieldValidation.js";import{useTaxonomyFetch}from"./useTaxonomyFetch.js";import{useIntl}from"react-intl";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import cloneDeep from"lodash/cloneDeep";import set from"lodash/set";var EDIT_TAB_ID=`edit`;function useFieldConfiguratorBehavior({values,onValuesChange,onDelete,isExpanded,onExpandedChange,submitAttemptCount,taxonomyOptions,fetchTaxonomies,fieldExtensionsProp,onValidationChange}){let intl=useIntl(),{errors,touched,isValid,validateForm,touchAll,setFieldTouched,setTouched,handleBlur}=useFieldValidation(values),taxonomyContextValue=useTaxonomyFetch(fetchTaxonomies,taxonomyOptions),contextExtensions=useFieldExtensions(),extensions=fieldExtensionsProp??contextExtensions,[isActiveInternal,setIsActiveInternal]=useState(()=>values.isFieldNew===!0),[isDeleteConfirmationModalOpen,setIsDeleteConfirmationModalOpen]=useState(!1),[activeTabId,setActiveTabId]=useState(EDIT_TAB_ID),isActive=isExpanded===void 0?isActiveInternal:isExpanded,isTypeEditable=!values.isFieldReadOnly&&values.isFieldNew,uniqueKey=values.id,nameInputId=`field-name-${uniqueKey}`,descriptionInputId=`field-description-${uniqueKey}`,fieldSetFieldValue=useCallback((field,value)=>{onValuesChange({...values,[field]:value})},[values,onValuesChange]),fieldHandleChange=useCallback(e=>{let{name,value}=e.target,next=cloneDeep(values);set(next,name,value),onValuesChange(next)},[values,onValuesChange]),contextValue=useMemo(()=>({values,errors,touched,isValid,setFieldValue:fieldSetFieldValue,setValues:onValuesChange,setFieldTouched,setTouched,handleChange:fieldHandleChange,handleBlur,validateForm}),[values,errors,touched,isValid,fieldSetFieldValue,onValuesChange,fieldHandleChange,validateForm]),prevIsActiveRef=useRef(isActive);useEffect(()=>{let wasActive=prevIsActiveRef.current;prevIsActiveRef.current=isActive,wasActive&&!isActive&&(touchAll(),setActiveTabId(`edit`))},[isActive]);let submitAttemptCountOnMountRef=useRef(submitAttemptCount);useEffect(()=>{!submitAttemptCount||submitAttemptCount===submitAttemptCountOnMountRef.current||touchAll()},[submitAttemptCount]);let onValidationChangeRef=useRef(onValidationChange);onValidationChangeRef.current=onValidationChange,useEffect(()=>{onValidationChangeRef.current?.(isValid)},[isValid]),useEffect(()=>{values.isFieldNew&&(isExpanded===void 0?setIsActiveInternal(!0):onExpandedChange?.(!0))},[values.isFieldNew]);let handleChangeVisibility=useCallback(hidden=>fieldSetFieldValue(`hidden`,hidden),[fieldSetFieldValue]),handleDeleteField=useCallback(()=>{onDelete?.(values.key),setIsDeleteConfirmationModalOpen(!1)},[onDelete,values.key]),openConfirmationModal=useCallback(()=>{values.isFieldNew?handleDeleteField():setIsDeleteConfirmationModalOpen(!0)},[handleDeleteField,values.isFieldNew]),closeConfirmationModal=useCallback(()=>setIsDeleteConfirmationModalOpen(!1),[]),handleAccordionValueChange=useCallback(value=>setIsActiveInternal(value===uniqueKey),[uniqueKey]),handleTypeChange=useCallback(fieldType=>{onValuesChange({...createDefaultFieldValues(fieldType),id:values.id,key:values.key,hidden:values.hidden,isFieldNew:values.isFieldNew,isFieldReadOnly:values.isFieldReadOnly,name:values.name,description:values.description})},[onValuesChange,values]),accordionTitle=useMemo(()=>`${values.name||intl.formatMessage(general.fieldNameInputPlaceholder)}${values.type===`dropdown`?` (${values.dropdown?.options?.length??0})`:``}`,[values.name,values.type,values.dropdown?.options?.length,intl]),TitleIcon=useMemo(()=>FieldTypeIcon(values.type),[values.type]),activeTabIndex=activeTabId===`edit`?0:Number(activeTabId.replace(`ext-`,``))+1;return{contextValue,taxonomyContextValue,extensions,isActive,handleAccordionValueChange,isDeleteConfirmationModalOpen,openConfirmationModal,closeConfirmationModal,handleDeleteField,activeTabId,setActiveTabId,activeExtension:activeTabIndex>0?extensions[activeTabIndex-1]??null:null,isTypeEditable,uniqueKey,nameInputId,descriptionInputId,accordionTitle,TitleIcon,hasErrors:hasVisibleErrors(errors,touched),handleTypeChange,handleChangeVisibility}}export{EDIT_TAB_ID,useFieldConfiguratorBehavior};
1
+ import{FieldTypeIcon}from"../../../utils/field-options/field-type-icon.js";import{general}from"../messages/configurator-messages.js";import{createDefaultFieldValues,hasVisibleErrors}from"../utils.js";import{useFieldExtensions}from"../context/field-extensions-context.js";import{useFieldValidation}from"./useFieldValidation.js";import{useIntl}from"react-intl";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import cloneDeep from"lodash/cloneDeep";import set from"lodash/set";var EDIT_TAB_ID=`edit`;function useFieldConfiguratorBehavior({values,onValuesChange,onDelete,isExpanded,onExpandedChange,submitAttemptCount,fieldExtensionsProp,onValidationChange}){let intl=useIntl(),{errors,touched,isValid,validateForm,touchAll,setFieldTouched,setTouched,handleBlur}=useFieldValidation(values),contextExtensions=useFieldExtensions(),extensions=fieldExtensionsProp??contextExtensions,[isActiveInternal,setIsActiveInternal]=useState(()=>values.isFieldNew===!0),[isDeleteConfirmationModalOpen,setIsDeleteConfirmationModalOpen]=useState(!1),[activeTabId,setActiveTabId]=useState(EDIT_TAB_ID),isActive=isExpanded===void 0?isActiveInternal:isExpanded,isTypeEditable=!values.isFieldReadOnly&&values.isFieldNew,uniqueKey=values.id,nameInputId=`field-name-${uniqueKey}`,descriptionInputId=`field-description-${uniqueKey}`,fieldSetFieldValue=useCallback((field,value)=>{onValuesChange({...values,[field]:value})},[values,onValuesChange]),fieldHandleChange=useCallback(e=>{let{name,value}=e.target,next=cloneDeep(values);set(next,name,value),onValuesChange(next)},[values,onValuesChange]),contextValue=useMemo(()=>({values,errors,touched,isValid,setFieldValue:fieldSetFieldValue,setValues:onValuesChange,setFieldTouched,setTouched,handleChange:fieldHandleChange,handleBlur,validateForm,isExpanded:isActive}),[values,errors,touched,isValid,fieldSetFieldValue,onValuesChange,fieldHandleChange,validateForm,isActive]),prevIsActiveRef=useRef(isActive);useEffect(()=>{let wasActive=prevIsActiveRef.current;prevIsActiveRef.current=isActive,wasActive&&!isActive&&(touchAll(),setActiveTabId(`edit`))},[isActive]);let submitAttemptCountOnMountRef=useRef(submitAttemptCount);useEffect(()=>{!submitAttemptCount||submitAttemptCount===submitAttemptCountOnMountRef.current||touchAll()},[submitAttemptCount]);let onValidationChangeRef=useRef(onValidationChange);onValidationChangeRef.current=onValidationChange,useEffect(()=>{onValidationChangeRef.current?.(isValid)},[isValid]),useEffect(()=>{values.isFieldNew&&(isExpanded===void 0?setIsActiveInternal(!0):onExpandedChange?.(!0))},[values.isFieldNew]);let handleChangeVisibility=useCallback(hidden=>fieldSetFieldValue(`hidden`,hidden),[fieldSetFieldValue]),handleDeleteField=useCallback(()=>{onDelete?.(values.key),setIsDeleteConfirmationModalOpen(!1)},[onDelete,values.key]),openConfirmationModal=useCallback(()=>{values.isFieldNew?handleDeleteField():setIsDeleteConfirmationModalOpen(!0)},[handleDeleteField,values.isFieldNew]),closeConfirmationModal=useCallback(()=>setIsDeleteConfirmationModalOpen(!1),[]),handleAccordionValueChange=useCallback(value=>setIsActiveInternal(value===uniqueKey),[uniqueKey]),handleTypeChange=useCallback(fieldType=>{onValuesChange({...createDefaultFieldValues(fieldType),id:values.id,key:values.key,hidden:values.hidden,isFieldNew:values.isFieldNew,isFieldReadOnly:values.isFieldReadOnly,name:values.name,description:values.description})},[onValuesChange,values]),accordionTitle=useMemo(()=>`${values.name||intl.formatMessage(general.fieldNameInputPlaceholder)}${values.type===`dropdown`?` (${values.dropdown?.options?.length??0})`:``}`,[values.name,values.type,values.dropdown?.options?.length,intl]),TitleIcon=useMemo(()=>FieldTypeIcon(values.type),[values.type]),activeTabIndex=activeTabId===`edit`?0:Number(activeTabId.replace(`ext-`,``))+1;return{contextValue,extensions,isActive,handleAccordionValueChange,isDeleteConfirmationModalOpen,openConfirmationModal,closeConfirmationModal,handleDeleteField,activeTabId,setActiveTabId,activeExtension:activeTabIndex>0?extensions[activeTabIndex-1]??null:null,isTypeEditable,uniqueKey,nameInputId,descriptionInputId,accordionTitle,TitleIcon,hasErrors:hasVisibleErrors(errors,touched),handleTypeChange,handleChangeVisibility}}export{EDIT_TAB_ID,useFieldConfiguratorBehavior};
@@ -1 +1 @@
1
- import{createStaticTaxonomyContext}from"../context/taxonomy-options-context.js";import{useCallback,useRef,useState}from"react";function useTaxonomyFetch(fetchTaxonomies,staticOptions=[]){let[status,setStatus]=useState(`idle`),[options,setOptions]=useState([]),isFetchingRef=useRef(!1),runFetch=useCallback(async()=>{if(!(!fetchTaxonomies||isFetchingRef.current)){isFetchingRef.current=!0,setStatus(`loading`);try{setOptions(await fetchTaxonomies()),setStatus(`success`)}catch{setStatus(`error`)}finally{isFetchingRef.current=!1}}},[fetchTaxonomies]),onSelectorOpen=useCallback(()=>{status===`success`||status===`loading`||runFetch()},[runFetch,status]);return fetchTaxonomies?{options,status,onSelectorOpen}:createStaticTaxonomyContext(staticOptions)}export{useTaxonomyFetch};
1
+ import{findTaxonomyOption,hasHydratedLevels,taxonomyCacheKey}from"../../../utils/taxonomy-identity.js";import{useCallback,useEffect,useMemo,useRef,useState}from"react";var noop=()=>{},EMPTY_TAXONOMY_OPTIONS=[],hasConflictingIdentity=(result,namespace,taxonomyKey)=>result.namespace!==void 0&&result.namespace!==namespace||result.taxonomyKey!==void 0&&result.taxonomyKey!==taxonomyKey,mergeTaxonomyOptions=(resolved,catalogue)=>{let byKey=new Map;return catalogue.forEach(option=>{byKey.set(taxonomyCacheKey(option.namespace,option.taxonomyKey),option)}),resolved.forEach(option=>{byKey.set(taxonomyCacheKey(option.namespace,option.taxonomyKey),option)}),Array.from(byKey.values())};function useTaxonomyFetch({fetchTaxonomies,staticOptions=EMPTY_TAXONOMY_OPTIONS,fetchTaxonomyByKey}){let[catalogueStatus,setCatalogueStatus]=useState(`idle`),[catalogueOptions,setCatalogueOptions]=useState(EMPTY_TAXONOMY_OPTIONS),[resolvedByKey,setResolvedByKey]=useState({}),[resolveStatusByKey,setResolveStatusByKey]=useState({}),isFetchingCatalogueRef=useRef(!1),resolvingKeysRef=useRef(new Set),resolvedByKeyRef=useRef(resolvedByKey);resolvedByKeyRef.current=resolvedByKey;let fetchTaxonomyByKeyRef=useRef(fetchTaxonomyByKey);fetchTaxonomyByKeyRef.current=fetchTaxonomyByKey;let isMountedRef=useRef(!0);useEffect(()=>(isMountedRef.current=!0,()=>{isMountedRef.current=!1}),[]);let catalogue=fetchTaxonomies?catalogueOptions:staticOptions,resolvedList=useMemo(()=>Object.values(resolvedByKey),[resolvedByKey]),options=useMemo(()=>mergeTaxonomyOptions(resolvedList,catalogue),[resolvedList,catalogue]),optionsRef=useRef(options);optionsRef.current=options;let fetchCatalogue=useCallback(async()=>{if(!(!fetchTaxonomies||isFetchingCatalogueRef.current)){isFetchingCatalogueRef.current=!0,setCatalogueStatus(`loading`);try{let result=await fetchTaxonomies();if(!isMountedRef.current)return;setCatalogueOptions(result),setCatalogueStatus(`success`)}catch{if(!isMountedRef.current)return;setCatalogueStatus(`error`)}finally{isFetchingCatalogueRef.current=!1}}},[fetchTaxonomies]),onSelectorOpen=useCallback(()=>{catalogueStatus===`success`||catalogueStatus===`loading`||fetchCatalogue()},[fetchCatalogue,catalogueStatus]),resolveTaxonomy=useCallback(async(namespace,taxonomyKey)=>{let fetchByKey=fetchTaxonomyByKeyRef.current;if(!fetchByKey||!taxonomyKey)return;let cacheKey=taxonomyCacheKey(namespace,taxonomyKey),existing=findTaxonomyOption(optionsRef.current,{namespace,taxonomyKey});if(!(resolvedByKeyRef.current[cacheKey]||hasHydratedLevels(existing)||resolvingKeysRef.current.has(cacheKey))){resolvingKeysRef.current.add(cacheKey),setResolveStatusByKey(prev=>({...prev,[cacheKey]:`loading`}));try{let result=await fetchByKey({namespace,taxonomyKey});if(!isMountedRef.current)return;if(hasConflictingIdentity(result,namespace,taxonomyKey)){setResolveStatusByKey(prev=>({...prev,[cacheKey]:`error`}));return}setResolvedByKey(prev=>({...prev,[cacheKey]:{label:result.label,levels:result.levels??[],id:cacheKey,namespace,taxonomyKey,selected:!1}})),setResolveStatusByKey(prev=>({...prev,[cacheKey]:`success`}))}catch{if(!isMountedRef.current)return;setResolveStatusByKey(prev=>({...prev,[cacheKey]:`error`}))}finally{resolvingKeysRef.current.delete(cacheKey)}}},[]),getResolveStatus=useCallback((namespace,taxonomyKey)=>{let cacheKey=taxonomyCacheKey(namespace,taxonomyKey);return resolveStatusByKey[cacheKey]||(resolvedByKey[cacheKey]||hasHydratedLevels(findTaxonomyOption(options,{namespace,taxonomyKey}))?`success`:fetchTaxonomyByKey?`idle`:`error`)},[fetchTaxonomyByKey,options,resolveStatusByKey,resolvedByKey]);return useMemo(()=>({options,status:fetchTaxonomies?catalogueStatus:`success`,onSelectorOpen:fetchTaxonomies?onSelectorOpen:noop,resolveTaxonomy:fetchTaxonomyByKey?resolveTaxonomy:void 0,getResolveStatus}),[options,fetchTaxonomies,fetchTaxonomyByKey,catalogueStatus,onSelectorOpen,resolveTaxonomy,getResolveStatus])}export{useTaxonomyFetch};
@@ -1 +1 @@
1
- import{EditorConfigContext,useEditorConfig}from"./context/editor-config-context.js";import{useTemplateFieldSchema}from"./hooks/useTemplateFieldSchema.js";import ConfirmationModal from"./components/confirmation-modal/confirmation-modal.js";import{FieldActionSlot}from"./components/field-action-slot/field-action-slot.js";import{FieldConfiguratorContext,useFieldConfigurator}from"./context/field-configurator-context.js";import{TaxonomyOptionsContext,createStaticTaxonomyContext,useTaxonomyOptions}from"./context/taxonomy-options-context.js";import{t as TaxonomyFieldConfiguration}from"../../../../chunks/taxonomy-field-configuration.js";import{t as TaxonomySelector}from"../../../../chunks/taxonomy-selector.js";import{createDefaultFieldValues}from"./utils.js";import{FieldEditContent}from"./components/field-edit-content/field-edit-content.js";import{FieldExtensionsContext,useFieldExtensions}from"./context/field-extensions-context.js";import{useFieldConfiguratorBehavior}from"./hooks/useFieldConfiguratorBehavior.js";import{MetadataFieldConfigurator}from"./metadata-field-configurator.js";export{ConfirmationModal,EditorConfigContext,FieldActionSlot,FieldConfiguratorContext,FieldEditContent,FieldExtensionsContext,MetadataFieldConfigurator,TaxonomyFieldConfiguration,TaxonomyOptionsContext,TaxonomySelector,createDefaultFieldValues,createStaticTaxonomyContext,useEditorConfig,useFieldConfigurator,useFieldConfiguratorBehavior,useFieldExtensions,useTaxonomyOptions,useTemplateFieldSchema};
1
+ import{EditorConfigContext,useEditorConfig}from"./context/editor-config-context.js";import{useTemplateFieldSchema}from"./hooks/useTemplateFieldSchema.js";import ConfirmationModal from"./components/confirmation-modal/confirmation-modal.js";import{FieldActionSlot}from"./components/field-action-slot/field-action-slot.js";import{FieldConfiguratorContext,useFieldConfigurator}from"./context/field-configurator-context.js";import{TaxonomyOptionsContext,createStaticTaxonomyContext,useTaxonomyOptions}from"./context/taxonomy-options-context.js";import{t as TaxonomySelector}from"../../../../chunks/taxonomy-selector.js";import{t as TaxonomyFieldConfiguration}from"../../../../chunks/taxonomy-field-configuration.js";import{createDefaultFieldValues}from"./utils.js";import{FieldEditContent}from"./components/field-edit-content/field-edit-content.js";import{FieldExtensionsContext,useFieldExtensions}from"./context/field-extensions-context.js";import{useFieldConfiguratorBehavior}from"./hooks/useFieldConfiguratorBehavior.js";import{MetadataFieldConfigurator}from"./metadata-field-configurator.js";export{ConfirmationModal,EditorConfigContext,FieldActionSlot,FieldConfiguratorContext,FieldEditContent,FieldExtensionsContext,MetadataFieldConfigurator,TaxonomyFieldConfiguration,TaxonomyOptionsContext,TaxonomySelector,createDefaultFieldValues,createStaticTaxonomyContext,useEditorConfig,useFieldConfigurator,useFieldConfiguratorBehavior,useFieldExtensions,useTaxonomyOptions,useTemplateFieldSchema};
@@ -1 +1 @@
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
+ 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`},loadingTaxonomy:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.loadingTaxonomy`,defaultMessage:`Loading taxonomy…`},loadTaxonomyError:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.loadTaxonomyError`,defaultMessage:`Failed to load taxonomy.`},retryLoadTaxonomy:{id:`groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.retryLoadTaxonomy`,defaultMessage:`Retry`}});export{taxonomy_messages_default as default};
@@ -1 +1 @@
1
- import{d as isUnsupportedField}from"../../../../chunks/types.js";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,isUnsupported=isUnsupportedField(values),isDraggable=isExpanded===!1&&!isUnsupported,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:isUnsupported?void 0:onReorderFields,onToggleVisibility:isUnsupported?void 0:handleChangeVisibility,onRequestDelete:openConfirmationModal,onRequestDuplicate:isUnsupported?void 0: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
+ import{d as isUnsupportedField}from"../../../../chunks/types.js";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,useHasTaxonomyOptionsProvider}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{useTaxonomyFetch}from"./hooks/useTaxonomyFetch.js";import{Accordion,Tabs}from"@box/blueprint-web";import{useIntl}from"react-intl";import{Fragment,jsx,jsxs}from"react/jsx-runtime";import"react";var StandaloneTaxonomyProvider=({taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,children})=>{let taxonomyContextValue=useTaxonomyFetch({fetchTaxonomies,staticOptions:taxonomyOptions,fetchTaxonomyByKey});return jsx(TaxonomyOptionsContext.Provider,{value:taxonomyContextValue,children})},MetadataFieldConfigurator=({index,maxIndex,values,onValuesChange,onDelete,onDuplicate,onReorderFields,onTouchStart,onDragStart,onDragEnd,externalErrors,externalTouched,dndDragHandleProps,fieldCollapsedText,isExpanded,onExpandedChange,taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,submitAttemptCount,fieldExtensions:fieldExtensionsProp,onValidationChange,readOnly=!1})=>{let intl=useIntl(),hasParentTaxonomyProvider=useHasTaxonomyOptionsProvider(),{contextValue,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,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,isUnsupported=isUnsupportedField(values),isDraggable=isExpanded===!1&&!isUnsupported,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:isUnsupported?void 0:onReorderFields,onToggleVisibility:isUnsupported?void 0:handleChangeVisibility,onRequestDelete:openConfirmationModal,onRequestDuplicate:isUnsupported?void 0: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=hasParentTaxonomyProvider?content:jsx(StandaloneTaxonomyProvider,{taxonomyOptions,fetchTaxonomies,fetchTaxonomyByKey,children:content});return fieldExtensionsProp===void 0?withTaxonomyContext:jsx(FieldExtensionsContext.Provider,{value:fieldExtensionsProp,children:withTaxonomyContext})};export{MetadataFieldConfigurator};
@@ -1 +1 @@
1
- import{o 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
+ import{o as FieldType}from"../../../../chunks/types.js";import{t as DropdownFieldConfiguration}from"../../../../chunks/dropdown-field-configuration.js";import{taxonomyDefaultValues}from"./components/type-specific-configuration/taxonomy/taxonomy-default-values.js";import{t as TaxonomyFieldConfiguration}from"../../../../chunks/taxonomy-field-configuration.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 +1 @@
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
+ 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`},hideTemplate:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.hideTemplate`,defaultMessage:`Hide Template`},hideTemplateInfo:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.hideTemplate.info`,defaultMessage:`When hidden, the template is still available via the Box API`},hideTemplateInfoAriaLabel:{id:`groupSharedFeatures.metadataTemplateEditor.templateForm.hideTemplate.infoAriaLabel`,defaultMessage:`More information about hiding the template`},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};
@@ -0,0 +1 @@
1
+ var taxonomyCacheKey=(namespace,taxonomyKey)=>`${namespace}:${taxonomyKey}`,isSameTaxonomyIdentity=(taxonomy,identity)=>taxonomy.namespace===identity.namespace&&taxonomy.taxonomyKey===identity.taxonomyKey,findTaxonomyOption=(options,identity)=>options.find(option=>isSameTaxonomyIdentity(option,identity)),hasHydratedLevels=taxonomy=>!!(taxonomy&&taxonomy.levels.length>0);export{findTaxonomyOption,hasHydratedLevels,isSameTaxonomyIdentity,taxonomyCacheKey};
@@ -1 +1 @@
1
- import{l as TaxonomySelection,n as ApiMetadataTemplateFieldType,o as FieldType}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;case FieldType.Unsupported:default:throw Error(`Cannot create field with unsupported type: ${field.originalApiType||type}`)}return{field:result,updatedKeys:[...existingKeys,key]}};export{convertLocalConfiguratorToTemplateField,resolveSelectableLevels};
1
+ import{l as TaxonomySelection,n as ApiMetadataTemplateFieldType,o as FieldType}from"../../../../chunks/types.js";import"../constants.js";import{findTaxonomyOption}from"../taxonomy-identity.js";import{generateKey}from"../key-generation.js";var resolveSelectableLevels=field=>{let{taxonomy}=field,levels=findTaxonomyOption(taxonomy.availableTaxonomies,taxonomy)?.levels.map(level=>level.level)||[];return taxonomy.selection===TaxonomySelection.AllowAny&&levels.length>0?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;case FieldType.Unsupported:default:throw Error(`Cannot create field with unsupported type: ${field.originalApiType||type}`)}return{field:result,updatedKeys:[...existingKeys,key]}};export{convertLocalConfiguratorToTemplateField,resolveSelectableLevels};
@@ -46,6 +46,8 @@ export default {
46
46
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.anyLevelSelection": "তালিকায় যেকোনো লেভেল থেকে ব্যবহারকারীরা বেছে নিতে পারেন",
47
47
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.chooseTaxonomyLevel": "ট্যাক্সোনমি লেভেল বেছে নিন",
48
48
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.requiredSelection": "ব্যবহারকারীদের অবশ্যই নিম্নলিখিত লেভেল থেকে বেছে নিতে হবে:",
49
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldNotice": "এই ফিল্ডের ধরন ({fieldType}) আর সাপোর্ট করে না এবং এটি শুধুমাত্র পড়ার জন্য। শুধুমাত্র এই ফিল্ডটি মুছে ফেলা যাবে।",
50
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldsBanner": "এই টেমপ্লেটে এমন কিছু ফিল্ড টাইপ রয়েছে যা আর সাপোর্ট করা হয় না। সেই ফিল্ডগুলো শুধুমাত্র পড়ার জন্য; শুধুমাত্র এগুলো সরিয়ে ফেলা সম্ভব।",
49
51
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.cancelButtonText": "বাতিল করুন",
50
52
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.closeButtonAriaLabel": "বন্ধ করুন",
51
53
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.confirmButtonText": "নিশ্চিত করুন",
@@ -46,6 +46,8 @@ export default {
46
46
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.anyLevelSelection": "Brugere kan vælge fra ethvert niveau på listen",
47
47
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.chooseTaxonomyLevel": "Vælg taksonominiveau",
48
48
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.requiredSelection": "Brugere skal vælge fra følgende niveau:",
49
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldNotice": "Denne felttype ({fieldType}) understøttes ikke længere og er skrivebeskyttet. Den eneste tilgængelige handling er at fjerne feltet.",
50
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldsBanner": "Denne skabelon indeholder felttyper, der ikke længere understøttes. Disse felter er skrivebeskyttede. Den eneste tilgængelige handling er at fjerne dem.",
49
51
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.cancelButtonText": "Annuller",
50
52
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.closeButtonAriaLabel": "Luk",
51
53
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.confirmButtonText": "Bekræft",
@@ -46,6 +46,8 @@ export default {
46
46
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.anyLevelSelection": "Benutzer können aus jeder Ebene in der Liste auswählen",
47
47
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.chooseTaxonomyLevel": "Taxonomieebene auswählen",
48
48
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.requiredSelection": "Benutzer müssen aus der folgenden Ebene auswählen:",
49
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldNotice": "Dieser Feldtyp ({fieldType}) wird nicht mehr unterstützt und ist schreibgeschützt. Die einzige verfügbare Aktion ist das Entfernen des Feldes.",
50
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldsBanner": "Diese Vorlage enthält Feldtypen, die nicht mehr unterstützt werden. Diese Felder sind schreibgeschützt. Die einzige verfügbare Maßnahme ist, sie zu entfernen.",
49
51
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.cancelButtonText": "Abbrechen",
50
52
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.closeButtonAriaLabel": "Schließen",
51
53
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.confirmButtonText": "Bestätigen",
@@ -1,112 +1,4 @@
1
- // THIS IS A GENERATED FILE. DO NOT EDIT MANUALLY OR YOUR CHANGES WILL BE OVERWRITTEN
2
- export default {
3
- "groupSharedFeatures.metadataTemplateEditor.allTaxonomies": "All taxonomies",
4
- "groupSharedFeatures.metadataTemplateEditor.configurator.cancelDeleteField": "Cancel",
5
- "groupSharedFeatures.metadataTemplateEditor.configurator.confirmDeleteField": "Confirm",
6
- "groupSharedFeatures.metadataTemplateEditor.configurator.contextMenuAriaLabel": "Field configurator context menu",
7
- "groupSharedFeatures.metadataTemplateEditor.configurator.deleteField": "Remove",
8
- "groupSharedFeatures.metadataTemplateEditor.configurator.deleteFieldAriaLabel": "Delete field",
9
- "groupSharedFeatures.metadataTemplateEditor.configurator.deleteFieldDescription": "All files or folders associated with this field will now have an unassigned value. This action cannot be undone once the template is saved.",
10
- "groupSharedFeatures.metadataTemplateEditor.configurator.deleteFieldTitle": "Delete \"{fieldName}\" Field",
11
- "groupSharedFeatures.metadataTemplateEditor.configurator.descriptionInfoTooltip": "The description is visible to anyone accessing the template. It also helps Box AI find and autofill Metadata for you.",
12
- "groupSharedFeatures.metadataTemplateEditor.configurator.descriptionLearnMoreBadgeAriaLabel": "Learn more about the description field",
13
- "groupSharedFeatures.metadataTemplateEditor.configurator.dragAndDropFieldAriaLabel": "Drag and drop to reorder field",
14
- "groupSharedFeatures.metadataTemplateEditor.configurator.dropdown.addAnOptionOptionPlaceholder": "Add an option",
15
- "groupSharedFeatures.metadataTemplateEditor.configurator.dropdown.addOption": "+ Add Option",
16
- "groupSharedFeatures.metadataTemplateEditor.configurator.dropdown.allowMultipleSelection": "Allow Multiple Selections",
17
- "groupSharedFeatures.metadataTemplateEditor.configurator.dropdown.deleteDropdownOptionAriaLabel": "Delete option",
18
- "groupSharedFeatures.metadataTemplateEditor.configurator.dropdown.deleteOptionDescription": "All files or folders associated with this will now have an unassigned value. This action cannot be undone once the template is saved.",
19
- "groupSharedFeatures.metadataTemplateEditor.configurator.dropdown.deleteOptionTitle": "Delete \"{optionName}\" Option",
20
- "groupSharedFeatures.metadataTemplateEditor.configurator.dropdown.dragAndDropOptionAriaLabel": "Drag and drop to reorder option",
21
- "groupSharedFeatures.metadataTemplateEditor.configurator.dropdown.optionListValidationError": "Some options in this list contain validation errors.",
22
- "groupSharedFeatures.metadataTemplateEditor.configurator.duplicateField": "Duplicate",
23
- "groupSharedFeatures.metadataTemplateEditor.configurator.duplicateFieldAriaLabel": "Duplicate field",
24
- "groupSharedFeatures.metadataTemplateEditor.configurator.editTabAriaLabel": "Edit field",
25
- "groupSharedFeatures.metadataTemplateEditor.configurator.fieldDescriptionInputPlaceholder": "Add custom help text that appears in a tooltip for users",
26
- "groupSharedFeatures.metadataTemplateEditor.configurator.fieldDescriptionLabel": "Field Description",
27
- "groupSharedFeatures.metadataTemplateEditor.configurator.fieldNameInputPlaceholder": "Add a field name/label",
28
- "groupSharedFeatures.metadataTemplateEditor.configurator.fieldNameLabel": "Field Name",
29
- "groupSharedFeatures.metadataTemplateEditor.configurator.fieldTypeLabel": "Field Type",
30
- "groupSharedFeatures.metadataTemplateEditor.configurator.fieldTypePlaceholder": "Select Type",
31
- "groupSharedFeatures.metadataTemplateEditor.configurator.hiddenStatus": "Hidden",
32
- "groupSharedFeatures.metadataTemplateEditor.configurator.hideField": "Hide Field",
33
- "groupSharedFeatures.metadataTemplateEditor.configurator.levelsChain.chipNotSelected": "not selected",
34
- "groupSharedFeatures.metadataTemplateEditor.configurator.levelsChain.chipSelected": "selected",
35
- "groupSharedFeatures.metadataTemplateEditor.configurator.levelsChain.noLevels": "There are no levels to display.",
36
- "groupSharedFeatures.metadataTemplateEditor.configurator.moveDown": "Move Down",
37
- "groupSharedFeatures.metadataTemplateEditor.configurator.moveDownAriaLabel": "Move field down",
38
- "groupSharedFeatures.metadataTemplateEditor.configurator.moveUp": "Move Up",
39
- "groupSharedFeatures.metadataTemplateEditor.configurator.moveUpAriaLabel": "Move field up",
40
- "groupSharedFeatures.metadataTemplateEditor.configurator.showField": "Make Visible",
41
- "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.allowMultipleTaxonomySelections": "Users can pick multiple values",
42
- "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.callToActionHeader": "Choose or Create a Taxonomy",
43
- "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.callToActionSubheader": "Taxonomies allow you to set dynamic, reusable options for dropdown fields.",
44
- "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.noTaxonomySelectedError": "Please select a taxonomy",
45
- "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection": "What level(s) can users select a value from?",
46
- "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.anyLevelSelection": "Users can pick from any level in the list",
47
- "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.chooseTaxonomyLevel": "Choose the taxonomy level",
48
- "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.requiredSelection": "Users must pick from the following level:",
49
- "groupSharedFeatures.metadataTemplateEditor.confirmationModal.cancelButtonText": "Cancel",
50
- "groupSharedFeatures.metadataTemplateEditor.confirmationModal.closeButtonAriaLabel": "Close",
51
- "groupSharedFeatures.metadataTemplateEditor.confirmationModal.confirmButtonText": "Confirm",
52
- "groupSharedFeatures.metadataTemplateEditor.emptyState.heading": "Add your first field",
53
- "groupSharedFeatures.metadataTemplateEditor.emptyState.selectFieldTypeAriaLabel": "Select the field type.",
54
- "groupSharedFeatures.metadataTemplateEditor.fieldSelector.selectField": "Select a Field",
55
- "groupSharedFeatures.metadataTemplateEditor.fieldSelector.unnamedField": "(Unnamed field)",
56
- "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.date": "Date field with calendar picker",
57
- "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.dropdown": "Supports single and multiple selections",
58
- "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.number": "Supports all numeric values",
59
- "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.taxonomy": "Hierarchical list of selectable options",
60
- "groupSharedFeatures.metadataTemplateEditor.fieldTypeDescriptions.text": "Free text input up to 10,000 characters",
61
- "groupSharedFeatures.metadataTemplateEditor.fieldTypeDropdown.addField": "Add field",
62
- "groupSharedFeatures.metadataTemplateEditor.fieldTypeDropdown.addFieldAriaLabel": "Add field",
63
- "groupSharedFeatures.metadataTemplateEditor.fieldTypes.date": "Date",
64
- "groupSharedFeatures.metadataTemplateEditor.fieldTypes.dropdown": "Dropdown",
65
- "groupSharedFeatures.metadataTemplateEditor.fieldTypes.number": "Number",
66
- "groupSharedFeatures.metadataTemplateEditor.fieldTypes.taxonomy": "Taxonomy",
67
- "groupSharedFeatures.metadataTemplateEditor.fieldTypes.text": "Text",
68
- "groupSharedFeatures.metadataTemplateEditor.fields.validationErrors.duplicateOption": "The option label must be unique.",
69
- "groupSharedFeatures.metadataTemplateEditor.fields.validationErrors.fieldNameCannotBeEmpty": "Field name cannot be empty.",
70
- "groupSharedFeatures.metadataTemplateEditor.fields.validationErrors.fieldNameTooLong": "The field name is too long.",
71
- "groupSharedFeatures.metadataTemplateEditor.fields.validationErrors.optionKeyCannotBeEmpty": "Option cannot be empty.",
72
- "groupSharedFeatures.metadataTemplateEditor.fields.validationErrors.selectedLevelRequired": "Please select a level.",
73
- "groupSharedFeatures.metadataTemplateEditor.loadTaxonomiesError": "Failed to load taxonomies.",
74
- "groupSharedFeatures.metadataTemplateEditor.loadingTaxonomies": "Loading taxonomies…",
75
- "groupSharedFeatures.metadataTemplateEditor.recentlyUsedTaxonomies": "Recents",
76
- "groupSharedFeatures.metadataTemplateEditor.retryLoadTaxonomies": "Retry",
77
- "groupSharedFeatures.metadataTemplateEditor.searchTaxonomiesInputPlaceholder": "Search taxonomies",
78
- "groupSharedFeatures.metadataTemplateEditor.taxonomySelector": "Choose a Taxonomy",
79
- "groupSharedFeatures.metadataTemplateEditor.taxonomySelectorAriaLabel": "Open taxonomy selector",
80
- "groupSharedFeatures.metadataTemplateEditor.templateForm.cancel": "Cancel",
81
- "groupSharedFeatures.metadataTemplateEditor.templateForm.close": "Close",
82
- "groupSharedFeatures.metadataTemplateEditor.templateForm.closeAriaLabel": "Close metadata template editor",
83
- "groupSharedFeatures.metadataTemplateEditor.templateForm.createTitle": "New Metadata Template",
84
- "groupSharedFeatures.metadataTemplateEditor.templateForm.displayNameUsedBefore": "This display name has already been used before. Please choose another one.",
85
- "groupSharedFeatures.metadataTemplateEditor.templateForm.editTitle": "Edit \"{templateName}\" Metadata Template",
86
- "groupSharedFeatures.metadataTemplateEditor.templateForm.fetchError": "Something went wrong. Please reload to try again.",
87
- "groupSharedFeatures.metadataTemplateEditor.templateForm.fieldNameTooLong": "The field name is too long.",
88
- "groupSharedFeatures.metadataTemplateEditor.templateForm.fieldRequired": "This field is required",
89
- "groupSharedFeatures.metadataTemplateEditor.templateForm.fields.description": "Add your first field to the Template:",
90
- "groupSharedFeatures.metadataTemplateEditor.templateForm.fields.label": "Fields",
91
- "groupSharedFeatures.metadataTemplateEditor.templateForm.fields.learnMore": "Learn more about Metadata Field Types",
92
- "groupSharedFeatures.metadataTemplateEditor.templateForm.forbiddenDisplayName": "This display name is forbidden. Please choose another one.",
93
- "groupSharedFeatures.metadataTemplateEditor.templateForm.invalidCharacters": "The field contains illegal characters.",
94
- "groupSharedFeatures.metadataTemplateEditor.templateForm.loading": "Loading template…",
95
- "groupSharedFeatures.metadataTemplateEditor.templateForm.noFields": "This template contains no fields.",
96
- "groupSharedFeatures.metadataTemplateEditor.templateForm.notificationCloseButtonAriaLabel": "Close notification",
97
- "groupSharedFeatures.metadataTemplateEditor.templateForm.notificationErrorIconAriaLabel": "Error",
98
- "groupSharedFeatures.metadataTemplateEditor.templateForm.notificationSuccessIconAriaLabel": "Success",
99
- "groupSharedFeatures.metadataTemplateEditor.templateForm.reload": "Reload",
100
- "groupSharedFeatures.metadataTemplateEditor.templateForm.save": "Save",
101
- "groupSharedFeatures.metadataTemplateEditor.templateForm.saveErrorNotification": "Failed to save template. Please try again.",
102
- "groupSharedFeatures.metadataTemplateEditor.templateForm.saveSuccessNotification": "Template saved successfully.",
103
- "groupSharedFeatures.metadataTemplateEditor.templateForm.submitting": "Submitting...",
104
- "groupSharedFeatures.metadataTemplateEditor.templateForm.templateName.description": "Display name of the template shown to users",
105
- "groupSharedFeatures.metadataTemplateEditor.templateForm.templateName.label": "Template Name",
106
- "groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesBody": "You have unsaved changes. If you leave now, your changes will be lost.",
107
- "groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesDiscard": "Leave Without Saving",
108
- "groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesKeepEditing": "Keep Editing",
109
- "groupSharedFeatures.metadataTemplateEditor.templateForm.unsavedChangesTitle": "Unsaved Changes",
110
- "groupSharedFeatures.metadataTemplateEditor.templateForm.viewTitle": "{templateName}",
111
- "groupSharedFeatures.metadataTemplateEditor.templates.details.fields.thisFieldContainsErrors": "This field contains validation errors."
112
- };
1
+ // THIS FILE IS INTENTIONALLY LEFT BLANK.
2
+ // Messages for the source locale are loaded from message definitions via react-intl fallback.
3
+ // DO NOT ADD ANY MESSAGES HERE!
4
+ export default {};
@@ -46,6 +46,8 @@ export default {
46
46
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.anyLevelSelection": "Los usuarios pueden elegir cualquier nivel de la lista",
47
47
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.chooseTaxonomyLevel": "Elegir el nivel de taxonomía",
48
48
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.requiredSelection": "Los usuarios deben elegir del siguiente nivel:",
49
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldNotice": "Este tipo de campo ({fieldType}) ya no es compatible y es de solo lectura. La única acción disponible es eliminar el campo.",
50
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldsBanner": "Esta plantilla incluye tipos de campos que ya no son compatibles. Esos campos son de solo lectura; la única acción disponible es su eliminación.",
49
51
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.cancelButtonText": "Anular",
50
52
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.closeButtonAriaLabel": "Cerrar",
51
53
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.confirmButtonText": "Confirmar",
@@ -46,6 +46,8 @@ export default {
46
46
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.anyLevelSelection": "Los usuarios pueden elegir cualquier nivel de la lista",
47
47
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.chooseTaxonomyLevel": "Elegir el nivel de taxonomía",
48
48
  "groupSharedFeatures.metadataTemplateEditor.configurator.taxonomy.selection.requiredSelection": "Los usuarios deben elegir del siguiente nivel:",
49
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldNotice": "Este tipo de campo ({fieldType}) ya no es compatible y es de solo lectura. La única acción disponible es eliminar el campo.",
50
+ "groupSharedFeatures.metadataTemplateEditor.configurator.unsupportedFieldsBanner": "Esta plantilla incluye tipos de campos que ya no son compatibles. Esos campos son de solo lectura; la única acción disponible es su eliminación.",
49
51
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.cancelButtonText": "Anular",
50
52
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.closeButtonAriaLabel": "Cerrar",
51
53
  "groupSharedFeatures.metadataTemplateEditor.confirmationModal.confirmButtonText": "Confirmar",