@box/metadata-editor 2.4.17 → 2.4.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/metadata-instance-entry.js +1 -1
- package/dist/chunks/utils.js +1 -1
- package/dist/esm/lib/components/metadata-editor-fields/components/metadata-user-field/metadata-user-field.js +1 -1
- package/dist/esm/lib/components/metadata-editor-fields/components/metadata-user-field/user-field-render-utils.js +1 -0
- package/dist/esm/lib/components/metadata-editor-fields/metadata-editor-field-wrapper.js +1 -1
- package/dist/esm/lib/components/metadata-editor-fields/metadata-editor-fields.js +1 -1
- package/dist/esm/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/metadata-instance-form.js +1 -1
- package/dist/esm/lib/messages.js +1 -1
- package/dist/types/lib/components/metadata-editor-fields/components/metadata-user-field/metadata-user-field.d.ts +3 -2
- package/dist/types/lib/components/metadata-editor-fields/components/metadata-user-field/types.d.ts +8 -0
- package/dist/types/lib/components/metadata-editor-fields/components/metadata-user-field/user-field-render-utils.d.ts +9 -0
- package/dist/types/lib/components/metadata-editor-fields/editor-field-types.d.ts +3 -1
- package/dist/types/lib/components/metadata-editor-fields/types.d.ts +7 -0
- package/dist/types/lib/components/metadata-instance-editor/subcomponents/metadata-instance-form/types.d.ts +4 -0
- package/dist/types/lib/messages.d.ts +5 -0
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import messages from"../esm/lib/messages.js";import{EVENT_NAMES}from"../esm/lib/utils/analytics/events.js";import{useMetadataEditorAnalytics}from"../esm/lib/utils/analytics/analytics-context.js";import{
|
|
1
|
+
import messages from"../esm/lib/messages.js";import{EVENT_NAMES}from"../esm/lib/utils/analytics/events.js";import{useMetadataEditorAnalytics}from"../esm/lib/utils/analytics/analytics-context.js";import{convertISOStringToUTCDate}from"../esm/lib/utils/convertDate.js";import{getConfidenceScoreTooltip}from"../esm/lib/utils/confidence-score/get-confidence-score-tooltip.js";import{isConfidenceScoreNeedingReview}from"../esm/lib/utils/confidence-score/is-confidence-score-needing-review.js";import{t as interactive_text_module_default}from"./interactive-text.module.js";import{checkIfHasBoundingBoxes}from"../esm/lib/utils/check-if-has-bounding-boxes.js";import{t as shared_field_styles_module_default}from"./shared-field-styles.module.js";import messages$1 from"../esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/messages.js";import{MetadataEntryDisplay}from"../esm/lib/components/metadata-instance-list/subcomponents/metadata-instance-entry/metadata-entry-display.js";import{useRef}from"react";import{FormattedDate,useIntl}from"react-intl";import{Focusable}from"@ariakit/react";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Status,Text,Tooltip,useIsEllipsized}from"@box/blueprint-web";import{AlertCircle}from"@box/blueprint-web-assets/icons/Medium";import '../styles/metadata-instance-entry.css';var metadata_instance_entry_module_default={metadataInstanceEntry:`_metadataInstanceEntry_1ygbk_1`,name:`_name_1ygbk_6`,nameText:`_nameText_1ygbk_13`,labelContainer:`_labelContainer_1ygbk_21`,nameLabel:`_nameLabel_1ygbk_28`,confidenceScoreIcon:`_confidenceScoreIcon_1ygbk_43`},MetadataInstanceEntry=({description,isSelected,name,onClick,shouldHideEmptyValues,type,value,taxonomyNodeFetcher,taxonomyKey,scope,isExternallyOwned,confidenceScore,isConfidenceScoreReviewEnabled=!1,isBoundingBoxEnabled=!1,targetLocation})=>{let intl=useIntl(),{trackEvent}=useMetadataEditorAnalytics(),nameEllipsisRef=useRef(null),isNameEllipsized=useIsEllipsized(nameEllipsisRef),nameTextRef=node=>{nameEllipsisRef.current=node instanceof HTMLElement?node:null},isBoundingBoxOrConfidenceScoreReviewEnabled=isBoundingBoxEnabled||isConfidenceScoreReviewEnabled,isLowConfidenceScore=isConfidenceScoreReviewEnabled&&!!confidenceScore&&isConfidenceScoreNeedingReview(confidenceScore),hasBoundingBoxes=checkIfHasBoundingBoxes(targetLocation),isClickable=isBoundingBoxOrConfidenceScoreReviewEnabled&&hasBoundingBoxes&&!!onClick,confidenceScoreTooltipText=isLowConfidenceScore?getConfidenceScoreTooltip(intl.formatMessage,confidenceScore):null,handleLowConfIconHover=()=>trackEvent(EVENT_NAMES.LOW_CONF_ICON_HOVER_READ_MODE,{fieldType:type,confidenceLevel:confidenceScore?.level,scope}),formattedValue=typeof value==`number`?value.toString():value?Array.isArray(value)?value.join(`, `):type===`date`&&typeof value==`string`?jsx(FormattedDate,{day:`numeric`,month:`long`,value:convertISOStringToUTCDate(value),year:`numeric`}):value:null,clickableFieldProps={"data-metadata-field":!0,"data-target-id":`Button-metadataEditorFieldReadClick`,"data-testid":`metadata-field`,onClick,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),e.stopPropagation(),onClick?.())},role:`button`,tabIndex:0};if(shouldHideEmptyValues&&!formattedValue)return null;let nameTooltipContent=(()=>{if(description)return isNameEllipsized?jsxs(`div`,{children:[jsx(`div`,{children:name}),jsx(`div`,{children:description})]}):description;if(isNameEllipsized)return name})(),nameText=jsx(`h5`,{className:metadata_instance_entry_module_default.name,children:jsx(Text,{ref:nameTextRef,as:`span`,className:clsx(metadata_instance_entry_module_default.nameText,description&&interactive_text_module_default.interactiveTextHint),color:`textOnLightSecondary`,variant:`bodyDefaultBold`,children:name})}),content=jsxs(`div`,{className:clsx(metadata_instance_entry_module_default.metadataInstanceEntry,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:[jsxs(`div`,{className:metadata_instance_entry_module_default.labelContainer,children:[confidenceScoreTooltipText&&jsx(Tooltip,{content:confidenceScoreTooltipText,children:jsx(`span`,{className:metadata_instance_entry_module_default.confidenceScoreIcon,children:jsx(Status,{"data-target-id":`Status-metadataInstanceEntryConfidenceScoreIcon`,color:`SurfaceStatusSurfaceGray`,hideText:!0,icon:AlertCircle,interactive:!0,text:intl.formatMessage(messages$1.confidenceScoreIconAriaLabel),onMouseEnter:handleLowConfIconHover})})}),jsx(`div`,{className:metadata_instance_entry_module_default.nameLabel,children:nameTooltipContent?jsx(Tooltip,{content:nameTooltipContent,children:jsx(Focusable,{render:nameText})}):nameText})]}),jsx(MetadataEntryDisplay,{formattedValue,isExternallyOwned,scope,taxonomyKey,taxonomyNodeFetcher,type,value})]});return isClickable?jsx(Tooltip,{content:intl.formatMessage(messages.viewOnDocument),children:content}):content};export{MetadataInstanceEntry as t};
|
package/dist/chunks/utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{convertISOStringtoRFC3339String}from"../esm/lib/utils/convertDate.js";import{isConfidenceScoreNeedingReview}from"../esm/lib/utils/confidence-score/is-confidence-score-needing-review.js";import{t as interactive_text_module_default}from"./interactive-text.module.js";import{AiLogoBadge}from"../esm/lib/components/metadata-editor-fields/components/ai-logo-badge/ai-logo-badge.js";import{LowConfidenceBadge}from"../esm/lib/components/metadata-editor-fields/components/low-confidence-badge/low-confidence-badge.js";import{createElement,memo,useRef}from"react";import{Focusable}from"@ariakit/react";import{jsx,jsxs}from"react/jsx-runtime";import clsx from"clsx";import{Tooltip,useForkRef,useIsEllipsized}from"@box/blueprint-web";import '../styles/utils.css';var metadata_editor_fields_module_default={noAttributesText:`_noAttributesText_yqroc_2`,fieldWrapper:`_fieldWrapper_yqroc_6`,hasSuggestion:`_hasSuggestion_yqroc_11`,hasConfidenceReview:`_hasConfidenceReview_yqroc_16`,dateField:`_dateField_yqroc_55`,aiApproved:`_aiApproved_yqroc_60`,labelWrapper:`_labelWrapper_yqroc_131`,labelText:`_labelText_yqroc_138`,labelTruncated:`_labelTruncated_yqroc_141`};function LabelTextWithDescriptionTooltip({as,fieldDescription,fieldName,labelClassName,labelRef:refFromLabelable,...rest}){let textRef=useRef(null),mergedLabelRef=useForkRef(textRef,refFromLabelable);return jsx(Tooltip,{content:useIsEllipsized(textRef)?jsxs(`div`,{children:[jsx(`div`,{children:fieldName}),jsx(`div`,{children:fieldDescription})]}):fieldDescription,children:jsx(Focusable,{render:createElement(as,{className:clsx(labelClassName,interactive_text_module_default.interactiveTextHint),...rest,ref:mergedLabelRef},fieldName)})})}function LabelTextEllipsisAwareTooltip({as,fieldName,labelClassName,labelRef:refFromLabelable,...rest}){let textRef=useRef(null),mergedLabelRef=useForkRef(textRef,refFromLabelable),tooltipContent=useIsEllipsized(textRef)?fieldName:void 0,labelNode=createElement(as,{className:labelClassName,...rest,ref:mergedLabelRef},fieldName);return tooltipContent?jsx(Tooltip,{content:tooltipContent,children:jsx(Focusable,{render:labelNode})}):labelNode}var LabelContent=memo(function({fieldName,fieldDescription,isAiSuggestionApplied,as,confidenceScore,labelProps}){let{className,ref:refFromLabelable,...rest}=labelProps,labelClassName=clsx(className||metadata_editor_fields_module_default.labelText,metadata_editor_fields_module_default.labelTruncated),isLowConfidenceScore=!!confidenceScore&&isConfidenceScoreNeedingReview(confidenceScore),renderBadge=()=>confidenceScore&&isLowConfidenceScore?jsx(LowConfidenceBadge,{}):isAiSuggestionApplied||confidenceScore?jsx(AiLogoBadge,{confidenceScore}):null,textBlock=fieldDescription?jsx(LabelTextWithDescriptionTooltip,{as,fieldDescription,fieldName,labelClassName,labelRef:refFromLabelable,...rest}):jsx(LabelTextEllipsisAwareTooltip,{as,fieldName,labelClassName,labelRef:refFromLabelable,...rest});return jsxs(`div`,{className:metadata_editor_fields_module_default.labelWrapper,children:[textBlock,renderBadge()]})},(prev,next)=>{let pLP=prev.labelProps,nLP=next.labelProps;return prev.fieldName===next.fieldName&&prev.fieldDescription===next.fieldDescription&&prev.isAiSuggestionApplied===next.isAiSuggestionApplied&&prev.confidenceScore===next.confidenceScore&&prev.as===next.as&&pLP.className===nLP.className&&pLP.htmlFor===nLP.htmlFor&&pLP.id===nLP.id}),getFieldLabel=(fieldName,fieldDescription,isAiSuggestionApplied=!1,as=`label`,confidenceScore)=>labelProps=>jsx(LabelContent,{as,confidenceScore,fieldDescription,fieldName,isAiSuggestionApplied,labelProps}),getFieldLabelContent=(fieldName,fieldDescription,isAiSuggestionApplied=!1,confidenceScore)=>jsx(LabelContent,{as:`span`,confidenceScore,fieldDescription,fieldName,isAiSuggestionApplied,labelProps:{}}),tryParseDateSuggestion=suggestedDate=>{try{let normalizedDate=convertISOStringtoRFC3339String(suggestedDate),dateObj=new Date(normalizedDate);return isNaN(dateObj.getTime())?null:normalizedDate}catch{return null}};export{metadata_editor_fields_module_default as i,getFieldLabelContent as n,tryParseDateSuggestion as r,getFieldLabel as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import messages from"../../../../messages.js";import{useMemoizedFieldLabel}from"../../hooks/use-memoized-field-label.js";import{forwardRef}from"react";import{useIntl}from"react-intl";import{jsx}from"react/jsx-runtime";import{
|
|
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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var isUserFieldRenderable=({isUserFieldEnabled=!1,fetchUsers,fetchAvatarUrls})=>isUserFieldEnabled&&!!fetchUsers&&!!fetchAvatarUrls,warnIfUserFieldMisconfigured=({isUserFieldEnabled=!1,fetchUsers,fetchAvatarUrls})=>{isUserFieldEnabled&&(!fetchUsers||!fetchAvatarUrls)&&process.env.NODE_ENV!==`production`&&console.error(`[metadata-editor] isUserFieldEnabled is true but fetchUsers and/or fetchAvatarUrls were not provided; the user field will not render.`)},hasUserFieldFetchers=(fetchUsers,fetchAvatarUrls)=>!!fetchUsers&&!!fetchAvatarUrls;export{hasUserFieldFetchers,isUserFieldRenderable,warnIfUserFieldMisconfigured};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import messages from"../../messages.js";import{t as AiSuggestionState}from"../../../../chunks/types.js";import{checkIfHasBoundingBoxes}from"../../utils/check-if-has-bounding-boxes.js";import{isConfidenceScoreNeedingReview}from"../../utils/confidence-score/is-confidence-score-needing-review.js";import{isInteractiveFormElement}from"../../utils/is-interactive-form-element.js";import{t as shared_field_styles_module_default}from"../../../../chunks/shared-field-styles.module.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{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{editorFieldTypes}from"./editor-field-types.js";import{useViewReferenceTooltip}from"./hooks/use-view-reference-tooltip.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},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,isUserFieldHiddenByFlag=field.type===`user`&&!isUserFieldEnabled,showField=MetadataEditorField&&!field.hidden&&!isUserFieldHiddenByFlag,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})},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}),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},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 +1 @@
|
|
|
1
|
-
import messages from"../../messages.js";import{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{MetadataEditorFieldWrapper}from"./metadata-editor-field-wrapper.js";import{useReviewFieldFilter}from"./hooks/use-review-field-filter.js";import{createElement,useEffect,useRef}from"react";import{FormattedMessage}from"react-intl";import{jsx}from"react/jsx-runtime";import{Text}from"@box/blueprint-web";import{FieldArray,getIn,useFormikContext}from"formik";var TemplateInstance=props=>{let{shouldShowOnlyReviewFields=!1,isUserFieldEnabled=!1}=props,{values}=useFormikContext(),fieldName=`metadata.fields`,fields=getIn(values,fieldName),focusRef=useRef(null),visibleFieldEntries=useReviewFieldFilter(fields,shouldShowOnlyReviewFields),
|
|
1
|
+
import messages from"../../messages.js";import{i as metadata_editor_fields_module_default}from"../../../../chunks/utils.js";import{isUserFieldRenderable}from"./components/metadata-user-field/user-field-render-utils.js";import{MetadataEditorFieldWrapper}from"./metadata-editor-field-wrapper.js";import{useReviewFieldFilter}from"./hooks/use-review-field-filter.js";import{createElement,useEffect,useRef}from"react";import{FormattedMessage}from"react-intl";import{jsx}from"react/jsx-runtime";import{Text}from"@box/blueprint-web";import{FieldArray,getIn,useFormikContext}from"formik";var TemplateInstance=props=>{let{shouldShowOnlyReviewFields=!1,isUserFieldEnabled=!1,fetchUsers,fetchAvatarUrls}=props,{values}=useFormikContext(),fieldName=`metadata.fields`,fields=getIn(values,fieldName),focusRef=useRef(null),visibleFieldEntries=useReviewFieldFilter(fields,shouldShowOnlyReviewFields),isFieldEligibleForAutoFocus=field=>{let isUserFieldHidden=field.type===`user`&&!isUserFieldRenderable({isUserFieldEnabled,fetchUsers,fetchAvatarUrls});return!field.hidden&&!isUserFieldHidden},autoFocusOriginalIndex=visibleFieldEntries.find(({field})=>isFieldEligibleForAutoFocus(field))?.originalIndex??-1;return useEffect(()=>{autoFocusOriginalIndex>-1&&focusRef.current?.focus()},[]),fields.length?jsx(FieldArray,{name:fieldName,validateOnChange:!1,children:()=>visibleFieldEntries.map(({field,originalIndex})=>createElement(MetadataEditorFieldWrapper,{...props,key:field.key,ref:originalIndex===autoFocusOriginalIndex?focusRef:null,field,index:originalIndex}))}):jsx(Text,{as:`span`,className:metadata_editor_fields_module_default.noAttributesText,color:`textOnLightSecondary`,children:jsx(FormattedMessage,{...messages.noTemplateAtributesError})})};export{TemplateInstance,TemplateInstance as default};
|
|
@@ -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}=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})]})},[selectedTemplateInstance?.fields.length,selectedTemplateInstance?.isExternallyOwned,isCustomMetadata,isFetchingSuggestions,isLongLoading,customRef,portalElement,taxonomyOptionsFetcher,isAiSuggestionsFeatureEnabled,isConfidenceScoreReviewEnabled,isBoundingBoxEnabled,isMultilevelTaxonomyFieldEnabled,isTaxonomyPickerEnabled,createTaxonomyItemsService,errorCode,shouldShowOnlyReviewFields,onSelectMetadataField,selectedMetadataFieldId,isUserFieldEnabled]);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}=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};
|
package/dist/esm/lib/messages.js
CHANGED
|
@@ -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`},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`},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,3 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
export declare const MetadataUserField: import('react').ForwardRefExoticComponent<Omit<import('../../types').MetadataFieldProps, "portalElement"> & {
|
|
2
|
+
portalElement?: HTMLElement | (() => HTMLElement);
|
|
3
|
+
} & import('react').RefAttributes<HTMLInputElement>>;
|
|
3
4
|
export default MetadataUserField;
|
package/dist/types/lib/components/metadata-editor-fields/components/metadata-user-field/types.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FetchedAvatarUrls } from '@box/user-selector';
|
|
2
|
+
import { MetadataUser } from '../../../../types';
|
|
3
|
+
import { MetadataFieldProps } from '../../types';
|
|
4
|
+
export type FetchUsers = (inputValue: string) => Promise<MetadataUser[]>;
|
|
5
|
+
export type FetchAvatarUrls = (userContacts: MetadataUser[]) => Promise<FetchedAvatarUrls>;
|
|
6
|
+
export type MetadataUserFieldProps = Omit<MetadataFieldProps, 'portalElement'> & {
|
|
7
|
+
portalElement?: HTMLElement | (() => HTMLElement);
|
|
8
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FetchAvatarUrls, FetchUsers } from './types';
|
|
2
|
+
export type IsUserFieldRenderableParams = {
|
|
3
|
+
isUserFieldEnabled?: boolean;
|
|
4
|
+
fetchUsers?: FetchUsers;
|
|
5
|
+
fetchAvatarUrls?: FetchAvatarUrls;
|
|
6
|
+
};
|
|
7
|
+
export declare const isUserFieldRenderable: ({ isUserFieldEnabled, fetchUsers, fetchAvatarUrls, }: IsUserFieldRenderableParams) => boolean;
|
|
8
|
+
export declare const warnIfUserFieldMisconfigured: ({ isUserFieldEnabled, fetchUsers, fetchAvatarUrls, }: IsUserFieldRenderableParams) => void;
|
|
9
|
+
export declare const hasUserFieldFetchers: (fetchUsers?: FetchUsers, fetchAvatarUrls?: FetchAvatarUrls) => boolean;
|
|
@@ -6,5 +6,7 @@ export declare const editorFieldTypes: {
|
|
|
6
6
|
multiSelect: import('react').ForwardRefExoticComponent<MetadataFieldProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
7
7
|
string: import('react').ForwardRefExoticComponent<MetadataFieldProps & import('react').RefAttributes<HTMLInputElement>>;
|
|
8
8
|
taxonomy: (props: MetadataFieldProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
user: import('react').ForwardRefExoticComponent<MetadataFieldProps &
|
|
9
|
+
user: import('react').ForwardRefExoticComponent<Omit<MetadataFieldProps, "portalElement"> & {
|
|
10
|
+
portalElement?: HTMLElement | (() => HTMLElement);
|
|
11
|
+
} & import('react').RefAttributes<HTMLInputElement>>;
|
|
10
12
|
};
|
|
@@ -1,6 +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
5
|
export type TemplateInstanceProps = {
|
|
5
6
|
disableForm: boolean;
|
|
6
7
|
portalElement?: HTMLElement;
|
|
@@ -17,6 +18,10 @@ export type TemplateInstanceProps = {
|
|
|
17
18
|
shouldShowOnlyReviewFields?: boolean;
|
|
18
19
|
onSelectMetadataField?: (field: MetadataTemplateField | null) => void;
|
|
19
20
|
selectedMetadataFieldId?: string | null;
|
|
21
|
+
/** Resolves avatar URLs for the given user contacts. Required when `isUserFieldEnabled` is true. */
|
|
22
|
+
fetchAvatarUrls?: FetchAvatarUrls;
|
|
23
|
+
/** Fetches users matching the search input. Required when `isUserFieldEnabled` is true. */
|
|
24
|
+
fetchUsers?: FetchUsers;
|
|
20
25
|
};
|
|
21
26
|
export type MetadataFieldProps = {
|
|
22
27
|
description?: string | null;
|
|
@@ -38,6 +43,8 @@ export type MetadataFieldProps = {
|
|
|
38
43
|
isTaxonomyPickerEnabled?: boolean;
|
|
39
44
|
/** Builds the per-field `TaxonomyItemsService` for the new picker experience. Required when `isTaxonomyPickerEnabled` is true. */
|
|
40
45
|
createTaxonomyItemsService?: CreateTaxonomyItemsService;
|
|
46
|
+
fetchAvatarUrls?: FetchAvatarUrls;
|
|
47
|
+
fetchUsers?: FetchUsers;
|
|
41
48
|
};
|
|
42
49
|
export type MetadataEditorFieldWrapperProps = TemplateInstanceProps & {
|
|
43
50
|
field: MetadataTemplateField;
|
|
@@ -1,5 +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
4
|
import { FormValues } from '../../types';
|
|
4
5
|
import { ERROR_CODE_METADATA_AUTOFILL_TIMEOUT, ERROR_CODE_METADATA_PRECONDITION_FAILED, ERROR_CODE_MISSING_PERMISSIONS, ERROR_CODE_UNKNOWN } from './constants';
|
|
5
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;
|
|
@@ -38,6 +39,8 @@ export type MetadataInstanceFormProps = {
|
|
|
38
39
|
isBoundingBoxEnabled?: boolean;
|
|
39
40
|
onSelectMetadataField?: (field: MetadataTemplateField | null) => void;
|
|
40
41
|
selectedMetadataFieldId?: string | null;
|
|
42
|
+
fetchAvatarUrls?: FetchAvatarUrls;
|
|
43
|
+
fetchUsers?: FetchUsers;
|
|
41
44
|
};
|
|
42
45
|
export type MetadataInstanceFormWrapperProps<T> = {
|
|
43
46
|
areAiSuggestionsAvailable: boolean;
|
|
@@ -88,3 +91,4 @@ export type JSONPatchOperation = {
|
|
|
88
91
|
value?: JSONPatchValue;
|
|
89
92
|
};
|
|
90
93
|
export type JSONPatchOperations = JSONPatchOperation[];
|
|
94
|
+
export type { FetchUsers, FetchAvatarUrls } from '../../../metadata-editor-fields/components/metadata-user-field/types';
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@box/metadata-editor",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.18",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@ariakit/react": "0.4.21",
|
|
6
6
|
"@box/blueprint-web": "^16.20.1",
|
|
7
7
|
"@box/blueprint-web-assets": "^5.7.8",
|
|
8
8
|
"@box/box-ai-agent-selector": "^2.2.17",
|
|
9
|
-
"@box/combobox-with-api": "^2.2.
|
|
9
|
+
"@box/combobox-with-api": "^2.2.18",
|
|
10
10
|
"@box/metadata-taxonomy-picker": "^3.3.0",
|
|
11
11
|
"@box/metadata-template-browser": "^2.2.17",
|
|
12
|
+
"@box/user-selector": "^2.2.18",
|
|
12
13
|
"formik": "^2.0.3",
|
|
13
14
|
"lodash": "^4.17.15",
|
|
14
15
|
"react": "^17.0.0 || ^18.0.0",
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
"@box/box-ai-agent-selector": "^2.2.17",
|
|
24
25
|
"@box/metadata-taxonomy-picker": "^3.3.0",
|
|
25
26
|
"@box/storybook-utils": "^1.2.17",
|
|
27
|
+
"@box/user-selector": "^2.2.18",
|
|
26
28
|
"@testing-library/react": "^15.0.6",
|
|
27
29
|
"react": "^18.3.0",
|
|
28
30
|
"react-dom": "^18.3.0",
|