@@ -82,6 +82,7 @@ class CreatePalette extends Component{
8282 currentColor : "teal" ,
8383 newColorName : "" ,
8484 colors : [ ] ,
85+ newPaletteName : ""
8586 }
8687 this . handleDrawerOpen = this . handleDrawerOpen . bind ( this ) ;
8788 this . handleDrawerClose = this . handleDrawerClose . bind ( this ) ;
@@ -107,7 +108,9 @@ class CreatePalette extends Component{
107108 this . setState ( { colors : [ ...this . state . colors , newColor ] , newColorName : "" } ) ;
108109 } ;
109110 handleNameChange ( evt ) {
110- this . setState ( { newColorName : evt . target . value } ) ;
111+ this . setState ( {
112+ [ evt . target . name ] : evt . target . value
113+ } ) ;
111114 } ;
112115 // Custom Validation
113116 componentDidMount ( ) {
@@ -121,9 +124,14 @@ class CreatePalette extends Component{
121124 ( { color} ) => color !== this . state . currentColor
122125 ) ;
123126 } ) ;
127+ ValidatorForm . addValidationRule ( 'isPaletteNameUnique' , ( value ) => {
128+ return this . props . palettes . every (
129+ ( { paletteName} ) => paletteName . toLowerCase ( ) !== value . toLowerCase ( )
130+ ) ;
131+ } ) ;
124132 } ;
125133 savePalette ( ) {
126- let newPaletteName = "New Test Palette" ;
134+ let newPaletteName = this . state . newPaletteName ;
127135 const newPalette = {
128136 id : newPaletteName . toLowerCase ( ) . replace ( / / g, '-' ) ,
129137 paletteName : newPaletteName ,
@@ -159,10 +167,19 @@ class CreatePalette extends Component{
159167 Persistent drawer
160168 </ Typography >
161169
162- < Button variant = "contained" color = "primary" onClick = { this . savePalette } >
163- Save Palette
164- </ Button >
165- 170+ < ValidatorForm onSubmit = { this . savePalette } >
171+ < TextValidator
172+ label = "Palette Name"
173+ value = { this . state . newPaletteName }
174+ name = "newPaletteName"
175+ onChange = { this . handleNameChange }
176+ validators = { [ 'required' , 'isPaletteNameUnique' ] }
177+ errorMessages = { [ 'Enter a Color Name' , 'Palette Name already exist!' ] }
178+ />
179+ < Button variant = "contained" color = "primary" type = "submit" >
180+ Save Palette
181+ </ Button >
182+ </ ValidatorForm >
166183 </ Toolbar >
167184 </ AppBar >
168185 < Drawer
@@ -192,7 +209,8 @@ class CreatePalette extends Component{
192209
193210 < ValidatorForm onSubmit = { this . createNewColor } >
194211 < TextValidator
195- value = { this . state . newColorName }
212+ value = { this . state . newColorName }
213+ name = "newColorName"
196214 onChange = { this . handleNameChange }
197215 validators = { [ 'required' , 'isColorNameUnique' , 'isColorUnique' ] }
198216 errorMessages = { [ 'Enter a Color Name' , 'Color Name is Taken' , 'Color already Added' ] }
0 commit comments