UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

93 lines (81 loc) 2.56 kB
import { AttributeEditingOptions, DataClassEditingConfig, EditingConfig, ObjEditingConfig, WidgetEditingConfig, } from 'scrivito_sdk/app_support/editing_config'; import { getEditingConfigFor, setEditingConfigFor, } from 'scrivito_sdk/app_support/editing_config_store'; import { getClassName } from 'scrivito_sdk/app_support/get_class_name'; import { DataClass, DataItem } from 'scrivito_sdk/data_integration'; import { CmsAttributeType } from 'scrivito_sdk/models'; import { AttributeDefinitions, ObjClass, WidgetClass, } from 'scrivito_sdk/realm'; /** @public */ export function provideEditingConfig< AttrDefs extends AttributeDefinitions = AttributeDefinitions >( objClass: ObjClass<AttrDefs>, editingConfig: ObjEditingConfig<AttrDefs> ): void; /** @public */ export function provideEditingConfig( objClassName: string, editingConfig: ObjEditingConfig ): void; /** @public */ export function provideEditingConfig< AttrDefs extends AttributeDefinitions = AttributeDefinitions >( widgetClass: WidgetClass<AttrDefs>, editingConfig: WidgetEditingConfig<AttrDefs> ): void; /** @public */ export function provideEditingConfig( dataClass: DataClass, editingConfig: DataClassEditingConfig ): void; /** @public */ export function provideEditingConfig( dataItem: DataItem, editingConfig: DataClassEditingConfig ): void; /** @public */ export function provideEditingConfig( widgetClassName: string, editingConfig: WidgetEditingConfig ): void; /** @internal */ export function provideEditingConfig( subject: string | ObjClass | WidgetClass | DataClass | DataItem, editingConfig: EditingConfig ): void { setEditingConfigFor(getClassName(subject), editingConfig); } export function getAttributeEditingOptionsFor( className: string, attributeName: string, attributeType: CmsAttributeType ): AttributeEditingOptions | undefined { const attributes = getEditingConfigFor(className)?.attributes || {}; const attribute = attributes[attributeName]; if (!attribute?.options) return; let invalidOptions = attribute.options; if (attribute.editor === 'colorPicker') { const { allowAlpha, ...rest } = attribute.options; invalidOptions = rest; } else if (attributeType === 'html') { const { allowedTags, showHtmlSource, toolbar, ...rest } = attribute.options; invalidOptions = rest; } else if (attributeType === 'string') { const { multiLine, ...rest } = attribute.options; invalidOptions = rest; } if (Object.keys(invalidOptions).length === 0) return attribute.options; }