primer_view_components 0.42.0 → 0.43.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +20 -0
- data/app/assets/styles/primer_view_components.css +1 -1
- data/app/assets/styles/primer_view_components.css.map +1 -1
- data/app/components/primer/alpha/dialog/header.html.erb +1 -1
- data/app/components/primer/alpha/dialog/header.rb +5 -0
- data/app/components/primer/alpha/include_fragment.rb +14 -1
- data/app/components/primer/alpha/select_panel.css +1 -1
- data/app/components/primer/alpha/select_panel.css.json +2 -2
- data/app/components/primer/alpha/select_panel.css.map +1 -1
- data/app/components/primer/alpha/select_panel.html.erb +2 -2
- data/app/components/primer/alpha/select_panel.pcss +5 -2
- data/app/lib/primer/current_attributes.rb +9 -0
- data/app/lib/primer/forms/acts_as_component.rb +1 -12
- data/lib/primer/view_components/version.rb +2 -2
- data/previews/primer/alpha/dialog_preview/with_header_close_button_label.html.erb +5 -0
- data/previews/primer/alpha/dialog_preview/without_header_close_button_label.html.erb +8 -0
- data/previews/primer/alpha/dialog_preview.rb +32 -0
- metadata +5 -2
@@ -13,7 +13,7 @@
|
|
13
13
|
<% end %>
|
14
14
|
</div>
|
15
15
|
<div class="Overlay-actionWrap">
|
16
|
-
<%= render Primer::Beta::CloseButton.new(classes: "Overlay-closeButton", "data-close-dialog-id": @id) %>
|
16
|
+
<%= render Primer::Beta::CloseButton.new(classes: "Overlay-closeButton", "data-close-dialog-id": @id, aria: { label: @close_label }) %>
|
17
17
|
</div>
|
18
18
|
</div>
|
19
19
|
<%= filter %>
|
@@ -16,6 +16,8 @@ module Primer
|
|
16
16
|
}.freeze
|
17
17
|
VARIANT_OPTIONS = VARIANT_MAPPINGS.keys
|
18
18
|
|
19
|
+
DEFAULT_CLOSE_LABEL = "Close"
|
20
|
+
|
19
21
|
# Optional filter slot for adding a filter input to the header.
|
20
22
|
#
|
21
23
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
@@ -48,6 +50,7 @@ module Primer
|
|
48
50
|
# @param show_divider [Boolean] Show a divider between the header and body.
|
49
51
|
# @param visually_hide_title [Boolean] Visually hide the `title` while maintaining a label for assistive technologies.
|
50
52
|
# @param variant [Symbol] <%= one_of(Primer::Alpha::Dialog::Header::VARIANT_OPTIONS) %>
|
53
|
+
# @param close_label [String] The aria-label text of the close "x" button.
|
51
54
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
52
55
|
def initialize(
|
53
56
|
id:,
|
@@ -56,12 +59,14 @@ module Primer
|
|
56
59
|
show_divider: false,
|
57
60
|
visually_hide_title: false,
|
58
61
|
variant: DEFAULT_VARIANT,
|
62
|
+
close_label: DEFAULT_CLOSE_LABEL,
|
59
63
|
**system_arguments
|
60
64
|
)
|
61
65
|
@id = id
|
62
66
|
@title = title
|
63
67
|
@subtitle = subtitle
|
64
68
|
@visually_hide_title = visually_hide_title
|
69
|
+
@close_label = close_label
|
65
70
|
@system_arguments = deny_tag_argument(**system_arguments)
|
66
71
|
@system_arguments[:tag] = :div
|
67
72
|
|
@@ -8,14 +8,27 @@ module Primer
|
|
8
8
|
class IncludeFragment < Primer::Component
|
9
9
|
status :alpha
|
10
10
|
|
11
|
+
ALLOWED_LOADING_VALUES = [:lazy, :eager].freeze
|
12
|
+
DEFAULT_LOADING = :eager
|
13
|
+
|
11
14
|
# @param src [String] The URL from which to retrieve an HTML element fragment.
|
12
15
|
# @param loading [Symbol] <%= one_of([:lazy, :eager]) %>
|
16
|
+
# @param accept [String] What to send as the Accept header.
|
13
17
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
14
|
-
def initialize(src: nil, loading: :
|
18
|
+
def initialize(src: nil, loading: nil, accept: nil, **system_arguments)
|
15
19
|
@system_arguments = system_arguments
|
16
20
|
@system_arguments[:tag] = "include-fragment"
|
17
21
|
@system_arguments[:loading] = loading
|
18
22
|
@system_arguments[:src] = src
|
23
|
+
@system_arguments[:accept] = accept if accept
|
24
|
+
|
25
|
+
if loading
|
26
|
+
@system_arguments[:loading] = fetch_or_fallback(ALLOWED_LOADING_VALUES, loading.to_sym, DEFAULT_LOADING)
|
27
|
+
end
|
28
|
+
|
29
|
+
if Primer::CurrentAttributes.nonce
|
30
|
+
@system_arguments[:"data-nonce"] = Primer::CurrentAttributes.nonce
|
31
|
+
end
|
19
32
|
end
|
20
33
|
|
21
34
|
def call
|
@@ -1 +1 @@
|
|
1
|
-
.SelectPanel-
|
1
|
+
.SelectPanel-loadingPanel{min-height:min(calc(var(--overlay-height) - 10rem),calc(100vh - 2rem))}.SelectPanel-emptyPanel{align-items:center;display:flex;justify-content:center;min-height:min(calc(var(--overlay-height) - 23rem),calc(100vh - 2rem))}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["select_panel.pcss"],"names":[],"mappings":"
|
1
|
+
{"version":3,"sources":["select_panel.pcss"],"names":[],"mappings":"AAAA,0BACE,sEACF,CAEA,wBAEE,kBAAmB,CACnB,YAAa,CACb,sBAAuB,CAHvB,sEAIF","file":"select_panel.css","sourcesContent":[".SelectPanel-loadingPanel {\n min-height: min(calc(var(--overlay-height) - 10rem), calc(100vh - 2rem));\n}\n\n.SelectPanel-emptyPanel {\n min-height: min(calc(var(--overlay-height) - 23rem), calc(100vh - 2rem));\n align-items: center;\n display: flex;\n justify-content: center;\n}\n"]}
|
@@ -50,7 +50,7 @@
|
|
50
50
|
<% end %>
|
51
51
|
<% end %>
|
52
52
|
<% end %>
|
53
|
-
<%= render Primer::Alpha::Dialog::Body.new(
|
53
|
+
<%= render Primer::Alpha::Dialog::Body.new(p: 0) do %>
|
54
54
|
<focus-group direction="vertical" mnemonics retain>
|
55
55
|
<live-region data-target="select-panel.liveRegion"></live-region>
|
56
56
|
<%= render(Primer::BaseComponent.new(
|
@@ -97,7 +97,7 @@
|
|
97
97
|
<%= render(@list) %>
|
98
98
|
<% end %>
|
99
99
|
</div>
|
100
|
-
<div data-target="select-panel.noResults" class="
|
100
|
+
<div data-target="select-panel.noResults" class="SelectPanel-emptyPanel" hidden>
|
101
101
|
<h2 class="v-align-middle m-3 f5"><%= @no_results_label %></h2>
|
102
102
|
</div>
|
103
103
|
<% end %>
|
@@ -1,7 +1,10 @@
|
|
1
1
|
.SelectPanel-loadingPanel {
|
2
|
-
min-height: min(var(--overlay-height) - 10rem, 100vh - 2rem);
|
2
|
+
min-height: min(calc(var(--overlay-height) - 10rem), calc(100vh - 2rem));
|
3
3
|
}
|
4
4
|
|
5
5
|
.SelectPanel-emptyPanel {
|
6
|
-
min-height: min(var(--overlay-height) -
|
6
|
+
min-height: min(calc(var(--overlay-height) - 23rem), calc(100vh - 2rem));
|
7
|
+
align-items: center;
|
8
|
+
display: flex;
|
9
|
+
justify-content: center;
|
7
10
|
}
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Primer
|
4
|
+
# `Primer::CurrentAttributes` can be used by controllers to set request-bound data
|
5
|
+
# that can be propagated to components.
|
6
|
+
class CurrentAttributes < ActiveSupport::CurrentAttributes
|
7
|
+
attribute :nonce
|
8
|
+
end
|
9
|
+
end
|
@@ -8,7 +8,7 @@ module Primer
|
|
8
8
|
module ActsAsComponent
|
9
9
|
# :nodoc:
|
10
10
|
module InstanceMethods
|
11
|
-
delegate :render, :content_tag, :output_buffer, to: :@view_context
|
11
|
+
delegate :render, :content_tag, :output_buffer, :capture, to: :@view_context
|
12
12
|
|
13
13
|
def render_in(view_context, &block)
|
14
14
|
@view_context = view_context
|
@@ -16,17 +16,6 @@ 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
|
-
|
30
19
|
# :nocov:
|
31
20
|
def perform_render(&_block)
|
32
21
|
raise NotImplementedError, "subclasses must implement ##{__method__}."
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%= render(Primer::Alpha::Dialog.new(id: "my-dialog", title: title, subtitle: subtitle, visually_hide_title: false)) do |dialog| %>
|
2
|
+
<% dialog.with_header(show_divider: show_divider, close_label: close_label) %>
|
3
|
+
<% dialog.with_show_button_content(button_text) %>
|
4
|
+
<% dialog.with_body_content("Hello World") %>
|
5
|
+
<% end %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<%= render(Primer::Alpha::Dialog.new(id: "my-dialog", title: title, subtitle: subtitle, visually_hide_title: false)) do |dialog| %>
|
2
|
+
<% dialog.with_header(show_divider: show_divider, close_scheme: :none) %>
|
3
|
+
<% dialog.with_show_button_content(button_text) %>
|
4
|
+
<% dialog.with_body_content("Hello World") %>
|
5
|
+
<% dialog.with_footer do %>
|
6
|
+
<%= render(Primer::Beta::Button.new(data: { "close-dialog-id": "my-dialog" })) { "Close" } %>
|
7
|
+
<% end %>
|
8
|
+
<% end %>
|
@@ -302,6 +302,38 @@ module Primer
|
|
302
302
|
def with_header_filter
|
303
303
|
render_with_template(locals: {})
|
304
304
|
end
|
305
|
+
|
306
|
+
# @label With custom label for close button of header
|
307
|
+
#
|
308
|
+
# @param title [String] text
|
309
|
+
# @param subtitle [String] text
|
310
|
+
# @param button_text [String] text
|
311
|
+
# @param show_divider [Boolean] toggle
|
312
|
+
# @param close_label [String] text
|
313
|
+
def with_header_close_button_label(title: "Test Dialog", subtitle: nil, button_text: "Show Dialog", show_divider: true, close_label: "Close me!")
|
314
|
+
render_with_template(locals: {
|
315
|
+
title: title,
|
316
|
+
subtitle: subtitle,
|
317
|
+
button_text: button_text,
|
318
|
+
show_divider: show_divider,
|
319
|
+
close_label: close_label
|
320
|
+
})
|
321
|
+
end
|
322
|
+
|
323
|
+
# @label Without custom label for close button of header
|
324
|
+
#
|
325
|
+
# @param title [String] text
|
326
|
+
# @param subtitle [String] text
|
327
|
+
# @param button_text [String] text
|
328
|
+
# @param show_divider [Boolean] toggle
|
329
|
+
def without_header_close_button_label(title: "Test Dialog", subtitle: nil, button_text: "Show Dialog", show_divider: true)
|
330
|
+
render_with_template(locals: {
|
331
|
+
title: title,
|
332
|
+
subtitle: subtitle,
|
333
|
+
button_text: button_text,
|
334
|
+
show_divider: show_divider
|
335
|
+
})
|
336
|
+
end
|
305
337
|
end
|
306
338
|
end
|
307
339
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: primer_view_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.43.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Open Source
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionview
|
@@ -551,6 +551,7 @@ files:
|
|
551
551
|
- app/lib/primer/css/layout.css.json
|
552
552
|
- app/lib/primer/css/utilities.css
|
553
553
|
- app/lib/primer/css/utilities.css.json
|
554
|
+
- app/lib/primer/current_attributes.rb
|
554
555
|
- app/lib/primer/experimental_render_helpers.rb
|
555
556
|
- app/lib/primer/experimental_slot_helpers.rb
|
556
557
|
- app/lib/primer/fetch_or_fallback_helper.rb
|
@@ -782,8 +783,10 @@ files:
|
|
782
783
|
- previews/primer/alpha/dialog_preview/with_footer.html.erb
|
783
784
|
- previews/primer/alpha/dialog_preview/with_form.html.erb
|
784
785
|
- previews/primer/alpha/dialog_preview/with_header.html.erb
|
786
|
+
- previews/primer/alpha/dialog_preview/with_header_close_button_label.html.erb
|
785
787
|
- previews/primer/alpha/dialog_preview/with_header_filter.html.erb
|
786
788
|
- previews/primer/alpha/dialog_preview/with_text_input.html.erb
|
789
|
+
- previews/primer/alpha/dialog_preview/without_header_close_button_label.html.erb
|
787
790
|
- previews/primer/alpha/dropdown_preview.rb
|
788
791
|
- previews/primer/alpha/form_control_preview.rb
|
789
792
|
- previews/primer/alpha/form_control_preview/playground.html.erb
|