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
						
					
					
				| "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;
 |