godown 3.10.0 → 3.11.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/README.md +2 -63
- package/alert.d.ts.map +1 -1
- package/avatar.d.ts.map +1 -1
- package/badge.d.ts.map +1 -1
- package/breath.d.ts.map +1 -1
- package/build/godown+lit.iife.js +14 -14
- package/build/godown+lit.iife.js.map +1 -1
- package/build/godown+lit.js +14 -14
- package/build/godown+lit.js.map +1 -1
- package/build/godown+lit.umd.js +14 -14
- package/build/godown+lit.umd.js.map +1 -1
- package/build/godown.iife.js +10 -10
- package/build/godown.js +7 -7
- package/build/godown.js.map +1 -1
- package/build/godown.umd.js +11 -11
- package/build/godown.umd.js.map +1 -1
- package/button.d.ts.map +1 -1
- package/card.d.ts.map +1 -1
- package/carousel.d.ts.map +1 -1
- package/chip.d.ts +2 -0
- package/chip.d.ts.map +1 -0
- package/chip.js +2 -0
- package/chip.js.map +1 -0
- package/custom-elements.json +1 -1
- package/details.d.ts.map +1 -1
- package/dialog.d.ts.map +1 -1
- package/divider.d.ts.map +1 -1
- package/dragbox.d.ts.map +1 -1
- package/flex.d.ts.map +1 -1
- package/form.d.ts.map +1 -1
- package/grid.d.ts.map +1 -1
- package/heading.d.ts.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -1
- package/input.d.ts.map +1 -1
- package/internal/direction.d.ts.map +1 -1
- package/internal/direction.js.map +1 -1
- package/internal/global-style.d.ts +8 -9
- package/internal/global-style.d.ts.map +1 -1
- package/internal/global-style.js +1 -1
- package/internal/global-style.js.map +1 -1
- package/internal/icons/caret-down.d.ts +4 -0
- package/internal/icons/caret-down.d.ts.map +1 -0
- package/internal/icons/caret-down.js +2 -0
- package/internal/icons/caret-down.js.map +1 -0
- package/internal/icons/caret-left.d.ts +4 -0
- package/internal/icons/caret-left.d.ts.map +1 -0
- package/internal/icons/caret-left.js +2 -0
- package/internal/icons/caret-left.js.map +1 -0
- package/internal/icons/caret-right.d.ts +4 -0
- package/internal/icons/caret-right.d.ts.map +1 -0
- package/internal/icons/caret-right.js +2 -0
- package/internal/icons/caret-right.js.map +1 -0
- package/internal/icons/eye-slash.d.ts +4 -0
- package/internal/icons/eye-slash.d.ts.map +1 -0
- package/internal/icons/eye-slash.js +2 -0
- package/internal/icons/eye-slash.js.map +1 -0
- package/internal/ring.d.ts +19 -0
- package/internal/ring.d.ts.map +1 -0
- package/internal/ring.js +2 -0
- package/internal/ring.js.map +1 -0
- package/internal/super-input.d.ts +2 -2
- package/internal/super-input.d.ts.map +1 -1
- package/internal/super-input.js +1 -1
- package/internal/super-input.js.map +1 -1
- package/internal/super-openable.d.ts.map +1 -1
- package/internal/super-openable.js.map +1 -1
- package/layout.d.ts.map +1 -1
- package/link.d.ts.map +1 -1
- package/package.json +3 -5
- package/progress.d.ts.map +1 -1
- package/range.d.ts.map +1 -1
- package/rotate.d.ts.map +1 -1
- package/router.d.ts.map +1 -1
- package/select.d.ts.map +1 -1
- package/skeleton.d.ts.map +1 -1
- package/split.d.ts.map +1 -1
- package/src/chip.ts +1 -0
- package/src/index.ts +1 -0
- package/src/internal/global-style.ts +40 -37
- package/src/internal/icons/caret-down.ts +7 -0
- package/src/internal/icons/caret-left.ts +7 -0
- package/src/internal/icons/caret-right.ts +7 -0
- package/src/internal/icons/eye-slash.ts +7 -0
- package/src/internal/ring.ts +57 -0
- package/src/internal/super-input.ts +9 -70
- package/src/web-components/alert/component.ts +16 -195
- package/src/web-components/badge/component.ts +7 -96
- package/src/web-components/breath/component.ts +11 -9
- package/src/web-components/button/component.ts +9 -139
- package/src/web-components/card/component.ts +11 -6
- package/src/web-components/carousel/component.ts +6 -6
- package/src/web-components/chip/component.ts +115 -0
- package/src/web-components/chip/definition.ts +11 -0
- package/src/web-components/details/component.ts +1 -1
- package/src/web-components/dialog/component.ts +3 -1
- package/src/web-components/divider/component.ts +2 -17
- package/src/web-components/heading/component.ts +12 -16
- package/src/web-components/input/component.ts +87 -39
- package/src/web-components/link/component.ts +53 -3
- package/src/web-components/progress/component.ts +2 -1
- package/src/web-components/range/component.ts +19 -25
- package/src/web-components/rotate/component.ts +2 -2
- package/src/web-components/select/component.ts +14 -18
- package/src/web-components/select/definition.ts +1 -1
- package/src/web-components/skeleton/component.ts +13 -57
- package/src/web-components/split/component.ts +16 -14
- package/src/web-components/switch/component.ts +4 -7
- package/src/web-components/tabs/component.ts +11 -8
- package/src/web-components/text/component.ts +2 -2
- package/switch.d.ts.map +1 -1
- package/tabs.d.ts.map +1 -1
- package/text.d.ts.map +1 -1
- package/time.d.ts.map +1 -1
- package/tooltip.d.ts.map +1 -1
- package/typewriter.d.ts.map +1 -1
- package/vscode.html-custom-data.json +1 -1
- package/web-components/alert/component.d.ts +5 -32
- package/web-components/alert/component.d.ts.map +1 -1
- package/web-components/alert/component.js +1 -1
- package/web-components/alert/component.js.map +1 -1
- package/web-components/alert/definition.d.ts.map +1 -1
- package/web-components/alert/definition.js.map +1 -1
- package/web-components/avatar/component.d.ts.map +1 -1
- package/web-components/avatar/component.js +1 -1
- package/web-components/avatar/component.js.map +1 -1
- package/web-components/avatar/definition.d.ts.map +1 -1
- package/web-components/avatar/definition.js.map +1 -1
- package/web-components/badge/component.d.ts +4 -21
- package/web-components/badge/component.d.ts.map +1 -1
- package/web-components/badge/component.js +1 -1
- package/web-components/badge/component.js.map +1 -1
- package/web-components/badge/definition.d.ts.map +1 -1
- package/web-components/badge/definition.js.map +1 -1
- package/web-components/breath/component.d.ts.map +1 -1
- package/web-components/breath/component.js +1 -1
- package/web-components/breath/component.js.map +1 -1
- package/web-components/breath/definition.d.ts.map +1 -1
- package/web-components/breath/definition.js.map +1 -1
- package/web-components/button/component.d.ts +0 -18
- package/web-components/button/component.d.ts.map +1 -1
- package/web-components/button/component.js +1 -1
- package/web-components/button/component.js.map +1 -1
- package/web-components/button/definition.d.ts.map +1 -1
- package/web-components/button/definition.js.map +1 -1
- package/web-components/card/component.d.ts +3 -0
- package/web-components/card/component.d.ts.map +1 -1
- package/web-components/card/component.js +1 -1
- package/web-components/card/component.js.map +1 -1
- package/web-components/card/definition.d.ts.map +1 -1
- package/web-components/card/definition.js.map +1 -1
- package/web-components/carousel/component.d.ts.map +1 -1
- package/web-components/carousel/component.js +1 -1
- package/web-components/carousel/component.js.map +1 -1
- package/web-components/carousel/definition.d.ts.map +1 -1
- package/web-components/carousel/definition.js.map +1 -1
- package/web-components/chip/component.d.ts +31 -0
- package/web-components/chip/component.d.ts.map +1 -0
- package/web-components/chip/component.js +2 -0
- package/web-components/chip/component.js.map +1 -0
- package/web-components/chip/definition.d.ts +8 -0
- package/web-components/chip/definition.d.ts.map +1 -0
- package/web-components/chip/definition.js +2 -0
- package/web-components/chip/definition.js.map +1 -0
- package/web-components/details/component.d.ts.map +1 -1
- package/web-components/details/component.js +1 -1
- package/web-components/details/component.js.map +1 -1
- package/web-components/details/definition.d.ts.map +1 -1
- package/web-components/details/definition.js.map +1 -1
- package/web-components/dialog/component.d.ts.map +1 -1
- package/web-components/dialog/component.js +1 -1
- package/web-components/dialog/component.js.map +1 -1
- package/web-components/dialog/definition.d.ts.map +1 -1
- package/web-components/dialog/definition.js.map +1 -1
- package/web-components/divider/component.d.ts.map +1 -1
- package/web-components/divider/component.js +1 -1
- package/web-components/divider/component.js.map +1 -1
- package/web-components/divider/definition.d.ts.map +1 -1
- package/web-components/divider/definition.js.map +1 -1
- package/web-components/dragbox/component.d.ts.map +1 -1
- package/web-components/dragbox/component.js.map +1 -1
- package/web-components/dragbox/definition.d.ts.map +1 -1
- package/web-components/dragbox/definition.js.map +1 -1
- package/web-components/flex/component.d.ts.map +1 -1
- package/web-components/flex/component.js.map +1 -1
- package/web-components/flex/definition.d.ts.map +1 -1
- package/web-components/flex/definition.js.map +1 -1
- package/web-components/form/component.d.ts.map +1 -1
- package/web-components/form/component.js.map +1 -1
- package/web-components/form/definition.d.ts.map +1 -1
- package/web-components/form/definition.js.map +1 -1
- package/web-components/grid/component.d.ts.map +1 -1
- package/web-components/grid/component.js.map +1 -1
- package/web-components/grid/definition.d.ts.map +1 -1
- package/web-components/grid/definition.js.map +1 -1
- package/web-components/heading/component.d.ts +2 -2
- package/web-components/heading/component.d.ts.map +1 -1
- package/web-components/heading/component.js +1 -1
- package/web-components/heading/component.js.map +1 -1
- package/web-components/heading/definition.d.ts.map +1 -1
- package/web-components/heading/definition.js.map +1 -1
- package/web-components/input/component.d.ts +3 -3
- package/web-components/input/component.d.ts.map +1 -1
- package/web-components/input/component.js +1 -1
- package/web-components/input/component.js.map +1 -1
- package/web-components/input/definition.d.ts.map +1 -1
- package/web-components/input/definition.js.map +1 -1
- package/web-components/layout/component.d.ts.map +1 -1
- package/web-components/layout/component.js +1 -1
- package/web-components/layout/component.js.map +1 -1
- package/web-components/layout/definition.d.ts.map +1 -1
- package/web-components/layout/definition.js.map +1 -1
- package/web-components/link/component.d.ts +13 -2
- package/web-components/link/component.d.ts.map +1 -1
- package/web-components/link/component.js +1 -1
- package/web-components/link/component.js.map +1 -1
- package/web-components/link/definition.d.ts.map +1 -1
- package/web-components/link/definition.js.map +1 -1
- package/web-components/progress/component.d.ts.map +1 -1
- package/web-components/progress/component.js +1 -1
- package/web-components/progress/component.js.map +1 -1
- package/web-components/progress/definition.d.ts.map +1 -1
- package/web-components/progress/definition.js.map +1 -1
- package/web-components/range/component.d.ts.map +1 -1
- package/web-components/range/component.js +1 -1
- package/web-components/range/component.js.map +1 -1
- package/web-components/range/definition.d.ts.map +1 -1
- package/web-components/range/definition.js.map +1 -1
- package/web-components/rotate/component.d.ts.map +1 -1
- package/web-components/rotate/component.js +1 -1
- package/web-components/rotate/component.js.map +1 -1
- package/web-components/rotate/definition.d.ts.map +1 -1
- package/web-components/rotate/definition.js.map +1 -1
- package/web-components/router/component.d.ts.map +1 -1
- package/web-components/router/component.js.map +1 -1
- package/web-components/router/definition.d.ts.map +1 -1
- package/web-components/router/definition.js.map +1 -1
- package/web-components/select/component.d.ts +2 -1
- package/web-components/select/component.d.ts.map +1 -1
- package/web-components/select/component.js +1 -1
- package/web-components/select/component.js.map +1 -1
- package/web-components/select/definition.d.ts +1 -1
- package/web-components/select/definition.d.ts.map +1 -1
- package/web-components/select/definition.js.map +1 -1
- package/web-components/skeleton/component.d.ts +0 -9
- package/web-components/skeleton/component.d.ts.map +1 -1
- package/web-components/skeleton/component.js +1 -1
- package/web-components/skeleton/component.js.map +1 -1
- package/web-components/skeleton/definition.d.ts.map +1 -1
- package/web-components/skeleton/definition.js.map +1 -1
- package/web-components/split/component.d.ts +1 -1
- package/web-components/split/component.d.ts.map +1 -1
- package/web-components/split/component.js +1 -1
- package/web-components/split/component.js.map +1 -1
- package/web-components/split/definition.d.ts.map +1 -1
- package/web-components/split/definition.js.map +1 -1
- package/web-components/switch/component.d.ts.map +1 -1
- package/web-components/switch/component.js +1 -1
- package/web-components/switch/component.js.map +1 -1
- package/web-components/switch/definition.d.ts.map +1 -1
- package/web-components/switch/definition.js.map +1 -1
- package/web-components/tabs/component.d.ts +3 -3
- package/web-components/tabs/component.d.ts.map +1 -1
- package/web-components/tabs/component.js +1 -1
- package/web-components/tabs/component.js.map +1 -1
- package/web-components/tabs/definition.d.ts.map +1 -1
- package/web-components/tabs/definition.js.map +1 -1
- package/web-components/text/component.d.ts +1 -1
- package/web-components/text/component.d.ts.map +1 -1
- package/web-components/text/component.js +1 -1
- package/web-components/text/component.js.map +1 -1
- package/web-components/text/definition.d.ts.map +1 -1
- package/web-components/text/definition.js.map +1 -1
- package/web-components/time/component.d.ts.map +1 -1
- package/web-components/time/component.js.map +1 -1
- package/web-components/time/definition.d.ts.map +1 -1
- package/web-components/time/definition.js.map +1 -1
- package/web-components/tooltip/component.d.ts.map +1 -1
- package/web-components/tooltip/component.js +1 -1
- package/web-components/tooltip/component.js.map +1 -1
- package/web-components/tooltip/definition.d.ts.map +1 -1
- package/web-components/tooltip/definition.js.map +1 -1
- package/web-components/typewriter/component.d.ts.map +1 -1
- package/web-components/typewriter/component.js +1 -1
- package/web-components/typewriter/component.js.map +1 -1
- package/web-components/typewriter/definition.d.ts.map +1 -1
- package/web-components/typewriter/definition.js.map +1 -1
- package/web-types.json +1 -1
- package/internal/outline.d.ts +0 -19
- package/internal/outline.d.ts.map +0 -1
- package/internal/outline.js +0 -2
- package/internal/outline.js.map +0 -1
- package/internal/super-anchor.d.ts +0 -18
- package/internal/super-anchor.d.ts.map +0 -1
- package/internal/super-anchor.js +0 -2
- package/internal/super-anchor.js.map +0 -1
- package/src/internal/outline.ts +0 -58
- package/src/internal/super-anchor.ts +0 -60
@@ -1,16 +1,16 @@
|
|
1
|
-
import { attr, godown,
|
2
|
-
import
|
1
|
+
import { attr, godown, queryPart, styles, htmlSlot, StyleController } from "@godown/element";
|
2
|
+
import iconEyeSlash from "../../internal/icons/eye-slash.js";
|
3
3
|
import { type TemplateResult, css, html, nothing } from "lit";
|
4
4
|
import { property } from "lit/decorators.js";
|
5
5
|
|
6
6
|
import { cssGlobalVars } from "../../internal/global-style.js";
|
7
7
|
import { SuperInput } from "../../internal/super-input.js";
|
8
|
-
import {
|
8
|
+
import { RingBuilder } from "../../internal/ring.js";
|
9
9
|
|
10
10
|
const protoName = "input";
|
11
11
|
|
12
12
|
/**
|
13
|
-
* {@linkcode Input} renders a
|
13
|
+
* {@linkcode Input} renders a input.
|
14
14
|
*
|
15
15
|
* @fires input - Fires when the input value changes.
|
16
16
|
* @fires change - Fires when the input value changes.
|
@@ -19,17 +19,70 @@ const protoName = "input";
|
|
19
19
|
@godown(protoName)
|
20
20
|
@styles(css`
|
21
21
|
:host {
|
22
|
-
width: var(${cssGlobalVars.input}-width);
|
23
|
-
height: var(${cssGlobalVars.input}-height);
|
24
22
|
display: block;
|
23
|
+
${cssGlobalVars.input}-space: 0.2em;
|
24
|
+
${cssGlobalVars.input}-control: currentColor;
|
25
|
+
${cssGlobalVars.input}-icon-color: hsl(0, 0%, 50%);
|
25
26
|
}
|
26
27
|
|
27
|
-
:host(:focus-within)
|
28
|
-
|
28
|
+
:host(:focus-within),
|
29
|
+
:host(:active) {
|
30
|
+
${cssGlobalVars.ringColor}: var(${cssGlobalVars.active});
|
31
|
+
${cssGlobalVars.input}-icon-color: currentColor;
|
32
|
+
}
|
33
|
+
|
34
|
+
[part~="root"] {
|
35
|
+
padding: 0.4em 0.5em;
|
36
|
+
display: flex;
|
37
|
+
position: relative;
|
38
|
+
align-items: center;
|
39
|
+
border-radius: inherit;
|
40
|
+
height: inherit;
|
41
|
+
}
|
42
|
+
|
43
|
+
[part="input"] {
|
44
|
+
background: none;
|
45
|
+
height: 100%;
|
46
|
+
flex-grow: 1;
|
47
|
+
color: currentColor;
|
48
|
+
min-height: 1.5em;
|
49
|
+
}
|
50
|
+
|
51
|
+
[part~="icon"] {
|
52
|
+
display: flex;
|
53
|
+
align-items: center;
|
54
|
+
justify-content: center;
|
55
|
+
color: var(${cssGlobalVars.input}-icon-color);
|
56
|
+
}
|
57
|
+
|
58
|
+
[part~="prefix"],
|
59
|
+
[part~="suffix"] {
|
60
|
+
height: 100%;
|
61
|
+
display: flex;
|
62
|
+
}
|
63
|
+
|
64
|
+
[part~="suffix"][part~="icon"] {
|
65
|
+
padding-inline-start: var(${cssGlobalVars.input}-space);
|
66
|
+
}
|
67
|
+
|
68
|
+
[part~="prefix"][part~="icon"] {
|
69
|
+
padding-inline-end: var(${cssGlobalVars.input}-space);
|
29
70
|
}
|
30
71
|
`)
|
31
72
|
class Input extends SuperInput {
|
32
|
-
type:
|
73
|
+
type:
|
74
|
+
| "text"
|
75
|
+
| "search"
|
76
|
+
| "tel"
|
77
|
+
| "url"
|
78
|
+
| "email"
|
79
|
+
| "password"
|
80
|
+
| "number"
|
81
|
+
| "date"
|
82
|
+
| "time"
|
83
|
+
| "datetime-local"
|
84
|
+
| "month"
|
85
|
+
| "week" = "text";
|
33
86
|
|
34
87
|
value: string;
|
35
88
|
|
@@ -39,22 +92,24 @@ class Input extends SuperInput {
|
|
39
92
|
@property()
|
40
93
|
variant: "default" | "outline" = "default";
|
41
94
|
|
42
|
-
@
|
95
|
+
@queryPart("input")
|
43
96
|
protected _input: HTMLInputElement;
|
44
97
|
|
45
|
-
|
46
|
-
|
47
|
-
(
|
48
|
-
|
49
|
-
(
|
50
|
-
|
98
|
+
constructor() {
|
99
|
+
super();
|
100
|
+
new StyleController(
|
101
|
+
this,
|
102
|
+
() =>
|
103
|
+
new RingBuilder({ type: this.ringType }).css +
|
104
|
+
(this.variant === "outline" ? `:host{${cssGlobalVars.ringColor}:currentColor}` : ""),
|
105
|
+
);
|
106
|
+
}
|
51
107
|
|
52
108
|
protected render(): TemplateResult<1> {
|
53
109
|
return html`
|
54
|
-
<
|
110
|
+
<label
|
55
111
|
part="root"
|
56
112
|
${attr(this.observedRecord)}
|
57
|
-
class="input-field"
|
58
113
|
>
|
59
114
|
${[
|
60
115
|
this._renderPrefix(),
|
@@ -68,38 +123,31 @@ class Input extends SuperInput {
|
|
68
123
|
autocapitalize="${this.autocapitalize || nothing}"
|
69
124
|
autocomplete="${this.autocomplete || nothing}"
|
70
125
|
placeholder="${this.placeholder || nothing}"
|
71
|
-
id="${this.makeId}"
|
72
126
|
@input="${this._handleInput}"
|
73
127
|
@change="${this._handleChange}"
|
74
128
|
/>
|
75
129
|
`,
|
76
130
|
this._renderSuffix(),
|
77
131
|
]}
|
78
|
-
</
|
132
|
+
</label>
|
79
133
|
`;
|
80
134
|
}
|
81
135
|
|
82
136
|
protected _renderSuffix(): TemplateResult<1> {
|
83
137
|
const PASSWORD = "password";
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
${iconEyeSlashFill()}
|
98
|
-
</i>
|
99
|
-
`
|
100
|
-
: htmlSlot("suffix")}
|
101
|
-
</label>
|
102
|
-
`;
|
138
|
+
if (this.type === PASSWORD) {
|
139
|
+
return html`
|
140
|
+
<i
|
141
|
+
part="suffix icon"
|
142
|
+
@mousedown="${() => this._changeInputType("text")}"
|
143
|
+
@mouseup="${() => this._changeInputType(PASSWORD)}"
|
144
|
+
@mouseleave="${() => this._changeInputType(PASSWORD)}"
|
145
|
+
>
|
146
|
+
${iconEyeSlash()}
|
147
|
+
</i>
|
148
|
+
`;
|
149
|
+
}
|
150
|
+
return super._renderSuffix();
|
103
151
|
}
|
104
152
|
}
|
105
153
|
|
@@ -1,8 +1,9 @@
|
|
1
|
-
import { godown } from "@godown/element";
|
1
|
+
import { attr, godown, htmlSlot, styles } from "@godown/element";
|
2
2
|
import { property } from "lit/decorators.js";
|
3
3
|
|
4
|
-
import { SuperAnchor } from "../../internal/super-anchor.js";
|
5
4
|
import Router from "../router/component.js";
|
5
|
+
import { css, html, nothing, type TemplateResult } from "lit";
|
6
|
+
import GlobalStyle from "../../internal/global-style.js";
|
6
7
|
|
7
8
|
const protoName = "link";
|
8
9
|
|
@@ -35,7 +36,23 @@ type LinkType = keyof typeof linkTypes;
|
|
35
36
|
* @category navigation
|
36
37
|
*/
|
37
38
|
@godown(protoName)
|
38
|
-
|
39
|
+
@styles(css`
|
40
|
+
:host {
|
41
|
+
display: inline-block;
|
42
|
+
color: currentColor;
|
43
|
+
cursor: default;
|
44
|
+
}
|
45
|
+
|
46
|
+
:host([href]) {
|
47
|
+
cursor: pointer;
|
48
|
+
}
|
49
|
+
|
50
|
+
a {
|
51
|
+
color: currentColor;
|
52
|
+
display: contents;
|
53
|
+
}
|
54
|
+
`)
|
55
|
+
class Link extends GlobalStyle {
|
39
56
|
/**
|
40
57
|
* If `"normal"`, behave like a normal anchor.
|
41
58
|
*
|
@@ -58,13 +75,32 @@ class Link extends SuperAnchor {
|
|
58
75
|
@property({ type: Boolean })
|
59
76
|
replace = false;
|
60
77
|
|
78
|
+
/**
|
79
|
+
* A element href.
|
80
|
+
*/
|
81
|
+
@property()
|
82
|
+
href: string;
|
83
|
+
|
84
|
+
/**
|
85
|
+
* A element target.
|
86
|
+
*/
|
87
|
+
@property()
|
88
|
+
target: "_blank" | "_self" | "_parent" | "_top" = "_self";
|
89
|
+
|
61
90
|
/**
|
62
91
|
* Location state object.
|
63
92
|
*/
|
64
93
|
state = {};
|
65
94
|
|
95
|
+
get pathname(): string {
|
96
|
+
return new URL(this.href, location.href).pathname;
|
97
|
+
}
|
98
|
+
|
66
99
|
protected _handleClick(e: MouseEvent): void {
|
67
100
|
const { state, type, href, pathname, suppress } = this;
|
101
|
+
if (!href) {
|
102
|
+
return;
|
103
|
+
}
|
68
104
|
this.dispatchCustomEvent("navigate", {
|
69
105
|
...this.observedRecord,
|
70
106
|
pathname,
|
@@ -104,6 +140,20 @@ class Link extends SuperAnchor {
|
|
104
140
|
break;
|
105
141
|
}
|
106
142
|
};
|
143
|
+
|
144
|
+
protected render(): TemplateResult<1> {
|
145
|
+
return html`
|
146
|
+
<a
|
147
|
+
part="root"
|
148
|
+
${attr(this.observedRecord)}
|
149
|
+
href="${this.href || nothing}"
|
150
|
+
target="${this.target}"
|
151
|
+
@click=${this._handleClick}
|
152
|
+
>
|
153
|
+
${htmlSlot()}
|
154
|
+
</a>
|
155
|
+
`;
|
156
|
+
}
|
107
157
|
}
|
108
158
|
|
109
159
|
export default Link;
|
@@ -73,7 +73,8 @@ class Progress extends GlobalStyle {
|
|
73
73
|
let className: string;
|
74
74
|
if (!isNullable(this.value)) {
|
75
75
|
const ranger = new Ranger(this.min, this.max);
|
76
|
-
|
76
|
+
const value = +this.value - this.min;
|
77
|
+
width = (value / ranger.diff) * 100;
|
77
78
|
className = "static";
|
78
79
|
}
|
79
80
|
return html`
|
@@ -5,7 +5,7 @@ import {
|
|
5
5
|
isNullable,
|
6
6
|
joinDeclarations,
|
7
7
|
loop,
|
8
|
-
|
8
|
+
queryPart,
|
9
9
|
styles,
|
10
10
|
Ranger,
|
11
11
|
omit,
|
@@ -35,12 +35,13 @@ type RangeValue = number | number[];
|
|
35
35
|
@styles(
|
36
36
|
css`
|
37
37
|
:host {
|
38
|
-
${cssScope}--handle-active: var(${cssGlobalVars.active});
|
39
38
|
${cssScope}--track-width: .5em;
|
40
|
-
${cssScope}--
|
39
|
+
${cssScope}--handle-scale: 1;
|
40
|
+
${cssScope}--track-background: var(${cssGlobalVars.active});
|
41
41
|
background: var(${cssGlobalVars.passive});
|
42
|
-
width:
|
42
|
+
width: 100%;
|
43
43
|
display: block;
|
44
|
+
height: var(${cssScope}--track-width);
|
44
45
|
}
|
45
46
|
|
46
47
|
:host([contents]) [part="root"] {
|
@@ -48,22 +49,16 @@ type RangeValue = number | number[];
|
|
48
49
|
}
|
49
50
|
|
50
51
|
:host([vertical]) {
|
51
|
-
height:
|
52
|
+
height: 100%;
|
52
53
|
width: fit-content;
|
53
54
|
}
|
54
55
|
|
55
|
-
:host(:not([disabled])) .last-focus {
|
56
|
-
${cssScope}--handle-scale: 1.05;
|
57
|
-
background: var(${cssScope}--handle-active);
|
58
|
-
}
|
59
|
-
|
60
56
|
[part="root"] {
|
61
57
|
min-height: inherit;
|
62
58
|
position: relative;
|
63
59
|
border-radius: inherit;
|
64
60
|
--from: 0%;
|
65
61
|
--to: 50%;
|
66
|
-
height: var(${cssScope}--track-width);
|
67
62
|
}
|
68
63
|
|
69
64
|
[part="track"] {
|
@@ -75,11 +70,11 @@ type RangeValue = number | number[];
|
|
75
70
|
border-radius: inherit;
|
76
71
|
justify-content: space-between;
|
77
72
|
left: min(var(--from), var(--to));
|
78
|
-
background: var(${
|
73
|
+
background: var(${cssScope}--track-background);
|
79
74
|
width: max(calc(var(--to) - var(--from)), calc(var(--from) - var(--to)));
|
80
75
|
}
|
81
76
|
|
82
|
-
[part
|
77
|
+
[part~="handle"] {
|
83
78
|
width: 1em;
|
84
79
|
height: 1em;
|
85
80
|
display: flex;
|
@@ -87,12 +82,14 @@ type RangeValue = number | number[];
|
|
87
82
|
justify-content: center;
|
88
83
|
user-select: none;
|
89
84
|
position: absolute;
|
90
|
-
border: 0.1em solid;
|
91
85
|
border-radius: 50%;
|
92
86
|
transform-origin: 0% 25%;
|
93
|
-
|
94
|
-
|
95
|
-
border-
|
87
|
+
outline: 0;
|
88
|
+
border-style: solid;
|
89
|
+
border-width: 0.1em;
|
90
|
+
transform: scale(var(${cssScope}--handle-scale)) translate(-50%, -25%);
|
91
|
+
background: var(${cssGlobalVars.background});
|
92
|
+
border-color: currentColor;
|
96
93
|
}
|
97
94
|
`,
|
98
95
|
css`
|
@@ -113,12 +110,12 @@ type RangeValue = number | number[];
|
|
113
110
|
}
|
114
111
|
`,
|
115
112
|
css`
|
116
|
-
[part
|
113
|
+
[part~="handle"] {
|
117
114
|
left: var(--handle);
|
118
115
|
top: 0;
|
119
116
|
}
|
120
117
|
|
121
|
-
[vertical] [part
|
118
|
+
[vertical] [part~="handle"] {
|
122
119
|
top: var(--handle);
|
123
120
|
left: 0;
|
124
121
|
}
|
@@ -163,7 +160,7 @@ class Range<V extends RangeValue = RangeValue> extends SuperInput<RangeValue> {
|
|
163
160
|
@property({ type: Array })
|
164
161
|
default: V;
|
165
162
|
|
166
|
-
@
|
163
|
+
@queryPart("root")
|
167
164
|
protected _root: HTMLElement;
|
168
165
|
|
169
166
|
@queryAll("[part=handle]")
|
@@ -206,7 +203,7 @@ class Range<V extends RangeValue = RangeValue> extends SuperInput<RangeValue> {
|
|
206
203
|
}
|
207
204
|
|
208
205
|
get observedRecord(): Record<string, any> {
|
209
|
-
return omit(super.observedRecord, "
|
206
|
+
return omit(super.observedRecord, "ring-type");
|
210
207
|
}
|
211
208
|
|
212
209
|
protected render(): TemplateResult<1> {
|
@@ -242,11 +239,8 @@ class Range<V extends RangeValue = RangeValue> extends SuperInput<RangeValue> {
|
|
242
239
|
return html`
|
243
240
|
<i
|
244
241
|
tabindex="0"
|
245
|
-
part="handle"
|
246
|
-
class="${tokenList({ "last-focus": this.lastFocus === index })}"
|
242
|
+
part="${tokenList("handle", `handle-${index}`)}"
|
247
243
|
@mousedown="${disabled ? null : this.createMouseDown(index)}"
|
248
|
-
@focus="${disabled ? null : () => this.focusHandle(index)}"
|
249
|
-
@blur="${disabled ? null : this.blurHandle}"
|
250
244
|
style="${joinDeclarations({
|
251
245
|
"z-index": this.__focusStack.indexOf(index) + 1,
|
252
246
|
"--handle": `var(--${end ? "to" : `handle-${index}`})`,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { godown, htmlSlot,
|
1
|
+
import { godown, htmlSlot, queryPart, styles } from "@godown/element";
|
2
2
|
import { type TemplateResult, css, html } from "lit";
|
3
3
|
|
4
4
|
import { GlobalStyle, scopePrefix } from "../../internal/global-style.js";
|
@@ -43,7 +43,7 @@ const cssScope = scopePrefix(protoName);
|
|
43
43
|
}
|
44
44
|
`)
|
45
45
|
class Rotate extends GlobalStyle {
|
46
|
-
@
|
46
|
+
@queryPart("root")
|
47
47
|
protected _root: HTMLElement;
|
48
48
|
|
49
49
|
protected render(): TemplateResult<1> {
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { type HandlerEvent, attr, godown, htmlSlot,
|
2
|
-
import svgCaretDown from "
|
1
|
+
import { type HandlerEvent, attr, godown, htmlSlot, queryPart, styles } from "@godown/element";
|
2
|
+
import svgCaretDown from "../../internal/icons/caret-down.js";
|
3
3
|
import { type TemplateResult, css, html, nothing } from "lit";
|
4
4
|
import { property, state } from "lit/decorators.js";
|
5
5
|
|
@@ -39,7 +39,7 @@ const protoName = "select";
|
|
39
39
|
*
|
40
40
|
* Multi-selected state looks the same as single-selected.
|
41
41
|
*
|
42
|
-
* Input will filter the
|
42
|
+
* Input will filter the options.
|
43
43
|
*
|
44
44
|
* @fires input - Fires when the input value changes.
|
45
45
|
* @fires change - Fires when the input value changes.
|
@@ -53,7 +53,7 @@ const protoName = "select";
|
|
53
53
|
css`
|
54
54
|
:host(:focus-within),
|
55
55
|
.outline {
|
56
|
-
${cssGlobalVars.input}-outline-color:
|
56
|
+
${cssGlobalVars.input}-outline-color: currentColor;
|
57
57
|
}
|
58
58
|
|
59
59
|
[part="input"] {
|
@@ -81,7 +81,7 @@ class Select extends Input {
|
|
81
81
|
@property()
|
82
82
|
text: string;
|
83
83
|
|
84
|
-
@
|
84
|
+
@queryPart("content")
|
85
85
|
protected _content: HTMLElement;
|
86
86
|
|
87
87
|
@property()
|
@@ -110,10 +110,9 @@ class Select extends Input {
|
|
110
110
|
|
111
111
|
protected render(): TemplateResult<1> {
|
112
112
|
return html`
|
113
|
-
<
|
113
|
+
<label
|
114
114
|
part="root"
|
115
115
|
${attr(this.observedRecord)}
|
116
|
-
class="input-field"
|
117
116
|
>
|
118
117
|
${[
|
119
118
|
this._renderPrefix(),
|
@@ -127,23 +126,14 @@ class Select extends Input {
|
|
127
126
|
autocapitalize="${this.autocapitalize || nothing}"
|
128
127
|
autocomplete="${this.autocomplete || nothing}"
|
129
128
|
placeholder="${this.placeholder || nothing}"
|
130
|
-
id="${this.makeId}"
|
131
129
|
@focus="${this._handleFocus}"
|
132
130
|
@input="${this._handleInput}"
|
133
131
|
@change="${this._handleChange}"
|
134
132
|
/>
|
135
133
|
`,
|
134
|
+
this._renderSuffix(),
|
136
135
|
html`
|
137
136
|
<label
|
138
|
-
for="${this.makeId}"
|
139
|
-
part="suffix"
|
140
|
-
>
|
141
|
-
<i part="icon">${svgCaretDown()}</i>
|
142
|
-
</label>
|
143
|
-
`,
|
144
|
-
html`
|
145
|
-
<label
|
146
|
-
for="${this.makeId}"
|
147
137
|
part="content"
|
148
138
|
direction-outset-place
|
149
139
|
>
|
@@ -151,7 +141,13 @@ class Select extends Input {
|
|
151
141
|
</label>
|
152
142
|
`,
|
153
143
|
]}
|
154
|
-
</
|
144
|
+
</label>
|
145
|
+
`;
|
146
|
+
}
|
147
|
+
|
148
|
+
protected _renderSuffix(): TemplateResult<1> {
|
149
|
+
return html`
|
150
|
+
<i part="suffix icon">${svgCaretDown()}</i>
|
155
151
|
`;
|
156
152
|
}
|
157
153
|
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { attr, godown, htmlSlot, styles } from "@godown/element";
|
2
|
-
import iconPhoto from "@godown/f7-icon/icons/photo.js";
|
3
2
|
import { type TemplateResult, css, html } from "lit";
|
4
3
|
import { property, state } from "lit/decorators.js";
|
5
4
|
|
@@ -18,46 +17,26 @@ const cssScope = scopePrefix(protoName);
|
|
18
17
|
@godown(protoName)
|
19
18
|
@styles(css`
|
20
19
|
:host {
|
21
|
-
${cssScope}--from: var(${cssGlobalVars.
|
22
|
-
${cssScope}--to: var(${cssGlobalVars.
|
20
|
+
${cssScope}--from: var(${cssGlobalVars.background});
|
21
|
+
${cssScope}--to: var(${cssGlobalVars.passive});
|
23
22
|
${cssScope}--deg: 95deg;
|
24
|
-
${cssScope}--duration:
|
25
|
-
${cssScope}--icon-size: 5em;
|
26
|
-
${cssScope}--icon-margin: .25em;
|
27
|
-
color: var(${cssGlobalVars._colors.darkgray[5]});
|
28
|
-
background: var(${cssScope}--from);
|
23
|
+
${cssScope}--duration: 2s;
|
29
24
|
min-height: 1.5em;
|
30
25
|
width: 100%;
|
31
26
|
flex-shrink: 0;
|
32
|
-
display: block;
|
33
27
|
overflow: hidden;
|
34
|
-
|
35
|
-
|
36
|
-
[part="root"] {
|
37
|
-
min-height: inherit;
|
38
|
-
text-align: center;
|
39
|
-
animation: var(${cssScope}--duration) ease-in-out 0s infinite none running;
|
40
|
-
}
|
41
|
-
|
42
|
-
svg {
|
43
|
-
--size: var(${cssScope}--icon-size);
|
44
|
-
font-size: var(--size);
|
45
|
-
margin: calc(var(--size) * 0.05);
|
46
|
-
}
|
47
|
-
|
48
|
-
[animation="position"] {
|
28
|
+
background-color: transparent;
|
29
|
+
background-size: 200% 100%;
|
49
30
|
background-image: linear-gradient(
|
50
31
|
var(${cssScope}--deg),
|
51
32
|
var(${cssScope}--from) 36%,
|
52
33
|
var(${cssScope}--to) 50%,
|
53
34
|
var(${cssScope}--from) 64%
|
54
35
|
);
|
55
|
-
|
56
|
-
background-size: 200% 100%;
|
57
|
-
animation-name: po;
|
36
|
+
animation: _ var(${cssScope}--duration) ease-in-out infinite none running;
|
58
37
|
}
|
59
38
|
|
60
|
-
@keyframes
|
39
|
+
@keyframes _ {
|
61
40
|
from {
|
62
41
|
background-position: 150% center;
|
63
42
|
}
|
@@ -66,34 +45,16 @@ const cssScope = scopePrefix(protoName);
|
|
66
45
|
}
|
67
46
|
}
|
68
47
|
|
69
|
-
[
|
70
|
-
|
71
|
-
animation-direction: alternate;
|
48
|
+
[part="root"] {
|
49
|
+
display: contents;
|
72
50
|
}
|
73
51
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
}
|
78
|
-
to {
|
79
|
-
opacity: 1;
|
80
|
-
}
|
52
|
+
:host,
|
53
|
+
:host([contents]) [part="root"] {
|
54
|
+
display: block;
|
81
55
|
}
|
82
56
|
`)
|
83
57
|
class Skeleton extends GlobalStyle {
|
84
|
-
/**
|
85
|
-
* If "image", render a image placeholder.
|
86
|
-
*/
|
87
|
-
@property()
|
88
|
-
type: "text" | "image";
|
89
|
-
|
90
|
-
/**
|
91
|
-
* Animation type.
|
92
|
-
* opacity animation only effect on slotted element and image icon.
|
93
|
-
*/
|
94
|
-
@property()
|
95
|
-
animation: "position" | "opacity" = "position";
|
96
|
-
|
97
58
|
/**
|
98
59
|
* If false, render slot only.
|
99
60
|
*/
|
@@ -105,12 +66,7 @@ class Skeleton extends GlobalStyle {
|
|
105
66
|
return htmlSlot();
|
106
67
|
}
|
107
68
|
return html`
|
108
|
-
<div
|
109
|
-
part="root"
|
110
|
-
${attr(this.observedRecord)}
|
111
|
-
>
|
112
|
-
${this.type === "image" ? iconPhoto() : ""} ${htmlSlot("loading")}
|
113
|
-
</div>
|
69
|
+
<div part="root">${htmlSlot("loading")}</div>
|
114
70
|
`;
|
115
71
|
}
|
116
72
|
}
|