@dso-toolkit/core 41.0.1 → 43.1.0

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.
Files changed (140) hide show
  1. package/dist/cjs/dso-alert.cjs.entry.js +1 -1
  2. package/dist/cjs/dso-autosuggest.cjs.entry.js +30 -10
  3. package/dist/cjs/dso-badge.cjs.entry.js +1 -1
  4. package/dist/cjs/dso-banner.cjs.entry.js +1 -1
  5. package/dist/cjs/dso-date-picker.cjs.entry.js +1 -1
  6. package/dist/cjs/dso-header.cjs.entry.js +31 -21
  7. package/dist/cjs/dso-helpcenter-panel.cjs.entry.js +1 -1
  8. package/dist/cjs/dso-highlight-box.cjs.entry.js +1 -1
  9. package/dist/cjs/dso-icon.cjs.entry.js +15 -24
  10. package/dist/cjs/dso-image-overlay.cjs.entry.js +46 -8
  11. package/dist/cjs/dso-info-button.cjs.entry.js +5 -1
  12. package/dist/cjs/dso-label.cjs.entry.js +78 -3
  13. package/dist/cjs/dso-map-controls.cjs.entry.js +1 -1
  14. package/dist/cjs/dso-ozon-content.cjs.entry.js +60 -9
  15. package/dist/cjs/dso-pagination.cjs.entry.js +6 -3
  16. package/dist/cjs/dso-progress-bar.cjs.entry.js +1 -1
  17. package/dist/cjs/dso-toggletip.cjs.entry.js +3 -15
  18. package/dist/cjs/dso-toolkit.cjs.js +1 -1
  19. package/dist/cjs/dso-tooltip.cjs.entry.js +8 -1
  20. package/dist/cjs/dso-tree-view.cjs.entry.js +24 -2
  21. package/dist/cjs/dso-viewer-grid.cjs.entry.js +1 -1
  22. package/dist/cjs/loader.cjs.js +1 -1
  23. package/dist/collection/collection-manifest.json +1 -1
  24. package/dist/collection/components/alert/alert.css +5 -5
  25. package/dist/collection/components/autosuggest/autosuggest.js +68 -11
  26. package/dist/collection/components/autosuggest/autosuggest.template.js +3 -1
  27. package/dist/collection/components/badge/badge.css +4 -1
  28. package/dist/collection/components/banner/banner.css +2 -2
  29. package/dist/collection/components/date-picker/date-picker.css +3 -3
  30. package/dist/collection/components/header/header.css +149 -3
  31. package/dist/collection/components/header/header.interfaces.js +1 -0
  32. package/dist/collection/components/header/header.js +94 -100
  33. package/dist/collection/components/header/header.template.js +15 -31
  34. package/dist/collection/components/helpcenter-panel/helpcenter-panel.css +98 -4
  35. package/dist/collection/components/highlight-box/highlight-box.css +11 -6
  36. package/dist/collection/components/icon/icon.js +0 -2
  37. package/dist/collection/components/image-overlay/image-overlay.css +126 -4
  38. package/dist/collection/components/image-overlay/image-overlay.js +57 -11
  39. package/dist/collection/components/info-button/info-button.js +24 -2
  40. package/dist/collection/components/label/label.css +14 -1
  41. package/dist/collection/components/label/label.js +118 -12
  42. package/dist/collection/components/label/label.template.js +2 -1
  43. package/dist/collection/components/list/list.template.js +11 -4
  44. package/dist/collection/components/map-controls/map-controls.css +149 -4
  45. package/dist/collection/components/ozon-content/nodes/figuur.node.js +22 -0
  46. package/dist/collection/components/ozon-content/nodes/{illustratie.node.js → inline-tekst-afbeelding.node.js} +2 -2
  47. package/dist/collection/components/ozon-content/nodes/int-io-ref.node.js +27 -0
  48. package/dist/collection/components/ozon-content/nodes/int-ref.node.js +1 -0
  49. package/dist/collection/components/ozon-content/ozon-content-mapper.js +7 -3
  50. package/dist/collection/components/ozon-content/ozon-content.css +25 -8
  51. package/dist/collection/components/ozon-content/ozon-content.js +3 -1
  52. package/dist/collection/components/pagination/pagination.css +4 -4
  53. package/dist/collection/components/pagination/pagination.js +8 -5
  54. package/dist/collection/components/progress-bar/progress-bar.css +1 -1
  55. package/dist/collection/components/toggletip/toggletip.js +3 -15
  56. package/dist/collection/components/tooltip/tooltip.css +1 -1
  57. package/dist/collection/components/tooltip/tooltip.js +7 -0
  58. package/dist/collection/components/tree-view/tree-item.js +1 -1
  59. package/dist/collection/components/tree-view/tree-view.js +58 -2
  60. package/dist/collection/components/viewer-grid/viewer-grid.css +212 -10
  61. package/dist/custom-elements/index.js +318 -110
  62. package/dist/dso-toolkit/dso-toolkit.css +1 -1
  63. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  64. package/dist/dso-toolkit/p-15d0f2eb.entry.js +1 -0
  65. package/dist/dso-toolkit/p-1845b0ce.entry.js +1 -0
  66. package/dist/dso-toolkit/p-19b5fae2.entry.js +1 -0
  67. package/dist/dso-toolkit/p-237cd551.entry.js +1 -0
  68. package/dist/dso-toolkit/{p-0777c1c4.entry.js → p-363b56b1.entry.js} +1 -1
  69. package/dist/dso-toolkit/p-590cbab6.entry.js +1 -0
  70. package/dist/dso-toolkit/{p-3cb44a36.entry.js → p-6505be7d.entry.js} +1 -1
  71. package/dist/dso-toolkit/p-68d49733.entry.js +1 -0
  72. package/dist/dso-toolkit/{p-1e92e29d.entry.js → p-7b716383.entry.js} +1 -1
  73. package/dist/dso-toolkit/p-80b5c915.entry.js +1 -0
  74. package/dist/dso-toolkit/p-93683c65.entry.js +1 -0
  75. package/dist/dso-toolkit/p-acc0620a.entry.js +1 -0
  76. package/dist/dso-toolkit/p-ba835421.entry.js +1 -0
  77. package/dist/dso-toolkit/p-bd1ee63c.entry.js +1 -0
  78. package/dist/dso-toolkit/p-bf4d6f63.entry.js +1 -0
  79. package/dist/dso-toolkit/p-ca3a1440.entry.js +1 -0
  80. package/dist/dso-toolkit/{p-37e12c3c.entry.js → p-d60876c2.entry.js} +1 -1
  81. package/dist/dso-toolkit/p-d84c166c.entry.js +1 -0
  82. package/dist/dso-toolkit/p-e98f049e.entry.js +1 -0
  83. package/dist/dso-toolkit/p-f726111e.entry.js +1 -0
  84. package/dist/esm/dso-alert.entry.js +1 -1
  85. package/dist/esm/dso-autosuggest.entry.js +30 -10
  86. package/dist/esm/dso-badge.entry.js +1 -1
  87. package/dist/esm/dso-banner.entry.js +1 -1
  88. package/dist/esm/dso-date-picker.entry.js +1 -1
  89. package/dist/esm/dso-header.entry.js +31 -21
  90. package/dist/esm/dso-helpcenter-panel.entry.js +1 -1
  91. package/dist/esm/dso-highlight-box.entry.js +1 -1
  92. package/dist/esm/dso-icon.entry.js +15 -24
  93. package/dist/esm/dso-image-overlay.entry.js +46 -8
  94. package/dist/esm/dso-info-button.entry.js +5 -1
  95. package/dist/esm/dso-label.entry.js +79 -4
  96. package/dist/esm/dso-map-controls.entry.js +1 -1
  97. package/dist/esm/dso-ozon-content.entry.js +60 -9
  98. package/dist/esm/dso-pagination.entry.js +6 -3
  99. package/dist/esm/dso-progress-bar.entry.js +1 -1
  100. package/dist/esm/dso-toggletip.entry.js +3 -15
  101. package/dist/esm/dso-toolkit.js +1 -1
  102. package/dist/esm/dso-tooltip.entry.js +8 -1
  103. package/dist/esm/dso-tree-view.entry.js +24 -2
  104. package/dist/esm/dso-viewer-grid.entry.js +1 -1
  105. package/dist/esm/loader.js +1 -1
  106. package/dist/types/components/autosuggest/autosuggest.d.ts +17 -1
  107. package/dist/types/components/autosuggest/autosuggest.template.d.ts +1 -1
  108. package/dist/types/components/header/header.d.ts +13 -20
  109. package/dist/types/components/header/header.interfaces.d.ts +17 -0
  110. package/dist/types/components/header/header.template.d.ts +1 -1
  111. package/dist/types/components/image-overlay/image-overlay.d.ts +5 -0
  112. package/dist/types/components/info-button/info-button.d.ts +2 -0
  113. package/dist/types/components/label/label.d.ts +21 -3
  114. package/dist/types/components/label/label.template.d.ts +1 -1
  115. package/dist/types/components/ozon-content/nodes/{illustratie.node.d.ts → figuur.node.d.ts} +1 -1
  116. package/dist/types/components/ozon-content/nodes/inline-tekst-afbeelding.node.d.ts +5 -0
  117. package/dist/types/components/ozon-content/nodes/int-io-ref.node.d.ts +6 -0
  118. package/dist/types/components/ozon-content/ozon-content-node-context.interface.d.ts +2 -1
  119. package/dist/types/components/ozon-content/ozon-content.interfaces.d.ts +2 -0
  120. package/dist/types/components/toggletip/toggletip.d.ts +1 -3
  121. package/dist/types/components/tooltip/tooltip.d.ts +1 -0
  122. package/dist/types/components/tree-view/tree-view.d.ts +10 -2
  123. package/dist/types/components.d.ts +43 -7
  124. package/package.json +1 -1
  125. package/dist/dso-toolkit/p-076400f4.entry.js +0 -1
  126. package/dist/dso-toolkit/p-09b53589.entry.js +0 -1
  127. package/dist/dso-toolkit/p-14fc5767.entry.js +0 -1
  128. package/dist/dso-toolkit/p-2f64bded.entry.js +0 -1
  129. package/dist/dso-toolkit/p-5e614420.entry.js +0 -1
  130. package/dist/dso-toolkit/p-60679db4.entry.js +0 -1
  131. package/dist/dso-toolkit/p-7796687c.entry.js +0 -1
  132. package/dist/dso-toolkit/p-7f41f2a1.entry.js +0 -1
  133. package/dist/dso-toolkit/p-b1dc8d76.entry.js +0 -1
  134. package/dist/dso-toolkit/p-c0b7f435.entry.js +0 -1
  135. package/dist/dso-toolkit/p-d0d279cc.entry.js +0 -1
  136. package/dist/dso-toolkit/p-daf049bd.entry.js +0 -1
  137. package/dist/dso-toolkit/p-e01b1657.entry.js +0 -1
  138. package/dist/dso-toolkit/p-e1496a15.entry.js +0 -1
  139. package/dist/dso-toolkit/p-ea14647b.entry.js +0 -1
  140. package/dist/dso-toolkit/p-f1026921.entry.js +0 -1
@@ -52,6 +52,152 @@
52
52
  .logout {
53
53
  margin-right: 16px;
54
54
  }
55
+ .login .dso-tertiary,
56
+ .logout .dso-tertiary {
57
+ display: inline-block;
58
+ font-size: 1em;
59
+ font-weight: 500;
60
+ margin-bottom: 0;
61
+ text-decoration: none;
62
+ touch-action: manipulation;
63
+ text-align: left;
64
+ user-select: none;
65
+ vertical-align: middle;
66
+ border: 0;
67
+ color: #39870c;
68
+ line-height: 1;
69
+ padding: 0;
70
+ background-color: transparent;
71
+ cursor: pointer;
72
+ font-family: Asap, sans-serif;
73
+ font-weight: 600;
74
+ vertical-align: text-bottom;
75
+ }
76
+ .login .dso-tertiary:focus, .login .dso-tertiary:focus-visible,
77
+ .logout .dso-tertiary:focus,
78
+ .logout .dso-tertiary:focus-visible {
79
+ outline-offset: 2px;
80
+ }
81
+ .login .dso-tertiary:active,
82
+ .logout .dso-tertiary:active {
83
+ outline: 0;
84
+ }
85
+ .login .dso-tertiary.extern::after, .login .dso-tertiary.download::after,
86
+ .logout .dso-tertiary.extern::after,
87
+ .logout .dso-tertiary.download::after {
88
+ content: "";
89
+ display: inline-block;
90
+ height: 1.5em;
91
+ margin-left: 8px;
92
+ vertical-align: top;
93
+ width: 1.5em;
94
+ }
95
+ .login .dso-tertiary[disabled],
96
+ .logout .dso-tertiary[disabled] {
97
+ color: #afcf9d;
98
+ }
99
+ .login .dso-tertiary[disabled].dso-spinner-left, .login .dso-tertiary[disabled].dso-spinner-right,
100
+ .logout .dso-tertiary[disabled].dso-spinner-left,
101
+ .logout .dso-tertiary[disabled].dso-spinner-right {
102
+ color: #39870c;
103
+ }
104
+ .login .dso-tertiary:not([disabled]):hover,
105
+ .logout .dso-tertiary:not([disabled]):hover {
106
+ color: #676cb0;
107
+ text-decoration: underline;
108
+ }
109
+ .login .dso-tertiary:not([disabled]):active,
110
+ .logout .dso-tertiary:not([disabled]):active {
111
+ color: #676cb0;
112
+ }
113
+ .login .dso-tertiary.btn-align,
114
+ .logout .dso-tertiary.btn-align {
115
+ line-height: calc(1.5em - 1px);
116
+ padding: 11px 0;
117
+ position: relative;
118
+ }
119
+ .login .dso-tertiary.extern::after, .login .dso-tertiary.download::after,
120
+ .logout .dso-tertiary.extern::after,
121
+ .logout .dso-tertiary.download::after {
122
+ position: relative;
123
+ top: -2px;
124
+ }
125
+ .login .dso-tertiary.download::after,
126
+ .logout .dso-tertiary.download::after {
127
+ background: var(--dso-icon, var(--di-download)) no-repeat;
128
+ background-position: center;
129
+ background-size: cover;
130
+ height: 24px;
131
+ vertical-align: top;
132
+ width: 24px;
133
+ }
134
+ .login .dso-tertiary.download[disabled]::after,
135
+ .logout .dso-tertiary.download[disabled]::after {
136
+ --dso-icon: var(--di-download-grasgroen-40);
137
+ }
138
+ .login .dso-tertiary.download:not([disabled]):hover::after, .login .dso-tertiary.download:not([disabled]):active::after,
139
+ .logout .dso-tertiary.download:not([disabled]):hover::after,
140
+ .logout .dso-tertiary.download:not([disabled]):active::after {
141
+ --dso-icon: var(--di-download-scampi);
142
+ }
143
+ .login .dso-tertiary.extern::after,
144
+ .logout .dso-tertiary.extern::after {
145
+ background: var(--dso-icon, var(--di-external-link)) no-repeat;
146
+ background-position: center;
147
+ background-size: cover;
148
+ height: 24px;
149
+ vertical-align: top;
150
+ width: 24px;
151
+ }
152
+ .login .dso-tertiary.extern[disabled]::after,
153
+ .logout .dso-tertiary.extern[disabled]::after {
154
+ --dso-icon: var(--di-external-link-grasgroen-40);
155
+ }
156
+ .login .dso-tertiary.extern:not([disabled]):hover::after, .login .dso-tertiary.extern:not([disabled]):active::after,
157
+ .logout .dso-tertiary.extern:not([disabled]):hover::after,
158
+ .logout .dso-tertiary.extern:not([disabled]):active::after {
159
+ --dso-icon: var(--di-external-link-scampi);
160
+ }
161
+ .login .dso-tertiary.dso-spinner-left::before,
162
+ .logout .dso-tertiary.dso-spinner-left::before {
163
+ background-image: url("data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %2339870c; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E");
164
+ background-repeat: no-repeat;
165
+ content: "";
166
+ display: inline-block;
167
+ height: 24px;
168
+ vertical-align: middle;
169
+ width: 24px;
170
+ margin-right: 8px;
171
+ }
172
+ .login .dso-tertiary.dso-spinner-right::after,
173
+ .logout .dso-tertiary.dso-spinner-right::after {
174
+ background-image: url("data:image/svg+xml,%3Csvg class='spinner' viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg' %3E%3Cstyle%3E .spinner %7B animation: rotator 8s linear infinite; transform-origin: center; %7D @keyframes rotator %7B 0%25 %7B transform: rotate(0deg); %7D 100%25 %7B transform: rotate(360deg); %7D %7D .path %7B stroke-dasharray: 265; stroke-dashoffset: 0; transform-origin: center; stroke: %2339870c; animation: dash 2s ease-in-out infinite; %7D @keyframes dash %7B 0%25 %7B stroke-dashoffset: 265; %7D 50%25 %7B stroke-dashoffset: 65; transform:rotate(90deg); %7D 100%25 %7B stroke-dashoffset: 265; transform:rotate(360deg); %7D %3C/style%3E%3Ccircle class='path' fill='none' stroke-width='10' stroke-linecap='butt' cx='50' cy='50' r='45'%3E%3C/circle%3E%3C/svg%3E");
175
+ background-repeat: no-repeat;
176
+ content: "";
177
+ display: inline-block;
178
+ height: 24px;
179
+ vertical-align: middle;
180
+ width: 24px;
181
+ margin-left: 8px;
182
+ }
183
+ .login .dso-tertiary dso-icon + span:not(.sr-only),
184
+ .login .dso-tertiary svg.di + span:not(.sr-only),
185
+ .login .dso-tertiary span:not(.sr-only) + dso-icon,
186
+ .login .dso-tertiary span:not(.sr-only) + svg.di,
187
+ .logout .dso-tertiary dso-icon + span:not(.sr-only),
188
+ .logout .dso-tertiary svg.di + span:not(.sr-only),
189
+ .logout .dso-tertiary span:not(.sr-only) + dso-icon,
190
+ .logout .dso-tertiary span:not(.sr-only) + svg.di {
191
+ margin-left: 8px;
192
+ }
193
+ .login .dso-tertiary dso-icon,
194
+ .login .dso-tertiary svg.di,
195
+ .login .dso-tertiary span,
196
+ .logout .dso-tertiary dso-icon,
197
+ .logout .dso-tertiary svg.di,
198
+ .logout .dso-tertiary span {
199
+ vertical-align: middle;
200
+ }
55
201
 
56
202
  .profile a,
57
203
  .logout a,
@@ -158,7 +304,7 @@ dso-dropdown-menu .dso-dropdown-options {
158
304
  border-radius: 4px;
159
305
  border: 1px solid rgba(0, 0, 0, 0.15);
160
306
  box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.4);
161
- font-size: 16px;
307
+ font-size: 1rem;
162
308
  margin: 2px 0 0;
163
309
  min-width: 160px;
164
310
  padding: 5px 0;
@@ -344,7 +490,7 @@ dso-dropdown-menu .dso-dropdown-options dso-dropdown-options li + li {
344
490
  }
345
491
  .dropdown dso-dropdown-menu button {
346
492
  color: #39870c;
347
- font-size: 16px;
493
+ font-size: 1rem;
348
494
  font-weight: 600;
349
495
  position: relative;
350
496
  }
@@ -422,7 +568,7 @@ dso-dropdown-menu .dso-dropdown-options dso-dropdown-options li + li {
422
568
  }
423
569
  .dso-nav.dso-nav-sub > li > a {
424
570
  text-decoration: none;
425
- font-size: 16px;
571
+ font-size: 1rem;
426
572
  margin-top: 4px;
427
573
  padding: 4px 8px 3px;
428
574
  }
@@ -6,8 +6,9 @@ export class Header {
6
6
  constructor() {
7
7
  this.mainMenu = [];
8
8
  this.useDropDownMenu = "auto";
9
+ /** Used to show the login/logout option. 'none' renders nothing. */
10
+ this.authStatus = 'none';
9
11
  this.showDropDown = false;
10
- this.isLoggedIn = false;
11
12
  this.hasSubLogo = false;
12
13
  this.overflowMenuItems = 0;
13
14
  this.onWindowResize = debounce(() => {
@@ -15,17 +16,21 @@ export class Header {
15
16
  this.setOverflowMenu();
16
17
  }, 100);
17
18
  this.MenuItem = (item) => {
18
- const click = (event) => {
19
- event.preventDefault();
20
- this.menuItemClick.emit({
21
- originalEvent: event,
22
- menuItem: item,
23
- });
24
- };
25
19
  return (h("li", { class: item.active ? "dso-active" : undefined },
26
- h("a", { href: item.url, "aria-current": item.active ? "page" : undefined, onClick: click }, item.label)));
20
+ h("a", { href: item.url, "aria-current": item.active ? "page" : undefined, onClick: e => this.clickHandler(e, 'menuItem', { menuItem: item }) }, item.label)));
27
21
  };
28
22
  }
23
+ clickHandler(e, type, options) {
24
+ var _a, _b;
25
+ this.headerClick.emit({
26
+ originalEvent: e,
27
+ isModifiedEvent: e.button !== 0 || e.ctrlKey || e.shiftKey || e.altKey || e.metaKey,
28
+ type,
29
+ menuItem: options === null || options === void 0 ? void 0 : options.menuItem,
30
+ url: (_a = options === null || options === void 0 ? void 0 : options.url) !== null && _a !== void 0 ? _a : (_b = options === null || options === void 0 ? void 0 : options.menuItem) === null || _b === void 0 ? void 0 : _b.url,
31
+ });
32
+ }
33
+ ;
29
34
  watchUseDropDownMenu(value) {
30
35
  if (value === "auto") {
31
36
  this.setDropDownMenu();
@@ -43,7 +48,7 @@ export class Header {
43
48
  if (this.wrapper.clientWidth >= this.nav.clientWidth) {
44
49
  return;
45
50
  }
46
- if (this.overflowMenuItems >= this.mainMenu.length) {
51
+ if (this.mainMenu && this.overflowMenuItems >= this.mainMenu.length) {
47
52
  return;
48
53
  }
49
54
  this.overflowMenuItems++;
@@ -87,7 +92,7 @@ export class Header {
87
92
  h("slot", { name: "logo" })),
88
93
  h("div", { class: "sub-logo" },
89
94
  h("slot", { name: "sub-logo" }))),
90
- this.showDropDown && this.mainMenu.length > 0 && (h("div", { class: "dropdown" },
95
+ this.showDropDown && this.mainMenu && this.mainMenu.length > 0 && (h("div", { class: "dropdown" },
91
96
  h("dso-dropdown-menu", { "dropdown-align": "right" },
92
97
  h("button", { type: "button", class: "tertiary", slot: "toggle" },
93
98
  h("span", null, "Menu")),
@@ -96,31 +101,35 @@ export class Header {
96
101
  h("ul", null,
97
102
  this.mainMenu.map(this.MenuItem),
98
103
  this.userHomeUrl && (h("li", null,
99
- h("a", { href: this.userHomeUrl }, "Mijn Omgevingsloket"))),
100
- this.loginUrl && !this.isLoggedIn && (h("li", null,
101
- h("a", { href: this.loginUrl }, "Inloggen"))),
104
+ h("a", { href: this.userHomeUrl, onClick: e => this.clickHandler(e, 'userHome', { url: this.userHomeUrl }) }, "Mijn Omgevingsloket"))),
102
105
  this.userProfileUrl &&
103
106
  this.userProfileName &&
104
- this.isLoggedIn && (h("li", null,
105
- h("a", { href: this.userProfileUrl },
107
+ this.authStatus === 'loggedIn' && (h("li", null,
108
+ h("a", { href: this.userProfileUrl, onClick: e => this.clickHandler(e, 'profile', { url: this.userProfileUrl }) },
106
109
  this.userProfileName,
107
- h("span", { class: "profile-label" }, "- Mijn profiel")))),
108
- this.logoutUrl && this.isLoggedIn && (h("li", null,
109
- h("a", { href: this.logoutUrl, onClick: e => this.logoutClick.emit({ originalEvent: e }) }, "Uitloggen"))))))))),
110
- !this.showDropDown && this.mainMenu.length > 0 && (h(Fragment, null,
110
+ h("span", { class: "profile-label" }, " - Mijn profiel")))),
111
+ this.authStatus === 'loggedOut' && (h("li", null, this.loginUrl
112
+ ? h("a", { href: this.loginUrl, onClick: e => this.clickHandler(e, 'login', { url: this.loginUrl }) }, "Inloggen")
113
+ : h("button", { type: "button", onClick: e => this.clickHandler(e, 'login') }, "Inloggen"))),
114
+ this.authStatus === 'loggedIn' && (h("li", null, this.logoutUrl
115
+ ? h("a", { href: this.logoutUrl, onClick: e => this.clickHandler(e, 'logout', { url: this.logoutUrl }) }, "Uitloggen")
116
+ : h("button", { type: "button", onClick: e => this.clickHandler(e, 'logout') }, "Uitloggen"))))))))),
117
+ !this.showDropDown && (h(Fragment, null,
111
118
  h("div", { class: "dso-header-session" },
112
119
  this.userProfileUrl &&
113
120
  this.userProfileName &&
114
- this.isLoggedIn && (h("div", { class: "profile" },
121
+ this.authStatus === 'loggedIn' && (h("div", { class: "profile" },
115
122
  h("span", { class: "profile-label" }, "Welkom:"),
116
- h("a", { href: this.userProfileUrl }, this.userProfileName))),
117
- this.loginUrl && !this.isLoggedIn && (h("div", { class: "login" },
118
- h("a", { href: this.loginUrl }, "Inloggen"))),
119
- this.logoutUrl && this.isLoggedIn && (h("div", { class: "logout" },
120
- h("a", { href: this.logoutUrl, onClick: e => this.logoutClick.emit({ originalEvent: e }) }, "Uitloggen")))),
121
- h("nav", { class: "dso-navbar" },
123
+ h("a", { href: this.userProfileUrl, onClick: e => this.clickHandler(e, 'profile', { url: this.userProfileUrl }) }, this.userProfileName))),
124
+ this.authStatus === 'loggedOut' && (h("div", { class: "login" }, this.loginUrl
125
+ ? h("a", { href: this.loginUrl, onClick: e => this.clickHandler(e, 'login', { url: this.loginUrl }) }, "Inloggen")
126
+ : h("button", { class: "dso-tertiary", type: "button", onClick: e => this.clickHandler(e, 'login') }, "Inloggen"))),
127
+ this.authStatus === 'loggedIn' && (h("div", { class: "logout" }, this.logoutUrl
128
+ ? h("a", { href: this.logoutUrl, onClick: e => this.clickHandler(e, 'logout', { url: this.logoutUrl }) }, "Uitloggen")
129
+ : h("button", { class: "dso-tertiary", type: "button", onClick: e => this.clickHandler(e, 'logout') }, "Uitloggen")))),
130
+ ((this.mainMenu && this.mainMenu.length > 0) || this.userHomeUrl) && (h("nav", { class: "dso-navbar" },
122
131
  h("ul", { class: "dso-nav dso-nav-main", ref: (element) => (this.nav = element) },
123
- this.mainMenu
132
+ this.mainMenu && this.mainMenu
124
133
  .filter((_, index) => index < this.mainMenu.length - this.overflowMenuItems)
125
134
  .map(this.MenuItem),
126
135
  this.overflowMenuItems > 0 && (h("li", null,
@@ -129,15 +138,13 @@ export class Header {
129
138
  h("span", null, "Meer")),
130
139
  h("div", { class: "dso-dropdown-options" },
131
140
  h("dso-dropdown-options", null,
132
- h("ul", null, this.mainMenu
133
- .filter((_, index) => index >=
134
- this.mainMenu.length -
135
- this.overflowMenuItems)
141
+ h("ul", null, this.mainMenu && this.mainMenu
142
+ .filter((_, index) => index >= this.mainMenu.length - this.overflowMenuItems)
136
143
  .map(this.MenuItem))))))),
137
144
  this.userHomeUrl && (h("li", { class: "menu-user-home" },
138
- h("a", { href: this.userHomeUrl },
145
+ h("a", { href: this.userHomeUrl, onClick: e => this.clickHandler(e, 'userHome', { url: this.userHomeUrl }) },
139
146
  h("dso-icon", { icon: "user-line" }),
140
- "Mijn Omgevingsloket"))))))))));
147
+ "Mijn Omgevingsloket")))))))))));
141
148
  }
142
149
  static get is() { return "dso-header"; }
143
150
  static get encapsulation() { return "shadow"; }
@@ -148,13 +155,18 @@ export class Header {
148
155
  "$": ["header.css"]
149
156
  }; }
150
157
  static get properties() { return {
151
- "loginUrl": {
152
- "type": "string",
158
+ "mainMenu": {
159
+ "type": "unknown",
153
160
  "mutable": false,
154
161
  "complexType": {
155
- "original": "string",
156
- "resolved": "string | undefined",
157
- "references": {}
162
+ "original": "HeaderMenuItem[]",
163
+ "resolved": "HeaderMenuItem[] | undefined",
164
+ "references": {
165
+ "HeaderMenuItem": {
166
+ "location": "import",
167
+ "path": "./header.interfaces"
168
+ }
169
+ }
158
170
  },
159
171
  "required": false,
160
172
  "optional": true,
@@ -162,81 +174,77 @@ export class Header {
162
174
  "tags": [],
163
175
  "text": ""
164
176
  },
165
- "attribute": "login-url",
166
- "reflect": false
177
+ "defaultValue": "[]"
167
178
  },
168
- "logoutUrl": {
179
+ "useDropDownMenu": {
169
180
  "type": "string",
170
181
  "mutable": false,
171
182
  "complexType": {
172
- "original": "string",
173
- "resolved": "string | undefined",
183
+ "original": "\"always\" | \"never\" | \"auto\"",
184
+ "resolved": "\"always\" | \"auto\" | \"never\"",
174
185
  "references": {}
175
186
  },
176
187
  "required": false,
177
- "optional": true,
188
+ "optional": false,
178
189
  "docs": {
179
190
  "tags": [],
180
191
  "text": ""
181
192
  },
182
- "attribute": "logout-url",
183
- "reflect": false
193
+ "attribute": "use-drop-down-menu",
194
+ "reflect": false,
195
+ "defaultValue": "\"auto\""
184
196
  },
185
- "mainMenu": {
186
- "type": "unknown",
197
+ "authStatus": {
198
+ "type": "string",
187
199
  "mutable": false,
188
200
  "complexType": {
189
- "original": "HeaderMenuItem[]",
190
- "resolved": "HeaderMenuItem[]",
191
- "references": {
192
- "HeaderMenuItem": {
193
- "location": "local"
194
- }
195
- }
201
+ "original": "'none' | 'loggedIn' | 'loggedOut'",
202
+ "resolved": "\"loggedIn\" | \"loggedOut\" | \"none\"",
203
+ "references": {}
196
204
  },
197
205
  "required": false,
198
206
  "optional": false,
199
207
  "docs": {
200
208
  "tags": [],
201
- "text": ""
209
+ "text": "Used to show the login/logout option. 'none' renders nothing."
202
210
  },
203
- "defaultValue": "[]"
211
+ "attribute": "auth-status",
212
+ "reflect": false,
213
+ "defaultValue": "'none'"
204
214
  },
205
- "useDropDownMenu": {
215
+ "loginUrl": {
206
216
  "type": "string",
207
217
  "mutable": false,
208
218
  "complexType": {
209
- "original": "\"always\" | \"never\" | \"auto\"",
210
- "resolved": "\"always\" | \"auto\" | \"never\"",
219
+ "original": "string",
220
+ "resolved": "string | undefined",
211
221
  "references": {}
212
222
  },
213
223
  "required": false,
214
- "optional": false,
224
+ "optional": true,
215
225
  "docs": {
216
226
  "tags": [],
217
- "text": ""
227
+ "text": "When the `authStatus` is `loggedOut` a loginUrl can be provided, the login button will render as an anchor."
218
228
  },
219
- "attribute": "use-drop-down-menu",
220
- "reflect": false,
221
- "defaultValue": "\"auto\""
229
+ "attribute": "login-url",
230
+ "reflect": false
222
231
  },
223
- "isLoggedIn": {
224
- "type": "boolean",
232
+ "logoutUrl": {
233
+ "type": "string",
225
234
  "mutable": false,
226
235
  "complexType": {
227
- "original": "boolean",
228
- "resolved": "boolean",
236
+ "original": "string",
237
+ "resolved": "string | undefined",
229
238
  "references": {}
230
239
  },
231
240
  "required": false,
232
- "optional": false,
241
+ "optional": true,
233
242
  "docs": {
234
243
  "tags": [],
235
244
  "text": ""
236
245
  },
237
- "attribute": "is-logged-in",
238
- "reflect": false,
239
- "defaultValue": "false"
246
+ "attribute": "logout-url",
247
+ "reflect": false
240
248
  },
241
249
  "userProfileName": {
242
250
  "type": "string",
@@ -296,40 +304,26 @@ export class Header {
296
304
  "overflowMenuItems": {}
297
305
  }; }
298
306
  static get events() { return [{
299
- "method": "menuItemClick",
300
- "name": "menuItemClick",
301
- "bubbles": true,
302
- "cancelable": true,
303
- "composed": true,
304
- "docs": {
305
- "tags": [],
306
- "text": ""
307
- },
308
- "complexType": {
309
- "original": "HeaderMenuItemClickEvent",
310
- "resolved": "HeaderMenuItemClickEvent",
311
- "references": {
312
- "HeaderMenuItemClickEvent": {
313
- "location": "local"
314
- }
315
- }
316
- }
317
- }, {
318
- "method": "logoutClick",
319
- "name": "logoutClick",
307
+ "method": "headerClick",
308
+ "name": "headerClick",
320
309
  "bubbles": true,
321
310
  "cancelable": true,
322
311
  "composed": true,
323
312
  "docs": {
324
313
  "tags": [],
325
- "text": "Only available when `logout-url` is set"
314
+ "text": "Emitted when something in the header is selected.\n\n`event.detail.type` indicates the functionality the user pressed. eg. `'login'` or `'menuItem'`"
326
315
  },
327
316
  "complexType": {
328
- "original": "HeaderMenuLogoutClick",
329
- "resolved": "HeaderMenuLogoutClick",
317
+ "original": "HeaderClickEvent | HeaderClickMenuItemEvent",
318
+ "resolved": "HeaderClickEvent | HeaderClickMenuItemEvent",
330
319
  "references": {
331
- "HeaderMenuLogoutClick": {
332
- "location": "local"
320
+ "HeaderClickEvent": {
321
+ "location": "import",
322
+ "path": "./header.interfaces"
323
+ },
324
+ "HeaderClickMenuItemEvent": {
325
+ "location": "import",
326
+ "path": "./header.interfaces"
333
327
  }
334
328
  }
335
329
  }
@@ -1,34 +1,18 @@
1
1
  import { html } from "lit-html";
2
2
  import { ifDefined } from "lit-html/directives/if-defined.js";
3
- export function headerTemplate({ logo, subLogo, mainMenu, useDropDownMenu, showSubLogo, loginUrl, logoutUrl, isLoggedIn, showLoggedIn, userProfileUrl, userProfileName, userHomeUrl, menuItemClick, }) {
4
- const bindLoginUrl = showLoggedIn && loginUrl ? loginUrl : undefined;
5
- const bindLogoutUrl = showLoggedIn && logoutUrl ? logoutUrl : undefined;
6
- return showSubLogo
7
- ? html `<dso-header
8
- .mainMenu=${mainMenu}
9
- use-drop-down-menu=${ifDefined(useDropDownMenu)}
10
- is-logged-in=${ifDefined(isLoggedIn)}
11
- login-url=${ifDefined(bindLoginUrl)}
12
- logout-url=${ifDefined(bindLogoutUrl)}
13
- user-profile-url=${ifDefined(userProfileUrl)}
14
- user-profile-name=${ifDefined(userProfileName)}
15
- user-home-url=${ifDefined(userHomeUrl)}
16
- @menuItemClick=${menuItemClick}
17
- >
18
- <div slot="logo"><img height="40" alt="Omgevingsloket" src="${logo}" /></div>
19
- <div slot="sub-logo"><img alt="Regels op de kaart" src="${subLogo}" /></div></div>
20
- </dso-header>`
21
- : html `<dso-header
22
- .mainMenu=${mainMenu}
23
- use-drop-down-menu=${ifDefined(useDropDownMenu)}
24
- is-logged-in=${ifDefined(isLoggedIn)}
25
- login-url=${ifDefined(bindLoginUrl)}
26
- logout-url=${ifDefined(bindLogoutUrl)}
27
- user-profile-url=${ifDefined(userProfileUrl)}
28
- user-profile-name=${ifDefined(userProfileName)}
29
- user-home-url=${ifDefined(userHomeUrl)}
30
- @menuItemClick=${menuItemClick}
31
- >
32
- <div slot="logo"><img alt="Omgevingsloket" src="${logo}" /></div>
33
- </dso-header>`;
3
+ export function headerTemplate({ logo, subLogo, mainMenu, useDropDownMenu, authStatus, loginUrl, logoutUrl, userProfileUrl, userProfileName, userHomeUrl, onHeaderClick, }) {
4
+ return html `<dso-header
5
+ .mainMenu=${mainMenu}
6
+ use-drop-down-menu=${ifDefined(useDropDownMenu)}
7
+ auth-status=${ifDefined(authStatus)}
8
+ login-url=${ifDefined(loginUrl)}
9
+ logout-url=${ifDefined(logoutUrl)}
10
+ user-profile-url=${ifDefined(userProfileUrl)}
11
+ user-profile-name=${ifDefined(userProfileName)}
12
+ user-home-url=${ifDefined(userHomeUrl)}
13
+ @headerClick=${onHeaderClick}
14
+ >
15
+ <div slot="logo"><img height="40" alt="Omgevingsloket" src="${logo}" /></div>
16
+ ${subLogo ? html `<div slot="sub-logo"><img alt="Regels op de kaart" src="${subLogo}" /></div>` : undefined}
17
+ </dso-header>`;
34
18
  }