primer_view_components 0.0.120 → 0.0.121

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/app/components/primer/alpha/segmented_control/item.rb +1 -0
  4. data/app/components/primer/alpha/segmented_control.rb +30 -0
  5. data/app/components/primer/alpha/text_field.rb +1 -0
  6. data/app/components/primer/base_component.rb +3 -3
  7. data/app/components/primer/beta/close_button.rb +1 -1
  8. data/app/components/primer/{local_time.d.ts → beta/relative_time.d.ts} +0 -0
  9. data/app/components/primer/{local_time.js → beta/relative_time.js} +0 -0
  10. data/app/components/primer/{local_time.ts → beta/relative_time.ts} +0 -0
  11. data/app/components/primer/component.rb +2 -1
  12. data/app/components/primer/primer.d.ts +1 -2
  13. data/app/components/primer/primer.js +1 -2
  14. data/app/components/primer/primer.ts +1 -2
  15. data/app/forms/example_toggle_switch_form.rb +1 -1
  16. data/app/lib/primer/view_helper.rb +0 -1
  17. data/lib/primer/deprecations.yml +0 -78
  18. data/lib/primer/forms/acts_as_component.rb +12 -1
  19. data/lib/primer/forms/toggle_switch_form.rb +10 -3
  20. data/lib/primer/view_components/version.rb +1 -1
  21. data/lib/primer/yard/component_manifest.rb +0 -2
  22. data/lib/tasks/static.rake +22 -0
  23. data/previews/primer/alpha/auto_complete_preview.rb +6 -6
  24. data/previews/primer/alpha/segmented_control_preview/with_label_and_caption.html.erb +9 -0
  25. data/previews/primer/alpha/segmented_control_preview/with_subhead_actions.html.erb +11 -0
  26. data/previews/primer/alpha/segmented_control_preview.rb +7 -1
  27. data/previews/primer/alpha/text_field_preview.rb +14 -0
  28. data/previews/primer/alpha/toggle_switch_preview.rb +9 -9
  29. data/previews/primer/beta/auto_complete_preview.rb +17 -17
  30. data/previews/primer/url_helpers.rb +1 -1
  31. data/static/arguments.json +6 -100
  32. data/static/audited_at.json +2 -21
  33. data/static/constants.json +0 -51
  34. data/static/previews.json +1634 -0
  35. data/static/statuses.json +0 -19
  36. metadata +8 -27
  37. data/app/components/primer/dropdown/menu.rb +0 -14
  38. data/app/components/primer/dropdown.rb +0 -7
  39. data/app/components/primer/hellip_button.rb +0 -7
  40. data/app/components/primer/label_component.rb +0 -7
  41. data/app/components/primer/link_component.rb +0 -7
  42. data/app/components/primer/local_time.rb +0 -63
  43. data/app/components/primer/markdown.rb +0 -7
  44. data/app/components/primer/menu_component.rb +0 -7
  45. data/app/components/primer/octicon_component.rb +0 -7
  46. data/app/components/primer/octicon_symbols_component.rb +0 -7
  47. data/app/components/primer/popover_component.rb +0 -8
  48. data/app/components/primer/spinner_component.rb +0 -7
  49. data/app/components/primer/state_component.rb +0 -7
  50. data/app/components/primer/subhead_component.rb +0 -7
  51. data/app/components/primer/tab_container_component.rb +0 -7
  52. data/app/components/primer/time_ago_component.d.ts +0 -1
  53. data/app/components/primer/time_ago_component.js +0 -1
  54. data/app/components/primer/time_ago_component.rb +0 -51
  55. data/app/components/primer/time_ago_component.ts +0 -1
  56. data/app/components/primer/timeline_item_component.rb +0 -13
  57. data/previews/primer/local_time_component_preview.rb +0 -57
  58. data/previews/primer/time_ago_component_preview.rb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b86cf7d29399d5c0823b25d1b7a595350a5bd50d1854bb3b3e35016a72f51d73
4
- data.tar.gz: dbb4ab2a74bc733388e478dab5f51e32094cd0294dd74aafc57d7eeb924eb664
3
+ metadata.gz: e9a50600b509b2d0196b508f726bd49c3d363325f6e883401252e10501be137f
4
+ data.tar.gz: d03535e6e7d149e9260276143ecfc9239331a692339fb042d5c0cc1b0ccff4f9
5
5
  SHA512:
6
- metadata.gz: f6e7acce0c2a4a8bf64d195d26f12620a26f051ac12f5ed66089b286517f30120788544c18d4f8589f6675b00a9ccf67a3c8c3066816f8c9de4b608dd01d27e5
7
- data.tar.gz: 764d4292cb364d036c6b9b914fa798686c399e8df41173557990771a82a0d78877769084ed60381d3d2e1d7a84541fc37dd5eeb895bb5d527bfa21a3d06968eb
6
+ metadata.gz: 79bb3edef7b103d469bab7414855899fa47584038ae5877e0ec09b0421d5e3210e17233fc27e861c7c1797f0f3b644a95a063ceb4f8c31c621874f7a8161796b
7
+ data.tar.gz: 5e765a6a44aa171f43c96d4b5be73e13138e9ef601f41316c575a122488650937a383ea2025f33537f67ec0b77cbde69d5a6d6fa468903ded54e6dc82953b752
data/CHANGELOG.md CHANGED
@@ -1,5 +1,43 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.0.121
4
+
5
+ ### Patch Changes
6
+
7
+ - [#1791](https://github.com/primer/view_components/pull/1791) [`b68cf7f7`](https://github.com/primer/view_components/commit/b68cf7f7d74379765cd373a5ea060204e3cf7db2) Thanks [@jonrohan](https://github.com/jonrohan)! - Removing the deprecated Primer::LocalTime component
8
+
9
+ * [#1808](https://github.com/primer/view_components/pull/1808) [`31544417`](https://github.com/primer/view_components/commit/31544417010274b4f8b3b6574587b917a0bbf0e4) Thanks [@joelhawksley](https://github.com/joelhawksley)! - Rename URLHelpers to UrlHelpers to fix console error.
10
+
11
+ - [#1788](https://github.com/primer/view_components/pull/1788) [`7ad70066`](https://github.com/primer/view_components/commit/7ad7006651dc4dbbd21f444ad10ee1fdb5c3eeba) Thanks [@camertron](https://github.com/camertron)! - Document TextField's auto_check_src argument
12
+
13
+ * [#1784](https://github.com/primer/view_components/pull/1784) [`3b830167`](https://github.com/primer/view_components/commit/3b8301674ccd74e7ae31826a766883a0612a3960) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove unused deprecated component wrappers
14
+
15
+ - "Primer::Dropdown::Menu::Item"
16
+ - "Primer::Dropdown::Menu"
17
+ - "Primer::Dropdown"
18
+ - "Primer::HellipButton"
19
+ - "Primer::LabelComponent"
20
+ - "Primer::LinkComponent"
21
+ - "Primer::Markdown"
22
+ - "Primer::MenuComponent"
23
+ - "Primer::OcticonComponent"
24
+ - "Primer::OcticonSymbolsComponent"
25
+ - "Primer::PopoverComponent"
26
+ - "Primer::SpinnerComponent"
27
+ - "Primer::StateComponent"
28
+ - "Primer::SubheadComponent"
29
+ - "Primer::TabContainerComponent"
30
+ - "Primer::TimelineItemComponent::BadgeComponent"
31
+ - "Primer::TimelineItemComponent"
32
+
33
+ - [#1787](https://github.com/primer/view_components/pull/1787) [`972dd7bd`](https://github.com/primer/view_components/commit/972dd7bd92e79b2e8b54555f91770c4c1b280709) Thanks [@neall](https://github.com/neall)! - Allow toggle-switch forms to use caption templates.
34
+
35
+ * [#1792](https://github.com/primer/view_components/pull/1792) [`730b0a8d`](https://github.com/primer/view_components/commit/730b0a8d70a9e5bc42856c3f30779ebf0d2b9ac9) Thanks [@jonrohan](https://github.com/jonrohan)! - Removing the deprecated Primer::TimeAgoComponent
36
+
37
+ - [#1776](https://github.com/primer/view_components/pull/1776) [`61b28872`](https://github.com/primer/view_components/commit/61b288721a0315bcad4694615c9b34ddad5d10b7) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding aria labeled by and described by check to SegmentedControl component. Marking as accessibility reviewed
38
+
39
+ * [#1805](https://github.com/primer/view_components/pull/1805) [`238328a7`](https://github.com/primer/view_components/commit/238328a734cff1322d18c129d340bb5a254bc272) Thanks [@paulcsmith](https://github.com/paulcsmith)! - Update CloseButton to work with more aria-label types
40
+
3
41
  ## 0.0.120
4
42
 
5
43
  ### Patch Changes
@@ -7,6 +7,7 @@ module Primer
7
7
  # It wraps the Button and IconButton components to provide the correct styles
8
8
  class Item < Primer::BaseComponent
9
9
  status :alpha
10
+ audited_at "2023-02-01"
10
11
 
11
12
  # @param label [String] The label to use
12
13
  # @param selected [Boolean] Whether the item is selected
@@ -3,8 +3,12 @@
3
3
  module Primer
4
4
  module Alpha
5
5
  # Use a segmented control to let users select an option from a short list and immediately apply the selection
6
+ # @accessibility
7
+ # A `SegmentedControl` should not be used in a form as a replacement for something like a radio group or select.
8
+ # See the [Accessibility section](https://primer.style/design/components/segmented-control#accessibility) of the SegmentedControl interface guidelines for more details.
6
9
  class SegmentedControl < Primer::Component
7
10
  status :alpha
11
+ audited_at "2023-02-01"
8
12
 
9
13
  FULL_WIDTH_DEFAULT = false
10
14
  HIDE_LABELS_DEFAULT = false
@@ -24,6 +28,30 @@ module Primer
24
28
  )
25
29
  }
26
30
 
31
+ # @example With a label above and caption below
32
+ # <%= render(Primer::Box.new(display: :flex, direction: :column)) do %>
33
+ # <%= render(Primer::BaseComponent.new(tag: "span", id: "scLabel-horiz")) { "File view" } %>
34
+ # <%= render(Primer::Alpha::SegmentedControl.new("aria-labelledby": "scLabel-horiz", "aria-describedby": "scCaption-horiz")) do |component| %>
35
+ # <% component.with_item(label: "Preview", selected: true) %>
36
+ # <% component.with_item(label: "Raw") %>
37
+ # <% component.with_item(label: "Blame") %>
38
+ # <% end %>
39
+ # <%= render(Primer::Beta::Text.new(font_size: :small, mt: 1, color: :muted, id: "scCaption-horiz")) { "Change the way the file is viewed" } %>
40
+ # <% end %>
41
+ #
42
+ # @example With a label and caption on the left
43
+ # <%= render(Primer::Beta::Subhead.new) do |component| %>
44
+ # <% component.with_heading(id: "scLabel-vert") { "File view" } %>
45
+ # <% component.with_description(id: "scCaption-vert") { "Change the way the file is viewed" } %>
46
+ # <% component.with_actions do %>
47
+ # <%= render(Primer::Alpha::SegmentedControl.new("aria-labelledby": "scLabel-vert", "aria-describedby": "scCaption-vert")) do |component| %>
48
+ # <% component.with_item(label: "Preview", selected: true) %>
49
+ # <% component.with_item(label: "Raw") %>
50
+ # <% component.with_item(label: "Blame") %>
51
+ # <% end %>
52
+ # <% end %>
53
+ # <% end %>
54
+ #
27
55
  # @example Basic usage
28
56
  #
29
57
  # <%= render(Primer::Alpha::SegmentedControl.new("aria-label": "File view")) do |component| %>
@@ -79,6 +107,8 @@ module Primer
79
107
  "SegmentedControl--iconOnly": hide_labels,
80
108
  "SegmentedControl--fullWidth": full_width
81
109
  )
110
+
111
+ validate_aria_label
82
112
  end
83
113
 
84
114
  def render?
@@ -98,6 +98,7 @@ module Primer
98
98
  # @param leading_visual [Hash] Renders a leading visual icon before the text field's cursor. The hash will be passed to Primer's [Octicon component](https://primer.style/view-components/components/octicon).
99
99
  # @param validation_message [String] A validation message to display beneath the input. Implicitly sets `invalid` to `true`.
100
100
  # @param label_arguments [Hash] System arugments passed to the Rails builder's `#label` method. These arguments will appear as HTML attributes on the `<label>` tag.
101
+ # @param auto_check_src [String] When provided, makes a request to the given URL whenever the contents of the text field changes. If the server responds with a non-2xx status code, the response body is used as the validation message.
101
102
  # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
102
103
  # @param block [Proc] Unused.
103
104
  end
@@ -134,12 +134,12 @@ module Primer
134
134
  #
135
135
  # | Name | Type | Description |
136
136
  # | :- | :- | :- |
137
- # | `font_family` | Symbol | Font weight. <%= one_of([:mono]) %> |
137
+ # | `font_family` | Symbol | Font family. <%= one_of([:mono]) %> |
138
138
  # | `font_size` | String, Integer, Symbol | <%= one_of(["00", 0, 1, 2, 3, 4, 5, 6, :small, :normal]) %> |
139
- # | `font_style` | Symbol | Font weight. <%= one_of([:italic]) %> |
139
+ # | `font_style` | Symbol | Font style. <%= one_of([:italic]) %> |
140
140
  # | `font_weight` | Symbol | Font weight. <%= one_of([:light, :normal, :bold, :emphasized]) %> |
141
141
  # | `text_align` | Symbol | Text alignment. <%= one_of([:left, :right, :center]) %> |
142
- # | `text_transform` | Symbol | Text alignment. <%= one_of([:uppercase]) %> |
142
+ # | `text_transform` | Symbol | Text transformation. <%= one_of([:uppercase]) %> |
143
143
  # | `underline` | Boolean | Whether text should be underlined. |
144
144
  # | `word_break` | Symbol | Whether to break words on line breaks. <%= one_of(Primer::Classify::Utilities.mappings(:word_break)) %> |
145
145
  #
@@ -28,7 +28,7 @@ module Primer
28
28
  "close-button",
29
29
  system_arguments[:classes]
30
30
  )
31
- @system_arguments[:"aria-label"] ||= "Close"
31
+ @system_arguments[:"aria-label"] = aria("label", system_arguments) || "Close"
32
32
  end
33
33
 
34
34
  def call
@@ -52,7 +52,8 @@ module Primer
52
52
 
53
53
  def validate_aria_label
54
54
  aria_label = aria("label", @system_arguments)
55
- raise ArgumentError, "`aria-label` is required." if aria_label.nil? && !Rails.env.production?
55
+ aria_labelledby = aria("labelledby", @system_arguments)
56
+ raise ArgumentError, "`aria-label` or `aria-labelledby` is required." if aria_label.nil? && aria_labelledby.nil? && !Rails.env.production?
56
57
  end
57
58
 
58
59
  def silence_deprecations?
@@ -8,9 +8,8 @@ import './alpha/tool_tip';
8
8
  import './alpha/x_banner';
9
9
  import './beta/auto_complete/auto_complete';
10
10
  import './beta/clipboard_copy';
11
- import './local_time';
11
+ import './beta/relative_time';
12
12
  import './alpha/tab_container';
13
- import './time_ago_component';
14
13
  import '../../../lib/primer/forms/primer_multi_input';
15
14
  import '../../../lib/primer/forms/primer_text_field';
16
15
  import '../../../lib/primer/forms/toggle_switch_input';
@@ -8,9 +8,8 @@ import './alpha/tool_tip';
8
8
  import './alpha/x_banner';
9
9
  import './beta/auto_complete/auto_complete';
10
10
  import './beta/clipboard_copy';
11
- import './local_time';
11
+ import './beta/relative_time';
12
12
  import './alpha/tab_container';
13
- import './time_ago_component';
14
13
  import '../../../lib/primer/forms/primer_multi_input';
15
14
  import '../../../lib/primer/forms/primer_text_field';
16
15
  import '../../../lib/primer/forms/toggle_switch_input';
@@ -8,9 +8,8 @@ import './alpha/tool_tip'
8
8
  import './alpha/x_banner'
9
9
  import './beta/auto_complete/auto_complete'
10
10
  import './beta/clipboard_copy'
11
- import './local_time'
11
+ import './beta/relative_time'
12
12
  import './alpha/tab_container'
13
- import './time_ago_component'
14
13
  import '../../../lib/primer/forms/primer_multi_input'
15
14
  import '../../../lib/primer/forms/primer_text_field'
16
15
  import '../../../lib/primer/forms/toggle_switch_input'
@@ -3,6 +3,6 @@
3
3
  # :nodoc:
4
4
  class ExampleToggleSwitchForm < Primer::Forms::ToggleSwitchForm
5
5
  def initialize(**system_arguments)
6
- super(name: :example_field, label: "Example", caption: "This is an example toggle switch.", **system_arguments)
6
+ super(name: :example_field, label: "Example", **system_arguments)
7
7
  end
8
8
  end
@@ -9,7 +9,6 @@ module Primer
9
9
  HELPERS = {
10
10
  octicon: "Primer::Beta::Octicon",
11
11
  heading: "Primer::Beta::Heading",
12
- time_ago: "Primer::TimeAgoComponent",
13
12
  image: "Primer::Alpha::Image"
14
13
  }.freeze
15
14
 
@@ -22,88 +22,10 @@ deprecations:
22
22
  replacement: "Primer::Beta::Button"
23
23
  guide: "https://primer.style/view-components/guides/primer_button_component"
24
24
 
25
- - component: "Primer::Dropdown"
26
- autocorrect: true
27
- replacement: "Primer::Alpha::Dropdown"
28
-
29
- - component: "Primer::Dropdown::Menu"
30
- autocorrect: true
31
- replacement: "Primer::Alpha::Dropdown::Menu"
32
-
33
- - component: "Primer::Dropdown::Menu::Item"
34
- autocorrect: true
35
- replacement: "Primer::Alpha::Dropdown::Menu::Item"
36
-
37
- - component: "Primer::HellipButton"
38
- autocorrect: true
39
- replacement: "Primer::Alpha::HellipButton"
40
-
41
25
  - component: "Primer::IconButton"
42
26
  autocorrect: true
43
27
  replacement: "Primer::Beta::IconButton"
44
28
 
45
- - component: "Primer::LabelComponent"
46
- autocorrect: true
47
- replacement: "Primer::Beta::Label"
48
-
49
- - component: "Primer::LocalTime"
50
- autocorrect: false
51
- replacement: "Primer::Beta::RelativeTime"
52
- guide: "https://primer.style/view-components/guides/primer_local_time"
53
-
54
- - component: "Primer::LinkComponent"
55
- autocorrect: true
56
- replacement: "Primer::Beta::Link"
57
-
58
- - component: "Primer::Markdown"
59
- autocorrect: true
60
- replacement: "Primer::Beta::Markdown"
61
-
62
- - component: "Primer::MenuComponent"
63
- autocorrect: true
64
- replacement: "Primer::Alpha::Menu"
65
-
66
- - component: "Primer::OcticonComponent"
67
- autocorrect: true
68
- replacement: "Primer::Beta::Octicon"
69
-
70
- - component: "Primer::OcticonSymbolsComponent"
71
- autocorrect: true
72
- replacement: "Primer::Alpha::OcticonSymbols"
73
-
74
- - component: "Primer::PopoverComponent"
75
- autocorrect: true
76
- replacement: "Primer::Beta::Popover"
77
-
78
- - component: "Primer::SpinnerComponent"
79
- autocorrect: true
80
- replacement: "Primer::Beta::Spinner"
81
-
82
- - component: "Primer::StateComponent"
83
- autocorrect: true
84
- replacement: "Primer::Beta::State"
85
-
86
- - component: "Primer::SubheadComponent"
87
- autocorrect: true
88
- replacement: "Primer::Beta::Subhead"
89
-
90
- - component: "Primer::TabContainerComponent"
91
- autocorrect: true
92
- replacement: "Primer::Alpha::TabContainer"
93
-
94
- - component: "Primer::TimeAgoComponent"
95
- autocorrect: false
96
- replacement: "Primer::Beta::RelativeTime"
97
- guide: "https://primer.style/view-components/guides/primer_time_ago"
98
-
99
- - component: "Primer::TimelineItemComponent"
100
- autocorrect: true
101
- replacement: "Primer::Beta::TimelineItem"
102
-
103
- - component: "Primer::TimelineItemComponent::BadgeComponent"
104
- autocorrect: true
105
- replacement: "Primer::Beta::TimelineItem::Badge"
106
-
107
29
  - component: "Primer::Tooltip"
108
30
  autocorrect: true
109
31
  replacement: "Primer::Alpha::Tooltip"
@@ -8,7 +8,7 @@ module Primer
8
8
  module ActsAsComponent
9
9
  # :nodoc:
10
10
  module InstanceMethods
11
- delegate :render, :content_tag, :output_buffer, :capture, to: :@view_context
11
+ delegate :render, :content_tag, :output_buffer, to: :@view_context
12
12
 
13
13
  def render_in(view_context, &block)
14
14
  @view_context = view_context
@@ -16,6 +16,17 @@ module Primer
16
16
  perform_render(&block)
17
17
  end
18
18
 
19
+ # This is necessary to restore the functionality changed by https://github.com/rails/rails/pull/47194.
20
+ # I would love to remove this at some point, perhaps if we ever decide to replace
21
+ # ActsAsComponent with view component.
22
+ def capture(*args, &block)
23
+ old_buffer = @view_context.output_buffer
24
+ @view_context.output_buffer = ActionView::OutputBuffer.new
25
+ @view_context.capture(*args, &block)
26
+ ensure
27
+ @view_context.output_buffer = old_buffer
28
+ end
29
+
19
30
  # :nocov:
20
31
  def perform_render(&_block)
21
32
  raise NotImplementedError, "subclasses must implement ##{__method__}."
@@ -32,8 +32,10 @@ module Primer
32
32
  #
33
33
  class ToggleSwitchForm < Primer::Forms::Base
34
34
  # Define the form on subclasses so render(Subclass.new) works as expected.
35
- def self.inherited(base)
36
- base.form do |toggle_switch_form|
35
+ # (this is called directly on this class, but also on classes
36
+ # that inherit from this class)
37
+ def self.define_form_on(klass)
38
+ klass.form do |toggle_switch_form|
37
39
  input = Dsl::ToggleSwitchInput.new(
38
40
  builder: toggle_switch_form.builder, form: self, **@system_arguments
39
41
  )
@@ -42,8 +44,13 @@ module Primer
42
44
  end
43
45
  end
44
46
 
47
+ def self.inherited(base)
48
+ super
49
+ define_form_on(base)
50
+ end
51
+
45
52
  # Define the form on self so render(ToggleSwitchForm.new) works as expected.
46
- inherited(self)
53
+ define_form_on(self)
47
54
 
48
55
  # Override to avoid accepting a builder argument. We create our own builder
49
56
  # on render. See the implementation of render_in below.
@@ -6,7 +6,7 @@ module Primer
6
6
  module VERSION
7
7
  MAJOR = 0
8
8
  MINOR = 0
9
- PATCH = 120
9
+ PATCH = 121
10
10
 
11
11
  STRING = [MAJOR, MINOR, PATCH].join(".")
12
12
  end
@@ -13,7 +13,6 @@ module Primer
13
13
  Primer::Alpha::Layout => {},
14
14
  Primer::Alpha::HellipButton => {},
15
15
  Primer::Alpha::Image => {},
16
- Primer::LocalTime => { js: true },
17
16
  Primer::Alpha::OcticonSymbols => {},
18
17
  Primer::Alpha::ImageCrop => { js: true },
19
18
  Primer::IconButton => { js: true },
@@ -54,7 +53,6 @@ module Primer
54
53
  Primer::Beta::Subhead => {},
55
54
  Primer::Alpha::TabContainer => { js: true },
56
55
  Primer::Beta::Text => {},
57
- Primer::TimeAgoComponent => { js: true },
58
56
  Primer::Beta::TimelineItem => {},
59
57
  Primer::Tooltip => {},
60
58
  Primer::Truncate => {},
@@ -5,11 +5,33 @@ namespace :static do
5
5
  ENV["RAILS_ENV"] = "test"
6
6
  require File.expand_path("./../../demo/config/environment.rb", __dir__)
7
7
  require "primer/view_components"
8
+ require "lookbook"
8
9
  # Loads all components for `.descendants` to work properly
9
10
  Dir["./app/components/primer/**/*.rb"].sort.each { |file| require file }
10
11
 
11
12
  Primer::ViewComponents.dump(:statuses)
12
13
  Primer::ViewComponents.dump(:constants)
13
14
  Primer::ViewComponents.dump(:audited_at)
15
+
16
+ previews = Lookbook.previews.map do |preview|
17
+ {
18
+ name: preview.name,
19
+ lookup_path: preview.lookup_path,
20
+ examples: preview.examples.map { |example|
21
+ {
22
+ inspect_path: example.url_path,
23
+ preview_path: example.url_path.sub("/inspect/", "/preview/"),
24
+ name: example.name
25
+ }
26
+ }
27
+ }
28
+ end
29
+
30
+ require "json"
31
+
32
+ File.open(File.join(Primer::ViewComponents::DEFAULT_STATIC_PATH, "previews.json"), "w") do |f|
33
+ f.write(JSON.pretty_generate(previews))
34
+ f.write($INPUT_RECORD_SEPARATOR)
35
+ end
14
36
  end
15
37
  end
@@ -19,7 +19,7 @@ module Primer
19
19
  label_text: label_text,
20
20
  input_id: "input-id",
21
21
  list_id: "test-id",
22
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
22
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
23
23
  is_label_visible: is_label_visible,
24
24
  is_label_inline: is_label_inline,
25
25
  with_icon: with_icon,
@@ -42,7 +42,7 @@ module Primer
42
42
  label_text: label_text,
43
43
  input_id: "input-id",
44
44
  list_id: "test-id",
45
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
45
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
46
46
  is_label_visible: is_label_visible,
47
47
  is_label_inline: is_label_inline,
48
48
  with_icon: with_icon,
@@ -62,7 +62,7 @@ module Primer
62
62
  label_text: "Select a fruit",
63
63
  input_id: "input-id-1",
64
64
  list_id: "test-id-1",
65
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
65
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
66
66
  is_label_visible: false
67
67
  )
68
68
  )
@@ -77,7 +77,7 @@ module Primer
77
77
  label_text: "Select a fruit",
78
78
  input_id: "input-id-2",
79
79
  list_id: "test-id-2",
80
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
80
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
81
81
  is_label_inline: true
82
82
  )
83
83
  )
@@ -92,7 +92,7 @@ module Primer
92
92
  label_text: "Select a fruit",
93
93
  input_id: "input-id-3",
94
94
  list_id: "test-id-3",
95
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
95
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
96
96
  with_icon: true
97
97
  )
98
98
  )
@@ -107,7 +107,7 @@ module Primer
107
107
  label_text: "Select a fruit",
108
108
  input_id: "input-id-4",
109
109
  list_id: "test-id-4",
110
- src: URLHelpers.autocomplete_index_path(version: "alpha"),
110
+ src: UrlHelpers.autocomplete_index_path(version: "alpha"),
111
111
  is_clearable: true
112
112
  )
113
113
  )
@@ -0,0 +1,9 @@
1
+ <%= render(Primer::Box.new(display: :flex, direction: :column)) do %>
2
+ <%= render(Primer::BaseComponent.new(tag: "span", id: "scLabel-horiz")) { "File view" } %>
3
+ <%= render(Primer::Alpha::SegmentedControl.new("aria-labelledby": "scLabel-horiz", "aria-describedby": "scCaption-horiz")) do |component| %>
4
+ <% component.with_item(label: "Preview", selected: true) %>
5
+ <% component.with_item(label: "Raw") %>
6
+ <% component.with_item(label: "Blame") %>
7
+ <% end %>
8
+ <%= render(Primer::Beta::Text.new(font_size: :small, mt: 1, color: :muted, id: "scCaption-horiz")) { "Change the way the file is viewed" } %>
9
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <%= render(Primer::Beta::Subhead.new) do |component| %>
2
+ <% component.with_heading(id: "scLabel-vert") { "File view" } %>
3
+ <% component.with_description(id: "scCaption-vert") { "Change the way the file is viewed" } %>
4
+ <% component.with_actions do %>
5
+ <%= render(Primer::Alpha::SegmentedControl.new("aria-labelledby": "scLabel-vert", "aria-describedby": "scCaption-vert")) do |component| %>
6
+ <% component.with_item(label: "Preview", selected: true) %>
7
+ <% component.with_item(label: "Raw") %>
8
+ <% component.with_item(label: "Blame") %>
9
+ <% end %>
10
+ <% end %>
11
+ <% end %>
@@ -152,13 +152,19 @@ module Primer
152
152
  # NOTE: this preview uses a group to force it's display below the other groups
153
153
  # @!group With link as tag
154
154
  def with_link_as_tag
155
- render(Primer::Alpha::SegmentedControl.new) do |component|
155
+ render(Primer::Alpha::SegmentedControl.new("aria-label": "File view")) do |component|
156
156
  component.with_item(tag: :a, href: "#", label: "Preview", icon: :eye, selected: true)
157
157
  component.with_item(tag: :a, href: "#", label: "Raw", icon: :"file-code")
158
158
  component.with_item(tag: :a, href: "#", label: "Blame", icon: :people)
159
159
  end
160
160
  end
161
161
  # @!endgroup
162
+
163
+ # @!group With aria labeled headings
164
+ def with_subhead_actions; end
165
+
166
+ def with_label_and_caption; end
167
+ # @!endgroup
162
168
  end
163
169
  end
164
170
  end
@@ -144,6 +144,20 @@ module Primer
144
144
  end
145
145
  #
146
146
  # @!endgroup
147
+
148
+ # @!group Auto check
149
+ #
150
+ # @label Auto check request ok
151
+ def with_auto_check_ok
152
+ render(Primer::Alpha::TextField.new(auto_check_src: UrlHelpers.example_check_ok_path, name: "my-text-field", label: "My text field"))
153
+ end
154
+
155
+ # @label Auto check request error
156
+ def with_auto_check_error
157
+ render(Primer::Alpha::TextField.new(auto_check_src: UrlHelpers.example_check_error_path, name: "my-text-field", label: "My text field"))
158
+ end
159
+ #
160
+ # @!endgroup
147
161
  end
148
162
  end
149
163
  end
@@ -9,31 +9,31 @@ module Primer
9
9
  include ActionView::Helpers::FormTagHelper
10
10
 
11
11
  def playground
12
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path))
12
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path))
13
13
  end
14
14
 
15
15
  def default
16
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path))
16
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path))
17
17
  end
18
18
 
19
19
  def checked
20
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path, checked: true))
20
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path, checked: true))
21
21
  end
22
22
 
23
23
  def disabled
24
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path, enabled: false))
24
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path, enabled: false))
25
25
  end
26
26
 
27
27
  def checked_disabled
28
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path, checked: true, enabled: false))
28
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path, checked: true, enabled: false))
29
29
  end
30
30
 
31
31
  def small
32
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path, size: :small))
32
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path, size: :small))
33
33
  end
34
34
 
35
35
  def with_status_label_position_end
36
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path, status_label_position: :end))
36
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path, status_label_position: :end))
37
37
  end
38
38
 
39
39
  def with_a_bad_src
@@ -45,11 +45,11 @@ module Primer
45
45
  end
46
46
 
47
47
  def with_csrf_token
48
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path, csrf_token: "let_me_in"))
48
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path, csrf_token: "let_me_in"))
49
49
  end
50
50
 
51
51
  def with_bad_csrf_token
52
- render(ToggleSwitch.new(src: URLHelpers.toggle_switch_index_path, csrf_token: "i_am_a_criminal"))
52
+ render(ToggleSwitch.new(src: UrlHelpers.toggle_switch_index_path, csrf_token: "i_am_a_criminal"))
53
53
  end
54
54
  end
55
55
  end