openproject-primer_view_components 0.86.2 → 0.87.0
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 +16 -0
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- data/app/components/primer/alpha/action_menu/action_menu_element.js +14 -5
- data/app/components/primer/alpha/action_menu/action_menu_element.ts +14 -4
- data/app/components/primer/alpha/select_panel_element.js +11 -1
- data/app/components/primer/alpha/select_panel_element.ts +11 -2
- data/app/components/primer/open_project/filterable_tree_view.rb +6 -5
- data/app/components/primer/open_project/sub_header/{quick_filter.rb → quick_action_component.rb} +7 -1
- data/app/components/primer/open_project/sub_header.html.erb +2 -0
- data/app/components/primer/open_project/sub_header.rb +22 -8
- data/app/components/primer/open_project/sub_header_element.js +3 -2
- data/app/components/primer/open_project/sub_header_element.ts +3 -2
- data/lib/primer/view_components/version.rb +2 -2
- data/previews/primer/alpha/select_panel_preview/with_dynamic_label.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview/with_dynamic_label_and_aria_prefix.html.erb +1 -1
- data/previews/primer/alpha/select_panel_preview.rb +14 -4
- data/previews/primer/open_project/filterable_tree_view_preview/custom_no_results_text.html.erb +1 -1
- data/previews/primer/open_project/sub_header_preview/quick_filters.html.erb +8 -0
- data/static/arguments.json +2 -2
- data/static/audited_at.json +1 -1
- data/static/constants.json +3 -3
- data/static/info_arch.json +3 -3
- data/static/statuses.json +1 -1
- metadata +2 -2
|
@@ -469,6 +469,7 @@ _ActionMenuElement_handleItemActivated = function _ActionMenuElement_handleItemA
|
|
|
469
469
|
else {
|
|
470
470
|
// multi-select mode allows unchecking a checked item
|
|
471
471
|
item.setAttribute('aria-checked', `${checked}`);
|
|
472
|
+
__classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_setDynamicLabel).call(this);
|
|
472
473
|
}
|
|
473
474
|
__classPrivateFieldGet(this, _ActionMenuElement_instances, "m", _ActionMenuElement_updateInput).call(this);
|
|
474
475
|
this.dispatchEvent(new CustomEvent('itemActivated', {
|
|
@@ -498,21 +499,29 @@ _ActionMenuElement_isOpen = function _ActionMenuElement_isOpen() {
|
|
|
498
499
|
return this.popoverElement?.matches(':popover-open');
|
|
499
500
|
};
|
|
500
501
|
_ActionMenuElement_setDynamicLabel = function _ActionMenuElement_setDynamicLabel() {
|
|
501
|
-
if (this.selectVariant !== 'single')
|
|
502
|
-
return;
|
|
503
502
|
if (!this.dynamicLabel)
|
|
504
503
|
return;
|
|
505
504
|
const invokerLabel = this.invokerLabel;
|
|
506
505
|
if (!invokerLabel)
|
|
507
506
|
return;
|
|
508
507
|
__classPrivateFieldSet(this, _ActionMenuElement_originalLabel, __classPrivateFieldGet(this, _ActionMenuElement_originalLabel, "f") || (invokerLabel.textContent || ''), "f");
|
|
509
|
-
|
|
508
|
+
let itemLabel;
|
|
509
|
+
if (this.selectVariant === 'single') {
|
|
510
|
+
itemLabel = this.querySelector('[aria-checked=true] .ActionListItem-label')?.textContent?.trim();
|
|
511
|
+
}
|
|
512
|
+
else if (this.selectVariant === 'multiple') {
|
|
513
|
+
itemLabel = Array.from(this.querySelectorAll(`[aria-checked=true] .ActionListItem-label`))
|
|
514
|
+
.map(label => (label.textContent || '').trim())
|
|
515
|
+
.filter(Boolean)
|
|
516
|
+
.join(', ');
|
|
517
|
+
}
|
|
518
|
+
itemLabel || (itemLabel = __classPrivateFieldGet(this, _ActionMenuElement_originalLabel, "f"));
|
|
510
519
|
if (itemLabel && this.dynamicLabel) {
|
|
511
520
|
const prefixSpan = document.createElement('span');
|
|
512
521
|
prefixSpan.classList.add('color-fg-muted');
|
|
513
522
|
const contentSpan = document.createElement('span');
|
|
514
|
-
prefixSpan.textContent = this.dynamicLabelPrefix;
|
|
515
|
-
contentSpan.textContent = itemLabel
|
|
523
|
+
prefixSpan.textContent = this.dynamicLabelPrefix ? `${this.dynamicLabelPrefix} ` : '';
|
|
524
|
+
contentSpan.textContent = itemLabel;
|
|
516
525
|
invokerLabel.replaceChildren(prefixSpan, contentSpan);
|
|
517
526
|
}
|
|
518
527
|
else {
|
|
@@ -455,6 +455,8 @@ export class ActionMenuElement extends HTMLElement {
|
|
|
455
455
|
} else {
|
|
456
456
|
// multi-select mode allows unchecking a checked item
|
|
457
457
|
item.setAttribute('aria-checked', `${checked}`)
|
|
458
|
+
|
|
459
|
+
this.#setDynamicLabel()
|
|
458
460
|
}
|
|
459
461
|
|
|
460
462
|
this.#updateInput()
|
|
@@ -497,18 +499,26 @@ export class ActionMenuElement extends HTMLElement {
|
|
|
497
499
|
}
|
|
498
500
|
|
|
499
501
|
#setDynamicLabel() {
|
|
500
|
-
if (this.selectVariant !== 'single') return
|
|
501
502
|
if (!this.dynamicLabel) return
|
|
502
503
|
const invokerLabel = this.invokerLabel
|
|
503
504
|
if (!invokerLabel) return
|
|
504
505
|
this.#originalLabel ||= invokerLabel.textContent || ''
|
|
505
|
-
|
|
506
|
+
let itemLabel: string | undefined
|
|
507
|
+
if (this.selectVariant === 'single') {
|
|
508
|
+
itemLabel = this.querySelector('[aria-checked=true] .ActionListItem-label')?.textContent?.trim()
|
|
509
|
+
} else if (this.selectVariant === 'multiple') {
|
|
510
|
+
itemLabel = Array.from(this.querySelectorAll(`[aria-checked=true] .ActionListItem-label`))
|
|
511
|
+
.map(label => (label.textContent || '').trim())
|
|
512
|
+
.filter(Boolean)
|
|
513
|
+
.join(', ')
|
|
514
|
+
}
|
|
515
|
+
itemLabel ||= this.#originalLabel
|
|
506
516
|
if (itemLabel && this.dynamicLabel) {
|
|
507
517
|
const prefixSpan = document.createElement('span')
|
|
508
518
|
prefixSpan.classList.add('color-fg-muted')
|
|
509
519
|
const contentSpan = document.createElement('span')
|
|
510
|
-
prefixSpan.textContent = this.dynamicLabelPrefix
|
|
511
|
-
contentSpan.textContent = itemLabel
|
|
520
|
+
prefixSpan.textContent = this.dynamicLabelPrefix ? `${this.dynamicLabelPrefix} ` : ''
|
|
521
|
+
contentSpan.textContent = itemLabel
|
|
512
522
|
invokerLabel.replaceChildren(prefixSpan, contentSpan)
|
|
513
523
|
} else {
|
|
514
524
|
invokerLabel.textContent = this.#originalLabel
|
|
@@ -866,6 +866,7 @@ _SelectPanelElement_handleItemActivated = function _SelectPanelElement_handleIte
|
|
|
866
866
|
else {
|
|
867
867
|
__classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_removeSelectedItem).call(this, item);
|
|
868
868
|
}
|
|
869
|
+
__classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_setDynamicLabel).call(this);
|
|
869
870
|
}
|
|
870
871
|
__classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_updateInput).call(this);
|
|
871
872
|
__classPrivateFieldGet(this, _SelectPanelElement_instances, "m", _SelectPanelElement_updateTabIndices).call(this);
|
|
@@ -885,7 +886,16 @@ _SelectPanelElement_setDynamicLabel = function _SelectPanelElement_setDynamicLab
|
|
|
885
886
|
if (!invokerLabel)
|
|
886
887
|
return;
|
|
887
888
|
__classPrivateFieldSet(this, _SelectPanelElement_originalLabel, __classPrivateFieldGet(this, _SelectPanelElement_originalLabel, "f") || (invokerLabel.textContent || ''), "f");
|
|
888
|
-
|
|
889
|
+
let itemLabel;
|
|
890
|
+
if (this.selectVariant === 'single') {
|
|
891
|
+
itemLabel = this.querySelector(`[${this.ariaSelectionType}=true] .ActionListItem-label`)?.textContent;
|
|
892
|
+
}
|
|
893
|
+
else if (this.selectVariant === 'multiple') {
|
|
894
|
+
itemLabel = Array.from(this.querySelectorAll(`[${this.ariaSelectionType}=true] .ActionListItem-label`))
|
|
895
|
+
.map(label => label.textContent?.trim() ?? '')
|
|
896
|
+
.join(', ');
|
|
897
|
+
}
|
|
898
|
+
itemLabel || (itemLabel = __classPrivateFieldGet(this, _SelectPanelElement_originalLabel, "f"));
|
|
889
899
|
if (itemLabel) {
|
|
890
900
|
const prefixSpan = document.createElement('span');
|
|
891
901
|
prefixSpan.classList.add('color-fg-muted');
|
|
@@ -916,6 +916,8 @@ export class SelectPanelElement extends HTMLElement {
|
|
|
916
916
|
} else {
|
|
917
917
|
this.#removeSelectedItem(item)
|
|
918
918
|
}
|
|
919
|
+
|
|
920
|
+
this.#setDynamicLabel()
|
|
919
921
|
}
|
|
920
922
|
|
|
921
923
|
this.#updateInput()
|
|
@@ -952,8 +954,15 @@ export class SelectPanelElement extends HTMLElement {
|
|
|
952
954
|
const invokerLabel = this.invokerLabel
|
|
953
955
|
if (!invokerLabel) return
|
|
954
956
|
this.#originalLabel ||= invokerLabel.textContent || ''
|
|
955
|
-
|
|
956
|
-
|
|
957
|
+
let itemLabel: string | undefined
|
|
958
|
+
if (this.selectVariant === 'single') {
|
|
959
|
+
itemLabel = this.querySelector(`[${this.ariaSelectionType}=true] .ActionListItem-label`)?.textContent
|
|
960
|
+
} else if (this.selectVariant === 'multiple') {
|
|
961
|
+
itemLabel = Array.from(this.querySelectorAll(`[${this.ariaSelectionType}=true] .ActionListItem-label`))
|
|
962
|
+
.map(label => label.textContent?.trim() ?? '')
|
|
963
|
+
.join(', ')
|
|
964
|
+
}
|
|
965
|
+
itemLabel ||= this.#originalLabel
|
|
957
966
|
if (itemLabel) {
|
|
958
967
|
const prefixSpan = document.createElement('span')
|
|
959
968
|
prefixSpan.classList.add('color-fg-muted')
|
|
@@ -199,10 +199,10 @@ module Primer
|
|
|
199
199
|
src: nil,
|
|
200
200
|
tree_view_arguments: {},
|
|
201
201
|
form_arguments: {},
|
|
202
|
-
filter_input_arguments:
|
|
203
|
-
filter_mode_control_arguments:
|
|
204
|
-
include_sub_items_check_box_arguments:
|
|
205
|
-
no_results_node_arguments:
|
|
202
|
+
filter_input_arguments: {},
|
|
203
|
+
filter_mode_control_arguments: {},
|
|
204
|
+
include_sub_items_check_box_arguments: {},
|
|
205
|
+
no_results_node_arguments: {},
|
|
206
206
|
**system_arguments
|
|
207
207
|
)
|
|
208
208
|
@tree_view_arguments = tree_view_arguments.dup
|
|
@@ -218,6 +218,7 @@ module Primer
|
|
|
218
218
|
**tree_view_arguments
|
|
219
219
|
)
|
|
220
220
|
|
|
221
|
+
filter_input_arguments = filter_input_arguments.reverse_merge(DEFAULT_FILTER_INPUT_ARGUMENTS)
|
|
221
222
|
filter_input_arguments[:data] = merge_data(
|
|
222
223
|
filter_input_arguments, {
|
|
223
224
|
data: { target: "filterable-tree-view.filterInput" }
|
|
@@ -250,7 +251,7 @@ module Primer
|
|
|
250
251
|
@system_arguments[:tag] = :"filterable-tree-view"
|
|
251
252
|
@system_arguments[:src] = src if src
|
|
252
253
|
|
|
253
|
-
@no_results_node_arguments = no_results_node_arguments
|
|
254
|
+
@no_results_node_arguments = no_results_node_arguments.reverse_merge(DEFAULT_NO_RESULTS_NODE_ARGUMENTS)
|
|
254
255
|
end
|
|
255
256
|
|
|
256
257
|
def with_default_filter_modes
|
data/app/components/primer/open_project/sub_header/{quick_filter.rb → quick_action_component.rb}
RENAMED
|
@@ -5,11 +5,17 @@ module Primer
|
|
|
5
5
|
# Thin wrapper for quick filter slots that defers BaseComponent construction to render time,
|
|
6
6
|
# allowing system arguments (e.g. display) to be mutated in before_render.
|
|
7
7
|
# Do not use standalone
|
|
8
|
-
class SubHeader::
|
|
8
|
+
class SubHeader::QuickActionComponent < Primer::Component
|
|
9
9
|
status :open_project
|
|
10
10
|
|
|
11
11
|
def initialize(**system_arguments)
|
|
12
12
|
@system_arguments = system_arguments
|
|
13
|
+
system_arguments[:tag] = :div
|
|
14
|
+
system_arguments[:mr] ||= 2
|
|
15
|
+
system_arguments[:classes] = class_names(
|
|
16
|
+
"SubHeader-hiddenOnExpand",
|
|
17
|
+
system_arguments[:classes]
|
|
18
|
+
)
|
|
13
19
|
end
|
|
14
20
|
|
|
15
21
|
def merge_system_arguments!(**other_arguments)
|
|
@@ -101,7 +101,7 @@ module Primer
|
|
|
101
101
|
system_arguments[:data][:action] += " input:sub-header#toggleFilterInputClearButton focus:sub-header#toggleFilterInputClearButton"
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
-
trigger_display = @collapsed_search ? :inline_flex : [:inline_flex, :none]
|
|
104
|
+
trigger_display = @collapsed_search ? :inline_flex : [:inline_flex, :inline_flex, :none]
|
|
105
105
|
|
|
106
106
|
@collapsed_filter_trigger = Primer::Beta::IconButton.new(icon: system_arguments[:leading_visual][:icon],
|
|
107
107
|
display: trigger_display,
|
|
@@ -170,15 +170,27 @@ module Primer
|
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
#
|
|
174
|
-
|
|
173
|
+
# A slot for a generic sorting component. Will be rendered next to the search input
|
|
174
|
+
renders_one :quick_sort, lambda { |**kwargs|
|
|
175
|
+
deny_tag_argument(**kwargs)
|
|
176
|
+
|
|
177
|
+
QuickActionComponent.new(**kwargs)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
# A slot for a generic sorting component. Will be rendered next to the sorting button
|
|
181
|
+
renders_one :quick_group, lambda { |**kwargs|
|
|
182
|
+
deny_tag_argument(**kwargs)
|
|
183
|
+
|
|
184
|
+
QuickActionComponent.new(**kwargs)
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
# Quick filters shown in the left pane next to the search bar (0–5 items total across all types).
|
|
188
|
+
# Hidden on smaller screens when more than one `quick_filter` is provided. Requires `filter_button` when using more than one `quick_filter`.
|
|
175
189
|
# Supports ActionMenus, Buttons, IconButtons, SelectPanels, and SegmentedControls inside the block.
|
|
176
190
|
renders_many :quick_filters, lambda { |**kwargs|
|
|
177
191
|
deny_tag_argument(**kwargs)
|
|
178
|
-
kwargs[:tag] = :div
|
|
179
|
-
kwargs[:mr] ||= 2
|
|
180
192
|
|
|
181
|
-
|
|
193
|
+
QuickActionComponent.new(**kwargs)
|
|
182
194
|
}
|
|
183
195
|
|
|
184
196
|
renders_one :segmented_control, lambda { |**system_arguments, &block|
|
|
@@ -234,12 +246,14 @@ module Primer
|
|
|
234
246
|
end
|
|
235
247
|
|
|
236
248
|
def before_render
|
|
249
|
+
all_quick_actions = [quick_sort, quick_group].compact + quick_filters
|
|
250
|
+
|
|
237
251
|
if quick_filters.size > 1 && filter_button.nil?
|
|
238
252
|
raise ArgumentError, "You must provide a filter_button when using quick_filters."
|
|
239
253
|
end
|
|
240
254
|
|
|
241
255
|
if quick_filters.size > 5
|
|
242
|
-
raise ArgumentError, "SubHeader supports a maximum of 5 quick_filters, got #{
|
|
256
|
+
raise ArgumentError, "SubHeader supports a maximum of 5 quick_filters, got #{all_quick_actions.size}."
|
|
243
257
|
end
|
|
244
258
|
|
|
245
259
|
if quick_filters.size > 1
|
|
@@ -250,7 +264,7 @@ module Primer
|
|
|
250
264
|
|
|
251
265
|
@system_arguments[:classes] = class_names(
|
|
252
266
|
@system_arguments[:classes],
|
|
253
|
-
"SubHeader--emptyLeftPane" => !segmented_control? && !filter_button && !filter_input &&
|
|
267
|
+
"SubHeader--emptyLeftPane" => !segmented_control? && !filter_button && !filter_input && all_quick_actions.empty?
|
|
254
268
|
)
|
|
255
269
|
end
|
|
256
270
|
|
|
@@ -24,9 +24,10 @@ let SubHeaderElement = class SubHeaderElement extends HTMLElement {
|
|
|
24
24
|
}
|
|
25
25
|
expandFilterInput() {
|
|
26
26
|
for (const item of this.shownItemsOnExpandedFilter) {
|
|
27
|
-
item.classList.remove('d-none');
|
|
27
|
+
item.classList.remove('d-none', 'd-sm-none');
|
|
28
28
|
}
|
|
29
29
|
for (const item of this.filterExpandButton) {
|
|
30
|
+
item.classList.remove('d-inline-flex', 'd-sm-inline-flex');
|
|
30
31
|
item.classList.add('d-none');
|
|
31
32
|
}
|
|
32
33
|
this.classList.add('SubHeader--expandedSearch');
|
|
@@ -37,7 +38,7 @@ let SubHeaderElement = class SubHeaderElement extends HTMLElement {
|
|
|
37
38
|
item.classList.remove('d-none');
|
|
38
39
|
}
|
|
39
40
|
for (const item of this.shownItemsOnExpandedFilter) {
|
|
40
|
-
item.classList.add('d-none');
|
|
41
|
+
item.classList.add('d-none', 'd-sm-none');
|
|
41
42
|
}
|
|
42
43
|
this.classList.remove('SubHeader--expandedSearch');
|
|
43
44
|
}
|
|
@@ -29,9 +29,10 @@ class SubHeaderElement extends HTMLElement {
|
|
|
29
29
|
|
|
30
30
|
expandFilterInput() {
|
|
31
31
|
for (const item of this.shownItemsOnExpandedFilter) {
|
|
32
|
-
item.classList.remove('d-none')
|
|
32
|
+
item.classList.remove('d-none', 'd-sm-none')
|
|
33
33
|
}
|
|
34
34
|
for (const item of this.filterExpandButton) {
|
|
35
|
+
item.classList.remove('d-inline-flex', 'd-sm-inline-flex')
|
|
35
36
|
item.classList.add('d-none')
|
|
36
37
|
}
|
|
37
38
|
this.classList.add('SubHeader--expandedSearch')
|
|
@@ -43,7 +44,7 @@ class SubHeaderElement extends HTMLElement {
|
|
|
43
44
|
item.classList.remove('d-none')
|
|
44
45
|
}
|
|
45
46
|
for (const item of this.shownItemsOnExpandedFilter) {
|
|
46
|
-
item.classList.add('d-none')
|
|
47
|
+
item.classList.add('d-none', 'd-sm-none')
|
|
47
48
|
}
|
|
48
49
|
this.classList.remove('SubHeader--expandedSearch')
|
|
49
50
|
}
|
|
@@ -144,15 +144,25 @@ module Primer
|
|
|
144
144
|
# @label With dynamic label
|
|
145
145
|
#
|
|
146
146
|
# @param open_on_load toggle
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
# @param select_variant [Symbol] select [single, multiple]
|
|
148
|
+
def with_dynamic_label(open_on_load: false, select_variant: :single)
|
|
149
|
+
render_with_template(locals: {
|
|
150
|
+
open_on_load: open_on_load,
|
|
151
|
+
# .to_sym workaround for https://github.com/lookbook-hq/lookbook/issues/640
|
|
152
|
+
select_variant: select_variant.to_sym
|
|
153
|
+
})
|
|
149
154
|
end
|
|
150
155
|
|
|
151
156
|
# @label With dynamic label and aria prefix
|
|
152
157
|
#
|
|
153
158
|
# @param open_on_load toggle
|
|
154
|
-
|
|
155
|
-
|
|
159
|
+
# @param select_variant [Symbol] select [single, multiple]
|
|
160
|
+
def with_dynamic_label_and_aria_prefix(open_on_load: false, select_variant: :single)
|
|
161
|
+
render_with_template(locals: {
|
|
162
|
+
open_on_load: open_on_load,
|
|
163
|
+
# .to_sym workaround for https://github.com/lookbook-hq/lookbook/issues/640
|
|
164
|
+
select_variant: select_variant.to_sym
|
|
165
|
+
})
|
|
156
166
|
end
|
|
157
167
|
|
|
158
168
|
# @!endgroup
|
data/previews/primer/open_project/filterable_tree_view_preview/custom_no_results_text.html.erb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<%= render(Primer::OpenProject::FilterableTreeView.new(
|
|
2
|
-
filter_input_arguments: {placeholder: "Search me!",
|
|
2
|
+
filter_input_arguments: {placeholder: "Search me!", visually_hide_label: true},
|
|
3
3
|
no_results_node_arguments: { label: "All wizards and witches have left the building" })) do |tree| %>
|
|
4
4
|
<% tree.with_sub_tree(label: "Students", expanded: expanded) do |hogwarts| %>
|
|
5
5
|
<% hogwarts.with_sub_tree(label: "Ravenclaw", expanded: expanded) do |ravenclaw| %>
|
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
"All filters"
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
+
component.with_quick_sort do
|
|
9
|
+
render(Primer::Beta::IconButton.new(icon: :"sort-desc", "aria-label": "Sort"))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
component.with_quick_group do
|
|
13
|
+
render(Primer::Beta::IconButton.new(icon: :rows, "aria-label": "Group"))
|
|
14
|
+
end
|
|
15
|
+
|
|
8
16
|
component.with_quick_filter do
|
|
9
17
|
render(Primer::Alpha::SegmentedControl.new("aria-label": "File view")) do |component|
|
|
10
18
|
component.with_item(label: "Monthly", selected: true)
|
data/static/arguments.json
CHANGED
|
@@ -6600,10 +6600,10 @@
|
|
|
6600
6600
|
]
|
|
6601
6601
|
},
|
|
6602
6602
|
{
|
|
6603
|
-
"component": "OpenProject::SubHeader::
|
|
6603
|
+
"component": "OpenProject::SubHeader::QuickActionComponent",
|
|
6604
6604
|
"status": "open_project",
|
|
6605
6605
|
"a11y_reviewed": false,
|
|
6606
|
-
"short_name": "
|
|
6606
|
+
"short_name": "OpenProjectSubHeaderQuickActionComponent",
|
|
6607
6607
|
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/sub_header/quick_filter.rb",
|
|
6608
6608
|
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/sub_header/quick_filter/default/",
|
|
6609
6609
|
"parameters": []
|
data/static/audited_at.json
CHANGED
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
"Primer::OpenProject::SubHeader::Button": "",
|
|
174
174
|
"Primer::OpenProject::SubHeader::ButtonGroup": "",
|
|
175
175
|
"Primer::OpenProject::SubHeader::Menu": "",
|
|
176
|
-
"Primer::OpenProject::SubHeader::
|
|
176
|
+
"Primer::OpenProject::SubHeader::QuickActionComponent": "",
|
|
177
177
|
"Primer::OpenProject::SubHeader::SegmentedControl": "2023-02-01",
|
|
178
178
|
"Primer::OpenProject::ZenModeButton": "",
|
|
179
179
|
"Primer::Tooltip": "",
|
data/static/constants.json
CHANGED
|
@@ -1996,7 +1996,7 @@
|
|
|
1996
1996
|
"none"
|
|
1997
1997
|
],
|
|
1998
1998
|
"Menu": "Primer::OpenProject::SubHeader::Menu",
|
|
1999
|
-
"
|
|
1999
|
+
"QuickActionComponent": "Primer::OpenProject::SubHeader::QuickActionComponent",
|
|
2000
2000
|
"SHOWN_FILTER_TARGET_SELECTOR": "sub-header.shownItemsOnExpandedFilter",
|
|
2001
2001
|
"SegmentedControl": "Primer::OpenProject::SubHeader::SegmentedControl"
|
|
2002
2002
|
},
|
|
@@ -2009,8 +2009,8 @@
|
|
|
2009
2009
|
"Primer::OpenProject::SubHeader::Menu": {
|
|
2010
2010
|
"GeneratedSlotMethods": "Primer::OpenProject::SubHeader::Menu::GeneratedSlotMethods"
|
|
2011
2011
|
},
|
|
2012
|
-
"Primer::OpenProject::SubHeader::
|
|
2013
|
-
"GeneratedSlotMethods": "Primer::OpenProject::SubHeader::
|
|
2012
|
+
"Primer::OpenProject::SubHeader::QuickActionComponent": {
|
|
2013
|
+
"GeneratedSlotMethods": "Primer::OpenProject::SubHeader::QuickActionComponent::GeneratedSlotMethods"
|
|
2014
2014
|
},
|
|
2015
2015
|
"Primer::OpenProject::SubHeader::SegmentedControl": {
|
|
2016
2016
|
"GeneratedSlotMethods": "Primer::OpenProject::SubHeader::SegmentedControl::GeneratedSlotMethods"
|
data/static/info_arch.json
CHANGED
|
@@ -22108,16 +22108,16 @@
|
|
|
22108
22108
|
"subcomponents": []
|
|
22109
22109
|
},
|
|
22110
22110
|
{
|
|
22111
|
-
"fully_qualified_name": "Primer::OpenProject::SubHeader::
|
|
22111
|
+
"fully_qualified_name": "Primer::OpenProject::SubHeader::QuickActionComponent",
|
|
22112
22112
|
"description": "Thin wrapper for quick filter slots that defers BaseComponent construction to render time,\nallowing system arguments (e.g. display) to be mutated in before_render.\nDo not use standalone",
|
|
22113
22113
|
"accessibility_docs": null,
|
|
22114
22114
|
"is_form_component": false,
|
|
22115
22115
|
"is_published": true,
|
|
22116
22116
|
"requires_js": false,
|
|
22117
|
-
"component": "OpenProject::SubHeader::
|
|
22117
|
+
"component": "OpenProject::SubHeader::QuickActionComponent",
|
|
22118
22118
|
"status": "open_project",
|
|
22119
22119
|
"a11y_reviewed": false,
|
|
22120
|
-
"short_name": "
|
|
22120
|
+
"short_name": "OpenProjectSubHeaderQuickActionComponent",
|
|
22121
22121
|
"source": "https://github.com/primer/view_components/tree/main/app/components/primer/open_project/sub_header/quick_filter.rb",
|
|
22122
22122
|
"lookbook": "https://primer.style/view-components/lookbook/inspect/primer/open_project/sub_header/quick_filter/default/",
|
|
22123
22123
|
"parameters": [],
|
data/static/statuses.json
CHANGED
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
"Primer::OpenProject::SubHeader::Button": "open_project",
|
|
174
174
|
"Primer::OpenProject::SubHeader::ButtonGroup": "open_project",
|
|
175
175
|
"Primer::OpenProject::SubHeader::Menu": "open_project",
|
|
176
|
-
"Primer::OpenProject::SubHeader::
|
|
176
|
+
"Primer::OpenProject::SubHeader::QuickActionComponent": "open_project",
|
|
177
177
|
"Primer::OpenProject::SubHeader::SegmentedControl": "open_project",
|
|
178
178
|
"Primer::OpenProject::ZenModeButton": "open_project",
|
|
179
179
|
"Primer::Tooltip": "deprecated",
|
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.87.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- GitHub Open Source
|
|
@@ -689,7 +689,7 @@ files:
|
|
|
689
689
|
- app/components/primer/open_project/sub_header/button.rb
|
|
690
690
|
- app/components/primer/open_project/sub_header/button_group.rb
|
|
691
691
|
- app/components/primer/open_project/sub_header/menu.rb
|
|
692
|
-
- app/components/primer/open_project/sub_header/
|
|
692
|
+
- app/components/primer/open_project/sub_header/quick_action_component.rb
|
|
693
693
|
- app/components/primer/open_project/sub_header/segmented_control.rb
|
|
694
694
|
- app/components/primer/open_project/sub_header_element.d.ts
|
|
695
695
|
- app/components/primer/open_project/sub_header_element.js
|