primer_view_components 0.0.97 → 0.0.98
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/app/components/primer/beta/avatar.rb +10 -10
- data/app/components/primer/beta/avatar_stack.rb +9 -9
- data/app/components/primer/beta/blankslate.rb +2 -2
- data/app/components/primer/button_component.rb +1 -1
- data/app/components/primer/image.rb +4 -4
- data/app/components/primer/image_crop.rb +3 -3
- data/app/components/primer/timeline_item_component.rb +1 -1
- data/lib/primer/deprecations.rb +0 -1
- data/lib/primer/example_image.rb +7 -0
- data/lib/primer/view_components/version.rb +1 -1
- data/lib/tasks/docs.rake +4 -4
- data/lib/tasks/test.rake +1 -1
- data/previews/primer/alpha/action_list_preview/heading.html.erb +4 -0
- data/previews/primer/alpha/action_list_preview.rb +308 -0
- data/previews/primer/alpha/auto_complete_preview.rb +42 -0
- data/previews/primer/alpha/button_marketing_preview.rb +17 -0
- data/previews/primer/alpha/dialog_preview/custom_header.html.erb +7 -0
- data/previews/primer/alpha/dialog_preview/test.html.erb +7 -0
- data/previews/primer/alpha/dialog_preview/with_footer.html.erb +8 -0
- data/previews/primer/alpha/dialog_preview/with_form.html.erb +12 -0
- data/previews/primer/alpha/dialog_preview.rb +85 -0
- data/previews/primer/alpha/hidden_text_expander_preview.rb +15 -0
- data/previews/primer/alpha/layout_preview.rb +23 -0
- data/previews/primer/alpha/nav_list_preview.rb +64 -0
- data/previews/primer/alpha/tab_panels_preview.rb +23 -0
- data/previews/primer/alpha/text_field_preview.rb +66 -0
- data/previews/primer/alpha/toggle_switch_preview.rb +50 -0
- data/previews/primer/alpha/tooltip_preview/with_multiple_on_a_page.html.erb +14 -0
- data/previews/primer/alpha/tooltip_preview/with_right_most_position.html.erb +7 -0
- data/previews/primer/alpha/tooltip_preview.rb +83 -0
- data/previews/primer/alpha/underline_nav_preview/default.html.erb +8 -0
- data/previews/primer/alpha/underline_nav_preview.rb +41 -0
- data/previews/primer/alpha/underline_panels_preview.rb +23 -0
- data/previews/primer/beta/auto_complete_item_preview/default.html.erb +9 -0
- data/previews/primer/beta/auto_complete_item_preview/with_description.html.erb +11 -0
- data/previews/primer/beta/auto_complete_item_preview.rb +40 -0
- data/previews/primer/beta/auto_complete_preview/with_submit_button.html.erb +20 -0
- data/previews/primer/beta/auto_complete_preview.rb +245 -0
- data/previews/primer/beta/avatar_preview.rb +17 -0
- data/previews/primer/beta/avatar_stack_preview.rb +44 -0
- data/previews/primer/beta/base_button_preview.rb +17 -0
- data/previews/primer/beta/blankslate_preview.rb +94 -0
- data/previews/primer/beta/border_box_preview.rb +32 -0
- data/previews/primer/beta/breadcrumbs_preview.rb +19 -0
- data/previews/primer/beta/button_group_preview.rb +20 -0
- data/previews/primer/beta/button_preview/all_schemes.html.erb +26 -0
- data/previews/primer/beta/button_preview/leading_visual.html.erb +10 -0
- data/previews/primer/beta/button_preview/trailing_action.html.erb +10 -0
- data/previews/primer/beta/button_preview/trailing_visual.html.erb +11 -0
- data/previews/primer/beta/button_preview/with_tooltip.html.erb +10 -0
- data/previews/primer/beta/button_preview.rb +256 -0
- data/previews/primer/beta/close_button_preview.rb +15 -0
- data/previews/primer/beta/counter_preview.rb +24 -0
- data/previews/primer/beta/details_preview.rb +45 -0
- data/previews/primer/beta/flash_preview.rb +20 -0
- data/previews/primer/beta/heading_preview.rb +16 -0
- data/previews/primer/beta/icon_button_preview.rb +107 -0
- data/previews/primer/beta/text_preview.rb +16 -0
- data/previews/primer/beta/truncate_preview.rb +47 -0
- data/previews/primer/clipboard_copy_preview/element.html.erb +2 -0
- data/previews/primer/clipboard_copy_preview.rb +29 -0
- data/previews/primer/dropdown_preview.rb +39 -0
- data/previews/primer/forms/forms_preview/after_content_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/array_check_box_group_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/caption_template_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/check_box_group_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/composed_form.html.erb +4 -0
- data/previews/primer/forms/forms_preview/horizontal_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/invalid_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/multi_input_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/multi_text_field_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/radio_button_group_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/radio_button_with_nested_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/select_list_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/single_text_field_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/submit_button_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview/text_field_and_checkbox_form.html.erb +3 -0
- data/previews/primer/forms/forms_preview.rb +37 -0
- data/previews/primer/hellip_button_preview.rb +14 -0
- data/previews/primer/image_crop_preview.rb +22 -0
- data/previews/primer/label_component_preview.rb +15 -0
- data/previews/primer/layout_component_preview.rb +18 -0
- data/previews/primer/link_component_preview.rb +29 -0
- data/previews/primer/local_time_component_preview.rb +41 -0
- data/previews/primer/markdown_preview.rb +280 -0
- data/previews/primer/menu_component_preview/default.html.erb +17 -0
- data/previews/primer/menu_component_preview.rb +9 -0
- data/previews/primer/octicon_component_preview.rb +14 -0
- data/previews/primer/popover_component_preview.rb +20 -0
- data/previews/primer/progress_bar_component_preview.rb +17 -0
- data/previews/primer/spinner_component_preview.rb +13 -0
- data/previews/primer/state_component_preview.rb +16 -0
- data/previews/primer/subhead_component_preview.rb +23 -0
- data/previews/primer/time_ago_component_preview.rb +16 -0
- data/previews/primer/timeline_item_component_preview.rb +17 -0
- data/static/statuses.json +1 -1
- metadata +87 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47893a22bb4a08e254dae2744724c97bcc998116747da9c6596ae156b71ba5e9
|
4
|
+
data.tar.gz: f54f340e71d3dc92edcffd5b5e1aaa507dc0dab4d268d855e6d3f0fc06895c3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5e6d60d6de17b2c74f05c2e988dbe4b90a4581c16dda91c0a181013c2e2c1147cac6ec350f059a8363dd81e24517b4d40ad90ace61d1bf899478c06bcc22f4e
|
7
|
+
data.tar.gz: 9c3fd3c0cec9c5077f885293703076ff183ebb865ed962930e1440a92504abebc16c22d5dcba3bda7b6463a2ae0daa763e7f3a028481231d5f92017e1c00165e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.0.98
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- [#1420](https://github.com/primer/view_components/pull/1420) [`d6623553`](https://github.com/primer/view_components/commit/d662355359b1b5d8801cc6a86a1376cb1d2da63b) Thanks [@mxriverlynn](https://github.com/mxriverlynn)! - un-deprecate Primer::ButtonComponent for now, due to inconsistencies and issues in migrating to Primer::Beta::Button
|
8
|
+
|
9
|
+
* [`1d4b6851`](https://github.com/primer/view_components/commit/1d4b685174ca82cb0f67e65cc095810841b0b390) Thanks [@jonrohan](https://github.com/jonrohan)! - Move previews into root and include in gemspec. Thanks [@steves](https://github.com/steves)! [#1404](https://github.com/primer/view_components/pull/1404)
|
10
|
+
|
11
|
+
- [#1416](https://github.com/primer/view_components/pull/1416) [`f99156fd`](https://github.com/primer/view_components/commit/f99156fddcab45467a4da773387efa4ea13401c3) Thanks [@jonrohan](https://github.com/jonrohan)! - Don't use outside images in docs examples
|
12
|
+
|
3
13
|
## 0.0.97
|
4
14
|
|
5
15
|
### Patch Changes
|
@@ -28,22 +28,22 @@ module Primer
|
|
28
28
|
SIZE_OPTIONS = [16, DEFAULT_SIZE, SMALL_THRESHOLD, 32, 40, 48, 80].freeze
|
29
29
|
|
30
30
|
# @example Default
|
31
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
31
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser")) %>
|
32
32
|
#
|
33
33
|
# @example Square
|
34
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
34
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", shape: :square)) %>
|
35
35
|
#
|
36
36
|
# @example Link
|
37
|
-
# <%= render(Primer::Beta::Avatar.new(href: "#", src:
|
37
|
+
# <%= render(Primer::Beta::Avatar.new(href: "#", src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser profile")) %>
|
38
38
|
#
|
39
39
|
# @example With size
|
40
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
41
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
42
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
43
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
44
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
45
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
46
|
-
# <%= render(Primer::Beta::Avatar.new(src:
|
40
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 16)) %>
|
41
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 20)) %>
|
42
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 24)) %>
|
43
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 32)) %>
|
44
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 40)) %>
|
45
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 48)) %>
|
46
|
+
# <%= render(Primer::Beta::Avatar.new(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser", size: 80)) %>
|
47
47
|
#
|
48
48
|
# @param src [String] The source url of the avatar image.
|
49
49
|
# @param alt [String] Passed through to alt on img tag.
|
@@ -21,23 +21,23 @@ module Primer
|
|
21
21
|
|
22
22
|
# @example Default
|
23
23
|
# <%= render(Primer::Beta::AvatarStack.new) do |c| %>
|
24
|
-
# <% c.with_avatar(src:
|
25
|
-
# <% c.with_avatar(src:
|
26
|
-
# <% c.with_avatar(src:
|
24
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
25
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
26
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
27
27
|
# <% end %>
|
28
28
|
#
|
29
29
|
# @example Align right
|
30
30
|
# <%= render(Primer::Beta::AvatarStack.new(align: :right)) do |c| %>
|
31
|
-
# <% c.with_avatar(src:
|
32
|
-
# <% c.with_avatar(src:
|
33
|
-
# <% c.with_avatar(src:
|
31
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
32
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
33
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
34
34
|
# <% end %>
|
35
35
|
#
|
36
36
|
# @example With tooltip
|
37
37
|
# <%= render(Primer::Beta::AvatarStack.new(tooltipped: true, body_arguments: { label: 'This is a tooltip!' })) do |c| %>
|
38
|
-
# <% c.with_avatar(src:
|
39
|
-
# <% c.with_avatar(src:
|
40
|
-
# <% c.with_avatar(src:
|
38
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
39
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
40
|
+
# <% c.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "@kittenuser") %>
|
41
41
|
# <% end %>
|
42
42
|
#
|
43
43
|
# @param tag [Symbol] <%= one_of(Primer::Beta::AvatarStack::TAG_OPTIONS) %>
|
@@ -83,7 +83,7 @@ module Primer
|
|
83
83
|
system_arguments[:size] = :medium
|
84
84
|
system_arguments[:scheme] ||= :primary
|
85
85
|
|
86
|
-
Primer::ButtonComponent.new(**system_arguments)
|
86
|
+
Primer::ButtonComponent.new(**system_arguments) # rubocop:disable Primer/ComponentNameMigration
|
87
87
|
}
|
88
88
|
|
89
89
|
# Optional secondary action
|
@@ -130,7 +130,7 @@ module Primer
|
|
130
130
|
# Add an `image` to give context that an Octicon couldn't.
|
131
131
|
# @code
|
132
132
|
# <%= render Primer::Beta::Blankslate.new do |c| %>
|
133
|
-
# <% c.visual_image(src:
|
133
|
+
# <% c.visual_image(src: Primer::ExampleImage::BASE64_SRC, alt: "Security - secure vault") %>
|
134
134
|
# <% c.heading(tag: :h2).with_content("Title") %>
|
135
135
|
# <% c.description { "Description"} %>
|
136
136
|
# <% end %>
|
@@ -8,19 +8,19 @@ module Primer
|
|
8
8
|
class Image < Primer::Component
|
9
9
|
# @example Default
|
10
10
|
#
|
11
|
-
# <%= render(Primer::Image.new(src:
|
11
|
+
# <%= render(Primer::Image.new(src: Primer::ExampleImage::BASE64_SRC, alt: "GitHub")) %>
|
12
12
|
#
|
13
13
|
# @example Helper
|
14
14
|
#
|
15
|
-
# <%= primer_image(src:
|
15
|
+
# <%= primer_image(src: Primer::ExampleImage::BASE64_SRC, alt: "GitHub") %>
|
16
16
|
#
|
17
17
|
# @example Lazy loading
|
18
18
|
#
|
19
|
-
# <%= render(Primer::Image.new(src:
|
19
|
+
# <%= render(Primer::Image.new(src: Primer::ExampleImage::BASE64_SRC, alt: "GitHub", lazy: true)) %>
|
20
20
|
#
|
21
21
|
# @example Custom size
|
22
22
|
#
|
23
|
-
# <%= render(Primer::Image.new(src:
|
23
|
+
# <%= render(Primer::Image.new(src: Primer::ExampleImage::BASE64_SRC, alt: "GitHub", height: 100, width: 100)) %>
|
24
24
|
#
|
25
25
|
# @param src [String] The source url of the image.
|
26
26
|
# @param alt [String] Specifies an alternate text for the image.
|
@@ -14,13 +14,13 @@ module Primer
|
|
14
14
|
}
|
15
15
|
|
16
16
|
# @example Simple cropper
|
17
|
-
# <%= render(Primer::ImageCrop.new(src:
|
17
|
+
# <%= render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC)) %>
|
18
18
|
#
|
19
19
|
# @example Square cropper
|
20
|
-
# <%= render(Primer::ImageCrop.new(src:
|
20
|
+
# <%= render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC, rounded: false)) %>
|
21
21
|
#
|
22
22
|
# @example Cropper with a custom loader
|
23
|
-
# <%= render(Primer::ImageCrop.new(src:
|
23
|
+
# <%= render(Primer::ImageCrop.new(src: Primer::ExampleImage::BASE64_SRC, rounded: false)) do |cropper| %>
|
24
24
|
# <% cropper.with_loading(style: "width: 120px").with_content("Loading...") %>
|
25
25
|
# <% end %>
|
26
26
|
#
|
@@ -40,7 +40,7 @@ module Primer
|
|
40
40
|
# @example Default
|
41
41
|
# <div style="padding-left: 60px">
|
42
42
|
# <%= render(Primer::TimelineItemComponent.new) do |component| %>
|
43
|
-
# <% component.with_avatar(src:
|
43
|
+
# <% component.with_avatar(src: Primer::ExampleImage::BASE64_SRC, alt: "github") %>
|
44
44
|
# <% component.with_badge(bg: :success_emphasis, color: :on_emphasis, icon: :check) %>
|
45
45
|
# <% component.with_body { "Success!" } %>
|
46
46
|
# <% end %>
|
data/lib/primer/deprecations.rb
CHANGED
@@ -9,7 +9,6 @@ module Primer
|
|
9
9
|
"Primer::Alpha::AutoComplete::Item" => "Primer::Beta::AutoComplete::Item",
|
10
10
|
"Primer::BlankslateComponent" => "Primer::Beta::Blankslate",
|
11
11
|
"Primer::BoxComponent" => "Primer::Box",
|
12
|
-
"Primer::ButtonComponent" => "Primer::Beta::Button",
|
13
12
|
"Primer::CloseButton" => "Primer::Beta::CloseButton",
|
14
13
|
"Primer::CounterComponent" => "Primer::Beta::Counter",
|
15
14
|
"Primer::DetailsComponent" => "Primer::Beta::Details",
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Primer
|
4
|
+
class ExampleImage
|
5
|
+
BASE64_SRC = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA4AAAAOACAMAAABc6u1lAAAC+lBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAFBgYMCwoXExA0KyVEODFWSD9oV0x6ZVmReGmYfm6ninmyk4G8m4jIpZHSrZjWsZvhuqPnvqfOqpW3l4SrjnyihnaKcmRwXVFMPzc7MSspIh5eTUSBa16bgXHBoIzwxq30yrHrwanctqDzybAgGhefg3N2YVX1zbX32cf54dP65dj76+L87+f76d743c331cH20Lr9+PX////98+3//v7++/r79PHt29jZtK/JlI28eW6yZ1y2bWHCgXTdvbjy5eTixcHOn5nCh3+5cmfTqKLmzcr27OusXFGvYVbq1dLv3tzir5nKinnZoY3SloTpuKENEhNBTEhkdG5ugHlOWlYfJCKEmpLD49egurAxQEMxOja518wUGRqatKt5jYW00cZaaGOVrqW/3tKow7kjLCyPp56a2fCb2e+c2vCZ1/Cb2fCc2u+c2vCe2eub2vCZ1+6Z2PCb2vCc2vCc2u+e2++c2vCb2e8jMDWuy8AXICOb2vCb2vCc2u+a2PCc2u+c3f6c2vCb2vCZ1++b2vCY1++b2u+b2O9Sc3+c2fBXeocvQ0mZ2fCc2vBdg5Bpk6KAs8V2pbVhiJab2fBpk6FObnt3qsAxRU2W0ueGu86TzuNxn6+Qyt5tmKdGY3CZ1usbJiuKwdWOxtpAWmU6UVlcgY4oOD6Z1++U0u6GxOp8uuZ+veeDwemLyeuOzOyJx+qRz+2W1e+S0O2Av+iMy+tciqt1sNljlrlReZaIxuqGxOmEwuiAv+iKyOqHxemFw+mDweg7Nu1hAAAA/nRSTlMAMGuRtc7m9f/Yy7qhh0ckAyBAXXyW+px3B0OqSxsSpdKtO98PNi1wsPBnF1D/xiqBY8BgDI3rWQn9VXMnJv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////yohl2zit/8K93NKwJP8D95T////fJ3pNqYDrdFCiFzKY/3w/6IY13jE//////////////////////////////////////////////////////+XwuP3ibXV7ty8AmoAAEHZSURBVHgB7MEBAQAQAAAgAPB/LxMMqAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP2LKpbY+nt7m2ueyXx+IiXJRFIAPTgLHYHkYReyOyESwDrap+1/W33uxUvLI/ZZw+62WanUFkS/lNJ6brYfH8q+pcc2y3fYaHYiC6fK/uOVesz+AyMOw5o3GFv9LE6JgKvx/5ntv0oHIjjJKI5//z0exiKnF0yzbCxREBj68zEKe0UWhiIgXCHvPc4g0TRdtnxcYoVDEEy+zXHl1iHQMogeXl3GnKBCx5hXGmzVE0gal1ZKX+whRIBte59EbQCRnGMVLXiWGKBCf11rG2x1EElT/vctrLQcQhRHwFlZ7AnGv9f7AW3gQhfGONyq/THE70TnGvNEjRFEokzez2gFuI5z9gberQxTEhHd5OiqIq3VnS97DgyiIPe9kekOIa3yKyrzTI0RB+Lyb1apDXGrYPPB+DkQhGEzCsmdAXMJ5ZzEJJYhC2DAhdgPniPXoM5NhQxTCIxOzquEUYfSWTIo7hSiAOUlpwUwEMybpC0QBbElpwSwYMyarDVEAPSZt1cU/iXWPSTOhP6FCJs8O8FeiXlkyeWtoTwRMxfs1fifmLZdp+ArtCY/p+Nwe4Gdi17SYjgdoT9hMi7XZQajIZFpCBc0JZTE9ZqTwxvXLTFEAzYkJUzXu4y1b2zxFnkDhMWUP3/BWDVufma4ZNCdmTJtbneItUi8h03aA5sSB6TO3eHu6ZWbgO7QmHGbiKUC21HTgOIYRNH7WXyz6jZ8YP6k7znyH1A16zMQztCaOzMayNUR61PB70H9+2ezbvYfV2DfDJU+zDv54Fc9G7b0XfWl8GHSQKOVZzEYLQmt7ZuXwjITNjX7UbPXi8oF3s8yxPdp/PU6cjibX56+eILQWMzvxGkkYGouXfW/lu0zHYWy3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"
|
6
|
+
end
|
7
|
+
end
|
data/lib/tasks/docs.rake
CHANGED
@@ -386,7 +386,7 @@ namespace :docs do
|
|
386
386
|
task :preview do
|
387
387
|
registry = generate_yard_registry
|
388
388
|
|
389
|
-
FileUtils.rm_rf("
|
389
|
+
FileUtils.rm_rf("previews/primer/docs/")
|
390
390
|
|
391
391
|
components = Primer::Component.descendants
|
392
392
|
|
@@ -400,7 +400,7 @@ namespace :docs do
|
|
400
400
|
|
401
401
|
yard_example_tags = initialize_method.tags(:example)
|
402
402
|
|
403
|
-
path = Pathname.new("
|
403
|
+
path = Pathname.new("previews/docs/#{short_name.underscore}_preview.rb")
|
404
404
|
path.dirname.mkdir unless path.dirname.exist?
|
405
405
|
|
406
406
|
File.open(path, "w") do |f|
|
@@ -412,7 +412,7 @@ namespace :docs do
|
|
412
412
|
method_name = name.split("|").first.downcase.parameterize.underscore
|
413
413
|
f.puts(" def #{method_name}; end")
|
414
414
|
f.puts unless index == yard_example_tags.size - 1
|
415
|
-
path = Pathname.new("
|
415
|
+
path = Pathname.new("previews/docs/#{short_name.underscore}_preview/#{method_name}.html.erb")
|
416
416
|
path.dirname.mkdir unless path.dirname.exist?
|
417
417
|
File.open(path, "w") do |view_file|
|
418
418
|
view_file.puts(code.to_s)
|
@@ -514,7 +514,7 @@ namespace :docs do
|
|
514
514
|
def preview_exists?(component)
|
515
515
|
path = component.name.underscore
|
516
516
|
|
517
|
-
File.exist?("
|
517
|
+
File.exist?("previews/#{path}_preview.rb")
|
518
518
|
end
|
519
519
|
|
520
520
|
def example_path(component)
|
data/lib/tasks/test.rake
CHANGED
@@ -0,0 +1,308 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Primer
|
4
|
+
module Alpha
|
5
|
+
# @label ActionList
|
6
|
+
class ActionListPreview < ViewComponent::Preview
|
7
|
+
# @label Default
|
8
|
+
#
|
9
|
+
# @param role text
|
10
|
+
# @param scheme [Symbol] select [full, inset]
|
11
|
+
# @param show_dividers toggle
|
12
|
+
def default(
|
13
|
+
role: Primer::Alpha::ActionList::DEFAULT_ROLE,
|
14
|
+
scheme: Primer::Alpha::ActionList::DEFAULT_SCHEME,
|
15
|
+
show_dividers: false
|
16
|
+
)
|
17
|
+
render(Primer::Alpha::ActionList.new(
|
18
|
+
role: role,
|
19
|
+
scheme: scheme,
|
20
|
+
show_dividers: show_dividers,
|
21
|
+
aria: { label: "Action List" }
|
22
|
+
)) do |c|
|
23
|
+
c.with_heading(title: "Action List")
|
24
|
+
c.with_item(label: "Item one", href: "/") do |item|
|
25
|
+
item.with_leading_visual_icon(icon: :gear)
|
26
|
+
end
|
27
|
+
c.with_item(label: "Item two", href: "/") do |item|
|
28
|
+
item.with_leading_visual_icon(icon: :star)
|
29
|
+
end
|
30
|
+
c.with_item(label: "Item three", href: "/") do |item|
|
31
|
+
item.with_leading_visual_icon(icon: :heart)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# @label Divider
|
37
|
+
#
|
38
|
+
# @param scheme [Symbol] select [subtle, filled]
|
39
|
+
def divider(
|
40
|
+
scheme: Primer::Alpha::ActionList::Divider::DEFAULT_SCHEME
|
41
|
+
)
|
42
|
+
render(Primer::Alpha::ActionList::Divider.new(scheme: scheme))
|
43
|
+
end
|
44
|
+
|
45
|
+
# @label Heading
|
46
|
+
#
|
47
|
+
# @param scheme [Symbol] select [subtle, filled]
|
48
|
+
# @param title text
|
49
|
+
# @param subtitle text
|
50
|
+
# @param list_id text
|
51
|
+
def heading(
|
52
|
+
scheme: Primer::Alpha::ActionList::Heading::DEFAULT_SCHEME,
|
53
|
+
title: "This is a title",
|
54
|
+
list_id: "unique-id",
|
55
|
+
subtitle: "This is a subtitle"
|
56
|
+
)
|
57
|
+
render_with_template(
|
58
|
+
locals: {
|
59
|
+
scheme: scheme,
|
60
|
+
title: title,
|
61
|
+
list_id: list_id,
|
62
|
+
subtitle: subtitle
|
63
|
+
}
|
64
|
+
)
|
65
|
+
end
|
66
|
+
|
67
|
+
# @label Item [playground]
|
68
|
+
#
|
69
|
+
# @param label text
|
70
|
+
# @param truncate_label toggle
|
71
|
+
# @param href text
|
72
|
+
# @param size [Symbol] select [medium, large, xlarge]
|
73
|
+
# @param scheme [Symbol] select [default, danger]
|
74
|
+
# @param disabled toggle
|
75
|
+
# @param description text
|
76
|
+
# @param description_scheme [Symbol] select [inline, block]
|
77
|
+
# @param active toggle
|
78
|
+
# @param leading_visual_icon [Symbol] octicon
|
79
|
+
# @param leading_visual_avatar_src text
|
80
|
+
# @param trailing_visual_icon [Symbol] octicon
|
81
|
+
# @param trailing_visual_label text
|
82
|
+
# @param trailing_visual_counter number
|
83
|
+
# @param trailing_visual_text text
|
84
|
+
# @param private_leading_action_icon [Symbol] octicon
|
85
|
+
# @param private_trailing_action_icon [Symbol] octicon
|
86
|
+
# @param trailing_action toggle
|
87
|
+
# @param trailing_action_on_hover toggle
|
88
|
+
# @param tooltip toggle
|
89
|
+
def item(
|
90
|
+
label: "Label",
|
91
|
+
truncate_label: false,
|
92
|
+
href: nil,
|
93
|
+
size: Primer::Alpha::ActionList::Item::DEFAULT_SIZE,
|
94
|
+
scheme: Primer::Alpha::ActionList::Item::DEFAULT_SCHEME,
|
95
|
+
disabled: false,
|
96
|
+
description: nil,
|
97
|
+
description_scheme: Primer::Alpha::ActionList::Item::DEFAULT_DESCRIPTION_SCHEME,
|
98
|
+
active: false,
|
99
|
+
expanded: false,
|
100
|
+
leading_visual_icon: nil,
|
101
|
+
leading_visual_avatar_src: nil,
|
102
|
+
trailing_visual_icon: nil,
|
103
|
+
trailing_visual_label: nil,
|
104
|
+
trailing_visual_counter: nil,
|
105
|
+
trailing_visual_text: nil,
|
106
|
+
private_leading_action_icon: nil,
|
107
|
+
private_trailing_action_icon: nil,
|
108
|
+
trailing_action_on_hover: false,
|
109
|
+
trailing_action: false,
|
110
|
+
tooltip: false
|
111
|
+
)
|
112
|
+
list = Primer::Alpha::ActionList.new(aria: { label: "Action List" })
|
113
|
+
list.item(
|
114
|
+
label: label,
|
115
|
+
truncate_label: truncate_label,
|
116
|
+
href: href,
|
117
|
+
size: size,
|
118
|
+
scheme: scheme,
|
119
|
+
disabled: disabled,
|
120
|
+
description_scheme: description_scheme,
|
121
|
+
active: active,
|
122
|
+
expanded: expanded,
|
123
|
+
id: "tooltip-test"
|
124
|
+
) do |item|
|
125
|
+
if leading_visual_icon && leading_visual_icon != :none
|
126
|
+
item.with_leading_visual_icon(icon: leading_visual_icon)
|
127
|
+
elsif leading_visual_avatar_src
|
128
|
+
item.with_leading_visual_avatar(src: leading_visual_avatar_src, alt: "An avatar")
|
129
|
+
end
|
130
|
+
|
131
|
+
if trailing_visual_icon && trailing_visual_icon != :none
|
132
|
+
item.with_trailing_visual_icon(icon: trailing_visual_icon)
|
133
|
+
elsif trailing_visual_label
|
134
|
+
item.with_trailing_visual_label { trailing_visual_label }
|
135
|
+
elsif trailing_visual_counter
|
136
|
+
item.with_trailing_visual_counter(count: trailing_visual_counter)
|
137
|
+
elsif trailing_visual_text
|
138
|
+
item.with_trailing_visual_text(trailing_visual_text)
|
139
|
+
end
|
140
|
+
|
141
|
+
if private_leading_action_icon && private_leading_action_icon != :none
|
142
|
+
item.with_private_leading_action_icon(icon: private_leading_action_icon)
|
143
|
+
elsif private_trailing_action_icon
|
144
|
+
item.with_private_trailing_action_icon(icon: private_trailing_action_icon)
|
145
|
+
end
|
146
|
+
|
147
|
+
item.with_trailing_action(show_on_hover: trailing_action_on_hover, icon: "plus", "aria-label": "Button tooltip", size: :medium) if trailing_action && trailing_action != :none
|
148
|
+
|
149
|
+
item.description { description } if description
|
150
|
+
|
151
|
+
item.with_tooltip(text: "Tooltip text", for_id: "tooltip-test", type: :description) if tooltip
|
152
|
+
end
|
153
|
+
|
154
|
+
render(list)
|
155
|
+
end
|
156
|
+
|
157
|
+
# @label Item [default]
|
158
|
+
def item_default
|
159
|
+
render(Primer::Alpha::ActionList.new(
|
160
|
+
aria: { label: "List heading" }
|
161
|
+
)) do |c|
|
162
|
+
c.with_item(label: "Default item", href: "/")
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
# @label Item [size large]
|
167
|
+
def item_size_large
|
168
|
+
render(Primer::Alpha::ActionList.new(
|
169
|
+
aria: { label: "List heading" }
|
170
|
+
)) do |c|
|
171
|
+
c.with_item(label: "Default item", href: "/", size: :large)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
# @label Item [size xlarge]
|
176
|
+
def item_size_xlarge
|
177
|
+
render(Primer::Alpha::ActionList.new(
|
178
|
+
aria: { label: "List heading" }
|
179
|
+
)) do |c|
|
180
|
+
c.with_item(label: "Default item", href: "/", size: :xlarge)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
# @label Item [leading visual]
|
185
|
+
def item_leading_visual
|
186
|
+
render(Primer::Alpha::ActionList.new(
|
187
|
+
aria: { label: "List heading" }
|
188
|
+
)) do |c|
|
189
|
+
c.with_item(label: "Item with leading visual", href: "/") do |item|
|
190
|
+
item.with_leading_visual_icon(icon: :star)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
# @label Item [trailing visual]
|
196
|
+
def item_trailing_visual
|
197
|
+
render(Primer::Alpha::ActionList.new(
|
198
|
+
aria: { label: "List heading" }
|
199
|
+
)) do |c|
|
200
|
+
c.with_item(label: "Item with trailing visual", href: "/") do |item|
|
201
|
+
item.with_trailing_visual_icon(icon: :star)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
# @label Item [leading and trailing visual]
|
207
|
+
def item_leading_trailing_visual
|
208
|
+
render(Primer::Alpha::ActionList.new(
|
209
|
+
aria: { label: "List heading" }
|
210
|
+
)) do |c|
|
211
|
+
c.with_item(label: "Item with trailing visual", href: "/") do |item|
|
212
|
+
item.with_leading_visual_icon(icon: :heart)
|
213
|
+
item.with_trailing_visual_icon(icon: :star)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
# @label Item [description]
|
219
|
+
def item_with_description
|
220
|
+
render(Primer::Alpha::ActionList.new(
|
221
|
+
aria: { label: "List heading" }
|
222
|
+
)) do |c|
|
223
|
+
c.with_item(label: "Default item", href: "/") do |item|
|
224
|
+
item.with_description.with_content("This is a description")
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
229
|
+
# @label Item [inline description]
|
230
|
+
def item_with_description_inline
|
231
|
+
render(Primer::Alpha::ActionList.new(
|
232
|
+
aria: { label: "List heading" }
|
233
|
+
)) do |c|
|
234
|
+
c.with_item(label: "Default item", href: "/", description_scheme: :inline) do |item|
|
235
|
+
item.with_description.with_content("This is a description")
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
# @label Item [trailing action]
|
241
|
+
def item_trailing_action
|
242
|
+
render(Primer::Alpha::ActionList.new(
|
243
|
+
aria: { label: "List heading" }
|
244
|
+
)) do |c|
|
245
|
+
c.with_item(label: "Default item", href: "/") do |item|
|
246
|
+
item.with_trailing_action(show_on_hover: false, icon: "plus", "aria-label": "Button tooltip", size: :medium)
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
250
|
+
|
251
|
+
# @label Item [trailing action on hover]
|
252
|
+
def item_trailing_action_hover
|
253
|
+
render(Primer::Alpha::ActionList.new(
|
254
|
+
aria: { label: "List heading" }
|
255
|
+
)) do |c|
|
256
|
+
c.with_item(label: "Default item", href: "/") do |item|
|
257
|
+
item.with_trailing_action(show_on_hover: true, icon: "plus", "aria-label": "Button tooltip", size: :medium)
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
# @label Item [danger]
|
263
|
+
def item_danger
|
264
|
+
render(Primer::Alpha::ActionList.new(
|
265
|
+
aria: { label: "List heading" }
|
266
|
+
)) do |c|
|
267
|
+
c.with_item(label: "Danger item", href: "/", scheme: :danger)
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
# @label Item [disabled]
|
272
|
+
def item_disabled
|
273
|
+
render(Primer::Alpha::ActionList.new(
|
274
|
+
aria: { label: "List heading" }
|
275
|
+
)) do |c|
|
276
|
+
c.with_item(label: "Disabled item", href: "/", disabled: true)
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
# @label Item [wrap label]
|
281
|
+
def item_wrap_label
|
282
|
+
render(Primer::Alpha::ActionList.new(
|
283
|
+
aria: { label: "List heading" }
|
284
|
+
)) do |c|
|
285
|
+
c.with_item(label: "This is a very long string of text that will wrap if it runs out of horizontal space", href: "/")
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
# @label Item [truncate label]
|
290
|
+
def item_truncate_label
|
291
|
+
render(Primer::Alpha::ActionList.new(
|
292
|
+
aria: { label: "List heading" }
|
293
|
+
)) do |c|
|
294
|
+
c.with_item(label: "This is a very long string of text that will truncate if it runs out of horizontal space", href: "/", truncate_label: true)
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
# @label Item [active]
|
299
|
+
def item_active
|
300
|
+
render(Primer::Alpha::ActionList.new(
|
301
|
+
aria: { label: "List heading" }
|
302
|
+
)) do |c|
|
303
|
+
c.with_item(label: "Active item", href: "/", active: true)
|
304
|
+
end
|
305
|
+
end
|
306
|
+
end
|
307
|
+
end
|
308
|
+
end
|