ariadne_view_components 0.0.93.2 → 0.0.94.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +13 -4
- data/app/assets/javascripts/ariadne_view_components.js +14 -14
- data/app/assets/javascripts/ariadne_view_components.js.br +0 -0
- data/app/assets/javascripts/ariadne_view_components.js.gz +0 -0
- data/app/assets/javascripts/ariadne_view_components.js.map +1 -1
- data/app/assets/stylesheets/ariadne_view_components.css +1 -1
- data/app/assets/stylesheets/ariadne_view_components.css.br +0 -0
- data/app/assets/stylesheets/ariadne_view_components.css.gz +0 -0
- data/app/components/ariadne/base_component.rb +25 -22
- data/app/components/ariadne/behaviors/tooltipable.rb +12 -12
- data/app/components/ariadne/form/checkbox/component.rb +2 -2
- data/app/components/ariadne/form/group/component.rb +1 -1
- data/app/components/ariadne/form/radio_button/component.rb +2 -2
- data/app/components/ariadne/form/select/component.rb +1 -1
- data/app/components/ariadne/form/text_field/component.html.erb +2 -2
- data/app/components/ariadne/form/text_field/component.rb +14 -7
- data/app/components/ariadne/form/toggle/component.rb +2 -2
- data/app/components/ariadne/form/toggle_group/component.rb +1 -1
- data/app/components/ariadne/form/toggle_group/option/component.rb +1 -1
- data/app/components/ariadne/layout/grid/component.rb +1 -1
- data/app/components/ariadne/layout/grid/item/component.rb +2 -2
- data/app/components/ariadne/layout/label_block/component.rb +1 -1
- data/app/components/ariadne/layout/narrow/component.html.erb +5 -5
- data/app/components/ariadne/layout/narrow/component.rb +1 -1
- data/app/components/ariadne/ui/accordion/component.rb +3 -1
- data/app/components/ariadne/ui/accordion/item/component.html.erb +10 -10
- data/app/components/ariadne/ui/accordion/item/component.rb +12 -3
- data/app/components/ariadne/ui/avatar/component.html.erb +9 -7
- data/app/components/ariadne/ui/avatar/component.rb +55 -7
- data/app/components/ariadne/ui/badge/component.rb +35 -16
- data/app/components/ariadne/ui/banner/component.html.erb +23 -0
- data/app/components/ariadne/ui/banner/component.rb +226 -0
- data/app/components/ariadne/ui/banner/component.ts +46 -0
- data/app/components/ariadne/ui/blankslate/component.html.erb +2 -2
- data/app/components/ariadne/ui/blankslate/component.rb +12 -1
- data/app/components/ariadne/ui/button/component.rb +35 -24
- data/app/components/ariadne/ui/card/body/component.rb +1 -1
- data/app/components/ariadne/ui/card/component.rb +11 -7
- data/app/components/ariadne/ui/card/footer/component.rb +1 -1
- data/app/components/ariadne/ui/card/header/component.html.erb +2 -2
- data/app/components/ariadne/ui/card/header/component.rb +25 -16
- data/app/components/ariadne/ui/clipboard_copy/component.html.erb +1 -0
- data/app/components/ariadne/ui/clipboard_copy/component.rb +17 -21
- data/app/components/ariadne/ui/clipboard_copy/component.ts +15 -0
- data/app/components/ariadne/ui/color_dot/component.html.erb +5 -5
- data/app/components/ariadne/ui/color_dot/component.rb +19 -4
- data/app/components/ariadne/ui/combobox/component.html.erb +1 -1
- data/app/components/ariadne/ui/combobox/component.rb +54 -23
- data/app/components/ariadne/ui/combobox/component.ts +2 -0
- data/app/components/ariadne/ui/dialog/body/component.html.erb +3 -0
- data/app/components/ariadne/ui/dialog/body/component.rb +28 -0
- data/app/components/ariadne/ui/dialog/component.html.erb +25 -24
- data/app/components/ariadne/ui/dialog/component.rb +87 -18
- data/app/components/ariadne/ui/dialog/component.ts +5 -1
- data/app/components/ariadne/ui/dialog/footer/component.html.erb +3 -0
- data/app/components/ariadne/ui/dialog/footer/component.rb +34 -0
- data/app/components/ariadne/ui/heroicon/component.rb +21 -21
- data/app/components/ariadne/ui/image/component.rb +11 -23
- data/app/components/ariadne/ui/link/component.html.erb +1 -3
- data/app/components/ariadne/ui/link/component.rb +17 -4
- data/app/components/ariadne/ui/list/component.html.erb +5 -9
- data/app/components/ariadne/ui/list/component.rb +31 -7
- data/app/components/ariadne/ui/list/item/component.rb +6 -5
- data/app/components/ariadne/ui/pagination/component.rb +1 -2
- data/app/components/ariadne/ui/popover/component.html.erb +1 -1
- data/app/components/ariadne/ui/popover/component.rb +31 -26
- data/app/components/ariadne/ui/relative_time/component.html.erb +1 -0
- data/app/components/ariadne/ui/{time_ago → relative_time}/component.rb +15 -15
- data/app/components/ariadne/ui/{time_ago → relative_time}/component.ts +1 -1
- data/app/components/ariadne/ui/shortcut/component.html.erb +0 -1
- data/app/components/ariadne/ui/shortcut/component.rb +31 -5
- data/app/components/ariadne/ui/shortcut/component.ts +1 -1
- data/app/components/ariadne/ui/skeleton/component.rb +2 -8
- data/app/components/ariadne/ui/stats_panel/component.html.erb +3 -3
- data/app/components/ariadne/ui/stats_panel/component.rb +25 -1
- data/app/components/ariadne/ui/stats_panel/item/component.html.erb +3 -3
- data/app/components/ariadne/ui/stats_panel/item/component.rb +6 -6
- data/app/components/ariadne/ui/table/cell/component.rb +1 -1
- data/app/components/ariadne/ui/table/row/component.rb +1 -1
- data/app/components/ariadne/ui/typography/component.rb +3 -1
- data/app/frontend/controllers/tooltip_controller.ts +8 -3
- data/app/frontend/stylesheets/ariadne_view_components.css +1 -0
- data/app/frontend/stylesheets/theme.css +88 -0
- data/app/frontend/utils/createController.ts +9 -0
- data/app/helpers/ariadne/color_helper.rb +158 -0
- data/app/helpers/ariadne/form_helper.rb +1 -0
- data/app/helpers/ariadne/size_helper.rb +7 -0
- data/app/lib/ariadne/attributes_helper.rb +4 -4
- data/app/lib/ariadne/view_component/style_variants.rb +1 -1
- data/app/lib/ariadne/view_helper.rb +0 -6
- data/lib/ariadne/accessibility.rb +64 -0
- data/lib/ariadne/forms/dsl/form_object.rb +5 -1
- data/lib/ariadne/forms/dsl/input.rb +1 -1
- data/lib/ariadne/static/generate_arguments.rb +54 -0
- data/lib/ariadne/static/generate_audited_at.rb +17 -0
- data/lib/ariadne/static/generate_constants.rb +19 -0
- data/lib/ariadne/static/generate_previews.rb +53 -0
- data/lib/ariadne/static/generate_statuses.rb +17 -0
- data/lib/ariadne/static/generate_structure.rb +279 -0
- data/lib/ariadne/static.rb +68 -0
- data/lib/ariadne/view_components/constants.rb +2 -2
- data/lib/ariadne/view_components/version.rb +1 -1
- data/lib/ariadne/view_components.rb +0 -51
- data/lib/ariadne/yard/component_manifest.rb +81 -81
- data/lib/ariadne/yard/component_ref.rb +1 -1
- data/lib/ariadne/yard/docs_helper.rb +24 -16
- data/lib/ariadne/yard/dry_initializer/common_handler.rb +103 -0
- data/lib/ariadne/yard/dry_initializer/option_handler.rb +38 -0
- data/lib/ariadne/yard/dry_initializer/param_handler.rb +57 -0
- data/lib/ariadne/yard/registry.rb +2 -5
- data/lib/ariadne/yard/{info_arch_docs_helper.rb → structure_docs_helper.rb} +5 -5
- data/lib/ariadne/yard.rb +20 -8
- data/lib/rubocop/config/default.yml +0 -3
- metadata +34 -37
- data/app/components/ariadne/behaviors/captionable.rb +0 -55
- data/app/components/ariadne/turbo/frame/component.html.erb +0 -3
- data/app/components/ariadne/turbo/frame/component.rb +0 -16
- data/app/components/ariadne/turbo/stream_action/component.html.erb +0 -4
- data/app/components/ariadne/turbo/stream_action/component.rb +0 -25
- data/app/components/ariadne/ui/data_table/component.html.erb +0 -1
- data/app/components/ariadne/ui/data_table/component.rb +0 -11
- data/app/components/ariadne/ui/flash/component.html.erb +0 -18
- data/app/components/ariadne/ui/flash/component.rb +0 -151
- data/app/components/ariadne/ui/flash/component.ts +0 -56
- data/app/components/ariadne/ui/overlay/component.html.erb +0 -12
- data/app/components/ariadne/ui/overlay/component.rb +0 -54
- data/app/components/ariadne/ui/overlay/component.ts +0 -92
- data/app/components/ariadne/ui/time_ago/component.html.erb +0 -1
- data/lib/ariadne/view_components/commands.rb +0 -90
- data/lib/ariadne/view_components/statuses.rb +0 -14
- data/lib/ariadne/view_components/upstream.rb +0 -19
- data/lib/ariadne/yard/lookbook_pages_backend.rb +0 -235
- data/lib/rubocop/cop/ariadne/no_tag_memoize.rb +0 -44
- data/static/arguments.yml +0 -879
- data/static/assets/view-components.svg +0 -18
- data/static/classes.yml +0 -211
- data/static/constants.json +0 -743
- data/static/statuses.json +0 -58
- data/static/tailwindcss.yml +0 -727
- /data/app/components/ariadne/ui/{time_ago → relative_time}/en.yml +0 -0
@@ -1,25 +0,0 @@
|
|
1
|
-
# typed: false
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module Ariadne
|
5
|
-
module Turbo
|
6
|
-
module StreamAction
|
7
|
-
class Component < Ariadne::BaseComponent
|
8
|
-
option :component
|
9
|
-
option :action, default: -> { "update" }
|
10
|
-
|
11
|
-
def target
|
12
|
-
@target ||= component.component_id
|
13
|
-
end
|
14
|
-
|
15
|
-
def turbo_action
|
16
|
-
@turbo_action ||= empty? ? "update" : action
|
17
|
-
end
|
18
|
-
|
19
|
-
def empty?
|
20
|
-
action == "drop"
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
<div>Add Ariadne::UI::DataTable template here</div>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<div class="<%= html_attrs[:class] %>" <%= html_attributes %>>
|
2
|
-
<div class="ariadne-p-4">
|
3
|
-
<div class="ariadne-flex ariadne-items-start">
|
4
|
-
<div class="ariadne-flex-shrink-0 <%= style(:text, type:) %>">
|
5
|
-
<%= icon %>
|
6
|
-
</div>
|
7
|
-
<div class="ariadne-ml-3 ariadne-w-0 ariadne-flex-1 ariadne-pt-0.5 <%= style(:text, type:) %>">
|
8
|
-
<p class="ariadne-text-sm ariadne-font-semibold" data-flash-target="title"><%= title %></p>
|
9
|
-
<p class="ariadne-mt-1 ariadne-text-sm" data-flash-target="message"><%= message %></p>
|
10
|
-
</div>
|
11
|
-
<div class="ariadne-ml-4 ariadne-flex ariadne-flex-shrink-0 ">
|
12
|
-
<% if dismissable? %>
|
13
|
-
<%= render Ariadne::UI::Button::Component.new(theme: :nude, html_attrs: { class: style(:dismissable, type:), aria: { label: "close_label" }, data: { action: "click->#{stimulus_name}#hide" } }).as_icon(icon: "x-mark", variant: :outline) %>
|
14
|
-
<% end %>
|
15
|
-
</div>
|
16
|
-
</div>
|
17
|
-
</div>
|
18
|
-
</div>
|
@@ -1,151 +0,0 @@
|
|
1
|
-
# typed: false
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module Ariadne
|
5
|
-
module UI
|
6
|
-
module Flash
|
7
|
-
class Component < Ariadne::BaseComponent
|
8
|
-
option :type
|
9
|
-
option :dismissible, default: proc { false }
|
10
|
-
option :title
|
11
|
-
option :message
|
12
|
-
option :persist, default: proc { false }
|
13
|
-
option :width, default: proc { :base }
|
14
|
-
|
15
|
-
accepts_html_attributes do |html_attrs|
|
16
|
-
unless persist
|
17
|
-
html_attrs[:data] = {
|
18
|
-
controller: "flash",
|
19
|
-
transition_enter: "ariadne-transform ariadne-ease-out ariadne-duration-300 ariadne-transition-all",
|
20
|
-
transition_enter_start: "ariadne-translate-y-2 ariadne-opacity-0 sm:ariadne-translate-y-0 sm:ariadne-translate-x-2",
|
21
|
-
transition_enter_end: "ariadne-translate-y-0 ariadne-opacity-100 sm:ariadne-translate-x-0",
|
22
|
-
transition_leave: "ariadne-transition-all ariadne-ease-in ariadne-duration-100",
|
23
|
-
transition_leave_start: "ariadne-opacity-100",
|
24
|
-
transition_leave_end: "ariadne-opacity-0",
|
25
|
-
}
|
26
|
-
end
|
27
|
-
|
28
|
-
html_attrs[:class] = Ariadne::ViewComponents.tailwind_merger.merge([
|
29
|
-
html_attrs[:class],
|
30
|
-
style(type:, width:),
|
31
|
-
])
|
32
|
-
end
|
33
|
-
|
34
|
-
renders_one :icon, Ariadne::UI::Heroicon::Component
|
35
|
-
|
36
|
-
def dismissable?
|
37
|
-
dismissible
|
38
|
-
end
|
39
|
-
|
40
|
-
style do
|
41
|
-
base do
|
42
|
-
[
|
43
|
-
"ariadne-pointer-events-auto",
|
44
|
-
"ariadne-overflow-hidden",
|
45
|
-
"ariadne-rounded-lg",
|
46
|
-
"ariadne-shadow-lg",
|
47
|
-
"ariadne-ring-1",
|
48
|
-
"ariadne-ring-slate-950",
|
49
|
-
"ariadne-ring-opacity-5",
|
50
|
-
"ariadne-z-50",
|
51
|
-
]
|
52
|
-
end
|
53
|
-
|
54
|
-
variants do
|
55
|
-
width do
|
56
|
-
base do
|
57
|
-
[
|
58
|
-
"ariadne-w-full",
|
59
|
-
"ariadne-max-w-sm",
|
60
|
-
]
|
61
|
-
end
|
62
|
-
|
63
|
-
full do
|
64
|
-
[
|
65
|
-
"ariadne-w-full",
|
66
|
-
]
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
type do
|
71
|
-
danger do
|
72
|
-
[
|
73
|
-
"ariadne-bg-red-50",
|
74
|
-
]
|
75
|
-
end
|
76
|
-
warning do
|
77
|
-
[
|
78
|
-
"ariadne-bg-yellow-50",
|
79
|
-
]
|
80
|
-
end
|
81
|
-
info do
|
82
|
-
[
|
83
|
-
"ariadne-bg-blue-50",
|
84
|
-
]
|
85
|
-
end
|
86
|
-
success do
|
87
|
-
[
|
88
|
-
"ariadne-bg-green-50",
|
89
|
-
]
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
style(:text) do
|
96
|
-
variants do
|
97
|
-
type do
|
98
|
-
danger do
|
99
|
-
[
|
100
|
-
"ariadne-text-red-700",
|
101
|
-
]
|
102
|
-
end
|
103
|
-
warning do
|
104
|
-
[
|
105
|
-
"ariadne-text-yellow-700",
|
106
|
-
]
|
107
|
-
end
|
108
|
-
info do
|
109
|
-
[
|
110
|
-
"ariadne-text-blue-700",
|
111
|
-
]
|
112
|
-
end
|
113
|
-
success do
|
114
|
-
[
|
115
|
-
"ariadne-text-green-700",
|
116
|
-
]
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
style(:dismissable) do
|
123
|
-
variants do
|
124
|
-
type do
|
125
|
-
danger do
|
126
|
-
[
|
127
|
-
"ariadne-text-red-700",
|
128
|
-
]
|
129
|
-
end
|
130
|
-
warning do
|
131
|
-
[
|
132
|
-
"ariadne-text-yellow-700",
|
133
|
-
]
|
134
|
-
end
|
135
|
-
info do
|
136
|
-
[
|
137
|
-
"ariadne-text-blue-700",
|
138
|
-
]
|
139
|
-
end
|
140
|
-
success do
|
141
|
-
[
|
142
|
-
"ariadne-text-green-700",
|
143
|
-
]
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
import {Controller} from '@hotwired/stimulus'
|
2
|
-
// @ts-expect-error: this is untyped https://github.com/mmccall10/el-transition/issues/11
|
3
|
-
import {enter, leave} from 'el-transition'
|
4
|
-
|
5
|
-
export default class FlashController extends Controller {
|
6
|
-
static classes = ['ariadne-hidden']
|
7
|
-
|
8
|
-
static values = {
|
9
|
-
timer: {
|
10
|
-
default: 4000,
|
11
|
-
type: Number,
|
12
|
-
},
|
13
|
-
}
|
14
|
-
declare readonly hasHiddenClass: boolean
|
15
|
-
|
16
|
-
declare readonly hasTimerValue: boolean
|
17
|
-
declare readonly hiddenClass: string
|
18
|
-
declare readonly hiddenClasses: string[]
|
19
|
-
declare timerValue: number
|
20
|
-
|
21
|
-
async connect(): Promise<void> {
|
22
|
-
// Start animation as soon as it connects to the dom
|
23
|
-
await this.show()
|
24
|
-
const noop = (): void => {}
|
25
|
-
|
26
|
-
// Set a timer for it to be removed from the dom automatically
|
27
|
-
setTimeout(() => {
|
28
|
-
this.hide().then(noop).catch(noop)
|
29
|
-
}, this.timerValue)
|
30
|
-
}
|
31
|
-
|
32
|
-
async disconnect(): Promise<void> {
|
33
|
-
await this.hide()
|
34
|
-
}
|
35
|
-
|
36
|
-
async hide(): Promise<void> {
|
37
|
-
await leave(this.element)
|
38
|
-
|
39
|
-
if (this.hasHiddenClass) {
|
40
|
-
this.element.classList.add(this.hiddenClass)
|
41
|
-
} else {
|
42
|
-
this.element.classList.add('ariadne-hidden')
|
43
|
-
}
|
44
|
-
|
45
|
-
this.element.remove()
|
46
|
-
}
|
47
|
-
|
48
|
-
async show(): Promise<void> {
|
49
|
-
if (this.hasHiddenClass) {
|
50
|
-
this.element.classList.remove(this.hiddenClass)
|
51
|
-
} else {
|
52
|
-
this.element.classList.remove('ariadne-hidden')
|
53
|
-
}
|
54
|
-
await enter(this.element)
|
55
|
-
}
|
56
|
-
}
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<details class="ariadne-inline" <%= html_attrs.to_html %>>
|
2
|
-
<summary class="ariadne-list-none ariadne-rounded" data-<%= stimulus_name %>-target="anchor">
|
3
|
-
<%= trigger %>
|
4
|
-
</summary>
|
5
|
-
<details-menu
|
6
|
-
class="<%= style(size:) %>"
|
7
|
-
role="menu"
|
8
|
-
data-<%= stimulus_name %>-target="popover"
|
9
|
-
data-action="details-menu-selected->overlay#close">
|
10
|
-
<%= content %>
|
11
|
-
</details-menu>
|
12
|
-
</details>
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# typed: false
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
module Ariadne
|
5
|
-
module UI
|
6
|
-
module Overlay
|
7
|
-
class Component < Ariadne::BaseComponent
|
8
|
-
renders_one :trigger, Ariadne::UI::Button::Component
|
9
|
-
|
10
|
-
accepts_html_attributes do |html_attrs|
|
11
|
-
html_attrs[:data] = {
|
12
|
-
controller: [stimulus_name, html_attrs.fetch(:data, {}).fetch(:controller, nil)].compact.join(" "),
|
13
|
-
"#{stimulus_name}-placement-value": placement,
|
14
|
-
"#{stimulus_name}-clamped-value": clamped,
|
15
|
-
}
|
16
|
-
end
|
17
|
-
option :size, default: proc { :base }
|
18
|
-
option :placement, default: proc { "bottom" }
|
19
|
-
|
20
|
-
option :clamped, default: proc { false }
|
21
|
-
|
22
|
-
style do
|
23
|
-
base do
|
24
|
-
[
|
25
|
-
"ariadne-fixed",
|
26
|
-
"ariadne-max-w-[90vw]",
|
27
|
-
"ariadne-z-20",
|
28
|
-
|
29
|
-
"ariadne-scroll",
|
30
|
-
"ariadne-scrollbar-trigger",
|
31
|
-
|
32
|
-
"ariadne-rounded-lg",
|
33
|
-
"ariadne-shadow-lg",
|
34
|
-
|
35
|
-
"ariadne-bg-foreground",
|
36
|
-
"dark:ariadne-bg-foreground-dark",
|
37
|
-
"ariadne-text-content",
|
38
|
-
"dark:ariadne-text-content-dark",
|
39
|
-
]
|
40
|
-
end
|
41
|
-
|
42
|
-
variants do
|
43
|
-
size do
|
44
|
-
sm { "ariadne-w-36" }
|
45
|
-
md { "ariadne-w-52" }
|
46
|
-
base { "ariadne-w-64" }
|
47
|
-
lg { "ariadne-w-96" }
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
import {type Placement, autoUpdate, computePosition, flip, offset, shift} from '@floating-ui/dom'
|
2
|
-
import {controllerFactory} from '@utils/createController'
|
3
|
-
import {useClickOutside, useMutation} from 'stimulus-use'
|
4
|
-
|
5
|
-
export default class OverlayController extends controllerFactory<HTMLDetailsElement>()({
|
6
|
-
targets: {
|
7
|
-
anchor: null,
|
8
|
-
popover: null,
|
9
|
-
},
|
10
|
-
values: {
|
11
|
-
clamped: Boolean,
|
12
|
-
placement: String,
|
13
|
-
},
|
14
|
-
}) {
|
15
|
-
private changedIds = new Set<string>()
|
16
|
-
private clickHandlers: Array<() => void> = []
|
17
|
-
labels: Array<{el: HTMLLabelElement}>
|
18
|
-
unsubAutoUpdate: (() => void) | undefined
|
19
|
-
|
20
|
-
private setupClickHandlers() {
|
21
|
-
const cb = () => this.toggle()
|
22
|
-
|
23
|
-
for (const fn of this.clickHandlers) {
|
24
|
-
fn()
|
25
|
-
}
|
26
|
-
this.clickHandlers = []
|
27
|
-
|
28
|
-
for (const el of this.anchorTarget.querySelectorAll('button, [tabindex]:not([tabindex="-1"])')) {
|
29
|
-
el.addEventListener('click', cb)
|
30
|
-
this.clickHandlers.push(() => el.removeEventListener('click', cb))
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
34
|
-
checkboxClicked(e: Event) {
|
35
|
-
const target = e.target as HTMLInputElement
|
36
|
-
const value = target.value
|
37
|
-
if (this.changedIds.has(value)) {
|
38
|
-
this.changedIds.delete(value)
|
39
|
-
} else {
|
40
|
-
this.changedIds.add(value)
|
41
|
-
}
|
42
|
-
this.dispatch('clicked', {detail: value})
|
43
|
-
}
|
44
|
-
|
45
|
-
clickOutside() {
|
46
|
-
this.setupAutoUpdate()
|
47
|
-
this.close()
|
48
|
-
}
|
49
|
-
|
50
|
-
close() {
|
51
|
-
this.element.open = false
|
52
|
-
}
|
53
|
-
|
54
|
-
connect() {
|
55
|
-
useClickOutside(this)
|
56
|
-
useMutation(this, {childList: true, subtree: true})
|
57
|
-
this.setupAutoUpdate()
|
58
|
-
this.setupClickHandlers()
|
59
|
-
}
|
60
|
-
|
61
|
-
disconnect() {
|
62
|
-
this.unsubAutoUpdate?.()
|
63
|
-
}
|
64
|
-
|
65
|
-
setupAutoUpdate(): void {
|
66
|
-
if (!this.element.open) {
|
67
|
-
this.unsubAutoUpdate?.()
|
68
|
-
return
|
69
|
-
}
|
70
|
-
|
71
|
-
const updatePopoverPosition = (): void => {
|
72
|
-
void computePosition(this.anchorTarget, this.popoverTarget, {
|
73
|
-
middleware: [offset(6), flip(), shift({padding: 6})],
|
74
|
-
placement: this.placementValue as Placement,
|
75
|
-
strategy: 'fixed',
|
76
|
-
}).then(({x, y}) => {
|
77
|
-
Object.assign(this.popoverTarget.style, {
|
78
|
-
left: `${x}px`,
|
79
|
-
top: `${y}px`,
|
80
|
-
})
|
81
|
-
})
|
82
|
-
}
|
83
|
-
|
84
|
-
updatePopoverPosition()
|
85
|
-
this.unsubAutoUpdate = autoUpdate(this.anchorTarget, this.popoverTarget, updatePopoverPosition)
|
86
|
-
}
|
87
|
-
|
88
|
-
toggle(): void {
|
89
|
-
this.element.open = !this.element.open
|
90
|
-
this.setupAutoUpdate()
|
91
|
-
}
|
92
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
<relative-time <%= html_attributes %>></relative-time>
|
@@ -1,90 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "upstream"
|
4
|
-
|
5
|
-
module Ariadne
|
6
|
-
module ViewComponents
|
7
|
-
# commands related to the upstream Tailwindcss project
|
8
|
-
module Commands
|
9
|
-
# raised when the host platform is not supported by upstream tailwindcss's binary releases
|
10
|
-
class UnsupportedPlatformException < StandardError
|
11
|
-
end
|
12
|
-
|
13
|
-
# raised when the tailwindcss executable could not be found where we expected it to be
|
14
|
-
class ExecutableNotFoundException < StandardError
|
15
|
-
end
|
16
|
-
|
17
|
-
class << self
|
18
|
-
def platform
|
19
|
-
[:cpu, :os].map { |m| Gem::Platform.local.send(m) }.join("-")
|
20
|
-
end
|
21
|
-
|
22
|
-
def executable(
|
23
|
-
exe_path: File.expand_path(File.join(__dir__, "..", "..", "..", "exe"))
|
24
|
-
)
|
25
|
-
if Ariadne::ViewComponents::Upstream::NATIVE_PLATFORMS.keys.none? { |p| Gem::Platform.match(p) }
|
26
|
-
raise UnsupportedPlatformException, <<~MESSAGE
|
27
|
-
ariadne_view_components does not support the #{platform} platform
|
28
|
-
Please install tailwindcss following instructions at https://tailwindcss.com/docs/installation
|
29
|
-
MESSAGE
|
30
|
-
end
|
31
|
-
|
32
|
-
exe_path = Dir.glob(File.expand_path(File.join(exe_path, "*", "tailwindcss"))).find do |f|
|
33
|
-
Gem::Platform.match(File.basename(File.dirname(f)))
|
34
|
-
end
|
35
|
-
|
36
|
-
if exe_path.nil?
|
37
|
-
raise ExecutableNotFoundException, <<~MESSAGE
|
38
|
-
Cannot find the tailwindcss executable for #{platform} in #{exe_path}
|
39
|
-
|
40
|
-
If you're using bundler, please make sure you're on the latest bundler version:
|
41
|
-
|
42
|
-
gem install bundler
|
43
|
-
bundle update --bundler
|
44
|
-
|
45
|
-
Then make sure your lock file includes this platform by running:
|
46
|
-
|
47
|
-
bundle lock --add-platform #{platform}
|
48
|
-
bundle install
|
49
|
-
|
50
|
-
See `bundle lock --help` output for details.
|
51
|
-
|
52
|
-
If you're still seeing this message after taking those steps, try running
|
53
|
-
`bundle config` and ensure `force_ruby_platform` isn't set to `true`. See
|
54
|
-
https://github.com/rails/tailwindcss-rails#check-bundle_force_ruby_platform
|
55
|
-
for more details.
|
56
|
-
MESSAGE
|
57
|
-
end
|
58
|
-
|
59
|
-
exe_path
|
60
|
-
end
|
61
|
-
|
62
|
-
def compile_command(debug: false, **kwargs)
|
63
|
-
[
|
64
|
-
executable(**kwargs),
|
65
|
-
"-i",
|
66
|
-
local_path("app/assets/stylesheets/ariadne_view_components.css"),
|
67
|
-
"-o",
|
68
|
-
"app/assets/builds/ariadne_view_components.css",
|
69
|
-
"-c",
|
70
|
-
local_path("tailwind.config.js"),
|
71
|
-
].tap do |command|
|
72
|
-
command << "--minify" unless debug
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def watch_command(poll: false, **kwargs)
|
77
|
-
compile_command(**kwargs).tap do |command|
|
78
|
-
command << "-w"
|
79
|
-
command << "-p" if poll
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def local_path(path)
|
84
|
-
root = File.expand_path(File.join(__dir__, "..", "..", ".."))
|
85
|
-
File.join(root, path)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Ariadne
|
4
|
-
module ViewComponents
|
5
|
-
# constants describing the upstream tailwindcss project
|
6
|
-
module Upstream
|
7
|
-
VERSION = "v3.3.2"
|
8
|
-
|
9
|
-
# rubygems platform name => upstream release filename
|
10
|
-
NATIVE_PLATFORMS = {
|
11
|
-
"arm64-darwin" => "tailwindcss-macos-arm64",
|
12
|
-
"x64-mingw-ucrt" => "tailwindcss-windows-x64.exe",
|
13
|
-
"x86_64-darwin" => "tailwindcss-macos-x64",
|
14
|
-
"x86_64-linux" => "tailwindcss-linux-x64",
|
15
|
-
"aarch64-linux" => "tailwindcss-linux-arm64",
|
16
|
-
}
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|