@@ -13,7 +13,130 @@ import { excludePropsForAbstract } from '@sb/utils';
13
13
14
14
## Example
15
15
16
- <Canvas of = { ComponentStories .Default } />
16
+ <Canvas of = { ComponentStories .Default } sourceState = " none" />
17
+
18
+ <details >
19
+
20
+ <summary >Show Code</summary >
21
+
22
+ ``` tsx
23
+ const WizardComponent = () => {
24
+ const [selected, setSelected] = useState (' 1' );
25
+ const [disabled, setDisabled] = useState <Record <string , boolean >>({ ' 2' : true , ' 3' : true , ' 4' : true });
26
+ const [hidden, setHidden] = useState <Record <string , boolean >>({ step3Btn: true , finalizeBtn: true });
27
+ const goToStep2 = () => {
28
+ setDisabled ((prev ) => {
29
+ const { ' 2' : _omit, ... rest } = prev ;
30
+ return rest ;
31
+ });
32
+ setSelected (' 2' );
33
+ };
34
+ const goToStep3 = () => {
35
+ setDisabled ((prev ) => {
36
+ const { ' 3' : _omit, ... rest } = prev ;
37
+ return rest ;
38
+ });
39
+ setSelected (' 3' );
40
+ };
41
+ const handleStep2Completed = (e ) => {
42
+ if (e .target .checked ) {
43
+ setHidden ((prev ) => {
44
+ const { step3Btn : _omit, ... rest } = prev ;
45
+ return rest ;
46
+ });
47
+ }
48
+ };
49
+ const finalizeWizard = () => {
50
+ alert (' Wizard is now completed!' );
51
+ };
52
+ const handlePriceInput = (e ) => {
53
+ if (e .target .value ) {
54
+ setHidden ((prev ) => {
55
+ const { finalizeBtn : _omit, ... rest } = prev ;
56
+ return rest ;
57
+ });
58
+ }
59
+ };
60
+ const handleStepChange = (e ) => {
61
+ setSelected (e .detail .step .dataset .step );
62
+ args .onStepChange (e );
63
+ };
64
+
65
+ return (
66
+ <Wizard { ... args } onStepChange = { handleStepChange } >
67
+ <WizardStep icon = { productIcon } titleText = " Product Type" selected = { selected === ' 1' } data-step = { ' 1' } >
68
+ <Title >1. Product Type</Title >
69
+ <MessageStrip design = { MessageStripDesign .Information } >
70
+ The Wizard control is supposed to break down large tasks, into smaller steps, easier for the user to work
71
+ with.
72
+ </MessageStrip >
73
+ <Label wrappingType = { WrappingType .None } >
74
+ Sed fermentum, mi et tristique ullamcorper, sapien sapien faucibus sem, quis pretium nibh lorem malesuada
75
+ diam. Nulla quis arcu aliquet, feugiat massa semper, volutpat diam. Nam vitae ante posuere, molestie neque sit
76
+ amet, dapibus velit. Maecenas eleifend tempor lorem. Mauris vitae elementum mi, sed eleifend ligula. Nulla
77
+ tempor vulputate dolor, nec dignissim quam convallis ut. Praesent vitae commodo felis, ut iaculis felis. Fusce
78
+ quis eleifend sapien, eget facilisis nibh. Suspendisse est velit, scelerisque ut commodo eget, dignissim quis
79
+ metus. Cras faucibus consequat gravida. Curabitur vitae quam felis. Phasellus ac leo eleifend, commodo tortor
80
+ et, varius quam. Aliquam erat volutpat
81
+ </Label >
82
+ <Button design = { ButtonDesign .Emphasized } onClick = { goToStep2 } >
83
+ Step 2
84
+ </Button >
85
+ </WizardStep >
86
+ <WizardStep
87
+ icon = { hintIcon }
88
+ titleText = " Product Information"
89
+ disabled = { disabled [' 2' ]}
90
+ selected = { selected === ' 2' }
91
+ data-step = { ' 2' }
92
+ >
93
+ <Title >2. Product Information</Title >
94
+ <Label wrappingType = { WrappingType .None } >
95
+ Integer pellentesque leo sit amet dui vehicula, quis ullamcorper est pulvinar. Nam in libero sem. Suspendisse
96
+ arcu metus, molestie a turpis a, molestie aliquet dui. Donec ppellentesque leo sit amet dui vehicula, quis
97
+ ullamcorper est pulvinar. Nam in libero sem. Suspendisse arcu metus, molestie a turpis a, molestie aliquet
98
+ dui. Donec pulvinar, sapien corper eu, posuere malesuada nisl. Integer pellentesque leo sit amet dui vehicula,
99
+ quis ullamcorper est pulvinar. Nam in libero sem. Suspendisse arcu metus, molestie a turpis a, molestie
100
+ aliquet dui. Donec pulvinar, sapien
101
+ </Label >
102
+ <CheckBox onChange = { handleStep2Completed } text = " Step Completed" />
103
+ <br />
104
+ { ! hidden [' step3Btn' ] && (
105
+ <Button design = { ButtonDesign .Emphasized } onClick = { goToStep3 } >
106
+ Step 3
107
+ </Button >
108
+ )}
109
+ </WizardStep >
110
+ <WizardStep
111
+ icon = { leadIcon }
112
+ titleText = " Pricing"
113
+ disabled = { disabled [' 3' ]}
114
+ selected = { selected === ' 3' }
115
+ data-step = { ' 3' }
116
+ >
117
+ <Title >3. Pricing</Title >
118
+ <Label wrappingType = { WrappingType .None } >
119
+ Integer pellentesque leo sit amet dui vehicula, quis ullamcorper est pulvinar. Nam in libero sem. Suspendisse
120
+ arcu metus, molestie a turpis a, molestie aliquet dui. Donec ppellentesque leo sit amet dui vehicula, quis
121
+ ullamcorper est pulvinar. Nam in libero sem. Suspendisse arcu metus, molestie a turpis a, molestie aliquet
122
+ dui. Donec pulvinar, sapien corper eu, posuere malesuada nisl. Integer pellentesque leo sit amet dui vehicula,
123
+ quis ullamcorper est pulvinar. Nam in libero sem. Suspendisse arcu metus, molestie a turpis a, molestie
124
+ aliquet dui. Donec pulvinar, sapien
125
+ </Label >
126
+ <Input placeholder = " Item Price" onInput = { handlePriceInput } />
127
+ { Br }
128
+ { ! hidden [' finalizeBtn' ] && (
129
+ <Button design = { ButtonDesign .Emphasized } onClick = { finalizeWizard } >
130
+ Finalize
131
+ </Button >
132
+ )}
133
+ </WizardStep >
134
+ </Wizard >
135
+ );
136
+ };
137
+ ```
138
+
139
+ </details >
17
140
18
141
## Properties
19
142
0 commit comments