primer_view_components 0.1.8 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +79 -0
- data/README.md +1 -1
- data/app/assets/javascripts/primer_view_components.js +1 -1
- data/app/assets/javascripts/primer_view_components.js.map +1 -1
- data/app/assets/styles/primer_view_components.css +1 -3
- data/app/assets/styles/primer_view_components.css.map +1 -1
- data/app/components/primer/alpha/action_list/item.rb +3 -5
- data/app/components/primer/alpha/action_list.css +1 -1
- data/app/components/primer/alpha/action_list.css.json +16 -16
- data/app/components/primer/alpha/action_list.css.map +1 -1
- data/app/components/primer/alpha/action_list.pcss +145 -145
- data/app/components/primer/alpha/action_list.rb +30 -15
- data/app/components/primer/alpha/action_menu/action_menu_element.d.ts +2 -1
- data/app/components/primer/alpha/action_menu/action_menu_element.js +44 -34
- data/app/components/primer/alpha/action_menu/action_menu_element.ts +32 -30
- data/app/components/primer/alpha/action_menu/list.rb +6 -1
- data/app/components/primer/alpha/action_menu.rb +1 -1
- data/app/components/primer/alpha/auto_complete.css +1 -1
- data/app/components/primer/alpha/auto_complete.css.map +1 -1
- data/app/components/primer/alpha/auto_complete.pcss +3 -3
- data/app/components/primer/alpha/banner.css +1 -1
- data/app/components/primer/alpha/banner.css.map +1 -1
- data/app/components/primer/alpha/banner.pcss +11 -11
- data/app/components/primer/alpha/button_marketing.css.map +1 -1
- data/app/components/primer/alpha/button_marketing.pcss +5 -12
- data/app/components/primer/alpha/button_marketing.rb +3 -0
- data/app/components/primer/alpha/dialog.css +1 -1
- data/app/components/primer/alpha/dialog.css.map +1 -1
- data/app/components/primer/alpha/dialog.pcss +36 -36
- data/app/components/primer/alpha/dropdown.css +1 -1
- data/app/components/primer/alpha/dropdown.css.map +1 -1
- data/app/components/primer/alpha/dropdown.pcss +12 -12
- data/app/components/primer/alpha/form_control.html.erb +1 -1
- data/app/components/primer/alpha/hellip_button.rb +3 -1
- data/app/components/primer/alpha/layout.css +1 -1
- data/app/components/primer/alpha/layout.css.map +1 -1
- data/app/components/primer/alpha/layout.pcss +4 -4
- data/app/components/primer/alpha/menu.css +1 -1
- data/app/components/primer/alpha/menu.css.map +1 -1
- data/app/components/primer/alpha/menu.pcss +21 -21
- data/app/components/primer/alpha/modal_dialog.js +17 -4
- data/app/components/primer/alpha/modal_dialog.ts +17 -4
- data/app/components/primer/alpha/nav_list/item.rb +2 -0
- data/app/components/primer/alpha/nav_list.js +6 -0
- data/app/components/primer/alpha/nav_list.rb +55 -36
- data/app/components/primer/alpha/nav_list.ts +8 -0
- data/app/components/primer/alpha/octicon_symbols.html.erb +1 -1
- data/app/components/primer/alpha/overlay/header.html.erb +5 -3
- data/app/components/primer/alpha/overlay/header.rb +4 -1
- data/app/components/primer/alpha/overlay.css +1 -1
- data/app/components/primer/alpha/overlay.css.json +1 -2
- data/app/components/primer/alpha/overlay.css.map +1 -1
- data/app/components/primer/alpha/overlay.pcss +14 -4
- data/app/components/primer/alpha/overlay.rb +1 -0
- data/app/components/primer/alpha/segmented_control.css +1 -1
- data/app/components/primer/alpha/segmented_control.css.map +1 -1
- data/app/components/primer/alpha/segmented_control.pcss +24 -33
- data/app/components/primer/alpha/tab_nav.css +1 -1
- data/app/components/primer/alpha/tab_nav.css.map +1 -1
- data/app/components/primer/alpha/tab_nav.pcss +12 -12
- data/app/components/primer/alpha/text_field.css +1 -3
- data/app/components/primer/alpha/text_field.css.json +1 -0
- data/app/components/primer/alpha/text_field.css.map +1 -1
- data/app/components/primer/alpha/text_field.pcss +87 -83
- data/app/components/primer/alpha/toggle_switch.css +1 -1
- data/app/components/primer/alpha/toggle_switch.css.json +11 -11
- data/app/components/primer/alpha/toggle_switch.css.map +1 -1
- data/app/components/primer/alpha/toggle_switch.d.ts +1 -1
- data/app/components/primer/alpha/toggle_switch.html.erb +2 -2
- data/app/components/primer/alpha/toggle_switch.js +44 -42
- data/app/components/primer/alpha/toggle_switch.pcss +16 -16
- data/app/components/primer/alpha/toggle_switch.rb +7 -0
- data/app/components/primer/alpha/toggle_switch.ts +50 -41
- data/app/components/primer/alpha/underline_nav.css +1 -1
- data/app/components/primer/alpha/underline_nav.css.map +1 -1
- data/app/components/primer/alpha/underline_nav.pcss +11 -11
- data/app/components/primer/beta/auto_complete.rb +1 -1
- data/app/components/primer/beta/avatar.css +1 -1
- data/app/components/primer/beta/avatar.css.map +1 -1
- data/app/components/primer/beta/avatar.pcss +18 -18
- data/app/components/primer/beta/avatar_stack.css +1 -1
- data/app/components/primer/beta/avatar_stack.css.map +1 -1
- data/app/components/primer/beta/avatar_stack.pcss +5 -5
- data/app/components/primer/beta/base_button.rb +11 -0
- data/app/components/primer/beta/blankslate.css +1 -1
- data/app/components/primer/beta/blankslate.css.map +1 -1
- data/app/components/primer/beta/blankslate.pcss +16 -16
- data/app/components/primer/beta/border_box.css +1 -1
- data/app/components/primer/beta/border_box.css.json +1 -1
- data/app/components/primer/beta/border_box.css.map +1 -1
- data/app/components/primer/beta/border_box.pcss +40 -42
- data/app/components/primer/beta/button.css +1 -1
- data/app/components/primer/beta/button.css.json +4 -0
- data/app/components/primer/beta/button.css.map +1 -1
- data/app/components/primer/beta/button.pcss +39 -24
- data/app/components/primer/beta/button.rb +3 -0
- data/app/components/primer/beta/button_group.css +1 -0
- data/app/components/primer/beta/button_group.css.json +14 -0
- data/app/components/primer/beta/button_group.css.map +1 -0
- data/app/components/primer/beta/button_group.pcss +27 -0
- data/app/components/primer/beta/button_group.rb +19 -19
- data/app/components/primer/beta/close_button.rb +3 -1
- data/app/components/primer/beta/counter.css +1 -1
- data/app/components/primer/beta/counter.css.map +1 -1
- data/app/components/primer/beta/counter.pcss +5 -5
- data/app/components/primer/beta/details.html.erb +6 -2
- data/app/components/primer/beta/details.rb +18 -10
- data/app/components/primer/beta/flash.css +1 -1
- data/app/components/primer/beta/flash.css.map +1 -1
- data/app/components/primer/beta/flash.pcss +12 -12
- data/app/components/primer/beta/icon_button.rb +7 -3
- data/app/components/primer/beta/label.css +1 -1
- data/app/components/primer/beta/label.css.map +1 -1
- data/app/components/primer/beta/label.pcss +3 -3
- data/app/components/primer/beta/popover.css +1 -1
- data/app/components/primer/beta/popover.css.map +1 -1
- data/app/components/primer/beta/popover.pcss +4 -4
- data/app/components/primer/beta/state.css +1 -1
- data/app/components/primer/beta/state.css.map +1 -1
- data/app/components/primer/beta/state.pcss +7 -7
- data/app/components/primer/beta/subhead.css +1 -1
- data/app/components/primer/beta/subhead.css.map +1 -1
- data/app/components/primer/beta/subhead.pcss +9 -9
- data/app/components/primer/beta/timeline_item.css +1 -1
- data/app/components/primer/beta/timeline_item.css.map +1 -1
- data/app/components/primer/beta/timeline_item.pcss +18 -18
- data/app/components/primer/beta/truncate.css +1 -1
- data/app/components/primer/beta/truncate.css.map +1 -1
- data/app/components/primer/beta/truncate.pcss +1 -1
- data/app/components/primer/focus_group.js +8 -13
- data/app/components/primer/focus_group.ts +8 -12
- data/app/components/primer/primer.d.ts +1 -0
- data/app/components/primer/primer.js +1 -0
- data/app/components/primer/primer.pcss +1 -0
- data/app/components/primer/primer.ts +1 -0
- data/lib/postcss_mixins/activeIndicatorLine.pcss +4 -4
- data/lib/primer/accessibility.rb +74 -0
- data/lib/primer/forms/dsl/input.rb +4 -8
- data/lib/primer/forms/dsl/text_field_input.rb +0 -4
- data/lib/primer/forms/dsl/toggle_switch_input.rb +4 -0
- data/lib/primer/forms/form_control.html.erb +3 -5
- data/lib/primer/forms/primer_base_component_wrapper.html.erb +3 -0
- data/lib/primer/forms/primer_base_component_wrapper.rb +24 -0
- data/lib/primer/forms/toggle_switch.html.erb +3 -3
- data/lib/primer/forms/toggle_switch.rb +6 -2
- data/lib/primer/forms/toggle_switch_input.js +7 -2
- data/lib/primer/forms/toggle_switch_input.ts +9 -2
- data/lib/primer/static/generate_info_arch.rb +3 -0
- data/lib/primer/static/generate_previews.rb +15 -8
- data/lib/primer/view_components/linters/deprecated_components_counter.rb +37 -13
- data/lib/primer/view_components/version.rb +2 -2
- data/lib/primer/yard/component_manifest.rb +1 -1
- data/lib/primer/yard/lookbook_pages_backend.rb +8 -2
- data/lib/primer/yard/registry.rb +4 -0
- data/previews/pages/forms/03_caption_templates.md.erb +1 -1
- data/previews/pages/forms/04_after_content.md.erb +1 -1
- data/previews/pages/forms/06_miscellaneous_inputs.md.erb +1 -1
- data/previews/pages/forms/07_toggle_switch_forms.md.erb +1 -1
- data/previews/primer/alpha/action_menu_preview/two_menus.html.erb +13 -0
- data/previews/primer/alpha/action_menu_preview/with_actions.html.erb +21 -0
- data/previews/primer/alpha/action_menu_preview.rb +5 -13
- data/previews/primer/alpha/button_marketing_preview.rb +3 -2
- data/previews/primer/alpha/dialog_preview.rb +4 -3
- data/previews/primer/alpha/hellip_button_preview.rb +3 -2
- data/previews/primer/alpha/nav_list_preview.rb +1 -1
- data/previews/primer/alpha/overlay_preview/middle_of_page_with_relative_container.html.erb +19 -0
- data/previews/primer/alpha/overlay_preview.rb +31 -0
- data/previews/primer/beta/base_button_preview.rb +9 -2
- data/previews/primer/beta/button_group_preview/action_menus.html.erb +8 -0
- data/previews/primer/beta/button_group_preview.rb +49 -11
- data/previews/primer/beta/button_preview/trailing_counter.html.erb +1 -1
- data/previews/primer/beta/button_preview.rb +5 -2
- data/previews/primer/beta/close_button_preview.rb +3 -2
- data/previews/primer/beta/details_preview.rb +11 -8
- data/previews/primer/forms_preview.rb +44 -0
- data/static/arguments.json +11 -5
- data/static/classes.json +378 -372
- data/static/constants.json +0 -1
- data/static/info_arch.json +5457 -1364
- data/static/previews.json +5197 -1428
- metadata +40 -36
- data/lib/tasks/docs.rake +0 -185
- data/lib/tasks/helpers/ast_processor.rb +0 -44
- data/lib/tasks/helpers/ast_traverser.rb +0 -77
- data/lib/tasks/primer_view_components.rake +0 -47
- data/lib/tasks/static.rake +0 -29
- data/lib/tasks/test.rake +0 -83
- data/lib/tasks/utilities.rake +0 -109
- data/previews/primer/forms/forms_preview.rb +0 -48
- /data/previews/primer/{forms/forms_preview → forms_preview}/after_content_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/array_check_box_group_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/caption_template_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/check_box_group_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/check_box_with_nested_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/composed_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/example_toggle_switch_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/horizontal_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/immediate_validation_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/invalid_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/multi_input_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/multi_text_field_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/name_with_question_mark_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/radio_button_group_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/radio_button_with_nested_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/select_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/single_text_field_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/submit_button_form.html.erb +0 -0
- /data/previews/primer/{forms/forms_preview → forms_preview}/text_field_and_checkbox_form.html.erb +0 -0
@@ -9,25 +9,25 @@
|
|
9
9
|
/* base button */
|
10
10
|
.Button {
|
11
11
|
position: relative;
|
12
|
-
font-size: var(--text-body-size-medium
|
13
|
-
font-weight: var(--base-text-weight-medium
|
12
|
+
font-size: var(--text-body-size-medium);
|
13
|
+
font-weight: var(--base-text-weight-medium);
|
14
14
|
cursor: pointer;
|
15
15
|
user-select: none;
|
16
16
|
background-color: transparent;
|
17
|
-
border: var(--borderWidth-thin
|
17
|
+
border: var(--borderWidth-thin) solid;
|
18
18
|
border-color: transparent;
|
19
|
-
border-radius: var(--borderRadius-medium
|
19
|
+
border-radius: var(--borderRadius-medium);
|
20
20
|
color: var(--color-btn-text);
|
21
21
|
transition: var(--duration-fast) var(--easing-easeInOut);
|
22
22
|
transition-property: color, fill, background-color, border-color;
|
23
23
|
text-align: center;
|
24
|
-
height: var(--control-medium-size
|
25
|
-
padding: 0 var(--control-medium-paddingInline-normal
|
24
|
+
height: var(--control-medium-size);
|
25
|
+
padding: 0 var(--control-medium-paddingInline-normal);
|
26
26
|
display: inline-flex;
|
27
27
|
flex-direction: row;
|
28
28
|
justify-content: space-between;
|
29
29
|
align-items: center;
|
30
|
-
gap: var(--base-size-4
|
30
|
+
gap: var(--base-size-4);
|
31
31
|
min-width: max-content;
|
32
32
|
|
33
33
|
/* mobile friendly sizing */
|
@@ -78,7 +78,7 @@ summary.Button {
|
|
78
78
|
/* padding-bottom: 1px; optical alignment for firefox */
|
79
79
|
|
80
80
|
& > :not(:last-child) {
|
81
|
-
margin-right: var(--control-medium-gap
|
81
|
+
margin-right: var(--control-medium-gap);
|
82
82
|
}
|
83
83
|
}
|
84
84
|
|
@@ -103,7 +103,7 @@ summary.Button {
|
|
103
103
|
.Button-label {
|
104
104
|
grid-area: text;
|
105
105
|
white-space: nowrap;
|
106
|
-
line-height: var(--text-body-lineHeight-medium
|
106
|
+
line-height: var(--text-body-lineHeight-medium);
|
107
107
|
}
|
108
108
|
|
109
109
|
.Button-leadingVisual {
|
@@ -115,40 +115,40 @@ summary.Button {
|
|
115
115
|
}
|
116
116
|
|
117
117
|
.Button-trailingAction {
|
118
|
-
margin-right: calc(var(--base-size-4
|
118
|
+
margin-right: calc(var(--base-size-4) * -1);
|
119
119
|
}
|
120
120
|
|
121
121
|
/* sizes */
|
122
122
|
|
123
123
|
.Button--small {
|
124
|
-
font-size: var(--text-body-size-small
|
125
|
-
height: var(--control-small-size
|
126
|
-
padding: 0 var(--control-small-paddingInline-condensed
|
127
|
-
gap: var(--control-small-gap
|
124
|
+
font-size: var(--text-body-size-small);
|
125
|
+
height: var(--control-small-size);
|
126
|
+
padding: 0 var(--control-small-paddingInline-condensed);
|
127
|
+
gap: var(--control-small-gap);
|
128
128
|
|
129
129
|
& .Button-label {
|
130
|
-
line-height: var(--text-body-lineHeight-small
|
130
|
+
line-height: var(--text-body-lineHeight-small);
|
131
131
|
}
|
132
132
|
|
133
133
|
& .Button-content {
|
134
134
|
& > :not(:last-child) {
|
135
|
-
margin-right: var(--control-small-gap
|
135
|
+
margin-right: var(--control-small-gap);
|
136
136
|
}
|
137
137
|
}
|
138
138
|
}
|
139
139
|
|
140
140
|
.Button--large {
|
141
|
-
height: var(--control-large-size
|
142
|
-
padding: 0 var(--control-large-paddingInline-spacious
|
143
|
-
gap: var(--control-large-gap
|
141
|
+
height: var(--control-large-size);
|
142
|
+
padding: 0 var(--control-large-paddingInline-spacious);
|
143
|
+
gap: var(--control-large-gap);
|
144
144
|
|
145
145
|
& .Button-label {
|
146
|
-
line-height: var(--text-body-lineHeight-large
|
146
|
+
line-height: var(--text-body-lineHeight-large);
|
147
147
|
}
|
148
148
|
|
149
149
|
& .Button-content {
|
150
150
|
& > :not(:last-child) {
|
151
|
-
margin-right: var(--control-large-gap
|
151
|
+
margin-right: var(--control-large-gap);
|
152
152
|
}
|
153
153
|
}
|
154
154
|
}
|
@@ -315,6 +315,11 @@ summary.Button {
|
|
315
315
|
background-color: var(--color-btn-danger-hover-bg);
|
316
316
|
border-color: var(--color-btn-danger-hover-border);
|
317
317
|
box-shadow: var(--color-btn-danger-hover-shadow), var(--color-btn-danger-hover-inset-shadow);
|
318
|
+
|
319
|
+
& .Counter {
|
320
|
+
color: var(--color-btn-danger-hover-counter-fg);
|
321
|
+
background-color: var(--color-btn-danger-hover-counter-bg);
|
322
|
+
}
|
318
323
|
}
|
319
324
|
|
320
325
|
&:active:not(:disabled),
|
@@ -332,6 +337,16 @@ summary.Button {
|
|
332
337
|
fill: var(--color-btn-danger-disabled-text);
|
333
338
|
background-color: var(--color-btn-danger-disabled-bg);
|
334
339
|
border-color: var(--color-btn-border);
|
340
|
+
|
341
|
+
& .Counter {
|
342
|
+
color: var(--color-btn-danger-disabled-counter-fg);
|
343
|
+
background-color: var(--color-btn-danger-disabled-counter-bg);
|
344
|
+
}
|
345
|
+
}
|
346
|
+
|
347
|
+
& .Counter {
|
348
|
+
color: var(--color-btn-danger-counter-fg);
|
349
|
+
background-color: var(--color-btn-danger-counter-bg);
|
335
350
|
}
|
336
351
|
}
|
337
352
|
|
@@ -339,13 +354,13 @@ summary.Button {
|
|
339
354
|
display: inline-grid;
|
340
355
|
place-content: center;
|
341
356
|
padding: unset;
|
342
|
-
width: var(--control-medium-size
|
357
|
+
width: var(--control-medium-size);
|
343
358
|
|
344
359
|
&.Button--small {
|
345
|
-
width: var(--control-small-size
|
360
|
+
width: var(--control-small-size);
|
346
361
|
}
|
347
362
|
|
348
363
|
&.Button--large {
|
349
|
-
width: var(--control-large-size
|
364
|
+
width: var(--control-large-size);
|
350
365
|
}
|
351
366
|
}
|
@@ -135,18 +135,21 @@ module Primer
|
|
135
135
|
# @param align_content [Symbol] <%= one_of(Primer::Beta::Button::ALIGN_CONTENT_OPTIONS) %>
|
136
136
|
# @param tag [Symbol] (Primer::Beta::BaseButton::DEFAULT_TAG) <%= one_of(Primer::Beta::BaseButton::TAG_OPTIONS) %>
|
137
137
|
# @param type [Symbol] (Primer::Beta::BaseButton::DEFAULT_TYPE) <%= one_of(Primer::Beta::BaseButton::TYPE_OPTIONS) %>
|
138
|
+
# @param disabled [Boolean] Whether or not the button is disabled. If true, this option forces `tag:` to `:button`.
|
138
139
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
139
140
|
def initialize(
|
140
141
|
scheme: DEFAULT_SCHEME,
|
141
142
|
size: DEFAULT_SIZE,
|
142
143
|
block: false,
|
143
144
|
align_content: DEFAULT_ALIGN_CONTENT,
|
145
|
+
disabled: false,
|
144
146
|
**system_arguments
|
145
147
|
)
|
146
148
|
@scheme = scheme
|
147
149
|
@block = block
|
148
150
|
|
149
151
|
@system_arguments = system_arguments
|
152
|
+
@system_arguments[:disabled] = disabled
|
150
153
|
|
151
154
|
@id = @system_arguments[:id]
|
152
155
|
|
@@ -0,0 +1 @@
|
|
1
|
+
.ButtonGroup{display:inline-flex}.ButtonGroup .Button{border-radius:0;margin-inline-end:-1px;position:relative}.ButtonGroup .Button:active,.ButtonGroup .Button:focus,.ButtonGroup .Button:hover{z-index:1}.ButtonGroup>.Button-withTooltip:first-child .Button,.ButtonGroup>:first-child{border-bottom-left-radius:var(--borderRadius-medium,6px);border-top-left-radius:var(--borderRadius-medium,6px)}.ButtonGroup>.Button-withTooltip:last-child .Button,.ButtonGroup>:last-child{border-bottom-right-radius:var(--borderRadius-medium,6px);border-top-right-radius:var(--borderRadius-medium,6px)}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
{
|
2
|
+
"name": "beta/button_group",
|
3
|
+
"selectors": [
|
4
|
+
".ButtonGroup",
|
5
|
+
".ButtonGroup .Button",
|
6
|
+
".ButtonGroup .Button:active",
|
7
|
+
".ButtonGroup .Button:focus",
|
8
|
+
".ButtonGroup .Button:hover",
|
9
|
+
".ButtonGroup>.Button-withTooltip:first-child .Button",
|
10
|
+
".ButtonGroup>:first-child",
|
11
|
+
".ButtonGroup>.Button-withTooltip:last-child .Button",
|
12
|
+
".ButtonGroup>:last-child"
|
13
|
+
]
|
14
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["button_group.pcss"],"names":[],"mappings":"AAAA,aACE,mBAyBF,CAvBE,qBAGE,eAAgB,CAFhB,sBAAuB,CACvB,iBAQF,CALE,kFAGE,SACF,CAGF,+EAGE,wDAAqD,CADrD,qDAEF,CAEA,6EAGE,yDAAsD,CADtD,sDAEF","file":"button_group.css","sourcesContent":[".ButtonGroup {\n display: inline-flex;\n\n & .Button {\n margin-inline-end: -1px;\n position: relative;\n border-radius: 0;\n\n &:focus,\n &:active,\n &:hover {\n z-index: 1;\n }\n }\n\n & > :first-child,\n & > :first-child.Button-withTooltip .Button {\n border-top-left-radius: var(--borderRadius-medium);\n border-bottom-left-radius: var(--borderRadius-medium);\n }\n\n & > :last-child,\n & > :last-child.Button-withTooltip .Button {\n border-top-right-radius: var(--borderRadius-medium);\n border-bottom-right-radius: var(--borderRadius-medium);\n }\n}\n"]}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
.ButtonGroup {
|
2
|
+
display: inline-flex;
|
3
|
+
|
4
|
+
& .Button {
|
5
|
+
margin-inline-end: -1px;
|
6
|
+
position: relative;
|
7
|
+
border-radius: 0;
|
8
|
+
|
9
|
+
&:focus,
|
10
|
+
&:active,
|
11
|
+
&:hover {
|
12
|
+
z-index: 1;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
& > :first-child,
|
17
|
+
& > :first-child.Button-withTooltip .Button {
|
18
|
+
border-top-left-radius: var(--borderRadius-medium);
|
19
|
+
border-bottom-left-radius: var(--borderRadius-medium);
|
20
|
+
}
|
21
|
+
|
22
|
+
& > :last-child,
|
23
|
+
& > :last-child.Button-withTooltip .Button {
|
24
|
+
border-top-right-radius: var(--borderRadius-medium);
|
25
|
+
border-bottom-right-radius: var(--borderRadius-medium);
|
26
|
+
}
|
27
|
+
}
|
@@ -8,45 +8,45 @@ module Primer
|
|
8
8
|
|
9
9
|
# Required list of buttons to be rendered.
|
10
10
|
#
|
11
|
-
# @param kwargs [Hash] The same arguments as <%= link_to_component(Primer::
|
11
|
+
# @param kwargs [Hash] The same arguments as <%= link_to_component(Primer::Beta::Button) %>
|
12
12
|
renders_many :buttons, lambda { |**kwargs|
|
13
|
-
kwargs[:group_item] = true
|
14
13
|
kwargs[:size] = @size
|
14
|
+
kwargs[:scheme] = @scheme
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
if kwargs[:icon]
|
17
|
+
Primer::Beta::IconButton.new(**kwargs)
|
18
|
+
else
|
19
|
+
Primer::Beta::Button.new(**kwargs)
|
20
|
+
end
|
19
21
|
}
|
20
22
|
|
21
23
|
# @example Default
|
22
24
|
#
|
23
25
|
# <%= render(Primer::Beta::ButtonGroup.new) do |component| %>
|
24
|
-
# <% component.with_button { "
|
25
|
-
# <% component.with_button
|
26
|
-
# <% component.with_button
|
27
|
-
# <% component.with_button(scheme: :outline) { "Outline" } %>
|
28
|
-
# <% component.with_button(classes: "custom-class") { "Custom class" } %>
|
26
|
+
# <% component.with_button { "Button 1" } %>
|
27
|
+
# <% component.with_button { "Button 2" } %>
|
28
|
+
# <% component.with_button { "Button 3" } %>
|
29
29
|
# <% end %>
|
30
30
|
#
|
31
31
|
# @example Sizes
|
32
32
|
#
|
33
33
|
# <%= render(Primer::Beta::ButtonGroup.new(size: :small)) do |component| %>
|
34
|
-
# <% component.with_button { "
|
35
|
-
# <% component.with_button
|
36
|
-
# <% component.with_button
|
37
|
-
# <% component.with_button(scheme: :outline) { "Outline" } %>
|
34
|
+
# <% component.with_button { "Button 1" } %>
|
35
|
+
# <% component.with_button { "Button 2" } %>
|
36
|
+
# <% component.with_button { "Button 3" } %>
|
38
37
|
# <% end %>
|
39
38
|
#
|
40
|
-
# @param
|
41
|
-
# @param size [Symbol] <%= one_of(Primer::
|
39
|
+
# @param scheme [Symbol] DEPRECATED. <%= one_of(Primer::Beta::Button::SCHEME_OPTIONS) %>
|
40
|
+
# @param size [Symbol] <%= one_of(Primer::Beta::Button::SIZE_OPTIONS) %>
|
42
41
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
43
|
-
def initialize(
|
44
|
-
@size =
|
42
|
+
def initialize(scheme: Primer::Beta::Button::DEFAULT_SCHEME, size: Primer::Beta::Button::DEFAULT_SIZE, **system_arguments)
|
43
|
+
@size = size
|
44
|
+
@scheme = scheme
|
45
45
|
@system_arguments = deny_tag_argument(**system_arguments)
|
46
46
|
@system_arguments[:tag] = :div
|
47
47
|
|
48
48
|
@system_arguments[:classes] = class_names(
|
49
|
-
"
|
49
|
+
"ButtonGroup",
|
50
50
|
system_arguments[:classes]
|
51
51
|
)
|
52
52
|
end
|
@@ -18,8 +18,9 @@ module Primer
|
|
18
18
|
# <%= render(Primer::Beta::CloseButton.new) %>
|
19
19
|
#
|
20
20
|
# @param type [Symbol] <%= one_of(Primer::Beta::CloseButton::TYPE_OPTIONS) %>
|
21
|
+
# @param disabled [Boolean] Whether or not the button is disabled.
|
21
22
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
22
|
-
def initialize(type: DEFAULT_TYPE, **system_arguments)
|
23
|
+
def initialize(type: DEFAULT_TYPE, disabled: false, **system_arguments)
|
23
24
|
@system_arguments = deny_tag_argument(**system_arguments)
|
24
25
|
@system_arguments[:tag] = :button
|
25
26
|
@system_arguments[:block] = false
|
@@ -29,6 +30,7 @@ module Primer
|
|
29
30
|
system_arguments[:classes]
|
30
31
|
)
|
31
32
|
@system_arguments[:"aria-label"] = aria("label", system_arguments) || "Close"
|
33
|
+
@system_arguments[:disabled] = disabled
|
32
34
|
end
|
33
35
|
|
34
36
|
def call
|
@@ -1 +1 @@
|
|
1
|
-
.Counter{background-color:var(--color-neutral-muted);border:var(--borderWidth-thin,1px) solid var(--color-counter-border);border-radius:2em;color:var(--color-fg-default);display:inline-block;font-size:var(--text-body-size-small
|
1
|
+
.Counter{background-color:var(--color-neutral-muted);border:var(--borderWidth-thin,max(1px,.0625rem)) solid var(--color-counter-border);border-radius:2em;color:var(--color-fg-default);display:inline-block;font-size:var(--text-body-size-small,.75rem);font-weight:var(--base-text-weight-medium,500);line-height:calc(var(--base-size-20,1.25rem) - var(--borderWidth-thin,max(1px, .0625rem))*2);min-width:var(--base-size-20,1.25rem);padding:0 6px;text-align:center}.Counter:empty{display:none}.Counter .octicon{opacity:.8;vertical-align:text-top}.Counter--primary{background-color:var(--color-neutral-emphasis);color:var(--color-fg-on-emphasis)}.Counter--secondary{background-color:var(--color-neutral-subtle);color:var(--color-fg-muted)}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["counter.pcss"],"names":[],"mappings":"AAEA,SASE,2CAA4C,CAC5C,
|
1
|
+
{"version":3,"sources":["counter.pcss"],"names":[],"mappings":"AAEA,SASE,2CAA4C,CAC5C,kFAAiE,CACjE,iBAAkB,CAJlB,6BAA8B,CAN9B,oBAAqB,CAGrB,4CAAsC,CACtC,8CAA2C,CAC3C,4FAAoE,CAJpE,qCAA8B,CAC9B,aAAc,CAKd,iBAcF,CATE,eACE,YACF,CAGA,kBAEE,UAAY,CADZ,uBAEF,CAGF,kBAEE,8CAA+C,CAD/C,iCAEF,CAEA,oBAEE,4CAA6C,CAD7C,2BAEF","file":"counter.css","sourcesContent":["/* Counter */\n\n.Counter {\n display: inline-block;\n min-width: var(--base-size-20); /* makes sure it's a circle with just one digit */\n padding: 0 6px;\n font-size: var(--text-body-size-small);\n font-weight: var(--base-text-weight-medium);\n line-height: calc(var(--base-size-20) - var(--borderWidth-thin) * 2); /* 20px - 2px for the borders */\n color: var(--color-fg-default);\n text-align: center;\n background-color: var(--color-neutral-muted);\n border: var(--borderWidth-thin) solid var(--color-counter-border);\n border-radius: 2em;\n\n &:empty {\n display: none;\n }\n\n /* Is this selector used? could not find any use of it */\n & .octicon {\n vertical-align: text-top;\n opacity: 0.8;\n }\n}\n\n.Counter--primary {\n color: var(--color-fg-on-emphasis);\n background-color: var(--color-neutral-emphasis);\n}\n\n.Counter--secondary {\n color: var(--color-fg-muted);\n background-color: var(--color-neutral-subtle);\n}\n"]}
|
@@ -2,15 +2,15 @@
|
|
2
2
|
|
3
3
|
.Counter {
|
4
4
|
display: inline-block;
|
5
|
-
min-width: var(--base-size-20
|
5
|
+
min-width: var(--base-size-20); /* makes sure it's a circle with just one digit */
|
6
6
|
padding: 0 6px;
|
7
|
-
font-size: var(--text-body-size-small
|
8
|
-
font-weight: var(--base-text-weight-medium
|
9
|
-
line-height: calc(var(--base-size-20
|
7
|
+
font-size: var(--text-body-size-small);
|
8
|
+
font-weight: var(--base-text-weight-medium);
|
9
|
+
line-height: calc(var(--base-size-20) - var(--borderWidth-thin) * 2); /* 20px - 2px for the borders */
|
10
10
|
color: var(--color-fg-default);
|
11
11
|
text-align: center;
|
12
12
|
background-color: var(--color-neutral-muted);
|
13
|
-
border: var(--borderWidth-thin
|
13
|
+
border: var(--borderWidth-thin) solid var(--color-counter-border);
|
14
14
|
border-radius: 2em;
|
15
15
|
|
16
16
|
&:empty {
|
@@ -15,19 +15,24 @@ module Primer
|
|
15
15
|
:dark => "details-overlay details-overlay-dark"
|
16
16
|
}.freeze
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
# @param kwargs [Hash] The same arguments as <%= link_to_system_arguments_docs %>.
|
18
|
+
attr_reader :disabled
|
19
|
+
alias disabled? disabled
|
20
|
+
|
22
21
|
renders_one :summary, lambda { |button: true, **system_arguments|
|
23
22
|
system_arguments[:tag] = :summary
|
24
23
|
system_arguments[:role] = "button"
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
if disabled?
|
26
|
+
# rubocop:disable Primer/ComponentNameMigration
|
27
|
+
Primer::ButtonComponent.new(**system_arguments, disabled: true)
|
28
|
+
# rubocop:enable Primer/ComponentNameMigration
|
29
|
+
elsif button
|
30
|
+
# rubocop:disable Primer/ComponentNameMigration
|
31
|
+
Primer::ButtonComponent.new(**system_arguments)
|
32
|
+
# rubocop:enable Primer/ComponentNameMigration
|
33
|
+
else
|
34
|
+
Primer::BaseComponent.new(**system_arguments)
|
35
|
+
end
|
31
36
|
}
|
32
37
|
|
33
38
|
# Use the Body slot as the main content to be shown when triggered by the Summary.
|
@@ -53,8 +58,9 @@ module Primer
|
|
53
58
|
#
|
54
59
|
# @param overlay [Symbol] Dictates the type of overlay to render with. <%= one_of(Primer::Beta::Details::OVERLAY_MAPPINGS.keys) %>
|
55
60
|
# @param reset [Boolean] Defaults to false. If set to true, it will remove the default caret and remove style from the summary element
|
61
|
+
# @param disabled [Boolean] Whether or not to disable the summary button.
|
56
62
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
57
|
-
def initialize(overlay: NO_OVERLAY, reset: false, **system_arguments)
|
63
|
+
def initialize(overlay: NO_OVERLAY, reset: false, disabled: false, **system_arguments)
|
58
64
|
@system_arguments = deny_tag_argument(**system_arguments)
|
59
65
|
@system_arguments[:tag] = :details
|
60
66
|
@system_arguments[:classes] = class_names(
|
@@ -62,6 +68,8 @@ module Primer
|
|
62
68
|
OVERLAY_MAPPINGS[fetch_or_fallback(OVERLAY_MAPPINGS.keys, overlay, NO_OVERLAY)],
|
63
69
|
"details-reset" => reset
|
64
70
|
)
|
71
|
+
@disabled = disabled
|
72
|
+
@summary_info = nil
|
65
73
|
end
|
66
74
|
|
67
75
|
def render?
|
@@ -1 +1 @@
|
|
1
|
-
.flash:not(.Banner){background-image:linear-gradient(var(--color-accent-subtle),var(--color-accent-subtle));border-color:var(--color-accent-muted);border-radius:var(--borderRadius-medium,6px);border-style:solid;border-width:var(--borderWidth-thin,1px);color:var(--color-fg-default);padding:var(--base-size-20,
|
1
|
+
.flash:not(.Banner){background-image:linear-gradient(var(--color-accent-subtle),var(--color-accent-subtle));border-color:var(--color-accent-muted);border-radius:var(--borderRadius-medium,6px);border-style:solid;border-width:var(--borderWidth-thin,max(1px,.0625rem));color:var(--color-fg-default);padding:var(--base-size-20,1.25rem) var(--control-medium-paddingInline-spacious,1rem);position:relative}.flash:not(.Banner) .octicon{color:var(--color-accent-fg);margin-right:var(--base-size-12,.75rem)}.flash:not(.Banner) p:last-child{margin-bottom:0}.flash-messages{margin-bottom:var(--stack-gap-spacious,1.5rem)}.flash-close:not(.Banner-close){-webkit-appearance:none;appearance:none;background:none;border:0;cursor:pointer;float:right;margin:calc(var(--control-medium-paddingInline-spacious,1rem)*-1);padding:var(--control-medium-paddingInline-spacious,1rem);text-align:center}.flash-close:not(.Banner-close):hover{opacity:.7}.flash-close:not(.Banner-close):active{opacity:.5}.flash-close:not(.Banner-close) .octicon{margin-right:0}.flash-action:not(.Banner-actions){background-clip:padding-box;float:right;margin-left:var(--stack-gap-spacious,1.5rem);margin-top:-3px}.flash-action.btn:not(.Banner-actions) .octicon{color:var(--color-fg-muted);margin-right:var(--control-small-gap,.25rem)}.flash-action.btn-primary:not(.Banner-actions){background-clip:initial}.flash-action.btn-primary:not(.Banner-actions) .octicon{color:inherit}.flash-warn:not(.Banner){background-image:linear-gradient(var(--color-attention-subtle),var(--color-attention-subtle));border-color:var(--color-attention-muted);color:var(--color-fg-default)}.flash-warn:not(.Banner) .octicon{color:var(--color-attention-fg)}.flash-error:not(.Banner){background-image:linear-gradient(var(--color-danger-subtle),var(--color-danger-subtle));border-color:var(--color-danger-muted);color:var(--color-fg-default)}.flash-error:not(.Banner) .octicon{color:var(--color-danger-fg)}.flash-success:not(.Banner){background-image:linear-gradient(var(--color-success-subtle),var(--color-success-subtle));border-color:var(--color-success-muted);color:var(--color-fg-default)}.flash-success:not(.Banner) .octicon{color:var(--color-success-fg)}.flash-full:not(.Banner){border-radius:0;border-width:var(--borderWidth-thin,max(1px,.0625rem)) 0;margin-top:calc(var(--borderWidth-thin,max(1px, .0625rem))*-1)}.flash-banner{border-left:0;border-radius:0;border-right:0;border-top:0;position:fixed;top:0;width:100%;z-index:90}.flash-banner,.flash-full{background-color:var(--color-canvas-default)}.warning{background-color:var(--color-attention-subtle);font-weight:var(--base-text-weight-semibold,600);margin-bottom:.8em;padding:.5em}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["flash.pcss"],"names":[],"mappings":"AAGA,oBASE,uFAAyF,CACzF,sCAAuC,CALvC,
|
1
|
+
{"version":3,"sources":["flash.pcss"],"names":[],"mappings":"AAGA,oBASE,uFAAyF,CACzF,sCAAuC,CALvC,4CAAyC,CAFzC,kBAAmB,CACnB,sDAAqC,CAIrC,6BAA8B,CAN9B,qFAAyE,CADzE,iBAmBF,CARE,6BACE,4BAA6B,CAC7B,uCACF,CAEA,iCACE,eACF,CAIF,gBACE,8CACF,CAGA,gCAUE,uBAAgB,CAAhB,eAAgB,CAFhB,eAAgB,CAChB,QAAS,CAJT,cAAe,CAJf,WAAY,CAEZ,iEAA+D,CAD/D,yDAAqD,CAErD,iBAmBF,CAXE,sCACE,UACF,CAEA,uCACE,UACF,CAEA,yCACE,cACF,CAIF,mCAIE,2BAA4B,CAH5B,WAAY,CAEZ,4CAAsC,CADtC,eAgBF,CAZE,gDAEE,2BAA4B,CAD5B,4CAEF,CAEA,+CACE,uBAKF,CAHE,wDACE,aACF,CAMJ,yBAEE,6FAA+F,CAC/F,yCAA0C,CAF1C,6BAOF,CAHE,kCACE,+BACF,CAGF,0BAEE,uFAAyF,CACzF,sCAAuC,CAFvC,6BAOF,CAHE,mCACE,4BACF,CAGF,4BAEE,yFAA2F,CAC3F,uCAAwC,CAFxC,6BAOF,CAHE,qCACE,6BACF,CAKF,yBAGE,eAAgB,CADhB,wDAAuC,CADvC,8DAGF,CAGA,cAOE,aAAc,CACd,eAAgB,CAFhB,cAAe,CADf,YAAa,CAJb,cAAe,CACf,KAAM,CAEN,UAAW,CADX,UAMF,CAGA,0BAEE,4CACF,CAGA,SAIE,8CAA+C,CAD/C,gDAA6C,CAD7C,kBAAoB,CADpB,YAIF","file":"flash.css","sourcesContent":["/* flash */\n\n/* Default flash */\n.flash:not(.Banner) {\n position: relative;\n padding: var(--base-size-20) var(--control-medium-paddingInline-spacious);\n border-style: solid;\n border-width: var(--borderWidth-thin);\n border-radius: var(--borderRadius-medium);\n\n /* Default color */\n color: var(--color-fg-default);\n background-image: linear-gradient(var(--color-accent-subtle), var(--color-accent-subtle));\n border-color: var(--color-accent-muted);\n\n & .octicon {\n color: var(--color-accent-fg);\n margin-right: var(--base-size-12);\n }\n\n & p:last-child {\n margin-bottom: 0;\n }\n}\n\n/* Contain the flash messages */\n.flash-messages {\n margin-bottom: var(--stack-gap-spacious);\n}\n\n/* Close button */\n.flash-close:not(.Banner-close) {\n float: right;\n padding: var(--control-medium-paddingInline-spacious);\n margin: calc(var(--control-medium-paddingInline-spacious) * -1);\n text-align: center;\n cursor: pointer;\n\n /* Undo `<button>` styles */\n background: none;\n border: 0;\n appearance: none;\n\n &:hover {\n opacity: 0.7;\n }\n\n &:active {\n opacity: 0.5;\n }\n\n & .octicon {\n margin-right: 0;\n }\n}\n\n/* Action button */\n.flash-action:not(.Banner-actions) {\n float: right;\n margin-top: -3px;\n margin-left: var(--stack-gap-spacious);\n background-clip: padding-box;\n\n &.btn .octicon {\n margin-right: var(--control-small-gap);\n color: var(--color-fg-muted);\n }\n\n &.btn-primary {\n background-clip: border-box;\n\n & .octicon {\n color: inherit;\n }\n }\n}\n\n/* Color variations */\n\n.flash-warn:not(.Banner) {\n color: var(--color-fg-default);\n background-image: linear-gradient(var(--color-attention-subtle), var(--color-attention-subtle));\n border-color: var(--color-attention-muted);\n\n & .octicon {\n color: var(--color-attention-fg);\n }\n}\n\n.flash-error:not(.Banner) {\n color: var(--color-fg-default);\n background-image: linear-gradient(var(--color-danger-subtle), var(--color-danger-subtle));\n border-color: var(--color-danger-muted);\n\n & .octicon {\n color: var(--color-danger-fg);\n }\n}\n\n.flash-success:not(.Banner) {\n color: var(--color-fg-default);\n background-image: linear-gradient(var(--color-success-subtle), var(--color-success-subtle));\n border-color: var(--color-success-muted);\n\n & .octicon {\n color: var(--color-success-fg);\n }\n}\n\n/* Layout variations */\n\n.flash-full:not(.Banner) {\n margin-top: calc(var(--borderWidth-thin) * -1);\n border-width: var(--borderWidth-thin) 0;\n border-radius: 0;\n}\n\n/* A banner rendered at the top of the page. */\n.flash-banner {\n position: fixed;\n top: 0;\n z-index: 90;\n width: 100%;\n border-top: 0;\n border-right: 0;\n border-left: 0;\n border-radius: 0;\n}\n\n/* Makes sure the background is opaque to cover any content underneath */\n.flash-full,\n.flash-banner {\n background-color: var(--color-canvas-default);\n}\n\n/* FIXME deprecate this */\n.warning {\n padding: 0.5em;\n margin-bottom: 0.8em;\n font-weight: var(--base-text-weight-semibold);\n background-color: var(--color-attention-subtle);\n}\n"]}
|
@@ -3,10 +3,10 @@
|
|
3
3
|
/* Default flash */
|
4
4
|
.flash:not(.Banner) {
|
5
5
|
position: relative;
|
6
|
-
padding: var(--base-size-20
|
6
|
+
padding: var(--base-size-20) var(--control-medium-paddingInline-spacious);
|
7
7
|
border-style: solid;
|
8
|
-
border-width: var(--borderWidth-thin
|
9
|
-
border-radius: var(--borderRadius-medium
|
8
|
+
border-width: var(--borderWidth-thin);
|
9
|
+
border-radius: var(--borderRadius-medium);
|
10
10
|
|
11
11
|
/* Default color */
|
12
12
|
color: var(--color-fg-default);
|
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
& .octicon {
|
17
17
|
color: var(--color-accent-fg);
|
18
|
-
margin-right: var(--base-size-12
|
18
|
+
margin-right: var(--base-size-12);
|
19
19
|
}
|
20
20
|
|
21
21
|
& p:last-child {
|
@@ -25,14 +25,14 @@
|
|
25
25
|
|
26
26
|
/* Contain the flash messages */
|
27
27
|
.flash-messages {
|
28
|
-
margin-bottom: var(--stack-gap-spacious
|
28
|
+
margin-bottom: var(--stack-gap-spacious);
|
29
29
|
}
|
30
30
|
|
31
31
|
/* Close button */
|
32
32
|
.flash-close:not(.Banner-close) {
|
33
33
|
float: right;
|
34
|
-
padding: var(--control-medium-paddingInline-spacious
|
35
|
-
margin: calc(var(--control-medium-paddingInline-spacious
|
34
|
+
padding: var(--control-medium-paddingInline-spacious);
|
35
|
+
margin: calc(var(--control-medium-paddingInline-spacious) * -1);
|
36
36
|
text-align: center;
|
37
37
|
cursor: pointer;
|
38
38
|
|
@@ -58,11 +58,11 @@
|
|
58
58
|
.flash-action:not(.Banner-actions) {
|
59
59
|
float: right;
|
60
60
|
margin-top: -3px;
|
61
|
-
margin-left: var(--stack-gap-spacious
|
61
|
+
margin-left: var(--stack-gap-spacious);
|
62
62
|
background-clip: padding-box;
|
63
63
|
|
64
64
|
&.btn .octicon {
|
65
|
-
margin-right: var(--control-small-gap
|
65
|
+
margin-right: var(--control-small-gap);
|
66
66
|
color: var(--color-fg-muted);
|
67
67
|
}
|
68
68
|
|
@@ -110,8 +110,8 @@
|
|
110
110
|
/* Layout variations */
|
111
111
|
|
112
112
|
.flash-full:not(.Banner) {
|
113
|
-
margin-top: calc(var(--borderWidth-thin
|
114
|
-
border-width: var(--borderWidth-thin
|
113
|
+
margin-top: calc(var(--borderWidth-thin) * -1);
|
114
|
+
border-width: var(--borderWidth-thin) 0;
|
115
115
|
border-radius: 0;
|
116
116
|
}
|
117
117
|
|
@@ -137,6 +137,6 @@
|
|
137
137
|
.warning {
|
138
138
|
padding: 0.5em;
|
139
139
|
margin-bottom: 0.8em;
|
140
|
-
font-weight: var(--base-text-weight-semibold
|
140
|
+
font-weight: var(--base-text-weight-semibold);
|
141
141
|
background-color: var(--color-attention-subtle);
|
142
142
|
}
|
@@ -5,7 +5,7 @@ module Primer
|
|
5
5
|
# Use `IconButton` to render Icon-only buttons without the default button styles.
|
6
6
|
#
|
7
7
|
# `IconButton` will always render with a tooltip unless the tag is `:summary`.
|
8
|
-
#
|
8
|
+
#
|
9
9
|
# @accessibility
|
10
10
|
# `IconButton` requires an `aria-label`, which will provide assistive technologies with an accessible label.
|
11
11
|
# The `aria-label` should describe the action to be invoked rather than the icon itself. For instance,
|
@@ -47,23 +47,25 @@ module Primer
|
|
47
47
|
# <%= render(Primer::Beta::IconButton.new(icon: :search, "aria-label": "Search", tooltip_direction: :e)) %>
|
48
48
|
#
|
49
49
|
# @param icon [String] Name of <%= link_to_octicons %> to use.
|
50
|
+
# @param tag [Symbol] <%= one_of(Primer::Beta::BaseButton::TAG_OPTIONS) %>
|
50
51
|
# @param wrapper_arguments [Hash] Optional keyword arguments to be passed to the wrapper `<div>` tag.
|
51
52
|
# @param scheme [Symbol] <%= one_of(Primer::Beta::IconButton::SCHEME_OPTIONS) %>
|
52
53
|
# @param size [Symbol] <%= one_of(Primer::Beta::Button::SIZE_OPTIONS) %>
|
53
|
-
# @param
|
54
|
+
# @param disabled [Boolean] Whether or not the button is disabled. If true, this option forces `tag:` to `:button`.
|
54
55
|
# @param type [Symbol] <%= one_of(Primer::Beta::BaseButton::TYPE_OPTIONS) %>
|
55
56
|
# @param aria-label [String] String that can be read by assistive technology. A label should be short and concise. See the accessibility section for more information.
|
56
57
|
# @param aria-description [String] String that can be read by assistive technology. A description can be longer as it is intended to provide more context and information. See the accessibility section for more information.
|
57
58
|
# @param show_tooltip [Boolean] Whether or not to show a tooltip when this button is hovered. Tooltips should only be hidden if the aria label is redundant, i.e. if the icon has a widely understood definition.
|
58
59
|
# @param tooltip_direction [Symbol] (Primer::Alpha::Tooltip::DIRECTION_DEFAULT) <%= one_of(Primer::Alpha::Tooltip::DIRECTION_OPTIONS) %>
|
59
60
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
60
|
-
def initialize(icon:, scheme: DEFAULT_SCHEME, wrapper_arguments: {}, show_tooltip: true, tooltip_direction: Primer::Alpha::Tooltip::DIRECTION_DEFAULT, size: Primer::Beta::Button::DEFAULT_SIZE, **system_arguments)
|
61
|
+
def initialize(icon:, scheme: DEFAULT_SCHEME, wrapper_arguments: {}, show_tooltip: true, tooltip_direction: Primer::Alpha::Tooltip::DIRECTION_DEFAULT, size: Primer::Beta::Button::DEFAULT_SIZE, disabled: false, **system_arguments)
|
61
62
|
@icon = icon
|
62
63
|
|
63
64
|
@wrapper_arguments = wrapper_arguments
|
64
65
|
@show_tooltip = show_tooltip
|
65
66
|
@system_arguments = system_arguments
|
66
67
|
@system_arguments[:id] ||= self.class.generate_id
|
68
|
+
@system_arguments[:disabled] = disabled
|
67
69
|
|
68
70
|
@system_arguments[:classes] = class_names(
|
69
71
|
"Button",
|
@@ -78,6 +80,8 @@ module Primer
|
|
78
80
|
@aria_label = aria("label", @system_arguments)
|
79
81
|
@aria_description = aria("description", @system_arguments)
|
80
82
|
|
83
|
+
return unless @show_tooltip
|
84
|
+
|
81
85
|
@tooltip_arguments = {
|
82
86
|
for_id: @system_arguments[:id],
|
83
87
|
direction: tooltip_direction
|
@@ -1 +1 @@
|
|
1
|
-
.labels{position:relative}.Label,.label{border:var(--borderWidth-thin,1px) solid var(--color-border-default);border-radius:2em;display:inline-block;font-size:var(--text-body-size-small
|
1
|
+
.labels{position:relative}.Label,.label{border:var(--borderWidth-thin,max(1px,.0625rem)) solid var(--color-border-default);border-radius:2em;display:inline-block;font-size:var(--text-body-size-small,.75rem);font-weight:var(--base-text-weight-medium,500);line-height:18px;padding:0 7px;white-space:nowrap}.Label:hover,.label:hover{text-decoration:none}.Label--large{line-height:22px;padding-left:10px;padding-right:10px}.Label--inline{display:inline;font-size:85%;padding:.12em .5em}.Label--primary{border-color:var(--color-neutral-emphasis);color:var(--color-fg-default)}.Label--secondary{border-color:var(--color-border-default);color:var(--color-fg-muted)}.Label--accent,.Label--info{border-color:var(--color-accent-emphasis);color:var(--color-accent-fg)}.Label--success{border-color:var(--color-success-emphasis);color:var(--color-success-fg)}.Label--attention,.Label--warning{border-color:var(--color-attention-emphasis);color:var(--color-attention-fg)}.Label--severe{border-color:var(--color-severe-emphasis);color:var(--color-severe-fg)}.Label--danger{border-color:var(--color-danger-emphasis);color:var(--color-danger-fg)}.Label--open{border-color:var(--color-open-emphasis);color:var(--color-open-fg)}.Label--closed{border-color:var(--color-closed-emphasis);color:var(--color-closed-fg)}.Label--done{border-color:var(--color-done-emphasis);color:var(--color-done-fg)}.Label--sponsors{border-color:var(--color-sponsors-emphasis);color:var(--color-sponsors-fg)}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["label.pcss"],"names":[],"mappings":"AAGA,QACE,iBACF,CAIA,cAQE,
|
1
|
+
{"version":3,"sources":["label.pcss"],"names":[],"mappings":"AAGA,QACE,iBACF,CAIA,cAQE,kFAAiE,CACjE,iBAAkB,CAPlB,oBAAqB,CAErB,4CAAsC,CACtC,8CAA2C,CAC3C,gBAAiB,CAHjB,aAAc,CAId,kBAOF,CAHE,0BACE,oBACF,CAKF,cAGE,gBAAiB,CADjB,iBAAkB,CADlB,kBAGF,CAMA,eACE,cAAe,CAEf,aAAc,CADd,kBAEF,CAIA,gBAEE,0CAA2C,CAD3C,6BAEF,CAEA,kBAEE,wCAAyC,CADzC,2BAEF,CAIA,4BAGE,yCAA0C,CAD1C,4BAEF,CAEA,gBAEE,0CAA2C,CAD3C,6BAEF,CAEA,kCAGE,4CAA6C,CAD7C,+BAEF,CAEA,eAEE,yCAA0C,CAD1C,4BAEF,CAEA,eAEE,yCAA0C,CAD1C,4BAEF,CAEA,aAEE,uCAAwC,CADxC,0BAEF,CAEA,eAEE,yCAA0C,CAD1C,4BAEF,CAEA,aAEE,uCAAwC,CADxC,0BAEF,CAEA,iBAEE,2CAA4C,CAD5C,8BAEF","file":"label.css","sourcesContent":["/* Labels */\n\n/* Provide a wrapper to ensure labels stick together */\n.labels {\n position: relative;\n}\n\n/* Default 20px */\n\n.label, /* TODO: Deprecate */\n.Label {\n display: inline-block;\n padding: 0 7px;\n font-size: var(--text-body-size-small);\n font-weight: var(--base-text-weight-medium);\n line-height: 18px;\n white-space: nowrap;\n border: var(--borderWidth-thin) solid var(--color-border-default);\n border-radius: 2em;\n\n &:hover {\n text-decoration: none;\n }\n}\n\n/* Large 24px */\n\n.Label--large {\n padding-right: 10px;\n padding-left: 10px;\n line-height: 22px;\n}\n\n/* Inline */\n\n/* Doesn't increase height of parent element\n** Can be used with different font-sizes */\n.Label--inline {\n display: inline;\n padding: 0.12em 0.5em;\n font-size: 85%;\n}\n\n/* Contrast */\n\n.Label--primary {\n color: var(--color-fg-default);\n border-color: var(--color-neutral-emphasis);\n}\n\n.Label--secondary {\n color: var(--color-fg-muted);\n border-color: var(--color-border-default);\n}\n\n/* Colors */\n\n.Label--info, /* TODO: deprecate */\n.Label--accent {\n color: var(--color-accent-fg);\n border-color: var(--color-accent-emphasis);\n}\n\n.Label--success {\n color: var(--color-success-fg);\n border-color: var(--color-success-emphasis);\n}\n\n.Label--warning, /* TODO: deprecate */\n.Label--attention {\n color: var(--color-attention-fg);\n border-color: var(--color-attention-emphasis);\n}\n\n.Label--severe {\n color: var(--color-severe-fg);\n border-color: var(--color-severe-emphasis);\n}\n\n.Label--danger {\n color: var(--color-danger-fg);\n border-color: var(--color-danger-emphasis);\n}\n\n.Label--open {\n color: var(--color-open-fg);\n border-color: var(--color-open-emphasis);\n}\n\n.Label--closed {\n color: var(--color-closed-fg);\n border-color: var(--color-closed-emphasis);\n}\n\n.Label--done {\n color: var(--color-done-fg);\n border-color: var(--color-done-emphasis);\n}\n\n.Label--sponsors {\n color: var(--color-sponsors-fg);\n border-color: var(--color-sponsors-emphasis);\n}\n"]}
|
@@ -11,11 +11,11 @@
|
|
11
11
|
.Label {
|
12
12
|
display: inline-block;
|
13
13
|
padding: 0 7px;
|
14
|
-
font-size: var(--text-body-size-small
|
15
|
-
font-weight: var(--base-text-weight-medium
|
14
|
+
font-size: var(--text-body-size-small);
|
15
|
+
font-weight: var(--base-text-weight-medium);
|
16
16
|
line-height: 18px;
|
17
17
|
white-space: nowrap;
|
18
|
-
border: var(--borderWidth-thin
|
18
|
+
border: var(--borderWidth-thin) solid var(--color-border-default);
|
19
19
|
border-radius: 2em;
|
20
20
|
|
21
21
|
&:hover {
|
@@ -1 +1 @@
|
|
1
|
-
.Popover{position:absolute;z-index:100}.Popover-message{background-color:var(--color-canvas-overlay);border:var(--borderWidth-thin,1px) solid var(--color-border-default);border-radius:var(--borderRadius-medium,6px);margin-left:auto;margin-right:auto;position:relative;width:232px}.Popover-message:after,.Popover-message:before{content:"";display:inline-block;left:50%;position:absolute}.Popover-message:before{border:8px solid #0000;border-bottom:8px solid var(--color-border-default);margin-left:-9px;top:-16px}.Popover-message:after{border:7px solid #0000;border-bottom:7px solid var(--color-canvas-overlay);margin-left:-8px;top:-14px}.Popover-message--no-caret:after,.Popover-message--no-caret:before{display:none}.Popover-message--bottom-left:after,.Popover-message--bottom-left:before,.Popover-message--bottom-right:after,.Popover-message--bottom-right:before,.Popover-message--bottom:after,.Popover-message--bottom:before{border-bottom-color:#0000;top:auto}.Popover-message--bottom-left:before,.Popover-message--bottom-right:before,.Popover-message--bottom:before{border-top-color:var(--color-border-default);bottom:-16px}.Popover-message--bottom-left:after,.Popover-message--bottom-right:after,.Popover-message--bottom:after{border-top-color:var(--color-canvas-overlay);bottom:-14px}.Popover-message--bottom-right,.Popover-message--top-right{margin-right:0;right:-9px}.Popover-message--bottom-right:after,.Popover-message--bottom-right:before,.Popover-message--top-right:after,.Popover-message--top-right:before{left:auto;margin-left:0}.Popover-message--bottom-right:before,.Popover-message--top-right:before{right:20px}.Popover-message--bottom-right:after,.Popover-message--top-right:after{right:21px}.Popover-message--bottom-left,.Popover-message--top-left{left:-9px;margin-left:0}.Popover-message--bottom-left:after,.Popover-message--bottom-left:before,.Popover-message--top-left:after,.Popover-message--top-left:before{left:24px;margin-left:0}.Popover-message--bottom-left:after,.Popover-message--top-left:after{left:25px}.Popover-message--left-bottom:after,.Popover-message--left-bottom:before,.Popover-message--left-top:after,.Popover-message--left-top:before,.Popover-message--left:after,.Popover-message--left:before,.Popover-message--right-bottom:after,.Popover-message--right-bottom:before,.Popover-message--right-top:after,.Popover-message--right-top:before,.Popover-message--right:after,.Popover-message--right:before{border-bottom-color:#0000;left:auto;margin-left:0;top:50%}.Popover-message--left-bottom:before,.Popover-message--left-top:before,.Popover-message--left:before,.Popover-message--right-bottom:before,.Popover-message--right-top:before,.Popover-message--right:before{margin-top:-9px}.Popover-message--left-bottom:after,.Popover-message--left-top:after,.Popover-message--left:after,.Popover-message--right-bottom:after,.Popover-message--right-top:after,.Popover-message--right:after{margin-top:-8px}.Popover-message--right-bottom:before,.Popover-message--right-top:before,.Popover-message--right:before{border-left-color:var(--color-border-default);right:-16px}.Popover-message--right-bottom:after,.Popover-message--right-top:after,.Popover-message--right:after{border-left-color:var(--color-canvas-overlay);right:-14px}.Popover-message--left-bottom:before,.Popover-message--left-top:before,.Popover-message--left:before{border-right-color:var(--color-border-default);left:-16px}.Popover-message--left-bottom:after,.Popover-message--left-top:after,.Popover-message--left:after{border-right-color:var(--color-canvas-overlay);left:-14px}.Popover-message--left-top:after,.Popover-message--left-top:before,.Popover-message--right-top:after,.Popover-message--right-top:before{top:24px}.Popover-message--left-bottom:after,.Popover-message--left-bottom:before,.Popover-message--right-bottom:after,.Popover-message--right-bottom:before{top:auto}.Popover-message--left-bottom:before,.Popover-message--right-bottom:before{bottom:16px}.Popover-message--left-bottom:after,.Popover-message--right-bottom:after{bottom:17px}@media (min-width:544px){.Popover-message--large{min-width:320px}}@media (max-width:767.98px){.Popover{bottom:0!important;left:0!important;position:fixed;right:0!important;top:auto!important}.Popover-message{bottom:auto;left:auto;margin:var(--stack-gap-condensed
|
1
|
+
.Popover{position:absolute;z-index:100}.Popover-message{background-color:var(--color-canvas-overlay);border:var(--borderWidth-thin,max(1px,.0625rem)) solid var(--color-border-default);border-radius:var(--borderRadius-medium,6px);margin-left:auto;margin-right:auto;position:relative;width:232px}.Popover-message:after,.Popover-message:before{content:"";display:inline-block;left:50%;position:absolute}.Popover-message:before{border:8px solid #0000;border-bottom:8px solid var(--color-border-default);margin-left:-9px;top:-16px}.Popover-message:after{border:7px solid #0000;border-bottom:7px solid var(--color-canvas-overlay);margin-left:-8px;top:-14px}.Popover-message--no-caret:after,.Popover-message--no-caret:before{display:none}.Popover-message--bottom-left:after,.Popover-message--bottom-left:before,.Popover-message--bottom-right:after,.Popover-message--bottom-right:before,.Popover-message--bottom:after,.Popover-message--bottom:before{border-bottom-color:#0000;top:auto}.Popover-message--bottom-left:before,.Popover-message--bottom-right:before,.Popover-message--bottom:before{border-top-color:var(--color-border-default);bottom:-16px}.Popover-message--bottom-left:after,.Popover-message--bottom-right:after,.Popover-message--bottom:after{border-top-color:var(--color-canvas-overlay);bottom:-14px}.Popover-message--bottom-right,.Popover-message--top-right{margin-right:0;right:-9px}.Popover-message--bottom-right:after,.Popover-message--bottom-right:before,.Popover-message--top-right:after,.Popover-message--top-right:before{left:auto;margin-left:0}.Popover-message--bottom-right:before,.Popover-message--top-right:before{right:20px}.Popover-message--bottom-right:after,.Popover-message--top-right:after{right:21px}.Popover-message--bottom-left,.Popover-message--top-left{left:-9px;margin-left:0}.Popover-message--bottom-left:after,.Popover-message--bottom-left:before,.Popover-message--top-left:after,.Popover-message--top-left:before{left:24px;margin-left:0}.Popover-message--bottom-left:after,.Popover-message--top-left:after{left:25px}.Popover-message--left-bottom:after,.Popover-message--left-bottom:before,.Popover-message--left-top:after,.Popover-message--left-top:before,.Popover-message--left:after,.Popover-message--left:before,.Popover-message--right-bottom:after,.Popover-message--right-bottom:before,.Popover-message--right-top:after,.Popover-message--right-top:before,.Popover-message--right:after,.Popover-message--right:before{border-bottom-color:#0000;left:auto;margin-left:0;top:50%}.Popover-message--left-bottom:before,.Popover-message--left-top:before,.Popover-message--left:before,.Popover-message--right-bottom:before,.Popover-message--right-top:before,.Popover-message--right:before{margin-top:-9px}.Popover-message--left-bottom:after,.Popover-message--left-top:after,.Popover-message--left:after,.Popover-message--right-bottom:after,.Popover-message--right-top:after,.Popover-message--right:after{margin-top:-8px}.Popover-message--right-bottom:before,.Popover-message--right-top:before,.Popover-message--right:before{border-left-color:var(--color-border-default);right:-16px}.Popover-message--right-bottom:after,.Popover-message--right-top:after,.Popover-message--right:after{border-left-color:var(--color-canvas-overlay);right:-14px}.Popover-message--left-bottom:before,.Popover-message--left-top:before,.Popover-message--left:before{border-right-color:var(--color-border-default);left:-16px}.Popover-message--left-bottom:after,.Popover-message--left-top:after,.Popover-message--left:after{border-right-color:var(--color-canvas-overlay);left:-14px}.Popover-message--left-top:after,.Popover-message--left-top:before,.Popover-message--right-top:after,.Popover-message--right-top:before{top:24px}.Popover-message--left-bottom:after,.Popover-message--left-bottom:before,.Popover-message--right-bottom:after,.Popover-message--right-bottom:before{top:auto}.Popover-message--left-bottom:before,.Popover-message--right-bottom:before{bottom:16px}.Popover-message--left-bottom:after,.Popover-message--right-bottom:after{bottom:17px}@media (min-width:544px){.Popover-message--large{min-width:320px}}@media (max-width:767.98px){.Popover{bottom:0!important;left:0!important;position:fixed;right:0!important;top:auto!important}.Popover-message{bottom:auto;left:auto;margin:var(--stack-gap-condensed,.5rem);right:auto;top:auto;width:auto!important}.Popover-message>.btn-octicon{padding:var(--control-medium-paddingInline-normal,.75rem)!important}.Popover-message:after,.Popover-message:before{display:none}}
|