From a1091ad2b385799bbe7094ea7e21c5e20c12c1fe Mon Sep 17 00:00:00 2001 From: Osman Masood Date: Sun, 27 Jul 2014 23:28:01 -0700 Subject: [PATCH 1/2] Adding checkedText and uncheckedText options for --- switchery.css | 17 ++++++++++++++++- switchery.js | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/switchery.css b/switchery.css index 0975677..ad7c20a 100644 --- a/switchery.css +++ b/switchery.css @@ -29,4 +29,19 @@ position: absolute; top: 0; width: 30px; -} \ No newline at end of file +} + +.switchery > span.checked-text { + font-size: 11px; + float: left; + padding-left: 4px; + padding-top: 5px; +} + +.switchery > span.unchecked-text { + font-size: 11px; + float: right; + padding-right: 5px; + padding-top: 5px; +} + diff --git a/switchery.js b/switchery.js index d2efe73..be88300 100644 --- a/switchery.js +++ b/switchery.js @@ -95,6 +95,18 @@ Switchery.prototype.create = function() { this.jack = document.createElement('small'); this.switcher.appendChild(this.jack); this.switcher.className = this.options.className; + if (this.options.checkedText) { + this.checkedText = document.createElement('span'); + this.checkedText.className = "checked-text"; + this.checkedText.innerHTML = this.options.checkedText; + this.switcher.appendChild(this.checkedText); + } + if (this.options.uncheckedText) { + this.uncheckedText = document.createElement('span'); + this.uncheckedText.className = "unchecked-text"; + this.uncheckedText.innerHTML = this.options.uncheckedText; + this.switcher.appendChild(this.uncheckedText); + } return this.switcher; }; @@ -166,6 +178,29 @@ Switchery.prototype.setPosition = function (clicked) { } }; +/** + * Sets the show/hide text, if they exist. + * + * @api private + */ +Switchery.prototype.showOrHideText = function() { + if (this.isChecked()) { + if (this.checkedText) { + this.checkedText.style.display = "inline"; + } + if (this.uncheckedText) { + this.uncheckedText.style.display = "none"; + } + } else { + if (this.checkedText) { + this.checkedText.style.display = "none"; + } + if (this.uncheckedText) { + this.uncheckedText.style.display = "inline"; + } + } +}; + /** * Set speed. * @@ -236,10 +271,12 @@ Switchery.prototype.handleChange = function() { if (el.addEventListener) { el.addEventListener('change', function() { self.setPosition(); + self.showOrHideText(); }); } else { el.attachEvent('onchange', function() { self.setPosition(); + self.showOrHideText(); }); } }; From 2f5a8199851a0fefac7278b3f6ecd5d5715dce0a Mon Sep 17 00:00:00 2001 From: Osman Masood Date: Mon, 28 Jul 2014 00:38:10 -0700 Subject: [PATCH 2/2] if checkbox is initially checked, only checkedText should be displayed. otherwise, only uncheckedText should be displayed. --- switchery.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/switchery.js b/switchery.js index be88300..7c6930a 100644 --- a/switchery.js +++ b/switchery.js @@ -100,12 +100,18 @@ Switchery.prototype.create = function() { this.checkedText.className = "checked-text"; this.checkedText.innerHTML = this.options.checkedText; this.switcher.appendChild(this.checkedText); + if (! this.element.checked) { + this.checkedText.style.display = "none"; + } } if (this.options.uncheckedText) { this.uncheckedText = document.createElement('span'); this.uncheckedText.className = "unchecked-text"; this.uncheckedText.innerHTML = this.options.uncheckedText; this.switcher.appendChild(this.uncheckedText); + if (this.element.checked) { + this.uncheckedText.style.display = "none"; + } } return this.switcher;