135 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			135 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|  | import { html } from '@design.estate/dees-element'; | ||
|  | 
 | ||
|  | export const stepperDemo = () => html`
 | ||
|  |   <dees-stepper | ||
|  |     .steps=${[ | ||
|  |       { | ||
|  |         title: 'Account Setup', | ||
|  |         content: html`
 | ||
|  |           <dees-form> | ||
|  |             <dees-input-text key="email" label="Work Email" required></dees-input-text> | ||
|  |             <dees-input-text key="password" label="Create Password" type="password" required></dees-input-text> | ||
|  |             <dees-form-submit>Continue</dees-form-submit> | ||
|  |           </dees-form> | ||
|  |         `,
 | ||
|  |         validationFunc: async (stepperArg, elementArg) => { | ||
|  |           const deesForm = elementArg.querySelector('dees-form'); | ||
|  |           deesForm.addEventListener('formData', () => stepperArg.goNext(), { once: true }); | ||
|  |         }, | ||
|  |       }, | ||
|  |       { | ||
|  |         title: 'Profile Details', | ||
|  |         content: html`
 | ||
|  |           <dees-form> | ||
|  |             <dees-input-text key="firstName" label="First Name" required></dees-input-text> | ||
|  |             <dees-input-text key="lastName" label="Last Name" required></dees-input-text> | ||
|  |             <dees-form-submit>Continue</dees-form-submit> | ||
|  |           </dees-form> | ||
|  |         `,
 | ||
|  |         validationFunc: async (stepperArg, elementArg) => { | ||
|  |           const deesForm = elementArg.querySelector('dees-form'); | ||
|  |           deesForm.addEventListener('formData', () => stepperArg.goNext(), { once: true }); | ||
|  |         }, | ||
|  |       }, | ||
|  |       { | ||
|  |         title: 'Contact Information', | ||
|  |         content: html`
 | ||
|  |           <dees-form> | ||
|  |             <dees-input-phone key="phone" label="Mobile Number" required></dees-input-phone> | ||
|  |             <dees-input-text key="company" label="Company"></dees-input-text> | ||
|  |             <dees-form-submit>Continue</dees-form-submit> | ||
|  |           </dees-form> | ||
|  |         `,
 | ||
|  |         validationFunc: async (stepperArg, elementArg) => { | ||
|  |           const deesForm = elementArg.querySelector('dees-form'); | ||
|  |           deesForm.addEventListener('formData', () => stepperArg.goNext(), { once: true }); | ||
|  |         }, | ||
|  |       }, | ||
|  |       { | ||
|  |         title: 'Team Size', | ||
|  |         content: html`
 | ||
|  |           <dees-form> | ||
|  |             <dees-input-dropdown | ||
|  |               key="teamSize" | ||
|  |               label="How big is your team?" | ||
|  |               .options=${[ | ||
|  |                 { label: '1-5', value: '1-5' }, | ||
|  |                 { label: '6-20', value: '6-20' }, | ||
|  |                 { label: '21-50', value: '21-50' }, | ||
|  |                 { label: '51+', value: '51+' }, | ||
|  |               ]} | ||
|  |               required | ||
|  |             ></dees-input-dropdown> | ||
|  |             <dees-form-submit>Continue</dees-form-submit> | ||
|  |           </dees-form> | ||
|  |         `,
 | ||
|  |         validationFunc: async (stepperArg, elementArg) => { | ||
|  |           const deesForm = elementArg.querySelector('dees-form'); | ||
|  |           deesForm.addEventListener('formData', () => stepperArg.goNext(), { once: true }); | ||
|  |         }, | ||
|  |       }, | ||
|  |       { | ||
|  |         title: 'Goals', | ||
|  |         content: html`
 | ||
|  |           <dees-form> | ||
|  |             <dees-input-multitoggle | ||
|  |               key="goal" | ||
|  |               label="Main objective" | ||
|  |               .options=${[ | ||
|  |                 { label: 'Onboarding', value: 'onboarding' }, | ||
|  |                 { label: 'Analytics', value: 'analytics' }, | ||
|  |                 { label: 'Automation', value: 'automation' }, | ||
|  |               ]} | ||
|  |               required | ||
|  |             ></dees-input-multitoggle> | ||
|  |             <dees-form-submit>Continue</dees-form-submit> | ||
|  |           </dees-form> | ||
|  |         `,
 | ||
|  |         validationFunc: async (stepperArg, elementArg) => { | ||
|  |           const deesForm = elementArg.querySelector('dees-form'); | ||
|  |           deesForm.addEventListener('formData', () => stepperArg.goNext(), { once: true }); | ||
|  |         }, | ||
|  |       }, | ||
|  |       { | ||
|  |         title: 'Brand Preferences', | ||
|  |         content: html`
 | ||
|  |           <dees-form> | ||
|  |             <dees-input-text key="brandColor" label="Primary brand color"></dees-input-text> | ||
|  |             <dees-input-text key="tone" label="Preferred tone (e.g. friendly, formal)"></dees-input-text> | ||
|  |             <dees-form-submit>Continue</dees-form-submit> | ||
|  |           </dees-form> | ||
|  |         `,
 | ||
|  |         validationFunc: async (stepperArg, elementArg) => { | ||
|  |           const deesForm = elementArg.querySelector('dees-form'); | ||
|  |           deesForm.addEventListener('formData', () => stepperArg.goNext(), { once: true }); | ||
|  |         }, | ||
|  |       }, | ||
|  |       { | ||
|  |         title: 'Integrations', | ||
|  |         content: html`
 | ||
|  |           <dees-form> | ||
|  |             <dees-input-list | ||
|  |               key="integrations" | ||
|  |               label="Integrations in use" | ||
|  |               placeholder="Add integration" | ||
|  |             ></dees-input-list> | ||
|  |             <dees-form-submit>Continue</dees-form-submit> | ||
|  |           </dees-form> | ||
|  |         `,
 | ||
|  |         validationFunc: async (stepperArg, elementArg) => { | ||
|  |           const deesForm = elementArg.querySelector('dees-form'); | ||
|  |           deesForm.addEventListener('formData', () => stepperArg.goNext(), { once: true }); | ||
|  |         }, | ||
|  |       }, | ||
|  |       { | ||
|  |         title: 'Review & Launch', | ||
|  |         content: html`
 | ||
|  |           <dees-panel> | ||
|  |             <p>Almost there! Review your selections and launch whenever you're ready.</p> | ||
|  |           </dees-panel> | ||
|  |         `,
 | ||
|  |       }, | ||
|  |     ] as const} | ||
|  |   ></dees-stepper> | ||
|  | `;
 |