godown 3.10.1 → 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.
Files changed (293) hide show
  1. package/README.md +2 -63
  2. package/alert.d.ts.map +1 -1
  3. package/avatar.d.ts.map +1 -1
  4. package/badge.d.ts.map +1 -1
  5. package/breath.d.ts.map +1 -1
  6. package/build/godown+lit.iife.js +14 -14
  7. package/build/godown+lit.iife.js.map +1 -1
  8. package/build/godown+lit.js +14 -14
  9. package/build/godown+lit.js.map +1 -1
  10. package/build/godown+lit.umd.js +14 -14
  11. package/build/godown+lit.umd.js.map +1 -1
  12. package/build/godown.iife.js +9 -9
  13. package/build/godown.js +7 -7
  14. package/build/godown.js.map +1 -1
  15. package/build/godown.umd.js +10 -10
  16. package/build/godown.umd.js.map +1 -1
  17. package/button.d.ts.map +1 -1
  18. package/card.d.ts.map +1 -1
  19. package/carousel.d.ts.map +1 -1
  20. package/chip.d.ts +2 -0
  21. package/chip.d.ts.map +1 -0
  22. package/chip.js +2 -0
  23. package/chip.js.map +1 -0
  24. package/custom-elements.json +1 -1
  25. package/details.d.ts.map +1 -1
  26. package/dialog.d.ts.map +1 -1
  27. package/divider.d.ts.map +1 -1
  28. package/dragbox.d.ts.map +1 -1
  29. package/flex.d.ts.map +1 -1
  30. package/form.d.ts.map +1 -1
  31. package/grid.d.ts.map +1 -1
  32. package/heading.d.ts.map +1 -1
  33. package/index.d.ts +1 -0
  34. package/index.d.ts.map +1 -1
  35. package/index.js +1 -1
  36. package/input.d.ts.map +1 -1
  37. package/internal/direction.d.ts.map +1 -1
  38. package/internal/direction.js.map +1 -1
  39. package/internal/global-style.d.ts +8 -9
  40. package/internal/global-style.d.ts.map +1 -1
  41. package/internal/global-style.js +1 -1
  42. package/internal/global-style.js.map +1 -1
  43. package/internal/icons/caret-down.d.ts +4 -0
  44. package/internal/icons/caret-down.d.ts.map +1 -0
  45. package/internal/icons/caret-down.js +2 -0
  46. package/internal/icons/caret-down.js.map +1 -0
  47. package/internal/icons/caret-left.d.ts +4 -0
  48. package/internal/icons/caret-left.d.ts.map +1 -0
  49. package/internal/icons/caret-left.js +2 -0
  50. package/internal/icons/caret-left.js.map +1 -0
  51. package/internal/icons/caret-right.d.ts +4 -0
  52. package/internal/icons/caret-right.d.ts.map +1 -0
  53. package/internal/icons/caret-right.js +2 -0
  54. package/internal/icons/caret-right.js.map +1 -0
  55. package/internal/icons/eye-slash.d.ts +4 -0
  56. package/internal/icons/eye-slash.d.ts.map +1 -0
  57. package/internal/icons/eye-slash.js +2 -0
  58. package/internal/icons/eye-slash.js.map +1 -0
  59. package/internal/ring.d.ts +19 -0
  60. package/internal/ring.d.ts.map +1 -0
  61. package/internal/ring.js +2 -0
  62. package/internal/ring.js.map +1 -0
  63. package/internal/super-input.d.ts +2 -2
  64. package/internal/super-input.d.ts.map +1 -1
  65. package/internal/super-input.js +1 -1
  66. package/internal/super-input.js.map +1 -1
  67. package/internal/super-openable.d.ts.map +1 -1
  68. package/internal/super-openable.js.map +1 -1
  69. package/layout.d.ts.map +1 -1
  70. package/link.d.ts.map +1 -1
  71. package/package.json +3 -5
  72. package/progress.d.ts.map +1 -1
  73. package/range.d.ts.map +1 -1
  74. package/rotate.d.ts.map +1 -1
  75. package/router.d.ts.map +1 -1
  76. package/select.d.ts.map +1 -1
  77. package/skeleton.d.ts.map +1 -1
  78. package/split.d.ts.map +1 -1
  79. package/src/chip.ts +1 -0
  80. package/src/index.ts +1 -0
  81. package/src/internal/global-style.ts +40 -37
  82. package/src/internal/icons/caret-down.ts +7 -0
  83. package/src/internal/icons/caret-left.ts +7 -0
  84. package/src/internal/icons/caret-right.ts +7 -0
  85. package/src/internal/icons/eye-slash.ts +7 -0
  86. package/src/internal/ring.ts +57 -0
  87. package/src/internal/super-input.ts +9 -70
  88. package/src/web-components/alert/component.ts +16 -195
  89. package/src/web-components/badge/component.ts +7 -96
  90. package/src/web-components/breath/component.ts +8 -8
  91. package/src/web-components/button/component.ts +9 -139
  92. package/src/web-components/card/component.ts +11 -6
  93. package/src/web-components/carousel/component.ts +6 -6
  94. package/src/web-components/chip/component.ts +115 -0
  95. package/src/web-components/chip/definition.ts +11 -0
  96. package/src/web-components/details/component.ts +1 -1
  97. package/src/web-components/divider/component.ts +2 -17
  98. package/src/web-components/heading/component.ts +12 -16
  99. package/src/web-components/input/component.ts +87 -39
  100. package/src/web-components/link/component.ts +53 -3
  101. package/src/web-components/progress/component.ts +2 -1
  102. package/src/web-components/range/component.ts +19 -25
  103. package/src/web-components/rotate/component.ts +2 -2
  104. package/src/web-components/select/component.ts +14 -18
  105. package/src/web-components/select/definition.ts +1 -1
  106. package/src/web-components/skeleton/component.ts +13 -57
  107. package/src/web-components/split/component.ts +16 -14
  108. package/src/web-components/switch/component.ts +4 -7
  109. package/src/web-components/tabs/component.ts +11 -8
  110. package/src/web-components/text/component.ts +2 -2
  111. package/switch.d.ts.map +1 -1
  112. package/tabs.d.ts.map +1 -1
  113. package/text.d.ts.map +1 -1
  114. package/time.d.ts.map +1 -1
  115. package/tooltip.d.ts.map +1 -1
  116. package/typewriter.d.ts.map +1 -1
  117. package/vscode.html-custom-data.json +1 -1
  118. package/web-components/alert/component.d.ts +5 -32
  119. package/web-components/alert/component.d.ts.map +1 -1
  120. package/web-components/alert/component.js +1 -1
  121. package/web-components/alert/component.js.map +1 -1
  122. package/web-components/alert/definition.d.ts.map +1 -1
  123. package/web-components/alert/definition.js.map +1 -1
  124. package/web-components/avatar/component.d.ts.map +1 -1
  125. package/web-components/avatar/component.js.map +1 -1
  126. package/web-components/avatar/definition.d.ts.map +1 -1
  127. package/web-components/avatar/definition.js.map +1 -1
  128. package/web-components/badge/component.d.ts +4 -21
  129. package/web-components/badge/component.d.ts.map +1 -1
  130. package/web-components/badge/component.js +1 -1
  131. package/web-components/badge/component.js.map +1 -1
  132. package/web-components/badge/definition.d.ts.map +1 -1
  133. package/web-components/badge/definition.js.map +1 -1
  134. package/web-components/breath/component.d.ts.map +1 -1
  135. package/web-components/breath/component.js +1 -1
  136. package/web-components/breath/component.js.map +1 -1
  137. package/web-components/breath/definition.d.ts.map +1 -1
  138. package/web-components/breath/definition.js.map +1 -1
  139. package/web-components/button/component.d.ts +0 -18
  140. package/web-components/button/component.d.ts.map +1 -1
  141. package/web-components/button/component.js +1 -1
  142. package/web-components/button/component.js.map +1 -1
  143. package/web-components/button/definition.d.ts.map +1 -1
  144. package/web-components/button/definition.js.map +1 -1
  145. package/web-components/card/component.d.ts +3 -0
  146. package/web-components/card/component.d.ts.map +1 -1
  147. package/web-components/card/component.js +1 -1
  148. package/web-components/card/component.js.map +1 -1
  149. package/web-components/card/definition.d.ts.map +1 -1
  150. package/web-components/card/definition.js.map +1 -1
  151. package/web-components/carousel/component.d.ts.map +1 -1
  152. package/web-components/carousel/component.js +1 -1
  153. package/web-components/carousel/component.js.map +1 -1
  154. package/web-components/carousel/definition.d.ts.map +1 -1
  155. package/web-components/carousel/definition.js.map +1 -1
  156. package/web-components/chip/component.d.ts +31 -0
  157. package/web-components/chip/component.d.ts.map +1 -0
  158. package/web-components/chip/component.js +2 -0
  159. package/web-components/chip/component.js.map +1 -0
  160. package/web-components/chip/definition.d.ts +8 -0
  161. package/web-components/chip/definition.d.ts.map +1 -0
  162. package/web-components/chip/definition.js +2 -0
  163. package/web-components/chip/definition.js.map +1 -0
  164. package/web-components/details/component.d.ts.map +1 -1
  165. package/web-components/details/component.js +1 -1
  166. package/web-components/details/component.js.map +1 -1
  167. package/web-components/details/definition.d.ts.map +1 -1
  168. package/web-components/details/definition.js.map +1 -1
  169. package/web-components/dialog/component.d.ts.map +1 -1
  170. package/web-components/dialog/component.js.map +1 -1
  171. package/web-components/dialog/definition.d.ts.map +1 -1
  172. package/web-components/dialog/definition.js.map +1 -1
  173. package/web-components/divider/component.d.ts.map +1 -1
  174. package/web-components/divider/component.js +1 -1
  175. package/web-components/divider/component.js.map +1 -1
  176. package/web-components/divider/definition.d.ts.map +1 -1
  177. package/web-components/divider/definition.js.map +1 -1
  178. package/web-components/dragbox/component.d.ts.map +1 -1
  179. package/web-components/dragbox/component.js.map +1 -1
  180. package/web-components/dragbox/definition.d.ts.map +1 -1
  181. package/web-components/dragbox/definition.js.map +1 -1
  182. package/web-components/flex/component.d.ts.map +1 -1
  183. package/web-components/flex/component.js.map +1 -1
  184. package/web-components/flex/definition.d.ts.map +1 -1
  185. package/web-components/flex/definition.js.map +1 -1
  186. package/web-components/form/component.d.ts.map +1 -1
  187. package/web-components/form/component.js.map +1 -1
  188. package/web-components/form/definition.d.ts.map +1 -1
  189. package/web-components/form/definition.js.map +1 -1
  190. package/web-components/grid/component.d.ts.map +1 -1
  191. package/web-components/grid/component.js.map +1 -1
  192. package/web-components/grid/definition.d.ts.map +1 -1
  193. package/web-components/grid/definition.js.map +1 -1
  194. package/web-components/heading/component.d.ts +2 -2
  195. package/web-components/heading/component.d.ts.map +1 -1
  196. package/web-components/heading/component.js +1 -1
  197. package/web-components/heading/component.js.map +1 -1
  198. package/web-components/heading/definition.d.ts.map +1 -1
  199. package/web-components/heading/definition.js.map +1 -1
  200. package/web-components/input/component.d.ts +3 -3
  201. package/web-components/input/component.d.ts.map +1 -1
  202. package/web-components/input/component.js +1 -1
  203. package/web-components/input/component.js.map +1 -1
  204. package/web-components/input/definition.d.ts.map +1 -1
  205. package/web-components/input/definition.js.map +1 -1
  206. package/web-components/layout/component.d.ts.map +1 -1
  207. package/web-components/layout/component.js.map +1 -1
  208. package/web-components/layout/definition.d.ts.map +1 -1
  209. package/web-components/layout/definition.js.map +1 -1
  210. package/web-components/link/component.d.ts +13 -2
  211. package/web-components/link/component.d.ts.map +1 -1
  212. package/web-components/link/component.js +1 -1
  213. package/web-components/link/component.js.map +1 -1
  214. package/web-components/link/definition.d.ts.map +1 -1
  215. package/web-components/link/definition.js.map +1 -1
  216. package/web-components/progress/component.d.ts.map +1 -1
  217. package/web-components/progress/component.js +1 -1
  218. package/web-components/progress/component.js.map +1 -1
  219. package/web-components/progress/definition.d.ts.map +1 -1
  220. package/web-components/progress/definition.js.map +1 -1
  221. package/web-components/range/component.d.ts.map +1 -1
  222. package/web-components/range/component.js +1 -1
  223. package/web-components/range/component.js.map +1 -1
  224. package/web-components/range/definition.d.ts.map +1 -1
  225. package/web-components/range/definition.js.map +1 -1
  226. package/web-components/rotate/component.d.ts.map +1 -1
  227. package/web-components/rotate/component.js +1 -1
  228. package/web-components/rotate/component.js.map +1 -1
  229. package/web-components/rotate/definition.d.ts.map +1 -1
  230. package/web-components/rotate/definition.js.map +1 -1
  231. package/web-components/router/component.d.ts.map +1 -1
  232. package/web-components/router/component.js.map +1 -1
  233. package/web-components/router/definition.d.ts.map +1 -1
  234. package/web-components/router/definition.js.map +1 -1
  235. package/web-components/select/component.d.ts +2 -1
  236. package/web-components/select/component.d.ts.map +1 -1
  237. package/web-components/select/component.js +1 -1
  238. package/web-components/select/component.js.map +1 -1
  239. package/web-components/select/definition.d.ts +1 -1
  240. package/web-components/select/definition.d.ts.map +1 -1
  241. package/web-components/select/definition.js.map +1 -1
  242. package/web-components/skeleton/component.d.ts +0 -9
  243. package/web-components/skeleton/component.d.ts.map +1 -1
  244. package/web-components/skeleton/component.js +1 -1
  245. package/web-components/skeleton/component.js.map +1 -1
  246. package/web-components/skeleton/definition.d.ts.map +1 -1
  247. package/web-components/skeleton/definition.js.map +1 -1
  248. package/web-components/split/component.d.ts +1 -1
  249. package/web-components/split/component.d.ts.map +1 -1
  250. package/web-components/split/component.js +1 -1
  251. package/web-components/split/component.js.map +1 -1
  252. package/web-components/split/definition.d.ts.map +1 -1
  253. package/web-components/split/definition.js.map +1 -1
  254. package/web-components/switch/component.d.ts.map +1 -1
  255. package/web-components/switch/component.js +1 -1
  256. package/web-components/switch/component.js.map +1 -1
  257. package/web-components/switch/definition.d.ts.map +1 -1
  258. package/web-components/switch/definition.js.map +1 -1
  259. package/web-components/tabs/component.d.ts +3 -3
  260. package/web-components/tabs/component.d.ts.map +1 -1
  261. package/web-components/tabs/component.js +1 -1
  262. package/web-components/tabs/component.js.map +1 -1
  263. package/web-components/tabs/definition.d.ts.map +1 -1
  264. package/web-components/tabs/definition.js.map +1 -1
  265. package/web-components/text/component.d.ts +1 -1
  266. package/web-components/text/component.d.ts.map +1 -1
  267. package/web-components/text/component.js +1 -1
  268. package/web-components/text/component.js.map +1 -1
  269. package/web-components/text/definition.d.ts.map +1 -1
  270. package/web-components/text/definition.js.map +1 -1
  271. package/web-components/time/component.d.ts.map +1 -1
  272. package/web-components/time/component.js.map +1 -1
  273. package/web-components/time/definition.d.ts.map +1 -1
  274. package/web-components/time/definition.js.map +1 -1
  275. package/web-components/tooltip/component.d.ts.map +1 -1
  276. package/web-components/tooltip/component.js.map +1 -1
  277. package/web-components/tooltip/definition.d.ts.map +1 -1
  278. package/web-components/tooltip/definition.js.map +1 -1
  279. package/web-components/typewriter/component.d.ts.map +1 -1
  280. package/web-components/typewriter/component.js.map +1 -1
  281. package/web-components/typewriter/definition.d.ts.map +1 -1
  282. package/web-components/typewriter/definition.js.map +1 -1
  283. package/web-types.json +1 -1
  284. package/internal/outline.d.ts +0 -19
  285. package/internal/outline.d.ts.map +0 -1
  286. package/internal/outline.js +0 -2
  287. package/internal/outline.js.map +0 -1
  288. package/internal/super-anchor.d.ts +0 -18
  289. package/internal/super-anchor.d.ts.map +0 -1
  290. package/internal/super-anchor.js +0 -2
  291. package/internal/super-anchor.js.map +0 -1
  292. package/src/internal/outline.ts +0 -58
  293. package/src/internal/super-anchor.ts +0 -60
@@ -1,16 +1,16 @@
1
- import { attr, godown, part, styles, htmlSlot, StyleController } from "@godown/element";
2
- import iconEyeSlashFill from "@godown/f7-icon/icons/eye-slash-fill.js";
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 { OutlineBuilder } from "../../internal/outline.js";
8
+ import { RingBuilder } from "../../internal/ring.js";
9
9
 
10
10
  const protoName = "input";
11
11
 
12
12
  /**
13
- * {@linkcode Input} renders a text input.
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
- ${cssGlobalVars.outlineColor}: var(${cssGlobalVars.active});
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: "text" | "search" | "tel" | "url" | "email" | "password" = "text";
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
- @part("input")
95
+ @queryPart("input")
43
96
  protected _input: HTMLInputElement;
44
97
 
45
- private __outlineSC = new StyleController(
46
- this,
47
- () =>
48
- new OutlineBuilder({ outlineType: this.outlineType }).css +
49
- (this.variant === "outline" ? `:host{${cssGlobalVars.outlineColor}: var(${cssGlobalVars.active})}` : ""),
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
- <div
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
- </div>
132
+ </label>
79
133
  `;
80
134
  }
81
135
 
82
136
  protected _renderSuffix(): TemplateResult<1> {
83
137
  const PASSWORD = "password";
84
- return html`
85
- <label
86
- for=${this.makeId}
87
- part="suffix"
88
- >
89
- ${this.type === PASSWORD
90
- ? html`
91
- <i
92
- part="icon"
93
- @mousedown="${() => this._changeInputType("text")}"
94
- @mouseup="${() => this._changeInputType(PASSWORD)}"
95
- @mouseleave="${() => this._changeInputType(PASSWORD)}"
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
- class Link extends SuperAnchor {
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
- width = ranger.restrict(this.value / ranger.diff) * 100;
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
- part,
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}--length: var(${cssGlobalVars.input}-width);
39
+ ${cssScope}--handle-scale: 1;
40
+ ${cssScope}--track-background: var(${cssGlobalVars.active});
41
41
  background: var(${cssGlobalVars.passive});
42
- width: var(${cssScope}--length);
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: var(${cssScope}--length);
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(${cssGlobalVars.active});
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="handle"] {
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
- transform: scale(var(${cssScope}--handle-scale, 1)) translate(-50%, -25%);
94
- background: var(${cssGlobalVars.active});
95
- border-color: var(${cssGlobalVars.input}-control);
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="handle"] {
113
+ [part~="handle"] {
117
114
  left: var(--handle);
118
115
  top: 0;
119
116
  }
120
117
 
121
- [vertical] [part="handle"] {
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
- @part("root")
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, "outline-type");
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, part, styles } from "@godown/element";
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
- @part("root")
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, part, styles } from "@godown/element";
2
- import svgCaretDown from "@godown/f7-icon/icons/chevron-down.js";
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 element.
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: var(${cssGlobalVars.active});
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
- @part("content")
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
- <div
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
- </div>
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
 
@@ -6,6 +6,6 @@ export default Select;
6
6
 
7
7
  declare global {
8
8
  interface HTMLElementTagNameMap {
9
- "g-select": Select;
9
+ "godown-select": Select;
10
10
  }
11
11
  }
@@ -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._colors.darkgray[9]});
22
- ${cssScope}--to: var(${cssGlobalVars._colors.darkgray[7]});
20
+ ${cssScope}--from: var(${cssGlobalVars.background});
21
+ ${cssScope}--to: var(${cssGlobalVars.passive});
23
22
  ${cssScope}--deg: 95deg;
24
- ${cssScope}--duration: 1.5s;
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
- background-color: transparent;
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 po {
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
- [animation="opacity"] {
70
- animation-name: op;
71
- animation-direction: alternate;
48
+ [part="root"] {
49
+ display: contents;
72
50
  }
73
51
 
74
- @keyframes op {
75
- 50% {
76
- opacity: 0.25;
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
  }