adb-shared 0.0.54 → 1.0.2

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.
package/README.md CHANGED
@@ -1,24 +1,13 @@
1
1
  # ArtdataShared
2
2
 
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 8.2.0.
3
+ This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.2.9
4
4
 
5
- ## Code scaffolding
5
+ Use it with https://www.npmjs.com/package/slu-design-system to get the correct look
6
6
 
7
- Run `ng generate component component-name --project artdata-shared` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project artdata-shared`.
8
- > Note: Don't forget to add `--project artdata-shared` or else it will be added to the default project in your `angular.json` file.
7
+ ## Development server
9
8
 
10
- ## Build
11
-
12
- Run `ng build artdata-shared` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build artdata-shared`, go to the dist folder `cd dist/artdata-shared` and run `npm publish`.
9
+ Run `start` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
17
10
 
18
- ## Running unit tests
19
-
20
- Run `ng test artdata-shared` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
11
+ ## Build
23
12
 
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
13
+ Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.
package/adb-shared.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  /**
2
2
  * Generated bundle index. Do not edit.
3
3
  */
4
+ /// <amd-module name="adb-shared" />
4
5
  export * from './public-api';
5
- export { ClickOutsideDirective as ɵb } from './lib/click-outside.directive';
6
- export { EnvironmentService as ɵa } from './lib/environment.service';
@@ -1,336 +1,218 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common/http'), require('@angular/core'), require('@ngx-translate/core'), require('rxjs'), require('@angular/common'), require('@angular/router')) :
3
- typeof define === 'function' && define.amd ? define('adb-shared', ['exports', '@angular/common/http', '@angular/core', '@ngx-translate/core', 'rxjs', '@angular/common', '@angular/router'], factory) :
4
- (global = global || self, factory(global['adb-shared'] = {}, global.ng.common.http, global.ng.core, global.core$1, global.rxjs, global.ng.common, global.ng.router));
5
- }(this, (function (exports, http, core, core$1, rxjs, common, router) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('@angular/common/http'), require('@ngx-translate/core'), require('@angular/common'), require('@angular/router')) :
3
+ typeof define === 'function' && define.amd ? define('adb-shared', ['exports', '@angular/core', 'rxjs', '@angular/common/http', '@ngx-translate/core', '@angular/common', '@angular/router'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["adb-shared"] = {}, global.ng.core, global.rxjs, global.ng.common.http, global.i3, global.ng.common, global.ng.router));
5
+ })(this, (function (exports, i0, rxjs, i1, i3, i5, router) { 'use strict';
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n["default"] = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var i0__namespace = /*#__PURE__*/_interopNamespace(i0);
26
+ var i1__namespace = /*#__PURE__*/_interopNamespace(i1);
27
+ var i3__namespace = /*#__PURE__*/_interopNamespace(i3);
28
+ var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
6
29
 
7
- /**
8
- * @fileoverview added by tsickle
9
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
10
- */
11
30
  var EnvironmentService = /** @class */ (function () {
12
31
  function EnvironmentService(environment) {
13
32
  this.environment = environment;
14
33
  }
15
- EnvironmentService.decorators = [
16
- { type: core.Injectable }
17
- ];
18
- /** @nocollapse */
19
- EnvironmentService.ctorParameters = function () { return [
20
- { type: undefined, decorators: [{ type: core.Inject, args: ['env',] }] }
21
- ]; };
22
34
  return EnvironmentService;
23
35
  }());
24
- if (false) {
25
- /** @type {?} */
26
- EnvironmentService.prototype.environment;
27
- }
36
+ /** @nocollapse */ EnvironmentService.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: EnvironmentService, deps: [{ token: 'env' }], target: i0__namespace.ɵɵFactoryTarget.Injectable });
37
+ /** @nocollapse */ EnvironmentService.ɵprov = i0__namespace.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: EnvironmentService });
38
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: EnvironmentService, decorators: [{
39
+ type: i0.Injectable
40
+ }], ctorParameters: function () {
41
+ return [{ type: undefined, decorators: [{
42
+ type: i0.Inject,
43
+ args: ['env']
44
+ }] }];
45
+ } });
46
+
47
+ var ClickOutsideDirective = /** @class */ (function () {
48
+ function ClickOutsideDirective(elementRef) {
49
+ this.elementRef = elementRef;
50
+ this.clickOutside = new i0.EventEmitter();
51
+ }
52
+ ClickOutsideDirective.prototype.onClick = function (target) {
53
+ var clickedInside = this.elementRef.nativeElement.contains(target);
54
+ if (!clickedInside) {
55
+ this.clickOutside.emit();
56
+ }
57
+ };
58
+ return ClickOutsideDirective;
59
+ }());
60
+ /** @nocollapse */ ClickOutsideDirective.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ClickOutsideDirective, deps: [{ token: i0__namespace.ElementRef }], target: i0__namespace.ɵɵFactoryTarget.Directive });
61
+ /** @nocollapse */ ClickOutsideDirective.ɵdir = i0__namespace.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.13", type: ClickOutsideDirective, selector: "[clickOutside]", outputs: { clickOutside: "clickOutside" }, host: { listeners: { "document:click": "onClick($event.target)" } }, ngImport: i0__namespace });
62
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ClickOutsideDirective, decorators: [{
63
+ type: i0.Directive,
64
+ args: [{
65
+ selector: '[clickOutside]',
66
+ }]
67
+ }], ctorParameters: function () { return [{ type: i0__namespace.ElementRef }]; }, propDecorators: { clickOutside: [{
68
+ type: i0.Output
69
+ }], onClick: [{
70
+ type: i0.HostListener,
71
+ args: ['document:click', ['$event.target']]
72
+ }] } });
28
73
 
29
- /**
30
- * @fileoverview added by tsickle
31
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
32
- */
33
74
  var ADBHeaderComponent = /** @class */ (function () {
34
75
  function ADBHeaderComponent(httpClient, envService, trans) {
35
76
  this.httpClient = httpClient;
36
77
  this.envService = envService;
37
78
  this.trans = trans;
38
79
  this.subscription = new rxjs.Subscription();
39
- this.loginClicked = new core.EventEmitter();
40
- this.logoutClicked = new core.EventEmitter();
41
- this.dropMenuChange = new core.EventEmitter();
80
+ this.loginClicked = new i0.EventEmitter();
81
+ this.logoutClicked = new i0.EventEmitter();
82
+ this.dropMenuChange = new i0.EventEmitter();
42
83
  this.showMenu = false;
43
84
  this.showUserMenu = false;
44
85
  }
45
86
  Object.defineProperty(ADBHeaderComponent.prototype, "userName", {
46
- set: /**
47
- * @param {?} fullName
48
- * @return {?}
49
- */
50
- function (fullName) {
87
+ set: function (fullName) {
51
88
  this.fullName = fullName;
52
- /** @type {?} */
53
89
  var splitted = fullName.split(' ');
54
90
  if (splitted && splitted.length > 1) {
55
- /** @type {?} */
56
91
  var initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);
57
92
  this.initials = initials.toUpperCase();
58
93
  }
59
94
  },
60
- enumerable: true,
95
+ enumerable: false,
61
96
  configurable: true
62
97
  });
63
98
  ;
64
- /**
65
- * @return {?}
66
- */
67
- ADBHeaderComponent.prototype.ngOnInit = /**
68
- * @return {?}
69
- */
70
- function () {
99
+ ADBHeaderComponent.prototype.ngOnInit = function () {
71
100
  var _this = this;
72
101
  this.url = window.location.href;
73
- /** @type {?} */
74
102
  var baseUrl = this.envService.environment.resourceUrl;
75
- this.subscription.add(this.httpClient.get(baseUrl + '/assets/links.json').subscribe((/**
76
- * @param {?} result
77
- * @return {?}
78
- */
79
- function (result) {
103
+ this.subscription.add(this.httpClient.get(baseUrl + '/assets/links.json').subscribe(function (result) {
80
104
  _this.navigation = result;
81
- })));
105
+ }));
82
106
  this.initAllTranslations(baseUrl);
83
107
  };
84
- /**
85
- * @private
86
- * @param {?} baseUrl
87
- * @return {?}
88
- */
89
- ADBHeaderComponent.prototype.initAllTranslations = /**
90
- * @private
91
- * @param {?} baseUrl
92
- * @return {?}
93
- */
94
- function (baseUrl) {
108
+ ADBHeaderComponent.prototype.initAllTranslations = function (baseUrl) {
95
109
  var _this = this;
96
- /** @type {?} */
97
110
  var trans$ = rxjs.forkJoin([this.httpClient.get(baseUrl + '/assets/i18n/en.json'), this.httpClient.get(baseUrl + '/assets/i18n/sv.json')]);
98
- this.subscription.add(trans$.subscribe((/**
99
- * @param {?} result
100
- * @return {?}
101
- */
102
- function (result) {
111
+ this.subscription.add(trans$.subscribe(function (result) {
103
112
  _this.trans.setTranslation('en', result[0], true);
104
113
  _this.trans.setTranslation('sv', result[1], true);
105
- })));
114
+ }));
106
115
  };
107
- /**
108
- * @param {?} show
109
- * @return {?}
110
- */
111
- ADBHeaderComponent.prototype.showMenuDropdown = /**
112
- * @param {?} show
113
- * @return {?}
114
- */
115
- function (show) {
116
+ ADBHeaderComponent.prototype.showMenuDropdown = function (show) {
116
117
  if (this.showMenu !== show) {
117
118
  this.showMenu = show;
118
119
  this.dropMenuChange.emit(show);
119
120
  }
120
121
  };
121
- /**
122
- * @param {?} lang
123
- * @return {?}
124
- */
125
- ADBHeaderComponent.prototype.setLanguage = /**
126
- * @param {?} lang
127
- * @return {?}
128
- */
129
- function (lang) {
122
+ ADBHeaderComponent.prototype.setLanguage = function (lang) {
130
123
  this.trans.use(lang);
131
124
  //TODO: set localstorage/cookies or probaly event to main app
132
125
  };
133
- /**
134
- * @param {?} transId
135
- * @return {?}
136
- */
137
- ADBHeaderComponent.prototype.onExpandLink = /**
138
- * @param {?} transId
139
- * @return {?}
140
- */
141
- function (transId) {
126
+ ADBHeaderComponent.prototype.onExpandLink = function (transId) {
142
127
  if (this.expandedLink === transId) {
143
128
  this.expandedLink = null;
144
129
  return;
145
130
  }
146
131
  this.expandedLink = transId;
147
132
  };
148
- /**
149
- * @return {?}
150
- */
151
- ADBHeaderComponent.prototype.login = /**
152
- * @return {?}
153
- */
154
- function () {
133
+ ADBHeaderComponent.prototype.login = function () {
155
134
  this.loginClicked.emit();
156
135
  };
157
- /**
158
- * @return {?}
159
- */
160
- ADBHeaderComponent.prototype.logout = /**
161
- * @return {?}
162
- */
163
- function () {
136
+ ADBHeaderComponent.prototype.logout = function () {
164
137
  this.logoutClicked.emit();
165
138
  };
166
- /**
167
- * @return {?}
168
- */
169
- ADBHeaderComponent.prototype.ngOnDestroy = /**
170
- * @return {?}
171
- */
172
- function () {
139
+ ADBHeaderComponent.prototype.ngOnDestroy = function () {
173
140
  this.subscription.unsubscribe();
174
141
  };
175
- ADBHeaderComponent.decorators = [
176
- { type: core.Component, args: [{
177
- selector: 'adb-header2',
178
- template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo pl-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pr-4\" style=\"gap:2rem;\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a [href]=\"link.url\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ml-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block pl-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials px-2 py-1\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"text-dark\">\r\n <span class=\"initials py-2 px-2 mr-2\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt mr-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials mr-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?returnUrl={{url}}\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ml-0 mb-0 pl-0\">\r\n <li class=\"mb-1 list-group-item rounded-0\"\r\n [ngClass]=\"{'pointer list-group-item-action':link.children&&link.children.length>0}\"\r\n *ngFor=\"let link of navigation.links\">\r\n <div class=\"d-flex align-items-center justify-content-between\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\"\r\n (click)=\"onExpandLink(link.transId)\">\r\n <div>\r\n <small class=\"fa-stack\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n <a [href]=\"link.url\" (click)=\"$event.stopPropagation();\">\r\n {{link.transId|translate}}\r\n </a>\r\n </div>\r\n <div class=\"text-dark\" (click)=\"$event.stopPropagation();\" *ngIf=\"link.children&&link.children.length>0\">\r\n <i class=\"fas fa-chevron-up\" *ngIf=\"link.transId===expandedLink\"></i>\r\n <i class=\"fas fa-chevron-down\" *ngIf=\"link.transId!==expandedLink\"></i>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled pl-4\" *ngIf=\"link.transId===expandedLink\">\r\n <li class=\"py-1m-0\" *ngFor=\"let subLink of link.children\">\r\n <a [href]=\"subLink.url\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <ul class=\"list-unstyled ml-0 pl-0\">\r\n <li class=\"mb-1 d-flex flex-wrap gap-2\">\r\n <div class=\"bg-white p-2 flex-grow-1\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">\r\n {{navigation.about.transId|translate}}\r\n </a>\r\n </div>\r\n <div class=\"bg-white p-2 flex-grow-1\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div>\r\n <img style=\"height: 3.2rem;\" src=\"/assets/images/logo.svg\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n"
179
- }] }
180
- ];
181
- /** @nocollapse */
182
- ADBHeaderComponent.ctorParameters = function () { return [
183
- { type: http.HttpClient },
184
- { type: EnvironmentService },
185
- { type: core$1.TranslateService }
186
- ]; };
187
- ADBHeaderComponent.propDecorators = {
188
- loginClicked: [{ type: core.Output }],
189
- logoutClicked: [{ type: core.Output }],
190
- dropMenuChange: [{ type: core.Output }],
191
- userName: [{ type: core.Input }]
192
- };
193
142
  return ADBHeaderComponent;
194
143
  }());
195
- if (false) {
196
- /**
197
- * @type {?}
198
- * @private
199
- */
200
- ADBHeaderComponent.prototype.subscription;
201
- /** @type {?} */
202
- ADBHeaderComponent.prototype.loginClicked;
203
- /** @type {?} */
204
- ADBHeaderComponent.prototype.logoutClicked;
205
- /** @type {?} */
206
- ADBHeaderComponent.prototype.dropMenuChange;
207
- /** @type {?} */
208
- ADBHeaderComponent.prototype.fullName;
209
- /** @type {?} */
210
- ADBHeaderComponent.prototype.initials;
211
- /** @type {?} */
212
- ADBHeaderComponent.prototype.showMenu;
213
- /** @type {?} */
214
- ADBHeaderComponent.prototype.showUserMenu;
215
- /** @type {?} */
216
- ADBHeaderComponent.prototype.navigation;
217
- /** @type {?} */
218
- ADBHeaderComponent.prototype.url;
219
- /** @type {?} */
220
- ADBHeaderComponent.prototype.expandedLink;
221
- /**
222
- * @type {?}
223
- * @private
224
- */
225
- ADBHeaderComponent.prototype.httpClient;
226
- /**
227
- * @type {?}
228
- * @private
229
- */
230
- ADBHeaderComponent.prototype.envService;
231
- /** @type {?} */
232
- ADBHeaderComponent.prototype.trans;
233
- /* Skipping unhandled member: ;*/
234
- }
235
-
236
- /**
237
- * @fileoverview added by tsickle
238
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
239
- */
240
- var ClickOutsideDirective = /** @class */ (function () {
241
- function ClickOutsideDirective(elementRef) {
242
- this.elementRef = elementRef;
243
- this.clickOutside = new core.EventEmitter();
244
- }
245
- /**
246
- * @param {?} target
247
- * @return {?}
248
- */
249
- ClickOutsideDirective.prototype.onClick = /**
250
- * @param {?} target
251
- * @return {?}
252
- */
253
- function (target) {
254
- /** @type {?} */
255
- var clickedInside = this.elementRef.nativeElement.contains(target);
256
- if (!clickedInside) {
257
- this.clickOutside.emit();
258
- }
259
- };
260
- ClickOutsideDirective.decorators = [
261
- { type: core.Directive, args: [{
262
- selector: '[clickOutside]',
263
- },] }
264
- ];
265
- /** @nocollapse */
266
- ClickOutsideDirective.ctorParameters = function () { return [
267
- { type: core.ElementRef }
268
- ]; };
269
- ClickOutsideDirective.propDecorators = {
270
- clickOutside: [{ type: core.Output }],
271
- onClick: [{ type: core.HostListener, args: ['document:click', ['$event.target'],] }]
272
- };
273
- return ClickOutsideDirective;
274
- }());
275
- if (false) {
276
- /** @type {?} */
277
- ClickOutsideDirective.prototype.clickOutside;
278
- /**
279
- * @type {?}
280
- * @private
281
- */
282
- ClickOutsideDirective.prototype.elementRef;
283
- }
144
+ /** @nocollapse */ ADBHeaderComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ADBHeaderComponent, deps: [{ token: i1__namespace.HttpClient }, { token: EnvironmentService }, { token: i3__namespace.TranslateService }], target: i0__namespace.ɵɵFactoryTarget.Component });
145
+ /** @nocollapse */ ADBHeaderComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.13", type: ADBHeaderComponent, selector: "adb-header2", inputs: { userName: "userName" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0__namespace, template: "<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a [href]=\"link.url\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"text-dark\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?returnUrl={{url}}\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item rounded-0\"\r\n [ngClass]=\"{'pointer list-group-item-action':link.children&&link.children.length>0}\"\r\n *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\"\r\n (click)=\"onExpandLink(link.transId)\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <div class=\"d-flex align-items-center\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n <a [href]=\"link.url\" (click)=\"$event.stopPropagation();\">\r\n {{link.transId|translate}}\r\n </a>\r\n </div>\r\n <div *ngIf=\"link.children?.length>0\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" *ngFor=\"let subLink of link.children\" style=\"padding-left:2.4rem;\">\r\n <a [href]=\"subLink.url\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">\r\n {{navigation.about.transId|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div>\r\n <img style=\"height: 3.2rem;\" src=\"/assets/images/logo.svg\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", outputs: ["clickOutside"] }, { type: i5__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i3__namespace.TranslatePipe } });
146
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ADBHeaderComponent, decorators: [{
147
+ type: i0.Component,
148
+ args: [{
149
+ selector: 'adb-header2',
150
+ templateUrl: './adb-header.component.html'
151
+ }]
152
+ }], ctorParameters: function () { return [{ type: i1__namespace.HttpClient }, { type: EnvironmentService }, { type: i3__namespace.TranslateService }]; }, propDecorators: { loginClicked: [{
153
+ type: i0.Output
154
+ }], logoutClicked: [{
155
+ type: i0.Output
156
+ }], dropMenuChange: [{
157
+ type: i0.Output
158
+ }], userName: [{
159
+ type: i0.Input
160
+ }] } });
284
161
 
285
- /**
286
- * @fileoverview added by tsickle
287
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
288
- */
289
162
  var ADBHeaderModule = /** @class */ (function () {
290
163
  function ADBHeaderModule() {
291
164
  }
292
- /**
293
- * @param {?} environment
294
- * @return {?}
295
- */
296
- ADBHeaderModule.forRoot = /**
297
- * @param {?} environment
298
- * @return {?}
299
- */
300
- function (environment) {
165
+ ADBHeaderModule.forRoot = function (environment) {
301
166
  return {
302
167
  ngModule: ADBHeaderModule,
303
168
  providers: [
304
169
  EnvironmentService,
305
170
  {
306
171
  provide: 'env',
307
- // you can also use InjectionToken
308
172
  useValue: environment
309
173
  }
310
174
  ]
311
175
  };
312
176
  };
313
- ADBHeaderModule.decorators = [
314
- { type: core.NgModule, args: [{
177
+ return ADBHeaderModule;
178
+ }());
179
+ /** @nocollapse */ ADBHeaderModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ADBHeaderModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
180
+ /** @nocollapse */ ADBHeaderModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ADBHeaderModule, declarations: [ADBHeaderComponent, ClickOutsideDirective], imports: [i5.CommonModule,
181
+ i1.HttpClientModule,
182
+ router.RouterModule,
183
+ i3.TranslateModule], exports: [ADBHeaderComponent] });
184
+ /** @nocollapse */ ADBHeaderModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ADBHeaderModule, imports: [[
185
+ i5.CommonModule,
186
+ i1.HttpClientModule,
187
+ router.RouterModule,
188
+ i3.TranslateModule
189
+ ]] });
190
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImport: i0__namespace, type: ADBHeaderModule, decorators: [{
191
+ type: i0.NgModule,
192
+ args: [{
315
193
  declarations: [ADBHeaderComponent, ClickOutsideDirective],
316
194
  imports: [
317
- common.CommonModule,
318
- http.HttpClientModule,
195
+ i5.CommonModule,
196
+ i1.HttpClientModule,
319
197
  router.RouterModule,
320
- core$1.TranslateModule
198
+ i3.TranslateModule
321
199
  ],
322
200
  exports: [ADBHeaderComponent]
323
- },] }
324
- ];
325
- return ADBHeaderModule;
326
- }());
201
+ }]
202
+ }] });
203
+
204
+ /*
205
+ * Public API Surface of artdata-shared
206
+ */
207
+
208
+ /**
209
+ * Generated bundle index. Do not edit.
210
+ */
327
211
 
328
212
  exports.ADBHeaderComponent = ADBHeaderComponent;
329
213
  exports.ADBHeaderModule = ADBHeaderModule;
330
- exports.ɵa = EnvironmentService;
331
- exports.ɵb = ClickOutsideDirective;
332
214
 
333
215
  Object.defineProperty(exports, '__esModule', { value: true });
334
216
 
335
- })));
217
+ }));
336
218
  //# sourceMappingURL=adb-shared.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adb-shared.umd.js","sources":["ng://adb-shared/lib/environment.service.ts","ng://adb-shared/lib/adb-header.component.ts","ng://adb-shared/lib/click-outside.directive.ts","ng://adb-shared/lib/adb-header.module.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class EnvironmentService {\r\n constructor(@Inject('env') public environment) {\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Navigation } from './navigation.model';\r\nimport { take } from 'rxjs/operators';\r\n@Component({\r\n selector: 'adb-header2',\r\n templateUrl: './adb-header.component.html'\r\n})\r\nexport class ADBHeaderComponent implements OnInit, OnDestroy {\r\n private subscription = new Subscription();\r\n @Output() loginClicked = new EventEmitter();\r\n @Output() logoutClicked = new EventEmitter();\r\n @Output() dropMenuChange = new EventEmitter<boolean>();\r\n fullName: string;\r\n @Input() set userName(fullName: string) {\r\n this.fullName = fullName;\r\n const splitted = fullName.split(' ');\r\n if (splitted && splitted.length > 1) {\r\n const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);\r\n this.initials = initials.toUpperCase();\r\n }\r\n };\r\n initials: string;\r\n showMenu = false;\r\n showUserMenu = false;\r\n navigation: Navigation;\r\n url: string;\r\n expandedLink: string;\r\n constructor(\r\n private httpClient: HttpClient,\r\n private envService: EnvironmentService,\r\n public trans: TranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = window.location.href;\r\n const baseUrl = this.envService.environment.resourceUrl;\r\n this.subscription.add(this.httpClient.get<Navigation>(baseUrl + '/assets/links.json').subscribe(result => {\r\n this.navigation = result;\r\n }));\r\n this.initAllTranslations(baseUrl);\r\n }\r\n\r\n private initAllTranslations(baseUrl: string): void {\r\n const trans$ = forkJoin([this.httpClient.get(baseUrl + '/assets/i18n/en.json'), this.httpClient.get(baseUrl + '/assets/i18n/sv.json')])\r\n this.subscription.add(trans$.subscribe(result => {\r\n this.trans.setTranslation('en', result[0], true);\r\n this.trans.setTranslation('sv', result[1], true);\r\n }));\r\n }\r\n\r\n showMenuDropdown(show: boolean): void {\r\n if (this.showMenu !== show) {\r\n this.showMenu = show;\r\n this.dropMenuChange.emit(show);\r\n }\r\n }\r\n\r\n setLanguage(lang): void {\r\n this.trans.use(lang);\r\n //TODO: set localstorage/cookies or probaly event to main app\r\n }\r\n\r\n onExpandLink(transId: string): void {\r\n if (this.expandedLink === transId) {\r\n this.expandedLink = null;\r\n return;\r\n }\r\n this.expandedLink = transId;\r\n }\r\n\r\n login(): void {\r\n this.loginClicked.emit();\r\n }\r\n\r\n logout(): void {\r\n this.logoutClicked.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n}\r\n\r\n\r\n // if (this.trans.store.translations[this.trans.currentLang]) {\r\n // console.log('this.trans.currentLang', this.trans.currentLang);\r\n // this.initTranslations(baseUrl, this.trans.currentLang);\r\n // } else {\r\n // this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n // console.log('event', event);\r\n // this.initTranslations(baseUrl, event.lang);\r\n // }));\r\n // }\r\n // private initTranslations(baseUrl: string, lang: string): void {\r\n // //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n // this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`, { headers: new HttpHeaders() }).subscribe(translations => {\r\n // this.trans.setTranslation(lang, translations, true);\r\n // }));\r\n // }","import { Directive, Input, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n@Directive({\r\n selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { ADBHeaderComponent } from './adb-header.component';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [ADBHeaderComponent, ClickOutsideDirective],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n exports: [ADBHeaderComponent]\r\n})\r\nexport class ADBHeaderModule {\r\n public static forRoot(environment: any): ModuleWithProviders<ADBHeaderModule> {\r\n return {\r\n ngModule: ADBHeaderModule,\r\n providers: [\r\n EnvironmentService,\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n"],"names":["Injectable","Inject","Subscription","EventEmitter","forkJoin","Component","HttpClient","TranslateService","Output","Input","Directive","ElementRef","HostListener","NgModule","CommonModule","HttpClientModule","RouterModule","TranslateModule"],"mappings":"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"}
1
+ {"version":3,"file":"adb-shared.umd.js","sources":["../../../projects/artdata-shared/src/lib/environment.service.ts","../../../projects/artdata-shared/src/lib/click-outside.directive.ts","../../../projects/artdata-shared/src/lib/adb-header.component.ts","../../../projects/artdata-shared/src/lib/adb-header.component.html","../../../projects/artdata-shared/src/lib/adb-header.module.ts","../../../projects/artdata-shared/src/public-api.ts","../../../projects/artdata-shared/src/adb-shared.ts"],"sourcesContent":["import { Inject, Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class EnvironmentService {\r\n constructor(@Inject('env') public environment) {\r\n }\r\n}","import { Directive, Input, Output, EventEmitter, ElementRef, HostListener } from '@angular/core';\r\n@Directive({\r\n selector: '[clickOutside]',\r\n})\r\nexport class ClickOutsideDirective {\r\n @Output() clickOutside = new EventEmitter<void>();\r\n constructor(private elementRef: ElementRef) { }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onClick(target: any) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.clickOutside.emit();\r\n }\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Navigation } from './navigation.model';\r\nimport { take } from 'rxjs/operators';\r\n@Component({\r\n selector: 'adb-header2',\r\n templateUrl: './adb-header.component.html'\r\n})\r\nexport class ADBHeaderComponent implements OnInit, OnDestroy {\r\n private subscription = new Subscription();\r\n @Output() loginClicked = new EventEmitter();\r\n @Output() logoutClicked = new EventEmitter();\r\n @Output() dropMenuChange = new EventEmitter<boolean>();\r\n fullName: string;\r\n @Input() set userName(fullName: string) {\r\n this.fullName = fullName;\r\n const splitted = fullName.split(' ');\r\n if (splitted && splitted.length > 1) {\r\n const initials = splitted.shift().charAt(0) + splitted.pop().charAt(0);\r\n this.initials = initials.toUpperCase();\r\n }\r\n };\r\n initials: string;\r\n showMenu = false;\r\n showUserMenu = false;\r\n navigation: Navigation;\r\n url: string;\r\n expandedLink: string;\r\n constructor(\r\n private httpClient: HttpClient,\r\n private envService: EnvironmentService,\r\n public trans: TranslateService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.url = window.location.href;\r\n const baseUrl = this.envService.environment.resourceUrl;\r\n this.subscription.add(this.httpClient.get<Navigation>(baseUrl + '/assets/links.json').subscribe(result => {\r\n this.navigation = result;\r\n }));\r\n this.initAllTranslations(baseUrl);\r\n }\r\n\r\n private initAllTranslations(baseUrl: string): void {\r\n const trans$ = forkJoin([this.httpClient.get(baseUrl + '/assets/i18n/en.json'), this.httpClient.get(baseUrl + '/assets/i18n/sv.json')])\r\n this.subscription.add(trans$.subscribe(result => {\r\n this.trans.setTranslation('en', result[0], true);\r\n this.trans.setTranslation('sv', result[1], true);\r\n }));\r\n }\r\n\r\n showMenuDropdown(show: boolean): void {\r\n if (this.showMenu !== show) {\r\n this.showMenu = show;\r\n this.dropMenuChange.emit(show);\r\n }\r\n }\r\n\r\n setLanguage(lang): void {\r\n this.trans.use(lang);\r\n //TODO: set localstorage/cookies or probaly event to main app\r\n }\r\n\r\n onExpandLink(transId: string): void {\r\n if (this.expandedLink === transId) {\r\n this.expandedLink = null;\r\n return;\r\n }\r\n this.expandedLink = transId;\r\n }\r\n\r\n login(): void {\r\n this.loginClicked.emit();\r\n }\r\n\r\n logout(): void {\r\n this.logoutClicked.emit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n}\r\n\r\n\r\n // if (this.trans.store.translations[this.trans.currentLang]) {\r\n // console.log('this.trans.currentLang', this.trans.currentLang);\r\n // this.initTranslations(baseUrl, this.trans.currentLang);\r\n // } else {\r\n // this.subscription.add(this.trans.onLangChange.subscribe((event) => {\r\n // console.log('event', event);\r\n // this.initTranslations(baseUrl, event.lang);\r\n // }));\r\n // }\r\n // private initTranslations(baseUrl: string, lang: string): void {\r\n // //TODO: Prepare for diffents lang then en sv (en-GB) or add more files in devcomponentserver :)\r\n // this.subscription.add(this.httpClient.get(baseUrl + `/assets/i18n/${lang}.json`, { headers: new HttpHeaders() }).subscribe(translations => {\r\n // this.trans.setTranslation(lang, translations, true);\r\n // }));\r\n // }","<header id=\"top-header\" (clickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <nav class=\"d-flex flex-wrap px-3\">\r\n <div class=\"flex-grow-1 d-flex align-items-center justify-content-between justify-content-md-start\">\r\n <div class=\"logo d-none d-md-block\">\r\n <img src=\"/assets/images/logo.svg\" style=\"height: 3.2rem;\">\r\n </div>\r\n <div class=\"logo ps-2 d-sm-block d-md-none d-flex align-items-center\">\r\n <img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\">\r\n </div>\r\n <strong class=\"bigger\">Artfakta</strong>\r\n </div>\r\n <div class=\"flex-grow-1 d-flex justify-content-lg-between justify-content-end align-items-center\">\r\n <div *ngIf=\"navigation\" class=\"d-flex align-items-center\">\r\n <nav class=\"d-none align-items-center d-lg-flex pe-4 gap-4\" *ngIf=\"navigation\">\r\n <ng-container *ngFor=\"let link of navigation.links\">\r\n <a [href]=\"link.url\" *ngIf=\"link.topLink\" [ngClass]=\"{'d-none d-xl-block':link.transId==='ADB_HEADER.OBSERVATION'}\">\r\n {{link.transId|translate}}\r\n </a>\r\n </ng-container>\r\n </nav>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"d-none d-md-block ps-4\">\r\n <button *ngIf=\"initials\" type=\"button\" class=\"btn initials\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\">{{initials}}</button>\r\n <button *ngIf=\"!initials\" type=\"button\" (click)=\"showUserMenu = !showUserMenu;showMenuDropdown(false)\" class=\"btn btn-link\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n </nav>\r\n <div class=\"menu\" *ngIf=\"showUserMenu\">\r\n <div class=\"menu-body bg-white p-3\" style=\"width:15rem\">\r\n <ng-container *ngIf=\"initials\">\r\n <div class=\"text-dark\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <strong>{{fullName}}</strong>\r\n </div>\r\n <hr class=\"mx-n3\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0\">\r\n <i class=\"fas fa-sign-out-alt me-1\"></i>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"d-flex justify-content-center\">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"d-block mt-3\" href=\"{{navigation.createAccountLink}}?returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"menu\" *ngIf=\"showMenu\">\r\n <div class=\"menu-body\" *ngIf=\"navigation\">\r\n <div class=\"px-3 pt-3 mb-1\">\r\n <div class=\"d-flex justify-content-between flex-wrap gap-2 mb-2\">\r\n <div>\r\n <div class=\"d-flex d-md-none align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex gap-2 d-md-none\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?returnUrl={{url}}\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='en'\" (click)=\"setLanguage('sv')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_SWEDISH'|translate}}\r\n </button>\r\n <button type=\"button\" *ngIf=\"trans.currentLang==='sv'\" (click)=\"setLanguage('en')\"\r\n class=\"btn btn-primary\">\r\n {{'ADB_HEADER.IN_ENGLISH'|translate}}\r\n </button>\r\n </div>\r\n </div>\r\n {{'ADB_HEADER.SERVICES'|translate}}\r\n </div>\r\n <div id=\"splash\">\r\n <div class=\"px-3 d-flex flex-column\">\r\n <ul class=\"list-group ms-0 mb-0 ps-0\">\r\n <li class=\"mb-1 list-group-item rounded-0\"\r\n [ngClass]=\"{'pointer list-group-item-action':link.children&&link.children.length>0}\"\r\n *ngFor=\"let link of navigation.links\"\r\n [attr.aria-expanded]=\"link.transId===expandedLink?true:false\" role=\"button\"\r\n (click)=\"onExpandLink(link.transId)\">\r\n <div class=\"d-flex align-items-center justify-content-between\">\r\n <div class=\"d-flex align-items-center\">\r\n <small class=\"fa-stack me-1\" *ngIf=\"link.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"link.icon\"></span>\r\n </small>\r\n <a [href]=\"link.url\" (click)=\"$event.stopPropagation();\">\r\n {{link.transId|translate}}\r\n </a>\r\n </div>\r\n <div *ngIf=\"link.children?.length>0\">\r\n <i class=\"fas fa-chevron-up\" [ngClass]=\"link.transId===expandedLink?'d-block ':'d-none'\"></i>\r\n <i class=\"fas fa-chevron-down\" [ngClass]=\"link.transId!==expandedLink?'d-block ':'d-none'\"></i>\r\n </div>\r\n </div>\r\n <ul class=\"list-unstyled\" [ngClass]=\"link.transId===expandedLink?'d-block':'d-none'\">\r\n <li class=\"py-1 m-0\" *ngFor=\"let subLink of link.children\" style=\"padding-left:2.4rem;\">\r\n <a [href]=\"subLink.url\">\r\n {{subLink.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"navigation.about\" class=\"mt-2 mb-auto\">\r\n <div class=\"mb-1\">{{'ADB_HEADER.CONTACT'|translate}}</div>\r\n <div class=\"mb-1 row\">\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse\" [ngClass]=\"navigation.about.icon\"></span>\r\n </small>\r\n <a [href]=\"navigation.about.url\">\r\n {{navigation.about.transId|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"col-sm-6 mb-2\">\r\n <div class=\"bg-white p-2\">\r\n <small class=\"fa-stack\" *ngIf=\"navigation.about.icon\">\r\n <span class=\"fas fa-circle fa-stack-2x text-primary\"></span>\r\n <span class=\"fas fa-stack-1x fa-inverse fa-envelope\"></span>\r\n </small>\r\n <a class=\"bg-white p-2\" href=\"mailto:artfakta@artdatabanken.se\">artfakta@artdatabanken.se</a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"height:10rem\"></div>\r\n <div>\r\n <img style=\"height: 3.2rem;\" src=\"/assets/images/logo.svg\">\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</header>\r\n","import { CommonModule } from '@angular/common';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\r\nimport { ADBHeaderComponent } from './adb-header.component';\r\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ClickOutsideDirective } from './click-outside.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [ADBHeaderComponent, ClickOutsideDirective],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n exports: [ADBHeaderComponent]\r\n})\r\nexport class ADBHeaderModule {\r\n public static forRoot(environment: any): ModuleWithProviders<ADBHeaderModule> {\r\n return {\r\n ngModule: ADBHeaderModule,\r\n providers: [\r\n EnvironmentService,\r\n {\r\n provide: 'env', // you can also use InjectionToken\r\n useValue: environment\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of artdata-shared\r\n */\r\n\r\nexport * from './lib/adb-header.component';\r\nexport * from './lib/adb-header.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Injectable","Inject","EventEmitter","Directive","Output","HostListener","Subscription","forkJoin","Component","Input","CommonModule","HttpClientModule","RouterModule","TranslateModule","NgModule"],"mappings":"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"}