1 import createPermission from '../async-function/create-permission';
2 import fetchFromBackend from '../async-function/fetch-from-backend';
3 import DomClient from '../client/dom-client.prototype';
4 import PermissionOutput from '../model/permission-output.prototype';
5 import PermissionOutputCollector from '../client/permission-output-collector.prototype';
6 import TermCollector from "../client/term-collector.prototype";
12 if (document.querySelector("#edit-permissions-by-term-info") !== null) {
15 * @type {Drupal~behavior}
17 Drupal.behaviors.nodeForm = {
20 * @var Backend backend
22 let backend = await createPermission(fetchFromBackend);
24 const hasTaxonomyFormFields = (permissions) => {
25 if (permissions.taxonomyRelationFieldNames.length !== 0) {
32 if (hasTaxonomyFormFields(backend)) {
34 const processPermissionsDisplay = () => {
36 const permissionOutput = new PermissionOutput,
37 termCollector = new TermCollector,
38 domClient = new DomClient(document, permissionOutput, Drupal);
40 const permissionOutputCollector = new PermissionOutputCollector(permissionOutput);
42 for (let formElementCssClass of backend.getFieldWrapperCSSClasses()) {
43 termCollector.addSelectedTids(domClient.computeTids(formElementCssClass));
45 permissionOutputCollector.collect(backend, termCollector.getSelectedTids());
48 domClient.renderPermissionsInfo();
51 for (let formElementCssClass of backend.getFieldWrapperCSSClasses()) {
53 $(formElementCssClass + ' input[type="text"]').on('autocomplete-select', () => {
54 processPermissionsDisplay();
57 $(formElementCssClass + ' select').change(function (){
58 processPermissionsDisplay();
61 $(formElementCssClass + ' input[type="text"]').on('keyup', function (){
62 processPermissionsDisplay();
65 $(formElementCssClass + ' input[type="checkbox"]').change(function (){
66 processPermissionsDisplay();
77 if (Drupal.autocomplete) {
79 * Handles an auto-complete select event.
81 * Override the autocomplete method to add a custom event. Overriding is
82 * happening to get full input.
84 * @param {jQuery.Event} event
85 * The event triggered.
87 * The jQuery UI settings object.
90 * Returns false to indicate the event status.
92 Drupal.autocomplete.options.select = function selectHandler(event, ui) {
93 var terms = Drupal.autocomplete.splitValues(event.target.value);
94 // Remove the current input.
96 // Add the selected item.
97 if (ui.item.value.search(',') > 0) {
98 terms.push('"' + ui.item.value + '"');
101 terms.push(ui.item.value);
103 event.target.value = terms.join(', ');
104 // Fire custom event that other controllers can listen to.
105 jQuery(event.target).trigger('autocomplete-select');
107 // Return false to tell jQuery UI that we've filled in the value