UNPKG

@chayns-components/core

Version:

A set of beautiful React components for developing your own applications with chayns.

80 lines (79 loc) 3.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.SetupWizardContext = void 0; var _react = _interopRequireWildcard(require("react")); var _AccordionGroup = _interopRequireDefault(require("../accordion/accordion-group/AccordionGroup")); var _SetupWizard = require("./SetupWizard.styles"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } const SetupWizardContext = exports.SetupWizardContext = /*#__PURE__*/_react.default.createContext({ selectedId: undefined, updateSelectedId: undefined, activeId: undefined, updateActiveId: undefined }); SetupWizardContext.displayName = 'SetupWizardContext'; const SetupWizard = /*#__PURE__*/(0, _react.forwardRef)(({ children, isWrapped }, ref) => { const [selectedId, setSelectedId] = (0, _react.useState)(0); const [activeId, setActiveId] = (0, _react.useState)(0); const [allIds, setAllIds] = (0, _react.useState)([]); (0, _react.useEffect)(() => { _react.default.Children.map(children, child => { setAllIds(prevState => [...prevState, child.props.id]); }); }, [children]); const updateSelectedId = (0, _react.useCallback)(id => { setSelectedId(id); }, [setSelectedId]); const updateActiveId = (0, _react.useCallback)(id => { setActiveId(id); }, [setActiveId]); const handleNext = (0, _react.useCallback)(stepId => { if (typeof stepId === 'number') { updateSelectedId(stepId); if (typeof activeId === 'number' && stepId > activeId) { updateActiveId(stepId); } } else { const index = allIds.findIndex(id => id === selectedId); if (index < 0) { return; } const numberAtIndex = allIds[index + 1]; if (!numberAtIndex) { return; } updateSelectedId(numberAtIndex); if (typeof activeId === 'number' && numberAtIndex > activeId) { updateActiveId(numberAtIndex); } } }, [activeId, allIds, selectedId, updateActiveId, updateSelectedId]); const handleReset = (0, _react.useCallback)(() => { updateSelectedId(0); updateActiveId(0); }, [updateActiveId, updateSelectedId]); (0, _react.useImperativeHandle)(ref, () => ({ next: handleNext, reset: handleReset }), [handleNext, handleReset]); const providerValue = (0, _react.useMemo)(() => ({ selectedId, updateSelectedId, activeId, updateActiveId }), [activeId, selectedId, updateActiveId, updateSelectedId]); return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(SetupWizardContext.Provider, { value: providerValue }, /*#__PURE__*/_react.default.createElement(_SetupWizard.StyledSetupWizard, null, /*#__PURE__*/_react.default.createElement(_AccordionGroup.default, { isWrapped: isWrapped }, children))), [children, isWrapped, providerValue]); }); SetupWizard.displayName = 'SetupWizard'; var _default = exports.default = SetupWizard; //# sourceMappingURL=SetupWizard.js.map