mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 15:34:12 +01:00
71 lines
2.0 KiB
JavaScript
71 lines
2.0 KiB
JavaScript
/**
|
|
* Image renderer plugin for TomSelect
|
|
*/
|
|
TomSelect.define('image_renderer', function(options) {
|
|
this.settings.render.option = function(data, escape) {
|
|
return `<div class="ibo-input-select-icon--menu--item">
|
|
<img src="${options['images_resource_path']+escape(data.value)}" alt="${data.text}" />${escape(data.text)}
|
|
</div>`;
|
|
};
|
|
this.settings.render.item = function(data, escape) {
|
|
return `<div class="ibo-input-select-icon--menu--item">
|
|
<img src="${options['images_resource_path']+escape(data.value)}" alt="${data.text}"/>${escape(data.text)}
|
|
</div>`;
|
|
};
|
|
});
|
|
|
|
class ChoicesElement extends HTMLSelectElement {
|
|
|
|
// register the custom element
|
|
static {
|
|
customElements.define('choices-element', ChoicesElement, {extends: 'select'});
|
|
}
|
|
|
|
plugins = [];
|
|
connectedCallback() {
|
|
|
|
if (this.tomselect) {
|
|
return;
|
|
}
|
|
|
|
if (this.getAttribute('multiple')) {
|
|
this.plugins.push('remove_button');
|
|
}
|
|
|
|
// plugins
|
|
if(this.hasAttribute('data-plugins')){
|
|
const aPlugins = JSON.parse(this.getAttribute('data-plugins'));
|
|
Array.from(aPlugins).values().forEach(plugin => {
|
|
this.plugins.push(plugin);
|
|
});
|
|
}
|
|
|
|
const options = {
|
|
plugins: this.plugins,
|
|
wrapperClass: 'ts-wrapper ibo-input-wrapper ibo-input-select-wrapper--with-buttons ibo-input-select-autocomplete-wrapper',
|
|
controlClass: 'ts-control ibo-input ibo-input-select ibo-input-select-autocomplete',
|
|
dropdownParent: 'body',
|
|
render: {
|
|
dropdown: function (data, escape) {
|
|
return `<div class="selectize-dropdown"></div>`;
|
|
}
|
|
}
|
|
};
|
|
|
|
if (this.getAttribute('data-tom-select-disable-auto-complete')) {
|
|
options.controlInput = null;
|
|
}
|
|
if (this.getAttribute('data-tom-select-max-items-selected') && this.getAttribute('data-tom-select-max-items-selected') !== '') {
|
|
options.maxItems = parseInt(this.getAttribute('data-tom-select-max-items-selected'));
|
|
}
|
|
if (this.getAttribute('data-tom-select-placehelder')) {
|
|
options.placeholder = this.getAttribute('data-tom-select-placehelder');
|
|
}
|
|
|
|
new TomSelect(this, options);
|
|
}
|
|
}
|
|
|
|
|
|
|