7 lines
20 KiB
JavaScript
7 lines
20 KiB
JavaScript
|
|
/*!
|
||
|
|
* AngularJS Material Design
|
||
|
|
* https://github.com/angular/material
|
||
|
|
* @license MIT
|
||
|
|
* v1.1.18-master-97a1616
|
||
|
|
*/
|
||
|
|
goog.provide("ngmaterial.components.select"),goog.require("ngmaterial.components.backdrop"),goog.require("ngmaterial.core"),SelectDirective.$inject=["$mdSelect","$mdUtil","$mdConstant","$mdTheming","$mdAria","$parse","$sce","$injector"],SelectMenuDirective.$inject=["$parse","$mdUtil","$mdConstant","$mdTheming"],OptionDirective.$inject=["$mdButtonInkRipple","$mdUtil","$mdTheming"],SelectProvider.$inject=["$$interimElementProvider"];var SELECT_EDGE_MARGIN=8,selectNextId=0,CHECKBOX_SELECTION_INDICATOR=angular.element('<div class="md-container"><div class="md-icon"></div></div>');function SelectDirective(A,D,O,T,R,_,N,e){var t=O.KEY_CODE;t.SPACE,t.ENTER,t.UP_ARROW,t.DOWN_ARROW;return{restrict:"E",require:["^?mdInputContainer","mdSelect","ngModel","?^form"],compile:function(e,t){var n=angular.element("<md-select-value><span></span></md-select-value>");n.append('<span class="md-select-icon" aria-hidden="true"></span>'),n.addClass("md-select-value"),n[0].hasAttribute("id")||n.attr("id","select_value_label_"+D.nextUid());var r=e.find("md-content");r.length||e.append(angular.element("<md-content>").append(e.contents()));r.attr("role","presentation"),t.mdOnOpen&&(e.find("md-content").prepend(angular.element('<div> <md-progress-circular md-mode="indeterminate" ng-if="$$loadingAsyncDone === false" md-diameter="25px"></md-progress-circular></div>')),e.find("md-option").attr("ng-show","$$loadingAsyncDone"));if(t.name){var a=angular.element('<select class="md-visually-hidden"></select>');a.attr({name:t.name,"aria-hidden":"true",tabindex:"-1"});var l=e.find("md-option");angular.forEach(l,function(e){var t=angular.element("<option>"+e.innerHTML+"</option>");e.hasAttribute("ng-value")?t.attr("ng-value",e.getAttribute("ng-value")):e.hasAttribute("value")&&t.attr("value",e.getAttribute("value")),a.append(t)}),a.append('<option ng-value="'+t.ngModel+'" selected></option>'),e.parent().append(a)}var x=D.parseAttributeBoolean(t.multiple),i=x?"multiple":"",o='<div class="md-select-menu-container" aria-hidden="true" role="presentation"><md-select-menu role="presentation" {0}>{1}</md-select-menu></div>';o=D.supplant(o,[i,e.html()]),e.empty().append(n),e.append(o),t.tabindex||t.$set("tabindex",0);return function(r,n,a,e){var t,l,i,o,d,s=!0,c=e[0],u=e[1],p=e[2],f=e[3],m=n.find("md-select-value"),h=angular.isDefined(a.readonly),g=D.parseAttributeBoolean(a.mdNoAsterisk);if(g&&n.addClass("md-no-asterisk"),c){var v=c.isErrorGetter||function(){return p.$invalid&&(p.$touched||f&&f.$submitted)};if(c.input&&n.find("md-select-header").find("input")[0]!==c.input[0])throw new Error("<md-input-container> can only have *one* child <input>, <textarea> or <select> element!");c.input=n,c.label||R.expect(n,"aria-label",n.attr("placeholder")),r.$watch(v,c.setInvalid)}!function(){if(i=angular.element(n[0].querySelector(".md-select-menu-container")),o=r,a.mdContainerClass){var e=i[0].getAttribute("class")+" "+a.mdContainerClass;i[0].setAttribute("class",e)}(d=i.find("md-select-menu").controller("mdSelectMenu")).init(p,a.ngModel),n.on("$destroy",function(){i.remove()})}(),T(n);var b,$=p.$render;function y(){i&&(d=d||i.find("md-select-menu").controller("mdSelectMenu"),u.setLabelText(d.selectedLabels()))}function C(){if(l){var e=d.selectedLabels({mode:"aria"});n.attr("aria-label",e.length?l+": "+e:l)}}p.$render=function(){$(),y(),C(),M()},a.$observe("placeholder",p.$render),c&&c.label&&a.$observe("required",function(e){c.label.toggleClass("md-required",e&&!g)}),u.setLabelText=function(e){u.setIsPlaceholder(!e);var t=!1;if(a.mdSelectedText&&a.mdSelectedHtml)throw Error("md-select cannot have both `md-selected-text` and `md-selected-html`");if(a.mdSelectedText||a.mdSelectedHtml)e=_(a.mdSelectedText||a.mdSelectedHtml)(r),t=!0;else if(!e){e=a.placeholder||(c&&c.label?c.label.text():"")||"",t=!0}var n=m.children().eq(0);a.mdSelectedHtml?n.html(N.getTrustedHtml(e)):t?n.text(e):n.html(e)},u.setIsPlaceholder=function(e){e?(m.addClass("md-select-placeholder"),c&&c.label&&c.label.addClass("md-placeholder")):(m.removeClass("md-select-placeholder"),c&&c.label&&c.label.removeClass("m
|