openproject-primer_view_components 0.71.0 → 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 +14 -0
- data/app/assets/javascripts/components/primer/open_project/filterable_tree_view.d.ts +2 -2
- data/app/assets/javascripts/components/primer/primer.d.ts +4 -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/{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/{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 +17 -17
- 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 +15 -15
- 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/visual.rb +2 -2
- data/app/components/primer/{open_project → alpha}/tree_view.css +1 -1
- data/app/components/primer/{open_project → alpha}/tree_view.css.json +1 -3
- data/app/components/primer/alpha/tree_view.css.map +1 -0
- data/app/components/primer/{open_project → alpha}/tree_view.html.erb +1 -0
- data/app/components/primer/{open_project → alpha}/tree_view.pcss +6 -15
- data/app/components/primer/{open_project → alpha}/tree_view.rb +14 -11
- 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 +1 -1
- data/app/components/primer/open_project/filterable_tree_view.d.ts +2 -2
- data/app/components/primer/open_project/filterable_tree_view.html.erb +1 -1
- data/app/components/primer/open_project/filterable_tree_view.js +2 -2
- data/app/components/primer/open_project/filterable_tree_view.rb +4 -4
- data/app/components/primer/open_project/filterable_tree_view.ts +2 -2
- data/app/components/primer/primer.d.ts +4 -4
- data/app/components/primer/primer.js +4 -4
- data/app/components/primer/primer.pcss +2 -2
- data/app/components/primer/primer.ts +4 -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/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/lib/primer/view_components/version.rb +1 -1
- 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 +1 -1
- data/previews/primer/{open_project → alpha}/tree_view_preview/default.html.erb +2 -2
- 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 +1 -1
- data/previews/primer/{open_project → alpha}/tree_view_preview/links.html.erb +1 -1
- 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 +17 -8
- data/previews/primer/open_project/filterable_tree_view_preview/stress_test.html.erb +28 -0
- data/static/arguments.json +1560 -1542
- data/static/audited_at.json +17 -17
- data/static/classes.json +5 -5
- data/static/constants.json +101 -101
- data/static/info_arch.json +6203 -6170
- data/static/previews.json +34 -21
- data/static/statuses.json +17 -17
- metadata +86 -84
- data/app/components/primer/open_project/tree_view.css.map +0 -1
- /data/app/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view.d.ts +0 -0
- /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/assets/javascripts/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.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.d.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view.js +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view.ts +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/tree_view_sub_tree_node_element.d.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.js +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/tree_view_sub_tree_node_element.ts +0 -0
- /data/app/components/primer/{open_project → alpha}/tree_view/visual.html.erb +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class FileTreeView
|
6
6
|
class DirectoryNode < TreeView::SubTreeNode
|
7
7
|
def initialize(icon_arguments: nil, expanded_icon_arguments: nil, collapsed_icon_arguments: nil, **system_arguments)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["skeleton_box.pcss"],"names":[],"mappings":"AAAA,mBACE,GACE,kBACF,CAEA,GACE,eACF,CACF,CAEA,aAKE,iBAAkB,CAFlB,qCAAsC,CACtC,uCAAwC,CAHxC,aAAc,CACd,WAiBF,CAZE,8CAPF,aAUI,iBAAkB,CAClB,qBAAsB,CACtB,kCAAmC,CAJnC,
|
1
|
+
{"version":3,"sources":["skeleton_box.pcss"],"names":[],"mappings":"AAAA,mBACE,GACE,kBACF,CAEA,GACE,eACF,CACF,CAEA,aAKE,iBAAkB,CAFlB,qCAAsC,CACtC,uCAAwC,CAHxC,aAAc,CACd,WAiBF,CAZE,8CAPF,aAUI,iBAAkB,CAClB,qBAAsB,CACtB,kCAAmC,CAJnC,wDAAoE,CACpE,cAUJ,CANE,CAEA,8BAfF,aAgBI,uBAA8B,CAC9B,mBAEJ,CADE","file":"skeleton_box.css","sourcesContent":["@keyframes shimmer {\n from {\n mask-position: 200%;\n }\n\n to {\n mask-position: 0%;\n }\n}\n\n.SkeletonBox {\n display: block;\n height: 1rem;\n background-color: var(--bgColor-muted);\n border-radius: var(--borderRadius-small);\n animation: shimmer;\n\n @media (prefers-reduced-motion: no-preference) {\n mask-image: linear-gradient(75deg, #000 30%, rgb(0, 0, 0, 0.65) 80%);\n mask-size: 200%;\n animation: shimmer;\n animation-duration: 1s;\n animation-iteration-count: infinite;\n }\n\n @media (forced-colors: active) {\n outline: 1px solid transparent;\n outline-offset: -1px;\n }\n}\n"]}
|
@@ -16,7 +16,7 @@
|
|
16
16
|
animation: shimmer;
|
17
17
|
|
18
18
|
@media (prefers-reduced-motion: no-preference) {
|
19
|
-
mask-image: linear-gradient(75deg, #000 30%,
|
19
|
+
mask-image: linear-gradient(75deg, #000 30%, rgb(0, 0, 0, 0.65) 80%);
|
20
20
|
mask-size: 200%;
|
21
21
|
animation: shimmer;
|
22
22
|
animation-duration: 1s;
|
@@ -1,10 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
# A SkeletonBox provides a placeholder for non-text, non-Avatar elements (e.g., hero images)
|
6
6
|
# that are still loading. You can adjust width and height to match the content's dimensions.
|
7
7
|
class SkeletonBox < Primer::Component
|
8
|
+
status :alpha
|
9
|
+
|
8
10
|
# @param height [String] Any valid CSS height.
|
9
11
|
# @param width [String] Any valid CSS width.
|
10
12
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# An icon for a `TreeView` node.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class Icon < Primer::Component
|
11
11
|
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Beta::Octicon) %>.
|
@@ -1,24 +1,24 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# A pair of icons for a `TreeView` sub-tree that displays distinct icons when the sub-tree is
|
7
7
|
# expanded and collapsed.
|
8
8
|
#
|
9
|
-
# This component is part of the <%= link_to_component(Primer::
|
9
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
10
10
|
# not be used directly.
|
11
11
|
class IconPair < Primer::Component
|
12
12
|
# The expanded icon.
|
13
13
|
#
|
14
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
14
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::Icon) %>.
|
15
15
|
renders_one :expanded_icon, lambda { |**system_arguments|
|
16
16
|
Icon.new(**system_arguments)
|
17
17
|
}
|
18
18
|
|
19
19
|
# The collapsed icon.
|
20
20
|
#
|
21
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
21
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::Icon) %>.
|
22
22
|
renders_one :collapsed_icon, lambda { |**system_arguments|
|
23
23
|
Icon.new(**system_arguments)
|
24
24
|
}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# The leading action for `TreeView` nodes.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class LeadingAction < Primer::Component
|
11
11
|
# @param action [ViewComponent::Base] A component or other renderable to use as the action button etc.
|
@@ -1,18 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# A `TreeView` leaf node.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class LeafNode < Primer::Component
|
11
11
|
# @!parse
|
12
12
|
# # Adds a leading visual icon rendered to the left of the node's label.
|
13
13
|
# #
|
14
14
|
# # @param label [String] A label describing the visual, displayed only to screen readers.
|
15
|
-
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
15
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::Icon) %>.
|
16
16
|
# def with_leading_visual_icon(label: nil, **system_arguments, &block)
|
17
17
|
# end
|
18
18
|
|
@@ -52,7 +52,7 @@ module Primer
|
|
52
52
|
# # Adds a trailing visual icon rendered to the right of the node's label.
|
53
53
|
# #
|
54
54
|
# # @param label [String] A label describing the visual, displayed only to screen readers.
|
55
|
-
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
55
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::Icon) %>.
|
56
56
|
# def with_trailing_visual_icon(label: nil, **system_arguments, &block)
|
57
57
|
# end
|
58
58
|
|
@@ -69,7 +69,7 @@ module Primer
|
|
69
69
|
delegate :current?, :merge_system_arguments!, to: :@node
|
70
70
|
|
71
71
|
# @param label [String] The node's label, i.e. it's textual content.
|
72
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
72
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::Node) %>.
|
73
73
|
def initialize(label:, **system_arguments)
|
74
74
|
@label = label
|
75
75
|
@system_arguments = system_arguments
|
@@ -78,7 +78,7 @@ module Primer
|
|
78
78
|
data: { "node-type": "leaf" }
|
79
79
|
)
|
80
80
|
|
81
|
-
@node = Primer::
|
81
|
+
@node = Primer::Alpha::TreeView::Node.new(**@system_arguments)
|
82
82
|
end
|
83
83
|
|
84
84
|
private
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# A `TreeView` loading failure message.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class LoadingFailureMessage < Primer::Component
|
11
11
|
DEFAULT_TEXT = "Something went wrong"
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# A generic `TreeView` node.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class Node < Primer::Component
|
11
|
-
DEFAULT_NODE_VARIANT = Primer::
|
11
|
+
DEFAULT_NODE_VARIANT = Primer::Alpha::TreeView::DEFAULT_NODE_VARIANT
|
12
12
|
NODE_VARIANT_TAG_MAP = { DEFAULT_NODE_VARIANT => :div, :button => :button, :anchor => :a }.freeze
|
13
13
|
NODE_VARIANT_TAG_OPTIONS = NODE_VARIANT_TAG_MAP.keys.freeze
|
14
14
|
|
@@ -68,11 +68,11 @@ module Primer
|
|
68
68
|
]
|
69
69
|
|
70
70
|
# @param path [Array<String>] The node's "path," i.e. this node's label and the labels of all its ancestors. This node should be reachable by traversing the tree following this path.
|
71
|
-
# @param node_variant [Symbol] The node variant to use for the node's content, i.e. the `:button` or `:div`. <%= one_of(Primer::
|
71
|
+
# @param node_variant [Symbol] The node variant to use for the node's content, i.e. the `:button` or `:div`. <%= one_of(Primer::Alpha::TreeView::NODE_VARIANT_OPTIONS) %>
|
72
72
|
# @param href [String] The URL to use as the `href` attribute for this node. If set to a truthy value, the `tag:` parameter is ignored and assumed to be `:a`.
|
73
73
|
# @param current [Boolean] Whether or not this node is the current node. The current node is styled differently than regular nodes and is the first element that receives focus when tabbing to the `TreeView` component.
|
74
|
-
# @param select_variant [Symbol] Controls the type of checkbox that appears. <%= one_of(Primer::
|
75
|
-
# @param checked [Boolean | String] The checked state of the node's checkbox. <%= one_of(Primer::
|
74
|
+
# @param select_variant [Symbol] Controls the type of checkbox that appears. <%= one_of(Primer::Alpha::TreeView::Node::SELECT_VARIANT_OPTIONS) %>
|
75
|
+
# @param checked [Boolean | String] The checked state of the node's checkbox. <%= one_of(Primer::Alpha::TreeView::Node::CHECKED_STATES) %>
|
76
76
|
# @param disabled [Boolean] Whether or not the node can be activated. Passing `false` here will cause the node to appear visually disabled but it is still keyboard-focusable.
|
77
77
|
# @param value [String] If this node is checked, this value will be sent to the server on form submission.
|
78
78
|
# @param content_arguments [Hash] Arguments attached to the node's content, i.e the `<button>` or `<a>` element. <%= link_to_system_arguments_docs %>
|
@@ -114,23 +114,23 @@ module Primer
|
|
114
114
|
|
115
115
|
@content_arguments[:aria] = merge_aria(
|
116
116
|
@content_arguments, {
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
}
|
117
|
+
aria: {
|
118
|
+
level: level,
|
119
|
+
selected: false,
|
120
|
+
checked: checked,
|
121
|
+
labelledby: content_id,
|
122
|
+
disabled: disabled?
|
124
123
|
}
|
124
|
+
}
|
125
125
|
)
|
126
126
|
|
127
127
|
@content_arguments[:data] = merge_data(
|
128
128
|
@content_arguments, {
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
}
|
129
|
+
data: {
|
130
|
+
value: value,
|
131
|
+
path: @path.to_json
|
133
132
|
}
|
133
|
+
}
|
134
134
|
)
|
135
135
|
|
136
136
|
return unless current?
|
@@ -4,13 +4,13 @@
|
|
4
4
|
|
5
5
|
<%= render(Primer::BaseComponent.new(tag: :"tree-view-include-fragment", src: @src, loading: :lazy, data: { target: "tree-view-sub-tree-node.subTree tree-view-sub-tree-node.includeFragment", path: @container.path.to_json }, hidden: @container.expanded?, accept: "text/fragment+html")) do %>
|
6
6
|
<%= render(@container) do %>
|
7
|
-
<%= render(Primer::
|
7
|
+
<%= render(Primer::Alpha::TreeView::Node.new(path: [*@container.path, :loader], node_variant: :div)) do |node| %>
|
8
8
|
<% node.with_text_content do %>
|
9
9
|
<div data-target="tree-view-sub-tree-node.loadingIndicator">
|
10
10
|
<% @count.times do %>
|
11
11
|
<span class="TreeViewSkeletonItemContainerStyle TreeViewItemSkeleton">
|
12
|
-
<%= render(Primer::
|
13
|
-
<%= render(Primer::
|
12
|
+
<%= render(Primer::Alpha::SkeletonBox.new(width: "16px")) %>
|
13
|
+
<%= render(Primer::Alpha::SkeletonBox.new(width: "100%", classes: "TreeItemSkeletonTextStyles")) %>
|
14
14
|
</span>
|
15
15
|
<% end %>
|
16
16
|
</div>
|
@@ -1,16 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# Renders a loading skeleton for a `TreeView` sub-tree node.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class SkeletonLoader < Primer::Component
|
11
11
|
# The failure message that appears if loading nodes from the server fails.
|
12
12
|
#
|
13
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
13
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::LoadingFailureMessage) %>.
|
14
14
|
renders_one :loading_failure_message, lambda { |**system_arguments|
|
15
15
|
system_arguments[:retry_button_arguments] ||= {}
|
16
16
|
system_arguments[:retry_button_arguments][:data] = merge_data(
|
@@ -23,7 +23,7 @@ module Primer
|
|
23
23
|
|
24
24
|
# @param src [String] The URL to fetch nodes from.
|
25
25
|
# @param count [Integer] The number of skeleton nodes to render.
|
26
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
26
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::SubTreeContainer) %>.
|
27
27
|
def initialize(src:, count: 3, **system_arguments)
|
28
28
|
@src = src
|
29
29
|
@count = count
|
@@ -4,14 +4,14 @@
|
|
4
4
|
|
5
5
|
<%= render(Primer::BaseComponent.new(tag: :"tree-view-include-fragment", src: @src, loading: :lazy, data: { target: "tree-view-sub-tree-node.subTree tree-view-sub-tree-node.includeFragment", path: @container.path.to_json }, hidden: @container.expanded?, accept: "text/fragment+html")) do %>
|
6
6
|
<%= render(@container) do %>
|
7
|
-
<%= render(Primer::
|
7
|
+
<%= render(Primer::Alpha::TreeView::Node.new(path: [*@container.path, :loader], data: { target: "tree-view-sub-tree-node.loadingIndicator" }, node_variant: :div)) do |node| %>
|
8
8
|
<% node.with_text_content { "Loading..." } %>
|
9
9
|
<% node.with_leading_visual do %>
|
10
10
|
<%= render(Primer::Beta::Spinner.new(size: :small, wrapper_arguments: { classes: "TreeViewItemVisual" })) %>
|
11
11
|
<% end %>
|
12
12
|
<% end %>
|
13
13
|
|
14
|
-
<%= render(Primer::
|
14
|
+
<%= render(Primer::Alpha::TreeView::Node.new(path: [*@container.path, :failure_msg], data: { target: "tree-view-sub-tree-node.loadingFailureMessage" }, hidden: true, node_variant: :div)) do |node| %>
|
15
15
|
<% node.with_text_content do %>
|
16
16
|
<%= loading_failure_message %>
|
17
17
|
<% end %>
|
@@ -1,16 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# Renders a loading spinner for a `TreeView` sub-tree node.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class SpinnerLoader < Primer::Component
|
11
11
|
# The failure message that appears if loading nodes from the server fails.
|
12
12
|
#
|
13
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
13
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::LoadingFailureMessage) %>.
|
14
14
|
renders_one :loading_failure_message, lambda { |**system_arguments|
|
15
15
|
system_arguments[:retry_button_arguments] ||= {}
|
16
16
|
system_arguments[:retry_button_arguments][:data] = merge_data(
|
@@ -22,7 +22,7 @@ module Primer
|
|
22
22
|
}
|
23
23
|
|
24
24
|
# @param src [String] The URL to fetch nodes from.
|
25
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
25
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::SubTreeContainer) %>.
|
26
26
|
def initialize(src:, **system_arguments)
|
27
27
|
@src = src
|
28
28
|
@container = SubTreeContainer.new(**system_arguments, expanded: true)
|
@@ -7,7 +7,7 @@
|
|
7
7
|
|
8
8
|
<%= render(@container) do %>
|
9
9
|
<% if nodes.empty? %>
|
10
|
-
<%= render(Primer::
|
10
|
+
<%= render(Primer::Alpha::TreeView::Node.new(path: path, data: { "no-items": true }, node_variant: :div)) do |node| %>
|
11
11
|
<% node.with_text_content do %>
|
12
12
|
<%= no_items_message %>
|
13
13
|
<% end %>
|
@@ -1,26 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# A `TreeView` sub-tree.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class SubTree < Primer::Component
|
11
11
|
# @!parse
|
12
12
|
# # Adds an leaf node to the tree. Leaf nodes are nodes that do not have children.
|
13
13
|
# #
|
14
|
-
# # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::
|
15
|
-
# # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::
|
14
|
+
# # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::Alpha::TreeView::LeafNode) %>
|
15
|
+
# # @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.
|
16
16
|
# def with_leaf(**system_arguments, &block)
|
17
17
|
# end
|
18
18
|
|
19
19
|
# @!parse
|
20
20
|
# # 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.
|
21
21
|
# #
|
22
|
-
# # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::
|
23
|
-
# # @param system_arguments [Hash] These arguments are forwarded to <%= link_to_component(Primer::
|
22
|
+
# # @param component_klass [Class] The class to use instead of the default <%= link_to_component(Primer::Alpha::TreeView::SubTreeNode) %>
|
23
|
+
# # @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.
|
24
24
|
# def with_sub_tree(**system_arguments, &block)
|
25
25
|
# end
|
26
26
|
|
@@ -55,14 +55,14 @@ module Primer
|
|
55
55
|
# @!parse
|
56
56
|
# # Adds a loader to this sub-tree that displays a spinner animation while nodes are fetched from the server.
|
57
57
|
# #
|
58
|
-
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
58
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::SpinnerLoader) %>.
|
59
59
|
# def with_loading_spinner(**system_arguments, &block)
|
60
60
|
# end
|
61
61
|
|
62
62
|
# @!parse
|
63
63
|
# # Adds a loader to this sub-tree that displays a skeleton animation while nodes are fetched from the server.
|
64
64
|
# #
|
65
|
-
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
65
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::SkeletonLoader) %>.
|
66
66
|
# def with_loading_spinner(**system_arguments, &block)
|
67
67
|
# end
|
68
68
|
|
@@ -91,8 +91,8 @@ module Primer
|
|
91
91
|
|
92
92
|
attr_reader :node_variant
|
93
93
|
|
94
|
-
# @param node_variant [Symbol] The variant to use for this node. <%= one_of(Primer::
|
95
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
94
|
+
# @param node_variant [Symbol] The variant to use for this node. <%= one_of(Primer::Alpha::TreeView::NODE_VARIANT_OPTIONS) %>
|
95
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::SubTreeContainer) %>.
|
96
96
|
def initialize(node_variant:, **system_arguments)
|
97
97
|
@node_variant = node_variant
|
98
98
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
|
-
# This component is part of the <%= link_to_component(Primer::
|
6
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
7
7
|
# not be used directly.
|
8
8
|
class SubTreeContainer < Primer::Component
|
9
9
|
# The path to this node
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# A `TreeView` sub-tree node.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class SubTreeNode < Primer::Component
|
11
11
|
DEFAULT_SELECT_STRATEGY = :mixed_descendants
|
@@ -19,7 +19,7 @@ module Primer
|
|
19
19
|
# # Adds a leading visual icon rendered to the left of the node's label.
|
20
20
|
# #
|
21
21
|
# # @param label [String] A label describing the visual, displayed only to screen readers.
|
22
|
-
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
22
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::Icon) %>.
|
23
23
|
# def with_leading_visual_icon(label: nil, **system_arguments, &block)
|
24
24
|
# end
|
25
25
|
|
@@ -27,7 +27,7 @@ module Primer
|
|
27
27
|
# # Adds a pair of leading visual icon rendered to the left of the node's label.
|
28
28
|
# #
|
29
29
|
# # @param label [String] A label describing the visual, displayed only to screen readers.
|
30
|
-
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
30
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::IconPair) %>.
|
31
31
|
# def with_leading_visual_icons(label: nil, **system_arguments, &block)
|
32
32
|
# end
|
33
33
|
|
@@ -60,7 +60,7 @@ module Primer
|
|
60
60
|
visual: IconPair.new(
|
61
61
|
**system_arguments,
|
62
62
|
expanded: @sub_tree.expanded?,
|
63
|
-
|
63
|
+
)
|
64
64
|
)
|
65
65
|
}
|
66
66
|
}
|
@@ -87,7 +87,7 @@ module Primer
|
|
87
87
|
# # Adds a trailing visual icon rendered to the right of the node's label.
|
88
88
|
# #
|
89
89
|
# # @param label [String] A label describing the visual, displayed only to screen readers.
|
90
|
-
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
90
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::Icon) %>.
|
91
91
|
# def with_trailing_visual_icon(label: nil, **system_arguments, &block)
|
92
92
|
# end
|
93
93
|
|
@@ -108,11 +108,11 @@ module Primer
|
|
108
108
|
|
109
109
|
# @param label [String] The node's label, i.e. it's textual content.
|
110
110
|
# @param path [Array<String>] The node's "path," i.e. this node's label and the labels of all its ancestors. This node should be reachable by traversing the tree following this path.
|
111
|
-
# @param node_variant [Symbol] The variant to use for this node. <%= one_of(Primer::
|
112
|
-
# @param sub_tree_component_klass [Class] The class to use for the sub-tree instead of the default <%= link_to_component(Primer::
|
111
|
+
# @param node_variant [Symbol] The variant to use for this node. <%= one_of(Primer::Alpha::TreeView::NODE_VARIANT_OPTIONS) %>
|
112
|
+
# @param sub_tree_component_klass [Class] The class to use for the sub-tree instead of the default <%= link_to_component(Primer::Alpha::TreeView::SubTree) %>
|
113
113
|
# @param expanded [Boolean] Whether or not this sub-tree should be rendered expanded.
|
114
|
-
# @param select_strategy [Symbol] What should happen when this sub-tree node is checked. <%= one_of(Primer::
|
115
|
-
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::
|
114
|
+
# @param select_strategy [Symbol] What should happen when this sub-tree node is checked. <%= one_of(Primer::Alpha::TreeView::SubTreeNode::SELECT_STRATEGIES) %>
|
115
|
+
# @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::TreeView::Node) %>.
|
116
116
|
def initialize(
|
117
117
|
label:,
|
118
118
|
path:,
|
@@ -133,11 +133,11 @@ module Primer
|
|
133
133
|
|
134
134
|
@system_arguments[:data] = merge_data(
|
135
135
|
@system_arguments, {
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
}
|
136
|
+
data: {
|
137
|
+
target: "tree-view-sub-tree-node.node",
|
138
|
+
"node-type": "sub-tree"
|
140
139
|
}
|
140
|
+
}
|
141
141
|
)
|
142
142
|
|
143
143
|
sub_tree_arguments = @system_arguments.delete(:sub_tree_arguments) || {}
|
@@ -149,7 +149,7 @@ module Primer
|
|
149
149
|
**sub_tree_arguments
|
150
150
|
)
|
151
151
|
|
152
|
-
@node = Primer::
|
152
|
+
@node = Primer::Alpha::TreeView::Node.new(
|
153
153
|
**@system_arguments,
|
154
154
|
path: @sub_tree.path,
|
155
155
|
node_variant: node_variant
|
data/app/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.js
RENAMED
@@ -24,6 +24,5 @@ TreeViewIncludeFragmentElement = __decorate([
|
|
24
24
|
export { TreeViewIncludeFragmentElement };
|
25
25
|
if (!window.customElements.get('tree-view-include-fragment')) {
|
26
26
|
window.TreeViewIncludeFragmentElement = TreeViewIncludeFragmentElement;
|
27
|
-
// eslint-disable-next-line custom-elements/extends-correct-class
|
28
27
|
window.customElements.define('tree-view-include-fragment', TreeViewIncludeFragmentElement);
|
29
28
|
}
|
data/app/components/primer/{open_project → alpha}/tree_view/tree_view_include_fragment_element.ts
RENAMED
@@ -18,7 +18,6 @@ export class TreeViewIncludeFragmentElement extends IncludeFragmentElement {
|
|
18
18
|
|
19
19
|
if (!window.customElements.get('tree-view-include-fragment')) {
|
20
20
|
window.TreeViewIncludeFragmentElement = TreeViewIncludeFragmentElement
|
21
|
-
// eslint-disable-next-line custom-elements/extends-correct-class
|
22
21
|
window.customElements.define('tree-view-include-fragment', TreeViewIncludeFragmentElement)
|
23
22
|
}
|
24
23
|
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Primer
|
4
|
-
module
|
4
|
+
module Alpha
|
5
5
|
class TreeView
|
6
6
|
# A `TreeView` visual, either leading or trailing.
|
7
7
|
#
|
8
|
-
# This component is part of the <%= link_to_component(Primer::
|
8
|
+
# This component is part of the <%= link_to_component(Primer::Alpha::TreeView) %> component and should
|
9
9
|
# not be used directly.
|
10
10
|
class Visual < Primer::Component
|
11
11
|
# @param id [String] This visual's HTML ID.
|
@@ -1 +1 @@
|
|
1
|
-
.TreeViewRootUlStyles{list-style:none;margin:0;padding:0}.TreeViewRootUlStyles .TreeViewItem{outline:none}:is(.TreeViewRootUlStyles .TreeViewItem):focus-visible>div{box-shadow:var(--boxShadow-thick) var(--fgColor-accent)}@media (forced-colors:active){:is(.TreeViewRootUlStyles .TreeViewItem):focus-visible>div{outline:2px solid HighlightText;outline-offset:-2}}[data-has-leading-action]:is(.TreeViewRootUlStyles .TreeViewItem){--has-leading-action:1}.TreeViewRootUlStyles .TreeViewItemContainer{--level:1;--toggle-width:1rem;--min-item-height:2rem;border-radius:var(--borderRadius-medium);color:var(--fgColor-default);display:grid;font-size:var(--text-body-size-medium);grid-template-areas:"spacer leadingAction toggle content";grid-template-columns:var(--spacer-width) var(--leading-action-width) var(--toggle-width) 1fr;position:relative;width:100%;--leading-action-width:calc(var(--has-leading-action, 0)*1.5rem);--spacer-width:calc((var(--level) - 1)*(var(--toggle-width)/2))}:is(.TreeViewRootUlStyles .TreeViewItemContainer):hover{background-color:var(--control-transparent-bgColor-hover)}@media (forced-colors:active){:is(.TreeViewRootUlStyles .TreeViewItemContainer):hover{outline:2px solid #0000;outline-offset:-2px}}@media (pointer:coarse){.TreeViewRootUlStyles .TreeViewItemContainer{--toggle-width:1.5rem;--min-item-height:2.75rem}}:is(.TreeViewRootUlStyles .TreeViewItemContainer):has(.TreeViewFailureMessage):hover{background-color:initial;cursor:default}@media (forced-colors:active){:is(.TreeViewRootUlStyles .TreeViewItemContainer):has(.TreeViewFailureMessage):hover{outline:none}}:is(.TreeViewRootUlStyles .TreeViewItemContainer):has([role=treeitem]:focus-visible){box-shadow:var(--boxShadow-thick) var(--fgColor-accent)}.TreeViewRootUlStyles:where([data-omit-spacer=true]) .TreeViewItemContainer{grid-template-columns:0 0 0 1fr}.TreeViewRootUlStyles .TreeViewItem>.TreeViewItemContainer:has(.TreeViewItemContent[aria-current=true]){background-color:var(--control-transparent-bgColor-selected)}:is(.TreeViewRootUlStyles .TreeViewItem>.TreeViewItemContainer:has(.TreeViewItemContent[aria-current=true])):after{background-color:var(--fgColor-accent);border-radius:var(--borderRadius-medium);content:"";height:1.5rem;left:calc(var(--base-size-8)*-1);position:absolute;top:calc(50% - var(--base-size-12));width:.25rem}@media (forced-colors:active){:is(.TreeViewRootUlStyles .TreeViewItem>.TreeViewItemContainer:has(.TreeViewItemContent[aria-current=true])):after{background-color:HighlightText}}.TreeViewRootUlStyles .TreeViewItemToggle{align-items:flex-start;color:var(--fgColor-muted);cursor:pointer;display:flex;grid-area:toggle;height:100%;justify-content:center;padding-top:calc(var(--min-item-height)/2 - var(--base-size-12)/2)}.TreeViewRootUlStyles .TreeViewItemToggleHover:hover{background-color:var(--control-transparent-bgColor-hover)}.TreeViewRootUlStyles .TreeViewItemToggleEnd{border-bottom-left-radius:var(--borderRadius-medium);border-top-left-radius:var(--borderRadius-medium)}.TreeViewRootUlStyles a.TreeViewItemContent:hover,.TreeViewRootUlStyles button.TreeViewItemContent:hover{-webkit-text-decoration:underline;text-decoration:underline;text-decoration-color:var(--control-fgColor-rest)}.TreeViewRootUlStyles :has(.TreeViewItemContent[aria-disabled=true]){cursor:not-allowed}.TreeViewRootUlStyles .TreeViewItemContent{cursor:pointer;display:flex;gap:var(--stack-gap-condensed);grid-area:content;height:100%;line-height:var(--custom-line-height,var(--text-body-lineHeight-medium,1.4285));outline:none;padding:0 var(--base-size-8);padding-bottom:calc((var(--min-item-height) - var(--custom-line-height, 1.3rem))/2);padding-top:calc((var(--min-item-height) - var(--custom-line-height, 1.3rem))/2)}.TreeViewRootUlStyles .TreeViewItemContent,:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemCheckbox{background-color:initial;border:none;text-align:left;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemCheckbox{border-radius:var(--borderRadius-medium);color:var(--control-fgColor-rest);position:relative;transition:background 33.333ms linear}[aria-checked=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox{background:var(--control-checked-bgColor-rest);border-color:var(--control-checked-borderColor-rest);transition:background-color,border-color 80ms cubic-bezier(.32,0,.67,0) 0s}:is([aria-checked=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox):before{animation:checkmarkIn 80ms cubic-bezier(.65,0,.35,1) 80ms forwards;transition:visibility 0s linear 0s;visibility:visible}[aria-checked=mixed]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox{background:var(--control-checked-bgColor-rest);border-color:var(--control-checked-borderColor-rest);transition:background-color,border-color 80ms cubic-bezier(.32,0,.67,0) 0s}:is([aria-checked=mixed]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox):before{animation:checkmarkIn 80ms cubic-bezier(.65,0,.35,1) 80ms forwards;clip-path:none;mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMTAgMiI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxYTEgMSAwIDAgMSAxLTFoOGExIDEgMCAxIDEgMCAySDFhMSAxIDAgMCAxLTEtMSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+");visibility:visible}[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent){pointer-events:none}[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemContentText{color:var(--control-fgColor-disabled)}:is([aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemVisual) svg,[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemVisual{fill:var(--control-fgColor-disabled)}@media (hover:hover){:is([aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox):hover{cursor:not-allowed}[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent):hover{background-color:initial;cursor:not-allowed}}
|
1
|
+
.TreeViewRootUlStyles{list-style:none;margin:0;padding:0}.TreeViewRootUlStyles .TreeViewItem{outline:none}:is(.TreeViewRootUlStyles .TreeViewItem):focus-visible>div{box-shadow:var(--boxShadow-thick) var(--fgColor-accent)}@media (forced-colors:active){:is(.TreeViewRootUlStyles .TreeViewItem):focus-visible>div{outline:2px solid HighlightText;outline-offset:-2}}[data-has-leading-action]:is(.TreeViewRootUlStyles .TreeViewItem){--has-leading-action:1}.TreeViewRootUlStyles .TreeViewItemContainer{--level:1;--toggle-width:1rem;--min-item-height:2rem;border-radius:var(--borderRadius-medium);color:var(--fgColor-default);display:grid;font-size:var(--text-body-size-medium);grid-template-areas:"spacer leadingAction toggle content";grid-template-columns:var(--spacer-width) var(--leading-action-width) var(--toggle-width) 1fr;position:relative;width:100%;--leading-action-width:calc(var(--has-leading-action, 0)*1.5rem);--spacer-width:calc((var(--level) - 1)*(var(--toggle-width)/2))}:is(.TreeViewRootUlStyles .TreeViewItemContainer):hover{background-color:var(--control-transparent-bgColor-hover)}@media (forced-colors:active){:is(.TreeViewRootUlStyles .TreeViewItemContainer):hover{outline:2px solid #0000;outline-offset:-2px}}@media (pointer:coarse){.TreeViewRootUlStyles .TreeViewItemContainer{--toggle-width:1.5rem;--min-item-height:2.75rem}}:is(.TreeViewRootUlStyles .TreeViewItemContainer):has(.TreeViewFailureMessage):hover{background-color:initial;cursor:default}@media (forced-colors:active){:is(.TreeViewRootUlStyles .TreeViewItemContainer):has(.TreeViewFailureMessage):hover{outline:none}}:is(.TreeViewRootUlStyles .TreeViewItemContainer):has([role=treeitem]:focus-visible){box-shadow:var(--boxShadow-thick) var(--fgColor-accent)}.TreeViewRootUlStyles:where([data-omit-spacer=true]) .TreeViewItemContainer{grid-template-columns:0 0 0 1fr}.TreeViewRootUlStyles .TreeViewItem>.TreeViewItemContainer:has(.TreeViewItemContent[aria-current=true]){background-color:var(--control-transparent-bgColor-selected)}:is(.TreeViewRootUlStyles .TreeViewItem>.TreeViewItemContainer:has(.TreeViewItemContent[aria-current=true])):after{background-color:var(--fgColor-accent);border-radius:var(--borderRadius-medium);content:"";height:1.5rem;left:calc(var(--base-size-8)*-1);position:absolute;top:calc(50% - var(--base-size-12));width:.25rem}@media (forced-colors:active){:is(.TreeViewRootUlStyles .TreeViewItem>.TreeViewItemContainer:has(.TreeViewItemContent[aria-current=true])):after{background-color:HighlightText}}.TreeViewRootUlStyles .TreeViewItemToggle{align-items:flex-start;color:var(--fgColor-muted);cursor:pointer;display:flex;grid-area:toggle;height:100%;justify-content:center;padding-top:calc(var(--min-item-height)/2 - var(--base-size-12)/2)}.TreeViewRootUlStyles .TreeViewItemToggleHover:hover{background-color:var(--control-transparent-bgColor-hover)}.TreeViewRootUlStyles .TreeViewItemToggleEnd{border-bottom-left-radius:var(--borderRadius-medium);border-top-left-radius:var(--borderRadius-medium)}.TreeViewRootUlStyles a.TreeViewItemContent:hover,.TreeViewRootUlStyles button.TreeViewItemContent:hover{-webkit-text-decoration:underline;text-decoration:underline;text-decoration-color:var(--control-fgColor-rest)}.TreeViewRootUlStyles :has(.TreeViewItemContent[aria-disabled=true]){cursor:not-allowed}.TreeViewRootUlStyles .TreeViewItemContent{cursor:pointer;display:flex;gap:var(--stack-gap-condensed);grid-area:content;height:100%;line-height:var(--custom-line-height,var(--text-body-lineHeight-medium,1.4285));outline:none;padding:0 var(--base-size-8);padding-bottom:calc((var(--min-item-height) - var(--custom-line-height, 1.3rem))/2);padding-top:calc((var(--min-item-height) - var(--custom-line-height, 1.3rem))/2)}.TreeViewRootUlStyles .TreeViewItemContent,:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemCheckbox{background-color:initial;border:none;text-align:left;touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemCheckbox{border-radius:var(--borderRadius-medium);color:var(--control-fgColor-rest);position:relative;transition:background 33.333ms linear}[aria-checked=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox{background:var(--control-checked-bgColor-rest);border-color:var(--control-checked-borderColor-rest);transition:background-color,border-color 80ms cubic-bezier(.32,0,.67,0) 0s}:is([aria-checked=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox):before{animation:checkmarkIn 80ms cubic-bezier(.65,0,.35,1) 80ms forwards;transition:visibility 0s linear 0s;visibility:visible}[aria-checked=mixed]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox{background:var(--control-checked-bgColor-rest);border-color:var(--control-checked-borderColor-rest);transition:background-color,border-color 80ms cubic-bezier(.32,0,.67,0) 0s}:is([aria-checked=mixed]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox):before{animation:checkmarkIn 80ms cubic-bezier(.65,0,.35,1) 80ms forwards;clip-path:none;mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMCIgaGVpZ2h0PSIyIiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMTAgMiI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxYTEgMSAwIDAgMSAxLTFoOGExIDEgMCAxIDEgMCAySDFhMSAxIDAgMCAxLTEtMSIgY2xpcC1ydWxlPSJldmVub2RkIi8+PC9zdmc+");visibility:visible}[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent){pointer-events:none}[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemContentText{color:var(--control-fgColor-disabled)}:is([aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemVisual) svg,[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemVisual{fill:var(--control-fgColor-disabled)}@media (hover:hover){:is([aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox):hover{cursor:not-allowed}[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent):hover{background-color:initial;cursor:not-allowed}}.TreeViewRootUlStyles .TreeViewItemContentText{color:var(--control-fgColor-rest);flex:1 1 auto;width:0}.TreeViewRootUlStyles:where([data-truncate-text=true]) .TreeViewItemContentText{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.TreeViewRootUlStyles:where([data-truncate-text=false]) .TreeViewItemContentText{word-break:break-word}.TreeViewRootUlStyles .TreeViewItemVisual{align-items:center;color:var(--fgColor-muted);display:flex;height:var(--custom-line-height,1.3rem)}.TreeViewRootUlStyles .TreeViewItemLeadingAction{color:var(--fgColor-muted);display:flex;grid-area:leadingAction}:is(.TreeViewRootUlStyles .TreeViewItemLeadingAction)>button{flex-shrink:1}.TreeViewRootUlStyles .TreeViewItemLevelLine{border-color:var(--borderColor-muted);border-right:var(--borderWidth-thin) solid;height:100%;width:100%}@media (hover:hover){.TreeViewRootUlStyles .TreeViewItemLevelLine{border-color:#0000}.TreeViewRootUlStyles:focus-within .TreeViewItemLevelLine,.TreeViewRootUlStyles:hover .TreeViewItemLevelLine{border-color:var(--borderColor-muted)}}.TreeViewRootUlStyles .TreeViewVisuallyHidden{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.TreeViewSkeletonItemContainerStyle{align-items:center;column-gap:.5rem;display:flex;height:2rem}@media (pointer:coarse){.TreeViewSkeletonItemContainerStyle{height:2.75rem}}.TreeViewSkeletonItemContainerStyle:nth-of-type(5n+1){--tree-item-loading-width:67%}.TreeViewSkeletonItemContainerStyle:nth-of-type(5n+2){--tree-item-loading-width:47%}.TreeViewSkeletonItemContainerStyle:nth-of-type(5n+3){--tree-item-loading-width:73%}.TreeViewSkeletonItemContainerStyle:nth-of-type(5n+4){--tree-item-loading-width:64%}.TreeViewSkeletonItemContainerStyle:nth-of-type(5n+5){--tree-item-loading-width:50%}.TreeItemSkeletonTextStyles{width:var(--tree-item-loading-width,67%)}.TreeViewFailureMessage{align-items:center;display:grid;gap:.5rem;grid-template-columns:auto 1fr;width:100%}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"name": "
|
2
|
+
"name": "alpha/tree_view",
|
3
3
|
"selectors": [
|
4
4
|
".TreeViewRootUlStyles",
|
5
5
|
".TreeViewRootUlStyles .TreeViewItem",
|
@@ -30,8 +30,6 @@
|
|
30
30
|
"[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .TreeViewItemVisual",
|
31
31
|
":is([aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent) .FormControl-checkbox):hover",
|
32
32
|
"[aria-disabled=true]:is(.TreeViewRootUlStyles .TreeViewItemContent):hover",
|
33
|
-
":is(.TreeViewRootUlStyles .TreeViewItemContent) ::highlight(primer-filterable-tree-view-search-results)",
|
34
|
-
":is(.TreeViewRootUlStyles .TreeViewItemContent) mark",
|
35
33
|
".TreeViewRootUlStyles .TreeViewItemContentText",
|
36
34
|
".TreeViewRootUlStyles:where([data-truncate-text=true]) .TreeViewItemContentText",
|
37
35
|
".TreeViewRootUlStyles:where([data-truncate-text=false]) .TreeViewItemContentText",
|