3.2.0 • Published 11 months ago

@sygnas/vue-modal v3.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

syg-vue-modal

Vue で簡易的なモーダルを実装(自分用)。

Description

  • Vue3 でシンプルなモーダルウィンドウを使いたい人向け。
  • css も最低限のものしか指定していない。
  • Youtube 埋め込みとかまったく実装していません。
  • モーダルの開閉は useModalControl() で作成したインスタンス経由で行う。

Latest Release

  • 2023.06.20 : ver.3.2.0
    • autoAlign オプションを追加
  • 2022.11.07 : ver.3.1.0
    • TModalOption から styleBgColor を削除
    • 様々なスタイルを CSS 変数に対応
  • 2022.07.29 : ver.3.0.4
    • README.md に isOpen の説明を追加。
    • package.json に types を追加。
  • 2022.06.12 : ver.3.0.2
    • onClose() を実行する条件を修正
    • type TModalOption を export に追加。
  • 2022.06.11 : ver.3.0.0
    • useModalControl() を使う方式に刷新。
    • それ以前との互換性なし。

Usage

Install

npm install --save @sygnas/vue-modal

Vue2 は過去バージョンを使う。

npm install --save @sygnas/vue-modal@^1.1.1

html / JS

<section>
  <div id="app">
    <button @click.prevent="showModal">モーダル表示</button>

    <vue-modal id="modal-1" :option="modalOption"> モーダルの内容 </vue-modal>
  </div>
</section>
import { createApp } from "vue";
// VueModal本体とデフォルトオプション
import { VueModal, useModalControl } from "@sygnas/vue-modal";
// モーダル用CSS
import "@sygnas/vue-modal/css";

// モーダルのオプション
const modalOption = {
  closeBtnText: "CLOSE",
  styleBgColor: "rgba(0,0,0,0.9)",
};

// モーダルコントローラー
// <vue-modal> に付与した id と同じ文字列を与える
// モーダルの開閉、スクロール、開閉時イベント設定などはコントローラー経由で行う
const modalControl = useModalControl("modal-1", {
  onOpen: (id) => {
    console.log("modal open");
  },
  onClose: (id) => {
    console.log("modal close");
  },
});

const app = createApp({
  components: {
    VueModal,
  },
  data() {
    return {
      modalOption,
    };
  },
  methods: {
    showModal() {
      // モーダル開く
      modalControl.open();
      // 0.1秒後にページ先頭にスムーススクロール
      setTimeout(() => {
        modalControl.scroll(0, true);
      }, 100);
    },
  },
});
.c-modal .c-modal__content {
  background-color: #fff;
  width: 100%;
  max-width: 600px;
  padding: 4rem;
}

Attributes

option

モーダルの外見に関する設定。

<vue-modal :option="modalOption"></vue-modal>
const modalOption = {
  closeBtnText: "CLOSE",
  styleBgColor: "rgba(0,0,0,0.9)",
};
パラメーター初期値説明
closeBtnText'X'閉じるボタンの内容。html 可。
classModal'c-modal'全体の class 名
classBg'c-modal__bg'背景の class 名
classSlide'c-modal__slide'右端にスクロールバーを表示するコンテナの class 名
classContent'c-modal__content'内容コンテナの class 名
classClose'c-modal__close-btn'閉じるボタの class 名
styleZIndex10000モーダルの z-index
transitionBaseName'syg-modal-fade'<transition name=""> の指定
autoAligntrueコンテンツの高さ < 画面の高さ の時に align-items:center を自動で行うか

Control

useModalControl() でインスタンスを作成し、開閉などはインスタンス経由で行う。

const modalControl = useModalControl(id, option);
modalControl.open();
modalControl.scroll(1);

useModalControl(id, option)

引数初期値説明
idundefined【必須】<vue-modal id="モーダルID"> と同じ文字列
optionundefined開閉時に実行する関数を登録。{onOpen, opClose}
const modalControl = useModalControl("modal-1", {
  onOpen: (id) => {
    console.log("modal open");
  },
  onClose: (id) => {
    console.log("modal close");
  },
});

isOpen

モーダルの開閉状態。

console.log(modalControl.isOpen); // true / false

open()

モーダルを開く。

modalControl.open();

close()

モーダルを閉じる。 <vue-modal> 自身で閉じるので使う機会は少ない。

modalControl.close();

scroll(posY, isSmooth = false)

指定座標 posY にスクロールする。 isSmoothtrue を指定するとスムーススクロールになる。

modalControl.scroll(0, true);

License

MIT

Release

  • 2022.04.18
    • サンプルに import "@sygnas/vue-modal/css"; 行を追加。
    • オプションの初期値を読み込んで Object.assign() する方式に変更。
  • 2022.03.15
    • css モジュールが適用されていないのを修正
  • 2022.02.16
    • Vue3 対応
  • 2021.09.16
    • モーダルを閉じるイベント v-on:close を使わず、 v-bind:closeHndl に メソッドを渡す方法に変更。
  • 2021.04.07
    • 親からスクロールさせるための関数 scroll() を追加。
  • 2021.01.16
    • とりあえず作成。
3.2.0

11 months ago

3.1.0

2 years ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.8

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago

2.2.0

2 years ago

2.2.2

2 years ago

2.1.0

2 years ago

2.0.1

2 years ago

1.2.0

3 years ago

1.2.1

3 years ago

1.1.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago