@dso-toolkit/core 33.3.0 → 34.2.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 (158) hide show
  1. package/dist/cjs/dso-alert.cjs.entry.js +1 -1
  2. package/dist/cjs/dso-attachments-counter.cjs.entry.js +2 -2
  3. package/dist/cjs/dso-autosuggest.cjs.entry.js +1 -1
  4. package/dist/cjs/dso-badge.cjs.entry.js +1 -1
  5. package/dist/cjs/dso-banner.cjs.entry.js +1 -1
  6. package/dist/cjs/dso-date-picker.cjs.entry.js +48 -26
  7. package/dist/cjs/dso-dropdown-menu.cjs.entry.js +4 -228
  8. package/dist/cjs/dso-header.cjs.entry.js +2 -2
  9. package/dist/cjs/dso-helpcenter-panel.cjs.entry.js +1 -1
  10. package/dist/cjs/dso-highlight-box.cjs.entry.js +1 -1
  11. package/dist/cjs/dso-icon.cjs.entry.js +1 -1
  12. package/dist/cjs/dso-info-button.cjs.entry.js +1 -1
  13. package/dist/cjs/dso-info_2.cjs.entry.js +5 -2
  14. package/dist/cjs/dso-label.cjs.entry.js +1 -1
  15. package/dist/cjs/dso-map-base-layers.cjs.entry.js +18 -3
  16. package/dist/cjs/dso-map-controls.cjs.entry.js +2 -2
  17. package/dist/cjs/dso-map-overlays.cjs.entry.js +18 -3
  18. package/dist/cjs/dso-ozon-content.cjs.entry.js +1 -1
  19. package/dist/cjs/dso-progress-bar.cjs.entry.js +1 -1
  20. package/dist/cjs/dso-progress-indicator.cjs.entry.js +1 -1
  21. package/dist/cjs/dso-toggletip.cjs.entry.js +1 -1
  22. package/dist/cjs/dso-toolkit.cjs.js +2 -2
  23. package/dist/cjs/dso-tooltip.cjs.entry.js +1 -1
  24. package/dist/cjs/dso-tree-view.cjs.entry.js +2 -2
  25. package/dist/cjs/dso-viewer-grid.cjs.entry.js +815 -0
  26. package/dist/cjs/{index-fcdfdd38.js → index-5ea63531.js} +26 -2
  27. package/dist/cjs/index.esm-2ac7081c.js +267 -0
  28. package/dist/cjs/loader.cjs.js +2 -2
  29. package/dist/collection/collection-manifest.json +1 -0
  30. package/dist/collection/components/alert/alert.css +0 -3
  31. package/dist/collection/components/anchor/anchor.template.js +17 -0
  32. package/dist/collection/components/attachments-counter/attachments-counter.css +0 -4
  33. package/dist/collection/components/autosuggest/autosuggest.css +0 -3
  34. package/dist/collection/components/badge/badge.css +0 -3
  35. package/dist/collection/components/banner/banner.css +0 -3
  36. package/dist/collection/components/button/button.template.js +48 -0
  37. package/dist/collection/components/context/context.template.js +42 -0
  38. package/dist/collection/components/date-picker/date-picker.css +3 -5
  39. package/dist/collection/components/date-picker/date-picker.js +47 -25
  40. package/dist/collection/components/date-picker/date-picker.template.js +2 -1
  41. package/dist/collection/components/definition-list/definition-list.template.js +36 -0
  42. package/dist/collection/components/dropdown-menu/dropdown-menu.css +0 -3
  43. package/dist/collection/components/header/header.css +21 -19
  44. package/dist/collection/components/helpcenter-panel/helpcenter-panel.css +0 -3
  45. package/dist/collection/components/highlight-box/highlight-box.css +0 -3
  46. package/dist/collection/components/icon/icon.css +0 -4
  47. package/dist/collection/components/info/info.css +21 -4
  48. package/dist/collection/components/info-button/info-button.css +0 -3
  49. package/dist/collection/components/label/label.css +0 -3
  50. package/dist/collection/components/label-group/label-group.template.js +7 -0
  51. package/dist/collection/components/list/list.template.js +37 -0
  52. package/dist/collection/components/map-base-layers/map-base-layers.css +4 -3
  53. package/dist/collection/components/map-base-layers/map-base-layers.js +20 -1
  54. package/dist/collection/components/map-controls/map-controls.css +12 -3
  55. package/dist/collection/components/map-controls/map-controls.template.js +11 -16
  56. package/dist/collection/components/map-overlays/map-overlays.css +4 -3
  57. package/dist/collection/components/map-overlays/map-overlays.js +20 -1
  58. package/dist/collection/components/ozon-content/ozon-content.css +0 -3
  59. package/dist/collection/components/progress-bar/progress-bar.css +0 -3
  60. package/dist/collection/components/progress-indicator/progress-indicator.css +0 -3
  61. package/dist/collection/components/selectable/selectable.css +0 -3
  62. package/dist/collection/components/selectable/selectable.js +25 -1
  63. package/dist/collection/components/toggletip/toggletip.css +0 -3
  64. package/dist/collection/components/tooltip/tooltip.css +0 -3
  65. package/dist/collection/components/tree-view/tree-view.css +3 -3
  66. package/dist/collection/components/viewer-grid/viewer-grid-document-header.template.js +39 -0
  67. package/dist/collection/components/viewer-grid/viewer-grid-document-list-item.template.js +19 -0
  68. package/dist/collection/components/viewer-grid/viewer-grid-filterblok.template.js +28 -0
  69. package/dist/collection/components/viewer-grid/viewer-grid-filterpanel-buttons.js +7 -0
  70. package/dist/collection/components/viewer-grid/viewer-grid.css +706 -0
  71. package/dist/collection/components/viewer-grid/viewer-grid.js +218 -0
  72. package/dist/collection/components/viewer-grid/viewer-grid.template.js +27 -0
  73. package/dist/custom-elements/index.d.ts +6 -0
  74. package/dist/custom-elements/index.js +938 -36
  75. package/dist/dso-toolkit/dso-toolkit.css +1 -1
  76. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  77. package/dist/dso-toolkit/{p-75233655.entry.js → p-1fefbf8c.entry.js} +1 -1
  78. package/dist/dso-toolkit/{p-a52d3623.entry.js → p-20856f91.entry.js} +1 -1
  79. package/dist/dso-toolkit/{p-262858dd.entry.js → p-2b6a3dfa.entry.js} +1 -1
  80. package/dist/dso-toolkit/{p-be5682cc.entry.js → p-348414bf.entry.js} +1 -1
  81. package/dist/dso-toolkit/{p-984551a8.entry.js → p-3b493a2c.entry.js} +1 -1
  82. package/dist/dso-toolkit/p-3c4dbd89.entry.js +1 -0
  83. package/dist/dso-toolkit/{p-0a08ac9f.entry.js → p-4e573fc5.entry.js} +1 -1
  84. package/dist/dso-toolkit/{p-c9c1bc8f.entry.js → p-5037944e.entry.js} +1 -1
  85. package/dist/dso-toolkit/p-50b63cf4.entry.js +1 -0
  86. package/dist/dso-toolkit/{p-ff767c21.entry.js → p-88bc5873.entry.js} +1 -1
  87. package/dist/dso-toolkit/p-8b6e3abc.entry.js +1 -0
  88. package/dist/dso-toolkit/p-8bf3a60e.js +5 -0
  89. package/dist/dso-toolkit/p-94b79e43.entry.js +1 -0
  90. package/dist/dso-toolkit/{p-83f166b3.entry.js → p-94dffa65.entry.js} +1 -1
  91. package/dist/dso-toolkit/{p-b07991b9.entry.js → p-951f5872.entry.js} +1 -1
  92. package/dist/dso-toolkit/{p-da3be034.entry.js → p-a7306b7b.entry.js} +1 -1
  93. package/dist/dso-toolkit/p-ad2210ad.entry.js +1 -0
  94. package/dist/dso-toolkit/p-ad540748.entry.js +1 -0
  95. package/dist/dso-toolkit/{p-b5b946de.entry.js → p-bc14cafd.entry.js} +1 -1
  96. package/dist/dso-toolkit/{p-4a78a31b.entry.js → p-c54ecae1.entry.js} +1 -1
  97. package/dist/dso-toolkit/{p-72e4484a.entry.js → p-c95108fe.entry.js} +1 -1
  98. package/dist/dso-toolkit/{p-e814d644.entry.js → p-daa1e29d.entry.js} +1 -1
  99. package/dist/dso-toolkit/p-dad72605.js +1 -0
  100. package/dist/dso-toolkit/{p-2e7d535c.entry.js → p-dc86d830.entry.js} +1 -1
  101. package/dist/dso-toolkit/p-de3ab027.entry.js +5 -0
  102. package/dist/dso-toolkit/{p-19de4cc7.entry.js → p-f0b67246.entry.js} +1 -1
  103. package/dist/esm/dso-alert.entry.js +1 -1
  104. package/dist/esm/dso-attachments-counter.entry.js +2 -2
  105. package/dist/esm/dso-autosuggest.entry.js +1 -1
  106. package/dist/esm/dso-badge.entry.js +1 -1
  107. package/dist/esm/dso-banner.entry.js +1 -1
  108. package/dist/esm/dso-date-picker.entry.js +48 -26
  109. package/dist/esm/dso-dropdown-menu.entry.js +2 -226
  110. package/dist/esm/dso-header.entry.js +2 -2
  111. package/dist/esm/dso-helpcenter-panel.entry.js +1 -1
  112. package/dist/esm/dso-highlight-box.entry.js +1 -1
  113. package/dist/esm/dso-icon.entry.js +1 -1
  114. package/dist/esm/dso-info-button.entry.js +1 -1
  115. package/dist/esm/dso-info_2.entry.js +5 -2
  116. package/dist/esm/dso-label.entry.js +1 -1
  117. package/dist/esm/dso-map-base-layers.entry.js +18 -3
  118. package/dist/esm/dso-map-controls.entry.js +2 -2
  119. package/dist/esm/dso-map-overlays.entry.js +18 -3
  120. package/dist/esm/dso-ozon-content.entry.js +1 -1
  121. package/dist/esm/dso-progress-bar.entry.js +1 -1
  122. package/dist/esm/dso-progress-indicator.entry.js +1 -1
  123. package/dist/esm/dso-toggletip.entry.js +1 -1
  124. package/dist/esm/dso-toolkit.js +2 -2
  125. package/dist/esm/dso-tooltip.entry.js +1 -1
  126. package/dist/esm/dso-tree-view.entry.js +2 -2
  127. package/dist/esm/dso-viewer-grid.entry.js +811 -0
  128. package/dist/esm/{index-61410be2.js → index-d54cae76.js} +26 -2
  129. package/dist/esm/index.esm-a1362957.js +262 -0
  130. package/dist/esm/loader.js +2 -2
  131. package/dist/types/components/anchor/anchor.template.d.ts +2 -0
  132. package/dist/types/components/button/button.template.d.ts +2 -0
  133. package/dist/types/components/context/context.template.d.ts +3 -0
  134. package/dist/types/components/date-picker/date-picker.d.ts +3 -1
  135. package/dist/types/components/date-picker/date-picker.template.d.ts +1 -1
  136. package/dist/types/components/definition-list/definition-list.template.d.ts +3 -0
  137. package/dist/types/components/label-group/label-group.template.d.ts +2 -0
  138. package/dist/types/components/list/list.template.d.ts +3 -0
  139. package/dist/types/components/map-base-layers/map-base-layers.d.ts +7 -2
  140. package/dist/types/components/map-base-layers/map-base-layers.interfaces.d.ts +1 -0
  141. package/dist/types/components/map-overlays/map-overlays.d.ts +7 -2
  142. package/dist/types/components/map-overlays/map-overlays.interfaces.d.ts +1 -0
  143. package/dist/types/components/selectable/selectable.d.ts +1 -0
  144. package/dist/types/components/viewer-grid/viewer-grid-document-header.template.d.ts +3 -0
  145. package/dist/types/components/viewer-grid/viewer-grid-document-list-item.template.d.ts +3 -0
  146. package/dist/types/components/viewer-grid/viewer-grid-filterblok.template.d.ts +3 -0
  147. package/dist/types/components/viewer-grid/viewer-grid-filterpanel-buttons.d.ts +6 -0
  148. package/dist/types/components/viewer-grid/viewer-grid.d.ts +33 -0
  149. package/dist/types/components/viewer-grid/viewer-grid.template.d.ts +3 -0
  150. package/dist/types/components.d.ts +22 -0
  151. package/package.json +2 -1
  152. package/dist/dso-toolkit/p-22bc904d.entry.js +0 -1
  153. package/dist/dso-toolkit/p-7a043467.entry.js +0 -1
  154. package/dist/dso-toolkit/p-99b93d2e.entry.js +0 -5
  155. package/dist/dso-toolkit/p-a40eeb32.js +0 -1
  156. package/dist/dso-toolkit/p-affe82e6.entry.js +0 -1
  157. package/dist/dso-toolkit/p-b3e6d377.entry.js +0 -1
  158. package/dist/dso-toolkit/p-ec8b74f7.entry.js +0 -1
@@ -94,6 +94,7 @@ const HYDRATE_ID = 's-id';
94
94
  const HYDRATED_STYLE_ID = 'sty-id';
95
95
  const HYDRATE_CHILD_ID = 'c-id';
96
96
  const HYDRATED_CSS = '{visibility:hidden}.hydrated{visibility:inherit}';
97
+ const XLINK_NS = 'http://www.w3.org/1999/xlink';
97
98
  const createTime = (fnName, tagName = '') => {
98
99
  {
99
100
  return () => {
@@ -443,16 +444,36 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
443
444
  }
444
445
  catch (e) { }
445
446
  }
447
+ /**
448
+ * Need to manually update attribute if:
449
+ * - memberName is not an attribute
450
+ * - if we are rendering the host element in order to reflect attribute
451
+ * - if it's a SVG, since properties might not work in <svg>
452
+ * - if the newValue is null/undefined or 'false'.
453
+ */
454
+ let xlink = false;
455
+ {
456
+ if (ln !== (ln = ln.replace(/^xlink\:?/, ''))) {
457
+ memberName = ln;
458
+ xlink = true;
459
+ }
460
+ }
446
461
  if (newValue == null || newValue === false) {
447
462
  if (newValue !== false || elm.getAttribute(memberName) === '') {
448
- {
463
+ if (xlink) {
464
+ elm.removeAttributeNS(XLINK_NS, memberName);
465
+ }
466
+ else {
449
467
  elm.removeAttribute(memberName);
450
468
  }
451
469
  }
452
470
  }
453
471
  else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {
454
472
  newValue = newValue === true ? '' : newValue;
455
- {
473
+ if (xlink) {
474
+ elm.setAttributeNS(XLINK_NS, memberName, newValue);
475
+ }
476
+ else {
456
477
  elm.setAttribute(memberName, newValue);
457
478
  }
458
479
  }
@@ -1210,6 +1231,9 @@ const postUpdateComponent = (hostRef) => {
1210
1231
  }
1211
1232
  }
1212
1233
  else {
1234
+ {
1235
+ safeCall(instance, 'componentDidUpdate');
1236
+ }
1213
1237
  endPostUpdate();
1214
1238
  }
1215
1239
  {
@@ -0,0 +1,267 @@
1
+ 'use strict';
2
+
3
+ /*!
4
+ * tabbable 5.2.1
5
+ * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
6
+ */
7
+ var candidateSelectors = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])', 'details>summary:first-of-type', 'details'];
8
+ var candidateSelector = /* #__PURE__ */candidateSelectors.join(',');
9
+ var matches = typeof Element === 'undefined' ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
10
+
11
+ var getCandidates = function getCandidates(el, includeContainer, filter) {
12
+ var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));
13
+
14
+ if (includeContainer && matches.call(el, candidateSelector)) {
15
+ candidates.unshift(el);
16
+ }
17
+
18
+ candidates = candidates.filter(filter);
19
+ return candidates;
20
+ };
21
+
22
+ var isContentEditable = function isContentEditable(node) {
23
+ return node.contentEditable === 'true';
24
+ };
25
+
26
+ var getTabindex = function getTabindex(node) {
27
+ var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);
28
+
29
+ if (!isNaN(tabindexAttr)) {
30
+ return tabindexAttr;
31
+ } // Browsers do not return `tabIndex` correctly for contentEditable nodes;
32
+ // so if they don't have a tabindex attribute specifically set, assume it's 0.
33
+
34
+
35
+ if (isContentEditable(node)) {
36
+ return 0;
37
+ } // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default
38
+ // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,
39
+ // yet they are still part of the regular tab order; in FF, they get a default
40
+ // `tabIndex` of 0; since Chrome still puts those elements in the regular tab
41
+ // order, consider their tab index to be 0.
42
+
43
+
44
+ if ((node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {
45
+ return 0;
46
+ }
47
+
48
+ return node.tabIndex;
49
+ };
50
+
51
+ var sortOrderedTabbables = function sortOrderedTabbables(a, b) {
52
+ return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
53
+ };
54
+
55
+ var isInput = function isInput(node) {
56
+ return node.tagName === 'INPUT';
57
+ };
58
+
59
+ var isHiddenInput = function isHiddenInput(node) {
60
+ return isInput(node) && node.type === 'hidden';
61
+ };
62
+
63
+ var isDetailsWithSummary = function isDetailsWithSummary(node) {
64
+ var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {
65
+ return child.tagName === 'SUMMARY';
66
+ });
67
+ return r;
68
+ };
69
+
70
+ var getCheckedRadio = function getCheckedRadio(nodes, form) {
71
+ for (var i = 0; i < nodes.length; i++) {
72
+ if (nodes[i].checked && nodes[i].form === form) {
73
+ return nodes[i];
74
+ }
75
+ }
76
+ };
77
+
78
+ var isTabbableRadio = function isTabbableRadio(node) {
79
+ if (!node.name) {
80
+ return true;
81
+ }
82
+
83
+ var radioScope = node.form || node.ownerDocument;
84
+
85
+ var queryRadios = function queryRadios(name) {
86
+ return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]');
87
+ };
88
+
89
+ var radioSet;
90
+
91
+ if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {
92
+ radioSet = queryRadios(window.CSS.escape(node.name));
93
+ } else {
94
+ try {
95
+ radioSet = queryRadios(node.name);
96
+ } catch (err) {
97
+ // eslint-disable-next-line no-console
98
+ console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message);
99
+ return false;
100
+ }
101
+ }
102
+
103
+ var checked = getCheckedRadio(radioSet, node.form);
104
+ return !checked || checked === node;
105
+ };
106
+
107
+ var isRadio = function isRadio(node) {
108
+ return isInput(node) && node.type === 'radio';
109
+ };
110
+
111
+ var isNonTabbableRadio = function isNonTabbableRadio(node) {
112
+ return isRadio(node) && !isTabbableRadio(node);
113
+ };
114
+
115
+ var isHidden = function isHidden(node, displayCheck) {
116
+ if (getComputedStyle(node).visibility === 'hidden') {
117
+ return true;
118
+ }
119
+
120
+ var isDirectSummary = matches.call(node, 'details>summary:first-of-type');
121
+ var nodeUnderDetails = isDirectSummary ? node.parentElement : node;
122
+
123
+ if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {
124
+ return true;
125
+ }
126
+
127
+ if (!displayCheck || displayCheck === 'full') {
128
+ while (node) {
129
+ if (getComputedStyle(node).display === 'none') {
130
+ return true;
131
+ }
132
+
133
+ node = node.parentElement;
134
+ }
135
+ } else if (displayCheck === 'non-zero-area') {
136
+ var _node$getBoundingClie = node.getBoundingClientRect(),
137
+ width = _node$getBoundingClie.width,
138
+ height = _node$getBoundingClie.height;
139
+
140
+ return width === 0 && height === 0;
141
+ }
142
+
143
+ return false;
144
+ }; // form fields (nested) inside a disabled fieldset are not focusable/tabbable
145
+ // unless they are in the _first_ <legend> element of the top-most disabled
146
+ // fieldset
147
+
148
+
149
+ var isDisabledFromFieldset = function isDisabledFromFieldset(node) {
150
+ if (isInput(node) || node.tagName === 'SELECT' || node.tagName === 'TEXTAREA' || node.tagName === 'BUTTON') {
151
+ var parentNode = node.parentElement;
152
+
153
+ while (parentNode) {
154
+ if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {
155
+ // look for the first <legend> as an immediate child of the disabled
156
+ // <fieldset>: if the node is in that legend, it'll be enabled even
157
+ // though the fieldset is disabled; otherwise, the node is in a
158
+ // secondary/subsequent legend, or somewhere else within the fieldset
159
+ // (however deep nested) and it'll be disabled
160
+ for (var i = 0; i < parentNode.children.length; i++) {
161
+ var child = parentNode.children.item(i);
162
+
163
+ if (child.tagName === 'LEGEND') {
164
+ if (child.contains(node)) {
165
+ return false;
166
+ } // the node isn't in the first legend (in doc order), so no matter
167
+ // where it is now, it'll be disabled
168
+
169
+
170
+ return true;
171
+ }
172
+ } // the node isn't in a legend, so no matter where it is now, it'll be disabled
173
+
174
+
175
+ return true;
176
+ }
177
+
178
+ parentNode = parentNode.parentElement;
179
+ }
180
+ } // else, node's tabbable/focusable state should not be affected by a fieldset's
181
+ // enabled/disabled state
182
+
183
+
184
+ return false;
185
+ };
186
+
187
+ var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {
188
+ if (node.disabled || isHiddenInput(node) || isHidden(node, options.displayCheck) || // For a details element with a summary, the summary element gets the focus
189
+ isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {
190
+ return false;
191
+ }
192
+
193
+ return true;
194
+ };
195
+
196
+ var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {
197
+ if (!isNodeMatchingSelectorFocusable(options, node) || isNonTabbableRadio(node) || getTabindex(node) < 0) {
198
+ return false;
199
+ }
200
+
201
+ return true;
202
+ };
203
+
204
+ var tabbable = function tabbable(el, options) {
205
+ options = options || {};
206
+ var regularTabbables = [];
207
+ var orderedTabbables = [];
208
+ var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));
209
+ candidates.forEach(function (candidate, i) {
210
+ var candidateTabindex = getTabindex(candidate);
211
+
212
+ if (candidateTabindex === 0) {
213
+ regularTabbables.push(candidate);
214
+ } else {
215
+ orderedTabbables.push({
216
+ documentOrder: i,
217
+ tabIndex: candidateTabindex,
218
+ node: candidate
219
+ });
220
+ }
221
+ });
222
+ var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function (a) {
223
+ return a.node;
224
+ }).concat(regularTabbables);
225
+ return tabbableNodes;
226
+ };
227
+
228
+ var focusable = function focusable(el, options) {
229
+ options = options || {};
230
+ var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));
231
+ return candidates;
232
+ };
233
+
234
+ var isTabbable = function isTabbable(node, options) {
235
+ options = options || {};
236
+
237
+ if (!node) {
238
+ throw new Error('No node provided');
239
+ }
240
+
241
+ if (matches.call(node, candidateSelector) === false) {
242
+ return false;
243
+ }
244
+
245
+ return isNodeMatchingSelectorTabbable(options, node);
246
+ };
247
+
248
+ var focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');
249
+
250
+ var isFocusable = function isFocusable(node, options) {
251
+ options = options || {};
252
+
253
+ if (!node) {
254
+ throw new Error('No node provided');
255
+ }
256
+
257
+ if (matches.call(node, focusableCandidateSelector) === false) {
258
+ return false;
259
+ }
260
+
261
+ return isNodeMatchingSelectorFocusable(options, node);
262
+ };
263
+
264
+ exports.focusable = focusable;
265
+ exports.isFocusable = isFocusable;
266
+ exports.isTabbable = isTabbable;
267
+ exports.tabbable = tabbable;
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-fcdfdd38.js');
5
+ const index = require('./index-5ea63531.js');
6
6
 
7
7
  /*
8
8
  Stencil Client Patch Esm v2.9.0 | MIT Licensed | https://stenciljs.com
@@ -14,7 +14,7 @@ const patchEsm = () => {
14
14
  const defineCustomElements = (win, options) => {
15
15
  if (typeof window === 'undefined') return Promise.resolve();
16
16
  return patchEsm().then(() => {
17
- return index.bootstrapLazy([["dso-map-base-layers.cjs",[[1,"dso-map-base-layers",{"baseLayers":[16]}]]],["dso-map-overlays.cjs",[[1,"dso-map-overlays",{"overlays":[16]}]]],["dso-header.cjs",[[1,"dso-header",{"loginUrl":[1,"login-url"],"logoutUrl":[1,"logout-url"],"mainMenu":[16],"useDropDownMenu":[1,"use-drop-down-menu"],"isLoggedIn":[4,"is-logged-in"],"userProfileName":[1,"user-profile-name"],"userProfileUrl":[1,"user-profile-url"],"userHomeUrl":[1,"user-home-url"],"showDropDown":[32],"hasSubLogo":[32],"overflowMenuItems":[32]}]]],["dso-toggletip.cjs",[[1,"dso-toggletip",{"label":[1],"position":[1],"small":[4],"secondary":[4],"active":[32]}]]],["dso-tree-view.cjs",[[1,"dso-tree-view",{"collection":[16]}]]],["dso-date-picker.cjs",[[2,"dso-date-picker",{"name":[1],"identifier":[1],"disabled":[516],"role":[1],"direction":[1],"required":[4],"dsoAutofocus":[4,"dso-autofocus"],"value":[1537],"min":[1],"max":[1],"activeFocus":[32],"focusedDay":[32],"open":[32],"setFocus":[64],"show":[64],"hide":[64]},[[6,"click","handleDocumentClick"]]]]],["dso-helpcenter-panel.cjs",[[1,"dso-helpcenter-panel",{"label":[1],"url":[1],"visibility":[32],"isOpen":[32],"slideState":[32],"loadIframe":[32]}]]],["dso-label.cjs",[[1,"dso-label",{"compact":[4],"removable":[4],"status":[1],"hover":[32]}]]],["dso-map-controls.cjs",[[1,"dso-map-controls",{"open":[1540],"disableZoom":[1,"disable-zoom"],"hideContent":[32]}]]],["dso-alert.cjs",[[1,"dso-alert",{"status":[1],"roleAlert":[4,"role-alert"]}]]],["dso-attachments-counter.cjs",[[1,"dso-attachments-counter",{"count":[2]}]]],["dso-autosuggest.cjs",[[6,"dso-autosuggest",{"suggestions":[16],"suggestOnFocus":[4,"suggest-on-focus"],"showSuggestions":[32],"selectedSuggestion":[32]},[[4,"click","onDocumentClick"]]]]],["dso-badge.cjs",[[1,"dso-badge",{"status":[1]}]]],["dso-banner.cjs",[[1,"dso-banner",{"status":[1]}]]],["dso-highlight-box.cjs",[[1,"dso-highlight-box",{"yellow":[4],"border":[4],"white":[4],"dropShadow":[4,"drop-shadow"],"step":[2]}]]],["dso-ozon-content.cjs",[[0,"dso-ozon-content",{"content":[1]},[[0,"click","handleClick"]]]]],["dso-progress-bar.cjs",[[1,"dso-progress-bar",{"progress":[2],"min":[2],"max":[2]}]]],["dso-dropdown-menu.cjs",[[1,"dso-dropdown-menu",{"open":[1540],"dropdownAlign":[1,"dropdown-align"],"checkable":[4]}]]],["dso-progress-indicator.cjs",[[1,"dso-progress-indicator",{"label":[1],"size":[1],"block":[4]}]]],["dso-tooltip.cjs",[[1,"dso-tooltip",{"position":[1],"for":[1],"noArrow":[4,"no-arrow"],"stateless":[4],"small":[4],"active":[1540],"hidden":[32],"activate":[64],"deactivate":[64]},[[0,"click","listenClick"]]]]],["dso-info-button.cjs",[[1,"dso-info-button",{"active":[1540],"secondary":[4],"label":[1]}]]],["dso-info_2.cjs",[[1,"dso-selectable",{"type":[1],"identifier":[1],"name":[1],"value":[1],"invalid":[4],"describedById":[1,"described-by-id"],"disabled":[4],"required":[4],"checked":[4],"indeterminate":[4],"infoFixed":[4,"info-fixed"],"infoActive":[32]}],[1,"dso-info",{"fixed":[516],"active":[516]}]]],["dso-icon.cjs",[[1,"dso-icon",{"icon":[1]}]]]], options);
17
+ return index.bootstrapLazy([["dso-map-base-layers.cjs",[[1,"dso-map-base-layers",{"baseLayers":[16]}]]],["dso-map-overlays.cjs",[[1,"dso-map-overlays",{"overlays":[16]}]]],["dso-header.cjs",[[1,"dso-header",{"loginUrl":[1,"login-url"],"logoutUrl":[1,"logout-url"],"mainMenu":[16],"useDropDownMenu":[1,"use-drop-down-menu"],"isLoggedIn":[4,"is-logged-in"],"userProfileName":[1,"user-profile-name"],"userProfileUrl":[1,"user-profile-url"],"userHomeUrl":[1,"user-home-url"],"showDropDown":[32],"hasSubLogo":[32],"overflowMenuItems":[32]}]]],["dso-toggletip.cjs",[[1,"dso-toggletip",{"label":[1],"position":[1],"small":[4],"secondary":[4],"active":[32]}]]],["dso-tree-view.cjs",[[1,"dso-tree-view",{"collection":[16]}]]],["dso-date-picker.cjs",[[2,"dso-date-picker",{"name":[1],"identifier":[1],"disabled":[516],"role":[1],"direction":[1],"required":[4],"dsoAutofocus":[4,"dso-autofocus"],"value":[1537],"min":[1],"max":[1],"activeFocus":[32],"focusedDay":[32],"open":[32],"setFocus":[64],"show":[64],"hide":[64]},[[6,"click","handleDocumentClick"]]]]],["dso-helpcenter-panel.cjs",[[1,"dso-helpcenter-panel",{"label":[1],"url":[1],"visibility":[32],"isOpen":[32],"slideState":[32],"loadIframe":[32]}]]],["dso-label.cjs",[[1,"dso-label",{"compact":[4],"removable":[4],"status":[1],"hover":[32]}]]],["dso-map-controls.cjs",[[1,"dso-map-controls",{"open":[1540],"disableZoom":[1,"disable-zoom"],"hideContent":[32]}]]],["dso-viewer-grid.cjs",[[1,"dso-viewer-grid",{"filterpanelOpen":[516,"filterpanel-open"],"overlayOpen":[516,"overlay-open"],"mainSize":[32]}]]],["dso-alert.cjs",[[1,"dso-alert",{"status":[1],"roleAlert":[4,"role-alert"]}]]],["dso-attachments-counter.cjs",[[1,"dso-attachments-counter",{"count":[2]}]]],["dso-autosuggest.cjs",[[6,"dso-autosuggest",{"suggestions":[16],"suggestOnFocus":[4,"suggest-on-focus"],"showSuggestions":[32],"selectedSuggestion":[32]},[[4,"click","onDocumentClick"]]]]],["dso-badge.cjs",[[1,"dso-badge",{"status":[1]}]]],["dso-banner.cjs",[[1,"dso-banner",{"status":[1]}]]],["dso-highlight-box.cjs",[[1,"dso-highlight-box",{"yellow":[4],"border":[4],"white":[4],"dropShadow":[4,"drop-shadow"],"step":[2]}]]],["dso-ozon-content.cjs",[[0,"dso-ozon-content",{"content":[1]},[[0,"click","handleClick"]]]]],["dso-progress-bar.cjs",[[1,"dso-progress-bar",{"progress":[2],"min":[2],"max":[2]}]]],["dso-dropdown-menu.cjs",[[1,"dso-dropdown-menu",{"open":[1540],"dropdownAlign":[1,"dropdown-align"],"checkable":[4]}]]],["dso-progress-indicator.cjs",[[1,"dso-progress-indicator",{"label":[1],"size":[1],"block":[4]}]]],["dso-tooltip.cjs",[[1,"dso-tooltip",{"position":[1],"for":[1],"noArrow":[4,"no-arrow"],"stateless":[4],"small":[4],"active":[1540],"hidden":[32],"activate":[64],"deactivate":[64]},[[0,"click","listenClick"]]]]],["dso-info-button.cjs",[[1,"dso-info-button",{"active":[1540],"secondary":[4],"label":[1]}]]],["dso-info_2.cjs",[[1,"dso-selectable",{"type":[1],"identifier":[1],"name":[1],"value":[1],"invalid":[4],"describedById":[1,"described-by-id"],"disabled":[4],"required":[4],"checked":[4],"indeterminate":[4],"infoFixed":[4,"info-fixed"],"infoActive":[32],"toggleInfo":[64]}],[1,"dso-info",{"fixed":[516],"active":[516]}]]],["dso-icon.cjs",[[1,"dso-icon",{"icon":[1]}]]]], options);
18
18
  });
19
19
  };
20
20
 
@@ -5,6 +5,7 @@
5
5
  "./components/header/header.js",
6
6
  "./components/info-button/info-button.js",
7
7
  "./components/selectable/selectable.js",
8
+ "./components/viewer-grid/viewer-grid.js",
8
9
  "./components/alert/alert.js",
9
10
  "./components/attachments-counter/attachments-counter.js",
10
11
  "./components/badge/badge.js",
@@ -1,6 +1,3 @@
1
- /* stylelint-disable value-keyword-case */
2
- /* stylelint-disable string-no-newline */
3
- /* stylelint-enable */
4
1
  @media screen and (min-width: 481px) {
5
2
  .alert {
6
3
  padding: 19px 16px 19px 63px;
@@ -0,0 +1,17 @@
1
+ import { html, nothing } from 'lit-html';
2
+ import { ifDefined } from 'lit-html/directives/if-defined';
3
+ import { iconTemplate } from '../icon/icon.template';
4
+ export function anchorTemplate({ icon, iconMode, label, modifier, url }) {
5
+ return html `<a
6
+ href=${url}
7
+ class=${ifDefined(modifier)}
8
+ target=${ifDefined((modifier === null || modifier === void 0 ? void 0 : modifier.includes('extern')) ? '_blank' : undefined)}
9
+ rel=${ifDefined((modifier === null || modifier === void 0 ? void 0 : modifier.includes('extern')) ? 'noopener noreferrer' : undefined)}
10
+ >${icon && iconMode !== 'after'
11
+ ? iconTemplate(icon)
12
+ : nothing}${label}${(modifier === null || modifier === void 0 ? void 0 : modifier.includes('extern'))
13
+ ? html `<span class="sr-only">(Opent andere website in nieuw tabblad)</span>`
14
+ : nothing}${icon && iconMode === 'after'
15
+ ? iconTemplate(icon)
16
+ : nothing}</a>`;
17
+ }
@@ -1,6 +1,3 @@
1
- /* stylelint-disable value-keyword-case */
2
- /* stylelint-disable string-no-newline */
3
- /* stylelint-enable */
4
1
  :host {
5
2
  display: inline-block;
6
3
  --di-paperclip-grijs: url("data:image/svg+xml,%3csvg id='paperclip' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' style='color: %23666%3b'%3e %3cpath fill='currentColor' d='M21.88%2c8.94%2c10%2c20.6A4.63%2c4.63%2c0%2c0%2c1%2c6.62%2c22h0a5.78%2c5.78%2c0%2c0%2c1-4.05-1.81%2c5.34%2c5.34%2c0%2c0%2c1%2c0-7.56l9.3-9.26a1%2c1%2c0%2c1%2c1%2c1.48%2c1.48l-9.3%2c9.26h0a3.26%2c3.26%2c0%2c0%2c0%2c0%2c4.6%2c3.79%2c3.79%2c0%2c0%2c0%2c2.58%2c1.21%2c2.55%2c2.55%2c0%2c0%2c0%2c1.85-.81h0L20.4%2c7.46a1.83%2c1.83%2c0%2c0%2c0%2c.5-1.39%2c2.24%2c2.24%2c0%2c0%2c0-.63-1.44%2c1.85%2c1.85%2c0%2c0%2c0-2.61%2c0h0L7.43%2c14.73a.48.48%2c0%2c0%2c0%2c0%2c.67.48.48%2c0%2c0%2c0%2c.34.14.46.46%2c0%2c0%2c0%2c.34-.14l7.36-7.28a1%2c1%2c0%2c0%2c1%2c1.48%2c0A1%2c1%2c0%2c0%2c1%2c17%2c9.6h0L9.6%2c16.88h0a2.66%2c2.66%2c0%2c0%2c1-3.65%2c0%2c2.55%2c2.55%2c0%2c0%2c1%2c0-3.63L16.17%2c3.15a4%2c4%2c0%2c0%2c1%2c5.59%2c0A4.31%2c4.31%2c0%2c0%2c1%2c23%2c6%2c3.89%2c3.89%2c0%2c0%2c1%2c21.88%2c8.94Z'/%3e %3c/svg%3e");
@@ -30,7 +27,6 @@
30
27
  font-weight: 400;
31
28
  text-decoration: none;
32
29
  white-space: nowrap;
33
- /* stylelint-disable-line declaration-property-value-disallowed-list */
34
30
  }
35
31
  .dso-attachments::after {
36
32
  background: var(--dso-icon, var(--di-paperclip-grijs)) no-repeat;
@@ -1,6 +1,3 @@
1
- /* stylelint-disable value-keyword-case */
2
- /* stylelint-disable string-no-newline */
3
- /* stylelint-enable */
4
1
  :host {
5
2
  display: block;
6
3
  position: relative;
@@ -1,6 +1,3 @@
1
- /* stylelint-disable value-keyword-case */
2
- /* stylelint-disable string-no-newline */
3
- /* stylelint-enable */
4
1
  :host {
5
2
  display: inline-block;
6
3
  }
@@ -1,6 +1,3 @@
1
- /* stylelint-disable value-keyword-case */
2
- /* stylelint-disable string-no-newline */
3
- /* stylelint-enable */
4
1
  :host {
5
2
  display: block;
6
3
  --di-status-danger: url("data:image/svg+xml,%3csvg id='status-danger-line' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3e %3cg%3e %3cpath d='M22.6%2c18.51c.86%2c1.37.29%2c2.49-1.25%2c2.49H2.65C1.11%2c21%2c.54%2c19.88%2c1.4%2c18.51L10.44%2c4a1.7%2c1.7%2c0%2c0%2c1%2c3.12%2c0Z' style='fill: %23ce3f51'/%3e %3cpath d='M12%2c3a1.9%2c1.9%2c0%2c0%2c1%2c1.56%2c1l9%2c14.48c.86%2c1.37.29%2c2.49-1.25%2c2.49H2.65C1.11%2c21%2c.54%2c19.88%2c1.4%2c18.51L10.44%2c4A1.9%2c1.9%2c0%2c0%2c1%2c12%2c3m0-1A2.89%2c2.89%2c0%2c0%2c0%2c9.6%2c3.5L.55%2c18a2.75%2c2.75%2c0%2c0%2c0-.28%2c2.81A2.59%2c2.59%2c0%2c0%2c0%2c2.65%2c22h18.7a2.59%2c2.59%2c0%2c0%2c0%2c2.38-1.21A2.75%2c2.75%2c0%2c0%2c0%2c23.45%2c18L14.4%2c3.5A2.89%2c2.89%2c0%2c0%2c0%2c12%2c2Z' style='fill: white'/%3e %3c/g%3e %3cpath d='M12%2c16a1%2c1%2c0%2c0%2c1-1-.91V8.91a1%2c1%2c0%2c0%2c1%2c2%2c0v6.18A1%2c1%2c0%2c0%2c1%2c12%2c16Zm0%2c1a1%2c1%2c0%2c1%2c0%2c1%2c1A1%2c1%2c0%2c0%2c0%2c12%2c17Z' style='fill: white'/%3e %3c/svg%3e");
@@ -0,0 +1,48 @@
1
+ import { html, nothing } from 'lit-html';
2
+ import { ifDefined } from 'lit-html/directives/if-defined';
3
+ import { iconTemplate } from '../icon/icon.template';
4
+ export function buttonTemplate(button) {
5
+ return 'url' in button
6
+ ? anchorElement(button)
7
+ : buttonElement(button);
8
+ }
9
+ function anchorElement({ url, label, modifier, id, icon, iconMode }) {
10
+ return html `
11
+ <a
12
+ href=${url}
13
+ class=${ifDefined(modifier)}
14
+ ?id=${id}
15
+ >
16
+ ${icon && !iconMode
17
+ ? iconTemplate(icon)
18
+ : nothing}<span class=${ifDefined(iconMode === 'only' ? 'sr-only' : undefined)}>${label}</span>${(modifier === null || modifier === void 0 ? void 0 : modifier.includes('extern'))
19
+ ? html `<span class="sr-only">(Opent andere website in nieuw tabblad)</span>`
20
+ : nothing}${icon && iconMode
21
+ ? iconTemplate(icon)
22
+ : nothing}
23
+ </a>
24
+ `;
25
+ }
26
+ function buttonElement({ variant, label, type, modifier, id, disabled, icon, iconMode, ariaDescribedby, ariaExpanded, ariaHaspopup, ariaRoledescription, onClick }) {
27
+ type !== null && type !== void 0 ? type : (type = 'button');
28
+ const className = variant ? `dso-${variant}` : modifier;
29
+ return html `
30
+ <button
31
+ type=${type}
32
+ id=${ifDefined(id)}
33
+ class=${ifDefined(className)}
34
+ ?disabled=${disabled}
35
+ aria-describedby=${ifDefined(ariaDescribedby)}
36
+ aria-expanded=${ifDefined(ariaExpanded)}
37
+ aria-haspopup=${ifDefined(ariaHaspopup)}
38
+ aria-roledescription=${ifDefined(ariaRoledescription)}
39
+ @click=${ifDefined(onClick)}
40
+ >
41
+ ${icon && !iconMode
42
+ ? iconTemplate(icon)
43
+ : nothing}<span class=${ifDefined(iconMode === 'only' ? 'sr-only' : undefined)}>${label}</span>${icon && iconMode
44
+ ? iconTemplate(icon)
45
+ : nothing}
46
+ </button>
47
+ `;
48
+ }
@@ -0,0 +1,42 @@
1
+ import { html } from 'lit-html';
2
+ function contextLabelTemplate(label, content, children) {
3
+ return html `
4
+ <div class="dso-context-wrapper">
5
+ <span class="dso-context-label">
6
+ ${label}
7
+ </span>
8
+ <div class="dso-context-container">
9
+ ${content}
10
+ </div>
11
+ </div>
12
+ ${children}
13
+ `;
14
+ }
15
+ function contextFieldsetTemplate(label, content, children) {
16
+ return html `
17
+ <fieldset>
18
+ <legend class="sr-only">
19
+ ${label}
20
+ </legend>
21
+ <div class="dso-context-wrapper">
22
+ <span class="dso-context-label" aria-hidden="true">
23
+ ${label}
24
+ </span>
25
+ <div class="dso-context-container">
26
+ ${content}
27
+ </div>
28
+ </div>
29
+ ${children}
30
+ </fieldset>
31
+ `;
32
+ }
33
+ export function contextTemplate({ label, type, content, children }) {
34
+ switch (type) {
35
+ case 'label':
36
+ return contextLabelTemplate(label, content, children);
37
+ case 'legend':
38
+ return contextFieldsetTemplate(label, content, children);
39
+ default:
40
+ throw new TypeError('type can only be label or legend');
41
+ }
42
+ }
@@ -1,6 +1,3 @@
1
- /* stylelint-disable value-keyword-case */
2
- /* stylelint-disable string-no-newline */
3
- /* stylelint-enable */
4
1
  :host {
5
2
  display: block;
6
3
  }
@@ -107,6 +104,7 @@
107
104
  }
108
105
 
109
106
  .dso-date__dialog {
107
+ border-width: 1px;
110
108
  display: flex;
111
109
  right: 0;
112
110
  min-width: 320px;
@@ -133,8 +131,8 @@
133
131
  }
134
132
  }
135
133
  .dso-date__dialog.is-left {
136
- left: auto;
137
- right: 0;
134
+ left: -11px;
135
+ right: auto;
138
136
  width: auto;
139
137
  }
140
138
  .dso-date__dialog.is-active {
@@ -23,7 +23,7 @@ const keyCode = {
23
23
  RIGHT: 39,
24
24
  DOWN: 40,
25
25
  };
26
- const DISALLOWED_CHARACTERS = /[^0-9\.\/\-]+/g;
26
+ const DISALLOWED_CHARACTERS = /[^0-9\-]+/g;
27
27
  const TRANSITION_MS = 300;
28
28
  export class DsoDatePicker {
29
29
  constructor() {
@@ -229,7 +229,49 @@ export class DsoDatePicker {
229
229
  };
230
230
  this.handleInputChange = (e) => {
231
231
  const target = e.target;
232
- this.setValue(target.value.replace(DISALLOWED_CHARACTERS, ""));
232
+ this.setValue(target.value);
233
+ };
234
+ this.handleKeyPress = (e) => {
235
+ if (e.key.search(DISALLOWED_CHARACTERS) > -1) {
236
+ e.preventDefault();
237
+ }
238
+ };
239
+ this.prepareEvent = (value) => {
240
+ var event = {
241
+ component: "dso-date-picker",
242
+ value: "",
243
+ valueAsDate: undefined
244
+ };
245
+ if (value instanceof Date) {
246
+ event.valueAsDate = value;
247
+ }
248
+ else {
249
+ event.value = value;
250
+ event.valueAsDate = parseDutchDate(value);
251
+ }
252
+ if (event.valueAsDate) {
253
+ event.value = printDutchDate(event.valueAsDate);
254
+ }
255
+ if (!event.valueAsDate && this.required) {
256
+ event.error = "required";
257
+ }
258
+ if (event.value && !event.valueAsDate) {
259
+ event.error = "invalid";
260
+ }
261
+ if (event.valueAsDate && (this.min || this.max)) {
262
+ const min = parseDutchDate(this.min);
263
+ const max = parseDutchDate(this.max);
264
+ const clampValue = clamp(event.valueAsDate, min, max);
265
+ if (clampValue !== event.valueAsDate && clampValue === min) {
266
+ event.valueAsDate = undefined;
267
+ event.error = "min-range";
268
+ }
269
+ else if (clampValue !== event.valueAsDate && clampValue === max) {
270
+ event.valueAsDate = undefined;
271
+ event.error = "max-range";
272
+ }
273
+ }
274
+ return event;
233
275
  };
234
276
  this.processFocusedDayNode = (element) => {
235
277
  this.focusedDayNode = element;
@@ -321,27 +363,7 @@ export class DsoDatePicker {
321
363
  this.focusedDay = clamp(day, parseDutchDate(this.min), parseDutchDate(this.max));
322
364
  }
323
365
  setValue(value) {
324
- var event = {
325
- component: "dso-date-picker",
326
- value: "",
327
- valueAsDate: undefined
328
- };
329
- if (value instanceof Date) {
330
- event.valueAsDate = value;
331
- }
332
- else {
333
- event.value = value;
334
- event.valueAsDate = parseDutchDate(value);
335
- }
336
- if (event.valueAsDate) {
337
- event.value = printDutchDate(event.valueAsDate);
338
- }
339
- if (!event.valueAsDate && this.required) {
340
- event.error = "required";
341
- }
342
- if (event.value && !event.valueAsDate) {
343
- event.error = "invalid";
344
- }
366
+ const event = this.prepareEvent(value);
345
367
  this.value = event.value;
346
368
  this.dateChange.emit(event);
347
369
  }
@@ -379,7 +401,7 @@ export class DsoDatePicker {
379
401
  return (h(Host, null,
380
402
  h("div", { class: "dso-date" },
381
403
  h("div", { class: "dso-date__input-wrapper" },
382
- h("input", { class: "dso-date__input", value: this.value, placeholder: this.localization.placeholder, id: this.identifier, disabled: this.disabled, role: this.role, required: this.required ? true : undefined, "aria-autocomplete": "none", onInput: this.handleInputChange, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyUp: this.handleKeyUp, onKeyDown: this.handleKeyDown, autoComplete: "off", ref: element => (this.datePickerInput = element) }),
404
+ h("input", { class: "dso-date__input", value: this.value, placeholder: this.localization.placeholder, id: this.identifier, disabled: this.disabled, role: this.role, required: this.required ? true : undefined, "aria-autocomplete": "none", onKeyPress: this.handleKeyPress, onInput: this.handleInputChange, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyUp: this.handleKeyUp, onKeyDown: this.handleKeyDown, autoComplete: "off", ref: element => (this.datePickerInput = element) }),
383
405
  h("button", { type: "button", class: "dso-date__toggle", onClick: this.toggleOpen, disabled: this.disabled, ref: element => (this.datePickerButton = element) },
384
406
  h("span", { class: "dso-date__toggle-icon" },
385
407
  h("dso-icon", { icon: "calendar" })),
@@ -636,7 +658,7 @@ export class DsoDatePicker {
636
658
  },
637
659
  "complexType": {
638
660
  "original": "DsoDatePickerChangeEvent",
639
- "resolved": "{ component: \"dso-date-picker\"; valueAsDate: Date | undefined; value: string; error?: \"invalid\" | \"required\" | undefined; }",
661
+ "resolved": "{ component: \"dso-date-picker\"; valueAsDate: Date | undefined; value: string; error?: \"invalid\" | \"required\" | \"min-range\" | \"max-range\" | undefined; }",
640
662
  "references": {
641
663
  "DsoDatePickerChangeEvent": {
642
664
  "location": "local"
@@ -1,9 +1,10 @@
1
1
  import { html } from 'lit-html';
2
2
  import { ifDefined } from 'lit-html/directives/if-defined';
3
- export function datePickerTemplate({ id, onDateChange, value, min, max, disabled, autofocus }) {
3
+ export function datePickerTemplate({ id, onDateChange, value, min, max, disabled, autofocus, direction }) {
4
4
  return html `
5
5
  <dso-date-picker
6
6
  @dateChange=${(e) => onDateChange(e)}
7
+ direction=${ifDefined(direction)}
7
8
  identifier=${ifDefined(id)}
8
9
  value=${ifDefined(value || undefined)}
9
10
  min=${ifDefined(min || undefined)}