DocSpace-client/web/ASC.Web.Common/src/components/MediaViewer/sub-components/progress.js

138 lines
3.0 KiB
JavaScript
Raw Normal View History

2020-04-25 18:03:13 +00:00
import React from 'react'
import styled from "styled-components";
2020-04-30 07:35:02 +00:00
import PropTypes from "prop-types";
2020-04-25 18:03:13 +00:00
const StyledProgress = styled.div`
display: inline-block;
.slider-container{
display:inline-block;
border-radius: 2px;
position:relative;
width: ${props => props.width}px;
height:6px;
background:rgba(200,200,200,0.2);
margin:15px 0;
vertical-align: middle;
2020-04-25 18:03:13 +00:00
}
.fill{
cursor: pointer;
width: ${props => 100 * props.value}%;
position:absolute;
top:calc(50% - 3px);
height:6px;
background: #d1d1d1;
border-radius: 2px;
}
input[type='range'] {
display: block;
overflow: visible;
background: transparent;
width: ${props => props.width}px;
height:6px;
outline:none;
margin:0;
-webkit-appearance: none;
position:relative;
cursor: pointer;
}
input[type='range']::-webkit-slider-thumb {
position:relative;
appearance: none;
box-sizing: content-box;
width: 12px;
height: 12px;
margin-top: -3px;
background: white;
border-radius: 50%;
cursor: pointer;
}
input[type=range]::-moz-range-thumb {
position:relative;
appearance: none;
box-sizing: content-box;
width: 12px;
height: 12px;
background: white;
border-radius: 50%;
margin-top: -3px;
cursor: pointer;
}
input[type=range]::-ms-thumb {
position:relative;
appearance: none;
box-sizing: content-box;
width: 12px;
height: 12px;
background: white;
border-radius: 50%;
margin-top: -3px;
cursor: pointer;
}
input[type='range']::-webkit-slider-runnable-track {
margin: 12px 0;
height: 6px;
border-radius: 2px;
cursor: pointer;
-webkit-appearance: none;
text-align: right;
pointer-events: none;
}
input[type="range"]::-moz-range-track {
margin: 12px 0;
height: 6px;
border-radius: 2px;
cursor: pointer;
-webkit-appearance: none;
text-align: right;
pointer-events: none;
}
input[type=range]::-ms-track {
border-color: transparent;
color: transparent;
margin: 12px 0;
height: 6px;
border-radius: 2px;
cursor: pointer;
-webkit-appearance: none;
text-align: right;
pointer-events: none;
}
`;
2020-04-30 07:35:02 +00:00
const Progress = props => {
return (
<StyledProgress {...props} >
<div className="slider-container">
<div className="fill"></div>
<input
type='range' min={0} max={0.999999} step='any'
value={props.value}
onMouseDown={props.handleSeekMouseDown}
2020-05-17 17:00:45 +00:00
onChange={(event) => props.handleSeekChange(event)}
2020-04-30 07:35:02 +00:00
onMouseUp={props.handleSeekMouseUp}
/>
</div>
</StyledProgress>
);
2020-04-25 18:03:13 +00:00
}
2020-04-30 07:35:02 +00:00
Progress.propTypes = {
value: PropTypes.number,
handleSeekMouseDown: PropTypes.func,
handleSeekChange: PropTypes.func,
handleSeekMouseUp: PropTypes.func
}
2020-04-25 18:03:13 +00:00
export default Progress;