@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.
- package/dist/cjs/dso-alert.cjs.entry.js +1 -1
- package/dist/cjs/dso-autosuggest.cjs.entry.js +15 -4
- package/dist/cjs/dso-banner.cjs.entry.js +1 -1
- package/dist/cjs/dso-date-picker.cjs.entry.js +56 -16
- package/dist/cjs/dso-icon.cjs.entry.js +6 -4
- package/dist/cjs/dso-info-button.cjs.entry.js +26 -0
- package/dist/cjs/{dso-info_3.cjs.entry.js → dso-info_2.cjs.entry.js} +0 -20
- package/dist/cjs/dso-label.cjs.entry.js +1 -1
- package/dist/cjs/dso-ozon-content.cjs.entry.js +26 -13
- package/dist/cjs/dso-toggletip.cjs.entry.js +62 -0
- package/dist/cjs/dso-toolkit.cjs.js +1 -1
- package/dist/cjs/dso-tooltip.cjs.entry.js +33 -26
- package/dist/cjs/dso-tree-view.cjs.entry.js +180 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +3 -1
- package/dist/collection/components/alert/alert.css +2 -0
- package/dist/collection/components/autosuggest/autosuggest.css +1 -0
- package/dist/collection/components/autosuggest/autosuggest.js +3 -3
- package/dist/collection/components/banner/banner.css +2 -0
- package/dist/collection/components/date-picker/date-localization.js +1 -1
- package/dist/collection/components/date-picker/date-picker.js +108 -14
- package/dist/collection/components/date-picker/date-picker.template.js +2 -1
- package/dist/collection/components/date-picker/date-utils.js +3 -3
- package/dist/collection/components/icon/icon.js +9 -7
- package/dist/collection/components/info-button/info-button.css +10 -3
- package/dist/collection/components/info-button/info-button.js +18 -1
- package/dist/collection/components/info-button/info-button.template.js +2 -1
- package/dist/collection/components/label/label.decorator.js +6 -0
- package/dist/collection/components/label/label.js +1 -0
- package/dist/collection/components/label/label.template.js +10 -2
- package/dist/collection/components/ozon-content/ozon-content.transformer.js +26 -13
- package/dist/collection/components/toggletip/toggletip.css +8 -0
- package/dist/collection/components/toggletip/toggletip.js +137 -0
- package/dist/collection/components/toggletip/toggletip.template.js +12 -0
- package/dist/collection/components/tooltip/tooltip.css +1 -1
- package/dist/collection/components/tooltip/tooltip.js +49 -25
- package/dist/collection/components/tree-view/tree-item.js +20 -0
- package/dist/collection/components/tree-view/tree-view.css +43 -0
- package/dist/collection/components/tree-view/tree-view.interfaces.js +1 -0
- package/dist/collection/components/tree-view/tree-view.js +239 -0
- package/dist/collection/components/tree-view/tree-view.template.js +11 -0
- package/dist/custom-elements/index.d.ts +12 -0
- package/dist/custom-elements/index.js +381 -73
- package/dist/dso-toolkit/dso-toolkit.css +1 -1
- package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
- package/dist/dso-toolkit/{p-968d9e1d.entry.js → p-19de4cc7.entry.js} +1 -1
- package/dist/dso-toolkit/p-39dae284.entry.js +1 -0
- package/dist/dso-toolkit/p-5665f1ee.entry.js +1 -0
- package/dist/dso-toolkit/{p-eadba8c3.entry.js → p-5a67f3f7.entry.js} +1 -1
- package/dist/dso-toolkit/p-759920d0.entry.js +1 -0
- package/dist/dso-toolkit/{p-d748df48.entry.js → p-83f166b3.entry.js} +1 -1
- package/dist/dso-toolkit/p-9735f393.entry.js +1 -0
- package/dist/dso-toolkit/p-9e9f8bcf.entry.js +1 -0
- package/dist/dso-toolkit/p-a8a0e909.entry.js +1 -0
- package/dist/dso-toolkit/p-ad8f467f.entry.js +1 -0
- package/dist/dso-toolkit/p-e2dc97c4.entry.js +1 -0
- package/dist/dso-toolkit/p-faf19a1d.entry.js +1 -0
- package/dist/esm/dso-alert.entry.js +1 -1
- package/dist/esm/dso-autosuggest.entry.js +15 -4
- package/dist/esm/dso-banner.entry.js +1 -1
- package/dist/esm/dso-date-picker.entry.js +56 -16
- package/dist/esm/dso-icon.entry.js +6 -4
- package/dist/esm/dso-info-button.entry.js +22 -0
- package/dist/esm/{dso-info_3.entry.js → dso-info_2.entry.js} +1 -20
- package/dist/esm/dso-label.entry.js +1 -1
- package/dist/esm/dso-ozon-content.entry.js +26 -13
- package/dist/esm/dso-toggletip.entry.js +58 -0
- package/dist/esm/dso-toolkit.js +1 -1
- package/dist/esm/dso-tooltip.entry.js +33 -26
- package/dist/esm/dso-tree-view.entry.js +176 -0
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/date-picker/date-picker.d.ts +20 -0
- package/dist/types/components/date-picker/date-picker.template.d.ts +1 -1
- package/dist/types/components/icon/icon.d.ts +1 -1
- package/dist/types/components/info-button/info-button.d.ts +1 -0
- package/dist/types/components/info-button/info-button.template.d.ts +1 -1
- package/dist/types/components/label/label.decorator.d.ts +3 -0
- package/dist/types/components/label/label.template.d.ts +1 -1
- package/dist/types/components/toggletip/toggletip.d.ts +17 -0
- package/dist/types/components/toggletip/toggletip.template.d.ts +2 -0
- package/dist/types/components/tooltip/tooltip.d.ts +6 -2
- package/dist/types/components/tree-view/tree-item.d.ts +13 -0
- package/dist/types/components/tree-view/tree-view.d.ts +36 -0
- package/dist/types/components/tree-view/tree-view.interfaces.d.ts +24 -0
- package/dist/types/components/tree-view/tree-view.template.d.ts +2 -0
- package/dist/types/components.d.ts +84 -3
- package/package.json +2 -1
- package/dist/dso-toolkit/p-2c6e9460.entry.js +0 -1
- package/dist/dso-toolkit/p-43772cee.entry.js +0 -1
- package/dist/dso-toolkit/p-94500196.entry.js +0 -1
- package/dist/dso-toolkit/p-9abac5e7.entry.js +0 -1
- package/dist/dso-toolkit/p-a2357726.entry.js +0 -1
- 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
|
-
|
|
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
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
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 &&
|
|
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
|
|
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 };
|
package/dist/esm/loader.js
CHANGED
|
@@ -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":[
|
|
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,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>;
|
|
@@ -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
|
+
}
|
|
@@ -16,8 +16,12 @@ export declare class Tooltip {
|
|
|
16
16
|
*/
|
|
17
17
|
noArrow: boolean;
|
|
18
18
|
/**
|
|
19
|
-
|
|
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
|
+
}
|