
META-INF.resources.js.components.ObjectField.Tabs.BasicInfo.FormulaContainer.tsx Maven / Gradle / Ivy
The newest version!
/**
* SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com
* SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06
*/
import {
ExpressionBuilder,
SidebarCategory,
} from '@liferay/object-js-components-web';
import classNames from 'classnames';
import React from 'react';
import {ObjectFieldErrors} from '../../ObjectFieldFormBase';
import '../../EditObjectFieldContent.scss';
interface FormulaContainerProps {
errors: ObjectFieldErrors;
modelBuilder?: boolean;
objectFieldSettings: ObjectFieldSetting[];
onSubmit?: (editedObjectField?: Partial) => void;
setValues: (values: Partial) => void;
sidebarElements: SidebarCategory[];
values: Partial;
}
const getNewObjectFieldSettings = (
objectFieldSettings: ObjectFieldSetting[],
script: string
) => {
return [
...(objectFieldSettings?.filter(
(objectFieldSetting) => objectFieldSetting.name !== 'script'
) as ObjectFieldSetting[]),
{
name: 'script',
value: script,
},
] as ObjectFieldSetting[];
};
export function FormulaContainer({
errors,
modelBuilder = false,
objectFieldSettings,
onSubmit,
setValues,
sidebarElements,
values,
}: FormulaContainerProps) {
const currentScript = objectFieldSettings?.find(
(objectFieldSetting) => objectFieldSetting.name === 'script'
);
return (
{
event.stopPropagation();
if (onSubmit) {
onSubmit();
}
}}
onChange={({target: {value}}) => {
setValues({
objectFieldSettings: getNewObjectFieldSettings(
objectFieldSettings,
value
),
});
}}
onOpenModal={() => {
const parentWindow = Liferay.Util.getOpener();
parentWindow.Liferay.fire('openExpressionBuilderModal', {
eventSidebarElements: sidebarElements,
header: Liferay.Language.get('formula-builder'),
onSave: (script: string) => {
setValues({
objectFieldSettings: getNewObjectFieldSettings(
objectFieldSettings,
script
),
});
if (onSubmit) {
onSubmit({
...values,
objectFieldSettings:
getNewObjectFieldSettings(
objectFieldSettings,
script
),
});
}
},
placeholder: `<#-- ${Liferay.Language.get(
'add-formulas-to-calculate-values-based-on-other-fields'
)} -->`,
required: false,
source: currentScript?.value ?? '',
validateExpressionURL: '',
});
}}
placeholder={Liferay.Language.get('create-an-expression')}
value={(currentScript?.value as string) ?? ''}
/>
);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy