目次
vue-stripe-menuとは
vue-stripe-menuは、オンライン決済のStripeのメニューのようなものを実装することができるコンポーネントライブラリです。
モバイル対応や、水平グループメニュー、直列グループメニューも可能です。
インストール
以下のnpm、yarn、CDNを使ってインストールします。
npm
npm i vue-stripe-menu
yarn
yarn add vue-stripe-menu
CDN
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue-stripe-menu.css"> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue-stripe-menu.umd.min.js"></script>
gitリポジトリは以下から取得できます。
https://github.com/Alexeykhr/vue-stripe-menu
導入手順
1. ライブラリの取り込み
(1)webpack等の場合 [注意]モジュール版は未検証です。
import VueStripeMenu from 'vue-stripe-menu' import 'vue-stripe-menu/dist/vue-stripe-menu.css'
(2)WEBページの場合
const VueStripeMenu = window['vue-stripe-menu'].default;
2.メソッドを設定
Vue.use
に上記で取得した VueStripeMenu
を読み込ませます。
このvue-stripe-menuは、メニュー項目を設定するのにコンポーネントが必要です。
今回は、FirstItem
、 SecondItem
の2つのメニューを用意しました。
Vue.use(VueStripeMenu); const FirstItem = Vue.component('first-item', { template: '<div class="base-text "><div class="base-text__content" v-for="item in items"><a :href="item.link" v-text="item.title"></a></div></div>', data() { return { items: [ {title: 'item1', link:'#'}, {title: 'item2', link:'#'}, {title: 'item3', link:'#'} ] } } }); const SecondItem = Vue.component('second-item', { template: '<div class="base-text "><div class="base-text__content">sample title</div></div>', }); Vue.use(VueStripeMenu); let app = new Vue({ el: '#app', data: { menu: [ { title: 'First item', dropdown: 'first', content: FirstItem }, { title: 'Second item', dropdown: 'second', content: SecondItem }, { title: 'No dropdown' } ] } });
3. テンプレートを準備
<vsm-menu>
タグを設定します。
menu
プロパティに上記で作成した menu
データを設定します。
<div id="app"> <vsm-menu :menu="menu"> <template #default="data"> <component :is="data.item.content" class="content" ></component> <component :is="data.item.secondary" class="content--secondary" ></component> </template> </vsm-menu> </div>
サンプル
さいごに
オンライン決済のStripeのメニューのようなものを実装することができるコンポーネントライブラリでした。
ついに良さげなメニューコンポーネントを見つけたのですが、各メニュー毎にコンポーネントを使用するので、慣れない人には少し敷居が高いかもしれません。(慣れると便利ですけど
しばらくはこのライブラリの研究かなー
今日はこの辺でー