@adaptabletools/adaptable-cjs
Version:
Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
122 lines (121 loc) • 5.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OnePageWizardSummary = exports.OnePageAdaptableWizard = exports.OnePageAdaptableWizardContext = exports.FormDescriptionText = exports.SummaryText = exports.SummaryTag = void 0;
exports.useOnePageAdaptableWizardContext = useOnePageAdaptableWizardContext;
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const react_1 = require("react");
const react_redux_1 = require("react-redux");
const NamedQueryRedux = tslib_1.__importStar(require("../../Redux/ActionsReducers/NamedQueryRedux"));
const SimpleButton_1 = tslib_1.__importDefault(require("../../components/SimpleButton"));
const AdaptableContext_1 = require("../AdaptableContext");
const Tabs_1 = require("../../components/Tabs");
const NamedQueryContext_1 = require("../../components/ExpressionEditor/NamedQueryContext");
const OnePageWizards_1 = require("./OnePageWizards");
const kebabCase_1 = tslib_1.__importDefault(require("../../Utilities/utils/kebabCase"));
const Flex_1 = require("../../components/Flex");
const twMerge_1 = require("../../twMerge");
const SummaryTag = (props) => (React.createElement(Flex_1.Box, { ...props }));
exports.SummaryTag = SummaryTag;
const SummaryText = (props) => (React.createElement(Flex_1.Box, { ...props, className: (0, twMerge_1.twMerge)('twa:text-2 twa:mb-3', props.className) }));
exports.SummaryText = SummaryText;
const FormDescriptionText = (props) => React.createElement(Flex_1.Box, { ...props, className: (0, twMerge_1.twMerge)('twa:text-2 twa:mt-1', props.className) });
exports.FormDescriptionText = FormDescriptionText;
exports.OnePageAdaptableWizardContext = React.createContext({
data: null,
sections: [],
moduleInfo: null,
api: null,
namedQuery: false,
});
function useOnePageAdaptableWizardContext() {
return React.useContext(exports.OnePageAdaptableWizardContext);
}
const OnePageAdaptableWizard = (props) => {
const { api } = (0, AdaptableContext_1.useAdaptable)();
const dispatch = (0, react_redux_1.useDispatch)();
const saveNamedQuery = React.useCallback((namedQuery) => dispatch(NamedQueryRedux.NamedQueryAdd(namedQuery)), []);
const [namedQuery, setNamedQuery] = (0, react_1.useState)(false);
const name = props.moduleInfo.FriendlyName
? `${(0, kebabCase_1.default)(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 (React.createElement(exports.OnePageAdaptableWizardContext.Provider, { value: extraContext },
React.createElement(NamedQueryContext_1.NamedQueryContext.Provider, { value: { namedQuery, setNamedQuery } },
React.createElement(OnePageWizards_1.OnePageWizard, { ...props, name: name, sections: sections, onFinish: handleClickFinish }))));
};
exports.OnePageAdaptableWizard = OnePageAdaptableWizard;
const OnePageWizardSummary = () => {
const { sections, data, api, moduleInfo } = useOnePageAdaptableWizardContext();
const { setCurrentSection } = (0, OnePageWizards_1.useOnePageWizardContext)();
const [namedQuery] = (0, react_1.useState)(false);
const renderEdit = (index) => (React.createElement(SimpleButton_1.default, { className: "twa:px-1 twa:inline-block twa:text-2 twa:underline", variant: "text", onClick: () => {
setCurrentSection(index);
} }, "edit"));
const extraContext = {
data,
api,
namedQuery,
moduleInfo: moduleInfo,
sections,
};
return (React.createElement(Flex_1.Box, { className: "ab-OnePageWizardSummary twa:flex twa:flex-col twa:gap-2" }, sections
.map((section, index) => {
if (section === '-') {
return null;
}
if (!section.renderSummary) {
return null;
}
if (section.isVisible && !section.isVisible(data, api, extraContext)) {
return null;
}
return (React.createElement(React.Fragment, null,
React.createElement(Tabs_1.Tabs, { keyboardNavigation: false, key: index },
React.createElement(Tabs_1.Tabs.Tab, null,
section.title,
" ",
renderEdit(index)),
React.createElement(Tabs_1.Tabs.Content, null, section.renderSummary(data, api)))));
})
.filter(Boolean)));
};
exports.OnePageWizardSummary = OnePageWizardSummary;