Sha256: 061eea3449a85b0592c9c8c33b2f981130027bab927a23d4859ded8810f81262

Contents?: true

Size: 1.98 KB

Versions: 30

Compression:

Stored size: 1.98 KB

Contents

((exports) => {
  class AutosortableCheckboxesComponent {
    constructor(options = {}) {
      this.wrapperField = options.wrapperField;
      this._bindEvent();
      this._run();
    }

    _run() {
      $(this.wrapperField).find("input[type=checkbox]").each((idx, el) => {
        const $parentLabel = $(el).parents("label");

        if ($(el).is(":checked")) {
          const $lastSorted = this.wrapperField.find("label.sorted").last();

          if ($lastSorted.length > 0) {
            $lastSorted.removeClass("last-sorted");
            $parentLabel.insertAfter($lastSorted);
          } else {
            $parentLabel.insertBefore(this.wrapperField.find("label:first-child"));
          }

          $parentLabel.addClass("sorted");
          $parentLabel.addClass("last-sorted");
        } else {
          const $lastUnsorted = this.wrapperField.find("label:not(.sorted)").last();

          if ($lastUnsorted.length > 0) {
            $parentLabel.insertBefore($lastUnsorted);
          } else {
            $parentLabel.insertAfter(this.wrapperField.find("label:last-child"));
          }

          $parentLabel.removeClass("sorted");
        }
      });

      $(this.wrapperField).find("label").each((idx, el) => {
        const $positionSelector = $(el).find(".position");
        const $positionField = $(el).find("input[name$=\\[position\\]]");

        if ($(el).hasClass("sorted")) {
          $positionField.val(idx);
          $positionField.prop("disabled", false);
          $positionSelector.html(`${idx + 1}. `);
        } else {
          $positionField.val("");
          $positionField.prop("disabled", true);
          $positionSelector.html("");
        }
      });
    }

    _bindEvent() {
      $(this.wrapperField).find("input[type=checkbox]").on("change", () => {
        this._run();
      });
    }
  }

  exports.Decidim = exports.Decidim || {};
  exports.Decidim.createAutosortableCheckboxes = (options) => {
    return new AutosortableCheckboxesComponent(options);
  };
})(window);

Version data entries

30 entries across 30 versions & 2 rubygems

Version Path
decidim-forms-0.22.0 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.21.0 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.20.1 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.20.0 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.19.1 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.18.1 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.19.0 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.17.2 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.18.0 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.17.1 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.16.1 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.17.0 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-forms-0.16.0 app/assets/javascripts/decidim/forms/autosortable_checkboxes.component.js.es6
decidim-surveys-0.15.2 app/assets/javascripts/decidim/surveys/autosortable_checkboxes.component.js.es6
decidim-surveys-0.15.1 app/assets/javascripts/decidim/surveys/autosortable_checkboxes.component.js.es6
decidim-surveys-0.15.0 app/assets/javascripts/decidim/surveys/autosortable_checkboxes.component.js.es6
decidim-surveys-0.14.4 app/assets/javascripts/decidim/surveys/autosortable_checkboxes.component.js.es6
decidim-surveys-0.14.3 app/assets/javascripts/decidim/surveys/autosortable_checkboxes.component.js.es6
decidim-surveys-0.14.2 app/assets/javascripts/decidim/surveys/autosortable_checkboxes.component.js.es6
decidim-surveys-0.14.1 app/assets/javascripts/decidim/surveys/autosortable_checkboxes.component.js.es6