aeico-components 0.1.7 → 0.1.8

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 (349) hide show
  1. package/dist/alert.cjs +637 -4
  2. package/dist/alert.cjs.map +7 -1
  3. package/dist/alert.js +575 -3
  4. package/dist/alert.js.map +7 -1
  5. package/dist/badge.cjs +573 -4
  6. package/dist/badge.cjs.map +7 -1
  7. package/dist/badge.js +510 -3
  8. package/dist/badge.js.map +7 -1
  9. package/dist/breadcrumb.cjs +709 -5
  10. package/dist/breadcrumb.cjs.map +7 -1
  11. package/dist/breadcrumb.js +644 -4
  12. package/dist/breadcrumb.js.map +7 -1
  13. package/dist/button-group.cjs +546 -4
  14. package/dist/button-group.cjs.map +7 -1
  15. package/dist/button-group.js +489 -3
  16. package/dist/button-group.js.map +7 -1
  17. package/dist/button.cjs +834 -4
  18. package/dist/button.cjs.map +7 -1
  19. package/dist/button.js +771 -3
  20. package/dist/button.js.map +7 -1
  21. package/dist/card.cjs +574 -4
  22. package/dist/card.cjs.map +7 -1
  23. package/dist/card.js +516 -3
  24. package/dist/card.js.map +7 -1
  25. package/dist/checkbox.cjs +867 -4
  26. package/dist/checkbox.cjs.map +7 -1
  27. package/dist/checkbox.js +794 -3
  28. package/dist/checkbox.js.map +7 -1
  29. package/dist/copy-button.cjs +1046 -4
  30. package/dist/copy-button.cjs.map +7 -1
  31. package/dist/copy-button.js +969 -3
  32. package/dist/copy-button.js.map +7 -1
  33. package/dist/detail-group.cjs +531 -4
  34. package/dist/detail-group.cjs.map +7 -1
  35. package/dist/detail-group.js +474 -3
  36. package/dist/detail-group.js.map +7 -1
  37. package/dist/detail.cjs +627 -4
  38. package/dist/detail.cjs.map +7 -1
  39. package/dist/detail.js +569 -3
  40. package/dist/detail.js.map +7 -1
  41. package/dist/dialog.cjs +738 -4
  42. package/dist/dialog.cjs.map +7 -1
  43. package/dist/dialog.js +665 -3
  44. package/dist/dialog.js.map +7 -1
  45. package/dist/divider.cjs +558 -4
  46. package/dist/divider.cjs.map +7 -1
  47. package/dist/divider.js +502 -3
  48. package/dist/divider.js.map +7 -1
  49. package/dist/drawer.cjs +818 -4
  50. package/dist/drawer.cjs.map +7 -1
  51. package/dist/drawer.js +749 -3
  52. package/dist/drawer.js.map +7 -1
  53. package/dist/dropdown.cjs +1396 -5
  54. package/dist/dropdown.cjs.map +7 -1
  55. package/dist/dropdown.js +1316 -4
  56. package/dist/dropdown.js.map +7 -1
  57. package/dist/icon-button.cjs +999 -4
  58. package/dist/icon-button.cjs.map +7 -1
  59. package/dist/icon-button.js +930 -3
  60. package/dist/icon-button.js.map +7 -1
  61. package/dist/icon.cjs +613 -4
  62. package/dist/icon.cjs.map +7 -1
  63. package/dist/icon.js +547 -3
  64. package/dist/icon.js.map +7 -1
  65. package/dist/index.cjs +6532 -74
  66. package/dist/index.cjs.map +7 -1
  67. package/dist/index.js +6183 -73
  68. package/dist/index.js.map +7 -1
  69. package/dist/menu.cjs +841 -4
  70. package/dist/menu.cjs.map +7 -1
  71. package/dist/menu.js +785 -3
  72. package/dist/menu.js.map +7 -1
  73. package/dist/navbar.cjs +622 -4
  74. package/dist/navbar.cjs.map +7 -1
  75. package/dist/navbar.js +564 -3
  76. package/dist/navbar.js.map +7 -1
  77. package/dist/number-input.cjs +885 -4
  78. package/dist/number-input.cjs.map +7 -1
  79. package/dist/number-input.js +817 -3
  80. package/dist/number-input.js.map +7 -1
  81. package/dist/pagination.cjs +1099 -4
  82. package/dist/pagination.cjs.map +7 -1
  83. package/dist/pagination.js +1029 -3
  84. package/dist/pagination.js.map +7 -1
  85. package/dist/progress-bar.cjs +581 -4
  86. package/dist/progress-bar.cjs.map +7 -1
  87. package/dist/progress-bar.js +525 -3
  88. package/dist/progress-bar.js.map +7 -1
  89. package/dist/radio-group.cjs +973 -5
  90. package/dist/radio-group.cjs.map +7 -1
  91. package/dist/radio-group.js +899 -4
  92. package/dist/radio-group.js.map +7 -1
  93. package/dist/select.cjs +1242 -45
  94. package/dist/select.cjs.map +7 -1
  95. package/dist/select.js +1159 -44
  96. package/dist/select.js.map +7 -1
  97. package/dist/slider.cjs +1420 -4
  98. package/dist/slider.cjs.map +7 -1
  99. package/dist/slider.js +1351 -3
  100. package/dist/slider.js.map +7 -1
  101. package/dist/spinner.cjs +587 -4
  102. package/dist/spinner.cjs.map +7 -1
  103. package/dist/spinner.js +528 -3
  104. package/dist/spinner.js.map +7 -1
  105. package/dist/styles/layout.cjs +1 -0
  106. package/dist/styles/layout.js +1 -0
  107. package/dist/styles/radius.cjs +1 -0
  108. package/dist/styles/radius.js +1 -0
  109. package/dist/styles/variables.cjs +1 -0
  110. package/dist/styles/variables.js +1 -0
  111. package/dist/switch.cjs +1092 -4
  112. package/dist/switch.cjs.map +7 -1
  113. package/dist/switch.js +1013 -3
  114. package/dist/switch.js.map +7 -1
  115. package/dist/tabs.cjs +660 -6
  116. package/dist/tabs.cjs.map +7 -1
  117. package/dist/tabs.js +591 -5
  118. package/dist/tabs.js.map +7 -1
  119. package/dist/tag.cjs +591 -3
  120. package/dist/tag.cjs.map +7 -1
  121. package/dist/tag.js +532 -2
  122. package/dist/tag.js.map +7 -1
  123. package/dist/text-input.cjs +829 -4
  124. package/dist/text-input.cjs.map +7 -1
  125. package/dist/text-input.js +761 -3
  126. package/dist/text-input.js.map +7 -1
  127. package/dist/textarea.cjs +914 -3
  128. package/dist/textarea.cjs.map +7 -1
  129. package/dist/textarea.js +854 -2
  130. package/dist/textarea.js.map +7 -1
  131. package/dist/tooltip.cjs +764 -4
  132. package/dist/tooltip.cjs.map +7 -1
  133. package/dist/tooltip.js +711 -3
  134. package/dist/tooltip.js.map +7 -1
  135. package/dist/tree.cjs +1059 -4
  136. package/dist/tree.cjs.map +7 -1
  137. package/dist/tree.js +985 -3
  138. package/dist/tree.js.map +7 -1
  139. package/dist/types/dialog/dialog.d.ts +1 -0
  140. package/dist/types/drawer/drawer.d.ts +2 -0
  141. package/dist/types/icon/defines.d.ts +2 -0
  142. package/dist/types/menu/defines.d.ts +1 -0
  143. package/dist/types/menu/menu-item.d.ts +1 -0
  144. package/dist/types/menu/menu.d.ts +1 -0
  145. package/dist/types/styles/layout.d.ts +2 -0
  146. package/dist/types/styles/radius.d.ts +2 -0
  147. package/dist/types/styles/variables.d.ts +2 -0
  148. package/package.json +31 -7
  149. package/src/alert/alert.ts +3 -3
  150. package/src/badge/badge.ts +4 -4
  151. package/src/breadcrumb/breadcrumb-item.ts +2 -2
  152. package/src/breadcrumb/breadcrumb.ts +3 -3
  153. package/src/button/button.ts +4 -4
  154. package/src/button-group/button-group.ts +8 -9
  155. package/src/card/card.ts +3 -3
  156. package/src/checkbox/checkbox.ts +6 -6
  157. package/src/copy-button/copy-button.ts +4 -4
  158. package/src/detail/detail.ts +3 -3
  159. package/src/detail-group/detail-group.ts +2 -2
  160. package/src/dialog/dialog.ts +15 -14
  161. package/src/divider/divider.ts +3 -3
  162. package/src/drawer/drawer.ts +28 -11
  163. package/src/dropdown/dropdown-item.ts +2 -2
  164. package/src/dropdown/dropdown.ts +2 -2
  165. package/src/icon/defines.ts +2 -0
  166. package/src/icon/icon.ts +4 -4
  167. package/src/menu/defines.ts +1 -0
  168. package/src/menu/menu-item.ts +14 -4
  169. package/src/menu/menu.ts +5 -2
  170. package/src/navbar/navbar.ts +3 -3
  171. package/src/number-input/number-input.ts +5 -5
  172. package/src/pagination/pagination.ts +3 -3
  173. package/src/progress-bar/progress-bar.ts +3 -3
  174. package/src/radio-group/radio-group.ts +12 -8
  175. package/src/select/select-option.ts +2 -2
  176. package/src/select/select.ts +5 -5
  177. package/src/slider/slider.ts +6 -6
  178. package/src/spinner/spinner.ts +4 -4
  179. package/src/styles/components/button-group.css +2 -0
  180. package/src/styles/components/card.css +42 -18
  181. package/src/styles/components/checkbox.css +16 -5
  182. package/src/styles/components/dialog.css +1 -1
  183. package/src/styles/components/drawer.css +50 -9
  184. package/src/styles/components/field-label.css +1 -1
  185. package/src/styles/components/menu-item.css +6 -0
  186. package/src/styles/components/navbar.css +7 -28
  187. package/src/styles/components/radio-group.css +19 -0
  188. package/src/styles/components/slider.css +30 -5
  189. package/src/styles/components/switch.css +16 -2
  190. package/src/styles/layout.css +5 -2
  191. package/src/styles/radius.css +15 -0
  192. package/src/switch/switch.ts +6 -6
  193. package/src/tabs/tab-panel.ts +1 -1
  194. package/src/tabs/tab.ts +1 -1
  195. package/src/tabs/tabs.ts +2 -2
  196. package/src/tag/tag.ts +4 -4
  197. package/src/text-input/text-input.ts +5 -5
  198. package/src/textarea/textarea.ts +5 -5
  199. package/src/tooltip/tooltip.ts +2 -2
  200. package/src/tree/tree-item.ts +2 -2
  201. package/src/tree/tree.ts +2 -2
  202. package/dist/chunks/action-button.cjs +0 -296
  203. package/dist/chunks/action-button.cjs.map +0 -1
  204. package/dist/chunks/action-button.js +0 -297
  205. package/dist/chunks/action-button.js.map +0 -1
  206. package/dist/chunks/aeico-component.cjs +0 -17
  207. package/dist/chunks/aeico-component.cjs.map +0 -1
  208. package/dist/chunks/aeico-component.js +0 -18
  209. package/dist/chunks/aeico-component.js.map +0 -1
  210. package/dist/chunks/alert.cjs +0 -164
  211. package/dist/chunks/alert.cjs.map +0 -1
  212. package/dist/chunks/alert.js +0 -165
  213. package/dist/chunks/alert.js.map +0 -1
  214. package/dist/chunks/badge.cjs +0 -85
  215. package/dist/chunks/badge.cjs.map +0 -1
  216. package/dist/chunks/badge.js +0 -86
  217. package/dist/chunks/badge.js.map +0 -1
  218. package/dist/chunks/breadcrumb-item.cjs +0 -261
  219. package/dist/chunks/breadcrumb-item.cjs.map +0 -1
  220. package/dist/chunks/breadcrumb-item.js +0 -262
  221. package/dist/chunks/breadcrumb-item.js.map +0 -1
  222. package/dist/chunks/button-group.cjs +0 -79
  223. package/dist/chunks/button-group.cjs.map +0 -1
  224. package/dist/chunks/button-group.js +0 -80
  225. package/dist/chunks/button-group.js.map +0 -1
  226. package/dist/chunks/button.cjs +0 -337
  227. package/dist/chunks/button.cjs.map +0 -1
  228. package/dist/chunks/button.js +0 -338
  229. package/dist/chunks/button.js.map +0 -1
  230. package/dist/chunks/card.cjs +0 -93
  231. package/dist/chunks/card.cjs.map +0 -1
  232. package/dist/chunks/card.js +0 -94
  233. package/dist/chunks/card.js.map +0 -1
  234. package/dist/chunks/checkbox.cjs +0 -86
  235. package/dist/chunks/checkbox.cjs.map +0 -1
  236. package/dist/chunks/checkbox.js +0 -87
  237. package/dist/chunks/checkbox.js.map +0 -1
  238. package/dist/chunks/color.cjs +0 -4
  239. package/dist/chunks/color.cjs.map +0 -1
  240. package/dist/chunks/color.js +0 -5
  241. package/dist/chunks/color.js.map +0 -1
  242. package/dist/chunks/copy-button.cjs +0 -171
  243. package/dist/chunks/copy-button.cjs.map +0 -1
  244. package/dist/chunks/copy-button.js +0 -172
  245. package/dist/chunks/copy-button.js.map +0 -1
  246. package/dist/chunks/detail-group.cjs +0 -65
  247. package/dist/chunks/detail-group.cjs.map +0 -1
  248. package/dist/chunks/detail-group.js +0 -66
  249. package/dist/chunks/detail-group.js.map +0 -1
  250. package/dist/chunks/detail.cjs +0 -146
  251. package/dist/chunks/detail.cjs.map +0 -1
  252. package/dist/chunks/detail.js +0 -147
  253. package/dist/chunks/detail.js.map +0 -1
  254. package/dist/chunks/dialog.cjs +0 -117
  255. package/dist/chunks/dialog.cjs.map +0 -1
  256. package/dist/chunks/dialog.js +0 -118
  257. package/dist/chunks/dialog.js.map +0 -1
  258. package/dist/chunks/divider.cjs +0 -80
  259. package/dist/chunks/divider.cjs.map +0 -1
  260. package/dist/chunks/divider.js +0 -81
  261. package/dist/chunks/divider.js.map +0 -1
  262. package/dist/chunks/drawer.cjs +0 -180
  263. package/dist/chunks/drawer.cjs.map +0 -1
  264. package/dist/chunks/drawer.js +0 -181
  265. package/dist/chunks/drawer.js.map +0 -1
  266. package/dist/chunks/dropdown-button.cjs +0 -533
  267. package/dist/chunks/dropdown-button.cjs.map +0 -1
  268. package/dist/chunks/dropdown-button.js +0 -534
  269. package/dist/chunks/dropdown-button.js.map +0 -1
  270. package/dist/chunks/icon-button.cjs +0 -35
  271. package/dist/chunks/icon-button.cjs.map +0 -1
  272. package/dist/chunks/icon-button.js +0 -36
  273. package/dist/chunks/icon-button.js.map +0 -1
  274. package/dist/chunks/icon.cjs +0 -124
  275. package/dist/chunks/icon.cjs.map +0 -1
  276. package/dist/chunks/icon.js +0 -125
  277. package/dist/chunks/icon.js.map +0 -1
  278. package/dist/chunks/menu.cjs +0 -396
  279. package/dist/chunks/menu.cjs.map +0 -1
  280. package/dist/chunks/menu.js +0 -397
  281. package/dist/chunks/menu.js.map +0 -1
  282. package/dist/chunks/navbar.cjs +0 -142
  283. package/dist/chunks/navbar.cjs.map +0 -1
  284. package/dist/chunks/navbar.js +0 -143
  285. package/dist/chunks/navbar.js.map +0 -1
  286. package/dist/chunks/number-input.cjs +0 -110
  287. package/dist/chunks/number-input.cjs.map +0 -1
  288. package/dist/chunks/number-input.js +0 -111
  289. package/dist/chunks/number-input.js.map +0 -1
  290. package/dist/chunks/pagination.cjs +0 -475
  291. package/dist/chunks/pagination.cjs.map +0 -1
  292. package/dist/chunks/pagination.js +0 -476
  293. package/dist/chunks/pagination.js.map +0 -1
  294. package/dist/chunks/progress-bar.cjs +0 -101
  295. package/dist/chunks/progress-bar.cjs.map +0 -1
  296. package/dist/chunks/progress-bar.js +0 -102
  297. package/dist/chunks/progress-bar.js.map +0 -1
  298. package/dist/chunks/radio.cjs +0 -185
  299. package/dist/chunks/radio.cjs.map +0 -1
  300. package/dist/chunks/radio.js +0 -186
  301. package/dist/chunks/radio.js.map +0 -1
  302. package/dist/chunks/select.cjs +0 -381
  303. package/dist/chunks/select.cjs.map +0 -1
  304. package/dist/chunks/select.js +0 -382
  305. package/dist/chunks/select.js.map +0 -1
  306. package/dist/chunks/size.cjs +0 -4
  307. package/dist/chunks/size.cjs.map +0 -1
  308. package/dist/chunks/size.js +0 -5
  309. package/dist/chunks/size.js.map +0 -1
  310. package/dist/chunks/slider.cjs +0 -608
  311. package/dist/chunks/slider.cjs.map +0 -1
  312. package/dist/chunks/slider.js +0 -609
  313. package/dist/chunks/slider.js.map +0 -1
  314. package/dist/chunks/spinner.cjs +0 -102
  315. package/dist/chunks/spinner.cjs.map +0 -1
  316. package/dist/chunks/spinner.js +0 -103
  317. package/dist/chunks/spinner.js.map +0 -1
  318. package/dist/chunks/switch.cjs +0 -167
  319. package/dist/chunks/switch.cjs.map +0 -1
  320. package/dist/chunks/switch.js +0 -168
  321. package/dist/chunks/switch.js.map +0 -1
  322. package/dist/chunks/tab-panel.cjs +0 -174
  323. package/dist/chunks/tab-panel.cjs.map +0 -1
  324. package/dist/chunks/tab-panel.js +0 -175
  325. package/dist/chunks/tab-panel.js.map +0 -1
  326. package/dist/chunks/tag.cjs +0 -108
  327. package/dist/chunks/tag.cjs.map +0 -1
  328. package/dist/chunks/tag.js +0 -109
  329. package/dist/chunks/tag.js.map +0 -1
  330. package/dist/chunks/text-input.cjs +0 -54
  331. package/dist/chunks/text-input.cjs.map +0 -1
  332. package/dist/chunks/text-input.js +0 -55
  333. package/dist/chunks/text-input.js.map +0 -1
  334. package/dist/chunks/textarea.cjs +0 -137
  335. package/dist/chunks/textarea.cjs.map +0 -1
  336. package/dist/chunks/textarea.js +0 -138
  337. package/dist/chunks/textarea.js.map +0 -1
  338. package/dist/chunks/tooltip.cjs +0 -292
  339. package/dist/chunks/tooltip.cjs.map +0 -1
  340. package/dist/chunks/tooltip.js +0 -293
  341. package/dist/chunks/tooltip.js.map +0 -1
  342. package/dist/chunks/tree.cjs +0 -468
  343. package/dist/chunks/tree.cjs.map +0 -1
  344. package/dist/chunks/tree.js +0 -469
  345. package/dist/chunks/tree.js.map +0 -1
  346. package/dist/chunks/variables.cjs +0 -396
  347. package/dist/chunks/variables.cjs.map +0 -1
  348. package/dist/chunks/variables.js +0 -397
  349. package/dist/chunks/variables.js.map +0 -1
@@ -1,54 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- const actionButton = require("./action-button.cjs");
6
- const aeico = require("aeico");
7
- const variables = require("./variables.cjs");
8
- const size = require("./size.cjs");
9
- const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n --input-field-gap: 4px;\n --input-font-size: 1em;\n --input-padding: 0.333em 0.583em;\n --input-border-width: 1px;\n --input-transition: border-color 0.12s, background 0.12s;\n}\n\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--input-field-gap);\n width: 100%;\n}\n\ninput {\n flex: 1;\n min-width: 0;\n font-size: var(--input-font-size);\n padding: var(--input-padding);\n border: var(--input-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n transition: var(--input-transition);\n}\n\ninput::placeholder {\n color: var(--ae-color-text-disabled);\n}\n\ninput:focus {\n outline: none;\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\ninput:hover:not(:focus) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\ninput:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n:host([error]) input {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) input:hover:not(:focus),\n:host([error]) input:focus {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n.input-container:has(.action-controls) input {\n border-radius: var(--ae-border-radius, var(--ae-radius-xs)) 0 0 var(--ae-border-radius, var(--ae-radius-xs));\n}\n";
10
- class TextInput extends actionButton.AeicoField {
11
- constructor() {
12
- super(...arguments);
13
- __publicField(this, "fieldElement", null);
14
- }
15
- render() {
16
- return aeico.html(({ div, input }) => {
17
- const id = this.getFieldId();
18
- this.renderLabel(id);
19
- div({ className: "input-container field-body" }, () => {
20
- this.fieldElement = input({
21
- id,
22
- type: this.type || "text",
23
- placeholder: this.placeholder || "",
24
- required: Boolean(this.required),
25
- "@input": this.boundOnChange
26
- });
27
- this.renderActionButtons();
28
- });
29
- this.renderHelperText();
30
- this.renderError();
31
- if (this.fieldElement && this.value != null) {
32
- this.fieldElement.value = String(this.value);
33
- }
34
- });
35
- }
36
- /**
37
- * Write value to the input element (DOM only)
38
- */
39
- writeValue(value) {
40
- const strValue = String(value || "");
41
- if (this.fieldElement) {
42
- this.fieldElement.value = strValue;
43
- }
44
- }
45
- }
46
- __publicField(TextInput, "tagName", "text-input");
47
- __publicField(TextInput, "props", {
48
- placeholder: { type: String },
49
- type: { type: String }
50
- });
51
- __publicField(TextInput, "styles", [variables.variables, size.sizeCSS, actionButton.fieldLabelCSS, actionButton.actionButtonCSS, style]);
52
- TextInput.register();
53
- exports.TextInput = TextInput;
54
- //# sourceMappingURL=text-input.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-input.cjs","sources":["../../src/text-input/text-input.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport variables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport fieldLabelCSS from '../styles/components/field-label.css?inline';\nimport actionButtonCSS from '../styles/components/action-button.css?inline';\nimport style from '../styles/components/text-input.css?inline';\n\nclass TextInput extends AeicoField {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'text-input';\n\n static props: Props = {\n placeholder: { type: String },\n type: { type: String },\n };\n\n declare placeholder?: string;\n declare type?: string;\n\n protected static styles = [variables, sizeCSS, fieldLabelCSS, actionButtonCSS, style];\n\n render() {\n return html(({ div, input }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'input-container field-body' }, () => {\n this.fieldElement = input({\n id,\n type: this.type || 'text',\n placeholder: this.placeholder || '',\n required: Boolean(this.required),\n '@input': this.boundOnChange,\n });\n\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n\n if (this.fieldElement && this.value != null) {\n this.fieldElement.value = String(this.value);\n }\n });\n }\n\n /**\n * Write value to the input element (DOM only)\n */\n protected writeValue(value: string): void {\n const strValue = String(value || '');\n\n if (this.fieldElement) {\n this.fieldElement.value = strValue;\n }\n }\n}\n\nTextInput.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-text-input': TextInput;\n }\n}\n\nexport default TextInput;\nexport type TextInputProps = InferProps<typeof TextInput>;\n"],"names":["AeicoField","html","variables","sizeCSS","fieldLabelCSS","actionButtonCSS"],"mappings":";;;;;;;;;AASA,MAAM,kBAAkBA,aAAAA,WAAW;AAAA,EAAnC;AAAA;AACY,wCAAwC;AAAA;AAAA,EAclD,SAAS;AACP,WAAOC,WAAK,CAAC,EAAE,KAAK,YAAY;AAC9B,YAAM,KAAK,KAAK,WAAA;AAChB,WAAK,YAAY,EAAE;AACnB,UAAI,EAAE,WAAW,6BAAA,GAAgC,MAAM;AACrD,aAAK,eAAe,MAAM;AAAA,UACxB;AAAA,UACA,MAAM,KAAK,QAAQ;AAAA,UACnB,aAAa,KAAK,eAAe;AAAA,UACjC,UAAU,QAAQ,KAAK,QAAQ;AAAA,UAC/B,UAAU,KAAK;AAAA,QAAA,CAChB;AAED,aAAK,oBAAA;AAAA,MACP,CAAC;AACD,WAAK,iBAAA;AACL,WAAK,YAAA;AAEL,UAAI,KAAK,gBAAgB,KAAK,SAAS,MAAM;AAC3C,aAAK,aAAa,QAAQ,OAAO,KAAK,KAAK;AAAA,MAC7C;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKU,WAAW,OAAqB;AACxC,UAAM,WAAW,OAAO,SAAS,EAAE;AAEnC,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,QAAQ;AAAA,IAC5B;AAAA,EACF;AACF;AA9CE,cAHI,WAGG,WAAU;AAEjB,cALI,WAKG,SAAe;AAAA,EACpB,aAAa,EAAE,MAAM,OAAA;AAAA,EACrB,MAAM,EAAE,MAAM,OAAA;AAAO;AAMvB,cAbI,WAaa,UAAS,CAACC,UAAAA,WAAWC,KAAAA,SAASC,aAAAA,eAAeC,aAAAA,iBAAiB,KAAK;AAsCtF,UAAU,SAAA;;"}
@@ -1,55 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { A as AeicoField, f as fieldLabelCSS, a as actionButtonCSS } from "./action-button.js";
5
- import { html } from "aeico";
6
- import { v as variables } from "./variables.js";
7
- import { s as sizeCSS } from "./size.js";
8
- const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n --input-field-gap: 4px;\n --input-font-size: 1em;\n --input-padding: 0.333em 0.583em;\n --input-border-width: 1px;\n --input-transition: border-color 0.12s, background 0.12s;\n}\n\n.input-container {\n display: flex;\n align-items: center;\n gap: var(--input-field-gap);\n width: 100%;\n}\n\ninput {\n flex: 1;\n min-width: 0;\n font-size: var(--input-font-size);\n padding: var(--input-padding);\n border: var(--input-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n transition: var(--input-transition);\n}\n\ninput::placeholder {\n color: var(--ae-color-text-disabled);\n}\n\ninput:focus {\n outline: none;\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\ninput:hover:not(:focus) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\ninput:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n:host([error]) input {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) input:hover:not(:focus),\n:host([error]) input:focus {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n.input-container:has(.action-controls) input {\n border-radius: var(--ae-border-radius, var(--ae-radius-xs)) 0 0 var(--ae-border-radius, var(--ae-radius-xs));\n}\n";
9
- class TextInput extends AeicoField {
10
- constructor() {
11
- super(...arguments);
12
- __publicField(this, "fieldElement", null);
13
- }
14
- render() {
15
- return html(({ div, input }) => {
16
- const id = this.getFieldId();
17
- this.renderLabel(id);
18
- div({ className: "input-container field-body" }, () => {
19
- this.fieldElement = input({
20
- id,
21
- type: this.type || "text",
22
- placeholder: this.placeholder || "",
23
- required: Boolean(this.required),
24
- "@input": this.boundOnChange
25
- });
26
- this.renderActionButtons();
27
- });
28
- this.renderHelperText();
29
- this.renderError();
30
- if (this.fieldElement && this.value != null) {
31
- this.fieldElement.value = String(this.value);
32
- }
33
- });
34
- }
35
- /**
36
- * Write value to the input element (DOM only)
37
- */
38
- writeValue(value) {
39
- const strValue = String(value || "");
40
- if (this.fieldElement) {
41
- this.fieldElement.value = strValue;
42
- }
43
- }
44
- }
45
- __publicField(TextInput, "tagName", "text-input");
46
- __publicField(TextInput, "props", {
47
- placeholder: { type: String },
48
- type: { type: String }
49
- });
50
- __publicField(TextInput, "styles", [variables, sizeCSS, fieldLabelCSS, actionButtonCSS, style]);
51
- TextInput.register();
52
- export {
53
- TextInput as T
54
- };
55
- //# sourceMappingURL=text-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-input.js","sources":["../../src/text-input/text-input.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps, Props } from 'aeico';\nimport { html } from 'aeico';\nimport variables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport fieldLabelCSS from '../styles/components/field-label.css?inline';\nimport actionButtonCSS from '../styles/components/action-button.css?inline';\nimport style from '../styles/components/text-input.css?inline';\n\nclass TextInput extends AeicoField {\n protected fieldElement: HTMLInputElement | null = null;\n\n static tagName = 'text-input';\n\n static props: Props = {\n placeholder: { type: String },\n type: { type: String },\n };\n\n declare placeholder?: string;\n declare type?: string;\n\n protected static styles = [variables, sizeCSS, fieldLabelCSS, actionButtonCSS, style];\n\n render() {\n return html(({ div, input }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'input-container field-body' }, () => {\n this.fieldElement = input({\n id,\n type: this.type || 'text',\n placeholder: this.placeholder || '',\n required: Boolean(this.required),\n '@input': this.boundOnChange,\n });\n\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n\n if (this.fieldElement && this.value != null) {\n this.fieldElement.value = String(this.value);\n }\n });\n }\n\n /**\n * Write value to the input element (DOM only)\n */\n protected writeValue(value: string): void {\n const strValue = String(value || '');\n\n if (this.fieldElement) {\n this.fieldElement.value = strValue;\n }\n }\n}\n\nTextInput.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-text-input': TextInput;\n }\n}\n\nexport default TextInput;\nexport type TextInputProps = InferProps<typeof TextInput>;\n"],"names":[],"mappings":";;;;;;;;AASA,MAAM,kBAAkB,WAAW;AAAA,EAAnC;AAAA;AACY,wCAAwC;AAAA;AAAA,EAclD,SAAS;AACP,WAAO,KAAK,CAAC,EAAE,KAAK,YAAY;AAC9B,YAAM,KAAK,KAAK,WAAA;AAChB,WAAK,YAAY,EAAE;AACnB,UAAI,EAAE,WAAW,6BAAA,GAAgC,MAAM;AACrD,aAAK,eAAe,MAAM;AAAA,UACxB;AAAA,UACA,MAAM,KAAK,QAAQ;AAAA,UACnB,aAAa,KAAK,eAAe;AAAA,UACjC,UAAU,QAAQ,KAAK,QAAQ;AAAA,UAC/B,UAAU,KAAK;AAAA,QAAA,CAChB;AAED,aAAK,oBAAA;AAAA,MACP,CAAC;AACD,WAAK,iBAAA;AACL,WAAK,YAAA;AAEL,UAAI,KAAK,gBAAgB,KAAK,SAAS,MAAM;AAC3C,aAAK,aAAa,QAAQ,OAAO,KAAK,KAAK;AAAA,MAC7C;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKU,WAAW,OAAqB;AACxC,UAAM,WAAW,OAAO,SAAS,EAAE;AAEnC,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,QAAQ;AAAA,IAC5B;AAAA,EACF;AACF;AA9CE,cAHI,WAGG,WAAU;AAEjB,cALI,WAKG,SAAe;AAAA,EACpB,aAAa,EAAE,MAAM,OAAA;AAAA,EACrB,MAAM,EAAE,MAAM,OAAA;AAAO;AAMvB,cAbI,WAaa,UAAS,CAAC,WAAW,SAAS,eAAe,iBAAiB,KAAK;AAsCtF,UAAU,SAAA;"}
@@ -1,137 +0,0 @@
1
- "use strict";
2
- const actionButton = require("./action-button.cjs");
3
- const aeico = require("aeico");
4
- const variables = require("./variables.cjs");
5
- const size = require("./size.cjs");
6
- const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n\n --textarea-font-size: 1em;\n --textarea-padding: 0.333em 0.583em;\n --textarea-border-width: 1px;\n --textarea-transition: border-color 0.12s, background 0.12s;\n}\n\n.textarea-container {\n display: flex;\n align-items: flex-start;\n gap: 4px;\n width: 100%;\n}\n\ntextarea {\n flex: 1;\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n font-size: var(--textarea-font-size);\n font-family: inherit;\n line-height: 1.5;\n padding: var(--textarea-padding);\n border: var(--textarea-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n transition: var(--textarea-transition);\n resize: vertical;\n}\n\ntextarea::placeholder {\n color: var(--ae-color-text-disabled);\n}\n\ntextarea:focus {\n outline: none;\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\ntextarea:hover:not(:focus) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\ntextarea:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n resize: none;\n}\n\n/* Error state */\n:host([error]) textarea {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) textarea:hover:not(:focus),\n:host([error]) textarea:focus {\n border-color: var(--field-error-color, var(--ae-red));\n}\n";
7
- var __create = Object.create;
8
- var __defProp = Object.defineProperty;
9
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
10
- var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
11
- var __typeError = (msg) => {
12
- throw TypeError(msg);
13
- };
14
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
- var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
16
- var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
17
- var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
18
- var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
19
- var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
20
- var __runInitializers = (array, flags, self, value) => {
21
- for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
22
- return value;
23
- };
24
- var __decorateElement = (array, flags, name, decorators, target, extra) => {
25
- var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
26
- var j = array.length + 1, key = __decoratorStrings[k + 5];
27
- var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
28
- var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
29
- return __privateGet(this, extra);
30
- }, set [name](x) {
31
- return __privateSet(this, extra, x);
32
- } }, name));
33
- for (var i = decorators.length - 1; i >= 0; i--) {
34
- ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
35
- {
36
- ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
37
- access.get = (x) => x[name];
38
- access.set = (x, y) => x[name] = y;
39
- }
40
- it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
41
- if (it === void 0) __expectFn(it) && (desc[key] = it);
42
- else if (typeof it !== "object" || it === null) __typeError("Object expected");
43
- else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
44
- }
45
- return desc && __defProp(target, name, desc), target;
46
- };
47
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
48
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
49
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
50
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
51
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
52
- var _autoResize_dec, _resize_dec, _minlength_dec, _maxlength_dec, _rows_dec, _placeholder_dec, _a, _init, _placeholder, _rows, _maxlength, _minlength, _resize, _autoResize;
53
- class Textarea extends (_a = actionButton.AeicoField, _placeholder_dec = [aeico.prop({ type: String })], _rows_dec = [aeico.prop({ type: Number })], _maxlength_dec = [aeico.prop({ type: Number })], _minlength_dec = [aeico.prop({ type: Number })], _resize_dec = [aeico.prop({ type: String })], _autoResize_dec = [aeico.prop({ type: Boolean })], _a) {
54
- constructor() {
55
- super(...arguments);
56
- __publicField(this, "fieldElement", null);
57
- __privateAdd(this, _placeholder, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
58
- __privateAdd(this, _rows, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
59
- __privateAdd(this, _maxlength, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
60
- __privateAdd(this, _minlength, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
61
- __privateAdd(this, _resize, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
62
- __privateAdd(this, _autoResize, __runInitializers(_init, 28, this, false)), __runInitializers(_init, 31, this);
63
- __publicField(this, "_boundOnInput", () => {
64
- if (this.autoResize && this.fieldElement) {
65
- this._syncAutoResize(this.fieldElement);
66
- }
67
- this.setValue(this.getValue(), { silent: false, action: "change" });
68
- });
69
- }
70
- render() {
71
- return aeico.html(({ div, textarea }) => {
72
- const id = this.getFieldId();
73
- this.renderLabel(id);
74
- div({ className: "textarea-container field-body" }, () => {
75
- this.fieldElement = textarea({
76
- id,
77
- placeholder: this.placeholder || "",
78
- rows: this.rows ?? 3,
79
- required: Boolean(this.required),
80
- "@input": this._boundOnInput
81
- });
82
- this.renderActionButtons();
83
- });
84
- this.renderHelperText();
85
- this.renderError();
86
- if (this.fieldElement) {
87
- if (this.value != null) {
88
- this.fieldElement.value = String(this.value);
89
- }
90
- if (this.maxlength != null) this.fieldElement.maxLength = this.maxlength;
91
- if (this.minlength != null) this.fieldElement.minLength = this.minlength;
92
- this.fieldElement.style.resize = this.autoResize ? "none" : this.resize ?? "vertical";
93
- if (this.autoResize) {
94
- this._syncAutoResize(this.fieldElement);
95
- }
96
- this._updateClearButtonVisibility();
97
- }
98
- });
99
- }
100
- _syncAutoResize(ta) {
101
- ta.style.height = "auto";
102
- ta.style.height = `${ta.scrollHeight}px`;
103
- }
104
- _updateClearButtonVisibility() {
105
- if (this.clearBtn && this.fieldElement) {
106
- this.clearBtn.style.display = this.fieldElement.value.length > 0 ? "" : "none";
107
- }
108
- }
109
- writeValue(value) {
110
- if (this.fieldElement) {
111
- this.fieldElement.value = String(value || "");
112
- if (this.autoResize) {
113
- this._syncAutoResize(this.fieldElement);
114
- }
115
- this._updateClearButtonVisibility();
116
- }
117
- }
118
- }
119
- _init = __decoratorStart(_a);
120
- _placeholder = /* @__PURE__ */ new WeakMap();
121
- _rows = /* @__PURE__ */ new WeakMap();
122
- _maxlength = /* @__PURE__ */ new WeakMap();
123
- _minlength = /* @__PURE__ */ new WeakMap();
124
- _resize = /* @__PURE__ */ new WeakMap();
125
- _autoResize = /* @__PURE__ */ new WeakMap();
126
- __decorateElement(_init, 4, "placeholder", _placeholder_dec, Textarea, _placeholder);
127
- __decorateElement(_init, 4, "rows", _rows_dec, Textarea, _rows);
128
- __decorateElement(_init, 4, "maxlength", _maxlength_dec, Textarea, _maxlength);
129
- __decorateElement(_init, 4, "minlength", _minlength_dec, Textarea, _minlength);
130
- __decorateElement(_init, 4, "resize", _resize_dec, Textarea, _resize);
131
- __decorateElement(_init, 4, "autoResize", _autoResize_dec, Textarea, _autoResize);
132
- __decoratorMetadata(_init, Textarea);
133
- __publicField(Textarea, "tagName", "textarea");
134
- __publicField(Textarea, "styles", [variables.variables, size.sizeCSS, actionButton.fieldLabelCSS, actionButton.actionButtonCSS, style]);
135
- Textarea.register();
136
- exports.Textarea = Textarea;
137
- //# sourceMappingURL=textarea.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"textarea.cjs","sources":["../../src/textarea/textarea.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport variables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport fieldLabelCSS from '../styles/components/field-label.css?inline';\nimport actionButtonCSS from '../styles/components/action-button.css?inline';\nimport style from '../styles/components/textarea.css?inline';\n\nexport type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';\n\nclass Textarea extends AeicoField {\n protected fieldElement: HTMLTextAreaElement | null = null;\n\n static tagName = 'textarea';\n\n @prop({ type: String })\n accessor placeholder: string | undefined;\n\n @prop({ type: Number })\n accessor rows: number | undefined;\n\n @prop({ type: Number })\n accessor maxlength: number | undefined;\n\n @prop({ type: Number })\n accessor minlength: number | undefined;\n\n @prop({ type: String })\n accessor resize: TextareaResize | undefined;\n\n @prop({ type: Boolean })\n accessor autoResize: boolean = false;\n\n protected static styles = [variables, sizeCSS, fieldLabelCSS, actionButtonCSS, style];\n\n private readonly _boundOnInput = () => {\n if (this.autoResize && this.fieldElement) {\n this._syncAutoResize(this.fieldElement);\n }\n this.setValue(this.getValue(), { silent: false, action: 'change' });\n };\n\n render() {\n return html(({ div, textarea }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'textarea-container field-body' }, () => {\n this.fieldElement = textarea({\n id,\n placeholder: this.placeholder || '',\n rows: this.rows ?? 3,\n required: Boolean(this.required),\n '@input': this._boundOnInput,\n });\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n\n if (this.fieldElement) {\n if (this.value != null) {\n this.fieldElement.value = String(this.value);\n }\n if (this.maxlength != null) this.fieldElement.maxLength = this.maxlength;\n if (this.minlength != null) this.fieldElement.minLength = this.minlength;\n this.fieldElement.style.resize = this.autoResize ? 'none' : (this.resize ?? 'vertical');\n if (this.autoResize) {\n this._syncAutoResize(this.fieldElement);\n }\n this._updateClearButtonVisibility();\n }\n });\n }\n\n private _syncAutoResize(ta: HTMLTextAreaElement): void {\n ta.style.height = 'auto';\n ta.style.height = `${ta.scrollHeight}px`;\n }\n\n private _updateClearButtonVisibility(): void {\n if (this.clearBtn && this.fieldElement) {\n this.clearBtn.style.display = this.fieldElement.value.length > 0 ? '' : 'none';\n }\n }\n\n protected writeValue(value: string): void {\n if (this.fieldElement) {\n this.fieldElement.value = String(value || '');\n if (this.autoResize) {\n this._syncAutoResize(this.fieldElement);\n }\n this._updateClearButtonVisibility();\n }\n }\n}\n\nTextarea.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-textarea': Textarea;\n }\n}\n\nexport default Textarea;\nexport type TextareaProps = InferProps<typeof Textarea>;\n"],"names":["prop","html","variables","sizeCSS","fieldLabelCSS","actionButtonCSS"],"mappings":"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"}
@@ -1,138 +0,0 @@
1
- import { A as AeicoField, f as fieldLabelCSS, a as actionButtonCSS } from "./action-button.js";
2
- import { prop, html } from "aeico";
3
- import { v as variables } from "./variables.js";
4
- import { s as sizeCSS } from "./size.js";
5
- const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--ae-size-base);\n\n --textarea-font-size: 1em;\n --textarea-padding: 0.333em 0.583em;\n --textarea-border-width: 1px;\n --textarea-transition: border-color 0.12s, background 0.12s;\n}\n\n.textarea-container {\n display: flex;\n align-items: flex-start;\n gap: 4px;\n width: 100%;\n}\n\ntextarea {\n flex: 1;\n min-width: 0;\n width: 100%;\n box-sizing: border-box;\n font-size: var(--textarea-font-size);\n font-family: inherit;\n line-height: 1.5;\n padding: var(--textarea-padding);\n border: var(--textarea-border-width) solid var(--ae-border-subtle);\n border-radius: var(--ae-border-radius, var(--ae-radius-xs));\n background: var(--ae-surface-base);\n color: var(--ae-color-text-muted);\n transition: var(--textarea-transition);\n resize: vertical;\n}\n\ntextarea::placeholder {\n color: var(--ae-color-text-disabled);\n}\n\ntextarea:focus {\n outline: none;\n border-color: var(--ae-border-focus);\n background: var(--ae-surface-raised);\n}\n\ntextarea:hover:not(:focus) {\n border-color: var(--ae-border-default);\n background: var(--ae-surface-raised);\n}\n\ntextarea:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n resize: none;\n}\n\n/* Error state */\n:host([error]) textarea {\n border-color: var(--field-error-color, var(--ae-red));\n}\n\n:host([error]) textarea:hover:not(:focus),\n:host([error]) textarea:focus {\n border-color: var(--field-error-color, var(--ae-red));\n}\n";
6
- var __create = Object.create;
7
- var __defProp = Object.defineProperty;
8
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
9
- var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
10
- var __typeError = (msg) => {
11
- throw TypeError(msg);
12
- };
13
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
- var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
15
- var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
16
- var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
17
- var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
18
- var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
19
- var __runInitializers = (array, flags, self, value) => {
20
- for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
21
- return value;
22
- };
23
- var __decorateElement = (array, flags, name, decorators, target, extra) => {
24
- var fn, it, done, ctx, access, k = flags & 7, s = false, p = false;
25
- var j = array.length + 1, key = __decoratorStrings[k + 5];
26
- var initializers = array[j - 1] = [], extraInitializers = array[j] || (array[j] = []);
27
- var desc = (target = target.prototype, __getOwnPropDesc({ get [name]() {
28
- return __privateGet(this, extra);
29
- }, set [name](x) {
30
- return __privateSet(this, extra, x);
31
- } }, name));
32
- for (var i = decorators.length - 1; i >= 0; i--) {
33
- ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
34
- {
35
- ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
36
- access.get = (x) => x[name];
37
- access.set = (x, y) => x[name] = y;
38
- }
39
- it = (0, decorators[i])({ get: desc.get, set: desc.set }, ctx), done._ = 1;
40
- if (it === void 0) __expectFn(it) && (desc[key] = it);
41
- else if (typeof it !== "object" || it === null) __typeError("Object expected");
42
- else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
43
- }
44
- return desc && __defProp(target, name, desc), target;
45
- };
46
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
47
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
48
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
49
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
50
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
51
- var _autoResize_dec, _resize_dec, _minlength_dec, _maxlength_dec, _rows_dec, _placeholder_dec, _a, _init, _placeholder, _rows, _maxlength, _minlength, _resize, _autoResize;
52
- class Textarea extends (_a = AeicoField, _placeholder_dec = [prop({ type: String })], _rows_dec = [prop({ type: Number })], _maxlength_dec = [prop({ type: Number })], _minlength_dec = [prop({ type: Number })], _resize_dec = [prop({ type: String })], _autoResize_dec = [prop({ type: Boolean })], _a) {
53
- constructor() {
54
- super(...arguments);
55
- __publicField(this, "fieldElement", null);
56
- __privateAdd(this, _placeholder, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
57
- __privateAdd(this, _rows, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
58
- __privateAdd(this, _maxlength, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
59
- __privateAdd(this, _minlength, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
60
- __privateAdd(this, _resize, __runInitializers(_init, 24, this)), __runInitializers(_init, 27, this);
61
- __privateAdd(this, _autoResize, __runInitializers(_init, 28, this, false)), __runInitializers(_init, 31, this);
62
- __publicField(this, "_boundOnInput", () => {
63
- if (this.autoResize && this.fieldElement) {
64
- this._syncAutoResize(this.fieldElement);
65
- }
66
- this.setValue(this.getValue(), { silent: false, action: "change" });
67
- });
68
- }
69
- render() {
70
- return html(({ div, textarea }) => {
71
- const id = this.getFieldId();
72
- this.renderLabel(id);
73
- div({ className: "textarea-container field-body" }, () => {
74
- this.fieldElement = textarea({
75
- id,
76
- placeholder: this.placeholder || "",
77
- rows: this.rows ?? 3,
78
- required: Boolean(this.required),
79
- "@input": this._boundOnInput
80
- });
81
- this.renderActionButtons();
82
- });
83
- this.renderHelperText();
84
- this.renderError();
85
- if (this.fieldElement) {
86
- if (this.value != null) {
87
- this.fieldElement.value = String(this.value);
88
- }
89
- if (this.maxlength != null) this.fieldElement.maxLength = this.maxlength;
90
- if (this.minlength != null) this.fieldElement.minLength = this.minlength;
91
- this.fieldElement.style.resize = this.autoResize ? "none" : this.resize ?? "vertical";
92
- if (this.autoResize) {
93
- this._syncAutoResize(this.fieldElement);
94
- }
95
- this._updateClearButtonVisibility();
96
- }
97
- });
98
- }
99
- _syncAutoResize(ta) {
100
- ta.style.height = "auto";
101
- ta.style.height = `${ta.scrollHeight}px`;
102
- }
103
- _updateClearButtonVisibility() {
104
- if (this.clearBtn && this.fieldElement) {
105
- this.clearBtn.style.display = this.fieldElement.value.length > 0 ? "" : "none";
106
- }
107
- }
108
- writeValue(value) {
109
- if (this.fieldElement) {
110
- this.fieldElement.value = String(value || "");
111
- if (this.autoResize) {
112
- this._syncAutoResize(this.fieldElement);
113
- }
114
- this._updateClearButtonVisibility();
115
- }
116
- }
117
- }
118
- _init = __decoratorStart(_a);
119
- _placeholder = /* @__PURE__ */ new WeakMap();
120
- _rows = /* @__PURE__ */ new WeakMap();
121
- _maxlength = /* @__PURE__ */ new WeakMap();
122
- _minlength = /* @__PURE__ */ new WeakMap();
123
- _resize = /* @__PURE__ */ new WeakMap();
124
- _autoResize = /* @__PURE__ */ new WeakMap();
125
- __decorateElement(_init, 4, "placeholder", _placeholder_dec, Textarea, _placeholder);
126
- __decorateElement(_init, 4, "rows", _rows_dec, Textarea, _rows);
127
- __decorateElement(_init, 4, "maxlength", _maxlength_dec, Textarea, _maxlength);
128
- __decorateElement(_init, 4, "minlength", _minlength_dec, Textarea, _minlength);
129
- __decorateElement(_init, 4, "resize", _resize_dec, Textarea, _resize);
130
- __decorateElement(_init, 4, "autoResize", _autoResize_dec, Textarea, _autoResize);
131
- __decoratorMetadata(_init, Textarea);
132
- __publicField(Textarea, "tagName", "textarea");
133
- __publicField(Textarea, "styles", [variables, sizeCSS, fieldLabelCSS, actionButtonCSS, style]);
134
- Textarea.register();
135
- export {
136
- Textarea as T
137
- };
138
- //# sourceMappingURL=textarea.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"textarea.js","sources":["../../src/textarea/textarea.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps } from 'aeico';\nimport { html, prop } from 'aeico';\nimport variables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport fieldLabelCSS from '../styles/components/field-label.css?inline';\nimport actionButtonCSS from '../styles/components/action-button.css?inline';\nimport style from '../styles/components/textarea.css?inline';\n\nexport type TextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';\n\nclass Textarea extends AeicoField {\n protected fieldElement: HTMLTextAreaElement | null = null;\n\n static tagName = 'textarea';\n\n @prop({ type: String })\n accessor placeholder: string | undefined;\n\n @prop({ type: Number })\n accessor rows: number | undefined;\n\n @prop({ type: Number })\n accessor maxlength: number | undefined;\n\n @prop({ type: Number })\n accessor minlength: number | undefined;\n\n @prop({ type: String })\n accessor resize: TextareaResize | undefined;\n\n @prop({ type: Boolean })\n accessor autoResize: boolean = false;\n\n protected static styles = [variables, sizeCSS, fieldLabelCSS, actionButtonCSS, style];\n\n private readonly _boundOnInput = () => {\n if (this.autoResize && this.fieldElement) {\n this._syncAutoResize(this.fieldElement);\n }\n this.setValue(this.getValue(), { silent: false, action: 'change' });\n };\n\n render() {\n return html(({ div, textarea }) => {\n const id = this.getFieldId();\n this.renderLabel(id);\n div({ className: 'textarea-container field-body' }, () => {\n this.fieldElement = textarea({\n id,\n placeholder: this.placeholder || '',\n rows: this.rows ?? 3,\n required: Boolean(this.required),\n '@input': this._boundOnInput,\n });\n this.renderActionButtons();\n });\n this.renderHelperText();\n this.renderError();\n\n if (this.fieldElement) {\n if (this.value != null) {\n this.fieldElement.value = String(this.value);\n }\n if (this.maxlength != null) this.fieldElement.maxLength = this.maxlength;\n if (this.minlength != null) this.fieldElement.minLength = this.minlength;\n this.fieldElement.style.resize = this.autoResize ? 'none' : (this.resize ?? 'vertical');\n if (this.autoResize) {\n this._syncAutoResize(this.fieldElement);\n }\n this._updateClearButtonVisibility();\n }\n });\n }\n\n private _syncAutoResize(ta: HTMLTextAreaElement): void {\n ta.style.height = 'auto';\n ta.style.height = `${ta.scrollHeight}px`;\n }\n\n private _updateClearButtonVisibility(): void {\n if (this.clearBtn && this.fieldElement) {\n this.clearBtn.style.display = this.fieldElement.value.length > 0 ? '' : 'none';\n }\n }\n\n protected writeValue(value: string): void {\n if (this.fieldElement) {\n this.fieldElement.value = String(value || '');\n if (this.autoResize) {\n this._syncAutoResize(this.fieldElement);\n }\n this._updateClearButtonVisibility();\n }\n }\n}\n\nTextarea.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-textarea': Textarea;\n }\n}\n\nexport default Textarea;\nexport type TextareaProps = InferProps<typeof Textarea>;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,iBAAA,aAAA,gBAAA,gBAAA,WAAA,kBAAA,IAAA,OAAA,cAAA,OAAA,YAAA,YAAA,SAAA;AAWA,MAAM,kBAAiB,iBAKrB,mBAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,YAAA,CAAC,KAAK,EAAE,MAAM,QAAQ,CAAA,GAGtB,kBAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,IAGtB,iBAAA,CAAC,KAAK,EAAE,MAAM,OAAA,CAAQ,CAAA,GAGtB,cAAA,CAAC,KAAK,EAAE,MAAM,QAAQ,CAAA,GAGtB,mBAAC,KAAK,EAAE,MAAM,QAAA,CAAS,IApBF,IAAW;AAAA,EAAlC,cAAA;AAAA,UAAA,GAAA,SAAA;AACE,kBAAA,MAAU,gBAA2C,IAAA;AAKrD,iBAAA,MAAS,cAAT,kBAAA,OAAA,GAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,OAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,YAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,YAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,SAAT,kBAAA,OAAA,IAAA,IAAA,CAAA,GAAA,kBAAA,OAAA,IAAA,IAAA;AAGA,iBAAA,MAAS,aAAsB,kBAA/B,OAAA,IAAA,MAA+B,KAAA,CAAA,GAA/B,kBAAA,OAAA,IAAA,IAAA;AAIA,kBAAA,MAAiB,iBAAgB,MAAM;AACrC,UAAI,KAAK,cAAc,KAAK,cAAc;AACxC,aAAK,gBAAgB,KAAK,YAAY;AAAA,MACxC;AACA,WAAK,SAAS,KAAK,SAAA,GAAY,EAAE,QAAQ,OAAO,QAAQ,UAAU;AAAA,IACpE,CAAA;AAAA,EAAA;AAAA,EAEA,SAAS;AACP,WAAO,KAAK,CAAC,EAAE,KAAK,eAAe;AACjC,YAAM,KAAK,KAAK,WAAA;AAChB,WAAK,YAAY,EAAE;AACnB,UAAI,EAAE,WAAW,gCAAA,GAAmC,MAAM;AACxD,aAAK,eAAe,SAAS;AAAA,UAC3B;AAAA,UACA,aAAa,KAAK,eAAe;AAAA,UACjC,MAAM,KAAK,QAAQ;AAAA,UACnB,UAAU,QAAQ,KAAK,QAAQ;AAAA,UAC/B,UAAU,KAAK;AAAA,QAAA,CAChB;AACD,aAAK,oBAAA;AAAA,MACP,CAAC;AACD,WAAK,iBAAA;AACL,WAAK,YAAA;AAEL,UAAI,KAAK,cAAc;AACrB,YAAI,KAAK,SAAS,MAAM;AACtB,eAAK,aAAa,QAAQ,OAAO,KAAK,KAAK;AAAA,QAC7C;AACA,YAAI,KAAK,aAAa,KAAM,MAAK,aAAa,YAAY,KAAK;AAC/D,YAAI,KAAK,aAAa,KAAM,MAAK,aAAa,YAAY,KAAK;AAC/D,aAAK,aAAa,MAAM,SAAS,KAAK,aAAa,SAAU,KAAK,UAAU;AAC5E,YAAI,KAAK,YAAY;AACnB,eAAK,gBAAgB,KAAK,YAAY;AAAA,QACxC;AACA,aAAK,6BAAA;AAAA,MACP;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,gBAAgB,IAA+B;AACrD,OAAG,MAAM,SAAS;AAClB,OAAG,MAAM,SAAS,GAAG,GAAG,YAAY;AAAA,EACtC;AAAA,EAEQ,+BAAqC;AAC3C,QAAI,KAAK,YAAY,KAAK,cAAc;AACtC,WAAK,SAAS,MAAM,UAAU,KAAK,aAAa,MAAM,SAAS,IAAI,KAAK;AAAA,IAC1E;AAAA,EACF;AAAA,EAEU,WAAW,OAAqB;AACxC,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa,QAAQ,OAAO,SAAS,EAAE;AAC5C,UAAI,KAAK,YAAY;AACnB,aAAK,gBAAgB,KAAK,YAAY;AAAA,MACxC;AACA,WAAK,6BAAA;AAAA,IACP;AAAA,EACF;AACF;AApFA,QAAA,iBAAA,EAAA;AAMW,eAAA,oBAAA,QAAA;AAGA,QAAA,oBAAA,QAAA;AAGA,aAAA,oBAAA,QAAA;AAGA,aAAA,oBAAA,QAAA;AAGA,UAAA,oBAAA,QAAA;AAGA,cAAA,oBAAA,QAAA;AAfT,kBAAA,OAAA,GAAS,eADT,kBALI,UAMK,YAAA;AAGT,kBAAA,OAAA,GAAS,QADT,WARI,UASK,KAAA;AAGT,kBAAA,OAAA,GAAS,aADT,gBAXI,UAYK,UAAA;AAGT,kBAAA,OAAA,GAAS,aADT,gBAdI,UAeK,UAAA;AAGT,kBAAA,OAAA,GAAS,UADT,aAjBI,UAkBK,OAAA;AAGT,kBAAA,OAAA,GAAS,cADT,iBApBI,UAqBK,WAAA;AArBX,oBAAA,OAAM,QAAA;AAGJ,cAHI,UAGG,WAAU,UAAA;AAoBjB,cAvBI,UAuBa,UAAS,CAAC,WAAW,SAAS,eAAe,iBAAiB,KAAK,CAAA;AA+DtF,SAAS,SAAA;"}