Add Tom-Select lib

This commit is contained in:
jf-cbd
2025-11-13 10:48:06 +01:00
parent cef8fbc859
commit 7733f13d14
354 changed files with 53014 additions and 2 deletions

View File

@@ -0,0 +1,17 @@
/**
* Plugin: "checkbox_options" (Tom Select)
* Copyright (c) contributors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the License at:
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
* ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*
*/
import type TomSelect from '../../tom-select.ts';
import { CBOptions } from './types.ts';
export default function (this: TomSelect, userOptions: CBOptions): void;

View File

@@ -0,0 +1,108 @@
"use strict";
/**
* Plugin: "checkbox_options" (Tom Select)
* Copyright (c) contributors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the License at:
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
* ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = default_1;
const utils_ts_1 = require("../../utils.js");
const vanilla_ts_1 = require("../../vanilla.js");
function default_1(userOptions) {
var self = this;
var orig_onOptionSelect = self.onOptionSelect;
self.settings.hideSelected = false;
const cbOptions = Object.assign({
// so that the user may add different ones as well
className: "tomselect-checkbox",
// the following default to the historic plugin's values
checkedClassNames: undefined,
uncheckedClassNames: undefined,
}, userOptions);
var UpdateChecked = function (checkbox, toCheck) {
if (toCheck) {
checkbox.checked = true;
if (cbOptions.uncheckedClassNames) {
checkbox.classList.remove(...cbOptions.uncheckedClassNames);
}
if (cbOptions.checkedClassNames) {
checkbox.classList.add(...cbOptions.checkedClassNames);
}
}
else {
checkbox.checked = false;
if (cbOptions.checkedClassNames) {
checkbox.classList.remove(...cbOptions.checkedClassNames);
}
if (cbOptions.uncheckedClassNames) {
checkbox.classList.add(...cbOptions.uncheckedClassNames);
}
}
};
// update the checkbox for an option
var UpdateCheckbox = function (option) {
setTimeout(() => {
var checkbox = option.querySelector('input.' + cbOptions.className);
if (checkbox instanceof HTMLInputElement) {
UpdateChecked(checkbox, option.classList.contains('selected'));
}
}, 1);
};
// add checkbox to option template
self.hook('after', 'setupTemplates', () => {
var orig_render_option = self.settings.render.option;
self.settings.render.option = ((data, escape_html) => {
var rendered = (0, vanilla_ts_1.getDom)(orig_render_option.call(self, data, escape_html));
var checkbox = document.createElement('input');
if (cbOptions.className) {
checkbox.classList.add(cbOptions.className);
}
checkbox.addEventListener('click', function (evt) {
(0, utils_ts_1.preventDefault)(evt);
});
checkbox.type = 'checkbox';
const hashed = (0, utils_ts_1.hash_key)(data[self.settings.valueField]);
UpdateChecked(checkbox, !!(hashed && self.items.indexOf(hashed) > -1));
rendered.prepend(checkbox);
return rendered;
});
});
// uncheck when item removed
self.on('item_remove', (value) => {
var option = self.getOption(value);
if (option) { // if dropdown hasn't been opened yet, the option won't exist
option.classList.remove('selected'); // selected class won't be removed yet
UpdateCheckbox(option);
}
});
// check when item added
self.on('item_add', (value) => {
var option = self.getOption(value);
if (option) { // if dropdown hasn't been opened yet, the option won't exist
UpdateCheckbox(option);
}
});
// remove items when selected option is clicked
self.hook('instead', 'onOptionSelect', (evt, option) => {
if (option.classList.contains('selected')) {
option.classList.remove('selected');
self.removeItem(option.dataset.value);
self.refreshOptions();
(0, utils_ts_1.preventDefault)(evt, true);
return;
}
orig_onOptionSelect.call(self, evt, option);
UpdateCheckbox(option);
});
}
;
//# sourceMappingURL=plugin.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../../src/plugins/checkbox_options/plugin.ts"],"names":[],"mappings":"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"}

View File

@@ -0,0 +1,14 @@
export type CBOptions = {
/**
* a unique class name for the checkbox to find the input
*/
className?: string;
/**
* class name to add if checkbox is checked and remove otherwise
*/
checkedClassNames?: string[];
/**
* class name to add if checkbox was not checked and remove otherwise
*/
uncheckedClassNames?: string[];
};

View File

@@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=types.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/plugins/checkbox_options/types.ts"],"names":[],"mappings":""}