@dso-toolkit/core 62.12.1 → 62.14.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.
- package/dist/cjs/dso-advanced-select.cjs.entry.js +98 -0
- package/dist/cjs/dso-advanced-select.cjs.entry.js.map +1 -0
- package/dist/cjs/dso-alert_7.cjs.entry.js +1 -1
- package/dist/cjs/dso-alert_7.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-input-range.cjs.entry.js +39 -0
- package/dist/cjs/dso-input-range.cjs.entry.js.map +1 -0
- package/dist/cjs/dso-pagination.cjs.entry.js +1 -1
- package/dist/cjs/dso-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-scrollable.cjs.entry.js +1 -1
- package/dist/cjs/dso-scrollable.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-toggletip.cjs.entry.js.map +1 -1
- package/dist/cjs/dso-toolkit.cjs.js +1 -1
- package/dist/cjs/dso-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/advanced-select/advanced-select.css +206 -0
- package/dist/collection/components/advanced-select/advanced-select.js +220 -0
- package/dist/collection/components/advanced-select/advanced-select.js.map +1 -0
- package/dist/collection/components/advanced-select/advanced-select.models.js +2 -0
- package/dist/collection/components/advanced-select/advanced-select.models.js.map +1 -0
- package/dist/collection/components/input-range/input-range.css +74 -0
- package/dist/collection/components/input-range/input-range.interfaces.js +2 -0
- package/dist/collection/components/input-range/input-range.interfaces.js.map +1 -0
- package/dist/collection/components/input-range/input-range.js +186 -0
- package/dist/collection/components/input-range/input-range.js.map +1 -0
- package/dist/collection/components/pagination/pagination.css +3 -2
- package/dist/collection/components/scrollable/scrollable.css +1 -0
- package/dist/collection/components/table/table.css +1 -1
- package/dist/collection/components/toggletip/toggletip.js +9 -3
- package/dist/collection/components/toggletip/toggletip.js.map +1 -1
- package/dist/collection/components/tooltip/tooltip.js +9 -3
- package/dist/collection/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/dso-advanced-select.d.ts +11 -0
- package/dist/components/dso-advanced-select.js +129 -0
- package/dist/components/dso-advanced-select.js.map +1 -0
- package/dist/components/dso-input-range.d.ts +11 -0
- package/dist/components/dso-input-range.js +61 -0
- package/dist/components/dso-input-range.js.map +1 -0
- package/dist/components/dso-pagination.js +1 -1
- package/dist/components/dso-pagination.js.map +1 -1
- package/dist/components/dso-toggletip.js.map +1 -1
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/scrollable.js +1 -1
- package/dist/components/scrollable.js.map +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/table.js.map +1 -1
- package/dist/components/tooltip.js.map +1 -1
- package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
- package/dist/dso-toolkit/dso-toolkit.esm.js.map +1 -1
- package/dist/dso-toolkit/{p-2862c19a.entry.js → p-0ebbcbef.entry.js} +2 -2
- package/dist/dso-toolkit/{p-2862c19a.entry.js.map → p-0ebbcbef.entry.js.map} +1 -1
- package/dist/dso-toolkit/p-1a85e2f8.entry.js +2 -0
- package/dist/dso-toolkit/{p-6d602847.entry.js.map → p-1a85e2f8.entry.js.map} +1 -1
- package/dist/dso-toolkit/p-43511221.entry.js.map +1 -1
- package/dist/dso-toolkit/p-b0116121.entry.js.map +1 -1
- package/dist/dso-toolkit/p-e0f9a16f.entry.js +2 -0
- package/dist/dso-toolkit/p-e0f9a16f.entry.js.map +1 -0
- package/dist/dso-toolkit/p-e32f287e.entry.js +2 -0
- package/dist/dso-toolkit/p-e32f287e.entry.js.map +1 -0
- package/dist/dso-toolkit/p-f3facab4.entry.js +2 -0
- package/dist/dso-toolkit/p-f3facab4.entry.js.map +1 -0
- package/dist/esm/dso-advanced-select.entry.js +94 -0
- package/dist/esm/dso-advanced-select.entry.js.map +1 -0
- package/dist/esm/dso-alert_7.entry.js +1 -1
- package/dist/esm/dso-alert_7.entry.js.map +1 -1
- package/dist/esm/dso-input-range.entry.js +35 -0
- package/dist/esm/dso-input-range.entry.js.map +1 -0
- package/dist/esm/dso-pagination.entry.js +1 -1
- package/dist/esm/dso-pagination.entry.js.map +1 -1
- package/dist/esm/dso-scrollable.entry.js +1 -1
- package/dist/esm/dso-scrollable.entry.js.map +1 -1
- package/dist/esm/dso-toggletip.entry.js.map +1 -1
- package/dist/esm/dso-toolkit.js +1 -1
- package/dist/esm/dso-tooltip.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/advanced-select/advanced-select.d.ts +40 -0
- package/dist/types/components/advanced-select/advanced-select.models.d.ts +26 -0
- package/dist/types/components/input-range/input-range.d.ts +38 -0
- package/dist/types/components/input-range/input-range.interfaces.d.ts +7 -0
- package/dist/types/components/toggletip/toggletip.d.ts +2 -1
- package/dist/types/components/tooltip/tooltip.d.ts +2 -1
- package/dist/types/components.d.ts +157 -4
- package/package.json +2 -2
- package/dist/dso-toolkit/p-1180ebe3.entry.js +0 -2
- package/dist/dso-toolkit/p-1180ebe3.entry.js.map +0 -1
- package/dist/dso-toolkit/p-6d602847.entry.js +0 -2
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: block;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
*,
|
|
6
|
+
*::after,
|
|
7
|
+
*::before {
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.active-option {
|
|
12
|
+
display: flex;
|
|
13
|
+
inline-size: 100%;
|
|
14
|
+
justify-content: space-between;
|
|
15
|
+
align-items: center;
|
|
16
|
+
padding: 0;
|
|
17
|
+
border: 1px solid #275937;
|
|
18
|
+
border-radius: 4px;
|
|
19
|
+
cursor: pointer;
|
|
20
|
+
background-color: #fff;
|
|
21
|
+
line-height: inherit;
|
|
22
|
+
font-family: inherit;
|
|
23
|
+
font-size: inherit;
|
|
24
|
+
}
|
|
25
|
+
.active-option.open {
|
|
26
|
+
border-radius: 4px 4px 0 0;
|
|
27
|
+
}
|
|
28
|
+
.active-option dso-icon {
|
|
29
|
+
color: #275937;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.active-option-label {
|
|
33
|
+
padding: 4px 16px;
|
|
34
|
+
overflow: hidden;
|
|
35
|
+
/* stylelint-disable-next-line declaration-property-value-disallowed-list -- Nodig om lange titels op de zelfde regel te houden */
|
|
36
|
+
white-space: nowrap;
|
|
37
|
+
/* stylelint-disable-next-line declaration-property-value-disallowed-list -- Nodig om lange titels op de zelfde regel te houden */
|
|
38
|
+
text-overflow: ellipsis;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.active-option-aside {
|
|
42
|
+
display: flex;
|
|
43
|
+
align-items: center;
|
|
44
|
+
gap: 8px;
|
|
45
|
+
padding: 0 8px;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.badges {
|
|
49
|
+
display: flex;
|
|
50
|
+
justify-content: space-between;
|
|
51
|
+
align-items: center;
|
|
52
|
+
gap: 4px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.groups-container {
|
|
56
|
+
position: relative;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.groups {
|
|
60
|
+
position: absolute;
|
|
61
|
+
inset-block-start: -1px;
|
|
62
|
+
inset-inline-start: 0;
|
|
63
|
+
inline-size: 100%;
|
|
64
|
+
max-block-size: 500px;
|
|
65
|
+
margin: 0;
|
|
66
|
+
padding: 0;
|
|
67
|
+
overflow-y: auto;
|
|
68
|
+
background-color: #fff;
|
|
69
|
+
border: 1px solid #275937;
|
|
70
|
+
border-radius: 0 0 4px 4px;
|
|
71
|
+
}
|
|
72
|
+
.groups li::marker {
|
|
73
|
+
display: none;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.group {
|
|
77
|
+
border-bottom: 1px solid #ccc;
|
|
78
|
+
}
|
|
79
|
+
.group:last-child {
|
|
80
|
+
border-bottom: none;
|
|
81
|
+
}
|
|
82
|
+
.group .option {
|
|
83
|
+
padding-left: 37px;
|
|
84
|
+
}
|
|
85
|
+
.group .option-label::before {
|
|
86
|
+
content: "";
|
|
87
|
+
position: absolute;
|
|
88
|
+
display: block;
|
|
89
|
+
block-size: 10px;
|
|
90
|
+
inline-size: 10px;
|
|
91
|
+
inset: 4px auto auto -20px;
|
|
92
|
+
border-radius: 50%;
|
|
93
|
+
background-color: #ccc;
|
|
94
|
+
border-color: #ccc;
|
|
95
|
+
color: #191919;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.group-label {
|
|
99
|
+
margin: 0;
|
|
100
|
+
padding: 4px 16px;
|
|
101
|
+
color: #666;
|
|
102
|
+
font-size: 14px;
|
|
103
|
+
font-weight: 500;
|
|
104
|
+
border-bottom: 1px solid #ccc;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.group-link {
|
|
108
|
+
display: block;
|
|
109
|
+
padding: 8px 4px;
|
|
110
|
+
text-align: end;
|
|
111
|
+
color: #000;
|
|
112
|
+
text-decoration: none;
|
|
113
|
+
}
|
|
114
|
+
.group-link:hover {
|
|
115
|
+
text-decoration: underline;
|
|
116
|
+
}
|
|
117
|
+
.group-link dso-icon {
|
|
118
|
+
color: #39870c;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.group-info .option-label::before {
|
|
122
|
+
background-color: #6ca4d9;
|
|
123
|
+
border-color: #6ca4d9;
|
|
124
|
+
color: #191919;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.group-primary .option-label::before {
|
|
128
|
+
background-color: #275937;
|
|
129
|
+
border-color: #275937;
|
|
130
|
+
color: #fff;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.group-success .option-label::before {
|
|
134
|
+
background-color: #39870c;
|
|
135
|
+
border-color: #39870c;
|
|
136
|
+
color: #fff;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.group-warning .option-label::before {
|
|
140
|
+
background-color: #dcd400;
|
|
141
|
+
border-color: #dcd400;
|
|
142
|
+
color: #191919;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.group-danger .option-label::before {
|
|
146
|
+
background-color: #ce3f51;
|
|
147
|
+
border-color: #ce3f51;
|
|
148
|
+
color: #fff;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.group-error .option-label::before {
|
|
152
|
+
background-color: #ce3f51;
|
|
153
|
+
border-color: #ce3f51;
|
|
154
|
+
color: #fff;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.group-attention .option-label::before {
|
|
158
|
+
background-color: #8b4a6a;
|
|
159
|
+
border-color: #8b4a6a;
|
|
160
|
+
color: #fff;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.options {
|
|
164
|
+
margin: 0;
|
|
165
|
+
padding: 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.option {
|
|
169
|
+
display: block;
|
|
170
|
+
inline-size: 100%;
|
|
171
|
+
padding: 8px 16px;
|
|
172
|
+
cursor: pointer;
|
|
173
|
+
line-height: inherit;
|
|
174
|
+
font-family: inherit;
|
|
175
|
+
font-size: inherit;
|
|
176
|
+
border: none;
|
|
177
|
+
text-align: left;
|
|
178
|
+
background-color: #fff;
|
|
179
|
+
}
|
|
180
|
+
.option:hover {
|
|
181
|
+
background-color: #ebf3e6;
|
|
182
|
+
}
|
|
183
|
+
.option:hover .option-label {
|
|
184
|
+
color: #39870c;
|
|
185
|
+
font-weight: bold;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.option.option-active .option-label {
|
|
189
|
+
color: #39870c;
|
|
190
|
+
font-weight: bold;
|
|
191
|
+
text-decoration: underline;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.option-label {
|
|
195
|
+
position: relative;
|
|
196
|
+
color: #000;
|
|
197
|
+
font-size: Asap, sans-serif;
|
|
198
|
+
font-weight: 400;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.option-hint {
|
|
202
|
+
padding-left: 5px;
|
|
203
|
+
color: #39870c;
|
|
204
|
+
font-size: Asap, sans-serif;
|
|
205
|
+
font-weight: bold;
|
|
206
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { h, Fragment, } from "@stencil/core";
|
|
2
|
+
import clsx from "clsx";
|
|
3
|
+
import { createFocusTrap } from "focus-trap";
|
|
4
|
+
import { tabbable } from "tabbable";
|
|
5
|
+
import { isModifiedEvent } from "../../utils/is-modified-event";
|
|
6
|
+
export class AdvancedSelect {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.toggleOpen = () => {
|
|
9
|
+
this.open = !this.open;
|
|
10
|
+
};
|
|
11
|
+
this.handleOptionClick = (event, option) => {
|
|
12
|
+
this.dsoChange.emit({ originalEvent: event, option });
|
|
13
|
+
this.open = false;
|
|
14
|
+
};
|
|
15
|
+
this.handleRedirectClick = (event, redirect) => {
|
|
16
|
+
this.dsoRedirect.emit({ originalEvent: event, isModifiedEvent: isModifiedEvent(event), redirect });
|
|
17
|
+
this.open = false;
|
|
18
|
+
};
|
|
19
|
+
this.options = [];
|
|
20
|
+
this.active = undefined;
|
|
21
|
+
this.activeHint = undefined;
|
|
22
|
+
this.open = false;
|
|
23
|
+
}
|
|
24
|
+
keyDownListener(event) {
|
|
25
|
+
if (this.open && event.key === "ArrowUp") {
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
this.handleTab(-1);
|
|
28
|
+
}
|
|
29
|
+
else if (this.open && event.key === "ArrowDown") {
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
this.handleTab(1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
componentDidRender() {
|
|
35
|
+
if (this.open && !this.trap) {
|
|
36
|
+
this.createTrap();
|
|
37
|
+
}
|
|
38
|
+
else if (!this.open && this.trap) {
|
|
39
|
+
this.removeTrap();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
createTrap() {
|
|
43
|
+
this.trap = createFocusTrap(this.host, {
|
|
44
|
+
clickOutsideDeactivates: true,
|
|
45
|
+
escapeDeactivates: true,
|
|
46
|
+
setReturnFocus: this.toggleButtonElementRef,
|
|
47
|
+
tabbableOptions: {
|
|
48
|
+
getShadowRoot: true,
|
|
49
|
+
},
|
|
50
|
+
onDeactivate: () => {
|
|
51
|
+
this.open = false;
|
|
52
|
+
},
|
|
53
|
+
}).activate();
|
|
54
|
+
}
|
|
55
|
+
removeTrap() {
|
|
56
|
+
var _a;
|
|
57
|
+
(_a = this.trap) === null || _a === void 0 ? void 0 : _a.deactivate();
|
|
58
|
+
delete this.trap;
|
|
59
|
+
}
|
|
60
|
+
handleTab(direction) {
|
|
61
|
+
var _a;
|
|
62
|
+
const elements = tabbable(this.host, { getShadowRoot: true });
|
|
63
|
+
const currentIndex = elements.findIndex((e) => { var _a; return e === ((_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement); });
|
|
64
|
+
let nextIndex = currentIndex + direction;
|
|
65
|
+
if (nextIndex >= elements.length) {
|
|
66
|
+
nextIndex = 0;
|
|
67
|
+
}
|
|
68
|
+
else if (nextIndex < 0) {
|
|
69
|
+
nextIndex = elements.length - 1;
|
|
70
|
+
}
|
|
71
|
+
(_a = elements[nextIndex]) === null || _a === void 0 ? void 0 : _a.focus();
|
|
72
|
+
}
|
|
73
|
+
render() {
|
|
74
|
+
var _a, _b;
|
|
75
|
+
return (h(Fragment, null, h("button", { "aria-expanded": this.open.toString(), class: clsx(["active-option", { open: this.open }]), type: "button", onClick: this.toggleOpen, ref: (element) => (this.toggleButtonElementRef = element) }, h("span", { class: "active-option-label" }, (_b = (_a = this.active) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : "Selecteer een optie"), h("span", { class: "active-option-aside" }, this.options.some((optionOrGroup) => "summaryCounter" in optionOrGroup && (optionOrGroup === null || optionOrGroup === void 0 ? void 0 : optionOrGroup.summaryCounter)) && (h("span", { class: "badges" }, this.options
|
|
76
|
+
.filter((option) => "options" in option && "summaryCounter" in option && !!(option === null || option === void 0 ? void 0 : option.summaryCounter))
|
|
77
|
+
.map((group) => {
|
|
78
|
+
var _a;
|
|
79
|
+
return h("dso-badge", { status: (_a = group.variant) !== null && _a !== void 0 ? _a : "outline" }, group.options.length);
|
|
80
|
+
}))), h("dso-icon", { icon: "caret-down" }))), this.open && (h("div", { class: "groups-container" }, h("ul", { class: "groups" }, this.options.map((optionOrGroup) => "options" in optionOrGroup ? (h("li", { class: clsx(["group", { [`group-${optionOrGroup.variant}`]: !!optionOrGroup.variant }]) }, optionOrGroup.label && h("p", { class: "group-label" }, optionOrGroup.label), h("ul", { class: "options" }, optionOrGroup.options.map((option) => (h(OptionElement, { option: option, active: this.active, activeHint: this.activeHint, callback: this.handleOptionClick })))), optionOrGroup.redirect && (h("a", { class: "group-link", href: optionOrGroup.redirect.href, onClick: (e) => optionOrGroup.redirect && this.handleRedirectClick(e, optionOrGroup.redirect) }, optionOrGroup.redirect.label, h("dso-icon", { icon: "chevron-right" }))))) : (h(OptionElement, { option: optionOrGroup, active: this.active, activeHint: this.activeHint, callback: this.handleOptionClick }))))))));
|
|
81
|
+
}
|
|
82
|
+
static get is() { return "dso-advanced-select"; }
|
|
83
|
+
static get encapsulation() { return "shadow"; }
|
|
84
|
+
static get originalStyleUrls() {
|
|
85
|
+
return {
|
|
86
|
+
"$": ["advanced-select.scss"]
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
static get styleUrls() {
|
|
90
|
+
return {
|
|
91
|
+
"$": ["advanced-select.css"]
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
static get properties() {
|
|
95
|
+
return {
|
|
96
|
+
"options": {
|
|
97
|
+
"type": "unknown",
|
|
98
|
+
"mutable": false,
|
|
99
|
+
"complexType": {
|
|
100
|
+
"original": "AdvancedSelectOptionOrGroup<never>[]",
|
|
101
|
+
"resolved": "AdvancedSelectOptionOrGroup<never>[]",
|
|
102
|
+
"references": {
|
|
103
|
+
"AdvancedSelectOptionOrGroup": {
|
|
104
|
+
"location": "import",
|
|
105
|
+
"path": "./advanced-select.models",
|
|
106
|
+
"id": "src/components/advanced-select/advanced-select.models.ts::AdvancedSelectOptionOrGroup"
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"required": false,
|
|
111
|
+
"optional": false,
|
|
112
|
+
"docs": {
|
|
113
|
+
"tags": [],
|
|
114
|
+
"text": "The options to display in the select."
|
|
115
|
+
},
|
|
116
|
+
"defaultValue": "[]"
|
|
117
|
+
},
|
|
118
|
+
"active": {
|
|
119
|
+
"type": "unknown",
|
|
120
|
+
"mutable": false,
|
|
121
|
+
"complexType": {
|
|
122
|
+
"original": "AdvancedSelectOption<never>",
|
|
123
|
+
"resolved": "AdvancedSelectOption<never> | undefined",
|
|
124
|
+
"references": {
|
|
125
|
+
"AdvancedSelectOption": {
|
|
126
|
+
"location": "import",
|
|
127
|
+
"path": "./advanced-select.models",
|
|
128
|
+
"id": "src/components/advanced-select/advanced-select.models.ts::AdvancedSelectOption"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"required": false,
|
|
133
|
+
"optional": true,
|
|
134
|
+
"docs": {
|
|
135
|
+
"tags": [],
|
|
136
|
+
"text": "The active option. By object reference."
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
"activeHint": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"mutable": false,
|
|
142
|
+
"complexType": {
|
|
143
|
+
"original": "string",
|
|
144
|
+
"resolved": "string | undefined",
|
|
145
|
+
"references": {}
|
|
146
|
+
},
|
|
147
|
+
"required": false,
|
|
148
|
+
"optional": true,
|
|
149
|
+
"docs": {
|
|
150
|
+
"tags": [],
|
|
151
|
+
"text": "An extra text for the active option. Only visible in the list of options."
|
|
152
|
+
},
|
|
153
|
+
"attribute": "active-hint",
|
|
154
|
+
"reflect": false
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
static get states() {
|
|
159
|
+
return {
|
|
160
|
+
"open": {}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
static get events() {
|
|
164
|
+
return [{
|
|
165
|
+
"method": "dsoChange",
|
|
166
|
+
"name": "dsoChange",
|
|
167
|
+
"bubbles": false,
|
|
168
|
+
"cancelable": true,
|
|
169
|
+
"composed": true,
|
|
170
|
+
"docs": {
|
|
171
|
+
"tags": [],
|
|
172
|
+
"text": "Emitted when user selects an option"
|
|
173
|
+
},
|
|
174
|
+
"complexType": {
|
|
175
|
+
"original": "AdvancedSelectChangeEvent<never>",
|
|
176
|
+
"resolved": "AdvancedSelectChangeEvent<never>",
|
|
177
|
+
"references": {
|
|
178
|
+
"AdvancedSelectChangeEvent": {
|
|
179
|
+
"location": "import",
|
|
180
|
+
"path": "./advanced-select.models",
|
|
181
|
+
"id": "src/components/advanced-select/advanced-select.models.ts::AdvancedSelectChangeEvent"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}, {
|
|
186
|
+
"method": "dsoRedirect",
|
|
187
|
+
"name": "dsoRedirect",
|
|
188
|
+
"bubbles": false,
|
|
189
|
+
"cancelable": true,
|
|
190
|
+
"composed": true,
|
|
191
|
+
"docs": {
|
|
192
|
+
"tags": [],
|
|
193
|
+
"text": "Emitted when user activates a group redirect link."
|
|
194
|
+
},
|
|
195
|
+
"complexType": {
|
|
196
|
+
"original": "AdvancedSelectRedirectEvent",
|
|
197
|
+
"resolved": "AdvancedSelectRedirectEvent",
|
|
198
|
+
"references": {
|
|
199
|
+
"AdvancedSelectRedirectEvent": {
|
|
200
|
+
"location": "import",
|
|
201
|
+
"path": "./advanced-select.models",
|
|
202
|
+
"id": "src/components/advanced-select/advanced-select.models.ts::AdvancedSelectRedirectEvent"
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}];
|
|
207
|
+
}
|
|
208
|
+
static get elementRef() { return "host"; }
|
|
209
|
+
static get listeners() {
|
|
210
|
+
return [{
|
|
211
|
+
"name": "keydown",
|
|
212
|
+
"method": "keyDownListener",
|
|
213
|
+
"target": "window",
|
|
214
|
+
"capture": false,
|
|
215
|
+
"passive": false
|
|
216
|
+
}];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
const OptionElement = ({ option, active, activeHint, callback }) => (h("li", null, h("button", { class: clsx(["option", { "option-active": active === option }]), type: "button", onClick: (e) => callback(e, option) }, h("span", { class: "option-label" }, option.label), !!activeHint && active === option && h("span", { class: "option-hint" }, "(", activeHint, ")"))));
|
|
220
|
+
//# sourceMappingURL=advanced-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-select.js","sourceRoot":"","sources":["../../../../src/components/advanced-select/advanced-select.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\r\n Component,\r\n ComponentInterface,\r\n Prop,\r\n h,\r\n FunctionalComponent,\r\n Element,\r\n Event,\r\n EventEmitter,\r\n State,\r\n Fragment,\r\n Listen,\r\n} from \"@stencil/core\";\r\nimport clsx from \"clsx\";\r\nimport {\r\n AdvancedSelectGroup,\r\n AdvancedSelectGroupRedirect,\r\n AdvancedSelectOption,\r\n AdvancedSelectChangeEvent,\r\n AdvancedSelectOptionOrGroup,\r\n AdvancedSelectRedirectEvent,\r\n} from \"./advanced-select.models\";\r\nimport { createFocusTrap, FocusTrap } from \"focus-trap\";\r\nimport { tabbable } from \"tabbable\";\r\nimport { isModifiedEvent } from \"../../utils/is-modified-event\";\r\n\r\n@Component({\r\n tag: \"dso-advanced-select\",\r\n styleUrl: \"advanced-select.scss\",\r\n shadow: true,\r\n})\r\nexport class AdvancedSelect implements ComponentInterface {\r\n private trap?: FocusTrap;\r\n\r\n @Element()\r\n host!: HTMLDsoAdvancedSelectElement;\r\n\r\n /**\r\n * The options to display in the select.\r\n */\r\n @Prop()\r\n options: AdvancedSelectOptionOrGroup<never>[] = [];\r\n\r\n /**\r\n * The active option. By object reference.\r\n */\r\n @Prop()\r\n active?: AdvancedSelectOption<never>;\r\n\r\n /**\r\n * An extra text for the active option. Only visible in the list of options.\r\n */\r\n @Prop()\r\n activeHint?: string;\r\n\r\n /**\r\n * The open state of the options list.\r\n */\r\n @State()\r\n open: boolean = false;\r\n\r\n /**\r\n * Emitted when user selects an option\r\n */\r\n @Event({ bubbles: false })\r\n dsoChange!: EventEmitter<AdvancedSelectChangeEvent<never>>;\r\n\r\n /**\r\n * Emitted when user activates a group redirect link.\r\n */\r\n @Event({ bubbles: false })\r\n dsoRedirect!: EventEmitter<AdvancedSelectRedirectEvent>;\r\n\r\n private toggleButtonElementRef: HTMLButtonElement | undefined;\r\n\r\n @Listen(\"keydown\", { target: \"window\" })\r\n keyDownListener(event: KeyboardEvent) {\r\n if (this.open && event.key === \"ArrowUp\") {\r\n event.preventDefault();\r\n this.handleTab(-1);\r\n } else if (this.open && event.key === \"ArrowDown\") {\r\n event.preventDefault();\r\n this.handleTab(1);\r\n }\r\n }\r\n\r\n componentDidRender() {\r\n if (this.open && !this.trap) {\r\n this.createTrap();\r\n } else if (!this.open && this.trap) {\r\n this.removeTrap();\r\n }\r\n }\r\n\r\n private toggleOpen = () => {\r\n this.open = !this.open;\r\n };\r\n\r\n private createTrap() {\r\n this.trap = createFocusTrap(this.host, {\r\n clickOutsideDeactivates: true,\r\n escapeDeactivates: true,\r\n setReturnFocus: this.toggleButtonElementRef,\r\n tabbableOptions: {\r\n getShadowRoot: true,\r\n },\r\n onDeactivate: () => {\r\n this.open = false;\r\n },\r\n }).activate();\r\n }\r\n\r\n private removeTrap() {\r\n this.trap?.deactivate();\r\n delete this.trap;\r\n }\r\n\r\n private handleTab(direction: number) {\r\n const elements = tabbable(this.host, { getShadowRoot: true });\r\n const currentIndex = elements.findIndex((e) => e === this.host.shadowRoot?.activeElement);\r\n\r\n let nextIndex = currentIndex + direction;\r\n if (nextIndex >= elements.length) {\r\n nextIndex = 0;\r\n } else if (nextIndex < 0) {\r\n nextIndex = elements.length - 1;\r\n }\r\n\r\n elements[nextIndex]?.focus();\r\n }\r\n\r\n private handleOptionClick = (event: MouseEvent, option: AdvancedSelectOption<never>) => {\r\n this.dsoChange.emit({ originalEvent: event, option });\r\n this.open = false;\r\n };\r\n\r\n private handleRedirectClick = (event: MouseEvent, redirect: AdvancedSelectGroupRedirect) => {\r\n this.dsoRedirect.emit({ originalEvent: event, isModifiedEvent: isModifiedEvent(event), redirect });\r\n this.open = false;\r\n };\r\n\r\n render() {\r\n return (\r\n <>\r\n <button\r\n aria-expanded={this.open.toString()}\r\n class={clsx([\"active-option\", { open: this.open }])}\r\n type=\"button\"\r\n onClick={this.toggleOpen}\r\n ref={(element) => (this.toggleButtonElementRef = element)}\r\n >\r\n <span class=\"active-option-label\">{this.active?.label ?? \"Selecteer een optie\"}</span>\r\n <span class=\"active-option-aside\">\r\n {this.options.some(\r\n (optionOrGroup) => \"summaryCounter\" in optionOrGroup && optionOrGroup?.summaryCounter,\r\n ) && (\r\n <span class=\"badges\">\r\n {this.options\r\n .filter(\r\n (option): option is AdvancedSelectGroup<never> =>\r\n \"options\" in option && \"summaryCounter\" in option && !!option?.summaryCounter,\r\n )\r\n .map((group) => {\r\n return <dso-badge status={group.variant ?? \"outline\"}>{group.options.length}</dso-badge>;\r\n })}\r\n </span>\r\n )}\r\n <dso-icon icon=\"caret-down\"></dso-icon>\r\n </span>\r\n </button>\r\n {this.open && (\r\n <div class=\"groups-container\">\r\n <ul class=\"groups\">\r\n {this.options.map((optionOrGroup) =>\r\n \"options\" in optionOrGroup ? (\r\n <li class={clsx([\"group\", { [`group-${optionOrGroup.variant}`]: !!optionOrGroup.variant }])}>\r\n {optionOrGroup.label && <p class=\"group-label\">{optionOrGroup.label}</p>}\r\n <ul class=\"options\">\r\n {optionOrGroup.options.map((option) => (\r\n <OptionElement\r\n option={option}\r\n active={this.active}\r\n activeHint={this.activeHint}\r\n callback={this.handleOptionClick}\r\n />\r\n ))}\r\n </ul>\r\n {optionOrGroup.redirect && (\r\n <a\r\n class=\"group-link\"\r\n href={optionOrGroup.redirect.href}\r\n onClick={(e) => optionOrGroup.redirect && this.handleRedirectClick(e, optionOrGroup.redirect)}\r\n >\r\n {optionOrGroup.redirect.label}\r\n <dso-icon icon=\"chevron-right\"></dso-icon>\r\n </a>\r\n )}\r\n </li>\r\n ) : (\r\n <OptionElement\r\n option={optionOrGroup}\r\n active={this.active}\r\n activeHint={this.activeHint}\r\n callback={this.handleOptionClick}\r\n />\r\n ),\r\n )}\r\n </ul>\r\n </div>\r\n )}\r\n </>\r\n );\r\n }\r\n}\r\n\r\nconst OptionElement: FunctionalComponent<{\r\n option: AdvancedSelectOption<never>;\r\n active: AdvancedSelectOption<never> | undefined;\r\n activeHint: string | undefined;\r\n callback: (event: MouseEvent, value: AdvancedSelectOption<never>) => void;\r\n}> = ({ option, active, activeHint, callback }) => (\r\n <li>\r\n <button\r\n class={clsx([\"option\", { \"option-active\": active === option }])}\r\n type=\"button\"\r\n onClick={(e) => callback(e, option)}\r\n >\r\n <span class=\"option-label\">{option.label}</span>\r\n {!!activeHint && active === option && <span class=\"option-hint\">({activeHint})</span>}\r\n </button>\r\n </li>\r\n);\r\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advanced-select.models.js","sourceRoot":"","sources":["../../../../src/components/advanced-select/advanced-select.models.ts"],"names":[],"mappings":"","sourcesContent":["export type AdvancedSelectVariant = \"primary\" | \"success\" | \"info\" | \"warning\" | \"danger\" | \"error\" | \"attention\";\r\n\r\nexport interface AdvancedSelectOption<T> {\r\n label: string;\r\n value?: T;\r\n}\r\n\r\nexport interface AdvancedSelectGroupRedirect {\r\n label: string;\r\n href: string;\r\n}\r\n\r\nexport interface AdvancedSelectGroup<T> {\r\n label: string;\r\n summaryCounter?: boolean;\r\n redirect?: AdvancedSelectGroupRedirect;\r\n options: AdvancedSelectOption<T>[];\r\n variant?: AdvancedSelectVariant;\r\n}\r\n\r\nexport type AdvancedSelectOptionOrGroup<T> = AdvancedSelectOption<T> | AdvancedSelectGroup<T>;\r\n\r\nexport interface AdvancedSelectChangeEvent<T> {\r\n originalEvent: MouseEvent;\r\n option: AdvancedSelectOption<T>;\r\n}\r\n\r\nexport interface AdvancedSelectRedirectEvent {\r\n originalEvent: MouseEvent;\r\n isModifiedEvent: boolean;\r\n redirect: AdvancedSelectGroupRedirect;\r\n}\r\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
gap: 0.5rem;
|
|
5
|
+
padding: 0.5rem;
|
|
6
|
+
inline-size: 100%;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
*,
|
|
10
|
+
*::after,
|
|
11
|
+
*::before {
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.counter {
|
|
16
|
+
flex-shrink: 0;
|
|
17
|
+
min-inline-size: 5ch;
|
|
18
|
+
}
|
|
19
|
+
.counter.min {
|
|
20
|
+
text-align: end;
|
|
21
|
+
}
|
|
22
|
+
.counter.max {
|
|
23
|
+
text-align: start;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.input {
|
|
27
|
+
flex-grow: 1;
|
|
28
|
+
appearance: none;
|
|
29
|
+
background-color: transparent;
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
}
|
|
32
|
+
.input::-webkit-slider-runnable-track {
|
|
33
|
+
block-size: 0.5rem;
|
|
34
|
+
background-color: #e5e5e5;
|
|
35
|
+
border: 1px solid #666;
|
|
36
|
+
border-radius: 0.5rem;
|
|
37
|
+
}
|
|
38
|
+
.input::-webkit-slider-runnable-track:hover {
|
|
39
|
+
background-color: #ccc;
|
|
40
|
+
}
|
|
41
|
+
.input::-webkit-slider-thumb {
|
|
42
|
+
block-size: 1.5rem;
|
|
43
|
+
inline-size: 1.5rem;
|
|
44
|
+
appearance: none;
|
|
45
|
+
margin-block-start: -0.55rem;
|
|
46
|
+
background-color: #39870c;
|
|
47
|
+
border-radius: 50%;
|
|
48
|
+
}
|
|
49
|
+
.input::-webkit-slider-thumb:hover {
|
|
50
|
+
background-color: #275937;
|
|
51
|
+
}
|
|
52
|
+
.input::-moz-range-track {
|
|
53
|
+
box-sizing: border-box;
|
|
54
|
+
block-size: 0.5rem;
|
|
55
|
+
background-color: #e5e5e5;
|
|
56
|
+
border: 1px solid #666;
|
|
57
|
+
border-radius: 0.5rem;
|
|
58
|
+
}
|
|
59
|
+
.input::-moz-range-track:hover {
|
|
60
|
+
background-color: #ccc;
|
|
61
|
+
}
|
|
62
|
+
.input::-moz-range-thumb {
|
|
63
|
+
box-sizing: border-box;
|
|
64
|
+
block-size: 1.5rem;
|
|
65
|
+
inline-size: 1.5rem;
|
|
66
|
+
appearance: none;
|
|
67
|
+
margin-block-start: -0.5rem;
|
|
68
|
+
background-color: #39870c;
|
|
69
|
+
border-color: transparent;
|
|
70
|
+
border-radius: 50%;
|
|
71
|
+
}
|
|
72
|
+
.input::-moz-range-thumb:hover {
|
|
73
|
+
background-color: #275937;
|
|
74
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-range.interfaces.js","sourceRoot":"","sources":["../../../../src/components/input-range/input-range.interfaces.ts"],"names":[],"mappings":"","sourcesContent":["export interface InputRangeChangeEvent {\r\n originalEvent: Event;\r\n value: number | undefined;\r\n min: number;\r\n max: number;\r\n step: number;\r\n}\r\n"]}
|