@contentstack/live-preview-utils 4.3.0 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -30
- package/dist/legacy/light-sdk.cjs +1 -1
- package/dist/legacy/light-sdk.js +1 -1
- package/dist/legacy/livePreview/editButton/editButton.cjs +2 -0
- package/dist/legacy/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/legacy/livePreview/editButton/editButton.js +2 -0
- package/dist/legacy/livePreview/editButton/editButton.js.map +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/legacy/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/legacy/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs +111 -27
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js +112 -28
- package/dist/legacy/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.cjs +4 -0
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.d.cts +8 -1
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.d.ts +8 -1
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.js +4 -0
- package/dist/legacy/visualBuilder/utils/getWorkflowStageDetails.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs +41 -6
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.cts +9 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.d.ts +9 -1
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.js +41 -6
- package/dist/legacy/visualBuilder/utils/isFieldDisabled.js.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs +1 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.cts +1 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.d.ts +1 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js +1 -0
- package/dist/legacy/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs +30 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/legacy/visualBuilder/visualBuilder.style.d.cts +5 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.d.ts +5 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.js +30 -0
- package/dist/legacy/visualBuilder/visualBuilder.style.js.map +1 -1
- package/dist/modern/light-sdk.cjs +1 -1
- package/dist/modern/light-sdk.js +1 -1
- package/dist/modern/livePreview/editButton/editButton.cjs +2 -0
- package/dist/modern/livePreview/editButton/editButton.cjs.map +1 -1
- package/dist/modern/livePreview/editButton/editButton.js +2 -0
- package/dist/modern/livePreview/editButton/editButton.js.map +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.cjs +1 -1
- package/dist/modern/livePreview/eventManager/postMessageEvent.hooks.js +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.cjs +1 -1
- package/dist/modern/preview/contentstack-live-preview-HOC.js +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs +110 -27
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.cjs.map +1 -1
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js +111 -28
- package/dist/modern/visualBuilder/components/fieldLabelWrapper.js.map +1 -1
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.cjs +4 -0
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.d.cts +8 -1
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.d.ts +8 -1
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.js +4 -0
- package/dist/modern/visualBuilder/utils/getWorkflowStageDetails.js.map +1 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs +40 -6
- package/dist/modern/visualBuilder/utils/isFieldDisabled.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.d.cts +9 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.d.ts +9 -1
- package/dist/modern/visualBuilder/utils/isFieldDisabled.js +40 -6
- package/dist/modern/visualBuilder/utils/isFieldDisabled.js.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs +1 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.cjs.map +1 -1
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.cts +1 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.d.ts +1 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js +1 -0
- package/dist/modern/visualBuilder/utils/types/postMessage.types.js.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.cjs +30 -0
- package/dist/modern/visualBuilder/visualBuilder.style.cjs.map +1 -1
- package/dist/modern/visualBuilder/visualBuilder.style.d.cts +5 -0
- package/dist/modern/visualBuilder/visualBuilder.style.d.ts +5 -0
- package/dist/modern/visualBuilder/visualBuilder.style.js +30 -0
- package/dist/modern/visualBuilder/visualBuilder.style.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/components/fieldLabelWrapper.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useEffect, useState } from \"preact/compat\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { DisableReason, isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { CaretIcon, CaretRightIcon, InfoIcon } from \"./icons\";\nimport { LoadingIcon } from \"./icons/loading\";\nimport { FieldTypeIconsMap, getFieldIcon } from \"../generators/generateCustomCursor\";\nimport { uniqBy } from \"lodash-es\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { CslpError } from \"./CslpError\";\nimport { hasPostMessageError } from \"../utils/errorHandling\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { ContentTypeIcon } from \"./icons\";\nimport { ToolbarTooltip } from \"./Tooltip\";\nimport { fetchEntryPermissionsAndStageDetails } from \"../utils/fetchEntryPermissionsAndStageDetails\";\nimport { VariantIndicator } from \"./VariantIndicator\";\nimport { handleRevalidateFieldData } from \"../eventManager/useRevalidateFieldDataPostMessageEvent\";\nimport { RESULT_TYPES } from \"../utils/constants\";\n\ninterface ReferenceParentMap {\n [entryUid: string]: {\n contentTypeUid: string;\n contentTypeTitle: string;\n referenceFieldName: string;\n }[]\n}\n\nasync function getFieldDisplayNames(fieldMetadata: CslpData[]) {\n const result = await visualBuilderPostMessage?.send<{\n [k: string]: string;\n }>(VisualBuilderPostMessageEvents.GET_FIELD_DISPLAY_NAMES, fieldMetadata);\n return result;\n}\n\nasync function getContentTypeName(contentTypeUid: string) {\n try {\n const result = await visualBuilderPostMessage?.send<{\n contentTypeName: string;\n }>(VisualBuilderPostMessageEvents.GET_CONTENT_TYPE_NAME, {\n content_type_uid: contentTypeUid,\n });\n return result?.contentTypeName;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting content type name\", e);\n return \"\";\n }\n}\n\nasync function getReferenceParentMap() {\n try {\n const result = await visualBuilderPostMessage?.send<ReferenceParentMap>(VisualBuilderPostMessageEvents.REFERENCE_MAP, {}) ?? {};\n return result;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting reference parent map\", e);\n return {};\n }\n}\n\ninterface FieldLabelWrapperProps {\n fieldMetadata: CslpData;\n eventDetails: VisualBuilderCslpEventDetails;\n parentPaths: string[];\n getParentEditableElement: (cslp: string) => HTMLElement | null;\n}\n\ninterface ICurrentField {\n text: string;\n contentTypeName: string;\n icon: JSX.Element;\n prefixIcon: any;\n disabled: boolean;\n isVariant: boolean;\n isReference: boolean;\n referenceFieldName: string;\n parentContentTypeName: string;\n}\n\nfunction FieldLabelWrapperComponent(\n props: FieldLabelWrapperProps\n): JSX.Element {\n const { eventDetails } = props;\n const [currentField, setCurrentField] = useState<ICurrentField>({\n text: \"\",\n contentTypeName: \"\",\n icon: <CaretIcon />,\n prefixIcon: null,\n disabled: false,\n isVariant: false,\n isReference: false,\n referenceFieldName: \"\",\n parentContentTypeName: \"\",\n });\n const [displayNames, setDisplayNames] = useState<Record<string, string>>(\n {}\n );\n const [dataLoading, setDataLoading] = useState(true);\n const [error, setError] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n function calculateTopOffset(index: number) {\n const height = -30; // from bottom\n const offset = (index + 1) * height;\n return `${offset}px`;\n }\n\n useEffect(() => {\n const fetchData = async () => {\n setDataLoading(true);\n const allPaths = uniqBy(\n [\n props.fieldMetadata,\n ...props.parentPaths\n .filter((path) => path)\n .map((path) => {\n return extractDetailsFromCslp(path);\n }),\n ],\n \"cslpValue\"\n );\n const [displayNames, fieldSchema, contentTypeName, referenceParentMap] = await Promise.all([\n getFieldDisplayNames(allPaths),\n FieldSchemaMap.getFieldSchema(\n props.fieldMetadata.content_type_uid,\n props.fieldMetadata.fieldPath\n ),\n getContentTypeName(\n props.fieldMetadata.content_type_uid\n ),\n getReferenceParentMap()\n ]);\n const entryUid = props.fieldMetadata.entry_uid;\n\n const referenceData = referenceParentMap[entryUid];\n const isReference = !!referenceData;\n\n let referenceFieldName = referenceData ? referenceData[0].referenceFieldName : \"\";\n let parentContentTypeName = referenceData ? referenceData[0].contentTypeTitle : \"\";\n\n if(isReference) {\n const domAncestor = eventDetails.editableElement.closest(`[data-cslp]:not([data-cslp^=\"${props.fieldMetadata.content_type_uid}\"])`);\n if(domAncestor) {\n const domAncestorCslp = domAncestor.getAttribute(\"data-cslp\");\n if (isValidCslp(domAncestorCslp)) {\n const domAncestorDetails = extractDetailsFromCslp(domAncestorCslp);\n const domAncestorContentTypeUid = domAncestorDetails.content_type_uid;\n const domAncestorContentParent = referenceData?.find(data => data.contentTypeUid === domAncestorContentTypeUid);\n if(domAncestorContentParent) {\n referenceFieldName = domAncestorContentParent.referenceFieldName;\n parentContentTypeName = domAncestorContentParent.contentTypeTitle;\n }\n }\n }\n }\n\n if (hasPostMessageError(displayNames) || !fieldSchema) {\n setDataLoading(false);\n setError(true);\n\n return;\n }\n\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid: props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n fieldPathWithIndex: props.fieldMetadata.fieldPathWithIndex,\n });\n const { isDisabled: fieldDisabled, reason } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n resolvedVariantPermissions,\n entryAcl,\n entryWorkflowStageDetails,\n );\n\n const handleLinkVariant = async () => {\n try {\n if (fieldSchema.field_metadata?.canLinkVariant) {\n const result = await visualBuilderPostMessage?.send<{\n type: typeof RESULT_TYPES.SUCCESS | typeof RESULT_TYPES.ERROR;\n message: string;\n }>(\n VisualBuilderPostMessageEvents.OPEN_LINK_VARIANT_MODAL,\n {\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n }\n );\n\n // If the modal was closed or linking failed, do nothing\n if (!result || result.type === RESULT_TYPES.ERROR) {\n return;\n }\n\n // If linking was successful and requires revalidation, revalidate\n if (result.type === RESULT_TYPES.SUCCESS) {\n await handleRevalidateFieldData();\n }\n }\n } catch (error) {\n console.error(\n \"Error in link variant modal flow:\",\n error\n );\n }\n };\n\n const currentFieldDisplayName =\n displayNames?.[props.fieldMetadata.cslpValue] ??\n fieldSchema.display_name;\n\n const hasParentPaths = !!props?.parentPaths?.length;\n const isVariant = props.fieldMetadata.variant ? true : false;\n\n setCurrentField({\n text: currentFieldDisplayName,\n contentTypeName: contentTypeName ?? \"\",\n icon: fieldDisabled ? (\n <div\n className={classNames(\n visualBuilderStyles()[\n \"visual-builder__tooltip--persistent\"\n ]\n )}\n data-tooltip={!reason?.includes(DisableReason.CanLinkVariant)\n ? reason\n : undefined}\n >\n {reason\n .includes(DisableReason.CanLinkVariant) && (\n <div\n className={visualBuilderStyles()[\"visual-builder__custom-tooltip\"]}\n onClick={handleLinkVariant}\n >\n {(() => {\n const [before, after] = reason.split(\n DisableReason.UnderlinedAndClickableWord\n );\n return (\n <>\n {before}\n <span style={{ textDecoration: \"underline\" }}>{DisableReason.UnderlinedAndClickableWord}</span>\n {after}\n </>\n );\n })()}\n </div>\n )}\n <InfoIcon />\n </div>\n ) : hasParentPaths ? (\n <CaretIcon />\n ) : (\n <></>\n ),\n isReference,\n prefixIcon: getFieldIcon(fieldSchema),\n disabled: fieldDisabled,\n referenceFieldName,\n parentContentTypeName,\n isVariant: isVariant,\n });\n\n if (displayNames) {\n setDisplayNames(displayNames);\n }\n if (Object.keys(displayNames || {})?.length === allPaths.length) {\n setDataLoading(false);\n }\n };\n\n try {\n fetchData();\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error fetching field label data\", e);\n }\n }, [props]);\n\n const onParentPathClick = (cslp: string) => {\n const parentElement = props.getParentEditableElement(cslp);\n if (parentElement) {\n // emulate clicking on the parent element\n parentElement.click();\n }\n };\n\n function getCurrentFieldIcon() {\n if (error) {\n return null;\n } else if (dataLoading) {\n return <LoadingIcon />;\n } else {\n return currentField.icon;\n }\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-container\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-container\"\n ]\n )}\n >\n {currentField.isVariant ? <VariantIndicator /> : null}\n <ToolbarTooltip data={{contentTypeName: currentField.parentContentTypeName, referenceFieldName: currentField.referenceFieldName}} disabled={!currentField.isReference || isDropdownOpen}>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper\"\n ],\n {\n \"visual-builder__focused-toolbar--field-disabled\":\n currentField.disabled,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--field-disabled\"\n ]]: currentField.disabled,\n },\n {\n \"field-label-dropdown-open\": isDropdownOpen,\n [visualBuilderStyles()[\"field-label-dropdown-open\"]]:\n isDropdownOpen,\n },\n {\n \"visual-builder__focused-toolbar--variant\":\n currentField.isVariant,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--variant\"\n ]]: currentField.isVariant,\n }\n )}\n onClick={() => setIsDropdownOpen((prev) => !prev)}\n data-testid=\"visual-builder__focused-toolbar__field-label-wrapper\"\n data-hovered-cslp={props.fieldMetadata.cslpValue}\n >\n <button\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field visual-builder__button visual-builder__button--primary visual-builder__button-loader\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--primary\"\n ],\n visualBuilderStyles()[\"visual-builder__button-loader\"],\n error &&\n visualBuilderStyles()[\n \"visual-builder__button-error\"\n ]\n )}\n disabled={dataLoading}\n >\n {\n currentField.isReference && !dataLoading && !error ? \n <div\n className={classNames(\n \"visual-builder__reference-icon-container\",\n visualBuilderStyles()[\"visual-builder__reference-icon-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: FieldTypeIconsMap.reference,\n }}\n data-testid=\"visual-builder__field-icon-caret\"\n />\n <CaretRightIcon />\n </div> : null\n }\n {\n currentField.contentTypeName && !dataLoading && !error ?\n <>\n <ContentTypeIcon />\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__ct-name\"\n >\n {currentField.contentTypeName + \" : \"}\n </div>\n </> : null\n }\n {currentField.prefixIcon ? (\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: currentField.prefixIcon,\n }}\n data-testid=\"visual-builder__field-icon\"\n />\n ) : null}\n {currentField.text ? (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__text\"\n >\n {currentField.text}\n </div>\n ) : null}\n {getCurrentFieldIcon()}\n {error ? <CslpError /> : null}\n </button>\n {props.parentPaths.map((path, index) => (\n <button\n key={path}\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field visual-builder__button visual-builder__button--secondary visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--secondary\"\n ],\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-target-cslp={path}\n style={{ top: calculateTopOffset(index) }}\n onClick={() => onParentPathClick(path)}\n >\n {displayNames[path]}\n </button>\n ))}\n </div>\n </ToolbarTooltip>\n </div>\n );\n}\n\nexport default FieldLabelWrapperComponent;\n"],"mappings":"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","names":["displayNames","_a","_b","error"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/components/fieldLabelWrapper.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport React, { useEffect, useRef, useState } from \"preact/compat\";\nimport { extractDetailsFromCslp, isValidCslp } from \"../../cslp\";\nimport { CslpData } from \"../../cslp/types/cslp.types\";\nimport { VisualBuilderCslpEventDetails } from \"../types/visualBuilder.types\";\nimport { FieldSchemaMap } from \"../utils/fieldSchemaMap\";\nimport { DisableReason, isFieldDisabled } from \"../utils/isFieldDisabled\";\nimport visualBuilderPostMessage from \"../utils/visualBuilderPostMessage\";\nimport { CaretIcon, CaretRightIcon, InfoIcon } from \"./icons\";\nimport { LoadingIcon } from \"./icons/loading\";\nimport { FieldTypeIconsMap, getFieldIcon } from \"../generators/generateCustomCursor\";\nimport { uniqBy } from \"lodash-es\";\nimport { visualBuilderStyles } from \"../visualBuilder.style\";\nimport { CslpError } from \"./CslpError\";\nimport { hasPostMessageError } from \"../utils/errorHandling\";\nimport { VisualBuilderPostMessageEvents } from \"../utils/types/postMessage.types\";\nimport { ContentTypeIcon } from \"./icons\";\nimport { ToolbarTooltip } from \"./Tooltip\";\nimport { fetchEntryPermissionsAndStageDetails } from \"../utils/fetchEntryPermissionsAndStageDetails\";\nimport { VariantIndicator } from \"./VariantIndicator\";\nimport { handleRevalidateFieldData } from \"../eventManager/useRevalidateFieldDataPostMessageEvent\";\nimport { RESULT_TYPES } from \"../utils/constants\";\n\ninterface ReferenceParentMap {\n [entryUid: string]: {\n contentTypeUid: string;\n contentTypeTitle: string;\n referenceFieldName: string;\n }[]\n}\n\nasync function getFieldDisplayNames(fieldMetadata: CslpData[]) {\n const result = await visualBuilderPostMessage?.send<{\n [k: string]: string;\n }>(VisualBuilderPostMessageEvents.GET_FIELD_DISPLAY_NAMES, fieldMetadata);\n return result;\n}\n\nasync function getContentTypeName(contentTypeUid: string) {\n try {\n const result = await visualBuilderPostMessage?.send<{\n contentTypeName: string;\n }>(VisualBuilderPostMessageEvents.GET_CONTENT_TYPE_NAME, {\n content_type_uid: contentTypeUid,\n });\n return result?.contentTypeName;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting content type name\", e);\n return \"\";\n }\n}\n\nasync function getReferenceParentMap() {\n try {\n const result = await visualBuilderPostMessage?.send<ReferenceParentMap>(VisualBuilderPostMessageEvents.REFERENCE_MAP, {}) ?? {};\n return result;\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error getting reference parent map\", e);\n return {};\n }\n}\n\ninterface FieldLabelWrapperProps {\n fieldMetadata: CslpData;\n eventDetails: VisualBuilderCslpEventDetails;\n parentPaths: string[];\n getParentEditableElement: (cslp: string) => HTMLElement | null;\n}\n\ninterface ICurrentField {\n text: string;\n contentTypeName: string;\n icon: JSX.Element;\n prefixIcon: any;\n disabled: boolean;\n isVariant: boolean;\n isReference: boolean;\n referenceFieldName: string;\n parentContentTypeName: string;\n}\n\n/** Space needed above the icon for the default (above) tooltip before flipping below. */\nconst TOOLTIP_VIEWPORT_TOP_CLEARANCE_PX = 148;\n\ninterface FieldLabelDisabledIconProps {\n reason: string;\n workflowRequestUi?: \"request\" | \"pending\";\n usePlainDataTooltip: boolean;\n onLinkVariant: () => void;\n onRequestEditAccess: () => void | Promise<void>;\n}\n\nfunction FieldLabelDisabledIcon(\n props: FieldLabelDisabledIconProps\n): JSX.Element {\n const {\n reason,\n workflowRequestUi,\n usePlainDataTooltip,\n onLinkVariant,\n onRequestEditAccess,\n } = props;\n const wrapRef = useRef<HTMLDivElement>(null);\n const [showTooltipBelow, setShowTooltipBelow] = useState(false);\n\n const updateTooltipPlacement = () => {\n const el = wrapRef.current;\n if (!el) return;\n const { top } = el.getBoundingClientRect();\n setShowTooltipBelow(top < TOOLTIP_VIEWPORT_TOP_CLEARANCE_PX);\n };\n\n const customTooltipClass = classNames(\n visualBuilderStyles()[\"visual-builder__custom-tooltip\"],\n showTooltipBelow &&\n visualBuilderStyles()[\"visual-builder__custom-tooltip--below\"]\n );\n\n const workflowAccessTooltipClass = classNames(\n visualBuilderStyles()[\"visual-builder__custom-tooltip\"],\n showTooltipBelow &&\n visualBuilderStyles()[\"visual-builder__custom-tooltip--below\"],\n visualBuilderStyles()[\n \"visual-builder__custom-tooltip--workflow-access\"\n ]\n );\n\n return (\n <div\n ref={wrapRef}\n onMouseEnter={updateTooltipPlacement}\n className={classNames(\n visualBuilderStyles()[\"visual-builder__tooltip--persistent\"],\n showTooltipBelow &&\n visualBuilderStyles()[\n \"visual-builder__tooltip--persistent--below\"\n ]\n )}\n data-tooltip={usePlainDataTooltip ? reason : undefined}\n >\n {reason?.includes(DisableReason.CanLinkVariant) ? (\n <div className={customTooltipClass} onClick={onLinkVariant}>\n {(() => {\n const [before, after] = reason.split(\n DisableReason.UnderlinedAndClickableWord\n );\n return (\n <>\n {before}\n <span style={{ textDecoration: \"underline\" }}>\n {DisableReason.UnderlinedAndClickableWord}\n </span>\n {after}\n </>\n );\n })()}\n </div>\n ) : null}\n {workflowRequestUi === \"request\" && reason ? (\n <div className={workflowAccessTooltipClass}>\n <span>{reason}</span>{\" \"}\n <span\n role=\"button\"\n tabIndex={0}\n style={{\n textDecoration: \"underline\",\n cursor: \"pointer\",\n }}\n onClick={(e) => {\n e.stopPropagation();\n onRequestEditAccess();\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onRequestEditAccess();\n }\n }}\n >\n Request Edit Access\n </span>\n </div>\n ) : null}\n {workflowRequestUi === \"pending\" && reason ? (\n <div className={workflowAccessTooltipClass}>{reason}</div>\n ) : null}\n <InfoIcon />\n </div>\n );\n}\n\nfunction FieldLabelWrapperComponent(\n props: FieldLabelWrapperProps\n): JSX.Element {\n const { eventDetails } = props;\n const [currentField, setCurrentField] = useState<ICurrentField>({\n text: \"\",\n contentTypeName: \"\",\n icon: <CaretIcon />,\n prefixIcon: null,\n disabled: false,\n isVariant: false,\n isReference: false,\n referenceFieldName: \"\",\n parentContentTypeName: \"\",\n });\n const [displayNames, setDisplayNames] = useState<Record<string, string>>(\n {}\n );\n const [dataLoading, setDataLoading] = useState(true);\n const [error, setError] = useState(false);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n\n function calculateTopOffset(index: number) {\n const height = -30; // from bottom\n const offset = (index + 1) * height;\n return `${offset}px`;\n }\n\n useEffect(() => {\n const fetchData = async () => {\n setDataLoading(true);\n const allPaths = uniqBy(\n [\n props.fieldMetadata,\n ...props.parentPaths\n .filter((path) => path)\n .map((path) => {\n return extractDetailsFromCslp(path);\n }),\n ],\n \"cslpValue\"\n );\n const [displayNames, fieldSchema, contentTypeName, referenceParentMap] = await Promise.all([\n getFieldDisplayNames(allPaths),\n FieldSchemaMap.getFieldSchema(\n props.fieldMetadata.content_type_uid,\n props.fieldMetadata.fieldPath\n ),\n getContentTypeName(\n props.fieldMetadata.content_type_uid\n ),\n getReferenceParentMap()\n ]);\n const entryUid = props.fieldMetadata.entry_uid;\n\n const referenceData = referenceParentMap[entryUid];\n const isReference = !!referenceData;\n\n let referenceFieldName = referenceData ? referenceData[0].referenceFieldName : \"\";\n let parentContentTypeName = referenceData ? referenceData[0].contentTypeTitle : \"\";\n\n if(isReference) {\n const domAncestor = eventDetails.editableElement.closest(`[data-cslp]:not([data-cslp^=\"${props.fieldMetadata.content_type_uid}\"])`);\n if(domAncestor) {\n const domAncestorCslp = domAncestor.getAttribute(\"data-cslp\");\n if (isValidCslp(domAncestorCslp)) {\n const domAncestorDetails = extractDetailsFromCslp(domAncestorCslp);\n const domAncestorContentTypeUid = domAncestorDetails.content_type_uid;\n const domAncestorContentParent = referenceData?.find(data => data.contentTypeUid === domAncestorContentTypeUid);\n if(domAncestorContentParent) {\n referenceFieldName = domAncestorContentParent.referenceFieldName;\n parentContentTypeName = domAncestorContentParent.contentTypeTitle;\n }\n }\n }\n }\n\n if (hasPostMessageError(displayNames) || !fieldSchema) {\n setDataLoading(false);\n setError(true);\n\n return;\n }\n\n const { acl: entryAcl, workflowStage: entryWorkflowStageDetails, resolvedVariantPermissions } =\n await fetchEntryPermissionsAndStageDetails({\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid: props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n fieldPathWithIndex: props.fieldMetadata.fieldPathWithIndex,\n });\n const {\n isDisabled: fieldDisabled,\n reason,\n workflowRequestUi,\n } = isFieldDisabled(\n fieldSchema,\n eventDetails,\n resolvedVariantPermissions,\n entryAcl,\n entryWorkflowStageDetails,\n );\n const handleRequestEditAccess = async () => {\n try {\n await visualBuilderPostMessage?.send(\n VisualBuilderPostMessageEvents.OPEN_REQUEST_EDIT_ACCESS,\n {\n entryUid: props.fieldMetadata.entry_uid,\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n locale: props.fieldMetadata.locale,\n variantUid: props.fieldMetadata.variant,\n }\n );\n } catch (error) {\n console.error(\n \"Error opening request edit access flow:\",\n error\n );\n }\n };\n\n const handleLinkVariant = async () => {\n try {\n if (fieldSchema.field_metadata?.canLinkVariant) {\n const result = await visualBuilderPostMessage?.send<{\n type: typeof RESULT_TYPES.SUCCESS | typeof RESULT_TYPES.ERROR;\n message: string;\n }>(\n VisualBuilderPostMessageEvents.OPEN_LINK_VARIANT_MODAL,\n {\n contentTypeUid:\n props.fieldMetadata.content_type_uid,\n }\n );\n\n // If the modal was closed or linking failed, do nothing\n if (!result || result.type === RESULT_TYPES.ERROR) {\n return;\n }\n\n // If linking was successful and requires revalidation, revalidate\n if (result.type === RESULT_TYPES.SUCCESS) {\n await handleRevalidateFieldData();\n }\n }\n } catch (error) {\n console.error(\n \"Error in link variant modal flow:\",\n error\n );\n }\n };\n\n const currentFieldDisplayName =\n displayNames?.[props.fieldMetadata.cslpValue] ??\n fieldSchema.display_name;\n\n const hasParentPaths = !!props?.parentPaths?.length;\n const isVariant = props.fieldMetadata.variant ? true : false;\n\n const usePlainDataTooltip =\n reason &&\n !reason.includes(DisableReason.CanLinkVariant) &&\n workflowRequestUi == null;\n\n setCurrentField({\n text: currentFieldDisplayName,\n contentTypeName: contentTypeName ?? \"\",\n icon: fieldDisabled ? (\n <FieldLabelDisabledIcon\n reason={reason}\n {...(workflowRequestUi != null\n ? { workflowRequestUi }\n : {})}\n usePlainDataTooltip={Boolean(usePlainDataTooltip)}\n onLinkVariant={handleLinkVariant}\n onRequestEditAccess={handleRequestEditAccess}\n />\n ) : hasParentPaths ? (\n <CaretIcon />\n ) : (\n <></>\n ),\n isReference,\n prefixIcon: getFieldIcon(fieldSchema),\n disabled: fieldDisabled,\n referenceFieldName,\n parentContentTypeName,\n isVariant: isVariant,\n });\n\n if (displayNames) {\n setDisplayNames(displayNames);\n }\n if (Object.keys(displayNames || {})?.length === allPaths.length) {\n setDataLoading(false);\n }\n };\n\n try {\n fetchData();\n } catch(e) {\n console.warn(\"[getFieldLabelWrapper] Error fetching field label data\", e);\n }\n }, [props]);\n\n const onParentPathClick = (cslp: string) => {\n const parentElement = props.getParentEditableElement(cslp);\n if (parentElement) {\n // emulate clicking on the parent element\n parentElement.click();\n }\n };\n\n function getCurrentFieldIcon() {\n if (error) {\n return null;\n } else if (dataLoading) {\n return <LoadingIcon />;\n } else {\n return currentField.icon;\n }\n }\n\n return (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-container\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-container\"\n ]\n )}\n >\n {currentField.isVariant ? <VariantIndicator /> : null}\n <ToolbarTooltip data={{contentTypeName: currentField.parentContentTypeName, referenceFieldName: currentField.referenceFieldName}} disabled={!currentField.isReference || isDropdownOpen}>\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper\"\n ],\n {\n \"visual-builder__focused-toolbar--field-disabled\":\n currentField.disabled,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--field-disabled\"\n ]]: currentField.disabled,\n },\n {\n \"field-label-dropdown-open\": isDropdownOpen,\n [visualBuilderStyles()[\"field-label-dropdown-open\"]]:\n isDropdownOpen,\n },\n {\n \"visual-builder__focused-toolbar--variant\":\n currentField.isVariant,\n },\n {\n [visualBuilderStyles()[\n \"visual-builder__focused-toolbar--variant\"\n ]]: currentField.isVariant,\n }\n )}\n onClick={() => setIsDropdownOpen((prev) => !prev)}\n data-testid=\"visual-builder__focused-toolbar__field-label-wrapper\"\n data-hovered-cslp={props.fieldMetadata.cslpValue}\n >\n <button\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field visual-builder__button visual-builder__button--primary visual-builder__button-loader\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__current-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--primary\"\n ],\n visualBuilderStyles()[\"visual-builder__button-loader\"],\n error &&\n visualBuilderStyles()[\n \"visual-builder__button-error\"\n ]\n )}\n disabled={dataLoading}\n >\n {\n currentField.isReference && !dataLoading && !error ? \n <div\n className={classNames(\n \"visual-builder__reference-icon-container\",\n visualBuilderStyles()[\"visual-builder__reference-icon-container\"]\n )}\n >\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: FieldTypeIconsMap.reference,\n }}\n data-testid=\"visual-builder__field-icon-caret\"\n />\n <CaretRightIcon />\n </div> : null\n }\n {\n currentField.contentTypeName && !dataLoading && !error ?\n <>\n <ContentTypeIcon />\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__ct-name\"\n >\n {currentField.contentTypeName + \" : \"}\n </div>\n </> : null\n }\n {currentField.prefixIcon ? (\n <div\n className={classNames(\n \"visual-builder__field-icon\",\n visualBuilderStyles()[\n \"visual-builder__field-icon\"\n ]\n )}\n dangerouslySetInnerHTML={{\n __html: currentField.prefixIcon,\n }}\n data-testid=\"visual-builder__field-icon\"\n />\n ) : null}\n {currentField.text ? (\n <div\n className={classNames(\n \"visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-testid=\"visual-builder__focused-toolbar__text\"\n >\n {currentField.text}\n </div>\n ) : null}\n {getCurrentFieldIcon()}\n {error ? <CslpError /> : null}\n </button>\n {props.parentPaths.map((path, index) => (\n <button\n key={path}\n className={classNames(\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field visual-builder__button visual-builder__button--secondary visual-builder__focused-toolbar__text\",\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__field-label-wrapper__parent-field\"\n ],\n visualBuilderStyles()[\"visual-builder__button\"],\n visualBuilderStyles()[\n \"visual-builder__button--secondary\"\n ],\n visualBuilderStyles()[\n \"visual-builder__focused-toolbar__text\"\n ]\n )}\n data-target-cslp={path}\n style={{ top: calculateTopOffset(index) }}\n onClick={() => onParentPathClick(path)}\n >\n {displayNames[path]}\n </button>\n ))}\n </div>\n </ToolbarTooltip>\n </div>\n );\n}\n\nexport default FieldLabelWrapperComponent;\n"],"mappings":"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","names":["displayNames","_a","error","_b"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/getWorkflowStageDetails.ts"],"sourcesContent":["import { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\n\nexport async function getWorkflowStageDetails({\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n}: {\n entryUid: string;\n contentTypeUid: string;\n locale: string;\n variantUid?: string | undefined;\n}): Promise<WorkflowStageDetails> {\n try {\n const result =\n await visualBuilderPostMessage?.send<WorkflowStageDetails>(\n VisualBuilderPostMessageEvents.GET_WORKFLOW_STAGE_DETAILS,\n {\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n }\n );\n if (result) {\n return result;\n }\n } catch (e) {\n console.debug(\n \"[Visual Builder] Error fetching workflow stage details\",\n e\n );\n }\n // allow editing when things go wrong,\n return {\n stage: {\n name: \"Unknown\",\n },\n permissions: {\n entry: {\n update: true,\n },\n },\n };\n}\n\nexport interface WorkflowStageDetails {\n stage:\n | {\n name: string;\n }\n | undefined;\n permissions: {\n entry: {\n update: boolean;\n };\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA+C;AAC/C,sCAAqC;AAErC,eAAsB,wBAAwB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAKkC;AAblC;AAcI,MAAI;AACA,UAAM,SACF,QAAM,qCAAAA,YAAA,mBAA0B;AAAA,MAC5B,kDAA+B;AAAA,MAC/B;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA;AAER,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AAAA,EACJ,SAAS,GAAG;AACR,YAAQ;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,OAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,IACA,aAAa;AAAA,MACT,OAAO;AAAA,QACH,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AACJ;","names":["visualBuilderPostMessage"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/getWorkflowStageDetails.ts"],"sourcesContent":["import { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\n\nexport async function getWorkflowStageDetails({\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n}: {\n entryUid: string;\n contentTypeUid: string;\n locale: string;\n variantUid?: string | undefined;\n}): Promise<WorkflowStageDetails> {\n try {\n const result =\n await visualBuilderPostMessage?.send<WorkflowStageDetails>(\n VisualBuilderPostMessageEvents.GET_WORKFLOW_STAGE_DETAILS,\n {\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n }\n );\n if (result) {\n return result;\n }\n } catch (e) {\n console.debug(\n \"[Visual Builder] Error fetching workflow stage details\",\n e\n );\n }\n // allow editing when things go wrong,\n return {\n stage: {\n name: \"Unknown\",\n },\n permissions: {\n entry: {\n update: true,\n },\n },\n requestEditAccess: {\n canRequest: false,\n hasPending: false,\n },\n };\n}\n\n/** Mirrors visual-editor GET_WORKFLOW_STAGE_DETAILS payload (QuickForm / canvas alignment). */\nexport interface WorkflowStageRequestEditAccess {\n canRequest: boolean;\n hasPending: boolean;\n}\n\nexport interface WorkflowStageDetails {\n stage:\n | {\n name: string;\n }\n | undefined;\n permissions: {\n entry: {\n update: boolean;\n };\n };\n /** Present when returned by visual-editor; omitted in legacy SDK-only fallbacks. */\n requestEditAccess?: WorkflowStageRequestEditAccess;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAA+C;AAC/C,sCAAqC;AAErC,eAAsB,wBAAwB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAKkC;AAblC;AAcI,MAAI;AACA,UAAM,SACF,QAAM,qCAAAA,YAAA,mBAA0B;AAAA,MAC5B,kDAA+B;AAAA,MAC/B;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA;AAER,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AAAA,EACJ,SAAS,GAAG;AACR,YAAQ;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,OAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,IACA,aAAa;AAAA,MACT,OAAO;AAAA,QACH,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,mBAAmB;AAAA,MACf,YAAY;AAAA,MACZ,YAAY;AAAA,IAChB;AAAA,EACJ;AACJ;","names":["visualBuilderPostMessage"]}
|
|
@@ -4,6 +4,11 @@ declare function getWorkflowStageDetails({ entryUid, contentTypeUid, locale, var
|
|
|
4
4
|
locale: string;
|
|
5
5
|
variantUid?: string | undefined;
|
|
6
6
|
}): Promise<WorkflowStageDetails>;
|
|
7
|
+
/** Mirrors visual-editor GET_WORKFLOW_STAGE_DETAILS payload (QuickForm / canvas alignment). */
|
|
8
|
+
interface WorkflowStageRequestEditAccess {
|
|
9
|
+
canRequest: boolean;
|
|
10
|
+
hasPending: boolean;
|
|
11
|
+
}
|
|
7
12
|
interface WorkflowStageDetails {
|
|
8
13
|
stage: {
|
|
9
14
|
name: string;
|
|
@@ -13,6 +18,8 @@ interface WorkflowStageDetails {
|
|
|
13
18
|
update: boolean;
|
|
14
19
|
};
|
|
15
20
|
};
|
|
21
|
+
/** Present when returned by visual-editor; omitted in legacy SDK-only fallbacks. */
|
|
22
|
+
requestEditAccess?: WorkflowStageRequestEditAccess;
|
|
16
23
|
}
|
|
17
24
|
|
|
18
|
-
export { type WorkflowStageDetails, getWorkflowStageDetails };
|
|
25
|
+
export { type WorkflowStageDetails, type WorkflowStageRequestEditAccess, getWorkflowStageDetails };
|
|
@@ -4,6 +4,11 @@ declare function getWorkflowStageDetails({ entryUid, contentTypeUid, locale, var
|
|
|
4
4
|
locale: string;
|
|
5
5
|
variantUid?: string | undefined;
|
|
6
6
|
}): Promise<WorkflowStageDetails>;
|
|
7
|
+
/** Mirrors visual-editor GET_WORKFLOW_STAGE_DETAILS payload (QuickForm / canvas alignment). */
|
|
8
|
+
interface WorkflowStageRequestEditAccess {
|
|
9
|
+
canRequest: boolean;
|
|
10
|
+
hasPending: boolean;
|
|
11
|
+
}
|
|
7
12
|
interface WorkflowStageDetails {
|
|
8
13
|
stage: {
|
|
9
14
|
name: string;
|
|
@@ -13,6 +18,8 @@ interface WorkflowStageDetails {
|
|
|
13
18
|
update: boolean;
|
|
14
19
|
};
|
|
15
20
|
};
|
|
21
|
+
/** Present when returned by visual-editor; omitted in legacy SDK-only fallbacks. */
|
|
22
|
+
requestEditAccess?: WorkflowStageRequestEditAccess;
|
|
16
23
|
}
|
|
17
24
|
|
|
18
|
-
export { type WorkflowStageDetails, getWorkflowStageDetails };
|
|
25
|
+
export { type WorkflowStageDetails, type WorkflowStageRequestEditAccess, getWorkflowStageDetails };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/getWorkflowStageDetails.ts"],"sourcesContent":["import { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\n\nexport async function getWorkflowStageDetails({\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n}: {\n entryUid: string;\n contentTypeUid: string;\n locale: string;\n variantUid?: string | undefined;\n}): Promise<WorkflowStageDetails> {\n try {\n const result =\n await visualBuilderPostMessage?.send<WorkflowStageDetails>(\n VisualBuilderPostMessageEvents.GET_WORKFLOW_STAGE_DETAILS,\n {\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n }\n );\n if (result) {\n return result;\n }\n } catch (e) {\n console.debug(\n \"[Visual Builder] Error fetching workflow stage details\",\n e\n );\n }\n // allow editing when things go wrong,\n return {\n stage: {\n name: \"Unknown\",\n },\n permissions: {\n entry: {\n update: true,\n },\n },\n };\n}\n\nexport interface WorkflowStageDetails {\n stage:\n | {\n name: string;\n }\n | undefined;\n permissions: {\n entry: {\n update: boolean;\n };\n };\n}\n"],"mappings":";;;AAAA,SAAS,sCAAsC;AAC/C,OAAO,8BAA8B;AAErC,eAAsB,wBAAwB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAKkC;AAblC;AAcI,MAAI;AACA,UAAM,SACF,QAAM,qDAA0B;AAAA,MAC5B,+BAA+B;AAAA,MAC/B;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA;AAER,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AAAA,EACJ,SAAS,GAAG;AACR,YAAQ;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,OAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,IACA,aAAa;AAAA,MACT,OAAO;AAAA,QACH,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,EACJ;AACJ;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/getWorkflowStageDetails.ts"],"sourcesContent":["import { VisualBuilderPostMessageEvents } from \"./types/postMessage.types\";\nimport visualBuilderPostMessage from \"./visualBuilderPostMessage\";\n\nexport async function getWorkflowStageDetails({\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n}: {\n entryUid: string;\n contentTypeUid: string;\n locale: string;\n variantUid?: string | undefined;\n}): Promise<WorkflowStageDetails> {\n try {\n const result =\n await visualBuilderPostMessage?.send<WorkflowStageDetails>(\n VisualBuilderPostMessageEvents.GET_WORKFLOW_STAGE_DETAILS,\n {\n entryUid,\n contentTypeUid,\n locale,\n variantUid,\n }\n );\n if (result) {\n return result;\n }\n } catch (e) {\n console.debug(\n \"[Visual Builder] Error fetching workflow stage details\",\n e\n );\n }\n // allow editing when things go wrong,\n return {\n stage: {\n name: \"Unknown\",\n },\n permissions: {\n entry: {\n update: true,\n },\n },\n requestEditAccess: {\n canRequest: false,\n hasPending: false,\n },\n };\n}\n\n/** Mirrors visual-editor GET_WORKFLOW_STAGE_DETAILS payload (QuickForm / canvas alignment). */\nexport interface WorkflowStageRequestEditAccess {\n canRequest: boolean;\n hasPending: boolean;\n}\n\nexport interface WorkflowStageDetails {\n stage:\n | {\n name: string;\n }\n | undefined;\n permissions: {\n entry: {\n update: boolean;\n };\n };\n /** Present when returned by visual-editor; omitted in legacy SDK-only fallbacks. */\n requestEditAccess?: WorkflowStageRequestEditAccess;\n}\n"],"mappings":";;;AAAA,SAAS,sCAAsC;AAC/C,OAAO,8BAA8B;AAErC,eAAsB,wBAAwB;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAKkC;AAblC;AAcI,MAAI;AACA,UAAM,SACF,QAAM,qDAA0B;AAAA,MAC5B,+BAA+B;AAAA,MAC/B;AAAA,QACI;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACJ;AAAA;AAER,QAAI,QAAQ;AACR,aAAO;AAAA,IACX;AAAA,EACJ,SAAS,GAAG;AACR,YAAQ;AAAA,MACJ;AAAA,MACA;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,OAAO;AAAA,MACH,MAAM;AAAA,IACV;AAAA,IACA,aAAa;AAAA,MACT,OAAO;AAAA,QACH,QAAQ;AAAA,MACZ;AAAA,IACJ;AAAA,IACA,mBAAmB;AAAA,MACf,YAAY;AAAA,MACZ,YAAY;AAAA,IAChB;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -52,9 +52,12 @@ var DisableReason = {
|
|
|
52
52
|
WorkflowStagePermission: ({ stageName }) => `You do not have Edit access to this entry on the '${stageName}' workflow stage`,
|
|
53
53
|
EntryUpdateRestrictedRoleAndWorkflowStage: ({
|
|
54
54
|
stageName
|
|
55
|
-
}) => `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access
|
|
55
|
+
}) => `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,
|
|
56
|
+
WorkflowStageRequestEdit: ({ stageName }) => `You do not have the edit access to this entry on the '${stageName}' workflow stage.`,
|
|
57
|
+
WorkflowStageRequestPending: ({ stageName }) => `You do not have the edit access to this entry on the '${stageName}' workflow stage. Your request has been sent and is awaiting approval.`
|
|
56
58
|
};
|
|
57
59
|
var getDisableReason = (flags, params) => {
|
|
60
|
+
var _a;
|
|
58
61
|
if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;
|
|
59
62
|
if (flags.updateRestrictDueToNonLocalizableFields)
|
|
60
63
|
return DisableReason.LocalizedEntry;
|
|
@@ -76,8 +79,23 @@ var getDisableReason = (flags, params) => {
|
|
|
76
79
|
return DisableReason.EntryUpdateRestricted;
|
|
77
80
|
}
|
|
78
81
|
if (flags.updateRestrictDueToWorkflowStagePermission) {
|
|
82
|
+
const stageName = (params == null ? void 0 : params.stageName) ? params.stageName : "Unknown";
|
|
83
|
+
const req = (_a = params == null ? void 0 : params.entryWorkflowStageDetails) == null ? void 0 : _a.requestEditAccess;
|
|
84
|
+
const entryAllowsUpdate = (params == null ? void 0 : params.entryPermissions) == null || params.entryPermissions.update === true;
|
|
85
|
+
if (entryAllowsUpdate && !flags.updateRestrictDueToEntryUpdateRestriction && req) {
|
|
86
|
+
if (req.hasPending) {
|
|
87
|
+
return DisableReason.WorkflowStageRequestPending({
|
|
88
|
+
stageName
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
if (req.canRequest) {
|
|
92
|
+
return DisableReason.WorkflowStageRequestEdit({
|
|
93
|
+
stageName
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
79
97
|
return DisableReason.WorkflowStagePermission({
|
|
80
|
-
stageName
|
|
98
|
+
stageName
|
|
81
99
|
});
|
|
82
100
|
}
|
|
83
101
|
if (flags.updateRestrictDueToResolvedVariantPermissions) {
|
|
@@ -129,10 +147,27 @@ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, resolvedVariantPermiss
|
|
|
129
147
|
}
|
|
130
148
|
}
|
|
131
149
|
const isDisabled = Object.values(flags).some(Boolean);
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
150
|
+
const getDisableReasonParams = {};
|
|
151
|
+
if (((_d = entryWorkflowStageDetails == null ? void 0 : entryWorkflowStageDetails.stage) == null ? void 0 : _d.name) !== void 0) {
|
|
152
|
+
getDisableReasonParams.stageName = entryWorkflowStageDetails.stage.name;
|
|
153
|
+
}
|
|
154
|
+
if (entryWorkflowStageDetails !== void 0) {
|
|
155
|
+
getDisableReasonParams.entryWorkflowStageDetails = entryWorkflowStageDetails;
|
|
156
|
+
}
|
|
157
|
+
if (entryPermissions !== void 0) {
|
|
158
|
+
getDisableReasonParams.entryPermissions = entryPermissions;
|
|
159
|
+
}
|
|
160
|
+
const reason = getDisableReason(flags, getDisableReasonParams);
|
|
161
|
+
let workflowRequestUi;
|
|
162
|
+
if (flags.updateRestrictDueToWorkflowStagePermission && !flags.updateRestrictDueToEntryUpdateRestriction && (entryPermissions == null || entryPermissions.update === true) && (entryWorkflowStageDetails == null ? void 0 : entryWorkflowStageDetails.requestEditAccess)) {
|
|
163
|
+
const req = entryWorkflowStageDetails.requestEditAccess;
|
|
164
|
+
if (req.hasPending) {
|
|
165
|
+
workflowRequestUi = "pending";
|
|
166
|
+
} else if (req.canRequest) {
|
|
167
|
+
workflowRequestUi = "request";
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return workflowRequestUi !== void 0 ? { isDisabled, reason, workflowRequestUi } : { isDisabled, reason };
|
|
136
171
|
};
|
|
137
172
|
// Annotate the CommonJS export names for ESM import in node:
|
|
138
173
|
0 && (module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\nimport { WorkflowStageDetails } from \"./getWorkflowStageDetails\";\nimport { ResolvedVariantPermissions } from \"./getResolvedVariantPermissions\";\n\nexport const DisableReason = {\n ReadOnly: \"You have only read access to this field\",\n LocalizedEntry: \"Editing this field is restricted in localized entries\",\n ResolvedVariantPermissions: \"This field does not exist in the selected variant\",\n UnlinkedVariant:\n \"This field is not editable as it is not linked to the selected variant.\",\n CanLinkVariant: \"Click here to link a variant\",\n UnderlinedAndClickableWord: \"here\",\n CannotLinkVariant: \"Contact your stack admin or owner to link it.\",\n AudienceMode:\n \"To edit an experience, open the Audience widget and click the Edit icon.\",\n DisabledVariant:\n \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant: \"This field is not editable as it is not localized\",\n None: \"\",\n EntryUpdateRestricted: \"You do not have permission to edit this entry\",\n WorkflowStagePermission: ({ stageName }: { stageName: string }) =>\n `You do not have Edit access to this entry on the '${stageName}' workflow stage`,\n EntryUpdateRestrictedRoleAndWorkflowStage: ({\n stageName,\n }: {\n stageName: string;\n }) =>\n `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,\n} as const;\n\ninterface FieldDisableState {\n isDisabled: boolean;\n reason: string;\n}\n\nconst getDisableReason = (\n flags: Record<string, boolean>,\n params?: Record<string, any>\n) => {\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant) {\n return flags.canLinkVariant\n ? `${DisableReason.UnlinkedVariant} ${DisableReason.CanLinkVariant} `\n : `${DisableReason.UnlinkedVariant} ${DisableReason.CannotLinkVariant}`;\n }\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n if (\n flags.updateRestrictDueToEntryUpdateRestriction &&\n flags.updateRestrictDueToWorkflowStagePermission\n ) {\n return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToWorkflowStagePermission) {\n return DisableReason.WorkflowStagePermission({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if(flags.updateRestrictDueToResolvedVariantPermissions) {\n return DisableReason.ResolvedVariantPermissions;\n }\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n resolvedVariantPermissions?: ResolvedVariantPermissions,\n entryPermissions?: EntryPermissions,\n entryWorkflowStageDetails?: WorkflowStageDetails,\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n canLinkVariant: Boolean(fieldSchemaMap?.field_metadata?.canLinkVariant),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToResolvedVariantPermissions: resolvedVariantPermissions ? Boolean(\n !resolvedVariantPermissions.update\n ) : false,\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n entryWorkflowStageDetails &&\n !entryWorkflowStageDetails.permissions.entry.update\n ) {\n flags.updateRestrictDueToWorkflowStagePermission = true;\n }\n\n if(VisualBuilder.VisualBuilderGlobalState.value.audienceMode\n && editableElement.classList.contains(\"visual-builder__lower-order-variant-field\")) {\n // If resolvedVariantPermissions errors out for any reason, we need to disable editing\n // for lower order (priority) variant fields with updateRestrictDueToDisabledVariant's message\n flags.updateRestrictDueToDisabledVariant = resolvedVariantPermissions ? !!resolvedVariantPermissions.error : false;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n const reason = getDisableReason(flags, {\n stageName: entryWorkflowStageDetails?.stage?.name,\n });\n\n return { isDisabled, reason };\n};\n"],"mappings":"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","names":["Config"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\nimport { WorkflowStageDetails } from \"./getWorkflowStageDetails\";\nimport { ResolvedVariantPermissions } from \"./getResolvedVariantPermissions\";\n\nexport const DisableReason = {\n ReadOnly: \"You have only read access to this field\",\n LocalizedEntry: \"Editing this field is restricted in localized entries\",\n ResolvedVariantPermissions: \"This field does not exist in the selected variant\",\n UnlinkedVariant:\n \"This field is not editable as it is not linked to the selected variant.\",\n CanLinkVariant: \"Click here to link a variant\",\n UnderlinedAndClickableWord: \"here\",\n CannotLinkVariant: \"Contact your stack admin or owner to link it.\",\n AudienceMode:\n \"To edit an experience, open the Audience widget and click the Edit icon.\",\n DisabledVariant:\n \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant: \"This field is not editable as it is not localized\",\n None: \"\",\n EntryUpdateRestricted: \"You do not have permission to edit this entry\",\n WorkflowStagePermission: ({ stageName }: { stageName: string }) =>\n `You do not have Edit access to this entry on the '${stageName}' workflow stage`,\n EntryUpdateRestrictedRoleAndWorkflowStage: ({\n stageName,\n }: {\n stageName: string;\n }) =>\n `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,\n WorkflowStageRequestEdit: ({ stageName }: { stageName: string }) =>\n `You do not have the edit access to this entry on the '${stageName}' workflow stage.`,\n WorkflowStageRequestPending: ({ stageName }: { stageName: string }) =>\n `You do not have the edit access to this entry on the '${stageName}' workflow stage. Your request has been sent and is awaiting approval.`,\n} as const;\n\nexport interface FieldDisableState {\n isDisabled: boolean;\n reason: string;\n /** Canvas: workflow stage lock with request-edit UX (see fieldLabelWrapper). */\n workflowRequestUi?: \"request\" | \"pending\";\n}\n\nconst getDisableReason = (\n flags: Record<string, boolean>,\n params?: {\n stageName?: string;\n entryWorkflowStageDetails?: WorkflowStageDetails;\n entryPermissions?: EntryPermissions;\n },\n) => {\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant) {\n return flags.canLinkVariant\n ? `${DisableReason.UnlinkedVariant} ${DisableReason.CanLinkVariant} `\n : `${DisableReason.UnlinkedVariant} ${DisableReason.CannotLinkVariant}`;\n }\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n if (\n flags.updateRestrictDueToEntryUpdateRestriction &&\n flags.updateRestrictDueToWorkflowStagePermission\n ) {\n return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToWorkflowStagePermission) {\n const stageName = params?.stageName ? params.stageName : \"Unknown\";\n const req = params?.entryWorkflowStageDetails?.requestEditAccess;\n const entryAllowsUpdate =\n params?.entryPermissions == null ||\n params.entryPermissions.update === true;\n if (\n entryAllowsUpdate &&\n !flags.updateRestrictDueToEntryUpdateRestriction &&\n req\n ) {\n if (req.hasPending) {\n return DisableReason.WorkflowStageRequestPending({\n stageName,\n });\n }\n if (req.canRequest) {\n return DisableReason.WorkflowStageRequestEdit({\n stageName,\n });\n }\n }\n return DisableReason.WorkflowStagePermission({\n stageName,\n });\n }\n if(flags.updateRestrictDueToResolvedVariantPermissions) {\n return DisableReason.ResolvedVariantPermissions;\n }\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n resolvedVariantPermissions?: ResolvedVariantPermissions,\n entryPermissions?: EntryPermissions,\n entryWorkflowStageDetails?: WorkflowStageDetails,\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n canLinkVariant: Boolean(fieldSchemaMap?.field_metadata?.canLinkVariant),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToResolvedVariantPermissions: resolvedVariantPermissions ? Boolean(\n !resolvedVariantPermissions.update\n ) : false,\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n entryWorkflowStageDetails &&\n !entryWorkflowStageDetails.permissions.entry.update\n ) {\n flags.updateRestrictDueToWorkflowStagePermission = true;\n }\n\n if(VisualBuilder.VisualBuilderGlobalState.value.audienceMode\n && editableElement.classList.contains(\"visual-builder__lower-order-variant-field\")) {\n // If resolvedVariantPermissions errors out for any reason, we need to disable editing\n // for lower order (priority) variant fields with updateRestrictDueToDisabledVariant's message\n flags.updateRestrictDueToDisabledVariant = resolvedVariantPermissions ? !!resolvedVariantPermissions.error : false;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n\n const getDisableReasonParams: {\n stageName?: string;\n entryWorkflowStageDetails?: WorkflowStageDetails;\n entryPermissions?: EntryPermissions;\n } = {};\n if (entryWorkflowStageDetails?.stage?.name !== undefined) {\n getDisableReasonParams.stageName = entryWorkflowStageDetails.stage.name;\n }\n if (entryWorkflowStageDetails !== undefined) {\n getDisableReasonParams.entryWorkflowStageDetails =\n entryWorkflowStageDetails;\n }\n if (entryPermissions !== undefined) {\n getDisableReasonParams.entryPermissions = entryPermissions;\n }\n\n const reason = getDisableReason(flags, getDisableReasonParams);\n\n let workflowRequestUi: \"request\" | \"pending\" | undefined;\n if (\n flags.updateRestrictDueToWorkflowStagePermission &&\n !flags.updateRestrictDueToEntryUpdateRestriction &&\n (entryPermissions == null || entryPermissions.update === true) &&\n entryWorkflowStageDetails?.requestEditAccess\n ) {\n const req = entryWorkflowStageDetails.requestEditAccess;\n if (req.hasPending) {\n workflowRequestUi = \"pending\";\n } else if (req.canRequest) {\n workflowRequestUi = \"request\";\n }\n }\n\n return workflowRequestUi !== undefined\n ? { isDisabled, reason, workflowRequestUi }\n : { isDisabled, reason };\n};\n"],"mappings":"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","names":["Config"]}
|
|
@@ -26,11 +26,19 @@ declare const DisableReason: {
|
|
|
26
26
|
readonly EntryUpdateRestrictedRoleAndWorkflowStage: ({ stageName, }: {
|
|
27
27
|
stageName: string;
|
|
28
28
|
}) => string;
|
|
29
|
+
readonly WorkflowStageRequestEdit: ({ stageName }: {
|
|
30
|
+
stageName: string;
|
|
31
|
+
}) => string;
|
|
32
|
+
readonly WorkflowStageRequestPending: ({ stageName }: {
|
|
33
|
+
stageName: string;
|
|
34
|
+
}) => string;
|
|
29
35
|
};
|
|
30
36
|
interface FieldDisableState {
|
|
31
37
|
isDisabled: boolean;
|
|
32
38
|
reason: string;
|
|
39
|
+
/** Canvas: workflow stage lock with request-edit UX (see fieldLabelWrapper). */
|
|
40
|
+
workflowRequestUi?: "request" | "pending";
|
|
33
41
|
}
|
|
34
42
|
declare const isFieldDisabled: (fieldSchemaMap: ISchemaFieldMap, eventFieldDetails: FieldDetails, resolvedVariantPermissions?: ResolvedVariantPermissions, entryPermissions?: EntryPermissions, entryWorkflowStageDetails?: WorkflowStageDetails) => FieldDisableState;
|
|
35
43
|
|
|
36
|
-
export { DisableReason, isFieldDisabled };
|
|
44
|
+
export { DisableReason, type FieldDisableState, isFieldDisabled };
|
|
@@ -26,11 +26,19 @@ declare const DisableReason: {
|
|
|
26
26
|
readonly EntryUpdateRestrictedRoleAndWorkflowStage: ({ stageName, }: {
|
|
27
27
|
stageName: string;
|
|
28
28
|
}) => string;
|
|
29
|
+
readonly WorkflowStageRequestEdit: ({ stageName }: {
|
|
30
|
+
stageName: string;
|
|
31
|
+
}) => string;
|
|
32
|
+
readonly WorkflowStageRequestPending: ({ stageName }: {
|
|
33
|
+
stageName: string;
|
|
34
|
+
}) => string;
|
|
29
35
|
};
|
|
30
36
|
interface FieldDisableState {
|
|
31
37
|
isDisabled: boolean;
|
|
32
38
|
reason: string;
|
|
39
|
+
/** Canvas: workflow stage lock with request-edit UX (see fieldLabelWrapper). */
|
|
40
|
+
workflowRequestUi?: "request" | "pending";
|
|
33
41
|
}
|
|
34
42
|
declare const isFieldDisabled: (fieldSchemaMap: ISchemaFieldMap, eventFieldDetails: FieldDetails, resolvedVariantPermissions?: ResolvedVariantPermissions, entryPermissions?: EntryPermissions, entryWorkflowStageDetails?: WorkflowStageDetails) => FieldDisableState;
|
|
35
43
|
|
|
36
|
-
export { DisableReason, isFieldDisabled };
|
|
44
|
+
export { DisableReason, type FieldDisableState, isFieldDisabled };
|
|
@@ -19,9 +19,12 @@ var DisableReason = {
|
|
|
19
19
|
WorkflowStagePermission: ({ stageName }) => `You do not have Edit access to this entry on the '${stageName}' workflow stage`,
|
|
20
20
|
EntryUpdateRestrictedRoleAndWorkflowStage: ({
|
|
21
21
|
stageName
|
|
22
|
-
}) => `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access
|
|
22
|
+
}) => `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,
|
|
23
|
+
WorkflowStageRequestEdit: ({ stageName }) => `You do not have the edit access to this entry on the '${stageName}' workflow stage.`,
|
|
24
|
+
WorkflowStageRequestPending: ({ stageName }) => `You do not have the edit access to this entry on the '${stageName}' workflow stage. Your request has been sent and is awaiting approval.`
|
|
23
25
|
};
|
|
24
26
|
var getDisableReason = (flags, params) => {
|
|
27
|
+
var _a;
|
|
25
28
|
if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;
|
|
26
29
|
if (flags.updateRestrictDueToNonLocalizableFields)
|
|
27
30
|
return DisableReason.LocalizedEntry;
|
|
@@ -43,8 +46,23 @@ var getDisableReason = (flags, params) => {
|
|
|
43
46
|
return DisableReason.EntryUpdateRestricted;
|
|
44
47
|
}
|
|
45
48
|
if (flags.updateRestrictDueToWorkflowStagePermission) {
|
|
49
|
+
const stageName = (params == null ? void 0 : params.stageName) ? params.stageName : "Unknown";
|
|
50
|
+
const req = (_a = params == null ? void 0 : params.entryWorkflowStageDetails) == null ? void 0 : _a.requestEditAccess;
|
|
51
|
+
const entryAllowsUpdate = (params == null ? void 0 : params.entryPermissions) == null || params.entryPermissions.update === true;
|
|
52
|
+
if (entryAllowsUpdate && !flags.updateRestrictDueToEntryUpdateRestriction && req) {
|
|
53
|
+
if (req.hasPending) {
|
|
54
|
+
return DisableReason.WorkflowStageRequestPending({
|
|
55
|
+
stageName
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (req.canRequest) {
|
|
59
|
+
return DisableReason.WorkflowStageRequestEdit({
|
|
60
|
+
stageName
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
46
64
|
return DisableReason.WorkflowStagePermission({
|
|
47
|
-
stageName
|
|
65
|
+
stageName
|
|
48
66
|
});
|
|
49
67
|
}
|
|
50
68
|
if (flags.updateRestrictDueToResolvedVariantPermissions) {
|
|
@@ -96,10 +114,27 @@ var isFieldDisabled = (fieldSchemaMap, eventFieldDetails, resolvedVariantPermiss
|
|
|
96
114
|
}
|
|
97
115
|
}
|
|
98
116
|
const isDisabled = Object.values(flags).some(Boolean);
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
117
|
+
const getDisableReasonParams = {};
|
|
118
|
+
if (((_d = entryWorkflowStageDetails == null ? void 0 : entryWorkflowStageDetails.stage) == null ? void 0 : _d.name) !== void 0) {
|
|
119
|
+
getDisableReasonParams.stageName = entryWorkflowStageDetails.stage.name;
|
|
120
|
+
}
|
|
121
|
+
if (entryWorkflowStageDetails !== void 0) {
|
|
122
|
+
getDisableReasonParams.entryWorkflowStageDetails = entryWorkflowStageDetails;
|
|
123
|
+
}
|
|
124
|
+
if (entryPermissions !== void 0) {
|
|
125
|
+
getDisableReasonParams.entryPermissions = entryPermissions;
|
|
126
|
+
}
|
|
127
|
+
const reason = getDisableReason(flags, getDisableReasonParams);
|
|
128
|
+
let workflowRequestUi;
|
|
129
|
+
if (flags.updateRestrictDueToWorkflowStagePermission && !flags.updateRestrictDueToEntryUpdateRestriction && (entryPermissions == null || entryPermissions.update === true) && (entryWorkflowStageDetails == null ? void 0 : entryWorkflowStageDetails.requestEditAccess)) {
|
|
130
|
+
const req = entryWorkflowStageDetails.requestEditAccess;
|
|
131
|
+
if (req.hasPending) {
|
|
132
|
+
workflowRequestUi = "pending";
|
|
133
|
+
} else if (req.canRequest) {
|
|
134
|
+
workflowRequestUi = "request";
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return workflowRequestUi !== void 0 ? { isDisabled, reason, workflowRequestUi } : { isDisabled, reason };
|
|
103
138
|
};
|
|
104
139
|
export {
|
|
105
140
|
DisableReason,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\nimport { WorkflowStageDetails } from \"./getWorkflowStageDetails\";\nimport { ResolvedVariantPermissions } from \"./getResolvedVariantPermissions\";\n\nexport const DisableReason = {\n ReadOnly: \"You have only read access to this field\",\n LocalizedEntry: \"Editing this field is restricted in localized entries\",\n ResolvedVariantPermissions: \"This field does not exist in the selected variant\",\n UnlinkedVariant:\n \"This field is not editable as it is not linked to the selected variant.\",\n CanLinkVariant: \"Click here to link a variant\",\n UnderlinedAndClickableWord: \"here\",\n CannotLinkVariant: \"Contact your stack admin or owner to link it.\",\n AudienceMode:\n \"To edit an experience, open the Audience widget and click the Edit icon.\",\n DisabledVariant:\n \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant: \"This field is not editable as it is not localized\",\n None: \"\",\n EntryUpdateRestricted: \"You do not have permission to edit this entry\",\n WorkflowStagePermission: ({ stageName }: { stageName: string }) =>\n `You do not have Edit access to this entry on the '${stageName}' workflow stage`,\n EntryUpdateRestrictedRoleAndWorkflowStage: ({\n stageName,\n }: {\n stageName: string;\n }) =>\n `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,\n} as const;\n\ninterface FieldDisableState {\n isDisabled: boolean;\n reason: string;\n}\n\nconst getDisableReason = (\n flags: Record<string, boolean>,\n params?: Record<string, any>\n) => {\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant) {\n return flags.canLinkVariant\n ? `${DisableReason.UnlinkedVariant} ${DisableReason.CanLinkVariant} `\n : `${DisableReason.UnlinkedVariant} ${DisableReason.CannotLinkVariant}`;\n }\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n if (\n flags.updateRestrictDueToEntryUpdateRestriction &&\n flags.updateRestrictDueToWorkflowStagePermission\n ) {\n return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToWorkflowStagePermission) {\n return DisableReason.WorkflowStagePermission({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if(flags.updateRestrictDueToResolvedVariantPermissions) {\n return DisableReason.ResolvedVariantPermissions;\n }\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n resolvedVariantPermissions?: ResolvedVariantPermissions,\n entryPermissions?: EntryPermissions,\n entryWorkflowStageDetails?: WorkflowStageDetails,\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n canLinkVariant: Boolean(fieldSchemaMap?.field_metadata?.canLinkVariant),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToResolvedVariantPermissions: resolvedVariantPermissions ? Boolean(\n !resolvedVariantPermissions.update\n ) : false,\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n entryWorkflowStageDetails &&\n !entryWorkflowStageDetails.permissions.entry.update\n ) {\n flags.updateRestrictDueToWorkflowStagePermission = true;\n }\n\n if(VisualBuilder.VisualBuilderGlobalState.value.audienceMode\n && editableElement.classList.contains(\"visual-builder__lower-order-variant-field\")) {\n // If resolvedVariantPermissions errors out for any reason, we need to disable editing\n // for lower order (priority) variant fields with updateRestrictDueToDisabledVariant's message\n flags.updateRestrictDueToDisabledVariant = resolvedVariantPermissions ? !!resolvedVariantPermissions.error : false;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n const reason = getDisableReason(flags, {\n stageName: entryWorkflowStageDetails?.stage?.name,\n });\n\n return { isDisabled, reason };\n};\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/visualBuilder/utils/isFieldDisabled.ts"],"sourcesContent":["import Config from \"../../configManager/configManager\";\nimport { ISchemaFieldMap } from \"./types/index.types\";\nimport { VisualBuilder } from \"..\";\nimport { FieldDetails } from \"../components/FieldToolbar\";\nimport { EntryPermissions } from \"./getEntryPermissions\";\nimport { WorkflowStageDetails } from \"./getWorkflowStageDetails\";\nimport { ResolvedVariantPermissions } from \"./getResolvedVariantPermissions\";\n\nexport const DisableReason = {\n ReadOnly: \"You have only read access to this field\",\n LocalizedEntry: \"Editing this field is restricted in localized entries\",\n ResolvedVariantPermissions: \"This field does not exist in the selected variant\",\n UnlinkedVariant:\n \"This field is not editable as it is not linked to the selected variant.\",\n CanLinkVariant: \"Click here to link a variant\",\n UnderlinedAndClickableWord: \"here\",\n CannotLinkVariant: \"Contact your stack admin or owner to link it.\",\n AudienceMode:\n \"To edit an experience, open the Audience widget and click the Edit icon.\",\n DisabledVariant:\n \"This field is not editable as it doesn't match the selected variant\",\n UnlocalizedVariant: \"This field is not editable as it is not localized\",\n None: \"\",\n EntryUpdateRestricted: \"You do not have permission to edit this entry\",\n WorkflowStagePermission: ({ stageName }: { stageName: string }) =>\n `You do not have Edit access to this entry on the '${stageName}' workflow stage`,\n EntryUpdateRestrictedRoleAndWorkflowStage: ({\n stageName,\n }: {\n stageName: string;\n }) =>\n `Editing is restricted for your role or by the rules for the '${stageName}' stage. Contact your admin for edit access.`,\n WorkflowStageRequestEdit: ({ stageName }: { stageName: string }) =>\n `You do not have the edit access to this entry on the '${stageName}' workflow stage.`,\n WorkflowStageRequestPending: ({ stageName }: { stageName: string }) =>\n `You do not have the edit access to this entry on the '${stageName}' workflow stage. Your request has been sent and is awaiting approval.`,\n} as const;\n\nexport interface FieldDisableState {\n isDisabled: boolean;\n reason: string;\n /** Canvas: workflow stage lock with request-edit UX (see fieldLabelWrapper). */\n workflowRequestUi?: \"request\" | \"pending\";\n}\n\nconst getDisableReason = (\n flags: Record<string, boolean>,\n params?: {\n stageName?: string;\n entryWorkflowStageDetails?: WorkflowStageDetails;\n entryPermissions?: EntryPermissions;\n },\n) => {\n if (flags.updateRestrictDueToRole) return DisableReason.ReadOnly;\n if (flags.updateRestrictDueToNonLocalizableFields)\n return DisableReason.LocalizedEntry;\n if (flags.updateRestrictDueToUnlocalizedVariant)\n return DisableReason.UnlocalizedVariant;\n if (flags.updateRestrictDueToUnlinkVariant) {\n return flags.canLinkVariant\n ? `${DisableReason.UnlinkedVariant} ${DisableReason.CanLinkVariant} `\n : `${DisableReason.UnlinkedVariant} ${DisableReason.CannotLinkVariant}`;\n }\n if (flags.updateRestrictDueToAudienceMode)\n return DisableReason.AudienceMode;\n if (flags.updateRestrictDueToDisabledVariant)\n return DisableReason.DisabledVariant;\n if (\n flags.updateRestrictDueToEntryUpdateRestriction &&\n flags.updateRestrictDueToWorkflowStagePermission\n ) {\n return DisableReason.EntryUpdateRestrictedRoleAndWorkflowStage({\n stageName: params?.stageName ? params.stageName : \"Unknown\",\n });\n }\n if (flags.updateRestrictDueToEntryUpdateRestriction) {\n return DisableReason.EntryUpdateRestricted;\n }\n if (flags.updateRestrictDueToWorkflowStagePermission) {\n const stageName = params?.stageName ? params.stageName : \"Unknown\";\n const req = params?.entryWorkflowStageDetails?.requestEditAccess;\n const entryAllowsUpdate =\n params?.entryPermissions == null ||\n params.entryPermissions.update === true;\n if (\n entryAllowsUpdate &&\n !flags.updateRestrictDueToEntryUpdateRestriction &&\n req\n ) {\n if (req.hasPending) {\n return DisableReason.WorkflowStageRequestPending({\n stageName,\n });\n }\n if (req.canRequest) {\n return DisableReason.WorkflowStageRequestEdit({\n stageName,\n });\n }\n }\n return DisableReason.WorkflowStagePermission({\n stageName,\n });\n }\n if(flags.updateRestrictDueToResolvedVariantPermissions) {\n return DisableReason.ResolvedVariantPermissions;\n }\n return DisableReason.None;\n};\n\nexport const isFieldDisabled = (\n fieldSchemaMap: ISchemaFieldMap,\n eventFieldDetails: FieldDetails,\n resolvedVariantPermissions?: ResolvedVariantPermissions,\n entryPermissions?: EntryPermissions,\n entryWorkflowStageDetails?: WorkflowStageDetails,\n): FieldDisableState => {\n const { editableElement, fieldMetadata } = eventFieldDetails;\n const masterLocale = Config.get().stackDetails.masterLocale || \"en-us\";\n const { locale: cmsLocale, variant } =\n VisualBuilder.VisualBuilderGlobalState.value;\n\n const flags: Record<string, boolean> = {\n updateRestrictDueToRole: Boolean(\n fieldSchemaMap?.field_metadata?.updateRestrict\n ),\n updateRestrictDueToUnlinkVariant: Boolean(\n fieldSchemaMap?.field_metadata?.isUnlinkedVariant\n ),\n canLinkVariant: Boolean(fieldSchemaMap?.field_metadata?.canLinkVariant),\n updateRestrictDueToUnlocalizedVariant: Boolean(\n variant && fieldMetadata.locale !== cmsLocale\n ),\n updateRestrictDueToNonLocalizableFields: Boolean(\n fieldSchemaMap?.non_localizable &&\n masterLocale !== fieldMetadata.locale\n ),\n updateRestrictDueToResolvedVariantPermissions: resolvedVariantPermissions ? Boolean(\n !resolvedVariantPermissions.update\n ) : false,\n updateRestrictDueToAudienceMode: false,\n updateRestrictDueToDisabledVariant: false,\n };\n\n if (entryPermissions && !entryPermissions.update) {\n flags.updateRestrictDueToEntryUpdateRestriction = true;\n }\n\n if (\n entryWorkflowStageDetails &&\n !entryWorkflowStageDetails.permissions.entry.update\n ) {\n flags.updateRestrictDueToWorkflowStagePermission = true;\n }\n\n if(VisualBuilder.VisualBuilderGlobalState.value.audienceMode\n && editableElement.classList.contains(\"visual-builder__lower-order-variant-field\")) {\n // If resolvedVariantPermissions errors out for any reason, we need to disable editing\n // for lower order (priority) variant fields with updateRestrictDueToDisabledVariant's message\n flags.updateRestrictDueToDisabledVariant = resolvedVariantPermissions ? !!resolvedVariantPermissions.error : false;\n }\n\n if (\n VisualBuilder.VisualBuilderGlobalState.value.audienceMode &&\n !editableElement.classList.contains(\"visual-builder__variant-field\") &&\n !editableElement.classList.contains(\"visual-builder__base-field\")\n ) {\n if (\n editableElement.classList.contains(\n \"visual-builder__disabled-variant-field\"\n )\n ) {\n flags.updateRestrictDueToDisabledVariant = true;\n } else {\n flags.updateRestrictDueToAudienceMode = true;\n }\n }\n\n const isDisabled = Object.values(flags).some(Boolean);\n\n const getDisableReasonParams: {\n stageName?: string;\n entryWorkflowStageDetails?: WorkflowStageDetails;\n entryPermissions?: EntryPermissions;\n } = {};\n if (entryWorkflowStageDetails?.stage?.name !== undefined) {\n getDisableReasonParams.stageName = entryWorkflowStageDetails.stage.name;\n }\n if (entryWorkflowStageDetails !== undefined) {\n getDisableReasonParams.entryWorkflowStageDetails =\n entryWorkflowStageDetails;\n }\n if (entryPermissions !== undefined) {\n getDisableReasonParams.entryPermissions = entryPermissions;\n }\n\n const reason = getDisableReason(flags, getDisableReasonParams);\n\n let workflowRequestUi: \"request\" | \"pending\" | undefined;\n if (\n flags.updateRestrictDueToWorkflowStagePermission &&\n !flags.updateRestrictDueToEntryUpdateRestriction &&\n (entryPermissions == null || entryPermissions.update === true) &&\n entryWorkflowStageDetails?.requestEditAccess\n ) {\n const req = entryWorkflowStageDetails.requestEditAccess;\n if (req.hasPending) {\n workflowRequestUi = \"pending\";\n } else if (req.canRequest) {\n workflowRequestUi = \"request\";\n }\n }\n\n return workflowRequestUi !== undefined\n ? { isDisabled, reason, workflowRequestUi }\n : { isDisabled, reason };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -57,6 +57,7 @@ var VisualBuilderPostMessageEvents = /* @__PURE__ */ ((VisualBuilderPostMessageE
|
|
|
57
57
|
VisualBuilderPostMessageEvents2["GET_PERMISSIONS"] = "get-permissions";
|
|
58
58
|
VisualBuilderPostMessageEvents2["GET_WORKFLOW_STAGE_DETAILS"] = "get-workflow-stage-details";
|
|
59
59
|
VisualBuilderPostMessageEvents2["GET_RESOLVED_VARIANT_PERMISSIONS"] = "get-resolved-variant-permissions";
|
|
60
|
+
VisualBuilderPostMessageEvents2["OPEN_REQUEST_EDIT_ACCESS"] = "open-request-edit-access";
|
|
60
61
|
VisualBuilderPostMessageEvents2["GET_ALL_ENTRIES_IN_CURRENT_PAGE"] = "get-entries-in-current-page";
|
|
61
62
|
VisualBuilderPostMessageEvents2["HIDE_FOCUS_OVERLAY"] = "hide-focus-overlay";
|
|
62
63
|
VisualBuilderPostMessageEvents2["SHOW_DRAFT_FIELDS"] = "show-draft-fields";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n OPEN_LINK_VARIANT_MODAL = \"open-link-variant-modal\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n FIELD_LOCATION_DATA = \"field-location-data\",\n FIELD_LOCATION_SELECTED_APP = \"field-location-selected-app\",\n GET_PERMISSIONS = \"get-permissions\",\n GET_WORKFLOW_STAGE_DETAILS = \"get-workflow-stage-details\",\n GET_RESOLVED_VARIANT_PERMISSIONS = \"get-resolved-variant-permissions\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n GET_HIGHLIGHT_VARIANT_FIELDS_STATUS = \"get-highlight-variant-fields-status\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n TOGGLE_SCROLL = \"toggle-scroll\",\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,gCAA6B;AAC7B,EAAAA,gCAAA,sCAAmC;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/visualBuilder/utils/types/postMessage.types.ts"],"sourcesContent":["export enum VisualBuilderPostMessageEvents {\n INIT = \"init\",\n ADD_INSTANCE = \"add-instance\",\n UPDATE_FIELD = \"update-field\",\n SYNC_FIELD = \"sync-field\",\n OPEN_ASSET_MODAL = \"open-asset-modal\",\n OPEN_REFERENCE_MODAL = \"open-reference-modal\",\n OPEN_QUICK_FORM = \"open-quick-form\",\n TOGGLE_FORM = \"toggle-quick-form\",\n GET_FIELD_SCHEMA = \"get-field-schema\",\n GET_FIELD_DATA = \"get-field-data\",\n OPEN_LINK_VARIANT_MODAL = \"open-link-variant-modal\",\n GET_FIELD_PATH_WITH_UID = \"get-field-path-with-uid\",\n GET_FIELD_DISPLAY_NAMES = \"get-field-display-names\",\n MOUSE_CLICK = \"mouse-click\",\n FOCUS_FIELD = \"focus-field\",\n OPEN_FIELD_EDIT_MODAL = \"open-field-edit-modal\",\n DELETE_INSTANCE = \"delete-instance\",\n MOVE_INSTANCE = \"move-instance\",\n GET_DISCUSSION_ID = \"get-discussion-id-for-comment-modal\",\n OPEN_FIELD_COMMENT_MODAL = \"open-field-comment-modal\",\n COLLAB_CREATE_THREAD = \"collab-create-thread\",\n COLLAB_CREATE_COMMENT = \"collab-create-comment\",\n COLLAB_FETCH_COMMENTS = \"collab-fetch-comments\",\n COLLAB_EDIT_COMMENT = \"collab-edit-comment\",\n COLLAB_DELETE_COMMENT = \"collab-delete-comment\",\n COLLAB_RESOLVE_THREAD = \"collab-resolve-thread\",\n COLLAB_DELETE_THREAD = \"collab-delete-thread\",\n COLLAB_MISSING_THREADS = \"collab-missing-threads\",\n FIELD_LOCATION_DATA = \"field-location-data\",\n FIELD_LOCATION_SELECTED_APP = \"field-location-selected-app\",\n GET_PERMISSIONS = \"get-permissions\",\n GET_WORKFLOW_STAGE_DETAILS = \"get-workflow-stage-details\",\n GET_RESOLVED_VARIANT_PERMISSIONS = \"get-resolved-variant-permissions\",\n OPEN_REQUEST_EDIT_ACCESS = \"open-request-edit-access\",\n\n // FROM visual builder\n GET_ALL_ENTRIES_IN_CURRENT_PAGE = \"get-entries-in-current-page\",\n HIDE_FOCUS_OVERLAY = \"hide-focus-overlay\",\n SHOW_DRAFT_FIELDS = \"show-draft-fields\",\n REMOVE_DRAFT_FIELDS = \"remove-draft-fields\",\n SHOW_VARIANT_FIELDS = \"show-variant-fields\",\n REMOVE_VARIANT_FIELDS = \"remove-variant-fields\",\n SET_AUDIENCE_MODE = \"set-audience-mode\",\n UPDATE_DISCUSSION_ID = \"update-discussion-id-for-focus-field\",\n SCROLL_TO_FIELD = \"scroll-to-view-field-by-cslp-value\",\n HIGHLIGHT_ACTIVE_COMMENTS = \"highlight-active-comments-by-data-cs\",\n REMOVE_HIGHLIGHTED_COMMENTS = \"remove-highlighted-comments\",\n GET_VARIANT_ID = \"get-variant-id\",\n GET_LOCALE = \"get-locale\",\n GET_HIGHLIGHT_VARIANT_FIELDS_STATUS = \"get-highlight-variant-fields-status\",\n SEND_VARIANT_AND_LOCALE = \"send-variant-and-locale\",\n GET_CONTENT_TYPE_NAME = \"get-content-type-name\",\n REFERENCE_MAP = \"get-reference-map\",\n COLLAB_ENABLE = \"collab-enable\",\n COLLAB_DATA_UPDATE = \"collab-data-update\",\n COLLAB_DISABLE = \"collab-disable\",\n COLLAB_THREADS_REMOVE = \"collab-threads-remove\",\n COLLAB_THREAD_REOPEN = \"collab-thread-reopen\",\n COLLAB_THREAD_HIGHLIGHT = \"collab-thread-highlight\",\n TOGGLE_SCROLL = \"toggle-scroll\",\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAK,iCAAL,kBAAKA,oCAAL;AACH,EAAAA,gCAAA,UAAO;AACP,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,kBAAe;AACf,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,sBAAmB;AACnB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,iBAAc;AACd,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,8BAA2B;AAC3B,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,4BAAyB;AACzB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,gCAA6B;AAC7B,EAAAA,gCAAA,sCAAmC;AACnC,EAAAA,gCAAA,8BAA2B;AAG3B,EAAAA,gCAAA,qCAAkC;AAClC,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,yBAAsB;AACtB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,uBAAoB;AACpB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,qBAAkB;AAClB,EAAAA,gCAAA,+BAA4B;AAC5B,EAAAA,gCAAA,iCAA8B;AAC9B,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,gBAAa;AACb,EAAAA,gCAAA,yCAAsC;AACtC,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,mBAAgB;AAChB,EAAAA,gCAAA,wBAAqB;AACrB,EAAAA,gCAAA,oBAAiB;AACjB,EAAAA,gCAAA,2BAAwB;AACxB,EAAAA,gCAAA,0BAAuB;AACvB,EAAAA,gCAAA,6BAA0B;AAC1B,EAAAA,gCAAA,mBAAgB;AA5DR,SAAAA;AAAA,GAAA;","names":["VisualBuilderPostMessageEvents"]}
|
|
@@ -32,6 +32,7 @@ declare enum VisualBuilderPostMessageEvents {
|
|
|
32
32
|
GET_PERMISSIONS = "get-permissions",
|
|
33
33
|
GET_WORKFLOW_STAGE_DETAILS = "get-workflow-stage-details",
|
|
34
34
|
GET_RESOLVED_VARIANT_PERMISSIONS = "get-resolved-variant-permissions",
|
|
35
|
+
OPEN_REQUEST_EDIT_ACCESS = "open-request-edit-access",
|
|
35
36
|
GET_ALL_ENTRIES_IN_CURRENT_PAGE = "get-entries-in-current-page",
|
|
36
37
|
HIDE_FOCUS_OVERLAY = "hide-focus-overlay",
|
|
37
38
|
SHOW_DRAFT_FIELDS = "show-draft-fields",
|
|
@@ -32,6 +32,7 @@ declare enum VisualBuilderPostMessageEvents {
|
|
|
32
32
|
GET_PERMISSIONS = "get-permissions",
|
|
33
33
|
GET_WORKFLOW_STAGE_DETAILS = "get-workflow-stage-details",
|
|
34
34
|
GET_RESOLVED_VARIANT_PERMISSIONS = "get-resolved-variant-permissions",
|
|
35
|
+
OPEN_REQUEST_EDIT_ACCESS = "open-request-edit-access",
|
|
35
36
|
GET_ALL_ENTRIES_IN_CURRENT_PAGE = "get-entries-in-current-page",
|
|
36
37
|
HIDE_FOCUS_OVERLAY = "hide-focus-overlay",
|
|
37
38
|
SHOW_DRAFT_FIELDS = "show-draft-fields",
|