@box/metadata-editor 2.5.10 → 2.5.12

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.
@@ -0,0 +1 @@
1
+ import messages from"../esm/lib/messages.js";import{useMemoizedFieldLabel}from"../esm/lib/components/metadata-editor-fields/hooks/use-memoized-field-label.js";import{hasUserFieldFetchers}from"../esm/lib/components/metadata-editor-fields/components/metadata-user-field/user-field-render-utils.js";import{useUserFieldEmailCommit}from"../esm/lib/components/metadata-editor-fields/components/metadata-user-field/use-user-field-email-commit.js";import{forwardRef,useCallback,useMemo,useRef}from"react";import{useIntl}from"react-intl";import{jsx}from"react/jsx-runtime";import{Field,getIn,useFormikContext}from"formik";import{UserSelectorContainer}from"@box/user-selector";import '../styles/metadata-user-field.css';var metadata_user_field_module_default={fieldset:`_fieldset_194x7_1`},MetadataUserField=forwardRef(({className,description,isAiSuggestionApplied,confidenceScore,disableForm,fieldNamePrefix,label,onValueEdited,updateModePrefix,fetchUsers,fetchAvatarUrls,resolveUsersByEmail,portalElement},forwardedRef)=>{let intl=useIntl(),{setFieldValue,setFieldTouched,values}=useFormikContext(),fieldName=`${updateModePrefix??fieldNamePrefix}.value`,fieldLabel=useMemoizedFieldLabel(label,description,isAiSuggestionApplied,`label`,confidenceScore),selectedUsers=useMemo(()=>{let fieldValue=getIn(values,fieldName);return Array.isArray(fieldValue)?fieldValue:[]},[fieldName,values]),handleSelectedUsersPersist=useCallback(users=>{setFieldValue(fieldName,users),onValueEdited()},[fieldName,onValueEdited,setFieldValue]),containerRef=useRef(null),{emailError,handleBlur,handleInputValueChange,handlePaste,handleSelectedUsersChange,inputValue,handlePopoverRef}=useUserFieldEmailCommit({fetchUsers,invalidEmailMessage:intl.formatMessage(messages.invalidUserFieldEmail),onSelectedUsersChange:handleSelectedUsersPersist,resolveUsersByEmail,selectedUsers,containerRef}),handleOnBlur=useCallback(event=>{setFieldTouched(fieldName,!0),handleBlur(event)},[fieldName,setFieldTouched,handleBlur]);return hasUserFieldFetchers(fetchUsers,fetchAvatarUrls)?jsx(`div`,{ref:containerRef,"data-testid":`${label}-field`,children:jsx(`fieldset`,{className:metadata_user_field_module_default.fieldset,disabled:disableForm,children:jsx(Field,{name:fieldName,children:({meta})=>jsx(UserSelectorContainer,{className,clearOnBlur:!1,"data-target-id":`UserSelector-metadataEditorUserField`,getPopoverRef:handlePopoverRef,disabled:disableForm,name:fieldName,onBlur:handleOnBlur,error:emailError??meta.error,fetchAvatarUrls,fetchUsers,inputRef:forwardedRef,inputValue,label:fieldLabel,onInputValueChange:handleInputValueChange,onPaste:handlePaste,placeholder:intl.formatMessage(messages.setValuePlaceholder),portalElement,selectedUsers,onSelectedUsersChange:handleSelectedUsersChange,clearButtonAriaLabel:intl.formatMessage(messages.clearUserField),deleteChipOnBackspace:!0,selectOnEnterOrTab:!0})})})}):null});MetadataUserField.displayName=`MetadataUserField`;export{MetadataUserField as t};
@@ -1 +1 @@
1
- import messages from"../../../../messages.js";import{useMemoizedFieldLabel}from"../../hooks/use-memoized-field-label.js";import{hasUserFieldFetchers}from"./user-field-render-utils.js";import{forwardRef,useCallback}from"react";import{useIntl}from"react-intl";import{jsx}from"react/jsx-runtime";import{Field,useFormikContext}from"formik";import{UserSelectorContainer}from"@box/user-selector";var MetadataUserField=forwardRef(({className,description,isAiSuggestionApplied,confidenceScore,disableForm,fieldNamePrefix,label,onValueEdited,updateModePrefix,fetchUsers,fetchAvatarUrls,portalElement},forwardedRef)=>{let intl=useIntl(),{setFieldValue,setFieldTouched}=useFormikContext(),fieldName=`${updateModePrefix??fieldNamePrefix}.value`,fieldLabel=useMemoizedFieldLabel(label,description,isAiSuggestionApplied,`label`,confidenceScore),handleOnBlur=useCallback(()=>{setFieldTouched(fieldName,!0)},[fieldName,setFieldTouched]);return hasUserFieldFetchers(fetchUsers,fetchAvatarUrls)?jsx(`div`,{"data-testid":`${label}-field`,children:jsx(Field,{name:fieldName,children:({field,meta})=>jsx(UserSelectorContainer,{className,"data-target-id":`UserSelector-metadataEditorUserField`,disabled:disableForm,name:fieldName,onBlur:handleOnBlur,error:meta.error,fetchAvatarUrls,fetchUsers,inputRef:forwardedRef,label:fieldLabel,placeholder:intl.formatMessage(messages.setValuePlaceholder),portalElement,selectedUsers:Array.isArray(field.value)?field.value:[],onSelectedUsersChange:selectedUsers=>{setFieldValue(fieldName,selectedUsers),onValueEdited()},clearButtonAriaLabel:intl.formatMessage(messages.clearUserField),deleteChipOnBackspace:!0})})}):null});MetadataUserField.displayName=`MetadataUserField`;export{MetadataUserField,MetadataUserField as default};
1
+ import{t as MetadataUserField}from"../../../../../../chunks/metadata-user-field.js";export{MetadataUserField,MetadataUserField as default};
@@ -0,0 +1 @@
1
+ import{parseEmails}from"./utils/emails.js";import{useCallback,useRef,useState}from"react";import differenceBy from"lodash/differenceBy";import uniqBy from"lodash/uniqBy";function createExternalContact(email){return{email,id:0,isExternalUser:!0,name:email,value:email,type:`user`}}function normalizeContactsByEmail(contacts){let normalizedContacts={};for(let key of Object.keys(contacts))normalizedContacts[key.toLowerCase()]=contacts[key];return normalizedContacts}function useUserFieldEmailCommit({fetchUsers,invalidEmailMessage,onSelectedUsersChange,resolveUsersByEmail,selectedUsers,containerRef}){let[inputValue,setInputValue]=useState(``),[emailError,setEmailError]=useState(),resolveEmailWithFetchUsers=useCallback(async email=>(await fetchUsers(email)).find(user=>user.email?.toLowerCase()===email.toLowerCase()),[fetchUsers]),resolveContactsFromEmails=useCallback(async emailAddresses=>{let fetchedContacts={};if(resolveUsersByEmail&&emailAddresses.length>0){let response=await resolveUsersByEmail(emailAddresses);Object.assign(fetchedContacts,normalizeContactsByEmail(response))}return await Promise.all(emailAddresses.map(async email=>fetchedContacts[email.toLowerCase()]||await resolveEmailWithFetchUsers(email)||createExternalContact(email)))},[resolveEmailWithFetchUsers,resolveUsersByEmail]),handleInputValueChange=useCallback(input=>{setEmailError(void 0),setInputValue(input)},[]);function isFreeTextCommit(proposedUsers,currentUsers){return proposedUsers.length<=currentUsers.length?!1:proposedUsers[proposedUsers.length-1].id===void 0}let handleSelectedUsersChange=useCallback(async users=>{if(setEmailError(void 0),!isFreeTextCommit(users,selectedUsers)){onSelectedUsersChange(users);return}let previousContacts=users.slice(0,-1),rawInput=users[users.length-1].value,parsedEmails=parseEmails(rawInput);if(parsedEmails.length===0){setEmailError(invalidEmailMessage);return}let processedContacts=await resolveContactsFromEmails(uniqBy(differenceBy(parsedEmails,previousContacts.filter(user=>user.email).map(user=>user.email),email=>email.toLowerCase()),email=>email.toLowerCase()));onSelectedUsersChange([...previousContacts,...processedContacts]),setInputValue(``)},[invalidEmailMessage,onSelectedUsersChange,resolveContactsFromEmails,selectedUsers.length]),handlePaste=useCallback(event=>{let value=event.clipboardData.getData(`text`);parseEmails(value).length!==0&&(event.preventDefault(),handleSelectedUsersChange([...selectedUsers,{value}]))},[handleSelectedUsersChange,selectedUsers]),popoverNodeRef=useRef(null),handlePopoverRef=useCallback(node=>{popoverNodeRef.current=node},[]);return{emailError,handleBlur:useCallback(event=>{let nextFocus=event.relatedTarget,isInsideSelector=nextFocus instanceof Node&&containerRef.current?.contains(nextFocus);if(nextFocus instanceof Node&&popoverNodeRef.current?.contains(nextFocus)||isInsideSelector)return;let value=event.target.value.trim();value&&handleSelectedUsersChange([...selectedUsers,{value}])},[containerRef,handleSelectedUsersChange,selectedUsers]),handleInputValueChange,handlePaste,handleSelectedUsersChange,inputValue,handlePopoverRef}}export{useUserFieldEmailCommit};
@@ -0,0 +1 @@
1
+ var EMAIL_REGEX=/^[A-Z0-9._'%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i;function isEmailValid(email){return EMAIL_REGEX.test(email)}var EMAIL_DELIMITERS=/[\s,;<>()[\]/\\"]+/;function parseEmails(text){return text?text.split(EMAIL_DELIMITERS).filter(isEmailValid):[]}export{isEmailValid,parseEmails};
@@ -1 +1 @@
1
- import{MetadataDateField}from"./components/metadata-date-field/metadata-date-field.js";import{MetadataEnumField}from"./components/metadata-enum-field/metadata-enum-field.js";import{MetadataFloatField}from"./components/metadata-float-field/metadata-float-field.js";import{MetadataMultiSelectField}from"./components/metadata-multi-select-field/metadata-multi-select-field.js";import{MetadataStringField}from"./components/metadata-string-field/metadata-string-field.js";import{MetadataTaxonomyField}from"./components/metadata-taxonomy-field/metadata-taxonomy-field.js";import{MetadataUserField}from"./components/metadata-user-field/metadata-user-field.js";import{forwardRef}from"react";import{jsx}from"react/jsx-runtime";var editorFieldTypes={date:forwardRef((props,forwardedRef)=>jsx(MetadataDateField,{...props,ref:forwardedRef})),enum:forwardRef((props,forwardedRef)=>jsx(MetadataEnumField,{...props,ref:forwardedRef})),float:forwardRef((props,forwardedRef)=>jsx(MetadataFloatField,{...props,ref:forwardedRef})),multiSelect:forwardRef((props,forwardedRef)=>jsx(MetadataMultiSelectField,{...props,ref:forwardedRef})),string:forwardRef((props,forwardedRef)=>jsx(MetadataStringField,{...props,ref:forwardedRef})),taxonomy:props=>jsx(MetadataTaxonomyField,{...props}),user:forwardRef((props,forwardedRef)=>jsx(MetadataUserField,{...props,ref:forwardedRef}))};export{editorFieldTypes};
1
+ import{MetadataDateField}from"./components/metadata-date-field/metadata-date-field.js";import{MetadataEnumField}from"./components/metadata-enum-field/metadata-enum-field.js";import{MetadataFloatField}from"./components/metadata-float-field/metadata-float-field.js";import{MetadataMultiSelectField}from"./components/metadata-multi-select-field/metadata-multi-select-field.js";import{MetadataStringField}from"./components/metadata-string-field/metadata-string-field.js";import{MetadataTaxonomyField}from"./components/metadata-taxonomy-field/metadata-taxonomy-field.js";import{t as MetadataUserField}from"../../../../chunks/metadata-user-field.js";import{forwardRef}from"react";import{jsx}from"react/jsx-runtime";var editorFieldTypes={date:forwardRef((props,forwardedRef)=>jsx(MetadataDateField,{...props,ref:forwardedRef})),enum:forwardRef((props,forwardedRef)=>jsx(MetadataEnumField,{...props,ref:forwardedRef})),float:forwardRef((props,forwardedRef)=>jsx(MetadataFloatField,{...props,ref:forwardedRef})),multiSelect:forwardRef((props,forwardedRef)=>jsx(MetadataMultiSelectField,{...props,ref:forwardedRef})),string:forwardRef((props,forwardedRef)=>jsx(MetadataStringField,{...props,ref:forwardedRef})),taxonomy:props=>jsx(MetadataTaxonomyField,{...props}),user:forwardRef((props,forwardedRef)=>jsx(MetadataUserField,{...props,ref:forwardedRef}))};export{editorFieldTypes};
@@ -1 +1 @@
1
- import messages from"../../messages.js";import{t as AiSuggestionState}from"../../../../chunks/types.js";import{t as AiSuggestionField}from"../../../../chunks/ai-suggestion-field.js";import{LowConfidenceSuggestionField}from"./components/low-confidence-suggestion-field/low-confidence-suggestion-field.js";import{t as UpdateModeFieldWrapper}from"../../../../chunks/update-mode-field-wrapper.js";import{isConfidenceScoreNeedingReview}from"../../utils/confidence-score/is-confidence-score-needing-review.js";import{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{isUserFieldRenderable,warnIfUserFieldMisconfigured}from"./components/metadata-user-field/user-field-render-utils.js";import{editorFieldTypes}from"./editor-field-types.js";import{isInteractiveFormElement}from"../../utils/is-interactive-form-element.js";import{useViewReferenceTooltip}from"./hooks/use-view-reference-tooltip.js";import{checkIfHasBoundingBoxes}from"../../utils/check-if-has-bounding-boxes.js";import{t as shared_field_styles_module_default}from"../../../../chunks/shared-field-styles.module.js";import{forwardRef,memo,useCallback,useEffect,useMemo}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Tooltip}from"@box/blueprint-web";import{useFormikContext}from"formik";import isEqual from"lodash/isEqual";import isUndefined from"lodash/isUndefined";var MetadataEditorFieldWrapper=memo(forwardRef(({disableForm,portalElement,field,index,taxonomyOptionsFetcher,isExternallyOwned,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,isConfidenceScoreReviewEnabled=!1,isBoundingBoxEnabled=!1,isUserFieldEnabled=!1,onSelectMetadataField,selectedMetadataFieldId,fetchUsers,fetchAvatarUrls},forwardedRef)=>{let{setFieldValue}=useFormikContext(),{formatMessage}=useIntl(),aiSuggestionState=field.aiSuggestionState||AiSuggestionState.Initial,isSuggestionPending=aiSuggestionState===AiSuggestionState.Pending,isSuggestionApplied=aiSuggestionState===AiSuggestionState.Applied,isInitial=aiSuggestionState===AiSuggestionState.Initial,MetadataEditorField=editorFieldTypes[field.type],{aiSuggestion,aiSuggestionConfidenceScore,aiSuggestionTargetLocation,type,value}=field,isUserField=field.type===`user`,isUserFieldHidden=isUserField&&!isUserFieldRenderable({isUserFieldEnabled,fetchUsers,fetchAvatarUrls}),showField=MetadataEditorField&&!field.hidden&&!isUserFieldHidden;useEffect(()=>{isUserField&&warnIfUserFieldMisconfigured({isUserFieldEnabled,fetchUsers,fetchAvatarUrls})},[isUserField,isUserFieldEnabled,fetchUsers,fetchAvatarUrls]);let withUpdateModeWrapper=!isUndefined(field.updateMode),fieldNamePrefix=`metadata.fields[${index}]`,isTaxonomyMultiSelect=field.type===`taxonomy`&&field.optionsRules?.multiSelect,isBoundingBoxOrConfidenceScoreReviewEnabled=isBoundingBoxEnabled||isConfidenceScoreReviewEnabled,hasConfidenceScore=isConfidenceScoreReviewEnabled&&!!field.confidenceScore,isConfidenceScoreReviewNeeded=hasConfidenceScore&&isConfidenceScoreNeedingReview(field.confidenceScore),hasApprovedConfidence=hasConfidenceScore&&!isSuggestionPending&&!isConfidenceScoreNeedingReview(field.confidenceScore),isSelected=selectedMetadataFieldId===field.id,hasBoundingBoxes=checkIfHasBoundingBoxes(field.targetLocation),isClickable=isBoundingBoxOrConfidenceScoreReviewEnabled&&hasBoundingBoxes&&!!onSelectMetadataField,{isTooltipOpen,handleMouseOver,handleMouseLeave,handleFocus,handleBlur}=useViewReferenceTooltip(isClickable),isTaxonomyField=type===`taxonomy`,aiStateClassName=clsx({[metadata_editor_fields_module_default.aiApproved]:isSuggestionApplied||hasApprovedConfidence||field.isExtracted,[metadata_editor_fields_module_default.hasSuggestion]:isSuggestionPending,[metadata_editor_fields_module_default.hasConfidenceReview]:!isSuggestionPending&&isConfidenceScoreReviewNeeded}),wrapperAiClassName=isTaxonomyField?aiStateClassName:void 0,fieldClassName=clsx(!isTaxonomyField&&aiStateClassName,{[metadata_editor_fields_module_default.dateField]:type===`date`}),setField=useCallback((name,fieldValue)=>{setFieldValue(`${fieldNamePrefix}.${name}`,fieldValue)},[fieldNamePrefix,setFieldValue]),setAiSuggestionState=useCallback(state=>{setField(`aiSuggestionState`,state)},[setField]),handleApplyAiSuggestion=useCallback((newValue,acceptConfidence=!1)=>{setField(`value`,newValue),setAiSuggestionState(AiSuggestionState.Applied),setField(`isExtracted`,!0),isBoundingBoxOrConfidenceScoreReviewEnabled&&aiSuggestionTargetLocation&&(setField(`targetLocation`,aiSuggestionTargetLocation),setField(`aiSuggestionTargetLocation`,void 0)),isConfidenceScoreReviewEnabled&&aiSuggestionConfidenceScore&&(setField(`confidenceScore`,acceptConfidence?{...aiSuggestionConfidenceScore,isAccepted:!0}:aiSuggestionConfidenceScore),setField(`aiSuggestionConfidenceScore`,void 0))},[setField,setAiSuggestionState,aiSuggestionConfidenceScore,aiSuggestionTargetLocation,isConfidenceScoreReviewEnabled,isBoundingBoxOrConfidenceScoreReviewEnabled]),clearAiSuggestion=useCallback(()=>{setAiSuggestionState(AiSuggestionState.Initial),setField(`aiSuggestion`,void 0),isBoundingBoxOrConfidenceScoreReviewEnabled&&setField(`aiSuggestionTargetLocation`,void 0),isConfidenceScoreReviewEnabled&&setField(`aiSuggestionConfidenceScore`,void 0)},[setAiSuggestionState,setField,isConfidenceScoreReviewEnabled,isBoundingBoxOrConfidenceScoreReviewEnabled]),handleAcceptConfidenceScore=useCallback(()=>{field.confidenceScore&&setField(`confidenceScore`,{...field.confidenceScore,isAccepted:!0}),onSelectMetadataField?.(null)},[setField,field.confidenceScore,onSelectMetadataField]),handleClearLowConfidenceValue=useCallback(()=>{setAiSuggestionState(AiSuggestionState.Initial),setField(`aiSuggestion`,void 0),setField(`isExtracted`,!1),setField(`value`,type===`multiSelect`||type===`taxonomy`||type===`user`?[]:``),setField(`confidenceScore`,void 0),setField(`targetLocation`,void 0),onSelectMetadataField?.(null)},[setField,type,onSelectMetadataField,setAiSuggestionState]),handleValueEdited=useCallback(()=>{clearAiSuggestion(),field.isExtracted&&setField(`isExtracted`,!1),isBoundingBoxOrConfidenceScoreReviewEnabled&&field.targetLocation&&(setField(`targetLocation`,void 0),onSelectMetadataField?.(null)),isConfidenceScoreReviewEnabled&&field.confidenceScore&&(setField(`confidenceScore`,void 0),onSelectMetadataField?.(null))},[clearAiSuggestion,isConfidenceScoreReviewEnabled,field.confidenceScore,field.isExtracted,field.targetLocation,setField,onSelectMetadataField,isBoundingBoxOrConfidenceScoreReviewEnabled]),handleFieldClick=useCallback(event=>{onSelectMetadataField&&(isInteractiveFormElement(event.target)||onSelectMetadataField(field))},[field,onSelectMetadataField]),handleFieldKeyDown=useCallback(event=>{if(event.key===`Enter`){if(!onSelectMetadataField||isInteractiveFormElement(event.target))return;event.preventDefault(),event.stopPropagation(),onSelectMetadataField(field)}},[field,onSelectMetadataField]);useEffect(()=>{isSuggestionPending&&(!value||Array.isArray(value)&&value.length===0)&&handleApplyAiSuggestion(aiSuggestion)},[aiSuggestion,isSuggestionPending,handleApplyAiSuggestion]),useEffect(()=>{isInitial&&aiSuggestion&&setAiSuggestionState(AiSuggestionState.Pending)},[isInitial,aiSuggestion,setAiSuggestionState]);let isSameValue=useMemo(()=>aiSuggestion?isEqual(value,aiSuggestion):!1,[aiSuggestion,value]);if(!showField)return null;let clickableFieldProps={"data-metadata-field":!0,"data-target-id":`Button-metadataEditorFieldEditClick`,"data-testid":`metadata-field`,onClick:handleFieldClick,onKeyDown:handleFieldKeyDown,onMouseOver:handleMouseOver,onMouseLeave:handleMouseLeave,onFocus:handleFocus,onBlur:handleBlur,role:`button`,tabIndex:0};if(withUpdateModeWrapper){let updateModeContent=jsx(UpdateModeFieldWrapper,{fieldNamePrefix,fieldType:field.type,isTaxonomyMultiSelect,children:jsx(MetadataEditorField,{ref:forwardedRef,description:field.description,disableForm,fieldNamePrefix,isAiSuggestionApplied:!1,isExternallyOwned,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,label:field.displayName,levels:field.levels,onValueEdited:handleValueEdited,portalElement,taxonomyOptionsFetcher,fetchUsers,fetchAvatarUrls})},field.key);return isClickable?jsx(Tooltip,{content:formatMessage(messages.viewOnDocument),open:isTooltipOpen,children:jsx(`div`,{className:clsx(shared_field_styles_module_default.spacious,shared_field_styles_module_default.clickableField,isSelected&&shared_field_styles_module_default.selectedField),...clickableFieldProps,children:updateModeContent})}):updateModeContent}let fieldContent=jsxs(`div`,{className:clsx(metadata_editor_fields_module_default.fieldWrapper,wrapperAiClassName,isBoundingBoxOrConfidenceScoreReviewEnabled&&shared_field_styles_module_default.spacious,isClickable&&shared_field_styles_module_default.clickableField,isClickable&&isSelected&&shared_field_styles_module_default.selectedField),...isClickable&&clickableFieldProps,children:[jsx(MetadataEditorField,{ref:forwardedRef,className:fieldClassName,description:field.description,disableForm,fieldNamePrefix,isAiSuggestionApplied:isSuggestionApplied||field.isExtracted,isExternallyOwned,confidenceScore:isConfidenceScoreReviewEnabled?field.confidenceScore:void 0,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,label:field.displayName,onValueEdited:handleValueEdited,portalElement,taxonomyOptionsFetcher,fetchUsers,fetchAvatarUrls}),isSuggestionPending&&jsx(AiSuggestionField,{aiSuggestion,confidenceLevel:isConfidenceScoreReviewEnabled?aiSuggestionConfidenceScore?.level:void 0,isSameValue,onAiSuggestionAppend:()=>{handleApplyAiSuggestion([...new Set([value,aiSuggestion].flat().filter(Boolean))],!0)},onAiSuggestionIgnore:clearAiSuggestion,onAiSuggestionReplace:()=>handleApplyAiSuggestion(aiSuggestion,!0),type}),!isSuggestionPending&&isConfidenceScoreReviewNeeded&&jsx(LowConfidenceSuggestionField,{onAccept:handleAcceptConfidenceScore,onClear:handleClearLowConfidenceValue})]},field.key);return jsx(Tooltip,{content:formatMessage(messages.viewOnDocument),open:isClickable&&isTooltipOpen,children:fieldContent})}));export{MetadataEditorFieldWrapper};
1
+ import messages from"../../messages.js";import{t as AiSuggestionState}from"../../../../chunks/types.js";import{t as AiSuggestionField}from"../../../../chunks/ai-suggestion-field.js";import{LowConfidenceSuggestionField}from"./components/low-confidence-suggestion-field/low-confidence-suggestion-field.js";import{t as UpdateModeFieldWrapper}from"../../../../chunks/update-mode-field-wrapper.js";import{isConfidenceScoreNeedingReview}from"../../utils/confidence-score/is-confidence-score-needing-review.js";import{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{isUserFieldRenderable,warnIfUserFieldMisconfigured}from"./components/metadata-user-field/user-field-render-utils.js";import{editorFieldTypes}from"./editor-field-types.js";import{isInteractiveFormElement}from"../../utils/is-interactive-form-element.js";import{useViewReferenceTooltip}from"./hooks/use-view-reference-tooltip.js";import{checkIfHasBoundingBoxes}from"../../utils/check-if-has-bounding-boxes.js";import{t as shared_field_styles_module_default}from"../../../../chunks/shared-field-styles.module.js";import{forwardRef,memo,useCallback,useEffect,useMemo}from"react";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Tooltip}from"@box/blueprint-web";import{useFormikContext}from"formik";import isEqual from"lodash/isEqual";import isUndefined from"lodash/isUndefined";var MetadataEditorFieldWrapper=memo(forwardRef(({disableForm,portalElement,field,index,taxonomyOptionsFetcher,isExternallyOwned,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,isConfidenceScoreReviewEnabled=!1,isBoundingBoxEnabled=!1,isUserFieldEnabled=!1,onSelectMetadataField,selectedMetadataFieldId,fetchUsers,fetchAvatarUrls,resolveUsersByEmail},forwardedRef)=>{let{setFieldValue}=useFormikContext(),{formatMessage}=useIntl(),aiSuggestionState=field.aiSuggestionState||AiSuggestionState.Initial,isSuggestionPending=aiSuggestionState===AiSuggestionState.Pending,isSuggestionApplied=aiSuggestionState===AiSuggestionState.Applied,isInitial=aiSuggestionState===AiSuggestionState.Initial,MetadataEditorField=editorFieldTypes[field.type],{aiSuggestion,aiSuggestionConfidenceScore,aiSuggestionTargetLocation,type,value}=field,isUserField=field.type===`user`,isUserFieldHidden=isUserField&&!isUserFieldRenderable({isUserFieldEnabled,fetchUsers,fetchAvatarUrls}),showField=MetadataEditorField&&!field.hidden&&!isUserFieldHidden;useEffect(()=>{isUserField&&warnIfUserFieldMisconfigured({isUserFieldEnabled,fetchUsers,fetchAvatarUrls})},[isUserField,isUserFieldEnabled,fetchUsers,fetchAvatarUrls]);let withUpdateModeWrapper=!isUndefined(field.updateMode),fieldNamePrefix=`metadata.fields[${index}]`,isTaxonomyMultiSelect=field.type===`taxonomy`&&field.optionsRules?.multiSelect,isBoundingBoxOrConfidenceScoreReviewEnabled=isBoundingBoxEnabled||isConfidenceScoreReviewEnabled,hasConfidenceScore=isConfidenceScoreReviewEnabled&&!!field.confidenceScore,isConfidenceScoreReviewNeeded=hasConfidenceScore&&isConfidenceScoreNeedingReview(field.confidenceScore),hasApprovedConfidence=hasConfidenceScore&&!isSuggestionPending&&!isConfidenceScoreNeedingReview(field.confidenceScore),isSelected=selectedMetadataFieldId===field.id,hasBoundingBoxes=checkIfHasBoundingBoxes(field.targetLocation),isClickable=isBoundingBoxOrConfidenceScoreReviewEnabled&&hasBoundingBoxes&&!!onSelectMetadataField,{isTooltipOpen,handleMouseOver,handleMouseLeave,handleFocus,handleBlur}=useViewReferenceTooltip(isClickable),isTaxonomyField=type===`taxonomy`,aiStateClassName=clsx({[metadata_editor_fields_module_default.aiApproved]:isSuggestionApplied||hasApprovedConfidence||field.isExtracted,[metadata_editor_fields_module_default.hasSuggestion]:isSuggestionPending,[metadata_editor_fields_module_default.hasConfidenceReview]:!isSuggestionPending&&isConfidenceScoreReviewNeeded}),wrapperAiClassName=isTaxonomyField?aiStateClassName:void 0,fieldClassName=clsx(!isTaxonomyField&&aiStateClassName,{[metadata_editor_fields_module_default.dateField]:type===`date`}),setField=useCallback((name,fieldValue)=>{setFieldValue(`${fieldNamePrefix}.${name}`,fieldValue)},[fieldNamePrefix,setFieldValue]),setAiSuggestionState=useCallback(state=>{setField(`aiSuggestionState`,state)},[setField]),handleApplyAiSuggestion=useCallback((newValue,acceptConfidence=!1)=>{setField(`value`,newValue),setAiSuggestionState(AiSuggestionState.Applied),setField(`isExtracted`,!0),isBoundingBoxOrConfidenceScoreReviewEnabled&&aiSuggestionTargetLocation&&(setField(`targetLocation`,aiSuggestionTargetLocation),setField(`aiSuggestionTargetLocation`,void 0)),isConfidenceScoreReviewEnabled&&aiSuggestionConfidenceScore&&(setField(`confidenceScore`,acceptConfidence?{...aiSuggestionConfidenceScore,isAccepted:!0}:aiSuggestionConfidenceScore),setField(`aiSuggestionConfidenceScore`,void 0))},[setField,setAiSuggestionState,aiSuggestionConfidenceScore,aiSuggestionTargetLocation,isConfidenceScoreReviewEnabled,isBoundingBoxOrConfidenceScoreReviewEnabled]),clearAiSuggestion=useCallback(()=>{setAiSuggestionState(AiSuggestionState.Initial),setField(`aiSuggestion`,void 0),isBoundingBoxOrConfidenceScoreReviewEnabled&&setField(`aiSuggestionTargetLocation`,void 0),isConfidenceScoreReviewEnabled&&setField(`aiSuggestionConfidenceScore`,void 0)},[setAiSuggestionState,setField,isConfidenceScoreReviewEnabled,isBoundingBoxOrConfidenceScoreReviewEnabled]),handleAcceptConfidenceScore=useCallback(()=>{field.confidenceScore&&setField(`confidenceScore`,{...field.confidenceScore,isAccepted:!0}),onSelectMetadataField?.(null)},[setField,field.confidenceScore,onSelectMetadataField]),handleClearLowConfidenceValue=useCallback(()=>{setAiSuggestionState(AiSuggestionState.Initial),setField(`aiSuggestion`,void 0),setField(`isExtracted`,!1),setField(`value`,type===`multiSelect`||type===`taxonomy`||type===`user`?[]:``),setField(`confidenceScore`,void 0),setField(`targetLocation`,void 0),onSelectMetadataField?.(null)},[setField,type,onSelectMetadataField,setAiSuggestionState]),handleValueEdited=useCallback(()=>{clearAiSuggestion(),field.isExtracted&&setField(`isExtracted`,!1),isBoundingBoxOrConfidenceScoreReviewEnabled&&field.targetLocation&&(setField(`targetLocation`,void 0),onSelectMetadataField?.(null)),isConfidenceScoreReviewEnabled&&field.confidenceScore&&(setField(`confidenceScore`,void 0),onSelectMetadataField?.(null))},[clearAiSuggestion,isConfidenceScoreReviewEnabled,field.confidenceScore,field.isExtracted,field.targetLocation,setField,onSelectMetadataField,isBoundingBoxOrConfidenceScoreReviewEnabled]),handleFieldClick=useCallback(event=>{onSelectMetadataField&&(isInteractiveFormElement(event.target)||onSelectMetadataField(field))},[field,onSelectMetadataField]),handleFieldKeyDown=useCallback(event=>{if(event.key===`Enter`){if(!onSelectMetadataField||isInteractiveFormElement(event.target))return;event.preventDefault(),event.stopPropagation(),onSelectMetadataField(field)}},[field,onSelectMetadataField]);useEffect(()=>{isSuggestionPending&&(!value||Array.isArray(value)&&value.length===0)&&handleApplyAiSuggestion(aiSuggestion)},[aiSuggestion,isSuggestionPending,handleApplyAiSuggestion]),useEffect(()=>{isInitial&&aiSuggestion&&setAiSuggestionState(AiSuggestionState.Pending)},[isInitial,aiSuggestion,setAiSuggestionState]);let isSameValue=useMemo(()=>aiSuggestion?isEqual(value,aiSuggestion):!1,[aiSuggestion,value]);if(!showField)return null;let clickableFieldProps={"data-metadata-field":!0,"data-target-id":`Button-metadataEditorFieldEditClick`,"data-testid":`metadata-field`,onClick:handleFieldClick,onKeyDown:handleFieldKeyDown,onMouseOver:handleMouseOver,onMouseLeave:handleMouseLeave,onFocus:handleFocus,onBlur:handleBlur,role:`button`,tabIndex:0};if(withUpdateModeWrapper){let updateModeContent=jsx(UpdateModeFieldWrapper,{fieldNamePrefix,fieldType:field.type,isTaxonomyMultiSelect,children:jsx(MetadataEditorField,{ref:forwardedRef,description:field.description,disableForm,fieldNamePrefix,isAiSuggestionApplied:!1,isExternallyOwned,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,label:field.displayName,levels:field.levels,onValueEdited:handleValueEdited,portalElement,taxonomyOptionsFetcher,fetchUsers,fetchAvatarUrls,resolveUsersByEmail})},field.key);return isClickable?jsx(Tooltip,{content:formatMessage(messages.viewOnDocument),open:isTooltipOpen,children:jsx(`div`,{className:clsx(shared_field_styles_module_default.spacious,shared_field_styles_module_default.clickableField,isSelected&&shared_field_styles_module_default.selectedField),...clickableFieldProps,children:updateModeContent})}):updateModeContent}let fieldContent=jsxs(`div`,{className:clsx(metadata_editor_fields_module_default.fieldWrapper,wrapperAiClassName,isBoundingBoxOrConfidenceScoreReviewEnabled&&shared_field_styles_module_default.spacious,isClickable&&shared_field_styles_module_default.clickableField,isClickable&&isSelected&&shared_field_styles_module_default.selectedField),...isClickable&&clickableFieldProps,children:[jsx(MetadataEditorField,{ref:forwardedRef,className:fieldClassName,description:field.description,disableForm,fieldNamePrefix,isAiSuggestionApplied:isSuggestionApplied||field.isExtracted,isExternallyOwned,confidenceScore:isConfidenceScoreReviewEnabled?field.confidenceScore:void 0,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,label:field.displayName,onValueEdited:handleValueEdited,portalElement,taxonomyOptionsFetcher,fetchUsers,fetchAvatarUrls,resolveUsersByEmail}),isSuggestionPending&&jsx(AiSuggestionField,{aiSuggestion,confidenceLevel:isConfidenceScoreReviewEnabled?aiSuggestionConfidenceScore?.level:void 0,isSameValue,onAiSuggestionAppend:()=>{handleApplyAiSuggestion([...new Set([value,aiSuggestion].flat().filter(Boolean))],!0)},onAiSuggestionIgnore:clearAiSuggestion,onAiSuggestionReplace:()=>handleApplyAiSuggestion(aiSuggestion,!0),type}),!isSuggestionPending&&isConfidenceScoreReviewNeeded&&jsx(LowConfidenceSuggestionField,{onAccept:handleAcceptConfidenceScore,onClear:handleClearLowConfidenceValue})]},field.key);return jsx(Tooltip,{content:formatMessage(messages.viewOnDocument),open:isClickable&&isTooltipOpen,children:fieldContent})}));export{MetadataEditorFieldWrapper};
@@ -1 +1 @@
1
- import{TEMPLATE_CUSTOM_PROPERTIES}from"../../../../constants.js";import{MetadataEmptyState}from"../../../metadata-empty-state/metadata-empty-state.js";import{useMetadataEditorAnalytics}from"../../../../utils/analytics/analytics-context.js";import{useAutofill}from"../../../../utils/autofill-context.js";import{TemplateInstance}from"../../../metadata-editor-fields/metadata-editor-fields.js";import{UnsavedChangesModal}from"../../../unsaved-changes-modal/unsaved-changes-modal.js";import{t as AutofillOverlay}from"../../../../../../chunks/autofill-overlay.js";import{t as CustomInstance}from"../../../../../../chunks/custom-instance.js";import{t as DeleteConfirmationModal}from"../../../../../../chunks/delete-confirmation-modal.js";import{t as createJSONPatch}from"../../../../../../chunks/utils2.js";import{n as metadata_instance_form_module_default,t as MetadataInstanceFormCardWrapper}from"../../../../../../chunks/metadata-instance-form-card-wrapper.js";import{useEffect,useMemo,useRef,useState}from"react";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Form,Formik}from"formik";import isEqual from"lodash/isEqual";var FormikObserver=({dirty,onChange,values})=>{let prevValuesRef=useRef(values);return dirty&&!isEqual(prevValuesRef.current.metadata.fields,values.metadata.fields)&&(prevValuesRef.current=values,onChange(values)),null},MetadataInstanceForm=props=>{let{areAiSuggestionsAvailable,customRef,isLargeFile,errorCode,isAiSuggestionsFeatureEnabled,isAdvancedExtractAgentEnabled=!1,isBetaLanguageEnabled,isDeleteButtonDisabled,isDeleteConfirmationModalCheckboxEnabled,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,isUnsavedChangesModalOpen=!1,MetadataInstanceFormCustomWrapper,selectedTemplateInstance,onCancel,onChange,onDelete,onDiscardUnsavedChanges,onSubmit,onToggleReviewFilter,setIsUnsavedChangesModalOpen,shouldShowOnlyReviewFields=!1,taxonomyOptionsFetcher,isConfidenceScoreReviewEnabled=!1,isBoundingBoxEnabled=!1,onSelectMetadataField,selectedMetadataFieldId,isUserFieldEnabled=!1,fetchUsers,fetchAvatarUrls}=props,isBoundingBoxOrConfidenceScoreReviewEnabled=isBoundingBoxEnabled||isConfidenceScoreReviewEnabled,FormWrapper=MetadataInstanceFormCustomWrapper??MetadataInstanceFormCardWrapper,[isDeleteConfirmationModalOpen,setIsDeleteConfirmationModalOpen]=useState(!1),{isFetchingSuggestions,isLongLoading,getAiSuggestions,clearState,suggestions}=useAutofill(),{trackEvent}=useMetadataEditorAnalytics();useEffect(()=>()=>{clearState()},[clearState,selectedTemplateInstance?.id]);let isCustomMetadata=selectedTemplateInstance?.templateKey===TEMPLATE_CUSTOM_PROPERTIES,handleSubmit=async values=>{await onSubmit(values,createJSONPatch(values,selectedTemplateInstance))},handleCancel=isFormDirty=>{isFormDirty?setIsUnsavedChangesModalOpen(!0):onCancel()},handleDelete=()=>{setIsDeleteConfirmationModalOpen(!0)},initialValues={metadata:{...selectedTemplateInstance}},formRef=useRef(null),[portalElement,setPortalElement]=useState(null);useEffect(()=>{setPortalElement(customRef??formRef.current)},[customRef,selectedTemplateInstance?.templateKey,selectedTemplateInstance?.scope]);let content=useMemo(()=>{let isEmpty=selectedTemplateInstance?.fields.length===0;if(isCustomMetadata)return jsx(CustomInstance,{isLoading:isFetchingSuggestions});if(isEmpty)return jsx(MetadataEmptyState,{isBoxAiSuggestionsFeatureEnabled:isAiSuggestionsFeatureEnabled,level:`instance`});let showOverlay=!!(isFetchingSuggestions||errorCode);return jsxs(`div`,{className:clsx(metadata_instance_form_module_default.metadataInstanceFormContent,showOverlay&&metadata_instance_form_module_default.showOverlay,isBoundingBoxOrConfidenceScoreReviewEnabled&&metadata_instance_form_module_default.metadataInstanceFormContentReducedGap),children:[jsx(AutofillOverlay,{errorCode,isFetchingSuggestions,isLongLoading}),jsx(TemplateInstance,{disableForm:isFetchingSuggestions,isConfidenceScoreReviewEnabled,isBoundingBoxEnabled,isExternallyOwned:selectedTemplateInstance?.isExternallyOwned,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,isUserFieldEnabled,createTaxonomyItemsService,onSelectMetadataField,selectedMetadataFieldId,portalElement:customRef??portalElement,shouldShowOnlyReviewFields,taxonomyOptionsFetcher,fetchAvatarUrls,fetchUsers})]})},[selectedTemplateInstance?.fields.length,selectedTemplateInstance?.isExternallyOwned,isCustomMetadata,isFetchingSuggestions,isLongLoading,customRef,portalElement,taxonomyOptionsFetcher,isAiSuggestionsFeatureEnabled,isConfidenceScoreReviewEnabled,isBoundingBoxEnabled,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,errorCode,shouldShowOnlyReviewFields,onSelectMetadataField,selectedMetadataFieldId,isUserFieldEnabled,fetchUsers,fetchAvatarUrls]);return jsx(Formik,{initialValues,onSubmit:handleSubmit,children:({values,dirty})=>jsxs(Form,{children:[jsx(FormWrapper,{areAiSuggestionsAvailable,className:metadata_instance_form_module_default.metadataInstanceForm,formRef,formValues:values,getAiSuggestions,handleCancel,handleDelete,isAdvancedExtractAgentEnabled,isAiSuggestionsFeatureEnabled,isBetaLanguageEnabled,isConfidenceScoreReviewEnabled,isBoundingBoxEnabled,isDeleteButtonDisabled,isFetchingSuggestions,isFormDirty:dirty,isLargeFile,onToggleReviewFilter,selectedTemplateInstance,shouldShowOnlyReviewFields,suggestions,children:selectedTemplateInstance&&content}),onChange&&jsx(FormikObserver,{dirty,onChange,values}),jsx(UnsavedChangesModal,{onBackToEdit:()=>setIsUnsavedChangesModalOpen(!1),onDiscardChanges:onDiscardUnsavedChanges,open:isUnsavedChangesModalOpen,trackEvent}),jsx(DeleteConfirmationModal,{isCheckboxEnabled:isDeleteConfirmationModalCheckboxEnabled,onConfirm:()=>onDelete(selectedTemplateInstance),onDismiss:()=>setIsDeleteConfirmationModalOpen(!1),open:isDeleteConfirmationModalOpen,templateName:selectedTemplateInstance?.displayName})]})},`${selectedTemplateInstance?.scope}.${selectedTemplateInstance?.templateKey}`)};export{MetadataInstanceForm};
1
+ import{TEMPLATE_CUSTOM_PROPERTIES}from"../../../../constants.js";import{MetadataEmptyState}from"../../../metadata-empty-state/metadata-empty-state.js";import{useMetadataEditorAnalytics}from"../../../../utils/analytics/analytics-context.js";import{useAutofill}from"../../../../utils/autofill-context.js";import{TemplateInstance}from"../../../metadata-editor-fields/metadata-editor-fields.js";import{UnsavedChangesModal}from"../../../unsaved-changes-modal/unsaved-changes-modal.js";import{t as AutofillOverlay}from"../../../../../../chunks/autofill-overlay.js";import{t as CustomInstance}from"../../../../../../chunks/custom-instance.js";import{t as DeleteConfirmationModal}from"../../../../../../chunks/delete-confirmation-modal.js";import{t as createJSONPatch}from"../../../../../../chunks/utils2.js";import{n as metadata_instance_form_module_default,t as MetadataInstanceFormCardWrapper}from"../../../../../../chunks/metadata-instance-form-card-wrapper.js";import{useEffect,useMemo,useRef,useState}from"react";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Form,Formik}from"formik";import isEqual from"lodash/isEqual";var FormikObserver=({dirty,onChange,values})=>{let prevValuesRef=useRef(values);return dirty&&!isEqual(prevValuesRef.current.metadata.fields,values.metadata.fields)&&(prevValuesRef.current=values,onChange(values)),null},MetadataInstanceForm=props=>{let{areAiSuggestionsAvailable,customRef,isLargeFile,errorCode,isAiSuggestionsFeatureEnabled,isAdvancedExtractAgentEnabled=!1,isBetaLanguageEnabled,isDeleteButtonDisabled,isDeleteConfirmationModalCheckboxEnabled,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,isUnsavedChangesModalOpen=!1,MetadataInstanceFormCustomWrapper,selectedTemplateInstance,onCancel,onChange,onDelete,onDiscardUnsavedChanges,onSubmit,onToggleReviewFilter,setIsUnsavedChangesModalOpen,shouldShowOnlyReviewFields=!1,taxonomyOptionsFetcher,isConfidenceScoreReviewEnabled=!1,isBoundingBoxEnabled=!1,onSelectMetadataField,selectedMetadataFieldId,isUserFieldEnabled=!1,fetchUsers,fetchAvatarUrls,resolveUsersByEmail}=props,isBoundingBoxOrConfidenceScoreReviewEnabled=isBoundingBoxEnabled||isConfidenceScoreReviewEnabled,FormWrapper=MetadataInstanceFormCustomWrapper??MetadataInstanceFormCardWrapper,[isDeleteConfirmationModalOpen,setIsDeleteConfirmationModalOpen]=useState(!1),{isFetchingSuggestions,isLongLoading,getAiSuggestions,clearState,suggestions}=useAutofill(),{trackEvent}=useMetadataEditorAnalytics();useEffect(()=>()=>{clearState()},[clearState,selectedTemplateInstance?.id]);let isCustomMetadata=selectedTemplateInstance?.templateKey===TEMPLATE_CUSTOM_PROPERTIES,handleSubmit=async values=>{await onSubmit(values,createJSONPatch(values,selectedTemplateInstance))},handleCancel=isFormDirty=>{isFormDirty?setIsUnsavedChangesModalOpen(!0):onCancel()},handleDelete=()=>{setIsDeleteConfirmationModalOpen(!0)},initialValues={metadata:{...selectedTemplateInstance}},formRef=useRef(null),[portalElement,setPortalElement]=useState(null);useEffect(()=>{setPortalElement(customRef??formRef.current)},[customRef,selectedTemplateInstance?.templateKey,selectedTemplateInstance?.scope]);let content=useMemo(()=>{let isEmpty=selectedTemplateInstance?.fields.length===0;if(isCustomMetadata)return jsx(CustomInstance,{isLoading:isFetchingSuggestions});if(isEmpty)return jsx(MetadataEmptyState,{isBoxAiSuggestionsFeatureEnabled:isAiSuggestionsFeatureEnabled,level:`instance`});let showOverlay=!!(isFetchingSuggestions||errorCode);return jsxs(`div`,{className:clsx(metadata_instance_form_module_default.metadataInstanceFormContent,showOverlay&&metadata_instance_form_module_default.showOverlay,isBoundingBoxOrConfidenceScoreReviewEnabled&&metadata_instance_form_module_default.metadataInstanceFormContentReducedGap),children:[jsx(AutofillOverlay,{errorCode,isFetchingSuggestions,isLongLoading}),jsx(TemplateInstance,{disableForm:isFetchingSuggestions,isConfidenceScoreReviewEnabled,isBoundingBoxEnabled,isExternallyOwned:selectedTemplateInstance?.isExternallyOwned,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,isUserFieldEnabled,createTaxonomyItemsService,onSelectMetadataField,selectedMetadataFieldId,portalElement:customRef??portalElement,shouldShowOnlyReviewFields,taxonomyOptionsFetcher,fetchAvatarUrls,fetchUsers,resolveUsersByEmail})]})},[selectedTemplateInstance?.fields.length,selectedTemplateInstance?.isExternallyOwned,isCustomMetadata,isFetchingSuggestions,isLongLoading,customRef,portalElement,taxonomyOptionsFetcher,isAiSuggestionsFeatureEnabled,isConfidenceScoreReviewEnabled,isBoundingBoxEnabled,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,errorCode,shouldShowOnlyReviewFields,onSelectMetadataField,selectedMetadataFieldId,isUserFieldEnabled,fetchUsers,fetchAvatarUrls,resolveUsersByEmail]);return jsx(Formik,{initialValues,onSubmit:handleSubmit,children:({values,dirty})=>jsxs(Form,{children:[jsx(FormWrapper,{areAiSuggestionsAvailable,className:metadata_instance_form_module_default.metadataInstanceForm,formRef,formValues:values,getAiSuggestions,handleCancel,handleDelete,isAdvancedExtractAgentEnabled,isAiSuggestionsFeatureEnabled,isBetaLanguageEnabled,isConfidenceScoreReviewEnabled,isBoundingBoxEnabled,isDeleteButtonDisabled,isFetchingSuggestions,isFormDirty:dirty,isLargeFile,onToggleReviewFilter,selectedTemplateInstance,shouldShowOnlyReviewFields,suggestions,children:selectedTemplateInstance&&content}),onChange&&jsx(FormikObserver,{dirty,onChange,values}),jsx(UnsavedChangesModal,{onBackToEdit:()=>setIsUnsavedChangesModalOpen(!1),onDiscardChanges:onDiscardUnsavedChanges,open:isUnsavedChangesModalOpen,trackEvent}),jsx(DeleteConfirmationModal,{isCheckboxEnabled:isDeleteConfirmationModalCheckboxEnabled,onConfirm:()=>onDelete(selectedTemplateInstance),onDismiss:()=>setIsDeleteConfirmationModalOpen(!1),open:isDeleteConfirmationModalOpen,templateName:selectedTemplateInstance?.displayName})]})},`${selectedTemplateInstance?.scope}.${selectedTemplateInstance?.templateKey}`)};export{MetadataInstanceForm};
@@ -1 +1 @@
1
- import{defineMessages}from"react-intl";var messages=defineMessages({afterDateValidationError:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.afterDateValidationError`,defaultMessage:`Enter a date after {date}`},beforeDateValidationError:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.beforeDateValidationError`,defaultMessage:`Enter a date before {date}`},clearSelectedDate:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.clearSelectedDate`,defaultMessage:`Clear selected date`},clearUserField:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.clearUserField`,defaultMessage:`Clear user field`},floatFieldInvalidValue:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.floatFieldInvalidValue`,defaultMessage:`Invalid field value`},loading:{id:`groupSharedFeatures.metadataEditor.loading`,defaultMessage:`loading`},multiselectPlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.multiselectPlaceholder`,defaultMessage:`Select value(s)`},noTemplateAtributesError:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.noTemplateAtributesError`,defaultMessage:`There are no attributes in this template.`},openCalendar:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.openCalendarLabel`,defaultMessage:`Open calendar to pick a date`},selectDate:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.selectDate`,defaultMessage:`Select the date`},selectTemplate:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.selectTemplate`,defaultMessage:`Select a Template`},selectTemplateError:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.selectTemplateError`,defaultMessage:`Could not load templates. Try again later`},selectValuePlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.selectValuePlaceholder`,defaultMessage:`Select a value`},setValuePlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.setValuePlaceholder`,defaultMessage:`Set Value`},switchToNextMonth:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.switchToNextMonth`,defaultMessage:`Switch to next month`},switchToPreviousMonth:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.switchToPreviousMonth`,defaultMessage:`Switch to previous month`},taxonomyPlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.taxonomyPlaceholder`,defaultMessage:`Select an option`},templateSelectorModalHeader:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.header`,defaultMessage:`Select Metadata Template`},templateSelectorSearchInputPlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.searchInputPlaceholder`,defaultMessage:`Search all templates`},templateSelectorSearchInputIconAriaLabel:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.searchInputIconAriaLabel`,defaultMessage:`Search all templates`},templateSelectorSearchInpuClearAriaLabel:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.searchInputClearAriaLabel`,defaultMessage:`Clear`},templateSelectorCancel:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.cancel`,defaultMessage:`Cancel`},templateSelectorAdd:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.add`,defaultMessage:`Add`},templateSelectorClose:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.close`,defaultMessage:`Close`},taxonomyExternallyOwned:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.taxonomyExternallyOwned`,defaultMessage:`Edit functionality for Taxonomy shared externally is not available`},viewOnDocument:{id:`groupSharedFeatures.metadataEditor.viewOnDocument`,defaultMessage:`View on document`},aiDisclaimer:{id:`groupSharedFeatures.metadataEditor.aiDisclaimer`,defaultMessage:`Box AI outputs should be reviewed and verified before use.`}}),autofillMessages=defineMessages({autofillButtonTooltipGA:{id:`metadataEditor.autofillButton.tooltip.ga`,defaultMessage:`Autofill with Box AI`},autofillButtonTooltipStandard:{id:`metadataEditor.autofillButton.tooltip.standard`,defaultMessage:`Autofill with Box AI (Standard)`},autofillButtonTooltipEnhanced:{id:`metadataEditor.autofillButton.tooltip.enhanced`,defaultMessage:`Autofill with Box AI (Enhanced)`},autofillButtonAriaLabelWithTemplateName:{id:`metadataEditor.autofillButton.ariaLabelWithTemplateName`,defaultMessage:`Autofill {templateName} with Box AI`},autofillButtonAriaLabel:{id:`metadataEditor.autofillButton.ariaLabel`,defaultMessage:`Autofill with Box AI`}});export{autofillMessages,messages as default};
1
+ import{defineMessages}from"react-intl";var messages=defineMessages({afterDateValidationError:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.afterDateValidationError`,defaultMessage:`Enter a date after {date}`},beforeDateValidationError:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.beforeDateValidationError`,defaultMessage:`Enter a date before {date}`},clearSelectedDate:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.clearSelectedDate`,defaultMessage:`Clear selected date`},clearUserField:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.clearUserField`,defaultMessage:`Clear user field`},floatFieldInvalidValue:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.floatFieldInvalidValue`,defaultMessage:`Invalid field value`},invalidUserFieldEmail:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.invalidUserFieldEmail`,defaultMessage:`Enter a valid email address`},loading:{id:`groupSharedFeatures.metadataEditor.loading`,defaultMessage:`loading`},multiselectPlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.multiselectPlaceholder`,defaultMessage:`Select value(s)`},noTemplateAtributesError:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.noTemplateAtributesError`,defaultMessage:`There are no attributes in this template.`},openCalendar:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.openCalendarLabel`,defaultMessage:`Open calendar to pick a date`},selectDate:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.selectDate`,defaultMessage:`Select the date`},selectTemplate:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.selectTemplate`,defaultMessage:`Select a Template`},selectTemplateError:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.selectTemplateError`,defaultMessage:`Could not load templates. Try again later`},selectValuePlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.selectValuePlaceholder`,defaultMessage:`Select a value`},setValuePlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.setValuePlaceholder`,defaultMessage:`Set Value`},switchToNextMonth:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.switchToNextMonth`,defaultMessage:`Switch to next month`},switchToPreviousMonth:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.switchToPreviousMonth`,defaultMessage:`Switch to previous month`},taxonomyPlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.taxonomyPlaceholder`,defaultMessage:`Select an option`},templateSelectorModalHeader:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.header`,defaultMessage:`Select Metadata Template`},templateSelectorSearchInputPlaceholder:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.searchInputPlaceholder`,defaultMessage:`Search all templates`},templateSelectorSearchInputIconAriaLabel:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.searchInputIconAriaLabel`,defaultMessage:`Search all templates`},templateSelectorSearchInpuClearAriaLabel:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.searchInputClearAriaLabel`,defaultMessage:`Clear`},templateSelectorCancel:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.cancel`,defaultMessage:`Cancel`},templateSelectorAdd:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.add`,defaultMessage:`Add`},templateSelectorClose:{id:`groupSharedFeatures.metadataEditor.metadataTemplateSelector.close`,defaultMessage:`Close`},taxonomyExternallyOwned:{id:`groupSharedFeatures.metadataEditor.metadataEditorFields.taxonomyExternallyOwned`,defaultMessage:`Edit functionality for Taxonomy shared externally is not available`},viewOnDocument:{id:`groupSharedFeatures.metadataEditor.viewOnDocument`,defaultMessage:`View on document`},aiDisclaimer:{id:`groupSharedFeatures.metadataEditor.aiDisclaimer`,defaultMessage:`Box AI outputs should be reviewed and verified before use.`}}),autofillMessages=defineMessages({autofillButtonTooltipGA:{id:`metadataEditor.autofillButton.tooltip.ga`,defaultMessage:`Autofill with Box AI`},autofillButtonTooltipStandard:{id:`metadataEditor.autofillButton.tooltip.standard`,defaultMessage:`Autofill with Box AI (Standard)`},autofillButtonTooltipEnhanced:{id:`metadataEditor.autofillButton.tooltip.enhanced`,defaultMessage:`Autofill with Box AI (Enhanced)`},autofillButtonAriaLabelWithTemplateName:{id:`metadataEditor.autofillButton.ariaLabelWithTemplateName`,defaultMessage:`Autofill {templateName} with Box AI`},autofillButtonAriaLabel:{id:`metadataEditor.autofillButton.ariaLabel`,defaultMessage:`Autofill with Box AI`}});export{autofillMessages,messages as default};
@@ -0,0 +1 @@
1
+ ._fieldset_194x7_1{all:unset;display:block}
@@ -2,6 +2,7 @@ import { FetchedAvatarUrls, UserContactType } from '@box/user-selector';
2
2
  import { MetadataFieldProps } from '../../types';
3
3
  export type FetchUsers = (inputValue: string) => Promise<UserContactType[]>;
4
4
  export type FetchAvatarUrls = (userContacts: UserContactType[]) => Promise<FetchedAvatarUrls>;
5
+ export type ResolveUsersByEmail = (emails: string[]) => Promise<Record<string, UserContactType>>;
5
6
  export type MetadataUserFieldProps = Omit<MetadataFieldProps, 'portalElement'> & {
6
7
  portalElement?: HTMLElement | (() => HTMLElement);
7
8
  };
@@ -0,0 +1,26 @@
1
+ import { ClipboardEvent, FocusEvent, RefObject } from 'react';
2
+ import { UserContactType } from '@box/user-selector';
3
+ import { FetchUsers, ResolveUsersByEmail } from './types';
4
+ export type UseUserFieldEmailCommitParams = {
5
+ fetchUsers: FetchUsers;
6
+ invalidEmailMessage: string;
7
+ onSelectedUsersChange: (users: UserContactType[]) => void;
8
+ resolveUsersByEmail?: ResolveUsersByEmail;
9
+ selectedUsers: UserContactType[];
10
+ containerRef: RefObject<HTMLDivElement | null>;
11
+ };
12
+ /**
13
+ * Owns free-text input for the metadata user field: typed/pasted emails are parsed and
14
+ * resolved into user chips (managed users when found, otherwise external contacts).
15
+ * Selected contacts themselves stay in Formik; this hook only handles input state, validation
16
+ * errors, and the commit path (Enter/Tab, paste, blur) modeled after Unified Share Modal.
17
+ */
18
+ export declare function useUserFieldEmailCommit({ fetchUsers, invalidEmailMessage, onSelectedUsersChange, resolveUsersByEmail, selectedUsers, containerRef, }: UseUserFieldEmailCommitParams): {
19
+ emailError: string;
20
+ handleBlur: (event: FocusEvent<HTMLInputElement>) => void;
21
+ handleInputValueChange: (input: string) => void;
22
+ handlePaste: (event: ClipboardEvent<HTMLInputElement>) => void;
23
+ handleSelectedUsersChange: (users: UserContactType[]) => Promise<void>;
24
+ inputValue: string;
25
+ handlePopoverRef: (node: HTMLDivElement | null) => void;
26
+ };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Returns whether a string is a syntactically valid email address.
3
+ * Uses the same regex as Unified Share Modal contact parsing.
4
+ */
5
+ export declare function isEmailValid(email: string): boolean;
6
+ /**
7
+ * Extracts valid email addresses from free-form text (typed input or clipboard).
8
+ * Splits on common delimiters and validates each token, matching USM collaborator parsing.
9
+ */
10
+ export declare function parseEmails(text: string): string[];
@@ -1,7 +1,7 @@
1
1
  import { Level } from '@box/combobox-with-api';
2
2
  import { ConfidenceScoreData, MetadataTemplateField, MetadataTemplateFieldOption } from '../../types';
3
3
  import { CreateTaxonomyItemsService, TaxonomyOptionsFetcher } from './components/metadata-taxonomy-field/types';
4
- import { FetchAvatarUrls, FetchUsers } from './components/metadata-user-field/types';
4
+ import { FetchAvatarUrls, FetchUsers, ResolveUsersByEmail } from './components/metadata-user-field/types';
5
5
  export type TemplateInstanceProps = {
6
6
  disableForm: boolean;
7
7
  portalElement?: HTMLElement;
@@ -22,6 +22,8 @@ export type TemplateInstanceProps = {
22
22
  fetchAvatarUrls?: FetchAvatarUrls;
23
23
  /** Fetches users matching the search input. Required when `isUserFieldEnabled` is true. */
24
24
  fetchUsers?: FetchUsers;
25
+ /** Resolves typed email addresses to managed users before falling back to external contacts. */
26
+ resolveUsersByEmail?: ResolveUsersByEmail;
25
27
  };
26
28
  export type MetadataFieldProps = {
27
29
  description?: string | null;
@@ -45,6 +47,7 @@ export type MetadataFieldProps = {
45
47
  createTaxonomyItemsService?: CreateTaxonomyItemsService;
46
48
  fetchAvatarUrls?: FetchAvatarUrls;
47
49
  fetchUsers?: FetchUsers;
50
+ resolveUsersByEmail?: ResolveUsersByEmail;
48
51
  };
49
52
  export type MetadataEditorFieldWrapperProps = TemplateInstanceProps & {
50
53
  field: MetadataTemplateField;
@@ -1,6 +1,6 @@
1
1
  import { AutofillSuggestions, MetadataTemplateField, MetadataTemplateInstance } from '../../../../types';
2
2
  import { CreateTaxonomyItemsService, TaxonomyOptionsFetcher } from '../../../metadata-editor-fields/components/metadata-taxonomy-field/types';
3
- import { FetchAvatarUrls, FetchUsers } from '../../../metadata-editor-fields/components/metadata-user-field/types';
3
+ import { FetchAvatarUrls, FetchUsers, ResolveUsersByEmail } from '../../../metadata-editor-fields/components/metadata-user-field/types';
4
4
  import { FormValues } from '../../types';
5
5
  import { ERROR_CODE_METADATA_AUTOFILL_TIMEOUT, ERROR_CODE_METADATA_PRECONDITION_FAILED, ERROR_CODE_MISSING_PERMISSIONS, ERROR_CODE_UNKNOWN } from './constants';
6
6
  export type errorCodeTypes = typeof ERROR_CODE_METADATA_AUTOFILL_TIMEOUT | typeof ERROR_CODE_METADATA_PRECONDITION_FAILED | typeof ERROR_CODE_MISSING_PERMISSIONS | typeof ERROR_CODE_UNKNOWN;
@@ -41,6 +41,7 @@ export type MetadataInstanceFormProps = {
41
41
  selectedMetadataFieldId?: string | null;
42
42
  fetchAvatarUrls?: FetchAvatarUrls;
43
43
  fetchUsers?: FetchUsers;
44
+ resolveUsersByEmail?: ResolveUsersByEmail;
44
45
  };
45
46
  export type MetadataInstanceFormWrapperProps<T> = {
46
47
  areAiSuggestionsAvailable: boolean;
@@ -91,4 +92,4 @@ export type JSONPatchOperation = {
91
92
  value?: JSONPatchValue;
92
93
  };
93
94
  export type JSONPatchOperations = JSONPatchOperation[];
94
- export type { FetchUsers, FetchAvatarUrls } from '../../../metadata-editor-fields/components/metadata-user-field/types';
95
+ export type { FetchUsers, FetchAvatarUrls, ResolveUsersByEmail, } from '../../../metadata-editor-fields/components/metadata-user-field/types';
@@ -24,6 +24,11 @@ declare const messages: {
24
24
  description: string;
25
25
  id: string;
26
26
  };
27
+ invalidUserFieldEmail: {
28
+ defaultMessage: string;
29
+ description: string;
30
+ id: string;
31
+ };
27
32
  loading: {
28
33
  defaultMessage: string;
29
34
  description: string;
@@ -10,6 +10,8 @@ declare const dateField: MetadataTemplateField;
10
10
  declare const enumField: MetadataTemplateField;
11
11
  declare const floatField: MetadataTemplateField;
12
12
  declare const engineeringTeamGroup: UserContactType;
13
+ declare const externalUserContact: UserContactType;
14
+ declare const managedUserJaneDoe: UserContactType;
13
15
  declare const mockUserFieldContacts: UserContactType[];
14
16
  declare const userField: MetadataTemplateField;
15
17
  declare const multiSelectField: MetadataTemplateField;
@@ -39,8 +41,10 @@ declare const userFieldWithValue: MetadataTemplateField;
39
41
  declare const userFieldTemplateWithValue: MetadataTemplate;
40
42
  declare const userFieldWithGroup: MetadataTemplateField;
41
43
  declare const userFieldWithMixedValue: MetadataTemplateField;
44
+ declare const userFieldWithMixedUserGroupAndExternalValue: MetadataTemplateField;
42
45
  declare const userFieldTemplateWithGroup: MetadataTemplate;
43
46
  declare const userFieldTemplateWithMixedValue: MetadataTemplate;
47
+ declare const userFieldTemplateWithMixedUserGroupAndExternalValue: MetadataTemplate;
44
48
  declare const userFieldTemplateInstance: MetadataTemplateInstance;
45
49
  declare const userFieldTemplateInstanceWithValue: MetadataTemplateInstance;
46
50
  declare const userFieldTemplateInstanceWithGroup: MetadataTemplateInstance;
@@ -79,4 +83,4 @@ declare const firstTemplateInstanceFieldsWithSuggestions: MetadataTemplateField[
79
83
  declare const secondTemplateInstance: MetadataTemplate;
80
84
  declare const secondTemplateSuggestions: AutofillSuggestions;
81
85
  declare const secondTemplateInstanceFieldsWithSuggestions: MetadataTemplateField[];
82
- export { allFieldsSuggestions, allFieldsTemplate, allFieldsTemplateInstance, allFieldsTemplateInstanceAiSuggestions, allFieldsTemplateInstanceWithoutTaxonomies, allFieldsWithAiSuggestions, customTemplate, customTemplateInstance, customTemplateInstanceWithAllFieldsEmpty, customTemplateInstanceWithoutEditPermissions, customTemplateInstanceWithoutEmptyValues, dateField, dateSuggestionTemplateInstance, emptyCustomTemplateInstance, emptyTemplateInstance, enumField, fields, firstTemplateInstance, firstTemplateInstanceFieldsWithSuggestions, firstTemplateSuggestions, floatField, floatInstanceField, hiddenField, hiddenTemplate, hiddenTemplateInstance, longFieldNameEnumField, longFieldNameEnumFieldWithDescription, longFieldNameEnumFieldWithDescriptionAndValue, longFieldNameEnumFieldWithValue, longFieldNameStringField, longFieldNameStringFieldWithDescription, longFieldNameStringFieldWithDescriptionAndValue, longFieldNameStringFieldWithValue, longFieldNameTemplateInstance, longFieldNameTemplateInstanceWithAiSuggestions, multiSelectField, noFieldsTemplate, nonHiddenFieldsTemplate, nonHiddenFieldsTemplateWithUpdateMode, nonHiddenFieldsWithValuesTemplate, noValueField, onlyRequiredPropsTemplateInstance, secondTemplateInstance, secondTemplateInstanceFieldsWithSuggestions, secondTemplateSuggestions, shortTemplateInstance, stringField, taxonomyLevels, taxonomyMultiSelectMultiLevelField, taxonomyMultiSelectSingleLevelField, taxonomyMultiSelectSingleLevelFieldWithValue, taxonomySingleSelectMultiLevelField, taxonomySingleSelectSingleLevelField, taxonomySingleSelectSingleLevelFieldWithValue, templateInstancesList, templateInstanceWithAllFieldsEmpty, templateInstanceWithoutEditPermissions, templateInstanceWithoutEmptyValues, templateInstanceWithSomeFieldsEmpty, templateOptions, templates, engineeringTeamGroup, mockUserFieldContacts, userField, userFieldTemplate, userFieldTemplateInstance, userFieldTemplateInstanceWithGroup, userFieldTemplateInstanceWithMixedValue, userFieldTemplateInstanceWithValue, userFieldTemplateWithGroup, userFieldTemplateWithMixedValue, userFieldTemplateWithValue, userFieldWithGroup, userFieldWithMixedValue, userFieldWithValue, };
86
+ export { allFieldsSuggestions, allFieldsTemplate, allFieldsTemplateInstance, allFieldsTemplateInstanceAiSuggestions, allFieldsTemplateInstanceWithoutTaxonomies, allFieldsWithAiSuggestions, customTemplate, customTemplateInstance, customTemplateInstanceWithAllFieldsEmpty, customTemplateInstanceWithoutEditPermissions, customTemplateInstanceWithoutEmptyValues, dateField, dateSuggestionTemplateInstance, emptyCustomTemplateInstance, emptyTemplateInstance, enumField, fields, firstTemplateInstance, firstTemplateInstanceFieldsWithSuggestions, firstTemplateSuggestions, floatField, floatInstanceField, hiddenField, hiddenTemplate, hiddenTemplateInstance, longFieldNameEnumField, longFieldNameEnumFieldWithDescription, longFieldNameEnumFieldWithDescriptionAndValue, longFieldNameEnumFieldWithValue, longFieldNameStringField, longFieldNameStringFieldWithDescription, longFieldNameStringFieldWithDescriptionAndValue, longFieldNameStringFieldWithValue, longFieldNameTemplateInstance, longFieldNameTemplateInstanceWithAiSuggestions, multiSelectField, noFieldsTemplate, nonHiddenFieldsTemplate, nonHiddenFieldsTemplateWithUpdateMode, nonHiddenFieldsWithValuesTemplate, noValueField, onlyRequiredPropsTemplateInstance, secondTemplateInstance, secondTemplateInstanceFieldsWithSuggestions, secondTemplateSuggestions, shortTemplateInstance, stringField, taxonomyLevels, taxonomyMultiSelectMultiLevelField, taxonomyMultiSelectSingleLevelField, taxonomyMultiSelectSingleLevelFieldWithValue, taxonomySingleSelectMultiLevelField, taxonomySingleSelectSingleLevelField, taxonomySingleSelectSingleLevelFieldWithValue, templateInstancesList, templateInstanceWithAllFieldsEmpty, templateInstanceWithoutEditPermissions, templateInstanceWithoutEmptyValues, templateInstanceWithSomeFieldsEmpty, templateOptions, templates, engineeringTeamGroup, externalUserContact, managedUserJaneDoe, mockUserFieldContacts, userField, userFieldTemplate, userFieldTemplateInstance, userFieldTemplateInstanceWithGroup, userFieldTemplateInstanceWithMixedValue, userFieldTemplateInstanceWithValue, userFieldTemplateWithGroup, userFieldTemplateWithMixedUserGroupAndExternalValue, userFieldTemplateWithMixedValue, userFieldTemplateWithValue, userFieldWithGroup, userFieldWithMixedUserGroupAndExternalValue, userFieldWithMixedValue, userFieldWithValue, };
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@box/metadata-editor",
3
- "version": "2.5.10",
3
+ "version": "2.5.12",
4
4
  "peerDependencies": {
5
5
  "@ariakit/react": "0.4.21",
6
- "@box/blueprint-web": "^17.2.2",
7
- "@box/blueprint-web-assets": "^5.8.0",
8
- "@box/box-ai-agent-selector": "^2.2.29",
9
- "@box/combobox-with-api": "^2.2.32",
10
- "@box/metadata-taxonomy-picker": "^3.3.12",
11
- "@box/metadata-template-browser": "^2.3.12",
12
- "@box/user-selector": "^3.0.8",
6
+ "@box/blueprint-web": "^17.2.4",
7
+ "@box/blueprint-web-assets": "^5.9.0",
8
+ "@box/box-ai-agent-selector": "^2.2.31",
9
+ "@box/combobox-with-api": "^2.2.34",
10
+ "@box/metadata-taxonomy-picker": "^3.3.14",
11
+ "@box/metadata-template-browser": "^2.3.14",
12
+ "@box/user-selector": "^3.0.10",
13
13
  "formik": "^2.0.3",
14
14
  "lodash": "^4.17.15",
15
15
  "react": "^17.0.0 || ^18.0.0",
@@ -19,12 +19,12 @@
19
19
  "devDependencies": {
20
20
  "@ariakit/react": "0.4.21",
21
21
  "@box/babel-plugin-target-attributes": "2.2.9",
22
- "@box/blueprint-web": "^17.2.2",
23
- "@box/blueprint-web-assets": "^5.8.0",
24
- "@box/box-ai-agent-selector": "^2.2.29",
25
- "@box/metadata-taxonomy-picker": "^3.3.12",
26
- "@box/storybook-utils": "^1.2.29",
27
- "@box/user-selector": "^3.0.8",
22
+ "@box/blueprint-web": "^17.2.4",
23
+ "@box/blueprint-web-assets": "^5.9.0",
24
+ "@box/box-ai-agent-selector": "^2.2.31",
25
+ "@box/metadata-taxonomy-picker": "^3.3.14",
26
+ "@box/storybook-utils": "^1.2.31",
27
+ "@box/user-selector": "^3.0.10",
28
28
  "@testing-library/react": "^15.0.6",
29
29
  "react": "^18.3.0",
30
30
  "react-dom": "^18.3.0",