react-email-rails 0.8.0 → 0.10.0
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 +8 -0
- data/README.md +8 -24
- data/lib/react_email_rails/action_mailer.rb +1 -5
- data/lib/react_email_rails/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2d0666badbedb79a20a1fec50afc5aedde5398a3777620f5c2f6c2e080a2a5e2
|
|
4
|
+
data.tar.gz: f19f1dba07f2ad62bf5737e3fab859c33a526305963ee239a1eb63d3048cc7f9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3905f2042d9932512be861bd7bf0be13f7dde1e9f481dae3ebbbe36f676f8562ecc29532a91649e1e64102454427057599d10baa47866ed9bbab6699163546a8
|
|
7
|
+
data.tar.gz: 6236d1b78f000473a2bb696bbf204ce72143bd62abdc1008a0ce0fa05be88777ca2416101107894f92feaea79d16fbc7f9fc4e13d4c00e8b52ca31dff289fa64
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.10.0
|
|
4
|
+
|
|
5
|
+
- **Breaking:** Remove the instance-level `react_share` helper (calling `react_share` from within an action before `mail`). Pass per-mail props directly in the `react:` hash instead; use the class-level `react_share` (with `only`/`except`/`if`/`unless`) for conditional sharing.
|
|
6
|
+
|
|
7
|
+
## 0.9.0
|
|
8
|
+
|
|
9
|
+
- **Breaking:** Rename `react_email_share` to `react_share`, matching the `react:` key used in `mail`. Update any `react_email_share` calls in your mailers to `react_share`.
|
|
10
|
+
|
|
3
11
|
## 0.8.0
|
|
4
12
|
|
|
5
13
|
- **Breaking:** Remove `@react-email/editor` document rendering to focus the library on component-based Action Mailer emails. `ReactEmailRails.compose`, `ReactEmailRails.parse`, the `documents` Vite plugin option, and the `react-email-rails/document` module are gone, along with the `@react-email/editor`, `@tiptap/core`, `@tiptap/html`, `happy-dom`, and `marked` optional peer dependencies.
|
data/README.md
CHANGED
|
@@ -280,15 +280,15 @@ To change naming globally, override `component_path_resolver` in your [Rails con
|
|
|
280
280
|
|
|
281
281
|
### Shared Props
|
|
282
282
|
|
|
283
|
-
Use `
|
|
283
|
+
Use `react_share` to merge props into every `react:` email for a mailer and its subclasses:
|
|
284
284
|
|
|
285
285
|
```ruby
|
|
286
286
|
class MarketingMailer < ApplicationMailer
|
|
287
|
-
|
|
287
|
+
react_share app_name: "Acme"
|
|
288
288
|
|
|
289
|
-
|
|
289
|
+
react_share unread_count: -> { params[:account]&.unread_count }
|
|
290
290
|
|
|
291
|
-
|
|
291
|
+
react_share do
|
|
292
292
|
{ brand: { name: "Acme", url: marketing_url } }
|
|
293
293
|
end
|
|
294
294
|
end
|
|
@@ -310,34 +310,18 @@ Shared props work with `react:` hashes, `react: true`, and explicit `react: "com
|
|
|
310
310
|
|
|
311
311
|
### Conditional Shared Props
|
|
312
312
|
|
|
313
|
-
`
|
|
313
|
+
`react_share` accepts the same filter options as `before_action`: `only`, `except`, `if`, and `unless`.
|
|
314
314
|
|
|
315
315
|
```ruby
|
|
316
|
-
|
|
316
|
+
react_share only: [:welcome, :reactivation] do
|
|
317
317
|
{ promotion: params.fetch(:promotion) }
|
|
318
318
|
end
|
|
319
319
|
|
|
320
|
-
|
|
320
|
+
react_share if: :account_active? do
|
|
321
321
|
{ account: { name: params.fetch(:account).name } }
|
|
322
322
|
end
|
|
323
323
|
```
|
|
324
324
|
|
|
325
|
-
You can also share props inside an action before calling `mail`:
|
|
326
|
-
|
|
327
|
-
```ruby
|
|
328
|
-
def welcome
|
|
329
|
-
account = params.fetch(:account)
|
|
330
|
-
|
|
331
|
-
react_email_share notice: "Thanks for joining!"
|
|
332
|
-
|
|
333
|
-
mail(
|
|
334
|
-
to: account.email,
|
|
335
|
-
subject: "Welcome",
|
|
336
|
-
react: { account: account.as_json(only: [:name]) },
|
|
337
|
-
)
|
|
338
|
-
end
|
|
339
|
-
```
|
|
340
|
-
|
|
341
325
|
### Deep Merging Shared Props
|
|
342
326
|
|
|
343
327
|
Shared props are merged shallowly by default. That means a per-mail prop replaces a shared prop with the same name.
|
|
@@ -345,7 +329,7 @@ Shared props are merged shallowly by default. That means a per-mail prop replace
|
|
|
345
329
|
Pass `deep_merge: true` to merge nested hashes instead:
|
|
346
330
|
|
|
347
331
|
```ruby
|
|
348
|
-
|
|
332
|
+
react_share do
|
|
349
333
|
{ settings: { theme: "light", locale: "en" } }
|
|
350
334
|
end
|
|
351
335
|
|
|
@@ -12,7 +12,7 @@ module ReactEmailRails::ActionMailer
|
|
|
12
12
|
self.react_email_use_instance_props = true
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def
|
|
15
|
+
def react_share(hash = nil, **props, &block)
|
|
16
16
|
options = props.slice(*SHARED_FILTER_OPTIONS)
|
|
17
17
|
data = hash || props.except(*SHARED_FILTER_OPTIONS)
|
|
18
18
|
|
|
@@ -22,10 +22,6 @@ module ReactEmailRails::ActionMailer
|
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
def react_email_share(hash = nil, **props, &block)
|
|
26
|
-
react_email_append_shared(hash || props, block)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
25
|
def mail(headers = {}, &block)
|
|
30
26
|
return super unless headers.is_a?(Hash)
|
|
31
27
|
return super if headers.empty? && @_mail_was_called
|