baldur 0.2.4 → 0.2.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae0f6c5a19b35179f7ad5b086be6579586be84c99d58bb9337ec0136fa869934
4
- data.tar.gz: 58f7a99208005b98c8cdcc4917c01541b3bf0cdf7a1e091419650d2ae8e5947c
3
+ metadata.gz: 6c30a02aad73679e5b6bb7d00222718c2d41404dc711304bc8c06e93b9263544
4
+ data.tar.gz: beaedad46ac4a8d0bf61b11812c0004675e8a9d707dee05fe54ae589f1ef1ff9
5
5
  SHA512:
6
- metadata.gz: fdf6563345728f209401476fbd221ddbcdd8bc6e0d97afbcb9593165944beefc9024914f2f3437ed127eeb41b76269baa22b86e4ba8262fea976cad070464ebd
7
- data.tar.gz: c9c4024b45bac97751c24b87770321ef2ad58f79720864a89334f91e9821261653048dcb5d183d00b5213fcfb281d78332da2eb12d57b5ebbfbd8e8e2f654bd9
6
+ metadata.gz: 75fe161cdcd9d876121c3ec9182ce70ce402b982a9b42628b2c19bd92286e695df48dc9252f59b11eb0a58406f690d7df50bb74eed56421b425377a6d1f85773
7
+ data.tar.gz: dd85ce27768bb4802ee67f2b27e11926dedf286a82d4dea893ac6463c47727a174017580ab62dbc08b7b6a9d1a7b269a82a392bbafc635ae73363fbb78b348e1
data/TODO.md CHANGED
@@ -9,6 +9,7 @@
9
9
  - [ ] Add end-to-end install verification in dummy app
10
10
 
11
11
  ## Showcase App and Docs
12
+ - [ ] Add agent-friendly docs, fetchable by Context7
12
13
  - [ ] Add a dedicated dummy app in the extracted gem repo for visual smoke checks
13
14
  - [ ] Add a component inventory/showcase page in that dummy app
14
15
  - [ ] Add interaction showcase pages for modal, sidebar, menu select, snackbar, and `panel_secondary`
@@ -23,6 +23,16 @@ module Baldur
23
23
  baldur_render 'baldur/components/snackbar_stack', snackbars: normalize_snackbars(snackbars)
24
24
  end
25
25
 
26
+ FLASH_SNACKBAR_VARIANTS = { success: :success, notice: :notice, alert: :error, warning: :warning }.freeze
27
+
28
+ def snackbar_flash_payloads(flash)
29
+ FLASH_SNACKBAR_VARIANTS.filter_map do |flash_key, variant|
30
+ payload = flash[flash_key]
31
+ next if payload.blank?
32
+ normalize_flash_snackbar(variant, payload)
33
+ end
34
+ end
35
+
26
36
  def ui_checkbox_tag(name, label: nil, description: nil, value: '1', checked: false, required: false,
27
37
  disabled: false, id: nil, data: nil, aria: nil, form: nil, wrapper_class: nil, input_class: nil, &block)
28
38
  body = block_given? ? capture(&block) : nil
@@ -77,6 +87,20 @@ module Baldur
77
87
  values.to_sentence
78
88
  end
79
89
 
90
+ def normalize_flash_snackbar(variant, payload)
91
+ return { variant: variant, message: payload } if payload.is_a?(String)
92
+
93
+ structured_payload = if payload.is_a?(Hash)
94
+ payload
95
+ elsif defined?(ActionController::Parameters) && payload.is_a?(ActionController::Parameters)
96
+ payload.to_unsafe_h
97
+ end
98
+
99
+ return { variant: variant, message: payload } unless structured_payload
100
+
101
+ structured_payload.symbolize_keys.reverse_merge(variant: variant)
102
+ end
103
+
80
104
  def ui_alert_storage_key(collapse_key)
81
105
  normalized_key = collapse_key.to_s.parameterize
82
106
  return nil if normalized_key.blank?
@@ -1,3 +1,3 @@
1
1
  module Baldur
2
- VERSION = '0.2.4'.freeze
2
+ VERSION = '0.2.5'.freeze
3
3
  end
@@ -0,0 +1,72 @@
1
+ require_relative 'test_helper'
2
+
3
+ class BaldurSnackbarFlashHelperTest < Minitest::Test
4
+ include Baldur::UiHelperFeedback
5
+
6
+ def test_string_success_flash
7
+ flash = { success: "User created." }
8
+ result = snackbar_flash_payloads(flash)
9
+ assert_equal 1, result.length
10
+ assert_equal :success, result[0][:variant]
11
+ assert_equal "User created.", result[0][:message]
12
+ end
13
+
14
+ def test_string_notice_flash
15
+ flash = { notice: "Check your email." }
16
+ result = snackbar_flash_payloads(flash)
17
+ assert_equal 1, result.length
18
+ assert_equal :notice, result[0][:variant]
19
+ assert_equal "Check your email.", result[0][:message]
20
+ end
21
+
22
+ def test_string_alert_flash
23
+ flash = { alert: "Something went wrong." }
24
+ result = snackbar_flash_payloads(flash)
25
+ assert_equal 1, result.length
26
+ assert_equal :error, result[0][:variant]
27
+ assert_equal "Something went wrong.", result[0][:message]
28
+ end
29
+
30
+ def test_string_warning_flash
31
+ flash = { warning: "Rate limited." }
32
+ result = snackbar_flash_payloads(flash)
33
+ assert_equal 1, result.length
34
+ assert_equal :warning, result[0][:variant]
35
+ assert_equal "Rate limited.", result[0][:message]
36
+ end
37
+
38
+ def test_blank_flash_values_filtered
39
+ flash = { success: "", notice: nil, alert: "Failed." }
40
+ result = snackbar_flash_payloads(flash)
41
+ assert_equal 1, result.length
42
+ assert_equal :error, result[0][:variant]
43
+ end
44
+
45
+ def test_multiple_flash_keys
46
+ flash = { success: "Created.", alert: "But something else failed." }
47
+ result = snackbar_flash_payloads(flash)
48
+ assert_equal 2, result.length
49
+ end
50
+
51
+ def test_empty_flash
52
+ result = snackbar_flash_payloads({})
53
+ assert_equal [], result
54
+ end
55
+
56
+ def test_hash_payload_with_custom_title
57
+ flash = { alert: { title: "Sign in failed", message: "Invalid credentials." } }
58
+ result = snackbar_flash_payloads(flash)
59
+ assert_equal 1, result.length
60
+ assert_equal :error, result[0][:variant]
61
+ assert_equal "Sign in failed", result[0][:title]
62
+ assert_equal "Invalid credentials.", result[0][:message]
63
+ end
64
+
65
+ def test_hash_payload_reverse_merges_variant
66
+ flash = { success: { title: "Done!", message: "Record saved." } }
67
+ result = snackbar_flash_payloads(flash)
68
+ assert_equal 1, result.length
69
+ assert_equal :success, result[0][:variant]
70
+ assert_equal "Done!", result[0][:title]
71
+ end
72
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baldur
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Varun Murkar
@@ -218,6 +218,7 @@ files:
218
218
  - test/marketing_helper_test.rb
219
219
  - test/run_all.rb
220
220
  - test/sidebar_helper_test.rb
221
+ - test/snackbar_flash_helper_test.rb
221
222
  - test/test_helper.rb
222
223
  - test/theme_toggle_helper_test.rb
223
224
  - test/tmp/install_generator/app/assets/stylesheets/fonts.css