| 
 | 1 | +import React, { useState } from 'react';  | 
 | 2 | + | 
 | 3 | +import type {  | 
 | 4 | +  IonDatetimeCustomEvent,  | 
 | 5 | +  DatetimeChangeEventDetail,  | 
 | 6 | +  IonTextareaCustomEvent,  | 
 | 7 | +  TextareaInputEventDetail,  | 
 | 8 | +  IonSelectCustomEvent,  | 
 | 9 | +  SelectChangeEventDetail,  | 
 | 10 | +  IonRadioGroupCustomEvent,  | 
 | 11 | +  RadioGroupChangeEventDetail,  | 
 | 12 | +  IonCheckboxCustomEvent,  | 
 | 13 | +  CheckboxChangeEventDetail,  | 
 | 14 | +  IonToggleCustomEvent,  | 
 | 15 | +  ToggleChangeEventDetail,  | 
 | 16 | +  IonRangeCustomEvent,  | 
 | 17 | +  RangeChangeEventDetail,  | 
 | 18 | +  IonSegmentCustomEvent,  | 
 | 19 | +  SegmentChangeEventDetail,  | 
 | 20 | +  IonInputCustomEvent,  | 
 | 21 | +  InputInputEventDetail,  | 
 | 22 | +  IonSearchbarCustomEvent,  | 
 | 23 | +  SearchbarInputEventDetail,  | 
 | 24 | +  IonInputOtpCustomEvent,  | 
 | 25 | +  InputOtpInputEventDetail,  | 
 | 26 | +} from '@ionic/core';  | 
 | 27 | +import {  | 
 | 28 | +  IonBackButton,  | 
 | 29 | +  IonButton,  | 
 | 30 | +  IonButtons,  | 
 | 31 | +  IonCheckbox,  | 
 | 32 | +  IonContent,  | 
 | 33 | +  IonDatetime,  | 
 | 34 | +  IonHeader,  | 
 | 35 | +  IonInput,  | 
 | 36 | +  IonInputOtp,  | 
 | 37 | +  IonItem,  | 
 | 38 | +  IonLabel,  | 
 | 39 | +  IonPage,  | 
 | 40 | +  IonRadio,  | 
 | 41 | +  IonRadioGroup,  | 
 | 42 | +  IonRange,  | 
 | 43 | +  IonSearchbar,  | 
 | 44 | +  IonSegment,  | 
 | 45 | +  IonSegmentButton,  | 
 | 46 | +  IonSelect,  | 
 | 47 | +  IonSelectOption,  | 
 | 48 | +  IonTextarea,  | 
 | 49 | +  IonTitle,  | 
 | 50 | +  IonToggle,  | 
 | 51 | +  IonToolbar  | 
 | 52 | +} from '@ionic/react';  | 
 | 53 | + | 
 | 54 | +interface InputsProps {}  | 
 | 55 | + | 
 | 56 | +const Inputs: React.FC<InputsProps> = () => {  | 
 | 57 | +  const [checkbox, setCheckbox] = useState(false);  | 
 | 58 | +  const [toggle, setToggle] = useState(false);  | 
 | 59 | +  const [input, setInput] = useState('');  | 
 | 60 | +  const [inputOtp, setInputOtp] = useState('');  | 
 | 61 | +  const [range, setRange] = useState({ lower: 30, upper: 70 });  | 
 | 62 | +  const [textarea, setTextarea] = useState('');  | 
 | 63 | +  const [searchbar, setSearchbar] = useState('');  | 
 | 64 | +  const [datetime, setDatetime] = useState('');  | 
 | 65 | +  const [radio, setRadio] = useState('red');  | 
 | 66 | +  const [segment, setSegment] = useState('dogs');  | 
 | 67 | +  const [select, setSelect] = useState('apples');  | 
 | 68 | + | 
 | 69 | +  const reset = () => {  | 
 | 70 | +    setCheckbox(false);  | 
 | 71 | +    setToggle(false);  | 
 | 72 | +    setInput('');  | 
 | 73 | +    setInputOtp('');  | 
 | 74 | +    setRange({ lower: 30, upper: 70 });  | 
 | 75 | +    setTextarea('');  | 
 | 76 | +    setSearchbar('');  | 
 | 77 | +    setDatetime('');  | 
 | 78 | +    setRadio('red');  | 
 | 79 | +    setSegment('dogs');  | 
 | 80 | +    setSelect('apples');  | 
 | 81 | +  };  | 
 | 82 | + | 
 | 83 | +  const set = () => {  | 
 | 84 | +    setCheckbox(true);  | 
 | 85 | +    setToggle(true);  | 
 | 86 | +    setInput('Hello World');  | 
 | 87 | +    setInputOtp('1234');  | 
 | 88 | +    setRange({ lower: 10, upper: 90 });  | 
 | 89 | +    setTextarea('Lorem Ipsum');  | 
 | 90 | +    setSearchbar('Search Query');  | 
 | 91 | +    setDatetime('2019-01-31');  | 
 | 92 | +    setRadio('blue');  | 
 | 93 | +    setSegment('cats');  | 
 | 94 | +    setSelect('bananas');  | 
 | 95 | +  };  | 
 | 96 | + | 
 | 97 | +  return (  | 
 | 98 | +    <IonPage data-pageid="inputs">  | 
 | 99 | +      <IonHeader translucent={true}>  | 
 | 100 | +        <IonToolbar>  | 
 | 101 | +          <IonButtons>  | 
 | 102 | +            <IonBackButton></IonBackButton>  | 
 | 103 | +          </IonButtons>  | 
 | 104 | +          <IonTitle>Inputs</IonTitle>  | 
 | 105 | +        </IonToolbar>  | 
 | 106 | +        <IonToolbar>  | 
 | 107 | +          <IonSegment  | 
 | 108 | +            value={segment}  | 
 | 109 | +            onIonChange={(e: IonSegmentCustomEvent<SegmentChangeEventDetail>) => {  | 
 | 110 | +              if (typeof e.detail.value === 'string') setSegment(e.detail.value);  | 
 | 111 | +            }}  | 
 | 112 | +          >  | 
 | 113 | +            <IonSegmentButton value="dogs">  | 
 | 114 | +              <IonLabel>Dogs</IonLabel>  | 
 | 115 | +            </IonSegmentButton>  | 
 | 116 | +            <IonSegmentButton value="cats">  | 
 | 117 | +              <IonLabel>Cats</IonLabel>  | 
 | 118 | +            </IonSegmentButton>  | 
 | 119 | +          </IonSegment>  | 
 | 120 | +        </IonToolbar>  | 
 | 121 | +        <IonToolbar>  | 
 | 122 | +          <IonSearchbar  | 
 | 123 | +            value={searchbar}  | 
 | 124 | +            onIonInput={(e: IonSearchbarCustomEvent<SearchbarInputEventDetail>) => setSearchbar(e.detail.value!)}  | 
 | 125 | +          ></IonSearchbar>  | 
 | 126 | +        </IonToolbar>  | 
 | 127 | +      </IonHeader>  | 
 | 128 | + | 
 | 129 | +      <IonContent fullscreen={true}>  | 
 | 130 | +        <IonHeader collapse="condense">  | 
 | 131 | +          <IonToolbar>  | 
 | 132 | +            <IonTitle size="large">Inputs</IonTitle>  | 
 | 133 | +          </IonToolbar>  | 
 | 134 | +        </IonHeader>  | 
 | 135 | + | 
 | 136 | +        <IonItem>  | 
 | 137 | +          <IonCheckbox  | 
 | 138 | +            checked={checkbox}  | 
 | 139 | +            onIonChange={(e: IonCheckboxCustomEvent<CheckboxChangeEventDetail>) => setCheckbox(e.detail.checked)}  | 
 | 140 | +          >  | 
 | 141 | +            Checkbox  | 
 | 142 | +          </IonCheckbox>  | 
 | 143 | +        </IonItem>  | 
 | 144 | + | 
 | 145 | +        <IonItem>  | 
 | 146 | +          <IonToggle  | 
 | 147 | +            checked={toggle}  | 
 | 148 | +            onIonChange={(e: IonToggleCustomEvent<ToggleChangeEventDetail>) => setToggle(e.detail.checked)}  | 
 | 149 | +          >  | 
 | 150 | +            Toggle  | 
 | 151 | +          </IonToggle>  | 
 | 152 | +        </IonItem>  | 
 | 153 | + | 
 | 154 | +        <IonItem>  | 
 | 155 | +          <IonInput  | 
 | 156 | +            value={input}  | 
 | 157 | +            onIonInput={(e: IonInputCustomEvent<InputInputEventDetail>) => setInput(e.detail.value!)}  | 
 | 158 | +            label="Input"  | 
 | 159 | +          ></IonInput>  | 
 | 160 | +        </IonItem>  | 
 | 161 | + | 
 | 162 | +        <IonItem>  | 
 | 163 | +          <IonInputOtp  | 
 | 164 | +            value={inputOtp}  | 
 | 165 | +            onIonInput={(e: IonInputOtpCustomEvent<InputOtpInputEventDetail>) => setInputOtp(e.detail.value ?? '')}  | 
 | 166 | +          ></IonInputOtp>  | 
 | 167 | +        </IonItem>  | 
 | 168 | + | 
 | 169 | +        <IonItem>  | 
 | 170 | +          <IonRange  | 
 | 171 | +            label="Range"  | 
 | 172 | +            dualKnobs={true}  | 
 | 173 | +            min={0}  | 
 | 174 | +            max={100}  | 
 | 175 | +            value={range}  | 
 | 176 | +            onIonChange={(e: IonRangeCustomEvent<RangeChangeEventDetail>) => setRange(e.detail.value as { lower: number; upper: number })}  | 
 | 177 | +          ></IonRange>  | 
 | 178 | +        </IonItem>  | 
 | 179 | + | 
 | 180 | +        <IonItem>  | 
 | 181 | +          <IonTextarea  | 
 | 182 | +            value={textarea}  | 
 | 183 | +            onIonInput={(e: IonTextareaCustomEvent<TextareaInputEventDetail>) => setTextarea(e.detail.value!)}  | 
 | 184 | +            label="Textarea"  | 
 | 185 | +          ></IonTextarea>  | 
 | 186 | +        </IonItem>  | 
 | 187 | + | 
 | 188 | +        <IonItem>  | 
 | 189 | +          <IonLabel>Datetime</IonLabel>  | 
 | 190 | +          <IonDatetime  | 
 | 191 | +            value={datetime}  | 
 | 192 | +            onIonChange={(e: IonDatetimeCustomEvent<DatetimeChangeEventDetail>) => {  | 
 | 193 | +              const value = e.detail.value;  | 
 | 194 | +              if (typeof value === 'string') {  | 
 | 195 | +                setDatetime(value);  | 
 | 196 | +              }  | 
 | 197 | +            }}  | 
 | 198 | +          ></IonDatetime>  | 
 | 199 | +        </IonItem>  | 
 | 200 | + | 
 | 201 | +        <IonRadioGroup  | 
 | 202 | +          value={radio}  | 
 | 203 | +          onIonChange={(e: IonRadioGroupCustomEvent<RadioGroupChangeEventDetail>) => setRadio(e.detail.value)}  | 
 | 204 | +        >  | 
 | 205 | +          <IonItem>  | 
 | 206 | +            <IonRadio value="red">Red</IonRadio>  | 
 | 207 | +          </IonItem>  | 
 | 208 | +          <IonItem>  | 
 | 209 | +            <IonRadio value="green">Green</IonRadio>  | 
 | 210 | +          </IonItem>  | 
 | 211 | +          <IonItem>  | 
 | 212 | +            <IonRadio value="blue">Blue</IonRadio>  | 
 | 213 | +          </IonItem>  | 
 | 214 | +        </IonRadioGroup>  | 
 | 215 | + | 
 | 216 | +        <IonItem>  | 
 | 217 | +          <IonSelect  | 
 | 218 | +            value={select}  | 
 | 219 | +            onIonChange={(e: IonSelectCustomEvent<SelectChangeEventDetail<any>>) => setSelect(e.detail.value)}  | 
 | 220 | +            label="Select"  | 
 | 221 | +          >  | 
 | 222 | +            <IonSelectOption value="apples">Apples</IonSelectOption>  | 
 | 223 | +            <IonSelectOption value="bananas">Bananas</IonSelectOption>  | 
 | 224 | +          </IonSelect>  | 
 | 225 | +        </IonItem>  | 
 | 226 | + | 
 | 227 | +        <div className="ion-padding">  | 
 | 228 | +          Checkbox: {checkbox.toString()}<br />  | 
 | 229 | +          Toggle: {toggle.toString()}<br />  | 
 | 230 | +          Input: <span id="input-ref">{input}</span><br />  | 
 | 231 | +          Input OTP: <span id="input-otp-ref">{inputOtp}</span><br />  | 
 | 232 | +          Range: {JSON.stringify(range)}<br />  | 
 | 233 | +          Textarea: <span id="textarea-ref">{textarea}</span><br />  | 
 | 234 | +          Searchbar: <span id="searchbar-ref">{searchbar}</span><br />  | 
 | 235 | +          Datetime: {datetime}<br />  | 
 | 236 | +          Radio Group: {radio}<br />  | 
 | 237 | +          Segment: {segment}<br />  | 
 | 238 | +          Select: {select}<br />  | 
 | 239 | + | 
 | 240 | +          <br />  | 
 | 241 | + | 
 | 242 | +          <IonButton expand="block" onClick={reset} id="reset">Reset Values</IonButton>  | 
 | 243 | +          <IonButton expand="block" onClick={set} id="set">Set Values</IonButton>  | 
 | 244 | +        </div>  | 
 | 245 | +      </IonContent>  | 
 | 246 | +    </IonPage>  | 
 | 247 | +  );  | 
 | 248 | +};  | 
 | 249 | + | 
 | 250 | +export default Inputs;  | 
0 commit comments