@ardimedia/angular-portal-azure 0.2.2-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,442 @@
1
+ /*#region LAYOUT*/
2
+
3
+ @-webkit-keyframes ngdialog-fadeout {
4
+ 0% {
5
+ opacity: 1;
6
+ }
7
+
8
+ 100% {
9
+ opacity: 0;
10
+ }
11
+ }
12
+
13
+ @keyframes ngdialog-fadeout {
14
+ 0% {
15
+ opacity: 1;
16
+ }
17
+
18
+ 100% {
19
+ opacity: 0;
20
+ }
21
+ }
22
+
23
+ @-webkit-keyframes ngdialog-fadein {
24
+ 0% {
25
+ opacity: 0;
26
+ }
27
+
28
+ 100% {
29
+ opacity: 1;
30
+ }
31
+ }
32
+
33
+ @keyframes ngdialog-fadein {
34
+ 0% {
35
+ opacity: 0;
36
+ }
37
+
38
+ 100% {
39
+ opacity: 1;
40
+ }
41
+ }
42
+
43
+ .ngdialog,
44
+ .ngdialog *,
45
+ .ngdialog *:before,
46
+ .ngdialog *:after {
47
+ -webkit-box-sizing: border-box;
48
+ -moz-box-sizing: border-box;
49
+ box-sizing: border-box;
50
+ }
51
+
52
+ .ngdialog {
53
+ position: fixed;
54
+ overflow: auto;
55
+ -webkit-overflow-scrolling: touch;
56
+ z-index: 10000;
57
+ top: 0;
58
+ right: 0;
59
+ bottom: 0;
60
+ left: 0;
61
+ }
62
+
63
+ .ngdialog-overlay {
64
+ position: fixed;
65
+ background: rgba(0, 0, 0, 0.4);
66
+ top: 0;
67
+ right: 0;
68
+ bottom: 0;
69
+ left: 0;
70
+ -webkit-backface-visibility: hidden;
71
+ -webkit-animation: ngdialog-fadein 0.5s;
72
+ animation: ngdialog-fadein 0.5s;
73
+ }
74
+
75
+ .ngdialog.ngdialog-closing .ngdialog-overlay {
76
+ -webkit-backface-visibility: hidden;
77
+ -webkit-animation: ngdialog-fadeout 0.5s;
78
+ animation: ngdialog-fadeout 0.5s;
79
+ }
80
+
81
+ .ngdialog-content {
82
+ background: white;
83
+ -webkit-backface-visibility: hidden;
84
+ -webkit-animation: ngdialog-fadein 0.5s;
85
+ animation: ngdialog-fadein 0.5s;
86
+ }
87
+
88
+ .ngdialog.ngdialog-closing .ngdialog-content {
89
+ -webkit-backface-visibility: hidden;
90
+ -webkit-animation: ngdialog-fadeout 0.5s;
91
+ animation: ngdialog-fadeout 0.5s;
92
+ }
93
+
94
+ .ngdialog-close:before {
95
+ font-family: 'Helvetica', Arial, sans-serif;
96
+ content: '\00D7';
97
+ cursor: pointer;
98
+ }
99
+
100
+ body.ngdialog-open {
101
+ overflow: hidden;
102
+ }
103
+
104
+ /*#endregion*/
105
+
106
+ /*#region LAYOUT DEFAULT*/
107
+
108
+ @-webkit-keyframes ngdialog-flyin {
109
+ 0% {
110
+ opacity: 0;
111
+ -webkit-transform: translateY(-40px);
112
+ transform: translateY(-40px);
113
+ }
114
+
115
+ 100% {
116
+ opacity: 1;
117
+ -webkit-transform: translateY(0);
118
+ transform: translateY(0);
119
+ }
120
+ }
121
+
122
+ @keyframes ngdialog-flyin {
123
+ 0% {
124
+ opacity: 0;
125
+ -webkit-transform: translateY(-40px);
126
+ -ms-transform: translateY(-40px);
127
+ transform: translateY(-40px);
128
+ }
129
+
130
+ 100% {
131
+ opacity: 1;
132
+ -webkit-transform: translateY(0);
133
+ -ms-transform: translateY(0);
134
+ transform: translateY(0);
135
+ }
136
+ }
137
+
138
+ @-webkit-keyframes ngdialog-flyout {
139
+ 0% {
140
+ opacity: 1;
141
+ -webkit-transform: translateY(0);
142
+ transform: translateY(0);
143
+ }
144
+
145
+ 100% {
146
+ opacity: 0;
147
+ -webkit-transform: translateY(-40px);
148
+ transform: translateY(-40px);
149
+ }
150
+ }
151
+
152
+ @keyframes ngdialog-flyout {
153
+ 0% {
154
+ opacity: 1;
155
+ -webkit-transform: translateY(0);
156
+ -ms-transform: translateY(0);
157
+ transform: translateY(0);
158
+ }
159
+
160
+ 100% {
161
+ opacity: 0;
162
+ -webkit-transform: translateY(-40px);
163
+ -ms-transform: translateY(-40px);
164
+ transform: translateY(-40px);
165
+ }
166
+ }
167
+
168
+ .ngdialog.ngdialog-theme-default {
169
+ padding-bottom: 160px;
170
+ padding-top: 160px;
171
+ }
172
+
173
+ .ngdialog.ngdialog-theme-default.ngdialog-closing .ngdialog-content {
174
+ -webkit-animation: ngdialog-flyout .5s;
175
+ animation: ngdialog-flyout .5s;
176
+ }
177
+
178
+ .ngdialog.ngdialog-theme-default .ngdialog-content {
179
+ -webkit-animation: ngdialog-flyin .5s;
180
+ animation: ngdialog-flyin .5s;
181
+ background: #f0f0f0;
182
+ border-radius: 5px;
183
+ color: #444;
184
+ font-family: 'Helvetica',sans-serif;
185
+ font-size: 1.1em;
186
+ line-height: 1.5em;
187
+ margin: 0 auto;
188
+ max-width: 100%;
189
+ padding: 1em;
190
+ position: relative;
191
+ width: 450px;
192
+ }
193
+
194
+ .ngdialog.ngdialog-theme-default .ngdialog-close {
195
+ border-radius: 5px;
196
+ cursor: pointer;
197
+ position: absolute;
198
+ right: 0;
199
+ top: 0;
200
+ }
201
+
202
+ .ngdialog.ngdialog-theme-default .ngdialog-close:before {
203
+ background: transparent;
204
+ border-radius: 3px;
205
+ color: #bbb;
206
+ content: '\00D7';
207
+ font-size: 26px;
208
+ font-weight: 400;
209
+ height: 30px;
210
+ line-height: 26px;
211
+ position: absolute;
212
+ right: 3px;
213
+ text-align: center;
214
+ top: 3px;
215
+ width: 30px;
216
+ }
217
+
218
+ .ngdialog.ngdialog-theme-default .ngdialog-close:hover:before,
219
+ .ngdialog.ngdialog-theme-default .ngdialog-close:active:before {
220
+ color: #777;
221
+ }
222
+
223
+ .ngdialog.ngdialog-theme-default .ngdialog-message {
224
+ margin-bottom: .5em;
225
+ }
226
+
227
+ .ngdialog.ngdialog-theme-default .ngdialog-input {
228
+ margin-bottom: 1em;
229
+ }
230
+
231
+ .ngdialog.ngdialog-theme-default .ngdialog-input textarea,
232
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="text"],
233
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="password"],
234
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="email"],
235
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="url"] {
236
+ background: #fff;
237
+ border: 0;
238
+ border-radius: 3px;
239
+ font-family: inherit;
240
+ font-size: inherit;
241
+ font-weight: inherit;
242
+ margin: 0 0 .25em;
243
+ min-height: 2.5em;
244
+ padding: .25em .67em;
245
+ width: 100%;
246
+ }
247
+
248
+ .ngdialog.ngdialog-theme-default .ngdialog-input textarea:focus,
249
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="text"]:focus,
250
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="password"]:focus,
251
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="email"]:focus,
252
+ .ngdialog.ngdialog-theme-default .ngdialog-input input[type="url"]:focus {
253
+ -webkit-box-shadow: inset 0 0 0 2px #8dbdf1;
254
+ box-shadow: inset 0 0 0 2px #8dbdf1;
255
+ outline: none;
256
+ }
257
+
258
+ .ngdialog.ngdialog-theme-default .ngdialog-buttons {
259
+ *zoom: 1;
260
+ }
261
+
262
+ .ngdialog.ngdialog-theme-default .ngdialog-buttons:after {
263
+ content: '';
264
+ display: table;
265
+ clear: both;
266
+ }
267
+
268
+ .ngdialog.ngdialog-theme-default .ngdialog-button {
269
+ border: 0;
270
+ border-radius: 3px;
271
+ cursor: pointer;
272
+ float: right;
273
+ font-family: inherit;
274
+ font-size: .8em;
275
+ letter-spacing: .1em;
276
+ line-height: 1em;
277
+ margin: 0 0 0 .5em;
278
+ padding: .75em 2em;
279
+ text-transform: uppercase;
280
+ }
281
+
282
+ .ngdialog.ngdialog-theme-default .ngdialog-button:focus {
283
+ -webkit-animation: ngdialog-pulse 1.1s infinite;
284
+ animation: ngdialog-pulse 1.1s infinite;
285
+ outline: none;
286
+ }
287
+
288
+ @media (max-width: 568px) {
289
+ .ngdialog.ngdialog-theme-default .ngdialog-button:focus {
290
+ -webkit-animation: none;
291
+ animation: none;
292
+ }
293
+ }
294
+
295
+ .ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-primary {
296
+ background: #3288e6;
297
+ color: #fff;
298
+ }
299
+
300
+ .ngdialog.ngdialog-theme-default .ngdialog-button.ngdialog-button-secondary {
301
+ background: #e0e0e0;
302
+ color: #777;
303
+ }
304
+
305
+ /*#endregion*/
306
+
307
+ /*#region LAYOUT PLAIN*/
308
+
309
+ .ngdialog.ngdialog-theme-plain {
310
+ padding-bottom: 160px;
311
+ padding-top: 160px;
312
+ }
313
+
314
+ .ngdialog.ngdialog-theme-plain .ngdialog-content {
315
+ background: #fff;
316
+ color: #444;
317
+ font-family: 'Helvetica Neue',sans-serif;
318
+ font-size: 1.1em;
319
+ line-height: 1.5em;
320
+ margin: 0 auto;
321
+ max-width: 100%;
322
+ padding: 1em;
323
+ position: relative;
324
+ width: 450px;
325
+ }
326
+
327
+ .ngdialog.ngdialog-theme-plain .ngdialog-content h1,
328
+ .ngdialog.ngdialog-theme-plain .ngdialog-content h2,
329
+ .ngdialog.ngdialog-theme-plain .ngdialog-content h3,
330
+ .ngdialog.ngdialog-theme-plain .ngdialog-content h4,
331
+ .ngdialog.ngdialog-theme-plain .ngdialog-content h5,
332
+ .ngdialog.ngdialog-theme-plain .ngdialog-content h6,
333
+ .ngdialog.ngdialog-theme-plain .ngdialog-content p,
334
+ .ngdialog.ngdialog-theme-plain .ngdialog-content ul,
335
+ .ngdialog.ngdialog-theme-plain .ngdialog-content li {
336
+ color: inherit;
337
+ }
338
+
339
+ .ngdialog.ngdialog-theme-plain .ngdialog-close {
340
+ cursor: pointer;
341
+ position: absolute;
342
+ right: 0;
343
+ top: 0;
344
+ }
345
+
346
+ .ngdialog.ngdialog-theme-plain .ngdialog-close:before {
347
+ background: transparent;
348
+ color: #bbb;
349
+ content: "\00D7";
350
+ font-size: 26px;
351
+ font-weight: 400;
352
+ height: 30px;
353
+ line-height: 26px;
354
+ position: absolute;
355
+ right: 3px;
356
+ text-align: center;
357
+ top: 3px;
358
+ width: 30px;
359
+ }
360
+
361
+ .ngdialog.ngdialog-theme-plain .ngdialog-close:hover:before,
362
+ .ngdialog.ngdialog-theme-plain .ngdialog-close:active:before {
363
+ color: #777;
364
+ }
365
+
366
+ .ngdialog.ngdialog-theme-plain .ngdialog-message {
367
+ margin-bottom: .5em;
368
+ }
369
+
370
+ .ngdialog.ngdialog-theme-plain .ngdialog-input {
371
+ margin-bottom: 1em;
372
+ }
373
+
374
+ .ngdialog.ngdialog-theme-plain .ngdialog-input textarea,
375
+ .ngdialog.ngdialog-theme-plain .ngdialog-input input[type="text"],
376
+ .ngdialog.ngdialog-theme-plain .ngdialog-input input[type="password"],
377
+ .ngdialog.ngdialog-theme-plain .ngdialog-input input[type="email"],
378
+ .ngdialog.ngdialog-theme-plain .ngdialog-input input[type="url"] {
379
+ background: #f0f0f0;
380
+ border: 0;
381
+ font-family: inherit;
382
+ font-size: inherit;
383
+ font-weight: inherit;
384
+ margin: 0 0 .25em;
385
+ min-height: 2.5em;
386
+ padding: .25em .67em;
387
+ width: 100%;
388
+ }
389
+
390
+ .ngdialog.ngdialog-theme-plain .ngdialog-input textarea:focus,
391
+ .ngdialog.ngdialog-theme-plain .ngdialog-input input[type="text"]:focus,
392
+ .ngdialog.ngdialog-theme-plain .ngdialog-input input[type="password"]:focus,
393
+ .ngdialog.ngdialog-theme-plain .ngdialog-input input[type="email"]:focus,
394
+ .ngdialog.ngdialog-theme-plain .ngdialog-input input[type="url"]:focus {
395
+ -webkit-box-shadow: inset 0 0 0 2px rgba(0,0,0,0.2);
396
+ box-shadow: inset 0 0 0 2px rgba(0,0,0,0.2);
397
+ outline: none;
398
+ }
399
+
400
+ .ngdialog.ngdialog-theme-plain .ngdialog-buttons:after {
401
+ clear: both;
402
+ content: '';
403
+ display: table;
404
+ }
405
+
406
+ .ngdialog.ngdialog-theme-plain .ngdialog-button {
407
+ border: 0;
408
+ cursor: pointer;
409
+ float: right;
410
+ font-family: inherit;
411
+ font-size: .8em;
412
+ letter-spacing: .1em;
413
+ line-height: 1em;
414
+ margin: 0 0 0 .5em;
415
+ padding: .75em 2em;
416
+ text-transform: uppercase;
417
+ }
418
+
419
+ .ngdialog.ngdialog-theme-plain .ngdialog-button:focus {
420
+ -webkit-animation: ngdialog-pulse 1.1s infinite;
421
+ animation: ngdialog-pulse 1.1s infinite;
422
+ outline: none;
423
+ }
424
+
425
+ @media (max-width: 568px) {
426
+ .ngdialog.ngdialog-theme-plain .ngdialog-button:focus {
427
+ -webkit-animation: none;
428
+ animation: none;
429
+ }
430
+ }
431
+
432
+ .ngdialog.ngdialog-theme-plain .ngdialog-button.ngdialog-button-primary {
433
+ background: #3288e6;
434
+ color: #fff;
435
+ }
436
+
437
+ .ngdialog.ngdialog-theme-plain .ngdialog-button.ngdialog-button-secondary {
438
+ background: #e0e0e0;
439
+ color: #777;
440
+ }
441
+
442
+ /*#endregion*/
@@ -0,0 +1,47 @@
1
+ 
2
+ // http://blogs.msdn.com/b/laurieatkinson/archive/2014/08/23/implementing-a-save-warning-in-an-angular-spa.aspx
3
+
4
+ //'use strict';
5
+ //module App.Directives {
6
+
7
+ // // USE:
8
+ // // <form name="personForm" azureportal-dirty-flag>
9
+
10
+ // interface IDirtyFlag extends ng.IDirective {
11
+ // }
12
+
13
+ // interface IDirtyFlagScope extends ng.IScope {
14
+ // personForm: ng.IFormController;
15
+ // vm: any;
16
+ // }
17
+
18
+ // class DirtyFlag implements IDirtyFlag {
19
+ // static directiveId: string = 'azureportalDirtyFlag'
20
+ // restrict: string = 'A';
21
+ // personManager: App.Services.IpersonManager;
22
+
23
+ // constructor(personManager) {
24
+ // this.personManager = personManager;
25
+ // }
26
+
27
+ // link = (scope: IDirtyFlagScope, element, attrs) => {
28
+ // var self = this;
29
+ // // When the directive is first invoked, check if the stored dirty value is true and
30
+ // // if so set the $dirty flag on the form.
31
+ // if (scope.vm.person && scope.vm.person.isDirty) {
32
+ // scope.personForm.$dirty = true;
33
+ // }
34
+
35
+ // // When the user navigates away from this view, check the value of the $dirty flag on this form.
36
+ // // If it is dirty(indicating unsaved changes), then store the id of the current person as dirty
37
+ // // using a service named personManger.
38
+ // scope.$on('$locationChangeStart'), function () {
39
+ // if (scope.personForm.$dirty) {
40
+ // self.personManager.markpersonAsDirty(scope.vm.person.personId);
41
+ // }
42
+ // });
43
+ // }
44
+ // }
45
+
46
+ // app.directive(DirtyFlag.directiveId, ['personmanager', (pm) => new DirtyFlag(pm)]);
47
+ //}
@@ -0,0 +1,39 @@
1
+ <div class="fxs-portal">
2
+ <div class="fxs-portal-top-bar fxs-portal-appbar"></div>
3
+ <div id="azureportalscroll" class="fxs-portal-content fxs-panorama">
4
+
5
+ <div class="fxs-panorama-homearea" ng-class="{collapsed: !vm.portalService.panorama.startboard.tiles.showTiles}" ng-show="vm.portalService.panorama.isVisible">
6
+ <header class="fxs-pannable" ng-class="{collapsed: !vm.portalService.panorama.startboard.tiles.showTiles}">
7
+ <h1 class="fxs-panorama-title fxs-pannable">{{vm.title}}</h1>
8
+ <div class="fxs-avatarmenu-target fxs-avatarmenu" ng-class="{collapsed: !vm.portalService.panorama.startboard.tiles.showTiles}">
9
+ <a class="fxs-avatarmenu-header" href="/Account/Manage">
10
+ <img alt="" src="/node_modules/angular-portal-azure/images/avatar.jpg" />
11
+ <div class="fxs-avatarmenu-username">{{vm.user.name}}</div>
12
+ <div class="fxs-avatarmenu-emailaddresse">{{vm.user.emailaddress}}</div>
13
+ </a>
14
+ </div>
15
+ </header>
16
+ <div class="fxs-startboard-target fxs-startboard fx-rightClick" ng-class="{collapsed: !vm.portalService.panorama.startboard.tiles.showTiles}">
17
+ <div class="fxs-startboard-layout fxs-flowlayout">
18
+ <div class="fxs-flowlayout-childcontainer">
19
+ <section data-ng-repeat="tile in vm.tiles track by $index" class="fxs-tile fx-rightClick fxs-flowlayout-element" data-ng-class="{'fxs-tilesize-normal':tile.size=='normal', 'fxs-tilesize-mini':tile.size=='mini', 'fxs-tilesize-herowide':tile.size=='herowide'}" data-ng-style="{'left': tile.left, 'top': tile.top}">
20
+ <div class="fxs-part fxs-part-clickable" ng-click="vm.navigateTo(tile.bladePath);tile.clicked();" style="cursor:pointer;">
21
+ <header class="fxs-part-title">
22
+ <h2 class="msportalfx-tooltip-overflow">{{tile.title}}</h2>
23
+ <h3 class="msportalfx-tooltip-overflow">{{tile.subTitle}}</h3>
24
+ </header>
25
+ <section class="fxs-part-content css-scope-HubsExtension"></section>
26
+ </div>
27
+ <div class="fxs-title-overlay"></div>
28
+ </section>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ <div class="fxs-journey-target fxs-journey">
34
+ <div class="fxs-journey-layout fxs-stacklayout fxs-stacklayout-horizontal">
35
+ <div data-ng-repeat="blade in vm.blades track by $index" class="azureportalblade fxs-stacklayout-child" ng-include="blade.path"></div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ </div>
@@ -0,0 +1,12 @@
1
+ namespace angularportalazure {
2
+ function azurePortalHome($window, $interpolate) {
3
+ return {
4
+ scope: { vm: '=options' },
5
+ templateUrl: '/node_modules/angular-portal-azure/directives/home/home.html',
6
+ link: function (scope, element, attrs, controller) {
7
+ }
8
+ };
9
+ }
10
+
11
+ angular.module('angularportalazure').directive('azurePortalHome', ['$window', '$interpolate', azurePortalHome]);
12
+ }
@@ -0,0 +1,27 @@
1
+ <table class="azc-grid-full azc-grid-multiselectable" aria-readonly="true">
2
+ <caption data-bind="text: data.summary"></caption>
3
+ <colgroup>
4
+ <col class="col0" style="width: 41px;">
5
+ <col class="col1">
6
+ </colgroup>
7
+ <tbody class="azc-grid-groupdata" role="rowgroup">
8
+ <tr data-ng-repeat="item in vm.navItems track by $index" data-ng-click="vm.navigateTo(item.bladePath);item.onNavItemClick();" role="row" aria-selected="false" data-grid-row-activated="false" data-grid-selectable="true" data-grid-focusable="true" data-grid-activateable="true" ng-show="item.isVisible" style="cursor:pointer" ng-style="item.style">
9
+ <td class="msportalfx-gridcolumn-asseticon" role="gridcell" data-grid-cell-activated="false">
10
+ <div class="azc-vivaControl" data-bind='vivaControl: "DEB28B4C-518F-4F70-A817-BF9277606CAB"'>
11
+ <div data-bind="image: value">
12
+ <svg data-ng-show="item.title" xmlns="http://www.w3.org/2000/svg" class="msportal-fx-svg-placeholder" viewBox="0 0 50 50" focusable="false">
13
+ <rect class="msportalfx-svg-c04" x="19.8" y="39.4" width="10.6" height="3.4" />
14
+ <polygon class="msportalfx-svg-c04" points="23.1,50 27,50 30.3,46.5 19.8,46.5" />
15
+ <path class="msportalfx-svg-c20" d="M 41.2 14.7 L 41.2 14.7 v -0.3 c 0 -7.7 -6.6 -14.1 -14.7 -14.2 c -0.2 -0.3 -4.8 0.1 -4.8 0.1 l 0 0 c -7.3 0.9 -13 7 -13 14.1 c 0 0.2 -0.8 5.8 4.9 10.5 c 2.6 2.3 5.3 8.5 5.7 10.3 l 0.3 0.6 h 10.6 l 0.3 -0.6 c 0.4 -1.8 3.2 -8 5.7 -10.2 C 41.9 20.2 41.2 14.9 41.2 14.7 Z" />
16
+ <path class="msportalfx-svg-c01" d="M 30.4 18.1 l -1.7 10.6 h -2 V 18.2 l 0.1 -0.2 c 3.8 0 3.3 -3.5 3.3 -3.5 H 19.8 v 0.3 c 0 0.8 0.3 3.3 3.5 3.3 v 10.6 h -2 l -0.5 -2.5 l -1.3 -8.1 c -2.3 0 -3 -1.5 -3.3 -2.6 c 0 -0.4 0 -0.9 0 -1.4 c 0 -2.8 3.2 -3.1 3.2 -3.1 h 11 c 0 0 3.5 0.4 3.5 3.5 C 33.8 14.5 33.9 18.1 30.4 18.1 Z" />
17
+ <path class="msportalfx-svg-c01" opacity="0.15" enable-background="new " d="M 41.2 16.4 c 0.1 -1 0 -1.7 0 -1.8 l 0 0 v -0.3 c 0 -7.7 -6.6 -14.1 -14.7 -14.2 c -0.2 -0.3 -4.8 0.1 -4.8 0.1 l 0 0 c -7.3 0.9 -13 7 -13 14.1 c 0 0.1 -0.1 0.9 0 2.1 H 41.2 Z" />
18
+ </svg>
19
+ </div>
20
+ </div>
21
+ </td>
22
+ <td tabindex="0" role="gridcell" data-activatable="true" data-grid-cell-activated="false">
23
+ <a ng-href="{{item.hrefPath}}" target="_blank" style="color:black">{{item.title}}</a>
24
+ </td>
25
+ </tr>
26
+ </tbody>
27
+ </table>
@@ -0,0 +1,18 @@
1
+ namespace angularportalazure {
2
+ function nav($window) {
3
+ return {
4
+ scope: { vm: '=viewModel' },
5
+ templateUrl: '/node_modules/angular-portal-azure/directives/nav/nav.html',
6
+ link: function (scope, element, attrs, controller) {
7
+ angular.forEach(scope.vm.navItems, function (item) {
8
+ // Set some default values, depending on existing values
9
+ if (item.isVisible == undefined) { item.isVisible = true; }
10
+ if (item.title == undefined || item.title == '') { item.style = { cursor: 'default' }; }
11
+ if (item.bladePath == undefined || item.bladePath == '') { item.style = { cursor: 'default' }; }
12
+ });
13
+ }
14
+ };
15
+ }
16
+
17
+ angular.module('angularportalazure').directive('nav', ['$window', nav]);
18
+ }
@@ -0,0 +1,27 @@
1
+ <table class="azc-grid-full azc-grid-multiselectable" aria-readonly="true">
2
+ <caption data-bind="text: data.summary"></caption>
3
+ <colgroup>
4
+ <col class="col0" style="width: 41px;">
5
+ <col class="col1">
6
+ </colgroup>
7
+ <tbody class="azc-grid-groupdata" role="rowgroup">
8
+ <tr data-ng-repeat="item in vm.items track by $index" data-ng-click="vm.navigateTo(item.bladePath);" role="row" aria-selected="false" data-grid-row-activated="false" data-grid-selectable="true" data-grid-focusable="true" data-grid-activateable="true" ng-show="item.isVisible" style="cursor:pointer" ng-style="item.style">
9
+ <td class="msportalfx-gridcolumn-asseticon" role="gridcell" data-grid-cell-activated="false">
10
+ <div class="azc-vivaControl" data-bind='vivaControl: "DEB28B4C-518F-4F70-A817-BF9277606CAB"'>
11
+ <div data-bind="image: value">
12
+ <svg data-ng-show="item.title" xmlns="http://www.w3.org/2000/svg" class="msportal-fx-svg-placeholder" viewBox="0 0 50 50" focusable="false">
13
+ <rect class="msportalfx-svg-c04" x="19.8" y="39.4" width="10.6" height="3.4" />
14
+ <polygon class="msportalfx-svg-c04" points="23.1,50 27,50 30.3,46.5 19.8,46.5" />
15
+ <path class="msportalfx-svg-c20" d="M 41.2 14.7 L 41.2 14.7 v -0.3 c 0 -7.7 -6.6 -14.1 -14.7 -14.2 c -0.2 -0.3 -4.8 0.1 -4.8 0.1 l 0 0 c -7.3 0.9 -13 7 -13 14.1 c 0 0.2 -0.8 5.8 4.9 10.5 c 2.6 2.3 5.3 8.5 5.7 10.3 l 0.3 0.6 h 10.6 l 0.3 -0.6 c 0.4 -1.8 3.2 -8 5.7 -10.2 C 41.9 20.2 41.2 14.9 41.2 14.7 Z" />
16
+ <path class="msportalfx-svg-c01" d="M 30.4 18.1 l -1.7 10.6 h -2 V 18.2 l 0.1 -0.2 c 3.8 0 3.3 -3.5 3.3 -3.5 H 19.8 v 0.3 c 0 0.8 0.3 3.3 3.5 3.3 v 10.6 h -2 l -0.5 -2.5 l -1.3 -8.1 c -2.3 0 -3 -1.5 -3.3 -2.6 c 0 -0.4 0 -0.9 0 -1.4 c 0 -2.8 3.2 -3.1 3.2 -3.1 h 11 c 0 0 3.5 0.4 3.5 3.5 C 33.8 14.5 33.9 18.1 30.4 18.1 Z" />
17
+ <path class="msportalfx-svg-c01" opacity="0.15" enable-background="new " d="M 41.2 16.4 c 0.1 -1 0 -1.7 0 -1.8 l 0 0 v -0.3 c 0 -7.7 -6.6 -14.1 -14.7 -14.2 c -0.2 -0.3 -4.8 0.1 -4.8 0.1 l 0 0 c -7.3 0.9 -13 7 -13 14.1 c 0 0.1 -0.1 0.9 0 2.1 H 41.2 Z" />
18
+ </svg>
19
+ </div>
20
+ </div>
21
+ </td>
22
+ <td tabindex="0" role="gridcell" data-activatable="true" data-grid-cell-activated="false">
23
+ <a ng-href="{{item.hrefPath}}" target="_blank" style="color:black">{{item.title}}</a>
24
+ </td>
25
+ </tr>
26
+ </tbody>
27
+ </table>
@@ -0,0 +1,18 @@
1
+ namespace angularportalazure {
2
+ function navGrid($window) {
3
+ return {
4
+ scope: { vm: '=viewModel' },
5
+ templateUrl: '/node_modules/angular-portal-azure/directives/navgrid/navgrid.html',
6
+ link: function (scope, element, attrs, controller) {
7
+ angular.forEach(scope.vm.items, function (item) {
8
+ // Set some default values, depending on existing values
9
+ if (item.isVisible == undefined) { item.isVisible = true; }
10
+ if (item.title == undefined || item.title == '') { item.style = { cursor: 'default' }; }
11
+ if (item.bladePath == undefined || item.bladePath == '') { item.style = { cursor: 'default' }; }
12
+ });
13
+ }
14
+ };
15
+ }
16
+
17
+ angular.module('angularportalazure').directive('navGrid', ['$window', navGrid]);
18
+ }
package/images/apn.png ADDED
Binary file
Binary file
package/index.js ADDED
@@ -0,0 +1,14 @@
1
+ require('./apn');
2
+ module.exports = angularportalazure;
3
+
4
+ // TODO: 2016-10-25/hp: maybe we should use someting like this and change our code from [global] to [umd]
5
+ /// https://www.typescriptlang.org/docs/handbook/declaration-files/library-structures.html
6
+ (function (root, factory) {
7
+ if (typeof define === "function" && define.amd) {
8
+ define(["libName"], factory);
9
+ } else if (typeof module === "object" && module.exports) {
10
+ module.exports = factory(require("libName"));
11
+ } else {
12
+ root.returnExports = factory(root.libName);
13
+ }
14
+ }(this, function (b) { console.log(b); }))
package/package.json ADDED
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@ardimedia/angular-portal-azure",
3
+ "description": "Angular Portal Azure - GUI Framework.",
4
+ "author": "Ardimedia Anstalt <info@ardimedia.com> (http://www.ardimedia.com)",
5
+ "version": "0.2.2-beta",
6
+ "main": "index.js",
7
+ "typings": "apn.d.ts",
8
+ "dependencies": {
9
+ "@types/angular": "^1.5.16",
10
+ "@types/angular-resource": "^1.5.6",
11
+ "@types/ng-dialog": "0.0.31",
12
+ "angular": "^1.5.8",
13
+ "angular-resource": "^1.5.8",
14
+ "ng-dialog": "^0.6.4"
15
+ },
16
+ "devDependencies": {
17
+ "typescript": "^2.0.6"
18
+ }
19
+ }