daisyui 1.0.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 +7 -0
- data/lib/daisy_ui/accordion.rb +49 -0
- data/lib/daisy_ui/alert.rb +76 -0
- data/lib/daisy_ui/avatar.rb +41 -0
- data/lib/daisy_ui/avatar_group.rb +19 -0
- data/lib/daisy_ui/badge.rb +118 -0
- data/lib/daisy_ui/base.rb +239 -0
- data/lib/daisy_ui/breadcrumbs.rb +25 -0
- data/lib/daisy_ui/button.rb +197 -0
- data/lib/daisy_ui/calendar.rb +48 -0
- data/lib/daisy_ui/card.rb +73 -0
- data/lib/daisy_ui/carousel.rb +51 -0
- data/lib/daisy_ui/chat.rb +49 -0
- data/lib/daisy_ui/checkbox.rb +112 -0
- data/lib/daisy_ui/collapse.rb +53 -0
- data/lib/daisy_ui/collapsible_sub_menu.rb +55 -0
- data/lib/daisy_ui/configurable.rb +45 -0
- data/lib/daisy_ui/countdown.rb +16 -0
- data/lib/daisy_ui/diff.rb +28 -0
- data/lib/daisy_ui/divider.rb +103 -0
- data/lib/daisy_ui/dock.rb +65 -0
- data/lib/daisy_ui/drawer.rb +61 -0
- data/lib/daisy_ui/dropdown.rb +101 -0
- data/lib/daisy_ui/fab.rb +34 -0
- data/lib/daisy_ui/fieldset.rb +20 -0
- data/lib/daisy_ui/file_input.rb +117 -0
- data/lib/daisy_ui/filter.rb +21 -0
- data/lib/daisy_ui/footer.rb +44 -0
- data/lib/daisy_ui/form_control.rb +15 -0
- data/lib/daisy_ui/hero.rb +24 -0
- data/lib/daisy_ui/hover_gallery.rb +16 -0
- data/lib/daisy_ui/indicator.rb +65 -0
- data/lib/daisy_ui/input.rb +117 -0
- data/lib/daisy_ui/join.rb +35 -0
- data/lib/daisy_ui/kbd.rb +54 -0
- data/lib/daisy_ui/label.rb +15 -0
- data/lib/daisy_ui/link.rb +137 -0
- data/lib/daisy_ui/list.rb +37 -0
- data/lib/daisy_ui/loading.rb +146 -0
- data/lib/daisy_ui/mask.rb +167 -0
- data/lib/daisy_ui/menu.rb +79 -0
- data/lib/daisy_ui/menu_item.rb +50 -0
- data/lib/daisy_ui/mockup_browser.rb +20 -0
- data/lib/daisy_ui/mockup_code.rb +16 -0
- data/lib/daisy_ui/mockup_phone.rb +24 -0
- data/lib/daisy_ui/mockup_window.rb +16 -0
- data/lib/daisy_ui/modal.rb +77 -0
- data/lib/daisy_ui/navbar.rb +31 -0
- data/lib/daisy_ui/pagination.rb +37 -0
- data/lib/daisy_ui/progress.rb +75 -0
- data/lib/daisy_ui/radial_progress.rb +181 -0
- data/lib/daisy_ui/radio.rb +110 -0
- data/lib/daisy_ui/range.rb +110 -0
- data/lib/daisy_ui/rating.rb +68 -0
- data/lib/daisy_ui/select.rb +117 -0
- data/lib/daisy_ui/skeleton.rb +19 -0
- data/lib/daisy_ui/stack.rb +47 -0
- data/lib/daisy_ui/stat.rb +57 -0
- data/lib/daisy_ui/status.rb +110 -0
- data/lib/daisy_ui/steps.rb +41 -0
- data/lib/daisy_ui/sub_menu.rb +37 -0
- data/lib/daisy_ui/swap.rb +52 -0
- data/lib/daisy_ui/tab.rb +40 -0
- data/lib/daisy_ui/tab_with_content.rb +72 -0
- data/lib/daisy_ui/tab_without_content.rb +40 -0
- data/lib/daisy_ui/table.rb +81 -0
- data/lib/daisy_ui/table_row.rb +33 -0
- data/lib/daisy_ui/tabs.rb +80 -0
- data/lib/daisy_ui/textarea.rb +117 -0
- data/lib/daisy_ui/theme_controller.rb +64 -0
- data/lib/daisy_ui/timeline.rb +66 -0
- data/lib/daisy_ui/toast.rb +61 -0
- data/lib/daisy_ui/toggle.rb +110 -0
- data/lib/daisy_ui/tooltip.rb +107 -0
- data/lib/daisy_ui/updated_at.rb +7 -0
- data/lib/daisy_ui/validator.rb +25 -0
- data/lib/daisy_ui/version.rb +5 -0
- data/lib/daisy_ui.rb +17 -0
- metadata +156 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
# @component html class="stats"
|
|
5
|
+
class Stat < Base
|
|
6
|
+
self.component_class = "stats"
|
|
7
|
+
|
|
8
|
+
def initialize(*, as: :div, **)
|
|
9
|
+
super
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def view_template(&)
|
|
13
|
+
public_send(as, class: classes, **attributes, &)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def item(**opts, &)
|
|
17
|
+
div(class: component_classes("stat", options: opts), **opts, &)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def title(**opts, &)
|
|
21
|
+
div(class: component_classes("stat-title", options: opts), **opts, &)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def value(**opts, &)
|
|
25
|
+
div(class: component_classes("stat-value", options: opts), **opts, &)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def desc(**opts, &)
|
|
29
|
+
div(class: component_classes("stat-desc", options: opts), **opts, &)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def figure(**opts, &)
|
|
33
|
+
div(class: component_classes("stat-figure", options: opts), **opts, &)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def actions(**opts, &)
|
|
37
|
+
div(class: component_classes("stat-actions", options: opts), **opts, &)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
register_modifiers(
|
|
41
|
+
# "sm:stats-horizontal"
|
|
42
|
+
# "@sm:stats-horizontal"
|
|
43
|
+
# "md:stats-horizontal"
|
|
44
|
+
# "@md:stats-horizontal"
|
|
45
|
+
# "lg:stats-horizontal"
|
|
46
|
+
# "@lg:stats-horizontal"
|
|
47
|
+
horizontal: "stats-horizontal",
|
|
48
|
+
# "sm:stats-vertical"
|
|
49
|
+
# "@sm:stats-vertical"
|
|
50
|
+
# "md:stats-vertical"
|
|
51
|
+
# "@md:stats-vertical"
|
|
52
|
+
# "lg:stats-vertical"
|
|
53
|
+
# "@lg:stats-vertical"
|
|
54
|
+
vertical: "stats-vertical"
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
# @component html class="status"
|
|
5
|
+
class Status < Base
|
|
6
|
+
self.component_class = :status
|
|
7
|
+
|
|
8
|
+
def initialize(*, as: :span, **)
|
|
9
|
+
super
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def view_template(&)
|
|
13
|
+
public_send(as, class: classes, **attributes, &)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
register_modifiers(
|
|
17
|
+
# "sm:status-xs"
|
|
18
|
+
# "@sm:status-xs"
|
|
19
|
+
# "md:status-xs"
|
|
20
|
+
# "@md:status-xs"
|
|
21
|
+
# "lg:status-xs"
|
|
22
|
+
# "@lg:status-xs"
|
|
23
|
+
xs: "status-xs",
|
|
24
|
+
# "sm:status-sm"
|
|
25
|
+
# "@sm:status-sm"
|
|
26
|
+
# "md:status-sm"
|
|
27
|
+
# "@md:status-sm"
|
|
28
|
+
# "lg:status-sm"
|
|
29
|
+
# "@lg:status-sm"
|
|
30
|
+
sm: "status-sm",
|
|
31
|
+
# "sm:status-md"
|
|
32
|
+
# "@sm:status-md"
|
|
33
|
+
# "md:status-md"
|
|
34
|
+
# "@md:status-md"
|
|
35
|
+
# "lg:status-md"
|
|
36
|
+
# "@lg:status-md"
|
|
37
|
+
md: "status-md",
|
|
38
|
+
# "sm:status-lg"
|
|
39
|
+
# "@sm:status-lg"
|
|
40
|
+
# "md:status-lg"
|
|
41
|
+
# "@md:status-lg"
|
|
42
|
+
# "lg:status-lg"
|
|
43
|
+
# "@lg:status-lg"
|
|
44
|
+
lg: "status-lg",
|
|
45
|
+
# "sm:status-xl"
|
|
46
|
+
# "@sm:status-xl"
|
|
47
|
+
# "md:status-xl"
|
|
48
|
+
# "@md:status-xl"
|
|
49
|
+
# "lg:status-xl"
|
|
50
|
+
# "@lg:status-xl"
|
|
51
|
+
xl: "status-xl",
|
|
52
|
+
# "sm:status-neutral"
|
|
53
|
+
# "@sm:status-neutral"
|
|
54
|
+
# "md:status-neutral"
|
|
55
|
+
# "@md:status-neutral"
|
|
56
|
+
# "lg:status-neutral"
|
|
57
|
+
# "@lg:status-neutral"
|
|
58
|
+
neutral: "status-neutral",
|
|
59
|
+
# "sm:status-primary"
|
|
60
|
+
# "@sm:status-primary"
|
|
61
|
+
# "md:status-primary"
|
|
62
|
+
# "@md:status-primary"
|
|
63
|
+
# "lg:status-primary"
|
|
64
|
+
# "@lg:status-primary"
|
|
65
|
+
primary: "status-primary",
|
|
66
|
+
# "sm:status-secondary"
|
|
67
|
+
# "@sm:status-secondary"
|
|
68
|
+
# "md:status-secondary"
|
|
69
|
+
# "@md:status-secondary"
|
|
70
|
+
# "lg:status-secondary"
|
|
71
|
+
# "@lg:status-secondary"
|
|
72
|
+
secondary: "status-secondary",
|
|
73
|
+
# "sm:status-accent"
|
|
74
|
+
# "@sm:status-accent"
|
|
75
|
+
# "md:status-accent"
|
|
76
|
+
# "@md:status-accent"
|
|
77
|
+
# "lg:status-accent"
|
|
78
|
+
# "@lg:status-accent"
|
|
79
|
+
accent: "status-accent",
|
|
80
|
+
# "sm:status-info"
|
|
81
|
+
# "@sm:status-info"
|
|
82
|
+
# "md:status-info"
|
|
83
|
+
# "@md:status-info"
|
|
84
|
+
# "lg:status-info"
|
|
85
|
+
# "@lg:status-info"
|
|
86
|
+
info: "status-info",
|
|
87
|
+
# "sm:status-success"
|
|
88
|
+
# "@sm:status-success"
|
|
89
|
+
# "md:status-success"
|
|
90
|
+
# "@md:status-success"
|
|
91
|
+
# "lg:status-success"
|
|
92
|
+
# "@lg:status-success"
|
|
93
|
+
success: "status-success",
|
|
94
|
+
# "sm:status-warning"
|
|
95
|
+
# "@sm:status-warning"
|
|
96
|
+
# "md:status-warning"
|
|
97
|
+
# "@md:status-warning"
|
|
98
|
+
# "lg:status-warning"
|
|
99
|
+
# "@lg:status-warning"
|
|
100
|
+
warning: "status-warning",
|
|
101
|
+
# "sm:status-error"
|
|
102
|
+
# "@sm:status-error"
|
|
103
|
+
# "md:status-error"
|
|
104
|
+
# "@md:status-error"
|
|
105
|
+
# "lg:status-error"
|
|
106
|
+
# "@lg:status-error"
|
|
107
|
+
error: "status-error"
|
|
108
|
+
)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
# @component html class="steps"
|
|
5
|
+
class Steps < Base
|
|
6
|
+
self.component_class = :steps
|
|
7
|
+
|
|
8
|
+
def initialize(*, as: :ul, **)
|
|
9
|
+
super
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def view_template(&)
|
|
13
|
+
public_send(as, class: classes, **attributes, &)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def step(**opts, &)
|
|
17
|
+
li(class: component_classes("step", options: opts), **opts, &)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def icon(**opts, &)
|
|
21
|
+
div(class: component_classes("step-icon", options: opts), **opts, &)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
register_modifiers(
|
|
25
|
+
# "sm:steps-vertical"
|
|
26
|
+
# "@sm:steps-vertical"
|
|
27
|
+
# "md:steps-vertical"
|
|
28
|
+
# "@md:steps-vertical"
|
|
29
|
+
# "lg:steps-vertical"
|
|
30
|
+
# "@lg:steps-vertical"
|
|
31
|
+
vertical: "steps-vertical",
|
|
32
|
+
# "sm:steps-horizontal"
|
|
33
|
+
# "@sm:steps-horizontal"
|
|
34
|
+
# "md:steps-horizontal"
|
|
35
|
+
# "@md:steps-horizontal"
|
|
36
|
+
# "lg:steps-horizontal"
|
|
37
|
+
# "@lg:steps-horizontal"
|
|
38
|
+
horizontal: "steps-horizontal"
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
# @private
|
|
5
|
+
class SubMenu < Base
|
|
6
|
+
def initialize(*, **)
|
|
7
|
+
super
|
|
8
|
+
@items ||= []
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def view_template(&)
|
|
12
|
+
yield(self) if block_given?
|
|
13
|
+
|
|
14
|
+
if @title
|
|
15
|
+
div do
|
|
16
|
+
render @title
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
if @items.any?
|
|
21
|
+
ul do
|
|
22
|
+
@items.each do |item|
|
|
23
|
+
render item
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def title(&block)
|
|
30
|
+
@title = block
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def item(*, **, &)
|
|
34
|
+
@items << MenuItem.new(*, **, &)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
# @component html class="swap"
|
|
5
|
+
class Swap < Base
|
|
6
|
+
self.component_class = :swap
|
|
7
|
+
|
|
8
|
+
def initialize(*, as: :label, **)
|
|
9
|
+
super
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def view_template(&)
|
|
13
|
+
public_send(as, class: classes, **attributes, &)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def on(**opts, &)
|
|
17
|
+
div(class: component_classes("swap-on", options: opts), **opts, &)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def off(**opts, &)
|
|
21
|
+
div(class: component_classes("swap-off", options: opts), **opts, &)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def indeterminate(**opts, &)
|
|
25
|
+
div(class: component_classes("swap-indeterminate", options: opts), **opts, &)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
register_modifiers(
|
|
29
|
+
# "sm:swap-active"
|
|
30
|
+
# "@sm:swap-active"
|
|
31
|
+
# "md:swap-active"
|
|
32
|
+
# "@md:swap-active"
|
|
33
|
+
# "lg:swap-active"
|
|
34
|
+
# "@lg:swap-active"
|
|
35
|
+
active: "swap-active",
|
|
36
|
+
# "sm:swap-rotate"
|
|
37
|
+
# "@sm:swap-rotate"
|
|
38
|
+
# "md:swap-rotate"
|
|
39
|
+
# "@md:swap-rotate"
|
|
40
|
+
# "lg:swap-rotate"
|
|
41
|
+
# "@lg:swap-rotate"
|
|
42
|
+
rotate: "swap-rotate",
|
|
43
|
+
# "sm:swap-flip"
|
|
44
|
+
# "@sm:swap-flip"
|
|
45
|
+
# "md:swap-flip"
|
|
46
|
+
# "@md:swap-flip"
|
|
47
|
+
# "lg:swap-flip"
|
|
48
|
+
# "@lg:swap-flip"
|
|
49
|
+
flip: "swap-flip"
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
end
|
data/lib/daisy_ui/tab.rb
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
# @private
|
|
5
|
+
class Tab < Base
|
|
6
|
+
def initialize(*modifiers, label: nil, id: nil, **options)
|
|
7
|
+
super(*modifiers, **options)
|
|
8
|
+
@label = label
|
|
9
|
+
@id = id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def view_template(&block)
|
|
13
|
+
block&.call(self)
|
|
14
|
+
|
|
15
|
+
if @content
|
|
16
|
+
render TabWithContent.new(
|
|
17
|
+
*modifiers,
|
|
18
|
+
label: @label,
|
|
19
|
+
id:,
|
|
20
|
+
content: @content,
|
|
21
|
+
**options
|
|
22
|
+
)
|
|
23
|
+
else
|
|
24
|
+
render TabWithoutContent.new(*modifiers, label: @label, **options)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def content(*, **opts, &block)
|
|
29
|
+
unless id
|
|
30
|
+
raise ArgumentError,
|
|
31
|
+
"You must pass an id to Tabs#new if you want to add content"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
@content = -> do
|
|
35
|
+
content_classes = component_classes("tab-content", options: opts)
|
|
36
|
+
div role: :tabpanel, class: content_classes, **opts, &block
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
# @private
|
|
5
|
+
class TabWithContent < Base
|
|
6
|
+
self.component_class = "tab"
|
|
7
|
+
|
|
8
|
+
def initialize(*, content:, label: nil, id: nil, **)
|
|
9
|
+
super(*, **)
|
|
10
|
+
@label = label
|
|
11
|
+
@id = id
|
|
12
|
+
@content = content
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def view_template
|
|
16
|
+
# Build explicit attributes in correct order
|
|
17
|
+
tab_attrs = {
|
|
18
|
+
type: :radio,
|
|
19
|
+
name: id,
|
|
20
|
+
class: classes, # This deletes :class from options
|
|
21
|
+
role: :tab,
|
|
22
|
+
aria: {label: @label}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
# Now get remaining attributes (class has been deleted by classes method)
|
|
26
|
+
attrs = attributes.dup
|
|
27
|
+
|
|
28
|
+
# Handle modifiers and keyword args that should be HTML attributes
|
|
29
|
+
# Order matters: modifiers come before keyword args in the original call
|
|
30
|
+
closed_from_modifier = modifiers.include?(:closed)
|
|
31
|
+
open_from_modifier = modifiers.include?(:open)
|
|
32
|
+
closed_from_kwarg = attrs.delete(:closed) == true
|
|
33
|
+
open_from_kwarg = attrs.delete(:open) == true
|
|
34
|
+
|
|
35
|
+
# Add attributes from modifiers first (they appear earlier in args)
|
|
36
|
+
tab_attrs[:closed] = true if closed_from_modifier
|
|
37
|
+
tab_attrs[:checked] = true if open_from_modifier
|
|
38
|
+
|
|
39
|
+
# Then add attributes from keyword args (they appear later in args)
|
|
40
|
+
tab_attrs[:closed] = true if closed_from_kwarg && !closed_from_modifier
|
|
41
|
+
tab_attrs[:checked] = true if open_from_kwarg && !open_from_modifier
|
|
42
|
+
|
|
43
|
+
# Merge remaining attributes
|
|
44
|
+
tab_attrs.merge!(attrs)
|
|
45
|
+
|
|
46
|
+
# Render the radio input for the tab
|
|
47
|
+
input(**tab_attrs)
|
|
48
|
+
|
|
49
|
+
# Render the content
|
|
50
|
+
@content&.call
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
register_modifiers(
|
|
56
|
+
# "sm:tab-active"
|
|
57
|
+
# "@sm:tab-active"
|
|
58
|
+
# "md:tab-active"
|
|
59
|
+
# "@md:tab-active"
|
|
60
|
+
# "lg:tab-active"
|
|
61
|
+
# "@lg:tab-active"
|
|
62
|
+
active: "tab-active",
|
|
63
|
+
# "sm:tab-disabled"
|
|
64
|
+
# "@sm:tab-disabled"
|
|
65
|
+
# "md:tab-disabled"
|
|
66
|
+
# "@md:tab-disabled"
|
|
67
|
+
# "lg:tab-disabled"
|
|
68
|
+
# "@lg:tab-disabled"
|
|
69
|
+
disabled: "tab-disabled"
|
|
70
|
+
)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
# @private
|
|
5
|
+
class TabWithoutContent < Base
|
|
6
|
+
self.component_class = "tab"
|
|
7
|
+
|
|
8
|
+
def initialize(*, label: nil, **)
|
|
9
|
+
super(*, **)
|
|
10
|
+
@label = label
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def view_template(&)
|
|
14
|
+
attrs = attributes.dup
|
|
15
|
+
# Remove label from attributes if it was passed as a keyword arg
|
|
16
|
+
attrs.delete(:label)
|
|
17
|
+
|
|
18
|
+
div role: :tab, class: classes, **attrs, &
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
register_modifiers(
|
|
24
|
+
# "sm:tab-active"
|
|
25
|
+
# "@sm:tab-active"
|
|
26
|
+
# "md:tab-active"
|
|
27
|
+
# "@md:tab-active"
|
|
28
|
+
# "lg:tab-active"
|
|
29
|
+
# "@lg:tab-active"
|
|
30
|
+
active: "tab-active",
|
|
31
|
+
# "sm:tab-disabled"
|
|
32
|
+
# "@sm:tab-disabled"
|
|
33
|
+
# "md:tab-disabled"
|
|
34
|
+
# "@md:tab-disabled"
|
|
35
|
+
# "lg:tab-disabled"
|
|
36
|
+
# "@lg:tab-disabled"
|
|
37
|
+
disabled: "tab-disabled"
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
class Table < Base
|
|
5
|
+
self.component_class = :table
|
|
6
|
+
|
|
7
|
+
def view_template(&)
|
|
8
|
+
table(class: classes, **attributes, &)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def header(*, **, &)
|
|
12
|
+
thead(*, **, &)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def row(*, **, &)
|
|
16
|
+
render TableRow.new(*, **, &)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def body(*, **, &)
|
|
20
|
+
tbody(*, **, &)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def footer(*, **, &)
|
|
24
|
+
tfoot(*, **, &)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
register_modifiers(
|
|
30
|
+
# "sm:table-zebra"
|
|
31
|
+
# "@sm:table-zebra"
|
|
32
|
+
# "md:table-zebra"
|
|
33
|
+
# "@md:table-zebra"
|
|
34
|
+
# "lg:table-zebra"
|
|
35
|
+
# "@lg:table-zebra"
|
|
36
|
+
zebra: "table-zebra",
|
|
37
|
+
# "sm:table-pin-rows"
|
|
38
|
+
# "@sm:table-pin-rows"
|
|
39
|
+
# "md:table-pin-rows"
|
|
40
|
+
# "@md:table-pin-rows"
|
|
41
|
+
# "lg:table-pin-rows"
|
|
42
|
+
# "@lg:table-pin-rows"
|
|
43
|
+
pin_rows: "table-pin-rows",
|
|
44
|
+
# "sm:table-pin-cols"
|
|
45
|
+
# "@sm:table-pin-cols"
|
|
46
|
+
# "md:table-pin-cols"
|
|
47
|
+
# "@md:table-pin-cols"
|
|
48
|
+
# "lg:table-pin-cols"
|
|
49
|
+
# "@lg:table-pin-cols"
|
|
50
|
+
pin_cols: "table-pin-cols",
|
|
51
|
+
# "sm:table-xs"
|
|
52
|
+
# "@sm:table-xs"
|
|
53
|
+
# "md:table-xs"
|
|
54
|
+
# "@md:table-xs"
|
|
55
|
+
# "lg:table-xs"
|
|
56
|
+
# "@lg:table-xs"
|
|
57
|
+
xs: "table-xs",
|
|
58
|
+
# "sm:table-sm"
|
|
59
|
+
# "@sm:table-sm"
|
|
60
|
+
# "md:table-sm"
|
|
61
|
+
# "@md:table-sm"
|
|
62
|
+
# "lg:table-sm"
|
|
63
|
+
# "@lg:table-sm"
|
|
64
|
+
sm: "table-sm",
|
|
65
|
+
# "sm:table-md"
|
|
66
|
+
# "@sm:table-md"
|
|
67
|
+
# "md:table-md"
|
|
68
|
+
# "@md:table-md"
|
|
69
|
+
# "lg:table-md"
|
|
70
|
+
# "@lg:table-md"
|
|
71
|
+
md: "table-md",
|
|
72
|
+
# "sm:table-lg"
|
|
73
|
+
# "@sm:table-lg"
|
|
74
|
+
# "md:table-lg"
|
|
75
|
+
# "@md:table-lg"
|
|
76
|
+
# "lg:table-lg"
|
|
77
|
+
# "@lg:table-lg"
|
|
78
|
+
lg: "table-lg"
|
|
79
|
+
)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
class TableRow < Base
|
|
5
|
+
self.component_class = nil
|
|
6
|
+
|
|
7
|
+
def view_template(&)
|
|
8
|
+
tr(class: classes, **attributes, &)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def head(*, **, &)
|
|
12
|
+
th(*, **, &)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def column(*, **, &)
|
|
16
|
+
td(*, **, &)
|
|
17
|
+
end
|
|
18
|
+
alias_method :cell, :column
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
register_modifiers(
|
|
23
|
+
# "sm:table-row-hover"
|
|
24
|
+
# "@sm:table-row-hover"
|
|
25
|
+
# "md:table-row-hover"
|
|
26
|
+
# "@md:table-row-hover"
|
|
27
|
+
# "lg:table-row-hover"
|
|
28
|
+
# "@lg:table-row-hover"
|
|
29
|
+
hover: "hover",
|
|
30
|
+
**COLOR_MODIFIERS
|
|
31
|
+
)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module DaisyUI
|
|
4
|
+
class Tabs < Base
|
|
5
|
+
self.component_class = :tabs
|
|
6
|
+
|
|
7
|
+
def initialize(*, id: nil, as: :div, **)
|
|
8
|
+
super(*, id: nil, as:, **)
|
|
9
|
+
@id = id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def view_template(&)
|
|
13
|
+
public_send(as, role: :tablist, class: classes, **attributes, &)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def tab(*args, label: nil, **, &)
|
|
17
|
+
# If first arg is a string, it's the label, rest are modifiers
|
|
18
|
+
# Otherwise all args are modifiers
|
|
19
|
+
if args.first.is_a?(String)
|
|
20
|
+
label = args.shift
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
render Tab.new(*args, label:, id:, **, &)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
register_modifiers(
|
|
29
|
+
# "sm:tabs-boxed"
|
|
30
|
+
# "@sm:tabs-boxed"
|
|
31
|
+
# "md:tabs-boxed"
|
|
32
|
+
# "@md:tabs-boxed"
|
|
33
|
+
# "lg:tabs-boxed"
|
|
34
|
+
# "@lg:tabs-boxed"
|
|
35
|
+
boxed: "tabs-boxed",
|
|
36
|
+
# "sm:tabs-bordered"
|
|
37
|
+
# "@sm:tabs-bordered"
|
|
38
|
+
# "md:tabs-bordered"
|
|
39
|
+
# "@md:tabs-bordered"
|
|
40
|
+
# "lg:tabs-bordered"
|
|
41
|
+
# "@lg:tabs-bordered"
|
|
42
|
+
bordered: "tabs-bordered",
|
|
43
|
+
# "sm:tabs-lifted"
|
|
44
|
+
# "@sm:tabs-lifted"
|
|
45
|
+
# "md:tabs-lifted"
|
|
46
|
+
# "@md:tabs-lifted"
|
|
47
|
+
# "lg:tabs-lifted"
|
|
48
|
+
# "@lg:tabs-lifted"
|
|
49
|
+
lifted: "tabs-lifted",
|
|
50
|
+
# "sm:tabs-xs"
|
|
51
|
+
# "@sm:tabs-xs"
|
|
52
|
+
# "md:tabs-xs"
|
|
53
|
+
# "@md:tabs-xs"
|
|
54
|
+
# "lg:tabs-xs"
|
|
55
|
+
# "@lg:tabs-xs"
|
|
56
|
+
xs: "tabs-xs",
|
|
57
|
+
# "sm:tabs-sm"
|
|
58
|
+
# "@sm:tabs-sm"
|
|
59
|
+
# "md:tabs-sm"
|
|
60
|
+
# "@md:tabs-sm"
|
|
61
|
+
# "lg:tabs-sm"
|
|
62
|
+
# "@lg:tabs-sm"
|
|
63
|
+
sm: "tabs-sm",
|
|
64
|
+
# "sm:tabs-md"
|
|
65
|
+
# "@sm:tabs-md"
|
|
66
|
+
# "md:tabs-md"
|
|
67
|
+
# "@md:tabs-md"
|
|
68
|
+
# "lg:tabs-md"
|
|
69
|
+
# "@lg:tabs-md"
|
|
70
|
+
md: "tabs-md",
|
|
71
|
+
# "sm:tabs-lg"
|
|
72
|
+
# "@sm:tabs-lg"
|
|
73
|
+
# "md:tabs-lg"
|
|
74
|
+
# "@md:tabs-lg"
|
|
75
|
+
# "lg:tabs-lg"
|
|
76
|
+
# "@lg:tabs-lg"
|
|
77
|
+
lg: "tabs-lg"
|
|
78
|
+
)
|
|
79
|
+
end
|
|
80
|
+
end
|