aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjpl2017-02-16 10:51:38 +0100
committerjpl2017-02-16 10:51:38 +0100
commit3e99839515fa7f7ae653d6b0439e083e6ee2fa31 (patch)
tree8cda04b25632d4e230abc8d8378c7a3ca630063e
parent4d41a1cc6adbf64d16a9293f883be15d3ee6c03f (diff)
downloadchouette-core-3e99839515fa7f7ae653d6b0439e083e6ee2fa31.tar.bz2
fix for moved form-submit buttons (html5 with poly)
-rw-r--r--app/assets/javascripts/plugins/html5-form-attr.js69
-rw-r--r--app/assets/stylesheets/components/_forms.sass5
-rw-r--r--app/views/referentials/_form.html.slim4
3 files changed, 76 insertions, 2 deletions
diff --git a/app/assets/javascripts/plugins/html5-form-attr.js b/app/assets/javascripts/plugins/html5-form-attr.js
new file mode 100644
index 000000000..8ec2d7161
--- /dev/null
+++ b/app/assets/javascripts/plugins/html5-form-attr.js
@@ -0,0 +1,69 @@
+(function($) {
+
+ /**
+ * polyfill for html5 form attr
+ */
+ var SAMPLE_FORM_NAME, sampleElementFound, sampleForm, sampleFormAndHiddenInput;
+ SAMPLE_FORM_NAME = 'html-5-polyfill-test';
+ sampleForm = $('<form id=\'' + SAMPLE_FORM_NAME + '\'/>');
+ sampleFormAndHiddenInput = sampleForm.add($('<input type=\'hidden\' form=\'' + SAMPLE_FORM_NAME + '\'/>'));
+ sampleFormAndHiddenInput.prependTo('body');
+ sampleElementFound = sampleForm[0].elements[0];
+ sampleFormAndHiddenInput.remove();
+ if (sampleElementFound) {
+ return;
+ }
+
+ /**
+ * Append a field to a form
+ #
+ */
+ $.fn.appendField = function(data) {
+ var $form;
+ if (!this.is('form')) {
+ return;
+ }
+ if (!$.isArray(data) && data.name && data.value) {
+ data = [data];
+ }
+ $form = this;
+ $.each(data, function(i, item) {
+ $('<input/>').attr('type', 'hidden').attr('name', item.name).val(item.value).appendTo($form);
+ });
+ return $form;
+ };
+
+ /**
+ * Find all input fields with form attribute point to jQuery object
+ *
+ */
+ $('form[id]').submit(function(e) {
+ var data;
+ data = $('[form=' + this.id + ']').serializeArray();
+ $(this).appendField(data);
+ }).each(function() {
+ var $fields, form;
+ form = this;
+ $fields = $('[form=' + this.id + ']');
+ $fields.filter('button, input').filter('[type=reset],[type=submit]').click(function() {
+ var type;
+ type = this.type.toLowerCase();
+ if (type === 'reset') {
+ form.reset();
+ $fields.each(function() {
+ this.value = this.defaultValue;
+ this.checked = this.defaultChecked;
+ }).filter('select').each(function() {
+ $(this).find('option').each(function() {
+ this.selected = this.defaultSelected;
+ });
+ });
+ } else if (type.match(/^submit|image$/i)) {
+ $(form).appendField({
+ name: this.name,
+ value: this.value
+ }).submit();
+ }
+ });
+ });
+})(jQuery);
diff --git a/app/assets/stylesheets/components/_forms.sass b/app/assets/stylesheets/components/_forms.sass
index 6e25b9440..e04d0a6ad 100644
--- a/app/assets/stylesheets/components/_forms.sass
+++ b/app/assets/stylesheets/components/_forms.sass
@@ -331,6 +331,11 @@ $cbx-size: 20px
text-rendering: optimizespeed
font-weight: 300
+ > *
+ letter-spacing: normal
+ word-spacing: normal
+ text-rendering: auto
+
select.date
display: inline-block
letter-spacing: normal
diff --git a/app/views/referentials/_form.html.slim b/app/views/referentials/_form.html.slim
index 648b2718b..ab3c56178 100644
--- a/app/views/referentials/_form.html.slim
+++ b/app/views/referentials/_form.html.slim
@@ -1,4 +1,4 @@
-= simple_form_for @referential, html: {class: 'form-horizontal'}, wrapper: :horizontal_form do |form|
+= simple_form_for @referential, html: {class: 'form-horizontal', id: 'referential_form'}, wrapper: :horizontal_form do |form|
.row
.col-lg-12
@@ -71,4 +71,4 @@
/ = link_to 'Annuler', @referential, class: 'btn btn-link'
- = form.button :submit, 'Enregistrer', class: 'btn btn-default formSubmitr'
+ = form.button :submit, 'Enregistrer', class: 'btn btn-default formSubmitr', form: 'referential_form'