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

/*
# cjt/decorators/dynamicName.js                  Copyright(c) 2020 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
*/

/* global define: false */

define(
    [
        "angular"
    ],
    function(angular) {

        var module = angular.module("cjt2.decorators.dynamicName", []);

        // Workaround for bug #1404
        // https://github.com/angular/angular.js/issues/1404
        // Source: http://plnkr.co/edit/hSMzWC?p=preview
        module.config(["$provide", function($provide) {

            // Extend the ngModelDirective to interpolate its name attribute
            $provide.decorator("ngModelDirective", ["$delegate", function($delegate) {
                var ngModel = $delegate[0], controller = ngModel.controller;
                ngModel.controller = ["$scope", "$element", "$attrs", "$injector", function(scope, element, attrs, $injector) {
                    var $interpolate = $injector.get("$interpolate");
                    attrs.$set("name", $interpolate(attrs.name || "")(scope));
                    $injector.invoke(controller, this, {
                        "$scope": scope,
                        "$element": element,
                        "$attrs": attrs
                    });
                }];
                return $delegate;
            }]);

            // Extend the formDirective to interpolate its name attribute
            $provide.decorator("formDirective", ["$delegate", function($delegate) {
                var form = $delegate[0], controller = form.controller;
                form.controller = ["$scope", "$element", "$attrs", "$injector", function(scope, element, attrs, $injector) {
                    var $interpolate = $injector.get("$interpolate");
                    attrs.$set("name", $interpolate(attrs.name || attrs.ngForm || "")(scope));
                    $injector.invoke(controller, this, {
                        "$scope": scope,
                        "$element": element,
                        "$attrs": attrs
                    });
                }];
                return $delegate;
            }]);
        }]);
    }
);
Back to Directory File Manager