-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmaterial-decorator.min.js
1 lines (1 loc) · 17.6 KB
/
material-decorator.min.js
1
define(["angular","schemaForm"],function(e,t){e.module("schemaForm").run(["$templateCache",function(e){e.put("decorators/material/actions-trcl.html",'<div class="btn-group schema-form-actions {{form.htmlClass}}" ng-transclude=""></div>'),e.put("decorators/material/actions.html",'<section layout="row" class="btn-group schema-form-actions {{form.htmlClass}}"></section>'),e.put("decorators/material/array.html",'<div class="schema-form-{{form.type}} {{form.htmlClass}}" md-theme="dark" sf-field-model="sf-new-array" sf-new-array="$$value$$"><div layout="row" style="padding: 0;" class="md-toolbar-tools"><label class="control-label" flex="" ng-show="showTitle()">{{ form.title }}</label><md-button class="md-icon-button" aria-label="add" ng-if="!modelArray || modelArray.length==0" ng-hide="form.readonly || form.add === null" ng-click="appendToArray()" ng-disabled="form.schema.maxItems <= modelArray.length"><ng-md-icon icon="add"></ng-md-icon></md-button></div><md-list class="list-group" ng-model="modelArray" ui-sortable="form.sortOptions"><md-list-item layout="row" layout-padding="" class="list-group-item md-whiteframe-3dp" ng-repeat="item in modelArray track by $index"><md-content flex="" class="{{form.fieldHtmlClass}}"><label style="margin: 5px;">{{ (form.subTitle || form.title) + ($index+1) }}</label><sf-decorator ng-init="arrayIndex = $index; sectionClass = form.sectionClass" flex="" form="copyWithIndex($index)"></sf-decorator></md-content><md-content layout="column" flex="none" flex-order="2"><md-button class="md-icon-button" aria-label="remove" ng-hide="form.readonly || form.remove === null" ng-click="deleteFromArray($index)" ng-disabled="form.schema.minItems >= modelArray.length"><ng-md-icon icon="delete"></ng-md-icon></md-button><md-button class="md-icon-button" aria-label="add" ng-hide="form.readonly || form.add === null" ng-click="appendToArray()" ng-disabled="form.schema.maxItems <= modelArray.length"><ng-md-icon icon="add"></ng-md-icon></md-button></md-content></md-list-item></md-list></div>'),e.put("decorators/material/autocomplete.html",'<div class="form-group {{form.htmlClass}} schema-form-select" sf-layout=""><md-autocomplete ng-disabled="form.readonly" ng-model="$$value$$" sf-autocomplete="" sf-field-model="replaceAll" schema-validate="form" md-autoselect="true" md-selected-item="$$value$$" md-search-text="searchText" md-selected-item-change="form.onChange(item, form, model, modelArray, arrayIndex)" md-items="item in form.query(searchText)" md-item-text="item[form.textField]" md-floating-label="{{::form.title}}" md-menu-class="autocomplete-custom-template"><md-item-template><span md-highlight-text="searchText">{{ item[form.textField] }}</span></md-item-template><md-not-found>No matches found</md-not-found></md-autocomplete><md-input-container style="padding: 0;margin: 0;" name="{{form.key|sfCamelKey}}" md-is-error="!$root.isEmptyObject(ngModel.$error)" ng-model="$$value$$" sf-field-model="" schema-validate="form"><div ng-messages="ngModel.$error"><div sf-message="" ng-message=""></div><div class="md-char-counter">{{ form.description }}</div></div></md-input-container></div>'),e.put("decorators/material/checkbox.html",'<div class="checkbox schema-form-checkbox {{::form.htmlClass}}"><md-checkbox sf-field-model="" ng-model="$$value$$" ng-disabled="form.readonly" schema-validate="form" sf-changed="form" ng-model-options="form.ngModelOptions" ng-true-value="{{form.trueValue || true}}" ng-false-value="{{form.falseValue || false}}" ng-class="form.fieldHtmlClass" name="{{::form.key|sfCamelKey}}" aria-label="{{::form.title}}"><span>{{::form.title}}</span></md-checkbox><md-input-container md-is-error="!$root.isEmptyObject(ngModel.$error)"><div ng-messages="ngModel.$error"><div sf-message="" ng-message=""></div></div><div class="md-char-counter">{{ form.description }}</div></md-input-container></div>'),e.put("decorators/material/checkboxes.html",'<div sf-array="form" sf-field-model="" class="form-group schema-form-checkboxes {{::form.htmlClass}}" sf-messages=""><div layout="row" style="padding: 0;" class="md-toolbar-tools"><label class="control-label" flex="" ng-show="showTitle()">{{ form.title }}</label></div><md-content ng-class="form.fieldHtmlClass"><div class="checkbox" ng-repeat="val in titleMapValues track by $index"><md-checkbox ng-model="titleMapValues[$index]" sf-changed="form" ng-disabled="::form.readonly" name="{{::form.key|sfCamelKey}}" ng-true-value="true" ng-false-value="false" aria-label="{{::form.title}}">{{::form.titleMap[$index].name}}</md-checkbox></div></md-content></div>'),e.put("decorators/material/chips.html",'<div class="form-group schema-form-chips {{form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess(), \'has-feedback\': form.feedback !== false}"><md-chips sf-field-model="" readonly="form.readonly" flex="" placeholder="{{::form.title}}"><md-chip-template><strong ng-if="!form.template">{{$chip}}</strong></md-chip-template></md-chips><div ng-messages="ngModel.$error"><div class="md-char-counter">{{ form.description }}</div><div sf-message="" ng-message=""></div></div></div>'),e.put("decorators/material/date.html",'<div class="schema-form-date {{::form.htmlClass}}"><label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label><md-datepicker sf-field-model="" sf-changed="form" schema-validate="form" sf-type-parser="form.schema" id="{{::form.key|sfCamelKey}}" ng-show="::form.key" ng-class="::form.fieldHtmlClass" ng-disabled="::form.readonly" md-placeholder="Enter date" sf-messages=""></md-datepicker></div>'),e.put("decorators/material/default.html",'<md-input-container class="schema-form-input md-block" md-is-error="!$root.isEmptyObject(ngModel.$error)" ng-class="::form.htmlClass" sf-layout="" aria-label="{{ ::form.title }}"><md-icon ng-if="form.icon"><ng-md-icon style="{{form.icon.style}}" icon="{{ form.icon.icon }}"></ng-md-icon></md-icon><label ng-show="showTitle()">{{::form.title}}</label> <input sf-field-model="" ng-model="$$value$$" schema-validate="form" type="{{form.type}}" aria-label="{{ form.title }}" ng-class="form.fieldHtmlClass" ng-disabled="form.readonly" name="{{form.key|sfCamelKey}}"><div ng-messages="ngModel.$error"><div sf-message="" ng-message=""></div></div><div class="md-char-counter">{{ form.description }}</div></md-input-container>'),e.put("decorators/material/fieldset-trcl.html",'<fieldset ng-disabled="form.readonly" class="standard {{form.htmlClass}}" flex=""><legend ng-show="form.title">{{ form.title }}</legend><div ng-transclude=""></div></fieldset>'),e.put("decorators/material/fieldset.html",'<fieldset ng-disabled="form.readonly" class="standard {{form.htmlClass}}" flex=""><legend ng-show="form.title">{{ form.title }}</legend><sf-decorator ng-repeat="item in form.items" form="item"></sf-decorator></fieldset>'),e.put("decorators/material/help.html",'<div class="helpvalue schema-form-helpvalue {{form.htmlClass}}" ng-bind-html="form.helpValue"></div>'),e.put("decorators/material/radio-buttons.html",'<div class="form-group schema-form-radiobuttons {{form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}"><div><label class="control-label" ng-show="showTitle()">{{form.title}}</label></div><section layout="row" layout-sm="column" layout-align="center center"><md-input-container ng-repeat="item in form.titleMap"><md-button type="button" class="group md-raised" sf-field-model="replaceAll" ng-model="$$value$$" sf-changed="form" ng-class="{\'md-primary\': ($$value$$ == item.value)}" ng-disabled="form.readonly" ng-model-options="form.ngModelOptions" schema-validate="form" ng-value="item.value" ng-click="$$value$$ = item.value" name="{{form.key.join(\'.\')}}"><span ng-bind-html="item.name"></span></md-button></md-input-container></section><div class="help-block" sf-message="form.description"></div></div>'),e.put("decorators/material/radios-inline.html",'<div class="form-group schema-form-radios-inline {{form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}"><label class="control-label" ng-show="showTitle()">{{form.title}}</label><md-radio-group layout="row" sf-field-model="replaceAll" ng-model="$$value$$" class="{{form.fieldHtmlClass}}" ng-class="{ active: item.value === $$value$$ }" sf-changed="form" schema-validate="form" ng-disabled="form.readonly" name="{{form.key.join(\'.\')}}"><md-radio-button ng-repeat="item in form.titleMap" ng-value="item.value"><span ng-bind-html="item.name"></span></md-radio-button></md-radio-group><div ng-messages="ngModel.$error"><div sf-message="" ng-message=""></div></div></div>'),e.put("decorators/material/radios.html",'<div class="form-group schema-form-radios {{form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}"><label class="control-label" ng-show="showTitle()" aria-label="{{form.title}}">{{form.title}} {{form.titleMap | json}}</label><md-radio-group sf-field-model="" sf-changed="form" ng-disabled="form.readonly" name="{{form.key.join(\'.\')}}"><md-radio-button ng-repeat="item in form.titleMap" ng-value="item.value" class="{{form.fieldHtmlClass}}" sf-field-model="ng-class" ng-class="{ active: item.value === $$value$$ }"><span ng-bind-html="item.name"></span></md-radio-button></md-radio-group><div ng-messages="ngModel.$error"><div class="md-char-counter">{{ form.description }}</div><div sf-message="" ng-message=""></div></div></div>'),e.put("decorators/material/section.html",'<md-content class="schema-form-section {{::form.htmlClass}} {{ ::sectionClass }}" flex="" sf-layout=""><sf-decorator class="{{ ::item.fieldClass }}" ng-repeat="item in form.items" form="item"></sf-decorator></md-content>'),e.put("decorators/material/select.html",'<md-input-container style="padding-bottom: 0;" md-is-error="!$root.isEmptyObject(ngModel.$error)" class="form-group {{::form.htmlClass}} schema-form-select" sf-layout=""><label ng-show="::showTitle()">{{::form.title}}</label><md-select sf-field-model="" name="{{ ::form.key|sfCamelKey }}" schema-validate="form" ng-model="$$value$$"><md-optgroup ng-repeat-start="(key, opt) in form.titleMap" ng-if="opt.group && opt.group != optGroups[key-1].group" label="{{::opt.group}}" aria-label="{{::opt.group}}"><md-option ng-repeat="(key, filtered) in form.titleMap" ng-value="::filtered.value" aria-label="{{::filtered.name}}">{{::filtered.name}}</md-option></md-optgroup><md-option ng-if="!opt.group" ng-value="::opt.value" ng-repeat-end="">{{::opt.name}}</md-option></md-select><div ng-messages="ngModel.$error"><div sf-message="" ng-message=""></div></div><div class="md-char-counter">{{ form.description }}</div></md-input-container>'),e.put("decorators/material/submit.html",'<section class="schema-form-submit {{form.htmlClass}}" sf-messages=""><md-button class="md-raised {{ form.style || \'md-primary\' }} {{form.fieldHtmlClass}}" type="{{ ::form.type }}" ng-disabled="form.readonly" aria-label="{{::form.title}}">{{::form.title}}</md-button></section>'),e.put("decorators/material/switch.html",'<md-input-container class="schema-form-switch {{::form.htmlClass}}"><md-switch sf-field-model="" sf-changed="form" sf-type-parser="form.schema" sf-messages="" schema-validate="form" id="{{::form.key}}" aria-label="{{form.title}}" ng-show="::form.key" ng-class="form.fieldHtmlClass" ng-disabled="::form.readonly"><span ng-show="showTitle()" for="{{::form.key}">{{::form.title}}</span></md-switch></md-input-container>'),e.put("decorators/material/tabarray.html",'<div ng-model="modelArray" schema-validate="form" sf-array="form" md-theme="dark" sf-field-model="sf-new-array" layout="column" layout-padding="" sf-new-array="$$value$$" class="clearfix schema-form-tabarray {{form.htmlClass}}"><div class="md-toolbar-tools"><h3>{{ form.title }}</h3><span flex=""></span><md-button class="md-icon-button" ng-hide="form.readonly" ng-disabled="form.schema.maxItems <= modelArray.length" ng-click="$event.preventDefault() || (appendToArray())"><ng-md-icon icon="add"></ng-md-icon></md-button></div><md-tabs md-selected="form.selectedIndex" md-dynamic-height="" md-border-bottom="" md-autoselect=""><md-tab ng-repeat="item in modelArray track by $index" ng-disabled="item.disabled" label="{{ form.title + ($index+1) }}{{item.title}}"><div class="tab{{$index%4}}"><md-button class="md-icon-button" ng-hide="form.readonly" ng-click="deleteFromArray($index)" ng-disabled="form.schema.minItems >= modelArray.length"><ng-md-icon icon="delete"></ng-md-icon></md-button><sf-decorator ng-init="arrayIndex = $index" form="copyWithIndex($index)"></sf-decorator></div></md-tab></md-tabs></div>'),e.put("decorators/material/tabs.html",'<div sf-field-model="" class="schema-form-tabs {{::form.htmlClass}}"><md-tabs md-dynamic-height="" md-selected="selected" md-autoselect="" ng-init="selected = 0"></md-tabs></div>'),e.put("decorators/material/textarea.html",'<md-input-container class="{{::form.htmlClass}} schema-form-textarea" md-is-error="!$root.isEmptyObject(ngModel.$error)"><label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label> <textarea ng-class="::form.fieldHtmlClass" id="{{::form.key|sfCamelKey}}" sf-changed="form" ng-disabled="::form.readonly" sf-field-model="" md-maxlength="form.maxLength" schema-validate="form" rows="{{ form.rows }}" cols="{{ form.cols }}" name="{{::form.key|sfCamelKey}}"></textarea><div ng-messages="ngModel.$error"><div sf-message="" ng-message=""></div></div><div class="md-char-counter">{{ form.description }}</div></md-input-container>')}]),function(e,t){"use strict";function a(e,t,a,o,r){function l(){var e='<div ng-if="ngModel.$invalid" ng-messages="ngModel.$error"><div sf-message ng-message></div></div>',t=document.createElement("div");return t.innerHTML=e,t.firstChild}function m(e){var t=e.fieldFrag.querySelector("[sf-messages]");if(t&&$){var a=$.cloneNode();t.appendChild(a)}}function s(e){var t=e.fieldFrag.querySelector("md-autocomplete"),a=e.form.minLength||1,o=e.form.maxLength||!1,r=e.form.title||e.form.placeholder||e.form.key.slice(-1)[0];t&&(e.form.onChange&&(t.setAttribute("md-selected-item-change","form.onChange(item, form, model, modelArray, $index)"),t.setAttribute("md-search-text-change","form.onTextChange(searchText)")),t.setAttribute("md-min-length",a),o&&t.setAttribute("md-max-length",o),r&&t.setAttribute("md-floating-label",r))}function i(e){var t=e.fieldFrag.querySelector("md-switch");e.form.schema.titleMap&&(t.setAttribute("ng-true-value",e.form.schema.titleMap["true"]),t.setAttribute("ng-false-value",e.form.schema.titleMap["false"])),e.form.schema.ink&&t.setIdAttribute("md-no-ink",e.form.schema.ink)}function d(e){function t(e,t,a){return e.optionData?t(e.optionData):e.selectOptions?e.selectOptions:[]}var a,o=[];if(e.form.getOptions=t,e.form.titleMap)e.form.selectOptions=e.form.titleMap;else if(e.form["enum"]&&e.form["enum"].length){for(a=0;a<e.form["enum"].length;a++)e.form["enum"][a]&&e.form["enum"][a].length&&o.push({name:e.form["enum"][a],value:e.form["enum"][a]});e.form.selectOptions=o}}function n(e){var t=e.fieldFrag.querySelector("md-datepicker");if(t){e.form.onChange&&t.setAttribute("ng-change","args.form.onChange(searchText)");var a=e.form.minimum||!1,o=e.form.maximum||!1;a&&t.setAttribute("md-max-date",a),o&&t.setAttribute("md-max-date",o)}}function c(e){if(e.form.tabs&&e.form.tabs.length>0){var t=e.fieldFrag.querySelector("md-tabs");e.form.tabs.forEach(function(a,o){var r=document.createElement("md-tab");r.setAttribute("label","{{"+e.path+".tabs["+o+"].title}}");var l=document.createElement("md-tab-body"),m=e.build(a.items,e.path+".tabs["+o+"].items",e.state);l.appendChild(m),r.appendChild(l),t.appendChild(r)})}}function f(t,a,r){if("string"===a.type&&("date"===a.format||"date-time"===a.format)){var l=e.stdFormObj(t,a,r);return l.key=r.path,l.type="date",r.lookup[o.stringify(r.path)]=l,l}}var u="decorators/material/",g=a.builders.simpleTransclusion,h=a.builders.ngModelOptions,p=a.builders.ngModel,b=a.builders.sfField,v=a.builders.condition,y=a.builders.array,$=l(),x=m,k=d,C=s,w=i,M=n,A=c,T=[b,p,h,v],F=T.concat(x),O=T.concat(y);e.defaults.string.unshift(f),t.defineDecorator("materialDecorator",{actions:{template:u+"actions.html",builder:[b,g,v]},array:{template:u+"array.html",builder:O},autocomplete:{template:u+"autocomplete.html",builder:F.concat(C)},"boolean":{template:u+"checkbox.html",builder:F},button:{template:u+"submit.html",builder:F},checkbox:{template:u+"checkbox.html",builder:F},checkboxes:{template:u+"checkboxes.html",builder:O},date:{template:u+"date.html",builder:F.concat(M)},"default":{template:u+"default.html",builder:F},fieldset:{template:u+"fieldset.html",builder:[b,g,v]},help:{template:u+"help.html",builder:F},number:{template:u+"default.html",builder:F},password:{template:u+"default.html",builder:F},radios:{template:u+"radios.html",builder:F},"radios-inline":{template:u+"radios-inline.html",builder:F},radiobuttons:{template:u+"radio-buttons.html",builder:F},section:{template:u+"section.html",builder:[b,v]},select:{template:u+"select.html",builder:F.concat(k)},submit:{template:u+"submit.html",builder:F},tabs:{template:u+"tabs.html",builder:[b,A,v]},tabarray:{template:u+"tabarray.html",builder:O},textarea:{template:u+"textarea.html",builder:F},"switch":{template:u+"switch.html",builder:F.concat(w)}})}function o(){return function(e){return e?e.join("-"):""}}e.module("schemaForm").config(a).filter("sfCamelKey",o),a.$inject=["schemaFormProvider","schemaFormDecoratorsProvider","sfBuilderProvider","sfPathProvider","$injector"]}(e,void 0),e.module("schemaForm").directive("sfTypeParser",function(){return{restrict:"A",scope:!1,require:"ngModel",link:function(e,t,a,o){var r=e.$watch(a.sfTypeParser,function(e){if(e){var t=-1!==e.type.indexOf("number"),a=-1!==e.type.indexOf("integer"),l=/^[0-9]*$/;(t||a)&&o.$parsers.push(function(e){var a;return t?a=parseFloat(e):l.test(e)&&(a=parseInt(e,10)),console.log("parser",l.test(e),e,a),void 0===a||isNaN(a)?e:a}),r()}})}}})});