From 6eac076764c5c2fe0f2b3d479882419de17dd606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A1vid=20Hal=C3=A1sz?= Date: Wed, 12 Jul 2017 12:43:35 +0200 Subject: [PATCH] Automated build of binaries from master to a dev tag using Travis --- .gitignore | 8 +++----- .travis.yml | 7 +++++++ ci/bower-dev.sh | 18 ++++++++++++++++++ dist/css/ui-components.css | 2 -- dist/css/ui-components.css.map | 1 - dist/js/ui-components.js | 2 -- dist/js/ui-components.js.map | 1 - 7 files changed, 28 insertions(+), 11 deletions(-) create mode 100755 ci/bower-dev.sh delete mode 100644 dist/css/ui-components.css delete mode 100644 dist/css/ui-components.css.map delete mode 100644 dist/js/ui-components.js delete mode 100644 dist/js/ui-components.js.map diff --git a/.gitignore b/.gitignore index d4ef30b2bc..3494ad99ee 100644 --- a/.gitignore +++ b/.gitignore @@ -10,10 +10,11 @@ pids # Users Environment Variables .lock-wscript - -dist/data/ dist/assets/ +dist/css +dist/data/ dist/docs/ +dist/js dist/**/demo-app.* .tmp/ .bower/ @@ -38,6 +39,3 @@ vendor.css *.iml coverage - -!dist/js/ui-components.js.map -!dist/css/ui-components.css.map diff --git a/.travis.yml b/.travis.yml index 99c197eaa6..79fefc893a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,3 +26,10 @@ notifications: on_success: change on_failure: always on_start: never + +deploy: + - provider: script + script: ci/bower-dev.sh + skip_cleanup: true + on: + branch: master diff --git a/ci/bower-dev.sh b/ci/bower-dev.sh new file mode 100755 index 0000000000..c2db61f24b --- /dev/null +++ b/ci/bower-dev.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -x +HASH=$(git rev-parse HEAD) +yarn run build +mv -f dist tmp +mv bower.json bower.json.tmp +git remote add upstream https://github.com/ManageIQ/ui-components.git +git fetch upstream +git checkout bower-dev +mv -f tmp dist +mv -f bower.json.tmp bower.json +git add -f dist/css/ui-components.css dist/css/ui-components.css.map +git add -f dist/js/ui-components.js dist/js/ui-components.js.map +git add -f bower.json +git commit -m "Automated build from ${HASH}" +set +x +git push -f https://$GITHUB_AUTH@github.com/ManageIQ/ui-components.git bower-dev &> /dev/null +echo "git push origin HEAD:bower-dev" diff --git a/dist/css/ui-components.css b/dist/css/ui-components.css deleted file mode 100644 index 67be5c9b30..0000000000 --- a/dist/css/ui-components.css +++ /dev/null @@ -1,2 +0,0 @@ -.miq-sand-paper,.miq-sand-paper>div{background:#f5f5f5;overflow:hidden}.toolbar-pf .form-group .btn,.toolbar-pf .form-group .btn-group{margin-left:5px}.form-group.miq-toolbar-group,.form-group.miq-toolbar-group .miq-custom-html form{display:inline-block}.form-group.miq-toolbar-group .miq-custom-html .form-group{margin-bottom:0!important;border-right:0}.form-group.miq-toolbar-group .miq-custom-html .form-group:last-child{padding-right:0}.dialog-editor-tab-list{margin-bottom:20px}.delete-tab{opacity:.3;visibility:visible}.select-tab:hover .delete-tab{opacity:1;visibility:visible}.miq-data-tables-header{text-align:left}.miq-data-tables-header .pull-right{padding-right:20px}.miq-data-tables-header .pull-right div{display:inline-block;margin-right:10px}table.miq-table-with-footer{margin-bottom:0}.miq-table thead th{color:#0099d3;cursor:pointer}.dataTables_footer span{margin-left:10px}.miq-tile-section .card .card-content{padding-right:5px}.miq-tile-section div.miq-paging{text-align:center}.miq-tile-section div.miq-paging ul{margin-top:0}.miq-tile-view .card-view-pf .card{padding:0!important;cursor:pointer}.miq-tile-view .card-view-pf .card .card-content>div{padding-top:10px}.miq-tile-view .card-view-pf .card .card-check-box{left:0!important;top:12px!important}.miq-tile-with-body .card-view-pf .card{width:375px;height:175px}.miq-tile-with-body .card-view-pf .card .card-content{overflow:hidden}.miq-tile-with-body .card-view-pf .card .miq-icon-section{padding-right:0}.miq-tile-with-body .card-view-pf .card .miq-info-section{padding-left:0}.miq-tile-with-body .card-view-pf .card .miq-info-section dl.dl-horizontal.tile dt{margin-left:10px}.miq-tile-with-body .card-view-pf .card .miq-info-section dl.dl-horizontal.tile dd{margin-left:120px;text-align:left}.miq-row-margin-only-top{margin-top:15px;margin-left:0;margin-right:0}.miq-small-tile .card-view-pf .card{width:130px;height:131px}.miq-small-tile .card-view-pf .card .card-content .miq-quadicon{display:inline-block}.miq-small-tile .card-view-pf .card .card-content .miq-tile-head{margin-left:20px}.miq-small-tile .card-view-pf .card .card-content a{word-wrap:break-word}.miq-select-all{padding-right:0}.miq-select-all input[type=checkbox]{margin:0 4px;vertical-align:middle;position:relative;top:-1px}.miq-sort-items{padding-right:0}.miq-sort-items .sort-pf .uib-dropdown-menu{max-height:400px;overflow-y:auto}.miq-sort-items .sort-pf .uib-dropdown button{max-width:150px;overflow:hidden}.miq-pagination .miq-pager .miq-paging .disabled{pointer-events:none;cursor:not-allowed;background-color:#fafafa!important;background-image:none!important;border-color:#d1d1d1!important;color:#8b8d8f!important;opacity:1}.miq-pagination .miq-pager{float:right}.miq-pagination .miq-pager .miq-per-page{display:inline-block;vertical-align:top}.miq-pagination .miq-pager .miq-paging{display:inline-block}.miq-pagination .miq-pager .miq-paging ul li a{cursor:pointer}.miq-page-counter{padding-top:3px}.miq-data-table .miq-paging{text-align:center}.miq-data-table .miq-paging ul.pagination{margin-top:0;margin-bottom:10px}.paginate_of b{display:inline-block}.miq-siteswitcher-icon{color:#fff}.miq-siteswitcher-link{color:#000}.miq-siteswitcher-entry{display:inline-block;padding:10px;text-align:center;min-width:90px;border:1px solid #fff}.miq-siteswitcher-entry:hover{border:1px solid #bbb}.miq-siteswitcher-entry:hover a{color:#0088ce}.miq-siteswitcher .uib-dropdown-menu{padding:9px;left:8px;margin-top:11px;min-width:220px}.miq-siteswitcher .uib-dropdown-menu.uib-dropdown-menu-right{left:auto;right:-2px}.miq-siteswitcher .uib-dropdown-menu.uib-dropdown-menu-right:after,.miq-siteswitcher .uib-dropdown-menu.uib-dropdown-menu-right:before{left:auto;right:6px}.miq-siteswitcher .uib-dropdown-menu:after,.miq-siteswitcher .uib-dropdown-menu:before{border-bottom-color:#bbb;border-bottom-style:solid;border-bottom-width:10px;border-left:10px solid transparent;border-right:10px solid transparent;content:"";display:inline-block;left:6px;position:absolute;top:-11px}.miq-siteswitcher .uib-dropdown-menu:after{border-bottom-color:#fff;top:-10px}.miq-siteswitcher.dropup .uib-dropdown-menu{margin-bottom:11px;margin-top:0}.miq-siteswitcher.dropup .uib-dropdown-menu:after,.miq-siteswitcher.dropup .uib-dropdown-menu:before{border-bottom:none;border-top-color:#bbb;border-top-style:solid;border-top-width:10px;bottom:-11px;top:auto}.miq-siteswitcher.dropup .uib-dropdown-menu:after{border-top-color:#fff;bottom:-10px}miq-fonticon-picker button.picked{width:3em;text-align:center}.fonticon-modal .modal-content .tab-content{height:calc(100vh - 260px);overflow-y:auto!important;overflow-x:hidden}.fonticon-modal .modal-content .tab-content div.fonticon{font-size:24px;text-align:center}.fonticon-modal .modal-content .tab-content div.fonticon span.active i{padding:3px 5px;background-color:#0088ce;color:#fff} -/*# sourceMappingURL=ui-components.css.map*/ \ No newline at end of file diff --git a/dist/css/ui-components.css.map b/dist/css/ui-components.css.map deleted file mode 100644 index 55d030f054..0000000000 --- a/dist/css/ui-components.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"css/ui-components.css","sourceRoot":""} \ No newline at end of file diff --git a/dist/js/ui-components.js b/dist/js/ui-components.js deleted file mode 100644 index 533e9dbaa4..0000000000 --- a/dist/js/ui-components.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t){function e(i){if(n[i])return n[i].exports;var o=n[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,i){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:i})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=".",e(e.s=100)}([function(t,e){t.exports=_},function(t,e){t.exports=angular},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(3);e.default=function(t){t.component("dialogEditorModalFieldTemplate",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=(function(){function t(){}}(),function(){function t(){this.template=function(t,e){return n(98)("./"+e.template)},this.template.$inject=["$element","$attrs"],this.scope=!0,this.controllerAs="vm",this.bindings={modalData:"=",categories:"=?",addEntry:"&?",removeEntry:"&?",currentCategoryEntries:"&?",resolveCategories:"&?"}}return t}());e.default=i},,function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),o=function(){function t(t){this.MiQTranslateService=t,this.currentPageView=1}return t.$inject=["MiQTranslateService"],t.prototype.onCheckAll=function(t){var e=this;i.each(this.rows,function(n){e.onItemSelected({item:n,isSelected:t})})},t.prototype.onSortClick=function(t,e){this.onSort({headerId:t,isAscending:e})},t.prototype.perPageClick=function(e){var n=Math.ceil(this.settings.items/e.value);this.currentPageView=this.currentPageView>n?n:this.currentPageView;var i=t.calculateStartIndex(this.currentPageView,e.value);this.loadMoreItems({start:i,perPage:e.value})},t.prototype.setPage=function(e){e>this.settings.total&&(this.currentPageView=this.settings.total,e=this.currentPageView),this.currentPageView=e;var n=t.calculateStartIndex(e,this.settings.perpage);this.loadMoreItems({start:n,perPage:this.settings.perpage})},t.prototype.translateOf=function(t,e,n){return this.settings&&this.settings.hasOwnProperty("translateTotalof")?this.settings.translateTotalOf(t,e,n):t+" - "+e+" of "+n},t.prototype.onItemButtonClick=function(t){t.hasOwnProperty("onclick")&&new Function(t.onclick)()},t.prototype.setPagingNumbers=function(){this.settings.hasOwnProperty("current")&&this.settings.hasOwnProperty("perpage")&&(this.settings.startIndex=this.settings.startIndex||t.calculateStartIndex(this.settings.current,this.settings.perpage),this.settings.current===this.settings.total?this.settings.endIndex=this.settings.items-1:this.settings.endIndex=this.settings.current*this.settings.perpage-1)},t.calculateStartIndex=function(t,e){return(t-1)*e},t}();e.DataViewClass=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ToolbarType={BUTTON:"button",BUTTON_TWO_STATE:"buttonTwoState",BUTTON_SELECT:"buttonSelect",CUSTOM:"custom",SEPARATOR:"separator"}},,function(t,e){},,function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,o=n(57),a=n(54),l=n(1);!function(t){t.app=l.module("miqStaticAssets.common",[]),t.app.config(["$windowProvider",function(t){var e=t.$get();e.hasOwnProperty("__")||(e.__=function(t){return t})}]),o.default(t.app),a.default(t.app)}(i||(i={}))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,o=n(69),a=n(63),l=n(1);!function(t){t.app=l.module("miqStaticAssets.dialogEditor",["ui.sortable","ngDragDrop","frapontillo.bootstrap-switch"]),o.default(t.app),a.default(t.app)}(i||(i={}))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,o=n(75),a=n(77),l=n(1);!function(t){t.app=l.module("miqStaticAssets.fonticonPicker",["ui.bootstrap"]),a.default(t.app),o.default(t.app)}(i||(i={}))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,o=n(88),a=n(84),l=n(80),s=n(1);!function(t){t.app=s.module("miqStaticAssets.gtl",[]),o.default(t.app),a.default(t.app),l.default(t.app)}(i||(i={}))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,o=n(1);!function(t){o.module("miqStaticAssets",["miqStaticAssets.toolbar","miqStaticAssets.common","miqStaticAssets.dialogEditor","miqStaticAssets.gtl","miqStaticAssets.siteSwitcher","miqStaticAssets.fonticonPicker"])}(i||(i={}))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,o=n(89),a=n(1);!function(t){t.app=a.module("miqStaticAssets.siteSwitcher",[]),t.app.component("miqSiteSwitcher",new o.default)}(i||(i={}))},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i,o=n(96),a=n(90),l=n(1);!function(t){t.app=l.module("miqStaticAssets.toolbar",["ngSanitize"]),o.default(t.app),a.default(t.app)}(i||(i={}))},,,,,,,,,function(t,e){t.exports='
\n
\n \x3c!-- tab content --\x3e\n
\n
\n
\n \n {{ box.label }}\n \n
\n
\n
\n
\n \n {{ \'Drag your components here\' | translate }}\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n

Start with adding a box

\n
\n \n
\n
\n'},function(t,e){t.exports='
\n \n
\n\n \x3c!-- text box --\x3e\n \n\n \x3c!-- text area --\x3e\n \n\n \x3c!-- check box --\x3e\n \n\n \x3c!-- date control --\x3e\n \n\n \x3c!-- date time control --\x3e\n
\n
\n \n
\n
\n \n
\n
\n\n \x3c!-- drop down list --\x3e\n \n\n \x3c!-- radio button --\x3e\n \n \n \n\n \x3c!-- tag control --\x3e\n \n\n
\n
\n \n
\n
\n'},function(t,e){t.exports='\x3c!-- text check box --\x3e\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n'},function(t,e){t.exports='\x3c!-- date time control --\x3e\n
\n \n
\n
\n \n
\n
\n \n
\n'},function(t,e){t.exports='\x3c!-- any dynamic element --\x3e\n
\n \x3c!-- TODO: until treepicker and API for it are in the SSUI --\x3e\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n'},function(t,e){t.exports='\x3c!-- radio button --\x3e\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n
\n \n
\n'},function(t,e){t.exports='\x3c!-- tag-contorl --\x3e\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n
\n
\n'},function(t,e){t.exports='\x3c!-- text area box --\x3e\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n'},function(t,e){t.exports='\x3c!-- text box --\x3e\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n'},function(t,e){t.exports="\n"},function(t,e){t.exports='
\n
\n
\n
\n

\n {{dialogField.label}}\n

\n
\n

\n \n \n \n

\n
\n
\n
\n
\x3c!-- /row --\x3e\n
\x3c!-- /container --\x3e\n'},function(t,e){t.exports='\n\n\n\n\n'},function(t,e){t.exports='\n\n\n'},function(t,e){t.exports='
\n \n \n
\n\n\n'},function(t,e){t.exports='
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n'},function(t,e){t.exports='\n'},function(t,e){t.exports='
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n \n {{config.fetchTileName(item)}}\n
\n
\n \n
\n
\n
\n
\n
\n
{{header.text}}:
\n
{{item.cells[key].text | limitToSuffix : 25 : 25}}
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n'},function(t,e){t.exports='
\n \n \n
\n'},function(t,e){t.exports='\n'},function(t,e){t.exports='
\n \n \n
\n'},function(t,e){t.exports='
\n
\n \n \n \n \n \n \n \n
\n
\n
\n \n \n
\n'},function(t,e){t.exports='
\n \n
\n'},,,,,,,,function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(55);e.default=function(t){t.component("miqSortItems",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),o=function(){function t(t,e){this.$element=t,this.$timeout=e,this.initOptions()}return t.$inject=["$element","$timeout"],t.prototype.$onChanges=function(t){t.headers&&(this.fillFields(),this.sortObject&&this.setSortItem()),t.dropDownClass&&this.applyClass()},t.prototype.$postLink=function(){var t=this;this.$timeout(function(){return t.applyClass()})},t.prototype.setSortItem=function(){this.sortObject&&this.sortObject.sortObject&&this.sortObject&&this.sortObject.sortObject.text&&(this.options.currentField={colId:i.findIndex(this.headers,this.sortObject.sortObject),id:this.sortObject.sortObject.text.toLowerCase(),title:this.sortObject.sortObject.text},this.options.isAscending=this.sortObject.isAscending)},t.prototype.initOptions=function(){var t=this;this.options={fields:[],onSortChange:function(e,n){return t.onSort({sortObject:e,isAscending:n})},currentField:{}}},t.prototype.fillFields=function(){var t=this;i.each(this.headers,function(e,n){!e.hasOwnProperty("is_narrow")&&e.hasOwnProperty("text")&&t.options.fields.push({colId:n,id:e.text.toLowerCase(),title:e.text})})},t.prototype.applyClass=function(){this.dropDownClass&&(Array.isArray(this.dropDownClass)?(t=this.$element.find(".uib-dropdown")).addClass.apply(t,this.dropDownClass):this.$element.find(".uib-dropdown").addClass(this.dropDownClass));var t},t}();e.SortItemsController=o;var a=function(){function t(){this.replace=!0,this.template='
',this.controller=o,this.controllerAs="vm",this.bindings={onSort:"&",headers:"<",sortObject:"<",dropDownClass:"<"}}return t}();e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.listDataTable="/list",this.deleteItemDataTable="/delete",this.validateItem="/validate",this.createItem="/create",this.providerSettings="/list_providers_settings",this.toolbarSettings="/toolbar"}return t}();e.DefaultEndpoints=i;var o=function(){function t(){this.rootPoint="",this.endpoints=new i}return t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(56),o=n(58);e.default=function(t){t.service("MiQEndpointsService",i.default),t.service("MiQTranslateService",o.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t){this.$window=t}return t.$inject=["$window"],t.prototype.translateString=function(t){return this.$window.__(t)},t}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=n(0),a=function(){function t(t,e){this.DialogEditor=t,this.DialogEditorModal=e}return t.$inject=["DialogEditor","DialogEditorModal"],t.prototype.$onInit=function(){var t=this;this.service=this.DialogEditor,this.dialogTabs=this.DialogEditor.getDialogTabs(),this.sortableOptionsBox={axis:"y",cancel:".nosort",cursor:"move",opacity:.5,revert:50,stop:function(e,n){var i=n.item.scope().$parent.tab.dialog_groups;t.DialogEditor.updatePositions(i)}},this.sortableOptionsFields={axis:"y",cancel:".nosort",cursor:"move",revert:50,stop:function(e,n){var i=n.item.scope().$parent.box.dialog_fields;t.DialogEditor.updatePositions(i)}}},t.prototype.addBox=function(){this.dialogTabs[this.DialogEditor.activeTab].dialog_groups.push({description:__("Description"),label:__("Label"),display:"edit",position:0,dialog_fields:[]}),this.DialogEditor.updatePositions(this.dialogTabs[this.DialogEditor.activeTab].dialog_groups)},t.prototype.removeBox=function(t){o.remove(this.dialogTabs[this.DialogEditor.activeTab].dialog_groups,function(e){return e.position===t}),this.DialogEditor.updatePositions(this.dialogTabs[this.DialogEditor.activeTab].dialog_groups)},t.prototype.droppableOptions=function(t,e){var n=i.element(t.target).scope();this.DialogEditor.updatePositions(n.box.dialog_fields)},t.prototype.editDialogModal=function(t,e){this.DialogEditorModal.showModal(t,e)},t}(),l=function(){function t(){this.template=n(25),this.controller=a,this.controllerAs="vm"}return t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(59);e.default=function(t){t.component("dialogEditorBoxes",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){this.DialogEditor=t,this.DialogEditorModal=e}return t.$inject=["DialogEditor","DialogEditorModal"],t.prototype.$onInit=function(){this.service=this.DialogEditor},t.prototype.editDialogModal=function(t,e,n){this.DialogEditorModal.showModal(t,e,n)},t}(),o=function(){function t(){this.template=n(26),this.controller=i,this.controllerAs="vm",this.bindings={fieldData:"<",boxPosition:"<"}}return t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(61);e.default=function(t){t.component("dialogEditorField",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(64),o=n(60),a=n(62),l=n(66),s=n(2);e.default=function(t){i.default(t),o.default(t),a.default(t),l.default(t),s.default(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(65);e.default=function(t){t.component("dialogEditorTabs",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=n(0),a=function(){function t(t,e){this.DialogEditor=t,this.DialogEditorModal=e}return t.$inject=["DialogEditor","DialogEditorModal"],t.prototype.$onInit=function(){var t=this;this.tabList=this.DialogEditor.getDialogTabs(),0!==this.tabList.length&&(this.DialogEditor.activeTab=0,this.tabList[this.DialogEditor.activeTab].active=!0),this.sortableOptions={cancel:".nosort",cursor:"move",helper:"clone",revert:50,stop:function(e,n){var a=i.element(n.item).scope().$parent,l=a.vm.tabList;t.DialogEditor.updatePositions(l),t.DialogEditor.activeTab=o.find(l,{active:!0}).position}}},t.prototype.addTab=function(){this.tabList.forEach(function(t){return t.active=!1});var t=this.tabList.length;this.tabList.push({description:__("New tab ")+t,display:"edit",label:__("New tab ")+t,position:t,active:!0,dialog_groups:[]}),this.DialogEditor.activeTab=t,this.DialogEditor.updatePositions(this.tabList)},t.prototype.removeTab=function(t){if(this.tabList[t].active&&(this.tabList.length-1===this.tabList[t].position&&this.tabList.length-1!=0?this.tabList[t-1].active=!0:this.tabList.length-1>this.tabList[t].position&&(this.tabList[t+1].active=!0)),o.remove(this.tabList,function(e){return e.position===t}),0!==this.tabList.length){this.DialogEditor.updatePositions(this.tabList);var e=o.find(this.tabList,{active:!0});i.isDefined(e)&&(this.DialogEditor.activeTab=e.position)}},t.prototype.selectTab=function(t){o.find(this.tabList,{active:!0}).active=!1,this.tabList[t].active=!0,this.DialogEditor.activeTab=t},t.prototype.editDialogModal=function(t){this.DialogEditorModal.showModal(t)},t}(),l=function(){function t(){this.template=n(34),this.controller=a,this.controllerAs="vm"}return t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(67);e.default=function(t){t.component("dialogEditorFieldStatic",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e,n,i){void 0===i&&(i={}),this.icon=e,this.label=n,this.placeholders=Object.assign({name:"",description:"",type:t,display:"edit",display_method_options:{},read_only:!1,required:!1,required_method_options:{},default_value:"",values_method_options:{},label:n,position:0,dynamic:!1,show_refresh_button:!1,load_values_on_init:!1,auto_refresh:!1,trigger_auto_refresh:!1,reconfigurable:!1,visible:!0,options:{protected:!1},resource_action:{resource_type:"DialogField",ae_attributes:{}}},i)}return t}(),o=function(){function t(){this.fields={dialogFieldTextBox:new i("DialogFieldTextBox","fa fa-font",__("Text Box")),dialogFieldTextAreaBox:new i("DialogFieldTextAreaBox","fa fa-file-text-o",__("Text Area")),dialogFieldCheckBox:new i("DialogFieldCheckBox","fa fa-check-square-o",__("Check Box")),dialogFieldDropDownList:new i("DialogFieldDropDownList","fa fa-caret-square-o-down",__("Dropdown List"),{data_type:"string",values:[],options:{sort_by:"description",sort_order:"ascending"}}),dialogFieldRadioButton:new i("DialogFieldRadioButton","fa fa-circle-o",__("Radio Button"),{data_type:"string",values:[],options:{sort_by:"description",sort_order:"ascending"}}),dialogFieldDateControl:new i("DialogFieldDateControl","fa fa-calendar",__("Date Control")),dialogFieldDateTimeControl:new i("DialogFieldDateTimeControl","fa fa-clock-o",__("Date Time Control")),dialogFieldTagControl:new i("DialogFieldTagControl","fa fa-tags",__("Tag Control"),{data_type:"string",values:[],options:{force_single_value:!1,sort_by:"description",sort_order:"ascending"}})}}return t}();e.ToolboxController=o;var a=function(){function t(){this.template=n(35),this.controller=o,this.controllerAs="vm"}return t}();e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.data={},this.activeTab=0}return t.prototype.setData=function(t){this.data=t},t.prototype.getDialogId=function(){return this.data.content[0].id},t.prototype.getDialogLabel=function(){return this.data.content[0].label},t.prototype.getDialogDescription=function(){return this.data.content[0].description},t.prototype.getDialogTabs=function(){return this.data.content[0].dialog_tabs},t.prototype.updatePositions=function(t){t.forEach(function(t,e){return t.position=e})},t}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(68),o=n(70);e.default=function(t){t.service("DialogEditor",i.default),t.service("DialogEditorModal",o.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),o=n(1),a=function(){function t(t,e,n,a){var l=this;switch(this.dialogDetails=t,this.$uibModalInstance=e,this.API=n,this.DialogEditor=a,this.modalTab="element_information",o.extend(this,{dialog:this.dialogDetails,saveDialogFieldDetails:this.saveDialogFieldDetails,addEntry:this.addEntry,removeEntry:this.removeEntry,deleteField:this.deleteField,modalUnchanged:this.modalUnchanged,modalTabSet:this.modalTabSet,modalTabIsSet:this.modalTabIsSet,currentCategoryEntries:this.currentCategoryEntries}),o.isUndefined(this.dialog.fieldId)&&o.isUndefined(this.dialog.boxId)&&o.isDefined(this.dialog.tabId)?this.element="tab":o.isUndefined(this.dialog.fieldId)&&o.isDefined(this.dialog.boxId)&&o.isDefined(this.dialog.tabId)?this.element="box":o.isDefined(this.dialog.fieldId)&&o.isDefined(this.dialog.boxId)&&o.isDefined(this.dialog.tabId)&&(this.element="field"),this.element){case"tab":this.modalData=i.cloneDeep(this.DialogEditor.getDialogTabs()[this.dialog.tabId]);break;case"box":this.modalData=i.cloneDeep(this.DialogEditor.getDialogTabs()[this.dialog.tabId].dialog_groups[this.dialog.boxId]);break;case"field":this.modalData=i.cloneDeep(this.DialogEditor.getDialogTabs()[this.dialog.tabId].dialog_groups[this.dialog.boxId].dialog_fields[this.dialog.fieldId]),"DialogFieldTagControl"===this.modalData.type&&this.resolveCategories().then(function(t){l.categories=t})}}return t.$inject=["dialogDetails","$uibModalInstance","API","DialogEditor"],t.prototype.resolveCategories=function(){return this.API.get("/api/categories?expand=resources&attributes=description,single_value,children")},t.prototype.modalTabSet=function(t){this.modalTab=t},t.prototype.modalTabIsSet=function(t){return this.modalTab===t},t.prototype.modalUnchanged=function(){switch(this.element){case"tab":return i.isMatch(this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab],this.modalData);case"box":return i.isMatch(this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId],this.modalData);case"field":return i.isMatch(this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].dialog_fields[this.dialog.fieldId],this.modalData)}},t.prototype.saveDialogFieldDetails=function(){switch(this.element){case"tab":this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].label=this.modalData.label,this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].description=this.modalData.description;break;case"box":this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].label=this.modalData.label,this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].description=this.modalData.description;break;case"field":this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].dialog_fields[this.dialog.fieldId]=this.modalData}this.$uibModalInstance.close()},t.prototype.deleteField=function(){var t=this;i.remove(this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].dialog_fields,function(e){return e.position===t.dialog.fieldId}),this.$uibModalInstance.close()},t.prototype.addEntry=function(){this.modalData.values.push(["",""])},t.prototype.removeEntry=function(t){i.pull(this.modalData.values,t)},t.prototype.currentCategoryEntries=function(){if(o.isDefined(this.categories))return i.find(this.categories.resources,"id",Number(this.modalData.options.category_id))},t}(),l=function(){function t(t){this.$uibModal=t}return t.$inject=["$uibModal"],t.prototype.showModal=function(t,e,i){var o={template:n(36),controller:a,controllerAs:"vm",size:"lg",resolve:{dialogDetails:function(){return{tabId:t,boxId:e,fieldId:i}}}};return this.$uibModal.open(o).result.catch(function(){})},t}();e.default=l},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){}return t.prototype.$onInit=function(){this.FonticonPickerCtrl.addFamily({title:this.title,selector:this.selector})},t}(),o=function(){function t(){this.controller=i,this.require={FonticonPickerCtrl:"^miqFonticonPicker"},this.bindings={title:"@",selector:"@"}}return t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(71);e.default=function(t){t.component("miqFonticonFamily",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(t,e){this.MiQFonticonService=t,this.$uibModal=e,this.families=[],this.btnClass="btn-default"}return t.$inject=["MiQFonticonService","$uibModal"],t.prototype.addFamily=function(t){this.families.push(t)},t.prototype.openModal=function(){var t=this;void 0===this.fonticons&&(this.fonticons=this.MiQFonticonService.fetch(this.families)),this.toSelect=this.selected,this.modal=this.$uibModal.open({template:n(37),windowClass:"fonticon-modal",keyboard:!1,size:"lg",controllerAs:"$ctrl",controller:["parent",function(t){this.parent=t}],resolve:{parent:function(){return t}}})},t.prototype.closeModal=function(t){t&&(this.selected=this.toSelect),this.modal.close()},t.prototype.markToSelect=function(t){this.toSelect=t},t}();e.FonticonPickerController=i;var o=function(){function t(){this.controller=i,this.template=n(38),this.transclude=!0,this.bindings={btnClass:"@?",selected:"@",inputName:"@"}}return t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(73);e.default=function(t){t.component("miqFonticonPicker",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(74),o=n(72);e.default=function(t){i.default(t),o.default(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),o=function(){function t(){}return t.prototype.fetch=function(e){return i.reduce(e,function(e,n){return e[n.selector]=t.filterRules(n.selector),e},{})},t.filterRules=function(e){return i.chain(document.styleSheets).map(function(t){return t.rules}).map(function(n){return i.filter(n,function(n){return t.isFontIcon(n,e)})}).filter(function(t){return 0!==t.length}).map(function(e){return i.map(e,function(e){return t.clearRule(e.selectorText)})}).flatten().reduce(function(n,i){return n.concat([t.makeRuleObject(e,i)])},[]).value()},t.isFontIcon=function(t,e){return t.selectorText&&1===t.selectorText.indexOf(e)&&-1!==t.cssText.indexOf("content:")},t.clearRule=function(t){return t.replace("::before","").split(",")[0].replace(".","")},t.makeRuleObject=function(t,e){return{class:t+" "+e,selector:"."+t+"."+e}},t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(76);e.default=function(t){t.service("MiQFonticonService",i.default)}},function(t,e,n){"use strict";var i=this&&this.__extends||function(){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])};return function(e,n){function i(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}();Object.defineProperty(e,"__esModule",{value:!0});var o=n(5),a=n(0),l=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return i(e,t),e.prototype.setTablePage=function(t){t=Number(t),a.isNaN(t)?(this.currentPageView=this.settings.current,t=this.currentPageView):(t<=0&&(this.currentPageView=1,t=1),this.setPage(t))},e.prototype.getColumnClass=function(t){return{narrow:t.is_narrow,"table-view-pf-select":t.is_narrow}},e.prototype.isIconOrImage=function(t,e){return t&&t.cells&&(t.cells[e].hasOwnProperty("icon")||t.cells[e].hasOwnProperty("image"))},e.prototype.isFilteredBy=function(t){return!!this.settings.sortBy&&this.settings.sortBy.sortObject.col_idx===t.col_idx},e.prototype.getSortClass=function(){return{"fa-sort-asc":!!this.settings.sortBy&&this.settings.sortBy.isAscending,"fa-sort-desc":!(this.settings.sortBy&&this.settings.sortBy.isAscending)}},e.prototype.$onChanges=function(t){var e=this;t.settings&&this.settings&&(this.currentPageView=this.settings.current),t.perPage&&(this.perPage.text+=" "+this.perPage.labelItems,this.perPage.items=this.perPage.items.map(function(t){return t.text+=" "+e.perPage.labelItems,t})),this.setPagingNumbers()},e}(o.DataViewClass);e.DataTableController=l;var s=function(){function t(){this.replace=!0,this.template=n(39),this.controller=l,this.transclude=!0,this.controllerAs="tableCtrl",this.bindings={rows:"<",columns:"<",perPage:"<",settings:"<",loadMoreItems:"&",onSort:"&",onRowClick:"&",onItemSelected:"&"}}return t}();e.default=s},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(78);e.default=function(t){t.component("miqDataTable",new i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(79),o=n(81);e.default=function(t){i.default(t),o.default(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(83),o=n(82);e.default=function(t){t.component("miqTileView",new i.default),t.component("miqPaging",new o.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),o=function(){function t(){this.MAX_PAGES=6}return t.prototype.updatePages=function(t){var e=this;if(t>this.MAX_PAGES){var n=this.settings.currente+n+3?t.slice(0,e)+"..."+t.slice(-n):t}},t}();e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TileType={SMALL:"small",BIG:"big"}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(0),o=function(){function t(t,e){this.$http=t,this.MiQEndpointsService=e}return t.$inject=["$http","MiQEndpointsService"],t.prototype.retrieveRowsAndColumnsFromUrl=function(e,n,i,o,a,l){var s=this;return this.fetchData(t.generateConfig(e,n,i,o,a,l)).then(function(t){return s.columns=t.data.data.head,s.rows=t.data.data.rows,s.settings=t.data.settings,{cols:s.columns,rows:s.rows,messages:t.data.messages,settings:t.data.settings}})},t.prototype.fetchData=function(t){return this.$http.get(this.MiQEndpointsService.rootPoint+this.MiQEndpointsService.endpoints.listDataTable,t)},t.generateConfig=function(e,n,o,a,l,s){var r={params:{}};return i.assign(r.params,t.generateModelConfig(e)),i.assign(r.params,t.generateActiveTreeConfig(n)),i.assign(r.params,t.generateModuleIdConfig(o)),i.assign(r.params,t.generateExplorerConfig(a)),i.assign(r.params,t.generateParamsFromSettings(l)),i.assign(r.params,t.generateRecords(s)),r},t.generateModelConfig=function(t){return t&&{model:t}},t.generateActiveTreeConfig=function(t){return t&&{active_tree:t}},t.generateModuleIdConfig=function(t){return t&&null!==t&&{model_id:t}},t.generateExplorerConfig=function(t){return t&&null!==t&&{explorer:t}},t.generateParamsFromSettings=function(t){var e={};return t&&(i.assign(e,t.current&&{page:t.current}),i.assign(e,t.perpage&&{ppsetting:t.perpage}),i.assign(e,t.sortBy&&t.sortBy.sortObject&&{sort_choice:t.sortBy.sortObject.text}),i.assign(e,t.sortBy&&t.sortBy.isAscending&&{is_ascending:t.sortBy.isAscending})),e},t.generateRecords=function(t){return t&&null!==t&&{"records[]":t}},t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(87);e.default=function(t){t.service("MiQDataTableService",i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){}return t}();e.SiteSwitcherController=i;var o=function(){function t(){this.controller=i,this.template=n(42),this.controllerAs="ctrl",this.bindings={sites:"<"}}return t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(91);e.default=function(t){i.default(t)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(93),o=n(92),a=n(94),l=n(95);e.default=function(t){t.component("miqToolbarMenu",new i.default),t.component("miqToolbarList",new a.default),t.component("miqToolbarView",new l.default),t.directive("miqToolbarButton",o.default.Factory())}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.replace=!0,this.template=n(43),this.scope={toolbarButton:"<",onItemClick:"&"}}return t}();i.Factory=function(){var t=function(){return new i};return t.$inject=[],t},e.default=i},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(6),o=function(){function t(t,e,n){this.$window=t,this.$location=e,this.$sce=n}return t.$inject=["$window","$location","$sce"],t.prototype.onItemClick=function(t,e){t.hasOwnProperty("actionUrl")?this.$location.path(t.actionUrl):t.hasOwnProperty("redirectUrl")?this.$window.location.replace(t.redirectUrl):t.hasOwnProperty("actionFunction")?t.actionFunction():t.hasOwnProperty("eventFunction")&&t.eventFunction(e)},t.prototype.hasContent=function(e){return e&&0!==e.filter(function(e){return e&&(t.isButtonOrSelect(e)||t.isCustom(e))}).length},t.prototype.trustAsHtml=function(e){return e=t.htmlDecode(e),this.$sce.trustAsHtml(e)},t.prototype.getToolbarListType=function(){return i.ToolbarType.BUTTON_SELECT},t.prototype.getButtonType=function(){return i.ToolbarType.BUTTON},t.prototype.getCustomType=function(){return i.ToolbarType.CUSTOM},t.prototype.getButtonTwoState=function(){return i.ToolbarType.BUTTON_TWO_STATE},t.htmlDecode=function(t){var e=document.createElement("div");return e.innerHTML=t,0===e.childNodes.length?"":e.childNodes[0].nodeValue},t.isCustom=function(t){return t.name&&t.name===i.ToolbarType.CUSTOM},t.isButtonOrSelect=function(e){return e.type&&(t.isButtonSelect(e)&&e.items&&0!==e.items.length||t.isButton(e)||t.isButtonTwoState(e))},t.isButtonTwoState=function(t){return t.type===i.ToolbarType.BUTTON_TWO_STATE},t.isButtonSelect=function(t){return t.type===i.ToolbarType.BUTTON_SELECT},t.isButton=function(t){return t.type===i.ToolbarType.BUTTON},t}();e.ToolbarController=o;var a=function(){function t(){this.replace=!0,this.template=n(45),this.controller=o,this.controllerAs="vm",this.bindings={toolbarViews:"<",toolbarItems:"<",onViewClick:"&"}}return t}();e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){this.isEmpty=!1}return t.prototype.$onChanges=function(t){t.toolbarList&&(this.isEmpty=this.isToolbarEmpty())},t.prototype.isToolbarEmpty=function(){return this.toolbarList&&this.toolbarList.items&&this.toolbarList.items.filter(function(t){return!t.hidden}).length>0},t}();e.ToolbarListController=i;var o=function(){function t(){this.replace=!0,this.template=n(44),this.controller=i,this.controllerAs="vm",this.bindings={toolbarList:"<",onItemClick:"&",dropDownClass:"<"}}return t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function t(){}return t}();e.ToolbarViewController=i;var o=function(){function t(){this.replace=!1,this.template=n(46),this.controller=i,this.controllerAs="vm",this.bindings={toolbarViews:"<",onItemClick:"&"}}return t}();e.default=o},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(97);e.default=function(t){t.service("MiQToolbarSettingsService",i.default)}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var i=n(6),o=n(0),a=function(){function t(t,e){this.$http=t,this.MiQEndpointsService=e,this.countSelected=0}return t.$inject=["$http","MiQEndpointsService"],t.prototype.checkboxClicked=function(t){t?this.countSelected++:this.countSelected--,this.updateByCount()},t.prototype.setCount=function(t){this.countSelected=t,this.updateByCount()},t.prototype.updateByCount=function(){var t=this;o.chain(this.items).flatten().filter(function(t){return t}).each(function(e){t.enableToolbarItemByCountSelected(e)}).map("items").flatten().filter(function(t){return t}).each(function(e){t.enableToolbarItemByCountSelected(e)}).value()},t.prototype.generateToolbarObject=function(t){return this.countSelected=0,this.items=this.separateItems(t.filter(function(t){return!!t})),this.dataViews=this.filterViews(),{items:this.items,dataViews:this.dataViews}},t.prototype.getSettings=function(t){var e=this;return this.httpGet(this.MiQEndpointsService.rootPoint+this.MiQEndpointsService.endpoints.toolbarSettings,t).then(function(t){return e.generateToolbarObject(t)})},t.prototype.separateItems=function(t){var e=[];return t.forEach(function(t){var n=e.push([]);t.forEach(function(t){t.type!==i.ToolbarType.SEPARATOR?e[n-1].push(t):n=e.push([])})}),e},t.prototype.filterViews=function(){return o.flatten(this.items).filter(function(t){return t&&t.id&&0===t.id.indexOf("view_")})},t.prototype.httpGet=function(t,e){return this.$http.get(t,{params:e}).then(function(t){return t.data})},t.prototype.enableToolbarItemByCountSelected=function(e){e.onwhen&&("+"===e.onwhen.slice(-1)?e.enabled=this.countSelected>=t.parseNumberFromWhen(e.onwhen):e.enabled=this.countSelected===parseInt(e.onwhen,10))},t.parseNumberFromWhen=function(t){return-1!==t.indexOf("+")?parseInt(t.slice(0,t.length-1),10):parseInt(t,10)},t}();e.default=a},function(t,e,n){function i(t){return n(o(t))}function o(t){var e=a[t];if(!(e+1))throw new Error("Cannot find module '"+t+"'.");return e}var a={"./check-box.html":27,"./date-time-control.html":28,"./dynamic.html":29,"./index":2,"./index.ts":2,"./modalFieldTemplateComponent":3,"./modalFieldTemplateComponent.ts":3,"./radio-button-drop-down-list.html":30,"./tag-control.html":31,"./text-area-box.html":32,"./text-box.html":33};i.keys=function(){return Object.keys(a)},i.resolve=o,t.exports=i,i.id=98},,function(t,e,n){n(8),n(14),n(16),n(10),n(11),n(13),n(15),t.exports=n(12)}]); -//# sourceMappingURL=ui-components.js.map \ No newline at end of file diff --git a/dist/js/ui-components.js.map b/dist/js/ui-components.js.map deleted file mode 100644 index 8df24c612e..0000000000 --- a/dist/js/ui-components.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///js/ui-components.js","webpack:///webpack/bootstrap 6cb44a724215cb0ab30e","webpack:///external \"_\"","webpack:///external \"angular\"","webpack:///./src/dialog-editor/components/modal-field-template/index.ts","webpack:///./src/dialog-editor/components/modal-field-template/modalFieldTemplateComponent.ts","webpack:///./src/gtl/interfaces/abstractDataViewClass.ts","webpack:///./src/styles/ui-components.scss","webpack:///./src/common/index.ts","webpack:///./src/dialog-editor/index.ts","webpack:///./src/fonticon-picker/index.ts","webpack:///./src/gtl/index.ts","webpack:///./src/index.ts","webpack:///./src/site-switcher/index.ts","webpack:///./src/toolbar/index.ts","webpack:///./src/dialog-editor/components/box/box.html","webpack:///./src/dialog-editor/components/field/field.html","webpack:///./src/dialog-editor/components/modal-field-template/check-box.html","webpack:///./src/dialog-editor/components/modal-field-template/date-time-control.html","webpack:///./src/dialog-editor/components/modal-field-template/dynamic.html","webpack:///./src/dialog-editor/components/modal-field-template/radio-button-drop-down-list.html","webpack:///./src/dialog-editor/components/modal-field-template/tag-control.html","webpack:///./src/dialog-editor/components/modal-field-template/text-area-box.html","webpack:///./src/dialog-editor/components/modal-field-template/text-box.html","webpack:///./src/dialog-editor/components/tab-list/tab-list.html","webpack:///./src/dialog-editor/components/toolbox/toolbox.html","webpack:///./src/dialog-editor/services/modal/modal.html","webpack:///./src/fonticon-picker/components/fonticon-picker/fonticon-modal.html","webpack:///./src/fonticon-picker/components/fonticon-picker/fonticon-picker.html","webpack:///./src/gtl/components/data-table/data-table.html","webpack:///./src/gtl/components/tile-view/paging.html","webpack:///./src/gtl/components/tile-view/tile-view.html","webpack:///./src/site-switcher/site-switcher.html","webpack:///./src/toolbar/components/toolbar-menu/toolbar-button.html","webpack:///./src/toolbar/components/toolbar-menu/toolbar-list.html","webpack:///./src/toolbar/components/toolbar-menu/toolbar-menu.html","webpack:///./src/toolbar/components/toolbar-menu/toolbar-view.html","webpack:///./src/common/components/index.ts","webpack:///./src/common/components/sortItemsComponent.ts","webpack:///./src/common/services/endpointsService.ts","webpack:///./src/common/services/index.ts","webpack:///./src/common/services/translateService.ts","webpack:///./src/dialog-editor/components/box/boxComponent.ts","webpack:///./src/dialog-editor/components/box/index.ts","webpack:///./src/dialog-editor/components/field/fieldComponent.ts","webpack:///./src/dialog-editor/components/field/index.ts","webpack:///./src/dialog-editor/components/index.ts","webpack:///./src/dialog-editor/components/tab-list/index.ts","webpack:///./src/dialog-editor/components/tab-list/tabListComponent.ts","webpack:///./src/dialog-editor/components/toolbox/index.ts","webpack:///./src/dialog-editor/components/toolbox/toolboxComponent.ts","webpack:///./src/dialog-editor/services/dialogEditorService.ts","webpack:///./src/dialog-editor/services/index.ts","webpack:///./src/dialog-editor/services/modal/modalService.ts","webpack:///./src/fonticon-picker/components/fonticon-family/fonticonFamilyComponent.ts","webpack:///./src/fonticon-picker/components/fonticon-picker/fonticonPickerComponent.ts","webpack:///./src/fonticon-picker/components/fonticon-picker/index.ts","webpack:///./src/fonticon-picker/components/index.ts","webpack:///./src/fonticon-picker/services/fonticonService.ts","webpack:///./src/fonticon-picker/services/index.ts","webpack:///./src/gtl/components/data-table/dataTableComponent.ts","webpack:///./src/gtl/components/data-table/index.ts","webpack:///./src/gtl/components/index.ts","webpack:///./src/gtl/components/tile-view/index.ts","webpack:///./src/gtl/components/tile-view/pagingComponent.ts","webpack:///./src/gtl/components/tile-view/tileViewComponent.ts","webpack:///./src/gtl/filters/index.ts","webpack:///./src/gtl/filters/limitToSuffixFilter.ts","webpack:///./src/gtl/interfaces/tileType.ts","webpack:///./src/gtl/services/dataTableService.ts","webpack:///./src/gtl/services/index.ts","webpack:///./src/site-switcher/siteSwitcherComponent.ts","webpack:///./src/toolbar/components/index.ts","webpack:///./src/toolbar/components/toolbar-menu/index.ts","webpack:///./src/toolbar/components/toolbar-menu/toolbarButtonDirective.ts","webpack:///./src/toolbar/components/toolbar-menu/toolbarComponent.ts","webpack:///./src/toolbar/components/toolbar-menu/toolbarListComponent.ts","webpack:///./src/toolbar/components/toolbar-menu/toolbarViewComponent.ts","webpack:///./src/toolbar/services/index.ts","webpack:///./src/toolbar/services/toolbarSettingsService.ts","webpack:///./src/dialog-editor/components/modal-field-template ^\\.\\/.*$"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","_","angular","modalFieldTemplateComponent_1","default","component","ModalFieldTemplate","ModalFieldController","this","template","$element","$attrs","$inject","scope","controllerAs","bindings","modalData","categories","addEntry","removeEntry","currentCategoryEntries","resolveCategories","DataViewClass","MiQTranslateService","currentPageView","onCheckAll","isChecked","_this","each","rows","oneRow","onItemSelected","item","isSelected","onSortClick","sortId","isAscending","onSort","headerId","perPageClick","maxPage","Math","ceil","settings","items","start","calculateStartIndex","loadMoreItems","perPage","setPage","pageNumber","total","perpage","translateOf","end","translateTotalOf","onItemButtonClick","Function","onclick","setPagingNumbers","startIndex","current","endIndex","ToolbarType","BUTTON","BUTTON_TWO_STATE","BUTTON_SELECT","CUSTOM","SEPARATOR","common","services_1","components_1","app","config","$windowProvider","windowService","$get","__","translateString","dialogEditor","fonticonPicker","gtl","filters_1","miqStaticAssets","siteSwitcher","siteSwitcherComponent_1","toolbar","sortItemsComponent_1","SortItemsController","$timeout","initOptions","$onChanges","changesObj","headers","fillFields","sortObject","setSortItem","dropDownClass","applyClass","$postLink","text","options","currentField","colId","findIndex","id","toLowerCase","title","fields","onSortChange","oneCol","key","push","Array","isArray","_a","find","addClass","apply","SortItems","replace","controller","DefaultEndpoints","listDataTable","deleteItemDataTable","validateItem","createItem","providerSettings","toolbarSettings","EndpointsService","rootPoint","endpoints","endpointsService_1","translateService_1","service","TranslateService","$window","stringToTranslate","ng","BoxController","DialogEditor","DialogEditorModal","$onInit","dialogTabs","getDialogTabs","sortableOptionsBox","axis","cancel","cursor","opacity","revert","stop","e","ui","sortedBox","$parent","tab","dialog_groups","updatePositions","sortableOptionsFields","sortedField","box","dialog_fields","addBox","activeTab","description","label","display","position","removeBox","remove","droppableOptions","droppedItem","element","target","editDialogModal","showModal","Box","boxComponent_1","FieldController","field","Field","fieldData","boxPosition","fieldComponent_1","tab_list_1","box_1","field_1","toolbox_1","modal_field_template_1","tabListComponent_1","TabListController","tabList","length","active","sortableOptions","helper","sortedTab","vm","addTab","forEach","nextIndex","removeTab","activeTabData","isDefined","selectTab","TabList","toolboxComponent_1","DialogField","type","icon","placeholders","assign","display_method_options","read_only","required","required_method_options","default_value","values_method_options","dynamic","show_refresh_button","load_values_on_init","auto_refresh","trigger_auto_refresh","reconfigurable","visible","protected","resource_action","resource_type","ae_attributes","ToolboxController","dialogFieldTextBox","dialogFieldTextAreaBox","dialogFieldCheckBox","dialogFieldDropDownList","data_type","values","sort_by","sort_order","dialogFieldRadioButton","dialogFieldDateControl","dialogFieldDateTimeControl","dialogFieldTagControl","force_single_value","Toolbox","DialogEditorService","data","setData","getDialogId","content","getDialogLabel","getDialogDescription","dialog_tabs","elements","dialogEditorService_1","modalService_1","ModalController","dialogDetails","$uibModalInstance","API","modalTab","extend","dialog","saveDialogFieldDetails","deleteField","modalUnchanged","modalTabSet","modalTabIsSet","isUndefined","fieldId","boxId","tabId","cloneDeep","then","isMatch","close","entry","pull","resources","Number","category_id","ModalService","$uibModal","modalOptions","size","resolve","open","result","catch","FonticonFamilyController","FonticonPickerCtrl","addFamily","selector","FonticonPicker","require","fonticonFamilyComponent_1","FonticonPickerController","MiQFonticonService","families","btnClass","font","openModal","undefined","fonticons","fetch","toSelect","selected","modal","windowClass","keyboard","parent","closeModal","save","markToSelect","transclude","inputName","fonticonPickerComponent_1","fonticon_picker_1","fonticon_family_1","FonticonService","reduce","filterRules","family","chain","document","styleSheets","map","oneSheet","rules","rule","filter","isFontIcon","clearRule","selectorText","flatten","concat","makeRuleObject","indexOf","cssText","split","class","fonticonService_1","__extends","extendStatics","setPrototypeOf","__proto__","b","constructor","create","abstractDataViewClass_1","DataTableController","_super","arguments","setTablePage","isNaN","getColumnClass","column","narrow","is_narrow","table-view-pf-select","isIconOrImage","row","columnKey","cells","isFilteredBy","sortBy","col_idx","getSortClass","fa-sort-asc","fa-sort-desc","labelItems","oneItem","DataTable","columns","onRowClick","dataTableComponent_1","data_table_1","tile_view_1","tileViewComponent_1","pagingComponent_1","PagingController","MAX_PAGES","updatePages","currentPage_1","pages","times","Paging","onChangePage","tileType_1","TileViewController","$sce","selectionMatchProp","selectItems","multiSelect","showSelectBox","selectedItems","filterSelected","onClick","event","onTileClick","onCheckBoxChange","onTileSelect","onItemClick","$event","onButtonItemClick","fetchTileName","trustAsHtmlQuadicon","trustAsHtml","quadicon","nameIndex","oneColumn","hideSelect","onCheckAllTiles","checked","tileClass","miq-small-tile","TileType","SMALL","miq-tile-with-body","BIG","TileView","limitToSuffixFilter_1","LimitToSuffix","slice","DataTableService","$http","MiQEndpointsService","retrieveRowsAndColumnsFromUrl","modelName","activeTree","currId","isExplorer","records","fetchData","generateConfig","responseData","head","cols","messages","params","generateModelConfig","generateActiveTreeConfig","generateModuleIdConfig","generateExplorerConfig","generateParamsFromSettings","generateRecords","model","active_tree","model_id","explorer","page","ppsetting","sort_choice","is_ascending","records[]","dataTableService_1","SiteSwitcherController","SiteSwitcher","sites","toolbar_menu_1","toolbarComponent_1","toolbarButtonDirective_1","toolbarListComponent_1","toolbarViewComponent_1","directive","Factory","ToolbarButton","toolbarButton","toolbarType_1","ToolbarController","$location","path","actionUrl","location","redirectUrl","actionFunction","eventFunction","hasContent","toolbarItem","isButtonOrSelect","isCustom","escapedString","htmlDecode","getToolbarListType","getButtonType","getCustomType","getButtonTwoState","input","createElement","innerHTML","childNodes","nodeValue","isButtonSelect","isButton","isButtonTwoState","Toolbar","toolbarViews","toolbarItems","onViewClick","ToolbarListController","isEmpty","toolbarList","isToolbarEmpty","hidden","ToolbarList","ToolbarViewController","ToolbarView","toolbarSettingsService_1","ToolbarSettingsService","countSelected","checkboxClicked","isClicked","updateByCount","setCount","count","enableToolbarItemByCountSelected","generateToolbarObject","toolbarObject","separateItems","dataViews","filterViews","getSettings","getData","httpGet","separatedArray","arrayIndex","url","dataObject","dataResponse","onwhen","enabled","parseNumberFromWhen","parseInt","onWhen","webpackContext","req","webpackContextResolve","Error","./check-box.html","./date-time-control.html","./dynamic.html","./index","./index.ts","./modalFieldTemplateComponent","./modalFieldTemplateComponent.ts","./radio-button-drop-down-list.html","./tag-control.html","./text-area-box.html","./text-box.html","keys"],"mappings":"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","file":"js/ui-components.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \".\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 100);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = _;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = angular;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar modalFieldTemplateComponent_1 = __webpack_require__(3);\nexports.default = function (module) {\n module.component('dialogEditorModalFieldTemplate', new modalFieldTemplateComponent_1.default);\n};\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Controller for the Dialog Editor Modal Field Template component\n * @ngdoc controller\n * @name ModalFieldController\n */\nvar ModalFieldController = (function () {\n function ModalFieldController() {\n }\n return ModalFieldController;\n}());\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorModalFieldTemplate\n * @description\n * Component contains templates for the modal for each field type\n * @example\n * \n * \n */\nvar ModalFieldTemplate = (function () {\n function ModalFieldTemplate() {\n /*@ngInject*/\n this.template = function ($element, $attrs) { return __webpack_require__(98)(\"./\" + $attrs.template); };\n this.template.$inject = [\"$element\", \"$attrs\"];\n this.scope = true;\n this.controllerAs = 'vm';\n this.bindings = {\n modalData: '=',\n categories: '=?',\n addEntry: '&?',\n removeEntry: '&?',\n currentCategoryEntries: '&?',\n resolveCategories: '&?',\n };\n }\n return ModalFieldTemplate;\n}());\nexports.default = ModalFieldTemplate;\n\n\n/***/ }),\n/* 4 */,\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _ = __webpack_require__(0);\n/**\n * This is abstract controller for implementing shared methods between data table and tile views.\n * @memberof miqStaticAssets.gtl\n * @ngdoc controller\n * @name DataViewClass\n */\nvar DataViewClass = (function () {\n /*@ngInject*/\n DataViewClass.$inject = [\"MiQTranslateService\"];\n function DataViewClass(MiQTranslateService) {\n this.MiQTranslateService = MiQTranslateService;\n this.currentPageView = 1;\n }\n /**\n * Public method which will perform checking all entities.\n * @memberof DataViewClass\n * @function onCheckAll\n * @param isChecked true | false based on checked value.\n */\n DataViewClass.prototype.onCheckAll = function (isChecked) {\n var _this = this;\n _.each(this.rows, function (oneRow) {\n _this.onItemSelected({ item: oneRow, isSelected: isChecked });\n });\n };\n /**\n * Helper method which will pass sortId and isAscending to parent controller.\n * @memberof DataViewClass\n * @function onSortClick\n * @param sortId id of sorted header column.\n * @param isAscending true | false based on ascending order.\n */\n DataViewClass.prototype.onSortClick = function (sortId, isAscending) {\n this.onSort({ headerId: sortId, isAscending: isAscending });\n };\n /**\n * Helper method for calculating loading more items after selecting how many items per page should be visible.\n * @memberof DataViewClass\n * @function perPageClick\n * @param item {Object} enhanced IToolbarItem with value.\n */\n DataViewClass.prototype.perPageClick = function (item) {\n var maxPage = Math.ceil(this.settings.items / item.value);\n this.currentPageView = this.currentPageView > maxPage ? maxPage : this.currentPageView;\n var start = DataViewClass.calculateStartIndex(this.currentPageView, item.value);\n this.loadMoreItems({ start: start, perPage: item.value });\n };\n /**\n * Helper method for calculating what page should be visible, it works with perPage and total amount of values.\n * @memberof DataViewClass\n * @function setPage\n * @param pageNumber {number} number of desired page, if this page is out of bound, it will be rounded.\n */\n DataViewClass.prototype.setPage = function (pageNumber) {\n if (pageNumber > this.settings.total) {\n this.currentPageView = this.settings.total;\n pageNumber = this.currentPageView;\n }\n this.currentPageView = pageNumber;\n var start = DataViewClass.calculateStartIndex(pageNumber, this.settings.perpage);\n this.loadMoreItems({ start: start, perPage: this.settings.perpage });\n };\n DataViewClass.prototype.translateOf = function (start, end, total) {\n return this.settings && this.settings.hasOwnProperty('translateTotalof') ?\n this.settings.translateTotalOf(start, end, total) :\n start + \" - \" + end + \" of \" + total;\n };\n DataViewClass.prototype.onItemButtonClick = function (item) {\n if (item.hasOwnProperty('onclick')) {\n new Function(item.onclick)();\n }\n };\n DataViewClass.prototype.setPagingNumbers = function () {\n if (this.settings.hasOwnProperty('current') && this.settings.hasOwnProperty('perpage')) {\n this.settings.startIndex =\n this.settings.startIndex ||\n DataViewClass.calculateStartIndex(this.settings.current, this.settings.perpage);\n if (this.settings.current === this.settings.total) {\n this.settings.endIndex = this.settings.items - 1;\n }\n else {\n this.settings.endIndex = this.settings.current * this.settings.perpage - 1;\n }\n }\n };\n /**\n * Helper static method for calculating start index based on pageNumber and number of visible items.\n * @memberof DataViewClass\n * @function calculateStartIndex\n * @param pageNumber {number} current page number.\n * @param perPage {number} how many of items are visible per page.\n * @returns {number} start index for limit filter.\n */\n DataViewClass.calculateStartIndex = function (pageNumber, perPage) {\n return (pageNumber - 1) * perPage;\n };\n return DataViewClass;\n}());\nexports.DataViewClass = DataViewClass;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Enum for toolbar types. It holds string value of item's type.\n * @memberof miqStaticAssets\n * @ngdoc enum\n * @name ToolbarType\n */\nexports.ToolbarType = {\n /**\n * Button type: `button`\n * @type {string}\n */\n BUTTON: 'button',\n /**\n * Button two state type: `buttonTwoState`\n * @type {string}\n */\n BUTTON_TWO_STATE: 'buttonTwoState',\n /**\n * Button select type: `buttonSelect`\n * @type {string}\n */\n BUTTON_SELECT: 'buttonSelect',\n /**\n * Custom type: `custom`\n * @type {string}\n */\n CUSTOM: 'custom',\n /**\n * Separator type: `separator`\n * @type {string}\n */\n SEPARATOR: 'separator'\n};\n\n\n/***/ }),\n/* 7 */,\n/* 8 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 9 */,\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar services_1 = __webpack_require__(57);\nvar components_1 = __webpack_require__(54);\nvar angular = __webpack_require__(1);\nvar common;\n(function (common) {\n common.app = angular.module('miqStaticAssets.common', []);\n /*@ngInject*/\n common.app.config([\"$windowProvider\", function ($windowProvider) {\n var windowService = $windowProvider.$get();\n if (!windowService.hasOwnProperty('__')) {\n windowService.__ = function (translateString) { return translateString; };\n }\n }]);\n services_1.default(common.app);\n components_1.default(common.app);\n})(common || (common = {}));\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar services_1 = __webpack_require__(69);\nvar components_1 = __webpack_require__(63);\nvar angular = __webpack_require__(1);\nvar dialogEditor;\n(function (dialogEditor) {\n dialogEditor.app = angular.module('miqStaticAssets.dialogEditor', [\n 'ui.sortable',\n 'ngDragDrop',\n 'frapontillo.bootstrap-switch'\n ]);\n services_1.default(dialogEditor.app);\n components_1.default(dialogEditor.app);\n})(dialogEditor || (dialogEditor = {}));\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar components_1 = __webpack_require__(75);\nvar services_1 = __webpack_require__(77);\nvar angular = __webpack_require__(1);\nvar fonticonPicker;\n(function (fonticonPicker) {\n fonticonPicker.app = angular.module('miqStaticAssets.fonticonPicker', ['ui.bootstrap']);\n services_1.default(fonticonPicker.app);\n components_1.default(fonticonPicker.app);\n})(fonticonPicker || (fonticonPicker = {}));\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar services_1 = __webpack_require__(88);\nvar filters_1 = __webpack_require__(84);\nvar components_1 = __webpack_require__(80);\nvar angular = __webpack_require__(1);\nvar gtl;\n(function (gtl) {\n gtl.app = angular.module('miqStaticAssets.gtl', []);\n services_1.default(gtl.app);\n filters_1.default(gtl.app);\n components_1.default(gtl.app);\n})(gtl || (gtl = {}));\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar angular = __webpack_require__(1);\nvar miqStaticAssets;\n(function (miqStaticAssets) {\n angular.module('miqStaticAssets', [\n 'miqStaticAssets.toolbar',\n 'miqStaticAssets.common',\n 'miqStaticAssets.dialogEditor',\n 'miqStaticAssets.gtl',\n 'miqStaticAssets.siteSwitcher',\n 'miqStaticAssets.fonticonPicker'\n ]);\n})(miqStaticAssets || (miqStaticAssets = {}));\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar siteSwitcherComponent_1 = __webpack_require__(89);\nvar angular = __webpack_require__(1);\nvar siteSwitcher;\n(function (siteSwitcher) {\n siteSwitcher.app = angular.module('miqStaticAssets.siteSwitcher', []);\n siteSwitcher.app.component('miqSiteSwitcher', new siteSwitcherComponent_1.default);\n})(siteSwitcher || (siteSwitcher = {}));\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar services_1 = __webpack_require__(96);\nvar components_1 = __webpack_require__(90);\nvar angular = __webpack_require__(1);\nvar toolbar;\n(function (toolbar) {\n toolbar.app = angular.module('miqStaticAssets.toolbar', ['ngSanitize']);\n services_1.default(toolbar.app);\n components_1.default(toolbar.app);\n})(toolbar || (toolbar = {}));\n\n\n/***/ }),\n/* 17 */,\n/* 18 */,\n/* 19 */,\n/* 20 */,\n/* 21 */,\n/* 22 */,\n/* 23 */,\n/* 24 */,\n/* 25 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n
\\n \\n
\\n
\\n
\\n \\n {{ box.label }}\\n \\n
\\n
\\n
\\n
\\n \\n {{ 'Drag your components here' | translate }}\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n

Start with adding a box

\\n
\\n \\n
\\n
\\n\"\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n \\n
\\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n\\n
\\n
\\n \\n
\\n
\\n\"\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n
\\n\"\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n\"\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n\"\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n
\\n
\\n
\\n

\\n {{dialogField.label}}\\n

\\n
\\n

\\n \\n \\n \\n

\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n \\n

Edit Dialog field

\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n
\\n\"\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n

Select an icon

\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n\"\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n \\n \\n
\\n
\\n\\n\"\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\\n \\n {{column.text}}\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\\"{{row.cells[columnKey].title}}\\\"\\n\\n \\n {{row.cells[columnKey].text}}\\n \\n \\n
\\n
\\n\"\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n\"\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n {{config.fetchTileName(item)}}\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
{{header.text}}:
\\n
{{item.cells[key].text | limitToSuffix : 25 : 25}}
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n \\n \\n
\\n\"\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"\\n\"\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n \\n \\n
\\n\"\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n
\\n \\n \\n \\n \\n \\n 0\\\"\\n toolbar-list=\\\"item\\\"\\n on-item-click=\\\"vm.onItemClick(item, $event)\\\">\\n \\n
\\n
\\n
\\n \\n \\n
\\n\"\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports) {\n\nmodule.exports = \"
\\n \\n
\\n\"\n\n/***/ }),\n/* 47 */,\n/* 48 */,\n/* 49 */,\n/* 50 */,\n/* 51 */,\n/* 52 */,\n/* 53 */,\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar sortItemsComponent_1 = __webpack_require__(55);\nexports.default = function (module) {\n module.component('miqSortItems', new sortItemsComponent_1.default);\n};\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _ = __webpack_require__(0);\n/**\n * Controller for sort items component, it filters headers to fit config object of `pf-sort`.\n * @memberof miqStaticAssets.common\n * @ngdoc controller\n * @name SortItemsController\n */\nvar SortItemsController = (function () {\n /* @ngInject */\n SortItemsController.$inject = [\"$element\", \"$timeout\"];\n function SortItemsController($element, $timeout) {\n this.$element = $element;\n this.$timeout = $timeout;\n this.initOptions();\n }\n /**\n * Angular's method for checking one way data bounded properties changes.\n * @memberof SortItemsController\n * @function $onChanges\n * @param changesObj {Object} angular changes object.\n */\n SortItemsController.prototype.$onChanges = function (changesObj) {\n if (changesObj.headers) {\n this.fillFields();\n if (this.sortObject) {\n this.setSortItem();\n }\n }\n if (changesObj.dropDownClass) {\n this.applyClass();\n }\n };\n SortItemsController.prototype.$postLink = function () {\n var _this = this;\n //we have to wait for rendering of components, hence $timeout\n this.$timeout(function () { return _this.applyClass(); });\n };\n /**\n * Public method for setting item which is currently sorted by. It will take id of object in `headers` as `colId`,\n * it's text as actual Id and same applies to `title`.\n * @memberof SortItemsController\n * @function setSortItem\n */\n SortItemsController.prototype.setSortItem = function () {\n if (this.sortObject && this.sortObject.sortObject && this.sortObject && this.sortObject.sortObject.text) {\n this.options.currentField = {\n colId: _.findIndex(this.headers, this.sortObject.sortObject),\n id: this.sortObject.sortObject.text.toLowerCase(),\n title: this.sortObject.sortObject.text\n };\n this.options.isAscending = this.sortObject.isAscending;\n }\n };\n /**\n * Public method which is called after constructing this controller. It will set default values for config object,\n * along side with sort method.\n * @memberof SortItemsController\n * @function initOptions\n */\n SortItemsController.prototype.initOptions = function () {\n var _this = this;\n this.options = {\n fields: [],\n onSortChange: function (item, isAscending) { return _this.onSort({ sortObject: item, isAscending: isAscending }); },\n currentField: {}\n };\n };\n /**\n * Private method which will filter out and transform headers to config object. This function will filter out all\n * columns which has `is_narrow` and no `text` is set fot them. Also it will use each header key as `colId`,\n * text as `id` and again text as `title`.\n * @memberof SortItemsController\n * @function fillFields\n */\n SortItemsController.prototype.fillFields = function () {\n var _this = this;\n _.each(this.headers, function (oneCol, key) {\n if (!oneCol.hasOwnProperty('is_narrow') && oneCol.hasOwnProperty('text')) {\n _this.options.fields.push({\n colId: key,\n id: oneCol.text.toLowerCase(),\n title: oneCol.text\n });\n }\n });\n };\n /**\n * Method for applying additional class for dropdown.\n * dropDownClass can be either string of classes, or array.\n */\n SortItemsController.prototype.applyClass = function () {\n if (this.dropDownClass) {\n Array.isArray(this.dropDownClass) ? (_a = this.$element.find('.uib-dropdown')).addClass.apply(_a, this.dropDownClass) :\n this.$element.find('.uib-dropdown').addClass(this.dropDownClass);\n }\n var _a;\n };\n return SortItemsController;\n}());\nexports.SortItemsController = SortItemsController;\n/**\n * @description\n * Component for showing sort component. See {@link miqStaticAssets.common.SortItemsController} on how functions\n * and properties are handled, This component requires `pf-sort` (see\n * patternfly's\n * implemetnation) component to be part of application scope.\n * If you do not provide such component no sort will be show. `pf-sort` requires `config` property which consists of:\n * ```javascript\n * config = {\n * fields: [],\n * onSortChange: (item: any, isAscending: boolean) => void,\n * currentField: {}\n * }\n * ```\n * @memberof miqStaticAssets.common\n * @ngdoc component\n * @name miqSortItems\n * @attr {Expression} onSort function which is called after sorting has changed.\n * @attr {Object} headers items which will be present in sort chooser.\n * @attr {Object} sortObject object which is currently sorted by.\n * @example\n * \n * \n */\nvar SortItems = (function () {\n function SortItems() {\n this.replace = true;\n this.template = \"
\";\n this.controller = SortItemsController;\n this.controllerAs = 'vm';\n this.bindings = {\n onSort: '&',\n headers: '<',\n sortObject: '<',\n dropDownClass: '<'\n };\n }\n return SortItems;\n}());\nexports.default = SortItems;\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DefaultEndpoints = (function () {\n function DefaultEndpoints() {\n this.listDataTable = '/list';\n this.deleteItemDataTable = '/delete';\n this.validateItem = '/validate';\n this.createItem = '/create';\n this.providerSettings = '/list_providers_settings';\n this.toolbarSettings = '/toolbar';\n }\n return DefaultEndpoints;\n}());\nexports.DefaultEndpoints = DefaultEndpoints;\nvar EndpointsService = (function () {\n function EndpointsService() {\n this.rootPoint = '';\n this.endpoints = new DefaultEndpoints;\n }\n return EndpointsService;\n}());\nexports.default = EndpointsService;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar endpointsService_1 = __webpack_require__(56);\nvar translateService_1 = __webpack_require__(58);\nexports.default = function (module) {\n module.service('MiQEndpointsService', endpointsService_1.default);\n module.service('MiQTranslateService', translateService_1.default);\n};\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar TranslateService = (function () {\n /*@ngInject*/\n TranslateService.$inject = [\"$window\"];\n function TranslateService($window) {\n this.$window = $window;\n }\n TranslateService.prototype.translateString = function (stringToTranslate) {\n return this.$window.__(stringToTranslate);\n };\n return TranslateService;\n}());\nexports.default = TranslateService;\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ng = __webpack_require__(1);\nvar _ = __webpack_require__(0);\n/**\n * Controller for the Dialog Editor box component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name BoxController\n */\nvar BoxController = (function () {\n /*@ngInject*/\n BoxController.$inject = [\"DialogEditor\", \"DialogEditorModal\"];\n function BoxController(DialogEditor, DialogEditorModal) {\n this.DialogEditor = DialogEditor;\n this.DialogEditorModal = DialogEditorModal;\n }\n /**\n * Load service to be able to access it form the template.\n * Load status of tabs.\n * @memberof BoxController\n * @function $onInit\n */\n BoxController.prototype.$onInit = function () {\n var _this = this;\n this.service = this.DialogEditor;\n this.dialogTabs = this.DialogEditor.getDialogTabs();\n // Rules for Drag&Drop sorting of boxes\n this.sortableOptionsBox = {\n axis: 'y',\n cancel: '.nosort',\n cursor: 'move',\n opacity: 0.5,\n revert: 50,\n stop: function (e, ui) {\n var sortedBox = ui.item.scope().$parent.tab.dialog_groups;\n // update indexes of other boxes after changing their order\n _this.DialogEditor.updatePositions(sortedBox);\n },\n };\n // Rules for Drag&Drop sorting of elements inside of boxes\n this.sortableOptionsFields = {\n axis: 'y',\n cancel: '.nosort',\n cursor: 'move',\n revert: 50,\n stop: function (e, ui) {\n var sortedField = ui.item.scope().$parent.box.dialog_fields;\n // update indexes of other fields after changing their order\n _this.DialogEditor.updatePositions(sortedField);\n },\n };\n };\n /**\n * Add a new box to the list.\n * The new box is automatically appended to the last position of the list\n * @memberof BoxController\n * @function addBox\n */\n BoxController.prototype.addBox = function () {\n this.dialogTabs[this.DialogEditor.activeTab].dialog_groups\n .push({\n description: __('Description'),\n label: __('Label'),\n display: 'edit',\n position: 0,\n dialog_fields: [],\n });\n // update indexes of other boxes after adding a new one\n this.DialogEditor.updatePositions(this.dialogTabs[this.DialogEditor.activeTab].dialog_groups);\n };\n /**\n * Remove box and all its content from the dialog.\n * @memberof BoxController\n * @function removeBox\n * @param {number} id as index of removed box\n */\n BoxController.prototype.removeBox = function (id) {\n _.remove(this.dialogTabs[this.DialogEditor.activeTab].dialog_groups, function (box) { return box.position === id; });\n // update indexes of other boxes after removing\n this.DialogEditor.updatePositions(this.dialogTabs[this.DialogEditor.activeTab].dialog_groups);\n };\n /**\n * Handle Drag&Drop event.\n * @memberof BoxController\n * @function droppableOptions\n * @param {number} event jQuery object\n * @param {number} ui jQuery object\n */\n BoxController.prototype.droppableOptions = function (e, ui) {\n var droppedItem = ng.element(e.target).scope();\n // update indexes of other boxes after changing their order\n this.DialogEditor.updatePositions(droppedItem.box.dialog_fields);\n };\n /**\n * Show modal to edit label and description of the box.\n * @memberof BoxController\n * @function editDialogModal\n * @param {number} tab is an index of tab, where the box is placed\n * @param {number} box is an index of box\n */\n BoxController.prototype.editDialogModal = function (tab, box) {\n this.DialogEditorModal.showModal(tab, box);\n };\n return BoxController;\n}());\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorBoxes\n * @description\n * Component implementing behaviour for the boxes inside of\n * the dialogs tabs.\n * @example\n * \n * \n */\nvar Box = (function () {\n function Box() {\n this.template = __webpack_require__(25);\n this.controller = BoxController;\n this.controllerAs = 'vm';\n }\n return Box;\n}());\nexports.default = Box;\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar boxComponent_1 = __webpack_require__(59);\nexports.default = function (module) {\n module.component('dialogEditorBoxes', new boxComponent_1.default);\n};\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Controller for the Dialog Editor field component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name FieldController\n */\nvar FieldController = (function () {\n /*@ngInject*/\n FieldController.$inject = [\"DialogEditor\", \"DialogEditorModal\"];\n function FieldController(DialogEditor, DialogEditorModal) {\n this.DialogEditor = DialogEditor;\n this.DialogEditorModal = DialogEditorModal;\n }\n /**\n * Load service to be able to access it form the template.\n * @memberof FieldController\n * @function $onInit\n */\n FieldController.prototype.$onInit = function () {\n this.service = this.DialogEditor;\n };\n /**\n * Show modal to edit details of the component\n * @memberof FieldController\n * @function editDialogModal\n * @param {number} tab is an index of tab, where the box is placed\n * @param {number} box is an index of box, where the field is placed\n * @param {number} field is an index of field\n */\n FieldController.prototype.editDialogModal = function (tab, box, field) {\n this.DialogEditorModal.showModal(tab, box, field);\n };\n return FieldController;\n}());\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorField\n * @description\n * Component implementing behaviour for the fields inside of\n * the dialogs boxes.\n * @example\n * \n */\nvar Field = (function () {\n function Field() {\n this.template = __webpack_require__(26);\n this.controller = FieldController;\n this.controllerAs = 'vm';\n this.bindings = {\n fieldData: '<',\n boxPosition: '<',\n };\n }\n return Field;\n}());\nexports.default = Field;\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fieldComponent_1 = __webpack_require__(61);\nexports.default = function (module) {\n module.component('dialogEditorField', new fieldComponent_1.default);\n};\n\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tab_list_1 = __webpack_require__(64);\nvar box_1 = __webpack_require__(60);\nvar field_1 = __webpack_require__(62);\nvar toolbox_1 = __webpack_require__(66);\nvar modal_field_template_1 = __webpack_require__(2);\nexports.default = function (module) {\n tab_list_1.default(module);\n box_1.default(module);\n field_1.default(module);\n toolbox_1.default(module);\n modal_field_template_1.default(module);\n};\n\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tabListComponent_1 = __webpack_require__(65);\nexports.default = function (module) {\n module.component('dialogEditorTabs', new tabListComponent_1.default);\n};\n\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ng = __webpack_require__(1);\nvar _ = __webpack_require__(0);\n/**\n * Controller for the Dialog Editor tab list component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name TabListController\n */\nvar TabListController = (function () {\n /*@ngInject*/\n TabListController.$inject = [\"DialogEditor\", \"DialogEditorModal\"];\n function TabListController(DialogEditor, DialogEditorModal) {\n this.DialogEditor = DialogEditor;\n this.DialogEditorModal = DialogEditorModal;\n }\n /**\n * Activate the first tab in tab list, if there is any.\n * @memberof TabListController\n * @function onInit\n */\n TabListController.prototype.$onInit = function () {\n var _this = this;\n // load tabs data from the service\n this.tabList = this.DialogEditor.getDialogTabs();\n // set active tab\n if (this.tabList.length !== 0) {\n this.DialogEditor.activeTab = 0;\n this.tabList[this.DialogEditor.activeTab].active = true;\n }\n // set options for sorting tabs in list\n this.sortableOptions = {\n cancel: '.nosort',\n cursor: 'move',\n helper: 'clone',\n revert: 50,\n stop: function (e, ui) {\n var sortedTab = ng.element(ui.item).scope().$parent;\n var tabList = sortedTab.vm.tabList;\n _this.DialogEditor.updatePositions(tabList);\n _this.DialogEditor.activeTab = _.find(tabList, { active: true }).position;\n },\n };\n };\n /**\n * Add a new tab to the list.\n * New tab is automatically appended to the last position of the list and\n * set as active.\n * @memberof TabListController\n * @function addTab\n */\n TabListController.prototype.addTab = function () {\n // deactivate currently active tab\n this.tabList.forEach(function (tab) { return tab.active = false; });\n // create a new tab\n var nextIndex = this.tabList.length;\n this.tabList.push({\n description: __('New tab ') + nextIndex,\n display: 'edit',\n label: __('New tab ') + nextIndex,\n position: nextIndex,\n active: true,\n dialog_groups: [],\n });\n this.DialogEditor.activeTab = nextIndex;\n this.DialogEditor.updatePositions(this.tabList);\n };\n /**\n * Delete tab and all its content from the dialog.\n * After removing tab, position attributes needs to be updated.\n * If the tab to delete is active in the moment of the deletion, the\n * activity goes to the other tab.\n * @memberof TabListController\n * @function removeTab\n * @param {number} id is an index of remove tab\n */\n TabListController.prototype.removeTab = function (id) {\n // pass the activity to other tab, if the deleted is active\n if (this.tabList[id].active) {\n if ((this.tabList.length - 1) === this.tabList[id].position &&\n (this.tabList.length - 1) !== 0) {\n // active tab was at the end → new active tab is on previous index\n this.tabList[id - 1].active = true;\n }\n else if ((this.tabList.length - 1) > this.tabList[id].position) {\n // active tab was not at the end → new active tab is on following index\n this.tabList[id + 1].active = true;\n }\n }\n // remove tab with matching id\n _.remove(this.tabList, function (tab) { return tab.position === id; });\n // update indexes of other tabs after removing\n if (this.tabList.length !== 0) {\n this.DialogEditor.updatePositions(this.tabList);\n }\n else {\n return;\n }\n // set activity in the service\n var activeTabData = _.find(this.tabList, { active: true });\n if (ng.isDefined(activeTabData)) {\n this.DialogEditor.activeTab = activeTabData.position;\n }\n };\n /**\n * Assign activity to the selected tab.\n * @memberof TabListController\n * @function selectTab\n * @param {number} id is an index of remove tab\n */\n TabListController.prototype.selectTab = function (id) {\n // deactivate currently active\n var deselectedTab = _.find(this.tabList, { active: true });\n deselectedTab.active = false;\n // activate selected\n var selectedTab = this.tabList[id];\n selectedTab.active = true;\n this.DialogEditor.activeTab = id;\n };\n /**\n * Show modal to edit label and description of the tab\n * @memberof TabListController\n * @function editDialogModal\n * @param {number} tab is an index of tab\n */\n TabListController.prototype.editDialogModal = function (tab) {\n this.DialogEditorModal.showModal(tab);\n };\n return TabListController;\n}());\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorTabs\n * @description\n * Component implementing behaviour for the tabs inside of\n * the dialogs.\n * @example\n * \n * \n */\nvar TabList = (function () {\n function TabList() {\n this.template = __webpack_require__(34);\n this.controller = TabListController;\n this.controllerAs = 'vm';\n }\n return TabList;\n}());\nexports.default = TabList;\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar toolboxComponent_1 = __webpack_require__(67);\nexports.default = function (module) {\n module.component('dialogEditorFieldStatic', new toolboxComponent_1.default);\n};\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DialogField = (function () {\n function DialogField(type, icon, label, options) {\n if (options === void 0) { options = {}; }\n this.icon = icon;\n this.label = label;\n this.placeholders = Object.assign({\n name: '',\n description: '',\n type: type,\n display: 'edit',\n display_method_options: {},\n read_only: false,\n required: false,\n required_method_options: {},\n default_value: '',\n values_method_options: {},\n label: label,\n position: 0,\n dynamic: false,\n show_refresh_button: false,\n load_values_on_init: false,\n auto_refresh: false,\n trigger_auto_refresh: false,\n reconfigurable: false,\n visible: true,\n options: {\n protected: false,\n },\n resource_action: { resource_type: 'DialogField', ae_attributes: {} },\n }, options);\n }\n return DialogField;\n}());\n/**\n * Controller for the Dialog Editor toolbox component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name ToolboxController\n */\nvar ToolboxController = (function () {\n function ToolboxController() {\n this.fields = {\n dialogFieldTextBox: new DialogField('DialogFieldTextBox', 'fa fa-font', __('Text Box')),\n dialogFieldTextAreaBox: new DialogField('DialogFieldTextAreaBox', 'fa fa-file-text-o', __('Text Area')),\n dialogFieldCheckBox: new DialogField('DialogFieldCheckBox', 'fa fa-check-square-o', __('Check Box')),\n dialogFieldDropDownList: new DialogField('DialogFieldDropDownList', 'fa fa-caret-square-o-down', __('Dropdown List'), {\n data_type: 'string',\n values: [],\n options: { sort_by: 'description', sort_order: 'ascending' },\n }),\n dialogFieldRadioButton: new DialogField('DialogFieldRadioButton', 'fa fa-circle-o', __('Radio Button'), {\n data_type: 'string',\n values: [],\n options: { sort_by: 'description', sort_order: 'ascending' },\n }),\n dialogFieldDateControl: new DialogField('DialogFieldDateControl', 'fa fa-calendar', __('Date Control')),\n dialogFieldDateTimeControl: new DialogField('DialogFieldDateTimeControl', 'fa fa-clock-o', __('Date Time Control')),\n dialogFieldTagControl: new DialogField('DialogFieldTagControl', 'fa fa-tags', __('Tag Control'), {\n data_type: 'string',\n values: [],\n options: {\n force_single_value: false,\n sort_by: 'description',\n sort_order: 'ascending',\n },\n }),\n };\n }\n return ToolboxController;\n}());\nexports.ToolboxController = ToolboxController;\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorFieldStatic\n * @description\n * Component is used as a toolbox for the Dialog Editor.\n * @example\n * \n * \n */\nvar Toolbox = (function () {\n function Toolbox() {\n this.template = __webpack_require__(35);\n this.controller = ToolboxController;\n this.controllerAs = 'vm';\n }\n return Toolbox;\n}());\nexports.default = Toolbox;\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DialogEditorService = (function () {\n function DialogEditorService() {\n this.data = {};\n this.activeTab = 0;\n }\n /**\n * Store data passed in parameter.\n * @memberof DialogEditorService\n * @function setData\n * @param {any} nested object containing data of the dialog\n */\n DialogEditorService.prototype.setData = function (data) {\n this.data = data;\n };\n /**\n * Return dialog id loaded at service.\n * @memberof DialogEditorService\n * @function getDialogId\n */\n DialogEditorService.prototype.getDialogId = function () {\n return this.data.content[0].id;\n };\n /**\n * Return dialog label loaded at service.\n * @memberof DialogEditorService\n * @function getDialogLabel\n */\n DialogEditorService.prototype.getDialogLabel = function () {\n return this.data.content[0].label;\n };\n /**\n * Return dialog description loaded at service.\n * @memberof DialogEditorService\n * @function getDialogDescription\n */\n DialogEditorService.prototype.getDialogDescription = function () {\n return this.data.content[0].description;\n };\n /**\n * Return dialog tabs loaded at service.\n * @memberof DialogEditorService\n * @function getDialogTabs\n */\n DialogEditorService.prototype.getDialogTabs = function () {\n return this.data.content[0].dialog_tabs;\n };\n /**\n * Update positions for elements in array.\n * @memberof DialogEditorService\n * @function updatePositions\n * @param {any[]} array of elements to sort\n */\n DialogEditorService.prototype.updatePositions = function (elements) {\n elements.forEach(function (value, key) { return value.position = key; });\n };\n return DialogEditorService;\n}());\nexports.default = DialogEditorService;\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dialogEditorService_1 = __webpack_require__(68);\nvar modalService_1 = __webpack_require__(70);\nexports.default = function (module) {\n module.service('DialogEditor', dialogEditorService_1.default);\n module.service('DialogEditorModal', modalService_1.default);\n};\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _ = __webpack_require__(0);\nvar ng = __webpack_require__(1);\n/**\n * Controller for the Dialog Editor modal service\n * @ngdoc controller\n * @name ModalController\n */\nvar ModalController = (function () {\n /*@ngInject*/\n ModalController.$inject = [\"dialogDetails\", \"$uibModalInstance\", \"API\", \"DialogEditor\"];\n function ModalController(dialogDetails, $uibModalInstance, API, DialogEditor) {\n var _this = this;\n this.dialogDetails = dialogDetails;\n this.$uibModalInstance = $uibModalInstance;\n this.API = API;\n this.DialogEditor = DialogEditor;\n this.modalTab = 'element_information';\n ng.extend(this, {\n dialog: this.dialogDetails,\n saveDialogFieldDetails: this.saveDialogFieldDetails,\n addEntry: this.addEntry,\n removeEntry: this.removeEntry,\n deleteField: this.deleteField,\n modalUnchanged: this.modalUnchanged,\n modalTabSet: this.modalTabSet,\n modalTabIsSet: this.modalTabIsSet,\n currentCategoryEntries: this.currentCategoryEntries,\n });\n // recognize edited element type\n if (ng.isUndefined(this.dialog.fieldId)\n && ng.isUndefined(this.dialog.boxId)\n && ng.isDefined(this.dialog.tabId)) {\n this.element = 'tab';\n }\n else if (ng.isUndefined(this.dialog.fieldId)\n && ng.isDefined(this.dialog.boxId)\n && ng.isDefined(this.dialog.tabId)) {\n this.element = 'box';\n }\n else if (ng.isDefined(this.dialog.fieldId)\n && ng.isDefined(this.dialog.boxId)\n && ng.isDefined(this.dialog.tabId)) {\n this.element = 'field';\n }\n // clone data from service\n switch (this.element) {\n case 'tab':\n this.modalData = _.cloneDeep(this.DialogEditor.getDialogTabs()[this.dialog.tabId]);\n break;\n case 'box':\n this.modalData = _.cloneDeep(this.DialogEditor.getDialogTabs()[this.dialog.tabId].dialog_groups[this.dialog.boxId]);\n break;\n case 'field':\n this.modalData = _.cloneDeep(this.DialogEditor.getDialogTabs()[this.dialog.tabId].dialog_groups[this.dialog.boxId].dialog_fields[this.dialog.fieldId]);\n // load categories from API, if the field is Tag Control\n if (this.modalData.type === 'DialogFieldTagControl') {\n this.resolveCategories().then(function (categories) {\n _this.categories = categories;\n });\n }\n break;\n default:\n break;\n }\n }\n /**\n * Load categories data from API.\n * @memberof ModalController\n * @function resolveCategories\n */\n ModalController.prototype.resolveCategories = function () {\n return this.API.get('/api/categories' +\n '?expand=resources' +\n '&attributes=description,single_value,children');\n };\n /**\n * Store the name of the tab, that is currently selected.\n * @memberof ModalController\n * @function modalTabSet\n * @param tab is a name of the tab in the modal\n */\n ModalController.prototype.modalTabSet = function (tab) {\n this.modalTab = tab;\n };\n /**\n * Returns true/false according to which tab is currently\n * selected in the modal.\n * @memberof ModalController\n * @function modalTabIsSet\n */\n ModalController.prototype.modalTabIsSet = function (tab) {\n return this.modalTab === tab;\n };\n /**\n * Check for changes in the modal.\n * @memberof ModalController\n * @function modalUnchanged\n */\n ModalController.prototype.modalUnchanged = function () {\n switch (this.element) {\n case 'tab':\n return _.isMatch(this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab], this.modalData);\n case 'box':\n return _.isMatch(this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId], this.modalData);\n case 'field':\n return _.isMatch(this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].dialog_fields[this.dialog.fieldId], this.modalData);\n default:\n break;\n }\n };\n /**\n * Store modified data back to the service.\n * @memberof ModalController\n * @function saveDialogFieldDetails\n */\n ModalController.prototype.saveDialogFieldDetails = function () {\n // TODO: add verification for required forms\n // store data to service\n switch (this.element) {\n case 'tab':\n this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].label = this.modalData.label;\n // description\n this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].description = this.modalData.description;\n break;\n case 'box':\n // label\n this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].label = this.modalData.label;\n // description\n this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].description = this.modalData.description;\n break;\n case 'field':\n this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].dialog_fields[this.dialog.fieldId] = this.modalData;\n break;\n default:\n break;\n }\n // close modal\n this.$uibModalInstance.close();\n };\n /**\n * Delete dialog field selected in modal.\n * @memberof ModalController\n * @function deleteField\n */\n ModalController.prototype.deleteField = function () {\n var _this = this;\n _.remove(this.DialogEditor.getDialogTabs()[this.DialogEditor.activeTab].dialog_groups[this.dialog.boxId].dialog_fields, function (field) { return field.position === _this.dialog.fieldId; });\n // close modal\n this.$uibModalInstance.close();\n };\n /**\n * Add entry for radio button / dropdown select.\n * @memberof ModalFieldController\n * @function addEntry\n */\n ModalController.prototype.addEntry = function () {\n this.modalData.values.push(['', '']);\n };\n /**\n * Remove entry for radio button / dropdown select\n * @memberof ModalFieldController\n * @function removeEntry\n * @param entry to remove from array\n */\n ModalController.prototype.removeEntry = function (entry) {\n _.pull(this.modalData.values, entry);\n };\n /**\n * Finds entries for the selected category.\n * @memberof ModalController\n * @function currentCategoryEntries\n */\n ModalController.prototype.currentCategoryEntries = function () {\n if (ng.isDefined(this.categories)) {\n return _.find(this.categories.resources, 'id', Number(this.modalData.options.category_id));\n }\n };\n return ModalController;\n}());\nvar ModalService = (function () {\n /** @ngInject */\n ModalService.$inject = [\"$uibModal\"];\n function ModalService($uibModal) {\n this.$uibModal = $uibModal;\n }\n /**\n * Show modal of the element.\n * @memberof ModalService\n * @function showModal\n * @param {number} index of tab, where the box is placed\n * @param {number} index of box, where the field is placed\n * @param {number} index of field\n */\n ModalService.prototype.showModal = function (tab, box, field) {\n var modalOptions = {\n template: __webpack_require__(36),\n controller: ModalController,\n controllerAs: 'vm',\n size: 'lg',\n resolve: {\n dialogDetails: function () {\n return { tabId: tab, boxId: box, fieldId: field };\n },\n },\n };\n var modal = this.$uibModal.open(modalOptions);\n return modal.result.catch(function () { return undefined; });\n };\n return ModalService;\n}());\nexports.default = ModalService;\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar FonticonFamilyController = (function () {\n function FonticonFamilyController() {\n }\n FonticonFamilyController.prototype.$onInit = function () {\n this.FonticonPickerCtrl.addFamily({\n title: this.title,\n selector: this.selector\n });\n };\n return FonticonFamilyController;\n}());\nvar FonticonPicker = (function () {\n function FonticonPicker() {\n this.controller = FonticonFamilyController;\n this.require = {\n FonticonPickerCtrl: '^miqFonticonPicker'\n };\n this.bindings = {\n title: '@',\n selector: '@'\n };\n }\n return FonticonPicker;\n}());\nexports.default = FonticonPicker;\n\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fonticonFamilyComponent_1 = __webpack_require__(71);\nexports.default = function (module) {\n module.component('miqFonticonFamily', new fonticonFamilyComponent_1.default);\n};\n\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar FonticonPickerController = (function () {\n /*@ngInject*/\n FonticonPickerController.$inject = [\"MiQFonticonService\", \"$uibModal\"];\n function FonticonPickerController(MiQFonticonService, $uibModal) {\n this.MiQFonticonService = MiQFonticonService;\n this.$uibModal = $uibModal;\n this.families = [];\n this.btnClass = 'btn-default';\n }\n FonticonPickerController.prototype.addFamily = function (font) {\n this.families.push(font);\n };\n FonticonPickerController.prototype.openModal = function () {\n var _this = this;\n if (this.fonticons === undefined) {\n this.fonticons = this.MiQFonticonService.fetch(this.families);\n }\n this.toSelect = this.selected;\n this.modal = this.$uibModal.open({\n template: __webpack_require__(37),\n windowClass: 'fonticon-modal',\n keyboard: false,\n size: 'lg',\n controllerAs: '$ctrl',\n controller: ['parent', function (parent) { this.parent = parent; }],\n resolve: {\n parent: function () { return _this; }\n },\n });\n };\n FonticonPickerController.prototype.closeModal = function (save) {\n if (save) {\n this.selected = this.toSelect;\n }\n this.modal.close();\n };\n FonticonPickerController.prototype.markToSelect = function (icon) {\n this.toSelect = icon;\n };\n return FonticonPickerController;\n}());\nexports.FonticonPickerController = FonticonPickerController;\nvar FonticonPicker = (function () {\n function FonticonPicker() {\n this.controller = FonticonPickerController;\n this.template = __webpack_require__(38);\n this.transclude = true;\n this.bindings = {\n btnClass: '@?',\n selected: '@',\n inputName: '@'\n };\n }\n return FonticonPicker;\n}());\nexports.default = FonticonPicker;\n\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fonticonPickerComponent_1 = __webpack_require__(73);\nexports.default = function (module) {\n module.component('miqFonticonPicker', new fonticonPickerComponent_1.default);\n};\n\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fonticon_picker_1 = __webpack_require__(74);\nvar fonticon_family_1 = __webpack_require__(72);\nexports.default = function (module) {\n fonticon_picker_1.default(module);\n fonticon_family_1.default(module);\n};\n\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _ = __webpack_require__(0);\nvar FonticonService = (function () {\n function FonticonService() {\n }\n FonticonService.prototype.fetch = function (families) {\n return _.reduce(families, function (result, value) {\n result[value.selector] = FonticonService.filterRules(value.selector);\n return result;\n }, {});\n };\n FonticonService.filterRules = function (family) {\n return _.chain(document.styleSheets)\n .map(function (oneSheet) { return oneSheet.rules; })\n .map(function (rule) { return _.filter(rule, function (value) { return FonticonService.isFontIcon(value, family); }); })\n .filter(function (rules) { return rules.length !== 0; })\n .map(function (rules) { return _.map(rules, function (value) { return FonticonService.clearRule(value.selectorText); }); })\n .flatten()\n .reduce(function (result, value) { return result.concat([FonticonService.makeRuleObject(family, value)]); }, [])\n .value();\n };\n FonticonService.isFontIcon = function (value, family) {\n return value.selectorText && value.selectorText.indexOf(family) === 1 && value.cssText.indexOf('content:') !== -1;\n };\n FonticonService.clearRule = function (rule) {\n return rule.replace('::before', '').split(',')[0].replace('.', '');\n };\n FonticonService.makeRuleObject = function (family, value) {\n return {\n 'class': family + \" \" + value,\n 'selector': \".\" + family + \".\" + value\n };\n };\n return FonticonService;\n}());\nexports.default = FonticonService;\n\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar fonticonService_1 = __webpack_require__(76);\nexports.default = function (module) {\n module.service('MiQFonticonService', fonticonService_1.default);\n};\n\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar abstractDataViewClass_1 = __webpack_require__(5);\nvar _ = __webpack_require__(0);\n/**\n * This controller is for managing data table entities. It extends {@link miqStaticAssets.gtl.DataViewClass}\n * which is abstract class with basic methods for filtering, sorting and limiting entries in data table.\n * @extends miqStaticAssets.gtl.DataViewClass\n * @memberof miqStaticAssets.gtl\n * @ngdoc controller\n * @name DataTableController\n */\nvar DataTableController = (function (_super) {\n __extends(DataTableController, _super);\n function DataTableController() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * This method will check if user wants to go to non existent page and will validate it.\n * @memberof DataTableController\n * @function setTablePage\n * @param pageNumber {Number} desired page.\n */\n DataTableController.prototype.setTablePage = function (pageNumber) {\n pageNumber = Number(pageNumber);\n if (_.isNaN(pageNumber)) {\n this.currentPageView = this.settings.current;\n pageNumber = this.currentPageView;\n }\n else {\n if (pageNumber <= 0) {\n this.currentPageView = 1;\n pageNumber = 1;\n }\n this.setPage(pageNumber);\n }\n };\n /**\n * Public method for getting column class, narrow column with checkbox or image.\n * @memberof DataTableController\n * @function getColumnClass\n * @param column {Object} header column. This column will have `is_narrow` property set to true and `narrow` class\n * will be present in classes.\n * @returns {Object} angular class object. `{narrow: boolean}`\n */\n DataTableController.prototype.getColumnClass = function (column) {\n return {\n narrow: column.is_narrow,\n 'table-view-pf-select': column.is_narrow\n };\n };\n /**\n * Public method for checking if column of table is icon or image.\n * @memberof DataTableController\n * @function isIconOrImage\n * @param row {object} whole row with data.\n * @param columnKey header column key.\n * @returns {boolean} true | false, if column is image or icon.\n */\n DataTableController.prototype.isIconOrImage = function (row, columnKey) {\n return row && row.cells &&\n (row.cells[columnKey].hasOwnProperty('icon') || row.cells[columnKey].hasOwnProperty('image'));\n };\n /**\n * Public method for finding out if it's filtered by header column.\n * @memberof DataTableController\n * @function isFilteredBy\n * @param column column which is checked if it's filtered by.\n * @returns {boolean} true | false if `this.settings.sortBy.sortObject.col_idx` is equal to `column.col_idx`.\n */\n DataTableController.prototype.isFilteredBy = function (column) {\n return !!this.settings.sortBy && (this.settings.sortBy.sortObject.col_idx === column.col_idx);\n };\n /**\n * Public method for getting sort class, either `fa-sort-asc` or `fa-sort-desc`.\n * @memberof DataTableController\n * @function getSortClass\n * @returns {Object} angular class object: `{fa-sort-asc: boolean, fa-sort-desc: boolean}`\n */\n DataTableController.prototype.getSortClass = function () {\n return {\n 'fa-sort-asc': !!this.settings.sortBy && this.settings.sortBy.isAscending,\n 'fa-sort-desc': !(!!this.settings.sortBy && this.settings.sortBy.isAscending)\n };\n };\n /**\n * Angular's $onchange function to find out if one of bounded option has changed.\n * @memberof DataTableController\n * @function $onChanges\n * @param changesObj angular changed object.\n */\n DataTableController.prototype.$onChanges = function (changesObj) {\n var _this = this;\n if (changesObj.settings && this.settings) {\n this.currentPageView = this.settings.current;\n }\n if (changesObj.perPage) {\n this.perPage.text += ' ' + this.perPage.labelItems;\n this.perPage.items = this.perPage.items.map(function (oneItem) {\n oneItem.text += ' ' + _this.perPage.labelItems;\n return oneItem;\n });\n }\n this.setPagingNumbers();\n };\n return DataTableController;\n}(abstractDataViewClass_1.DataViewClass));\nexports.DataTableController = DataTableController;\n/**\n * @description\n * Component for data table.\n * @memberof miqStaticAssets.gtl\n * @ngdoc component\n * @name miqDataTable\n * @attr {Object} rows\n * Array of rows which will be displayed.\n * @attr {Object} perPage\n * Object which will be displayed as dropdown picker to filter number of rows.\n * @attr {Object} columns\n * Columns which will be displayed as header in table.\n * @attr {Object} settings\n * Table settings look at {@see ITableSettings} for more information.\n * @attr {Expression} loadMoreItems\n * Function which will be called upon loading more items. Function call has to have `start`, `perPage` params.\n * @attr {Expression} onSort\n * Function to triggering sorting items. Function call has to have `headerId`, `isAscending` params.\n * @attr {Expression} onRowClick\n * Function which will be executed when click on row event is fired. Function call has to have `item` param.\n * @attr {Expression} onItemSelected\n * Function to be called on selecting item (trough selectbox next to each row). Function call has to have `item`,\n * `isSelected` params.\n * @example\n * \n * \n */\nvar DataTable = (function () {\n function DataTable() {\n this.replace = true;\n this.template = __webpack_require__(39);\n this.controller = DataTableController;\n this.transclude = true;\n this.controllerAs = 'tableCtrl';\n this.bindings = {\n rows: '<',\n columns: '<',\n perPage: '<',\n settings: '<',\n loadMoreItems: '&',\n onSort: '&',\n onRowClick: '&',\n onItemSelected: '&'\n };\n }\n return DataTable;\n}());\nexports.default = DataTable;\n\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dataTableComponent_1 = __webpack_require__(78);\nexports.default = function (module) {\n module.component('miqDataTable', new dataTableComponent_1.default);\n};\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar data_table_1 = __webpack_require__(79);\nvar tile_view_1 = __webpack_require__(81);\nexports.default = function (module) {\n data_table_1.default(module);\n tile_view_1.default(module);\n};\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tileViewComponent_1 = __webpack_require__(83);\nvar pagingComponent_1 = __webpack_require__(82);\nexports.default = function (module) {\n module.component('miqTileView', new tileViewComponent_1.default);\n module.component('miqPaging', new pagingComponent_1.default);\n};\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _ = __webpack_require__(0);\n/**\n * Controller for paging component\n * @memberof miqStaticAssets.gtl\n * @ngdoc controller\n * @name PagingController\n */\nvar PagingController = (function () {\n function PagingController() {\n this.MAX_PAGES = 6;\n }\n /**\n * Public method for updating current paging, it will limit number of visible pages to `MAX_PAGES`.\n * @memberof PagingController\n * @function updatePages\n * @param total number of all item's pages.\n * @returns {any} array with page numbers which will be visible.\n */\n PagingController.prototype.updatePages = function (total) {\n var _this = this;\n if (total > this.MAX_PAGES) {\n var currentPage_1 = (this.settings.current < (this.settings.total - this.MAX_PAGES + 1)) ?\n this.settings.current :\n (this.settings.total - this.MAX_PAGES + 1);\n this.pages = _.times(this.MAX_PAGES, function (item) { return (currentPage_1 + item) - 1; });\n }\n else {\n this.pages = new Array(total);\n _.each(this.pages, function (item, key) {\n _this.pages[key] = key;\n });\n }\n return this.pages;\n };\n return PagingController;\n}());\nexports.PagingController = PagingController;\n/**\n * @description\n * Component for show paging for some long list (e.g. these are used in tile lists).\n * Settings object example:\n * ```javascript\n * {\n * current: 1,\n * total: 5\n * }\n * ```\n * @memberof miqStaticAssets.gtl\n * @ngdoc component\n * @name miqPaging\n * @attr {Object} settings\n * settings for paging component. It has `current` attribute `Number` and total `Number`\n *\n * @attr {Expression} onChangePage\n * object which is currently sorted by.\n * @example\n * \n * \n */\nvar Paging = (function () {\n function Paging() {\n this.replace = true;\n this.controller = PagingController;\n this.template = __webpack_require__(40);\n this.controllerAs = 'pagingCtrl';\n this.bindings = {\n settings: '<',\n onChangePage: '&'\n };\n }\n return Paging;\n}());\nexports.default = Paging;\n\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tileType_1 = __webpack_require__(86);\nvar abstractDataViewClass_1 = __webpack_require__(5);\nvar _ = __webpack_require__(0);\n/**\n * Controller for tile components. It extends {@link miqStaticAssets.gtl.DataViewClass}.\n * @memberof miqStaticAssets.gtl\n * @ngdoc controller\n * @name TileViewController\n */\nvar TileViewController = (function (_super) {\n __extends(TileViewController, _super);\n /* @ngInject */\n TileViewController.$inject = [\"$sce\", \"MiQTranslateService\"];\n function TileViewController($sce, MiQTranslateService) {\n var _this = _super.call(this, MiQTranslateService) || this;\n _this.$sce = $sce;\n _this.initOptions();\n return _this;\n }\n /**\n * Method for creating basic options for tiles.\n * @memberof TileViewController\n * @function initOptions\n */\n TileViewController.prototype.initOptions = function () {\n var _this = this;\n this.options = {\n selectionMatchProp: 'id',\n selectItems: false,\n multiSelect: true,\n showSelectBox: true,\n selectedItems: this.filterSelected(),\n onClick: function (item, event) { return _this.onTileClick(item); },\n onCheckBoxChange: function (item) { return _this.onTileSelect(item); },\n onItemClick: function (item, $event) { return _this.onRowClick({ item: item, event: $event }); },\n onButtonItemClick: function (item) { return _this.onItemButtonClick(item); },\n fetchTileName: function (item) { return _this.fetchTileName(item); },\n trustAsHtmlQuadicon: function (item) { return _this.trustAsHtmlQuadicon(item); },\n type: this.type\n };\n };\n /**\n * Method for enabling quadicons html to be displayed inside tile.\n * @memberof TileViewController\n * @function trustAsHtmlQuadicon\n * @param item item with quadicon.\n * @returns {any} trusted html object, which cn be used as `bind-html`.\n */\n TileViewController.prototype.trustAsHtmlQuadicon = function (item) {\n return this.$sce.trustAsHtml(item.quadicon);\n };\n /**\n * Method for fetching name of item, it will try to guess which column should be showed as name of tile, usually it's\n * column with Name in them.\n * @memberof TileViewController\n * @function fetchTileName\n * @param item which will be displayed in tile. If no column with name is not present third cell text will be used.\n * @returns {string} text which will be displayed as tile header.\n */\n TileViewController.prototype.fetchTileName = function (item) {\n var nameIndex = _.findIndex(this.columns, function (oneColumn) { return oneColumn.text && oneColumn.text.indexOf('Name') !== -1; });\n return (nameIndex !== -1 && item.cells && item.cells[nameIndex]) ?\n item.cells[nameIndex]['text'] :\n item.cells[2]['text'];\n };\n /**\n * Angular's method for fetching change events.\n * @memberof TileViewController\n * @function $onChanges\n * @param changesObj angular's change object.\n */\n TileViewController.prototype.$onChanges = function (changesObj) {\n var _this = this;\n if (changesObj.type) {\n this.options.type = this.type;\n }\n else if (changesObj.columns) {\n this.options.columns = this.columns;\n }\n if (changesObj.perPage) {\n this.perPage.text += ' ' + this.perPage.labelItems;\n this.perPage.items = this.perPage.items.map(function (oneItem) {\n oneItem.text += ' ' + _this.perPage.labelItems;\n return oneItem;\n });\n }\n if (changesObj.settings) {\n this.options.showSelectBox = !this.settings.hideSelect;\n }\n this.setPagingNumbers();\n };\n /**\n * Method which will be called when clicking on tile.\n * @memberof TileViewController\n * @function onTileClick\n * @param item which tile was clicked.\n */\n TileViewController.prototype.onTileClick = function (item) {\n if (!this.settings.hideSelect) {\n this.onItemSelected({ item: item, isSelected: !item.selected });\n }\n };\n TileViewController.prototype.onTileSelect = function (item) {\n this.onItemSelected({ item: item, isSelected: item.selected });\n };\n /**\n * Method for checking all tiles and then filtering selected items.\n * @memberof TileViewController\n * @function tileClass\n * @param isSelected true | false.\n */\n TileViewController.prototype.onCheckAllTiles = function (isSelected) {\n this.onCheckAll(isSelected);\n this.options.selectedItems = this.filterSelected();\n };\n /**\n * Method for filtering selected tiles based on checked property.\n * @memberof TileViewController\n * @function tileClass\n * @returns filtered array of checked items.\n */\n TileViewController.prototype.filterSelected = function () {\n return _.filter(this.rows, { checked: true });\n };\n /**\n * Angular's method for getting tile's class based on it's type.\n * @memberof TileViewController\n * @function tileClass\n * @returns {Object} it will return angular class object: `{miq-small-tile: boolean, miq-tile-with-body: boolean}`\n */\n TileViewController.prototype.tileClass = function () {\n return {\n 'miq-small-tile': this.type === tileType_1.TileType.SMALL,\n 'miq-tile-with-body': this.type === tileType_1.TileType.BIG\n };\n };\n return TileViewController;\n}(abstractDataViewClass_1.DataViewClass));\nexports.TileViewController = TileViewController;\n/**\n * @description\n * Component for tile list. This component requires pf-tile to be part of angular's components. For patternfly's\n * implementation look at\n * pfCardView\n * @memberof miqStaticAssets.gtl\n * @ngdoc component\n * @name miqTileView\n * @attr {Object} type\n * Type of tile look at {@see miqStaticAssets.gtl.TileType}\n * @attr {Object} rows\n * Array of rows which will be displayed.\n * @attr {Object} perPage\n * Object which will be displayed as dropdown picker to filter number of tiles.\n * @attr {Object} columns\n * Columns which will be displayed as header in tile.\n * @attr {Object} settings\n * Tile settings look at {@see ITableSettings} for more information.\n * @attr {Expression} loadMoreItems\n * Function which will be called upon loading more items. Function call has to have `start`, `perPage` params.\n * @attr {Expression} onSort\n * Function to triggering sorting items. Function call has to have `headerId`, `isAscending` params.\n * @attr {Expression} onRowClick\n * Function which will be executed when click on tile event is fired. Function call has to have `item` param.\n * @attr {Expression} onItemSelected\n * Function to be called on selecting item (trough clicking on tile). Function call has to have `item`, `isSelected`\n * params.\n * @example\n * \n * \n */\nvar TileView = (function () {\n function TileView() {\n this.replace = true;\n this.controller = TileViewController;\n this.template = __webpack_require__(41);\n this.controllerAs = 'tileCtrl';\n this.bindings = {\n type: '<',\n rows: '<',\n columns: '<',\n perPage: '<',\n settings: '<',\n loadMoreItems: '&',\n onSort: '&',\n onRowClick: '&',\n onItemSelected: '&'\n };\n }\n return TileView;\n}());\nexports.default = TileView;\n\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar limitToSuffixFilter_1 = __webpack_require__(85);\nexports.default = function (module) {\n module.filter('limitToSuffix', limitToSuffixFilter_1.default.filter);\n};\n\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LimitToSuffix = (function () {\n function LimitToSuffix() {\n }\n LimitToSuffix.filter = function () {\n return function (value, start, end) {\n return value.length > start + end + 3 ? value.slice(0, start) + \"...\" + value.slice(-end) : value;\n };\n };\n return LimitToSuffix;\n}());\nexports.default = LimitToSuffix;\n\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Enum for tile types. It holds string value of types for tiles.\n * @memberof miqStaticAssets.gtl\n * @ngdoc enum\n * @name TileType\n */\nexports.TileType = {\n /**\n * Tile type: `small`\n * @type {string}\n */\n SMALL: 'small',\n /**\n * Tile type: `big`\n * @type {string}\n */\n BIG: 'big'\n};\n\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar _ = __webpack_require__(0);\n/**\n * @memberof miqStaticAssets.gtl\n * @ngdoc service\n * @name DataTableService\n * @param $http {ng.IHttpService} http service for fetching rows and columns of data table.\n * @param MiQEndpointsService {Object} service which holds endpoints to each data store.\n */\nvar DataTableService = (function () {\n /*@ngInject*/\n DataTableService.$inject = [\"$http\", \"MiQEndpointsService\"];\n function DataTableService($http, MiQEndpointsService) {\n this.$http = $http;\n this.MiQEndpointsService = MiQEndpointsService;\n }\n /**\n * Public method for fetching data from url combined from `MiQEndpointsService.rootPoint` and\n * `MiQEndpointsService.endpoints.listDataTable`. Result will be promise with type `IRowsColsResponse`. Which is\n * ```javascript\n * interface IRowsColsResponse {\n * rows: any[];\n * cols: any[];\n * settings: ITableSettings;\n * }\n * ```\n * @methodOf miqStaticAssets.gtl\n * @memberof DataTableService\n * @function retrieveRowsAndColumnsFromUrl\n * @returns {ng.IPromise} promise with type `IRowsColsResponse`.\n */\n DataTableService.prototype.retrieveRowsAndColumnsFromUrl = function (modelName, activeTree, currId, isExplorer, settings, records) {\n var _this = this;\n return this.fetchData(DataTableService.generateConfig(modelName, activeTree, currId, isExplorer, settings, records))\n .then(function (responseData) {\n _this.columns = responseData.data.data.head;\n _this.rows = responseData.data.data.rows;\n _this.settings = responseData.data.settings;\n return {\n cols: _this.columns,\n rows: _this.rows,\n messages: responseData.data.messages,\n settings: responseData.data.settings\n };\n });\n };\n /**\n * Method which will do actual http get request using $http service.\n * @param config which contains config params.\n * @returns {IHttpPromise} promise for later data filtering.\n */\n DataTableService.prototype.fetchData = function (config) {\n return this.$http.get(this.MiQEndpointsService.rootPoint + this.MiQEndpointsService.endpoints.listDataTable, config);\n };\n /**\n * Static function which will generate http get config from given variables.\n * @param modelName string with name of model.\n * @param activeTree string with active tree.\n * @param currId ID of current item.\n * @param isExplorer\n * @param settings\n * @param records\n * @returns {{params: {}}} config object with params set.\n */\n DataTableService.generateConfig = function (modelName, activeTree, currId, isExplorer, settings, records) {\n var config = { params: {} };\n _.assign(config.params, DataTableService.generateModelConfig(modelName));\n _.assign(config.params, DataTableService.generateActiveTreeConfig(activeTree));\n _.assign(config.params, DataTableService.generateModuleIdConfig(currId));\n _.assign(config.params, DataTableService.generateExplorerConfig(isExplorer));\n _.assign(config.params, DataTableService.generateParamsFromSettings(settings));\n _.assign(config.params, DataTableService.generateRecords(records));\n return config;\n };\n /**\n * Static function for generating model object, this object will be assigned to `config.params`.\n * @param modelName name of currently selected model.\n * @returns {any|{model: any}} object if any model is selected.\n */\n DataTableService.generateModelConfig = function (modelName) {\n return modelName && { model: modelName };\n };\n /**\n * Static function for generating active tree object, this object will be assigned to `config.params`.\n * @param activeTree name of currently selected tree.\n * @returns {any|{active_tree: any}} object if any tree is selected.\n */\n DataTableService.generateActiveTreeConfig = function (activeTree) {\n return activeTree && { active_tree: activeTree };\n };\n /**\n * Static function for generating module id object, this object will be assigned to `config.params`.\n * @param currId currently selected module's ID.\n * @returns {any|{model_id: any}} object if any module ID is present.\n */\n DataTableService.generateModuleIdConfig = function (currId) {\n return currId && currId !== null && { model_id: currId };\n };\n /**\n *\n * @param isExplorer\n * @returns {any|boolean|{explorer: any}}\n */\n DataTableService.generateExplorerConfig = function (isExplorer) {\n return isExplorer && isExplorer !== null && { explorer: isExplorer };\n };\n DataTableService.generateParamsFromSettings = function (settings) {\n var params = {};\n if (settings) {\n _.assign(params, settings.current && { page: settings.current });\n _.assign(params, settings.perpage && { ppsetting: settings.perpage });\n _.assign(params, settings.sortBy && settings.sortBy.sortObject && { sort_choice: settings.sortBy.sortObject.text });\n _.assign(params, settings.sortBy && settings.sortBy.isAscending && { is_ascending: settings.sortBy.isAscending });\n }\n return params;\n };\n DataTableService.generateRecords = function (records) {\n return records && records !== null && { 'records[]': records };\n };\n return DataTableService;\n}());\nexports.default = DataTableService;\n\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar dataTableService_1 = __webpack_require__(87);\nexports.default = function (module) {\n module.service('MiQDataTableService', dataTableService_1.default);\n};\n\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Controller for site switcher component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name SiteSwitcherController\n */\nvar SiteSwitcherController = (function () {\n function SiteSwitcherController() {\n }\n return SiteSwitcherController;\n}());\nexports.SiteSwitcherController = SiteSwitcherController;\n/**\n * @description\n * Component for showing a site switcher drop down for moving between different UI's.\n * Settings object example:\n * ```javascript\n * {\n * sites: [{\n * title: 'Launch Operations UI',\n * tooltip: 'Launch Operations UI',\n * iconClass: 'fa-cogs',\n * url: 'http://www.manageiq.com'\n * }, {\n * title: 'Launch Service UI',\n * tooltip: 'Launch Service UI',\n * iconClass: 'fa-cog',\n * url: 'http://www.manageiq.com'\n * }, {\n * title: 'Home',\n * tooltip: 'Home',\n * iconClass: 'fa-home',\n * url: 'http://www.manageiq.com'\n * }]\n * }\n * ```\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name miqSiteSwitcher\n * @attr {Array} sites\n * An array of sites to display in the switcher (includes url, iconClass, tooltip and title).\n * Since we use typescript this attribute has specific type of: `Array`\n *\n * @example\n * \n * \n */\nvar SiteSwitcher = (function () {\n function SiteSwitcher() {\n this.controller = SiteSwitcherController;\n this.template = __webpack_require__(42);\n this.controllerAs = 'ctrl';\n this.bindings = {\n sites: '<'\n };\n }\n return SiteSwitcher;\n}());\nexports.default = SiteSwitcher;\n\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar toolbar_menu_1 = __webpack_require__(91);\nexports.default = function (module) {\n toolbar_menu_1.default(module);\n};\n\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar toolbarComponent_1 = __webpack_require__(93);\nvar toolbarButtonDirective_1 = __webpack_require__(92);\nvar toolbarListComponent_1 = __webpack_require__(94);\nvar toolbarViewComponent_1 = __webpack_require__(95);\nexports.default = function (module) {\n module.component('miqToolbarMenu', new toolbarComponent_1.default);\n module.component('miqToolbarList', new toolbarListComponent_1.default);\n module.component('miqToolbarView', new toolbarViewComponent_1.default);\n module.directive('miqToolbarButton', toolbarButtonDirective_1.default.Factory());\n};\n\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @memberof miqStaticAssets\n * @ngdoc directive\n * @name miqToolbarButton\n * @description\n * Directive withou controller. It will create new toolbar button in toolbar.\n *\n * @attr {Expression} onItemClick\n * Method for handling clicking on this button (will be called with `{item: item}` object).\n * @attr {IToolbarItem} toolbarButton\n * Toolbar item based on which will be this button generated.\n * @example\n * \n * \n */\nvar ToolbarButton = (function () {\n function ToolbarButton() {\n this.replace = true;\n this.template = __webpack_require__(43);\n this.scope = {\n toolbarButton: '<',\n onItemClick: '&'\n };\n }\n return ToolbarButton;\n}());\nToolbarButton.Factory = function () {\n var directive = function () { return new ToolbarButton(); };\n directive.$inject = [];\n return directive;\n};\nexports.default = ToolbarButton;\n\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar toolbarType_1 = __webpack_require__(6);\n/**\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name ToolbarController\n * @param $window {ng.IWindowService} window service for redirecting to non angular pages.\n * @param $location {ng.ILocationService} location service to handle redirect to different angular pages.\n * @param $sce {ng.ISCEService} service for enabling html strings to be html objects injected to page as html and not as\n * string.\n */\nvar ToolbarController = (function () {\n /*@ngInject*/\n ToolbarController.$inject = [\"$window\", \"$location\", \"$sce\"];\n function ToolbarController($window, $location, $sce) {\n this.$window = $window;\n this.$location = $location;\n this.$sce = $sce;\n }\n /**\n * Handle clicking on item in toolbar.\n * Check what function has item for handling click action it's one of [actionUrl, redirectUrl, actionFunction,\n * eventFunction].\n * * actionUrl - will perform location path change.\n * * redirectUrl - will perform window redirect.\n * * actionFunction - will perform call without any arguments.\n * * eventFunction - will perform call to this function with $event specified.\n * @memberof ToolbarController\n * @function onItemClick\n * @param {Object} item what was clicked in toolbar (member of toolbar items).\n * @param {Object} $event for passing it to eventFunction of item (good for checking target).\n */\n ToolbarController.prototype.onItemClick = function (item, $event) {\n if (item.hasOwnProperty('actionUrl')) {\n this.$location.path(item.actionUrl);\n }\n else if (item.hasOwnProperty('redirectUrl')) {\n this.$window.location.replace(item.redirectUrl);\n }\n else if (item.hasOwnProperty('actionFunction')) {\n item.actionFunction();\n }\n else if (item.hasOwnProperty('eventFunction')) {\n item.eventFunction($event);\n }\n };\n /**\n * Filter out items which does not have buttons, select or custom html in them and check if array is not empty. If\n * this array would be empty there is no content which could be shown in toolbar group.\n * * see {@link miqStaticAssets.ToolbarController#isButtonOrSelect} on how it is checked button or select item.\n * * see {@link miqStaticAssets.ToolbarController#isCustom} on how it is checked custom html item.\n * @memberof ToolbarController\n * @function hasContent\n * @param {Array} toolbarItem array of items which are checked for content.\n * @returns {boolean} true|false isEmpty or not.\n */\n ToolbarController.prototype.hasContent = function (toolbarItem) {\n return toolbarItem && toolbarItem.filter(function (item) {\n return item && (ToolbarController.isButtonOrSelect(item) || ToolbarController.isCustom(item));\n }).length !== 0;\n };\n /**\n * Escape html custom data and make them available for html insertion to toolbar.\n * @memberof ToolbarController\n * @function hasContent\n * @param escapedString html string without escaped items.\n * @returns {any} html object, this object can be bound to see\n * {@link https://docs.angularjs.org/api/ng/directive/ngBindHtml}\n */\n ToolbarController.prototype.trustAsHtml = function (escapedString) {\n escapedString = ToolbarController.htmlDecode(escapedString);\n return this.$sce.trustAsHtml(escapedString);\n };\n /**\n * Helper method for getting string value of {@link ToolbarType.BUTTON_SELECT}\n * @memberof ToolbarController\n * @function getToolbarListType\n * @returns {string}\n */\n ToolbarController.prototype.getToolbarListType = function () {\n return toolbarType_1.ToolbarType.BUTTON_SELECT;\n };\n /**\n * Helper method for getting string value of {@link ToolbarType.BUTTON}\n * @memberof ToolbarController\n * @function getToolbarListType\n * @returns {string}\n */\n ToolbarController.prototype.getButtonType = function () {\n return toolbarType_1.ToolbarType.BUTTON;\n };\n /**\n * Helper method for getting string value of {@link ToolbarType.CUSTOM}\n * @memberof ToolbarController\n * @function getToolbarListType\n * @returns {string}\n */\n ToolbarController.prototype.getCustomType = function () {\n return toolbarType_1.ToolbarType.CUSTOM;\n };\n ToolbarController.prototype.getButtonTwoState = function () {\n return toolbarType_1.ToolbarType.BUTTON_TWO_STATE;\n };\n /**\n * Private static function for decoding html.\n * @memberof ToolbarController\n * @function htmlDecode\n * @param input html string containing custom html.\n * @returns {string} unescaped html string.\n */\n ToolbarController.htmlDecode = function (input) {\n var e = document.createElement('div');\n e.innerHTML = input;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue;\n };\n /**\n * Private static function for checking if toolbar item has name and if this name is `\"custom\"`.\n * @memberof ToolbarController\n * @function hasContent\n * @param {IToolbarItem} item which is checked for name property.\n * @returns {boolean} true|false if it's item with custom html.\n */\n ToolbarController.isCustom = function (item) {\n return item.name && item.name === toolbarType_1.ToolbarType.CUSTOM;\n };\n /**\n * Private static function for checking if toolbar item type and if this type is button or select.\n * * see {@link miqStaticAssets.ToolbarController#isButtonSelect} on how it's checked for select type.\n * * see {@link miqStaticAssets.ToolbarController#isButton} on how it's checked for button type.\n * @memberof ToolbarController\n * @function isButtonOrSelect\n * @param {IToolbarItem} item which is checked for type property.\n * @returns {boolean} true|false if it's item with button or button select type.\n */\n ToolbarController.isButtonOrSelect = function (item) {\n return item.type && ((ToolbarController.isButtonSelect(item) && item.items && item.items.length !== 0)\n || ToolbarController.isButton(item)\n || ToolbarController.isButtonTwoState(item));\n };\n ToolbarController.isButtonTwoState = function (item) {\n return item.type === toolbarType_1.ToolbarType.BUTTON_TWO_STATE;\n };\n /**\n * Private static function for checking if toolbar item type is buttonSelect.\n * @memberof ToolbarController\n * @function isButtonSelect\n * @param {IToolbarItem} item item which is checked for type property.\n * @returns {boolean} true|false if it's item with type equals to `\"buttonSelect\"`.\n */\n ToolbarController.isButtonSelect = function (item) {\n return item.type === toolbarType_1.ToolbarType.BUTTON_SELECT;\n };\n /**\n * Private static function for checking if toolbar item type is button.\n * @memberof ToolbarController\n * @function isButton\n * @param {IToolbarItem} item item which is checked for type property.\n * @returns {boolean} true|false if it's item with type equals to `\"button\"`.\n */\n ToolbarController.isButton = function (item) {\n return item.type === toolbarType_1.ToolbarType.BUTTON;\n };\n return ToolbarController;\n}());\nexports.ToolbarController = ToolbarController;\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name miqToolbarMenu\n * @description\n * This component is for whole toolbar implementation. It's advantages are, that it takes custom components as well\n * so they can be used instead of just plain JS objects (pass html inside toolbarItems attribute).\n * See {@link miqStaticAssets.ToolbarController} for implementation of all methods and behavior of this component.\n * Attribute toolbarItems for custom html needs to have set `args.html`:\n * ```JSON\n * [[\n * {\"name\" : \"custom\",\n * \"args\" : {\n * ...\n * \"html\" : \"
html string, this string will be generated as part of form group
\"\n * ...\n * }}\n * ]]\n * ```\n * How each button is treated see {@link miqStaticAssets.ToolbarController#hasContent} and observe each static\n * function which\n * is responsible for deciding what type of button will be used.\n *\n * @attr {Expression} onViewClick\n * Method which will be executed when clicked on view. See {@link miqStaticAssets.ToolbarController#onViewClick}\n * which arguments are\n * needed.\n * @attr {Array} toolbarViews\n * List of all views which are used in toolbar. Since we use typescript this attribute has specific type of:\n * `Array` See {@link IToolbarItem} for entities of toolbarViews.\n * @attr {Array} toolbarItems\n * List of all items which are used in toolbar. Since we use typescript this attribute has specific type of:\n * `Array>` See {@link IToolbarItem} for entities of toolbarItems.\n * @example\n * \n * \n */\nvar Toolbar = (function () {\n function Toolbar() {\n this.replace = true;\n this.template = __webpack_require__(45);\n this.controller = ToolbarController;\n this.controllerAs = 'vm';\n this.bindings = {\n toolbarViews: '<',\n toolbarItems: '<',\n onViewClick: '&'\n };\n }\n return Toolbar;\n}());\nexports.default = Toolbar;\n\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name ToolbarListController\n * @implements {IToolbarListBindings}\n */\nvar ToolbarListController = (function () {\n function ToolbarListController() {\n this.isEmpty = false;\n }\n /**\n * Angular's function to observe on changes.\n * @memberof ToolbarListController\n * @function isToolbarEmpty\n * @param changesObj changed object.\n */\n ToolbarListController.prototype.$onChanges = function (changesObj) {\n if (changesObj.toolbarList) {\n this.isEmpty = this.isToolbarEmpty();\n }\n };\n /**\n * Method which filters out\n * @memberof ToolbarListController\n * @function isToolbarEmpty\n * @returns {boolean}\n */\n ToolbarListController.prototype.isToolbarEmpty = function () {\n return this.toolbarList &&\n this.toolbarList.items &&\n this.toolbarList.items.filter(function (item) { return !item.hidden; }).length > 0;\n };\n return ToolbarListController;\n}());\nexports.ToolbarListController = ToolbarListController;\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name miqToolbarList\n * @description\n * Component which will generate list in toolbar with toolbarItems as dropdown menu.\n *\n * @attr {Expression} onItemClick\n * Method which will be executed when clicked on view. See\n * {@link miqStaticAssets.ToolbarListController#onItemClick} which arguments are\n * needed.\n * @attr {Array} toolbarItems\n * List of all items which are used in toolbar. Since we use typescript this attribute has specific type of:\n * `Array>` See {@link IToolbarItem} for entities of toolbarItems.\n * @example\n * \n * \n */\nvar ToolbarList = (function () {\n function ToolbarList() {\n this.replace = true;\n this.template = __webpack_require__(44);\n this.controller = ToolbarListController;\n this.controllerAs = 'vm';\n this.bindings = {\n toolbarList: '<',\n onItemClick: '&',\n dropDownClass: '<'\n };\n }\n return ToolbarList;\n}());\nexports.default = ToolbarList;\n\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name ToolbarViewController\n * @implements {IToolbarViewBindings}\n */\nvar ToolbarViewController = (function () {\n function ToolbarViewController() {\n }\n return ToolbarViewController;\n}());\nexports.ToolbarViewController = ToolbarViewController;\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name miqToolbarView\n * @description\n * Component which will generate list in toolbar with toolbarItems as dropdown menu.\n *\n * @attr {Expression} onItemClick\n * Method which will be executed when clicked on view.\n * @attr {Array} toolbarViews\n * List of all views which are used in toolbar.\n * @example\n * \n * \n */\nvar ToolbarView = (function () {\n function ToolbarView() {\n this.replace = false;\n this.template = __webpack_require__(46);\n this.controller = ToolbarViewController;\n this.controllerAs = 'vm';\n this.bindings = {\n toolbarViews: '<',\n onItemClick: '&'\n };\n }\n return ToolbarView;\n}());\nexports.default = ToolbarView;\n\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar toolbarSettingsService_1 = __webpack_require__(97);\nexports.default = function (module) {\n module.service('MiQToolbarSettingsService', toolbarSettingsService_1.default);\n};\n\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar toolbarType_1 = __webpack_require__(6);\nvar _ = __webpack_require__(0);\nvar ToolbarSettingsService = (function () {\n /*@ngInject*/\n ToolbarSettingsService.$inject = [\"$http\", \"MiQEndpointsService\"];\n function ToolbarSettingsService($http, MiQEndpointsService) {\n this.$http = $http;\n this.MiQEndpointsService = MiQEndpointsService;\n this.countSelected = 0;\n }\n /**\n * FIXME: the method is obsolete and should be removed once setCount is being used instead\n * @param isClicked\n */\n ToolbarSettingsService.prototype.checkboxClicked = function (isClicked) {\n isClicked ? this.countSelected++ : this.countSelected--;\n this.updateByCount();\n };\n /**\n * Update the selected item count, and enable/disable onwhen toolbar items\n * @param count - the number of currently selected items\n */\n ToolbarSettingsService.prototype.setCount = function (count) {\n this.countSelected = count;\n this.updateByCount();\n };\n /**\n * Traverses through all the items and enables them by number of selected items.\n */\n ToolbarSettingsService.prototype.updateByCount = function () {\n var _this = this;\n _.chain(this.items)\n .flatten()\n .filter(function (item) { return item; })\n .each(function (item) {\n _this.enableToolbarItemByCountSelected(item);\n })\n .map('items')\n .flatten()\n .filter(function (item) { return item; })\n .each(function (item) {\n _this.enableToolbarItemByCountSelected(item);\n })\n .value();\n };\n /**\n *\n * @param toolbarObject\n * @returns {{items: Array>, dataViews: Array}}\n */\n ToolbarSettingsService.prototype.generateToolbarObject = function (toolbarObject) {\n this.countSelected = 0;\n this.items = this.separateItems(toolbarObject.filter(function (item) { return !!item; }));\n this.dataViews = this.filterViews();\n return {\n items: this.items,\n dataViews: this.dataViews\n };\n };\n /**\n *\n * @returns {ng.IPromise}\n * @param getData\n */\n ToolbarSettingsService.prototype.getSettings = function (getData) {\n var _this = this;\n return this.httpGet(this.MiQEndpointsService.rootPoint + this.MiQEndpointsService.endpoints.toolbarSettings, getData).then(function (items) { return _this.generateToolbarObject(items); });\n };\n /**\n * Helper method for separating items in toolbar by separators.\n * @param toolbarItems all toolbar items.\n * @returns {Array} of separated items.\n */\n ToolbarSettingsService.prototype.separateItems = function (toolbarItems) {\n var separatedArray = [];\n toolbarItems.forEach(function (items) {\n var arrayIndex = separatedArray.push([]);\n items.forEach(function (item) {\n if (item.type !== toolbarType_1.ToolbarType.SEPARATOR) {\n separatedArray[arrayIndex - 1].push(item);\n }\n else {\n arrayIndex = separatedArray.push([]);\n }\n });\n });\n return separatedArray;\n };\n /**\n *\n * @returns {Array}\n */\n ToolbarSettingsService.prototype.filterViews = function () {\n return _.flatten(this.items)\n .filter(function (item) { return item && item.id && item.id.indexOf('view_') === 0; });\n };\n /**\n *\n * @param url\n * @param dataObject\n * @returns {ng.IPromise>>}\n */\n ToolbarSettingsService.prototype.httpGet = function (url, dataObject) {\n return this.$http.get(url, { params: dataObject })\n .then(function (dataResponse) { return dataResponse.data; });\n };\n /**\n *\n * @param toolbarItem\n */\n ToolbarSettingsService.prototype.enableToolbarItemByCountSelected = function (toolbarItem) {\n if (toolbarItem.onwhen) {\n if (toolbarItem.onwhen.slice(-1) === '+') {\n toolbarItem.enabled = this.countSelected >= ToolbarSettingsService.parseNumberFromWhen(toolbarItem.onwhen);\n }\n else {\n toolbarItem.enabled = this.countSelected === parseInt(toolbarItem.onwhen, 10);\n }\n }\n };\n /**\n *\n * @param onWhen\n * @returns {number}\n */\n ToolbarSettingsService.parseNumberFromWhen = function (onWhen) {\n return onWhen.indexOf('+') !== -1 ? parseInt(onWhen.slice(0, onWhen.length - 1), 10) : parseInt(onWhen, 10);\n };\n return ToolbarSettingsService;\n}());\nexports.default = ToolbarSettingsService;\n\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar map = {\n\t\"./check-box.html\": 27,\n\t\"./date-time-control.html\": 28,\n\t\"./dynamic.html\": 29,\n\t\"./index\": 2,\n\t\"./index.ts\": 2,\n\t\"./modalFieldTemplateComponent\": 3,\n\t\"./modalFieldTemplateComponent.ts\": 3,\n\t\"./radio-button-drop-down-list.html\": 30,\n\t\"./tag-control.html\": 31,\n\t\"./text-area-box.html\": 32,\n\t\"./text-box.html\": 33\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 98;\n\n\n/***/ }),\n/* 99 */,\n/* 100 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(8);\n__webpack_require__(14);\n__webpack_require__(16);\n__webpack_require__(10);\n__webpack_require__(11);\n__webpack_require__(13);\n__webpack_require__(15);\nmodule.exports = __webpack_require__(12);\n\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// js/ui-components.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \".\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 100);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6cb44a724215cb0ab30e","module.exports = _;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"_\"\n// module id = 0\n// module chunks = 0 1","module.exports = angular;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 1\n// module chunks = 0 1","import ModalFieldTemplate from './modalFieldTemplateComponent';\n\nexport default (module: ng.IModule) => {\n module.component('dialogEditorModalFieldTemplate', new ModalFieldTemplate);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/modal-field-template/index.ts","import * as _ from 'lodash';\n\n/**\n * Controller for the Dialog Editor Modal Field Template component\n * @ngdoc controller\n * @name ModalFieldController\n */\nclass ModalFieldController {\n public modalData: any;\n\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorModalFieldTemplate\n * @description\n * Component contains templates for the modal for each field type\n * @example\n * \n * \n */\nexport default class ModalFieldTemplate {\n /*@ngInject*/\n public template = ($element: any, $attrs: any) => require(`./${$attrs.template}`);\n public scope: boolean = true;\n public controllerAs: string = 'vm';\n public bindings: any = {\n modalData: '=',\n categories: '=?',\n addEntry: '&?',\n removeEntry: '&?',\n currentCategoryEntries: '&?',\n resolveCategories: '&?',\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/modal-field-template/modalFieldTemplateComponent.ts","import {IDataTableBinding, ITableSettings} from './dataTable';\nimport * as _ from 'lodash';\n/**\n * This is abstract controller for implementing shared methods between data table and tile views.\n * @memberof miqStaticAssets.gtl\n * @ngdoc controller\n * @name DataViewClass\n */\nexport abstract class DataViewClass implements IDataTableBinding {\n public perPage: any;\n public rows: any[];\n public columns: any[];\n\n public onRowClick: (args: {item: any, event: ng.IAngularEvent}) => void;\n public settings: ITableSettings;\n public currentPageView: number = 1;\n\n public onSort: (args: {headerId: any, isAscending: boolean}) => void;\n public onItemSelected: (args: {item: any, isSelected: boolean}) => void;\n public loadMoreItems: (args: {start: number, perPage: number}) => void;\n\n /*@ngInject*/\n constructor(public MiQTranslateService: any) {\n }\n\n /**\n * Public method which will perform checking all entities.\n * @memberof DataViewClass\n * @function onCheckAll\n * @param isChecked true | false based on checked value.\n */\n public onCheckAll(isChecked: boolean) {\n _.each(this.rows, oneRow => {\n this.onItemSelected({item: oneRow, isSelected: isChecked});\n });\n }\n\n /**\n * Helper method which will pass sortId and isAscending to parent controller.\n * @memberof DataViewClass\n * @function onSortClick\n * @param sortId id of sorted header column.\n * @param isAscending true | false based on ascending order.\n */\n public onSortClick(sortId, isAscending) {\n this.onSort({headerId: sortId, isAscending: isAscending});\n }\n\n /**\n * Helper method for calculating loading more items after selecting how many items per page should be visible.\n * @memberof DataViewClass\n * @function perPageClick\n * @param item {Object} enhanced IToolbarItem with value.\n */\n public perPageClick(item) {\n const maxPage = Math.ceil(this.settings.items / item.value);\n this.currentPageView = this.currentPageView > maxPage ? maxPage : this.currentPageView;\n const start = DataViewClass.calculateStartIndex(this.currentPageView, item.value);\n this.loadMoreItems({start: start, perPage: item.value});\n }\n\n /**\n * Helper method for calculating what page should be visible, it works with perPage and total amount of values.\n * @memberof DataViewClass\n * @function setPage\n * @param pageNumber {number} number of desired page, if this page is out of bound, it will be rounded.\n */\n public setPage(pageNumber) {\n if (pageNumber > this.settings.total) {\n this.currentPageView = this.settings.total;\n pageNumber = this.currentPageView;\n }\n this.currentPageView = pageNumber;\n const start = DataViewClass.calculateStartIndex(pageNumber, this.settings.perpage);\n this.loadMoreItems({start: start, perPage: this.settings.perpage});\n }\n\n public translateOf(start, end, total): string {\n return this.settings && this.settings.hasOwnProperty('translateTotalof') ?\n this.settings.translateTotalOf(start, end, total) :\n `${start} - ${end} of ${total}`;\n }\n\n public onItemButtonClick(item: any) {\n if (item.hasOwnProperty('onclick')) {\n new Function(item.onclick)();\n }\n }\n\n protected setPagingNumbers() {\n if (this.settings.hasOwnProperty('current') && this.settings.hasOwnProperty('perpage')) {\n this.settings.startIndex =\n this.settings.startIndex ||\n DataViewClass.calculateStartIndex(this.settings.current, this.settings.perpage);\n\n if (this.settings.current === this.settings.total) {\n this.settings.endIndex = this.settings.items - 1;\n } else {\n this.settings.endIndex = this.settings.current * this.settings.perpage - 1;\n }\n }\n }\n\n /**\n * Helper static method for calculating start index based on pageNumber and number of visible items.\n * @memberof DataViewClass\n * @function calculateStartIndex\n * @param pageNumber {number} current page number.\n * @param perPage {number} how many of items are visible per page.\n * @returns {number} start index for limit filter.\n */\n protected static calculateStartIndex(pageNumber, perPage) {\n return (pageNumber - 1) * perPage;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/interfaces/abstractDataViewClass.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/styles/ui-components.scss\n// module id = 8\n// module chunks = 0","import services from './services';\nimport components from './components';\nimport * as angular from 'angular';\n\nmodule common {\n export const app: ng.IModule = angular.module('miqStaticAssets.common', []);\n /*@ngInject*/\n app.config(($windowProvider: any) => {\n let windowService = $windowProvider.$get();\n if (!windowService.hasOwnProperty('__')) {\n windowService.__ = translateString => translateString;\n }\n });\n services(app);\n components(app);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/common/index.ts","import services from './services';\nimport components from './components';\nimport * as angular from 'angular';\n\nmodule dialogEditor {\n export const app = angular.module('miqStaticAssets.dialogEditor', [\n 'ui.sortable',\n 'ngDragDrop',\n 'frapontillo.bootstrap-switch'\n ]);\n services(app);\n components(app);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/index.ts","import components from './components';\nimport services from './services';\nimport * as angular from 'angular';\n\nmodule fonticonPicker {\n export const app = angular.module('miqStaticAssets.fonticonPicker', ['ui.bootstrap']);\n services(app);\n components(app);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/fonticon-picker/index.ts","import services from './services';\nimport filters from './filters';\nimport components from './components';\nimport * as angular from 'angular';\n\nmodule gtl {\n export const app = angular.module('miqStaticAssets.gtl', []);\n services(app);\n filters(app);\n components(app);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/index.ts","import * as angular from 'angular';\n\nmodule miqStaticAssets {\n angular.module('miqStaticAssets', [\n 'miqStaticAssets.toolbar',\n 'miqStaticAssets.common',\n 'miqStaticAssets.dialogEditor',\n 'miqStaticAssets.gtl',\n 'miqStaticAssets.siteSwitcher',\n 'miqStaticAssets.fonticonPicker'\n ]);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/index.ts","import SiteSwitcher from './siteSwitcherComponent';\nimport * as angular from 'angular';\nmodule siteSwitcher {\n export const app = angular.module('miqStaticAssets.siteSwitcher', []);\n app.component('miqSiteSwitcher', new SiteSwitcher);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/site-switcher/index.ts","import services from './services';\nimport components from './components';\nimport * as angular from 'angular';\n\nmodule toolbar {\n export const app = angular.module('miqStaticAssets.toolbar', ['ngSanitize']);\n services(app);\n components(app);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/index.ts","module.exports = \"
\\n
\\n \\n
\\n
\\n
\\n \\n {{ box.label }}\\n \\n
\\n
\\n
\\n
\\n \\n {{ 'Drag your components here' | translate }}\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n

Start with adding a box

\\n
\\n \\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/box/box.html\n// module id = 25\n// module chunks = 0","module.exports = \"
\\n \\n
\\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n\\n
\\n
\\n \\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/field/field.html\n// module id = 26\n// module chunks = 0","module.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/modal-field-template/check-box.html\n// module id = 27\n// module chunks = 0","module.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/modal-field-template/date-time-control.html\n// module id = 28\n// module chunks = 0","module.exports = \"\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/modal-field-template/dynamic.html\n// module id = 29\n// module chunks = 0","module.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/modal-field-template/radio-button-drop-down-list.html\n// module id = 30\n// module chunks = 0","module.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/modal-field-template/tag-control.html\n// module id = 31\n// module chunks = 0","module.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/modal-field-template/text-area-box.html\n// module id = 32\n// module chunks = 0","module.exports = \"\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/modal-field-template/text-box.html\n// module id = 33\n// module chunks = 0","module.exports = \"\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/tab-list/tab-list.html\n// module id = 34\n// module chunks = 0","module.exports = \"
\\n
\\n
\\n
\\n

\\n {{dialogField.label}}\\n

\\n
\\n

\\n \\n \\n \\n

\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/toolbox/toolbox.html\n// module id = 35\n// module chunks = 0","module.exports = \"
\\n \\n

Edit Dialog field

\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/services/modal/modal.html\n// module id = 36\n// module chunks = 0","module.exports = \"
\\n

Select an icon

\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/fonticon-picker/components/fonticon-picker/fonticon-modal.html\n// module id = 37\n// module chunks = 0","module.exports = \"
\\n \\n \\n
\\n
\\n\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/fonticon-picker/components/fonticon-picker/fonticon-picker.html\n// module id = 38\n// module chunks = 0","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\\n \\n {{column.text}}\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\\"{{row.cells[columnKey].title}}\\\"\\n\\n \\n {{row.cells[columnKey].text}}\\n \\n \\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/gtl/components/data-table/data-table.html\n// module id = 39\n// module chunks = 0","module.exports = \"\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/gtl/components/tile-view/paging.html\n// module id = 40\n// module chunks = 0","module.exports = \"
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n {{config.fetchTileName(item)}}\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
{{header.text}}:
\\n
{{item.cells[key].text | limitToSuffix : 25 : 25}}
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/gtl/components/tile-view/tile-view.html\n// module id = 41\n// module chunks = 0","module.exports = \"
\\n \\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/site-switcher/site-switcher.html\n// module id = 42\n// module chunks = 0","module.exports = \"\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/toolbar/components/toolbar-menu/toolbar-button.html\n// module id = 43\n// module chunks = 0","module.exports = \"
\\n \\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/toolbar/components/toolbar-menu/toolbar-list.html\n// module id = 44\n// module chunks = 0","module.exports = \"
\\n
\\n \\n \\n \\n \\n \\n 0\\\"\\n toolbar-list=\\\"item\\\"\\n on-item-click=\\\"vm.onItemClick(item, $event)\\\">\\n \\n
\\n
\\n
\\n \\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/toolbar/components/toolbar-menu/toolbar-menu.html\n// module id = 45\n// module chunks = 0","module.exports = \"
\\n \\n
\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/toolbar/components/toolbar-menu/toolbar-view.html\n// module id = 46\n// module chunks = 0","import SortItems from './sortItemsComponent';\n\nexport default (module: ng.IModule) => {\n module.component('miqSortItems', new SortItems);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/common/components/index.ts","import * as _ from 'lodash';\nimport * as ng from 'angular';\n/**\n * Controller for sort items component, it filters headers to fit config object of `pf-sort`.\n * @memberof miqStaticAssets.common\n * @ngdoc controller\n * @name SortItemsController\n */\nexport class SortItemsController {\n public headers: any;\n public options: any;\n public sortObject: any;\n public dropDownClass: any[];\n public onSort: (args: {sortObject: any, isAscending: boolean}) => void;\n\n /* @ngInject */\n constructor(private $element: any, private $timeout: any) {\n this.initOptions();\n }\n\n /**\n * Angular's method for checking one way data bounded properties changes.\n * @memberof SortItemsController\n * @function $onChanges\n * @param changesObj {Object} angular changes object.\n */\n public $onChanges(changesObj: any) {\n if (changesObj.headers) {\n this.fillFields();\n if (this.sortObject) {\n this.setSortItem();\n }\n }\n if (changesObj.dropDownClass) {\n this.applyClass();\n }\n }\n\n public $postLink() {\n //we have to wait for rendering of components, hence $timeout\n this.$timeout(() => this.applyClass());\n }\n\n /**\n * Public method for setting item which is currently sorted by. It will take id of object in `headers` as `colId`,\n * it's text as actual Id and same applies to `title`.\n * @memberof SortItemsController\n * @function setSortItem\n */\n public setSortItem() {\n if (this.sortObject && this.sortObject.sortObject && this.sortObject && this.sortObject.sortObject.text) {\n this.options.currentField = {\n colId: _.findIndex(this.headers, this.sortObject.sortObject),\n id: this.sortObject.sortObject.text.toLowerCase(),\n title: this.sortObject.sortObject.text\n };\n this.options.isAscending = this.sortObject.isAscending;\n }\n }\n\n /**\n * Public method which is called after constructing this controller. It will set default values for config object,\n * along side with sort method.\n * @memberof SortItemsController\n * @function initOptions\n */\n public initOptions() {\n this.options = {\n fields: [],\n onSortChange: (item: any, isAscending: boolean) => this.onSort({sortObject: item, isAscending: isAscending}),\n currentField: {}\n };\n }\n\n /**\n * Private method which will filter out and transform headers to config object. This function will filter out all\n * columns which has `is_narrow` and no `text` is set fot them. Also it will use each header key as `colId`,\n * text as `id` and again text as `title`.\n * @memberof SortItemsController\n * @function fillFields\n */\n private fillFields() {\n _.each(this.headers, (oneCol, key) => {\n if (!oneCol.hasOwnProperty('is_narrow') && oneCol.hasOwnProperty('text')) {\n this.options.fields.push({\n colId: key,\n id: oneCol.text.toLowerCase(),\n title: oneCol.text\n });\n }\n });\n }\n\n /**\n * Method for applying additional class for dropdown.\n * dropDownClass can be either string of classes, or array.\n */\n private applyClass() {\n if (this.dropDownClass) {\n Array.isArray(this.dropDownClass) ?\n this.$element.find('.uib-dropdown').addClass(...this.dropDownClass) :\n this.$element.find('.uib-dropdown').addClass(this.dropDownClass);\n }\n }\n}\n/**\n * @description\n * Component for showing sort component. See {@link miqStaticAssets.common.SortItemsController} on how functions\n * and properties are handled, This component requires `pf-sort` (see\n * patternfly's\n * implemetnation) component to be part of application scope.\n * If you do not provide such component no sort will be show. `pf-sort` requires `config` property which consists of:\n * ```javascript\n * config = {\n * fields: [],\n * onSortChange: (item: any, isAscending: boolean) => void,\n * currentField: {}\n * }\n * ```\n * @memberof miqStaticAssets.common\n * @ngdoc component\n * @name miqSortItems\n * @attr {Expression} onSort function which is called after sorting has changed.\n * @attr {Object} headers items which will be present in sort chooser.\n * @attr {Object} sortObject object which is currently sorted by.\n * @example\n * \n * \n */\nexport default class SortItems implements ng.IComponentOptions {\n public replace: boolean = true;\n public template = `
`;\n public controller = SortItemsController;\n public controllerAs = 'vm';\n public bindings: any = {\n onSort: '&',\n headers: '<',\n sortObject: '<',\n dropDownClass: '<'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/common/components/sortItemsComponent.ts","import {IEndpoints} from '../interfaces/endpoints';\nexport class DefaultEndpoints implements IEndpoints {\n public listDataTable: string;\n public deleteItemDataTable: string;\n public validateItem: string;\n public createItem: string;\n public providerSettings: string;\n public toolbarSettings: string;\n constructor() {\n this.listDataTable = '/list';\n this.deleteItemDataTable = '/delete';\n this.validateItem = '/validate';\n this.createItem = '/create';\n this.providerSettings = '/list_providers_settings';\n this.toolbarSettings = '/toolbar';\n }\n}\n\nexport default class EndpointsService {\n public endpoints: IEndpoints;\n public rootPoint: string = '';\n\n constructor() {\n this.endpoints = new DefaultEndpoints;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/common/services/endpointsService.ts","import EndpointsService from './endpointsService';\nimport TranslateService from './translateService';\n\nexport default (module: ng.IModule) => {\n module.service('MiQEndpointsService', EndpointsService);\n module.service('MiQTranslateService', TranslateService);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/common/services/index.ts","export default class TranslateService {\n /*@ngInject*/\n constructor(private $window: any) {}\n\n public translateString(stringToTranslate) {\n return this.$window.__(stringToTranslate);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/common/services/translateService.ts","import * as ng from 'angular';\nimport * as _ from 'lodash';\n\n/**\n * Controller for the Dialog Editor box component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name BoxController\n */\nclass BoxController {\n public sortableOptionsBox: any;\n public sortableOptionsFields: any;\n public service: any;\n public dialogTabs: any;\n\n /*@ngInject*/\n constructor(private DialogEditor: any, private DialogEditorModal: any) {\n }\n\n /**\n * Load service to be able to access it form the template.\n * Load status of tabs.\n * @memberof BoxController\n * @function $onInit\n */\n public $onInit() {\n this.service = this.DialogEditor;\n this.dialogTabs = this.DialogEditor.getDialogTabs();\n // Rules for Drag&Drop sorting of boxes\n this.sortableOptionsBox = {\n axis: 'y',\n cancel: '.nosort',\n cursor: 'move',\n opacity: 0.5,\n revert: 50,\n stop: (e: any, ui: any) => {\n let sortedBox = ui.item.scope().$parent.tab.dialog_groups;\n // update indexes of other boxes after changing their order\n this.DialogEditor.updatePositions(sortedBox);\n },\n };\n // Rules for Drag&Drop sorting of elements inside of boxes\n this.sortableOptionsFields = {\n axis: 'y',\n cancel: '.nosort',\n cursor: 'move',\n revert: 50,\n stop: (e: any, ui: any) => {\n let sortedField = ui.item.scope().$parent.box.dialog_fields;\n // update indexes of other fields after changing their order\n this.DialogEditor.updatePositions(sortedField);\n },\n };\n }\n\n /**\n * Add a new box to the list.\n * The new box is automatically appended to the last position of the list\n * @memberof BoxController\n * @function addBox\n */\n public addBox() {\n this.dialogTabs[this.DialogEditor.activeTab].dialog_groups\n .push(\n {\n description: __('Description'),\n label: __('Label'),\n display: 'edit',\n position: 0,\n dialog_fields: [],\n }\n );\n // update indexes of other boxes after adding a new one\n this.DialogEditor.updatePositions(\n this.dialogTabs[this.DialogEditor.activeTab].dialog_groups\n );\n }\n\n /**\n * Remove box and all its content from the dialog.\n * @memberof BoxController\n * @function removeBox\n * @param {number} id as index of removed box\n */\n public removeBox(id: number) {\n _.remove(\n this.dialogTabs[this.DialogEditor.activeTab].dialog_groups,\n (box) => box.position === id\n );\n // update indexes of other boxes after removing\n this.DialogEditor.updatePositions(\n this.dialogTabs[this.DialogEditor.activeTab].dialog_groups\n );\n }\n\n /**\n * Handle Drag&Drop event.\n * @memberof BoxController\n * @function droppableOptions\n * @param {number} event jQuery object\n * @param {number} ui jQuery object\n */\n public droppableOptions(e: any, ui: any) {\n let droppedItem = ng.element(e.target).scope();\n // update indexes of other boxes after changing their order\n this.DialogEditor.updatePositions(\n droppedItem.box.dialog_fields\n );\n }\n\n /**\n * Show modal to edit label and description of the box.\n * @memberof BoxController\n * @function editDialogModal\n * @param {number} tab is an index of tab, where the box is placed\n * @param {number} box is an index of box\n */\n public editDialogModal(tab: number, box: number) {\n this.DialogEditorModal.showModal(tab, box);\n }\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorBoxes\n * @description\n * Component implementing behaviour for the boxes inside of\n * the dialogs tabs.\n * @example\n * \n * \n */\nexport default class Box {\n public template = require('./box.html');\n public controller: any = BoxController;\n public controllerAs: string = 'vm';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/box/boxComponent.ts","import Box from './boxComponent';\n\nexport default (module: ng.IModule) => {\n module.component('dialogEditorBoxes', new Box);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/box/index.ts","/**\n * Controller for the Dialog Editor field component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name FieldController\n */\nclass FieldController {\n public service: any;\n public fieldData: any;\n public boxPosition: any;\n\n /*@ngInject*/\n constructor(private DialogEditor: any,\n private DialogEditorModal: any) {\n }\n\n /**\n * Load service to be able to access it form the template.\n * @memberof FieldController\n * @function $onInit\n */\n public $onInit() {\n this.service = this.DialogEditor;\n }\n\n /**\n * Show modal to edit details of the component\n * @memberof FieldController\n * @function editDialogModal\n * @param {number} tab is an index of tab, where the box is placed\n * @param {number} box is an index of box, where the field is placed\n * @param {number} field is an index of field\n */\n public editDialogModal(tab: number, box: number, field: number) {\n this.DialogEditorModal.showModal(tab, box, field);\n }\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorField\n * @description\n * Component implementing behaviour for the fields inside of\n * the dialogs boxes.\n * @example\n * \n */\nexport default class Field {\n public template = require('./field.html');\n public controller: any = FieldController;\n public controllerAs: string = 'vm';\n public bindings: any = {\n fieldData: '<',\n boxPosition: '<',\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/field/fieldComponent.ts","import Field from './fieldComponent';\n\nexport default (module: ng.IModule) => {\n module.component('dialogEditorField', new Field);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/field/index.ts","import tabList from './tab-list';\nimport box from './box';\nimport field from './field';\nimport toolbox from './toolbox';\nimport modalFieldTemplate from './modal-field-template';\n\nexport default (module: ng.IModule) => {\n tabList(module);\n box(module);\n field(module);\n toolbox(module);\n modalFieldTemplate(module);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/index.ts","import TabList from './tabListComponent';\n\nexport default (module: ng.IModule) => {\n module.component('dialogEditorTabs', new TabList);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/tab-list/index.ts","import * as ng from 'angular';\nimport * as _ from 'lodash';\n\n/**\n * Controller for the Dialog Editor tab list component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name TabListController\n */\nclass TabListController {\n public tabList: any;\n public sortableOptions: any;\n\n /*@ngInject*/\n constructor(private DialogEditor: any, private DialogEditorModal: any) {\n }\n\n /**\n * Activate the first tab in tab list, if there is any.\n * @memberof TabListController\n * @function onInit\n */\n public $onInit() {\n // load tabs data from the service\n this.tabList = this.DialogEditor.getDialogTabs();\n // set active tab\n if (this.tabList.length !== 0) {\n this.DialogEditor.activeTab = 0;\n this.tabList[this.DialogEditor.activeTab].active = true;\n }\n // set options for sorting tabs in list\n this.sortableOptions = {\n cancel: '.nosort',\n cursor: 'move',\n helper: 'clone',\n revert: 50,\n stop: (e: any, ui: any) => {\n let sortedTab = ng.element(ui.item).scope().$parent;\n let tabList = sortedTab.vm.tabList;\n this.DialogEditor.updatePositions(tabList);\n this.DialogEditor.activeTab = _.find(tabList, {active: true}).position;\n },\n };\n }\n\n /**\n * Add a new tab to the list.\n * New tab is automatically appended to the last position of the list and\n * set as active.\n * @memberof TabListController\n * @function addTab\n */\n public addTab() {\n // deactivate currently active tab\n this.tabList.forEach((tab) => tab.active = false);\n // create a new tab\n let nextIndex = this.tabList.length;\n this.tabList.push(\n {\n description: __('New tab ') + nextIndex,\n display: 'edit',\n label: __('New tab ') + nextIndex,\n position: nextIndex,\n active: true,\n dialog_groups: [],\n }\n );\n this.DialogEditor.activeTab = nextIndex;\n this.DialogEditor.updatePositions(this.tabList);\n }\n\n /**\n * Delete tab and all its content from the dialog.\n * After removing tab, position attributes needs to be updated.\n * If the tab to delete is active in the moment of the deletion, the\n * activity goes to the other tab.\n * @memberof TabListController\n * @function removeTab\n * @param {number} id is an index of remove tab\n */\n public removeTab(id: number) {\n // pass the activity to other tab, if the deleted is active\n if (this.tabList[id].active) {\n if ((this.tabList.length - 1) === this.tabList[id].position &&\n (this.tabList.length - 1) !== 0) {\n // active tab was at the end → new active tab is on previous index\n this.tabList[id - 1].active = true;\n } else if ((this.tabList.length - 1) > this.tabList[id].position) {\n // active tab was not at the end → new active tab is on following index\n this.tabList[id + 1].active = true;\n }\n }\n // remove tab with matching id\n _.remove(this.tabList, (tab) => tab.position === id);\n // update indexes of other tabs after removing\n if (this.tabList.length !== 0) {\n this.DialogEditor.updatePositions(this.tabList);\n } else {\n return;\n }\n // set activity in the service\n let activeTabData = _.find(\n this.tabList,\n {active: true}\n );\n if (ng.isDefined(activeTabData)) {\n this.DialogEditor.activeTab = activeTabData.position;\n }\n }\n\n /**\n * Assign activity to the selected tab.\n * @memberof TabListController\n * @function selectTab\n * @param {number} id is an index of remove tab\n */\n public selectTab(id: number) {\n // deactivate currently active\n let deselectedTab = _.find(\n this.tabList,\n {active: true}\n );\n deselectedTab.active = false;\n // activate selected\n let selectedTab = this.tabList[id];\n selectedTab.active = true;\n this.DialogEditor.activeTab = id;\n }\n\n /**\n * Show modal to edit label and description of the tab\n * @memberof TabListController\n * @function editDialogModal\n * @param {number} tab is an index of tab\n */\n public editDialogModal(tab: number) {\n this.DialogEditorModal.showModal(tab);\n }\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorTabs\n * @description\n * Component implementing behaviour for the tabs inside of\n * the dialogs.\n * @example\n * \n * \n */\nexport default class TabList {\n public template = require('./tab-list.html');\n public controller: any = TabListController;\n public controllerAs: string = 'vm';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/tab-list/tabListComponent.ts","import Toolbox from './toolboxComponent';\n\nexport default (module: ng.IModule) => {\n module.component('dialogEditorFieldStatic', new Toolbox);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/toolbox/index.ts","class DialogField {\n public icon: string;\n public label: string;\n public placeholders: any;\n\n constructor(type: string,\n icon: string,\n label: string,\n options: any = {}) {\n this.icon = icon;\n this.label = label;\n this.placeholders = Object.assign({\n name: '',\n description: '',\n type: type,\n display: 'edit',\n display_method_options: {},\n read_only: false,\n required: false,\n required_method_options: {},\n default_value: '',\n values_method_options: {},\n label: label,\n position: 0,\n dynamic: false,\n show_refresh_button: false,\n load_values_on_init: false,\n auto_refresh: false,\n trigger_auto_refresh: false,\n reconfigurable: false,\n visible: true,\n options: {\n protected: false,\n },\n resource_action: {resource_type: 'DialogField', ae_attributes: {}},\n }, options);\n }\n}\n\n/**\n * Controller for the Dialog Editor toolbox component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name ToolboxController\n */\nexport class ToolboxController {\n public fields: any = {\n dialogFieldTextBox:\n new DialogField(\n 'DialogFieldTextBox',\n 'fa fa-font',\n __('Text Box')\n ),\n dialogFieldTextAreaBox:\n new DialogField(\n 'DialogFieldTextAreaBox',\n 'fa fa-file-text-o',\n __('Text Area')\n ),\n dialogFieldCheckBox:\n new DialogField(\n 'DialogFieldCheckBox',\n 'fa fa-check-square-o',\n __('Check Box')\n ),\n dialogFieldDropDownList:\n new DialogField(\n 'DialogFieldDropDownList',\n 'fa fa-caret-square-o-down',\n __('Dropdown List'),\n {\n data_type: 'string',\n values: [],\n options: {sort_by: 'description', sort_order: 'ascending'},\n }\n ),\n dialogFieldRadioButton:\n new DialogField(\n 'DialogFieldRadioButton',\n 'fa fa-circle-o',\n __('Radio Button'),\n {\n data_type: 'string',\n values: [],\n options: {sort_by: 'description', sort_order: 'ascending'},\n }\n ),\n dialogFieldDateControl:\n new DialogField(\n 'DialogFieldDateControl',\n 'fa fa-calendar',\n __('Date Control')\n ),\n dialogFieldDateTimeControl:\n new DialogField(\n 'DialogFieldDateTimeControl',\n 'fa fa-clock-o',\n __('Date Time Control')\n ),\n dialogFieldTagControl:\n new DialogField(\n 'DialogFieldTagControl',\n 'fa fa-tags',\n __('Tag Control'),\n {\n data_type: 'string',\n values: [],\n options: {\n force_single_value: false,\n sort_by: 'description',\n sort_order: 'ascending',\n },\n }\n ),\n };\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name dialogEditorFieldStatic\n * @description\n * Component is used as a toolbox for the Dialog Editor.\n * @example\n * \n * \n */\nexport default class Toolbox {\n public template = require('./toolbox.html');\n public controller: any = ToolboxController;\n public controllerAs: string = 'vm';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/components/toolbox/toolboxComponent.ts","export default class DialogEditorService {\n public data: any = {};\n public activeTab: number = 0;\n\n /**\n * Store data passed in parameter.\n * @memberof DialogEditorService\n * @function setData\n * @param {any} nested object containing data of the dialog\n */\n public setData(data: any) {\n this.data = data;\n }\n\n /**\n * Return dialog id loaded at service.\n * @memberof DialogEditorService\n * @function getDialogId\n */\n public getDialogId() {\n return this.data.content[0].id;\n }\n\n /**\n * Return dialog label loaded at service.\n * @memberof DialogEditorService\n * @function getDialogLabel\n */\n public getDialogLabel() {\n return this.data.content[0].label;\n }\n\n /**\n * Return dialog description loaded at service.\n * @memberof DialogEditorService\n * @function getDialogDescription\n */\n public getDialogDescription() {\n return this.data.content[0].description;\n }\n\n /**\n * Return dialog tabs loaded at service.\n * @memberof DialogEditorService\n * @function getDialogTabs\n */\n public getDialogTabs() {\n return this.data.content[0].dialog_tabs;\n }\n\n /**\n * Update positions for elements in array.\n * @memberof DialogEditorService\n * @function updatePositions\n * @param {any[]} array of elements to sort\n */\n public updatePositions(elements: any[]) {\n elements.forEach((value, key) => value.position = key);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/services/dialogEditorService.ts","import DialogEditorService from './dialogEditorService';\nimport ModalService from './modal/modalService';\n\nexport default (module: ng.IModule) => {\n module.service('DialogEditor', DialogEditorService);\n module.service('DialogEditorModal', ModalService);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/services/index.ts","import * as _ from 'lodash';\nimport * as ng from 'angular';\n\n/**\n * Controller for the Dialog Editor modal service\n * @ngdoc controller\n * @name ModalController\n */\nclass ModalController {\n public modalTab: string = 'element_information';\n public modalData: any;\n public element: string;\n public categories: any;\n public dialog: any;\n\n /*@ngInject*/\n constructor(private dialogDetails: any,\n private $uibModalInstance: any,\n private API: any,\n private DialogEditor: any) {\n ng.extend(this, {\n dialog: this.dialogDetails,\n saveDialogFieldDetails: this.saveDialogFieldDetails,\n addEntry: this.addEntry,\n removeEntry: this.removeEntry,\n deleteField: this.deleteField,\n modalUnchanged: this.modalUnchanged,\n modalTabSet: this.modalTabSet,\n modalTabIsSet: this.modalTabIsSet,\n currentCategoryEntries: this.currentCategoryEntries,\n });\n\n // recognize edited element type\n if (ng.isUndefined(this.dialog.fieldId)\n && ng.isUndefined(this.dialog.boxId)\n && ng.isDefined(this.dialog.tabId)) {\n this.element = 'tab';\n } else if (ng.isUndefined(this.dialog.fieldId)\n && ng.isDefined(this.dialog.boxId)\n && ng.isDefined(this.dialog.tabId)) {\n this.element = 'box';\n } else if (ng.isDefined(this.dialog.fieldId)\n && ng.isDefined(this.dialog.boxId)\n && ng.isDefined(this.dialog.tabId)) {\n this.element = 'field';\n }\n\n // clone data from service\n switch (this.element) {\n case 'tab':\n this.modalData = _.cloneDeep(\n this.DialogEditor.getDialogTabs()[\n this.dialog.tabId\n ]\n );\n break;\n case 'box':\n this.modalData = _.cloneDeep(\n this.DialogEditor.getDialogTabs()[\n this.dialog.tabId\n ].dialog_groups[\n this.dialog.boxId\n ]\n );\n break;\n case 'field':\n this.modalData = _.cloneDeep(\n this.DialogEditor.getDialogTabs()[\n this.dialog.tabId\n ].dialog_groups[\n this.dialog.boxId\n ].dialog_fields[\n this.dialog.fieldId\n ]\n );\n // load categories from API, if the field is Tag Control\n if (this.modalData.type === 'DialogFieldTagControl') {\n this.resolveCategories().then(\n (categories: any) => {\n this.categories = categories;\n }\n );\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Load categories data from API.\n * @memberof ModalController\n * @function resolveCategories\n */\n public resolveCategories() {\n return this.API.get('/api/categories' +\n '?expand=resources' +\n '&attributes=description,single_value,children');\n }\n\n /**\n * Store the name of the tab, that is currently selected.\n * @memberof ModalController\n * @function modalTabSet\n * @param tab is a name of the tab in the modal\n */\n public modalTabSet(tab: string) {\n this.modalTab = tab;\n }\n\n /**\n * Returns true/false according to which tab is currently\n * selected in the modal.\n * @memberof ModalController\n * @function modalTabIsSet\n */\n public modalTabIsSet(tab: string) {\n return this.modalTab === tab;\n }\n\n /**\n * Check for changes in the modal.\n * @memberof ModalController\n * @function modalUnchanged\n */\n public modalUnchanged() {\n switch (this.element) {\n case 'tab':\n return _.isMatch(\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ],\n this.modalData\n );\n case 'box':\n return _.isMatch(\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ].dialog_groups[\n this.dialog.boxId\n ],\n this.modalData\n );\n case 'field':\n return _.isMatch(\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ].dialog_groups[\n this.dialog.boxId\n ].dialog_fields[\n this.dialog.fieldId\n ],\n this.modalData\n );\n default:\n break;\n }\n }\n\n /**\n * Store modified data back to the service.\n * @memberof ModalController\n * @function saveDialogFieldDetails\n */\n public saveDialogFieldDetails() {\n // TODO: add verification for required forms\n // store data to service\n switch (this.element) {\n case 'tab':\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ].label = this.modalData.label;\n // description\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ].description = this.modalData.description;\n break;\n case 'box':\n // label\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ].dialog_groups[\n this.dialog.boxId\n ].label = this.modalData.label;\n // description\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ].dialog_groups[\n this.dialog.boxId\n ].description = this.modalData.description;\n break;\n case 'field':\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ].dialog_groups[\n this.dialog.boxId\n ].dialog_fields[\n this.dialog.fieldId\n ] = this.modalData;\n break;\n default:\n break;\n }\n\n // close modal\n this.$uibModalInstance.close();\n }\n\n /**\n * Delete dialog field selected in modal.\n * @memberof ModalController\n * @function deleteField\n */\n public deleteField() {\n _.remove(\n this.DialogEditor.getDialogTabs()[\n this.DialogEditor.activeTab\n ].dialog_groups[\n this.dialog.boxId\n ].dialog_fields,\n (field: any) => field.position === this.dialog.fieldId\n );\n\n // close modal\n this.$uibModalInstance.close();\n }\n\n /**\n * Add entry for radio button / dropdown select.\n * @memberof ModalFieldController\n * @function addEntry\n */\n public addEntry() {\n this.modalData.values.push(['', '']);\n }\n\n /**\n * Remove entry for radio button / dropdown select\n * @memberof ModalFieldController\n * @function removeEntry\n * @param entry to remove from array\n */\n public removeEntry(entry: any) {\n _.pull(this.modalData.values, entry);\n }\n\n /**\n * Finds entries for the selected category.\n * @memberof ModalController\n * @function currentCategoryEntries\n */\n public currentCategoryEntries() {\n if (ng.isDefined(this.categories)) {\n return _.find(\n this.categories.resources,\n 'id',\n Number(this.modalData.options.category_id)\n );\n }\n }\n}\n\nexport default class ModalService {\n /** @ngInject */\n constructor(private $uibModal: any) {\n }\n\n /**\n * Show modal of the element.\n * @memberof ModalService\n * @function showModal\n * @param {number} index of tab, where the box is placed\n * @param {number} index of box, where the field is placed\n * @param {number} index of field\n */\n public showModal(tab: number, box: number, field: number) {\n let modalOptions = {\n template: require('./modal.html'),\n controller: ModalController,\n controllerAs: 'vm',\n size: 'lg',\n resolve: {\n dialogDetails: () => {\n return {tabId: tab, boxId: box, fieldId: field};\n },\n },\n };\n let modal = this.$uibModal.open(modalOptions);\n\n return modal.result.catch(() => undefined);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/dialog-editor/services/modal/modalService.ts","import { FonticonPickerController } from '../fonticon-picker/fonticonPickerComponent';\n\nclass FonticonFamilyController {\n public FonticonPickerCtrl : FonticonPickerController;\n private title : string;\n private selector : string;\n\n public $onInit() {\n this.FonticonPickerCtrl.addFamily({\n title: this.title,\n selector: this.selector\n });\n }\n}\n\nexport default class FonticonPicker implements ng.IComponentOptions {\n public controller = FonticonFamilyController;\n public require = {\n FonticonPickerCtrl: '^miqFonticonPicker'\n };\n public bindings = {\n title: '@',\n selector: '@'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/fonticon-picker/components/fonticon-family/fonticonFamilyComponent.ts","import FonticonService from '../../services/fonticonService';\n\nexport class FonticonPickerController {\n public families = [];\n public fonticons;\n public btnClass = 'btn-default';\n public selected;\n public toSelect;\n public inputName;\n private modal;\n\n /*@ngInject*/\n constructor(private MiQFonticonService: FonticonService, private $uibModal) {}\n\n public addFamily(font) {\n this.families.push(font);\n }\n\n public openModal() {\n if (this.fonticons === undefined) {\n this.fonticons = this.MiQFonticonService.fetch(this.families);\n }\n\n this.toSelect = this.selected;\n\n this.modal = this.$uibModal.open({\n template: require('./fonticon-modal.html'),\n windowClass: 'fonticon-modal',\n keyboard: false,\n size: 'lg',\n controllerAs: '$ctrl',\n controller: ['parent', function(parent) { this.parent = parent; }],\n resolve: {\n parent: () => this\n },\n });\n }\n\n public closeModal(save) {\n if (save) {\n this.selected = this.toSelect;\n }\n this.modal.close();\n }\n\n public markToSelect(icon) {\n this.toSelect = icon;\n }\n}\n\nexport default class FonticonPicker implements ng.IComponentOptions {\n public controller = FonticonPickerController;\n public template = require('./fonticon-picker.html');\n public transclude = true;\n public bindings = {\n btnClass: '@?',\n selected: '@',\n inputName: '@'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/fonticon-picker/components/fonticon-picker/fonticonPickerComponent.ts","import * as ng from 'angular';\nimport FonticonPicker from './fonticonPickerComponent';\n\nexport default (module: ng.IModule) => {\n module.component('miqFonticonPicker', new FonticonPicker);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/fonticon-picker/components/fonticon-picker/index.ts","import FonticonPicker from './fonticon-picker';\nimport FonticonFamily from './fonticon-family';\n\nexport default (module: ng.IModule) => {\n FonticonPicker(module);\n FonticonFamily(module);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/fonticon-picker/components/index.ts","import * as _ from 'lodash';\n\nexport default class FonticonService {\n public fetch(families: any): any {\n return _.reduce(families, (result: any, value: any) => {\n result[value.selector] = FonticonService.filterRules(value.selector);\n return result;\n }, {});\n }\n\n private static filterRules(family: string): any[] {\n return _.chain(document.styleSheets)\n .map((oneSheet: any) => oneSheet.rules)\n .map((rule: any) => _.filter(rule, value => FonticonService.isFontIcon(value, family)))\n .filter((rules: any) => rules.length !== 0)\n .map((rules: any[]) => _.map(rules, (value: any) => FonticonService.clearRule(value.selectorText)))\n .flatten()\n .reduce((result: any[], value: string) => [...result, FonticonService.makeRuleObject(family, value)], [])\n .value();\n }\n\n private static isFontIcon(value, family): boolean {\n return value.selectorText && value.selectorText.indexOf(family) === 1 && value.cssText.indexOf('content:') !== -1;\n }\n\n private static clearRule(rule: string): string {\n return rule.replace('::before', '').split(',')[0].replace('.', '');\n }\n\n private static makeRuleObject(family, value): any {\n return {\n 'class': `${family} ${value}`,\n 'selector': `.${family}.${value}`\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/fonticon-picker/services/fonticonService.ts","import FonticonService from './fonticonService';\n\nexport default (module: ng.IModule) => {\n module.service('MiQFonticonService', FonticonService);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/fonticon-picker/services/index.ts","import {IDataTableBinding} from '../../interfaces/dataTable';\nimport {DataViewClass} from '../../interfaces/abstractDataViewClass';\nimport * as _ from 'lodash';\n\n/**\n * This controller is for managing data table entities. It extends {@link miqStaticAssets.gtl.DataViewClass}\n * which is abstract class with basic methods for filtering, sorting and limiting entries in data table.\n * @extends miqStaticAssets.gtl.DataViewClass\n * @memberof miqStaticAssets.gtl\n * @ngdoc controller\n * @name DataTableController\n */\nexport class DataTableController extends DataViewClass implements IDataTableBinding {\n public currentPageView: number;\n\n /**\n * This method will check if user wants to go to non existent page and will validate it.\n * @memberof DataTableController\n * @function setTablePage\n * @param pageNumber {Number} desired page.\n */\n public setTablePage(pageNumber) {\n pageNumber = Number(pageNumber);\n if (_.isNaN(pageNumber)) {\n this.currentPageView = this.settings.current;\n pageNumber = this.currentPageView;\n } else {\n if (pageNumber <= 0) {\n this.currentPageView = 1;\n pageNumber = 1;\n }\n this.setPage(pageNumber);\n }\n }\n\n /**\n * Public method for getting column class, narrow column with checkbox or image.\n * @memberof DataTableController\n * @function getColumnClass\n * @param column {Object} header column. This column will have `is_narrow` property set to true and `narrow` class\n * will be present in classes.\n * @returns {Object} angular class object. `{narrow: boolean}`\n */\n public getColumnClass(column: any) {\n return {\n narrow: column.is_narrow,\n 'table-view-pf-select': column.is_narrow\n };\n }\n\n /**\n * Public method for checking if column of table is icon or image.\n * @memberof DataTableController\n * @function isIconOrImage\n * @param row {object} whole row with data.\n * @param columnKey header column key.\n * @returns {boolean} true | false, if column is image or icon.\n */\n public isIconOrImage(row, columnKey): boolean {\n return row && row.cells &&\n (row.cells[columnKey].hasOwnProperty('icon') || row.cells[columnKey].hasOwnProperty('image'));\n }\n\n /**\n * Public method for finding out if it's filtered by header column.\n * @memberof DataTableController\n * @function isFilteredBy\n * @param column column which is checked if it's filtered by.\n * @returns {boolean} true | false if `this.settings.sortBy.sortObject.col_idx` is equal to `column.col_idx`.\n */\n public isFilteredBy(column: any) {\n return !!this.settings.sortBy && (this.settings.sortBy.sortObject.col_idx === column.col_idx);\n }\n\n /**\n * Public method for getting sort class, either `fa-sort-asc` or `fa-sort-desc`.\n * @memberof DataTableController\n * @function getSortClass\n * @returns {Object} angular class object: `{fa-sort-asc: boolean, fa-sort-desc: boolean}`\n */\n public getSortClass() {\n return {\n 'fa-sort-asc': !!this.settings.sortBy && this.settings.sortBy.isAscending,\n 'fa-sort-desc': !(!!this.settings.sortBy && this.settings.sortBy.isAscending)\n };\n }\n\n /**\n * Angular's $onchange function to find out if one of bounded option has changed.\n * @memberof DataTableController\n * @function $onChanges\n * @param changesObj angular changed object.\n */\n public $onChanges(changesObj: any) {\n if (changesObj.settings && this.settings) {\n this.currentPageView = this.settings.current;\n }\n\n if (changesObj.perPage) {\n this.perPage.text += ' ' + this.perPage.labelItems;\n this.perPage.items = this.perPage.items.map(oneItem => {\n oneItem.text += ' ' + this.perPage.labelItems;\n return oneItem;\n });\n }\n\n this.setPagingNumbers();\n }\n}\n\n/**\n * @description\n * Component for data table.\n * @memberof miqStaticAssets.gtl\n * @ngdoc component\n * @name miqDataTable\n * @attr {Object} rows\n * Array of rows which will be displayed.\n * @attr {Object} perPage\n * Object which will be displayed as dropdown picker to filter number of rows.\n * @attr {Object} columns\n * Columns which will be displayed as header in table.\n * @attr {Object} settings\n * Table settings look at {@see ITableSettings} for more information.\n * @attr {Expression} loadMoreItems\n * Function which will be called upon loading more items. Function call has to have `start`, `perPage` params.\n * @attr {Expression} onSort\n * Function to triggering sorting items. Function call has to have `headerId`, `isAscending` params.\n * @attr {Expression} onRowClick\n * Function which will be executed when click on row event is fired. Function call has to have `item` param.\n * @attr {Expression} onItemSelected\n * Function to be called on selecting item (trough selectbox next to each row). Function call has to have `item`,\n * `isSelected` params.\n * @example\n * \n * \n */\nexport default class DataTable {\n public replace: boolean = true;\n public template = require('./data-table.html');\n public controller: any = DataTableController;\n public transclude: boolean = true;\n public controllerAs: string = 'tableCtrl';\n public bindings: any = {\n rows: '<',\n columns: '<',\n perPage: '<',\n settings: '<',\n loadMoreItems: '&',\n onSort: '&',\n onRowClick: '&',\n onItemSelected: '&'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/components/data-table/dataTableComponent.ts","import DataTable from './dataTableComponent';\n\nexport default (module: ng.IModule) => {\n module.component('miqDataTable', new DataTable);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/components/data-table/index.ts","import dataTable from './data-table';\nimport tiles from './tile-view';\n\nexport default (module: ng.IModule) => {\n dataTable(module);\n tiles(module);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/components/index.ts","import TileView from './tileViewComponent';\nimport Paging from './pagingComponent';\n\nexport default (module: ng.IModule) => {\n module.component('miqTileView', new TileView);\n module.component('miqPaging', new Paging);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/components/tile-view/index.ts","import * as _ from 'lodash';\n\n/**\n * Controller for paging component\n * @memberof miqStaticAssets.gtl\n * @ngdoc controller\n * @name PagingController\n */\nexport class PagingController {\n public settings: any;\n public pages: any;\n public onChangePage: (args: {pageNumber: any}) => void;\n private MAX_PAGES = 6;\n\n /**\n * Public method for updating current paging, it will limit number of visible pages to `MAX_PAGES`.\n * @memberof PagingController\n * @function updatePages\n * @param total number of all item's pages.\n * @returns {any} array with page numbers which will be visible.\n */\n public updatePages(total) {\n if (total > this.MAX_PAGES) {\n let currentPage =\n (this.settings.current < (this.settings.total - this.MAX_PAGES + 1)) ?\n this.settings.current :\n (this.settings.total - this.MAX_PAGES + 1);\n this.pages = _.times(this.MAX_PAGES, item => (currentPage + item) - 1);\n } else {\n this.pages = new Array(total);\n _.each(this.pages, (item, key) => {\n this.pages[key] = key;\n });\n }\n return this.pages;\n }\n}\n\n/**\n * @description\n * Component for show paging for some long list (e.g. these are used in tile lists).\n * Settings object example:\n * ```javascript\n * {\n * current: 1,\n * total: 5\n * }\n * ```\n * @memberof miqStaticAssets.gtl\n * @ngdoc component\n * @name miqPaging\n * @attr {Object} settings\n * settings for paging component. It has `current` attribute `Number` and total `Number`\n *\n * @attr {Expression} onChangePage\n * object which is currently sorted by.\n * @example\n * \n * \n */\nexport default class Paging implements ng.IComponentOptions {\n public replace = true;\n public controller = PagingController;\n public template = require('./paging.html');\n public controllerAs = 'pagingCtrl';\n public bindings: any = {\n settings: '<',\n onChangePage: '&'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/components/tile-view/pagingComponent.ts","import {TileType} from '../../interfaces/tileType';\nimport {IDataTableBinding} from '../../interfaces/dataTable';\nimport {DataViewClass} from '../../interfaces/abstractDataViewClass';\nimport * as _ from 'lodash';\n\n/**\n * Controller for tile components. It extends {@link miqStaticAssets.gtl.DataViewClass}.\n * @memberof miqStaticAssets.gtl\n * @ngdoc controller\n * @name TileViewController\n */\nexport class TileViewController extends DataViewClass implements IDataTableBinding {\n public type: string;\n public options: any;\n /* @ngInject */\n constructor(private $sce: any, MiQTranslateService: any) {\n super(MiQTranslateService);\n this.initOptions();\n }\n\n /**\n * Method for creating basic options for tiles.\n * @memberof TileViewController\n * @function initOptions\n */\n private initOptions(): void {\n this.options = {\n selectionMatchProp: 'id',\n selectItems: false,\n multiSelect: true,\n showSelectBox: true,\n selectedItems: this.filterSelected(),\n onClick: (item, event) => this.onTileClick(item),\n onCheckBoxChange: (item) => this.onTileSelect(item),\n onItemClick: (item: any, $event: any) => this.onRowClick({item: item, event: $event}),\n onButtonItemClick: (item: any) => this.onItemButtonClick(item),\n fetchTileName: (item) => this.fetchTileName(item),\n trustAsHtmlQuadicon: (item) => this.trustAsHtmlQuadicon(item),\n type: this.type\n };\n }\n\n /**\n * Method for enabling quadicons html to be displayed inside tile.\n * @memberof TileViewController\n * @function trustAsHtmlQuadicon\n * @param item item with quadicon.\n * @returns {any} trusted html object, which cn be used as `bind-html`.\n */\n public trustAsHtmlQuadicon(item) {\n return this.$sce.trustAsHtml(item.quadicon);\n }\n\n /**\n * Method for fetching name of item, it will try to guess which column should be showed as name of tile, usually it's\n * column with Name in them.\n * @memberof TileViewController\n * @function fetchTileName\n * @param item which will be displayed in tile. If no column with name is not present third cell text will be used.\n * @returns {string} text which will be displayed as tile header.\n */\n public fetchTileName(item): string {\n const nameIndex = _.findIndex(this.columns, oneColumn => oneColumn.text && oneColumn.text.indexOf('Name') !== -1);\n return (nameIndex !== -1 && item.cells && item.cells[nameIndex]) ?\n item.cells[nameIndex]['text'] :\n item.cells[2]['text'];\n }\n\n /**\n * Angular's method for fetching change events.\n * @memberof TileViewController\n * @function $onChanges\n * @param changesObj angular's change object.\n */\n public $onChanges(changesObj: any) {\n if (changesObj.type) {\n this.options.type = this.type;\n } else if (changesObj.columns) {\n this.options.columns = this.columns;\n }\n\n if (changesObj.perPage) {\n this.perPage.text += ' ' + this.perPage.labelItems;\n this.perPage.items = this.perPage.items.map(oneItem => {\n oneItem.text += ' ' + this.perPage.labelItems;\n return oneItem;\n });\n }\n\n if (changesObj.settings) {\n this.options.showSelectBox = !this.settings.hideSelect;\n }\n\n this.setPagingNumbers();\n }\n\n /**\n * Method which will be called when clicking on tile.\n * @memberof TileViewController\n * @function onTileClick\n * @param item which tile was clicked.\n */\n public onTileClick(item) {\n if (!this.settings.hideSelect) {\n this.onItemSelected({item: item, isSelected: !item.selected});\n }\n }\n\n public onTileSelect(item) {\n this.onItemSelected({item: item, isSelected: item.selected});\n }\n\n /**\n * Method for checking all tiles and then filtering selected items.\n * @memberof TileViewController\n * @function tileClass\n * @param isSelected true | false.\n */\n public onCheckAllTiles(isSelected: boolean) {\n this.onCheckAll(isSelected);\n this.options.selectedItems = this.filterSelected();\n }\n\n /**\n * Method for filtering selected tiles based on checked property.\n * @memberof TileViewController\n * @function tileClass\n * @returns filtered array of checked items.\n */\n public filterSelected() {\n return _.filter(this.rows, {checked: true});\n }\n\n /**\n * Angular's method for getting tile's class based on it's type.\n * @memberof TileViewController\n * @function tileClass\n * @returns {Object} it will return angular class object: `{miq-small-tile: boolean, miq-tile-with-body: boolean}`\n */\n public tileClass() {\n return {\n 'miq-small-tile': this.type === TileType.SMALL,\n 'miq-tile-with-body': this.type === TileType.BIG\n };\n }\n}\n\n/**\n * @description\n * Component for tile list. This component requires pf-tile to be part of angular's components. For patternfly's\n * implementation look at\n * pfCardView\n * @memberof miqStaticAssets.gtl\n * @ngdoc component\n * @name miqTileView\n * @attr {Object} type\n * Type of tile look at {@see miqStaticAssets.gtl.TileType}\n * @attr {Object} rows\n * Array of rows which will be displayed.\n * @attr {Object} perPage\n * Object which will be displayed as dropdown picker to filter number of tiles.\n * @attr {Object} columns\n * Columns which will be displayed as header in tile.\n * @attr {Object} settings\n * Tile settings look at {@see ITableSettings} for more information.\n * @attr {Expression} loadMoreItems\n * Function which will be called upon loading more items. Function call has to have `start`, `perPage` params.\n * @attr {Expression} onSort\n * Function to triggering sorting items. Function call has to have `headerId`, `isAscending` params.\n * @attr {Expression} onRowClick\n * Function which will be executed when click on tile event is fired. Function call has to have `item` param.\n * @attr {Expression} onItemSelected\n * Function to be called on selecting item (trough clicking on tile). Function call has to have `item`, `isSelected`\n * params.\n * @example\n * \n * \n */\nexport default class TileView implements ng.IComponentOptions {\n public replace = true;\n public controller = TileViewController;\n public template = require('./tile-view.html');\n public controllerAs = 'tileCtrl';\n public bindings: any = {\n type: '<',\n rows: '<',\n columns: '<',\n perPage: '<',\n settings: '<',\n loadMoreItems: '&',\n onSort: '&',\n onRowClick: '&',\n onItemSelected: '&'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/components/tile-view/tileViewComponent.ts","import LimitToSuffix from './limitToSuffixFilter';\n\nexport default (module: ng.IModule) => {\n module.filter('limitToSuffix', LimitToSuffix.filter);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/filters/index.ts","export default class LimitToSuffix {\n public static filter() {\n return (value, start, end) => {\n return value.length > start + end + 3 ? `${value.slice(0, start)}...${value.slice(-end)}` : value;\n };\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/filters/limitToSuffixFilter.ts","/**\n * Enum for tile types. It holds string value of types for tiles.\n * @memberof miqStaticAssets.gtl\n * @ngdoc enum\n * @name TileType\n */\nexport const TileType = {\n /**\n * Tile type: `small`\n * @type {string}\n */\n SMALL : 'small',\n /**\n * Tile type: `big`\n * @type {string}\n */\n BIG : 'big'\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/interfaces/tileType.ts","import {IDataTableService, IRowsColsResponse} from '../interfaces/dataTable';\nimport * as _ from 'lodash';\n\n/**\n * @memberof miqStaticAssets.gtl\n * @ngdoc service\n * @name DataTableService\n * @param $http {ng.IHttpService} http service for fetching rows and columns of data table.\n * @param MiQEndpointsService {Object} service which holds endpoints to each data store.\n */\nexport default class DataTableService implements IDataTableService {\n private columns: any[];\n private rows: any[];\n private settings: any;\n /*@ngInject*/\n constructor(private $http: ng.IHttpService, private MiQEndpointsService: any) {}\n\n /**\n * Public method for fetching data from url combined from `MiQEndpointsService.rootPoint` and\n * `MiQEndpointsService.endpoints.listDataTable`. Result will be promise with type `IRowsColsResponse`. Which is\n * ```javascript\n * interface IRowsColsResponse {\n * rows: any[];\n * cols: any[];\n * settings: ITableSettings;\n * }\n * ```\n * @methodOf miqStaticAssets.gtl\n * @memberof DataTableService\n * @function retrieveRowsAndColumnsFromUrl\n * @returns {ng.IPromise} promise with type `IRowsColsResponse`.\n */\n public retrieveRowsAndColumnsFromUrl(modelName?: string,\n activeTree?: string,\n currId?: string,\n isExplorer?: string,\n settings?: any,\n records?: any): ng.IPromise {\n return this.fetchData(DataTableService.generateConfig(modelName, activeTree, currId, isExplorer, settings, records))\n .then(responseData => {\n this.columns = responseData.data.data.head;\n this.rows = responseData.data.data.rows;\n this.settings = responseData.data.settings;\n return {\n cols: this.columns,\n rows: this.rows,\n messages: responseData.data.messages,\n settings: responseData.data.settings\n };\n }\n );\n }\n\n /**\n * Method which will do actual http get request using $http service.\n * @param config which contains config params.\n * @returns {IHttpPromise} promise for later data filtering.\n */\n private fetchData(config: any): ng.IPromise {\n return this.$http.get(\n this.MiQEndpointsService.rootPoint + this.MiQEndpointsService.endpoints.listDataTable,\n config\n );\n }\n\n /**\n * Static function which will generate http get config from given variables.\n * @param modelName string with name of model.\n * @param activeTree string with active tree.\n * @param currId ID of current item.\n * @param isExplorer\n * @param settings\n * @param records\n * @returns {{params: {}}} config object with params set.\n */\n public static generateConfig(modelName?: string,\n activeTree?: string,\n currId?: string,\n isExplorer?: string,\n settings?: any,\n records?: any) {\n let config = {params: {}};\n _.assign(config.params, DataTableService.generateModelConfig(modelName));\n _.assign(config.params, DataTableService.generateActiveTreeConfig(activeTree));\n _.assign(config.params, DataTableService.generateModuleIdConfig(currId));\n _.assign(config.params, DataTableService.generateExplorerConfig(isExplorer));\n _.assign(config.params, DataTableService.generateParamsFromSettings(settings));\n _.assign(config.params, DataTableService.generateRecords(records));\n return config;\n }\n\n /**\n * Static function for generating model object, this object will be assigned to `config.params`.\n * @param modelName name of currently selected model.\n * @returns {any|{model: any}} object if any model is selected.\n */\n private static generateModelConfig(modelName): any {\n return modelName && {model: modelName};\n }\n\n /**\n * Static function for generating active tree object, this object will be assigned to `config.params`.\n * @param activeTree name of currently selected tree.\n * @returns {any|{active_tree: any}} object if any tree is selected.\n */\n private static generateActiveTreeConfig(activeTree): any {\n return activeTree && {active_tree: activeTree};\n }\n\n /**\n * Static function for generating module id object, this object will be assigned to `config.params`.\n * @param currId currently selected module's ID.\n * @returns {any|{model_id: any}} object if any module ID is present.\n */\n private static generateModuleIdConfig(currId): any {\n return currId && currId !== null && {model_id: currId};\n }\n\n /**\n *\n * @param isExplorer\n * @returns {any|boolean|{explorer: any}}\n */\n private static generateExplorerConfig(isExplorer): any {\n return isExplorer && isExplorer !== null && {explorer: isExplorer};\n }\n\n private static generateParamsFromSettings(settings): any {\n let params = {};\n if (settings) {\n _.assign(params, settings.current && {page: settings.current});\n _.assign(params, settings.perpage && {ppsetting: settings.perpage});\n _.assign(params, settings.sortBy && settings.sortBy.sortObject && {sort_choice: settings.sortBy.sortObject.text});\n _.assign(params, settings.sortBy && settings.sortBy.isAscending && {is_ascending: settings.sortBy.isAscending});\n }\n return params;\n }\n\n private static generateRecords(records) {\n return records && records !== null && {'records[]': records};\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/services/dataTableService.ts","import DataTableService from './dataTableService';\n\nexport default (module: ng.IModule) => {\n module.service('MiQDataTableService', DataTableService);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/gtl/services/index.ts","/**\n * @interface\n */\nexport interface ISite {\n url: string;\n title: string;\n tooltip?: string;\n iconClass: any;\n}\n\n/**\n * Controller for site switcher component\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name SiteSwitcherController\n */\nexport class SiteSwitcherController {\n}\n\n/**\n * @description\n * Component for showing a site switcher drop down for moving between different UI's.\n * Settings object example:\n * ```javascript\n * {\n * sites: [{\n * title: 'Launch Operations UI',\n * tooltip: 'Launch Operations UI',\n * iconClass: 'fa-cogs',\n * url: 'http://www.manageiq.com'\n * }, {\n * title: 'Launch Service UI',\n * tooltip: 'Launch Service UI',\n * iconClass: 'fa-cog',\n * url: 'http://www.manageiq.com'\n * }, {\n * title: 'Home',\n * tooltip: 'Home',\n * iconClass: 'fa-home',\n * url: 'http://www.manageiq.com'\n * }]\n * }\n * ```\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name miqSiteSwitcher\n * @attr {Array} sites\n * An array of sites to display in the switcher (includes url, iconClass, tooltip and title).\n * Since we use typescript this attribute has specific type of: `Array`\n *\n * @example\n * \n * \n */\nexport default class SiteSwitcher implements ng.IComponentOptions {\n public controller = SiteSwitcherController;\n public template = require('./site-switcher.html');\n public controllerAs = 'ctrl';\n public bindings: any = {\n sites: '<'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/site-switcher/siteSwitcherComponent.ts","import toolbarMenu from './toolbar-menu';\nimport * as ng from 'angular';\n\nexport default (module: ng.IModule) => {\n toolbarMenu(module);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/components/index.ts","import Toolbar from './toolbarComponent';\nimport ToolbarButton from './toolbarButtonDirective';\nimport ToolbarList from './toolbarListComponent';\nimport ToolbarView from './toolbarViewComponent';\n\nexport default (module: ng.IModule) => {\n module.component('miqToolbarMenu', new Toolbar);\n module.component('miqToolbarList', new ToolbarList);\n module.component('miqToolbarView', new ToolbarView);\n module.directive('miqToolbarButton', ToolbarButton.Factory());\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/components/toolbar-menu/index.ts","import * as ng from 'angular';\n/**\n * @memberof miqStaticAssets\n * @ngdoc directive\n * @name miqToolbarButton\n * @description\n * Directive withou controller. It will create new toolbar button in toolbar.\n *\n * @attr {Expression} onItemClick\n * Method for handling clicking on this button (will be called with `{item: item}` object).\n * @attr {IToolbarItem} toolbarButton\n * Toolbar item based on which will be this button generated.\n * @example\n * \n * \n */\nexport default class ToolbarButton implements ng.IDirective {\n public replace: boolean = true;\n public template = require('./toolbar-button.html');\n public scope: any = {\n toolbarButton: '<',\n onItemClick: '&'\n };\n\n public static Factory = () => {\n let directive: ng.IDirectiveFactory = () => new ToolbarButton();\n directive.$inject = [];\n return directive;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/components/toolbar-menu/toolbarButtonDirective.ts","import {IToolbarItem} from '../../interfaces/toolbar';\nimport {ToolbarType} from '../../interfaces/toolbarType';\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name ToolbarController\n * @param $window {ng.IWindowService} window service for redirecting to non angular pages.\n * @param $location {ng.ILocationService} location service to handle redirect to different angular pages.\n * @param $sce {ng.ISCEService} service for enabling html strings to be html objects injected to page as html and not as\n * string.\n */\nexport class ToolbarController {\n public toolbarItems: any;\n public toolbarViews: any;\n public onViewClick: (args: {item: any, $event: any}) => void;\n /*@ngInject*/\n constructor(private $window: ng.IWindowService,\n private $location: ng.ILocationService,\n private $sce: ng.ISCEService) {\n }\n\n /**\n * Handle clicking on item in toolbar.\n * Check what function has item for handling click action it's one of [actionUrl, redirectUrl, actionFunction,\n * eventFunction].\n * * actionUrl - will perform location path change.\n * * redirectUrl - will perform window redirect.\n * * actionFunction - will perform call without any arguments.\n * * eventFunction - will perform call to this function with $event specified.\n * @memberof ToolbarController\n * @function onItemClick\n * @param {Object} item what was clicked in toolbar (member of toolbar items).\n * @param {Object} $event for passing it to eventFunction of item (good for checking target).\n */\n public onItemClick(item: any, $event: any) {\n if (item.hasOwnProperty('actionUrl')) {\n this.$location.path(item.actionUrl);\n } else if (item.hasOwnProperty('redirectUrl')) {\n this.$window.location.replace(item.redirectUrl);\n } else if (item.hasOwnProperty('actionFunction')) {\n item.actionFunction();\n } else if (item.hasOwnProperty('eventFunction')) {\n item.eventFunction($event);\n }\n }\n\n /**\n * Filter out items which does not have buttons, select or custom html in them and check if array is not empty. If\n * this array would be empty there is no content which could be shown in toolbar group.\n * * see {@link miqStaticAssets.ToolbarController#isButtonOrSelect} on how it is checked button or select item.\n * * see {@link miqStaticAssets.ToolbarController#isCustom} on how it is checked custom html item.\n * @memberof ToolbarController\n * @function hasContent\n * @param {Array} toolbarItem array of items which are checked for content.\n * @returns {boolean} true|false isEmpty or not.\n */\n public hasContent(toolbarItem: Array): boolean {\n return toolbarItem && toolbarItem.filter((item) => {\n return item && (ToolbarController.isButtonOrSelect(item) || ToolbarController.isCustom(item));\n }).length !== 0;\n }\n\n /**\n * Escape html custom data and make them available for html insertion to toolbar.\n * @memberof ToolbarController\n * @function hasContent\n * @param escapedString html string without escaped items.\n * @returns {any} html object, this object can be bound to see\n * {@link https://docs.angularjs.org/api/ng/directive/ngBindHtml}\n */\n public trustAsHtml(escapedString: string): any {\n escapedString = ToolbarController.htmlDecode(escapedString);\n return this.$sce.trustAsHtml(escapedString);\n }\n\n /**\n * Helper method for getting string value of {@link ToolbarType.BUTTON_SELECT}\n * @memberof ToolbarController\n * @function getToolbarListType\n * @returns {string}\n */\n public getToolbarListType(): string {\n return ToolbarType.BUTTON_SELECT;\n }\n\n /**\n * Helper method for getting string value of {@link ToolbarType.BUTTON}\n * @memberof ToolbarController\n * @function getToolbarListType\n * @returns {string}\n */\n public getButtonType(): string {\n return ToolbarType.BUTTON;\n }\n\n /**\n * Helper method for getting string value of {@link ToolbarType.CUSTOM}\n * @memberof ToolbarController\n * @function getToolbarListType\n * @returns {string}\n */\n public getCustomType(): string {\n return ToolbarType.CUSTOM;\n }\n\n public getButtonTwoState() {\n return ToolbarType.BUTTON_TWO_STATE;\n }\n\n /**\n * Private static function for decoding html.\n * @memberof ToolbarController\n * @function htmlDecode\n * @param input html string containing custom html.\n * @returns {string} unescaped html string.\n */\n public static htmlDecode(input: string): string {\n let e = document.createElement('div');\n e.innerHTML = input;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue;\n }\n\n /**\n * Private static function for checking if toolbar item has name and if this name is `\"custom\"`.\n * @memberof ToolbarController\n * @function hasContent\n * @param {IToolbarItem} item which is checked for name property.\n * @returns {boolean} true|false if it's item with custom html.\n */\n private static isCustom(item: IToolbarItem): boolean {\n return item.name && item.name === ToolbarType.CUSTOM;\n }\n\n /**\n * Private static function for checking if toolbar item type and if this type is button or select.\n * * see {@link miqStaticAssets.ToolbarController#isButtonSelect} on how it's checked for select type.\n * * see {@link miqStaticAssets.ToolbarController#isButton} on how it's checked for button type.\n * @memberof ToolbarController\n * @function isButtonOrSelect\n * @param {IToolbarItem} item which is checked for type property.\n * @returns {boolean} true|false if it's item with button or button select type.\n */\n private static isButtonOrSelect(item: IToolbarItem): boolean {\n return item.type && (\n (ToolbarController.isButtonSelect(item) && item.items && item.items.length !== 0)\n || ToolbarController.isButton(item)\n || ToolbarController.isButtonTwoState(item)\n );\n }\n\n private static isButtonTwoState(item: IToolbarItem): boolean {\n return item.type === ToolbarType.BUTTON_TWO_STATE;\n }\n\n /**\n * Private static function for checking if toolbar item type is buttonSelect.\n * @memberof ToolbarController\n * @function isButtonSelect\n * @param {IToolbarItem} item item which is checked for type property.\n * @returns {boolean} true|false if it's item with type equals to `\"buttonSelect\"`.\n */\n private static isButtonSelect(item: IToolbarItem): boolean {\n return item.type === ToolbarType.BUTTON_SELECT;\n }\n\n /**\n * Private static function for checking if toolbar item type is button.\n * @memberof ToolbarController\n * @function isButton\n * @param {IToolbarItem} item item which is checked for type property.\n * @returns {boolean} true|false if it's item with type equals to `\"button\"`.\n */\n private static isButton(item): boolean {\n return item.type === ToolbarType.BUTTON;\n }\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name miqToolbarMenu\n * @description\n * This component is for whole toolbar implementation. It's advantages are, that it takes custom components as well\n * so they can be used instead of just plain JS objects (pass html inside toolbarItems attribute).\n * See {@link miqStaticAssets.ToolbarController} for implementation of all methods and behavior of this component.\n * Attribute toolbarItems for custom html needs to have set `args.html`:\n * ```JSON\n * [[\n * {\"name\" : \"custom\",\n * \"args\" : {\n * ...\n * \"html\" : \"
html string, this string will be generated as part of form group
\"\n * ...\n * }}\n * ]]\n * ```\n * How each button is treated see {@link miqStaticAssets.ToolbarController#hasContent} and observe each static\n * function which\n * is responsible for deciding what type of button will be used.\n *\n * @attr {Expression} onViewClick\n * Method which will be executed when clicked on view. See {@link miqStaticAssets.ToolbarController#onViewClick}\n * which arguments are\n * needed.\n * @attr {Array} toolbarViews\n * List of all views which are used in toolbar. Since we use typescript this attribute has specific type of:\n * `Array` See {@link IToolbarItem} for entities of toolbarViews.\n * @attr {Array} toolbarItems\n * List of all items which are used in toolbar. Since we use typescript this attribute has specific type of:\n * `Array>` See {@link IToolbarItem} for entities of toolbarItems.\n * @example\n * \n * \n */\nexport default class Toolbar {\n public replace: boolean = true;\n public template = require('./toolbar-menu.html');\n public controller: any = ToolbarController;\n public controllerAs: string = 'vm';\n public bindings: any = {\n toolbarViews: '<',\n toolbarItems: '<',\n onViewClick: '&'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/components/toolbar-menu/toolbarComponent.ts","import {IToolbarItem} from '../../interfaces/toolbar';\n/**\n * Asf\n *\n * @interface\n */\nexport interface IToolbarListBindings {\n toolbarList: any;\n dropDownClass: any[];\n onItemClick: (args: {item: any}) => void;\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name ToolbarListController\n * @implements {IToolbarListBindings}\n */\nexport class ToolbarListController implements IToolbarListBindings {\n public toolbarList: IToolbarItem;\n public isEmpty: boolean = false;\n public dropDownClass: any[];\n\n /**\n * Method for handling clicking on toolbar list's item.\n * @memberof ToolbarListController\n * @function onItemClick\n * @param {Object} {item: Object} object with item property set to which item was clicked.\n */\n public onItemClick: (args: {item: any, $event: any}) => void;\n\n /**\n * Angular's function to observe on changes.\n * @memberof ToolbarListController\n * @function isToolbarEmpty\n * @param changesObj changed object.\n */\n public $onChanges(changesObj: any) {\n if (changesObj.toolbarList) {\n this.isEmpty = this.isToolbarEmpty();\n }\n }\n\n /**\n * Method which filters out\n * @memberof ToolbarListController\n * @function isToolbarEmpty\n * @returns {boolean}\n */\n private isToolbarEmpty(): boolean {\n return this.toolbarList &&\n this.toolbarList.items &&\n this.toolbarList.items.filter((item: IToolbarItem) => !item.hidden).length > 0;\n }\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name miqToolbarList\n * @description\n * Component which will generate list in toolbar with toolbarItems as dropdown menu.\n *\n * @attr {Expression} onItemClick\n * Method which will be executed when clicked on view. See\n * {@link miqStaticAssets.ToolbarListController#onItemClick} which arguments are\n * needed.\n * @attr {Array} toolbarItems\n * List of all items which are used in toolbar. Since we use typescript this attribute has specific type of:\n * `Array>` See {@link IToolbarItem} for entities of toolbarItems.\n * @example\n * \n * \n */\nexport default class ToolbarList {\n public replace: boolean = true;\n public template = require('./toolbar-list.html');\n public controller: any = ToolbarListController;\n public controllerAs: string = 'vm';\n public bindings: any = {\n toolbarList: '<',\n onItemClick: '&',\n dropDownClass: '<'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/components/toolbar-menu/toolbarListComponent.ts","/**\n * Bindings to toolbar view.\n * * toolbarViews\n * * onItemClick\n * @interface\n */\nexport interface IToolbarViewBindings {\n toolbarViews: any;\n onItemClick: (args: {item: any, $event: any}) => void;\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc controller\n * @name ToolbarViewController\n * @implements {IToolbarViewBindings}\n */\nexport class ToolbarViewController implements IToolbarViewBindings {\n public toolbarViews: any;\n public onItemClick: (args: {item: any}) => void;\n}\n\n/**\n * @memberof miqStaticAssets\n * @ngdoc component\n * @name miqToolbarView\n * @description\n * Component which will generate list in toolbar with toolbarItems as dropdown menu.\n *\n * @attr {Expression} onItemClick\n * Method which will be executed when clicked on view.\n * @attr {Array} toolbarViews\n * List of all views which are used in toolbar.\n * @example\n * \n * \n */\nexport default class ToolbarView {\n public replace: boolean = false;\n public template = require('./toolbar-view.html');\n public controller: any = ToolbarViewController;\n public controllerAs: string = 'vm';\n public bindings: any = {\n toolbarViews: '<',\n onItemClick: '&'\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/components/toolbar-menu/toolbarViewComponent.ts","import ToolbarSettingsService from './toolbarSettingsService';\nimport * as ng from 'angular';\n\nexport default (module: ng.IModule) => {\n module.service('MiQToolbarSettingsService', ToolbarSettingsService);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/services/index.ts","import {IToolbarItem, IToolbarSettings, IRequestData} from '../interfaces/toolbar';\nimport {ToolbarType} from '../interfaces/toolbarType';\nimport * as _ from 'lodash';\nimport * as ng from 'angular';\n\nexport default class ToolbarSettingsService {\n private countSelected: number = 0;\n public items: Array>;\n public dataViews: Array;\n\n /*@ngInject*/\n constructor(private $http: any, private MiQEndpointsService: any) {}\n\n /**\n * FIXME: the method is obsolete and should be removed once setCount is being used instead\n * @param isClicked\n */\n public checkboxClicked(isClicked: boolean): void {\n isClicked ? this.countSelected++ : this.countSelected--;\n this.updateByCount();\n }\n\n /**\n * Update the selected item count, and enable/disable onwhen toolbar items\n * @param count - the number of currently selected items\n */\n public setCount(count: number): void {\n this.countSelected = count;\n this.updateByCount();\n }\n\n /**\n * Traverses through all the items and enables them by number of selected items.\n */\n private updateByCount(): void {\n _.chain(this.items)\n .flatten()\n .filter(item => item)\n .each((item: any) => {\n this.enableToolbarItemByCountSelected(item);\n })\n .map('items')\n .flatten()\n .filter(item => item)\n .each((item: any) => {\n this.enableToolbarItemByCountSelected(item);\n })\n .value();\n }\n\n /**\n *\n * @param toolbarObject\n * @returns {{items: Array>, dataViews: Array}}\n */\n public generateToolbarObject(toolbarObject: Array>): IToolbarSettings {\n this.countSelected = 0;\n this.items = this.separateItems(toolbarObject.filter(item => !!item));\n this.dataViews = this.filterViews();\n return {\n items: this.items,\n dataViews: this.dataViews\n };\n }\n\n /**\n *\n * @returns {ng.IPromise}\n * @param getData\n */\n public getSettings(getData?: IRequestData): ng.IPromise {\n return this.httpGet(\n this.MiQEndpointsService.rootPoint + this.MiQEndpointsService.endpoints.toolbarSettings,\n getData\n ).then((items: Array[]) => this.generateToolbarObject(items));\n }\n\n /**\n * Helper method for separating items in toolbar by separators.\n * @param toolbarItems all toolbar items.\n * @returns {Array} of separated items.\n */\n private separateItems(toolbarItems: Array>): Array> {\n let separatedArray = [];\n toolbarItems.forEach((items: IToolbarItem[]) => {\n let arrayIndex = separatedArray.push([]);\n items.forEach((item: IToolbarItem) => {\n if (item.type !== ToolbarType.SEPARATOR) {\n separatedArray[arrayIndex - 1].push(item);\n } else {\n arrayIndex = separatedArray.push([]);\n }\n });\n });\n return separatedArray;\n }\n\n /**\n *\n * @returns {Array}\n */\n private filterViews(): Array {\n return _.flatten(this.items)\n .filter(\n item => item && item.id && item.id.indexOf('view_') === 0\n );\n }\n\n /**\n *\n * @param url\n * @param dataObject\n * @returns {ng.IPromise>>}\n */\n private httpGet(url: string, dataObject: any): ng.IPromise>> {\n return this.$http.get(url, {params: dataObject})\n .then(dataResponse => dataResponse.data);\n }\n\n /**\n *\n * @param toolbarItem\n */\n private enableToolbarItemByCountSelected(toolbarItem: IToolbarItem): void {\n if (toolbarItem.onwhen) {\n if (toolbarItem.onwhen.slice(-1) === '+') {\n toolbarItem.enabled = this.countSelected >= ToolbarSettingsService.parseNumberFromWhen(toolbarItem.onwhen);\n } else {\n toolbarItem.enabled = this.countSelected === parseInt(toolbarItem.onwhen, 10);\n }\n }\n }\n\n /**\n *\n * @param onWhen\n * @returns {number}\n */\n private static parseNumberFromWhen(onWhen: string) {\n return onWhen.indexOf('+') !== -1 ? parseInt(onWhen.slice(0, onWhen.length - 1), 10) : parseInt(onWhen, 10);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./~/tslint-loader!./src/toolbar/services/toolbarSettingsService.ts","var map = {\n\t\"./check-box.html\": 27,\n\t\"./date-time-control.html\": 28,\n\t\"./dynamic.html\": 29,\n\t\"./index\": 2,\n\t\"./index.ts\": 2,\n\t\"./modalFieldTemplateComponent\": 3,\n\t\"./modalFieldTemplateComponent.ts\": 3,\n\t\"./radio-button-drop-down-list.html\": 30,\n\t\"./tag-control.html\": 31,\n\t\"./text-area-box.html\": 32,\n\t\"./text-box.html\": 33\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 98;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/dialog-editor/components/modal-field-template ^\\.\\/.*$\n// module id = 98\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file