You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					120 lines
				
				3.2 KiB
			
		
		
			
		
	
	
					120 lines
				
				3.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								var __importDefault = (this && this.__importDefault) || function (mod) {
							 | 
						||
| 
								 | 
							
								    return (mod && mod.__esModule) ? mod : { "default": mod };
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								exports.Stepper = void 0;
							 | 
						||
| 
								 | 
							
								const styled_components_1 = __importDefault(require("styled-components"));
							 | 
						||
| 
								 | 
							
								const box_1 = __importDefault(require("../../atoms/box"));
							 | 
						||
| 
								 | 
							
								const css_class_1 = require("../../utils/css-class");
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @classdesc
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * <img src="components/stepper.png" />
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * It provides wizard workflow where user can go through a couple of steps.
							 | 
						||
| 
								 | 
							
								 * Stepper makes sense when you use it along with {@link Step} component.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * It receives all the same props as {@link Box} - {@link BoxProps}.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ### Usage
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ```javascript
							 | 
						||
| 
								 | 
							
								 * import { Stepper, StepperProps } from '@adminjs/design-system'
							 | 
						||
| 
								 | 
							
								 * ```
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @component
							 | 
						||
| 
								 | 
							
								 * @subcategory Molecules
							 | 
						||
| 
								 | 
							
								 * @hideconstructor
							 | 
						||
| 
								 | 
							
								 * @see {@link https://storybook.adminjs.co/?path=/story/designsystem-molecules-stepper--clickable-steps Storybook}
							 | 
						||
| 
								 | 
							
								 * @example <caption>Clickable steps</caption>
							 | 
						||
| 
								 | 
							
								 * const { useState } = React
							 | 
						||
| 
								 | 
							
								 * const steps = [{
							 | 
						||
| 
								 | 
							
								 *   number: 1, label: "Do this first",
							 | 
						||
| 
								 | 
							
								 * }, {
							 | 
						||
| 
								 | 
							
								 *   number: 2, label: "Don't forget this",
							 | 
						||
| 
								 | 
							
								 * }, {
							 | 
						||
| 
								 | 
							
								 *   number: 3, label: "And finally this",
							 | 
						||
| 
								 | 
							
								 * }]
							 | 
						||
| 
								 | 
							
								 * const ComponentWithStepper = () => {
							 | 
						||
| 
								 | 
							
								 *   const [currentStep, setCurrentStep] = useState(1)
							 | 
						||
| 
								 | 
							
								 *   return (
							 | 
						||
| 
								 | 
							
								 *   <Box>
							 | 
						||
| 
								 | 
							
								 *     <Stepper>
							 | 
						||
| 
								 | 
							
								 *     {steps.map(step => (
							 | 
						||
| 
								 | 
							
								 *        <Step
							 | 
						||
| 
								 | 
							
								 *          active={currentStep === step.number}
							 | 
						||
| 
								 | 
							
								 *          completed={currentStep > step.number}
							 | 
						||
| 
								 | 
							
								 *          onClick={setCurrentStep}
							 | 
						||
| 
								 | 
							
								 *          number={step.number}
							 | 
						||
| 
								 | 
							
								 *        >
							 | 
						||
| 
								 | 
							
								 *          {step.label}
							 | 
						||
| 
								 | 
							
								 *        </Step>
							 | 
						||
| 
								 | 
							
								 *     ))}
							 | 
						||
| 
								 | 
							
								 *     </Stepper>
							 | 
						||
| 
								 | 
							
								 *   </Box>
							 | 
						||
| 
								 | 
							
								 *   )
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * return (<ComponentWithStepper />)
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @example <caption>Steps with bottom navigation</caption>
							 | 
						||
| 
								 | 
							
								 * const { useState } = React
							 | 
						||
| 
								 | 
							
								 * const steps = [{
							 | 
						||
| 
								 | 
							
								 *   number: 1, label: "Do this first",
							 | 
						||
| 
								 | 
							
								 * }, {
							 | 
						||
| 
								 | 
							
								 *   number: 2, label: "Don't forget this",
							 | 
						||
| 
								 | 
							
								 * }, {
							 | 
						||
| 
								 | 
							
								 *   number: 3, label: "And finally this",
							 | 
						||
| 
								 | 
							
								 * }]
							 | 
						||
| 
								 | 
							
								 * const ComponentWithStepper = () => {
							 | 
						||
| 
								 | 
							
								 *   const [currentStep, setCurrentStep] = useState(1)
							 | 
						||
| 
								 | 
							
								 *   return (
							 | 
						||
| 
								 | 
							
								 *   <Box>
							 | 
						||
| 
								 | 
							
								 *     <Stepper>
							 | 
						||
| 
								 | 
							
								 *     {steps.map(step => (
							 | 
						||
| 
								 | 
							
								 *        <Step
							 | 
						||
| 
								 | 
							
								 *          active={currentStep === step.number}
							 | 
						||
| 
								 | 
							
								 *          completed={currentStep > step.number}
							 | 
						||
| 
								 | 
							
								 *          number={step.number}
							 | 
						||
| 
								 | 
							
								 *        >
							 | 
						||
| 
								 | 
							
								 *          {step.label}
							 | 
						||
| 
								 | 
							
								 *        </Step>
							 | 
						||
| 
								 | 
							
								 *     ))}
							 | 
						||
| 
								 | 
							
								 *     </Stepper>
							 | 
						||
| 
								 | 
							
								 *     <Box mt="xl">
							 | 
						||
| 
								 | 
							
								 *       <Button
							 | 
						||
| 
								 | 
							
								 *         disabled={currentStep === 1}
							 | 
						||
| 
								 | 
							
								 *         mr="default"
							 | 
						||
| 
								 | 
							
								 *         onClick={() => setCurrentStep(currentStep - 1)}
							 | 
						||
| 
								 | 
							
								 *       >
							 | 
						||
| 
								 | 
							
								 *         Previous Step
							 | 
						||
| 
								 | 
							
								 *       </Button>
							 | 
						||
| 
								 | 
							
								 *       <Button
							 | 
						||
| 
								 | 
							
								 *         disabled={currentStep === 3}
							 | 
						||
| 
								 | 
							
								 *         variant="primary"
							 | 
						||
| 
								 | 
							
								 *         onClick={() => setCurrentStep(currentStep + 1)}
							 | 
						||
| 
								 | 
							
								 *       >
							 | 
						||
| 
								 | 
							
								 *         Next Step
							 | 
						||
| 
								 | 
							
								 *       </Button>
							 | 
						||
| 
								 | 
							
								 *     </Box>
							 | 
						||
| 
								 | 
							
								 *   </Box>
							 | 
						||
| 
								 | 
							
								 *   )
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * return (<ComponentWithStepper />)
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @section design-system
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								const Stepper = styled_components_1.default(box_1.default) `
							 | 
						||
| 
								 | 
							
								`;
							 | 
						||
| 
								 | 
							
								exports.Stepper = Stepper;
							 | 
						||
| 
								 | 
							
								Stepper.defaultProps = {
							 | 
						||
| 
								 | 
							
								    flex: true,
							 | 
						||
| 
								 | 
							
								    flexDirection: ['column', 'row'],
							 | 
						||
| 
								 | 
							
								    borderBottom: '1px solid',
							 | 
						||
| 
								 | 
							
								    borderBottomColor: 'separator',
							 | 
						||
| 
								 | 
							
								    className: css_class_1.cssClass('Stepper'),
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								exports.default = Stepper;
							 |