@dso-toolkit/core 30.1.0 → 32.0.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 (96) hide show
  1. package/dist/cjs/dso-alert.cjs.entry.js +1 -1
  2. package/dist/cjs/dso-autosuggest.cjs.entry.js +14 -2
  3. package/dist/cjs/dso-banner.cjs.entry.js +1 -1
  4. package/dist/cjs/dso-date-picker.cjs.entry.js +54 -14
  5. package/dist/cjs/dso-highlight-box.cjs.entry.js +1 -1
  6. package/dist/cjs/dso-icon.cjs.entry.js +6 -4
  7. package/dist/cjs/dso-info-button.cjs.entry.js +26 -0
  8. package/dist/cjs/{dso-info_3.cjs.entry.js → dso-info_2.cjs.entry.js} +1 -21
  9. package/dist/cjs/dso-label.cjs.entry.js +1 -1
  10. package/dist/cjs/dso-ozon-content.cjs.entry.js +48 -11
  11. package/dist/cjs/dso-toggletip.cjs.entry.js +62 -0
  12. package/dist/cjs/dso-toolkit.cjs.js +1 -1
  13. package/dist/cjs/dso-tooltip.cjs.entry.js +33 -26
  14. package/dist/cjs/dso-tree-view.cjs.entry.js +180 -0
  15. package/dist/cjs/loader.cjs.js +1 -1
  16. package/dist/collection/collection-manifest.json +3 -1
  17. package/dist/collection/components/alert/alert.css +2 -0
  18. package/dist/collection/components/autosuggest/autosuggest.js +3 -2
  19. package/dist/collection/components/banner/banner.css +2 -0
  20. package/dist/collection/components/date-picker/date-localization.js +1 -1
  21. package/dist/collection/components/date-picker/date-picker.css +0 -3
  22. package/dist/collection/components/date-picker/date-picker.js +108 -14
  23. package/dist/collection/components/date-picker/date-picker.template.js +2 -1
  24. package/dist/collection/components/highlight-box/highlight-box.css +1 -1
  25. package/dist/collection/components/icon/icon.js +9 -7
  26. package/dist/collection/components/info/info.css +4 -4
  27. package/dist/collection/components/info-button/info-button.css +10 -3
  28. package/dist/collection/components/info-button/info-button.js +18 -1
  29. package/dist/collection/components/info-button/info-button.template.js +2 -1
  30. package/dist/collection/components/label/label.decorator.js +6 -0
  31. package/dist/collection/components/label/label.js +1 -0
  32. package/dist/collection/components/label/label.template.js +10 -2
  33. package/dist/collection/components/ozon-content/ozon-content.transformer.js +1 -1
  34. package/dist/collection/components/toggletip/toggletip.css +8 -0
  35. package/dist/collection/components/toggletip/toggletip.js +137 -0
  36. package/dist/collection/components/toggletip/toggletip.template.js +12 -0
  37. package/dist/collection/components/tooltip/tooltip.css +1 -1
  38. package/dist/collection/components/tooltip/tooltip.js +49 -25
  39. package/dist/collection/components/tree-view/tree-item.js +20 -0
  40. package/dist/collection/components/tree-view/tree-view.css +43 -0
  41. package/dist/collection/components/tree-view/tree-view.interfaces.js +1 -0
  42. package/dist/collection/components/tree-view/tree-view.js +239 -0
  43. package/dist/collection/components/tree-view/tree-view.template.js +11 -0
  44. package/dist/custom-elements/index.d.ts +12 -0
  45. package/dist/custom-elements/index.js +402 -69
  46. package/dist/dso-toolkit/dso-toolkit.css +1 -1
  47. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  48. package/dist/dso-toolkit/{p-968d9e1d.entry.js → p-19de4cc7.entry.js} +1 -1
  49. package/dist/dso-toolkit/p-39dae284.entry.js +1 -0
  50. package/dist/dso-toolkit/p-5665f1ee.entry.js +1 -0
  51. package/dist/dso-toolkit/{p-eadba8c3.entry.js → p-5a67f3f7.entry.js} +1 -1
  52. package/dist/dso-toolkit/p-759920d0.entry.js +1 -0
  53. package/dist/dso-toolkit/{p-d748df48.entry.js → p-83f166b3.entry.js} +1 -1
  54. package/dist/dso-toolkit/p-9e9f8bcf.entry.js +1 -0
  55. package/dist/dso-toolkit/p-a52d3623.entry.js +1 -0
  56. package/dist/dso-toolkit/p-ad8f467f.entry.js +1 -0
  57. package/dist/dso-toolkit/{p-a2357726.entry.js → p-affe82e6.entry.js} +1 -1
  58. package/dist/dso-toolkit/{p-ae6209c6.entry.js → p-be5682cc.entry.js} +1 -1
  59. package/dist/dso-toolkit/p-e03d7741.entry.js +1 -0
  60. package/dist/dso-toolkit/p-e2dc97c4.entry.js +1 -0
  61. package/dist/esm/dso-alert.entry.js +1 -1
  62. package/dist/esm/dso-autosuggest.entry.js +14 -2
  63. package/dist/esm/dso-banner.entry.js +1 -1
  64. package/dist/esm/dso-date-picker.entry.js +54 -14
  65. package/dist/esm/dso-highlight-box.entry.js +1 -1
  66. package/dist/esm/dso-icon.entry.js +6 -4
  67. package/dist/esm/dso-info-button.entry.js +22 -0
  68. package/dist/esm/{dso-info_3.entry.js → dso-info_2.entry.js} +2 -21
  69. package/dist/esm/dso-label.entry.js +1 -1
  70. package/dist/esm/dso-ozon-content.entry.js +48 -11
  71. package/dist/esm/dso-toggletip.entry.js +58 -0
  72. package/dist/esm/dso-toolkit.js +1 -1
  73. package/dist/esm/dso-tooltip.entry.js +33 -26
  74. package/dist/esm/dso-tree-view.entry.js +176 -0
  75. package/dist/esm/loader.js +1 -1
  76. package/dist/types/components/date-picker/date-picker.d.ts +20 -0
  77. package/dist/types/components/date-picker/date-picker.template.d.ts +1 -1
  78. package/dist/types/components/icon/icon.d.ts +1 -1
  79. package/dist/types/components/info-button/info-button.d.ts +1 -0
  80. package/dist/types/components/info-button/info-button.template.d.ts +1 -1
  81. package/dist/types/components/label/label.decorator.d.ts +3 -0
  82. package/dist/types/components/label/label.template.d.ts +1 -1
  83. package/dist/types/components/toggletip/toggletip.d.ts +17 -0
  84. package/dist/types/components/toggletip/toggletip.template.d.ts +2 -0
  85. package/dist/types/components/tooltip/tooltip.d.ts +6 -2
  86. package/dist/types/components/tree-view/tree-item.d.ts +13 -0
  87. package/dist/types/components/tree-view/tree-view.d.ts +36 -0
  88. package/dist/types/components/tree-view/tree-view.interfaces.d.ts +24 -0
  89. package/dist/types/components/tree-view/tree-view.template.d.ts +2 -0
  90. package/dist/types/components.d.ts +84 -3
  91. package/package.json +2 -1
  92. package/dist/dso-toolkit/p-112ed9ac.entry.js +0 -1
  93. package/dist/dso-toolkit/p-187782ee.entry.js +0 -1
  94. package/dist/dso-toolkit/p-2c6e9460.entry.js +0 -1
  95. package/dist/dso-toolkit/p-6fcc89f9.entry.js +0 -1
  96. package/dist/dso-toolkit/p-c5acf7e2.entry.js +0 -1
@@ -0,0 +1,239 @@
1
+ import { h, Component, Event, Prop } from '@stencil/core';
2
+ import { DsoTreeItem } from './tree-item';
3
+ export class TreeView {
4
+ constructor() {
5
+ this.keyDownListener = (event) => {
6
+ if (event.defaultPrevented) {
7
+ return;
8
+ }
9
+ const isIndexLetter = (str) => str.length === 1 && str.match(/\S/);
10
+ const tree = event.composedPath().find(item => (item instanceof HTMLElement) ? item.className === 'dso-tree' : false);
11
+ if (!(event.target instanceof HTMLParagraphElement) || !(tree instanceof HTMLElement)) {
12
+ return;
13
+ }
14
+ switch (event.key) {
15
+ case "ArrowDown":
16
+ TreeView.moveFocus(tree, event.target, 'next');
17
+ break;
18
+ case "ArrowUp":
19
+ TreeView.moveFocus(tree, event.target, 'previous');
20
+ break;
21
+ case "ArrowRight":
22
+ TreeView.expandItemOrFocusChild(tree, event.target);
23
+ break;
24
+ case "ArrowLeft":
25
+ TreeView.collapseItemOrFocusParent(tree, event.target);
26
+ break;
27
+ case "End":
28
+ TreeView.moveFocus(tree, event.target, 'last');
29
+ break;
30
+ case "Home":
31
+ TreeView.moveFocus(tree, event.target, 'first');
32
+ break;
33
+ case "Enter":
34
+ case " ":
35
+ event.target.click();
36
+ break;
37
+ default:
38
+ if (isIndexLetter(event.key)) {
39
+ if (TreeView.setFocusByFirstCharacter(tree, event.target, event.key, event.shiftKey)) {
40
+ break;
41
+ }
42
+ }
43
+ return;
44
+ }
45
+ event.preventDefault();
46
+ };
47
+ this.itemClick = (event, ancestors, item) => {
48
+ if (!(event.target instanceof HTMLElement)) {
49
+ return;
50
+ }
51
+ const contentElement = event.target.closest('.tree-content');
52
+ if (contentElement) {
53
+ const tree = event.composedPath().find(item => (item instanceof HTMLElement) ? item.className === 'dso-tree' : false);
54
+ if (!(contentElement instanceof HTMLParagraphElement) || !(tree instanceof HTMLElement)) {
55
+ return;
56
+ }
57
+ TreeView.setFocus(tree, contentElement);
58
+ this.clickItem.emit([...ancestors, item]);
59
+ return;
60
+ }
61
+ if (item.open) {
62
+ this.closeItem.emit([...ancestors, item]);
63
+ }
64
+ else {
65
+ this.openItem.emit([...ancestors, item]);
66
+ }
67
+ };
68
+ }
69
+ static setFocus(tree, target) {
70
+ if (target) {
71
+ Array.from(tree.querySelectorAll('p'))
72
+ .filter(item => item.tabIndex === 0)
73
+ .forEach(item => item.tabIndex = -1);
74
+ target.tabIndex = 0;
75
+ target.focus();
76
+ }
77
+ }
78
+ static moveFocus(tree, el, moveTo) {
79
+ const focusableItems = Array.from(tree.querySelectorAll('p'))
80
+ .filter(item => item.offsetWidth > 0 && item.offsetHeight > 0);
81
+ let index = 0;
82
+ switch (moveTo) {
83
+ case 'first':
84
+ index = 0;
85
+ break;
86
+ case 'previous':
87
+ index = focusableItems.indexOf(el) - 1;
88
+ break;
89
+ case 'next':
90
+ index = focusableItems.indexOf(el) + 1;
91
+ break;
92
+ case 'last':
93
+ index = focusableItems.length - 1;
94
+ break;
95
+ }
96
+ TreeView.setFocus(tree, focusableItems[index]);
97
+ }
98
+ static expandItemOrFocusChild(tree, target) {
99
+ var _a;
100
+ if ((target === null || target === void 0 ? void 0 : target.getAttribute('aria-expanded')) === 'true') {
101
+ TreeView.moveFocus(tree, target, 'next');
102
+ }
103
+ else {
104
+ const controlElement = (_a = target.previousElementSibling) === null || _a === void 0 ? void 0 : _a.firstElementChild;
105
+ if (controlElement instanceof HTMLElement) {
106
+ controlElement.click();
107
+ }
108
+ }
109
+ }
110
+ static collapseItemOrFocusParent(tree, target) {
111
+ var _a, _b, _c;
112
+ if ((target === null || target === void 0 ? void 0 : target.getAttribute('aria-expanded')) === 'true') {
113
+ const controlElement = (_a = target.previousElementSibling) === null || _a === void 0 ? void 0 : _a.firstElementChild;
114
+ if (controlElement instanceof HTMLElement) {
115
+ controlElement.click();
116
+ }
117
+ }
118
+ else {
119
+ const parentTarget = (_c = (_b = target === null || target === void 0 ? void 0 : target.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement) === null || _c === void 0 ? void 0 : _c.previousElementSibling;
120
+ if (parentTarget instanceof HTMLElement) {
121
+ TreeView.setFocus(tree, parentTarget);
122
+ }
123
+ }
124
+ }
125
+ static setFocusByFirstCharacter(tree, el, char, backwards) {
126
+ const focusableItems = Array.from(tree.querySelectorAll('p'))
127
+ .filter(item => item.offsetWidth > 0 && item.offsetHeight > 0);
128
+ if (backwards) {
129
+ focusableItems.reverse();
130
+ }
131
+ const current = focusableItems.indexOf(el);
132
+ char = char.toLowerCase();
133
+ let nextItem = focusableItems.find((item, index) => { var _a; return index > current && ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase().startsWith(char)); });
134
+ if (!nextItem) {
135
+ nextItem = focusableItems.find((item, index) => { var _a; return index < current && ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase().startsWith(char)); });
136
+ }
137
+ if (nextItem) {
138
+ TreeView.setFocus(tree, nextItem);
139
+ return true;
140
+ }
141
+ return false;
142
+ }
143
+ render() {
144
+ var _a;
145
+ return (h("div", { id: "tree", class: "dso-tree", onKeyDown: (e) => this.keyDownListener(e) },
146
+ h("ul", { role: "tree", "aria-label": "Objectenboom" }, (_a = this.collection) === null || _a === void 0 ? void 0 : _a.map((item, index) => h(DsoTreeItem, { owner: this, ancestors: [], item: item, index: index, level: 1, setSize: this.collection.length })))));
147
+ }
148
+ static get is() { return "dso-tree-view"; }
149
+ static get encapsulation() { return "shadow"; }
150
+ static get originalStyleUrls() { return {
151
+ "$": ["./tree-view.scss"]
152
+ }; }
153
+ static get styleUrls() { return {
154
+ "$": ["tree-view.css"]
155
+ }; }
156
+ static get properties() { return {
157
+ "collection": {
158
+ "type": "unknown",
159
+ "mutable": false,
160
+ "complexType": {
161
+ "original": "TreeViewItem<string>[]",
162
+ "resolved": "TreeViewItem<string>[]",
163
+ "references": {
164
+ "TreeViewItem": {
165
+ "location": "import",
166
+ "path": "./tree-view.interfaces"
167
+ }
168
+ }
169
+ },
170
+ "required": true,
171
+ "optional": false,
172
+ "docs": {
173
+ "tags": [],
174
+ "text": "The collection of TreeViewItems"
175
+ }
176
+ }
177
+ }; }
178
+ static get events() { return [{
179
+ "method": "openItem",
180
+ "name": "openItem",
181
+ "bubbles": true,
182
+ "cancelable": true,
183
+ "composed": true,
184
+ "docs": {
185
+ "tags": [],
186
+ "text": "Emitted when a tree view item is opened.\nThe `detail` property of the `CustomEvent`\u00A0will contain the complete path of TreeViewItems from the\nroot to the item that is emitting the open event. The consumer of the event is responsible for updating\nthe TreeView's collection (usually set the open state on the last TreeViewItem in path)."
187
+ },
188
+ "complexType": {
189
+ "original": "TreeViewItem<string>[]",
190
+ "resolved": "TreeViewItem<string>[]",
191
+ "references": {
192
+ "TreeViewItem": {
193
+ "location": "import",
194
+ "path": "./tree-view.interfaces"
195
+ }
196
+ }
197
+ }
198
+ }, {
199
+ "method": "closeItem",
200
+ "name": "closeItem",
201
+ "bubbles": true,
202
+ "cancelable": true,
203
+ "composed": true,
204
+ "docs": {
205
+ "tags": [],
206
+ "text": "Emitted when a tree view item is closed.\nThe `detail` property of the `CustomEvent`\u00A0will contain the complete path of TreeViewItems from the\nroot to the item that is emitting the close event. The consumer of the event is responsible for updating\nthe TreeView's collection (usually set the closed state on the last TreeViewItem in path)."
207
+ },
208
+ "complexType": {
209
+ "original": "TreeViewItem<string>[]",
210
+ "resolved": "TreeViewItem<string>[]",
211
+ "references": {
212
+ "TreeViewItem": {
213
+ "location": "import",
214
+ "path": "./tree-view.interfaces"
215
+ }
216
+ }
217
+ }
218
+ }, {
219
+ "method": "clickItem",
220
+ "name": "clickItem",
221
+ "bubbles": true,
222
+ "cancelable": true,
223
+ "composed": true,
224
+ "docs": {
225
+ "tags": [],
226
+ "text": "Emitted when a tree view item is clicked.\nThe `detail` property of the `CustomEvent`\u00A0will contain the complete path of TreeViewItems from the\nroot to the item that is emitting the clicked event."
227
+ },
228
+ "complexType": {
229
+ "original": "TreeViewItem<string>[]",
230
+ "resolved": "TreeViewItem<string>[]",
231
+ "references": {
232
+ "TreeViewItem": {
233
+ "location": "import",
234
+ "path": "./tree-view.interfaces"
235
+ }
236
+ }
237
+ }
238
+ }]; }
239
+ }
@@ -0,0 +1,11 @@
1
+ import { html } from 'lit-html';
2
+ export function treeViewTemplate({ collection, onOpenItem, onCloseItem, onClickItem }) {
3
+ return html `
4
+ <dso-tree-view
5
+ .collection=${collection}
6
+ @openItem=${onOpenItem}
7
+ @closeItem=${onCloseItem}
8
+ @clickItem=${onClickItem}
9
+ ></dso-tree-view>
10
+ `;
11
+ }
@@ -116,12 +116,24 @@ export const DsoSelectable: {
116
116
  new (): DsoSelectable;
117
117
  };
118
118
 
119
+ interface DsoToggletip extends Components.DsoToggletip, HTMLElement {}
120
+ export const DsoToggletip: {
121
+ prototype: DsoToggletip;
122
+ new (): DsoToggletip;
123
+ };
124
+
119
125
  interface DsoTooltip extends Components.DsoTooltip, HTMLElement {}
120
126
  export const DsoTooltip: {
121
127
  prototype: DsoTooltip;
122
128
  new (): DsoTooltip;
123
129
  };
124
130
 
131
+ interface DsoTreeView extends Components.DsoTreeView, HTMLElement {}
132
+ export const DsoTreeView: {
133
+ prototype: DsoTreeView;
134
+ new (): DsoTreeView;
135
+ };
136
+
125
137
  /**
126
138
  * Utility to define all custom elements within this package using the tag name provided in the component's source.
127
139
  * When defining each custom element, it will also check it's safe to define by: