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
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["tree_view.pcss"],"names":[],"mappings":"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","file":"tree_view.css","sourcesContent":["/* stylelint-disable selector-max-type -- Copied from primer/react */\n\n.TreeViewRootUlStyles {\n padding: 0;\n margin: 0;\n list-style: none;\n\n /*\n * WARNING: This is a performance optimization.\n *\n * We define styles for the tree items at the root level of the tree\n * to avoid recomputing the styles for each item when the tree updates.\n * We're sacrificing maintainability for performance because TreeView\n * needs to be performant enough to handle large trees (thousands of items).\n *\n * This is intended to be a temporary solution until we can improve the\n * performance of our styling patterns.\n *\n * Do NOT copy this pattern without understanding the tradeoffs.\n */\n & .TreeViewItem {\n outline: none;\n\n &:focus-visible > div {\n box-shadow: var(--boxShadow-thick) var(--fgColor-accent);\n\n @media (forced-colors: active) {\n outline: 2px solid HighlightText;\n /* stylelint-disable-next-line declaration-property-value-no-unknown -- Copied from primer/react */\n outline-offset: -2;\n }\n }\n\n &[data-has-leading-action] {\n --has-leading-action: 1;\n }\n }\n\n & .TreeViewItemContainer {\n --level: 1;\n --toggle-width: 1rem;\n --min-item-height: 2rem;\n\n position: relative;\n display: grid;\n width: 100%;\n font-size: var(--text-body-size-medium);\n color: var(--fgColor-default);\n border-radius: var(--borderRadius-medium);\n grid-template-columns: var(--spacer-width) var(--leading-action-width) var(--toggle-width) 1fr;\n grid-template-areas: 'spacer leadingAction toggle content';\n\n --leading-action-width: calc(var(--has-leading-action, 0) * 1.5rem);\n --spacer-width: calc(calc(var(--level) - 1) * (var(--toggle-width) / 2));\n\n &:hover {\n background-color: var(--control-transparent-bgColor-hover);\n\n @media (forced-colors: active) {\n outline: 2px solid transparent;\n outline-offset: -2px;\n }\n }\n\n @media (pointer: coarse) {\n --toggle-width: 1.5rem;\n --min-item-height: 2.75rem;\n }\n\n &:has(.TreeViewFailureMessage):hover {\n cursor: default;\n background-color: transparent;\n\n @media (forced-colors: active) {\n outline: none;\n }\n }\n\n &:has([role='treeitem']:focus-visible) {\n box-shadow: var(--boxShadow-thick) var(--fgColor-accent);\n }\n }\n\n &:where([data-omit-spacer='true']) .TreeViewItemContainer {\n grid-template-columns: 0 0 0 1fr;\n }\n\n /* stylelint-disable-next-line selector-max-specificity */\n & .TreeViewItem > .TreeViewItemContainer:has(.TreeViewItemContent[aria-current='true']) {\n background-color: var(--control-transparent-bgColor-selected);\n\n /* Current item indicator */\n /* stylelint-disable-next-line selector-max-specificity -- Copied from primer/react */\n &::after {\n position: absolute;\n top: calc(50% - var(--base-size-12));\n left: calc(-1 * var(--base-size-8));\n width: 0.25rem;\n height: 1.5rem;\n content: '';\n\n /*\n * Use fgColor accent for consistency across all themes. Using the \"correct\" variable,\n * --bgColor-accent-emphasis, causes vrt failures for dark high contrast mode\n */\n /* stylelint-disable-next-line primer/colors */\n background-color: var(--fgColor-accent);\n border-radius: var(--borderRadius-medium);\n\n @media (forced-colors: active) {\n background-color: HighlightText;\n }\n }\n }\n\n & .TreeViewItemToggle {\n display: flex;\n height: 100%;\n\n /* The toggle should appear vertically centered for single-line items, but remain at the top for items that wrap\n across more lines. */\n /* stylelint-disable-next-line primer/spacing */\n padding-top: calc(var(--min-item-height) / 2 - var(--base-size-12) / 2);\n color: var(--fgColor-muted);\n grid-area: toggle;\n justify-content: center;\n align-items: flex-start;\n cursor: pointer;\n }\n\n & .TreeViewItemToggleHover:hover {\n background-color: var(--control-transparent-bgColor-hover);\n }\n\n & .TreeViewItemToggleEnd {\n border-top-left-radius: var(--borderRadius-medium);\n border-bottom-left-radius: var(--borderRadius-medium);\n }\n\n /* stylelint-disable-next-line selector-no-qualifying-type */\n & a.TreeViewItemContent:hover, button.TreeViewItemContent:hover {\n text-decoration: underline;\n text-decoration-color: var(--control-fgColor-rest);\n }\n\n & :has(.TreeViewItemContent[aria-disabled=\"true\"]) {\n cursor: not-allowed;\n }\n\n & .TreeViewItemContent {\n display: flex;\n height: 100%;\n padding: 0 var(--base-size-8);\n outline: none;\n text-align: left;\n user-select: none;\n background-color: transparent;\n border: none;\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n cursor: pointer;\n\n /* The dynamic top and bottom padding to maintain the minimum item height for single line items */\n /* stylelint-disable-next-line primer/spacing */\n padding-top: calc((var(--min-item-height) - var(--custom-line-height, 1.3rem)) / 2);\n /* stylelint-disable-next-line primer/spacing */\n padding-bottom: calc((var(--min-item-height) - var(--custom-line-height, 1.3rem)) / 2);\n line-height: var(--custom-line-height, var(--text-body-lineHeight-medium, 1.4285));\n grid-area: content;\n gap: var(--stack-gap-condensed);\n\n & .TreeViewItemCheckbox {\n position: relative;\n color: var(--control-fgColor-rest);\n text-align: left;\n user-select: none;\n background-color: transparent;\n border: none;\n border-radius: var(--borderRadius-medium);\n transition: background 33.333ms linear;\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n }\n\n &[aria-checked='true'] {\n & .FormControl-checkbox {\n background: var(--control-checked-bgColor-rest);\n border-color: var(--control-checked-borderColor-rest);\n transition: background-color, border-color 80ms cubic-bezier(0.32, 0, 0.67, 0) 0ms; /* unchecked -> checked */\n\n /* stylelint-disable-next-line max-nesting-depth, selector-max-specificity -- Copied from primer/react */\n &::before {\n visibility: visible;\n transition: visibility 0s linear 0s;\n animation: checkmarkIn 80ms cubic-bezier(0.65, 0, 0.35, 1) forwards 80ms;\n }\n }\n }\n\n &[aria-checked='mixed'] {\n & .FormControl-checkbox {\n background: var(--control-checked-bgColor-rest);\n border-color: var(--control-checked-borderColor-rest);\n transition: background-color, border-color 80ms cubic-bezier(0.32, 0, 0.67, 0) 0ms; /* unchecked -> checked */\n\n /* stylelint-disable-next-line max-nesting-depth, selector-max-specificity -- Copied from primer/react */\n &::before {\n visibility: visible;\n mask-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAiIGhlaWdodD0iMiIgdmlld0JveD0iMCAwIDEwIDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMCAxQzAgMC40NDc3MTUgMC40NDc3MTUgMCAxIDBIOUM5LjU1MjI5IDAgMTAgMC40NDc3MTUgMTAgMUMxMCAxLjU1MjI4IDkuNTUyMjkgMiA5IDJIMUMwLjQ0NzcxNSAyIDAgMS41NTIyOCAwIDFaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K');\n animation: checkmarkIn 80ms cubic-bezier(0.65, 0, 0.35, 1) forwards 80ms;\n clip-path: none;\n }\n }\n }\n\n &[aria-disabled='true'] {\n pointer-events: none;\n\n & .TreeViewItemContentText {\n color: var(--control-fgColor-disabled);\n }\n\n & .TreeViewItemVisual {\n fill: var(--control-fgColor-disabled);\n\n /* stylelint-disable-next-line max-nesting-depth, selector-max-compound-selectors, selector-max-specificity */\n & svg {\n fill: var(--control-fgColor-disabled);\n }\n }\n\n & .FormControl-checkbox {\n /* stylelint-disable-next-line max-nesting-depth */\n @media (hover: hover) {\n /* stylelint-disable-next-line max-nesting-depth, selector-max-specificity */\n &:hover {\n cursor: not-allowed;\n }\n }\n }\n\n @media (hover: hover) {\n /* stylelint-disable-next-line max-nesting-depth */\n &:hover {\n cursor: not-allowed;\n background-color: transparent;\n }\n }\n }\n }\n\n & .TreeViewItemContentText {\n color: var(--control-fgColor-rest);\n flex: 1 1 auto;\n width: 0;\n }\n\n &:where([data-truncate-text='true']) .TreeViewItemContentText {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n &:where([data-truncate-text='false']) .TreeViewItemContentText {\n /* stylelint-disable-next-line declaration-property-value-keyword-no-deprecated -- Copied from primer/react */\n word-break: break-word;\n }\n\n & .TreeViewItemVisual {\n display: flex;\n\n /* The visual icons should appear vertically centered for single-line items, but remain at the top for items that wrap\n across more lines. */\n height: var(--custom-line-height, 1.3rem);\n color: var(--fgColor-muted);\n align-items: center;\n }\n\n & .TreeViewItemLeadingAction {\n display: flex;\n color: var(--fgColor-muted);\n grid-area: leadingAction;\n\n & > button {\n flex-shrink: 1;\n }\n }\n\n & .TreeViewItemLevelLine {\n width: 100%;\n height: 100%;\n\n /*\n * On devices without hover, the nesting indicator lines\n * appear at all times.\n */\n border-color: var(--borderColor-muted);\n border-right: var(--borderWidth-thin) solid;\n }\n\n /*\n * On devices with :hover support, the nesting indicator lines\n * fade in when the user mouses over the entire component,\n * or when there's focus inside the component. This makes\n * sure the component remains simple when not in use.\n */\n @media (hover: hover) {\n .TreeViewItemLevelLine {\n border-color: transparent;\n }\n\n &:hover .TreeViewItemLevelLine,\n &:focus-within .TreeViewItemLevelLine {\n border-color: var(--borderColor-muted);\n }\n }\n\n & .TreeViewVisuallyHidden {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n /* stylelint-disable-next-line primer/spacing */\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n }\n}\n\n.TreeViewSkeletonItemContainerStyle {\n display: flex;\n align-items: center;\n column-gap: 0.5rem;\n height: 2rem;\n\n @media (pointer: coarse) {\n height: 2.75rem;\n }\n\n &:nth-of-type(5n + 1) {\n --tree-item-loading-width: 67%;\n }\n\n &:nth-of-type(5n + 2) {\n --tree-item-loading-width: 47%;\n }\n\n &:nth-of-type(5n + 3) {\n --tree-item-loading-width: 73%;\n }\n\n &:nth-of-type(5n + 4) {\n --tree-item-loading-width: 64%;\n }\n\n &:nth-of-type(5n + 5) {\n --tree-item-loading-width: 50%;\n }\n}\n\n.TreeItemSkeletonTextStyles {\n width: var(--tree-item-loading-width, 67%);\n}\n\n.TreeViewFailureMessage {\n display: grid;\n grid-template-columns: auto 1fr;\n gap: 0.5rem;\n width: 100%;\n align-items: center;\n}\n"]}
|
@@ -3,6 +3,7 @@
|
|
3
3
|
<%= @form_arguments[:builder].hidden_field(@form_arguments[:name], multiple: true, skip_default_ids: true, form: "", data: { target: "tree-view.formInputPrototype" }) %>
|
4
4
|
<div data-target="tree-view.formInputContainer"></div>
|
5
5
|
<% end %>
|
6
|
+
|
6
7
|
<%= render(Primer::BaseComponent.new(**@system_arguments)) do %>
|
7
8
|
<% nodes.each do |node| %>
|
8
9
|
<%= node %>
|
@@ -143,7 +143,7 @@
|
|
143
143
|
text-decoration-color: var(--control-fgColor-rest);
|
144
144
|
}
|
145
145
|
|
146
|
-
& :has(.TreeViewItemContent[aria-disabled=true]) {
|
146
|
+
& :has(.TreeViewItemContent[aria-disabled="true"]) {
|
147
147
|
cursor: not-allowed;
|
148
148
|
}
|
149
149
|
|
@@ -213,7 +213,7 @@
|
|
213
213
|
}
|
214
214
|
}
|
215
215
|
|
216
|
-
&[aria-disabled=
|
216
|
+
&[aria-disabled='true'] {
|
217
217
|
pointer-events: none;
|
218
218
|
|
219
219
|
& .TreeViewItemContentText {
|
@@ -223,13 +223,16 @@
|
|
223
223
|
& .TreeViewItemVisual {
|
224
224
|
fill: var(--control-fgColor-disabled);
|
225
225
|
|
226
|
+
/* stylelint-disable-next-line max-nesting-depth, selector-max-compound-selectors, selector-max-specificity */
|
226
227
|
& svg {
|
227
228
|
fill: var(--control-fgColor-disabled);
|
228
229
|
}
|
229
230
|
}
|
230
231
|
|
231
232
|
& .FormControl-checkbox {
|
233
|
+
/* stylelint-disable-next-line max-nesting-depth */
|
232
234
|
@media (hover: hover) {
|
235
|
+
/* stylelint-disable-next-line max-nesting-depth, selector-max-specificity */
|
233
236
|
&:hover {
|
234
237
|
cursor: not-allowed;
|
235
238
|
}
|
@@ -237,31 +240,19 @@
|
|
237
240
|
}
|
238
241
|
|
239
242
|
@media (hover: hover) {
|
243
|
+
/* stylelint-disable-next-line max-nesting-depth */
|
240
244
|
&:hover {
|
241
245
|
cursor: not-allowed;
|
242
246
|
background-color: transparent;
|
243
247
|
}
|
244
248
|
}
|
245
249
|
}
|
246
|
-
|
247
|
-
& ::highlight(primer-filterable-tree-view-search-results) {
|
248
|
-
background-color: var(--label-yellow-bgColor-active);
|
249
|
-
color: var(--fgColor-default);
|
250
|
-
}
|
251
|
-
|
252
|
-
& mark {
|
253
|
-
background-color: var(--label-yellow-bgColor-active);
|
254
|
-
color: var(--fgColor-default);
|
255
|
-
}
|
256
250
|
}
|
257
251
|
|
258
252
|
& .TreeViewItemContentText {
|
259
253
|
color: var(--control-fgColor-rest);
|
260
254
|
flex: 1 1 auto;
|
261
255
|
width: 0;
|
262
|
-
/* Do not remove, as otherwise the filter result of the filterableTreeView will not be shown in Safari
|
263
|
-
see: https://bugs.webkit.org/show_bug.cgi?id=278455 */
|
264
|
-
-webkit-user-select: auto;
|
265
256
|
}
|
266
257
|
|
267
258
|
&:where([data-truncate-text='true']) .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,7 +406,8 @@ 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
412
|
def initialize(node_variant: DEFAULT_NODE_VARIANT, form_arguments: {}, **system_arguments)
|
410
413
|
@system_arguments = deny_tag_argument(**system_arguments)
|
@@ -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
|
@@ -7,7 +7,7 @@ module Primer
|
|
7
7
|
#
|
8
8
|
# This component is part of the <%= link_to_component(Primer::OpenProject::FilterableTreeView) %> component and
|
9
9
|
# should not be used directly.
|
10
|
-
class SubTree < Primer::
|
10
|
+
class SubTree < Primer::Alpha::TreeView::SubTree
|
11
11
|
def with_sub_tree(**system_arguments, &block)
|
12
12
|
super(
|
13
13
|
sub_tree_component_klass: self.class,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { SegmentedControlElement } from '../alpha/segmented_control';
|
2
|
-
import { TreeViewElement } from '
|
3
|
-
import { TreeViewSubTreeNodeElement } from '
|
2
|
+
import { TreeViewElement } from '../alpha/tree_view/tree_view';
|
3
|
+
import { TreeViewSubTreeNodeElement } from '../alpha/tree_view/tree_view_sub_tree_node_element';
|
4
4
|
export type FilterFn = (node: HTMLElement, query: string, filterMode?: string) => Range[] | null;
|
5
5
|
export declare class FilterableTreeViewElement extends HTMLElement {
|
6
6
|
#private;
|
@@ -19,7 +19,7 @@
|
|
19
19
|
<% end %>
|
20
20
|
<% end %>
|
21
21
|
<%= render(Primer::BaseComponent.new(tag: :div, hidden: true, data: { target: "filterable-tree-view.noResultsMessage" })) do %>
|
22
|
-
<%= render(Primer::
|
22
|
+
<%= render(Primer::Alpha::TreeView.new) do |tree| %>
|
23
23
|
<% tree.with_leaf(**@no_results_node_arguments) %>
|
24
24
|
<% end %>
|
25
25
|
<% end %>
|
@@ -17,8 +17,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
17
17
|
};
|
18
18
|
var _FilterableTreeViewElement_instances, _FilterableTreeViewElement_filterFn, _FilterableTreeViewElement_abortController, _FilterableTreeViewElement_stateMap, _FilterableTreeViewElement_handleTreeViewEvent, _FilterableTreeViewElement_handleTreeViewNodeChecked, _FilterableTreeViewElement_restoreNodeState, _FilterableTreeViewElement_handleFilterModeEvent, _FilterableTreeViewElement_handleFilterInputEvent, _FilterableTreeViewElement_handleIncludeSubItemsCheckBoxEvent, _FilterableTreeViewElement_includeSubItems, _FilterableTreeViewElement_includeSubItemsUnder, _FilterableTreeViewElement_restoreAllNodeStates, _FilterableTreeViewElement_applyFilterOptions, _FilterableTreeViewElement_applyHighlights, _FilterableTreeViewElement_applyManualHighlights, _FilterableTreeViewElement_removeHighlights;
|
19
19
|
import { controller, target } from '@github/catalyst';
|
20
|
-
import { TreeViewElement } from '
|
21
|
-
import { TreeViewSubTreeNodeElement } from '
|
20
|
+
import { TreeViewElement } from '../alpha/tree_view/tree_view';
|
21
|
+
import { TreeViewSubTreeNodeElement } from '../alpha/tree_view/tree_view_sub_tree_node_element';
|
22
22
|
let FilterableTreeViewElement = class FilterableTreeViewElement extends HTMLElement {
|
23
23
|
constructor() {
|
24
24
|
super(...arguments);
|
@@ -150,12 +150,12 @@ module Primer
|
|
150
150
|
|
151
151
|
DEFAULT_NO_RESULTS_NODE_ARGUMENTS.freeze
|
152
152
|
|
153
|
-
# @param tree_view_arguments [Hash] Arguments that will be passed to the underlying <%= link_to_component(Primer::
|
154
|
-
# @param form_arguments [Hash] Form arguments that will be passed to the underlying <%= link_to_component(Primer::
|
153
|
+
# @param tree_view_arguments [Hash] Arguments that will be passed to the underlying <%= link_to_component(Primer::Alpha::TreeView) %> component.
|
154
|
+
# @param form_arguments [Hash] Form arguments that will be passed to the underlying <%= link_to_component(Primer::Alpha::TreeView) %> component. These arguments allow the selections made within a `FilterableTreeView` 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.
|
155
155
|
# @param filter_input_arguments [Hash] Arguments that will be passed to the <%= link_to_component(Primer::Alpha::TextField) %> component.
|
156
156
|
# @param filter_mode_control_arguments [Hash] Arguments that will be passed to the <%= link_to_component(Primer::Alpha::SegmentedControl) %> component.
|
157
157
|
# @param include_sub_items_check_box_arguments [Hash] Arguments that will be passed to the <%= link_to_component(Primer::Alpha::CheckBox) %> component.
|
158
|
-
# @param no_results_node_arguments [Hash] Arguments that will be passed to a <%= link_to_component(Primer::
|
158
|
+
# @param no_results_node_arguments [Hash] Arguments that will be passed to a <%= link_to_component(Primer::Alpha::TreeView::LeafNode) %> component that appears when no items match the filter criteria.
|
159
159
|
def initialize(
|
160
160
|
tree_view_arguments: {},
|
161
161
|
form_arguments: {},
|
@@ -171,7 +171,7 @@ module Primer
|
|
171
171
|
}
|
172
172
|
)
|
173
173
|
|
174
|
-
@tree_view = Primer::
|
174
|
+
@tree_view = Primer::Alpha::TreeView.new(
|
175
175
|
form_arguments: form_arguments,
|
176
176
|
**tree_view_arguments
|
177
177
|
)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import {controller, target} from '@github/catalyst'
|
2
2
|
import {SegmentedControlElement} from '../alpha/segmented_control'
|
3
|
-
import {TreeViewElement} from '
|
4
|
-
import {TreeViewSubTreeNodeElement} from '
|
3
|
+
import {TreeViewElement} from '../alpha/tree_view/tree_view'
|
4
|
+
import {TreeViewSubTreeNodeElement} from '../alpha/tree_view/tree_view_sub_tree_node_element'
|
5
5
|
import {TreeViewNodeInfo} from '../shared_events'
|
6
6
|
|
7
7
|
// This function is expected to return the following values:
|
@@ -26,6 +26,10 @@ import '../../lib/primer/forms/toggle_switch_input';
|
|
26
26
|
import './alpha/action_menu/action_menu_element';
|
27
27
|
import './alpha/select_panel_element';
|
28
28
|
import './beta/details_toggle_element';
|
29
|
+
import './alpha/tree_view/tree_view';
|
30
|
+
import './alpha/tree_view/tree_view_icon_pair_element';
|
31
|
+
import './alpha/tree_view/tree_view_sub_tree_node_element';
|
32
|
+
import './alpha/tree_view/tree_view_include_fragment_element';
|
29
33
|
import './open_project/page_header_element';
|
30
34
|
import './open_project/zen_mode_button';
|
31
35
|
import './open_project/sub_header_element';
|
@@ -33,8 +37,4 @@ import './open_project/danger_dialog_form_helper';
|
|
33
37
|
import './open_project/collapsible';
|
34
38
|
import './open_project/border_box/collapsible_header';
|
35
39
|
import './open_project/collapsible_section';
|
36
|
-
import './open_project/tree_view/tree_view';
|
37
|
-
import './open_project/tree_view/tree_view_icon_pair_element';
|
38
|
-
import './open_project/tree_view/tree_view_sub_tree_node_element';
|
39
|
-
import './open_project/tree_view/tree_view_include_fragment_element';
|
40
40
|
import './open_project/filterable_tree_view';
|
@@ -26,6 +26,10 @@ import '../../lib/primer/forms/toggle_switch_input';
|
|
26
26
|
import './alpha/action_menu/action_menu_element';
|
27
27
|
import './alpha/select_panel_element';
|
28
28
|
import './beta/details_toggle_element';
|
29
|
+
import './alpha/tree_view/tree_view';
|
30
|
+
import './alpha/tree_view/tree_view_icon_pair_element';
|
31
|
+
import './alpha/tree_view/tree_view_sub_tree_node_element';
|
32
|
+
import './alpha/tree_view/tree_view_include_fragment_element';
|
29
33
|
import './open_project/page_header_element';
|
30
34
|
import './open_project/zen_mode_button';
|
31
35
|
import './open_project/sub_header_element';
|
@@ -33,8 +37,4 @@ import './open_project/danger_dialog_form_helper';
|
|
33
37
|
import './open_project/collapsible';
|
34
38
|
import './open_project/border_box/collapsible_header';
|
35
39
|
import './open_project/collapsible_section';
|
36
|
-
import './open_project/tree_view/tree_view';
|
37
|
-
import './open_project/tree_view/tree_view_icon_pair_element';
|
38
|
-
import './open_project/tree_view/tree_view_sub_tree_node_element';
|
39
|
-
import './open_project/tree_view/tree_view_include_fragment_element';
|
40
40
|
import './open_project/filterable_tree_view';
|
@@ -17,6 +17,8 @@
|
|
17
17
|
@import "./alpha/text_field.pcss";
|
18
18
|
@import "./alpha/toggle_switch.pcss";
|
19
19
|
@import "./alpha/underline_nav.pcss";
|
20
|
+
@import "./alpha/skeleton_box.pcss";
|
21
|
+
@import "./alpha/tree_view.pcss";
|
20
22
|
|
21
23
|
/* beta */
|
22
24
|
@import "./beta/avatar.pcss";
|
@@ -51,5 +53,3 @@
|
|
51
53
|
@import "./open_project/side_panel/section.pcss";
|
52
54
|
@import "./open_project/border_box/collapsible_header.pcss";
|
53
55
|
@import "./open_project/collapsible_section.pcss";
|
54
|
-
@import "./open_project/skeleton_box.pcss";
|
55
|
-
@import "./open_project/tree_view.pcss";
|
@@ -26,6 +26,10 @@ import '../../lib/primer/forms/toggle_switch_input'
|
|
26
26
|
import './alpha/action_menu/action_menu_element'
|
27
27
|
import './alpha/select_panel_element'
|
28
28
|
import './beta/details_toggle_element'
|
29
|
+
import './alpha/tree_view/tree_view'
|
30
|
+
import './alpha/tree_view/tree_view_icon_pair_element'
|
31
|
+
import './alpha/tree_view/tree_view_sub_tree_node_element'
|
32
|
+
import './alpha/tree_view/tree_view_include_fragment_element'
|
29
33
|
import './open_project/page_header_element'
|
30
34
|
import './open_project/zen_mode_button'
|
31
35
|
import './open_project/sub_header_element'
|
@@ -33,8 +37,4 @@ import './open_project/danger_dialog_form_helper'
|
|
33
37
|
import './open_project/collapsible'
|
34
38
|
import './open_project/border_box/collapsible_header'
|
35
39
|
import './open_project/collapsible_section'
|
36
|
-
import './open_project/tree_view/tree_view'
|
37
|
-
import './open_project/tree_view/tree_view_icon_pair_element'
|
38
|
-
import './open_project/tree_view/tree_view_sub_tree_node_element'
|
39
|
-
import './open_project/tree_view/tree_view_include_fragment_element'
|
40
40
|
import './open_project/filterable_tree_view'
|
@@ -1,18 +1,18 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# :nodoc:
|
4
|
-
class
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
class CheckBoxWithNestedForm < ApplicationForm
|
5
|
+
# :nodoc:
|
6
|
+
class CustomCitiesForm < ApplicationForm
|
7
|
+
form do |custom_cities_form|
|
8
|
+
custom_cities_form.text_field(
|
9
|
+
name: :custom_cities,
|
10
|
+
label: "Custom cities",
|
11
|
+
description: "A space-separated list of cities"
|
12
|
+
)
|
13
|
+
end
|
11
14
|
end
|
12
|
-
end
|
13
15
|
|
14
|
-
# :nodoc:
|
15
|
-
class CheckBoxWithNestedForm < ApplicationForm
|
16
16
|
form do |check_form|
|
17
17
|
check_form.check_box_group(name: :city_categories) do |check_group|
|
18
18
|
check_group.check_box(
|
@@ -1,27 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# :nodoc:
|
4
|
-
class
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
class RadioButtonWithNestedForm < ApplicationForm
|
5
|
+
# :nodoc:
|
6
|
+
class FriendForm < ApplicationForm
|
7
|
+
form do |friend_form|
|
8
|
+
friend_form.group(layout: :horizontal) do |name_group|
|
9
|
+
name_group.text_field(name: "first_name", label: "First Name")
|
10
|
+
name_group.text_field(name: "last_name", label: "Last Name")
|
11
|
+
end
|
9
12
|
end
|
10
13
|
end
|
11
|
-
end
|
12
14
|
|
13
|
-
# :nodoc:
|
14
|
-
class FriendTextAreaForm < ApplicationForm
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
# :nodoc:
|
16
|
+
class FriendTextAreaForm < ApplicationForm
|
17
|
+
form do |friend_text_area_form|
|
18
|
+
friend_text_area_form.text_area(
|
19
|
+
name: "description",
|
20
|
+
label: "Describe this wonderful person in loving detail"
|
21
|
+
)
|
22
|
+
end
|
20
23
|
end
|
21
|
-
end
|
22
24
|
|
23
|
-
# :nodoc:
|
24
|
-
class RadioButtonWithNestedForm < ApplicationForm
|
25
25
|
form do |radio_form|
|
26
26
|
radio_form.radio_button_group(name: "channel") do |radio_group|
|
27
27
|
radio_group.radio_button(value: "online", label: "Online advertisement", caption: "Facebook maybe?")
|
@@ -13,7 +13,7 @@ module Primer
|
|
13
13
|
slot_def = registered_slots[slot_name]
|
14
14
|
raise "Unknown slot '#{slot_name}'" unless slot_def
|
15
15
|
|
16
|
-
poly_def =
|
16
|
+
poly_def = __vc_define_slot(
|
17
17
|
type,
|
18
18
|
collection: slot_def[:collection],
|
19
19
|
callable: callable
|
@@ -22,7 +22,7 @@ module Primer
|
|
22
22
|
registered_slots[slot_name][:renderable_hash][type] = poly_def
|
23
23
|
|
24
24
|
define_method(:"with_#{type}") do |**system_arguments, &block|
|
25
|
-
|
25
|
+
__vc_set_slot(slot_name, poly_def, **system_arguments, &block)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= render(Primer::
|
1
|
+
<%= render(Primer::Alpha::TreeView::SubTree.new(path: ["primer"], node_variant: :div)) do |tree| %>
|
2
2
|
<% tree.with_sub_tree(label: "alpha") do |sub_tree| %>
|
3
3
|
<% sub_tree.with_leading_visual_icons do |icons| %>
|
4
4
|
<% icons.with_expanded_icon(icon: :"file-directory-open-fill", color: :accent) %>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= render(Primer::
|
1
|
+
<%= render(Primer::Alpha::TreeView::SubTree.new(path: path, select_variant: select_variant, node_variant: :div)) do |tree| %>
|
2
2
|
<% next if params[:empty] == "true" %>
|
3
3
|
<% entries.each do |label, type| %>
|
4
4
|
<% case type %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<div style="max-width: 400px">
|
2
|
-
<%= render(Primer::
|
2
|
+
<%= render(Primer::Alpha::FileTreeView.new) do |tree_view| %>
|
3
3
|
<% tree_view.with_directory(label: "src", expanded: expanded, select_variant: select_variant) do |dir| %>
|
4
4
|
<% dir.with_trailing_visual_icon(icon: :"diff-modified") %>
|
5
5
|
|
@@ -1,4 +1,4 @@
|
|
1
1
|
<% data = Primer::ViewComponents::TreeViewItemsController::TREE %>
|
2
|
-
<%= render(Primer::
|
2
|
+
<%= render(Primer::Alpha::FileTreeView.new) do |tree| %>
|
3
3
|
<% populate.call(tree, data, { select_variant: select_variant, expanded: expanded }) %>
|
4
4
|
<% end %>
|