11import { useState } from 'react'
22import Select from 'react-select'
33import Toggle from 'react-toggle'
4+ import { ChipsSet } from 'src/components/Elements'
45
56type PauseSettingsProps = {
67 onSubmit : ( pauseToValue : number ) => void
@@ -19,6 +20,8 @@ const pauseOptions: PauseOptionType[] = [
1920
2021export const PauseSettings = ( { onSubmit } : PauseSettingsProps ) => {
2122 const [ isPauseChecked , setIsPauseChecked ] = useState ( false )
23+ const [ pauseValue , setPauseValue ] = useState ( 0 )
24+ const [ isCustomInput , setIsCustomInput ] = useState ( false )
2225 const [ selectedNumber , setSelectedNumber ] = useState ( '' )
2326 const [ selectedPeriod , setSelectedPeriod ] = useState < PauseOptionType > ( pauseOptions [ 0 ] )
2427
@@ -27,8 +30,11 @@ export const PauseSettings = ({ onSubmit }: PauseSettingsProps) => {
2730 }
2831 const onSubmitClick = ( ) => {
2932 try {
30- let pauseValue = parseInt ( selectedNumber ) * selectedPeriod . value
31- if ( pauseValue <= 0 ) {
33+ let value = pauseValue
34+ if ( isCustomInput ) {
35+ value = parseInt ( selectedNumber ) * selectedPeriod . value
36+ }
37+ if ( value <= 0 ) {
3238 throw Error ( 'Invalid value' )
3339 }
3440 const futureDate = new Date ( new Date ( ) . getTime ( ) + pauseValue * 60000 )
@@ -38,31 +44,69 @@ export const PauseSettings = ({ onSubmit }: PauseSettingsProps) => {
3844 }
3945 }
4046
47+ const onChipsChange = ( selectedChip ) => {
48+ let value = parseInt ( selectedChip . value )
49+ if ( value === - 1 ) {
50+ setPauseValue ( 0 )
51+ return setIsCustomInput ( true )
52+ }
53+ setIsCustomInput ( false )
54+ setPauseValue ( value )
55+ }
4156 return (
4257 < div className = "settingRow" >
4358 < p className = "settingTitle" > Pause App</ p >
4459 < div className = "settingContent" >
4560 < Toggle checked = { isPauseChecked } icons = { false } onChange = { onPauseAppChange } />
61+
4662 { isPauseChecked && (
4763 < div className = "pauseFormWrapper" >
48- < div className = "pauseForm" >
49- < input
50- type = "number"
51- value = { selectedNumber }
52- onChange = { ( e ) => setSelectedNumber ( e . target . value ) }
53- // value={rssUrl || ''}
54- // onChange={(e) => setRssUrl(e.target.value)}
55- placeholder = "Number"
56- />
57- < Select
58- value = { selectedPeriod }
59- options = { pauseOptions }
60- isClearable = { false }
61- isSearchable = { false }
62- classNamePrefix = { 'hackertab' }
63- onChange = { ( newValue ) => setSelectedPeriod ( newValue as PauseOptionType ) }
64+ < div className = "pauseChips" >
65+ < ChipsSet
66+ className = { 'noMargin alternative-color' }
67+ canSelectMultiple = { false }
68+ options = { [
69+ {
70+ label : '30 Minutes' ,
71+ value : '30' ,
72+ } ,
73+ {
74+ label : '1 Hour' ,
75+ value : '60' ,
76+ } ,
77+ {
78+ label : '1 Day' ,
79+ value : '1440' ,
80+ } ,
81+ {
82+ label : 'Custom' ,
83+ value : '-1' ,
84+ } ,
85+ ] }
86+ defaultValues = { [ '60' ] }
87+ onChange = { ( _ , selectedChips ) => {
88+ onChipsChange ( selectedChips [ 0 ] )
89+ } }
6490 />
6591 </ div >
92+ { isCustomInput && (
93+ < div className = "pauseForm" >
94+ < input
95+ type = "number"
96+ value = { selectedNumber }
97+ onChange = { ( e ) => setSelectedNumber ( e . target . value ) }
98+ placeholder = "Number"
99+ />
100+ < Select
101+ value = { selectedPeriod }
102+ options = { pauseOptions }
103+ isClearable = { false }
104+ isSearchable = { false }
105+ classNamePrefix = { 'hackertab' }
106+ onChange = { ( newValue ) => setSelectedPeriod ( newValue as PauseOptionType ) }
107+ />
108+ </ div >
109+ ) }
66110 < div className = "buttonWrapper" >
67111 < button className = "pauseButton" onClick = { onSubmitClick } >
68112 Done
0 commit comments