@@ -176,128 +176,127 @@ export function getRippleColor(color: string | Color) {
176176 return null ;
177177}
178178
179- class ViewWithElevationAndRipple extends View {
180- @cssProperty elevation = 0 ;
181- @cssProperty dynamicElevationOffset = 0 ;
182- @cssProperty rippleColor : Color ;
183- rippleDrawable : android . graphics . drawable . Drawable ;
184- getRippleColor ( ) {
185- if ( this . rippleColor ) {
186- return getRippleColor ( this . rippleColor ) ;
179+ let mixinInstalled = false ;
180+ export function overrideViewBase ( ) {
181+ const NSView = require ( '@nativescript/core' ) . View ;
182+ class ViewWithElevationAndRipple extends View {
183+ @cssProperty elevation = 0 ;
184+ @cssProperty dynamicElevationOffset = 0 ;
185+ @cssProperty rippleColor : Color ;
186+ rippleDrawable : android . graphics . drawable . Drawable ;
187+ getRippleColor ( ) {
188+ if ( this . rippleColor ) {
189+ return getRippleColor ( this . rippleColor ) ;
190+ }
191+ return getRippleColor ( themer . getAccentColor ( ) ) ;
187192 }
188- return getRippleColor ( themer . getAccentColor ( ) ) ;
189- }
190193
191- setRippleDrawable ( view : android . view . View , radius = 0 ) {
192- if ( ! this . rippleDrawable ) {
193- this . rippleDrawable = createRippleDrawable ( this . getRippleColor ( ) , radius ) ;
194- if ( isPostMarshmallow ( ) ) {
195- view . setForeground ( this . rippleDrawable ) ;
194+ setRippleDrawable ( view : android . view . View , radius = 0 ) {
195+ if ( ! this . rippleDrawable ) {
196+ this . rippleDrawable = createRippleDrawable ( this . getRippleColor ( ) , radius ) ;
197+ if ( isPostMarshmallow ( ) ) {
198+ view . setForeground ( this . rippleDrawable ) ;
199+ }
196200 }
197201 }
198- }
199- [ rippleColorProperty . setNative ] ( color : Color ) {
200- const rippleColor = getRippleColor ( color ) ;
201- const nativeViewProtected = this . nativeViewProtected ;
202- if ( this instanceof Button && isPostMarshmallow ( ) ) {
203- const foreground = ( nativeViewProtected as android . widget . Button ) . getForeground ( ) ;
204- if ( foreground instanceof android . graphics . drawable . RippleDrawable ) {
205- foreground . setColor ( getColorStateList ( rippleColor ) ) ;
206- return ;
207- }
208- const background = ( nativeViewProtected as android . widget . Button ) . getBackground ( ) ;
209- if ( background instanceof android . graphics . drawable . RippleDrawable ) {
210- background . setColor ( getColorStateList ( rippleColor ) ) ;
211- return ;
202+ [ rippleColorProperty . setNative ] ( color : Color ) {
203+ const rippleColor = getRippleColor ( color ) ;
204+ const nativeViewProtected = this . nativeViewProtected ;
205+ if ( this instanceof Button && isPostMarshmallow ( ) ) {
206+ const foreground = ( nativeViewProtected as android . widget . Button ) . getForeground ( ) ;
207+ if ( foreground instanceof android . graphics . drawable . RippleDrawable ) {
208+ foreground . setColor ( getColorStateList ( rippleColor ) ) ;
209+ return ;
210+ }
211+ const background = ( nativeViewProtected as android . widget . Button ) . getBackground ( ) ;
212+ if ( background instanceof android . graphics . drawable . RippleDrawable ) {
213+ background . setColor ( getColorStateList ( rippleColor ) ) ;
214+ return ;
215+ }
212216 }
213- }
214- nativeViewProtected . setClickable ( this . isUserInteractionEnabled ) ;
215- const rippleDrawable = this . rippleDrawable ;
216- if ( ! rippleDrawable ) {
217- this . setRippleDrawable ( nativeViewProtected , Length . toDevicePixels ( this . style . borderTopLeftRadius ) ) ;
218- } else {
219- if ( isPostLollipop ( ) ) {
220- ( rippleDrawable as android . graphics . drawable . RippleDrawable ) . setColor ( getColorStateList ( rippleColor ) ) ;
221- } else if ( ( rippleDrawable as any ) . rippleShape ) {
222- ( rippleDrawable as any ) . rippleShape . getPaint ( ) . setColor ( rippleColor ) ;
217+ nativeViewProtected . setClickable ( this . isUserInteractionEnabled ) ;
218+ const rippleDrawable = this . rippleDrawable ;
219+ if ( ! rippleDrawable ) {
220+ this . setRippleDrawable ( nativeViewProtected , Length . toDevicePixels ( this . style . borderTopLeftRadius ) ) ;
221+ } else {
222+ if ( isPostLollipop ( ) ) {
223+ ( rippleDrawable as android . graphics . drawable . RippleDrawable ) . setColor ( getColorStateList ( rippleColor ) ) ;
224+ } else if ( ( rippleDrawable as any ) . rippleShape ) {
225+ ( rippleDrawable as any ) . rippleShape . getPaint ( ) . setColor ( rippleColor ) ;
226+ }
223227 }
224228 }
225- }
226229
227- [ backgroundInternalProperty . setNative ] ( value : android . graphics . drawable . Drawable | Background ) {
228- if ( this . nativeViewProtected ) {
229- if ( value instanceof android . graphics . drawable . Drawable ) {
230- } else {
231- // we recreate the ripple drawable if necessary.
232- // native button have on the background. Setting color will remove the ripple!
233- if ( this . rippleDrawable || ( value . color && this instanceof Button && this . rippleColor ) ) {
234- this . rippleDrawable = null ;
235- this . setRippleDrawable ( this . nativeViewProtected , value . borderTopLeftRadius ) ;
230+ [ backgroundInternalProperty . setNative ] ( value : android . graphics . drawable . Drawable | Background ) {
231+ if ( this . nativeViewProtected ) {
232+ if ( value instanceof android . graphics . drawable . Drawable ) {
233+ } else {
234+ // we recreate the ripple drawable if necessary.
235+ // native button have on the background. Setting color will remove the ripple!
236+ if ( this . rippleDrawable || ( value . color && this instanceof Button && this . rippleColor ) ) {
237+ this . rippleDrawable = null ;
238+ this . setRippleDrawable ( this . nativeViewProtected , value . borderTopLeftRadius ) ;
239+ }
236240 }
237241 }
238242 }
239- }
240- public requestFocus ( ) {
241- this . focus ( ) ;
242- }
243- public clearFocus ( ) {
244- handleClearFocus ( this . nativeViewProtected ) ;
245- ad . dismissSoftInput ( this . nativeViewProtected ) ;
246- }
243+ public requestFocus ( ) {
244+ this . focus ( ) ;
245+ }
246+ public clearFocus ( ) {
247+ handleClearFocus ( this . nativeViewProtected ) ;
248+ ad . dismissSoftInput ( this . nativeViewProtected ) ;
249+ }
247250
248- getDefaultElevation ( ) : number {
249- const result = this instanceof Button ? 2 : 0 ;
250- return result ;
251- }
251+ getDefaultElevation ( ) : number {
252+ const result = this instanceof Button ? 2 : 0 ;
253+ return result ;
254+ }
252255
253- getDefaultDynamicElevationOffset ( ) {
254- const result = this instanceof Button ? 6 : 0 ;
255- return result ;
256- }
256+ getDefaultDynamicElevationOffset ( ) {
257+ const result = this instanceof Button ? 6 : 0 ;
258+ return result ;
259+ }
257260
258- [ elevationProperty . setNative ] ( value : number ) {
259- if ( isPostLollipop ( ) ) {
260- this . createStateListAnimator ( ) ;
261- } else {
262- const newValue = Length . toDevicePixels ( typeof value === 'string' ? Length . parse ( value ) : value , 0 ) ;
263- androidx . core . view . ViewCompat . setElevation ( this . nativeViewProtected , newValue ) ;
261+ [ elevationProperty . setNative ] ( value : number ) {
262+ if ( isPostLollipop ( ) ) {
263+ this . createStateListAnimator ( ) ;
264+ } else {
265+ const newValue = Length . toDevicePixels ( typeof value === 'string' ? Length . parse ( value ) : value , 0 ) ;
266+ androidx . core . view . ViewCompat . setElevation ( this . nativeViewProtected , newValue ) ;
267+ }
264268 }
265- }
266269
267- createStateListAnimatorTimeout ;
268- createStateListAnimator ( ) {
269- if ( ! this . createStateListAnimatorTimeout ) {
270- this . createStateListAnimatorTimeout = setTimeout ( ( ) => {
271- this . createStateListAnimatorTimeout = null ;
272- createStateListAnimator ( this , this . nativeViewProtected ) ;
273- } ) ;
270+ createStateListAnimatorTimeout ;
271+ createStateListAnimator ( ) {
272+ if ( ! this . createStateListAnimatorTimeout ) {
273+ this . createStateListAnimatorTimeout = setTimeout ( ( ) => {
274+ this . createStateListAnimatorTimeout = null ;
275+ createStateListAnimator ( this , this . nativeViewProtected ) ;
276+ } ) ;
277+ }
274278 }
275- }
276- [ dynamicElevationOffsetProperty . setNative ] ( value : number ) {
277- this . nativeViewProtected . setClickable ( this . isUserInteractionEnabled ) ;
278- if ( isPostLollipop ( ) ) {
279- this . createStateListAnimator ( ) ;
280- } else {
281- const newValue = Length . toDevicePixels ( typeof value === 'string' ? Length . parse ( value ) : value , 0 ) ;
282- androidx . core . view . ViewCompat . setTranslationZ ( this . nativeViewProtected , newValue ) ;
279+ [ dynamicElevationOffsetProperty . setNative ] ( value : number ) {
280+ this . nativeViewProtected . setClickable ( this . isUserInteractionEnabled ) ;
281+ if ( isPostLollipop ( ) ) {
282+ this . createStateListAnimator ( ) ;
283+ } else {
284+ const newValue = Length . toDevicePixels ( typeof value === 'string' ? Length . parse ( value ) : value , 0 ) ;
285+ androidx . core . view . ViewCompat . setTranslationZ ( this . nativeViewProtected , newValue ) ;
286+ }
283287 }
284288 }
285- }
286- class ViewOverride extends View {
287- [ androidElevationProperty . setNative ] ( value : number ) {
288- // override to prevent override of dynamicElevationOffset
289- this [ elevationProperty . setNative ] ( value ) ;
290- }
291- [ androidDynamicElevationOffsetProperty . setNative ] ( value : number ) {
292- // override to prevent override of elevation
293- this [ dynamicElevationOffsetProperty . setNative ] ( value ) ;
294- }
295- }
296-
297- let mixinInstalled = false ;
298- export function overrideViewBase ( ) {
299- const NSView = require ( '@nativescript/core' ) . View ;
300289 applyMixins ( NSView , [ ViewWithElevationAndRipple ] ) ;
290+ class ViewOverride extends View {
291+ [ androidElevationProperty . setNative ] ( value : number ) {
292+ // override to prevent override of dynamicElevationOffset
293+ this [ elevationProperty . setNative ] ( value ) ;
294+ }
295+ [ androidDynamicElevationOffsetProperty . setNative ] ( value : number ) {
296+ // override to prevent override of elevation
297+ this [ dynamicElevationOffsetProperty . setNative ] ( value ) ;
298+ }
299+ }
301300 applyMixins ( NSView , [ ViewOverride ] , { override : true } ) ;
302301}
303302
0 commit comments