Viewing File: /usr/local/cpanel/share/libraries/cjt2/src/decorators/angularChosenDecorator.js

/*
 * cjt/decorators/angularChosenDecorator.js           Copyright 2022 cPanel, L.L.C.
 *                                                           All rights reserved.
 * copyright@cpanel.net                                         http://cpanel.net
 * This code is subject to the cPanel license. Unauthorized copying is prohibited
 */

/* eslint-env amd */

define(
    [
        "angular",
        "jquery-chosen",
        "angular-chosen",
    ],
    function(angular) {
        "use strict";

        angular
            .module("cjt2.decorators.angularChosenDecorator", ["localytics.directives"])
            .config(["$provide", function($provide) {

                $provide.decorator("chosenDirective", ["$delegate", function($delegate) {
                    var directive = $delegate[0];
                    var originalLinkFn = directive.link;
                    directive.compile = function() {
                        return function(scope, selectElem) {
                            originalLinkFn.apply(directive, arguments);

                            selectElem.on("chosen:ready", function() {
                                selectElem = selectElem.get(0);
                                var chosenElem = selectElem.nextElementSibling;

                                if (!chosenElem || !chosenElem.classList.contains("chosen-container")) {
                                    throw new Error("Developer Error: Chosen has not initialized properly. The .chosen-container element is not next to the select element");
                                }

                                var inputElem = chosenElem.querySelector(".chosen-search input");
                                var labelElem = selectElem.id && document.querySelector("label[for=\"" + selectElem.id + "\"]");

                                if (inputElem && labelElem && labelElem.id) {
                                    inputElem.setAttribute("aria-labelledby", labelElem.id);
                                }
                            });
                        };
                    };
                    return $delegate;
                }]);

            }]);
    }
);
Back to Directory File Manager