openproject-primer_view_components 0.70.5 → 0.72.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 +20 -0
- data/app/assets/javascripts/components/primer/alpha/segmented_control.d.ts +2 -2
- data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view.d.ts +11 -1
- data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.d.ts +5 -1
- data/app/assets/javascripts/components/primer/open_project/filterable_tree_view.d.ts +29 -0
- data/app/assets/javascripts/components/primer/primer.d.ts +5 -4
- 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/{open_project → alpha}/file_tree_view/directory_node.rb +1 -1
- data/app/components/primer/{open_project → alpha}/file_tree_view/file_node.rb +1 -1
- data/app/components/primer/{open_project → alpha}/file_tree_view.rb +1 -1
- data/app/components/primer/alpha/segmented_control.d.ts +2 -2
- data/app/components/primer/alpha/segmented_control.js +12 -0
- data/app/components/primer/alpha/segmented_control.ts +16 -1
- data/app/components/primer/{open_project → alpha}/skeleton_box.css.json +1 -1
- data/app/components/primer/{open_project → alpha}/skeleton_box.css.map +1 -1
- data/app/components/primer/{open_project → alpha}/skeleton_box.pcss +1 -1
- data/app/components/primer/{open_project → alpha}/skeleton_box.rb +3 -1
- data/app/components/primer/alpha/stack.css +1 -1
- data/app/components/primer/alpha/stack.css.json +5 -1
- data/app/components/primer/alpha/stack.css.map +1 -1
- data/app/components/primer/alpha/stack.pcss +13 -0
- data/app/components/primer/alpha/stack.rb +2 -1
- data/app/components/primer/{open_project → alpha}/tree_view/icon.rb +2 -2
- data/app/components/primer/{open_project → alpha}/tree_view/icon_pair.rb +4 -4
- data/app/components/primer/{open_project → alpha}/tree_view/leading_action.rb +2 -2
- data/app/components/primer/{open_project → alpha}/tree_view/leaf_node.rb +6 -6
- data/app/components/primer/{open_project → alpha}/tree_view/loading_failure_message.rb +2 -2
- data/app/components/primer/{open_project → alpha}/tree_view/node.rb +30 -14
- data/app/components/primer/{open_project → alpha}/tree_view/skeleton_loader.html.erb +3 -3
- data/app/components/primer/{open_project → alpha}/tree_view/skeleton_loader.rb +4 -4
- data/app/components/primer/{open_project → alpha}/tree_view/spinner_loader.html.erb +2 -2
- data/app/components/primer/{open_project → alpha}/tree_view/spinner_loader.rb +4 -4
- data/app/components/primer/{open_project → alpha}/tree_view/sub_tree.html.erb +1 -1
- data/app/components/primer/{open_project → alpha}/tree_view/sub_tree.rb +10 -10
- data/app/components/primer/{open_project → alpha}/tree_view/sub_tree_container.rb +2 -2
- data/app/components/primer/{open_project → alpha}/tree_view/sub_tree_node.rb +28 -18
- data/app/components/primer/{open_project → alpha}/tree_view/tree_view.d.ts +11 -1
- data/app/components/primer/{open_project → alpha}/tree_view/tree_view.js +120 -20
- data/app/components/primer/{open_project → alpha}/tree_view/tree_view.ts +137 -18
- data/app/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.js +0 -1
- data/app/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.ts +0 -1
- data/app/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.d.ts +5 -1
- data/app/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.js +27 -4
- data/app/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.ts +36 -5
- data/app/components/primer/{open_project → alpha}/tree_view/visual.rb +2 -2
- data/app/components/primer/alpha/tree_view.css +1 -0
- data/app/components/primer/{open_project → alpha}/tree_view.css.json +8 -1
- data/app/components/primer/alpha/tree_view.css.map +1 -0
- data/app/components/primer/alpha/tree_view.html.erb +12 -0
- data/app/components/primer/{open_project → alpha}/tree_view.pcss +39 -0
- data/app/components/primer/{open_project → alpha}/tree_view.rb +20 -12
- data/app/components/primer/beta/breadcrumbs.css +1 -1
- data/app/components/primer/beta/breadcrumbs.css.json +0 -1
- data/app/components/primer/beta/breadcrumbs.css.map +1 -1
- data/app/components/primer/beta/breadcrumbs.pcss +2 -8
- data/app/components/primer/beta/progress_bar.css +1 -1
- data/app/components/primer/beta/progress_bar.css.map +1 -1
- data/app/components/primer/beta/progress_bar.pcss +3 -2
- data/app/components/primer/beta/relative_time.rb +3 -0
- data/app/components/primer/open_project/filterable_tree_view/sub_tree.rb +39 -0
- data/app/components/primer/open_project/filterable_tree_view.d.ts +29 -0
- data/app/components/primer/open_project/filterable_tree_view.html.erb +28 -0
- data/app/components/primer/open_project/filterable_tree_view.js +409 -0
- data/app/components/primer/open_project/filterable_tree_view.rb +254 -0
- data/app/components/primer/open_project/filterable_tree_view.ts +492 -0
- data/app/components/primer/primer.d.ts +5 -4
- data/app/components/primer/primer.js +5 -4
- data/app/components/primer/primer.pcss +2 -2
- data/app/components/primer/primer.ts +5 -4
- data/app/controllers/primer/view_components/tree_view_items_controller.rb +1 -1
- data/app/forms/check_box_with_nested_form.rb +10 -10
- data/app/forms/radio_button_with_nested_form.rb +16 -16
- data/app/lib/primer/experimental_slot_helpers.rb +2 -2
- data/app/lib/primer/forms/base_component.rb +1 -1
- data/app/lib/primer/forms/dsl/text_field_input.rb +2 -0
- data/app/views/primer/view_components/tree_view_items/async_alpha.html_fragment.erb +1 -1
- data/app/views/primer/view_components/tree_view_items/index.html_fragment.erb +1 -1
- data/config/locales/en.yml +20 -0
- data/lib/primer/view_components/version.rb +2 -2
- data/previews/primer/{open_project → alpha}/file_tree_view_preview/default.html.erb +1 -1
- data/previews/primer/{open_project → alpha}/file_tree_view_preview/playground.html.erb +1 -1
- data/previews/primer/{open_project → alpha}/file_tree_view_preview.rb +1 -1
- data/previews/primer/{open_project → alpha}/skeleton_box_preview.rb +3 -3
- data/previews/primer/{open_project → alpha}/tree_view_preview/async_alpha.html.erb +1 -1
- data/previews/primer/{open_project → alpha}/tree_view_preview/buttons.html.erb +5 -5
- data/previews/primer/{open_project → alpha}/tree_view_preview/default.html.erb +5 -5
- data/previews/primer/{open_project → alpha}/tree_view_preview/empty.html.erb +1 -1
- data/previews/primer/alpha/tree_view_preview/form_input.html.erb +14 -0
- data/previews/primer/{open_project → alpha}/tree_view_preview/leaf_node_playground.html.erb +2 -2
- data/previews/primer/{open_project → alpha}/tree_view_preview/links.html.erb +5 -5
- data/previews/primer/{open_project → alpha}/tree_view_preview/loading_failure.html.erb +1 -1
- data/previews/primer/{open_project → alpha}/tree_view_preview/loading_skeleton.html.erb +1 -1
- data/previews/primer/{open_project → alpha}/tree_view_preview/loading_spinner.html.erb +1 -1
- data/previews/primer/{open_project → alpha}/tree_view_preview/playground.html.erb +1 -1
- data/previews/primer/{open_project → alpha}/tree_view_preview.rb +34 -15
- data/previews/primer/open_project/filterable_tree_view_preview/_custom_select_js.html.erb +62 -0
- data/previews/primer/open_project/filterable_tree_view_preview/custom_checkbox_text.html.erb +26 -0
- data/previews/primer/open_project/filterable_tree_view_preview/custom_no_results_text.html.erb +28 -0
- data/previews/primer/open_project/filterable_tree_view_preview/custom_segmented_control.html.erb +31 -0
- data/previews/primer/open_project/filterable_tree_view_preview/default.html.erb +26 -0
- data/previews/primer/open_project/filterable_tree_view_preview/form_input.html.erb +32 -0
- data/previews/primer/open_project/filterable_tree_view_preview/playground.html.erb +26 -0
- data/previews/primer/open_project/filterable_tree_view_preview/stress_test.html.erb +28 -0
- data/previews/primer/open_project/filterable_tree_view_preview.rb +125 -0
- data/static/arguments.json +1685 -1581
- data/static/audited_at.json +19 -17
- data/static/classes.json +5 -5
- data/static/constants.json +137 -98
- data/static/info_arch.json +6396 -6146
- data/static/previews.json +120 -21
- data/static/statuses.json +19 -17
- metadata +102 -84
- data/app/components/primer/open_project/tree_view.css +0 -1
- data/app/components/primer/open_project/tree_view.css.map +0 -1
- data/app/components/primer/open_project/tree_view.html.erb +0 -7
- /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_icon_pair_element.d.ts +0 -0
- /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.d.ts +0 -0
- /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_roving_tab_index.d.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/file_tree_view/directory_node.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/file_tree_view/file_node.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/skeleton_box.css +0 -0
- /data/app/components/primer/{open_project → alpha}/skeleton_box.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/icon.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/icon_pair.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/leading_action.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/leaf_node.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/loading_failure_message.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/node.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/sub_tree_container.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/sub_tree_node.html.erb +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_icon_pair_element.d.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_icon_pair_element.js +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_icon_pair_element.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.d.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_roving_tab_index.d.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_roving_tab_index.js +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_roving_tab_index.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/visual.html.erb +0 -0
@@ -143,6 +143,10 @@
|
|
143
143
|
text-decoration-color: var(--control-fgColor-rest);
|
144
144
|
}
|
145
145
|
|
146
|
+
& :has(.TreeViewItemContent[aria-disabled="true"]) {
|
147
|
+
cursor: not-allowed;
|
148
|
+
}
|
149
|
+
|
146
150
|
& .TreeViewItemContent {
|
147
151
|
display: flex;
|
148
152
|
height: 100%;
|
@@ -208,6 +212,41 @@
|
|
208
212
|
}
|
209
213
|
}
|
210
214
|
}
|
215
|
+
|
216
|
+
&[aria-disabled='true'] {
|
217
|
+
pointer-events: none;
|
218
|
+
|
219
|
+
& .TreeViewItemContentText {
|
220
|
+
color: var(--control-fgColor-disabled);
|
221
|
+
}
|
222
|
+
|
223
|
+
& .TreeViewItemVisual {
|
224
|
+
fill: var(--control-fgColor-disabled);
|
225
|
+
|
226
|
+
/* stylelint-disable-next-line max-nesting-depth, selector-max-compound-selectors, selector-max-specificity */
|
227
|
+
& svg {
|
228
|
+
fill: var(--control-fgColor-disabled);
|
229
|
+
}
|
230
|
+
}
|
231
|
+
|
232
|
+
& .FormControl-checkbox {
|
233
|
+
/* stylelint-disable-next-line max-nesting-depth */
|
234
|
+
@media (hover: hover) {
|
235
|
+
/* stylelint-disable-next-line max-nesting-depth, selector-max-specificity */
|
236
|
+
&:hover {
|
237
|
+
cursor: not-allowed;
|
238
|
+
}
|
239
|
+
}
|
240
|
+
}
|
241
|
+
|
242
|
+
@media (hover: hover) {
|
243
|
+
/* stylelint-disable-next-line max-nesting-depth */
|
244
|
+
&:hover {
|
245
|
+
cursor: not-allowed;
|
246
|
+
background-color: transparent;
|
247
|
+
}
|
248
|
+
}
|
249
|
+
}
|
211
250
|
}
|
212
251
|
|
213
252
|
& .TreeViewItemContentText {
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# following describes how the components fit together at a high level, using React-like syntax. Each element
|
7
7
|
# in the diagram corresponds to one of three types of object:
|
8
8
|
#
|
9
|
-
# 1. Elements with TitleCase tags represent components in the Primer::
|
9
|
+
# 1. Elements with TitleCase tags represent components in the Primer::Alpha::TreeView namespace, eg. <LeafNode>.
|
10
10
|
# 2. Elements with dasherized-tags are web components/custom elements, eg. <tree-view>.
|
11
11
|
# 3. Elements with lowercase tags are regular 'ol HTML elements, eg. <ul>.
|
12
12
|
#
|
@@ -143,7 +143,7 @@
|
|
143
143
|
# </SubTree>
|
144
144
|
|
145
145
|
module Primer
|
146
|
-
module
|
146
|
+
module Alpha
|
147
147
|
# TreeView is a hierarchical list of items that may have a parent-child relationship where children
|
148
148
|
# can be toggled into view by expanding or collapsing their parent item.
|
149
149
|
#
|
@@ -169,7 +169,7 @@ module Primer
|
|
169
169
|
# Providing items statically is done using the `leaf` and `sub_tree` slots:
|
170
170
|
#
|
171
171
|
# ```erb
|
172
|
-
# <%= render(Primer::
|
172
|
+
# <%= render(Primer::Alpha::TreeView.new) do |tree| %>
|
173
173
|
# <% tree.with_sub_tree(label: "Directory") do |sub_tree| %>
|
174
174
|
# <% sub_tree.with_leaf(label: "File 1")
|
175
175
|
# <% end %>
|
@@ -186,7 +186,7 @@ module Primer
|
|
186
186
|
# the URL to fetch nodes from:
|
187
187
|
#
|
188
188
|
# ```erb
|
189
|
-
# <%= render(Primer::
|
189
|
+
# <%= render(Primer::Alpha::TreeView.new) do |tree| %>
|
190
190
|
# <% tree.with_sub_tree(label: "Directory") do |sub_tree| %>
|
191
191
|
# <% sub_tree.with_loading_spinner(src: primer_view_components.tree_view_items_path) %>
|
192
192
|
# <% end %>
|
@@ -212,10 +212,10 @@ module Primer
|
|
212
212
|
# Mime::Type.register("text/fragment+html", :html_fragment)
|
213
213
|
# ```
|
214
214
|
#
|
215
|
-
# Render a `Primer::
|
215
|
+
# Render a `Primer::Alpha::TreeView::SubTree` in the action's template, tree_view_items/show.html_fragment.erb:
|
216
216
|
#
|
217
217
|
# ```erb
|
218
|
-
# <%= render(Primer::
|
218
|
+
# <%= render(Primer::Alpha::TreeView::SubTree.new(path: @path, node_variant: :div)) do |tree| %>
|
219
219
|
# <% tree.with_leaf(...) %>
|
220
220
|
# <% tree.with_sub_tree(...) do |sub_tree| %>
|
221
221
|
# ...
|
@@ -355,22 +355,24 @@ module Primer
|
|
355
355
|
# both the `treeViewNodeChecked` and `treeViewBeforeNodeChecked` events provide an array of `TreeViewNodeInfo`
|
356
356
|
# objects, which contain entries for every modified node in the tree.
|
357
357
|
class TreeView < Primer::Component
|
358
|
+
status :alpha
|
359
|
+
|
358
360
|
DEFAULT_NODE_VARIANT = :div
|
359
361
|
NODE_VARIANT_OPTIONS = [DEFAULT_NODE_VARIANT, :anchor, :button].freeze
|
360
362
|
|
361
363
|
# @!parse
|
362
364
|
# # Adds an leaf node to the tree. Leaf nodes are nodes that do not have children.
|
363
365
|
# #
|
364
|
-
# # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::
|
365
|
-
# # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::
|
366
|
+
# # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::Alpha::TreeView::LeafNode) %>
|
367
|
+
# # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::Alpha::TreeView::LeafNode) %>, or whatever class is passed as the `component_klass` argument.
|
366
368
|
# def with_leaf(**system_arguments, &block)
|
367
369
|
# end
|
368
370
|
|
369
371
|
# @!parse
|
370
372
|
# # Adds a sub-tree node to the tree. Sub-trees are nodes that have children, which can be both leaf nodes and other sub-trees.
|
371
373
|
# #
|
372
|
-
# # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::
|
373
|
-
# # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::
|
374
|
+
# # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::Alpha::TreeView::SubTreeNode) %>
|
375
|
+
# # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::Alpha::TreeView::SubTreeNode) %>, or whatever class is passed as the `component_klass` argument.
|
374
376
|
# def with_sub_tree(**system_arguments, &block)
|
375
377
|
# end
|
376
378
|
|
@@ -404,10 +406,12 @@ module Primer
|
|
404
406
|
|
405
407
|
attr_reader :node_variant
|
406
408
|
|
407
|
-
# @param node_variant [Symbol] The variant to use for this node. <%= one_of(Primer::
|
409
|
+
# @param node_variant [Symbol] The variant to use for this node. <%= one_of(Primer::Alpha::TreeView::NODE_VARIANT_OPTIONS) %>
|
410
|
+
# @param form_arguments [Hash] These arguments allow the selections made within a `TreeView` to be submitted to the server as part of a Rails form. Pass the `builder:` and `name:` options to this hash. `builder:` should be an instance of `ActionView::Helpers::FormBuilder`, which are created by the standard Rails `#form_with` and `#form_for` helpers. The `name:` option is the desired name of the field that will be included in the params sent to the server on form submission.
|
408
411
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>.
|
409
|
-
def initialize(node_variant: DEFAULT_NODE_VARIANT, **system_arguments)
|
412
|
+
def initialize(node_variant: DEFAULT_NODE_VARIANT, form_arguments: {}, **system_arguments)
|
410
413
|
@system_arguments = deny_tag_argument(**system_arguments)
|
414
|
+
@form_arguments = form_arguments
|
411
415
|
|
412
416
|
@node_variant = fetch_or_fallback(NODE_VARIANT_OPTIONS, node_variant, DEFAULT_NODE_VARIANT)
|
413
417
|
|
@@ -419,6 +423,10 @@ module Primer
|
|
419
423
|
)
|
420
424
|
end
|
421
425
|
|
426
|
+
def acts_as_form_input?
|
427
|
+
@form_arguments[:builder] && @form_arguments[:name]
|
428
|
+
end
|
429
|
+
|
422
430
|
private
|
423
431
|
|
424
432
|
def before_render
|
@@ -1 +1 @@
|
|
1
|
-
.breadcrumb-item{display:inline-block;list-style:none;
|
1
|
+
.breadcrumb-item{display:inline-block;list-style:none;max-width:100%}.breadcrumb-item:after{border-right:.1em solid var(--borderColor-neutral-emphasis);content:"";display:inline-block;height:.8em;margin:0 .15em 0 .5em;transform:rotate(15deg) translateY(.0625em)}:is(.breadcrumb-item-selected,.breadcrumb-item[aria-current]:not([aria-current=false])):after{content:none}.breadcrumb-item-selected a{color:var(--fgColor-default);cursor:default!important;-webkit-text-decoration:none!important;text-decoration:none!important}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["breadcrumbs.pcss"],"names":[],"mappings":"AAAA,iBACE,oBAAqB,
|
1
|
+
{"version":3,"sources":["breadcrumbs.pcss"],"names":[],"mappings":"AAAA,iBACE,oBAAqB,CACrB,eAAgB,CAChB,cAYF,CAVE,uBAOE,2DAA6D,CAF7D,UAAW,CAJX,oBAAqB,CACrB,WAAa,CAEb,qBAAwB,CAIxB,2CACF,CAKA,8FACE,YACF,CAIF,4BACE,4BAA6B,CAE7B,wBAA0B,CAD1B,sCAAgC,CAAhC,8BAEF","file":"breadcrumbs.css","sourcesContent":[".breadcrumb-item {\n display: inline-block;\n list-style: none;\n max-width: 100%;\n\n &::after {\n display: inline-block;\n height: 0.8em;\n /* stylelint-disable-next-line primer/spacing */\n margin: 0 0.15em 0 0.5em;\n content: '';\n /* stylelint-disable-next-line primer/borders */\n border-right: 0.1em solid var(--borderColor-neutral-emphasis);\n transform: rotate(15deg) translateY(0.0625em);\n }\n}\n\n.breadcrumb-item-selected,\n.breadcrumb-item[aria-current]:not([aria-current='false']) {\n &::after {\n content: none;\n }\n}\n\n/* stylelint-disable-next-line selector-max-type */\n.breadcrumb-item-selected a {\n color: var(--fgColor-default);\n text-decoration: none !important;\n cursor: default !important;\n}"]}
|
@@ -1,7 +1,5 @@
|
|
1
1
|
.breadcrumb-item {
|
2
2
|
display: inline-block;
|
3
|
-
/* stylelint-disable-next-line primer/spacing */
|
4
|
-
margin-left: -0.35em;
|
5
3
|
list-style: none;
|
6
4
|
max-width: 100%;
|
7
5
|
|
@@ -9,16 +7,12 @@
|
|
9
7
|
display: inline-block;
|
10
8
|
height: 0.8em;
|
11
9
|
/* stylelint-disable-next-line primer/spacing */
|
12
|
-
margin: 0 0.5em;
|
10
|
+
margin: 0 0.15em 0 0.5em;
|
13
11
|
content: '';
|
14
12
|
/* stylelint-disable-next-line primer/borders */
|
15
13
|
border-right: 0.1em solid var(--borderColor-neutral-emphasis);
|
16
14
|
transform: rotate(15deg) translateY(0.0625em);
|
17
15
|
}
|
18
|
-
|
19
|
-
&:first-child {
|
20
|
-
margin-left: 0;
|
21
|
-
}
|
22
16
|
}
|
23
17
|
|
24
18
|
.breadcrumb-item-selected,
|
@@ -33,4 +27,4 @@
|
|
33
27
|
color: var(--fgColor-default);
|
34
28
|
text-decoration: none !important;
|
35
29
|
cursor: default !important;
|
36
|
-
}
|
30
|
+
}
|
@@ -1 +1 @@
|
|
1
|
-
.Progress{background-color:var(--
|
1
|
+
.Progress{background-color:var(--progressBar-track-bgColor);border-radius:var(--borderRadius-medium);display:flex;height:8px;outline:solid 1px var(--progressBar-track-borderColor);outline-offset:-1px;overflow:hidden}.Progress--large{height:10px}.Progress--small{height:5px}.Progress-item{outline:2px solid #0000}.Progress-item+.Progress-item{margin-left:var(--base-size-2)}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["progress_bar.pcss"],"names":[],"mappings":"AAEA,UAIE,
|
1
|
+
{"version":3,"sources":["progress_bar.pcss"],"names":[],"mappings":"AAEA,UAIE,iDAAkD,CAClD,wCAAyC,CAJzC,YAAa,CACb,UAAW,CAIX,sDAAuD,CACvD,mBAAoB,CAJpB,eAKF,CAEA,iBACE,WACF,CAEA,iBACE,UACF,CAEA,eACE,uBACF,CAEA,8BACE,8BACF","file":"progress_bar.css","sourcesContent":["/* Progress */\n\n.Progress {\n display: flex;\n height: 8px;\n overflow: hidden;\n background-color: var(--progressBar-track-bgColor);\n border-radius: var(--borderRadius-medium);\n outline: solid 1px var(--progressBar-track-borderColor);\n outline-offset: -1px;\n}\n\n.Progress--large {\n height: 10px;\n}\n\n.Progress--small {\n height: 5px;\n}\n\n.Progress-item {\n outline: 2px solid transparent; /* Support Firefox custom colors */\n}\n\n.Progress-item + .Progress-item {\n margin-left: var(--base-size-2);\n}\n"]}
|
@@ -4,9 +4,10 @@
|
|
4
4
|
display: flex;
|
5
5
|
height: 8px;
|
6
6
|
overflow: hidden;
|
7
|
-
background-color: var(--
|
7
|
+
background-color: var(--progressBar-track-bgColor);
|
8
8
|
border-radius: var(--borderRadius-medium);
|
9
|
-
outline: 1px
|
9
|
+
outline: solid 1px var(--progressBar-track-borderColor);
|
10
|
+
outline-offset: -1px;
|
10
11
|
}
|
11
12
|
|
12
13
|
.Progress--large {
|
@@ -102,6 +102,7 @@ module Primer
|
|
102
102
|
# @param lang [String] The language to use.
|
103
103
|
# @param title [String] Provide a custom title to the element.
|
104
104
|
# @param no_title [Boolean] Removes the `title` attribute provided on the element by default.
|
105
|
+
# @param aria_hidden [Boolean] Set if the element is hidden or not.
|
105
106
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
106
107
|
def initialize(
|
107
108
|
datetime:,
|
@@ -122,6 +123,7 @@ module Primer
|
|
122
123
|
lang: nil,
|
123
124
|
title: nil,
|
124
125
|
no_title: false,
|
126
|
+
aria_hidden: nil,
|
125
127
|
**system_arguments
|
126
128
|
)
|
127
129
|
@system_arguments = deny_tag_argument(**system_arguments)
|
@@ -143,6 +145,7 @@ module Primer
|
|
143
145
|
@system_arguments[:lang] = lang if lang.present?
|
144
146
|
@system_arguments[:format] = fetch_or_fallback(FORMAT_OPTIONS, format, FORMAT_DEFAULT) if format.present?
|
145
147
|
@system_arguments[:"format-style"] = format_style if format_style.present?
|
148
|
+
@system_arguments[:"aria-hidden"] = aria_hidden if aria_hidden.present?
|
146
149
|
if datetime.present? && datetime.respond_to?(:iso8601)
|
147
150
|
@datetime = datetime
|
148
151
|
@system_arguments[:datetime] = datetime.iso8601
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Primer
|
4
|
+
module OpenProject
|
5
|
+
class FilterableTreeView
|
6
|
+
# A `FilterableTreeView` sub-tree node.
|
7
|
+
#
|
8
|
+
# This component is part of the <%= link_to_component(Primer::OpenProject::FilterableTreeView) %> component and
|
9
|
+
# should not be used directly.
|
10
|
+
class SubTree < Primer::Alpha::TreeView::SubTree
|
11
|
+
def with_sub_tree(**system_arguments, &block)
|
12
|
+
super(
|
13
|
+
sub_tree_component_klass: self.class,
|
14
|
+
**system_arguments,
|
15
|
+
select_variant: :multiple,
|
16
|
+
select_strategy: :self,
|
17
|
+
&block
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
def with_leaf(**system_arguments, &block)
|
22
|
+
super(
|
23
|
+
**system_arguments,
|
24
|
+
select_variant: :multiple,
|
25
|
+
&block
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
29
|
+
def with_loading_spinner(**system_arguments)
|
30
|
+
raise ArgumentError, "FilteredTreeView does not support asynchronous loading"
|
31
|
+
end
|
32
|
+
|
33
|
+
def with_loading_skeleton(**system_arguments)
|
34
|
+
raise ArgumentError, "FilteredTreeView does not support asynchronous loading"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { SegmentedControlElement } from '../alpha/segmented_control';
|
2
|
+
import { TreeViewElement } from '../alpha/tree_view/tree_view';
|
3
|
+
import { TreeViewSubTreeNodeElement } from '../alpha/tree_view/tree_view_sub_tree_node_element';
|
4
|
+
export type FilterFn = (node: HTMLElement, query: string, filterMode?: string) => Range[] | null;
|
5
|
+
export declare class FilterableTreeViewElement extends HTMLElement {
|
6
|
+
#private;
|
7
|
+
filterInput: HTMLInputElement;
|
8
|
+
filterModeControlList: HTMLElement;
|
9
|
+
treeViewList: HTMLElement;
|
10
|
+
noResultsMessage: HTMLElement;
|
11
|
+
includeSubItemsCheckBox: HTMLInputElement;
|
12
|
+
connectedCallback(): void;
|
13
|
+
disconnectedCallback(): void;
|
14
|
+
handleEvent(event: Event): void;
|
15
|
+
get filterModeControl(): SegmentedControlElement | null;
|
16
|
+
get treeView(): TreeViewElement | null;
|
17
|
+
set filterFn(newFn: FilterFn);
|
18
|
+
get filterFn(): FilterFn;
|
19
|
+
defaultFilterFn(node: HTMLElement, query: string, filterMode?: string): Range[] | null;
|
20
|
+
get filterMode(): string | null;
|
21
|
+
get queryString(): string;
|
22
|
+
eachDescendantDepthFirst(node: HTMLElement, level: number, ancestry: TreeViewSubTreeNodeElement[]): Generator<[NodeListOf<HTMLElement>, TreeViewSubTreeNodeElement[]]>;
|
23
|
+
eachShallowestCheckedSubTree(root: TreeViewSubTreeNodeElement): Generator<TreeViewSubTreeNodeElement>;
|
24
|
+
}
|
25
|
+
declare global {
|
26
|
+
interface Window {
|
27
|
+
FilterableTreeViewElement: typeof FilterableTreeViewElement;
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<%= render(Primer::BaseComponent.new(**@system_arguments)) do %>
|
2
|
+
<%= render(Primer::Alpha::Stack.new) do %>
|
3
|
+
<%= render(Primer::Alpha::Stack.new(wrap: :reverse, direction: :horizontal, align: :center)) do %>
|
4
|
+
<%= render(Primer::Alpha::Stack.new(wrap: :wrap, direction: :horizontal, align: :center)) do %>
|
5
|
+
<%= render(Primer::Alpha::StackItem.new) do %>
|
6
|
+
<%= render(@filter_mode_control) %>
|
7
|
+
<% end %>
|
8
|
+
<%= render(Primer::Alpha::StackItem.new) do %>
|
9
|
+
<%= render(@include_sub_items_check_box) do |input| %>
|
10
|
+
<% input.merge_input_arguments!(form: "") %>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
14
|
+
<%= render(Primer::Alpha::StackItem.new(grow: true)) do %>
|
15
|
+
<%= render(@filter_input) do |input| %>
|
16
|
+
<%# exclude from form submissions %>
|
17
|
+
<% input.merge_input_arguments!(form: "") %>
|
18
|
+
<% end %>
|
19
|
+
<% end %>
|
20
|
+
<% end %>
|
21
|
+
<%= render(Primer::BaseComponent.new(tag: :div, hidden: true, data: { target: "filterable-tree-view.noResultsMessage" })) do %>
|
22
|
+
<%= render(Primer::Alpha::TreeView.new) do |tree| %>
|
23
|
+
<% tree.with_leaf(**@no_results_node_arguments) %>
|
24
|
+
<% end %>
|
25
|
+
<% end %>
|
26
|
+
<%= render(@tree_view) %>
|
27
|
+
<% end %>
|
28
|
+
<% end %>
|