diff --git a/modules/shs_select2/config/schema/shs_select2.schema.yml b/modules/shs_select2/config/schema/shs_select2.schema.yml new file mode 100644 index 0000000..b20be07 --- /dev/null +++ b/modules/shs_select2/config/schema/shs_select2.schema.yml @@ -0,0 +1,5 @@ +# Schema for configuration files of the SHS select2 module. + +field.widget.settings.options_shs_select2: + type: field.widget.settings.options_shs + label: 'Simple hierarchical select with select2 form display settings' diff --git a/modules/shs_select2/js/views/Select2WidgetView.js b/modules/shs_select2/js/views/Select2WidgetView.js new file mode 100644 index 0000000..0b938e0 --- /dev/null +++ b/modules/shs_select2/js/views/Select2WidgetView.js @@ -0,0 +1,32 @@ +/** + * @file + * A Backbone view for a shs widget optionally rendered as select2 element. + */ + +(function ($, Drupal, drupalSettings, Backbone) { + 'use strict'; + + Drupal.shs_select2 = Drupal.shs_select2 || {}; + + Drupal.shs_select2.Select2WidgetView = Drupal.shs.WidgetView.extend({ + + /** + * @inheritdoc + */ + render: function () { + var widget = Drupal.shs.WidgetView.prototype.render.apply(this); + + widget.$el + .addClass('select2-widget') + // @todo Applying configuration here won't work for e.g. placeholder + // (it's ignored by select2 for some reason.). Also these + // configuration options may be configurable in field settings. + .attr('data-select2-config', "{\"width\":\"100%\", \"minimumResultsForSearch\": 0}"); + + Drupal.behaviors.select2.attach(widget.container.$el.get(0)); + + return widget; + } + }); + +}(jQuery, Drupal, drupalSettings, Backbone)); diff --git a/modules/shs_select2/shs_select2.info.yml b/modules/shs_select2/shs_select2.info.yml new file mode 100644 index 0000000..dc1befa --- /dev/null +++ b/modules/shs_select2/shs_select2.info.yml @@ -0,0 +1,8 @@ +name: 'Simple hierarchical select: Select2' +description: 'Integrates Select2 with Simple hierarchical select.' +package: User interface +type: module +core_version_requirement: ^8.8 || ^9 || ^10 +dependencies: + - select2:select2 + - shs:shs diff --git a/modules/shs_select2/shs_select2.libraries.yml b/modules/shs_select2/shs_select2.libraries.yml new file mode 100644 index 0000000..f47515f --- /dev/null +++ b/modules/shs_select2/shs_select2.libraries.yml @@ -0,0 +1,7 @@ +shs_select2.form: + version: VERSION + js: + js/views/Select2WidgetView.js: {} + dependencies: + - shs/shs.form + - select2/select2 diff --git a/modules/shs_select2/shs_select2.module b/modules/shs_select2/shs_select2.module new file mode 100644 index 0000000..4e57737 --- /dev/null +++ b/modules/shs_select2/shs_select2.module @@ -0,0 +1,14 @@ +