88
99import { ChangeDetectionStrategy , Component , computed , input , signal } from '@angular/core' ;
1010import { TitleCasePipe } from '@angular/common' ;
11- import { MatButton } from '@angular/material/button' ;
12- import { MatFormField , MatLabel } from '@angular/material/form-field' ;
11+ import { MatButton , MatIconButton } from '@angular/material/button' ;
12+ import { MatFormField , MatLabel , MatSuffix } from '@angular/material/form-field' ;
13+ import { MatIcon } from '@angular/material/icon' ;
1314import { MatInput } from '@angular/material/input' ;
1415import { MatOption , MatSelect } from '@angular/material/select' ;
16+ import { MatTooltip } from '@angular/material/tooltip' ;
1517import { TokenName } from './token-name' ;
1618
1719type TokenType = 'base' | 'color' | 'typography' | 'density' ;
@@ -31,34 +33,42 @@ export interface Token {
3133 changeDetection : ChangeDetectionStrategy . OnPush ,
3234 imports : [
3335 MatButton ,
36+ MatIconButton ,
3437 MatFormField ,
3538 MatLabel ,
39+ MatSuffix ,
40+ MatIcon ,
3641 MatInput ,
3742 MatSelect ,
3843 MatOption ,
44+ MatTooltip ,
3945 TokenName ,
4046 TitleCasePipe ,
4147 ] ,
4248} )
4349export class TokenTable {
44- tokens = input . required < Token [ ] > ( ) ;
50+ readonly tokens = input . required < Token [ ] > ( ) ;
4551
46- protected nameFilter = signal ( '' ) ;
47- protected typeFilter = signal < TokenType | null > ( null ) ;
48- protected types : TokenType [ ] = [ 'base' , 'color' , 'typography' , 'density' ] ;
49- protected filteredTokens = computed ( ( ) => {
52+ protected readonly nameFilter = signal ( '' ) ;
53+ protected readonly typeFilter = signal < TokenType | null > ( null ) ;
54+ protected readonly systemTokenFilter = signal ( '' ) ;
55+ protected readonly types : TokenType [ ] = [ 'base' , 'color' , 'typography' , 'density' ] ;
56+ protected readonly filteredTokens = computed ( ( ) => {
5057 const name = this . nameFilter ( ) . trim ( ) . toLowerCase ( ) ;
5158 const typeFilter = this . typeFilter ( ) ;
59+ const systemTokenFilter = this . systemTokenFilter ( ) ;
5260
5361 return this . tokens ( ) . filter (
5462 token =>
5563 ( ! name || token . overridesName . toLowerCase ( ) . includes ( name ) ) &&
56- ( ! typeFilter || token . type === typeFilter ) ,
64+ ( ! typeFilter || token . type === typeFilter ) &&
65+ ( ! systemTokenFilter || token . derivedFrom ?. toLowerCase ( ) . includes ( systemTokenFilter ) ) ,
5766 ) ;
5867 } ) ;
5968
6069 protected reset ( ) {
6170 this . nameFilter . set ( '' ) ;
6271 this . typeFilter . set ( null ) ;
72+ this . systemTokenFilter . set ( '' ) ;
6373 }
6474}
0 commit comments