File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 6161<Story name ="Disabled and Selected" args ={{ disabled : true , value : ' pizza' }} />
6262
6363<Story name ="Label Hidden" args ={{ labelHidden : true }} />
64+
65+ <Story
66+ name =" Invalid with error message"
67+ args ={{ valid : false , error : ' This value is invalid' }}
68+ />
Original file line number Diff line number Diff line change 2424 import { writable , type Writable } from ' svelte/store' ;
2525
2626 import { onMount , setContext } from ' svelte' ;
27+ import { twMerge } from ' tailwind-merge' ;
2728
2829 import type { ButtonStyles } from ' $lib/holocene/button.svelte' ;
2930 import type { IconName } from ' $lib/holocene/icon' ;
4647 menuClass? : string ;
4748 variant? : ButtonStyles [' variant' ];
4849 required? : boolean ;
50+ valid? : boolean ;
51+ error? : string ;
4952 };
5053
5154 export let label: string ;
5962 export let menuClass: string | undefined = undefined ;
6063 export let variant: ButtonStyles [' variant' ] = ' secondary' ;
6164 export let required = false ;
65+ export let error = ' ' ;
66+ export let valid = true ;
6267
6368 // We get the "true" value of this further down but before the mount happens we should have some kind of value
6469 const valueCtx = writable <T >(value );
106111 <Label class ="pb-1" {label } hidden ={labelHidden } for ={id } {required } />
107112 {#key $labelCtx }
108113 <MenuButton
109- class =" w-full"
114+ class ={ twMerge ( ' w-full' , ! valid ? ' border-danger ' : undefined )}
110115 hasIndicator ={! disabled }
111116 {disabled }
112117 controls =" {id }-select"
136141 <Menu role ="listbox" id =" {id }-select" class ={menuClass }>
137142 <slot />
138143 </Menu >
144+
145+ {#if error && ! valid }
146+ <span class ="text-xs text-danger" >{error }</span >
147+ {/if }
139148</MenuContainer >
140149
141150<style lang =" postcss" >
You can’t perform that action at this time.
0 commit comments