RoughSwal
RoughSwalはRailsのControllerからアラート代わりにSweetAlertを簡単に呼び出すために書かれました。
def create
User.create!(user_params)
rescue ActiveRecord::RecordInvalid => e
swal{ error '不正な値が含まれています', '項目を確認の上、再度送信してください' }
@user = e.record
end
するとHTML下部に
<script>swal({"type":"error","不正な値が含まれています":"Error","text":"項目を確認の上、再度送信してください"});</script>
と挿入される。
Instration
gem 'rough_swal'
$ bundle install
SweetAlertのインストールは各自でやっていく。
Usage
ショートカット
パラメーターは手動で設定可能ですが、まず単純な起動のショートカットとして以下の呼び出しがあります。
swal { success 'Success', 'success text' }
# <script>swal({"type":"success","title":"Success","text":"success text"});</script>
swal { info 'Info', 'info text' }
# <script>swal({"type":"info","title":"Info","text":"info text"});</script>
swal { warning 'Warning', 'warning text' }
# <script>swal({"type":"warning","title":"Warning","text":"warning text"});</script>
swal { error 'Error', 'error text' }
# <script>swal({"type":"error","title":"Error","text":"error text"});</script>
パラメータを設定して起動
こんな感じで。
swal{
title 'タイトル'
text 'テキスト'
type :info
'#000'
function 'function(){ alert("raw alert") }'
}
パラメーター名はこんな感じで。
PARAMETERS = [
:title,
:text,
:type,
:allow_escape_key,
:custom_class,
:allow_outside_click,
:show_cancel_button,
:show_confirm_button,
:confirm_button_text,
:confirm_button_color,
:cancel_button_text,
:close_on_confirm,
:close_on_cancel,
:image_url,
:image_size,
:timer,
:html,
:animation,
:input_type,
:input_placeholder,
:input_value,
:function,
]
プリセット
よく使うアラートはプリセットとして登録可能です。
RoughSwal.configure do
preset(:timer_alert) {
type 'error'
timer 2000
allow_outside_click true
}
end
swal { timer_alert '失敗', '失敗したみたいです' }
# <script>swal({"type":"error","timer":2000,"allowOutsideClick":true,"title":"失敗","text":"失敗したみたいです"});</script>
デフォルト値
サイトには共通のカラーなどがあるでしょうから、それを前もって設定することもできます。
RoughSwal.configure do
default {
'良し'
'#04c'
'悪し'
}
end
swal {
warning 'いいですか?', 'この構えでいいですか?'
true
}
# <script>swal({"confirmButtonText":"良し","confirmButtonColor":"#04c","cancelButtonText":"悪し","type":"warning","title":"いいですか?","text":"この構えでいいですか?","showCancelButton":true});</script>