beercss 3.13.2 → 4.0.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/LICENSE +21 -21
- package/README.md +331 -328
- package/custom-element/index.d.ts +18 -18
- package/custom-element/index.js +7 -7
- package/dist/cdn/arch.svg +3 -3
- package/dist/cdn/arrow.svg +3 -3
- package/dist/cdn/beer.css +5904 -4792
- package/dist/cdn/beer.custom-element.js +37 -38
- package/dist/cdn/beer.custom-element.min.js +1 -1
- package/dist/cdn/beer.js +636 -635
- package/dist/cdn/beer.min.css +1 -1
- package/dist/cdn/beer.min.js +1 -1
- package/dist/cdn/beer.scoped.css +5909 -4793
- package/dist/cdn/beer.scoped.min.css +2 -1
- package/dist/cdn/boom.svg +3 -3
- package/dist/cdn/bun.svg +3 -3
- package/dist/cdn/burst.svg +3 -3
- package/dist/cdn/circle.svg +3 -3
- package/dist/cdn/clamshell.svg +3 -3
- package/dist/cdn/diamond.svg +3 -3
- package/dist/cdn/fan.svg +3 -3
- package/dist/cdn/flower.svg +3 -3
- package/dist/cdn/gem.svg +3 -3
- package/dist/cdn/ghost-ish.svg +3 -3
- package/dist/cdn/heart.svg +3 -3
- package/dist/cdn/leaf-clover4.svg +3 -3
- package/dist/cdn/leaf-clover8.svg +3 -3
- package/dist/cdn/loading-indicator.svg +18 -18
- package/dist/cdn/oval.svg +3 -3
- package/dist/cdn/pentagon.svg +3 -3
- package/dist/cdn/pill.svg +3 -3
- package/dist/cdn/pixel-circle.svg +3 -3
- package/dist/cdn/pixel-triangle.svg +3 -3
- package/dist/cdn/puffy-diamond.svg +3 -3
- package/dist/cdn/puffy.svg +3 -3
- package/dist/cdn/semicircle.svg +3 -3
- package/dist/cdn/sided-cookie12.svg +3 -3
- package/dist/cdn/sided-cookie4.svg +3 -3
- package/dist/cdn/sided-cookie6.svg +3 -3
- package/dist/cdn/sided-cookie7.svg +3 -3
- package/dist/cdn/sided-cookie9.svg +3 -3
- package/dist/cdn/slanted.svg +3 -3
- package/dist/cdn/soft-boom.svg +3 -3
- package/dist/cdn/soft-burst.svg +3 -3
- package/dist/cdn/square.svg +3 -3
- package/dist/cdn/sunny.svg +3 -3
- package/dist/cdn/triangle.svg +3 -3
- package/dist/cdn/very-sunny.svg +3 -3
- package/dist/cdn/wavy-circle.svg +3 -3
- package/dist/cdn/wavy.svg +4 -4
- package/index.d.ts +18 -18
- package/index.js +6 -6
- package/package.json +76 -76
- package/scoped/index.d.ts +18 -18
- package/scoped/index.js +6 -6
- package/src/cdn/beer.css +54 -52
- package/src/cdn/beer.ts +120 -120
- package/src/cdn/customElement.js +37 -38
- package/src/cdn/elements/badges.css +74 -74
- package/src/cdn/elements/bars.css +91 -91
- package/src/cdn/elements/buttons.css +105 -106
- package/src/cdn/elements/cards.css +26 -26
- package/src/cdn/elements/chips.css +37 -38
- package/src/cdn/elements/dialogs.css +145 -151
- package/src/cdn/elements/dialogs.ts +69 -69
- package/src/cdn/elements/dividers.css +48 -48
- package/src/cdn/elements/expansions.css +17 -10
- package/src/cdn/elements/fields.css +438 -439
- package/src/cdn/elements/fields.ts +165 -165
- package/src/cdn/elements/grids.css +171 -171
- package/src/cdn/elements/icons.css +77 -77
- package/src/cdn/elements/layouts.css +35 -35
- package/src/cdn/elements/lists.css +75 -71
- package/src/cdn/elements/mainLayouts.css +57 -57
- package/src/cdn/elements/media.css +112 -112
- package/src/cdn/elements/menus.css +294 -294
- package/src/cdn/elements/menus.ts +40 -40
- package/src/cdn/elements/navigations.css +461 -462
- package/src/cdn/elements/overlays.css +31 -31
- package/src/cdn/elements/pages.css +41 -41
- package/src/cdn/elements/pages.ts +6 -6
- package/src/cdn/elements/progress.css +207 -207
- package/src/cdn/elements/progress.ts +36 -34
- package/src/cdn/elements/selections.css +256 -256
- package/src/cdn/elements/shapes.css +258 -258
- package/src/cdn/elements/sliders.css +353 -357
- package/src/cdn/elements/sliders.ts +74 -74
- package/src/cdn/elements/snackbars.css +47 -47
- package/src/cdn/elements/snackbars.ts +26 -26
- package/src/cdn/elements/tables.css +65 -65
- package/src/cdn/elements/tabs.css +52 -52
- package/src/cdn/elements/tooltips.css +131 -131
- package/src/cdn/helpers/alignments.css +29 -29
- package/src/cdn/helpers/blurs.css +21 -21
- package/src/cdn/helpers/colors.css +930 -930
- package/src/cdn/helpers/directions.css +28 -28
- package/src/cdn/helpers/elevates.css +16 -16
- package/src/cdn/helpers/forms.css +75 -75
- package/src/cdn/helpers/margins.css +49 -49
- package/src/cdn/helpers/opacities.css +19 -19
- package/src/cdn/helpers/paddings.css +45 -45
- package/src/cdn/helpers/positions.css +45 -45
- package/src/cdn/helpers/responsive.css +22 -22
- package/src/cdn/helpers/ripples.css +33 -33
- package/src/cdn/helpers/ripples.ts +30 -30
- package/src/cdn/helpers/scrolls.css +7 -8
- package/src/cdn/helpers/shadows.css +23 -23
- package/src/cdn/helpers/sizes.css +45 -45
- package/src/cdn/helpers/spaces.css +19 -19
- package/src/cdn/helpers/typography.css +226 -225
- package/src/cdn/helpers/waves.css +43 -43
- package/src/cdn/helpers/zoom.css +19 -19
- package/src/cdn/interfaces.ts +3 -3
- package/src/cdn/settings/dark.css +38 -38
- package/src/cdn/settings/fonts.css +35 -35
- package/src/cdn/settings/globals.css +55 -18
- package/src/cdn/settings/light.css +39 -39
- package/src/cdn/{helpers → settings}/reset.css +76 -94
- package/src/cdn/{helpers → settings}/theme.css +186 -186
- package/src/cdn/{helpers → settings}/theme.ts +83 -83
- package/src/cdn/shapes/arch.svg +3 -3
- package/src/cdn/shapes/arrow.svg +3 -3
- package/src/cdn/shapes/boom.svg +3 -3
- package/src/cdn/shapes/bun.svg +3 -3
- package/src/cdn/shapes/burst.svg +3 -3
- package/src/cdn/shapes/circle.svg +3 -3
- package/src/cdn/shapes/clamshell.svg +3 -3
- package/src/cdn/shapes/diamond.svg +3 -3
- package/src/cdn/shapes/fan.svg +3 -3
- package/src/cdn/shapes/flower.svg +3 -3
- package/src/cdn/shapes/gem.svg +3 -3
- package/src/cdn/shapes/ghost-ish.svg +3 -3
- package/src/cdn/shapes/heart.svg +3 -3
- package/src/cdn/shapes/leaf-clover4.svg +3 -3
- package/src/cdn/shapes/leaf-clover8.svg +3 -3
- package/src/cdn/shapes/loading-indicator.svg +18 -18
- package/src/cdn/shapes/oval.svg +3 -3
- package/src/cdn/shapes/pentagon.svg +3 -3
- package/src/cdn/shapes/pill.svg +3 -3
- package/src/cdn/shapes/pixel-circle.svg +3 -3
- package/src/cdn/shapes/pixel-triangle.svg +3 -3
- package/src/cdn/shapes/puffy-diamond.svg +3 -3
- package/src/cdn/shapes/puffy.svg +3 -3
- package/src/cdn/shapes/semicircle.svg +3 -3
- package/src/cdn/shapes/sided-cookie12.svg +3 -3
- package/src/cdn/shapes/sided-cookie4.svg +3 -3
- package/src/cdn/shapes/sided-cookie6.svg +3 -3
- package/src/cdn/shapes/sided-cookie7.svg +3 -3
- package/src/cdn/shapes/sided-cookie9.svg +3 -3
- package/src/cdn/shapes/slanted.svg +3 -3
- package/src/cdn/shapes/soft-boom.svg +3 -3
- package/src/cdn/shapes/soft-burst.svg +3 -3
- package/src/cdn/shapes/square.svg +3 -3
- package/src/cdn/shapes/sunny.svg +3 -3
- package/src/cdn/shapes/triangle.svg +3 -3
- package/src/cdn/shapes/very-sunny.svg +3 -3
- package/src/cdn/shapes/wavy-circle.svg +3 -3
- package/src/cdn/shapes/wavy.svg +4 -4
- package/src/cdn/utils.ts +154 -154
|
@@ -1,166 +1,166 @@
|
|
|
1
|
-
import { query, next, prev, hasType, parent, queryAll, onWeak, isChrome, isMac, isIOS, on, hasClass, rootSizeInPixels } from "../utils";
|
|
2
|
-
|
|
3
|
-
function updatePlaceholder(element: HTMLInputElement | HTMLTextAreaElement) {
|
|
4
|
-
if (!element.placeholder) element.placeholder = " ";
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
function onClickLabel(e: Event) {
|
|
8
|
-
const label = e.currentTarget as HTMLLabelElement;
|
|
9
|
-
const field = parent(label);
|
|
10
|
-
const input = query("input:not([type=file], [type=checkbox], [type=radio]), select, textarea", field) as HTMLElement;
|
|
11
|
-
if (input) input.focus();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
function onFocusInput(e: Event) {
|
|
15
|
-
const input = e.currentTarget as HTMLInputElement;
|
|
16
|
-
updateInput(input);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function onBlurInput(e: Event) {
|
|
20
|
-
const input = e.currentTarget as HTMLInputElement;
|
|
21
|
-
updateInput(input);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
function onChangeFile(e: Event) {
|
|
25
|
-
const input = e.currentTarget as HTMLInputElement;
|
|
26
|
-
updateFile(input);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function onChangeColor(e: Event) {
|
|
30
|
-
const input = e.currentTarget as HTMLInputElement;
|
|
31
|
-
updateColor(input);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function onKeydownFile(e: KeyboardEvent) {
|
|
35
|
-
const input = e.currentTarget as HTMLInputElement;
|
|
36
|
-
updateFile(input, e);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function onKeydownColor(e: KeyboardEvent) {
|
|
40
|
-
const input = e.currentTarget as HTMLInputElement;
|
|
41
|
-
updateColor(input, e);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function onPasswordIconClick(e: Event) {
|
|
45
|
-
const icon = e.currentTarget as HTMLElement;
|
|
46
|
-
const input = query("input", parent(icon)) as HTMLInputElement;
|
|
47
|
-
if (input && icon.textContent?.includes("visibility")) input.type = input.type === "password" ? "text" : "password";
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
function onInputTextarea(e: Event) {
|
|
51
|
-
const textarea = e.currentTarget as HTMLTextAreaElement;
|
|
52
|
-
updateTextarea(textarea);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function updateAllLabels() {
|
|
56
|
-
const labels = queryAll(".field > label");
|
|
57
|
-
for (let i=0; i<labels.length; i++) {
|
|
58
|
-
onWeak(labels[i], "click", onClickLabel);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function updateAllInputs() {
|
|
63
|
-
const inputs = queryAll(".field > input:not([type=file], [type=color], [type=range])") as NodeListOf<HTMLInputElement>;
|
|
64
|
-
for (let i=0; i<inputs.length; i++) {
|
|
65
|
-
onWeak(inputs[i], "focus", onFocusInput);
|
|
66
|
-
onWeak(inputs[i], "blur", onBlurInput);
|
|
67
|
-
updateInput(inputs[i]);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function updateAllSelects() {
|
|
72
|
-
const selects = queryAll(".field > select") as NodeListOf<HTMLSelectElement>;
|
|
73
|
-
for (let i=0; i<selects.length; i++) {
|
|
74
|
-
onWeak(selects[i], "focus", onFocusInput);
|
|
75
|
-
onWeak(selects[i], "blur", onBlurInput);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
function updateAllFiles() {
|
|
80
|
-
const files = queryAll(".field > input[type=file]") as NodeListOf<HTMLInputElement>;
|
|
81
|
-
for (let i=0; i<files.length; i++) {
|
|
82
|
-
onWeak(files[i], "change", onChangeFile);
|
|
83
|
-
updateFile(files[i]);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function updateAllColors() {
|
|
88
|
-
const colors = queryAll(".field > input[type=color]") as NodeListOf<HTMLInputElement>;
|
|
89
|
-
for (let i=0; i<colors.length; i++) {
|
|
90
|
-
onWeak(colors[i], "change", onChangeColor);
|
|
91
|
-
updateColor(colors[i]);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
function updateAllTextareas() {
|
|
96
|
-
const textareas = queryAll(".field > textarea") as NodeListOf<HTMLTextAreaElement>;
|
|
97
|
-
for (let i=0; i<textareas.length; i++) {
|
|
98
|
-
onWeak(textareas[i], "focus", onFocusInput);
|
|
99
|
-
onWeak(textareas[i], "blur", onBlurInput);
|
|
100
|
-
|
|
101
|
-
if (isChrome && !isMac && !isIOS) continue;
|
|
102
|
-
|
|
103
|
-
onWeak(textareas[i], "input", onInputTextarea);
|
|
104
|
-
updateTextarea(textareas[i]);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function updateAllPasswordIcons() {
|
|
109
|
-
const icons = queryAll("input[type=password] ~ :is(i, a)");
|
|
110
|
-
for (let i=0; i<icons.length; i++) onWeak(icons[i], "click", onPasswordIconClick);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function updateInput(input: HTMLInputElement) {
|
|
114
|
-
if (hasType(input, "number") && !input.value) input.value = "";
|
|
115
|
-
updatePlaceholder(input);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
function updateFile(input: HTMLInputElement, e?: KeyboardEvent) {
|
|
119
|
-
if (e?.key === "Enter") {
|
|
120
|
-
const previousInput = prev(input) as HTMLInputElement;
|
|
121
|
-
if (!hasType(previousInput, "file")) return;
|
|
122
|
-
previousInput.click(); return;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const nextInput = next(input) as HTMLInputElement;
|
|
126
|
-
if (!hasType(nextInput, "text")) return;
|
|
127
|
-
nextInput.value = input.files ? Array.from(input.files).map((x) => x.name).join(", ") : "";
|
|
128
|
-
nextInput.readOnly = true;
|
|
129
|
-
onWeak(nextInput, "keydown", onKeydownFile, false);
|
|
130
|
-
updateInput(nextInput);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function updateColor(input: HTMLInputElement, e?: KeyboardEvent) {
|
|
134
|
-
if (e?.key === "Enter") {
|
|
135
|
-
const previousInput = prev(input) as HTMLInputElement;
|
|
136
|
-
if (!hasType(previousInput, "color")) return;
|
|
137
|
-
previousInput.click(); return;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
const nextInput = next(input) as HTMLInputElement;
|
|
141
|
-
if (!hasType(nextInput, "text")) return;
|
|
142
|
-
nextInput.readOnly = true;
|
|
143
|
-
nextInput.value = input.value;
|
|
144
|
-
onWeak(nextInput, "keydown", onKeydownColor, false);
|
|
145
|
-
updateInput(nextInput);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
function updateTextarea(textarea: HTMLTextAreaElement) {
|
|
149
|
-
updatePlaceholder(textarea);
|
|
150
|
-
|
|
151
|
-
if (textarea.hasAttribute("rows")) return;
|
|
152
|
-
|
|
153
|
-
const rootSize = rootSizeInPixels();
|
|
154
|
-
textarea.style.blockSize = "auto";
|
|
155
|
-
textarea.style.blockSize = `${textarea.scrollHeight - rootSize}px`;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export function updateAllFields() {
|
|
159
|
-
updateAllLabels();
|
|
160
|
-
updateAllInputs();
|
|
161
|
-
updateAllSelects();
|
|
162
|
-
updateAllFiles();
|
|
163
|
-
updateAllColors();
|
|
164
|
-
updateAllTextareas();
|
|
165
|
-
updateAllPasswordIcons();
|
|
1
|
+
import { query, next, prev, hasType, parent, queryAll, onWeak, isChrome, isMac, isIOS, on, hasClass, rootSizeInPixels } from "../utils";
|
|
2
|
+
|
|
3
|
+
function updatePlaceholder(element: HTMLInputElement | HTMLTextAreaElement) {
|
|
4
|
+
if (!element.placeholder) element.placeholder = " ";
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
function onClickLabel(e: Event) {
|
|
8
|
+
const label = e.currentTarget as HTMLLabelElement;
|
|
9
|
+
const field = parent(label);
|
|
10
|
+
const input = query("input:not([type=file], [type=checkbox], [type=radio]), select, textarea", field) as HTMLElement;
|
|
11
|
+
if (input) input.focus();
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function onFocusInput(e: Event) {
|
|
15
|
+
const input = e.currentTarget as HTMLInputElement;
|
|
16
|
+
updateInput(input);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function onBlurInput(e: Event) {
|
|
20
|
+
const input = e.currentTarget as HTMLInputElement;
|
|
21
|
+
updateInput(input);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function onChangeFile(e: Event) {
|
|
25
|
+
const input = e.currentTarget as HTMLInputElement;
|
|
26
|
+
updateFile(input);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function onChangeColor(e: Event) {
|
|
30
|
+
const input = e.currentTarget as HTMLInputElement;
|
|
31
|
+
updateColor(input);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function onKeydownFile(e: KeyboardEvent) {
|
|
35
|
+
const input = e.currentTarget as HTMLInputElement;
|
|
36
|
+
updateFile(input, e);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function onKeydownColor(e: KeyboardEvent) {
|
|
40
|
+
const input = e.currentTarget as HTMLInputElement;
|
|
41
|
+
updateColor(input, e);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function onPasswordIconClick(e: Event) {
|
|
45
|
+
const icon = e.currentTarget as HTMLElement;
|
|
46
|
+
const input = query("input", parent(icon)) as HTMLInputElement;
|
|
47
|
+
if (input && icon.textContent?.includes("visibility")) input.type = input.type === "password" ? "text" : "password";
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function onInputTextarea(e: Event) {
|
|
51
|
+
const textarea = e.currentTarget as HTMLTextAreaElement;
|
|
52
|
+
updateTextarea(textarea);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function updateAllLabels() {
|
|
56
|
+
const labels = queryAll(".field > label");
|
|
57
|
+
for (let i=0; i<labels.length; i++) {
|
|
58
|
+
onWeak(labels[i], "click", onClickLabel);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function updateAllInputs() {
|
|
63
|
+
const inputs = queryAll(".field > input:not([type=file], [type=color], [type=range])") as NodeListOf<HTMLInputElement>;
|
|
64
|
+
for (let i=0; i<inputs.length; i++) {
|
|
65
|
+
onWeak(inputs[i], "focus", onFocusInput);
|
|
66
|
+
onWeak(inputs[i], "blur", onBlurInput);
|
|
67
|
+
updateInput(inputs[i]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function updateAllSelects() {
|
|
72
|
+
const selects = queryAll(".field > select") as NodeListOf<HTMLSelectElement>;
|
|
73
|
+
for (let i=0; i<selects.length; i++) {
|
|
74
|
+
onWeak(selects[i], "focus", onFocusInput);
|
|
75
|
+
onWeak(selects[i], "blur", onBlurInput);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function updateAllFiles() {
|
|
80
|
+
const files = queryAll(".field > input[type=file]") as NodeListOf<HTMLInputElement>;
|
|
81
|
+
for (let i=0; i<files.length; i++) {
|
|
82
|
+
onWeak(files[i], "change", onChangeFile);
|
|
83
|
+
updateFile(files[i]);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function updateAllColors() {
|
|
88
|
+
const colors = queryAll(".field > input[type=color]") as NodeListOf<HTMLInputElement>;
|
|
89
|
+
for (let i=0; i<colors.length; i++) {
|
|
90
|
+
onWeak(colors[i], "change", onChangeColor);
|
|
91
|
+
updateColor(colors[i]);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function updateAllTextareas() {
|
|
96
|
+
const textareas = queryAll(".field > textarea") as NodeListOf<HTMLTextAreaElement>;
|
|
97
|
+
for (let i=0; i<textareas.length; i++) {
|
|
98
|
+
onWeak(textareas[i], "focus", onFocusInput);
|
|
99
|
+
onWeak(textareas[i], "blur", onBlurInput);
|
|
100
|
+
|
|
101
|
+
if (isChrome && !isMac && !isIOS) continue;
|
|
102
|
+
|
|
103
|
+
onWeak(textareas[i], "input", onInputTextarea);
|
|
104
|
+
updateTextarea(textareas[i]);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function updateAllPasswordIcons() {
|
|
109
|
+
const icons = queryAll("input[type=password] ~ :is(i, a)");
|
|
110
|
+
for (let i=0; i<icons.length; i++) onWeak(icons[i], "click", onPasswordIconClick);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function updateInput(input: HTMLInputElement) {
|
|
114
|
+
if (hasType(input, "number") && !input.value) input.value = "";
|
|
115
|
+
updatePlaceholder(input);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function updateFile(input: HTMLInputElement, e?: KeyboardEvent) {
|
|
119
|
+
if (e?.key === "Enter") {
|
|
120
|
+
const previousInput = prev(input) as HTMLInputElement;
|
|
121
|
+
if (!hasType(previousInput, "file")) return;
|
|
122
|
+
previousInput.click(); return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
const nextInput = next(input) as HTMLInputElement;
|
|
126
|
+
if (!hasType(nextInput, "text")) return;
|
|
127
|
+
nextInput.value = input.files ? Array.from(input.files).map((x) => x.name).join(", ") : "";
|
|
128
|
+
nextInput.readOnly = true;
|
|
129
|
+
onWeak(nextInput, "keydown", onKeydownFile, false);
|
|
130
|
+
updateInput(nextInput);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
function updateColor(input: HTMLInputElement, e?: KeyboardEvent) {
|
|
134
|
+
if (e?.key === "Enter") {
|
|
135
|
+
const previousInput = prev(input) as HTMLInputElement;
|
|
136
|
+
if (!hasType(previousInput, "color")) return;
|
|
137
|
+
previousInput.click(); return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const nextInput = next(input) as HTMLInputElement;
|
|
141
|
+
if (!hasType(nextInput, "text")) return;
|
|
142
|
+
nextInput.readOnly = true;
|
|
143
|
+
nextInput.value = input.value;
|
|
144
|
+
onWeak(nextInput, "keydown", onKeydownColor, false);
|
|
145
|
+
updateInput(nextInput);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function updateTextarea(textarea: HTMLTextAreaElement) {
|
|
149
|
+
updatePlaceholder(textarea);
|
|
150
|
+
|
|
151
|
+
if (textarea.hasAttribute("rows")) return;
|
|
152
|
+
|
|
153
|
+
const rootSize = rootSizeInPixels();
|
|
154
|
+
textarea.style.blockSize = "auto";
|
|
155
|
+
textarea.style.blockSize = `${textarea.scrollHeight - rootSize}px`;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export function updateAllFields() {
|
|
159
|
+
updateAllLabels();
|
|
160
|
+
updateAllInputs();
|
|
161
|
+
updateAllSelects();
|
|
162
|
+
updateAllFiles();
|
|
163
|
+
updateAllColors();
|
|
164
|
+
updateAllTextareas();
|
|
165
|
+
updateAllPasswordIcons();
|
|
166
166
|
}
|
|
@@ -1,171 +1,171 @@
|
|
|
1
|
-
.grid {
|
|
2
|
-
--_gap: 1rem;
|
|
3
|
-
display: grid;
|
|
4
|
-
grid-template-columns: repeat(12, 1fr);
|
|
5
|
-
gap: var(--_gap);
|
|
6
|
-
block-size: auto;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.grid.no-space {
|
|
10
|
-
--_gap: 0rem;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
.grid.medium-space {
|
|
14
|
-
--_gap: 1.5rem;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
.grid.large-space {
|
|
18
|
-
--_gap: 2rem;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.grid > * {
|
|
22
|
-
margin: 0;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.s1 {
|
|
26
|
-
grid-area: auto/span 1;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.s2 {
|
|
30
|
-
grid-area: auto/span 2;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.s3 {
|
|
34
|
-
grid-area: auto/span 3;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.s4 {
|
|
38
|
-
grid-area: auto/span 4;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.s5 {
|
|
42
|
-
grid-area: auto/span 5;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.s6 {
|
|
46
|
-
grid-area: auto/span 6;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
.s7 {
|
|
50
|
-
grid-area: auto/span 7;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.s8 {
|
|
54
|
-
grid-area: auto/span 8;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.s9 {
|
|
58
|
-
grid-area: auto/span 9;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
.s10 {
|
|
62
|
-
grid-area: auto/span 10;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.s11 {
|
|
66
|
-
grid-area: auto/span 11;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.s12 {
|
|
70
|
-
grid-area: auto/span 12;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@media only screen and (min-width: 601px) {
|
|
74
|
-
.m1 {
|
|
75
|
-
grid-area: auto/span 1;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.m2 {
|
|
79
|
-
grid-area: auto/span 2;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.m3 {
|
|
83
|
-
grid-area: auto/span 3;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
.m4 {
|
|
87
|
-
grid-area: auto/span 4;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.m5 {
|
|
91
|
-
grid-area: auto/span 5;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.m6 {
|
|
95
|
-
grid-area: auto/span 6;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
.m7 {
|
|
99
|
-
grid-area: auto/span 7;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
.m8 {
|
|
103
|
-
grid-area: auto/span 8;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
.m9 {
|
|
107
|
-
grid-area: auto/span 9;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.m10 {
|
|
111
|
-
grid-area: auto/span 10;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
.m11 {
|
|
115
|
-
grid-area: auto/span 11;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
.m12 {
|
|
119
|
-
grid-area: auto/span 12;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
@media only screen and (min-width: 993px) {
|
|
124
|
-
.l1 {
|
|
125
|
-
grid-area: auto/span 1;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
.l2 {
|
|
129
|
-
grid-area: auto/span 2;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
.l3 {
|
|
133
|
-
grid-area: auto/span 3;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
.l4 {
|
|
137
|
-
grid-area: auto/span 4;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
.l5 {
|
|
141
|
-
grid-area: auto/span 5;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
.l6 {
|
|
145
|
-
grid-area: auto/span 6;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
.l7 {
|
|
149
|
-
grid-area: auto/span 7;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.l8 {
|
|
153
|
-
grid-area: auto/span 8;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
.l9 {
|
|
157
|
-
grid-area: auto/span 9;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.l10 {
|
|
161
|
-
grid-area: auto/span 10;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
.l11 {
|
|
165
|
-
grid-area: auto/span 11;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
.l12 {
|
|
169
|
-
grid-area: auto/span 12;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
1
|
+
.grid {
|
|
2
|
+
--_gap: 1rem;
|
|
3
|
+
display: grid;
|
|
4
|
+
grid-template-columns: repeat(12, 1fr);
|
|
5
|
+
gap: var(--_gap);
|
|
6
|
+
block-size: auto;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.grid.no-space {
|
|
10
|
+
--_gap: 0rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.grid.medium-space {
|
|
14
|
+
--_gap: 1.5rem;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.grid.large-space {
|
|
18
|
+
--_gap: 2rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.grid > * {
|
|
22
|
+
margin: 0;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.s1 {
|
|
26
|
+
grid-area: auto/span 1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.s2 {
|
|
30
|
+
grid-area: auto/span 2;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.s3 {
|
|
34
|
+
grid-area: auto/span 3;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.s4 {
|
|
38
|
+
grid-area: auto/span 4;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.s5 {
|
|
42
|
+
grid-area: auto/span 5;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.s6 {
|
|
46
|
+
grid-area: auto/span 6;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.s7 {
|
|
50
|
+
grid-area: auto/span 7;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.s8 {
|
|
54
|
+
grid-area: auto/span 8;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.s9 {
|
|
58
|
+
grid-area: auto/span 9;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.s10 {
|
|
62
|
+
grid-area: auto/span 10;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.s11 {
|
|
66
|
+
grid-area: auto/span 11;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.s12 {
|
|
70
|
+
grid-area: auto/span 12;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@media only screen and (min-width: 601px) {
|
|
74
|
+
.m1 {
|
|
75
|
+
grid-area: auto/span 1;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.m2 {
|
|
79
|
+
grid-area: auto/span 2;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.m3 {
|
|
83
|
+
grid-area: auto/span 3;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.m4 {
|
|
87
|
+
grid-area: auto/span 4;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.m5 {
|
|
91
|
+
grid-area: auto/span 5;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.m6 {
|
|
95
|
+
grid-area: auto/span 6;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.m7 {
|
|
99
|
+
grid-area: auto/span 7;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.m8 {
|
|
103
|
+
grid-area: auto/span 8;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.m9 {
|
|
107
|
+
grid-area: auto/span 9;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.m10 {
|
|
111
|
+
grid-area: auto/span 10;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.m11 {
|
|
115
|
+
grid-area: auto/span 11;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.m12 {
|
|
119
|
+
grid-area: auto/span 12;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
@media only screen and (min-width: 993px) {
|
|
124
|
+
.l1 {
|
|
125
|
+
grid-area: auto/span 1;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.l2 {
|
|
129
|
+
grid-area: auto/span 2;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.l3 {
|
|
133
|
+
grid-area: auto/span 3;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.l4 {
|
|
137
|
+
grid-area: auto/span 4;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.l5 {
|
|
141
|
+
grid-area: auto/span 5;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.l6 {
|
|
145
|
+
grid-area: auto/span 6;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.l7 {
|
|
149
|
+
grid-area: auto/span 7;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
.l8 {
|
|
153
|
+
grid-area: auto/span 8;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.l9 {
|
|
157
|
+
grid-area: auto/span 9;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
.l10 {
|
|
161
|
+
grid-area: auto/span 10;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.l11 {
|
|
165
|
+
grid-area: auto/span 11;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
.l12 {
|
|
169
|
+
grid-area: auto/span 12;
|
|
170
|
+
}
|
|
171
|
+
}
|