godown 3.0.0-canary.13 → 3.0.0-canary.15
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/README.md +1 -1
- package/alert.js +1 -5
- package/alert.js.map +1 -1
- package/avatar.js +1 -5
- package/avatar.js.map +1 -1
- package/breath.js +1 -5
- package/breath.js.map +1 -1
- package/button.js +1 -5
- package/button.js.map +1 -1
- package/card.js +1 -5
- package/card.js.map +1 -1
- package/carousel.js +1 -5
- package/carousel.js.map +1 -1
- package/components/alert.js +1 -174
- package/components/alert.js.map +1 -1
- package/components/avatar.js +1 -68
- package/components/avatar.js.map +1 -1
- package/components/breath.d.ts +2 -2
- package/components/breath.d.ts.map +1 -1
- package/components/breath.js +1 -81
- package/components/breath.js.map +1 -1
- package/components/button.d.ts +1 -1
- package/components/button.d.ts.map +1 -1
- package/components/button.js +1 -185
- package/components/button.js.map +1 -1
- package/components/card.d.ts.map +1 -1
- package/components/card.js +1 -49
- package/components/card.js.map +1 -1
- package/components/carousel.js +1 -119
- package/components/carousel.js.map +1 -1
- package/components/details.d.ts +0 -1
- package/components/details.d.ts.map +1 -1
- package/components/details.js +1 -53
- package/components/details.js.map +1 -1
- package/components/dialog.d.ts +1 -1
- package/components/dialog.d.ts.map +1 -1
- package/components/dialog.js +1 -98
- package/components/dialog.js.map +1 -1
- package/components/divider.js +1 -35
- package/components/divider.js.map +1 -1
- package/components/dragbox.d.ts +1 -1
- package/components/dragbox.d.ts.map +1 -1
- package/components/dragbox.js +1 -111
- package/components/dragbox.js.map +1 -1
- package/components/flex.d.ts.map +1 -1
- package/components/flex.js +1 -63
- package/components/flex.js.map +1 -1
- package/components/form.js +1 -75
- package/components/form.js.map +1 -1
- package/components/grid.d.ts.map +1 -1
- package/components/grid.js +1 -57
- package/components/grid.js.map +1 -1
- package/components/input.js +1 -51
- package/components/input.js.map +1 -1
- package/components/layout.d.ts.map +1 -1
- package/components/layout.js +1 -58
- package/components/layout.js.map +1 -1
- package/components/link.js +1 -53
- package/components/link.js.map +1 -1
- package/components/progress.d.ts.map +1 -1
- package/components/progress.js +1 -59
- package/components/progress.js.map +1 -1
- package/components/range.d.ts +1 -0
- package/components/range.d.ts.map +1 -1
- package/components/range.js +1 -267
- package/components/range.js.map +1 -1
- package/components/rotate.js +1 -56
- package/components/rotate.js.map +1 -1
- package/components/router.d.ts +3 -5
- package/components/router.d.ts.map +1 -1
- package/components/router.js +1 -247
- package/components/router.js.map +1 -1
- package/components/select.d.ts +1 -1
- package/components/select.d.ts.map +1 -1
- package/components/select.js +1 -217
- package/components/select.js.map +1 -1
- package/components/skeleton.js +1 -55
- package/components/skeleton.js.map +1 -1
- package/components/split.d.ts.map +1 -1
- package/components/split.js +1 -154
- package/components/split.js.map +1 -1
- package/components/switch.js +1 -93
- package/components/switch.js.map +1 -1
- package/components/text.d.ts.map +1 -1
- package/components/text.js +1 -46
- package/components/text.js.map +1 -1
- package/components/time.d.ts +1 -1
- package/components/time.d.ts.map +1 -1
- package/components/time.js +1 -78
- package/components/time.js.map +1 -1
- package/components/tooltip.d.ts.map +1 -1
- package/components/tooltip.js +1 -85
- package/components/tooltip.js.map +1 -1
- package/components/typewriter.d.ts +1 -1
- package/components/typewriter.d.ts.map +1 -1
- package/components/typewriter.js +1 -128
- package/components/typewriter.js.map +1 -1
- package/core/global-style.d.ts +1 -1
- package/core/global-style.d.ts.map +1 -1
- package/core/global-style.js +1 -52
- package/core/global-style.js.map +1 -1
- package/core/super-anchor.d.ts.map +1 -1
- package/core/super-anchor.js +1 -39
- package/core/super-anchor.js.map +1 -1
- package/core/super-input.d.ts +1 -1
- package/core/super-input.d.ts.map +1 -1
- package/core/super-input.js +1 -117
- package/core/super-input.js.map +1 -1
- package/core/super-openable.d.ts +1 -1
- package/core/super-openable.d.ts.map +1 -1
- package/core/super-openable.js +1 -37
- package/core/super-openable.js.map +1 -1
- package/custom-elements.json +1 -1
- package/details.js +1 -5
- package/details.js.map +1 -1
- package/dev/components/alert.d.ts.map +1 -1
- package/dev/components/alert.js +5 -7
- package/dev/components/alert.js.map +1 -1
- package/dev/components/avatar.d.ts.map +1 -1
- package/dev/components/avatar.js +3 -5
- package/dev/components/avatar.js.map +1 -1
- package/dev/components/breath.d.ts +2 -2
- package/dev/components/breath.d.ts.map +1 -1
- package/dev/components/breath.js +13 -20
- package/dev/components/breath.js.map +1 -1
- package/dev/components/button.d.ts +1 -1
- package/dev/components/button.d.ts.map +1 -1
- package/dev/components/button.js +1 -1
- package/dev/components/button.js.map +1 -1
- package/dev/components/card.d.ts.map +1 -1
- package/dev/components/card.js +1 -5
- package/dev/components/card.js.map +1 -1
- package/dev/components/carousel.d.ts.map +1 -1
- package/dev/components/carousel.js +4 -10
- package/dev/components/carousel.js.map +1 -1
- package/dev/components/details.d.ts +0 -1
- package/dev/components/details.d.ts.map +1 -1
- package/dev/components/details.js +14 -23
- package/dev/components/details.js.map +1 -1
- package/dev/components/dialog.d.ts +1 -1
- package/dev/components/dialog.d.ts.map +1 -1
- package/dev/components/divider.js +22 -22
- package/dev/components/divider.js.map +1 -1
- package/dev/components/dragbox.d.ts +1 -1
- package/dev/components/dragbox.d.ts.map +1 -1
- package/dev/components/dragbox.js +2 -1
- package/dev/components/dragbox.js.map +1 -1
- package/dev/components/flex.d.ts.map +1 -1
- package/dev/components/flex.js +1 -1
- package/dev/components/flex.js.map +1 -1
- package/dev/components/grid.d.ts.map +1 -1
- package/dev/components/grid.js +2 -2
- package/dev/components/grid.js.map +1 -1
- package/dev/components/input.js +12 -12
- package/dev/components/input.js.map +1 -1
- package/dev/components/layout.d.ts.map +1 -1
- package/dev/components/layout.js +3 -7
- package/dev/components/layout.js.map +1 -1
- package/dev/components/progress.d.ts.map +1 -1
- package/dev/components/progress.js +38 -38
- package/dev/components/progress.js.map +1 -1
- package/dev/components/range.d.ts +1 -0
- package/dev/components/range.d.ts.map +1 -1
- package/dev/components/range.js +14 -12
- package/dev/components/range.js.map +1 -1
- package/dev/components/router.d.ts +3 -5
- package/dev/components/router.d.ts.map +1 -1
- package/dev/components/router.js +10 -18
- package/dev/components/router.js.map +1 -1
- package/dev/components/select.d.ts +1 -1
- package/dev/components/select.d.ts.map +1 -1
- package/dev/components/select.js +23 -21
- package/dev/components/select.js.map +1 -1
- package/dev/components/skeleton.d.ts.map +1 -1
- package/dev/components/skeleton.js +3 -2
- package/dev/components/skeleton.js.map +1 -1
- package/dev/components/split.d.ts.map +1 -1
- package/dev/components/split.js +7 -6
- package/dev/components/split.js.map +1 -1
- package/dev/components/switch.d.ts.map +1 -1
- package/dev/components/switch.js +6 -9
- package/dev/components/switch.js.map +1 -1
- package/dev/components/text.d.ts.map +1 -1
- package/dev/components/text.js +2 -6
- package/dev/components/text.js.map +1 -1
- package/dev/components/time.d.ts +1 -1
- package/dev/components/time.d.ts.map +1 -1
- package/dev/components/time.js +1 -3
- package/dev/components/time.js.map +1 -1
- package/dev/components/tooltip.d.ts.map +1 -1
- package/dev/components/tooltip.js +8 -11
- package/dev/components/tooltip.js.map +1 -1
- package/dev/components/typewriter.d.ts +1 -1
- package/dev/components/typewriter.d.ts.map +1 -1
- package/dev/components/typewriter.js.map +1 -1
- package/dev/core/global-style.d.ts +1 -1
- package/dev/core/global-style.d.ts.map +1 -1
- package/dev/core/global-style.js +1 -1
- package/dev/core/global-style.js.map +1 -1
- package/dev/core/super-anchor.d.ts.map +1 -1
- package/dev/core/super-anchor.js +20 -18
- package/dev/core/super-anchor.js.map +1 -1
- package/dev/core/super-input.d.ts +1 -1
- package/dev/core/super-input.d.ts.map +1 -1
- package/dev/core/super-input.js +34 -34
- package/dev/core/super-input.js.map +1 -1
- package/dev/core/super-openable.d.ts +1 -1
- package/dev/core/super-openable.d.ts.map +1 -1
- package/dialog.js +1 -5
- package/dialog.js.map +1 -1
- package/divider.js +1 -5
- package/divider.js.map +1 -1
- package/dragbox.js +1 -5
- package/dragbox.js.map +1 -1
- package/flex.js +1 -5
- package/flex.js.map +1 -1
- package/form.js +1 -5
- package/form.js.map +1 -1
- package/grid.js +1 -5
- package/grid.js.map +1 -1
- package/index.js +1 -56
- package/index.js.map +1 -1
- package/input.js +1 -5
- package/input.js.map +1 -1
- package/layout.js +1 -5
- package/layout.js.map +1 -1
- package/link.js +1 -5
- package/link.js.map +1 -1
- package/package.json +3 -3
- package/progress.js +1 -5
- package/progress.js.map +1 -1
- package/range.js +1 -5
- package/range.js.map +1 -1
- package/rotate.js +1 -5
- package/rotate.js.map +1 -1
- package/router.js +1 -5
- package/router.js.map +1 -1
- package/select.js +1 -5
- package/select.js.map +1 -1
- package/skeleton.js +1 -5
- package/skeleton.js.map +1 -1
- package/split.js +1 -5
- package/split.js.map +1 -1
- package/src/components/alert.ts +5 -7
- package/src/components/avatar.ts +3 -5
- package/src/components/breath.ts +17 -22
- package/src/components/button.ts +2 -2
- package/src/components/card.ts +1 -5
- package/src/components/carousel.ts +4 -10
- package/src/components/details.ts +14 -23
- package/src/components/dialog.ts +1 -1
- package/src/components/divider.ts +25 -25
- package/src/components/dragbox.ts +3 -2
- package/src/components/flex.ts +4 -2
- package/src/components/grid.ts +5 -3
- package/src/components/input.ts +12 -12
- package/src/components/layout.ts +3 -11
- package/src/components/progress.ts +41 -39
- package/src/components/range.ts +15 -14
- package/src/components/router.ts +14 -14
- package/src/components/select.ts +24 -22
- package/src/components/skeleton.ts +3 -2
- package/src/components/split.ts +12 -8
- package/src/components/switch.ts +6 -9
- package/src/components/text.ts +5 -7
- package/src/components/time.ts +2 -4
- package/src/components/tooltip.ts +8 -13
- package/src/components/typewriter.ts +5 -3
- package/src/core/global-style.ts +2 -2
- package/src/core/super-anchor.ts +23 -19
- package/src/core/super-input.ts +35 -35
- package/src/core/super-openable.ts +1 -1
- package/switch.js +1 -5
- package/switch.js.map +1 -1
- package/text.js +1 -5
- package/text.js.map +1 -1
- package/time.js +1 -5
- package/time.js.map +1 -1
- package/tooltip.js +1 -5
- package/tooltip.js.map +1 -1
- package/typewriter.js +1 -5
- package/typewriter.js.map +1 -1
- package/vscode.html-custom-data.json +1 -1
- package/web-types.json +1 -1
package/components/select.js
CHANGED
@@ -1,218 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
import { godown } from '@godown/element/decorators/godown.js';
|
3
|
-
import { part } from '@godown/element/decorators/part.js';
|
4
|
-
import { styles } from '@godown/element/decorators/styles.js';
|
5
|
-
import { attr } from '@godown/element/directives/attr.js';
|
6
|
-
import { htmlSlot } from '@godown/element/directives/html-slot.js';
|
7
|
-
import svgCaretDown from '@godown/f7-icon/icons/chevron-down.js';
|
8
|
-
import { css, html, nothing } from 'lit';
|
9
|
-
import { property, state } from 'lit/decorators.js';
|
10
|
-
import { ifDefined } from 'lit/directives/if-defined.js';
|
11
|
-
import Input from './input.js';
|
12
|
-
|
13
|
-
function contain(a, b) {
|
14
|
-
return a && b && a.toLowerCase().includes(b.toLowerCase());
|
15
|
-
}
|
16
|
-
function betweenAt(i, s, c) {
|
17
|
-
const start = s.slice(0, i).lastIndexOf(c) + 1 || 0;
|
18
|
-
const end = s.indexOf(c, i) || s.length;
|
19
|
-
return s.slice(start, end);
|
20
|
-
}
|
21
|
-
function updateChecked(element, operation) {
|
22
|
-
if (element) {
|
23
|
-
const name = "checked";
|
24
|
-
if (operation) {
|
25
|
-
element.setAttribute(name, "");
|
26
|
-
}
|
27
|
-
else {
|
28
|
-
element.removeAttribute(name);
|
29
|
-
}
|
30
|
-
}
|
31
|
-
}
|
32
|
-
const protoName = "select";
|
33
|
-
/**
|
34
|
-
* {@linkcode Select} is similar to `<select>`.
|
35
|
-
*
|
36
|
-
* Elements with the value attribute/property can be used as options.
|
37
|
-
*
|
38
|
-
* The checked attribute will be added to the selected element.
|
39
|
-
*
|
40
|
-
* Multi-selected state looks the same as single-selected.
|
41
|
-
*
|
42
|
-
* Input will filter the element.
|
43
|
-
*
|
44
|
-
* @slot - Options.
|
45
|
-
* @category input
|
46
|
-
*/
|
47
|
-
let Select = class Select extends Input {
|
48
|
-
constructor() {
|
49
|
-
super(...arguments);
|
50
|
-
this.multiple = false;
|
51
|
-
this.visible = false;
|
52
|
-
this.autoDirection = "bottom";
|
53
|
-
this._store = [];
|
54
|
-
}
|
55
|
-
render() {
|
56
|
-
return html `<div part="root" ${attr({
|
57
|
-
...this.observedRecord,
|
58
|
-
direction: this.direction || this.autoDirection,
|
59
|
-
})} class="input-field">${[
|
60
|
-
this._renderPrefix(),
|
61
|
-
html `<input part="input" dir="${ifDefined(this.dir)}" id="${this.makeId}" .value="${this.text}" type="${this.type}" placeholder="${this.placeholder || nothing}" ?autofocus="${this.autofocus}" autocapitalize="${this.autocapitalize || nothing}" autocomplete="${this.autocomplete || nothing}" ?disabled="${this.disabled}" @focus="${this._handleFocus}" @input="${this._handleInput}">`,
|
62
|
-
html `<label for="${this.makeId}" part="suffix"><i part="icon">${svgCaretDown()}</i></label>`,
|
63
|
-
html `<label for="${this.makeId}" part="content">${htmlSlot()}</label>`,
|
64
|
-
]}</div>`;
|
65
|
-
}
|
66
|
-
_handleFocus() {
|
67
|
-
if (!this.direction) {
|
68
|
-
const { top, bottom } = this.getBoundingClientRect();
|
69
|
-
if (window.innerHeight - bottom < this._content.clientHeight && top > this._content.clientHeight) {
|
70
|
-
this.autoDirection = "top";
|
71
|
-
}
|
72
|
-
else {
|
73
|
-
this.autoDirection = "bottom";
|
74
|
-
}
|
75
|
-
}
|
76
|
-
this.visible = true;
|
77
|
-
}
|
78
|
-
firstUpdated() {
|
79
|
-
this.events.add(this._content, "click", (e) => {
|
80
|
-
e.preventDefault();
|
81
|
-
e.stopPropagation();
|
82
|
-
const { target } = e;
|
83
|
-
const value = this.optionValue(target);
|
84
|
-
if (value) {
|
85
|
-
const operation = this.select(value, target.textContent);
|
86
|
-
if (!this.multiple) {
|
87
|
-
updateChecked(this.lastChecked, 0);
|
88
|
-
}
|
89
|
-
updateChecked(target, operation);
|
90
|
-
this.lastChecked = target;
|
91
|
-
}
|
92
|
-
this._input.focus();
|
93
|
-
});
|
94
|
-
this.events.add(document, "click", (e) => {
|
95
|
-
// e.preventDefault();
|
96
|
-
e.stopPropagation();
|
97
|
-
const composed1 = e.composedPath()[0];
|
98
|
-
if (composed1 && !this.shadowRoot.contains(composed1)) {
|
99
|
-
this.blur();
|
100
|
-
}
|
101
|
-
});
|
102
|
-
}
|
103
|
-
_connectedInit() {
|
104
|
-
if (!this.value) {
|
105
|
-
const checked = [...this.querySelectorAll("[checked]")];
|
106
|
-
const list = this.multiple
|
107
|
-
? checked
|
108
|
-
: checked.length
|
109
|
-
? [this.lastChecked = checked[0]]
|
110
|
-
: [];
|
111
|
-
list.forEach((element) => {
|
112
|
-
const operation = this.select(this.optionValue(element), element.textContent);
|
113
|
-
updateChecked(element, operation);
|
114
|
-
});
|
115
|
-
this.default = this.value;
|
116
|
-
this.defaultText = this.text;
|
117
|
-
this.defaultChecked = checked;
|
118
|
-
}
|
119
|
-
if (!this.text) {
|
120
|
-
this.text = "";
|
121
|
-
}
|
122
|
-
}
|
123
|
-
reset() {
|
124
|
-
this.value = this.default;
|
125
|
-
this.text = this.defaultText;
|
126
|
-
this.querySelectorAll("[checked]").forEach(element => updateChecked(element, 0));
|
127
|
-
this.defaultChecked.forEach(element => updateChecked(element, 1));
|
128
|
-
}
|
129
|
-
select(value, text) {
|
130
|
-
text ||= value;
|
131
|
-
let operation = 0;
|
132
|
-
if (this.multiple) {
|
133
|
-
const i = this._store.findIndex(s => s.value === value);
|
134
|
-
if (i > -1) {
|
135
|
-
this._store.splice(i, 1);
|
136
|
-
}
|
137
|
-
else {
|
138
|
-
this._store.push({ value, text });
|
139
|
-
operation = 1;
|
140
|
-
}
|
141
|
-
this.value = this._store.map(s => s.value);
|
142
|
-
this.text = this._store.map(s => s.text).join(", ");
|
143
|
-
}
|
144
|
-
else {
|
145
|
-
if (this.value === value) {
|
146
|
-
this.value = "";
|
147
|
-
this.text = "";
|
148
|
-
}
|
149
|
-
else {
|
150
|
-
this.value = value;
|
151
|
-
this.text = text;
|
152
|
-
operation = 1;
|
153
|
-
}
|
154
|
-
}
|
155
|
-
this.dispatchEvent(new CustomEvent("change", { detail: this.namevalue() }));
|
156
|
-
this.filter();
|
157
|
-
return operation;
|
158
|
-
}
|
159
|
-
filter(query) {
|
160
|
-
query = query?.trim();
|
161
|
-
[...this.children].forEach((element) => {
|
162
|
-
this.filterCallback(element, !query
|
163
|
-
|| contain(this.optionValue(element), query)
|
164
|
-
|| contain(element.textContent, query), query);
|
165
|
-
});
|
166
|
-
}
|
167
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
168
|
-
filterCallback(element, match, query) {
|
169
|
-
element.style.display = match ? "" : "none";
|
170
|
-
}
|
171
|
-
_handleInput(e) {
|
172
|
-
e.stopPropagation();
|
173
|
-
if (this.compositing) {
|
174
|
-
return;
|
175
|
-
}
|
176
|
-
const s = this._input.value;
|
177
|
-
this.filter(this.multiple ? betweenAt(this._input.selectionStart, s, ",") : s);
|
178
|
-
this.dispatchEvent(new CustomEvent("input", { detail: this.namevalue() }));
|
179
|
-
}
|
180
|
-
focus(options) {
|
181
|
-
this._input.focus(options);
|
182
|
-
this.visible = true;
|
183
|
-
}
|
184
|
-
blur() {
|
185
|
-
this._input.blur();
|
186
|
-
this.visible = false;
|
187
|
-
super.blur();
|
188
|
-
}
|
189
|
-
optionValue(option) {
|
190
|
-
return option.value || option.getAttribute("value") || "";
|
191
|
-
}
|
192
|
-
};
|
193
|
-
__decorate([
|
194
|
-
property()
|
195
|
-
], Select.prototype, "text", void 0);
|
196
|
-
__decorate([
|
197
|
-
part("content")
|
198
|
-
], Select.prototype, "_content", void 0);
|
199
|
-
__decorate([
|
200
|
-
property()
|
201
|
-
], Select.prototype, "direction", void 0);
|
202
|
-
__decorate([
|
203
|
-
property({ type: Boolean })
|
204
|
-
], Select.prototype, "multiple", void 0);
|
205
|
-
__decorate([
|
206
|
-
property({ type: Boolean })
|
207
|
-
], Select.prototype, "visible", void 0);
|
208
|
-
__decorate([
|
209
|
-
state()
|
210
|
-
], Select.prototype, "autoDirection", void 0);
|
211
|
-
Select = __decorate([
|
212
|
-
godown(protoName),
|
213
|
-
styles(css `[part=input]{text-overflow:ellipsis}[part=content]{position:absolute;width:100%;visibility:hidden}[direction=bottom] [part=content]{top:100%}[direction=top] [part=content]{bottom:100%}[visible] [part=content]{visibility:visible}`)
|
214
|
-
], Select);
|
215
|
-
var Select$1 = Select;
|
216
|
-
|
217
|
-
export { Select$1 as default };
|
1
|
+
import{__decorate as t}from"tslib";import{godown as e}from"@godown/element/decorators/godown.js";import{part as i}from"@godown/element/decorators/part.js";import{styles as o}from"@godown/element/decorators/styles.js";import{attr as s}from"@godown/element/directives/attr.js";import{htmlSlot as n}from"@godown/element/directives/html-slot.js";import l from"@godown/f7-icon/icons/chevron-down.js";import{css as r,html as h,nothing as a}from"lit";import{property as c,state as u}from"lit/decorators.js";import{ifDefined as d}from"lit/directives/if-defined.js";import p from"./input.js";function f(t,e){return t&&e&&t.toLowerCase().includes(e.toLowerCase())}function m(t,e){if(t){const i="checked";e?t.setAttribute(i,""):t.removeAttribute(i)}}let v=class Select extends p{constructor(){super(...arguments),this.multiple=!1,this.visible=!1,this.autoDirection="bottom",this._store=[]}render(){return h`<div part="root" ${s({...this.observedRecord,direction:this.direction||this.autoDirection})} class="input-field">${[this._renderPrefix(),h`<input part="input" dir="${d(this.dir)}" id="${this.makeId}" .value="${this.text}" type="${this.type}" placeholder="${this.placeholder||a}" ?autofocus="${this.autofocus}" autocapitalize="${this.autocapitalize||a}" autocomplete="${this.autocomplete||a}" ?disabled="${this.disabled}" @focus="${this._handleFocus}" @input="${this._handleInput}">`,h`<label for="${this.makeId}" part="suffix"><i part="icon">${l()}</i></label>`,h`<label for="${this.makeId}" part="content">${n()}</label>`]}</div>`}_handleFocus(){if(!this.direction){const{top:t,bottom:e}=this.getBoundingClientRect();window.innerHeight-e<this._content.clientHeight&&t>this._content.clientHeight?this.autoDirection="top":this.autoDirection="bottom"}this.visible=!0}firstUpdated(){this.events.add(this._content,"click",(t=>{t.preventDefault(),t.stopPropagation();const{target:e}=t,i=this.optionValue(e);if(i){const t=this.select(i,e.textContent);this.multiple||m(this.lastChecked,0),m(e,t),this.lastChecked=e}this._input.focus()})),this.events.add(document,"click",(t=>{t.stopPropagation();const e=t.composedPath()[0];e&&!this.shadowRoot.contains(e)&&this.blur()}))}_connectedInit(){if(!this.value){const t=[...this.querySelectorAll("[checked]")];(this.multiple?t:t.length?[this.lastChecked=t[0]]:[]).forEach((t=>{m(t,this.select(this.optionValue(t),t.textContent))})),this.default=this.value,this.defaultText=this.text,this.defaultChecked=t}this.text||(this.text="")}reset(){this.value=this.default,this.text=this.defaultText,this.querySelectorAll("[checked]").forEach((t=>m(t,0))),this.defaultChecked.forEach((t=>m(t,1)))}select(t,e){e||=t;let i=0;if(this.multiple){const o=this._store.findIndex((e=>e.value===t));o>-1?this._store.splice(o,1):(this._store.push({value:t,text:e}),i=1),this.value=this._store.map((t=>t.value)),this.text=this._store.map((t=>t.text)).join(", ")}else this.value===t?(this.value="",this.text=""):(this.value=t,this.text=e,i=1);return this.dispatchEvent(new CustomEvent("change",{detail:this.namevalue()})),this.filter(),i}filter(t){t=t?.trim(),[...this.children].forEach((e=>{this.filterCallback(e,!t||f(this.optionValue(e),t)||f(e.textContent,t),t)}))}filterCallback(t,e,i){t.style.display=e?"":"none"}_handleInput(t){if(t.stopPropagation(),this.compositing)return;const e=this._input.value;this.filter(this.multiple?function(t,e,i){const o=e.slice(0,t).lastIndexOf(i)+1||0,s=e.indexOf(i,t)||e.length;return e.slice(o,s)}(this._input.selectionStart,e,","):e),this.dispatchEvent(new CustomEvent("input",{detail:this.namevalue()}))}focus(t){this._input.focus(t),this.visible=!0}blur(){this._input.blur(),this.visible=!1,super.blur()}optionValue(t){return t.value||t.getAttribute("value")||""}};t([c()],v.prototype,"text",void 0),t([i("content")],v.prototype,"_content",void 0),t([c()],v.prototype,"direction",void 0),t([c({type:Boolean})],v.prototype,"multiple",void 0),t([c({type:Boolean})],v.prototype,"visible",void 0),t([u()],v.prototype,"autoDirection",void 0),v=t([e("select"),o(r`[part=input]{text-overflow:ellipsis}[part=content]{position:absolute;width:100%;visibility:hidden}[direction=bottom] [part=content]{top:100%}[direction=top] [part=content]{bottom:100%}[visible] [part=content]{visibility:visible}`)],v);var b=v;export{b as default};
|
218
2
|
//# sourceMappingURL=select.js.map
|
package/components/select.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"select.js","sources":["../src/components/select.ts"],"sourcesContent":null,"names":[
|
1
|
+
{"version":3,"file":"select.js","sources":["../src/components/select.ts"],"sourcesContent":null,"names":["contain","a","b","toLowerCase","includes","updateChecked","element","operation","name","setAttribute","removeAttribute","Select","Input","constructor","this","multiple","visible","autoDirection","_store","render","html","attr","observedRecord","direction","_renderPrefix","ifDefined","dir","makeId","text","type","placeholder","nothing","autofocus","autocapitalize","autocomplete","disabled","_handleFocus","_handleInput","svgCaretDown","htmlSlot","top","bottom","getBoundingClientRect","window","innerHeight","_content","clientHeight","firstUpdated","events","add","e","preventDefault","stopPropagation","target","value","optionValue","select","textContent","lastChecked","_input","focus","document","composed1","composedPath","shadowRoot","contains","blur","_connectedInit","checked","querySelectorAll","length","forEach","default","defaultText","defaultChecked","reset","i","findIndex","s","splice","push","map","join","dispatchEvent","CustomEvent","detail","namevalue","filter","query","trim","children","filterCallback","match","style","display","compositing","c","start","slice","lastIndexOf","end","indexOf","betweenAt","selectionStart","options","super","option","getAttribute","__decorate","property","prototype","part","Boolean","state","godown","styles","css","Select$1"],"mappings":"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"}
|
package/components/skeleton.js
CHANGED
@@ -1,56 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
import { godown } from '@godown/element/decorators/godown.js';
|
3
|
-
import { styles } from '@godown/element/decorators/styles.js';
|
4
|
-
import { attr } from '@godown/element/directives/attr.js';
|
5
|
-
import { htmlSlot } from '@godown/element/directives/html-slot.js';
|
6
|
-
import iconPhoto from '@godown/f7-icon/icons/photo.js';
|
7
|
-
import { css, html } from 'lit';
|
8
|
-
import { property, state } from 'lit/decorators.js';
|
9
|
-
import { scopePrefix, cssGlobalVars, GlobalStyle } from '../core/global-style.js';
|
10
|
-
|
11
|
-
const protoName = "skeleton";
|
12
|
-
const cssScope = scopePrefix(protoName);
|
13
|
-
/**
|
14
|
-
* {@linkcode Skeleton} renders a skeleton screen.
|
15
|
-
*
|
16
|
-
* @slot loading - The content if loading is true.
|
17
|
-
* @slot - The content if loading is false.
|
18
|
-
* @category feedback
|
19
|
-
*/
|
20
|
-
let Skeleton = class Skeleton extends GlobalStyle {
|
21
|
-
constructor() {
|
22
|
-
super(...arguments);
|
23
|
-
/**
|
24
|
-
* Animation type.
|
25
|
-
* opacity animation only effect on slotted element and image icon.
|
26
|
-
*/
|
27
|
-
this.animation = "position";
|
28
|
-
/**
|
29
|
-
* If false, render slot only.
|
30
|
-
*/
|
31
|
-
this.loading = true;
|
32
|
-
}
|
33
|
-
render() {
|
34
|
-
if (!this.loading) {
|
35
|
-
return htmlSlot();
|
36
|
-
}
|
37
|
-
return html `<div part="root" ${attr(this.observedRecord)}>${this.type === "image" ? iconPhoto() : ""} ${htmlSlot("loading")}</div>`;
|
38
|
-
}
|
39
|
-
};
|
40
|
-
__decorate([
|
41
|
-
property()
|
42
|
-
], Skeleton.prototype, "type", void 0);
|
43
|
-
__decorate([
|
44
|
-
property()
|
45
|
-
], Skeleton.prototype, "animation", void 0);
|
46
|
-
__decorate([
|
47
|
-
state()
|
48
|
-
], Skeleton.prototype, "loading", void 0);
|
49
|
-
Skeleton = __decorate([
|
50
|
-
godown(protoName),
|
51
|
-
styles(css `:host{${cssScope}--from:var(${cssGlobalVars._colors.darkgray[9]});${cssScope}--to:var(${cssGlobalVars._colors.darkgray[7]});${cssScope}--deg:95deg;${cssScope}--duration:1.5s;${cssScope}--icon-size:5em;${cssScope}--icon-margin:.25em;color:var(${cssGlobalVars._colors.darkgray[5]});background:var(${cssScope}--from);min-height:1.5em;width:100%;flex-shrink:0;display:block;overflow:hidden}[part=root]{height:100%;min-height:inherit;text-align:center;animation:var(${cssScope}--duration) ease-in-out 0s infinite none running}svg{--size:var(${cssScope}--icon-size);font-size:var(--size);margin:calc(var(--size) * .05)}[animation=position]{background-image:linear-gradient(var(${cssScope}--deg),var(${cssScope}--from) 36%,var(${cssScope}--to) 50%,var(${cssScope}--from) 64%);background-color:transparent;background-size:200% 100%;animation-name:po}@keyframes po{from{background-position:150% center}to{background-position:-50% center}}[animation=opacity]{animation-name:op;animation-direction:alternate}@keyframes op{50%{opacity:.25}to{opacity:1}}`)
|
52
|
-
], Skeleton);
|
53
|
-
var Skeleton$1 = Skeleton;
|
54
|
-
|
55
|
-
export { Skeleton$1 as default };
|
1
|
+
import{__decorate as o}from"tslib";import{godown as r}from"@godown/element/decorators/godown.js";import{styles as i}from"@godown/element/decorators/styles.js";import{attr as t}from"@godown/element/directives/attr.js";import{htmlSlot as e}from"@godown/element/directives/html-slot.js";import n from"@godown/f7-icon/icons/photo.js";import{css as a,html as s}from"lit";import{property as m,state as d}from"lit/decorators.js";import{scopePrefix as c,cssGlobalVars as l,GlobalStyle as p}from"../core/global-style.js";const g="skeleton",v=c(g);let f=class Skeleton extends p{constructor(){super(...arguments),this.animation="position",this.loading=!0}render(){return this.loading?s`<div part="root" ${t(this.observedRecord)}>${"image"===this.type?n():""} ${e("loading")}</div>`:e()}};o([m()],f.prototype,"type",void 0),o([m()],f.prototype,"animation",void 0),o([d()],f.prototype,"loading",void 0),f=o([r(g),i(a`:host{${v}--from:var(${l._colors.darkgray[9]});${v}--to:var(${l._colors.darkgray[7]});${v}--deg:95deg;${v}--duration:1.5s;${v}--icon-size:5em;${v}--icon-margin:.25em;color:var(${l._colors.darkgray[5]});background:var(${v}--from);min-height:1.5em;width:100%;flex-shrink:0;display:block;overflow:hidden}[part=root]{height:100%;min-height:inherit;text-align:center;animation:var(${v}--duration) ease-in-out 0s infinite none running}svg{--size:var(${v}--icon-size);font-size:var(--size);margin:calc(var(--size) * .05)}[animation=position]{background-image:linear-gradient(var(${v}--deg),var(${v}--from) 36%,var(${v}--to) 50%,var(${v}--from) 64%);background-color:transparent;background-size:200% 100%;animation-name:po}@keyframes po{from{background-position:150% center}to{background-position:-50% center}}[animation=opacity]{animation-name:op;animation-direction:alternate}@keyframes op{50%{opacity:.25}to{opacity:1}}`)],f);var $=f;export{$ as default};
|
56
2
|
//# sourceMappingURL=skeleton.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"skeleton.js","sources":["../src/components/skeleton.ts"],"sourcesContent":null,"names":[
|
1
|
+
{"version":3,"file":"skeleton.js","sources":["../src/components/skeleton.ts"],"sourcesContent":null,"names":["protoName","cssScope","scopePrefix","Skeleton","GlobalStyle","constructor","this","animation","loading","render","html","attr","observedRecord","type","iconPhoto","htmlSlot","__decorate","property","prototype","state","godown","styles","css","cssGlobalVars","_colors","darkgray","Skeleton$1"],"mappings":"ggBAUA,MAAMA,EAAY,WACZC,EAAWC,EAAYF,GAa7B,IAAMG,EAAN,MAAMA,iBAAiBC,EAAvB,WAAAC,uBAYEC,KAASC,UAA2B,WAMpCD,KAAOE,SAAG,EAEA,MAAAC,GACR,OAAKH,KAAKE,QAGHE,CAAI,oBAAoBC,EAAKL,KAAKM,mBACvB,UAAdN,KAAKO,KAAmBC,IAAc,MACtCC,EAAS,mBAJJA,MAjBXC,EAAA,CADCC,KACqBd,EAAAe,UAAA,YAAA,GAOtBF,EAAA,CADCC,KAC6Cd,EAAAe,UAAA,iBAAA,GAM9CF,EAAA,CADCG,KACahB,EAAAe,UAAA,eAAA,GAlBVf,EAAQa,EAAA,CAJbI,EAAOpB,GACPqB,EACCC,CAAG,SAASrB,eAAsBsB,EAAcC,QAAQC,SAAS,OAAOxB,aAAoBsB,EAAcC,QAAQC,SAAS,OAAOxB,gBAAuBA,oBAA2BA,oBAA2BA,kCAAyCsB,EAAcC,QAAQC,SAAS,sBAAsBxB,+JAAsKA,oEAA2EA,gIAAwIA,eAAsBA,oBAA2BA,kBAAyBA,mSAE5uBE,GA+BN,IAAAuB,EAAevB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../src/components/split.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAI9D,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAahD;;;;;;;;GAQG;AACH,cAIM,KAAM,SAAQ,UAAU;IAC5B;;OAEG;IAEH,GAAG,SAAK;IAER;;OAEG;IAEH,KAAK,SAAM;IAGX,OAAO,SAAM;IAGb,YAAY,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAM;IAErC,SAAS,CAAC,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"split.d.ts","sourceRoot":"","sources":["../src/components/split.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAI9D,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAahD;;;;;;;;GAQG;AACH,cAIM,KAAM,SAAQ,UAAU;IAC5B;;OAEG;IAEH,GAAG,SAAK;IAER;;OAEG;IAEH,KAAK,SAAM;IAGX,OAAO,SAAM;IAGb,YAAY,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAM;IAErC,SAAS,CAAC,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;IAYrC,iBAAiB,IAAI,IAAI;IAKzB,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,gBAAgB,EAAE,UAAU,CAAC,GAAG,IAAI;IAa3E;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IA2C9C,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKxB,IAAI,IAAI,IAAI;IAMZ,KAAK,IAAI,IAAI;CAQd;AAED,eAAe,KAAK,CAAC"}
|
package/components/split.js
CHANGED
@@ -1,155 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
import { godown } from '@godown/element/decorators/godown.js';
|
3
|
-
import { styles } from '@godown/element/decorators/styles.js';
|
4
|
-
import { attr } from '@godown/element/directives/attr.js';
|
5
|
-
import { classList } from '@godown/element/directives/class-list.js';
|
6
|
-
import { css, html, nothing } from 'lit';
|
7
|
-
import { property, state } from 'lit/decorators.js';
|
8
|
-
import { scopePrefix, cssGlobalVars } from '../core/global-style.js';
|
9
|
-
import SuperInput from '../core/super-input.js';
|
10
|
-
|
11
|
-
const protoName = "split";
|
12
|
-
const cssScope = scopePrefix(protoName);
|
13
|
-
const loop = (len, fn) => {
|
14
|
-
const result = new Array(len);
|
15
|
-
for (let index = 0; index < len; index++) {
|
16
|
-
result[index] = fn(index);
|
17
|
-
}
|
18
|
-
return result;
|
19
|
-
};
|
20
|
-
/**
|
21
|
-
* {@linkcode Split} renders multiple input boxes.
|
22
|
-
*
|
23
|
-
* Input: will move the focus box backward until the complete input from start to end.
|
24
|
-
*
|
25
|
-
* Delete: will move the focus box forward until the first and no inputs for each.
|
26
|
-
*
|
27
|
-
* @category input
|
28
|
-
*/
|
29
|
-
let Split = class Split extends SuperInput {
|
30
|
-
constructor() {
|
31
|
-
super(...arguments);
|
32
|
-
/**
|
33
|
-
* The number of input boxes.
|
34
|
-
*/
|
35
|
-
this.len = 6;
|
36
|
-
/**
|
37
|
-
* Focus index.
|
38
|
-
*/
|
39
|
-
this.index = -1;
|
40
|
-
this.current = -1;
|
41
|
-
this.currentValue = [];
|
42
|
-
}
|
43
|
-
render() {
|
44
|
-
return html `<div part="root" ${attr(this.observedRecord)}>${loop(this.len, (index) => html `<span part="input-box" @click="${this.disabled ? null : () => this.focusAt(index)}" class="${classList({ focus: this.current === index }) || nothing}">${this.currentValue[index]}</span>`)} <input part="input" id="${this.makeId}" @blur="${this.blur}" @input="${this._handleInput}" .value="${
|
45
|
-
/* Ensure that input always has a value of length this.len */
|
46
|
-
this.value.padStart(this.len, " ")}"></div>`;
|
47
|
-
}
|
48
|
-
connectedCallback() {
|
49
|
-
super.connectedCallback();
|
50
|
-
this.reset();
|
51
|
-
}
|
52
|
-
_handleInput(e) {
|
53
|
-
e.stopPropagation();
|
54
|
-
if (this.compositing) {
|
55
|
-
return;
|
56
|
-
}
|
57
|
-
this.fillInput(e.data);
|
58
|
-
this.value = this.currentValue.join("");
|
59
|
-
this.dispatchEvent(new CustomEvent("input", { detail: this.value, bubbles: true, composed: true }));
|
60
|
-
this.dispatchEvent(new CustomEvent("change", { detail: this.value, composed: true }));
|
61
|
-
}
|
62
|
-
/**
|
63
|
-
* Fill input with data.
|
64
|
-
*
|
65
|
-
* If data is null
|
66
|
-
* - If current value is null, move to before.
|
67
|
-
* - If current value is not null, delete it.
|
68
|
-
*
|
69
|
-
* If data is not null
|
70
|
-
* - If current value is null, input data.
|
71
|
-
* - If current value is not null, input data and move to after.
|
72
|
-
*
|
73
|
-
* If data is multiple characters,
|
74
|
-
* Fill input with data[0] and call fillInput with data.slice(1).
|
75
|
-
*
|
76
|
-
* @param data Input event data.
|
77
|
-
*/
|
78
|
-
fillInput(data) {
|
79
|
-
if (data === null) {
|
80
|
-
// delete
|
81
|
-
if (this.currentValue[this.current] !== null) {
|
82
|
-
// delete exist value
|
83
|
-
this.currentValue[this.current] = null;
|
84
|
-
}
|
85
|
-
else {
|
86
|
-
// go to before
|
87
|
-
this.currentValue[this.current - 1] = null;
|
88
|
-
const lastNotNull = this.currentValue.findLastIndex(a => a !== null);
|
89
|
-
this.current = this.current - 1 < 0 ? lastNotNull < 0 ? 0 : lastNotNull : this.current - 1;
|
90
|
-
}
|
91
|
-
return;
|
92
|
-
}
|
93
|
-
const multiple = data.length > 1;
|
94
|
-
// input
|
95
|
-
this.currentValue[this.current] = data[0];
|
96
|
-
if (this.current + 1 >= this.len) {
|
97
|
-
// index overflow
|
98
|
-
this.current = this.currentValue.indexOf(null);
|
99
|
-
if (this.current === -1) {
|
100
|
-
this.blur();
|
101
|
-
}
|
102
|
-
}
|
103
|
-
else {
|
104
|
-
// go to after
|
105
|
-
this.current += 1;
|
106
|
-
}
|
107
|
-
if (multiple) {
|
108
|
-
const after = data.slice(1);
|
109
|
-
if (after) {
|
110
|
-
this.fillInput(after);
|
111
|
-
}
|
112
|
-
}
|
113
|
-
}
|
114
|
-
focus() {
|
115
|
-
this.focusAt(this.current);
|
116
|
-
super.focus();
|
117
|
-
}
|
118
|
-
focusAt(i) {
|
119
|
-
this.current = i;
|
120
|
-
this._input.focus();
|
121
|
-
}
|
122
|
-
blur() {
|
123
|
-
this._input.blur();
|
124
|
-
this.current = -1;
|
125
|
-
super.blur();
|
126
|
-
}
|
127
|
-
reset() {
|
128
|
-
this.current = -1;
|
129
|
-
this.value = this.default;
|
130
|
-
this.currentValue = this.value.split("").concat(Array(this.len - this.value.length).fill(null));
|
131
|
-
if (this.index > -1) {
|
132
|
-
this.current = this.index;
|
133
|
-
}
|
134
|
-
}
|
135
|
-
};
|
136
|
-
__decorate([
|
137
|
-
property({ type: Number })
|
138
|
-
], Split.prototype, "len", void 0);
|
139
|
-
__decorate([
|
140
|
-
property({ type: Number })
|
141
|
-
], Split.prototype, "index", void 0);
|
142
|
-
__decorate([
|
143
|
-
state()
|
144
|
-
], Split.prototype, "current", void 0);
|
145
|
-
__decorate([
|
146
|
-
state()
|
147
|
-
], Split.prototype, "currentValue", void 0);
|
148
|
-
Split = __decorate([
|
149
|
-
godown(protoName),
|
150
|
-
styles(css `:host{color:var(${cssGlobalVars.foreground});display:block;border-radius:1px;width:-moz-fit-content;width:fit-content;${cssScope}--size:1.45em;${cssScope}--gap:.25em}:host([contents]) [part=root]{width:-moz-fit-content;width:fit-content}[part=root]{gap:var(${cssScope}--gap);width:100%;position:relative;vertical-align:top;display:flex;justify-content:space-between;border-radius:inherit}[part=input-box]{width:var(${cssScope}--size);height:var(${cssScope}--size);vertical-align:top;text-align:center;background-color:var(${cssGlobalVars.input}-background);border-radius:inherit}[part=input]{width:100%;height:100%;opacity:0;background:0 0;position:absolute;z-index:-1}.focus{box-shadow:var(${cssGlobalVars.input}-box-shadow)}`)
|
151
|
-
], Split);
|
152
|
-
var Split$1 = Split;
|
153
|
-
|
154
|
-
export { Split$1 as default };
|
1
|
+
import{__decorate as t}from"tslib";import{godown as e}from"@godown/element/decorators/godown.js";import{styles as r}from"@godown/element/decorators/styles.js";import{attr as i}from"@godown/element/directives/attr.js";import{classList as s}from"@godown/element/directives/class-list.js";import{css as n,html as o,nothing as u}from"lit";import{property as l,state as a}from"lit/decorators.js";import{scopePrefix as c,cssGlobalVars as h}from"../core/global-style.js";import p from"../core/super-input.js";const d="split",f=c(d);let m=class Split extends p{constructor(){super(...arguments),this.len=6,this.index=-1,this.current=-1,this.currentValue=[]}render(){return o`<div part="root" ${i(this.observedRecord)}>${((t,e)=>{const r=new Array(t);for(let i=0;i<t;i++)r[i]=e(i);return r})(this.len,(t=>o`<span part="input-box" @click="${this.disabled?null:()=>this.focusAt(t)}" class="${s({focus:this.current===t})||u}">${this.currentValue[t]}</span>`))} <input part="input" id="${this.makeId}" @blur="${this.blur}" @input="${this._handleInput}" .value="${this.value.padStart(this.len," ")}"></div>`}connectedCallback(){super.connectedCallback(),this.reset()}_handleInput(t){t.stopPropagation(),this.compositing||(this.fillInput(t.data),this.value=this.currentValue.join(""),this.dispatchEvent(new CustomEvent("input",{detail:this.value,bubbles:!0,composed:!0})),this.dispatchEvent(new CustomEvent("change",{detail:this.value,composed:!0})))}fillInput(t){if(null===t){if(null!==this.currentValue[this.current])this.currentValue[this.current]=null;else{this.currentValue[this.current-1]=null;const t=this.currentValue.findLastIndex((t=>null!==t));this.current=this.current-1<0?t<0?0:t:this.current-1}return}const e=t.length>1;if(this.currentValue[this.current]=t[0],this.current+1>=this.len?(this.current=this.currentValue.indexOf(null),-1===this.current&&this.blur()):this.current+=1,e){const e=t.slice(1);e&&this.fillInput(e)}}focus(){this.focusAt(this.current),super.focus()}focusAt(t){this.current=t,this._input.focus()}blur(){this._input.blur(),this.current=-1,super.blur()}reset(){this.current=-1,this.value=this.default,this.currentValue=this.value.split("").concat(Array(this.len-this.value.length).fill(null)),this.index>-1&&(this.current=this.index)}};t([l({type:Number})],m.prototype,"len",void 0),t([l({type:Number})],m.prototype,"index",void 0),t([a()],m.prototype,"current",void 0),t([a()],m.prototype,"currentValue",void 0),m=t([e(d),r(n`:host{color:var(${h.foreground});display:block;border-radius:1px;width:-moz-fit-content;width:fit-content;${f}--size:1.45em;${f}--gap:.25em}:host([contents]) [part=root]{width:-moz-fit-content;width:fit-content}[part=root]{gap:var(${f}--gap);width:100%;position:relative;vertical-align:top;display:flex;justify-content:space-between;border-radius:inherit}[part=input-box]{width:var(${f}--size);height:var(${f}--size);vertical-align:top;text-align:center;background-color:var(${h.input}-background);border-radius:inherit}[part=input]{width:100%;height:100%;opacity:0;background:0 0;position:absolute;z-index:-1}.focus{box-shadow:var(${h.input}-box-shadow)}`)],m);var v=m;export{v as default};
|
155
2
|
//# sourceMappingURL=split.js.map
|
package/components/split.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"split.js","sources":["../src/components/split.ts"],"sourcesContent":null,"names":[
|
1
|
+
{"version":3,"file":"split.js","sources":["../src/components/split.ts"],"sourcesContent":null,"names":["protoName","cssScope","scopePrefix","Split","SuperInput","constructor","this","len","index","current","currentValue","render","html","attr","observedRecord","fn","result","Array","loop","disabled","focusAt","classList","focus","nothing","makeId","blur","_handleInput","value","padStart","connectedCallback","super","reset","e","stopPropagation","compositing","fillInput","data","join","dispatchEvent","CustomEvent","detail","bubbles","composed","lastNotNull","findLastIndex","a","multiple","length","indexOf","after","slice","i","_input","default","split","concat","fill","__decorate","property","type","Number","prototype","state","godown","styles","css","cssGlobalVars","foreground","input","Split$1"],"mappings":"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"}
|