openproject-primer_view_components 0.44.3 → 0.46.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/app/assets/javascripts/app/components/primer/alpha/x_banner.d.ts +5 -0
- data/app/assets/javascripts/app/components/primer/open_project/sub_header_element.d.ts +5 -1
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- 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/banner.rb +6 -0
- data/app/components/primer/alpha/overlay.css +1 -1
- data/app/components/primer/alpha/overlay.css.json +1 -0
- data/app/components/primer/alpha/overlay.css.map +1 -1
- data/app/components/primer/alpha/overlay.pcss +4 -0
- data/app/components/primer/alpha/select_panel_element.js +6 -4
- data/app/components/primer/alpha/select_panel_element.ts +6 -5
- data/app/components/primer/alpha/x_banner.d.ts +5 -0
- data/app/components/primer/alpha/x_banner.js +4 -3
- data/app/components/primer/alpha/x_banner.ts +11 -3
- data/app/components/primer/beta/button.css +1 -1
- data/app/components/primer/beta/button.css.map +1 -1
- data/app/components/primer/beta/button.pcss +1 -1
- data/app/components/primer/beta/spinner.html.erb +8 -6
- data/app/components/primer/beta/spinner.rb +3 -0
- data/app/components/primer/open_project/sub_header.css +1 -1
- data/app/components/primer/open_project/sub_header.css.json +3 -1
- data/app/components/primer/open_project/sub_header.css.map +1 -1
- data/app/components/primer/open_project/sub_header.pcss +12 -0
- data/app/components/primer/open_project/sub_header.rb +19 -2
- data/app/components/primer/open_project/sub_header_element.d.ts +5 -1
- data/app/components/primer/open_project/sub_header_element.js +32 -0
- data/app/components/primer/open_project/sub_header_element.ts +39 -1
- data/app/lib/primer/attributes_helper.rb +10 -0
- data/lib/primer/forms/primer_text_field.js +0 -3
- data/lib/primer/forms/primer_text_field.ts +0 -3
- data/lib/primer/view_components/linters/base_linter.rb +4 -2
- data/lib/primer/view_components/linters/blankslate_component_migration_counter.rb +1 -1
- data/lib/primer/view_components/linters/select_menu_migration_counter.rb +14 -0
- data/lib/primer/view_components/version.rb +2 -2
- data/previews/primer/alpha/select_panel_preview/eventually_local_fetch.html.erb +2 -1
- data/previews/primer/alpha/select_panel_preview.rb +3 -2
- data/previews/primer/open_project/sub_header_preview.rb +15 -2
- data/static/classes.json +3 -0
- data/static/info_arch.json +1 -1
- metadata +3 -2
@@ -42,13 +42,15 @@ module ERBLint
|
|
42
42
|
|
43
43
|
tags.each do |tag|
|
44
44
|
next if tag.closing?
|
45
|
-
next if self.class::TAGS&.none?(tag.name)
|
45
|
+
next if self.class::TAGS.present? && self.class::TAGS&.none?(tag.name)
|
46
46
|
|
47
47
|
classes = tag.attributes["class"]&.value&.split(" ") || []
|
48
48
|
tag_tree[tag][:offense] = false
|
49
49
|
|
50
50
|
next if (classes & self.class::DISALLOWED_CLASSES).any?
|
51
|
-
next unless self.class::CLASSES.blank? ||
|
51
|
+
next unless self.class::CLASSES.blank? || classes.any? do |klass|
|
52
|
+
self.class::CLASSES.any? { |matcher| matcher === klass } # rubocop:disable Style/CaseEquality
|
53
|
+
end
|
52
54
|
|
53
55
|
args = map_arguments(tag, tag_tree[tag])
|
54
56
|
correction = correction(args)
|
@@ -6,7 +6,7 @@ module ERBLint
|
|
6
6
|
module Linters
|
7
7
|
# Counts the number of times a HTML Blankslate is used instead of the component.
|
8
8
|
class BlankslateComponentMigrationCounter < BaseLinter
|
9
|
-
MESSAGE = "We are migrating Blankslate to use [Primer::Beta::Blankslate](https://primer.style/
|
9
|
+
MESSAGE = "We are migrating Blankslate to use [Primer::Beta::Blankslate](https://primer.style/components/blankslate/rails/beta), please try to use that instead of raw HTML."
|
10
10
|
CLASSES = %w[blankslate].freeze
|
11
11
|
TAGS = %w[div].freeze
|
12
12
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "base_linter"
|
4
|
+
|
5
|
+
module ERBLint
|
6
|
+
module Linters
|
7
|
+
# Counts the number of times a HTML SelectMenu is used instead of the SelectPanel component.
|
8
|
+
class SelectMenuMigrationCounter < BaseLinter
|
9
|
+
MESSAGE = "Please use the [Primer::Alpha::SelectPanel](https://primer.style/components/selectpanel/rails/alpha) component instead of SelectMenu."
|
10
|
+
CLASSES = ["SelectMenu", /\ASelectMenu-.*/].freeze
|
11
|
+
TAGS = [].freeze
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -5,7 +5,8 @@
|
|
5
5
|
src: select_panel_items_path,
|
6
6
|
select_variant: :multiple,
|
7
7
|
fetch_strategy: :eventually_local,
|
8
|
-
open_on_load: open_on_load
|
8
|
+
open_on_load: open_on_load,
|
9
|
+
show_filter: show_filter,
|
9
10
|
)) do |panel| %>
|
10
11
|
<% panel.with_show_button { "Sci-fi equipment" } %>
|
11
12
|
<% panel.with_footer(show_divider: true) do %>
|
@@ -77,8 +77,9 @@ module Primer
|
|
77
77
|
#
|
78
78
|
# @snapshot interactive
|
79
79
|
# @param open_on_load toggle
|
80
|
-
|
81
|
-
|
80
|
+
# @param show_filter toggle
|
81
|
+
def eventually_local_fetch(open_on_load: false, show_filter: true)
|
82
|
+
render_with_template(locals: { open_on_load: open_on_load, show_filter: show_filter })
|
82
83
|
end
|
83
84
|
|
84
85
|
# @label Remote fetch
|
@@ -11,10 +11,23 @@ module Primer
|
|
11
11
|
# @param show_filter_input toggle
|
12
12
|
# @param show_filter_button toggle
|
13
13
|
# @param show_action_button toggle
|
14
|
+
# @param show_clear_button toggle
|
14
15
|
# @param text text
|
15
|
-
|
16
|
+
# @param value text
|
17
|
+
def playground(
|
18
|
+
show_filter_input: true,
|
19
|
+
show_clear_button: true,
|
20
|
+
show_filter_button: true,
|
21
|
+
show_action_button: true,
|
22
|
+
text: nil,
|
23
|
+
value: nil
|
24
|
+
)
|
16
25
|
render(Primer::OpenProject::SubHeader.new) do |component|
|
17
|
-
component.with_filter_input(
|
26
|
+
component.with_filter_input(
|
27
|
+
name: "filter",
|
28
|
+
label: "Filter",
|
29
|
+
show_clear_button: show_clear_button,
|
30
|
+
value: value) if show_filter_input
|
18
31
|
component.with_filter_button do |button|
|
19
32
|
button.with_trailing_visual_counter(count: "15")
|
20
33
|
"Filter"
|
data/static/classes.json
CHANGED
data/static/info_arch.json
CHANGED
@@ -2425,7 +2425,7 @@
|
|
2425
2425
|
},
|
2426
2426
|
{
|
2427
2427
|
"fully_qualified_name": "Primer::Alpha::Banner",
|
2428
|
-
"description": "Use `Banner` to highlight important information
|
2428
|
+
"description": "Use `Banner` to highlight important information.\n\n### Events\n\n|Name |Type |Bubbles |Cancelable |\n|:---------|:-------------------|:-------|:----------|\n|`dismiss` |`CustomEvent<void>` |No |No |",
|
2429
2429
|
"accessibility_docs": "### Improve discoverability with a heading and landmark\nBanners are made visually prominent with icons and colors to immediately draw attention.\n\nTo ensure the Banner is also easily discoverable for assistive technology users, consider:\n1. Providing a heading inside of the Banner that describes the purpose of the Banner.\n2. Designating the Banner as a `region` landmark. This can be achieved by rendering the Banner as a `section` with an `aria-labelledby` pointing to the heading.\n\n### Communicating feedback\nWhen a Banner is used to communicate feedback, a live region or focus management technique should be in place to ensure that assistive technology users are aware of the feedback, especially when the Banner is shown client-side. Visit the [Banner's Accessibility section](https://primer.style/components/banner#accessibility), or defer to the accessibility team.\n\n#### Approach 1: Announcing a Banner\nA live region announcement can be used to communicate non-critical feedback, such as a success message.\n\nTo successfully trigger a live region announcement for a Banner that is un-`hidden` or dynamically injected onto the page, **do not** set the live region attribute/role on the Banner itself. Instead, it's important to rely on a live region that is already guaranteed to be on the page. Learn more about specific techniques at: [Staff only: Challenges with live regions](https://github.com/github/accessibility/blob/main/docs/coaching-recommendations/toast-flash-banner/accessible-banner-prototype.md#challenges-with-dynamically-inserted-live-region).\n\n#### Approach 2: Focusing a Banner\nFocusing the Banner can be appropriate for critical feedback scenarios, such as a [form validation error summary](https://primer.style/ui-patterns/forms/overview#interactive-summary-of-errors) where the Banner contains actions to help unblock the user.\n\nTo properly focus a Banner, add a `tabindex=\"-1\"` place focus with JavaScript (using the [`focus()` API](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus)).",
|
2430
2430
|
"is_form_component": false,
|
2431
2431
|
"is_published": true,
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openproject-primer_view_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.46.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitHub Open Source
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-09-
|
12
|
+
date: 2024-09-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionview
|
@@ -750,6 +750,7 @@ files:
|
|
750
750
|
- lib/primer/view_components/linters/migrate_deprecated_flash_arguments.rb
|
751
751
|
- lib/primer/view_components/linters/migrations/iconbutton_component.rb
|
752
752
|
- lib/primer/view_components/linters/migrations/truncate_component.rb
|
753
|
+
- lib/primer/view_components/linters/select_menu_migration_counter.rb
|
753
754
|
- lib/primer/view_components/linters/severity_schema.rb
|
754
755
|
- lib/primer/view_components/linters/subhead_component_migration_counter.rb
|
755
756
|
- lib/primer/view_components/linters/super_in_component_templates.rb
|