summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-12-30 14:45:52 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2020-12-30 14:51:54 +0100
commit3286197a5f5610497ccfc2f17c17fff115e21916 (patch)
tree07ad18f664fb57f823e947dca732df4891c45e86
parentjsdialog: support radio groups (diff)
downloadonline-private/eszkadev/radiobuttons.tar.gz
online-private/eszkadev/radiobuttons.zip
jsdialog: radiobutton updates private/eszkadev/radiobuttons
jsdialog updates require main container for control to have id equal to the widget id. In case of radiobutton it wasn't true. Fix it for desktop for now and leave for mobile as is (used in cypress tests - so needs reworking) Change-Id: I9220b289185ff6a72ea08360f0fa0570db40f95b Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
-rw-r--r--loleaflet/src/control/Control.JSDialogBuilder.js7
-rw-r--r--loleaflet/src/control/Control.MobileWizardBuilder.js33
2 files changed, 37 insertions, 3 deletions
diff --git a/loleaflet/src/control/Control.JSDialogBuilder.js b/loleaflet/src/control/Control.JSDialogBuilder.js
index 938045cdc0..7869e4473e 100644
--- a/loleaflet/src/control/Control.JSDialogBuilder.js
+++ b/loleaflet/src/control/Control.JSDialogBuilder.js
@@ -902,10 +902,11 @@ L.Control.JSDialogBuilder = L.Control.extend({
},
_radiobuttonControl: function(parentContainer, data, builder) {
- var container = L.DomUtil.createWithId('div', data.id + '-container', parentContainer);
+ var container = L.DomUtil.createWithId('div', data.id, parentContainer);
L.DomUtil.addClass(container, 'radiobutton');
+ L.DomUtil.addClass(container, builder.options.cssClass);
- var radiobutton = L.DomUtil.createWithId('input', data.id, container);
+ var radiobutton = L.DomUtil.create('input', '', container);
radiobutton.type = 'radio';
if (data.group)
@@ -922,7 +923,7 @@ L.Control.JSDialogBuilder = L.Control.extend({
$(radiobutton).prop('checked', true);
radiobutton.addEventListener('change', function() {
- builder.callback('radiobutton', 'change', radiobutton, this.checked, builder);
+ builder.callback('radiobutton', 'change', container, this.checked, builder);
});
if (data.hidden)
diff --git a/loleaflet/src/control/Control.MobileWizardBuilder.js b/loleaflet/src/control/Control.MobileWizardBuilder.js
index c3509bb894..186f48396e 100644
--- a/loleaflet/src/control/Control.MobileWizardBuilder.js
+++ b/loleaflet/src/control/Control.MobileWizardBuilder.js
@@ -19,6 +19,7 @@ L.Control.MobileWizardBuilder = L.Control.JSDialogBuilder.extend({
this._controlHandlers['listbox'] = this._listboxControl;
this._controlHandlers['checkbox'] = this._checkboxControl;
this._controlHandlers['basespinfield'] = this.baseSpinField;
+ this._controlHandlers['radiobutton'] = this._radiobuttonControl;
},
baseSpinField: function(parentContainer, data, builder, customCallback) {
@@ -237,6 +238,38 @@ L.Control.MobileWizardBuilder = L.Control.JSDialogBuilder.extend({
return false;
},
+ // TODO: use the same handler as desktop one
+ _radiobuttonControl: function(parentContainer, data, builder) {
+ var container = L.DomUtil.createWithId('div', data.id + '-container', parentContainer);
+ L.DomUtil.addClass(container, 'radiobutton');
+ L.DomUtil.addClass(container, builder.options.cssClass);
+
+ var radiobutton = L.DomUtil.createWithId('input', data.id, container);
+ radiobutton.type = 'radio';
+
+ if (data.group)
+ radiobutton.name = data.group;
+
+ var radiobuttonLabel = L.DomUtil.create('label', '', container);
+ radiobuttonLabel.innerHTML = builder._cleanText(data.text);
+ radiobuttonLabel.for = data.id;
+
+ if (data.enabled === 'false' || data.enabled === false)
+ $(radiobutton).attr('disabled', 'disabled');
+
+ if (data.checked === 'true' || data.checked === true)
+ $(radiobutton).prop('checked', true);
+
+ radiobutton.addEventListener('change', function() {
+ builder.callback('radiobutton', 'change', radiobutton, this.checked, builder);
+ });
+
+ if (data.hidden)
+ $(radiobutton).hide();
+
+ return false;
+ },
+
build: function(parent, data) {
this._amendJSDialogData(data);
for (var childIndex in data) {