ariadne_view_components 0.0.93.2 → 0.0.94
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -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.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
@@ -0,0 +1,88 @@
|
|
1
|
+
[data-ariadne-color-mode] {
|
2
|
+
background-color: hsl(var(--background));
|
3
|
+
color: hsl(var(--foreground));
|
4
|
+
}
|
5
|
+
|
6
|
+
* {
|
7
|
+
border-color: hsl(var(--border));
|
8
|
+
}
|
9
|
+
|
10
|
+
[data-ariadne-light-theme='light'] {
|
11
|
+
--background: 0 0% 100%;
|
12
|
+
--foreground: 240 10% 3.9%;
|
13
|
+
|
14
|
+
--muted: 240 4.8% 95.9%;
|
15
|
+
--muted-foreground: 240 3.8% 46.1%;
|
16
|
+
|
17
|
+
--popover: 0 0% 100%;
|
18
|
+
--popover-foreground: 240 10% 3.9%;
|
19
|
+
|
20
|
+
--card: 0 0% 100%;
|
21
|
+
--card-foreground: 240 10% 3.9%;
|
22
|
+
|
23
|
+
--border: 240 5.9% 90%;
|
24
|
+
--input: 240 5.9% 90%;
|
25
|
+
|
26
|
+
--primary: 262.76 30% 36%;
|
27
|
+
--primary-foreground: 227.98 6% 99%;
|
28
|
+
|
29
|
+
--secondary: 240 4.8% 95.9%;
|
30
|
+
--secondary-foreground: 240 5.9% 10%;
|
31
|
+
|
32
|
+
--accent: 240 4.8% 95.9%;
|
33
|
+
--accent-foreground: 240 5.9% 10%;
|
34
|
+
|
35
|
+
--danger: 0 84.2% 60.2%;
|
36
|
+
--danger-foreground: 0 0% 98%;
|
37
|
+
|
38
|
+
--warning: 43 100% 42%;
|
39
|
+
--warning-foreground: 210 40% 98%;
|
40
|
+
|
41
|
+
--success: 93 85% 32%;
|
42
|
+
--success-foreground: 0 0% 100%;
|
43
|
+
|
44
|
+
--info: 211 100% 50%;
|
45
|
+
--info-foreground: 199 89% 48%;
|
46
|
+
|
47
|
+
--ring: 240 5.9% 10%;
|
48
|
+
}
|
49
|
+
|
50
|
+
[data-ariadne-dark-theme='dark'] {
|
51
|
+
--background: 240 10% 3.9%;
|
52
|
+
--foreground: 0 0% 98%;
|
53
|
+
|
54
|
+
--muted: 240 3.7% 15.9%;
|
55
|
+
--muted-foreground: 240 5% 64.9%;
|
56
|
+
|
57
|
+
--popover: 240 10% 3.9%;
|
58
|
+
--popover-foreground: 0 0% 98%;
|
59
|
+
|
60
|
+
--card: 240 10% 3.9%;
|
61
|
+
--card-foreground: 0 0% 98%;
|
62
|
+
|
63
|
+
--border: 240 3.7% 15.9%;
|
64
|
+
--input: 240 3.7% 15.9%;
|
65
|
+
|
66
|
+
--primary: 259.98 94% 88%;
|
67
|
+
--primary-foreground: 227.98 6% 99%;
|
68
|
+
|
69
|
+
--secondary: 240 3.7% 15.9%;
|
70
|
+
--secondary-foreground: 0 0% 98%;
|
71
|
+
|
72
|
+
--accent: 240 3.7% 15.9%;
|
73
|
+
--accent-foreground: 0 0% 98%;
|
74
|
+
|
75
|
+
--danger: 0 62.8% 30.6%;
|
76
|
+
--danger-foreground: 0 0% 98%;
|
77
|
+
|
78
|
+
--warning: 43 100% 42%;
|
79
|
+
--warning-foreground: 210 40% 98%;
|
80
|
+
|
81
|
+
--success: 93 85% 32%;
|
82
|
+
--success-foreground: 0 0% 100%;
|
83
|
+
|
84
|
+
--info: 217 91% 60%;
|
85
|
+
--info-foreground: 0 0% 100%;
|
86
|
+
|
87
|
+
--ring: 240 4.9% 83.9%;
|
88
|
+
}
|
@@ -88,6 +88,15 @@ export function controllerFactory<E extends HTMLElement>() {
|
|
88
88
|
class ExtendedController extends Controller<E> {
|
89
89
|
static targets = Object.keys(targets ?? {})
|
90
90
|
static values = values ?? {}
|
91
|
+
|
92
|
+
private dispatchEvent(target: HTMLElement, name: string, options: {bubbles?: boolean, cancelable?: boolean} = {}) {
|
93
|
+
// Dispatching event to trigger all related actions
|
94
|
+
const event = new Event(name, {
|
95
|
+
bubbles: options.bubbles || false,
|
96
|
+
cancelable: options.cancelable || false,
|
97
|
+
});
|
98
|
+
target.dispatchEvent(event);
|
99
|
+
}
|
91
100
|
}
|
92
101
|
|
93
102
|
return ExtendedController as unknown as new () => ControllerWithTargets<E, T, Y>
|
@@ -0,0 +1,158 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ariadne
|
4
|
+
module ColorHelper
|
5
|
+
VALID_COLORS =
|
6
|
+
{
|
7
|
+
"red": [
|
8
|
+
"ariadne-bg-red-500/15",
|
9
|
+
"ariadne-text-red-700",
|
10
|
+
"group-data-[hover]:ariadne-bg-red-500/25",
|
11
|
+
"dark:ariadne-bg-red-500/10",
|
12
|
+
"dark:ariadne-text-red-400",
|
13
|
+
"dark:group-data-[hover]:ariadne-bg-red-500/20",
|
14
|
+
],
|
15
|
+
"orange": [
|
16
|
+
"ariadne-bg-orange-500/15",
|
17
|
+
"ariadne-text-orange-700",
|
18
|
+
"group-data-[hover]:ariadne-bg-orange-500/25",
|
19
|
+
"dark:ariadne-bg-orange-500/10",
|
20
|
+
"dark:ariadne-text-orange-400",
|
21
|
+
"dark:group-data-[hover]:ariadne-bg-orange-500/20",
|
22
|
+
],
|
23
|
+
"amber": [
|
24
|
+
"ariadne-bg-amber-400/20",
|
25
|
+
"ariadne-text-amber-700",
|
26
|
+
"group-data-[hover]:ariadne-bg-amber-400/30",
|
27
|
+
"dark:ariadne-bg-amber-400/10",
|
28
|
+
"dark:ariadne-text-amber-400",
|
29
|
+
"dark:group-data-[hover]:ariadne-bg-amber-400/15",
|
30
|
+
],
|
31
|
+
"yellow": [
|
32
|
+
"ariadne-bg-yellow-400/20",
|
33
|
+
"ariadne-text-yellow-700",
|
34
|
+
"group-data-[hover]:ariadne-bg-yellow-400/30",
|
35
|
+
"dark:ariadne-bg-yellow-400/10",
|
36
|
+
"dark:ariadne-text-yellow-300",
|
37
|
+
"dark:group-data-[hover]:ariadne-bg-yellow-400/15",
|
38
|
+
],
|
39
|
+
"lime": [
|
40
|
+
"ariadne-bg-lime-400/20",
|
41
|
+
"ariadne-text-lime-700",
|
42
|
+
"group-data-[hover]:ariadne-bg-lime-400/30",
|
43
|
+
"dark:ariadne-bg-lime-400/10",
|
44
|
+
"dark:ariadne-text-lime-300",
|
45
|
+
"dark:group-data-[hover]:ariadne-bg-lime-400/15",
|
46
|
+
],
|
47
|
+
"green": [
|
48
|
+
"ariadne-bg-green-500/15",
|
49
|
+
"ariadne-text-green-700",
|
50
|
+
"group-data-[hover]:ariadne-bg-green-500/25",
|
51
|
+
"dark:ariadne-bg-green-500/10",
|
52
|
+
"dark:ariadne-text-green-400",
|
53
|
+
"dark:group-data-[hover]:ariadne-bg-green-500/20",
|
54
|
+
],
|
55
|
+
"emerald": [
|
56
|
+
"ariadne-bg-emerald-500/15",
|
57
|
+
"ariadne-text-emerald-700",
|
58
|
+
"group-data-[hover]:ariadne-bg-emerald-500/25",
|
59
|
+
"dark:ariadne-bg-emerald-500/10",
|
60
|
+
"dark:ariadne-text-emerald-400",
|
61
|
+
"dark:group-data-[hover]:ariadne-bg-emerald-500/20",
|
62
|
+
],
|
63
|
+
"teal": [
|
64
|
+
"ariadne-bg-teal-500/15",
|
65
|
+
"ariadne-text-teal-700",
|
66
|
+
"group-data-[hover]:ariadne-bg-teal-500/25",
|
67
|
+
"dark:ariadne-bg-teal-500/10",
|
68
|
+
"dark:ariadne-text-teal-300",
|
69
|
+
"dark:group-data-[hover]:ariadne-bg-teal-500/20",
|
70
|
+
],
|
71
|
+
"cyan": [
|
72
|
+
"ariadne-bg-cyan-400/20",
|
73
|
+
"ariadne-text-cyan-700",
|
74
|
+
"group-data-[hover]:ariadne-bg-cyan-400/30",
|
75
|
+
"dark:ariadne-bg-cyan-400/10",
|
76
|
+
"dark:ariadne-text-cyan-300",
|
77
|
+
"dark:group-data-[hover]:ariadne-bg-cyan-400/15",
|
78
|
+
],
|
79
|
+
"sky": [
|
80
|
+
"ariadne-bg-sky-500/15",
|
81
|
+
"ariadne-text-sky-700",
|
82
|
+
"group-data-[hover]:ariadne-bg-sky-500/25",
|
83
|
+
"dark:ariadne-bg-sky-500/10",
|
84
|
+
"dark:ariadne-text-sky-300",
|
85
|
+
"dark:group-data-[hover]:ariadne-bg-sky-500/20",
|
86
|
+
],
|
87
|
+
"blue": [
|
88
|
+
"ariadne-bg-blue-500/15",
|
89
|
+
"ariadne-text-blue-700",
|
90
|
+
"group-data-[hover]:ariadne-bg-blue-500/25",
|
91
|
+
"dark:ariadne-text-blue-400",
|
92
|
+
"dark:group-data-[hover]:ariadne-bg-blue-500/25",
|
93
|
+
],
|
94
|
+
"indigo": [
|
95
|
+
"ariadne-bg-indigo-500/15",
|
96
|
+
"ariadne-text-indigo-700",
|
97
|
+
"group-data-[hover]:ariadne-bg-indigo-500/25",
|
98
|
+
"dark:ariadne-text-indigo-400",
|
99
|
+
"dark:group-data-[hover]:ariadne-bg-indigo-500/20",
|
100
|
+
],
|
101
|
+
"violet": [
|
102
|
+
"ariadne-bg-violet-500/15",
|
103
|
+
"ariadne-text-violet-700",
|
104
|
+
"group-data-[hover]:ariadne-bg-violet-500/25",
|
105
|
+
"dark:ariadne-text-violet-400",
|
106
|
+
"dark:group-data-[hover]:ariadne-bg-violet-500/20",
|
107
|
+
],
|
108
|
+
"purple": [
|
109
|
+
"ariadne-bg-purple-500/15",
|
110
|
+
"ariadne-text-purple-700",
|
111
|
+
"group-data-[hover]:ariadne-bg-purple-500/25",
|
112
|
+
"dark:ariadne-text-purple-400",
|
113
|
+
"dark:group-data-[hover]:ariadne-bg-purple-500/20",
|
114
|
+
],
|
115
|
+
"fuchsia": [
|
116
|
+
"ariadne-bg-fuchsia-400/15",
|
117
|
+
"ariadne-text-fuchsia-700",
|
118
|
+
"group-data-[hover]:ariadne-bg-fuchsia-400/25",
|
119
|
+
"dark:ariadne-bg-fuchsia-400/10",
|
120
|
+
"dark:ariadne-text-fuchsia-400",
|
121
|
+
"dark:group-data-[hover]:ariadne-bg-fuchsia-400/20",
|
122
|
+
],
|
123
|
+
"pink": [
|
124
|
+
"ariadne-bg-pink-400/15",
|
125
|
+
"ariadne-text-pink-700",
|
126
|
+
"group-data-[hover]:ariadne-bg-pink-400/25",
|
127
|
+
"dark:ariadne-bg-pink-400/10",
|
128
|
+
"dark:ariadne-text-pink-400",
|
129
|
+
"dark:group-data-[hover]:ariadne-bg-pink-400/20",
|
130
|
+
],
|
131
|
+
"rose": [
|
132
|
+
"ariadne-bg-rose-400/15",
|
133
|
+
"ariadne-text-rose-700",
|
134
|
+
"group-data-[hover]:ariadne-bg-rose-400/25",
|
135
|
+
"dark:ariadne-bg-rose-400/10",
|
136
|
+
"dark:ariadne-text-rose-400",
|
137
|
+
"dark:group-data-[hover]:ariadne-bg-rose-400/20",
|
138
|
+
],
|
139
|
+
"zinc": [
|
140
|
+
"ariadne-bg-zinc-600/10",
|
141
|
+
"ariadne-text-zinc-700",
|
142
|
+
"group-data-[hover]:ariadne-bg-zinc-600/20",
|
143
|
+
"dark:ariadne-bg-white/5",
|
144
|
+
"dark:ariadne-text-zinc-400",
|
145
|
+
"dark:group-data-[hover]:ariadne-bg-white/10",
|
146
|
+
],
|
147
|
+
}.freeze
|
148
|
+
|
149
|
+
def include_colors!
|
150
|
+
@variants[:color] ||= {}
|
151
|
+
@variants[:color] = {}
|
152
|
+
|
153
|
+
VALID_COLORS.each do |color, classes|
|
154
|
+
@variants[:color][color] = classes
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
@@ -43,8 +43,8 @@ module Ariadne
|
|
43
43
|
# It's designed to be used to normalize and merge aria information from system_arguments
|
44
44
|
# hashes. Consider using this pattern in component initializers:
|
45
45
|
#
|
46
|
-
#
|
47
|
-
#
|
46
|
+
# html_attrs[:aria] = merge_aria(
|
47
|
+
# html_attrs,
|
48
48
|
# { aria: { labelled_by: id } }
|
49
49
|
# )
|
50
50
|
def merge_aria(*hashes)
|
@@ -68,8 +68,8 @@ module Ariadne
|
|
68
68
|
# It's designed to be used to normalize and merge data information from system_arguments
|
69
69
|
# hashes. Consider using this pattern in component initializers:
|
70
70
|
#
|
71
|
-
#
|
72
|
-
#
|
71
|
+
# html_attrs[:data] = merge_aria(
|
72
|
+
# html_attrs,
|
73
73
|
# { data: { foo: "bar" } }
|
74
74
|
# )
|
75
75
|
def merge_data(*hashes)
|
@@ -59,7 +59,7 @@ module Ariadne
|
|
59
59
|
# merge Araidne style variants with user provided overrides
|
60
60
|
def merged_styles(name = self.class.default_style_name, **variants)
|
61
61
|
default_styles = self.class.style_config.compile(name.to_sym, **variants)
|
62
|
-
|
62
|
+
merge_tailwind_classes([default_styles, styles.fetch(name, "")])
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
module Ariadne
|
5
|
+
# :nodoc:
|
6
|
+
module Accessibility
|
7
|
+
# Skip axe checks for components that should be tested as part of a larger component.
|
8
|
+
# Do not add to this list for any other reason!
|
9
|
+
IGNORED_PREVIEWS = [].freeze
|
10
|
+
|
11
|
+
# Skip `:region` which relates to preview page structure rather than individual component.
|
12
|
+
AXE_RULES_TO_SKIP = {
|
13
|
+
# these will be skipped in CI
|
14
|
+
will_fix: {
|
15
|
+
global: [],
|
16
|
+
|
17
|
+
per_component: {},
|
18
|
+
},
|
19
|
+
|
20
|
+
# these will always be skipped
|
21
|
+
wont_fix: {
|
22
|
+
global: [
|
23
|
+
:region,
|
24
|
+
],
|
25
|
+
|
26
|
+
per_component: {},
|
27
|
+
},
|
28
|
+
}.freeze
|
29
|
+
|
30
|
+
class << self
|
31
|
+
def ignore_preview?(preview_class)
|
32
|
+
IGNORED_PREVIEWS.include?(preview_class)
|
33
|
+
end
|
34
|
+
|
35
|
+
def axe_rules_to_skip(component: nil, scenario_name: nil, flatten: false)
|
36
|
+
to_skip = {
|
37
|
+
wont_fix: Set.new(AXE_RULES_TO_SKIP.dig(:wont_fix, :global) || []),
|
38
|
+
will_fix: Set.new(AXE_RULES_TO_SKIP.dig(:will_fix, :global) || []),
|
39
|
+
}
|
40
|
+
|
41
|
+
if component
|
42
|
+
to_skip[:wont_fix].merge(AXE_RULES_TO_SKIP.dig(:wont_fix, :per_component, component, :all_scenarios) || [])
|
43
|
+
to_skip[:will_fix].merge(AXE_RULES_TO_SKIP.dig(:will_fix, :per_component, component, :all_scenarios) || [])
|
44
|
+
|
45
|
+
if scenario_name
|
46
|
+
to_skip[:wont_fix].merge(AXE_RULES_TO_SKIP.dig(:wont_fix, :per_component, component, scenario_name) || [])
|
47
|
+
to_skip[:will_fix].merge(AXE_RULES_TO_SKIP.dig(:will_fix, :per_component, component, scenario_name) || [])
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
if flatten
|
52
|
+
flattened = to_skip.each_with_object(Set.new) do |(_, rule_set), memo|
|
53
|
+
memo.merge(rule_set)
|
54
|
+
end
|
55
|
+
|
56
|
+
return flattened.to_a
|
57
|
+
end
|
58
|
+
|
59
|
+
to_skip.transform_values(&:to_a)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
# :nocov:
|
@@ -9,7 +9,7 @@ module Ariadne
|
|
9
9
|
|
10
10
|
attr_reader :builder, :form, :id
|
11
11
|
|
12
|
-
def initialize(builder:, form:, id:
|
12
|
+
def initialize(builder:, form:, id: Ariadne::BaseComponent.generate_id)
|
13
13
|
@builder = builder
|
14
14
|
@form = form
|
15
15
|
@id = id
|
@@ -17,6 +17,10 @@ module Ariadne
|
|
17
17
|
yield(self) if block_given?
|
18
18
|
end
|
19
19
|
|
20
|
+
def generate_id(base_name: "form")
|
21
|
+
Ariadne::BaseComponent.generate_id(base_name:)
|
22
|
+
end
|
23
|
+
|
20
24
|
def group(**options, &block)
|
21
25
|
add_input(InputGroup.new(builder: @builder, form: @form, **options, &block))
|
22
26
|
end
|
@@ -108,7 +108,7 @@ module Ariadne
|
|
108
108
|
|
109
109
|
@options[:invalid] = "true" if invalid?
|
110
110
|
|
111
|
-
@base_id =
|
111
|
+
@base_id = Ariadne::BaseComponent.generate_id(base_name: "ariadne-form-input")
|
112
112
|
|
113
113
|
@ids = {}.tap do |id_map|
|
114
114
|
id_map[:validation] = "validation-#{@base_id}" if supports_validation?
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
|
5
|
+
require "json"
|
6
|
+
|
7
|
+
module Ariadne
|
8
|
+
module Static
|
9
|
+
# :nodoc:
|
10
|
+
module GenerateArguments
|
11
|
+
class << self
|
12
|
+
def call(view_context: self.view_context)
|
13
|
+
Ariadne::BaseComponent.descendants.sort_by(&:name).map do |component|
|
14
|
+
docs = registry.find(component)
|
15
|
+
ref = Ariadne::Yard::ComponentManifest.ref_for(component)
|
16
|
+
|
17
|
+
args = docs.params.map do |tag|
|
18
|
+
default_value = Ariadne::Yard::DocsHelper.pretty_default_value(tag, component)
|
19
|
+
|
20
|
+
{
|
21
|
+
"name" => tag.name,
|
22
|
+
"type" => tag.types.join(", "),
|
23
|
+
"default" => default_value,
|
24
|
+
"description" => view_context.render(inline: tag.text&.squish),
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
{
|
29
|
+
"component" => docs.metadata[:title],
|
30
|
+
"a11y_reviewed" => docs.metadata[:a11y_reviewed] == "true",
|
31
|
+
"short_name" => docs.short_name,
|
32
|
+
"source" => ref.source_url,
|
33
|
+
"lookbook" => ref.lookbook_url,
|
34
|
+
"parameters" => args,
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def view_context
|
42
|
+
@view_context ||= ApplicationController.new.tap { |c| c.request = ActionDispatch::TestRequest.create }.view_context.tap do |vc|
|
43
|
+
vc.singleton_class.include(Ariadne::Yard::DocsHelper)
|
44
|
+
vc.singleton_class.include(Ariadne::ViewHelper)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def registry
|
49
|
+
@registry ||= Ariadne::Yard::Registry.make
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
module Ariadne
|
5
|
+
module Static
|
6
|
+
# :nodoc:
|
7
|
+
module GenerateAuditedAt
|
8
|
+
class << self
|
9
|
+
def call
|
10
|
+
Ariadne::BaseComponent.descendants.sort_by(&:name).each_with_object({}) do |component, mem|
|
11
|
+
mem[component.to_s] = component.audited_at.to_s
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
module Ariadne
|
5
|
+
module Static
|
6
|
+
# :nodoc:
|
7
|
+
module GenerateConstants
|
8
|
+
class << self
|
9
|
+
def call
|
10
|
+
Ariadne::BaseComponent.descendants.sort_by(&:name).each_with_object({}) do |component, mem|
|
11
|
+
mem[component.to_s] = component.constants(false).sort.index_with do |constant|
|
12
|
+
component.const_get(constant)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
|
5
|
+
require "json"
|
6
|
+
|
7
|
+
module Ariadne
|
8
|
+
module Static
|
9
|
+
# :nodoc:
|
10
|
+
module GeneratePreviews
|
11
|
+
class << self
|
12
|
+
def call
|
13
|
+
Lookbook.previews.filter_map do |preview|
|
14
|
+
next if preview.preview_class == Ariadne::FormsPreview
|
15
|
+
next if Ariadne::Accessibility.ignore_preview?(preview.preview_class)
|
16
|
+
|
17
|
+
class_name, _ = Ariadne::Yard::DocsHelper.component_and_short_name(preview.preview_class)
|
18
|
+
|
19
|
+
{
|
20
|
+
type: preview.lookup_path.split("/")[1], # e.g. preview.lookup_path => "ariadne/ui/badge"
|
21
|
+
name: preview.name,
|
22
|
+
component: class_name,
|
23
|
+
lookup_path: preview.lookup_path,
|
24
|
+
examples: preview.scenarios.flat_map do |parent_scenario|
|
25
|
+
scenarios = parent_scenario.type == :scenario_group ? parent_scenario.scenarios : [parent_scenario]
|
26
|
+
|
27
|
+
scenarios.map do |scenario|
|
28
|
+
snapshot_tag = scenario.tags.find { |tag| tag.tag_name == "snapshot" }
|
29
|
+
snapshot = if snapshot_tag.nil?
|
30
|
+
"false"
|
31
|
+
elsif snapshot_tag.text.blank?
|
32
|
+
"true"
|
33
|
+
else
|
34
|
+
snapshot_tag.text
|
35
|
+
end
|
36
|
+
{
|
37
|
+
preview_path: scenario.lookup_path,
|
38
|
+
name: scenario.name,
|
39
|
+
snapshot: snapshot,
|
40
|
+
skip_rules: Ariadne::Accessibility.axe_rules_to_skip(
|
41
|
+
component: class_name,
|
42
|
+
scenario_name: scenario.name,
|
43
|
+
),
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end,
|
47
|
+
}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# :nocov:
|
4
|
+
module Ariadne
|
5
|
+
module Static
|
6
|
+
# :nodoc:
|
7
|
+
module GenerateStatuses
|
8
|
+
class << self
|
9
|
+
def call
|
10
|
+
Ariadne::Component.descendants.sort_by(&:name).each_with_object({}) do |component, mem|
|
11
|
+
mem[component.to_s] = component.status.to_s
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|