@@ -101,6 +101,26 @@ class Slider extends Component {
101101 } )
102102 }
103103
104+ /**
105+ * Attach event listeners to mousemove/mouseup events
106+ * @param e - Event object
107+ * @return value - Slider value
108+ */
109+ getValueFromEvent = ( e ) => {
110+ const { target : { classList, dataset } } = e
111+ let value = this . position ( e )
112+
113+ if (
114+ classList &&
115+ classList . contains ( 'rangeslider__label-item' ) &&
116+ dataset . value
117+ ) {
118+ value = parseFloat ( dataset . value )
119+ }
120+
121+ return value
122+ }
123+
104124 /**
105125 * Attach event listeners to mousemove/mouseup events
106126 * @return {void }
@@ -109,12 +129,15 @@ class Slider extends Component {
109129 const { onChangeStart } = this . props
110130 document . addEventListener ( 'mousemove' , this . handleDrag )
111131 document . addEventListener ( 'mouseup' , this . handleEnd )
132+
133+ const value = this . getValueFromEvent ( e )
134+
112135 this . setState (
113136 {
114137 active : true
115138 } ,
116139 ( ) => {
117- onChangeStart && onChangeStart ( e )
140+ onChangeStart && onChangeStart ( value , e )
118141 }
119142 )
120143 }
@@ -127,18 +150,10 @@ class Slider extends Component {
127150 handleDrag = e => {
128151 e . stopPropagation ( )
129152 const { onChange } = this . props
130- const { target : { className, classList , dataset } } = e
153+ const { target : { className } } = e
131154 if ( ! onChange || className === 'rangeslider__labels' ) return
132155
133- let value = this . position ( e )
134-
135- if (
136- classList &&
137- classList . contains ( 'rangeslider__label-item' ) &&
138- dataset . value
139- ) {
140- value = parseFloat ( dataset . value )
141- }
156+ const value = this . getValueFromEvent ( e )
142157
143158 onChange && onChange ( value , e )
144159 }
@@ -149,12 +164,15 @@ class Slider extends Component {
149164 */
150165 handleEnd = e => {
151166 const { onChangeComplete } = this . props
167+
168+ const value = this . getValueFromEvent ( e )
169+
152170 this . setState (
153171 {
154172 active : false
155173 } ,
156174 ( ) => {
157- onChangeComplete && onChangeComplete ( e )
175+ onChangeComplete && onChangeComplete ( value , e )
158176 }
159177 )
160178 document . removeEventListener ( 'mousemove' , this . handleDrag )
0 commit comments