Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[stable21] Files & Core accessibility fixes #26650

Merged
merged 9 commits into from
Jul 5, 2021
27 changes: 20 additions & 7 deletions apps/files/css/files.scss
Original file line number Diff line number Diff line change
Expand Up @@ -473,9 +473,16 @@ table td.selection {
}

/* Use label to have bigger clickable size for checkbox */
#fileList tr td.selection>.selectCheckBox + label,
.select-all + label {
padding: 16px;
#fileList tr td.selection>.selectCheckBox,
.select-all {
& + label {
padding: 16px;
}

&:focus + label {
background-color: var(--color-background-hover);
border-radius: var(--border-radius-pill);
}
}

#fileList tr td.filename {
Expand Down Expand Up @@ -632,7 +639,11 @@ a.action > img {
}
}
&:hover, &:focus {
opacity: .7;
opacity: 1;
}
&:focus {
background-color: var(--color-background-hover);
border-radius: var(--border-radius-pill);
}
}
.fileActionsMenu a.action, a.action.action-share.shared-style {
Expand Down Expand Up @@ -683,12 +694,14 @@ a.action > img {
}

.summary {
opacity: .3;
color: var(--color-text-maxcontrast);
/* add whitespace to bottom of files list to correctly show dropdowns */
height: 250px;
}
#filestable .filesummary {
width: 100%;
/* Width of checkbox and file preview */
padding-left: 101px;
}
/* Less whitespace needed on link share page
* as there is a footer and action menus have fewer entries.
Expand All @@ -707,8 +720,8 @@ table tr.summary td {
vertical-align: top;
padding-top: 20px;
}
.summary .info {
margin-left: 2px;
.summary td:first-child {
padding: 0;
}
.hiddeninfo {
white-space: pre-line;
Expand Down
5 changes: 4 additions & 1 deletion apps/files/templates/appnavigation.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,10 @@ class="nav-icon-<?php p(isset($item['icon']) && $item['icon'] !== '' ? $item['ic
NavigationElementMenu($item);
if (isset($item['sublist'])) {
?>
<button class="collapse app-navigation-noclose" <?php if (sizeof($item['sublist']) == 0) { ?> style="display: none" <?php } ?>></button>
<button class="collapse app-navigation-noclose"
aria-label="<?php p($l->t('Toggle %1$s sublist', $item['name'])) ?>"
<?php if (sizeof($item['sublist']) == 0) { ?> style="display: none" <?php } ?>>
</button>
<ul id="sublist-<?php p($item['id']); ?>">
<?php
foreach ($item['sublist'] as $item) {
Expand Down
1 change: 1 addition & 0 deletions apps/files/templates/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

<?php if (!$_['isIE']) { ?>
<input type="checkbox" class="hidden-visually" id="showgridview"
aria-label="<?php p($l->t('Toggle grid view'))?>"
<?php if ($_['showgridview']) { ?>checked="checked" <?php } ?>/>
<label id="view-toggle" for="showgridview" class="button <?php p($_['showgridview'] ? 'icon-toggle-filelist' : 'icon-toggle-pictures') ?>"
title="<?php p($l->t('Toggle grid view'))?>"></label>
Expand Down
36 changes: 27 additions & 9 deletions apps/settings/css/settings.scss
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ input {
#uploadavatarbutton, #selectavatar, #removeavatar {
padding: 21px;
}
#selectavatar, #removeavatar {
vertical-align: top;
}

.jcrop-holder {
z-index: 500;
Expand Down Expand Up @@ -118,9 +121,19 @@ input {
width: 100%;
}

.personal-settings-setting-box input {
&[type='text'], &[type='email'], &[type='tel'], &[type='url'] {
width: 100%;
.personal-settings-setting-box {
.section {
padding: 10px 30px;

h3 {
margin-bottom: 0;
}

input {
&[type='text'], &[type='email'], &[type='tel'], &[type='url'] {
width: 100%;
}
}
}
}

Expand Down Expand Up @@ -361,11 +374,20 @@ select {
.federation-menu {
position: relative;
cursor: pointer;
margin-left: 10px;
width: 44px;
height: 44px;
padding: 10px;
margin: -12px 0 0 8px;
background: none;
border: none;

&:hover,
&:focus {
background-color: var(--color-background-hover);
border-radius: var(--border-radius-pill);

.icon-federation-menu {
opacity: 0.7;
opacity: 0.8;
}
}

Expand Down Expand Up @@ -928,10 +950,6 @@ span.version {
}
}

.personal-settings-setting-box .section {
padding: 10px 30px;
}

.followupsection {
display: block;
padding: 0 30px 30px 30px;
Expand Down
17 changes: 15 additions & 2 deletions apps/settings/js/settings/personalInfo.js
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,17 @@ window.addEventListener('DOMContentLoaded', function () {

$('#uploadavatar').fileupload(uploadparms);

$('#selectavatar').click(function () {
// Trigger upload action also with keyboard navigation on enter
$('#uploadavatarbutton').on('keyup', function(event) {
if (event.key === ' ' || event.key === 'Enter') {
$('#uploadavatar').trigger('click');
}
});

$('#selectavatar').click(function (event) {
event.stopPropagation();
event.preventDefault();

OC.dialogs.filepicker(
t('settings', "Select a profile picture"),
function (path) {
Expand Down Expand Up @@ -338,7 +348,10 @@ window.addEventListener('DOMContentLoaded', function () {
);
});

$('#removeavatar').click(function () {
$('#removeavatar').click(function (event) {
event.stopPropagation();
event.preventDefault();

$.ajax({
type: 'DELETE',
url: OC.generateUrl('/avatar/'),
Expand Down
2 changes: 1 addition & 1 deletion apps/settings/js/templates.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ templates['federationscopemenu'] = template({"1":function(container,depth0,helpe
return undefined
};

return " <li tabindex=\"0\">\n <a href=\"#\" class=\"menuitem action action-"
return " <li>\n <a href=\"#\" class=\"menuitem action action-"
+ alias4(((helper = (helper = lookupProperty(helpers,"name") || (depth0 != null ? lookupProperty(depth0,"name") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"name","hash":{},"data":data,"loc":{"start":{"line":4,"column":45},"end":{"line":4,"column":53}}}) : helper)))
+ " permanent "
+ ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"active") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":64},"end":{"line":4,"column":91}}})) != null ? stack1 : "")
Expand Down
2 changes: 1 addition & 1 deletion apps/settings/js/templates/federationscopemenu.handlebars
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<ul>
{{#each items}}
<li tabindex="0">
<li>
<a href="#" class="menuitem action action-{{name}} permanent {{#if active}}active{{/if}}" data-action="{{name}}">
{{#if iconClass}}
<span class="icon {{iconClass}}"></span>
Expand Down
36 changes: 18 additions & 18 deletions apps/settings/templates/settings/personal/personal.info.php
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,20 @@
<div>
<form id="avatarform" class="section" method="post" action="<?php p(\OC::$server->getURLGenerator()->linkToRoute('core.avatar.postAvatar')); ?>">
<h3>
<label><?php p($l->t('Profile picture')); ?></label>
<div class="federation-menu" tabindex="0">
<?php p($l->t('Profile picture')); ?>
<a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of profile picture')); ?>">
<span class="icon-federation-menu icon-password">
<span class="icon-triangle-s"></span>
</span>
</div>
</a>
</h3>
<div id="displayavatar">
<div class="avatardiv"></div>
<div class="warning hidden"></div>
<?php if ($_['avatarChangeSupported']): ?>
<label for="uploadavatar" class="inlineblock button icon-upload svg" id="uploadavatarbutton" title="<?php p($l->t('Upload new')); ?>"></label>
<div class="inlineblock button icon-folder svg" id="selectavatar" title="<?php p($l->t('Select from Files')); ?>"></div>
<div class="hidden button icon-delete svg" id="removeavatar" title="<?php p($l->t('Remove image')); ?>"></div>
<label for="uploadavatar" class="inlineblock button icon-upload svg" id="uploadavatarbutton" title="<?php p($l->t('Upload new')); ?>" tabindex="0"></label>
<button class="inlineblock button icon-folder svg" id="selectavatar" title="<?php p($l->t('Select from Files')); ?>"></button>
<button class="hidden button icon-delete svg" id="removeavatar" title="<?php p($l->t('Remove image')); ?>"></button>
<input type="file" name="files[]" id="uploadavatar" class="hiddenuploadfield" accept="image/*">
<p><em><?php p($l->t('png or jpg, max. 20 MB')); ?></em></p>
<?php else: ?>
Expand Down Expand Up @@ -101,11 +101,11 @@
<form id="displaynameform" class="section">
<h3>
<label for="displayname"><?php p($l->t('Full name')); ?></label>
<div class="federation-menu" tabindex="0">
<a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of full name')); ?>">
<span class="icon-federation-menu icon-password">
<span class="icon-triangle-s"></span>
</span>
</div>
</a>
</h3>
<input type="text" id="displayname" name="displayname"
<?php if (!$_['displayNameChangeSupported']) {
Expand All @@ -131,11 +131,11 @@
<form id="emailform" class="section">
<h3>
<label for="email"><?php p($l->t('Email')); ?></label>
<div class="federation-menu" tabindex="0">
<a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of email')); ?>">
<span class="icon-federation-menu icon-password">
<span class="icon-triangle-s"></span>
</span>
</div>
</a>
</h3>
<div class="verify <?php if ($_['email'] === '' || $_['emailScope'] !== 'public') {
p('hidden');
Expand Down Expand Up @@ -181,11 +181,11 @@
<form id="phoneform" class="section">
<h3>
<label for="phone"><?php p($l->t('Phone number')); ?></label>
<div class="federation-menu" tabindex="0">
<a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of phone number')); ?>">
<span class="icon-federation-menu icon-password">
<span class="icon-triangle-s"></span>
</span>
</div>
</a>
</h3>
<input type="tel" id="phone" name="phone"
value="<?php p($_['phone']) ?>"
Expand All @@ -200,11 +200,11 @@
<form id="addressform" class="section">
<h3>
<label for="address"><?php p($l->t('Address')); ?></label>
<div class="federation-menu" tabindex="0">
<a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of address')); ?>">
<span class="icon-federation-menu icon-password">
<span class="icon-triangle-s"></span>
</span>
</div>
</a>
</h3>
<input type="text" id="address" name="address"
placeholder="<?php p($l->t('Your postal address')); ?>"
Expand All @@ -219,11 +219,11 @@
<form id="websiteform" class="section">
<h3>
<label for="website"><?php p($l->t('Website')); ?></label>
<div class="federation-menu" tabindex="0">
<a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of website')); ?>">
<span class="icon-federation-menu icon-password">
<span class="icon-triangle-s"></span>
</span>
</div>
</a>
</h3>
<?php if ($_['lookupServerUploadEnabled']) { ?>
<div class="verify <?php if ($_['website'] === '' || $_['websiteScope'] !== 'public') {
Expand Down Expand Up @@ -268,11 +268,11 @@
<form id="twitterform" class="section">
<h3>
<label for="twitter"><?php p($l->t('Twitter')); ?></label>
<div class="federation-menu" tabindex="0">
<a href="#" class="federation-menu" aria-label="<?php p($l->t('Change privacy level of Twitter profile')); ?>">
<span class="icon-federation-menu icon-password">
<span class="icon-triangle-s"></span>
</span>
</div>
</a>
</h3>
<?php if ($_['lookupServerUploadEnabled']) { ?>
<div class="verify <?php if ($_['twitter'] === '' || $_['twitterScope'] !== 'public') {
Expand Down
2 changes: 1 addition & 1 deletion core/js/dist/unified-search.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion core/js/dist/unified-search.js.map

Large diffs are not rendered by default.

9 changes: 8 additions & 1 deletion core/src/views/UnifiedSearch.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,10 @@
@close="onClose">
<!-- Header icon -->
<template #trigger>
<Magnify class="unified-search__trigger" :size="20" fill-color="var(--color-primary-text)" />
<Magnify class="unified-search__trigger"
:size="20"
:title="ariaLabel"
fill-color="var(--color-primary-text)" />
</template>

<!-- Search form & filters wrapper -->
Expand Down Expand Up @@ -191,6 +194,10 @@ export default {
}, {})
},

ariaLabel() {
return t('core', 'Search')
},

/**
* Is there any result to display
* @returns {boolean}
Expand Down