mirror of
				https://github.com/ionic-team/ionic-framework.git
				synced 2025-11-04 13:17:56 +08:00 
			
		
		
		
	Adds a new component `ion-input-otp` which provides the OTP input functionality - Displays as an input group with multiple boxes accepting a single character - Accepts `type` which determines whether the boxes accept numbers or text/numbers and determines the keyboard to display - Supports changing the displayed keyboard using the `inputmode` property - Accepts a `length` property to control the number of input boxes - Accepts the following properties to change the design: `fill`, `shape`, `size`, `color` - Accepts a `separators` property to show a separator between 1 or more input boxes - Supports the `disabled`, `readonly` and invalid states - Supports limiting the accepted input via the `pattern` property - Emits the following events: `ionInput`, `ionChange`, `ionComplete`, `ionBlur`, `ionFocus` - Exposes the following method: `setFocus` --------- Co-authored-by: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Co-authored-by: Shane <shane@shanessite.net>
		
			
				
	
	
		
			227 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<template>
 | 
						|
  <ion-page data-pageid="inputs">
 | 
						|
    <ion-header :translucent="true">
 | 
						|
      <ion-toolbar>
 | 
						|
        <ion-buttons>
 | 
						|
          <ion-back-button></ion-back-button>
 | 
						|
        </ion-buttons>
 | 
						|
        <ion-title>Inputs</ion-title>
 | 
						|
      </ion-toolbar>
 | 
						|
      <ion-toolbar>
 | 
						|
        <ion-segment v-model="segment">
 | 
						|
          <ion-segment-button value="dogs">
 | 
						|
            <ion-label>Dogs</ion-label>
 | 
						|
          </ion-segment-button>
 | 
						|
          <ion-segment-button value="cats">
 | 
						|
            <ion-label>Cats</ion-label>
 | 
						|
          </ion-segment-button>
 | 
						|
        </ion-segment>
 | 
						|
      </ion-toolbar>
 | 
						|
      <ion-toolbar>
 | 
						|
        <ion-searchbar v-model="searchbar"></ion-searchbar>
 | 
						|
      </ion-toolbar>
 | 
						|
    </ion-header>
 | 
						|
 | 
						|
    <ion-content :fullscreen="true">
 | 
						|
      <ion-header collapse="condense">
 | 
						|
        <ion-toolbar>
 | 
						|
          <ion-title size="large">Inputs</ion-title>
 | 
						|
        </ion-toolbar>
 | 
						|
      </ion-header>
 | 
						|
 | 
						|
      <ion-item>
 | 
						|
        <ion-checkbox v-model="checkbox">Checkbox</ion-checkbox>
 | 
						|
      </ion-item>
 | 
						|
 | 
						|
      <ion-item>
 | 
						|
        <ion-toggle v-model="toggle">Toggle</ion-toggle>
 | 
						|
      </ion-item>
 | 
						|
 | 
						|
      <ion-item>
 | 
						|
        <ion-input v-model="input" label="Input"></ion-input>
 | 
						|
      </ion-item>
 | 
						|
 | 
						|
      <ion-item>
 | 
						|
        <ion-input-otp v-model="inputOtp"></ion-input-otp>
 | 
						|
      </ion-item>
 | 
						|
 | 
						|
      <ion-item>
 | 
						|
        <ion-range label="Range" :dual-knobs="true" :min="0" :max="100" slot="end" v-model="range"></ion-range>
 | 
						|
      </ion-item>
 | 
						|
 | 
						|
      <ion-item>
 | 
						|
        <ion-textarea label="Textarea" v-model="textarea"></ion-textarea>
 | 
						|
      </ion-item>
 | 
						|
 | 
						|
      <ion-item>
 | 
						|
        <ion-label>Datetime</ion-label>
 | 
						|
        <ion-datetime v-model="datetime"></ion-datetime>
 | 
						|
      </ion-item>
 | 
						|
 | 
						|
      <ion-radio-group v-model="radio">
 | 
						|
        <ion-item>
 | 
						|
          <ion-radio value="red">Red</ion-radio>
 | 
						|
        </ion-item>
 | 
						|
        <ion-item>
 | 
						|
          <ion-radio value="green">Green</ion-radio>
 | 
						|
        </ion-item>
 | 
						|
        <ion-item>
 | 
						|
          <ion-radio value="blue">Blue</ion-radio>
 | 
						|
        </ion-item>
 | 
						|
      </ion-radio-group>
 | 
						|
 | 
						|
      <ion-item>
 | 
						|
        <ion-select v-model="select" label="Select">
 | 
						|
          <ion-select-option value="apples">Apples</ion-select-option>
 | 
						|
          <ion-select-option value="bananas">Bananas</ion-select-option>
 | 
						|
        </ion-select>
 | 
						|
      </ion-item>
 | 
						|
 | 
						|
      <div class="ion-padding">
 | 
						|
        Checkbox: {{ checkbox }}<br>
 | 
						|
        Toggle: {{ toggle }}<br>
 | 
						|
        Input: <span id="input-ref">{{ input }}</span><br>
 | 
						|
        Input OTP: <span id="input-otp-ref">{{ inputOtp }}</span><br>
 | 
						|
        Range: {{ range }}<br>
 | 
						|
        Textarea: <span id="textarea-ref">{{ textarea }}</span><br>
 | 
						|
        Searchbar: <span id="searchbar-ref">{{ searchbar }}</span><br>
 | 
						|
        Datetime: {{ datetime }}<br>
 | 
						|
        Radio Group: {{ radio }}<br>
 | 
						|
        Segment: {{ segment }}<br>
 | 
						|
        Select: {{ select }}<br>
 | 
						|
 | 
						|
        <br>
 | 
						|
 | 
						|
        <ion-button expand="block" @click="reset" id="reset">Reset Values</ion-button>
 | 
						|
        <ion-button expand="block" @click="set" id="set">Set Values</ion-button>
 | 
						|
      </div>
 | 
						|
    </ion-content>
 | 
						|
  </ion-page>
 | 
						|
</template>
 | 
						|
 | 
						|
<script lang="ts">
 | 
						|
import {
 | 
						|
  IonBackButton,
 | 
						|
  IonButton,
 | 
						|
  IonButtons,
 | 
						|
  IonCheckbox,
 | 
						|
  IonContent,
 | 
						|
  IonDatetime,
 | 
						|
  IonHeader,
 | 
						|
  IonInput,
 | 
						|
  IonInputOtp,
 | 
						|
  IonItem,
 | 
						|
  IonLabel,
 | 
						|
  IonPage,
 | 
						|
  IonRadio,
 | 
						|
  IonRadioGroup,
 | 
						|
  IonRange,
 | 
						|
  IonSearchbar,
 | 
						|
  IonSegment,
 | 
						|
  IonSegmentButton,
 | 
						|
  IonSelect,
 | 
						|
  IonSelectOption,
 | 
						|
  IonTextarea,
 | 
						|
  IonTitle,
 | 
						|
  IonToggle,
 | 
						|
  IonToolbar
 | 
						|
} from '@ionic/vue';
 | 
						|
import { defineComponent, ref } from 'vue';
 | 
						|
 | 
						|
export default defineComponent({
 | 
						|
  components: {
 | 
						|
    IonBackButton,
 | 
						|
    IonButton,
 | 
						|
    IonButtons,
 | 
						|
    IonCheckbox,
 | 
						|
    IonContent,
 | 
						|
    IonDatetime,
 | 
						|
    IonHeader,
 | 
						|
    IonInput,
 | 
						|
    IonInputOtp,
 | 
						|
    IonItem,
 | 
						|
    IonLabel,
 | 
						|
    IonPage,
 | 
						|
    IonRadio,
 | 
						|
    IonRadioGroup,
 | 
						|
    IonRange,
 | 
						|
    IonSearchbar,
 | 
						|
    IonSegment,
 | 
						|
    IonSegmentButton,
 | 
						|
    IonSelect,
 | 
						|
    IonSelectOption,
 | 
						|
    IonTextarea,
 | 
						|
    IonTitle,
 | 
						|
    IonToggle,
 | 
						|
    IonToolbar
 | 
						|
  },
 | 
						|
  setup() {
 | 
						|
    const checkbox = ref(false);
 | 
						|
    const toggle = ref(false);
 | 
						|
    const input = ref('');
 | 
						|
    const inputOtp = ref('');
 | 
						|
    const range = ref({
 | 
						|
      lower: 30,
 | 
						|
      upper: 70
 | 
						|
    });
 | 
						|
    const textarea = ref('');
 | 
						|
    const searchbar = ref('');
 | 
						|
    const datetime = ref('');
 | 
						|
    const radio = ref('red');
 | 
						|
    const segment = ref('dogs');
 | 
						|
    const select = ref('apples');
 | 
						|
 | 
						|
    const reset = () => {
 | 
						|
      checkbox.value = false;
 | 
						|
      toggle.value = false;
 | 
						|
      input.value = '';
 | 
						|
      inputOtp.value = '';
 | 
						|
      range.value = {
 | 
						|
        lower: 30,
 | 
						|
        upper: 70
 | 
						|
      };
 | 
						|
      textarea.value = '';
 | 
						|
      searchbar.value = '';
 | 
						|
      datetime.value = '';
 | 
						|
      radio.value = 'red';
 | 
						|
      segment.value = 'dogs';
 | 
						|
      select.value = 'apples';
 | 
						|
    }
 | 
						|
 | 
						|
    const set = () => {
 | 
						|
      checkbox.value = true;
 | 
						|
      toggle.value = true;
 | 
						|
      input.value = 'Hello World';
 | 
						|
      inputOtp.value = '1234';
 | 
						|
      range.value = {
 | 
						|
        lower: 10,
 | 
						|
        upper: 90
 | 
						|
      }
 | 
						|
      textarea.value = 'Lorem Ipsum';
 | 
						|
      searchbar.value = 'Search Query';
 | 
						|
      datetime.value = '2019-01-31';
 | 
						|
      radio.value = 'blue';
 | 
						|
      segment.value = 'cats';
 | 
						|
      select.value = 'bananas';
 | 
						|
    }
 | 
						|
 | 
						|
    return {
 | 
						|
      checkbox,
 | 
						|
      toggle,
 | 
						|
      input,
 | 
						|
      inputOtp,
 | 
						|
      range,
 | 
						|
      textarea,
 | 
						|
      searchbar,
 | 
						|
      datetime,
 | 
						|
      radio,
 | 
						|
      segment,
 | 
						|
      select,
 | 
						|
 | 
						|
      reset,
 | 
						|
      set
 | 
						|
    }
 | 
						|
  }
 | 
						|
});
 | 
						|
</script>
 |