mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-07 15:07:13 +08:00
simple toggle stuff
This commit is contained in:
65
dist/ionic-simple.js
vendored
65
dist/ionic-simple.js
vendored
@ -7,35 +7,54 @@
|
||||
ionic.Components.push(instance);
|
||||
};
|
||||
|
||||
function onTap(e) {
|
||||
ionic.component = function(el) {
|
||||
if(el) {
|
||||
for(var x = 0; x < ionic.Components.length; x++) {
|
||||
if( ionic.Components[x].isComponent(el) ) {
|
||||
// this element is a component, init its view
|
||||
return ionic.Components[x].init(el);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function componentEvent(eventName, e) {
|
||||
if (!e.gesture || !e.gesture.srcEvent || !e.gesture.srcEvent.target) return;
|
||||
|
||||
var
|
||||
x,
|
||||
e = e.gesture.srcEvent,
|
||||
el = e.target,
|
||||
component;
|
||||
component,
|
||||
el = e.gesture.srcEvent.target; // get the original source event's target
|
||||
|
||||
while(el) {
|
||||
// climb up the tree looking to see if the target
|
||||
// is or is in a registered component
|
||||
for(x = 0; x < ionic.Components.length; x++) {
|
||||
if( ionic.Components[x].isComponent(el) ) {
|
||||
// this element is a component
|
||||
// create its view and call it's event handler
|
||||
component = ionic.Components[x].create(el);
|
||||
component && component.tap && component.tap(e);
|
||||
component = ionic.component(el);
|
||||
if(component) {
|
||||
component[eventName] && component[eventName](e.gesture.srcEvent);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// not sure if this element is a component yet,
|
||||
// keep climbing up the tree and check again
|
||||
el = el.parentElement;
|
||||
}
|
||||
}
|
||||
|
||||
function onTap(e) {
|
||||
componentEvent("tap", e);
|
||||
}
|
||||
ionic.on("tap", onTap, window);
|
||||
|
||||
function onDrag(e) {
|
||||
componentEvent("drag", e);
|
||||
}
|
||||
ionic.on("drag", onDrag, window);
|
||||
|
||||
function onRelease(e) {
|
||||
componentEvent("release", e);
|
||||
}
|
||||
ionic.on("release", onRelease, window);
|
||||
|
||||
|
||||
function initalize() {
|
||||
// remove the ready listeners
|
||||
document.removeEventListener( "DOMContentLoaded", initalize, false );
|
||||
@ -78,20 +97,34 @@
|
||||
ionic.registerComponent({
|
||||
|
||||
isComponent: function(el) {
|
||||
// this is a Toggle component if it has a "toggle" classname
|
||||
return el.classList.contains("toggle");
|
||||
},
|
||||
|
||||
create: function(el) {
|
||||
init: function(el) {
|
||||
if(el) {
|
||||
|
||||
// check if we've already created a Toggle instance for this element
|
||||
if(!el._instance) {
|
||||
|
||||
el._instance = new ionic.views.Toggle({
|
||||
// find all the required elements that make up a toggle
|
||||
var opts = {
|
||||
el: el,
|
||||
checkbox: el.querySelector("input[type='checkbox']"),
|
||||
track: el.querySelector(".track"),
|
||||
handle: el.querySelector(".handle")
|
||||
});
|
||||
};
|
||||
|
||||
// validate its a well formed toggle with the required pieces
|
||||
if(!opts.checkbox || !opts.track || !opts.handle) {
|
||||
return;
|
||||
}
|
||||
|
||||
// ensure the handle is draggable
|
||||
opts.handle.draggable = true;
|
||||
|
||||
// initialize an instance of a Toggle
|
||||
el._instance = new ionic.views.Toggle(opts);
|
||||
}
|
||||
|
||||
return el._instance;
|
||||
|
||||
57
dist/ionic.js
vendored
57
dist/ionic.js
vendored
@ -1666,7 +1666,8 @@ window.ionic = {
|
||||
}
|
||||
};
|
||||
})(window.ionic);
|
||||
;(function(ionic) {
|
||||
;
|
||||
(function(ionic) {
|
||||
|
||||
ionic.views.NavBar = function(opts) {
|
||||
this.el = opts.el;
|
||||
@ -1707,7 +1708,8 @@ ionic.views.NavBar.prototype = {
|
||||
}
|
||||
}
|
||||
};
|
||||
})(window.ionic);
|
||||
|
||||
})(ionic);
|
||||
;(function(ionic) {
|
||||
|
||||
ionic.views.HeaderBar = function(opts) {
|
||||
@ -1939,9 +1941,8 @@ ionic.views.TabBar.prototype = {
|
||||
};
|
||||
|
||||
})(window.ionic);
|
||||
;(function(ionic) {
|
||||
|
||||
ionic.views = ionic.views || {};
|
||||
;
|
||||
(function(ionic) {
|
||||
|
||||
ionic.views.SideMenu = function(opts) {
|
||||
this.el = opts.el;
|
||||
@ -1963,7 +1964,8 @@ ionic.views.SideMenu.prototype = {
|
||||
this.el.style.zIndex = -1;
|
||||
}
|
||||
};
|
||||
})(window.ionic);
|
||||
|
||||
})(ionic);
|
||||
;
|
||||
(function(ionic) {
|
||||
|
||||
@ -1977,10 +1979,13 @@ ionic.views.SideMenu.prototype = {
|
||||
ionic.views.Toggle.prototype = {
|
||||
|
||||
tap: function(e) {
|
||||
alert( this.isOn() );
|
||||
|
||||
},
|
||||
|
||||
isOn: function() {
|
||||
val: function(value) {
|
||||
if(value === true || value === false) {
|
||||
this.checkbox.checked = value;
|
||||
}
|
||||
return this.checkbox.checked;
|
||||
}
|
||||
|
||||
@ -2093,38 +2098,36 @@ ionic.controllers.NavController.prototype = {
|
||||
|
||||
};
|
||||
})(window.ionic);
|
||||
;(function(ionic) {
|
||||
|
||||
ionic.controllers = ionic.controllers || {};
|
||||
;
|
||||
(function(ionic) {
|
||||
|
||||
ionic.controllers.SideMenuController = function(options) {
|
||||
var _this = this;
|
||||
var self = this;
|
||||
|
||||
self.left = options.left;
|
||||
self.right = options.right;
|
||||
self.content = options.content;
|
||||
|
||||
this.left = options.left;
|
||||
this.right = options.right;
|
||||
this.content = options.content;
|
||||
|
||||
this._rightShowing = false;
|
||||
this._leftShowing = false;
|
||||
self._rightShowing = false;
|
||||
self._leftShowing = false;
|
||||
|
||||
this.content.onDrag = function(e) {
|
||||
_this._handleDrag(e);
|
||||
self._handleDrag(e);
|
||||
};
|
||||
|
||||
this.content.endDrag = function(e) {
|
||||
_this._endDrag(e);
|
||||
self._endDrag(e);
|
||||
};
|
||||
|
||||
/*
|
||||
// Bind release and drag listeners
|
||||
window.ion.onGesture('release', function(e) {
|
||||
_this._endDrag(e);
|
||||
}, this.center);
|
||||
self._endDrag(e);
|
||||
}, self.center);
|
||||
|
||||
window.ion.onGesture('drag', function(e) {
|
||||
_this._handleDrag(e);
|
||||
}, this.center);
|
||||
self._handleDrag(e);
|
||||
}, self.center);
|
||||
*/
|
||||
};
|
||||
|
||||
@ -2285,7 +2288,7 @@ ionic.controllers.SideMenuController.prototype = {
|
||||
}
|
||||
};
|
||||
|
||||
})(ionic = window.ionic || {});
|
||||
})(ionic);
|
||||
;(function(ionic) {
|
||||
|
||||
ionic.controllers = ionic.controllers || {};
|
||||
@ -2428,14 +2431,12 @@ ionic.controllers.TabBarController.prototype = {
|
||||
|
||||
function tapPolyfill(e) {
|
||||
// if the source event wasn't from a touch event then don't use this polyfill
|
||||
if(!e.gesture || e.gesture.pointerType !== "touch") return;
|
||||
if(!e.gesture || e.gesture.pointerType !== "touch" || !e.gesture.srcEvent) return;
|
||||
|
||||
var
|
||||
e = e.gesture.srcEvent, // evaluate the actual source event, not the created event by gestures.js
|
||||
ele = e.target;
|
||||
|
||||
if(!e) return;
|
||||
|
||||
while(ele) {
|
||||
if( ele.tagName === "INPUT" || ele.tagName === "TEXTAREA" || ele.tagName === "SELECT" ) {
|
||||
return inputTapPolyfill(ele, e);
|
||||
|
||||
@ -7,35 +7,54 @@
|
||||
ionic.Components.push(instance);
|
||||
};
|
||||
|
||||
function onTap(e) {
|
||||
ionic.component = function(el) {
|
||||
if(el) {
|
||||
for(var x = 0; x < ionic.Components.length; x++) {
|
||||
if( ionic.Components[x].isComponent(el) ) {
|
||||
// this element is a component, init its view
|
||||
return ionic.Components[x].init(el);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function componentEvent(eventName, e) {
|
||||
if (!e.gesture || !e.gesture.srcEvent || !e.gesture.srcEvent.target) return;
|
||||
|
||||
var
|
||||
x,
|
||||
e = e.gesture.srcEvent,
|
||||
el = e.target,
|
||||
component;
|
||||
component,
|
||||
el = e.gesture.srcEvent.target; // get the original source event's target
|
||||
|
||||
while(el) {
|
||||
// climb up the tree looking to see if the target
|
||||
// is or is in a registered component
|
||||
for(x = 0; x < ionic.Components.length; x++) {
|
||||
if( ionic.Components[x].isComponent(el) ) {
|
||||
// this element is a component
|
||||
// create its view and call it's event handler
|
||||
component = ionic.Components[x].create(el);
|
||||
component && component.tap && component.tap(e);
|
||||
component = ionic.component(el);
|
||||
if(component) {
|
||||
component[eventName] && component[eventName](e.gesture.srcEvent);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// not sure if this element is a component yet,
|
||||
// keep climbing up the tree and check again
|
||||
el = el.parentElement;
|
||||
}
|
||||
}
|
||||
|
||||
function onTap(e) {
|
||||
componentEvent("tap", e);
|
||||
}
|
||||
ionic.on("tap", onTap, window);
|
||||
|
||||
function onDrag(e) {
|
||||
componentEvent("drag", e);
|
||||
}
|
||||
ionic.on("drag", onDrag, window);
|
||||
|
||||
function onRelease(e) {
|
||||
componentEvent("release", e);
|
||||
}
|
||||
ionic.on("release", onRelease, window);
|
||||
|
||||
|
||||
function initalize() {
|
||||
// remove the ready listeners
|
||||
document.removeEventListener( "DOMContentLoaded", initalize, false );
|
||||
|
||||
@ -4,20 +4,34 @@
|
||||
ionic.registerComponent({
|
||||
|
||||
isComponent: function(el) {
|
||||
// this is a Toggle component if it has a "toggle" classname
|
||||
return el.classList.contains("toggle");
|
||||
},
|
||||
|
||||
create: function(el) {
|
||||
init: function(el) {
|
||||
if(el) {
|
||||
|
||||
// check if we've already created a Toggle instance for this element
|
||||
if(!el._instance) {
|
||||
|
||||
el._instance = new ionic.views.Toggle({
|
||||
// find all the required elements that make up a toggle
|
||||
var opts = {
|
||||
el: el,
|
||||
checkbox: el.querySelector("input[type='checkbox']"),
|
||||
track: el.querySelector(".track"),
|
||||
handle: el.querySelector(".handle")
|
||||
});
|
||||
};
|
||||
|
||||
// validate its a well formed toggle with the required pieces
|
||||
if(!opts.checkbox || !opts.track || !opts.handle) {
|
||||
return;
|
||||
}
|
||||
|
||||
// ensure the handle is draggable
|
||||
opts.handle.draggable = true;
|
||||
|
||||
// initialize an instance of a Toggle
|
||||
el._instance = new ionic.views.Toggle(opts);
|
||||
}
|
||||
|
||||
return el._instance;
|
||||
|
||||
@ -1,35 +1,33 @@
|
||||
|
||||
(function(ionic) {
|
||||
|
||||
ionic.controllers = ionic.controllers || {};
|
||||
|
||||
ionic.controllers.SideMenuController = function(options) {
|
||||
var _this = this;
|
||||
var self = this;
|
||||
|
||||
self.left = options.left;
|
||||
self.right = options.right;
|
||||
self.content = options.content;
|
||||
|
||||
this.left = options.left;
|
||||
this.right = options.right;
|
||||
this.content = options.content;
|
||||
|
||||
this._rightShowing = false;
|
||||
this._leftShowing = false;
|
||||
self._rightShowing = false;
|
||||
self._leftShowing = false;
|
||||
|
||||
this.content.onDrag = function(e) {
|
||||
_this._handleDrag(e);
|
||||
self._handleDrag(e);
|
||||
};
|
||||
|
||||
this.content.endDrag = function(e) {
|
||||
_this._endDrag(e);
|
||||
self._endDrag(e);
|
||||
};
|
||||
|
||||
/*
|
||||
// Bind release and drag listeners
|
||||
window.ion.onGesture('release', function(e) {
|
||||
_this._endDrag(e);
|
||||
}, this.center);
|
||||
self._endDrag(e);
|
||||
}, self.center);
|
||||
|
||||
window.ion.onGesture('drag', function(e) {
|
||||
_this._handleDrag(e);
|
||||
}, this.center);
|
||||
self._handleDrag(e);
|
||||
}, self.center);
|
||||
*/
|
||||
};
|
||||
|
||||
@ -190,4 +188,4 @@ ionic.controllers.SideMenuController.prototype = {
|
||||
}
|
||||
};
|
||||
|
||||
})(ionic = window.ionic || {});
|
||||
})(ionic);
|
||||
|
||||
@ -16,14 +16,12 @@
|
||||
|
||||
function tapPolyfill(e) {
|
||||
// if the source event wasn't from a touch event then don't use this polyfill
|
||||
if(!e.gesture || e.gesture.pointerType !== "touch") return;
|
||||
if(!e.gesture || e.gesture.pointerType !== "touch" || !e.gesture.srcEvent) return;
|
||||
|
||||
var
|
||||
e = e.gesture.srcEvent, // evaluate the actual source event, not the created event by gestures.js
|
||||
ele = e.target;
|
||||
|
||||
if(!e) return;
|
||||
|
||||
while(ele) {
|
||||
if( ele.tagName === "INPUT" || ele.tagName === "TEXTAREA" || ele.tagName === "SELECT" ) {
|
||||
return inputTapPolyfill(ele, e);
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
|
||||
(function(ionic) {
|
||||
|
||||
ionic.views.NavBar = function(opts) {
|
||||
@ -39,4 +40,5 @@ ionic.views.NavBar.prototype = {
|
||||
}
|
||||
}
|
||||
};
|
||||
})(window.ionic);
|
||||
|
||||
})(ionic);
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
(function(ionic) {
|
||||
|
||||
ionic.views = ionic.views || {};
|
||||
(function(ionic) {
|
||||
|
||||
ionic.views.SideMenu = function(opts) {
|
||||
this.el = opts.el;
|
||||
@ -22,4 +21,5 @@ ionic.views.SideMenu.prototype = {
|
||||
this.el.style.zIndex = -1;
|
||||
}
|
||||
};
|
||||
})(window.ionic);
|
||||
|
||||
})(ionic);
|
||||
|
||||
@ -11,10 +11,13 @@
|
||||
ionic.views.Toggle.prototype = {
|
||||
|
||||
tap: function(e) {
|
||||
alert( this.isOn() );
|
||||
|
||||
},
|
||||
|
||||
isOn: function() {
|
||||
val: function(value) {
|
||||
if(value === true || value === false) {
|
||||
this.checkbox.checked = value;
|
||||
}
|
||||
return this.checkbox.checked;
|
||||
}
|
||||
|
||||
|
||||
@ -21,10 +21,10 @@
|
||||
<ul class="list">
|
||||
<li class="list-item">
|
||||
Airplane Mode
|
||||
<label class="toggle">
|
||||
<label class="toggle" id="airplaneMode">
|
||||
<input type="checkbox" name="airplaneMode">
|
||||
<div class="track">
|
||||
<div class="handle" draggable="true"></div>
|
||||
<div class="handle"></div>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
@ -33,7 +33,7 @@
|
||||
<label class="toggle">
|
||||
<input type="checkbox" name="doNotDisturb" checked="checked">
|
||||
<div class="track">
|
||||
<div class="handle" draggable="true"></div>
|
||||
<div class="handle"></div>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
@ -65,13 +65,12 @@
|
||||
<script>
|
||||
|
||||
$("#btnTest1").click(function(){
|
||||
var toggle = $("[name='airplaneMode']")
|
||||
if( toggle.prop("checked") ) {
|
||||
toggle.prop("checked", false);
|
||||
var toggle = ionic.component( document.getElementById("airplaneMode") );
|
||||
if( toggle.val() === true ) {
|
||||
toggle.val(false);
|
||||
} else {
|
||||
toggle.prop("checked", true);
|
||||
toggle.val(true);
|
||||
}
|
||||
return;
|
||||
});
|
||||
|
||||
$("#btnTest2").click(function(){
|
||||
|
||||
Reference in New Issue
Block a user