# vue-stripe-elements **Repository Path**: mirrors_ectoflow/vue-stripe-elements ## Basic Information - **Project Name**: vue-stripe-elements - **Description**: A Vue 2 component collection for Stripe.js - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-27 - **Last Updated**: 2025-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ⚠️ Deprecated ⚠️ This package is no longer maintained. Vue 2 [reached its end-of-life](https://blog.vuejs.org/posts/vue-2-eol) on December 31st, 2023. # Vue Stripe Elements - Vue 2: deprecated ❗️ - Vue 3: use [vue-stripe-js](https://github.com/ectoflow/vue-stripe-js) ✅ # Quickstart ### 1. Install package: ```bash # npm npm i vue-stripe-elements-plus --save-dev # yarn yarn add vue-stripe-elements-plus --dev ``` ### 2. Add Stripe.js library to the page: ``` ``` > Alternatively, you can load Stripe library dynamically. Just make sure it's ready before your components mount. ### 3. Use built-in components Create card ```html ``` ### 4. Get advanced Create multiple elements ```html ``` ### 5. Go wild You can even create multiple groups, don't ask me why. It's possible. ```html ``` # Styles No base style included. Main reason: overriding it isn't fun. Style as you wish via element options: [see details](https://stripe.com/docs/js/appendix/style). # API Reference ## StripeElements.vue Think of it as of individual group of elements. It creates stripe instance and elements object. ```js import { StripeElements } from 'vue-stripe-elements-plus' ``` ### props ```js // https://stripe.com/docs/js/initializing#init_stripe_js-options stripeKey: { type: String, required: true, }, // https://stripe.com/docs/js/elements_object/create#stripe_elements-options instanceOptions: { type: Object, default: () => ({}), }, // https://stripe.com/docs/stripe.js#element-options elementsOptions: { type: Object, default: () => ({}), }, ``` ### data You can access `instance` and `elements` by adding ref to StripeElements component. ```js // data of StripeElements.vue instance: {}, elements: {}, ``` ### default scoped slot Elegant solution for props. Really handy because you can make `instance` and `elements` available to all children without adding extra code. ```html ``` ## StripeElement.vue Universal and type agnostic component. Create any element supported by Stripe. ### props ```js // elements object // https://stripe.com/docs/js/elements_object/create elements: { type: Object, required: true, }, // type of the element // https://stripe.com/docs/js/elements_object/create_element?type=card type: { type: String, default: () => 'card', }, // element options // https://stripe.com/docs/js/elements_object/create_element?type=card#elements_create-options options: { type: [Object, undefined], }, ``` ### data ```js stripeElement domElement ``` ### options Element options are reactive. Recommendation: don't use v-model on `StripeElement`, instead pass value via options. ```js data() { return { elementOptions: { value: { postalCode: '' } } } }, methods: { changePostalCode() { // will update stripe element automatically this.elementOptions.value.postalCode = '12345' } } ``` ### events Following events are emitted on StripeElement - change - ready - focus - blur - escape ```html ``` ## Helpers In case you like the manual gearbox. Check [stripeElements.js](src/stripeElements.js) for details. ```js import { initStripe, createElements, createElement } from 'vue-stripe-elements-plus' ```