@@ -855,8 +855,8 @@ export default class Element extends Node {
855
855
const { expression } = action ;
856
856
let snippet , dependencies ;
857
857
if ( expression ) {
858
- snippet = action . expression . snippet ;
859
- dependencies = action . expression . dependencies ;
858
+ snippet = expression . snippet ;
859
+ dependencies = expression . dependencies ;
860
860
}
861
861
862
862
const name = block . getUniqueName (
@@ -889,14 +889,22 @@ export default class Element extends Node {
889
889
890
890
addClasses ( block : Block ) {
891
891
this . classes . forEach ( classDir => {
892
- const { expression : { snippet, dependencies} , name } = classDir ;
892
+ const { expression, name } = classDir ;
893
+ let snippet , dependencies ;
894
+ if ( expression ) {
895
+ snippet = expression . snippet ;
896
+ dependencies = expression . dependencies ;
897
+ } else {
898
+ snippet = `ctx${ quotePropIfNecessary ( name ) } ` ;
899
+ dependencies = [ name ] ;
900
+ }
893
901
const updater = `@toggleClass(${ this . var } , "${ name } ", ${ snippet } );` ;
894
902
895
903
block . builders . hydrate . addLine ( updater ) ;
896
904
897
905
if ( ( dependencies && dependencies . size > 0 ) || this . classDependencies . length ) {
898
906
const allDeps = this . classDependencies . concat ( ...dependencies ) ;
899
- const deps = allDeps . map ( dependency => `changed. ${ dependency } ` ) . join ( ' || ' ) ;
907
+ const deps = allDeps . map ( dependency => `changed${ quotePropIfNecessary ( dependency ) } ` ) . join ( ' || ' ) ;
900
908
const condition = allDeps . length > 1 ? `(${ deps } )` : deps ;
901
909
902
910
block . builders . update . addConditional (
@@ -978,7 +986,8 @@ export default class Element extends Node {
978
986
}
979
987
980
988
const classExpr = this . classes . map ( ( classDir : Class ) => {
981
- const { expression : { snippet } , name } = classDir ;
989
+ const { expression, name } = classDir ;
990
+ const snippet = expression ? expression . snippet : `ctx${ quotePropIfNecessary ( name ) } ` ;
982
991
return `${ snippet } ? "${ name } " : ""` ;
983
992
} ) . join ( ', ' ) ;
984
993
@@ -1026,15 +1035,15 @@ export default class Element extends Node {
1026
1035
openingTag += '${' + attribute . chunks [ 0 ] . snippet + ' ? " ' + attribute . name + '" : "" }' ;
1027
1036
} else if ( attribute . name === 'class' && classExpr ) {
1028
1037
addClassAttribute = false ;
1029
- openingTag += ` class="\${ [\`${ attribute . stringifyForSsr ( ) } \`, ${ classExpr } ].join(' ') }"` ;
1038
+ openingTag += ` class="\${ [\`${ attribute . stringifyForSsr ( ) } \`, ${ classExpr } ].join(' ').trim() }"` ;
1030
1039
} else {
1031
1040
openingTag += ` ${ attribute . name } ="${ attribute . stringifyForSsr ( ) } "` ;
1032
1041
}
1033
1042
} ) ;
1034
1043
}
1035
1044
1036
1045
if ( addClassAttribute ) {
1037
- openingTag += ` class="\${ [${ classExpr } ].join(' ') }"` ;
1046
+ openingTag += ` class="\${ [${ classExpr } ].join(' ').trim() }"` ;
1038
1047
}
1039
1048
1040
1049
openingTag += '>' ;
0 commit comments