Skip to content

Commit 6bd1b60

Browse files
committed
Deprecate usage of positional argument for slot in render
1 parent eaae37d commit 6bd1b60

File tree

4 files changed

+23
-15
lines changed

4 files changed

+23
-15
lines changed

lib/class_variants/instance.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,13 @@ def merge(**options, &block)
3434
self
3535
end
3636

37-
def render(slot = :default, **overrides)
37+
def render(slot = nil, **overrides)
38+
warn <<~MSG if slot
39+
(ClassVariants) DEPRECATION WARNING: Use of positional argument for slot in render is deprecated
40+
and will be removed in the next version. Use the `slot` keyword argument instead.
41+
MSG
42+
43+
slot = overrides.fetch(:slot, slot || :default)
3844
classes = overrides.delete(:class)
3945
result = []
4046

readme.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ button_classes.render
8181
button_classes.render(color: :red, size: :xl, icon: true)
8282
```
8383

84+
> **Note**: `slot` and `class` are reserved words and cannot be used as variants keys! Continue reading for usage.
85+
8486
## Compound Variants
8587

8688
```ruby
@@ -177,10 +179,10 @@ end
177179

178180
```erb
179181
<div>
180-
<div class="<%= alert_classes.render(:head) %>">
182+
<div class="<%= alert_classes.render(slot: :head) %>">
181183
Head of alert
182184
</div>
183-
<div class="<%= alert_classes.render(:body) %>">
185+
<div class="<%= alert_classes.render(slot: :body) %>">
184186
Body of alert
185187
</div>
186188
</div>
@@ -262,19 +264,19 @@ alert_classes.render
262264
alert_classes.render(color: :red)
263265

264266
# render slot with defaults variants
265-
alert_classes.render(:body)
267+
alert_classes.render(slot: :body)
266268

267269
# render slot with custom variants
268-
alert_classes.render(:body, color: :red)
270+
alert_classes.render(slot: :body, color: :red)
269271

270-
# if slot not exist, throw error? return empty classes?
271-
alert_classes.render(:non_existent_slot, color: :red)
272+
# if slot not exist, return empty classes
273+
alert_classes.render(slot: :non_existent_slot, color: :red)
272274

273275
# render default slot with custom class (will be merged)
274276
alert_classes.render(class: "...")
275277

276278
# render slot with custom class (will be merged)
277-
alert_classes.render(:body, class: "...")
279+
alert_classes.render(slot: :body, class: "...")
278280
```
279281

280282
## Use with Rails

test/merge_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def test_block_merge
6565
defaults variant: :filled
6666
end
6767

68-
assert_equal "rounded mb-4 bg-red-100 dark:bg-red-800", cv.render(:root)
69-
assert_equal "font-bold mb-1 text-red-900 dark:text-red-50", cv.render(:title)
68+
assert_equal "rounded mb-4 bg-red-100 dark:bg-red-800", cv.render(slot: :root)
69+
assert_equal "font-bold mb-1 text-red-900 dark:text-red-50", cv.render(slot: :title)
7070
end
7171
end

test/slot_test.rb

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,25 +45,25 @@ def test_render_default_slot
4545
end
4646

4747
def test_render_nonexistent_slot
48-
assert_equal "", @cv.render(:nonexistent)
48+
assert_equal "", @cv.render(slot: :nonexistent)
4949
end
5050

5151
def test_render_slot_with_defaults
52-
assert_equal "rounded py-3 px-5 mb-4 bg-green-100 dark:bg-green-800", @cv.render(:root)
52+
assert_equal "rounded py-3 px-5 mb-4 bg-green-100 dark:bg-green-800", @cv.render(slot: :root)
5353
end
5454

5555
def test_render_slot_with_variant
56-
assert_equal "rounded py-3 px-5 mb-4 border border-green-700 dark:border-green-500", @cv.render(:root, variant: :outlined)
56+
assert_equal "rounded py-3 px-5 mb-4 border border-green-700 dark:border-green-500", @cv.render(slot: :root, variant: :outlined)
5757
end
5858

5959
def test_render_slot_without_base
60-
assert_equal "text-green-700 dark:text-green-200", @cv.render(:message)
60+
assert_equal "text-green-700 dark:text-green-200", @cv.render(slot: :message)
6161
end
6262

6363
def test_render_slot_with_unused_variant
6464
assert_equal(
6565
"rounded py-3 px-5 mb-4 border border-green-700 dark:border-green-500",
66-
@cv.render(:root, variant: :outlined, type: :button)
66+
@cv.render(slot: :root, variant: :outlined, type: :button)
6767
)
6868
end
6969
end

0 commit comments

Comments
 (0)