UNPKG

@patternfly/react-core

Version:

This library provides a set of common React components for use with the PatternFly reference implementation.

64 lines 2.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isStepEnabled = exports.normalizeStepProps = exports.isWizardStep = exports.buildSteps = void 0; const tslib_1 = require("tslib"); const react_1 = require("react"); const types_1 = require("./types"); const WizardStep_1 = require("./WizardStep"); /** * Accumulate list of step & sub-step props pulled from child components * @param children * @returns WizardStepType[] */ const buildSteps = (children) => react_1.Children.toArray(children).reduce((acc, child, index) => { if (isWizardStep(child)) { const { props: childProps } = child; const { steps: childStepComponents, id } = childProps; const stepIndex = acc.length + 1; const subSteps = []; acc.push(Object.assign(Object.assign(Object.assign({ index: stepIndex, component: child }, (index === 0 && !(childStepComponents === null || childStepComponents === void 0 ? void 0 : childStepComponents.length) && { isVisited: true })), (childStepComponents && { subStepIds: childStepComponents === null || childStepComponents === void 0 ? void 0 : childStepComponents.map((childStepComponent, subStepIndex) => { subSteps.push(Object.assign(Object.assign({ index: stepIndex + subStepIndex + 1, component: childStepComponent, parentId: id }, (index === 0 && subStepIndex === 0 && { isVisited: true })), (0, exports.normalizeStepProps)(childStepComponent.props))); return childStepComponent.props.id; }) })), (0, exports.normalizeStepProps)(childProps)), ...subSteps); } else { throw new Error('Wizard only accepts children of type WizardStep.'); } return acc; }, []); exports.buildSteps = buildSteps; function isWizardStep(child) { return (0, react_1.isValidElement)(child) && child.type === WizardStep_1.WizardStep; } exports.isWizardStep = isWizardStep; // Omit "children" and "steps" when building steps for the Wizard's context const normalizeStepProps = (_a) => { var { children: _children, steps: _steps } = _a, controlStep = tslib_1.__rest(_a, ["children", "steps"]); return controlStep; }; exports.normalizeStepProps = normalizeStepProps; /** * Determines whether a step is navigable based on disabled/hidden properties * @param steps All steps * @param step * @returns boolean */ const isStepEnabled = (steps, step) => { // Skip over parent steps since they are merely containers of sub-steps if (!(0, types_1.isWizardParentStep)(step) && !step.isHidden && !step.isDisabled) { if ((0, types_1.isWizardSubStep)(step)) { const parentStep = steps.find((otherStep) => otherStep.id === step.parentId); if (!parentStep.isHidden && !parentStep.isDisabled) { return true; } } else { return true; } } return false; }; exports.isStepEnabled = isStepEnabled; //# sourceMappingURL=utils.js.map