Commit 2475e8bc authored by Ezekiel Kigbo's avatar Ezekiel Kigbo

Merge branch 'bootstrap-button-migration' into 'master'

Bootstrap button migration

See merge request gitlab-org/gitlab!56968
parents 3bc07e26 a01441e7
...@@ -446,7 +446,7 @@ export class AwardsHandler { ...@@ -446,7 +446,7 @@ export class AwardsHandler {
createAwardButtonForVotesBlock(votesBlock, emojiName) { createAwardButtonForVotesBlock(votesBlock, emojiName) {
const buttonHtml = ` const buttonHtml = `
<button class="btn award-control js-emoji-btn has-tooltip active" title="You"> <button class="gl-button btn btn-default award-control js-emoji-btn has-tooltip active" title="You">
${this.emoji.glEmojiTag(emojiName)} ${this.emoji.glEmojiTag(emojiName)}
<span class="award-control-text js-counter">1</span> <span class="award-control-text js-counter">1</span>
</button> </button>
......
...@@ -9,8 +9,8 @@ export default () => { ...@@ -9,8 +9,8 @@ export default () => {
e.preventDefault(); e.preventDefault();
document.querySelector('.js-material-changer.active').classList.remove('active'); document.querySelector('.js-material-changer.selected').classList.remove('selected');
target.classList.add('active'); target.classList.add('selected');
target.blur(); target.blur();
viewer.changeObjectMaterials(target.dataset.type); viewer.changeObjectMaterials(target.dataset.type);
......
...@@ -122,12 +122,8 @@ ...@@ -122,12 +122,8 @@
} }
} }
.award-control { .gl-button.btn.award-control {
margin: 4px 8px 4px 0; margin: 4px 8px 4px 0;
outline: 0;
position: relative;
display: block;
float: left;
&.disabled { &.disabled {
cursor: default; cursor: default;
...@@ -145,15 +141,6 @@ ...@@ -145,15 +141,6 @@
&:hover, &:hover,
&:active, &:active,
&.is-active { &.is-active {
background-color: $blue-50;
border-color: $blue-200;
box-shadow: none;
outline: 0;
.award-control-icon svg {
fill: $blue-500;
}
.award-control-icon-neutral { .award-control-icon-neutral {
opacity: 0; opacity: 0;
} }
...@@ -164,6 +151,14 @@ ...@@ -164,6 +151,14 @@
} }
} }
&.active,
&.is-active,
&:active {
background-color: $blue-50;
border-color: $blue-200;
box-shadow: inset 0 0 2px $blue-200;
}
&.is-active { &.is-active {
.award-control-icon-positive { .award-control-icon-positive {
opacity: 0; opacity: 0;
...@@ -192,10 +187,6 @@ ...@@ -192,10 +187,6 @@
&:focus { &:focus {
outline: 0; outline: 0;
} }
.award-control-icon {
margin: 0;
}
} }
&.is-loading { &.is-loading {
...@@ -213,9 +204,7 @@ ...@@ -213,9 +204,7 @@
gl-emoji, gl-emoji,
.award-control-icon { .award-control-icon {
vertical-align: middle; vertical-align: middle;
margin-right: 0.15em; line-height: 0.5em;
font-size: 1.5em;
line-height: 1;
} }
.award-control-icon-loading { .award-control-icon-loading {
...@@ -224,11 +213,8 @@ ...@@ -224,11 +213,8 @@
.award-control-icon { .award-control-icon {
color: $border-gray-normal; color: $border-gray-normal;
margin-top: 1px;
padding: 0 2px;
svg { svg {
margin-bottom: 3px;
height: $default-icon-size; height: $default-icon-size;
width: $default-icon-size; width: $default-icon-size;
border-radius: 50%; border-radius: 50%;
...@@ -239,10 +225,8 @@ ...@@ -239,10 +225,8 @@
.award-control-icon-positive, .award-control-icon-positive,
.award-control-icon-super-positive { .award-control-icon-super-positive {
@include transition(opacity, transform); @include transition(opacity, transform);
position: absolute;
left: 10px;
bottom: 6px;
opacity: 0; opacity: 0;
position: absolute;
path { path {
fill: $award-emoji-positive-add-lines; fill: $award-emoji-positive-add-lines;
......
...@@ -75,26 +75,3 @@ ...@@ -75,26 +75,3 @@
padding-top: 5px; padding-top: 5px;
padding-bottom: 5px; padding-bottom: 5px;
} }
.ci-variable-row-remove-button {
@include transition(color);
flex-shrink: 0;
display: flex;
justify-content: center;
align-items: center;
width: $ci-variable-remove-button-width;
height: $input-height;
padding: 0;
background: transparent;
color: $gl-text-color-secondary;
&:hover,
&:focus {
outline: none;
color: $gl-text-color;
}
&[disabled] {
color: $gl-text-color-disabled;
}
}
...@@ -133,13 +133,15 @@ ...@@ -133,13 +133,15 @@
} }
} }
.dropdown-menu-toggle { // This is double classed to solve a specificity issue with the gitlab ui buttons
.dropdown-menu-toggle.dropdown-menu-toggle {
@extend .dropdown-toggle; @extend .dropdown-toggle;
justify-content: flex-start;
overflow: hidden;
padding-right: 25px; padding-right: 25px;
position: relative; position: relative;
width: 160px;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; width: 160px;
.fa { .fa {
position: absolute; position: absolute;
...@@ -376,11 +378,13 @@ ...@@ -376,11 +378,13 @@
} }
> a, > a,
> button { > button,
> .gl-button {
display: flex; display: flex;
justify-content: flex-start;
margin: 0; margin: 0;
text-overflow: inherit;
text-align: left; text-align: left;
text-overflow: inherit;
&.btn .fa:not(:last-child) { &.btn .fa:not(:last-child) {
margin-left: 5px; margin-left: 5px;
......
...@@ -290,14 +290,14 @@ ...@@ -290,14 +290,14 @@
flex-direction: column; flex-direction: column;
} }
.filtered-search-history-dropdown-toggle-button { .filtered-search-history-dropdown-toggle-button.gl-button {
flex: 1;
width: auto;
border-radius: $border-radius-default 0 0 $border-radius-default; border-radius: $border-radius-default 0 0 $border-radius-default;
border: 0;
border-right: 1px solid $border-color; border-right: 1px solid $border-color;
box-shadow: none;
color: $gl-text-color-secondary; color: $gl-text-color-secondary;
flex: 1;
transition: color 0.1s linear; transition: color 0.1s linear;
width: auto;
&:hover, &:hover,
&:focus { &:focus {
...@@ -338,12 +338,6 @@ ...@@ -338,12 +338,6 @@
} }
} }
.filter-dropdown-container {
.dropdown-toggle {
line-height: 22px;
}
}
@include media-breakpoint-down(sm) { @include media-breakpoint-down(sm) {
.issues-details-filters, .issues-details-filters,
.epics-details-filters { .epics-details-filters {
......
...@@ -665,7 +665,7 @@ code { ...@@ -665,7 +665,7 @@ code {
font-size: 95%; font-size: 95%;
} }
.git-revision-dropdown .dropdown-content ul li a { .git-revision-dropdown .dropdown-content li:not(.dropdown-menu-empty-item) a {
font-family: $monospace-font; font-family: $monospace-font;
font-size: 95%; font-size: 95%;
word-break: break-all; word-break: break-all;
......
...@@ -173,11 +173,10 @@ ul.related-merge-requests > li { ...@@ -173,11 +173,10 @@ ul.related-merge-requests > li {
margin-top: 4px; margin-top: 4px;
// override dropdown item styles // override dropdown item styles
.btn.btn-success { .btn.btn-confirm {
@include btn-default; @include btn-default;
@include btn-green; @include btn-blue;
border-style: solid;
border-width: 1px; border-width: 1px;
line-height: $line-height-base; line-height: $line-height-base;
width: auto; width: auto;
......
...@@ -11,16 +11,6 @@ module SnippetsHelper ...@@ -11,16 +11,6 @@ module SnippetsHelper
end end
end end
def download_raw_snippet_button(snippet)
link_to(sprite_icon('download'),
gitlab_raw_snippet_path(snippet, inline: false),
target: '_blank',
rel: 'noopener noreferrer',
class: "btn btn-sm has-tooltip",
title: 'Download',
data: { container: 'body' })
end
# Return the path of a snippets index for a user or for a project # Return the path of a snippets index for a user or for a project
# #
# @returns String, path to snippet index # @returns String, path to snippet index
...@@ -54,7 +44,7 @@ module SnippetsHelper ...@@ -54,7 +44,7 @@ module SnippetsHelper
link_to(external_snippet_icon('doc-code'), link_to(external_snippet_icon('doc-code'),
gitlab_raw_snippet_blob_url(snippet, blob.path), gitlab_raw_snippet_blob_url(snippet, blob.path),
class: 'btn', class: 'gl-button btn btn-default',
target: '_blank', target: '_blank',
rel: 'noopener noreferrer', rel: 'noopener noreferrer',
title: 'Open raw') title: 'Open raw')
...@@ -63,7 +53,7 @@ module SnippetsHelper ...@@ -63,7 +53,7 @@ module SnippetsHelper
def embedded_snippet_download_button(snippet, blob) def embedded_snippet_download_button(snippet, blob)
link_to(external_snippet_icon('download'), link_to(external_snippet_icon('download'),
gitlab_raw_snippet_blob_url(snippet, blob.path, nil, inline: false), gitlab_raw_snippet_blob_url(snippet, blob.path, nil, inline: false),
class: 'btn', class: 'gl-button btn btn-default',
target: '_blank', target: '_blank',
title: 'Download', title: 'Download',
rel: 'noopener noreferrer') rel: 'noopener noreferrer')
......
...@@ -231,7 +231,7 @@ module SortingHelper ...@@ -231,7 +231,7 @@ module SortingHelper
end end
def sort_direction_button(reverse_url, reverse_sort, sort_value) def sort_direction_button(reverse_url, reverse_sort, sort_value)
link_class = 'btn btn-default has-tooltip reverse-sort-btn qa-reverse-sort rspec-reverse-sort' link_class = 'gl-button btn btn-default btn-icon has-tooltip reverse-sort-btn qa-reverse-sort rspec-reverse-sort'
icon = sort_direction_icon(sort_value) icon = sort_direction_icon(sort_value)
url = reverse_url url = reverse_url
......
...@@ -22,7 +22,7 @@ module WikiHelper ...@@ -22,7 +22,7 @@ module WikiHelper
end end
def wiki_sidebar_toggle_button def wiki_sidebar_toggle_button
content_tag :button, class: 'btn btn-default sidebar-toggle js-sidebar-wiki-toggle', role: 'button', type: 'button' do content_tag :button, class: 'gl-button btn btn-default btn-icon sidebar-toggle js-sidebar-wiki-toggle', role: 'button', type: 'button' do
sprite_icon('chevron-double-lg-left') sprite_icon('chevron-double-lg-left')
end end
end end
...@@ -61,7 +61,7 @@ module WikiHelper ...@@ -61,7 +61,7 @@ module WikiHelper
def wiki_sort_controls(wiki, sort, direction) def wiki_sort_controls(wiki, sort, direction)
sort ||= Wiki::TITLE_ORDER sort ||= Wiki::TITLE_ORDER
link_class = 'btn btn-default has-tooltip reverse-sort-btn qa-reverse-sort rspec-reverse-sort' link_class = 'gl-button btn btn-default btn-icon has-tooltip reverse-sort-btn qa-reverse-sort rspec-reverse-sort'
reversed_direction = direction == 'desc' ? 'asc' : 'desc' reversed_direction = direction == 'desc' ? 'asc' : 'desc'
icon_class = direction == 'desc' ? 'highest' : 'lowest' icon_class = direction == 'desc' ? 'highest' : 'lowest'
......
...@@ -25,10 +25,10 @@ ...@@ -25,10 +25,10 @@
%td %td
- if user - if user
= link_to _('Remove user & report'), admin_abuse_report_path(abuse_report, remove_user: true), = link_to _('Remove user & report'), admin_abuse_report_path(abuse_report, remove_user: true),
data: { confirm: _("USER %{user} WILL BE REMOVED! Are you sure?") % { user: user.name } }, remote: true, method: :delete, class: "gl-button btn btn-sm btn-block btn-danger js-remove-tr" data: { confirm: _("USER %{user} WILL BE REMOVED! Are you sure?") % { user: user.name } }, remote: true, method: :delete, class: "gl-button btn btn-block btn-danger js-remove-tr"
- if user && !user.blocked? - if user && !user.blocked?
= link_to _('Block user'), block_admin_user_path(user), data: {confirm: _('USER WILL BE BLOCKED! Are you sure?')}, method: :put, class: "gl-button btn btn-sm btn-block" = link_to _('Block user'), block_admin_user_path(user), data: {confirm: _('USER WILL BE BLOCKED! Are you sure?')}, method: :put, class: "gl-button btn btn-default btn-block"
- else - else
.btn.btn-sm.disabled.btn-block .gl-button.btn.btn-default.disabled.btn-block
= _('Already blocked') = _('Already blocked')
= link_to _('Remove report'), [:admin, abuse_report], remote: true, method: :delete, class: "gl-button btn btn-sm btn-block btn-close js-remove-tr" = link_to _('Remove report'), [:admin, abuse_report], remote: true, method: :delete, class: "gl-button btn btn-default btn-block btn-close js-remove-tr"
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
- usage_ping_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: usage_ping_path } - usage_ping_link_start = '<a href="%{url}" target="_blank" rel="noopener noreferrer">'.html_safe % { url: usage_ping_path }
%p.mb-2= s_('%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc.').html_safe % { usage_ping_link_start: usage_ping_link_start, usage_ping_link_end: '</a>'.html_safe } %p.mb-2= s_('%{usage_ping_link_start}Learn more%{usage_ping_link_end} about what information is shared with GitLab Inc.').html_safe % { usage_ping_link_start: usage_ping_link_start, usage_ping_link_end: '</a>'.html_safe }
%button.btn.js-payload-preview-trigger{ type: 'button', data: { payload_selector: ".#{payload_class}" } } %button.gl-button.btn.btn-default.js-payload-preview-trigger{ type: 'button', data: { payload_selector: ".#{payload_class}" } }
.spinner.js-spinner.d-none .spinner.js-spinner.d-none
.js-text.d-inline= _('Preview payload') .js-text.d-inline= _('Preview payload')
%pre.usage-data.js-syntax-highlight.code.highlight.mt-2.d-none{ class: payload_class, data: { endpoint: usage_data_admin_application_settings_path(format: :html) } } %pre.usage-data.js-syntax-highlight.code.highlight.mt-2.d-none{ class: payload_class, data: { endpoint: usage_data_admin_application_settings_path(format: :html) } }
......
.gl-mt-3 .gl-mt-3
.user-callout{ data: { uid: 'dev_ops_report_intro_callout_dismissed' } } .user-callout{ data: { uid: 'dev_ops_report_intro_callout_dismissed' } }
.bordered-box.landing.content-block .bordered-box.landing.content-block
%button.btn.btn-default.close.js-close-callout{ type: 'button', %button.gl-button.btn.btn-default-tertiary.close.js-close-callout{ type: 'button',
'aria-label' => _('Dismiss DevOps Report introduction') } 'aria-label' => _('Dismiss DevOps Report introduction') }
= sprite_icon('close', size: 16, css_class: 'dismiss-icon') = sprite_icon('close', size: 16, css_class: 'dismiss-icon')
.user-callout-copy .user-callout-copy
......
...@@ -65,15 +65,15 @@ ...@@ -65,15 +65,15 @@
.table-section.table-button-footer.section-10 .table-section.table-button-footer.section-10
.btn-group.table-action-buttons .btn-group.table-action-buttons
.btn-group .btn-group
= link_to admin_runner_path(runner), class: 'gl-button btn btn-default has-tooltip', title: _('Edit'), ref: 'tooltip', aria: { label: _('Edit') }, data: { placement: 'top', container: 'body'} do = link_to admin_runner_path(runner), class: 'gl-button btn btn-default btn-icon has-tooltip', title: _('Edit'), ref: 'tooltip', aria: { label: _('Edit') }, data: { placement: 'top', container: 'body'} do
= sprite_icon('pencil') = sprite_icon('pencil', css_class: 'gl-icon')
.btn-group .btn-group
- if runner.active? - if runner.active?
= link_to [:pause, :admin, runner], method: :post, class: 'gl-button btn btn-default btn-svg has-tooltip', title: _('Pause'), ref: 'tooltip', aria: { label: _('Pause') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do = link_to [:pause, :admin, runner], method: :post, class: 'gl-button btn btn-default btn-icon has-tooltip', title: _('Pause'), ref: 'tooltip', aria: { label: _('Pause') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do
= sprite_icon('pause') = sprite_icon('pause', css_class: 'gl-icon')
- else - else
= link_to [:resume, :admin, runner], method: :post, class: 'gl-button btn btn-default btn-svg has-tooltip gl-px-3', title: _('Resume'), ref: 'tooltip', aria: { label: _('Resume') }, data: { placement: 'top', container: 'body'} do = link_to [:resume, :admin, runner], method: :post, class: 'gl-button btn btn-default btn-icon has-tooltip gl-px-3', title: _('Resume'), ref: 'tooltip', aria: { label: _('Resume') }, data: { placement: 'top', container: 'body'} do
= sprite_icon('play') = sprite_icon('play', css_class: 'gl-icon')
.btn-group .btn-group
= link_to [:admin, runner], method: :delete, class: 'gl-button btn btn-danger has-tooltip', title: _('Remove'), ref: 'tooltip', aria: { label: _('Remove') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do = link_to [:admin, runner], method: :delete, class: 'gl-button btn btn-danger btn-icon has-tooltip', title: _('Remove'), ref: 'tooltip', aria: { label: _('Remove') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do
= sprite_icon('close') = sprite_icon('close', css_class: 'gl-icon')
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
.filtered-search-box .filtered-search-box
= dropdown_tag(_('Recent searches'), = dropdown_tag(_('Recent searches'),
options: { wrapper_class: 'filtered-search-history-dropdown-wrapper', options: { wrapper_class: 'filtered-search-history-dropdown-wrapper',
toggle_class: 'btn filtered-search-history-dropdown-toggle-button', toggle_class: 'gl-button btn btn-default filtered-search-history-dropdown-toggle-button',
dropdown_class: 'filtered-search-history-dropdown', dropdown_class: 'filtered-search-history-dropdown',
content_class: 'filtered-search-history-dropdown-content' }) do content_class: 'filtered-search-history-dropdown-content' }) do
.js-filtered-search-history-dropdown{ data: { full_path: admin_runners_path } } .js-filtered-search-history-dropdown{ data: { full_path: admin_runners_path } }
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
#js-dropdown-operator.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-operator.filtered-search-input-dropdown-menu.dropdown-menu
%ul.filter-dropdown{ data: { dropdown: true, dynamic: true } } %ul.filter-dropdown{ data: { dropdown: true, dynamic: true } }
%li.filter-dropdown-item{ data: { value: "{{ title }}" } } %li.filter-dropdown-item{ data: { value: "{{ title }}" } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
{{ title }} {{ title }}
%span.btn-helptext %span.btn-helptext
{{ help }} {{ help }}
...@@ -100,12 +100,12 @@ ...@@ -100,12 +100,12 @@
#js-dropdown-runner-tag.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-runner-tag.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'none' } } %li.filter-dropdown-item{ data: { value: 'none' } }
%button.btn.btn-link %button.gl-button.btn.btn-link
= _('No Tag') = _('No Tag')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item %li.filter-dropdown-item
%button.btn.btn-link.js-data-value %button.gl-button.btn.btn-link.js-data-value
%span.dropdown-light-content %span.dropdown-light-content
{{name}} {{name}}
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
.settings-header .settings-header
%h4 %h4
= _('Serverless domain') = _('Serverless domain')
%button.btn.btn-default.js-settings-toggle{ type: 'button' } %button.gl-button.btn.btn-default.js-settings-toggle{ type: 'button' }
= expanded ? _('Collapse') : _('Expand') = expanded ? _('Collapse') : _('Expand')
%p %p
= _('Set an instance-wide domain that will be available to all clusters when installing Knative.') = _('Set an instance-wide domain that will be available to all clusters when installing Knative.')
......
...@@ -27,13 +27,13 @@ ...@@ -27,13 +27,13 @@
data: { confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?" }, method: :delete, class: "gl-button btn btn-sm btn-danger" data: { confirm: "USER #{user.name} WILL BE REMOVED! Are you sure?" }, method: :delete, class: "gl-button btn btn-sm btn-danger"
%td %td
- if spam_log.submitted_as_ham? - if spam_log.submitted_as_ham?
.btn.btn-sm.disabled .gl-button.btn.btn-default.btn-sm.disabled.gl-mb-3
Submitted as ham Submitted as ham
- else - else
= link_to 'Submit as ham', mark_as_ham_admin_spam_log_path(spam_log), method: :post, class: 'gl-button btn btn-sm btn-warning' = link_to 'Submit as ham', mark_as_ham_admin_spam_log_path(spam_log), method: :post, class: 'gl-button btn btn-default btn-sm gl-mb-3'
- if user && !user.blocked? - if user && !user.blocked?
= link_to 'Block user', block_admin_user_path(user), data: {confirm: 'USER WILL BE BLOCKED! Are you sure?'}, method: :put, class: "gl-button btn btn-sm" = link_to 'Block user', block_admin_user_path(user), data: {confirm: 'USER WILL BE BLOCKED! Are you sure?'}, method: :put, class: "gl-button btn btn-default btn-sm gl-mb-3"
- else - else
.btn.btn-sm.disabled .gl-button.btn.btn-default.btn-sm.disabled.gl-mb-3
Already blocked Already blocked
= link_to 'Remove log', [:admin, spam_log], remote: true, method: :delete, class: "gl-button btn btn-sm btn-close js-remove-tr" = link_to 'Remove log', [:admin, spam_log], remote: true, method: :delete, class: "gl-button btn btn-default btn-sm btn-close js-remove-tr"
...@@ -39,18 +39,18 @@ ...@@ -39,18 +39,18 @@
= link_to s_('AdminUsers|Approve'), approve_admin_user_path(user), method: :put = link_to s_('AdminUsers|Approve'), approve_admin_user_path(user), method: :put
= link_to s_('AdminUsers|Reject'), reject_admin_user_path(user), method: :delete = link_to s_('AdminUsers|Reject'), reject_admin_user_path(user), method: :delete
- else - else
%button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_unblock_data(user) } %button.gl-button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_unblock_data(user) }
= s_('AdminUsers|Unblock') = s_('AdminUsers|Unblock')
- else - else
%button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) } %button.gl-button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_block_data(user, user_block_effects) }
= s_('AdminUsers|Block') = s_('AdminUsers|Block')
- if user.can_be_deactivated? - if user.can_be_deactivated?
%li %li
%button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_deactivation_data(user, user_deactivation_effects) } %button.gl-button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_deactivation_data(user, user_deactivation_effects) }
= s_('AdminUsers|Deactivate') = s_('AdminUsers|Deactivate')
- elsif user.deactivated? - elsif user.deactivated?
%li %li
%button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_activation_data(user) } %button.gl-button.btn.btn-default-tertiary.js-confirm-modal-button{ data: user_activation_data(user) }
= s_('AdminUsers|Activate') = s_('AdminUsers|Activate')
- if user.access_locked? - if user.access_locked?
%li %li
...@@ -59,13 +59,13 @@ ...@@ -59,13 +59,13 @@
%li.divider %li.divider
- if user.can_be_removed? - if user.can_be_removed?
%li %li
%button.js-delete-user-modal-button.btn.btn-default-tertiary.text-danger{ data: { 'gl-modal-action': 'delete', %button.js-delete-user-modal-button.gl-button.btn.btn-danger-tertiary{ data: { 'gl-modal-action': 'delete',
delete_user_url: admin_user_path(user), delete_user_url: admin_user_path(user),
block_user_url: block_admin_user_path(user), block_user_url: block_admin_user_path(user),
username: sanitize_name(user.name) } } username: sanitize_name(user.name) } }
= s_('AdminUsers|Delete user') = s_('AdminUsers|Delete user')
%li %li
%button.js-delete-user-modal-button.btn.btn-default-tertiary.text-danger{ data: { 'gl-modal-action': 'delete-with-contributions', %button.js-delete-user-modal-button.gl-button.btn.btn-danger-tertiary{ data: { 'gl-modal-action': 'delete-with-contributions',
delete_user_url: admin_user_path(user, hard_delete: true), delete_user_url: admin_user_path(user, hard_delete: true),
block_user_url: block_admin_user_path(user), block_user_url: block_admin_user_path(user),
username: sanitize_name(user.name) } } username: sanitize_name(user.name) } }
......
#js-authenticate-token-2fa #js-authenticate-token-2fa
%a.btn.btn-block.btn-info#js-login-2fa-device{ href: '#' }= _("Sign in via 2FA code") %a.gl-button.btn.btn-block.btn-confirm#js-login-2fa-device{ href: '#' }= _("Sign in via 2FA code")
%script#js-authenticate-token-2fa-in-progress{ type: "text/template" } %script#js-authenticate-token-2fa-in-progress{ type: "text/template" }
%p= _("Trying to communicate with your device. Plug it in (if you haven't already) and press the button on the device now.") %p= _("Trying to communicate with your device. Plug it in (if you haven't already) and press the button on the device now.")
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
%script#js-authenticate-token-2fa-error{ type: "text/template" } %script#js-authenticate-token-2fa-error{ type: "text/template" }
%div %div
%p <%= error_message %> (<%= error_name %>) %p <%= error_message %> (<%= error_name %>)
%a.btn.gl-button.btn-block.btn-warning#js-token-2fa-try-again= _("Try again?") %a.btn.btn-default.gl-button.btn-block#js-token-2fa-try-again= _("Try again?")
%script#js-authenticate-token-2fa-authenticated{ type: "text/template" } %script#js-authenticate-token-2fa-authenticated{ type: "text/template" }
%div %div
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
%div %div
%p %p
%span <%= error_message %> (<%= error_name %>) %span <%= error_message %> (<%= error_name %>)
%a.btn.gl-button.btn-warning#js-token-2fa-try-again= _("Try again?") %a.btn.btn-default.gl-button#js-token-2fa-try-again= _("Try again?")
%script#js-register-token-2fa-registered{ type: "text/template" } %script#js-register-token-2fa-registered{ type: "text/template" }
.row.gl-mb-3 .row.gl-mb-3
...@@ -33,4 +33,4 @@ ...@@ -33,4 +33,4 @@
= text_field_tag 'device_registration[name]', nil, class: 'form-control', placeholder: _("Pick a name") = text_field_tag 'device_registration[name]', nil, class: 'form-control', placeholder: _("Pick a name")
.col-md-3 .col-md-3
= hidden_field_tag 'device_registration[device_response]', nil, class: 'form-control', required: true, id: "js-device-response" = hidden_field_tag 'device_registration[device_response]', nil, class: 'form-control', required: true, id: "js-device-response"
= submit_tag _("Register device"), class: "btn btn-success" = submit_tag _("Register device"), class: "gl-button btn btn-confirm"
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
- grouped_emojis = awardable.grouped_awards(with_thumbs: inline) - grouped_emojis = awardable.grouped_awards(with_thumbs: inline)
.awards.js-awards-block{ class: ("hidden" if !inline && grouped_emojis.empty?), data: { award_url: toggle_award_url(awardable) } } .awards.js-awards-block{ class: ("hidden" if !inline && grouped_emojis.empty?), data: { award_url: toggle_award_url(awardable) } }
- awards_sort(grouped_emojis).each do |emoji, awards| - awards_sort(grouped_emojis).each do |emoji, awards|
%button.btn.award-control.js-emoji-btn.has-tooltip{ type: "button", %button.gl-button.btn.btn-default.award-control.js-emoji-btn.has-tooltip{ type: "button",
class: [(award_state_class(awardable, awards, current_user))], class: [(award_state_class(awardable, awards, current_user))],
data: { title: award_user_list(awards, current_user) } } data: { title: award_user_list(awards, current_user) } }
= emoji_icon(emoji) = emoji_icon(emoji)
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
- if can?(current_user, :award_emoji, awardable) - if can?(current_user, :award_emoji, awardable)
.award-menu-holder.js-award-holder .award-menu-holder.js-award-holder
%button.btn.award-control.has-tooltip.js-add-award{ type: 'button', %button.gl-button.btn.btn-default.award-control.has-tooltip.js-add-award{ type: 'button',
'aria-label': _('Add reaction'), 'aria-label': _('Add reaction'),
data: { title: _('Add reaction') } } data: { title: _('Add reaction') } }
%span{ class: "award-control-icon award-control-icon-neutral" }= sprite_icon('slight-smile') %span{ class: "award-control-icon award-control-icon-neutral" }= sprite_icon('slight-smile')
......
...@@ -24,5 +24,5 @@ ...@@ -24,5 +24,5 @@
name: value_input_name, name: value_input_name,
placeholder: s_('CiVariables|Input variable value') } placeholder: s_('CiVariables|Input variable value') }
= value = value
%button.btn.btn-svg.btn-item-remove.js-row-remove-button.ci-variable-row-remove-button.table-section{ type: 'button', 'aria-label': s_('CiVariables|Remove variable row') } %button.gl-button.btn.btn-default.btn-icon.btn-item-remove.js-row-remove-button.ci-variable-row-remove-button.table-section{ type: 'button', 'aria-label': s_('CiVariables|Remove variable row') }
= sprite_icon('close') = sprite_icon('close')
...@@ -60,5 +60,5 @@ ...@@ -60,5 +60,5 @@
value: is_masked, value: is_masked,
data: { default: is_masked_default.to_s } } data: { default: is_masked_default.to_s } }
= render_if_exists 'ci/variables/environment_scope', form_field: form_field, variable: variable = render_if_exists 'ci/variables/environment_scope', form_field: form_field, variable: variable
%button.btn.btn-svg.js-row-remove-button.ci-variable-row-remove-button.table-section{ type: 'button', 'aria-label': s_('CiVariables|Remove variable row') } %button.gl-button.btn.btn-default.btn-icon.js-row-remove-button.ci-variable-row-remove-button.table-section{ type: 'button', 'aria-label': s_('CiVariables|Remove variable row') }
= sprite_icon('close') = sprite_icon('close')
...@@ -37,5 +37,5 @@ ...@@ -37,5 +37,5 @@
.home-panel-description .home-panel-description
.home-panel-description-markdown.read-more-container{ itemprop: 'description' } .home-panel-description-markdown.read-more-container{ itemprop: 'description' }
= markdown_field(@group, :description) = markdown_field(@group, :description)
%button.btn.btn-blank.btn-link.js-read-more-trigger.d-lg-none{ type: "button" } %button.gl-button.btn.btn-link.js-read-more-trigger.d-lg-none{ type: "button" }
= _("Read more") = _("Read more")
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
.filtered-search-box .filtered-search-box
= dropdown_tag(_('Recent searches'), = dropdown_tag(_('Recent searches'),
options: { wrapper_class: 'filtered-search-history-dropdown-wrapper', options: { wrapper_class: 'filtered-search-history-dropdown-wrapper',
toggle_class: 'btn filtered-search-history-dropdown-toggle-button', toggle_class: 'gl-button btn btn-default filtered-search-history-dropdown-toggle-button',
dropdown_class: 'filtered-search-history-dropdown', dropdown_class: 'filtered-search-history-dropdown',
content_class: 'filtered-search-history-dropdown-content' }) do content_class: 'filtered-search-history-dropdown-content' }) do
.js-filtered-search-history-dropdown{ data: { full_path: group_settings_ci_cd_path } } .js-filtered-search-history-dropdown{ data: { full_path: group_settings_ci_cd_path } }
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown #js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item{ data: {hint: "#{'{{hint}}'}", tag: "#{'{{tag}}'}", action: "#{'{{hint === \'search\' ? \'submit\' : \'\' }}'}" } } %li.filter-dropdown-item{ data: {hint: "#{'{{hint}}'}", tag: "#{'{{tag}}'}", action: "#{'{{hint === \'search\' ? \'submit\' : \'\' }}'}" } }
= button_tag class: 'btn btn-link' do = button_tag class: 'gl-button btn btn-link' do
-# Encapsulate static class name `{{icon}}` inside #{} to bypass -# Encapsulate static class name `{{icon}}` inside #{} to bypass
-# haml lint's ClassAttributeWithStaticValue -# haml lint's ClassAttributeWithStaticValue
%svg %svg
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
#js-dropdown-operator.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-operator.filtered-search-input-dropdown-menu.dropdown-menu
%ul.filter-dropdown{ data: { dropdown: true, dynamic: true } } %ul.filter-dropdown{ data: { dropdown: true, dynamic: true } }
%li.filter-dropdown-item{ data: { value: "{{ title }}" } } %li.filter-dropdown-item{ data: { value: "{{ title }}" } }
= button_tag class: 'btn btn-link' do = button_tag class: 'gl-button btn btn-link' do
{{ title }} {{ title }}
%span.btn-helptext %span.btn-helptext
{{ help }} {{ help }}
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
- Ci::Runner::AVAILABLE_STATUSES.each do |status| - Ci::Runner::AVAILABLE_STATUSES.each do |status|
%li.filter-dropdown-item{ data: { value: status } } %li.filter-dropdown-item{ data: { value: status } }
= button_tag class: 'btn btn-link' do = button_tag class: 'gl-button btn btn-link' do
= status.titleize = status.titleize
#js-dropdown-admin-runner-type.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-admin-runner-type.filtered-search-input-dropdown-menu.dropdown-menu
...@@ -57,18 +57,18 @@ ...@@ -57,18 +57,18 @@
- Ci::Runner::AVAILABLE_TYPES.each do |runner_type| - Ci::Runner::AVAILABLE_TYPES.each do |runner_type|
- next if runner_type == 'instance_type' - next if runner_type == 'instance_type'
%li.filter-dropdown-item{ data: { value: runner_type } } %li.filter-dropdown-item{ data: { value: runner_type } }
= button_tag class: 'btn btn-link' do = button_tag class: 'gl-button btn btn-link' do
= runner_type.titleize = runner_type.titleize
#js-dropdown-runner-tag.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-runner-tag.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'none' } } %li.filter-dropdown-item{ data: { value: 'none' } }
= button_tag class: 'btn btn-link' do = button_tag class: 'gl-button btn btn-link' do
= _('No Tag') = _('No Tag')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item %li.filter-dropdown-item
= button_tag class: 'btn btn-link js-data-value' do = button_tag class: 'gl-button btn btn-link js-data-value' do
%span.dropdown-light-content %span.dropdown-light-content
{{name}} {{name}}
......
...@@ -67,21 +67,21 @@ ...@@ -67,21 +67,21 @@
.table-section.table-button-footer.section-10 .table-section.table-button-footer.section-10
.btn-group.table-action-buttons .btn-group.table-action-buttons
.btn-group .btn-group
= link_to edit_group_runner_path(@group, runner), class: 'btn btn-default has-tooltip', title: _('Edit'), ref: 'tooltip', aria: { label: _('Edit') }, data: { placement: 'top', container: 'body'} do = link_to edit_group_runner_path(@group, runner), class: 'gl-button btn btn-default btn-icon has-tooltip', title: _('Edit'), ref: 'tooltip', aria: { label: _('Edit') }, data: { placement: 'top', container: 'body'} do
= sprite_icon('pencil') = sprite_icon('pencil', css_class: 'gl-icon')
.btn-group .btn-group
- if runner.active? - if runner.active?
= link_to pause_group_runner_path(@group, runner), method: :post, class: 'btn btn-default has-tooltip', title: _('Pause'), ref: 'tooltip', aria: { label: _('Pause') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do = link_to pause_group_runner_path(@group, runner), method: :post, class: 'gl-button btn btn-default btn-icon has-tooltip', title: _('Pause'), ref: 'tooltip', aria: { label: _('Pause') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do
= sprite_icon('pause') = sprite_icon('pause', css_class: 'gl-icon')
- else - else
= link_to resume_group_runner_path(@group, runner), method: :post, class: 'btn btn-default has-tooltip', title: _('Resume'), ref: 'tooltip', aria: { label: _('Resume') }, data: { placement: 'top', container: 'body'} do = link_to resume_group_runner_path(@group, runner), method: :post, class: 'gl-button btn btn-default btn-icon has-tooltip', title: _('Resume'), ref: 'tooltip', aria: { label: _('Resume') }, data: { placement: 'top', container: 'body'} do
= sprite_icon('play') = sprite_icon('play', css_class: 'gl-icon')
- if runner.belongs_to_more_than_one_project? - if runner.belongs_to_more_than_one_project?
- delete_runner_tooltip = _('Multi-project Runners cannot be removed') - delete_runner_tooltip = _('Multi-project Runners cannot be removed')
.btn-group.has-tooltip{ data: { container: 'body', placement: 'top' }, title: delete_runner_tooltip } .btn-group.has-tooltip{ data: { container: 'body', placement: 'top' }, title: delete_runner_tooltip }
.btn.btn-danger{ 'aria-label' => delete_runner_tooltip, disabled: 'disabled' } .gl-button.btn.btn-danger.btn-icon{ 'aria-label' => delete_runner_tooltip, disabled: 'disabled' }
= sprite_icon('close') = sprite_icon('close', css_class: 'gl-icon')
- else - else
.btn-group .btn-group
= link_to group_runner_path(@group, runner), method: :delete, class: 'btn btn-danger has-tooltip', title: _('Remove'), ref: 'tooltip', aria: { label: _('Remove') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do = link_to group_runner_path(@group, runner), method: :delete, class: 'gl-button btn btn-danger btn-icon has-tooltip', title: _('Remove'), ref: 'tooltip', aria: { label: _('Remove') }, data: { placement: 'top', container: 'body', confirm: _('Are you sure?') } do
= sprite_icon('close') = sprite_icon('close', css_class: 'gl-icon')
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
= render 'shared/choose_avatar_button', f: f = render 'shared/choose_avatar_button', f: f
- if @group.avatar? - if @group.avatar?
%hr %hr
= link_to _('Remove avatar'), group_avatar_path(@group.to_param), data: { confirm: _('Avatar will be removed. Are you sure?')}, method: :delete, class: 'btn btn-link' = link_to _('Remove avatar'), group_avatar_path(@group.to_param), data: { confirm: _('Avatar will be removed. Are you sure?')}, method: :delete, class: 'gl-button btn btn-danger-secondary'
= render 'shared/visibility_level', f: f, visibility_level: @group.visibility_level, can_change_visibility_level: can_change_group_visibility_level?(@group), form_model: @group = render 'shared/visibility_level', f: f, visibility_level: @group.visibility_level, can_change_visibility_level: can_change_group_visibility_level?(@group), form_model: @group
= f.submit _('Save changes'), class: 'btn gl-button btn-confirm mt-4 js-dirty-submit', data: { qa_selector: 'save_name_visibility_settings_button' } = f.submit _('Save changes'), class: 'btn gl-button btn-confirm mt-4 js-dirty-submit', data: { qa_selector: 'save_name_visibility_settings_button' }
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
%p= s_('Integrations|You can now close this window and return to the GitLab for Jira application.') %p= s_('Integrations|You can now close this window and return to the GitLab for Jira application.')
- if @jira_app_link - if @jira_app_link
%p= external_link s_('Integrations|Return to GitLab for Jira'), @jira_app_link, class: 'btn btn-success' %p= external_link s_('Integrations|Return to GitLab for Jira'), @jira_app_link, class: 'gl-button btn btn-confirm'
%p= link_to _('Sign out'), destroy_user_session_path, method: :post %p= link_to _('Sign out'), destroy_user_session_path, method: :post
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
%li.divider %li.divider
- if can?(current_user, :update_user_status, current_user) - if can?(current_user, :update_user_status, current_user)
%li %li
%button.btn.menu-item.js-set-status-modal-trigger{ type: 'button' } %button.gl-button.btn.btn-link.menu-item.js-set-status-modal-trigger{ type: 'button' }
- if show_status_emoji?(current_user.status) || user_status_set_to_busy?(current_user.status) - if show_status_emoji?(current_user.status) || user_status_set_to_busy?(current_user.status)
= s_('SetStatusModal|Edit status') = s_('SetStatusModal|Edit status')
- else - else
......
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
%li.nav-item %li.nav-item
%div %div
- sign_in_text = allow_signup? ? _('Sign in / Register') : _('Sign in') - sign_in_text = allow_signup? ? _('Sign in / Register') : _('Sign in')
= link_to sign_in_text, new_session_path(:user, redirect_to_referer: 'yes'), class: 'btn btn-sign-in' = link_to sign_in_text, new_session_path(:user, redirect_to_referer: 'yes'), class: 'gl-button btn btn-default btn-sign-in'
%button.navbar-toggler.d-block.d-sm-none{ type: 'button' } %button.navbar-toggler.d-block.d-sm-none{ type: 'button' }
%span.sr-only= _('Toggle navigation') %span.sr-only= _('Toggle navigation')
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
= render 'users/deletion_guidance', user: current_user = render 'users/deletion_guidance', user: current_user
-# Delete button here -# Delete button here
%button#delete-account-button.btn.btn-danger.disabled{ data: { qa_selector: 'delete_account_button' } } %button#delete-account-button.gl-button.btn.btn-danger.disabled{ data: { qa_selector: 'delete_account_button' } }
= s_('Profiles|Delete account') = s_('Profiles|Delete account')
#delete-account-modal{ data: { action_url: user_registration_path, #delete-account-modal{ data: { action_url: user_registration_path,
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
= loading_icon(size: "md", css_class: "gl-mt-4 gl-mb-3") = loading_icon(size: "md", css_class: "gl-mt-4 gl-mb-3")
.text-center.gl-mt-3.gl-mb-3.stl-controls .text-center.gl-mt-3.gl-mb-3.stl-controls
.btn-group .btn-group
%button.btn.btn-default.btn-sm.js-material-changer{ data: { type: 'wireframe' } } %button.gl-button.btn.btn-default.btn-sm.js-material-changer{ data: { type: 'wireframe' } }
Wireframe Wireframe
%button.btn.btn-default.btn-sm.active.js-material-changer{ data: { type: 'default' } } %button.gl-button.btn.btn-default.btn-sm.selected.js-material-changer{ data: { type: 'default' } }
Solid Solid
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
= text_field_tag 'delete_branch_input', '', class: 'form-control js-delete-branch-input' = text_field_tag 'delete_branch_input', '', class: 'form-control js-delete-branch-input'
.modal-footer .modal-footer
%button.btn{ data: { dismiss: 'modal' } } Cancel %button.gl-button.btn.btn-default{ data: { dismiss: 'modal' } } Cancel
= link_to s_('Branches|Delete protected branch'), '', = link_to s_('Branches|Delete protected branch'), '',
class: "gl-button btn btn-danger js-delete-branch", class: "gl-button btn btn-danger js-delete-branch",
title: s_('Branches|Delete branch'), title: s_('Branches|Delete branch'),
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
%li.commit-header.js-commit-header %li.commit-header.js-commit-header
%span.font-weight-bold= n_("%d previously merged commit", "%d previously merged commits", context_commits.count) % context_commits.count %span.font-weight-bold= n_("%d previously merged commit", "%d previously merged commits", context_commits.count) % context_commits.count
- if project.context_commits_enabled? && can_update_merge_request - if project.context_commits_enabled? && can_update_merge_request
%button.btn.btn-default.ml-3.add-review-item-modal-trigger{ type: "button", data: { context_commits_empty: 'false' } } %button.gl-button.btn.btn-default.ml-3.add-review-item-modal-trigger{ type: "button", data: { context_commits_empty: 'false' } }
= _('Add/remove') = _('Add/remove')
%li.commits-row %li.commits-row
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
= n_('%s additional commit has been omitted to prevent performance issues.', '%s additional commits have been omitted to prevent performance issues.', hidden) % number_with_delimiter(hidden) = n_('%s additional commit has been omitted to prevent performance issues.', '%s additional commits have been omitted to prevent performance issues.', hidden) % number_with_delimiter(hidden)
- if project.context_commits_enabled? && can_update_merge_request && context_commits&.empty? - if project.context_commits_enabled? && can_update_merge_request && context_commits&.empty?
%button.btn.btn-default.mt-3.add-review-item-modal-trigger{ type: "button", data: { context_commits_empty: 'true' } } %button.gl-button.btn.btn-default.mt-3.add-review-item-modal-trigger{ type: "button", data: { context_commits_empty: 'true' } }
= _('Add previously merged commits') = _('Add previously merged commits')
- if commits.size == 0 && context_commits.nil? - if commits.size == 0 && context_commits.nil?
......
.nothing-here-block.diff-collapsed{ data: { diff_for_path: collapsed_diff_url(viewer.diff_file) } } .nothing-here-block.diff-collapsed{ data: { diff_for_path: collapsed_diff_url(viewer.diff_file) } }
= _("This diff is collapsed.") = _("This diff is collapsed.")
%button.click-to-expand.btn.btn-link= _("Click to expand it.") %button.click-to-expand.gl-button.btn.btn-link= _("Click to expand it.")
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
%span.js-ref-message.form-text.text-muted %span.js-ref-message.form-text.text-muted
.form-group .form-group
%button.btn.gl-button.btn-success.js-create-target{ type: 'button', data: { action: 'create-mr' } } %button.btn.gl-button.btn-confirm.js-create-target{ type: 'button', data: { action: 'create-mr' } }
= create_mr_text = create_mr_text
- if can_create_confidential_merge_request? - if can_create_confidential_merge_request?
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#js-issuable-header-warnings #js-issuable-header-warnings
= issuable_meta(@merge_request, @project) = issuable_meta(@merge_request, @project)
%a.btn.btn-default.float-right.d-block.d-sm-none.gutter-toggle.issuable-gutter-toggle.js-sidebar-toggle{ href: "#" } %a.gl-button.btn.btn-default.btn-icon.float-right.d-block.d-sm-none.gutter-toggle.issuable-gutter-toggle.js-sidebar-toggle{ href: "#" }
= sprite_icon('chevron-double-lg-left') = sprite_icon('chevron-double-lg-left')
.detail-page-header-actions.js-issuable-actions .detail-page-header-actions.js-issuable-actions
...@@ -50,4 +50,4 @@ ...@@ -50,4 +50,4 @@
- if can_update_merge_request && !are_close_and_open_buttons_hidden - if can_update_merge_request && !are_close_and_open_buttons_hidden
= render 'projects/merge_requests/close_reopen_draft_report_toggle' = render 'projects/merge_requests/close_reopen_draft_report_toggle'
- elsif !@merge_request.merged? - elsif !@merge_request.merged?
= link_to _('Report abuse'), new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)), class: 'gl-display-none gl-md-display-block gl-button btn btn-warning-secondary float-right gl-ml-3', title: _('Report abuse') = link_to _('Report abuse'), new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)), class: 'gl-display-none gl-md-display-block gl-button btn btn-default float-right gl-ml-3', title: _('Report abuse')
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
- text, status = domain_presenter.unverified? ? [_('Unverified'), 'badge-danger'] : [_('Verified'), 'badge-success'] - text, status = domain_presenter.unverified? ? [_('Unverified'), 'badge-danger'] : [_('Verified'), 'badge-success']
.badge{ class: status } .badge{ class: status }
= text = text
= link_to sprite_icon("redo"), verify_project_pages_domain_path(@project, domain_presenter), method: :post, class: "btn has-tooltip", title: _("Retry verification") = link_to sprite_icon("redo"), verify_project_pages_domain_path(@project, domain_presenter), method: :post, class: "gl-button btn btn-default has-tooltip", title: _("Retry verification")
.input-group .input-group
= text_field_tag :domain_verification, verification_record, class: "monospace js-select-on-focus form-control", readonly: true = text_field_tag :domain_verification, verification_record, class: "monospace js-select-on-focus form-control", readonly: true
.input-group-append .input-group-append
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
= sprite_icon('warning-solid', css_class: ' mr-2 gl-text-orange-600') = sprite_icon('warning-solid', css_class: ' mr-2 gl-text-orange-600')
= _("Something went wrong while obtaining the Let's Encrypt certificate.") = _("Something went wrong while obtaining the Let's Encrypt certificate.")
.row.mx-0.mt-3 .row.mx-0.mt-3
= link_to s_('GitLabPagesDomains|Retry'), retry_auto_ssl_project_pages_domain_path(@project, domain_presenter), class: "btn btn-sm btn-grouped btn-warning", method: :post = link_to s_('GitLabPagesDomains|Retry'), retry_auto_ssl_project_pages_domain_path(@project, domain_presenter), class: "gl-button btn btn-default btn-sm btn-grouped", method: :post
- elsif !domain_presenter.certificate_gitlab_provided? - elsif !domain_presenter.certificate_gitlab_provided?
.form-group.border-section.js-shown-if-auto-ssl{ class: ("d-none" unless auto_ssl_available_and_enabled) } .form-group.border-section.js-shown-if-auto-ssl{ class: ("d-none" unless auto_ssl_available_and_enabled) }
.row .row
......
...@@ -11,12 +11,12 @@ ...@@ -11,12 +11,12 @@
.form-group.row .form-group.row
.col-md-9 .col-md-9
= f.label :cron_timezone, _('Cron Timezone'), class: 'label-bold' = f.label :cron_timezone, _('Cron Timezone'), class: 'label-bold'
= dropdown_tag(_("Select a timezone"), options: { toggle_class: 'btn js-timezone-dropdown w-100', dropdown_class: 'w-100', title: _("Select a timezone"), filter: true, placeholder: s_("OfSearchInADropdown|Filter"), data: { data: timezone_data } } ) = dropdown_tag(_("Select a timezone"), options: { toggle_class: 'gl-button btn btn-default js-timezone-dropdown w-100', dropdown_class: 'w-100', title: _("Select a timezone"), filter: true, placeholder: s_("OfSearchInADropdown|Filter"), data: { data: timezone_data } } )
= f.text_field :cron_timezone, value: @schedule.cron_timezone, id: 'schedule_cron_timezone', class: 'hidden', name: 'schedule[cron_timezone]', required: true = f.text_field :cron_timezone, value: @schedule.cron_timezone, id: 'schedule_cron_timezone', class: 'hidden', name: 'schedule[cron_timezone]', required: true
.form-group.row .form-group.row
.col-md-9 .col-md-9
= f.label :ref, _('Target Branch'), class: 'label-bold' = f.label :ref, _('Target Branch'), class: 'label-bold'
= dropdown_tag(_("Select target branch"), options: { toggle_class: 'btn js-target-branch-dropdown w-100', dropdown_class: 'git-revision-dropdown w-100', title: _("Select target branch"), filter: true, placeholder: s_("OfSearchInADropdown|Filter"), data: { data: @project.repository.branch_names, default_branch: @project.default_branch } } ) = dropdown_tag(_("Select target branch"), options: { toggle_class: 'gl-button btn btn-default js-target-branch-dropdown w-100', dropdown_class: 'git-revision-dropdown w-100', title: _("Select target branch"), filter: true, placeholder: s_("OfSearchInADropdown|Filter"), data: { data: @project.repository.branch_names, default_branch: @project.default_branch } } )
= f.text_field :ref, value: @schedule.ref, id: 'schedule_ref', class: 'hidden', name: 'schedule[ref]', required: true = f.text_field :ref, value: @schedule.ref, id: 'schedule_ref', class: 'hidden', name: 'schedule[ref]', required: true
.form-group.row.js-ci-variable-list-section .form-group.row.js-ci-variable-list-section
.col-md-9 .col-md-9
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
= render 'ci/variables/variable_row', form_field: 'schedule', variable: variable, only_key_value: true = render 'ci/variables/variable_row', form_field: 'schedule', variable: variable, only_key_value: true
= render 'ci/variables/variable_row', form_field: 'schedule', only_key_value: true = render 'ci/variables/variable_row', form_field: 'schedule', only_key_value: true
- if @schedule.variables.size > 0 - if @schedule.variables.size > 0
%button.btn.btn-info.btn-inverted.gl-mt-3.js-secret-value-reveal-button{ type: 'button', data: { secret_reveal_status: "#{@schedule.variables.size == 0}" } } %button.gl-button.btn.btn-confirm-secondary.gl-mt-3.js-secret-value-reveal-button{ type: 'button', data: { secret_reveal_status: "#{@schedule.variables.size == 0}" } }
- if @schedule.variables.size == 0 - if @schedule.variables.size == 0
= n_('Hide value', 'Hide values', @schedule.variables.size) = n_('Hide value', 'Hide values', @schedule.variables.size)
- else - else
......
...@@ -19,4 +19,4 @@ ...@@ -19,4 +19,4 @@
- if can? current_user, :admin_project, @project - if can? current_user, :admin_project, @project
%td %td
= link_to 'Unprotect', [@project, protected_tag, { update_section: 'js-protected-tags-settings' }], data: { confirm: 'Tag will be writable for developers. Are you sure?' }, method: :delete, class: 'btn btn-warning' = link_to 'Unprotect', [@project, protected_tag, { update_section: 'js-protected-tags-settings' }], data: { confirm: 'Tag will be writable for developers. Are you sure?' }, method: :delete, class: 'gl-button btn btn-danger-secondary'
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
= label_tag nil, _('Customize icon'), class: 'col-12 col-form-label label-bold' = label_tag nil, _('Customize icon'), class: 'col-12 col-form-label label-bold'
.col-12 .col-12
= image_tag(asset_url('slash-command-logo.png', skip_pipeline: true), width: 36, height: 36, class: 'mr-3') = image_tag(asset_url('slash-command-logo.png', skip_pipeline: true), width: 36, height: 36, class: 'mr-3')
= link_to(_('Download image'), asset_url('gitlab_logo.png'), class: 'btn btn-sm', target: '_blank', rel: 'noopener noreferrer') = link_to(_('Download image'), asset_url('gitlab_logo.png'), class: 'gl-button btn btn-default btn-sm', target: '_blank', rel: 'noopener noreferrer')
.form-group .form-group
= label_tag nil, _('Autocomplete'), class: 'col-12 col-form-label label-bold' = label_tag nil, _('Autocomplete'), class: 'col-12 col-form-label label-bold'
......
...@@ -37,6 +37,6 @@ ...@@ -37,6 +37,6 @@
= render 'shared/choose_avatar_button', f: f = render 'shared/choose_avatar_button', f: f
- if @project.avatar? - if @project.avatar?
%hr %hr
= link_to _('Remove avatar'), project_avatar_path(@project), data: { confirm: _('Avatar will be removed. Are you sure?')}, method: :delete, class: 'btn btn-link' = link_to _('Remove avatar'), project_avatar_path(@project), data: { confirm: _('Avatar will be removed. Are you sure?')}, method: :delete, class: 'gl-button btn btn-danger-secondary'
= f.submit _('Save changes'), class: "gl-button btn btn-confirm gl-mt-6", data: { qa_selector: 'save_naming_topics_avatar_button' } = f.submit _('Save changes'), class: "gl-button btn btn-confirm gl-mt-6", data: { qa_selector: 'save_naming_topics_avatar_button' }
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
.settings-header .settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
= _('Alert integrations') = _('Alert integrations')
%button.btn.js-settings-toggle{ type: 'button' } %button.gl-button.btn.btn-default.js-settings-toggle{ type: 'button' }
= _('Expand') = _('Expand')
%p %p
= _('Display alerts from all configured monitoring tools.') = _('Display alerts from all configured monitoring tools.')
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
.settings-header .settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
= _('Error tracking') = _('Error tracking')
%button.btn.js-settings-toggle{ type: 'button' } %button.gl-button.btn.btn-default.js-settings-toggle{ type: 'button' }
= _('Expand') = _('Expand')
%p %p
= _('To link Sentry to GitLab, enter your Sentry URL and Auth Token.') = _('To link Sentry to GitLab, enter your Sentry URL and Auth Token.')
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
.settings-header .settings-header
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
= _('Prometheus') = _('Prometheus')
%button.btn.js-settings-toggle{ type: 'button' } %button.gl-button.btn.btn-default.js-settings-toggle{ type: 'button' }
= _('Expand') = _('Expand')
%p %p
= _('Link Prometheus monitoring to GitLab.') = _('Link Prometheus monitoring to GitLab.')
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
.settings-header{ :class => "border-top" } .settings-header{ :class => "border-top" }
%h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
= _("Jaeger tracing") = _("Jaeger tracing")
%button.btn.gl-button.js-settings-toggle{ type: 'button' } %button.btn.btn-default.gl-button.js-settings-toggle{ type: 'button' }
= _('Expand') = _('Expand')
%p %p
- if has_jaeger_url - if has_jaeger_url
......
...@@ -8,4 +8,4 @@ ...@@ -8,4 +8,4 @@
.form-group .form-group
= f.label :key, "Description", class: "label-bold" = f.label :key, "Description", class: "label-bold"
= f.text_field :description, class: 'form-control gl-form-input', required: true, title: 'Trigger description is required.', placeholder: "Trigger description" = f.text_field :description, class: 'form-control gl-form-input', required: true, title: 'Trigger description is required.', placeholder: "Trigger description"
= f.submit btn_text, class: "btn btn-success" = f.submit btn_text, class: "gl-button btn btn-confirm"
...@@ -30,8 +30,8 @@ ...@@ -30,8 +30,8 @@
%td.text-right.trigger-actions %td.text-right.trigger-actions
- revoke_trigger_confirmation = "By revoking a trigger you will break any processes making use of it. Are you sure?" - revoke_trigger_confirmation = "By revoking a trigger you will break any processes making use of it. Are you sure?"
- if can?(current_user, :admin_trigger, trigger) - if can?(current_user, :admin_trigger, trigger)
= link_to edit_project_trigger_path(@project, trigger), method: :get, title: "Edit", class: "btn btn-default btn-sm" do = link_to edit_project_trigger_path(@project, trigger), method: :get, title: "Edit", class: "gl-button btn btn-default btn-sm" do
= sprite_icon('pencil') = sprite_icon('pencil')
- if can?(current_user, :manage_trigger, trigger) - if can?(current_user, :manage_trigger, trigger)
= link_to project_trigger_path(@project, trigger), data: { confirm: revoke_trigger_confirmation, testid: 'trigger_revoke_button' }, method: :delete, title: "Revoke", class: "btn btn-default btn-warning btn-sm btn-trigger-revoke" do = link_to project_trigger_path(@project, trigger), data: { confirm: revoke_trigger_confirmation, testid: 'trigger_revoke_button' }, method: :delete, title: "Revoke", class: "gl-button btn btn-default btn-sm btn-trigger-revoke" do
= sprite_icon('remove') = sprite_icon('remove')
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
%span.js-clone-dropdown-label %span.js-clone-dropdown-label
= enabled_protocol_button(container, enabled_protocol) = enabled_protocol_button(container, enabled_protocol)
- else - else
%a#clone-dropdown.input-group-text.btn.gl-button.btn-default.clone-dropdown-btn.qa-clone-dropdown{ href: '#', data: { toggle: 'dropdown' } } %a#clone-dropdown.input-group-text.gl-button.btn.btn-default.btn-icon.clone-dropdown-btn.qa-clone-dropdown{ href: '#', data: { toggle: 'dropdown' } }
%span.js-clone-dropdown-label %span.js-clone-dropdown-label
= default_clone_protocol.upcase = default_clone_protocol.upcase
= sprite_icon('chevron-down') = sprite_icon('chevron-down', css_class: 'gl-icon')
%ul.dropdown-menu.dropdown-menu-selectable.clone-options-dropdown %ul.dropdown-menu.dropdown-menu-selectable.clone-options-dropdown
%li %li
= ssh_clone_button(container) = ssh_clone_button(container)
......
...@@ -18,4 +18,4 @@ ...@@ -18,4 +18,4 @@
.form-group .form-group
= text_field_tag 'confirm_name_input', '', class: 'form-control js-confirm-danger-input qa-confirm-input' = text_field_tag 'confirm_name_input', '', class: 'form-control js-confirm-danger-input qa-confirm-input'
.form-actions .form-actions
= submit_tag _('Confirm'), class: "btn btn-danger js-confirm-danger-submit qa-confirm-button" = submit_tag _('Confirm'), class: "gl-button btn btn-danger js-confirm-danger-submit qa-confirm-button"
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
= html_escape(_('%{label_name} %{span_open}will be permanently deleted from %{subject_name}. This cannot be undone.%{span_close}')) % { label_name: tag.strong(label.name), subject_name: label.subject_name, span_open: '<span>'.html_safe, span_close: '</span>'.html_safe } = html_escape(_('%{label_name} %{span_open}will be permanently deleted from %{subject_name}. This cannot be undone.%{span_close}')) % { label_name: tag.strong(label.name), subject_name: label.subject_name, span_open: '<span>'.html_safe, span_close: '</span>'.html_safe }
.modal-footer .modal-footer
%a{ href: '#', data: { dismiss: 'modal' }, class: 'btn gl-button btn-default' }= _('Cancel') %a{ href: '#', data: { dismiss: 'modal' }, class: 'gl-button btn btn-default' }= _('Cancel')
= link_to _('Delete label'), = link_to _('Delete label'),
label.destroy_path, label.destroy_path,
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
%ul %ul
- if label.project_label? && label.project.group && can?(current_user, :admin_label, label.project.group) - if label.project_label? && label.project.group && can?(current_user, :admin_label, label.project.group)
%li %li
%button.js-promote-project-label-button.btn.btn-transparent{ disabled: true, type: 'button', %button.js-promote-project-label-button.gl-button.btn.btn-default-tertiary{ disabled: true, type: 'button',
data: { url: promote_project_label_path(label.project, label), data: { url: promote_project_label_path(label.project, label),
label_title: label.title, label_title: label.title,
label_color: label.color, label_color: label.color,
...@@ -53,10 +53,10 @@ ...@@ -53,10 +53,10 @@
.dropdown-menu.dropdown-open-left .dropdown-menu.dropdown-open-left
%ul %ul
%li %li
%button.js-subscribe-button.label-subscribe-button.btn.btn-default{ class: ('hidden' unless status.unsubscribed?), data: { status: status, url: toggle_subscription_project_label_path(@project, label) } } %button.js-subscribe-button.label-subscribe-button.gl-button.btn.btn-default{ class: ('hidden' unless status.unsubscribed?), data: { status: status, url: toggle_subscription_project_label_path(@project, label) } }
%span= _('Subscribe at project level') %span= _('Subscribe at project level')
%li %li
%button.js-subscribe-button.js-group-level.label-subscribe-button.btn.btn-default{ class: ('hidden' unless status.unsubscribed?), data: { status: status, url: toggle_subscription_group_label_path(label.group, label) } } %button.js-subscribe-button.js-group-level.label-subscribe-button.gl-button.btn.btn-default{ class: ('hidden' unless status.unsubscribed?), data: { status: status, url: toggle_subscription_group_label_path(label.group, label) } }
%span= _('Subscribe at group level') %span= _('Subscribe at group level')
- else - else
%button.gl-button.js-subscribe-button.label-subscribe-button.btn.btn-default.gl-ml-3{ data: { status: status, url: toggle_subscription_path, toggle: 'tooltip' }, title: tooltip_title } %button.gl-button.js-subscribe-button.label-subscribe-button.btn.btn-default.gl-ml-3{ data: { status: status, url: toggle_subscription_path, toggle: 'tooltip' }, title: tooltip_title }
......
#js-dropdown-approved-by.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-approved-by.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'None' } } %li.filter-dropdown-item{ data: { value: 'None' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('None') = _('None')
%li.filter-dropdown-item{ data: { value: 'Any' } } %li.filter-dropdown-item{ data: { value: 'Any' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Any') = _('Any')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
- if current_user - if current_user
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
- text = tag.span(sprite_icon('history'), class: "d-md-none") + tag.span(_('Recent searches'), class: "d-none d-md-inline") - text = tag.span(sprite_icon('history'), class: "d-md-none") + tag.span(_('Recent searches'), class: "d-none d-md-inline")
= dropdown_tag(text, = dropdown_tag(text,
options: { wrapper_class: "filtered-search-history-dropdown-wrapper", options: { wrapper_class: "filtered-search-history-dropdown-wrapper",
toggle_class: "btn filtered-search-history-dropdown-toggle-button", toggle_class: "gl-button btn btn-default filtered-search-history-dropdown-toggle-button",
dropdown_class: "filtered-search-history-dropdown", dropdown_class: "filtered-search-history-dropdown",
content_class: "filtered-search-history-dropdown-content" }) do content_class: "filtered-search-history-dropdown-content" }) do
.js-filtered-search-history-dropdown{ data: { full_path: search_history_storage_prefix } } .js-filtered-search-history-dropdown{ data: { full_path: search_history_storage_prefix } }
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
#js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown #js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item{ data: {hint: "#{'{{hint}}'}", tag: "#{'{{tag}}'}", action: "#{'{{hint === \'search\' ? \'submit\' : \'\' }}'}" } } %li.filter-dropdown-item{ data: {hint: "#{'{{hint}}'}", tag: "#{'{{tag}}'}", action: "#{'{{hint === \'search\' ? \'submit\' : \'\' }}'}" } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
-# Encapsulate static class name `{{icon}}` inside #{} to bypass -# Encapsulate static class name `{{icon}}` inside #{} to bypass
-# haml lint's ClassAttributeWithStaticValue -# haml lint's ClassAttributeWithStaticValue
%svg %svg
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
#js-dropdown-operator.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-operator.filtered-search-input-dropdown-menu.dropdown-menu
%ul.filter-dropdown{ data: { dropdown: true, dynamic: true } } %ul.filter-dropdown{ data: { dropdown: true, dynamic: true } }
%li.filter-dropdown-item{ data: { value: "{{ title }}" } } %li.filter-dropdown-item{ data: { value: "{{ title }}" } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
{{ title }} {{ title }}
%span.btn-helptext %span.btn-helptext
{{ help }} {{ help }}
...@@ -68,10 +68,10 @@ ...@@ -68,10 +68,10 @@
#js-dropdown-assignee.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-assignee.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'None' } } %li.filter-dropdown-item{ data: { value: 'None' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('None') = _('None')
%li.filter-dropdown-item{ data: { value: 'Any' } } %li.filter-dropdown-item{ data: { value: 'Any' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Any') = _('Any')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
- if current_user - if current_user
...@@ -84,10 +84,10 @@ ...@@ -84,10 +84,10 @@
#js-dropdown-reviewer.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-reviewer.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'None' } } %li.filter-dropdown-item{ data: { value: 'None' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('None') = _('None')
%li.filter-dropdown-item{ data: { value: 'Any' } } %li.filter-dropdown-item{ data: { value: 'Any' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Any') = _('Any')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
- if current_user - if current_user
...@@ -102,92 +102,92 @@ ...@@ -102,92 +102,92 @@
#js-dropdown-milestone.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-milestone.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'None' } } %li.filter-dropdown-item{ data: { value: 'None' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('None') = _('None')
%li.filter-dropdown-item{ data: { value: 'Any' } } %li.filter-dropdown-item{ data: { value: 'Any' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Any') = _('Any')
%li.filter-dropdown-item{ data: { value: 'Upcoming' } } %li.filter-dropdown-item{ data: { value: 'Upcoming' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Upcoming') = _('Upcoming')
%li.filter-dropdown-item{ data: { value: 'Started' } } %li.filter-dropdown-item{ data: { value: 'Started' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Started') = _('Started')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item %li.filter-dropdown-item
%button.btn.btn-link.js-data-value{ type: 'button' } %button.gl-button.btn.btn-link.js-data-value{ type: 'button' }
{{title}} {{title}}
= render_if_exists 'shared/issuable/filter_iteration', type: type = render_if_exists 'shared/issuable/filter_iteration', type: type
#js-dropdown-release.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-release.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'None' } } %li.filter-dropdown-item{ data: { value: 'None' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('None') = _('None')
%li.filter-dropdown-item{ data: { value: 'Any' } } %li.filter-dropdown-item{ data: { value: 'Any' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Any') = _('Any')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item %li.filter-dropdown-item
%button.btn.btn-link.js-data-value{ type: 'button' } %button.gl-button.btn.btn-link.js-data-value{ type: 'button' }
{{title}} {{title}}
#js-dropdown-label.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-label.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'None' } } %li.filter-dropdown-item{ data: { value: 'None' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('None') = _('None')
%li.filter-dropdown-item{ data: { value: 'Any' } } %li.filter-dropdown-item{ data: { value: 'Any' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Any') = _('Any')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item %li.filter-dropdown-item
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
%span.dropdown-label-box{ style: 'background: {{color}}' } %span.dropdown-label-box{ style: 'background: {{color}}' }
%span.label-title.js-data-value %span.label-title.js-data-value
{{title}} {{title}}
#js-dropdown-my-reaction.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-my-reaction.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'None' } } %li.filter-dropdown-item{ data: { value: 'None' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('None') = _('None')
%li.filter-dropdown-item{ data: { value: 'Any' } } %li.filter-dropdown-item{ data: { value: 'Any' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Any') = _('Any')
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item %li.filter-dropdown-item
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
%gl-emoji %gl-emoji
%span.js-data-value.gl-ml-3 %span.js-data-value.gl-ml-3
{{name}} {{name}}
#js-dropdown-wip.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-wip.filtered-search-input-dropdown-menu.dropdown-menu
%ul.filter-dropdown{ data: { dropdown: true } } %ul.filter-dropdown{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'yes', capitalize: true } } %li.filter-dropdown-item{ data: { value: 'yes', capitalize: true } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Yes') = _('Yes')
%li.filter-dropdown-item{ data: { value: 'no', capitalize: true } } %li.filter-dropdown-item{ data: { value: 'no', capitalize: true } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('No') = _('No')
#js-dropdown-confidential.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-confidential.filtered-search-input-dropdown-menu.dropdown-menu
%ul.filter-dropdown{ data: { dropdown: true } } %ul.filter-dropdown{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'yes', capitalize: true } } %li.filter-dropdown-item{ data: { value: 'yes', capitalize: true } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('Yes') = _('Yes')
%li.filter-dropdown-item{ data: { value: 'no', capitalize: true } } %li.filter-dropdown-item{ data: { value: 'no', capitalize: true } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _('No') = _('No')
- unless disable_target_branch - unless disable_target_branch
#js-dropdown-target-branch.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-target-branch.filtered-search-input-dropdown-menu.dropdown-menu
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item %li.filter-dropdown-item
%button.btn.btn-link.js-data-value.monospace %button.gl-button.btn.btn-link.js-data-value.monospace
{{title}} {{title}}
#js-dropdown-environment.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-environment.filtered-search-input-dropdown-menu.dropdown-menu
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item %li.filter-dropdown-item
%button.btn.btn-link.js-data-value{ type: 'button' } %button.gl-button.btn.btn-link.js-data-value{ type: 'button' }
{{title}} {{title}}
= render_if_exists 'shared/issuable/filter_weight', type: type = render_if_exists 'shared/issuable/filter_weight', type: type
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
.dropdown.inline.gl-ml-3.issue-sort-dropdown .dropdown.inline.gl-ml-3.issue-sort-dropdown
.btn-group{ role: 'group' } .btn-group{ role: 'group' }
.btn-group{ role: 'group' } .btn-group{ role: 'group' }
%button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' }, class: 'btn btn-default' } %button.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' }, class: 'gl-button btn btn-default' }
= sort_title = sort_title
= sprite_icon('chevron-down', css_class: "dropdown-menu-toggle-icon gl-top-3") = sprite_icon('chevron-down', css_class: "dropdown-menu-toggle-icon gl-top-3")
%ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable.dropdown-menu-sort %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable.dropdown-menu-sort
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
- avatar = local_assigns.fetch(:avatar, { }) - avatar = local_assigns.fetch(:avatar, { })
%li.filter-dropdown-item{ class: ('js-current-user' if user == current_user) } %li.filter-dropdown-item{ class: ('js-current-user' if user == current_user) }
%button.btn.btn-link.dropdown-user{ type: :button } %button.gl-button.btn.btn-link.dropdown-user{ type: :button }
.avatar-container.s40 .avatar-container.s40
= user_avatar_without_link(user: user, lazy: avatar[:lazy], url: avatar[:url], size: 40, has_tooltip: false) = user_avatar_without_link(user: user, lazy: avatar[:lazy], url: avatar[:url], size: 40, has_tooltip: false)
.dropdown-user-details .dropdown-user-details
......
...@@ -67,7 +67,7 @@ ...@@ -67,7 +67,7 @@
- if member.can_resend_invite? - if member.can_resend_invite?
= link_to sprite_icon('paper-airplane'), polymorphic_path([:resend_invite, member]), = link_to sprite_icon('paper-airplane'), polymorphic_path([:resend_invite, member]),
method: :post, method: :post,
class: 'btn btn-default align-self-center mr-sm-2', class: 'gl-button btn btn-default align-self-center mr-sm-2',
title: _('Resend invite') title: _('Resend invite')
- if user != current_user && member.can_update? - if user != current_user && member.can_update?
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
.btn-group.w-100{ role: "group" } .btn-group.w-100{ role: "group" }
.btn-group.w-100.dropdown.js-project-filter-dropdown-wrap{ role: "group" } .btn-group.w-100.dropdown.js-project-filter-dropdown-wrap{ role: "group" }
%button#sort-projects-dropdown.btn.btn-default.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' } } %button#sort-projects-dropdown.gl-button.btn.btn-default.dropdown-menu-toggle{ type: 'button', data: { toggle: 'dropdown', display: 'static' } }
= toggle_text = toggle_text
= sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3') = sprite_icon('chevron-down', css_class: 'dropdown-menu-toggle-icon gl-top-3')
%ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable %ul.dropdown-menu.dropdown-menu-right.dropdown-menu-selectable
......
.user-callout.promotion-callout.js-service-desk-callout#promote_service_desk{ data: { uid: 'promote_service_desk_dismissed' } } .user-callout.promotion-callout.js-service-desk-callout#promote_service_desk{ data: { uid: 'promote_service_desk_dismissed' } }
.bordered-box.content-block .bordered-box.content-block
%button.btn.btn-default.close.js-close-callout{ type: 'button', 'aria-label' => 'Dismiss Service Desk promotion' } %button.gl-button.btn.btn-default.close.js-close-callout{ type: 'button', 'aria-label' => 'Dismiss Service Desk promotion' }
= sprite_icon('close', size: 16, css_class: 'dismiss-icon') = sprite_icon('close', size: 16, css_class: 'dismiss-icon')
.svg-container .svg-container
= custom_icon('icon_service_desk') = custom_icon('icon_service_desk')
......
...@@ -59,4 +59,4 @@ ...@@ -59,4 +59,4 @@
.col-sm-10 .col-sm-10
= f.text_field :private_projects_minutes_cost_factor, class: 'form-control' = f.text_field :private_projects_minutes_cost_factor, class: 'form-control'
.form-actions .form-actions
= f.submit _('Save changes'), class: 'btn btn-success' = f.submit _('Save changes'), class: 'gl-button btn btn-confirm'
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
.card .card
.card-header .card-header
.float-right .float-right
%button.js-clipboard-trigger.btn.btn-sm{ title: t('sherlock.copy_to_clipboard'), type: :button } %button.js-clipboard-trigger.gl-button.btn.btn-default.btn-sm{ title: t('sherlock.copy_to_clipboard'), type: :button }
= sprite_icon('copy-to-clipboard') = sprite_icon('copy-to-clipboard')
%pre.hidden %pre.hidden
= @query.formatted_query = @query.formatted_query
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
.card .card
.card-header .card-header
.float-right .float-right
%button.js-clipboard-trigger.btn.btn-sm{ title: t('sherlock.copy_to_clipboard'), type: :button } %button.js-clipboard-trigger.gl-button.btn.btn-default.btn-sm{ title: t('sherlock.copy_to_clipboard'), type: :button }
= sprite_icon('copy-to-clipboard') = sprite_icon('copy-to-clipboard')
%pre.hidden %pre.hidden
= @query.explain = @query.explain
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
.project-card-errors .project-card-errors
.card-header.bg-transparent.border-bottom-0.border-top .card-header.bg-transparent.border-bottom-0.border-top
%button.btn.btn-link.btn-card-header.collapsed.d-flex{ type: 'button', %button.gl-button.btn.btn-link.btn-card-header.collapsed.d-flex{ type: 'button',
data: { toggle: 'collapse', target: "#project-errors-#{project_registry.project_id}" }, data: { toggle: 'collapse', target: "#project-errors-#{project_registry.project_id}" },
'aria-expanded' => 'false', 'aria-expanded' => 'false',
'aria-controls' => "project-errors-#{project_registry.project_id}" } 'aria-controls' => "project-errors-#{project_registry.project_id}" }
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
- if project_registry.last_repository_sync_failure || project_registry.last_repository_verification_failure - if project_registry.last_repository_sync_failure || project_registry.last_repository_verification_failure
.project-card-errors .project-card-errors
.card-header.bg-transparent.border-bottom-0.border-top .card-header.bg-transparent.border-bottom-0.border-top
%button.btn.btn-link.btn-card-header.collapsed.d-flex{ type: 'button', %button.gl-button.btn.btn-link.btn-card-header.collapsed.d-flex{ type: 'button',
data: { toggle: 'collapse', target: "#project-errors-#{project_registry.project_id}" }, data: { toggle: 'collapse', target: "#project-errors-#{project_registry.project_id}" },
'aria-expanded' => 'false', 'aria-expanded' => 'false',
'aria-controls' => "project-errors-#{project_registry.project_id}" } 'aria-controls' => "project-errors-#{project_registry.project_id}" }
......
- return unless current_user&.can?(:export_user_permissions) - return unless current_user&.can?(:export_user_permissions)
= link_to admin_user_permission_exports_path(format: :csv), { class: 'gl-button btn btn-default', data: { toggle: "tooltip", placement: "top", container: "body" }, title: s_("AdminUsers|Export permissions as CSV") } do = link_to admin_user_permission_exports_path(format: :csv), { class: 'gl-button btn btn-default btn-icon', data: { toggle: "tooltip", placement: "top", container: "body" }, title: s_("AdminUsers|Export permissions as CSV") } do
.gl-button-icon .gl-button-icon
= sprite_icon('upload') = sprite_icon('upload')
...@@ -9,6 +9,6 @@ ...@@ -9,6 +9,6 @@
= form_for [@group, @hook], as: :hook, url: group_hook_path(@group, @hook) do |f| = form_for [@group, @hook], as: :hook, url: group_hook_path(@group, @hook) do |f|
= render partial: 'shared/web_hooks/form', locals: { form: f, hook: @hook } = render partial: 'shared/web_hooks/form', locals: { form: f, hook: @hook }
%span>= f.submit _('Save changes'), class: 'btn btn-success gl-mr-3' %span>= f.submit _('Save changes'), class: 'gl-button btn btn-confirm gl-mr-3'
= render 'shared/web_hooks/test_button', hook: @hook = render 'shared/web_hooks/test_button', hook: @hook
= link_to _('Delete'), group_hook_path(@group, @hook), method: :delete, class: 'gl-button btn btn-danger float-right', data: { confirm: _('Are you sure?') } = link_to _('Delete'), group_hook_path(@group, @hook), method: :delete, class: 'gl-button btn btn-danger float-right', data: { confirm: _('Are you sure?') }
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
.col-lg-9.gl-mb-3 .col-lg-9.gl-mb-3
= form_for @hook, as: :hook, url: polymorphic_path([@group, :hooks]) do |f| = form_for @hook, as: :hook, url: polymorphic_path([@group, :hooks]) do |f|
= render partial: 'shared/web_hooks/form', locals: { form: f, hook: @hook } = render partial: 'shared/web_hooks/form', locals: { form: f, hook: @hook }
= f.submit _('Add webhook'), class: 'btn btn-success' = f.submit _('Add webhook'), class: 'gl-button btn btn-confirm'
= render 'shared/web_hooks/index', hooks: @hooks, hook_class: @hook.class = render 'shared/web_hooks/index', hooks: @hooks, hook_class: @hook.class
- elsif show_promotions? - elsif show_promotions?
......
...@@ -8,4 +8,4 @@ ...@@ -8,4 +8,4 @@
= f.label :unlock_membership_to_ldap, class: 'form-check-label' do = f.label :unlock_membership_to_ldap, class: 'form-check-label' do
= _('Allow owners to manually add users outside of LDAP') = _('Allow owners to manually add users outside of LDAP')
.form-actions .form-actions
= f.submit _('Save'), class: 'btn btn-success qa-save' = f.submit _('Save'), class: 'gl-button btn btn-confirm qa-save'
...@@ -63,6 +63,6 @@ ...@@ -63,6 +63,6 @@
= s_('GroupSAML|This will be set as the access level of users added to the group.') = s_('GroupSAML|This will be set as the access level of users added to the group.')
.mt-3 .mt-3
= f.submit _("Save changes"), class: 'btn btn-success', data: { qa_selector: 'save_changes_button' } = f.submit _("Save changes"), class: 'gl-button btn btn-confirm', data: { qa_selector: 'save_changes_button' }
#js-saml-test-button.has-tooltip.float-right #js-saml-test-button.has-tooltip.float-right
= render 'test_button', saml_provider: @saml_provider = render 'test_button', saml_provider: @saml_provider
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
= s_("GroupSAML|SAML Response XML") = s_("GroupSAML|SAML Response XML")
.file-actions .file-actions
.btn-group .btn-group
= clipboard_button(text: indented_xml, class: "btn btn-sm js-copy-blob-source-btn", title: s_('GroupSAML|Copy SAML Response XML')) = clipboard_button(text: indented_xml, class: "gl-button btn btn-sm js-copy-blob-source-btn btn-default", title: s_('GroupSAML|Copy SAML Response XML'))
.file-content.code.js-syntax-highlight.qa-file-content .file-content.code.js-syntax-highlight.qa-file-content
.blob-content .blob-content
%pre.code.highlight %pre.code.highlight
......
= saml_link_for_provider _('Verify SAML Configuration'), saml_provider, redirect: ::OmniAuth::Strategies::GroupSaml::VERIFY_SAML_RESPONSE, html_class: "btn qa-saml-settings-test-button #{ 'd-none' unless saml_provider.persisted? }" = saml_link_for_provider _('Verify SAML Configuration'), saml_provider, redirect: ::OmniAuth::Strategies::GroupSaml::VERIFY_SAML_RESPONSE, html_class: "gl-button btn btn-default qa-saml-settings-test-button #{ 'd-none' unless saml_provider.persisted? }"
...@@ -8,4 +8,4 @@ ...@@ -8,4 +8,4 @@
%p %p
= _("Restoring the group will prevent the group, its subgroups and projects from being removed on this date.") = _("Restoring the group will prevent the group, its subgroups and projects from being removed on this date.")
= form_tag(group_restore_path(group), method: :post) do = form_tag(group_restore_path(group), method: :post) do
= button_to _('Restore group'), '#', class: "btn btn-warning" = button_to _('Restore group'), '#', class: "gl-button btn btn-default"
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
= render 'user_info' = render 'user_info'
.submit-container .submit-container
= f.submit _("Sign out & Register"), class: "btn-success btn qa-new-user-register-button", data: { qa_selector: 'sign_out_and_register_button' } = f.submit _("Sign out & Register"), class: "btn-confirm gl-button btn qa-new-user-register-button", data: { qa_selector: 'sign_out_and_register_button' }
- else - else
.submit-container .submit-container
= f.submit _("Register"), class: "btn-success btn qa-new-user-register-button" = f.submit _("Register"), class: "btn-confirm gl-button btn qa-new-user-register-button"
...@@ -54,4 +54,4 @@ ...@@ -54,4 +54,4 @@
You can manage permission levels for individual group members in the Members tab. You can manage permission levels for individual group members in the Members tab.
.form-actions.gl-mb-5 .form-actions.gl-mb-5
= f.submit 'Add synchronization', class: 'btn btn-success qa-add-sync-button' = f.submit 'Add synchronization', class: 'gl-button btn btn-confirm qa-add-sync-button'
%li %li
.float-right .float-right
= link_to group_ldap_group_link_path(group, ldap_group_link), method: :delete, class: 'btn btn-danger btn-sm' do = link_to group_ldap_group_link_path(group, ldap_group_link), method: :delete, class: 'gl-button btn btn-danger btn-sm' do
= sprite_icon('unlink', size: 12, css_class: 'gl-m-0!') = sprite_icon('unlink', size: 12, css_class: 'gl-m-0!')
%span= _('Remove') %span= _('Remove')
%strong= ldap_group_link.cn ? "Group: #{ldap_group_link.cn}" : "Filter: #{truncate(ldap_group_link.filter, length: 70)}" %strong= ldap_group_link.cn ? "Group: #{ldap_group_link.cn}" : "Filter: #{truncate(ldap_group_link.filter, length: 70)}"
......
...@@ -19,11 +19,11 @@ ...@@ -19,11 +19,11 @@
.btn-group.mirror-actions-group.float-right{ role: 'group' } .btn-group.mirror-actions-group.float-right{ role: 'group' }
- ssh_public_key = @project.import_data.ssh_public_key - ssh_public_key = @project.import_data.ssh_public_key
- if ssh_public_key - if ssh_public_key
= clipboard_button(text: ssh_public_key, class: 'btn btn-default rspec-copy-ssh-public-key', title: _('Copy SSH public key'), qa_selector: 'copy_public_key_button') = clipboard_button(text: ssh_public_key, class: 'gl-button btn btn-default rspec-copy-ssh-public-key', title: _('Copy SSH public key'), qa_selector: 'copy_public_key_button')
- if import_state.mirror_update_due? || import_state.updating_mirror? - if import_state.mirror_update_due? || import_state.updating_mirror?
%button.btn.btn-icon.gl-button.disabled{ type: 'button', data: { container: 'body', toggle: 'tooltip', qa_selector: 'updating_button' }, title: _('Updating') }= sprite_icon("retry", css_class: "spin") %button.btn.btn-default.btn-icon.gl-button.disabled{ type: 'button', data: { container: 'body', toggle: 'tooltip', qa_selector: 'updating_button' }, title: _('Updating') }= sprite_icon("retry", css_class: "spin")
- elsif @project.archived? - elsif @project.archived?
%button.btn.btn-icon.gl-button.disabled{ type: 'button', data: { container: 'body', toggle: 'tooltip', qa_selector: 'update_now_button' }, title: _('This Project is currently archived and read-only. Please unarchive the project first if you want to resume Pull mirroring') }= sprite_icon("retry") %button.btn.btn-default.btn-icon.gl-button.disabled{ type: 'button', data: { container: 'body', toggle: 'tooltip', qa_selector: 'update_now_button' }, title: _('This Project is currently archived and read-only. Please unarchive the project first if you want to resume Pull mirroring') }= sprite_icon("retry")
- else - else
= link_to update_now_project_mirror_path(@project), method: :post, class: 'btn gl-button btn-icon btn-default js-force-update-mirror', data: { container: 'body', toggle: 'tooltip', qa_selector: 'update_now_button' }, title: _('Update now') do = link_to update_now_project_mirror_path(@project), method: :post, class: 'btn gl-button btn-icon btn-default js-force-update-mirror', data: { container: 'body', toggle: 'tooltip', qa_selector: 'update_now_button' }, title: _('Update now') do
= sprite_icon("retry") = sprite_icon("retry")
......
= button_tag welcome_submit_button_text, class: %w[btn btn-success w-100], data: { qa_selector: 'get_started_button' } = button_tag welcome_submit_button_text, class: %w[gl-button btn btn-confirm w-100], data: { qa_selector: 'get_started_button' }
...@@ -16,6 +16,6 @@ ...@@ -16,6 +16,6 @@
= link_to _('Start your trial'), new_trial_registration_path(glm_source: 'gitlab.com', glm_content: 'gold-callout'), class: "btn btn-confirm gl-button mt-2 mt-sm-0 #{button_css_class}", target: '_blank' = link_to _('Start your trial'), new_trial_registration_path(glm_source: 'gitlab.com', glm_content: 'gold-callout'), class: "btn btn-confirm gl-button mt-2 mt-sm-0 #{button_css_class}", target: '_blank'
- if is_dismissable - if is_dismissable
%button.btn.btn-default.close.js-close{ type: 'button', %button.gl-button.btn.btn-default.close.js-close{ type: 'button',
'aria-label' => _('Dismiss trial promotion') } 'aria-label' => _('Dismiss trial promotion') }
= sprite_icon('close', css_class: 'dismiss-icon') = sprite_icon('close', css_class: 'dismiss-icon')
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
.filtered-search-box .filtered-search-box
= dropdown_tag(_('Recent searches'), = dropdown_tag(_('Recent searches'),
options: { wrapper_class: "filtered-search-history-dropdown-wrapper", options: { wrapper_class: "filtered-search-history-dropdown-wrapper",
toggle_class: "btn filtered-search-history-dropdown-toggle-button", toggle_class: "gl-button btn btn-default filtered-search-history-dropdown-toggle-button",
dropdown_class: "filtered-search-history-dropdown", dropdown_class: "filtered-search-history-dropdown",
content_class: "filtered-search-history-dropdown-content" }) do content_class: "filtered-search-history-dropdown-content" }) do
.js-filtered-search-history-dropdown{ data: { full_path: search_history_storage_prefix } } .js-filtered-search-history-dropdown{ data: { full_path: search_history_storage_prefix } }
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
#js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown #js-dropdown-hint.filtered-search-input-dropdown-menu.dropdown-menu.hint-dropdown
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item{ data: {hint: "#{'{{hint}}'}", tag: "#{'{{tag}}'}", action: "#{'{{hint === \'search\' ? \'submit\' : \'\' }}'}" } } %li.filter-dropdown-item{ data: {hint: "#{'{{hint}}'}", tag: "#{'{{tag}}'}", action: "#{'{{hint === \'search\' ? \'submit\' : \'\' }}'}" } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
-# Encapsulate static class name `{{icon}}` inside #{} to bypass -# Encapsulate static class name `{{icon}}` inside #{} to bypass
-# haml lint's ClassAttributeWithStaticValue -# haml lint's ClassAttributeWithStaticValue
%svg %svg
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
#js-dropdown-operator.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-operator.filtered-search-input-dropdown-menu.dropdown-menu
%ul.filter-dropdown{ data: { dropdown: true, dynamic: true } } %ul.filter-dropdown{ data: { dropdown: true, dynamic: true } }
%li.filter-dropdown-item{ data: { value: "{{ title }}" } } %li.filter-dropdown-item{ data: { value: "{{ title }}" } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
{{ title }} {{ title }}
%span.btn-helptext %span.btn-helptext
{{ help }} {{ help }}
...@@ -70,12 +70,12 @@ ...@@ -70,12 +70,12 @@
#js-dropdown-label.filtered-search-input-dropdown-menu.dropdown-menu #js-dropdown-label.filtered-search-input-dropdown-menu.dropdown-menu
%ul{ data: { dropdown: true } } %ul{ data: { dropdown: true } }
%li.filter-dropdown-item{ data: { value: 'none' } } %li.filter-dropdown-item{ data: { value: 'none' } }
%button.btn.btn-link{ type: 'button' } %button.gl-button.btn.btn-link{ type: 'button' }
= _("No label") = _("No label")
%li.divider.droplab-item-ignore %li.divider.droplab-item-ignore
%ul.filter-dropdown{ data: { dynamic: true, dropdown: true } } %ul.filter-dropdown{ data: { dynamic: true, dropdown: true } }
%li.filter-dropdown-item{ type: 'button' } %li.filter-dropdown-item{ type: 'button' }
%button.btn.btn-link %button.gl-button.btn.btn-link
%span.dropdown-label-box{ style: 'background: {{color}}' } %span.dropdown-label-box{ style: 'background: {{color}}' }
%span.label-title.js-data-value %span.label-title.js-data-value
{{ title }} {{ title }}
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
.dropdown.gl-new-dropdown.gl-ml-3 .dropdown.gl-new-dropdown.gl-ml-3
.btn-group.d-flex.d-md-inline-flex .btn-group.d-flex.d-md-inline-flex
.btn-group .btn-group
%button.btn.gl-button.btn-default.dropdown-toggle.epics-sort-btn{ type: 'button', data: { toggle: 'dropdown' } } %button.btn.gl-button.btn-default.epics-sort-btn{ type: 'button', data: { toggle: 'dropdown' } }
%span.gl-new-dropdown-button-text %span.gl-new-dropdown-button-text
= sorted_by = sorted_by
= sprite_icon('chevron-down', css_class: 'gl-button-icon dropdown-chevron gl-icon s16') = sprite_icon('chevron-down', css_class: 'gl-button-icon dropdown-chevron gl-icon s16')
......
- if show_advanced_search_promotion? - if show_advanced_search_promotion?
.user-callout.promotion-callout.promotion-advanced-search.js-mr-approval-callout#promote_advanced_search{ data: { uid: 'promote_advanced_search_dismissed' } } .user-callout.promotion-callout.promotion-advanced-search.js-mr-approval-callout#promote_advanced_search{ data: { uid: 'promote_advanced_search_dismissed' } }
.bordered-box.content-block .bordered-box.content-block
%button.btn.btn-default.close.js-close-callout{ type: 'button', 'aria-label' => _('Dismiss merge request promotion') } %button.btn.btn-default-tertiary.btn-icon.btn-sm.close.gl-banner-close.gl-button.js-close-callout{ type: 'button', 'aria-label' => _('Dismiss') }
= sprite_icon('close', size: 16, css_class: 'dismiss-icon') = sprite_icon('close', size: 16, css_class: 'dismiss-icon')
.svg-container .svg-container
= custom_icon('icon_search_avatar') = custom_icon('icon_search_avatar')
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
- if show_burndown_charts_promotion?(milestone) && show_callout?(callout_id) - if show_burndown_charts_promotion?(milestone) && show_callout?(callout_id)
.user-callout.promotion-callout#promote_burndown_charts{ data: { uid: callout_id } } .user-callout.promotion-callout#promote_burndown_charts{ data: { uid: callout_id } }
.bordered-box.content-block.promotion-burndown-charts-content .bordered-box.content-block.promotion-burndown-charts-content
%button.btn.btn-default.close.js-close-callout{ type: 'button', 'aria-label' => s_('Promotions|Dismiss burndown charts promotion') } %button.gl-button.btn.btn-default.close.js-close-callout{ type: 'button', 'aria-label' => s_('Promotions|Dismiss burndown charts promotion') }
= sprite_icon('close', size: 16, css_class: 'dismiss-icon') = sprite_icon('close', size: 16, css_class: 'dismiss-icon')
.svg-container .svg-container
= custom_icon('icon_burndown_charts') = custom_icon('icon_burndown_charts')
......
- if show_promotions? && show_callout?('promote_mr_features_dismissed') && !@project.feature_available?(:merge_request_approvers) - if show_promotions? && show_callout?('promote_mr_features_dismissed') && !@project.feature_available?(:merge_request_approvers)
.user-callout.promotion-callout.append-bottom-20.js-mr-approval-callout#promote_mr_features{ data: { uid: 'promote_mr_features_dismissed' } } .user-callout.promotion-callout.append-bottom-20.js-mr-approval-callout#promote_mr_features{ data: { uid: 'promote_mr_features_dismissed' } }
.bordered-box.content-block .bordered-box.content-block
%button.btn.btn-default.close.js-close-callout{ type: 'button', 'aria-label' => _('Dismiss merge request promotion') } %button.gl-button.btn.btn-default-tertiary.close.js-close-callout{ type: 'button', 'aria-label' => _('Dismiss merge request promotion') }
= sprite_icon('close', size: 16, css_class: 'dismiss-icon') = sprite_icon('close', size: 16, css_class: 'dismiss-icon')
.user-callout-copy .user-callout-copy
%h4 %h4
......
- if show_promotions? && show_callout?('promote_repository_features_dismissed') && (!@project.feature_available?(:push_rules) || !@project.feature_available?(:repository_mirrors) || !@project.feature_available?(:protected_refs_for_users)) - if show_promotions? && show_callout?('promote_repository_features_dismissed') && (!@project.feature_available?(:push_rules) || !@project.feature_available?(:repository_mirrors) || !@project.feature_available?(:protected_refs_for_users))
.user-callout.promotion-callout{ id: 'promote_repository_features', data: { uid: 'promote_repository_features_dismissed' } } .user-callout.promotion-callout{ id: 'promote_repository_features', data: { uid: 'promote_repository_features_dismissed' } }
.bordered-box.content-block .bordered-box.content-block
%button.btn.btn-default.close.js-close-callout{ type: 'button', 'aria-label' => 'Dismiss repository features promotion' } %button.gl-button.btn.btn-default-tertiary.close.js-close-callout{ type: 'button', 'aria-label' => 'Dismiss repository features promotion' }
= sprite_icon('close', size: 16, css_class: 'dismiss-icon') = sprite_icon('close', size: 16, css_class: 'dismiss-icon')
.svg-container .svg-container
= custom_icon('icon_push_rules') = custom_icon('icon_push_rules')
......
...@@ -29,6 +29,6 @@ ...@@ -29,6 +29,6 @@
.gl-form-checkbox.form-check.form-check-inline .gl-form-checkbox.form-check.form-check-inline
= radio_button_tag :trial_entity, :individual, params[:trial_entity]=='individual', required: true, class: 'form-check-input' = radio_button_tag :trial_entity, :individual, params[:trial_entity]=='individual', required: true, class: 'form-check-input'
= label_tag :trial_entity_individual, _('No'), class: 'form-check-label' = label_tag :trial_entity_individual, _('No'), class: 'form-check-label'
= submit_tag _('Start your free trial'), class: 'btn btn-success btn-block' = submit_tag _('Start your free trial'), class: 'gl-button btn btn-confirm btn-block'
= render 'skip_trial' = render 'skip_trial'
...@@ -8,4 +8,4 @@ ...@@ -8,4 +8,4 @@
%strong= @email %strong= @email
from any further admin emails. from any further admin emails.
.form-actions .form-actions
= submit_tag 'Unsubscribe', class: 'btn btn-success' = submit_tag 'Unsubscribe', class: 'gl-button btn btn-confirm'
---
title: Bootstrap button migration
merge_request: 56968
author:
type: other
...@@ -58,7 +58,7 @@ RSpec.describe 'group epic roadmap', :js do ...@@ -58,7 +58,7 @@ RSpec.describe 'group epic roadmap', :js do
it 'renders the sort dropdown correctly' do it 'renders the sort dropdown correctly' do
page.within('.content-wrapper .content .epics-other-filters') do page.within('.content-wrapper .content .epics-other-filters') do
expect(page).to have_css('.filter-dropdown-container') expect(page).to have_css('.filter-dropdown-container')
find('.dropdown-toggle').click find('.epics-sort-btn').click
page.within('.dropdown-menu') do page.within('.dropdown-menu') do
expect(page).to have_selector('li a', count: 2) expect(page).to have_selector('li a', count: 2)
expect(page).to have_content('Start date') expect(page).to have_content('Start date')
......
...@@ -32,7 +32,7 @@ RSpec.describe SnippetsHelper do ...@@ -32,7 +32,7 @@ RSpec.describe SnippetsHelper do
end end
def download_link(url) def download_link(url)
"<a class=\"btn\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Open raw\" href=\"#{url}\">#{external_snippet_icon('doc-code')}</a>" "<a class=\"gl-button btn btn-default\" target=\"_blank\" rel=\"noopener noreferrer\" title=\"Open raw\" href=\"#{url}\">#{external_snippet_icon('doc-code')}</a>"
end end
end end
...@@ -59,31 +59,7 @@ RSpec.describe SnippetsHelper do ...@@ -59,31 +59,7 @@ RSpec.describe SnippetsHelper do
end end
def download_link(url) def download_link(url)
"<a class=\"btn\" target=\"_blank\" title=\"Download\" rel=\"noopener noreferrer\" href=\"#{url}?inline=false\">#{external_snippet_icon('download')}</a>" "<a class=\"gl-button btn btn-default\" target=\"_blank\" title=\"Download\" rel=\"noopener noreferrer\" href=\"#{url}?inline=false\">#{external_snippet_icon('download')}</a>"
end
end
describe '#download_raw_snippet_button' do
subject { download_raw_snippet_button(snippet) }
context 'with personal snippet' do
let(:snippet) { public_personal_snippet }
it 'returns the download button' do
expect(subject).to eq(download_link("/-/snippets/#{snippet.id}/raw"))
end
end
context 'with project snippet' do
let(:snippet) { public_project_snippet }
it 'returns the download button' do
expect(subject).to eq(download_link("/#{snippet.project.path_with_namespace}/-/snippets/#{snippet.id}/raw"))
end
end
def download_link(url)
"<a target=\"_blank\" rel=\"noopener noreferrer\" class=\"btn btn-sm has-tooltip\" title=\"Download\" data-container=\"body\" href=\"#{url}?inline=false\">#{sprite_icon('download')}</a>"
end end
end end
......
...@@ -76,7 +76,7 @@ RSpec.describe WikiHelper do ...@@ -76,7 +76,7 @@ RSpec.describe WikiHelper do
describe '#wiki_sort_controls' do describe '#wiki_sort_controls' do
let(:wiki) { create(:project_wiki) } let(:wiki) { create(:project_wiki) }
let(:wiki_link) { helper.wiki_sort_controls(wiki, sort, direction) } let(:wiki_link) { helper.wiki_sort_controls(wiki, sort, direction) }
let(:classes) { "btn btn-default has-tooltip reverse-sort-btn qa-reverse-sort rspec-reverse-sort" } let(:classes) { "gl-button btn btn-default btn-icon has-tooltip reverse-sort-btn qa-reverse-sort rspec-reverse-sort" }
def expected_link(sort, direction, icon_class) def expected_link(sort, direction, icon_class)
path = "/#{wiki.project.full_path}/-/wikis/pages?direction=#{direction}&sort=#{sort}" path = "/#{wiki.project.full_path}/-/wikis/pages?direction=#{direction}&sort=#{sort}"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment