UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

91 lines (90 loc) 4.2 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import * as React from 'react'; import { useState } from 'react'; import { useDispatch } from 'react-redux'; import * as NamedQueryRedux from '../../Redux/ActionsReducers/NamedQueryRedux'; import { useAdaptable } from '../AdaptableContext'; import { Card } from '../../components/Card'; import { ButtonEdit } from '../Components/Buttons/ButtonEdit'; import { NamedQueryContext, } from '../../components/ExpressionEditor/NamedQueryContext'; import { OnePageWizard, useOnePageWizardContext } from './OnePageWizards'; import { kebabCase } from '../../Utilities/Extensions/StringExtensions'; import { Box } from '../../components/Flex'; import { twMerge } from '../../twMerge'; export const SummaryTag = (props) => (_jsx(Box, { ...props })); export const SummaryText = (props) => (_jsx(Box, { ...props, className: twMerge('twa:text-2 twa:mb-3', props.className) })); export const FormDescriptionText = (props) => _jsx(Box, { ...props, className: twMerge('twa:text-2 twa:mt-1', props.className) }); export const OnePageAdaptableWizardContext = React.createContext({ data: null, sections: [], moduleInfo: null, api: null, namedQuery: false, }); export function useOnePageAdaptableWizardContext() { return React.useContext(OnePageAdaptableWizardContext); } export const OnePageAdaptableWizard = (props) => { const { api } = useAdaptable(); const dispatch = useDispatch(); const saveNamedQuery = React.useCallback((namedQuery) => dispatch(NamedQueryRedux.NamedQueryAdd(namedQuery)), []); const [namedQuery, setNamedQuery] = useState(false); const name = props.moduleInfo.FriendlyName ? `${kebabCase(props.moduleInfo.FriendlyName)}-wizard` : ''; const extraContext = { data: props.data, api, namedQuery, moduleInfo: props.moduleInfo, sections: props.sections, }; const sections = props.sections.map((section) => { if (section === '-') { return '-'; } const isValid = typeof section.isValid === 'function' ? (data, innerContext) => { return section.isValid(data, api, { ...innerContext, ...extraContext, }); } : void 0; const isVisible = typeof section.isVisible === 'function' ? (data, innerContext) => { return section.isVisible(data, api, { ...innerContext, ...extraContext, }); } : void 0; return { ...section, isValid, isVisible, }; }); const handleClickFinish = () => { if (namedQuery && namedQuery.Name) { saveNamedQuery(namedQuery); } props.onFinish?.(props.data); }; return (_jsx(OnePageAdaptableWizardContext.Provider, { value: extraContext, children: _jsx(NamedQueryContext.Provider, { value: { namedQuery, setNamedQuery }, children: _jsx(OnePageWizard, { ...props, name: name, sections: sections, onFinish: handleClickFinish, moduleName: props.moduleName ?? props.moduleInfo.FriendlyName }) }) })); }; export const OnePageWizardSummary = () => { const { data, api } = useOnePageAdaptableWizardContext(); const { sections: visibleSections, setCurrentSection } = useOnePageWizardContext(); return (_jsx(Box, { className: "ab-OnePageWizardSummary twa:flex twa:flex-col twa:gap-3", children: visibleSections .map((section, index) => { if (section === '-') { return null; } if (!section.renderSummary) { return null; } return (_jsxs(Card, { shadow: false, children: [_jsxs(Card.Title, { className: "twa:w-full", children: [_jsx(Box, { className: "twa:font-medium twa:flex-1", children: section.title }), _jsx(ButtonEdit, { onClick: () => setCurrentSection(index) })] }), _jsx(Card.Body, { className: "twa:p-1", children: section.renderSummary?.(data, api) })] }, `${section.title}-${index}`)); }) .filter(Boolean) })); };