From 82a98e8f9e5da02b7009a539855a59537323d7ff Mon Sep 17 00:00:00 2001 From: Oded Arbel Date: Mon, 25 Dec 2017 14:27:21 +0200 Subject: [PATCH 1/3] Add readonly attribute that prevents default tap action --- paper-toggle-button.html | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/paper-toggle-button.html b/paper-toggle-button.html index e5540e1..84d39dc 100644 --- a/paper-toggle-button.html +++ b/paper-toggle-button.html @@ -226,10 +226,16 @@ * * @event iron-change */ + readonly: { + type: Boolean, + value: false, + reflectToAttribute: true + } }, listeners: { - track: '_ontrack' + track: '_ontrack', + tap: '_ontap' }, attached: function() { @@ -280,6 +286,13 @@ ripple.setAttribute('recenters', ''); ripple.classList.add('circle', 'toggle-ink'); return ripple; + }, + + _ontap: function(event) { + if (this.readonly) { + event.preventDefault(); + return; + } } }); From 85b26c21ee930ab68a3f35250d12eeda6eecb477 Mon Sep 17 00:00:00 2001 From: Oded Arbel Date: Mon, 25 Dec 2017 15:28:12 +0200 Subject: [PATCH 2/3] handle readonly early by overriding _tapHandler It looks like the child's tap handler is called very late in the process, instead override IronButtonState's tap handler and cancel it if readonly is set --- paper-toggle-button.html | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/paper-toggle-button.html b/paper-toggle-button.html index 84d39dc..3b72cd6 100644 --- a/paper-toggle-button.html +++ b/paper-toggle-button.html @@ -234,8 +234,7 @@ }, listeners: { - track: '_ontrack', - tap: '_ontap' + track: '_ontrack' }, attached: function() { @@ -288,11 +287,13 @@ return ripple; }, - _ontap: function(event) { + _tapHandler: function(event) { if (this.readonly) { - event.preventDefault(); - return; + event.preventDefault(); + return; } + var spr = this.behaviors.find(function(b) { return b._tapHandler; }); + if (spr) spr._tapHandler.apply(this, arguments); } }); From 7f93ef20560d967e4ba5472a1795f574301d2b5a Mon Sep 17 00:00:00 2001 From: Oded Arbel Date: Mon, 25 Dec 2017 15:35:29 +0200 Subject: [PATCH 3/3] Added read-only demo --- demo/index.html | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/demo/index.html b/demo/index.html index b7c82c1..4cbfc05 100644 --- a/demo/index.html +++ b/demo/index.html @@ -48,6 +48,13 @@

Toggle buttons can be checked and disabled

+

Toggle buttons can be made read-only (not editable but still submitted)

+ + + +

Toggle buttons can hide the ripple effect using the noink attribute