+ // Create new items inline - works for tags
+ else if ($el.data('create-links')) {
+ selectParams.createSearchChoice = function(term, data) {
+ if (!_.findKey(data, {label: term})) {
+ return {id: "0", term: term, label: term + ' (' + ts('new tag') + ')'};
+ }
+ };
+ selectParams.tokenSeparators = [','];
+ selectParams.createSearchChoicePosition = 'bottom';
+ }
+ $el.crmSelect2($.extend(settings, $el.data('select-params'), selectParams))
+ .on('select2-selecting.crmEntity', function(e) {
+ if (e.val === "0") {
+ e.object.label = e.object.term;
+ CRM.api3(entity, 'create', $.extend({name: e.object.term}, $el.data('api-params').params || {}))
+ .done(function(created) {
+ var
+ multiple = !!$el.data('select-params').multiple,
+ val = $el.select2('val'),
+ data = $el.select2('data'),
+ item = {id: created.id, label: e.object.term};
+ if (val === "0") {
+ $el.select2('data', item, true);
+ }
+ else if ($.isArray(val) && $.inArray("0", val) > -1) {
+ _.remove(data, {id: "0"});
+ data.push(item);
+ $el.select2('data', data, true);
+ }
+ });
+ }
+ });