45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
import { Meteor } from 'meteor/meteor';
|
|
import { Template } from 'meteor/templating';
|
|
import { Tracker } from 'meteor/tracker';
|
|
|
|
Template.selectTreeCommon.events({
|
|
'click .select-tree-common label'(event, instance) {
|
|
event.preventDefault();
|
|
|
|
// Get the clicked label
|
|
const $target = $(event.currentTarget);
|
|
|
|
// Store the offset position for further use
|
|
$target.data('offset', $target.offset());
|
|
|
|
// Build the input selector based on the label target
|
|
const inputSelector = '#' + $target.attr('for');
|
|
|
|
// Get the tree instance
|
|
const treeInstance = instance.data.treeInstance;
|
|
|
|
// Check if the input is not rendered
|
|
if (!$(inputSelector).length) {
|
|
// Change the search terms with the clicked label string
|
|
|
|
treeInstance.$('.tree-search input').val($target.text()).trigger('input');
|
|
// Wait for options rerendering
|
|
|
|
Tracker.afterFlush(() => {
|
|
const $treeRoot = treeInstance.$('.select-tree-root:first').first();
|
|
$treeRoot.addClass('common-clicked');
|
|
|
|
// Wait for components initialization
|
|
Meteor.defer(() => $(inputSelector).click());
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
Template.selectTreeCommon.helpers({
|
|
// Get the common items
|
|
items() {
|
|
return Template.instance().data.treeInstance.getCommonItems();
|
|
}
|
|
});
|