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
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["menu.pcss"],"names":[],"mappings":"AAIA,MAGE,4CAA6C,CAC7C,
|
1
|
+
{"version":3,"sources":["menu.pcss"],"names":[],"mappings":"AAIA,MAGE,4CAA6C,CAC7C,kFAAiE,CACjE,4CAAyC,CAHzC,eAAgB,CADhB,0CAKF,CAEA,WAKE,uFAAsE,CADtE,6BAA8B,CAF9B,aAAc,CACd,6GAAmG,CAFnG,iBA+EF,CAzEE,uBACE,YAAa,CAEb,sDAKF,CAHE,qDAHA,qDAKA,CAGF,sBACE,eAAgB,CAChB,yDAMF,CAHE,mDAFA,wDAIA,CAGF,iBAEE,4CAA6C,CAD7C,oBAEF,CAEA,kBACE,2CACF,CAEA,sGAIE,4CAA6C,CAD7C,cAYF,CATE,2HAOE,kDAAmD,CAJnD,QAAS,CAGT,UAAW,CAFX,MAAO,CAHP,iBAAkB,CAClB,KAAM,CAGN,SAGF,CAGF,oBAGE,2BAA4B,CAD5B,4CAAuC,CAEvC,iBAAkB,CAHlB,UAIF,CAEA,oBACE,WAAY,CACZ,2CACF,CAEA,yBAEE,+BAAgC,CADhC,WAEF,CAEA,mBACE,UAAW,CACX,4CACF,CAGE,0BACE,4BACF,CAIJ,cAQE,uFAAsE,CADtE,6BAA8B,CAN9B,aAAc,CAId,iBAAkB,CAClB,gDAA6C,CAF7C,eAAgB,CADhB,YAAa,CADb,6GAsBF,CAdE,oBACE,oBACF,CAEA,0BACE,qDAAkD,CAClD,sDACF,CAEA,yBACE,eAAgB,CAEhB,wDAAqD,CADrD,yDAEF","file":"menu.css","sourcesContent":["/* menu */\n\n/* A menu on the side of a page, defaults to left side. e.g. github.com/about */\n\n.menu {\n margin-bottom: var(--stack-gap-normal);\n list-style: none;\n background-color: var(--color-canvas-default);\n border: var(--borderWidth-thin) solid var(--color-border-default);\n border-radius: var(--borderRadius-medium);\n}\n\n.menu-item {\n position: relative;\n display: block;\n padding: var(--control-medium-paddingInline-condensed) var(--control-medium-paddingInline-spacious);\n color: var(--color-fg-default);\n border-bottom: var(--borderWidth-thin) solid var(--color-border-muted);\n\n &:first-child {\n border-top: 0;\n border-top-left-radius: var(--borderRadius-medium);\n border-top-right-radius: var(--borderRadius-medium);\n\n &::before {\n border-top-left-radius: var(--borderRadius-medium);\n }\n }\n\n &:last-child {\n border-bottom: 0;\n border-bottom-right-radius: var(--borderRadius-medium);\n border-bottom-left-radius: var(--borderRadius-medium);\n\n &::before {\n border-bottom-left-radius: var(--borderRadius-medium);\n }\n }\n\n &:hover {\n text-decoration: none;\n background-color: var(--color-neutral-subtle);\n }\n\n &:active {\n background-color: var(--color-canvas-subtle);\n }\n\n &.selected,\n &[aria-selected='true'],\n &[aria-current]:not([aria-current='false']) {\n cursor: default;\n background-color: var(--color-menu-bg-active);\n\n &::before {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n width: 2px;\n content: '';\n background-color: var(--color-primer-border-active);\n }\n }\n\n & .octicon {\n width: 16px;\n margin-right: var(--control-medium-gap);\n color: var(--color-fg-muted);\n text-align: center;\n }\n\n & .Counter {\n float: right;\n margin-left: var(--control-small-gap);\n }\n\n & .menu-warning {\n float: right;\n color: var(--color-attention-fg);\n }\n\n & .avatar {\n float: left;\n margin-right: var(--control-small-gap);\n }\n\n &.alert {\n & .Counter {\n color: var(--color-danger-fg);\n }\n }\n}\n\n.menu-heading {\n display: block;\n padding: var(--control-medium-paddingInline-condensed) var(--control-medium-paddingInline-spacious);\n margin-top: 0;\n margin-bottom: 0;\n font-size: inherit;\n font-weight: var(--base-text-weight-semibold);\n color: var(--color-fg-default);\n border-bottom: var(--borderWidth-thin) solid var(--color-border-muted);\n\n &:hover {\n text-decoration: none;\n }\n\n &:first-child {\n border-top-left-radius: var(--borderRadius-medium);\n border-top-right-radius: var(--borderRadius-medium);\n }\n\n &:last-child {\n border-bottom: 0;\n border-bottom-right-radius: var(--borderRadius-medium);\n border-bottom-left-radius: var(--borderRadius-medium);\n }\n}\n"]}
|
@@ -3,37 +3,37 @@
|
|
3
3
|
/* A menu on the side of a page, defaults to left side. e.g. github.com/about */
|
4
4
|
|
5
5
|
.menu {
|
6
|
-
margin-bottom: var(--stack-gap-normal
|
6
|
+
margin-bottom: var(--stack-gap-normal);
|
7
7
|
list-style: none;
|
8
8
|
background-color: var(--color-canvas-default);
|
9
|
-
border: var(--borderWidth-thin
|
10
|
-
border-radius: var(--borderRadius-medium
|
9
|
+
border: var(--borderWidth-thin) solid var(--color-border-default);
|
10
|
+
border-radius: var(--borderRadius-medium);
|
11
11
|
}
|
12
12
|
|
13
13
|
.menu-item {
|
14
14
|
position: relative;
|
15
15
|
display: block;
|
16
|
-
padding: var(--control-medium-paddingInline-condensed
|
16
|
+
padding: var(--control-medium-paddingInline-condensed) var(--control-medium-paddingInline-spacious);
|
17
17
|
color: var(--color-fg-default);
|
18
|
-
border-bottom: var(--borderWidth-thin
|
18
|
+
border-bottom: var(--borderWidth-thin) solid var(--color-border-muted);
|
19
19
|
|
20
20
|
&:first-child {
|
21
21
|
border-top: 0;
|
22
|
-
border-top-left-radius: var(--borderRadius-medium
|
23
|
-
border-top-right-radius: var(--borderRadius-medium
|
22
|
+
border-top-left-radius: var(--borderRadius-medium);
|
23
|
+
border-top-right-radius: var(--borderRadius-medium);
|
24
24
|
|
25
25
|
&::before {
|
26
|
-
border-top-left-radius: var(--borderRadius-medium
|
26
|
+
border-top-left-radius: var(--borderRadius-medium);
|
27
27
|
}
|
28
28
|
}
|
29
29
|
|
30
30
|
&:last-child {
|
31
31
|
border-bottom: 0;
|
32
|
-
border-bottom-right-radius: var(--borderRadius-medium
|
33
|
-
border-bottom-left-radius: var(--borderRadius-medium
|
32
|
+
border-bottom-right-radius: var(--borderRadius-medium);
|
33
|
+
border-bottom-left-radius: var(--borderRadius-medium);
|
34
34
|
|
35
35
|
&::before {
|
36
|
-
border-bottom-left-radius: var(--borderRadius-medium
|
36
|
+
border-bottom-left-radius: var(--borderRadius-medium);
|
37
37
|
}
|
38
38
|
}
|
39
39
|
|
@@ -65,14 +65,14 @@
|
|
65
65
|
|
66
66
|
& .octicon {
|
67
67
|
width: 16px;
|
68
|
-
margin-right: var(--control-medium-gap
|
68
|
+
margin-right: var(--control-medium-gap);
|
69
69
|
color: var(--color-fg-muted);
|
70
70
|
text-align: center;
|
71
71
|
}
|
72
72
|
|
73
73
|
& .Counter {
|
74
74
|
float: right;
|
75
|
-
margin-left: var(--control-small-gap
|
75
|
+
margin-left: var(--control-small-gap);
|
76
76
|
}
|
77
77
|
|
78
78
|
& .menu-warning {
|
@@ -82,7 +82,7 @@
|
|
82
82
|
|
83
83
|
& .avatar {
|
84
84
|
float: left;
|
85
|
-
margin-right: var(--control-small-gap
|
85
|
+
margin-right: var(--control-small-gap);
|
86
86
|
}
|
87
87
|
|
88
88
|
&.alert {
|
@@ -94,26 +94,26 @@
|
|
94
94
|
|
95
95
|
.menu-heading {
|
96
96
|
display: block;
|
97
|
-
padding: var(--control-medium-paddingInline-condensed
|
97
|
+
padding: var(--control-medium-paddingInline-condensed) var(--control-medium-paddingInline-spacious);
|
98
98
|
margin-top: 0;
|
99
99
|
margin-bottom: 0;
|
100
100
|
font-size: inherit;
|
101
|
-
font-weight: var(--base-text-weight-semibold
|
101
|
+
font-weight: var(--base-text-weight-semibold);
|
102
102
|
color: var(--color-fg-default);
|
103
|
-
border-bottom: var(--borderWidth-thin
|
103
|
+
border-bottom: var(--borderWidth-thin) solid var(--color-border-muted);
|
104
104
|
|
105
105
|
&:hover {
|
106
106
|
text-decoration: none;
|
107
107
|
}
|
108
108
|
|
109
109
|
&:first-child {
|
110
|
-
border-top-left-radius: var(--borderRadius-medium
|
111
|
-
border-top-right-radius: var(--borderRadius-medium
|
110
|
+
border-top-left-radius: var(--borderRadius-medium);
|
111
|
+
border-top-right-radius: var(--borderRadius-medium);
|
112
112
|
}
|
113
113
|
|
114
114
|
&:last-child {
|
115
115
|
border-bottom: 0;
|
116
|
-
border-bottom-right-radius: var(--borderRadius-medium
|
117
|
-
border-bottom-left-radius: var(--borderRadius-medium
|
116
|
+
border-bottom-right-radius: var(--borderRadius-medium);
|
117
|
+
border-bottom-left-radius: var(--borderRadius-medium);
|
118
118
|
}
|
119
119
|
}
|
@@ -21,7 +21,7 @@ const overlayStack = [];
|
|
21
21
|
function clickHandler(event) {
|
22
22
|
const target = event.target;
|
23
23
|
const button = target === null || target === void 0 ? void 0 : target.closest('button');
|
24
|
-
if (!button)
|
24
|
+
if (!button || button.hasAttribute('disabled') || button.getAttribute('aria-disabled') === 'true')
|
25
25
|
return;
|
26
26
|
// If the user is clicking a valid dialog trigger
|
27
27
|
let dialogId = button === null || button === void 0 ? void 0 : button.getAttribute('data-show-dialog-id');
|
@@ -31,6 +31,10 @@ function clickHandler(event) {
|
|
31
31
|
if (dialog instanceof ModalDialogElement) {
|
32
32
|
dialog.openButton = button;
|
33
33
|
dialog.show();
|
34
|
+
// A buttons default behaviour in some browsers it to send a pointer event
|
35
|
+
// If the behaviour is allowed through the dialog will be shown but then
|
36
|
+
// quickly hidden- as if it were never shown. This prevents that.
|
37
|
+
event.preventDefault();
|
34
38
|
return;
|
35
39
|
}
|
36
40
|
}
|
@@ -96,6 +100,7 @@ export class ModalDialogElement extends HTMLElement {
|
|
96
100
|
if (this.open)
|
97
101
|
return;
|
98
102
|
this.setAttribute('open', '');
|
103
|
+
this.setAttribute('aria-disabled', 'false');
|
99
104
|
(_a = __classPrivateFieldGet(this, _ModalDialogElement_instances, "a", _ModalDialogElement_overlayBackdrop_get)) === null || _a === void 0 ? void 0 : _a.classList.remove('Overlay--hidden');
|
100
105
|
document.body.style.paddingRight = `${window.innerWidth - document.body.clientWidth}px`;
|
101
106
|
document.body.style.overflow = 'hidden';
|
@@ -109,6 +114,7 @@ export class ModalDialogElement extends HTMLElement {
|
|
109
114
|
if (!this.open)
|
110
115
|
return;
|
111
116
|
this.removeAttribute('open');
|
117
|
+
this.setAttribute('aria-disabled', 'true');
|
112
118
|
(_b = __classPrivateFieldGet(this, _ModalDialogElement_instances, "a", _ModalDialogElement_overlayBackdrop_get)) === null || _b === void 0 ? void 0 : _b.classList.add('Overlay--hidden');
|
113
119
|
document.body.style.paddingRight = '0';
|
114
120
|
document.body.style.overflow = 'initial';
|
@@ -160,14 +166,21 @@ _ModalDialogElement_focusAbortController = new WeakMap(), _ModalDialogElement_in
|
|
160
166
|
return;
|
161
167
|
if (event.isComposing)
|
162
168
|
return;
|
169
|
+
if (!this.open)
|
170
|
+
return;
|
163
171
|
switch (event.key) {
|
164
172
|
case 'Escape':
|
165
|
-
|
166
|
-
|
167
|
-
|
173
|
+
this.close();
|
174
|
+
event.preventDefault();
|
175
|
+
event.stopPropagation();
|
176
|
+
break;
|
177
|
+
case 'Enter': {
|
178
|
+
const target = event.target;
|
179
|
+
if (target.getAttribute('data-close-dialog-id') === this.id) {
|
168
180
|
event.stopPropagation();
|
169
181
|
}
|
170
182
|
break;
|
183
|
+
}
|
171
184
|
}
|
172
185
|
};
|
173
186
|
if (!window.customElements.get('modal-dialog')) {
|
@@ -13,7 +13,7 @@ function clickHandler(event: Event) {
|
|
13
13
|
const target = event.target as HTMLElement
|
14
14
|
const button = target?.closest('button')
|
15
15
|
|
16
|
-
if (!button) return
|
16
|
+
if (!button || button.hasAttribute('disabled') || button.getAttribute('aria-disabled') === 'true') return
|
17
17
|
|
18
18
|
// If the user is clicking a valid dialog trigger
|
19
19
|
let dialogId = button?.getAttribute('data-show-dialog-id')
|
@@ -23,6 +23,10 @@ function clickHandler(event: Event) {
|
|
23
23
|
if (dialog instanceof ModalDialogElement) {
|
24
24
|
dialog.openButton = button
|
25
25
|
dialog.show()
|
26
|
+
// A buttons default behaviour in some browsers it to send a pointer event
|
27
|
+
// If the behaviour is allowed through the dialog will be shown but then
|
28
|
+
// quickly hidden- as if it were never shown. This prevents that.
|
29
|
+
event.preventDefault()
|
26
30
|
return
|
27
31
|
}
|
28
32
|
}
|
@@ -96,6 +100,7 @@ export class ModalDialogElement extends HTMLElement {
|
|
96
100
|
if (value) {
|
97
101
|
if (this.open) return
|
98
102
|
this.setAttribute('open', '')
|
103
|
+
this.setAttribute('aria-disabled', 'false')
|
99
104
|
this.#overlayBackdrop?.classList.remove('Overlay--hidden')
|
100
105
|
document.body.style.paddingRight = `${window.innerWidth - document.body.clientWidth}px`
|
101
106
|
document.body.style.overflow = 'hidden'
|
@@ -107,6 +112,7 @@ export class ModalDialogElement extends HTMLElement {
|
|
107
112
|
} else {
|
108
113
|
if (!this.open) return
|
109
114
|
this.removeAttribute('open')
|
115
|
+
this.setAttribute('aria-disabled', 'true')
|
110
116
|
this.#overlayBackdrop?.classList.add('Overlay--hidden')
|
111
117
|
document.body.style.paddingRight = '0'
|
112
118
|
document.body.style.overflow = 'initial'
|
@@ -161,15 +167,22 @@ export class ModalDialogElement extends HTMLElement {
|
|
161
167
|
#keydown(event: Event) {
|
162
168
|
if (!(event instanceof KeyboardEvent)) return
|
163
169
|
if (event.isComposing) return
|
170
|
+
if (!this.open) return
|
164
171
|
|
165
172
|
switch (event.key) {
|
166
173
|
case 'Escape':
|
167
|
-
|
168
|
-
|
169
|
-
|
174
|
+
this.close()
|
175
|
+
event.preventDefault()
|
176
|
+
event.stopPropagation()
|
177
|
+
break
|
178
|
+
case 'Enter': {
|
179
|
+
const target = event.target as HTMLElement
|
180
|
+
|
181
|
+
if (target.getAttribute('data-close-dialog-id') === this.id) {
|
170
182
|
event.stopPropagation()
|
171
183
|
}
|
172
184
|
break
|
185
|
+
}
|
173
186
|
}
|
174
187
|
}
|
175
188
|
}
|
@@ -203,6 +203,9 @@ _NavListElement_instances = new WeakSet(), _NavListElement_parseHTML = function
|
|
203
203
|
if (currentlySelectedItem)
|
204
204
|
__classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_deselect).call(this, currentlySelectedItem);
|
205
205
|
navItem.classList.add('ActionListItem--navActive');
|
206
|
+
if (navItem.children.length > 0) {
|
207
|
+
navItem.children[0].setAttribute('aria-current', 'page');
|
208
|
+
}
|
206
209
|
const parentMenu = __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_findParentMenu).call(this, navItem);
|
207
210
|
if (parentMenu) {
|
208
211
|
this.expandItem(parentMenu);
|
@@ -210,6 +213,9 @@ _NavListElement_instances = new WeakSet(), _NavListElement_parseHTML = function
|
|
210
213
|
}
|
211
214
|
}, _NavListElement_deselect = function _NavListElement_deselect(navItem) {
|
212
215
|
navItem.classList.remove('ActionListItem--navActive');
|
216
|
+
if (navItem.children.length > 0) {
|
217
|
+
navItem.children[0].removeAttribute('aria-current');
|
218
|
+
}
|
213
219
|
const parentMenu = __classPrivateFieldGet(this, _NavListElement_instances, "m", _NavListElement_findParentMenu).call(this, navItem);
|
214
220
|
if (parentMenu) {
|
215
221
|
this.collapseItem(parentMenu);
|
@@ -30,43 +30,62 @@ module Primer
|
|
30
30
|
).with_content(title)
|
31
31
|
}
|
32
32
|
|
33
|
-
#
|
33
|
+
# @!parse
|
34
|
+
# # Adds an item to the list.
|
35
|
+
# #
|
36
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::NavList::Item) %>.
|
37
|
+
# def with_group(**system_arguments, &block)
|
38
|
+
# end
|
39
|
+
|
40
|
+
# @!parse
|
41
|
+
# # Adds a group to the list. A group is a list of links and a (required) heading.
|
42
|
+
# #
|
43
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::NavList::Group) %>.
|
44
|
+
# def with_group(**system_arguments, &block)
|
45
|
+
# end
|
46
|
+
|
47
|
+
# @!parse
|
48
|
+
# # Adds a divider to the list. Dividers visually separate items and groups.
|
49
|
+
# #
|
50
|
+
# # @param system_arguments [Hash] The arguments accepted by <%= link_to_component(Primer::Alpha::ActionList::Divider) %>.
|
51
|
+
# def with_divider(**system_arguments, &block)
|
52
|
+
# end
|
53
|
+
|
54
|
+
# Items. Items can be individual items, dividers, or groups. See the documentation for `#with_item`, `#with_divider`, and `#with_group` respectively for more information.
|
34
55
|
#
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
&block
|
69
|
-
)
|
56
|
+
renders_many :items, types: {
|
57
|
+
item: {
|
58
|
+
renders: lambda { |component_klass: Primer::Alpha::NavList::Item, **system_arguments, &block|
|
59
|
+
# dummy group just so we have something to pass as the list: argument below
|
60
|
+
@top_level_group ||= Primer::Alpha::NavList::Group.new(selected_item_id: @selected_item_id)
|
61
|
+
|
62
|
+
component_klass.new(
|
63
|
+
list: @top_level_group,
|
64
|
+
selected_item_id: @selected_item_id,
|
65
|
+
**system_arguments,
|
66
|
+
&block
|
67
|
+
)
|
68
|
+
},
|
69
|
+
|
70
|
+
as: :item
|
71
|
+
},
|
72
|
+
|
73
|
+
divider: {
|
74
|
+
renders: Primer::Alpha::NavList::Divider,
|
75
|
+
as: :divider
|
76
|
+
},
|
77
|
+
|
78
|
+
group: {
|
79
|
+
renders: lambda { |**system_arguments, &block|
|
80
|
+
Primer::Alpha::NavList::Group.new(
|
81
|
+
selected_item_id: @selected_item_id,
|
82
|
+
**system_arguments,
|
83
|
+
&block
|
84
|
+
)
|
85
|
+
},
|
86
|
+
|
87
|
+
as: :group
|
88
|
+
}
|
70
89
|
}
|
71
90
|
|
72
91
|
# @example Items and headings
|
@@ -220,6 +220,10 @@ export class NavListElement extends HTMLElement {
|
|
220
220
|
|
221
221
|
navItem.classList.add('ActionListItem--navActive')
|
222
222
|
|
223
|
+
if (navItem.children.length > 0) {
|
224
|
+
navItem.children[0].setAttribute('aria-current', 'page')
|
225
|
+
}
|
226
|
+
|
223
227
|
const parentMenu = this.#findParentMenu(navItem)
|
224
228
|
|
225
229
|
if (parentMenu) {
|
@@ -231,6 +235,10 @@ export class NavListElement extends HTMLElement {
|
|
231
235
|
#deselect(navItem: HTMLElement) {
|
232
236
|
navItem.classList.remove('ActionListItem--navActive')
|
233
237
|
|
238
|
+
if (navItem.children.length > 0) {
|
239
|
+
navItem.children[0].removeAttribute('aria-current')
|
240
|
+
}
|
241
|
+
|
234
242
|
const parentMenu = this.#findParentMenu(navItem)
|
235
243
|
|
236
244
|
if (parentMenu) {
|
@@ -8,8 +8,10 @@
|
|
8
8
|
<h2 class="Overlay-description"><%= @subtitle %></h2>
|
9
9
|
<% end %>
|
10
10
|
</div>
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
<% if @overlay_id %>
|
12
|
+
<div class="Overlay-actionWrap">
|
13
|
+
<%= render Primer::Beta::CloseButton.new(classes: "Overlay-closeButton", "popovertarget": @overlay_id, "popovertargetaction": "hide") %>
|
14
|
+
</div>
|
15
|
+
<% end %>
|
14
16
|
</div>
|
15
17
|
<% end %>
|
@@ -14,7 +14,8 @@ module Primer
|
|
14
14
|
SIZE_OPTIONS = SIZE_MAPPINGS.keys
|
15
15
|
|
16
16
|
# @param title [String] Describes the content of the Overlay.
|
17
|
-
# @param subtitle [String] Provides
|
17
|
+
# @param subtitle [String] Provides additional context for the Overlay, also setting the `aria-describedby` attribute.
|
18
|
+
# @param overlay_id [String] Provides the id of the overlay element so the close button can close it
|
18
19
|
# @param size [Symbol] The size of the Header. <%= one_of(Primer::Alpha::Overlay::Header::SIZE_OPTIONS) %>
|
19
20
|
# @param divider [Boolean] Show a divider between the header and body.
|
20
21
|
# @param visually_hide_title [Boolean] Visually hide the `title` while maintaining a label for assistive technologies.
|
@@ -22,12 +23,14 @@ module Primer
|
|
22
23
|
def initialize(
|
23
24
|
id:,
|
24
25
|
title:,
|
26
|
+
overlay_id: nil,
|
25
27
|
subtitle: nil,
|
26
28
|
size: DEFAULT_SIZE,
|
27
29
|
divider: false,
|
28
30
|
visually_hide_title: false,
|
29
31
|
**system_arguments
|
30
32
|
)
|
33
|
+
@overlay_id = overlay_id
|
31
34
|
@id = id
|
32
35
|
@title = title
|
33
36
|
@subtitle = subtitle
|
@@ -1 +1 @@
|
|
1
|
-
.Overlay[popover]{border-width:0;min-width:192px;padding:0;position:absolute}.Overlay[popover]:not(
|
1
|
+
.Overlay[popover]{border-width:0;inset:auto;min-width:192px;padding:0;position:absolute}.Overlay[popover]:not(.\:popover-open){display:none}@supports selector(:popover-open){.Overlay[popover]:not(.\:popover-open){display:revert}}@supports selector(:open){.Overlay[popover]:not(.\:popover-open){display:revert}}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["overlay.pcss"],"names":[],"mappings":"AAAA,kBACE,cAAe,
|
1
|
+
{"version":3,"sources":["overlay.pcss"],"names":[],"mappings":"AAAA,kBACE,cAAe,CAIf,UAAW,CADX,eAAgB,CAFhB,SAAU,CACV,iBAGF,CAEA,uCACE,YACF,CAGA,kCACE,uCACE,cACF,CACF,CAGA,0BACE,uCACI,cACJ,CACF","file":"overlay.css","sourcesContent":[".Overlay[popover] {\n border-width: 0;\n padding: 0;\n position: absolute;\n min-width: 192px;\n inset: auto;\n}\n\n.Overlay[popover]:not(.\\:popover-open) {\n display: none;\n}\n\n/* This reverts the declaration above for native popover, where `:popover-open` is supported */\n@supports selector(:popover-open) {\n .Overlay[popover]:not(.\\:popover-open) {\n display: revert;\n }\n}\n\n/* This reverts the declaration above for native popover, where `:open` is supported (Chrome 113, Safari TP) */\n@supports selector(:open) {\n .Overlay[popover]:not(.\\:popover-open) {\n display: revert;\n }\n}\n"]}
|
@@ -3,13 +3,23 @@
|
|
3
3
|
padding: 0;
|
4
4
|
position: absolute;
|
5
5
|
min-width: 192px;
|
6
|
+
inset: auto;
|
6
7
|
}
|
7
8
|
|
8
|
-
|
9
|
-
.Overlay[popover]:not(:open) {
|
9
|
+
.Overlay[popover]:not(.\:popover-open) {
|
10
10
|
display: none;
|
11
11
|
}
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
/* This reverts the declaration above for native popover, where `:popover-open` is supported */
|
14
|
+
@supports selector(:popover-open) {
|
15
|
+
.Overlay[popover]:not(.\:popover-open) {
|
16
|
+
display: revert;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
/* This reverts the declaration above for native popover, where `:open` is supported (Chrome 113, Safari TP) */
|
21
|
+
@supports selector(:open) {
|
22
|
+
.Overlay[popover]:not(.\:popover-open) {
|
23
|
+
display: revert;
|
24
|
+
}
|
15
25
|
}
|
@@ -94,6 +94,7 @@ module Primer
|
|
94
94
|
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
|
95
95
|
renders_one :header, lambda { |divider: false, size: :medium, visually_hide_title: @visually_hide_title, **system_arguments|
|
96
96
|
Primer::Alpha::Overlay::Header.new(
|
97
|
+
overlay_id: @id,
|
97
98
|
id: title_id,
|
98
99
|
title: @title,
|
99
100
|
subtitle: @subtitle,
|
@@ -1 +1 @@
|
|
1
|
-
.SegmentedControl{background-color:var(--color-segmented-control-bg);border-radius:var(--borderRadius-medium,6px);display:inline-flex;list-style:none}.SegmentedControl-item{border:var(--borderWidth-thin,max(1px,.0625rem)) solid #0000;border-radius:var(--borderRadius-medium,6px);display:inline-flex;padding:var(--control-xsmall-paddingInline-condensed
|
1
|
+
.SegmentedControl{background-color:var(--color-segmented-control-bg);border-radius:var(--borderRadius-medium,6px);display:inline-flex;list-style:none}.SegmentedControl-item{border:var(--borderWidth-thin,max(1px,.0625rem)) solid #0000;border-radius:var(--borderRadius-medium,6px);display:inline-flex;padding:var(--control-xsmall-paddingInline-condensed,.25rem);position:relative}.SegmentedControl-item.SegmentedControl-item--selected{background-color:var(--color-segmented-control-button-bg);border-color:var(--color-segmented-control-button-selected-border)}.SegmentedControl-item.SegmentedControl-item--selected .Button{font-weight:var(--base-text-weight-semibold,600)}.SegmentedControl-item.SegmentedControl-item--selected .Button:hover{background-color:initial}.SegmentedControl-item.SegmentedControl-item--selected:before{border-color:#0000!important}.SegmentedControl-item.SegmentedControl-item--selected+.SegmentedControl-item:before{border-color:#0000}.SegmentedControl-item .Button-label[data-content]:before{content:attr(data-content);display:block;font-weight:var(--base-text-weight-semibold,600);height:0;visibility:hidden}.SegmentedControl-item:not(:first-child):before{border-left:var(--borderWidth-thin,max(1px,.0625rem)) solid var(--color-border-default);content:"";inset:0 0 0 -1px;margin-bottom:var(--control-medium-paddingBlock,.375rem);margin-top:var(--control-medium-paddingBlock,.375rem);position:absolute}.SegmentedControl-item .Button{border:0;color:var(--color-btn-text);font-weight:var(--base-text-weight-normal,400);transition:none}.SegmentedControl-item .Button:focus-visible{border-radius:calc(var(--borderRadius-medium,6px) - 5px);outline-offset:calc(var(--control-xsmall-paddingInline-condensed,.25rem) - var(--borderWidth-thin,max(1px, .0625rem)))}.SegmentedControl-item .Button--small{height:calc(var(--control-small-size,1.75rem) - var(--control-xsmall-paddingInline-condensed,.25rem)*2 - var(--borderWidth-thin,max(1px, .0625rem))*2);padding:0 calc(var(--control-small-paddingInline-condensed,.5rem) - var(--control-xsmall-paddingInline-condensed,.25rem))}.SegmentedControl-item .Button--small.Button--iconOnly{width:calc(var(--control-medium-size,2rem) - var(--control-xsmall-paddingInline-condensed,.25rem)*2 - var(--borderWidth-thin,max(1px, .0625rem))*2)}.SegmentedControl-item .Button--small.Button--iconOnly:before{content:"";height:100%;left:50%;min-height:var(--control-medium-size,2rem);min-width:var(--control-medium-size,2rem);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100%}.SegmentedControl-item .Button--medium{height:calc(var(--control-medium-size,2rem) - var(--control-xsmall-paddingInline-condensed,.25rem)*2 - var(--borderWidth-thin,max(1px, .0625rem))*2);padding:0 calc(var(--control-medium-paddingInline-normal,.75rem) - var(--control-xsmall-paddingInline-condensed,.25rem))}.SegmentedControl-item .Button--medium.Button--iconOnly{width:calc(var(--control-medium-size,2rem) - var(--control-xsmall-paddingInline-condensed,.25rem)*2 - var(--borderWidth-thin,max(1px, .0625rem))*2)}.SegmentedControl-item .Button--medium.Button--iconOnly:before{content:"";height:100%;left:50%;min-height:var(--control-medium-size,2rem);min-width:var(--control-medium-size,2rem);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100%}.SegmentedControl-item .Button--large{height:calc(var(--control-large-size,2.5rem) - var(--control-xsmall-paddingInline-condensed,.25rem)*2 - var(--borderWidth-thin,max(1px, .0625rem))*2);padding:0 calc(var(--control-large-paddingInline-spacious,1rem) - var(--control-xsmall-paddingInline-condensed,.25rem))}.SegmentedControl-item .Button--large.Button--iconOnly{width:calc(var(--control-large-size,2.5rem) - var(--control-xsmall-paddingInline-condensed,.25rem)*2 - var(--borderWidth-thin,max(1px, .0625rem))*2)}.SegmentedControl-item .Button--large.Button--iconOnly:before{content:"";height:100%;left:50%;min-height:var(--control-large-size,2.5rem);min-width:var(--control-large-size,2.5rem);position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:100%}.SegmentedControl-item .Button--iconOnly{padding:initial}.SegmentedControl-item .Button--invisible.Button--invisible-noVisuals .Button-label{color:var(--color-btn-text)}.SegmentedControl--fullWidth{display:flex}.SegmentedControl--fullWidth .SegmentedControl-item{flex:1;justify-content:center}.SegmentedControl--fullWidth .Button--iconOnly,.SegmentedControl--fullWidth .Button-withTooltip{width:100%}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["segmented_control.pcss","<no source>"],"names":[],"mappings":"AAEA,kBAGE,kDAAmD,CACnD,
|
1
|
+
{"version":3,"sources":["segmented_control.pcss","<no source>"],"names":[],"mappings":"AAEA,kBAGE,kDAAmD,CACnD,4CAAyC,CAHzC,mBAAoB,CACpB,eAGF,CAEA,uBAGE,4DAAiD,CACjD,4CAAyC,CAFzC,mBAAoB,CAGpB,4DAAsD,CAJtD,iBAwHF,CAjHE,uDACE,yDAA0D,CAC1D,kEAiBF,CAfE,+DACE,gDAKF,CAHE,qEACE,wBACF,CAGF,8DACE,4BACF,CAEA,qFACE,kBACF,CAIF,0DAKE,0BAA2B,CAJ3B,aAAc,CAEd,gDAA6C,CAD7C,QAAS,CAET,iBAEF,CAIE,gDAME,uFAAsE,CADtE,UAAW,CAHX,gBAAiB,CAEjB,wDAAiD,CADjD,qDAA8C,CAF9C,iBAMF,CAIF,+BACE,QAAS,CAGT,2BAA4B,CAF5B,8CAA2C,CAC3C,eAOF,CAJE,6CAEE,wDAAqD,CADrD,sHAEF,CAGF,sCACE,sJAEC,CACD,yHAWF,CATE,uDACE,mJAOF,CAFI,8DCpFR,WAAA,YAAA,SAAA,2CAAA,0CAAA,kBAAA,QAAA,4CAAA,UDoFoF,CAKlF,uCACE,oJAEC,CACD,wHAWF,CATE,wDACE,mJAOF,CAFI,+DCrGR,WAAA,YAAA,SAAA,2CAAA,0CAAA,kBAAA,QAAA,4CAAA,UDqGoF,CAKlF,sCACE,qJAEC,CACD,uHAWF,CATE,uDACE,oJAOF,CAFI,8DCtHR,WAAA,YAAA,SAAA,4CAAA,2CAAA,kBAAA,QAAA,4CAAA,UDsHkF,CAKhF,yCACE,eACF,CAEA,oFACE,2BACF,CAIF,6BACE,YAYF,CAVE,oDACE,MAAO,CACP,sBACF,CAGA,gGAEE,UACF","file":"segmented_control.css","sourcesContent":["/* SegmentedControl */\n\n.SegmentedControl {\n display: inline-flex;\n list-style: none;\n background-color: var(--color-segmented-control-bg);\n border-radius: var(--borderRadius-medium);\n}\n\n.SegmentedControl-item {\n position: relative;\n display: inline-flex;\n border: var(--borderWidth-thin) solid transparent;\n border-radius: var(--borderRadius-medium);\n padding: var(--control-xsmall-paddingInline-condensed);\n\n /* Selected ---------------------------------------- */\n &.SegmentedControl-item--selected {\n background-color: var(--color-segmented-control-button-bg);\n border-color: var(--color-segmented-control-button-selected-border);\n\n & .Button {\n font-weight: var(--base-text-weight-semibold);\n\n &:hover {\n background-color: transparent;\n }\n }\n\n &::before {\n border-color: transparent !important;\n }\n\n & + .SegmentedControl-item::before {\n border-color: transparent;\n }\n }\n\n /* renders a visibly hidden \"copy\" of the text in bold, reserving box space for when text becomes bold on selected */\n & .Button-label[data-content]::before {\n display: block;\n height: 0;\n font-weight: var(--base-text-weight-semibold);\n visibility: hidden;\n content: attr(data-content);\n }\n\n /* Separator lines */\n &:not(:first-child) {\n &::before {\n position: absolute;\n inset: 0 0 0 -1px;\n margin-top: var(--control-medium-paddingBlock);\n margin-bottom: var(--control-medium-paddingBlock);\n content: '';\n border-left: var(--borderWidth-thin) solid var(--color-border-default);\n }\n }\n\n /* Button ----------------------------------------- */\n & .Button {\n border: 0;\n font-weight: var(--base-text-weight-normal);\n transition: none;\n color: var(--color-btn-text);\n\n &:focus-visible {\n outline-offset: calc(var(--control-xsmall-paddingInline-condensed) - var(--borderWidth-thin));\n border-radius: calc(var(--borderRadius-medium) - 5px);\n }\n }\n\n & .Button--small {\n height: calc(\n var(--control-small-size) - var(--control-xsmall-paddingInline-condensed) * 2 - var(--borderWidth-thin) * 2\n );\n padding: 0 calc(var(--control-small-paddingInline-condensed) - var(--control-xsmall-paddingInline-condensed));\n\n &.Button--iconOnly {\n width: calc(\n var(--control-medium-size) - var(--control-xsmall-paddingInline-condensed) * 2 - var(--borderWidth-thin) * 2\n );\n\n &::before {\n @mixin minTouchTarget var(--control-medium-size), var(--control-medium-size);\n }\n }\n }\n\n & .Button--medium {\n height: calc(\n var(--control-medium-size) - var(--control-xsmall-paddingInline-condensed) * 2 - var(--borderWidth-thin) * 2\n );\n padding: 0 calc(var(--control-medium-paddingInline-normal) - var(--control-xsmall-paddingInline-condensed));\n\n &.Button--iconOnly {\n width: calc(\n var(--control-medium-size) - var(--control-xsmall-paddingInline-condensed) * 2 - var(--borderWidth-thin) * 2\n );\n\n &::before {\n @mixin minTouchTarget var(--control-medium-size), var(--control-medium-size);\n }\n }\n }\n\n & .Button--large {\n height: calc(\n var(--control-large-size) - var(--control-xsmall-paddingInline-condensed) * 2 - var(--borderWidth-thin) * 2\n );\n padding: 0 calc(var(--control-large-paddingInline-spacious) - var(--control-xsmall-paddingInline-condensed));\n\n &.Button--iconOnly {\n width: calc(\n var(--control-large-size) - var(--control-xsmall-paddingInline-condensed) * 2 - var(--borderWidth-thin) * 2\n );\n\n &::before {\n @mixin minTouchTarget var(--control-large-size), var(--control-large-size);\n }\n }\n }\n\n & .Button--iconOnly {\n padding: initial;\n }\n\n & .Button--invisible.Button--invisible-noVisuals .Button-label {\n color: var(--color-btn-text);\n }\n}\n\n/* fullWidth */\n.SegmentedControl--fullWidth {\n display: flex;\n\n & .SegmentedControl-item {\n flex: 1;\n justify-content: center;\n }\n\n /* is .Button-withTooltip used anywhere? can't find use of it */\n & .Button--iconOnly,\n & .Button-withTooltip {\n width: 100%;\n }\n}\n",null]}
|