OrionOtp

Usage

<o-otp> est un composant pouvant être utilisé pour saisir un code OTP, nécessaire lors d'une authentification forte par exemple.

Remplissage automatique via SMS

En utilisant ce composant sur un appareil IOS, il est possible de remplir automatiquement le code si l'utilisateur reçoit un code par sms.

Rappel

Votre SMS devra contenir les mots code ou passcode.

<template>
	<div>
		<img
			src="/assets/OtpAutoFill.png"
			class="img-autofill">
	</div>
</template>

<script setup lang="ts"/>

<style scoped lang="less">

.img-autofill {
  max-height: 30rem;
  margin: auto
}
</style>

Type du code

Il est possible de définir le type du code, en se basant sur les types de base de la balise HTML <input>.
Les deux valeurs possible sont text et number.

Le type number permet de n'autoriser que la saisie de chiffres, et sur mobile d'afficher le pavé numérique.

Type text:
Type number:
<template>
	<div class="flex fd-r jc-sa">
		<div>
			<strong>Type text:</strong>
			<o-otp data-type="text"/>
		</div>
		<div>
			<strong>Type number:</strong>
			<o-otp data-type="number"/>
		</div>
	</div>
</template>

Playground

 ReadableCode : 
text
<template>
	<o-otp
		ref="otp"
		v-bind="state"/>
	<pre> ReadableCode : {{ otp?.readableCode() }}</pre>

	<div class="row row--gutter">
		<div class="col-sm-4">
			<o-input
				v-model="state.size"
				type="number"
				label="size"/>
		</div>
		<div class="col-sm-4">
			<o-select
				v-model="state.dataType"
				:options="dataOptions"
				label="dataType"/>
		</div>
		<o-toggle
			v-model="state.readonly"
			label="readonly"/>
		<o-button
			color="warning"
			outline
			@click="otp?.reset()">
			Reset
		</o-button>
		<o-button
			color="info"
			outline
			@click="otp?.focus()">
			Focus
		</o-button>
	</div>
</template>

<script setup lang="ts">
import { ref, watch } from 'vue';
import { reactive } from 'vue';

const otp = ref<OrionOtp>();

const state = reactive({
	size: 4,
	value: '',
	dataType: 'text',
	readonly: false,
});

const dataOptions = [
	'text',
	'number',
];

watch(() => state.dataType, () => {
	otp.value?.reset();
});

</script>

OtpAutoFill OtpCodeType OtpPlayground

Props

Name
dataType'number' | 'text' = 'text'
readonlyboolean = false
sizenumber = 4
valuestring = undefined

Events

Name
Payload type
filled
string

PublicInstance

Name
Type
reset
() => void
focus
() => void
code
() => Code
readableCode
() => string
_el
(() => HTMLElement | undefined) | undefined