HEX
Server: LiteSpeed
System: Linux d8 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: wbwebdes (3015)
PHP: 8.1.31
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/wbwebdes/domains/survey.nailsbyrianne.nl/public_html/tmp/assets/45529e0c/LanguagesWidget.js
/**
 * Define custom SelectionAdapter
 */
$.fn.select2.amd.define(
  'select2/selection/languagesWidgetSelectionAdapter',
  [
    'jquery',
    './multiple',
    'select2/selection/eventRelay',
    'select2/selection/search',
    '../utils'
  ],
  function ($, MultipleSelection, EventRelay, SelectionSearch, Utils) {
    function LanguagesWidgetSelectionAdapter($element, options) {
      LanguagesWidgetSelectionAdapter.__super__.constructor.apply(this, arguments);
      //this.baseLanguage = this.options.get('baselanguage');
      var baseLanguageElementSelector = this.options.get('baselanguage_selector');
      if (baseLanguageElementSelector) {
        this.baseLanguageElement = $(baseLanguageElementSelector);
        this.baseLanguage = this.baseLanguageElement.val();
      }
    }

    Utils.Extend(LanguagesWidgetSelectionAdapter, MultipleSelection);

    LanguagesWidgetSelectionAdapter.prototype.update = function (data) {
      this.clear();

      // Clear base language options
      if (this.baseLanguageElement) {
        this.baseLanguage = this.baseLanguageElement.val();
        this.baseLanguageElement.find('*').remove().trigger('change');
      }

      if (data.length === 0) {
        return;
      }

      var $selections = [];

      var $first = null;

      for (var d = 0; d < data.length; d++) {
        var selection = data[d];
        selection.isBaseLanguage = this.baseLanguage && selection.id == this.baseLanguage;

        var $selection = this.selectionContainer();
        var formatted = this.display(selection, $selection);

        $selection.append(formatted);
        $selection.prop('title', selection.title || selection.text);

        $selection.data('data', selection);

        // Add base language options
        if (this.baseLanguageElement) {
          var newOption = new Option(selection.title || selection.text, selection.id, false, false);
          this.baseLanguageElement.append(newOption);
        }

        // Skip the base language
        if (selection.isBaseLanguage) {
          $first = $selection.clone(true);
          $first.data('isBaseLanguage', true);
          $first.addClass("select2-selection__baselanguage");
          continue;
        }

        $selections.push($selection);
      }

      if ($first) {
        $selections.unshift($first);
      }

      if (this.baseLanguageElement) {
        if (this.baseLanguage) {
          this.baseLanguageElement.val(this.baseLanguage);
        }
        this.baseLanguageElement.trigger('change')
      }

      var $rendered = this.$selection.find('.select2-selection__rendered');

      //Utils.appendMany($rendered, $selections); // /Utils.appendMany (from v4.0.13) no longer exists
      $rendered.append($selections); // New method since 4.1.0-rc.0
    };
    LanguagesWidgetSelectionAdapter.prototype.bind = function (container, $container) {
      var self = this;

      MultipleSelection.__super__.bind.apply(this, arguments);

      this.$selection.on('click', function (evt) {
        self.trigger('toggle', {
          originalEvent: evt
        });
      });

      this.$selection.on(
        'click',
        '.select2-selection__choice__remove',
        function (evt) {
          evt.stopPropagation();

          // Ignore the event if it is disabled
          if (self.options.get('disabled')) {
            return;
          }

          var $remove = $(this);
          var $selection = $remove.parent();

          var data = $selection.data('data');

          self.trigger('unselect', {
            originalEvent: evt,
            data: data
          });
        }
      );

      if (this.baseLanguageElement) {
        this.baseLanguageElement.off('change.langwidget').on('change.langwidget', function () {
          var selectedLanguage = $(this).val();
          if (selectedLanguage && self.baseLanguage != selectedLanguage) {
            self.$element.trigger("change.select2");
          }
        });
      }
    };

    var decoratedAdapter = Utils.Decorate(LanguagesWidgetSelectionAdapter, EventRelay);
    decoratedAdapter = Utils.Decorate(decoratedAdapter, SelectionSearch);
    return decoratedAdapter;
  }
);

/**
 * Define custom DataAdapter
 */
$.fn.select2.amd.define(
  'select2/data/languagesWidgetDataAdapter',
  [
    './select',
    '../utils',
    'jquery'
  ],
  function (SelectAdapter, Utils, $) {
    function LanguagesWidgetDataAdapter($element, options) {
      LanguagesWidgetDataAdapter.__super__.constructor.call(this, $element, options);

      this.messages = options.get('messages');
    }

    Utils.Extend(LanguagesWidgetDataAdapter, SelectAdapter);

    LanguagesWidgetDataAdapter.prototype.unselect = function (data) {
      var self = this;

      if (!this.$element.prop('multiple')) {
        return;
      }

      data.selected = false;

      if (data.isBaseLanguage) {
        LS.LsGlobalNotifier.createAlert(this.messages.cannotRemoveBaseLanguage, 'danger', {showCloseButton: true});
        return;
      } else {
        $.fn.bsconfirm(
          this.messages.removeLanguageConfirmation,
          {
            confirm_cancel: this.messages.cancel,
            confirm_ok: this.messages.delete,
          },
          function () {
            $('#identity__bsconfirmModal').modal('hide');

            if ($(data.element).is('option')) {
              data.element.selected = false;
              self.$element.trigger('change');
              return;
            }

            self.current(function (currentData) {
              var val = [];
              for (var d = 0; d < currentData.length; d++) {
                var id = currentData[d].id;
                if (id !== data.id && $.inArray(id, val) === -1) {
                  val.push(id);
                }
              }

              self.$element.val(val);
              self.$element.trigger('change');
            });
          }
        );
      }
    };

    return LanguagesWidgetDataAdapter;
  }
);