swal_rails 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/app/assets/javascripts/swal_rails/index.js +2 -0
- data/app/assets/javascripts/swal_rails/stream.js +9 -0
- data/config/importmap.rb +1 -0
- data/lib/swal_rails/asset_manifest.rb +1 -0
- data/lib/swal_rails/engine.rb +4 -0
- data/lib/swal_rails/turbo_stream_helper.rb +35 -0
- data/lib/swal_rails/version.rb +1 -1
- data/lib/swal_rails.rb +1 -0
- data/npm/index.js +2 -0
- data/npm/package.json +2 -1
- data/npm/stream.js +9 -0
- metadata +5 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 702ec3bf674332dffa1b5f0464a0078319d93728e3b2742b9b27386df24f3d27
|
|
4
|
+
data.tar.gz: '0282ce37eadde45f551346a618def9bb5002360403d591c9056a5704e49b22c9'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e35beb8f79b5856e8ecec2f2de3187f340ae2b3fce4de90dae82717fa7aceb7f81d02c89b6b3983e0a83662022fa9a7e792406426f7cceb55e9b82d19725214c
|
|
7
|
+
data.tar.gz: fc87e31a32c9b9c17f7591f8393f57afc6ac27859d5c9dd49e44fa01818e86dfb2c4b8c4183d342f9c9fec577d0efbf2b10ee4daab96929484ced892f2b3628a
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.5.1] - 2026-05-28
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- **Turbo Stream action `swal`** — `Turbo.StreamActions.swal` is registered at
|
|
13
|
+
boot, reading a JSON payload from the `<template>` element and calling
|
|
14
|
+
`Swal.fire()`. Covers `format.turbo_stream` responses, which never fire
|
|
15
|
+
`turbo:load` / `turbo:render` and were therefore silently ignored by the
|
|
16
|
+
existing meta-tag flash path.
|
|
17
|
+
Closes [#27](https://github.com/Metalzoid/swal_rails/issues/27).
|
|
18
|
+
- **`turbo_stream.swal(options)`** — emits a `<turbo-stream action="swal">`
|
|
19
|
+
tag with free-form SweetAlert2 options.
|
|
20
|
+
- **`turbo_stream.swal_flash(key, message, **overrides)`** — flash-map-aware
|
|
21
|
+
shortcut; maps the key through `SwalRails.configuration.flash_map` and
|
|
22
|
+
merges `text:` + any overrides.
|
|
23
|
+
- **npm exports entry `swal_rails/stream`** — added to `package.json` exports
|
|
24
|
+
map for jsbundling users.
|
|
25
|
+
|
|
9
26
|
## [0.5.0] - 2026-05-27
|
|
10
27
|
|
|
11
28
|
### Added
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Swal from "sweetalert2"
|
|
2
2
|
import { installConfirm } from "swal_rails/confirm"
|
|
3
3
|
import { installFlash } from "swal_rails/flash"
|
|
4
|
+
import { installStreamAction } from "swal_rails/stream"
|
|
4
5
|
|
|
5
6
|
const readMeta = (name) => {
|
|
6
7
|
const el = document.querySelector(`meta[name="${name}"]`)
|
|
@@ -38,6 +39,7 @@ const boot = () => {
|
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
installConfirm(Mixin, config)
|
|
42
|
+
installStreamAction(Mixin)
|
|
41
43
|
booted = { Swal: Mixin, config }
|
|
42
44
|
document.dispatchEvent(new CustomEvent("swal-rails:ready", { detail: booted }))
|
|
43
45
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function installStreamAction(Swal) {
|
|
2
|
+
if (typeof Turbo === "undefined" || !Turbo.StreamActions) return
|
|
3
|
+
Turbo.StreamActions.swal = function () {
|
|
4
|
+
const json = this.templateContent.textContent.trim()
|
|
5
|
+
if (!json) return
|
|
6
|
+
try { Swal.fire(JSON.parse(json)) }
|
|
7
|
+
catch (e) { console.debug("swal_rails stream action: payload invalide", e) }
|
|
8
|
+
}
|
|
9
|
+
}
|
data/config/importmap.rb
CHANGED
|
@@ -5,5 +5,6 @@ pin "swal_rails", to: "swal_rails/index.js"
|
|
|
5
5
|
pin "swal_rails/confirm", to: "swal_rails/confirm.js"
|
|
6
6
|
pin "swal_rails/flash", to: "swal_rails/flash.js"
|
|
7
7
|
pin "swal_rails/chain", to: "swal_rails/chain.js"
|
|
8
|
+
pin "swal_rails/stream", to: "swal_rails/stream.js"
|
|
8
9
|
pin_all_from SwalRails::Engine.root.join("app/assets/javascripts/swal_rails/controllers"),
|
|
9
10
|
under: "controllers", to: "swal_rails/controllers"
|
data/lib/swal_rails/engine.rb
CHANGED
|
@@ -29,6 +29,10 @@ module SwalRails
|
|
|
29
29
|
app.config.importmap.cache_sweepers << root.join("vendor/javascript")
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
initializer "swal_rails.turbo_stream_helper", after: :load_config_initializers do
|
|
33
|
+
Turbo::Streams::TagBuilder.prepend(SwalRails::TurboStreamHelper) if defined?(Turbo::Streams::TagBuilder)
|
|
34
|
+
end
|
|
35
|
+
|
|
32
36
|
initializer "swal_rails.helpers" do
|
|
33
37
|
ActiveSupport.on_load(:action_controller_base) do
|
|
34
38
|
helper SwalRails::Helpers
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SwalRails
|
|
4
|
+
# Extends Turbo::Streams::TagBuilder with swal-specific stream actions.
|
|
5
|
+
# Prepended at boot (engine initializer) only when turbo-rails is loaded.
|
|
6
|
+
#
|
|
7
|
+
# Usage in a controller:
|
|
8
|
+
# render turbo_stream: [
|
|
9
|
+
# turbo_stream.update("modal-container", ""),
|
|
10
|
+
# turbo_stream.swal_flash(:notice, "Élément créé avec succès"),
|
|
11
|
+
# # or freeform SA2 options:
|
|
12
|
+
# # turbo_stream.swal(icon: "error", title: "Oops", text: "Something went wrong")
|
|
13
|
+
# ]
|
|
14
|
+
module TurboStreamHelper
|
|
15
|
+
# Emit a <turbo-stream action="swal"> tag with raw SA2 options.
|
|
16
|
+
#
|
|
17
|
+
# turbo_stream.swal(icon: "success", title: "OK", toast: true, timer: 3000)
|
|
18
|
+
def swal(options = {})
|
|
19
|
+
payload = ERB::Util.json_escape(options.to_json)
|
|
20
|
+
turbo_stream_action_tag(:swal, template: payload)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Emit a <turbo-stream action="swal"> tag mapped from a flash key.
|
|
24
|
+
# Merges flash_map defaults for the key, then applies text: and any overrides.
|
|
25
|
+
#
|
|
26
|
+
# turbo_stream.swal_flash(:notice, "Élément créé avec succès")
|
|
27
|
+
# turbo_stream.swal_flash(:error, "Échec", timer: 0)
|
|
28
|
+
def swal_flash(key, message = nil, **overrides)
|
|
29
|
+
base = SwalRails.configuration.flash_map.fetch(key.to_s, {}).dup
|
|
30
|
+
base = base.merge(text: message) if message
|
|
31
|
+
base = base.merge(overrides) unless overrides.empty?
|
|
32
|
+
swal(base)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
data/lib/swal_rails/version.rb
CHANGED
data/lib/swal_rails.rb
CHANGED
|
@@ -32,4 +32,5 @@ require_relative "swal_rails/configuration"
|
|
|
32
32
|
require_relative "swal_rails/asset_manifest"
|
|
33
33
|
require_relative "swal_rails/initializer_version_check"
|
|
34
34
|
require_relative "swal_rails/helpers"
|
|
35
|
+
require_relative "swal_rails/turbo_stream_helper"
|
|
35
36
|
require_relative "swal_rails/engine" if defined?(Rails::Engine)
|
data/npm/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Swal from "sweetalert2"
|
|
2
2
|
import { installConfirm } from "swal_rails/confirm"
|
|
3
3
|
import { installFlash } from "swal_rails/flash"
|
|
4
|
+
import { installStreamAction } from "swal_rails/stream"
|
|
4
5
|
|
|
5
6
|
const readMeta = (name) => {
|
|
6
7
|
const el = document.querySelector(`meta[name="${name}"]`)
|
|
@@ -38,6 +39,7 @@ const boot = () => {
|
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
installConfirm(Mixin, config)
|
|
42
|
+
installStreamAction(Mixin)
|
|
41
43
|
booted = { Swal: Mixin, config }
|
|
42
44
|
document.dispatchEvent(new CustomEvent("swal-rails:ready", { detail: booted }))
|
|
43
45
|
}
|
data/npm/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swal_rails",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "SweetAlert2 for Rails 7+ — batteries included (jsbundling companion)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"./confirm": "./confirm.js",
|
|
11
11
|
"./flash": "./flash.js",
|
|
12
12
|
"./chain": "./chain.js",
|
|
13
|
+
"./stream": "./stream.js",
|
|
13
14
|
"./controllers/swal_controller": "./controllers/swal_controller.js"
|
|
14
15
|
},
|
|
15
16
|
"files": [
|
data/npm/stream.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function installStreamAction(Swal) {
|
|
2
|
+
if (typeof Turbo === "undefined" || !Turbo.StreamActions) return
|
|
3
|
+
Turbo.StreamActions.swal = function () {
|
|
4
|
+
const json = this.templateContent.textContent.trim()
|
|
5
|
+
if (!json) return
|
|
6
|
+
try { Swal.fire(JSON.parse(json)) }
|
|
7
|
+
catch (e) { console.debug("swal_rails stream action: payload invalide", e) }
|
|
8
|
+
}
|
|
9
|
+
}
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: swal_rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Florian Gagnaire
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-05-
|
|
11
|
+
date: 2026-05-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: railties
|
|
@@ -58,6 +58,7 @@ files:
|
|
|
58
58
|
- app/assets/javascripts/swal_rails/controllers/swal_controller.js
|
|
59
59
|
- app/assets/javascripts/swal_rails/flash.js
|
|
60
60
|
- app/assets/javascripts/swal_rails/index.js
|
|
61
|
+
- app/assets/javascripts/swal_rails/stream.js
|
|
61
62
|
- app/assets/stylesheets/swal_rails/index.css
|
|
62
63
|
- config/importmap.rb
|
|
63
64
|
- config/locales/swal_rails.en.yml
|
|
@@ -75,6 +76,7 @@ files:
|
|
|
75
76
|
- lib/swal_rails/engine.rb
|
|
76
77
|
- lib/swal_rails/helpers.rb
|
|
77
78
|
- lib/swal_rails/initializer_version_check.rb
|
|
79
|
+
- lib/swal_rails/turbo_stream_helper.rb
|
|
78
80
|
- lib/swal_rails/version.rb
|
|
79
81
|
- npm/chain.js
|
|
80
82
|
- npm/confirm.js
|
|
@@ -82,6 +84,7 @@ files:
|
|
|
82
84
|
- npm/flash.js
|
|
83
85
|
- npm/index.js
|
|
84
86
|
- npm/package.json
|
|
87
|
+
- npm/stream.js
|
|
85
88
|
- vendor/javascript/sweetalert2/LICENSE
|
|
86
89
|
- vendor/javascript/sweetalert2/sweetalert2.all.js
|
|
87
90
|
- vendor/javascript/sweetalert2/sweetalert2.all.min.js
|