1- import { getOuterWidth , getOuterHeight } from '../../core/utils/size' ;
2- import $ from '../../core/renderer' ;
1+ import $ from '@js/core/renderer' ;
2+ import { getOuterHeight , getOuterWidth } from '@js/core/utils/size' ;
3+
34const INKRIPPLE_CLASS = 'dx-inkripple' ;
45const INKRIPPLE_WAVE_CLASS = 'dx-inkripple-wave' ;
56const INKRIPPLE_SHOWING_CLASS = 'dx-inkripple-showing' ;
@@ -12,124 +13,131 @@ const HOLD_ANIMATION_DURATION = 1000;
1213const DEFAULT_WAVE_INDEX = 0 ;
1314
1415export const initConfig = ( config = { } ) => {
15- const { useHoldAnimation, waveSizeCoefficient, isCentered, wavesNumber } = config ;
16- return {
17- waveSizeCoefficient : waveSizeCoefficient || DEFAULT_WAVE_SIZE_COEFFICIENT ,
18- isCentered : isCentered || false ,
19- wavesNumber : wavesNumber || 1 ,
20- durations : getDurations ( useHoldAnimation ?? true )
21- } ;
16+ const {
17+ // @ts -expect-error
18+ useHoldAnimation, waveSizeCoefficient, isCentered, wavesNumber,
19+ } = config ;
20+ return {
21+ waveSizeCoefficient : waveSizeCoefficient || DEFAULT_WAVE_SIZE_COEFFICIENT ,
22+ isCentered : isCentered || false ,
23+ wavesNumber : wavesNumber || 1 ,
24+ durations : getDurations ( useHoldAnimation ?? true ) ,
25+ } ;
2226} ;
2327
24- export const render = function ( args ) {
25- const config = initConfig ( args ) ;
28+ export const render = function ( args ? ) {
29+ const config = initConfig ( args ) ;
2630
27- return {
28- showWave : showWave . bind ( this , config ) ,
29- hideWave : hideWave . bind ( this , config )
30- } ;
31+ return {
32+ showWave : showWave . bind ( this , config ) ,
33+ hideWave : hideWave . bind ( this , config ) ,
34+ } ;
3135} ;
3236
33- const getInkRipple = function ( element ) {
34- let result = element . children ( '.' + INKRIPPLE_CLASS ) ;
37+ const getInkRipple = function ( element ) {
38+ let result = element . children ( `. ${ INKRIPPLE_CLASS } ` ) ;
3539
36- if ( result . length === 0 ) {
37- result = $ ( '<div>' )
38- . addClass ( INKRIPPLE_CLASS )
39- . appendTo ( element ) ;
40- }
40+ if ( result . length === 0 ) {
41+ result = $ ( '<div>' )
42+ . addClass ( INKRIPPLE_CLASS )
43+ . appendTo ( element ) ;
44+ }
4145
42- return result ;
46+ return result ;
4347} ;
4448
45- const getWaves = function ( element , wavesNumber ) {
46- const inkRipple = getInkRipple ( $ ( element ) ) ;
47- const result = inkRipple . children ( '.' + INKRIPPLE_WAVE_CLASS ) . toArray ( ) ;
49+ const getWaves = function ( element , wavesNumber ) {
50+ const inkRipple = getInkRipple ( $ ( element ) ) ;
51+ const result = inkRipple . children ( `. ${ INKRIPPLE_WAVE_CLASS } ` ) . toArray ( ) ;
4852
49- for ( let i = result . length ; i < wavesNumber ; i ++ ) {
50- const $currentWave = $ ( '<div>' )
51- . appendTo ( inkRipple )
52- . addClass ( INKRIPPLE_WAVE_CLASS ) ;
53+ for ( let i = result . length ; i < wavesNumber ; i ++ ) {
54+ const $currentWave = $ ( '<div>' )
55+ . appendTo ( inkRipple )
56+ . addClass ( INKRIPPLE_WAVE_CLASS ) ;
5357
54- result . push ( $currentWave [ 0 ] ) ;
55- }
58+ result . push ( $currentWave [ 0 ] ) ;
59+ }
5660
57- return $ ( result ) ;
61+ return $ ( result ) ;
5862} ;
5963
60- const getWaveStyleConfig = function ( args , config ) {
61- const element = $ ( config . element ) ;
62- const elementWidth = getOuterWidth ( element ) ;
63- const elementHeight = getOuterHeight ( element ) ;
64- const elementDiagonal = parseInt ( Math . sqrt ( elementWidth * elementWidth + elementHeight * elementHeight ) ) ;
65- const waveSize = Math . min ( MAX_WAVE_SIZE , parseInt ( elementDiagonal * args . waveSizeCoefficient ) ) ;
66- let left ;
67- let top ;
68-
69- if ( args . isCentered ) {
70- left = ( elementWidth - waveSize ) / 2 ;
71- top = ( elementHeight - waveSize ) / 2 ;
72- } else {
73- const event = config . event ;
74- const position = element . offset ( ) ;
75- const x = event . pageX - position . left ;
76- const y = event . pageY - position . top ;
77-
78- left = x - waveSize / 2 ;
79- top = y - waveSize / 2 ;
80- }
81-
82- return {
83- left,
84- top,
85- height : waveSize ,
86- width : waveSize
87- } ;
64+ const getWaveStyleConfig = function ( args , config ) {
65+ const element = $ ( config . element ) ;
66+ const elementWidth = getOuterWidth ( element ) ;
67+ const elementHeight = getOuterHeight ( element ) ;
68+ // @ts -expect-error
69+ const elementDiagonal = parseInt ( Math . sqrt ( elementWidth * elementWidth + elementHeight * elementHeight ) ) ;
70+ // @ts -expect-error
71+ const waveSize = Math . min ( MAX_WAVE_SIZE , parseInt ( elementDiagonal * args . waveSizeCoefficient ) ) ;
72+ let left ;
73+ let top ;
74+
75+ if ( args . isCentered ) {
76+ left = ( elementWidth - waveSize ) / 2 ;
77+ top = ( elementHeight - waveSize ) / 2 ;
78+ } else {
79+ const { event } = config ;
80+ const position = element . offset ( ) ;
81+ // @ts -expect-error
82+ const x = event . pageX - position . left ;
83+ // @ts -expect-error
84+ const y = event . pageY - position . top ;
85+
86+ left = x - waveSize / 2 ;
87+ top = y - waveSize / 2 ;
88+ }
89+
90+ return {
91+ left,
92+ top,
93+ height : waveSize ,
94+ width : waveSize ,
95+ } ;
8896} ;
8997
9098export function showWave ( args , config ) {
91- const $wave = getWaves ( config . element , args . wavesNumber ) . eq ( config . wave || DEFAULT_WAVE_INDEX ) ;
99+ const $wave = getWaves ( config . element , args . wavesNumber ) . eq ( config . wave || DEFAULT_WAVE_INDEX ) ;
92100
93- args . hidingTimeout && clearTimeout ( args . hidingTimeout ) ;
94- hideSelectedWave ( $wave ) ;
95- $wave . css ( getWaveStyleConfig ( args , config ) ) ;
96- args . showingTimeout = setTimeout ( showingWaveHandler . bind ( this , args , $wave ) , 0 ) ;
101+ args . hidingTimeout && clearTimeout ( args . hidingTimeout ) ;
102+ hideSelectedWave ( $wave ) ;
103+ $wave . css ( getWaveStyleConfig ( args , config ) ) ;
104+ args . showingTimeout = setTimeout ( showingWaveHandler . bind ( this , args , $wave ) , 0 ) ;
97105}
98106
99107function showingWaveHandler ( args , $wave ) {
100- const durationCss = args . durations . showingScale + 'ms' ;
108+ const durationCss = ` ${ args . durations . showingScale } ms` ;
101109
102- $wave
103- . addClass ( INKRIPPLE_SHOWING_CLASS )
104- . css ( 'transitionDuration' , durationCss ) ;
110+ $wave
111+ . addClass ( INKRIPPLE_SHOWING_CLASS )
112+ . css ( 'transitionDuration' , durationCss ) ;
105113}
106114
107115function getDurations ( useHoldAnimation ) {
108- return {
109- showingScale : useHoldAnimation ? HOLD_ANIMATION_DURATION : ANIMATION_DURATION ,
110- hidingScale : ANIMATION_DURATION ,
111- hidingOpacity : ANIMATION_DURATION
112- } ;
116+ return {
117+ showingScale : useHoldAnimation ? HOLD_ANIMATION_DURATION : ANIMATION_DURATION ,
118+ hidingScale : ANIMATION_DURATION ,
119+ hidingOpacity : ANIMATION_DURATION ,
120+ } ;
113121}
114122
115123function hideSelectedWave ( $wave ) {
116- $wave
117- . removeClass ( INKRIPPLE_HIDING_CLASS )
118- . css ( 'transitionDuration' , '' ) ;
124+ $wave
125+ . removeClass ( INKRIPPLE_HIDING_CLASS )
126+ . css ( 'transitionDuration' , '' ) ;
119127}
120128
121129export function hideWave ( args , config ) {
122- args . showingTimeout && clearTimeout ( args . showingTimeout ) ;
130+ args . showingTimeout && clearTimeout ( args . showingTimeout ) ;
123131
124- const $wave = getWaves ( config . element , config . wavesNumber ) . eq ( config . wave || DEFAULT_WAVE_INDEX ) ;
125- const durations = args . durations ;
126- const durationCss = durations . hidingScale + ' ms, ' + durations . hidingOpacity + 'ms' ;
132+ const $wave = getWaves ( config . element , config . wavesNumber ) . eq ( config . wave || DEFAULT_WAVE_INDEX ) ;
133+ const { durations } = args ;
134+ const durationCss = ` ${ durations . hidingScale } ms, ${ durations . hidingOpacity } ms` ;
127135
128- $wave
129- . addClass ( INKRIPPLE_HIDING_CLASS )
130- . removeClass ( INKRIPPLE_SHOWING_CLASS )
131- . css ( 'transitionDuration' , durationCss ) ;
136+ $wave
137+ . addClass ( INKRIPPLE_HIDING_CLASS )
138+ . removeClass ( INKRIPPLE_SHOWING_CLASS )
139+ . css ( 'transitionDuration' , durationCss ) ;
132140
133- const animationDuration = Math . max ( durations . hidingScale , durations . hidingOpacity ) ;
134- args . hidingTimeout = setTimeout ( hideSelectedWave . bind ( this , $wave ) , animationDuration ) ;
141+ const animationDuration = Math . max ( durations . hidingScale , durations . hidingOpacity ) ;
142+ args . hidingTimeout = setTimeout ( hideSelectedWave . bind ( this , $wave ) , animationDuration ) ;
135143}
0 commit comments