@dso-toolkit/core 30.0.0 → 31.1.1

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 (93) hide show
  1. package/dist/cjs/dso-alert.cjs.entry.js +1 -1
  2. package/dist/cjs/dso-autosuggest.cjs.entry.js +15 -4
  3. package/dist/cjs/dso-banner.cjs.entry.js +1 -1
  4. package/dist/cjs/dso-date-picker.cjs.entry.js +56 -16
  5. package/dist/cjs/dso-icon.cjs.entry.js +6 -4
  6. package/dist/cjs/dso-info-button.cjs.entry.js +26 -0
  7. package/dist/cjs/{dso-info_3.cjs.entry.js → dso-info_2.cjs.entry.js} +0 -20
  8. package/dist/cjs/dso-label.cjs.entry.js +1 -1
  9. package/dist/cjs/dso-ozon-content.cjs.entry.js +26 -13
  10. package/dist/cjs/dso-toggletip.cjs.entry.js +62 -0
  11. package/dist/cjs/dso-toolkit.cjs.js +1 -1
  12. package/dist/cjs/dso-tooltip.cjs.entry.js +33 -26
  13. package/dist/cjs/dso-tree-view.cjs.entry.js +180 -0
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/collection/collection-manifest.json +3 -1
  16. package/dist/collection/components/alert/alert.css +2 -0
  17. package/dist/collection/components/autosuggest/autosuggest.css +1 -0
  18. package/dist/collection/components/autosuggest/autosuggest.js +3 -3
  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.js +108 -14
  22. package/dist/collection/components/date-picker/date-picker.template.js +2 -1
  23. package/dist/collection/components/date-picker/date-utils.js +3 -3
  24. package/dist/collection/components/icon/icon.js +9 -7
  25. package/dist/collection/components/info-button/info-button.css +10 -3
  26. package/dist/collection/components/info-button/info-button.js +18 -1
  27. package/dist/collection/components/info-button/info-button.template.js +2 -1
  28. package/dist/collection/components/label/label.decorator.js +6 -0
  29. package/dist/collection/components/label/label.js +1 -0
  30. package/dist/collection/components/label/label.template.js +10 -2
  31. package/dist/collection/components/ozon-content/ozon-content.transformer.js +26 -13
  32. package/dist/collection/components/toggletip/toggletip.css +8 -0
  33. package/dist/collection/components/toggletip/toggletip.js +137 -0
  34. package/dist/collection/components/toggletip/toggletip.template.js +12 -0
  35. package/dist/collection/components/tooltip/tooltip.css +1 -1
  36. package/dist/collection/components/tooltip/tooltip.js +49 -25
  37. package/dist/collection/components/tree-view/tree-item.js +20 -0
  38. package/dist/collection/components/tree-view/tree-view.css +43 -0
  39. package/dist/collection/components/tree-view/tree-view.interfaces.js +1 -0
  40. package/dist/collection/components/tree-view/tree-view.js +239 -0
  41. package/dist/collection/components/tree-view/tree-view.template.js +11 -0
  42. package/dist/custom-elements/index.d.ts +12 -0
  43. package/dist/custom-elements/index.js +381 -73
  44. package/dist/dso-toolkit/dso-toolkit.css +1 -1
  45. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  46. package/dist/dso-toolkit/{p-968d9e1d.entry.js → p-19de4cc7.entry.js} +1 -1
  47. package/dist/dso-toolkit/p-39dae284.entry.js +1 -0
  48. package/dist/dso-toolkit/p-5665f1ee.entry.js +1 -0
  49. package/dist/dso-toolkit/{p-eadba8c3.entry.js → p-5a67f3f7.entry.js} +1 -1
  50. package/dist/dso-toolkit/p-759920d0.entry.js +1 -0
  51. package/dist/dso-toolkit/{p-d748df48.entry.js → p-83f166b3.entry.js} +1 -1
  52. package/dist/dso-toolkit/p-9735f393.entry.js +1 -0
  53. package/dist/dso-toolkit/p-9e9f8bcf.entry.js +1 -0
  54. package/dist/dso-toolkit/p-a8a0e909.entry.js +1 -0
  55. package/dist/dso-toolkit/p-ad8f467f.entry.js +1 -0
  56. package/dist/dso-toolkit/p-e2dc97c4.entry.js +1 -0
  57. package/dist/dso-toolkit/p-faf19a1d.entry.js +1 -0
  58. package/dist/esm/dso-alert.entry.js +1 -1
  59. package/dist/esm/dso-autosuggest.entry.js +15 -4
  60. package/dist/esm/dso-banner.entry.js +1 -1
  61. package/dist/esm/dso-date-picker.entry.js +56 -16
  62. package/dist/esm/dso-icon.entry.js +6 -4
  63. package/dist/esm/dso-info-button.entry.js +22 -0
  64. package/dist/esm/{dso-info_3.entry.js → dso-info_2.entry.js} +1 -20
  65. package/dist/esm/dso-label.entry.js +1 -1
  66. package/dist/esm/dso-ozon-content.entry.js +26 -13
  67. package/dist/esm/dso-toggletip.entry.js +58 -0
  68. package/dist/esm/dso-toolkit.js +1 -1
  69. package/dist/esm/dso-tooltip.entry.js +33 -26
  70. package/dist/esm/dso-tree-view.entry.js +176 -0
  71. package/dist/esm/loader.js +1 -1
  72. package/dist/types/components/date-picker/date-picker.d.ts +20 -0
  73. package/dist/types/components/date-picker/date-picker.template.d.ts +1 -1
  74. package/dist/types/components/icon/icon.d.ts +1 -1
  75. package/dist/types/components/info-button/info-button.d.ts +1 -0
  76. package/dist/types/components/info-button/info-button.template.d.ts +1 -1
  77. package/dist/types/components/label/label.decorator.d.ts +3 -0
  78. package/dist/types/components/label/label.template.d.ts +1 -1
  79. package/dist/types/components/toggletip/toggletip.d.ts +17 -0
  80. package/dist/types/components/toggletip/toggletip.template.d.ts +2 -0
  81. package/dist/types/components/tooltip/tooltip.d.ts +6 -2
  82. package/dist/types/components/tree-view/tree-item.d.ts +13 -0
  83. package/dist/types/components/tree-view/tree-view.d.ts +36 -0
  84. package/dist/types/components/tree-view/tree-view.interfaces.d.ts +24 -0
  85. package/dist/types/components/tree-view/tree-view.template.d.ts +2 -0
  86. package/dist/types/components.d.ts +84 -3
  87. package/package.json +2 -1
  88. package/dist/dso-toolkit/p-2c6e9460.entry.js +0 -1
  89. package/dist/dso-toolkit/p-43772cee.entry.js +0 -1
  90. package/dist/dso-toolkit/p-94500196.entry.js +0 -1
  91. package/dist/dso-toolkit/p-9abac5e7.entry.js +0 -1
  92. package/dist/dso-toolkit/p-a2357726.entry.js +0 -1
  93. package/dist/dso-toolkit/p-c5acf7e2.entry.js +0 -1
@@ -1739,7 +1739,7 @@ var createPopper = /*#__PURE__*/popperGenerator({
1739
1739
  defaultModifiers: defaultModifiers
1740
1740
  }); // eslint-disable-next-line import/no-unused-modules
1741
1741
 
1742
- const tooltipCss = ":host(:not([hidden])){display:block}*,*::after,*::before{box-sizing:border-box}.tooltip{font-family:Asap, sans-serif;font-style:normal;font-weight:400;line-height:1.5;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;display:block;filter:drop-shadow(0 2px 8px rgba(0, 0, 0, 0.4));font-size:14px;opacity:0;position:absolute;transition:opacity 0.15s linear;z-index:1070}.tooltip.in{opacity:0.9}.tooltip .tooltip-inner{background-color:#fff;border-radius:4px;color:#191919;display:inline-block;font-size:16px;max-width:640px;padding:8px 16px;position:relative}.tooltip .tooltip-inner.dso-small{max-width:320px}.tooltip .tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.tooltip[data-popper-placement=top]{margin-top:-3px;padding:6px 0}.tooltip[data-popper-placement=top] .tooltip-arrow{border-top-color:#fff;border-width:6px 6px 0;bottom:0;left:50%;margin-left:-6px}.tooltip[data-popper-placement=right]{margin-left:3px;padding:0 6px}.tooltip[data-popper-placement=right] .tooltip-arrow{border-right-color:#fff;border-width:6px 6px 6px 0;left:0;margin-top:-6px;top:50%}.tooltip[data-popper-placement=bottom]{margin-top:3px;padding:6px 0}.tooltip[data-popper-placement=bottom] .tooltip-arrow{border-bottom-color:#fff;border-width:0 6px 6px;left:50%;margin-left:-6px;top:0}.tooltip[data-popper-placement=left]{margin-left:-3px;padding:0 6px}.tooltip[data-popper-placement=left] .tooltip-arrow{border-left-color:#fff;border-width:6px 0 6px 6px;margin-top:-6px;right:0;top:50%}";
1742
+ const tooltipCss = ":host(:not([hidden])){display:inline-block}*,*::after,*::before{box-sizing:border-box}.tooltip{font-family:Asap, sans-serif;font-style:normal;font-weight:400;line-height:1.5;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;display:block;filter:drop-shadow(0 2px 8px rgba(0, 0, 0, 0.4));font-size:14px;opacity:0;position:absolute;transition:opacity 0.15s linear;z-index:1070}.tooltip.in{opacity:0.9}.tooltip .tooltip-inner{background-color:#fff;border-radius:4px;color:#191919;display:inline-block;font-size:16px;max-width:640px;padding:8px 16px;position:relative}.tooltip .tooltip-inner.dso-small{max-width:320px}.tooltip .tooltip-arrow{border-color:transparent;border-style:solid;height:0;position:absolute;width:0}.tooltip[data-popper-placement=top]{margin-top:-3px;padding:6px 0}.tooltip[data-popper-placement=top] .tooltip-arrow{border-top-color:#fff;border-width:6px 6px 0;bottom:0;left:50%;margin-left:-6px}.tooltip[data-popper-placement=right]{margin-left:3px;padding:0 6px}.tooltip[data-popper-placement=right] .tooltip-arrow{border-right-color:#fff;border-width:6px 6px 6px 0;left:0;margin-top:-6px;top:50%}.tooltip[data-popper-placement=bottom]{margin-top:3px;padding:6px 0}.tooltip[data-popper-placement=bottom] .tooltip-arrow{border-bottom-color:#fff;border-width:0 6px 6px;left:50%;margin-left:-6px;top:0}.tooltip[data-popper-placement=left]{margin-left:-3px;padding:0 6px}.tooltip[data-popper-placement=left] .tooltip-arrow{border-left-color:#fff;border-width:6px 0 6px 6px;margin-top:-6px;right:0;top:50%}";
1743
1743
 
1744
1744
  // Keep const in sync with $tooltip-transition-duration in @dso-toolkit/sources/tooltip.scss tooltip_root() mixin
1745
1745
  const transitionDuration = 150;
@@ -1781,8 +1781,25 @@ let Tooltip = class {
1781
1781
  });
1782
1782
  }
1783
1783
  watchActive() {
1784
+ var _a;
1784
1785
  if (this.active) {
1785
1786
  this.hidden = false;
1787
+ if (!this.stateless) {
1788
+ setTimeout(() => {
1789
+ var _a;
1790
+ (_a = this.popper) === null || _a === void 0 ? void 0 : _a.setOptions({
1791
+ modifiers: [{ name: 'eventListeners', enabled: true }]
1792
+ });
1793
+ });
1794
+ }
1795
+ }
1796
+ else {
1797
+ if (!this.stateless) {
1798
+ (_a = this.popper) === null || _a === void 0 ? void 0 : _a.setOptions({
1799
+ modifiers: [{ name: 'eventListeners', enabled: false }]
1800
+ });
1801
+ }
1802
+ setTimeout(() => (this.hidden = true), transitionDuration);
1786
1803
  }
1787
1804
  }
1788
1805
  listenClick(e) {
@@ -1802,34 +1819,20 @@ let Tooltip = class {
1802
1819
  placement: this.position
1803
1820
  });
1804
1821
  this.callbacks = {
1805
- activate: () => {
1806
- this.hidden = false;
1807
- setTimeout(() => {
1808
- var _a;
1809
- this.active = true;
1810
- (_a = this.popper) === null || _a === void 0 ? void 0 : _a.setOptions({
1811
- modifiers: [{ name: 'eventListeners', enabled: true }]
1812
- });
1813
- });
1814
- },
1815
- deactivate: () => {
1816
- var _a;
1817
- this.active = false;
1818
- (_a = this.popper) === null || _a === void 0 ? void 0 : _a.setOptions({
1819
- modifiers: [{ name: 'eventListeners', enabled: false }]
1820
- });
1821
- setTimeout(() => this.hidden = true, transitionDuration);
1822
- }
1822
+ activate: () => (this.active = true),
1823
+ deactivate: () => (this.active = false)
1823
1824
  };
1824
- this.target.addEventListener('mouseenter', this.callbacks.activate);
1825
- this.target.addEventListener('mouseleave', this.callbacks.deactivate);
1826
- this.target.addEventListener('focus', this.callbacks.activate);
1827
- this.target.addEventListener('blur', this.callbacks.deactivate);
1825
+ if (!this.stateless) {
1826
+ this.target.addEventListener('mouseenter', this.callbacks.activate);
1827
+ this.target.addEventListener('mouseleave', this.callbacks.deactivate);
1828
+ this.target.addEventListener('focus', this.callbacks.activate);
1829
+ this.target.addEventListener('blur', this.callbacks.deactivate);
1830
+ }
1828
1831
  }
1829
1832
  disconnectedCallback() {
1830
1833
  var _a;
1831
1834
  (_a = this.popper) === null || _a === void 0 ? void 0 : _a.destroy();
1832
- if (this.target && this.callbacks) {
1835
+ if (!this.stateless && this.target && this.callbacks) {
1833
1836
  this.target.removeEventListener('mouseenter', this.callbacks.activate);
1834
1837
  this.target.removeEventListener('mouseleave', this.callbacks.deactivate);
1835
1838
  this.target.removeEventListener('focus', this.callbacks.activate);
@@ -1845,14 +1848,18 @@ let Tooltip = class {
1845
1848
  }
1846
1849
  }
1847
1850
  render() {
1848
- return (h(Host, { hidden: this.hidden }, h("div", { class: clsx('tooltip', { in: this.active }), role: "tooltip" }, !this.noArrow && (h("div", { class: "tooltip-arrow" })), h("div", { class: clsx('tooltip-inner', { 'dso-small': this.small }) }, h("slot", null)))));
1851
+ return (h(Host, { hidden: this.hidden }, h("div", { class: clsx('tooltip', { in: this.active }), role: "tooltip" }, !this.noArrow && h("div", { class: "tooltip-arrow" }), h("div", { class: clsx('tooltip-inner', { 'dso-small': this.small }) }, h("slot", null)))));
1849
1852
  }
1850
1853
  getTarget() {
1851
1854
  if (this.for instanceof HTMLElement) {
1852
1855
  return this.for;
1853
1856
  }
1854
1857
  if (typeof this.for === 'string') {
1855
- const reference = document.getElementById(this.for);
1858
+ const rootNode = this.element.getRootNode();
1859
+ if (!(rootNode instanceof Document || rootNode instanceof ShadowRoot)) {
1860
+ throw new Error(`rootNode is not instance of Document or ShadowRoot`);
1861
+ }
1862
+ const reference = rootNode.getElementById(this.for);
1856
1863
  if (!reference) {
1857
1864
  throw new Error(`Unable to find reference with id ${this.for}`);
1858
1865
  }
@@ -0,0 +1,176 @@
1
+ import { h, F as Fragment, r as registerInstance, c as createEvent } from './index-61410be2.js';
2
+ import { c as clsx } from './clsx.m-071989db.js';
3
+
4
+ const DsoTreeItem = ({ owner, ancestors, item, index, level, setSize }) => {
5
+ var _a, _b, _c;
6
+ return (h("li", { key: item.reference, class: clsx('tree-item', { 'has-child': item.hasItems }), role: 'none' },
7
+ h("div", { class: "tree-branch-control" }, item.hasItems
8
+ ?
9
+ h("div", { onClick: (e) => owner.itemClick(e, ancestors, item) },
10
+ h("dso-icon", { icon: item.open ? 'chevron-down' : 'chevron-right' }))
11
+ : h("dso-icon", null)),
12
+ h("p", { class: "tree-content", tabindex: level === 1 && index === 0 ? 0 : -1, role: "treeitem", "aria-expanded": item.hasItems ? '' + (!!item.open && !!((_a = item.items) === null || _a === void 0 ? void 0 : _a.length)) : undefined, "aria-level": level, "aria-setsize": setSize, "aria-posinset": index + 1, "aria-busy": item.loading ? 'true' : undefined, onClick: (e) => owner.itemClick(e, ancestors, item) },
13
+ item.href
14
+ ? h("a", { href: item.href, tabindex: "-1" }, item.label)
15
+ : h("span", null, item.label), (_b = item.icons) === null || _b === void 0 ? void 0 :
16
+ _b.map((icon) => h("dso-icon", { icon: icon.icon, title: icon.label }))),
17
+ item.open &&
18
+ h(Fragment, null, item.hasItems && !item.items && item.loading
19
+ ? h("dso-progress-indicator", { size: "small", label: "Resultaten laden: een moment geduld alstublieft." })
20
+ : h("ul", { role: "group" }, (_c = item.items) === null || _c === void 0 ? void 0 : _c.map((childItem, index, org) => h(DsoTreeItem, { owner: owner, ancestors: [...ancestors, item], item: childItem, index: index, level: level + 1, setSize: org.length }))))));
21
+ };
22
+
23
+ const treeViewCss = ":host ul{list-style-type:none}:host ul[role=tree]{padding-left:0}:host li[role=treeitem]>ul{padding-left:1.5em}:host .tree-branch-control{cursor:pointer;display:inline-block}:host .tree-content{cursor:pointer;display:inline-block;margin:8px 0}:host .tree-content a,:host .tree-content a:visited{color:#39870c;text-decoration:none}:host .tree-content a:hover,:host .tree-content a:focus{color:#676cb0;text-decoration:underline}:host .tree-content a:active{text-decoration:none}:host .tree-content dso-icon{vertical-align:text-bottom;font-size:0.75em;margin-left:0.5em}*,*::after,*::before{box-sizing:border-box}";
24
+
25
+ let TreeView = class {
26
+ constructor(hostRef) {
27
+ registerInstance(this, hostRef);
28
+ this.openItem = createEvent(this, "openItem", 7);
29
+ this.closeItem = createEvent(this, "closeItem", 7);
30
+ this.clickItem = createEvent(this, "clickItem", 7);
31
+ this.keyDownListener = (event) => {
32
+ if (event.defaultPrevented) {
33
+ return;
34
+ }
35
+ const isIndexLetter = (str) => str.length === 1 && str.match(/\S/);
36
+ const tree = event.composedPath().find(item => (item instanceof HTMLElement) ? item.className === 'dso-tree' : false);
37
+ if (!(event.target instanceof HTMLParagraphElement) || !(tree instanceof HTMLElement)) {
38
+ return;
39
+ }
40
+ switch (event.key) {
41
+ case "ArrowDown":
42
+ TreeView.moveFocus(tree, event.target, 'next');
43
+ break;
44
+ case "ArrowUp":
45
+ TreeView.moveFocus(tree, event.target, 'previous');
46
+ break;
47
+ case "ArrowRight":
48
+ TreeView.expandItemOrFocusChild(tree, event.target);
49
+ break;
50
+ case "ArrowLeft":
51
+ TreeView.collapseItemOrFocusParent(tree, event.target);
52
+ break;
53
+ case "End":
54
+ TreeView.moveFocus(tree, event.target, 'last');
55
+ break;
56
+ case "Home":
57
+ TreeView.moveFocus(tree, event.target, 'first');
58
+ break;
59
+ case "Enter":
60
+ case " ":
61
+ event.target.click();
62
+ break;
63
+ default:
64
+ if (isIndexLetter(event.key)) {
65
+ if (TreeView.setFocusByFirstCharacter(tree, event.target, event.key, event.shiftKey)) {
66
+ break;
67
+ }
68
+ }
69
+ return;
70
+ }
71
+ event.preventDefault();
72
+ };
73
+ this.itemClick = (event, ancestors, item) => {
74
+ if (!(event.target instanceof HTMLElement)) {
75
+ return;
76
+ }
77
+ const contentElement = event.target.closest('.tree-content');
78
+ if (contentElement) {
79
+ const tree = event.composedPath().find(item => (item instanceof HTMLElement) ? item.className === 'dso-tree' : false);
80
+ if (!(contentElement instanceof HTMLParagraphElement) || !(tree instanceof HTMLElement)) {
81
+ return;
82
+ }
83
+ TreeView.setFocus(tree, contentElement);
84
+ this.clickItem.emit([...ancestors, item]);
85
+ return;
86
+ }
87
+ if (item.open) {
88
+ this.closeItem.emit([...ancestors, item]);
89
+ }
90
+ else {
91
+ this.openItem.emit([...ancestors, item]);
92
+ }
93
+ };
94
+ }
95
+ static setFocus(tree, target) {
96
+ if (target) {
97
+ Array.from(tree.querySelectorAll('p'))
98
+ .filter(item => item.tabIndex === 0)
99
+ .forEach(item => item.tabIndex = -1);
100
+ target.tabIndex = 0;
101
+ target.focus();
102
+ }
103
+ }
104
+ static moveFocus(tree, el, moveTo) {
105
+ const focusableItems = Array.from(tree.querySelectorAll('p'))
106
+ .filter(item => item.offsetWidth > 0 && item.offsetHeight > 0);
107
+ let index = 0;
108
+ switch (moveTo) {
109
+ case 'first':
110
+ index = 0;
111
+ break;
112
+ case 'previous':
113
+ index = focusableItems.indexOf(el) - 1;
114
+ break;
115
+ case 'next':
116
+ index = focusableItems.indexOf(el) + 1;
117
+ break;
118
+ case 'last':
119
+ index = focusableItems.length - 1;
120
+ break;
121
+ }
122
+ TreeView.setFocus(tree, focusableItems[index]);
123
+ }
124
+ static expandItemOrFocusChild(tree, target) {
125
+ var _a;
126
+ if ((target === null || target === void 0 ? void 0 : target.getAttribute('aria-expanded')) === 'true') {
127
+ TreeView.moveFocus(tree, target, 'next');
128
+ }
129
+ else {
130
+ const controlElement = (_a = target.previousElementSibling) === null || _a === void 0 ? void 0 : _a.firstElementChild;
131
+ if (controlElement instanceof HTMLElement) {
132
+ controlElement.click();
133
+ }
134
+ }
135
+ }
136
+ static collapseItemOrFocusParent(tree, target) {
137
+ var _a, _b, _c;
138
+ if ((target === null || target === void 0 ? void 0 : target.getAttribute('aria-expanded')) === 'true') {
139
+ const controlElement = (_a = target.previousElementSibling) === null || _a === void 0 ? void 0 : _a.firstElementChild;
140
+ if (controlElement instanceof HTMLElement) {
141
+ controlElement.click();
142
+ }
143
+ }
144
+ else {
145
+ 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;
146
+ if (parentTarget instanceof HTMLElement) {
147
+ TreeView.setFocus(tree, parentTarget);
148
+ }
149
+ }
150
+ }
151
+ static setFocusByFirstCharacter(tree, el, char, backwards) {
152
+ const focusableItems = Array.from(tree.querySelectorAll('p'))
153
+ .filter(item => item.offsetWidth > 0 && item.offsetHeight > 0);
154
+ if (backwards) {
155
+ focusableItems.reverse();
156
+ }
157
+ const current = focusableItems.indexOf(el);
158
+ char = char.toLowerCase();
159
+ let nextItem = focusableItems.find((item, index) => { var _a; return index > current && ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase().startsWith(char)); });
160
+ if (!nextItem) {
161
+ nextItem = focusableItems.find((item, index) => { var _a; return index < current && ((_a = item.textContent) === null || _a === void 0 ? void 0 : _a.toLowerCase().startsWith(char)); });
162
+ }
163
+ if (nextItem) {
164
+ TreeView.setFocus(tree, nextItem);
165
+ return true;
166
+ }
167
+ return false;
168
+ }
169
+ render() {
170
+ var _a;
171
+ return (h("div", { id: "tree", class: "dso-tree", onKeyDown: (e) => this.keyDownListener(e) }, 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 })))));
172
+ }
173
+ };
174
+ TreeView.style = treeViewCss;
175
+
176
+ export { TreeView as dso_tree_view };
@@ -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],"selectedBaseLayer":[1040]}]]],["dso-map-overlays",[[1,"dso-map-overlays",{"overlays":[16],"checkedOverlays":[1040]}]]],["dso-date-picker",[[1,"dso-date-picker",{"name":[1],"identifier":[1],"disabled":[516],"role":[1],"direction":[1],"required":[4],"value":[513],"min":[1],"max":[1],"activeFocus":[32],"focusedDay":[32],"open":[32],"setFocus":[64],"show":[64],"hide":[64]},[[6,"click","handleDocumentClick"]]]]],["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-dropdown-menu",[[1,"dso-dropdown-menu",{"open":[1540],"dropdownAlign":[1,"dropdown-align"],"checkable":[4]}]]],["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-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"],"small":[4],"active":[1540],"hidden":[32],"activate":[64],"deactivate":[64]},[[0,"click","listenClick"]]]]],["dso-icon",[[1,"dso-icon",{"icon":[1]}]]],["dso-info_3",[[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]}],[1,"dso-info-button",{"active":[1540],"label":[1]}]]]], options);
13
+ return bootstrapLazy([["dso-map-base-layers",[[1,"dso-map-base-layers",{"baseLayers":[16],"selectedBaseLayer":[1040]}]]],["dso-map-overlays",[[1,"dso-map-overlays",{"overlays":[16],"checkedOverlays":[1040]}]]],["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",[[1,"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-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-dropdown-menu",[[1,"dso-dropdown-menu",{"open":[1540],"dropdownAlign":[1,"dropdown-align"],"checkable":[4]}]]],["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-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-icon",[[1,"dso-icon",{"icon":[1]}]]],["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]}]]]], options);
14
14
  });
15
15
  };
16
16
 
@@ -3,10 +3,15 @@ export declare type DsoDatePickerChangeEvent = {
3
3
  component: "dso-date-picker";
4
4
  valueAsDate: Date | undefined;
5
5
  value: string;
6
+ error?: "invalid" | "required";
6
7
  };
7
8
  export declare type DsoDatePickerFocusEvent = {
8
9
  component: "dso-date-picker";
9
10
  };
11
+ export declare type DsoDatePickerKeyboardEvent = {
12
+ component: "dso-date-picker";
13
+ originalEvent: KeyboardEvent;
14
+ };
10
15
  export declare type DsoDatePickerDirection = "left" | "right";
11
16
  export declare class DsoDatePicker implements ComponentInterface {
12
17
  /**
@@ -65,6 +70,10 @@ export declare class DsoDatePicker implements ComponentInterface {
65
70
  * Should the input be marked as required?
66
71
  */
67
72
  required: boolean;
73
+ /**
74
+ * Should the input be focused on load?
75
+ */
76
+ dsoAutofocus: boolean;
68
77
  /**
69
78
  * Date value. Must be in Dutch date format: DD-MM-YYYY.
70
79
  */
@@ -90,6 +99,14 @@ export declare class DsoDatePicker implements ComponentInterface {
90
99
  * Event emitted the date picker input is blurred.
91
100
  */
92
101
  dsoBlur: EventEmitter<DsoDatePickerFocusEvent>;
102
+ /**
103
+ * Event emitted on key up in the date picker input.
104
+ */
105
+ dsoKeyUp: EventEmitter<DsoDatePickerKeyboardEvent>;
106
+ /**
107
+ * Event emitted on key down in the date picker input.
108
+ */
109
+ dsoKeyDown: EventEmitter<DsoDatePickerKeyboardEvent>;
93
110
  /**
94
111
  * Event emitted the date picker input is focused.
95
112
  */
@@ -130,6 +147,8 @@ export declare class DsoDatePicker implements ComponentInterface {
130
147
  private toggleOpen;
131
148
  private handleEscKey;
132
149
  private handleBlur;
150
+ private handleKeyUp;
151
+ private handleKeyDown;
133
152
  private handleFocus;
134
153
  private handleTouchStart;
135
154
  private handleTouchMove;
@@ -144,6 +163,7 @@ export declare class DsoDatePicker implements ComponentInterface {
144
163
  private handleInputChange;
145
164
  private setValue;
146
165
  private processFocusedDayNode;
166
+ componentDidLoad(): void;
147
167
  /**
148
168
  * render() function
149
169
  * Always the last one in the class.
@@ -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 }: DatePicker): TemplateResult<1>;
3
+ export declare function datePickerTemplate({ id, onDateChange, value, min, max, disabled, autofocus }: 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>;
@@ -1,4 +1,4 @@
1
1
  export declare class Icon {
2
- icon: string;
2
+ icon?: string;
3
3
  render(): any;
4
4
  }
@@ -5,6 +5,7 @@ export interface InfoButtonToggleEvent {
5
5
  }
6
6
  export declare class InfoButton {
7
7
  active?: boolean;
8
+ secondary?: boolean;
8
9
  label: string;
9
10
  toggle: EventEmitter<InfoButtonToggleEvent>;
10
11
  private handleToggle;
@@ -1,2 +1,2 @@
1
1
  import { InfoButton } from '@dso-toolkit/sources';
2
- export declare function infoButtonTemplate({ label, active, onClick }: InfoButton): import("lit-html").TemplateResult<1>;
2
+ export declare function infoButtonTemplate({ label, active, secondary, onClick }: InfoButton): import("lit-html").TemplateResult<1>;
@@ -0,0 +1,3 @@
1
+ import { LabelParameters } from '@dso-toolkit/sources';
2
+ import { TemplateResult } from 'lit-html';
3
+ export declare const decorator: LabelParameters<TemplateResult>['decorator'];
@@ -1,2 +1,2 @@
1
1
  import { Label } from '@dso-toolkit/sources';
2
- export declare function labelTemplate({ status, label, button, compact }: Label): import("lit-html").TemplateResult<1>;
2
+ export declare function labelTemplate({ status, label, button, compact, symbol }: Label): import("lit-html").TemplateResult<1>;
@@ -0,0 +1,17 @@
1
+ export declare class Toggletip {
2
+ host: HTMLElement;
3
+ active: boolean;
4
+ label: string;
5
+ position: "top" | "right" | "bottom" | "left";
6
+ small?: boolean;
7
+ secondary?: boolean;
8
+ infoButton: HTMLDsoInfoButtonElement;
9
+ button: HTMLButtonElement;
10
+ componentDidRender(): void;
11
+ click: () => void;
12
+ open: () => void;
13
+ close: () => void;
14
+ focusOutListener: (event: FocusEvent) => void;
15
+ keyDownListener: (event: KeyboardEvent) => void;
16
+ render(): any;
17
+ }
@@ -0,0 +1,2 @@
1
+ import { Toggletip } from "@dso-toolkit/sources";
2
+ export declare function toggletipTemplate({ children, label, position, small, secondary, }: Toggletip): import("lit-html").TemplateResult<1>;
@@ -16,8 +16,12 @@ export declare class Tooltip {
16
16
  */
17
17
  noArrow: boolean;
18
18
  /**
19
- * Defines if the tooltip has a smaller max-width
20
- */
19
+ * Deactivates mouseover behaviour
20
+ */
21
+ stateless?: boolean;
22
+ /**
23
+ * Defines if the tooltip has a smaller max-width
24
+ */
21
25
  small?: boolean;
22
26
  /**
23
27
  * Whether or not to show the tooltip. To control the tooltip add the `active` attribute or use the `activate()` and `deactivate()` instance methods.
@@ -0,0 +1,13 @@
1
+ import { FunctionalComponent } from '../../stencil-public-runtime';
2
+ import { TreeViewItem } from '@dso-toolkit/sources';
3
+ import { TreeView } from './tree-view';
4
+ interface TreeViewItemProps<T> {
5
+ owner: TreeView;
6
+ ancestors: TreeViewItem<T>[];
7
+ item: TreeViewItem<T>;
8
+ index: number;
9
+ level: number;
10
+ setSize: number;
11
+ }
12
+ export declare const DsoTreeItem: FunctionalComponent<TreeViewItemProps<string>>;
13
+ export {};
@@ -0,0 +1,36 @@
1
+ import { ComponentInterface, Event, EventEmitter } from '../../stencil-public-runtime';
2
+ import { TreeViewItem } from './tree-view.interfaces';
3
+ export declare class TreeView implements ComponentInterface {
4
+ /**
5
+ * The collection of TreeViewItems
6
+ */
7
+ collection: TreeViewItem<string>[];
8
+ /**
9
+ * Emitted when a tree view item is opened.
10
+ * The `detail` property of the `CustomEvent` will contain the complete path of TreeViewItems from the
11
+ * root to the item that is emitting the open event. The consumer of the event is responsible for updating
12
+ * the TreeView's collection (usually set the open state on the last TreeViewItem in path).
13
+ */
14
+ openItem: EventEmitter<TreeViewItem<string>[]>;
15
+ /**
16
+ * Emitted when a tree view item is closed.
17
+ * The `detail` property of the `CustomEvent` will contain the complete path of TreeViewItems from the
18
+ * root to the item that is emitting the close event. The consumer of the event is responsible for updating
19
+ * the TreeView's collection (usually set the closed state on the last TreeViewItem in path).
20
+ */
21
+ closeItem: EventEmitter<TreeViewItem<string>[]>;
22
+ /**
23
+ * Emitted when a tree view item is clicked.
24
+ * The `detail` property of the `CustomEvent` will contain the complete path of TreeViewItems from the
25
+ * root to the item that is emitting the clicked event.
26
+ */
27
+ clickItem: EventEmitter<TreeViewItem<string>[]>;
28
+ keyDownListener: (event: KeyboardEvent) => void;
29
+ itemClick: (event: Event, ancestors: TreeViewItem<string>[], item: TreeViewItem<string>) => void;
30
+ private static setFocus;
31
+ private static moveFocus;
32
+ private static expandItemOrFocusChild;
33
+ private static collapseItemOrFocusParent;
34
+ private static setFocusByFirstCharacter;
35
+ render(): any;
36
+ }
@@ -0,0 +1,24 @@
1
+ export interface TreeViewItem<T> {
2
+ /** The reference of type T */
3
+ reference: T;
4
+ /** The label of the item */
5
+ label: string;
6
+ /** The optional href of the item (creates a link) */
7
+ href?: string;
8
+ /** Indicates whether the item has children */
9
+ hasItems: boolean;
10
+ /** The array of child items */
11
+ items?: TreeViewItem<T>[];
12
+ /** Indicates whether the node is open and child items are shown */
13
+ open?: boolean;
14
+ /** Indicates the node is loading child items */
15
+ loading?: boolean;
16
+ /** An optional array of icons */
17
+ icons?: TreeViewItemIcon[];
18
+ }
19
+ export interface TreeViewItemIcon {
20
+ /** The icon type */
21
+ icon: string;
22
+ /** The label for the icon */
23
+ label: string;
24
+ }
@@ -0,0 +1,2 @@
1
+ import { TreeView } from '@dso-toolkit/sources';
2
+ export declare function treeViewTemplate({ collection, onOpenItem, onCloseItem, onClickItem }: TreeView<string>): import("lit-html").TemplateResult<1>;