@statistikzh/leu 0.0.2 → 0.1.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/.github/workflows/release-please.yml +20 -1
- package/CHANGELOG.md +12 -0
- package/babel.config.json +3 -0
- package/dist/{Button-83c6df93.js → Button.js} +58 -50
- package/dist/ButtonGroup.js +75 -0
- package/dist/Checkbox.js +60 -57
- package/dist/CheckboxGroup.js +35 -41
- package/dist/{Chip-60af1402.js → Chip-389013ff.js} +12 -13
- package/dist/ChipGroup.js +27 -34
- package/dist/ChipLink.js +18 -19
- package/dist/ChipRemovable.js +9 -13
- package/dist/ChipSelectable.js +42 -44
- package/dist/Dropdown.js +75 -0
- package/dist/Input.js +112 -122
- package/dist/Menu.js +33 -0
- package/dist/MenuItem.js +171 -0
- package/dist/Pagination.js +193 -0
- package/dist/Radio.js +26 -22
- package/dist/RadioGroup.js +75 -105
- package/dist/Select.js +103 -337
- package/dist/Table.js +294 -8
- package/dist/defineElement-ba770aed.js +44 -0
- package/dist/icon-03e86700.js +136 -0
- package/dist/index.js +14 -9
- package/dist/leu-button-group.js +8 -0
- package/dist/leu-button.js +7 -0
- package/dist/leu-checkbox-group.js +1 -1
- package/dist/leu-checkbox.js +2 -2
- package/dist/leu-chip-group.js +1 -1
- package/dist/leu-chip-link.js +2 -2
- package/dist/leu-chip-removable.js +3 -3
- package/dist/leu-chip-selectable.js +2 -2
- package/dist/leu-dropdown.js +10 -0
- package/dist/leu-input.js +2 -2
- package/dist/leu-menu-item.js +6 -0
- package/dist/leu-menu.js +5 -0
- package/dist/leu-pagination.js +8 -0
- package/dist/leu-radio-group.js +1 -1
- package/dist/leu-radio.js +1 -1
- package/dist/leu-select.js +5 -3
- package/dist/leu-table.js +5 -4
- package/index.js +7 -3
- package/package.json +3 -1
- package/rollup.config.js +26 -9
- package/.github/workflows/publish.yml +0 -19
- package/dist/Table-72d305d7.js +0 -506
- package/dist/defineElement-47d4f665.js +0 -15
- package/dist/icon-b68c7e1e.js +0 -202
package/dist/RadioGroup.js
CHANGED
|
@@ -1,140 +1,84 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { _ as _defineProperty, d as defineElement } from './defineElement-ba770aed.js';
|
|
2
|
+
import { css, LitElement, html } from 'lit';
|
|
2
3
|
import { classMap } from 'lit/directives/class-map.js';
|
|
3
|
-
import { d as defineElement } from './defineElement-47d4f665.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @tagname leu-radio-group
|
|
7
7
|
*/
|
|
8
8
|
class LeuRadioGroup extends LitElement {
|
|
9
|
-
static styles = css`
|
|
10
|
-
:host {
|
|
11
|
-
--group-font-regular: var(--leu-font-regular);
|
|
12
|
-
--group-font-black: var(--leu-font-black);
|
|
13
|
-
|
|
14
|
-
font-family: var(--group-font-regular);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.fieldset {
|
|
18
|
-
display: flex;
|
|
19
|
-
align-items: flex-start;
|
|
20
|
-
flex-wrap: wrap;
|
|
21
|
-
gap: 0.5rem 1rem;
|
|
22
|
-
|
|
23
|
-
border: none;
|
|
24
|
-
padding: 0;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.fieldset--vertical {
|
|
28
|
-
flex-direction: column;
|
|
29
|
-
gap: 1rem;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.legend {
|
|
33
|
-
font-family: var(--group-font-black);
|
|
34
|
-
font-size: 1.125rem;
|
|
35
|
-
line-height: 1.5;
|
|
36
|
-
|
|
37
|
-
margin-bottom: 0.5rem;
|
|
38
|
-
}
|
|
39
|
-
`
|
|
40
|
-
|
|
41
|
-
static properties = {
|
|
42
|
-
orientation: { type: String },
|
|
43
|
-
}
|
|
44
|
-
|
|
45
9
|
constructor() {
|
|
46
10
|
super();
|
|
11
|
+
_defineProperty(this, "handleFocusIn", e => {
|
|
12
|
+
this._currentIndex = this.items.indexOf(e.target);
|
|
13
|
+
});
|
|
14
|
+
_defineProperty(this, "handleKeyDown", e => {
|
|
15
|
+
const currentIndex = this.items.indexOf(e.target);
|
|
16
|
+
switch (e.key) {
|
|
17
|
+
case "ArrowUp":
|
|
18
|
+
case "ArrowLeft":
|
|
19
|
+
this.selectNextItem(currentIndex, -1);
|
|
20
|
+
break;
|
|
21
|
+
case "ArrowDown":
|
|
22
|
+
case "ArrowRight":
|
|
23
|
+
this.selectNextItem(currentIndex, 1);
|
|
24
|
+
break;
|
|
25
|
+
case "Home":
|
|
26
|
+
this.selectItem(this.items.find(item => !item.disabled));
|
|
27
|
+
break;
|
|
28
|
+
case "End":
|
|
29
|
+
this.selectItem(this.items.findLast(item => !item.disabled));
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
this.setTabIndex();
|
|
33
|
+
});
|
|
34
|
+
_defineProperty(this, "handleInput", e => {
|
|
35
|
+
if (e.target.checked) {
|
|
36
|
+
this.items.filter(item => item !== e.target).forEach(item => {
|
|
37
|
+
item.checked = false; // eslint-disable-line no-param-reassign
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
});
|
|
47
41
|
this.orientation = "HORIZONTAL";
|
|
48
42
|
this._currentIndex = 0;
|
|
49
43
|
this.items = [];
|
|
50
44
|
}
|
|
51
|
-
|
|
52
45
|
get value() {
|
|
53
|
-
const checkedValues = this.items
|
|
54
|
-
|
|
55
|
-
.map((i) => i.value);
|
|
56
|
-
return checkedValues.length > 0 ? checkedValues[0] : ""
|
|
46
|
+
const checkedValues = this.items.filter(i => i.checked).map(i => i.value);
|
|
47
|
+
return checkedValues.length > 0 ? checkedValues[0] : "";
|
|
57
48
|
}
|
|
58
|
-
|
|
59
49
|
connectedCallback() {
|
|
60
50
|
super.connectedCallback();
|
|
61
51
|
this.handleItems();
|
|
62
52
|
this.addEventListeners();
|
|
63
53
|
}
|
|
64
|
-
|
|
65
54
|
disconnectedCallback() {
|
|
66
55
|
super.disconnectedCallback();
|
|
67
56
|
this.removeEventListeners();
|
|
68
57
|
}
|
|
69
|
-
|
|
70
58
|
addEventListeners() {
|
|
71
59
|
this.addEventListener("input", this.handleInput);
|
|
72
60
|
this.addEventListener("focusin", this.handleFocusIn);
|
|
73
61
|
this.addEventListener("keydown", this.handleKeyDown);
|
|
74
62
|
}
|
|
75
|
-
|
|
76
63
|
removeEventListeners() {
|
|
77
64
|
this.removeEventListener("input", this.handleInput);
|
|
78
65
|
this.removeEventListener("focusin", this.handleFocusIn);
|
|
79
66
|
this.removeEventListener("keydown", this.handleKeyDown);
|
|
80
67
|
}
|
|
81
|
-
|
|
82
68
|
handleSlotChange() {
|
|
83
69
|
this.handleItems();
|
|
84
70
|
}
|
|
85
|
-
|
|
86
|
-
handleFocusIn = (e) => {
|
|
87
|
-
this._currentIndex = this.items.indexOf(e.target);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
handleKeyDown = (e) => {
|
|
91
|
-
const currentIndex = this.items.indexOf(e.target);
|
|
92
|
-
|
|
93
|
-
switch (e.key) {
|
|
94
|
-
case "ArrowUp":
|
|
95
|
-
case "ArrowLeft":
|
|
96
|
-
this.selectNextItem(currentIndex, -1);
|
|
97
|
-
break
|
|
98
|
-
case "ArrowDown":
|
|
99
|
-
case "ArrowRight":
|
|
100
|
-
this.selectNextItem(currentIndex, 1);
|
|
101
|
-
break
|
|
102
|
-
case "Home":
|
|
103
|
-
this.selectItem(this.items.find((item) => !item.disabled));
|
|
104
|
-
break
|
|
105
|
-
case "End":
|
|
106
|
-
this.selectItem(this.items.findLast((item) => !item.disabled));
|
|
107
|
-
break
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
this.setTabIndex();
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
handleInput = (e) => {
|
|
114
|
-
if (e.target.checked) {
|
|
115
|
-
this.items
|
|
116
|
-
.filter((item) => item !== e.target)
|
|
117
|
-
.forEach((item) => {
|
|
118
|
-
item.checked = false; // eslint-disable-line no-param-reassign
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
71
|
selectItem(selectingItem) {
|
|
124
|
-
this.items.forEach(
|
|
72
|
+
this.items.forEach(item => {
|
|
125
73
|
item.checked = item === selectingItem; // eslint-disable-line no-param-reassign
|
|
126
74
|
});
|
|
127
75
|
}
|
|
128
76
|
|
|
129
77
|
selectNextItem(startingIndex, direction) {
|
|
130
78
|
let selected = false;
|
|
131
|
-
|
|
132
79
|
for (let index = 0; index < this.items.length; index += 1) {
|
|
133
|
-
const currentIndex =
|
|
134
|
-
(this.items.length + index * direction + startingIndex + direction) %
|
|
135
|
-
this.items.length;
|
|
80
|
+
const currentIndex = (this.items.length + index * direction + startingIndex + direction) % this.items.length;
|
|
136
81
|
const currentItem = this.items[currentIndex];
|
|
137
|
-
|
|
138
82
|
if (!selected && !currentItem.disabled) {
|
|
139
83
|
currentItem.checked = true;
|
|
140
84
|
currentItem.focus();
|
|
@@ -144,7 +88,6 @@ class LeuRadioGroup extends LitElement {
|
|
|
144
88
|
}
|
|
145
89
|
}
|
|
146
90
|
}
|
|
147
|
-
|
|
148
91
|
setTabIndex() {
|
|
149
92
|
this.items.forEach((item, index) => {
|
|
150
93
|
if (index === this._currentIndex) {
|
|
@@ -160,33 +103,60 @@ class LeuRadioGroup extends LitElement {
|
|
|
160
103
|
this.initializeIndex();
|
|
161
104
|
this.setTabIndex();
|
|
162
105
|
}
|
|
163
|
-
|
|
164
106
|
initializeIndex() {
|
|
165
|
-
const index = this.items.findIndex(
|
|
166
|
-
|
|
167
|
-
);
|
|
168
|
-
const nextEnabledIndex = this.items.findIndex(
|
|
169
|
-
(item) => !item.hasAttribute("disabled")
|
|
170
|
-
);
|
|
171
|
-
|
|
107
|
+
const index = this.items.findIndex(item => item.hasAttribute("checked") && !item.hasAttribute("disabled"));
|
|
108
|
+
const nextEnabledIndex = this.items.findIndex(item => !item.hasAttribute("disabled"));
|
|
172
109
|
this._currentIndex = index >= 0 ? index : nextEnabledIndex;
|
|
173
110
|
}
|
|
174
|
-
|
|
175
111
|
render() {
|
|
176
112
|
const fieldsetClasses = {
|
|
177
113
|
fieldset: "true",
|
|
178
|
-
"fieldset--vertical": this.orientation === "VERTICAL"
|
|
114
|
+
"fieldset--vertical": this.orientation === "VERTICAL"
|
|
179
115
|
};
|
|
180
|
-
|
|
181
116
|
return html`
|
|
182
117
|
<fieldset class=${classMap(fieldsetClasses)}>
|
|
183
118
|
<legend class="legend"><slot name="legend"></slot></legend>
|
|
184
119
|
<slot @slotchange=${this.handleSlotChange}></slot>
|
|
185
120
|
</fieldset>
|
|
186
|
-
|
|
121
|
+
`;
|
|
187
122
|
}
|
|
188
123
|
}
|
|
124
|
+
_defineProperty(LeuRadioGroup, "styles", css`
|
|
125
|
+
:host {
|
|
126
|
+
--group-font-regular: var(--leu-font-regular);
|
|
127
|
+
--group-font-black: var(--leu-font-black);
|
|
128
|
+
|
|
129
|
+
font-family: var(--group-font-regular);
|
|
130
|
+
}
|
|
189
131
|
|
|
132
|
+
.fieldset {
|
|
133
|
+
display: flex;
|
|
134
|
+
align-items: flex-start;
|
|
135
|
+
flex-wrap: wrap;
|
|
136
|
+
gap: 0.5rem 1rem;
|
|
137
|
+
|
|
138
|
+
border: none;
|
|
139
|
+
padding: 0;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.fieldset--vertical {
|
|
143
|
+
flex-direction: column;
|
|
144
|
+
gap: 1rem;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.legend {
|
|
148
|
+
font-family: var(--group-font-black);
|
|
149
|
+
font-size: 1.125rem;
|
|
150
|
+
line-height: 1.5;
|
|
151
|
+
|
|
152
|
+
margin-bottom: 0.5rem;
|
|
153
|
+
}
|
|
154
|
+
`);
|
|
155
|
+
_defineProperty(LeuRadioGroup, "properties", {
|
|
156
|
+
orientation: {
|
|
157
|
+
type: String
|
|
158
|
+
}
|
|
159
|
+
});
|
|
190
160
|
function defineRadioGroupElements() {
|
|
191
161
|
defineElement("radio-group", LeuRadioGroup);
|
|
192
162
|
}
|