@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
@@ -113,13 +113,21 @@
113
113
  color: #fff;
114
114
  }
115
115
  .open-button.btn-sm {
116
- line-height: 16px;
116
+ line-height: 1rem;
117
117
  }
118
118
  .open-button.btn-sm dso-icon,
119
- .open-button.btn-sm svg.di, .open-button.btn-sm.extern::after, .open-button.btn-sm.download::after {
119
+ .open-button.btn-sm svg.di, .open-button.btn-sm.extern::after, .open-button.btn-sm.download::after, .open-button.btn-sm.dso-spinner::before {
120
120
  margin-bottom: -4px;
121
121
  margin-top: -4px;
122
122
  }
123
+ .open-button.btn-sm.dso-spinner-left::before {
124
+ height: 16px;
125
+ width: 16px;
126
+ }
127
+ .open-button.btn-sm.dso-spinner-right::after {
128
+ height: 16px;
129
+ width: 16px;
130
+ }
123
131
  .open-button.download::after {
124
132
  background: var(--dso-icon, var(--di-download-wit)) no-repeat;
125
133
  background-position: center;
@@ -146,6 +154,31 @@
146
154
  margin-left: 8px;
147
155
  margin-right: -8px;
148
156
  }
157
+ .open-button.dso-spinner-left[disabled], .open-button.dso-spinner-right[disabled] {
158
+ background-color: #39870c;
159
+ border-color: #39870c;
160
+ color: #fff;
161
+ }
162
+ .open-button.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: %23fff; 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: top;
169
+ width: 24px;
170
+ margin-right: 8px;
171
+ }
172
+ .open-button.dso-spinner-right::after {
173
+ 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: %23fff; 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");
174
+ background-repeat: no-repeat;
175
+ content: "";
176
+ display: inline-block;
177
+ height: 24px;
178
+ vertical-align: top;
179
+ width: 24px;
180
+ margin-left: 8px;
181
+ }
149
182
  .open-button:hover {
150
183
  cursor: pointer;
151
184
  }
@@ -213,13 +246,21 @@
213
246
  color: #afcf9d;
214
247
  }
215
248
  .close-button.btn-sm {
216
- line-height: 16px;
249
+ line-height: 1rem;
217
250
  }
218
251
  .close-button.btn-sm dso-icon,
219
- .close-button.btn-sm svg.di, .close-button.btn-sm.extern::after, .close-button.btn-sm.download::after {
252
+ .close-button.btn-sm svg.di, .close-button.btn-sm.extern::after, .close-button.btn-sm.download::after, .close-button.btn-sm.dso-spinner::before {
220
253
  margin-bottom: -4px;
221
254
  margin-top: -4px;
222
255
  }
256
+ .close-button.btn-sm.dso-spinner-left::before {
257
+ height: 16px;
258
+ width: 16px;
259
+ }
260
+ .close-button.btn-sm.dso-spinner-right::after {
261
+ height: 16px;
262
+ width: 16px;
263
+ }
223
264
  .close-button.download::after {
224
265
  background: var(--dso-icon, var(--di-download)) no-repeat;
225
266
  background-position: center;
@@ -258,6 +299,59 @@
258
299
  margin-left: 8px;
259
300
  margin-right: -8px;
260
301
  }
302
+ .close-button.dso-spinner-left[disabled], .close-button.dso-spinner-right[disabled] {
303
+ background-color: #fff;
304
+ border-color: #39870c;
305
+ color: #39870c;
306
+ }
307
+ .close-button.dso-spinner-left::before {
308
+ 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");
309
+ background-repeat: no-repeat;
310
+ content: "";
311
+ display: inline-block;
312
+ height: 24px;
313
+ vertical-align: top;
314
+ width: 24px;
315
+ margin-right: 8px;
316
+ }
317
+ .close-button.dso-spinner-left:not([disabled]):hover::before {
318
+ 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: %23fff; 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");
319
+ background-repeat: no-repeat;
320
+ content: "";
321
+ display: inline-block;
322
+ height: 24px;
323
+ vertical-align: top;
324
+ width: 24px;
325
+ margin-right: 8px;
326
+ }
327
+ .close-button.dso-spinner-left:not([disabled]).btn-sm:hover::before {
328
+ height: 16px;
329
+ width: 16px;
330
+ }
331
+ .close-button.dso-spinner-right::after {
332
+ 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");
333
+ background-repeat: no-repeat;
334
+ content: "";
335
+ display: inline-block;
336
+ height: 24px;
337
+ vertical-align: top;
338
+ width: 24px;
339
+ margin-left: 8px;
340
+ }
341
+ .close-button.dso-spinner-right:not([disabled]):hover::after {
342
+ 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: %23fff; 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");
343
+ background-repeat: no-repeat;
344
+ content: "";
345
+ display: inline-block;
346
+ height: 24px;
347
+ vertical-align: top;
348
+ width: 24px;
349
+ margin-left: 8px;
350
+ }
351
+ .close-button.dso-spinner-right:not([disabled]).btn-sm:hover::after {
352
+ height: 16px;
353
+ width: 16px;
354
+ }
261
355
  .close-button::before {
262
356
  background: var(--dso-icon, var(--di-times)) no-repeat;
263
357
  background-position: center;
@@ -48,7 +48,7 @@
48
48
  margin-top: 48px;
49
49
  }
50
50
  .dso-highlight-box.dso-has-counter {
51
- padding-top: 40px;
51
+ padding-top: 2.5rem;
52
52
  position: relative;
53
53
  }
54
54
  .dso-highlight-box .dso-step-counter {
@@ -57,15 +57,20 @@
57
57
  border-radius: 50%;
58
58
  box-sizing: content-box;
59
59
  color: #fff;
60
- font-size: 1.25em;
60
+ font-size: 1.25rem;
61
61
  font-weight: 500;
62
- height: 32px;
62
+ height: 2rem;
63
63
  left: 16px;
64
- line-height: 32px;
64
+ line-height: 2rem;
65
65
  position: absolute;
66
66
  text-align: center;
67
- top: -24px;
68
- width: 32px;
67
+ top: -1.5rem;
68
+ width: 2rem;
69
+ }
70
+ .dso-highlight-box .dso-step-counter svg.di {
71
+ height: 1.5rem;
72
+ margin-top: 0.25rem;
73
+ width: 1.5rem;
69
74
  }
70
75
  .dso-highlight-box dso-icon {
71
76
  vertical-align: text-top;
@@ -77,7 +77,6 @@ import sortAscending from '@dso-toolkit/sources/src/icons/sort-ascending.svg';
77
77
  import sortDescending from '@dso-toolkit/sources/src/icons/sort-descending.svg';
78
78
  import sort from '@dso-toolkit/sources/src/icons/sort.svg';
79
79
  import sound from '@dso-toolkit/sources/src/icons/sound.svg';
80
- import statusForbidden from '@dso-toolkit/sources/src/icons/status-forbidden.svg';
81
80
  import statusDanger from '@dso-toolkit/sources/src/icons/status-danger.svg';
82
81
  import statusInfo from '@dso-toolkit/sources/src/icons/status-info.svg';
83
82
  import statusSuccess from '@dso-toolkit/sources/src/icons/status-success.svg';
@@ -171,7 +170,6 @@ const icons = [
171
170
  { alias: 'sort', svg: sort },
172
171
  { alias: 'sound', svg: sound },
173
172
  { alias: 'status-danger', svg: statusDanger },
174
- { alias: 'status-forbidden', svg: statusForbidden },
175
173
  { alias: 'status-info', svg: statusInfo },
176
174
  { alias: 'status-success', svg: statusSuccess },
177
175
  { alias: 'status-warning', svg: statusWarning },
@@ -86,13 +86,21 @@ button::-moz-focus-inner {
86
86
  color: #afcf9d;
87
87
  }
88
88
  .open.btn-sm {
89
- line-height: 16px;
89
+ line-height: 1rem;
90
90
  }
91
91
  .open.btn-sm dso-icon,
92
- .open.btn-sm svg.di, .open.btn-sm.extern::after, .open.btn-sm.download::after {
92
+ .open.btn-sm svg.di, .open.btn-sm.extern::after, .open.btn-sm.download::after, .open.btn-sm.dso-spinner::before {
93
93
  margin-bottom: -4px;
94
94
  margin-top: -4px;
95
95
  }
96
+ .open.btn-sm.dso-spinner-left::before {
97
+ height: 16px;
98
+ width: 16px;
99
+ }
100
+ .open.btn-sm.dso-spinner-right::after {
101
+ height: 16px;
102
+ width: 16px;
103
+ }
96
104
  .open.download::after {
97
105
  background: var(--dso-icon, var(--di-download)) no-repeat;
98
106
  background-position: center;
@@ -131,6 +139,59 @@ button::-moz-focus-inner {
131
139
  clip: rect(0, 0, 0, 0);
132
140
  border: 0;
133
141
  }
142
+ .open.dso-spinner-left[disabled], .open.dso-spinner-right[disabled] {
143
+ background-color: #fff;
144
+ border-color: #39870c;
145
+ color: #39870c;
146
+ }
147
+ .open.dso-spinner-left::before {
148
+ 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");
149
+ background-repeat: no-repeat;
150
+ content: "";
151
+ display: inline-block;
152
+ height: 24px;
153
+ vertical-align: top;
154
+ width: 24px;
155
+ margin-right: 8px;
156
+ }
157
+ .open.dso-spinner-left:not([disabled]):hover::before {
158
+ 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: %23fff; 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");
159
+ background-repeat: no-repeat;
160
+ content: "";
161
+ display: inline-block;
162
+ height: 24px;
163
+ vertical-align: top;
164
+ width: 24px;
165
+ margin-right: 8px;
166
+ }
167
+ .open.dso-spinner-left:not([disabled]).btn-sm:hover::before {
168
+ height: 16px;
169
+ width: 16px;
170
+ }
171
+ .open.dso-spinner-right::after {
172
+ 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");
173
+ background-repeat: no-repeat;
174
+ content: "";
175
+ display: inline-block;
176
+ height: 24px;
177
+ vertical-align: top;
178
+ width: 24px;
179
+ margin-left: 8px;
180
+ }
181
+ .open.dso-spinner-right:not([disabled]):hover::after {
182
+ 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: %23fff; 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");
183
+ background-repeat: no-repeat;
184
+ content: "";
185
+ display: inline-block;
186
+ height: 24px;
187
+ vertical-align: top;
188
+ width: 24px;
189
+ margin-left: 8px;
190
+ }
191
+ .open.dso-spinner-right:not([disabled]).btn-sm:hover::after {
192
+ height: 16px;
193
+ width: 16px;
194
+ }
134
195
 
135
196
  .dimmer {
136
197
  position: fixed;
@@ -216,13 +277,21 @@ button::-moz-focus-inner {
216
277
  color: #afcf9d;
217
278
  }
218
279
  .close.btn-sm {
219
- line-height: 16px;
280
+ line-height: 1rem;
220
281
  }
221
282
  .close.btn-sm dso-icon,
222
- .close.btn-sm svg.di, .close.btn-sm.extern::after, .close.btn-sm.download::after {
283
+ .close.btn-sm svg.di, .close.btn-sm.extern::after, .close.btn-sm.download::after, .close.btn-sm.dso-spinner::before {
223
284
  margin-bottom: -4px;
224
285
  margin-top: -4px;
225
286
  }
287
+ .close.btn-sm.dso-spinner-left::before {
288
+ height: 16px;
289
+ width: 16px;
290
+ }
291
+ .close.btn-sm.dso-spinner-right::after {
292
+ height: 16px;
293
+ width: 16px;
294
+ }
226
295
  .close.download::after {
227
296
  background: var(--dso-icon, var(--di-download)) no-repeat;
228
297
  background-position: center;
@@ -260,4 +329,57 @@ button::-moz-focus-inner {
260
329
  overflow: hidden;
261
330
  clip: rect(0, 0, 0, 0);
262
331
  border: 0;
332
+ }
333
+ .close.dso-spinner-left[disabled], .close.dso-spinner-right[disabled] {
334
+ background-color: #fff;
335
+ border-color: #39870c;
336
+ color: #39870c;
337
+ }
338
+ .close.dso-spinner-left::before {
339
+ 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");
340
+ background-repeat: no-repeat;
341
+ content: "";
342
+ display: inline-block;
343
+ height: 24px;
344
+ vertical-align: top;
345
+ width: 24px;
346
+ margin-right: 8px;
347
+ }
348
+ .close.dso-spinner-left:not([disabled]):hover::before {
349
+ 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: %23fff; 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");
350
+ background-repeat: no-repeat;
351
+ content: "";
352
+ display: inline-block;
353
+ height: 24px;
354
+ vertical-align: top;
355
+ width: 24px;
356
+ margin-right: 8px;
357
+ }
358
+ .close.dso-spinner-left:not([disabled]).btn-sm:hover::before {
359
+ height: 16px;
360
+ width: 16px;
361
+ }
362
+ .close.dso-spinner-right::after {
363
+ 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");
364
+ background-repeat: no-repeat;
365
+ content: "";
366
+ display: inline-block;
367
+ height: 24px;
368
+ vertical-align: top;
369
+ width: 24px;
370
+ margin-left: 8px;
371
+ }
372
+ .close.dso-spinner-right:not([disabled]):hover::after {
373
+ 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: %23fff; 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");
374
+ background-repeat: no-repeat;
375
+ content: "";
376
+ display: inline-block;
377
+ height: 24px;
378
+ vertical-align: top;
379
+ width: 24px;
380
+ margin-left: 8px;
381
+ }
382
+ .close.dso-spinner-right:not([disabled]).btn-sm:hover::after {
383
+ height: 16px;
384
+ width: 16px;
263
385
  }
@@ -1,29 +1,67 @@
1
- import { Component, Element, forceUpdate, h, Host, State } from "@stencil/core";
1
+ import { Component, Element, forceUpdate, h, Host, Listen, State } from "@stencil/core";
2
+ import debounce from 'debounce';
2
3
  import { createFocusTrap } from 'focus-trap';
3
4
  export class ImageOverlay {
4
5
  constructor() {
5
6
  this.active = false;
6
7
  this.focused = false;
8
+ this.zoomable = false;
9
+ }
10
+ loadListener(event) {
11
+ if (event.target instanceof HTMLImageElement) {
12
+ this.setZoomable(event.target);
13
+ }
7
14
  }
8
15
  componentDidLoad() {
9
- this.mutationObserver = new MutationObserver(() => forceUpdate(this.host));
16
+ this.resizeObserver = new ResizeObserver(debounce(() => {
17
+ const imgElement = this.host.querySelector('img');
18
+ if (imgElement instanceof HTMLImageElement) {
19
+ this.setZoomable(imgElement);
20
+ }
21
+ }, 200));
22
+ this.mutationObserver = new MutationObserver((e) => {
23
+ var _a, _b;
24
+ forceUpdate(this.host);
25
+ if (((_a = e[0]) === null || _a === void 0 ? void 0 : _a.type) === 'childList') {
26
+ (_b = this.resizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
27
+ // <img> is gone or a new element.
28
+ this.initZoomableImage();
29
+ }
30
+ });
10
31
  this.mutationObserver.observe(this.host, {
11
32
  attributes: true,
12
- subtree: true
33
+ subtree: true,
34
+ attributeFilter: ['src', 'alt'],
35
+ childList: true,
13
36
  });
37
+ this.initZoomableImage();
14
38
  }
15
39
  disconnectedCallback() {
16
- var _a, _b;
40
+ var _a, _b, _c;
17
41
  (_a = this.trap) === null || _a === void 0 ? void 0 : _a.deactivate();
18
42
  (_b = this.mutationObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
43
+ (_c = this.resizeObserver) === null || _c === void 0 ? void 0 : _c.disconnect();
44
+ }
45
+ initZoomableImage() {
46
+ var _a;
47
+ const imgElement = this.host.querySelector('img');
48
+ if (!(imgElement instanceof HTMLImageElement)) {
49
+ return;
50
+ }
51
+ // Due to timing issues where the image is loaded before we listen to load events we double check if the image is already complete.
52
+ if (imgElement.complete) {
53
+ this.setZoomable(imgElement);
54
+ }
55
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.observe(imgElement);
56
+ }
57
+ setZoomable(imageElement) {
58
+ const { width, naturalWidth, height, naturalHeight } = imageElement;
59
+ this.zoomable = width < naturalWidth || height < naturalHeight;
19
60
  }
20
61
  render() {
21
62
  var _a;
22
63
  const { src, alt } = (_a = this.host.querySelector('img')) !== null && _a !== void 0 ? _a : {};
23
- return (h(Host, { tabindex: this.focused ? -1 : 0, onFocus: () => {
24
- var _a;
25
- (_a = this.buttonElement) === null || _a === void 0 ? void 0 : _a.focus();
26
- } },
64
+ return (h(Host, { tabindex: this.focused || !this.zoomable ? -1 : 0, onFocus: () => { var _a; return (_a = this.buttonElement) === null || _a === void 0 ? void 0 : _a.focus(); } },
27
65
  this.active && src && alt && (h("div", { class: "dimmer", ref: element => this.wrapperElement = element },
28
66
  h("div", { class: "wrapper" },
29
67
  h("img", { src: src, alt: alt }),
@@ -31,9 +69,9 @@ export class ImageOverlay {
31
69
  h("dso-icon", { icon: "times" }),
32
70
  h("span", null, "Sluiten"))))),
33
71
  h("slot", null),
34
- h("button", { type: "button", class: "open", ref: element => this.buttonElement = element, onClick: () => this.active = true, onFocus: () => this.focused = true, onBlur: () => this.focused = false },
72
+ this.zoomable && (h("button", { type: "button", class: "open", ref: element => this.buttonElement = element, onClick: () => this.active = true, onFocus: () => this.focused = true, onBlur: () => this.focused = false },
35
73
  h("dso-icon", { icon: "external-link" }),
36
- h("span", null, "Afbeelding vergroot weergeven"))));
74
+ h("span", null, "Afbeelding vergroot weergeven")))));
37
75
  }
38
76
  componentDidRender() {
39
77
  var _a, _b;
@@ -66,7 +104,15 @@ export class ImageOverlay {
66
104
  }; }
67
105
  static get states() { return {
68
106
  "active": {},
69
- "focused": {}
107
+ "focused": {},
108
+ "zoomable": {}
70
109
  }; }
71
110
  static get elementRef() { return "host"; }
111
+ static get listeners() { return [{
112
+ "name": "load",
113
+ "method": "loadListener",
114
+ "target": undefined,
115
+ "capture": true,
116
+ "passive": false
117
+ }]; }
72
118
  }
@@ -1,15 +1,19 @@
1
- import { h, Component, Event, Prop } from '@stencil/core';
1
+ import { h, Component, Event, Prop, Method } from '@stencil/core';
2
2
  import clsx from 'clsx';
3
3
  export class InfoButton {
4
4
  constructor() {
5
5
  this.label = 'Toelichting bij optie';
6
6
  }
7
+ async setFocus() {
8
+ var _a;
9
+ (_a = this.button) === null || _a === void 0 ? void 0 : _a.focus();
10
+ }
7
11
  handleToggle(e) {
8
12
  this.active = !this.active;
9
13
  this.toggle.emit({ originalEvent: e, active: this.active });
10
14
  }
11
15
  render() {
12
- return (h("button", { type: "button", class: clsx('btn', { 'dso-open': !!this.active, 'dso-info-secondary': !!this.secondary }), "aria-expanded": typeof this.active === 'boolean' ? this.active.toString() : undefined, onClick: e => this.handleToggle(e) },
16
+ return (h("button", { type: "button", class: clsx('btn', { 'dso-open': !!this.active, 'dso-info-secondary': !!this.secondary }), "aria-expanded": typeof this.active === 'boolean' ? this.active.toString() : undefined, onClick: e => this.handleToggle(e), ref: element => (this.button = element) },
13
17
  h("span", { class: "sr-only" }, this.label)));
14
18
  }
15
19
  static get is() { return "dso-info-button"; }
@@ -94,4 +98,22 @@ export class InfoButton {
94
98
  }
95
99
  }
96
100
  }]; }
101
+ static get methods() { return {
102
+ "setFocus": {
103
+ "complexType": {
104
+ "signature": "() => Promise<void>",
105
+ "parameters": [],
106
+ "references": {
107
+ "Promise": {
108
+ "location": "global"
109
+ }
110
+ },
111
+ "return": "Promise<void>"
112
+ },
113
+ "docs": {
114
+ "text": "",
115
+ "tags": []
116
+ }
117
+ }
118
+ }; }
97
119
  }
@@ -1,5 +1,6 @@
1
1
  :host {
2
2
  display: inline-block;
3
+ max-width: 100%;
3
4
  }
4
5
 
5
6
  *,
@@ -38,7 +39,7 @@
38
39
  border-radius: 0 4px 4px 0;
39
40
  color: inherit;
40
41
  float: right;
41
- font-size: 16px;
42
+ font-size: 1rem;
42
43
  margin-bottom: -4px;
43
44
  margin-left: 8px;
44
45
  margin-right: -4px;
@@ -81,4 +82,16 @@
81
82
  color: #191919;
82
83
  border: 1px solid #ccc;
83
84
  padding: 3px 7px;
85
+ }
86
+ .dso-label.dso-hover .dso-label-content {
87
+ text-decoration: line-through;
88
+ }
89
+
90
+ .dso-truncate.dso-label-content {
91
+ display: inline-block;
92
+ max-width: 184px;
93
+ overflow: hidden;
94
+ text-overflow: ellipsis;
95
+ vertical-align: bottom;
96
+ white-space: nowrap;
84
97
  }