tab focusing

This commit is contained in:
Adam Bradley
2015-04-22 21:31:55 -05:00
parent 2bad5739aa
commit e4139fc738
15 changed files with 79 additions and 13 deletions

View File

@ -38,3 +38,30 @@ $content-padding: 10px !default;
.padding-horizontal {
padding-left: $content-padding;
}
// Focus Outline
// --------------------------------------------------
// When a keydown event happens then .key-input is added
// to the body element so focusable elements have an outline.
// On a mousedown or touchstart event the .key-input class
// is removed
:focus,
:active {
outline: none;
}
.key-input {
:focus {
outline-offset: -1px;
outline: thin dotted;
}
.button:focus {
outline-offset: -2px;
outline: 2px solid red;
}
}

View File

@ -1,6 +1,6 @@
import {bootstrap} from 'angular2/core'
import {Component, Template, For} from 'angular2/angular2'
import {Item, View, List} from 'ionic2/components'
import {Item, View, List} from 'ionic2/ionic2'
import {ItemPrimarySwipeButtons} from 'ionic2/components/item/item-swipe-buttons'

View File

@ -1,6 +1,6 @@
import {bootstrap} from 'angular2/core'
import {Component, Template, For} from 'angular2/angular2'
import {Item, View, List} from 'ionic2/components'
import {Item, View, List} from 'ionic2/ionic2'
import {ItemPrimarySwipeButtons} from 'ionic2/components/item/item-swipe-buttons'

View File

@ -1,6 +1,5 @@
import {Component, Template, Parent} from 'angular2/angular2'
import {NavViewport} from 'ionic2/components'
import {View} from 'ionic2/components/view/view'
import {NavViewport, View} from 'ionic2/ionic2'
import {SecondPage} from 'app/pages/second-page'
@Component({

View File

@ -1,5 +1,5 @@
import {Component, Template} from 'angular2/angular2'
import {View} from 'ionic2/components'
import {View} from 'ionic2/ionic2'
@Component({
selector: 'settings-general'

View File

@ -1,5 +1,5 @@
import {Component, Template} from 'angular2/angular2'
import {View, NavPane} from 'ionic2/components'
import {View, NavPane} from 'ionic2/ionic2'
@Component({ selector: 'privacy-settings' })
@Template({

View File

@ -1,7 +1,8 @@
import {Component, Template, bootstrap} from 'angular2/angular2'
import {NavViewport, Aside} from 'ionic2/components'
import {NavViewport, Aside} from 'ionic2/ionic2'
import {SignInPage} from 'app/pages/sign-in'
@Component({
selector: '[ion-app]',
})

View File

@ -17,6 +17,10 @@
</button>
</p>
<p>
<input>
</p>
<f></f><f></f><f></f><f></f><f></f><f></f><f></f><f></f><f></f><f></f><f></f><f></f>
</ion-content>

View File

@ -1,5 +1,5 @@
import {Component, Template} from 'angular2/angular2'
import {View, NavPane, Content} from 'ionic2/components'
import {View, NavPane, Content} from 'ionic2/ionic2'
import {TabsPage} from 'app/pages/tabs'
@Component({

View File

@ -1,6 +1,6 @@
import {Component, Template, Parent} from 'angular2/angular2'
import {View, Tabs, Tab, Aside, Content} from 'ionic2/components'
import {NavPane} from 'ionic2/components'
import {View, Tabs, Tab, Aside, Content, NavPane} from 'ionic2/ionic2'
@Component({
selector: 'tabs-page'

View File

@ -1,6 +1,6 @@
import {bootstrap} from 'angular2/core'
import {Component, Template} from 'angular2/angular2'
import {View, Tabs, Tab} from 'ionic2/components'
import {View, Tabs, Tab} from 'ionic2/ionic2'
import {webview} from 'ionic2/webview/webview'
import {cordova} from 'ionic2/webview/cordova/cordova'
import {nodeWebkit} from 'ionic2/webview/node-webkit/node-webkit'

View File

@ -1,6 +1,6 @@
import {bootstrap} from 'angular2/core';
import {Component, Template} from 'angular2/angular2';
import {View, Tabs, Tab} from 'ionic2/components';
import {View, Tabs, Tab} from 'ionic2/ionic2';
@Component({ selector: '[ion-app]' })

View File

@ -1,6 +1,6 @@
import {bootstrap} from 'angular2/core';
import {Component, Template} from 'angular2/angular2';
import {View, Tabs, Tab} from 'ionic2/components';
import {View, Tabs, Tab} from 'ionic2/ionic2';
@Component({ selector: '[ion-app]' })

View File

@ -4,3 +4,4 @@ export * from 'ionic2/platform/platform'
export * from 'ionic2/webview/webview'
export * from 'ionic2/webview/cordova/cordova'
export * from 'ionic2/webview/node-webkit/node-webkit'
export * from 'ionic2/util/focus'

34
src/util/focus.js Normal file
View File

@ -0,0 +1,34 @@
import {dom} from 'ionic2/util'
let isKeyInputEnabled = false
function keyDown() {
if (!isKeyInputEnabled) {
isKeyInputEnabled = true
dom.raf(enableKeyInput)
}
}
dom.ready().then(function() {
document.addEventListener('keydown', keyDown)
})
function enableKeyInput() {
document.body.classList[isKeyInputEnabled ? 'add' : 'remove']('key-input')
if (isKeyInputEnabled) {
document.addEventListener('mousedown', pointerDown)
document.addEventListener('touchstart', pointerDown)
} else {
document.removeEventListener('mousedown', pointerDown)
document.removeEventListener('touchstart', pointerDown)
}
}
function pointerDown() {
isKeyInputEnabled = false
dom.raf(enableKeyInput)
}