mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-19 19:57:22 +08:00
tab focusing
This commit is contained in:
@ -38,3 +38,30 @@ $content-padding: 10px !default;
|
|||||||
.padding-horizontal {
|
.padding-horizontal {
|
||||||
padding-left: $content-padding;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {bootstrap} from 'angular2/core'
|
import {bootstrap} from 'angular2/core'
|
||||||
import {Component, Template, For} from 'angular2/angular2'
|
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'
|
import {ItemPrimarySwipeButtons} from 'ionic2/components/item/item-swipe-buttons'
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {bootstrap} from 'angular2/core'
|
import {bootstrap} from 'angular2/core'
|
||||||
import {Component, Template, For} from 'angular2/angular2'
|
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'
|
import {ItemPrimarySwipeButtons} from 'ionic2/components/item/item-swipe-buttons'
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import {Component, Template, Parent} from 'angular2/angular2'
|
import {Component, Template, Parent} from 'angular2/angular2'
|
||||||
import {NavViewport} from 'ionic2/components'
|
import {NavViewport, View} from 'ionic2/ionic2'
|
||||||
import {View} from 'ionic2/components/view/view'
|
|
||||||
import {SecondPage} from 'app/pages/second-page'
|
import {SecondPage} from 'app/pages/second-page'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {Component, Template} from 'angular2/angular2'
|
import {Component, Template} from 'angular2/angular2'
|
||||||
import {View} from 'ionic2/components'
|
import {View} from 'ionic2/ionic2'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'settings-general'
|
selector: 'settings-general'
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {Component, Template} from 'angular2/angular2'
|
import {Component, Template} from 'angular2/angular2'
|
||||||
import {View, NavPane} from 'ionic2/components'
|
import {View, NavPane} from 'ionic2/ionic2'
|
||||||
|
|
||||||
@Component({ selector: 'privacy-settings' })
|
@Component({ selector: 'privacy-settings' })
|
||||||
@Template({
|
@Template({
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
import {Component, Template, bootstrap} from 'angular2/angular2'
|
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'
|
import {SignInPage} from 'app/pages/sign-in'
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: '[ion-app]',
|
selector: '[ion-app]',
|
||||||
})
|
})
|
||||||
|
@ -17,6 +17,10 @@
|
|||||||
</button>
|
</button>
|
||||||
</p>
|
</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>
|
<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>
|
</ion-content>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {Component, Template} from 'angular2/angular2'
|
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'
|
import {TabsPage} from 'app/pages/tabs'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {Component, Template, Parent} from 'angular2/angular2'
|
import {Component, Template, Parent} from 'angular2/angular2'
|
||||||
import {View, Tabs, Tab, Aside, Content} from 'ionic2/components'
|
import {View, Tabs, Tab, Aside, Content, NavPane} from 'ionic2/ionic2'
|
||||||
import {NavPane} from 'ionic2/components'
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'tabs-page'
|
selector: 'tabs-page'
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {bootstrap} from 'angular2/core'
|
import {bootstrap} from 'angular2/core'
|
||||||
import {Component, Template} from 'angular2/angular2'
|
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 {webview} from 'ionic2/webview/webview'
|
||||||
import {cordova} from 'ionic2/webview/cordova/cordova'
|
import {cordova} from 'ionic2/webview/cordova/cordova'
|
||||||
import {nodeWebkit} from 'ionic2/webview/node-webkit/node-webkit'
|
import {nodeWebkit} from 'ionic2/webview/node-webkit/node-webkit'
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {bootstrap} from 'angular2/core';
|
import {bootstrap} from 'angular2/core';
|
||||||
import {Component, Template} from 'angular2/angular2';
|
import {Component, Template} from 'angular2/angular2';
|
||||||
import {View, Tabs, Tab} from 'ionic2/components';
|
import {View, Tabs, Tab} from 'ionic2/ionic2';
|
||||||
|
|
||||||
|
|
||||||
@Component({ selector: '[ion-app]' })
|
@Component({ selector: '[ion-app]' })
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {bootstrap} from 'angular2/core';
|
import {bootstrap} from 'angular2/core';
|
||||||
import {Component, Template} from 'angular2/angular2';
|
import {Component, Template} from 'angular2/angular2';
|
||||||
import {View, Tabs, Tab} from 'ionic2/components';
|
import {View, Tabs, Tab} from 'ionic2/ionic2';
|
||||||
|
|
||||||
|
|
||||||
@Component({ selector: '[ion-app]' })
|
@Component({ selector: '[ion-app]' })
|
||||||
|
@ -4,3 +4,4 @@ export * from 'ionic2/platform/platform'
|
|||||||
export * from 'ionic2/webview/webview'
|
export * from 'ionic2/webview/webview'
|
||||||
export * from 'ionic2/webview/cordova/cordova'
|
export * from 'ionic2/webview/cordova/cordova'
|
||||||
export * from 'ionic2/webview/node-webkit/node-webkit'
|
export * from 'ionic2/webview/node-webkit/node-webkit'
|
||||||
|
export * from 'ionic2/util/focus'
|
||||||
|
34
src/util/focus.js
Normal file
34
src/util/focus.js
Normal 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)
|
||||||
|
}
|
||||||
|
|
Reference in New Issue
Block a user