@@ -44,37 +44,80 @@ $_md-sys-motion: tokens.md-sys-motion-values();
4444 --_shape-end-end : var (--md-focus-ring-shape-end-end , var (--_shape ));
4545 --_shape-end-start : var (--md-focus-ring-shape-end-start , var (--_shape ));
4646
47- animation-duration : var (--_duration );
47+ animation-delay : 0s , calc (var (--_duration ) * 0.25 );
48+ animation-duration : calc (var (--_duration ) * 0.25 ),
49+ calc (var (--_duration ) * 0.75 );
4850 animation-timing-function : map .get ($_md-sys-motion , ' easing-emphasized' );
49- border-end-end-radius : calc (var (--_offset ) + var (--_shape-end-end ));
50- border-end-start-radius : calc (var (--_offset ) + var (--_shape-end-start ));
51- border-start-end-radius : calc (var (--_offset ) + var (--_shape-start-end ));
52- border-start-start-radius : calc (var (--_offset ) + var (--_shape-start-start ));
53- box-shadow : inset 0 0 0 0 currentColor ;
5451 box-sizing : border-box ;
5552 color : var (--_color );
5653 display : none ;
57- inset : calc (-1 * (var (--_offset ) + 1px ));
58- // NOTE: this 1px offset hides a transparent ring between the outline and
59- // offset when border-radius is large
60- outline-offset : -1px ;
61- outline : var (--_width ) solid currentColor ;
6254 pointer-events : none ;
6355 position : absolute ;
6456 }
6557
6658 :host ([visible ]) {
6759 display : flex ;
68- animation-name : focus- ring;
6960 }
7061
71- @keyframes focus-ring {
62+ :host (:not ([inward ])) {
63+ animation-name : outward- grow, outward- shrink;
64+ border-end-end-radius : calc (var (--_shape-end-end ) + var (--_outward-offset ));
65+ border-end-start-radius : calc (
66+ var (--_shape-end-start ) + var (--_outward-offset )
67+ );
68+ border-start-end-radius : calc (
69+ var (--_shape-start-end ) + var (--_outward-offset )
70+ );
71+ border-start-start-radius : calc (
72+ var (--_shape-start-start ) + var (--_outward-offset )
73+ );
74+ inset : calc (-1 * (var (--_outward-offset )));
75+ outline : var (--_width ) solid currentColor ;
76+ }
77+
78+ :host ([inward ]) {
79+ animation-name : inward- grow, inward- shrink;
80+ border-end-end-radius : calc (var (--_shape-end-end ) - var (--_inward-offset ));
81+ border-end-start-radius : calc (
82+ var (--_shape-end-start ) - var (--_inward-offset )
83+ );
84+ border-start-end-radius : calc (
85+ var (--_shape-start-end ) - var (--_inward-offset )
86+ );
87+ border-start-start-radius : calc (
88+ var (--_shape-start-start ) - var (--_inward-offset )
89+ );
90+ border : var (--_width ) solid currentColor ;
91+ inset : var (--_inward-offset );
92+ }
93+
94+ @keyframes outward-grow {
7295 from {
73- outline-width : 0px ;
96+ outline-width : 0 ;
97+ }
98+ to {
99+ outline-width : var (--_active-width );
74100 }
75- 25% {
76- box-shadow : inset 0 0 0 calc (var (--_active-width ) / 2 ) currentColor ;
77- outline-width : calc (var (--_active-width ) / 2 );
101+ }
102+
103+ @keyframes outward-shrink {
104+ from {
105+ outline-width : var (--_active-width );
106+ }
107+ }
108+
109+ @keyframes inward-grow {
110+ from {
111+ border-width : 0 ;
112+ }
113+ to {
114+ border-width : var (--_active-width );
115+ }
116+ }
117+
118+ @keyframes inward-shrink {
119+ from {
120+ border-width : var (--_active-width );
78121 }
79122 }
80123
0 commit comments