0.4.0 • Published 12 months ago

vue3-smart-captcha v0.4.0

Weekly downloads
-
License
MIT
Repository
-
Last release
12 months ago

Yandex SmartCaptcha for Vue3 projects

Adds Yandex SmartCaptcha component into your Vue3 application

You need to create Captcha and get keys. You need client site key in order to activate captcha component and it is the only required property

NOTE: this package does NOT provides verification of response - you still need to implement it

Installation

Install it using npm

npm install vue3-smart-captcha

# Or using pnpm
pnpm add vue3-smart-captcha

Usage

No need to add widget script in the head section of your site

As plugin

// main.js
import { createApp } from 'vue'
import { SmartCaptchaPlugin } from 'vue3-smart-captcha'

const app = createApp({})

app.use(SmartCaptchaPlugin)

As component

<template>
    <SmartCaptcha :sitekey="sitekey" />
</template>

<script setup>
import { SmartCaptcha } from 'vue3-smart-captcha'

const sitekey = 'client_site_key' // import.meta.env.VITE_YANDEX_SMART_CAPTCHA_KEY
</script>

You may add style="height: 100px" in order to prevent layout jump

<template>
    <SmartCaptcha style="height: 100px" :sitekey="sitekey" />
</template>

Options

Only sitekey is required

PropertyDefaultDescriptionType
sitekey-Public site key (find it at Yandex console panel)string
loadWidgettrueLoad widget script or not (if not you should provide source script itself)boolean
timeout2000How much time will component looking for smartCaptcha object to initializenumber
callbackundefinedRender property (1)(token: string) => void
hlwindow.navigator.languageSee 1'ru', 'en', 'be', 'kk', 'tt', 'uk', 'uz', 'tr'
testfalseSee 1boolean
webviewfalseSee 1boolean
invisiblefalseSee 1boolean
shieldPositioncenter-rightSee 1'top-left', 'center-left', 'bottom-left', 'top-right', 'center-right', 'bottom-right'
hideShieldfalseSee 1boolean
on-successundefinedSubscription event (2)(token: string) => void
on-network-errorundefinedSee 2() => void
on-challenge-visibleundefinedSee 2() => void
on-challenge-hiddenundefinedSee 2() => void
on-token-expiredundefinedSee 2() => void

Basically it gets every parameter of window.smartCaptcha object plus 5 callbacks for every subscription events named as on + event name in camelCase ('success' => 'onSuccess', 'network-error' => 'onNetworkError', etc)

Do not load widget

You may add script tag <script src="https://smartcaptcha.yandexcloud.net/captcha.js?render=onload" defer></script> yourself or using Nuxt config like

export default defineNuxtConfig({
  app: {
    head: {
      script: [
        {
          src: 'https://smartcaptcha.yandexcloud.net/captcha.js?render=onload',
          defer: true,
        }
      ]
    }
  }
})

This way you don't need to render widget script itself. Just set :load-widget="false" to disable script loading

<SmartCaptcha sitekey="sitekey" :load-widget="false" />

You can specify amount of time in timeout how much script will try to resolve window.smartCaptcha object before give up

License

Open-source under MIT license

Testing

We are using Vitest

Help wanted to cover properties were passed to window.smartCaptcha object

pnpm test
0.4.0

12 months ago

0.3.0

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago