Loading js/select2boxes.js +61 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,65 @@ (function ($, Drupal, drupalSettings) { 'use strict'; /** * Customize tokenizer. * * @param {object} $params * Tokenizer parameters * @param {object} $e * Tokenizer element * @param {function} $callback * Tokenizer callback */ const tokenizer = function(params, e, callback) { var separators = e.options.tokenSeparators || []; var term = params.term; var i = 0; var createTag = this.createTag || function (params) { return { id: params.term, text: params.term }; }; if (term.length && separators.length && $.inArray(term.slice(-1), separators) === -1) { term = term + separators[0]; } while (i < term.length) { var termChar = term[i]; if ($.inArray(termChar, separators) === -1) { i++; continue; } var part = term.substr(0, i); var partParams = $.extend({}, params, { term: part }); var data = createTag(partParams); if (data == null) { i++; continue; } callback(data); // Reset the term to not include the tokenized portion term = term.substr(i + 1) || ''; i = 0; } return { term: term }; } Drupal.behaviors.select2widget = { attach: function (context) { // Additional code to make removing/creating elements correctly works. Loading Loading @@ -61,6 +120,7 @@ width: 'style', tags: autocreate, tokenSeparators: [','], tokenizer, containerCssClass: (drupalSettings.preloaded_entries && drupalSettings.preloaded_entries[field_name]) ? 'preloaded' : '', Loading Loading @@ -195,6 +255,7 @@ multiple: multiple, tags: autocreate, tokenSeparators: [','], tokenizer, templateResult: flagsIcons, templateSelection: flagsIcons }); Loading Loading
js/select2boxes.js +61 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,65 @@ (function ($, Drupal, drupalSettings) { 'use strict'; /** * Customize tokenizer. * * @param {object} $params * Tokenizer parameters * @param {object} $e * Tokenizer element * @param {function} $callback * Tokenizer callback */ const tokenizer = function(params, e, callback) { var separators = e.options.tokenSeparators || []; var term = params.term; var i = 0; var createTag = this.createTag || function (params) { return { id: params.term, text: params.term }; }; if (term.length && separators.length && $.inArray(term.slice(-1), separators) === -1) { term = term + separators[0]; } while (i < term.length) { var termChar = term[i]; if ($.inArray(termChar, separators) === -1) { i++; continue; } var part = term.substr(0, i); var partParams = $.extend({}, params, { term: part }); var data = createTag(partParams); if (data == null) { i++; continue; } callback(data); // Reset the term to not include the tokenized portion term = term.substr(i + 1) || ''; i = 0; } return { term: term }; } Drupal.behaviors.select2widget = { attach: function (context) { // Additional code to make removing/creating elements correctly works. Loading Loading @@ -61,6 +120,7 @@ width: 'style', tags: autocreate, tokenSeparators: [','], tokenizer, containerCssClass: (drupalSettings.preloaded_entries && drupalSettings.preloaded_entries[field_name]) ? 'preloaded' : '', Loading Loading @@ -195,6 +255,7 @@ multiple: multiple, tags: autocreate, tokenSeparators: [','], tokenizer, templateResult: flagsIcons, templateSelection: flagsIcons }); Loading