@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
@@ -72,6 +72,7 @@ const HYDRATE_ID = 's-id';
72
72
  const HYDRATED_STYLE_ID = 'sty-id';
73
73
  const HYDRATE_CHILD_ID = 'c-id';
74
74
  const HYDRATED_CSS = '{visibility:hidden}.hydrated{visibility:inherit}';
75
+ const XLINK_NS = 'http://www.w3.org/1999/xlink';
75
76
  const createTime = (fnName, tagName = '') => {
76
77
  {
77
78
  return () => {
@@ -421,16 +422,36 @@ const setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags) => {
421
422
  }
422
423
  catch (e) { }
423
424
  }
425
+ /**
426
+ * Need to manually update attribute if:
427
+ * - memberName is not an attribute
428
+ * - if we are rendering the host element in order to reflect attribute
429
+ * - if it's a SVG, since properties might not work in <svg>
430
+ * - if the newValue is null/undefined or 'false'.
431
+ */
432
+ let xlink = false;
433
+ {
434
+ if (ln !== (ln = ln.replace(/^xlink\:?/, ''))) {
435
+ memberName = ln;
436
+ xlink = true;
437
+ }
438
+ }
424
439
  if (newValue == null || newValue === false) {
425
440
  if (newValue !== false || elm.getAttribute(memberName) === '') {
426
- {
441
+ if (xlink) {
442
+ elm.removeAttributeNS(XLINK_NS, memberName);
443
+ }
444
+ else {
427
445
  elm.removeAttribute(memberName);
428
446
  }
429
447
  }
430
448
  }
431
449
  else if ((!isProp || flags & 4 /* isHost */ || isSvg) && !isComplex) {
432
450
  newValue = newValue === true ? '' : newValue;
433
- {
451
+ if (xlink) {
452
+ elm.setAttributeNS(XLINK_NS, memberName, newValue);
453
+ }
454
+ else {
434
455
  elm.setAttribute(memberName, newValue);
435
456
  }
436
457
  }
@@ -1188,6 +1209,9 @@ const postUpdateComponent = (hostRef) => {
1188
1209
  }
1189
1210
  }
1190
1211
  else {
1212
+ {
1213
+ safeCall(instance, 'componentDidUpdate');
1214
+ }
1191
1215
  endPostUpdate();
1192
1216
  }
1193
1217
  {
@@ -0,0 +1,262 @@
1
+ /*!
2
+ * tabbable 5.2.1
3
+ * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
4
+ */
5
+ var candidateSelectors = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])', 'details>summary:first-of-type', 'details'];
6
+ var candidateSelector = /* #__PURE__ */candidateSelectors.join(',');
7
+ var matches = typeof Element === 'undefined' ? function () {} : Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
8
+
9
+ var getCandidates = function getCandidates(el, includeContainer, filter) {
10
+ var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));
11
+
12
+ if (includeContainer && matches.call(el, candidateSelector)) {
13
+ candidates.unshift(el);
14
+ }
15
+
16
+ candidates = candidates.filter(filter);
17
+ return candidates;
18
+ };
19
+
20
+ var isContentEditable = function isContentEditable(node) {
21
+ return node.contentEditable === 'true';
22
+ };
23
+
24
+ var getTabindex = function getTabindex(node) {
25
+ var tabindexAttr = parseInt(node.getAttribute('tabindex'), 10);
26
+
27
+ if (!isNaN(tabindexAttr)) {
28
+ return tabindexAttr;
29
+ } // Browsers do not return `tabIndex` correctly for contentEditable nodes;
30
+ // so if they don't have a tabindex attribute specifically set, assume it's 0.
31
+
32
+
33
+ if (isContentEditable(node)) {
34
+ return 0;
35
+ } // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default
36
+ // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,
37
+ // yet they are still part of the regular tab order; in FF, they get a default
38
+ // `tabIndex` of 0; since Chrome still puts those elements in the regular tab
39
+ // order, consider their tab index to be 0.
40
+
41
+
42
+ if ((node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {
43
+ return 0;
44
+ }
45
+
46
+ return node.tabIndex;
47
+ };
48
+
49
+ var sortOrderedTabbables = function sortOrderedTabbables(a, b) {
50
+ return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
51
+ };
52
+
53
+ var isInput = function isInput(node) {
54
+ return node.tagName === 'INPUT';
55
+ };
56
+
57
+ var isHiddenInput = function isHiddenInput(node) {
58
+ return isInput(node) && node.type === 'hidden';
59
+ };
60
+
61
+ var isDetailsWithSummary = function isDetailsWithSummary(node) {
62
+ var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {
63
+ return child.tagName === 'SUMMARY';
64
+ });
65
+ return r;
66
+ };
67
+
68
+ var getCheckedRadio = function getCheckedRadio(nodes, form) {
69
+ for (var i = 0; i < nodes.length; i++) {
70
+ if (nodes[i].checked && nodes[i].form === form) {
71
+ return nodes[i];
72
+ }
73
+ }
74
+ };
75
+
76
+ var isTabbableRadio = function isTabbableRadio(node) {
77
+ if (!node.name) {
78
+ return true;
79
+ }
80
+
81
+ var radioScope = node.form || node.ownerDocument;
82
+
83
+ var queryRadios = function queryRadios(name) {
84
+ return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]');
85
+ };
86
+
87
+ var radioSet;
88
+
89
+ if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {
90
+ radioSet = queryRadios(window.CSS.escape(node.name));
91
+ } else {
92
+ try {
93
+ radioSet = queryRadios(node.name);
94
+ } catch (err) {
95
+ // eslint-disable-next-line no-console
96
+ 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);
97
+ return false;
98
+ }
99
+ }
100
+
101
+ var checked = getCheckedRadio(radioSet, node.form);
102
+ return !checked || checked === node;
103
+ };
104
+
105
+ var isRadio = function isRadio(node) {
106
+ return isInput(node) && node.type === 'radio';
107
+ };
108
+
109
+ var isNonTabbableRadio = function isNonTabbableRadio(node) {
110
+ return isRadio(node) && !isTabbableRadio(node);
111
+ };
112
+
113
+ var isHidden = function isHidden(node, displayCheck) {
114
+ if (getComputedStyle(node).visibility === 'hidden') {
115
+ return true;
116
+ }
117
+
118
+ var isDirectSummary = matches.call(node, 'details>summary:first-of-type');
119
+ var nodeUnderDetails = isDirectSummary ? node.parentElement : node;
120
+
121
+ if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {
122
+ return true;
123
+ }
124
+
125
+ if (!displayCheck || displayCheck === 'full') {
126
+ while (node) {
127
+ if (getComputedStyle(node).display === 'none') {
128
+ return true;
129
+ }
130
+
131
+ node = node.parentElement;
132
+ }
133
+ } else if (displayCheck === 'non-zero-area') {
134
+ var _node$getBoundingClie = node.getBoundingClientRect(),
135
+ width = _node$getBoundingClie.width,
136
+ height = _node$getBoundingClie.height;
137
+
138
+ return width === 0 && height === 0;
139
+ }
140
+
141
+ return false;
142
+ }; // form fields (nested) inside a disabled fieldset are not focusable/tabbable
143
+ // unless they are in the _first_ <legend> element of the top-most disabled
144
+ // fieldset
145
+
146
+
147
+ var isDisabledFromFieldset = function isDisabledFromFieldset(node) {
148
+ if (isInput(node) || node.tagName === 'SELECT' || node.tagName === 'TEXTAREA' || node.tagName === 'BUTTON') {
149
+ var parentNode = node.parentElement;
150
+
151
+ while (parentNode) {
152
+ if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {
153
+ // look for the first <legend> as an immediate child of the disabled
154
+ // <fieldset>: if the node is in that legend, it'll be enabled even
155
+ // though the fieldset is disabled; otherwise, the node is in a
156
+ // secondary/subsequent legend, or somewhere else within the fieldset
157
+ // (however deep nested) and it'll be disabled
158
+ for (var i = 0; i < parentNode.children.length; i++) {
159
+ var child = parentNode.children.item(i);
160
+
161
+ if (child.tagName === 'LEGEND') {
162
+ if (child.contains(node)) {
163
+ return false;
164
+ } // the node isn't in the first legend (in doc order), so no matter
165
+ // where it is now, it'll be disabled
166
+
167
+
168
+ return true;
169
+ }
170
+ } // the node isn't in a legend, so no matter where it is now, it'll be disabled
171
+
172
+
173
+ return true;
174
+ }
175
+
176
+ parentNode = parentNode.parentElement;
177
+ }
178
+ } // else, node's tabbable/focusable state should not be affected by a fieldset's
179
+ // enabled/disabled state
180
+
181
+
182
+ return false;
183
+ };
184
+
185
+ var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {
186
+ if (node.disabled || isHiddenInput(node) || isHidden(node, options.displayCheck) || // For a details element with a summary, the summary element gets the focus
187
+ isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {
188
+ return false;
189
+ }
190
+
191
+ return true;
192
+ };
193
+
194
+ var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {
195
+ if (!isNodeMatchingSelectorFocusable(options, node) || isNonTabbableRadio(node) || getTabindex(node) < 0) {
196
+ return false;
197
+ }
198
+
199
+ return true;
200
+ };
201
+
202
+ var tabbable = function tabbable(el, options) {
203
+ options = options || {};
204
+ var regularTabbables = [];
205
+ var orderedTabbables = [];
206
+ var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));
207
+ candidates.forEach(function (candidate, i) {
208
+ var candidateTabindex = getTabindex(candidate);
209
+
210
+ if (candidateTabindex === 0) {
211
+ regularTabbables.push(candidate);
212
+ } else {
213
+ orderedTabbables.push({
214
+ documentOrder: i,
215
+ tabIndex: candidateTabindex,
216
+ node: candidate
217
+ });
218
+ }
219
+ });
220
+ var tabbableNodes = orderedTabbables.sort(sortOrderedTabbables).map(function (a) {
221
+ return a.node;
222
+ }).concat(regularTabbables);
223
+ return tabbableNodes;
224
+ };
225
+
226
+ var focusable = function focusable(el, options) {
227
+ options = options || {};
228
+ var candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));
229
+ return candidates;
230
+ };
231
+
232
+ var isTabbable = function isTabbable(node, options) {
233
+ options = options || {};
234
+
235
+ if (!node) {
236
+ throw new Error('No node provided');
237
+ }
238
+
239
+ if (matches.call(node, candidateSelector) === false) {
240
+ return false;
241
+ }
242
+
243
+ return isNodeMatchingSelectorTabbable(options, node);
244
+ };
245
+
246
+ var focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');
247
+
248
+ var isFocusable = function isFocusable(node, options) {
249
+ options = options || {};
250
+
251
+ if (!node) {
252
+ throw new Error('No node provided');
253
+ }
254
+
255
+ if (matches.call(node, focusableCandidateSelector) === false) {
256
+ return false;
257
+ }
258
+
259
+ return isNodeMatchingSelectorFocusable(options, node);
260
+ };
261
+
262
+ export { isFocusable as a, focusable as f, isTabbable as i, tabbable as t };
@@ -1,4 +1,4 @@
1
- import { p as promiseResolve, b as bootstrapLazy } from './index-61410be2.js';
1
+ import { p as promiseResolve, b as bootstrapLazy } from './index-d54cae76.js';
2
2
 
3
3
  /*
4
4
  Stencil Client Patch Esm v2.9.0 | MIT Licensed | https://stenciljs.com
@@ -10,7 +10,7 @@ const patchEsm = () => {
10
10
  const defineCustomElements = (win, options) => {
11
11
  if (typeof window === 'undefined') return Promise.resolve();
12
12
  return patchEsm().then(() => {
13
- return bootstrapLazy([["dso-map-base-layers",[[1,"dso-map-base-layers",{"baseLayers":[16]}]]],["dso-map-overlays",[[1,"dso-map-overlays",{"overlays":[16]}]]],["dso-header",[[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",[[1,"dso-toggletip",{"label":[1],"position":[1],"small":[4],"secondary":[4],"active":[32]}]]],["dso-tree-view",[[1,"dso-tree-view",{"collection":[16]}]]],["dso-date-picker",[[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",[[1,"dso-helpcenter-panel",{"label":[1],"url":[1],"visibility":[32],"isOpen":[32],"slideState":[32],"loadIframe":[32]}]]],["dso-label",[[1,"dso-label",{"compact":[4],"removable":[4],"status":[1],"hover":[32]}]]],["dso-map-controls",[[1,"dso-map-controls",{"open":[1540],"disableZoom":[1,"disable-zoom"],"hideContent":[32]}]]],["dso-alert",[[1,"dso-alert",{"status":[1],"roleAlert":[4,"role-alert"]}]]],["dso-attachments-counter",[[1,"dso-attachments-counter",{"count":[2]}]]],["dso-autosuggest",[[6,"dso-autosuggest",{"suggestions":[16],"suggestOnFocus":[4,"suggest-on-focus"],"showSuggestions":[32],"selectedSuggestion":[32]},[[4,"click","onDocumentClick"]]]]],["dso-badge",[[1,"dso-badge",{"status":[1]}]]],["dso-banner",[[1,"dso-banner",{"status":[1]}]]],["dso-highlight-box",[[1,"dso-highlight-box",{"yellow":[4],"border":[4],"white":[4],"dropShadow":[4,"drop-shadow"],"step":[2]}]]],["dso-ozon-content",[[0,"dso-ozon-content",{"content":[1]},[[0,"click","handleClick"]]]]],["dso-progress-bar",[[1,"dso-progress-bar",{"progress":[2],"min":[2],"max":[2]}]]],["dso-dropdown-menu",[[1,"dso-dropdown-menu",{"open":[1540],"dropdownAlign":[1,"dropdown-align"],"checkable":[4]}]]],["dso-progress-indicator",[[1,"dso-progress-indicator",{"label":[1],"size":[1],"block":[4]}]]],["dso-tooltip",[[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",[[1,"dso-info-button",{"active":[1540],"secondary":[4],"label":[1]}]]],["dso-info_2",[[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",[[1,"dso-icon",{"icon":[1]}]]]], options);
13
+ return bootstrapLazy([["dso-map-base-layers",[[1,"dso-map-base-layers",{"baseLayers":[16]}]]],["dso-map-overlays",[[1,"dso-map-overlays",{"overlays":[16]}]]],["dso-header",[[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",[[1,"dso-toggletip",{"label":[1],"position":[1],"small":[4],"secondary":[4],"active":[32]}]]],["dso-tree-view",[[1,"dso-tree-view",{"collection":[16]}]]],["dso-date-picker",[[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",[[1,"dso-helpcenter-panel",{"label":[1],"url":[1],"visibility":[32],"isOpen":[32],"slideState":[32],"loadIframe":[32]}]]],["dso-label",[[1,"dso-label",{"compact":[4],"removable":[4],"status":[1],"hover":[32]}]]],["dso-map-controls",[[1,"dso-map-controls",{"open":[1540],"disableZoom":[1,"disable-zoom"],"hideContent":[32]}]]],["dso-viewer-grid",[[1,"dso-viewer-grid",{"filterpanelOpen":[516,"filterpanel-open"],"overlayOpen":[516,"overlay-open"],"mainSize":[32]}]]],["dso-alert",[[1,"dso-alert",{"status":[1],"roleAlert":[4,"role-alert"]}]]],["dso-attachments-counter",[[1,"dso-attachments-counter",{"count":[2]}]]],["dso-autosuggest",[[6,"dso-autosuggest",{"suggestions":[16],"suggestOnFocus":[4,"suggest-on-focus"],"showSuggestions":[32],"selectedSuggestion":[32]},[[4,"click","onDocumentClick"]]]]],["dso-badge",[[1,"dso-badge",{"status":[1]}]]],["dso-banner",[[1,"dso-banner",{"status":[1]}]]],["dso-highlight-box",[[1,"dso-highlight-box",{"yellow":[4],"border":[4],"white":[4],"dropShadow":[4,"drop-shadow"],"step":[2]}]]],["dso-ozon-content",[[0,"dso-ozon-content",{"content":[1]},[[0,"click","handleClick"]]]]],["dso-progress-bar",[[1,"dso-progress-bar",{"progress":[2],"min":[2],"max":[2]}]]],["dso-dropdown-menu",[[1,"dso-dropdown-menu",{"open":[1540],"dropdownAlign":[1,"dropdown-align"],"checkable":[4]}]]],["dso-progress-indicator",[[1,"dso-progress-indicator",{"label":[1],"size":[1],"block":[4]}]]],["dso-tooltip",[[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",[[1,"dso-info-button",{"active":[1540],"secondary":[4],"label":[1]}]]],["dso-info_2",[[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",[[1,"dso-icon",{"icon":[1]}]]]], options);
14
14
  });
15
15
  };
16
16
 
@@ -0,0 +1,2 @@
1
+ import { Anchor } from '@dso-toolkit/sources';
2
+ export declare function anchorTemplate({ icon, iconMode, label, modifier, url }: Anchor): import("lit-html").TemplateResult<1>;
@@ -0,0 +1,2 @@
1
+ import { Button, ButtonAnchor } from '@dso-toolkit/sources';
2
+ export declare function buttonTemplate(button: Button | ButtonAnchor): import("lit-html").TemplateResult<1>;
@@ -0,0 +1,3 @@
1
+ import { Context } from '@dso-toolkit/sources';
2
+ import { TemplateResult } from 'lit-html';
3
+ export declare function contextTemplate({ label, type, content, children }: Context<TemplateResult>): TemplateResult<1>;
@@ -3,7 +3,7 @@ export declare type DsoDatePickerChangeEvent = {
3
3
  component: "dso-date-picker";
4
4
  valueAsDate: Date | undefined;
5
5
  value: string;
6
- error?: "invalid" | "required";
6
+ error?: "invalid" | "required" | "min-range" | "max-range";
7
7
  };
8
8
  export declare type DsoDatePickerFocusEvent = {
9
9
  component: "dso-date-picker";
@@ -161,7 +161,9 @@ export declare class DsoDatePicker implements ComponentInterface {
161
161
  private handleMonthSelect;
162
162
  private handleYearSelect;
163
163
  private handleInputChange;
164
+ private handleKeyPress;
164
165
  private setValue;
166
+ private prepareEvent;
165
167
  private processFocusedDayNode;
166
168
  componentDidLoad(): void;
167
169
  /**
@@ -1,5 +1,5 @@
1
1
  import { DatePicker } from '@dso-toolkit/sources';
2
2
  import { TemplateResult } from 'lit-html';
3
- export declare function datePickerTemplate({ id, onDateChange, value, min, max, disabled, autofocus }: DatePicker): TemplateResult<1>;
3
+ export declare function datePickerTemplate({ id, onDateChange, value, min, max, disabled, autofocus, direction }: DatePicker): TemplateResult<1>;
4
4
  export declare function datePickerWithLabelTemplate(datePicker: TemplateResult, id: string, label: string): TemplateResult<1>;
5
5
  export declare function datePickerShowByScriptingTemplate(datePicker: TemplateResult, id: string): TemplateResult<1>;
@@ -0,0 +1,3 @@
1
+ import { DefinitionList } from '@dso-toolkit/sources';
2
+ import { TemplateResult } from 'lit-html';
3
+ export declare function definitionListTemplate({ modifier, definitions, useSrOnlyColon }: DefinitionList<TemplateResult>): TemplateResult<1>;
@@ -0,0 +1,2 @@
1
+ import { LabelGroup } from '@dso-toolkit/sources';
2
+ export declare function labelGroupTemplate({ labels }: LabelGroup): import("lit-html").TemplateResult<1>;
@@ -0,0 +1,3 @@
1
+ import { List } from '@dso-toolkit/sources';
2
+ import { TemplateResult } from 'lit-html';
3
+ export declare function listTemplate({ type, items, modifier }: List): TemplateResult<1>;
@@ -1,8 +1,13 @@
1
- import { EventEmitter } from '../../stencil-public-runtime';
1
+ import { EventEmitter, ComponentInterface } from '../../stencil-public-runtime';
2
2
  import { BaseLayer, BaseLayerChangeEvent } from './map-base-layers.interfaces';
3
- export declare class MapBaseLayers {
3
+ export declare class MapBaseLayers implements ComponentInterface {
4
+ previousBaselayers: BaseLayer[] | undefined;
5
+ selectableRefs: {
6
+ [id: number]: HTMLDsoSelectableElement;
7
+ };
4
8
  baseLayerChange: EventEmitter<BaseLayerChangeEvent>;
5
9
  baseLayers: BaseLayer[];
6
10
  baseLayerChangeHandler(baseLayer: BaseLayer): void;
11
+ componentDidRender(): void;
7
12
  render(): any;
8
13
  }
@@ -3,6 +3,7 @@ export interface BaseLayer {
3
3
  name: string;
4
4
  checked?: boolean;
5
5
  disabled?: boolean;
6
+ info?: string;
6
7
  }
7
8
  export interface BaseLayerChangeEvent {
8
9
  activeBaseLayer: BaseLayer;
@@ -1,9 +1,14 @@
1
- import { EventEmitter } from '../../stencil-public-runtime';
1
+ import { EventEmitter, ComponentInterface } from '../../stencil-public-runtime';
2
2
  import { Overlay, OverlayChangeEvent } from './map-overlays.interfaces';
3
3
  import { SelectableChangeEvent } from '../selectable/selectable';
4
- export declare class MapOverlays {
4
+ export declare class MapOverlays implements ComponentInterface {
5
+ previousOverlays: Overlay[] | undefined;
6
+ selectableRefs: {
7
+ [id: number]: HTMLDsoSelectableElement;
8
+ };
5
9
  overlays: Overlay[];
6
10
  toggleOverlay: EventEmitter<OverlayChangeEvent>;
7
11
  overlayChangeHandler(overlay: Overlay, e: CustomEvent<SelectableChangeEvent>): void;
12
+ componentDidRender(): void;
8
13
  render(): any;
9
14
  }
@@ -3,6 +3,7 @@ export interface Overlay {
3
3
  name: string;
4
4
  checked?: boolean;
5
5
  disabled?: boolean;
6
+ info?: string;
6
7
  }
7
8
  export interface OverlayChangeEvent {
8
9
  overlay: Overlay;
@@ -16,6 +16,7 @@ export declare class Selectable {
16
16
  change: EventEmitter<SelectableChangeEvent>;
17
17
  host: HTMLElement;
18
18
  infoActive: boolean;
19
+ toggleInfo(active?: boolean): Promise<void>;
19
20
  private mutationObserver?;
20
21
  private fallbackIdentifier;
21
22
  private input;
@@ -0,0 +1,3 @@
1
+ import { ViewerGridDocumentHeader } from "@dso-toolkit/sources";
2
+ import { TemplateResult } from "lit-html";
3
+ export declare function viewerGridDocumentHeaderTemplate({ title, type, features, featuresAction, mapAction, featuresOpen, owner, status, }: ViewerGridDocumentHeader<TemplateResult>): TemplateResult<1>;
@@ -0,0 +1,3 @@
1
+ import { ViewerGridDocumentListItem } from "@dso-toolkit/sources";
2
+ import { TemplateResult } from "lit-html";
3
+ export declare function viewerGridDocumentListItem({ title, type, owner, status, }: ViewerGridDocumentListItem<TemplateResult>): TemplateResult<1>;
@@ -0,0 +1,3 @@
1
+ import { ViewerGridFilterblok } from "@dso-toolkit/sources";
2
+ import { TemplateResult } from "lit-html";
3
+ export declare function viewerGridFilterblok({ title, address, activeFilters, onAllOptions, }: ViewerGridFilterblok<TemplateResult>): TemplateResult<1>;
@@ -0,0 +1,6 @@
1
+ import { FunctionalComponent } from '../../stencil-public-runtime';
2
+ export interface ViewerGridFilterpanelProps {
3
+ onApply: (mouseEvent: MouseEvent) => void;
4
+ onCancel: (mouseEvent: MouseEvent) => void;
5
+ }
6
+ export declare const ViewerGridFilterpanelButtons: FunctionalComponent<ViewerGridFilterpanelProps>;
@@ -0,0 +1,33 @@
1
+ import { EventEmitter } from "../../stencil-public-runtime";
2
+ import { FocusTrap } from "focus-trap";
3
+ declare type MainSize = "small" | "medium" | "large";
4
+ export interface FilterpanelEvent {
5
+ originalEvent: MouseEvent;
6
+ }
7
+ export declare class ViewerGrid {
8
+ filterpanelOpen: boolean;
9
+ overlayOpen: boolean;
10
+ mainSize: MainSize;
11
+ closeOverlay: EventEmitter<MouseEvent | KeyboardEvent>;
12
+ filterpanelCancel: EventEmitter<FilterpanelEvent>;
13
+ filterpanelApply: EventEmitter<FilterpanelEvent>;
14
+ host: HTMLElement;
15
+ filterpanel: HTMLElement | undefined;
16
+ filterpanelSlot: HTMLElement | null;
17
+ filterpanelFocustrap: FocusTrap | undefined;
18
+ overlay: HTMLDivElement | undefined;
19
+ overlaySlot: HTMLDivElement | null;
20
+ overlayFocustrap: FocusTrap | undefined;
21
+ shrinkMain: () => void;
22
+ expandMain: () => void;
23
+ updateFocusTrap(): void;
24
+ keyDownListener: (event: KeyboardEvent) => void;
25
+ connectedCallback(): void;
26
+ componentDidLoad(): void;
27
+ componentDidUpdate(): void;
28
+ disconnectedCallback(): void;
29
+ handleFilterpanelApply(mouseEvent: MouseEvent): void;
30
+ handleFilterpanelCancel(mouseEvent: MouseEvent): void;
31
+ render(): any;
32
+ }
33
+ export {};
@@ -0,0 +1,3 @@
1
+ import { ViewerGrid } from "@dso-toolkit/sources";
2
+ import { TemplateResult } from "lit-html";
3
+ export declare function viewerGridTemplate({ filterpanel, main, map, overlay, noOverlay, filterpanelOpen, overlayOpen, filterpanelApply, filterpanelCancel, closeOverlay, }: ViewerGrid<TemplateResult>): TemplateResult<1>;
@@ -14,6 +14,7 @@ import { Overlay, OverlayChangeEvent } from "./components/map-overlays/map-overl
14
14
  import { ContentAnchor } from "./components/ozon-content/ozon-content.interfaces";
15
15
  import { SelectableChangeEvent } from "./components/selectable/selectable";
16
16
  import { TreeViewItem, TreeViewPointerEvent } from "./components/tree-view/tree-view.interfaces";
17
+ import { FilterpanelEvent } from "./components/viewer-grid/viewer-grid";
17
18
  export namespace Components {
18
19
  interface DsoAlert {
19
20
  /**
@@ -183,6 +184,7 @@ export namespace Components {
183
184
  "invalid"?: boolean;
184
185
  "name"?: string;
185
186
  "required"?: boolean;
187
+ "toggleInfo": (active?: boolean | undefined) => Promise<void>;
186
188
  "type": 'checkbox' | 'radio';
187
189
  "value": string;
188
190
  }
@@ -232,6 +234,10 @@ export namespace Components {
232
234
  */
233
235
  "collection": TreeViewItem[];
234
236
  }
237
+ interface DsoViewerGrid {
238
+ "filterpanelOpen": boolean;
239
+ "overlayOpen": boolean;
240
+ }
235
241
  }
236
242
  declare global {
237
243
  interface HTMLDsoAlertElement extends Components.DsoAlert, HTMLStencilElement {
@@ -378,6 +384,12 @@ declare global {
378
384
  prototype: HTMLDsoTreeViewElement;
379
385
  new (): HTMLDsoTreeViewElement;
380
386
  };
387
+ interface HTMLDsoViewerGridElement extends Components.DsoViewerGrid, HTMLStencilElement {
388
+ }
389
+ var HTMLDsoViewerGridElement: {
390
+ prototype: HTMLDsoViewerGridElement;
391
+ new (): HTMLDsoViewerGridElement;
392
+ };
381
393
  interface HTMLElementTagNameMap {
382
394
  "dso-alert": HTMLDsoAlertElement;
383
395
  "dso-attachments-counter": HTMLDsoAttachmentsCounterElement;
@@ -403,6 +415,7 @@ declare global {
403
415
  "dso-toggletip": HTMLDsoToggletipElement;
404
416
  "dso-tooltip": HTMLDsoTooltipElement;
405
417
  "dso-tree-view": HTMLDsoTreeViewElement;
418
+ "dso-viewer-grid": HTMLDsoViewerGridElement;
406
419
  }
407
420
  }
408
421
  declare namespace LocalJSX {
@@ -656,6 +669,13 @@ declare namespace LocalJSX {
656
669
  */
657
670
  "onOpenItem"?: (event: CustomEvent<TreeViewItem[]>) => void;
658
671
  }
672
+ interface DsoViewerGrid {
673
+ "filterpanelOpen"?: boolean;
674
+ "onCloseOverlay"?: (event: CustomEvent<MouseEvent | KeyboardEvent>) => void;
675
+ "onFilterpanelApply"?: (event: CustomEvent<FilterpanelEvent>) => void;
676
+ "onFilterpanelCancel"?: (event: CustomEvent<FilterpanelEvent>) => void;
677
+ "overlayOpen"?: boolean;
678
+ }
659
679
  interface IntrinsicElements {
660
680
  "dso-alert": DsoAlert;
661
681
  "dso-attachments-counter": DsoAttachmentsCounter;
@@ -681,6 +701,7 @@ declare namespace LocalJSX {
681
701
  "dso-toggletip": DsoToggletip;
682
702
  "dso-tooltip": DsoTooltip;
683
703
  "dso-tree-view": DsoTreeView;
704
+ "dso-viewer-grid": DsoViewerGrid;
684
705
  }
685
706
  }
686
707
  export { LocalJSX as JSX };
@@ -711,6 +732,7 @@ declare module "@stencil/core" {
711
732
  "dso-toggletip": LocalJSX.DsoToggletip & JSXBase.HTMLAttributes<HTMLDsoToggletipElement>;
712
733
  "dso-tooltip": LocalJSX.DsoTooltip & JSXBase.HTMLAttributes<HTMLDsoTooltipElement>;
713
734
  "dso-tree-view": LocalJSX.DsoTreeView & JSXBase.HTMLAttributes<HTMLDsoTreeViewElement>;
735
+ "dso-viewer-grid": LocalJSX.DsoViewerGrid & JSXBase.HTMLAttributes<HTMLDsoViewerGridElement>;
714
736
  }
715
737
  }
716
738
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dso-toolkit/core",
3
- "version": "33.3.0",
3
+ "version": "34.2.0",
4
4
  "description": "DSO Toolkit Web Components",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/custom-elements/index.js",
@@ -50,6 +50,7 @@
50
50
  "cross-env": "^7.0.3",
51
51
  "debounce": "^1.2.1",
52
52
  "escape-string-regexp": "^5.0.0",
53
+ "focus-trap": "^6.7.3",
53
54
  "http-proxy-middleware": "^2.0.1",
54
55
  "lit-html": "^2.0.1",
55
56
  "mini-svg-data-uri": "1.4.3",