# 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'
```