]> _ Git - fluidbook-html5.git/commitdiff
fix #3757 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 15 Jul 2020 15:10:45 +0000 (17:10 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 15 Jul 2020 15:10:45 +0000 (17:10 +0200)
js/libs/fluidbook/fluidbook.accessibility.js
js/libs/fluidbook/fluidbook.interface.js
js/libs/fluidbook/fluidbook.nav.js
js/libs/fluidbook/fluidbook.tooltip.js
style/accessibility.less
style/fluidbook.less

index 6990f8f2509b19031cd014c0b28e4334beba261d..fac1b05ef161184e9a290e62da47eb25426db35e 100644 (file)
@@ -76,10 +76,12 @@ FluidbookAccessibility.prototype = {
 
     // Using mousedown instead of mouseover, so that previously focused elements don't lose focus ring on mouse move
     add_event_listener('mousedown', function () {
+        $('body').removeClass('keyboard-navigating');
         set_css(':focus{outline:0}::-moz-focus-inner{border:0;}');
     });
 
     add_event_listener('keydown', function () {
+        $('body').addClass('keyboard-navigating');
         set_css('');
     });
 
index f36f6b988bc296f883f11a70cbf6ae3eb0bb3069..10538def1ed28da25fc6aafa994ab8ffcc471f36 100644 (file)
@@ -23,21 +23,21 @@ FluidbookInterface.prototype = {
             var res = '';
             if ($('html').hasClass('ltr')) {
                 res += '<div id="prev-arrows">';
-                res += this.fluidbook.nav.getLink('interface-prev', '#', 'previous', '', labels.previous, 'arrow-top', true, '', 'PageUp');
-                res += this.fluidbook.nav.getLink('interface-first', '#', 'first', '', labels.first, 'arrow-bottom', true, '', 'Home');
+                res += this.fluidbook.nav.getLink('interface-prev', '#', 'previous', '', labels.previous, 'arrow-top', true, 'interface', 'PageUp');
+                res += this.fluidbook.nav.getLink('interface-first', '#', 'first', '', labels.first, 'arrow-bottom', true, 'interface', 'Home');
                 res += '</div>';
                 res += '<div id="next-arrows">';
-                res += this.fluidbook.nav.getLink('interface-next', '#', 'next', '', labels.next, 'arrow-top', true, '', 'PageDown');
-                res += this.fluidbook.nav.getLink('interface-last', '#', 'last', '', labels.last, 'arrow-bottom', true, '', 'End');
+                res += this.fluidbook.nav.getLink('interface-next', '#', 'next', '', labels.next, 'arrow-top', true, 'interface', 'PageDown');
+                res += this.fluidbook.nav.getLink('interface-last', '#', 'last', '', labels.last, 'arrow-bottom', true, 'interface', 'End');
                 res += '</div>';
             } else {
                 res += '<div id="next-arrows">';
-                res += this.fluidbook.nav.getLink('interface-next', '#', 'previous', '', labels.previous, 'arrow-top', true, '', 'PageUp');
-                res += this.fluidbook.nav.getLink('interface-last', '#', 'first', '', labels.first, 'arrow-bottom', true, '', 'Home');
+                res += this.fluidbook.nav.getLink('interface-next', '#', 'previous', '', labels.previous, 'arrow-top', true, 'interface', 'PageUp');
+                res += this.fluidbook.nav.getLink('interface-last', '#', 'first', '', labels.first, 'arrow-bottom', true, 'interface', 'Home');
                 res += '</div>';
                 res += '<div id="prev-arrows">';
-                res += this.fluidbook.nav.getLink('interface-prev', '#', 'next', '', labels.next, 'arrow-top', true, '', 'PageDown');
-                res += this.fluidbook.nav.getLink('interface-first', '#', 'last', '', labels.last, 'arrow-bottom', true, '', 'End');
+                res += this.fluidbook.nav.getLink('interface-prev', '#', 'next', '', labels.next, 'arrow-top', true, 'interface', 'PageDown');
+                res += this.fluidbook.nav.getLink('interface-first', '#', 'last', '', labels.last, 'arrow-bottom', true, 'interface', 'End');
                 res += '</div>';
             }
 
index 668b8e6f8db96cf33b35064a7d8b7acac0356635..f3f847379aee84699afa95c8acb90c6ed59fdfa0 100644 (file)
@@ -175,7 +175,7 @@ FluidbookNav.prototype = {
 
 
         // Make sure that the link gets a unique ID when it is used in both menus
-        var elementID = (navType === undefined || navType === null || navType === '') ? id : navType + '_' + id;
+        var elementID = (navType === undefined || navType === null || navType === '' || navType==='interface') ? id : navType + '_' + id;
 
         res += ' id="' + elementID + '"';
 
@@ -188,12 +188,15 @@ FluidbookNav.prototype = {
             res += ' class="' + className + '"';
         }
 
-        res+=' role="button"';
+        res += ' role="button"';
         // Only the horizontal icon menu should have the tooltips
         if (help !== undefined && help !== '') {
             if (navType === 'horizontalNav') {
                 res += ' data-tooltip="' + this.fluidbook.l10n.__(help) + '"';
             }
+            if (navType === 'interface') {
+                res += ' data-keyboard-tooltip="' + this.fluidbook.l10n.__(help) + '"';
+            }
             res += ' aria-label="' + this.fluidbook.l10n.__(help) + '"';
         }
         if (keyboardShortcut !== '') {
index 4a47a970ca0054675dd11bd7421db601c01a0f7f..fa11d30a16ab81ab64cf584515ad55f6e2a745a1 100644 (file)
@@ -29,13 +29,15 @@ FluidbookTooltip.prototype = {
             $this.updateMousePosition(e);
             $this.eventTriggered(this);
         });
-        $(document).on('focus', 'a[data-tooltip]', function (e) {
-            $this.type = 'keyboard';
-            var rect = this.getBoundingClientRect();
-            $this.updateMousePosition({pageX: rect.x + rect.width / 2, pageY: rect.y + rect.height / 2});
-            $this.eventTriggered(this);
+        $(document).on('focus', 'a[data-tooltip],a[data-keyboard-tooltip]', function (e) {
+            if ($('body').hasClass('keyboard-navigating')) {
+                $this.type = 'keyboard';
+                var rect = this.getBoundingClientRect();
+                $this.updateMousePosition({pageX: rect.x + rect.width / 2, pageY: rect.y + rect.height / 2});
+                $this.eventTriggered(this);
+            }
         });
-        $(document).on('blur', 'a[data-tooltip]', function (e) {
+        $(document).on('blur', 'a[data-tooltip],a[data-keyboard-tooltip]', function (e) {
             $this.hideTooltip();
         });
 
@@ -99,7 +101,14 @@ FluidbookTooltip.prototype = {
 
         var $this = this;
 
-        var text = $(target).attr('data-tooltip');
+
+        var text = '';
+        if ($(target).is('[data-tooltip]')) {
+            text = $(target).attr('data-tooltip');
+        } else if ($(target).is('[data-keyboard-tooltip]')) {
+            text = $(target).attr('data-keyboard-tooltip');
+        }
+
         text = $('<textarea />').html(text).text();
         if (text.substr(0, 1) == '~') {
             var text = $this.fluidbook.l10n.__(text.substring(1));
index 8fe914dd30a12a11f6e5b5547f5b3aee171cd8aa..7b8736248021700cb30a2cf225a647abe2a5a67d 100644 (file)
@@ -9,9 +9,9 @@
 }
 
 :focus {
-  outline: thin dotted;
+  outline: #c00 6px solid;
 }
 
-#q:focus{
-outline: 0;
+#q:focus {
+  outline: 0;
 }
\ No newline at end of file
index 003f82ba591b8edbf865822587a945485c668c64..5ca562193b715c061686c5eb491dfedfbc13572d 100644 (file)
@@ -59,6 +59,7 @@ a {
 *::-ms-clear {
   display: none;
 }
+
 * {
   padding: 0;
   margin: 0;
@@ -1300,7 +1301,7 @@ html.ios body.portrait #interface {
       background-color: @links-area-color;
     }
 
-    &:hover, &.hover {
+    &:hover, &.hover, &:focus {
       .using-mouse & {
         opacity: 1 !important;
         background-color: @links-area-color;