aeico-components 0.1.3 → 0.1.5

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 (218) hide show
  1. package/dist/alert.cjs +6 -0
  2. package/dist/alert.cjs.map +1 -0
  3. package/dist/alert.js +6 -0
  4. package/dist/alert.js.map +1 -0
  5. package/dist/badge.cjs +6 -0
  6. package/dist/badge.cjs.map +1 -0
  7. package/dist/badge.js +6 -0
  8. package/dist/badge.js.map +1 -0
  9. package/dist/breadcrumb.cjs +7 -0
  10. package/dist/breadcrumb.cjs.map +1 -0
  11. package/dist/breadcrumb.js +7 -0
  12. package/dist/breadcrumb.js.map +1 -0
  13. package/dist/button-group.cjs +6 -0
  14. package/dist/button-group.cjs.map +1 -0
  15. package/dist/button-group.js +6 -0
  16. package/dist/button-group.js.map +1 -0
  17. package/dist/button.cjs +6 -0
  18. package/dist/button.cjs.map +1 -0
  19. package/dist/button.js +6 -0
  20. package/dist/button.js.map +1 -0
  21. package/dist/card.cjs +6 -0
  22. package/dist/card.cjs.map +1 -0
  23. package/dist/card.js +6 -0
  24. package/dist/card.js.map +1 -0
  25. package/dist/checkbox.cjs +6 -0
  26. package/dist/checkbox.cjs.map +1 -0
  27. package/dist/checkbox.js +6 -0
  28. package/dist/checkbox.js.map +1 -0
  29. package/dist/chunks/aeico-component.cjs +17 -0
  30. package/dist/chunks/aeico-component.cjs.map +1 -0
  31. package/dist/chunks/aeico-component.js +18 -0
  32. package/dist/chunks/aeico-component.js.map +1 -0
  33. package/dist/chunks/aeico-field.cjs +179 -0
  34. package/dist/chunks/aeico-field.cjs.map +1 -0
  35. package/dist/chunks/aeico-field.js +180 -0
  36. package/dist/chunks/aeico-field.js.map +1 -0
  37. package/dist/chunks/alert.cjs +170 -0
  38. package/dist/chunks/alert.cjs.map +1 -0
  39. package/dist/chunks/alert.js +171 -0
  40. package/dist/chunks/alert.js.map +1 -0
  41. package/dist/chunks/badge.cjs +85 -0
  42. package/dist/chunks/badge.cjs.map +1 -0
  43. package/dist/chunks/badge.js +86 -0
  44. package/dist/chunks/badge.js.map +1 -0
  45. package/dist/chunks/breadcrumb-item.cjs +261 -0
  46. package/dist/chunks/breadcrumb-item.cjs.map +1 -0
  47. package/dist/chunks/breadcrumb-item.js +262 -0
  48. package/dist/chunks/breadcrumb-item.js.map +1 -0
  49. package/dist/chunks/button-group.cjs +79 -0
  50. package/dist/chunks/button-group.cjs.map +1 -0
  51. package/dist/chunks/button-group.js +80 -0
  52. package/dist/chunks/button-group.js.map +1 -0
  53. package/dist/chunks/button.cjs +348 -0
  54. package/dist/chunks/button.cjs.map +1 -0
  55. package/dist/chunks/button.js +349 -0
  56. package/dist/chunks/button.js.map +1 -0
  57. package/dist/chunks/card.cjs +93 -0
  58. package/dist/chunks/card.cjs.map +1 -0
  59. package/dist/chunks/card.js +94 -0
  60. package/dist/chunks/card.js.map +1 -0
  61. package/dist/chunks/checkbox.cjs +73 -0
  62. package/dist/chunks/checkbox.cjs.map +1 -0
  63. package/dist/chunks/checkbox.js +74 -0
  64. package/dist/chunks/checkbox.js.map +1 -0
  65. package/dist/chunks/color.cjs +4 -0
  66. package/dist/chunks/color.cjs.map +1 -0
  67. package/dist/chunks/color.js +5 -0
  68. package/dist/chunks/color.js.map +1 -0
  69. package/dist/chunks/detail.cjs +143 -0
  70. package/dist/chunks/detail.cjs.map +1 -0
  71. package/dist/chunks/detail.js +144 -0
  72. package/dist/chunks/detail.js.map +1 -0
  73. package/dist/chunks/dialog.cjs +117 -0
  74. package/dist/chunks/dialog.cjs.map +1 -0
  75. package/dist/chunks/dialog.js +118 -0
  76. package/dist/chunks/dialog.js.map +1 -0
  77. package/dist/chunks/divider.cjs +80 -0
  78. package/dist/chunks/divider.cjs.map +1 -0
  79. package/dist/chunks/divider.js +81 -0
  80. package/dist/chunks/divider.js.map +1 -0
  81. package/dist/chunks/dropdown-button.cjs +534 -0
  82. package/dist/chunks/dropdown-button.cjs.map +1 -0
  83. package/dist/chunks/dropdown-button.js +535 -0
  84. package/dist/chunks/dropdown-button.js.map +1 -0
  85. package/dist/chunks/icon-button.cjs +35 -0
  86. package/dist/chunks/icon-button.cjs.map +1 -0
  87. package/dist/chunks/icon-button.js +36 -0
  88. package/dist/chunks/icon-button.js.map +1 -0
  89. package/dist/chunks/icon.cjs +78 -0
  90. package/dist/chunks/icon.cjs.map +1 -0
  91. package/dist/chunks/icon.js +79 -0
  92. package/dist/chunks/icon.js.map +1 -0
  93. package/dist/chunks/navbar.cjs +142 -0
  94. package/dist/chunks/navbar.cjs.map +1 -0
  95. package/dist/chunks/navbar.js +143 -0
  96. package/dist/chunks/navbar.js.map +1 -0
  97. package/dist/chunks/radio.cjs +181 -0
  98. package/dist/chunks/radio.cjs.map +1 -0
  99. package/dist/chunks/radio.js +182 -0
  100. package/dist/chunks/radio.js.map +1 -0
  101. package/dist/chunks/select.cjs +350 -0
  102. package/dist/chunks/select.cjs.map +1 -0
  103. package/dist/chunks/select.js +351 -0
  104. package/dist/chunks/select.js.map +1 -0
  105. package/dist/chunks/size.cjs +4 -0
  106. package/dist/chunks/size.cjs.map +1 -0
  107. package/dist/chunks/size.js +5 -0
  108. package/dist/chunks/size.js.map +1 -0
  109. package/dist/chunks/slider.cjs +648 -0
  110. package/dist/chunks/slider.cjs.map +1 -0
  111. package/dist/chunks/slider.js +649 -0
  112. package/dist/chunks/slider.js.map +1 -0
  113. package/dist/chunks/switch.cjs +73 -0
  114. package/dist/chunks/switch.cjs.map +1 -0
  115. package/dist/chunks/switch.js +74 -0
  116. package/dist/chunks/switch.js.map +1 -0
  117. package/dist/chunks/tab-panel.cjs +165 -0
  118. package/dist/chunks/tab-panel.cjs.map +1 -0
  119. package/dist/chunks/tab-panel.js +166 -0
  120. package/dist/chunks/tab-panel.js.map +1 -0
  121. package/dist/chunks/tag.cjs +108 -0
  122. package/dist/chunks/tag.cjs.map +1 -0
  123. package/dist/chunks/tag.js +109 -0
  124. package/dist/chunks/tag.js.map +1 -0
  125. package/dist/chunks/text-input.cjs +59 -0
  126. package/dist/chunks/text-input.cjs.map +1 -0
  127. package/dist/chunks/text-input.js +60 -0
  128. package/dist/chunks/text-input.js.map +1 -0
  129. package/dist/chunks/variables.cjs +372 -0
  130. package/dist/chunks/variables.cjs.map +1 -0
  131. package/dist/chunks/variables.js +373 -0
  132. package/dist/chunks/variables.js.map +1 -0
  133. package/dist/detail.cjs +6 -0
  134. package/dist/detail.cjs.map +1 -0
  135. package/dist/detail.js +6 -0
  136. package/dist/detail.js.map +1 -0
  137. package/dist/dialog.cjs +6 -0
  138. package/dist/dialog.cjs.map +1 -0
  139. package/dist/dialog.js +6 -0
  140. package/dist/dialog.js.map +1 -0
  141. package/dist/divider.cjs +6 -0
  142. package/dist/divider.cjs.map +1 -0
  143. package/dist/divider.js +6 -0
  144. package/dist/divider.js.map +1 -0
  145. package/dist/dropdown.cjs +7 -0
  146. package/dist/dropdown.cjs.map +1 -0
  147. package/dist/dropdown.js +7 -0
  148. package/dist/dropdown.js.map +1 -0
  149. package/dist/icon-button.cjs +6 -0
  150. package/dist/icon-button.cjs.map +1 -0
  151. package/dist/icon-button.js +6 -0
  152. package/dist/icon-button.js.map +1 -0
  153. package/dist/icon.cjs +6 -0
  154. package/dist/icon.cjs.map +1 -0
  155. package/dist/icon.js +6 -0
  156. package/dist/icon.js.map +1 -0
  157. package/dist/index.cjs +93 -4168
  158. package/dist/index.cjs.map +1 -1
  159. package/dist/index.js +92 -4167
  160. package/dist/index.js.map +1 -1
  161. package/dist/navbar.cjs +6 -0
  162. package/dist/navbar.cjs.map +1 -0
  163. package/dist/navbar.js +6 -0
  164. package/dist/navbar.js.map +1 -0
  165. package/dist/radio-group.cjs +7 -0
  166. package/dist/radio-group.cjs.map +1 -0
  167. package/dist/radio-group.js +7 -0
  168. package/dist/radio-group.js.map +1 -0
  169. package/dist/select.cjs +99 -0
  170. package/dist/select.cjs.map +1 -0
  171. package/dist/select.js +99 -0
  172. package/dist/select.js.map +1 -0
  173. package/dist/slider.cjs +6 -0
  174. package/dist/slider.cjs.map +1 -0
  175. package/dist/slider.js +6 -0
  176. package/dist/slider.js.map +1 -0
  177. package/dist/switch.cjs +6 -0
  178. package/dist/switch.cjs.map +1 -0
  179. package/dist/switch.js +6 -0
  180. package/dist/switch.js.map +1 -0
  181. package/dist/tabs.cjs +8 -0
  182. package/dist/tabs.cjs.map +1 -0
  183. package/dist/tabs.js +8 -0
  184. package/dist/tabs.js.map +1 -0
  185. package/dist/tag.cjs +5 -0
  186. package/dist/tag.cjs.map +1 -0
  187. package/dist/tag.js +5 -0
  188. package/dist/tag.js.map +1 -0
  189. package/dist/text-input.cjs +6 -0
  190. package/dist/text-input.cjs.map +1 -0
  191. package/dist/text-input.js +6 -0
  192. package/dist/text-input.js.map +1 -0
  193. package/dist/types/aeico-field.d.ts +5 -5
  194. package/dist/types/button/button.d.ts +2 -1
  195. package/dist/types/checkbox/checkbox.d.ts +5 -5
  196. package/dist/types/index.d.ts +2 -0
  197. package/dist/types/progress-bar/defines.d.ts +1 -0
  198. package/dist/types/progress-bar/index.d.ts +3 -0
  199. package/dist/types/progress-bar/progress-bar.d.ts +37 -0
  200. package/dist/types/radio-group/radio-group.d.ts +1 -1
  201. package/dist/types/select/select.d.ts +1 -1
  202. package/dist/types/switch/switch.d.ts +5 -5
  203. package/package.json +16 -4
  204. package/src/aeico-field.ts +12 -8
  205. package/src/button/button.ts +11 -13
  206. package/src/checkbox/checkbox.ts +4 -4
  207. package/src/index.ts +2 -0
  208. package/src/navbar/navbar.ts +1 -3
  209. package/src/progress-bar/defines.ts +8 -0
  210. package/src/progress-bar/index.ts +3 -0
  211. package/src/progress-bar/progress-bar.ts +80 -0
  212. package/src/radio-group/radio-group.ts +1 -1
  213. package/src/select/select.ts +1 -1
  214. package/src/styles/components/progress-bar.css +44 -0
  215. package/src/switch/switch.ts +4 -4
  216. package/src/tabs/tab.ts +1 -1
  217. package/src/tabs/tabs.ts +1 -2
  218. package/src/utils.ts +1 -0
@@ -0,0 +1,350 @@
1
+ "use strict";
2
+ const aeicoField = require("./aeico-field.cjs");
3
+ const aeico = require("aeico");
4
+ const aeicoLocalize = require("aeico-localize");
5
+ const variables = require("./variables.cjs");
6
+ const size = require("./size.cjs");
7
+ const style = ":host {\n display: block;\n flex: 1;\n min-width: 0;\n font-size: var(--size-base);\n\n /* Layout variables */\n --select-field-gap: 2px;\n\n /* Trigger variables */\n --select-font-size: 1em;\n --select-padding: 0.333em 0.583em;\n --select-border-width: 1px;\n --select-border-radius: 2px;\n --select-border-color: var(--border-subtle);\n --select-border-color-hover: var(--border-default);\n --select-border-color-focus: var(--border-focus);\n --select-bg: var(--surface-base);\n --select-bg-hover: var(--surface-raised);\n --select-bg-focus: var(--surface-raised);\n --select-color: var(--color-text-muted);\n --select-transition: border-color 0.12s, background 0.12s;\n\n /* Arrow */\n --select-arrow-color: var(--color-text-muted);\n --select-arrow-size: 0.75em;\n\n /* Dropdown */\n --select-dropdown-bg: var(--surface-overlay);\n --select-dropdown-border: var(--border-default);\n --select-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n --select-dropdown-border-radius: 2px;\n --select-dropdown-max-height: 240px;\n --select-dropdown-z-index: 1000;\n}\n\n.container {\n display: flex;\n align-items: center;\n gap: var(--select-field-gap);\n width: 100%;\n position: relative;\n}\n\n.trigger {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 0.333em;\n font-size: var(--select-font-size);\n padding: var(--select-padding);\n border: var(--select-border-width) solid var(--select-border-color);\n border-radius: var(--select-border-radius);\n background: var(--select-bg);\n color: var(--select-color);\n cursor: pointer;\n transition: var(--select-transition);\n user-select: none;\n outline: none;\n box-sizing: border-box;\n}\n\n.trigger:hover:not(.disabled) {\n border-color: var(--select-border-color-hover);\n background: var(--select-bg-hover);\n}\n\n.trigger.open {\n border-color: var(--select-border-color-focus);\n background: var(--select-bg-focus);\n}\n\n.trigger.disabled {\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n}\n\n.value {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.placeholder {\n color: var(--color-text-disabled);\n}\n\n.selected-list {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n align-items: center;\n padding: 2px 0;\n}\n\n/* Non-expandable (default): single-row, clip overflow */\n.trigger:has(.selected-list--clipped) {\n flex-wrap: nowrap;\n}\n\n.selected-list--clipped {\n flex-wrap: nowrap;\n overflow: hidden;\n}\n\n.overflow-indicator {\n flex-shrink: 0;\n align-self: center;\n padding: 1px 6px;\n background: color-mix(in srgb, var(--color-primary) 12%, transparent);\n color: var(--color-primary);\n border: 1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);\n border-radius: 3px;\n font-size: 0.82em;\n line-height: 1.6;\n cursor: default;\n user-select: none;\n}\n\n.arrow {\n flex-shrink: 0;\n align-self: center;\n font-size: var(--select-arrow-size);\n color: var(--select-arrow-color);\n transition: transform 0.12s;\n pointer-events: none;\n line-height: 1;\n}\n\n.trigger.open .arrow {\n transform: rotate(180deg);\n}\n\n.dropdown {\n display: none;\n position: absolute;\n z-index: var(--select-dropdown-z-index);\n background: var(--select-dropdown-bg);\n border: 1px solid var(--select-dropdown-border);\n border-radius: var(--select-dropdown-border-radius);\n box-shadow: var(--select-dropdown-shadow);\n max-height: var(--select-dropdown-max-height);\n overflow-y: auto;\n min-width: 100%;\n box-sizing: border-box;\n}\n\n.dropdown.open {\n display: block;\n}\n\n.dropdown.position-bottom {\n top: 100%;\n left: 0;\n margin-top: 2px;\n}\n\n.dropdown.position-top {\n bottom: 100%;\n left: 0;\n margin-bottom: 2px;\n}\n\n.dropdown.position-left {\n right: 100%;\n top: 0;\n margin-right: 2px;\n}\n\n.dropdown.position-right {\n left: 100%;\n top: 0;\n margin-left: 2px;\n}\n\n.clear-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--clear-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--clear-btn-bg);\n color: var(--clear-btn-color);\n transition: var(--clear-btn-transition);\n flex-shrink: 0;\n line-height: 1;\n}\n\n.clear-btn:hover {\n background: var(--clear-btn-bg-hover);\n color: var(--clear-btn-color-hover);\n}\n\n.reset-btn {\n width: 1.333em;\n height: 1.333em;\n border: none;\n border-radius: var(--reset-btn-border-radius);\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--reset-btn-bg);\n color: var(--reset-btn-color);\n transition: var(--reset-btn-transition);\n flex-shrink: 0;\n}\n\n.reset-btn:hover {\n background: var(--reset-btn-bg-hover);\n color: var(--reset-btn-color-hover);\n}\n";
8
+ var __create = Object.create;
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
12
+ var __typeError = (msg) => {
13
+ throw TypeError(msg);
14
+ };
15
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ var __decoratorStart = (base) => [, , , __create((base == null ? void 0 : base[__knownSymbol("metadata")]) ?? null)];
18
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
19
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
20
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
21
+ var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
22
+ var __runInitializers = (array, flags, self, value) => {
23
+ 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);
24
+ return value;
25
+ };
26
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
27
+ var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
28
+ var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
29
+ var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
30
+ var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
31
+ return __privateGet(this, extra);
32
+ }, set [name](x) {
33
+ return __privateSet(this, extra, x);
34
+ } }, name));
35
+ k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
36
+ for (var i = decorators.length - 1; i >= 0; i--) {
37
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
38
+ if (k) {
39
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
40
+ if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
41
+ if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
42
+ }
43
+ it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
44
+ if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
45
+ else if (typeof it !== "object" || it === null) __typeError("Object expected");
46
+ else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
47
+ }
48
+ return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
49
+ };
50
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
51
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
52
+ var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
53
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
54
+ 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);
55
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
56
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
57
+ var _defaultValue_dec, _value_dec, _expandable_dec, _multiple_dec, _placeholder_dec, _position_dec, _options_dec, __expanded_dec, _a, _init, __expanded, _options, _position, _placeholder, _multiple, _expandable;
58
+ class Select extends (_a = aeicoField.AeicoField, __expanded_dec = [aeico.prop({ type: Boolean, observe: false, reflect: false })], _options_dec = [aeico.prop({ type: Array })], _position_dec = [aeico.prop({ type: String })], _placeholder_dec = [aeico.prop({ type: String })], _multiple_dec = [aeico.prop({ type: Boolean })], _expandable_dec = [aeico.prop({ type: Boolean })], _value_dec = [aeico.prop({
59
+ type: String,
60
+ parser: (v) => {
61
+ if (v === null || v === void 0) return void 0;
62
+ try {
63
+ return JSON.parse(v);
64
+ } catch {
65
+ return v;
66
+ }
67
+ },
68
+ formatter: (v) => {
69
+ if (v === null || v === void 0) return "";
70
+ if (Array.isArray(v)) return JSON.stringify(v);
71
+ return String(v);
72
+ }
73
+ })], _defaultValue_dec = [aeico.prop({
74
+ type: String,
75
+ parser: (v) => {
76
+ if (v === null || v === void 0) return void 0;
77
+ try {
78
+ return JSON.parse(v);
79
+ } catch {
80
+ return v;
81
+ }
82
+ },
83
+ formatter: (v) => {
84
+ if (v === null || v === void 0) return "";
85
+ if (Array.isArray(v)) return JSON.stringify(v);
86
+ return String(v);
87
+ }
88
+ })], _a) {
89
+ constructor() {
90
+ super(...arguments);
91
+ __publicField(this, "fieldElement", null);
92
+ __publicField(this, "_isOpen", false);
93
+ __publicField(this, "_triggerEl", null);
94
+ __publicField(this, "_dropdownEl", null);
95
+ __publicField(this, "_slotEl", null);
96
+ __publicField(this, "_slotOptionData", []);
97
+ __publicField(this, "_selectedListEl", null);
98
+ __privateAdd(this, __expanded, __runInitializers(_init, 8, this, false)), __runInitializers(_init, 11, this);
99
+ __privateAdd(this, _options, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
100
+ __privateAdd(this, _position, __runInitializers(_init, 16, this)), __runInitializers(_init, 19, this);
101
+ __privateAdd(this, _placeholder, __runInitializers(_init, 20, this)), __runInitializers(_init, 23, this);
102
+ __privateAdd(this, _multiple, __runInitializers(_init, 24, this, false)), __runInitializers(_init, 27, this);
103
+ __privateAdd(this, _expandable, __runInitializers(_init, 28, this, false)), __runInitializers(_init, 31, this);
104
+ __publicField(this, "value", __runInitializers(_init, 32, this)), __runInitializers(_init, 35, this);
105
+ __publicField(this, "defaultValue", __runInitializers(_init, 36, this)), __runInitializers(_init, 39, this);
106
+ __publicField(this, "_handleOutsideClick", (e) => {
107
+ if (!e.composedPath().includes(this)) {
108
+ this._closeDropdown();
109
+ }
110
+ });
111
+ __publicField(this, "_handleOptionSelect", (e) => {
112
+ const { value, label } = e.detail;
113
+ if (!this._slotOptionData.find((o) => o.value === value)) {
114
+ this._slotOptionData = [
115
+ ...this._slotOptionData.filter((o) => o.value !== value),
116
+ { value, label }
117
+ ];
118
+ }
119
+ if (this.multiple) {
120
+ const current = this._getMultiValues();
121
+ const idx = current.findIndex((v) => String(v) === value);
122
+ const next = idx >= 0 ? current.filter((_, i) => i !== idx) : [...current, value];
123
+ this.setValue(next, { silent: false, action: "change" });
124
+ } else {
125
+ this.setValue(value, { silent: false, action: "change" });
126
+ this._closeDropdown();
127
+ }
128
+ });
129
+ }
130
+ writeValue(_value) {
131
+ }
132
+ getValue() {
133
+ if (this.multiple) return this._getMultiValues();
134
+ return this.value || "";
135
+ }
136
+ _getMultiValues() {
137
+ if (Array.isArray(this.value)) return this.value;
138
+ if (this.value != null && this.value !== "") return [this.value];
139
+ return [];
140
+ }
141
+ onDisabledChanged(_newValue) {
142
+ }
143
+ onUpdated(_changedProps) {
144
+ if (!this.multiple || this.expandable) {
145
+ if (this._expanded) this._expanded = false;
146
+ return;
147
+ }
148
+ const list = this._selectedListEl;
149
+ if (!list) return;
150
+ const overflowing = list.scrollWidth > list.clientWidth + 1;
151
+ if (overflowing !== this._expanded) this._expanded = overflowing;
152
+ }
153
+ _findLabel(value) {
154
+ const strVal = String(value);
155
+ if (Array.isArray(this.options)) {
156
+ for (const opt of this.options) {
157
+ if (this._isSelectOption(opt)) {
158
+ if (String(opt.value) === strVal) return aeicoLocalize.t(opt.label, opt.label);
159
+ } else {
160
+ if (String(opt) === strVal) return strVal;
161
+ }
162
+ }
163
+ }
164
+ for (const opt of this._slotOptionData) {
165
+ if (opt.value === strVal) return opt.label;
166
+ }
167
+ return strVal;
168
+ }
169
+ _onSlotChange() {
170
+ var _a2;
171
+ if (!this._slotEl) return;
172
+ const data = [];
173
+ for (const el of this._slotEl.assignedElements({ flatten: true })) {
174
+ if (el.tagName.toLowerCase() !== "ae-select-option") continue;
175
+ const optEl = el;
176
+ data.push({
177
+ value: optEl.value ?? el.getAttribute("value") ?? "",
178
+ label: optEl.label || ((_a2 = el.textContent) == null ? void 0 : _a2.trim()) || ""
179
+ });
180
+ }
181
+ this._slotOptionData = data;
182
+ this.update();
183
+ }
184
+ _toggleDropdown() {
185
+ if (this._isOpen) {
186
+ this._closeDropdown();
187
+ } else {
188
+ this._openDropdown();
189
+ }
190
+ }
191
+ _openDropdown() {
192
+ this._isOpen = true;
193
+ this._syncOpenState();
194
+ }
195
+ _closeDropdown() {
196
+ this._isOpen = false;
197
+ this._syncOpenState();
198
+ }
199
+ _syncOpenState() {
200
+ var _a2, _b;
201
+ (_a2 = this._triggerEl) == null ? void 0 : _a2.classList.toggle("open", this._isOpen);
202
+ (_b = this._dropdownEl) == null ? void 0 : _b.classList.toggle("open", this._isOpen);
203
+ }
204
+ connectedCallback() {
205
+ super.connectedCallback();
206
+ document.addEventListener("click", this._handleOutsideClick);
207
+ this.addEventListener("selectoption", this._handleOptionSelect);
208
+ }
209
+ disconnectedCallback() {
210
+ super.disconnectedCallback();
211
+ document.removeEventListener("click", this._handleOutsideClick);
212
+ this.removeEventListener("selectoption", this._handleOptionSelect);
213
+ }
214
+ _syncSlotOptionsSelected() {
215
+ if (!this._slotEl) return;
216
+ const multiValues = this._getMultiValues();
217
+ for (const el of this._slotEl.assignedElements({ flatten: true })) {
218
+ if (el.tagName.toLowerCase() !== "ae-select-option") continue;
219
+ const optEl = el;
220
+ const optVal = optEl.value ?? el.getAttribute("value") ?? "";
221
+ const isSelected = this.multiple ? multiValues.some((v) => String(v) === optVal) : this.value != null && this.value !== "" && String(this.value) === optVal;
222
+ optEl.selected = isSelected ? true : void 0;
223
+ }
224
+ }
225
+ render() {
226
+ const position = this.position || "bottom";
227
+ const multiValues = this.multiple ? this._getMultiValues() : [];
228
+ const hasMultiSelection = this.multiple && multiValues.length > 0;
229
+ const selectedLabel = !this.multiple && this.value != null && this.value !== "" ? this._findLabel(this.value) : "";
230
+ const isDisabled = Boolean(this.disabled);
231
+ this._selectedListEl = null;
232
+ this._syncSlotOptionsSelected();
233
+ return aeico.html(({ div, span, slot }) => {
234
+ div({ className: "container" }, () => {
235
+ this._triggerEl = div(
236
+ {
237
+ className: `trigger${this._isOpen ? " open" : ""}${isDisabled ? " disabled" : ""}`,
238
+ "@click": () => {
239
+ if (isDisabled) return;
240
+ this._toggleDropdown();
241
+ }
242
+ },
243
+ () => {
244
+ if (this.multiple) {
245
+ if (hasMultiSelection) {
246
+ this._selectedListEl = div(
247
+ {
248
+ className: `selected-list${!this.expandable ? " selected-list--clipped" : ""}`
249
+ },
250
+ () => {
251
+ for (const v of multiValues) {
252
+ const lbl = this._findLabel(v);
253
+ aeico.tags.aeTag({
254
+ key: `sel-${v}`,
255
+ color: "default",
256
+ variant: "faint",
257
+ dismissible: true,
258
+ disabled: isDisabled,
259
+ textContent: lbl,
260
+ "@dismiss": (e) => {
261
+ e.stopPropagation();
262
+ if (isDisabled) return;
263
+ const next = multiValues.filter((item) => String(item) !== String(v));
264
+ this.setValue(next, { silent: false, action: "change" });
265
+ }
266
+ });
267
+ }
268
+ }
269
+ );
270
+ if (!this.expandable && this._expanded) {
271
+ span({ className: "overflow-indicator", textContent: "…" });
272
+ }
273
+ } else {
274
+ span({ className: "value placeholder", textContent: this.placeholder || "" });
275
+ }
276
+ } else {
277
+ if (selectedLabel) {
278
+ span({ className: "value", textContent: selectedLabel });
279
+ } else {
280
+ span({ className: "value placeholder", textContent: this.placeholder || "" });
281
+ }
282
+ }
283
+ span({ className: "arrow", textContent: "▾" });
284
+ }
285
+ );
286
+ this._dropdownEl = div(
287
+ {
288
+ className: `dropdown position-${position}${this._isOpen ? " open" : ""}`
289
+ },
290
+ () => {
291
+ this._renderProgrammaticOptions();
292
+ this._slotEl = slot({
293
+ "@slotchange": () => this._onSlotChange()
294
+ });
295
+ }
296
+ );
297
+ this.renderActionButtons();
298
+ });
299
+ });
300
+ }
301
+ _renderProgrammaticOptions() {
302
+ if (!Array.isArray(this.options)) return;
303
+ const { aeSelectOption } = aeico.tags;
304
+ const multiValues = this.multiple ? this._getMultiValues() : [];
305
+ for (const opt of this.options) {
306
+ if (this._isSelectOption(opt)) {
307
+ const isSelected = this.multiple ? multiValues.some((v) => String(v) === String(opt.value)) : this.value != null && String(opt.value) === String(this.value);
308
+ aeSelectOption({
309
+ key: `opt-${opt.value}`,
310
+ value: String(opt.value),
311
+ label: opt.label,
312
+ textContent: aeicoLocalize.t(opt.label, opt.label),
313
+ selected: isSelected ? true : void 0
314
+ });
315
+ } else {
316
+ const isSelected = this.multiple ? multiValues.some((v) => String(v) === String(opt)) : this.value != null && String(opt) === String(this.value);
317
+ aeSelectOption({
318
+ key: `opt-${opt}`,
319
+ value: String(opt),
320
+ textContent: String(opt),
321
+ selected: isSelected ? true : void 0
322
+ });
323
+ }
324
+ }
325
+ }
326
+ _isSelectOption(option) {
327
+ return option !== null && typeof option === "object" && typeof option.label === "string" && (typeof option.value === "string" || typeof option.value === "number");
328
+ }
329
+ }
330
+ _init = __decoratorStart(_a);
331
+ __expanded = /* @__PURE__ */ new WeakMap();
332
+ _options = /* @__PURE__ */ new WeakMap();
333
+ _position = /* @__PURE__ */ new WeakMap();
334
+ _placeholder = /* @__PURE__ */ new WeakMap();
335
+ _multiple = /* @__PURE__ */ new WeakMap();
336
+ _expandable = /* @__PURE__ */ new WeakMap();
337
+ __decorateElement(_init, 4, "_expanded", __expanded_dec, Select, __expanded);
338
+ __decorateElement(_init, 4, "options", _options_dec, Select, _options);
339
+ __decorateElement(_init, 4, "position", _position_dec, Select, _position);
340
+ __decorateElement(_init, 4, "placeholder", _placeholder_dec, Select, _placeholder);
341
+ __decorateElement(_init, 4, "multiple", _multiple_dec, Select, _multiple);
342
+ __decorateElement(_init, 4, "expandable", _expandable_dec, Select, _expandable);
343
+ __decorateElement(_init, 5, "value", _value_dec, Select);
344
+ __decorateElement(_init, 5, "defaultValue", _defaultValue_dec, Select);
345
+ __decoratorMetadata(_init, Select);
346
+ __publicField(Select, "tagName", "select");
347
+ __publicField(Select, "styles", [variables.styleVariables, size.sizeCSS, style]);
348
+ Select.register();
349
+ exports.Select = Select;
350
+ //# sourceMappingURL=select.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.cjs","sources":["../../src/select/select.ts"],"sourcesContent":["import AeicoField from '../aeico-field';\nimport type { InferProps } from 'aeico';\nimport { html, tags } from 'aeico';\nimport { t } from 'aeico-localize';\nimport type {\n SelectOptionValue,\n SelectOption,\n SelectOptions,\n SelectPosition,\n SelectMultiValue,\n} from './defines';\nimport style from '../styles/components/select.css?inline';\nimport variables from '../styles/variables.css?inline';\nimport sizeCSS from '../styles/size.css?inline';\nimport SelectOptionElement from './select-option';\nimport '../tag/tag';\nimport { prop } from 'aeico';\n\n/**\n * Select component supporting single and multi-select modes, with options provided via both props and slots.\n * - `options` prop accepts an array of strings or objects with `value` and `label` for programmatic options.\n * - Slot content allows for declarative options using `<ae-select-option>` elements.\n * @example\n * <ae-select placeholder=\"Choose an option\" position=\"bottom\">\n * <ae-select-option value=\"1\" label=\"Option 1\">Option 1</ae-select-option>\n * <ae-select-option value=\"2\" label=\"Option 2\">Option 2</ae-select-option>\n * </ae-select>\n *\n */\nclass Select extends AeicoField<SelectOptionValue | SelectMultiValue> {\n protected fieldElement = null;\n private _isOpen = false;\n private _triggerEl: HTMLElement | null = null;\n private _dropdownEl: HTMLElement | null = null;\n private _slotEl: HTMLSlotElement | null = null;\n private _slotOptionData: Array<{ value: string; label: string }> = [];\n private _selectedListEl: HTMLElement | null = null;\n\n static tagName = 'select';\n\n @prop({ type: Boolean, observe: false, reflect: false })\n accessor _expanded: boolean = false;\n\n @prop({ type: Array })\n accessor options: SelectOptions | undefined;\n\n @prop({ type: String })\n accessor position: SelectPosition | undefined;\n\n @prop({ type: String })\n accessor placeholder: string | undefined;\n\n @prop({ type: Boolean })\n accessor multiple: boolean = false;\n\n @prop({ type: Boolean })\n accessor expandable: boolean = false;\n\n // Override base class value prop to support both string and array (multi-select).\n // Uses field decorator (not accessor) because TypeScript TS2611 disallows overriding\n // a parent class data property (declare value?) with an accessor in a subclass.\n @prop({\n type: String,\n parser: (v) => {\n if (v === null || v === undefined) return undefined;\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n },\n formatter: (v) => {\n if (v === null || v === undefined) return '';\n if (Array.isArray(v)) return JSON.stringify(v);\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n return String(v);\n },\n })\n override value: SelectOptionValue | SelectMultiValue | undefined = undefined;\n\n // Override base class defaultValue so arrays are JSON-serialized to the attribute,\n // matching the value prop's parser/formatter. Without this override, setting\n // defaultValue = ['a', 'b'] would be serialized as String(['a','b']) = \"a,b\",\n // and reset() would restore a single string \"a,b\" instead of the array.\n @prop({\n type: String,\n parser: (v) => {\n if (v === null || v === undefined) return undefined;\n try {\n return JSON.parse(v);\n } catch {\n return v;\n }\n },\n formatter: (v) => {\n if (v === null || v === undefined) return '';\n if (Array.isArray(v)) return JSON.stringify(v);\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n return String(v);\n },\n })\n override defaultValue: SelectOptionValue | SelectMultiValue | undefined = undefined;\n\n protected static styles = [variables, sizeCSS, style];\n\n protected writeValue(_value: SelectOptionValue | SelectMultiValue): void {\n // Reactive re-render via this.value prop change handles the display update\n }\n\n protected getValue(): SelectOptionValue | SelectMultiValue {\n if (this.multiple) return this._getMultiValues();\n\n return this.value || '';\n }\n\n private _getMultiValues(): SelectMultiValue {\n if (Array.isArray(this.value)) return this.value;\n if (this.value != null && this.value !== '') return [this.value];\n\n return [];\n }\n\n protected onDisabledChanged(_newValue: boolean): void {\n // disabled is a reactive prop — render() already picks it up automatically\n }\n\n protected onUpdated(_changedProps: Map<string, unknown>): void {\n if (!this.multiple || this.expandable) {\n if (this._expanded) this._expanded = false;\n return;\n }\n const list = this._selectedListEl;\n if (!list) return;\n const overflowing = list.scrollWidth > list.clientWidth + 1;\n if (overflowing !== this._expanded) this._expanded = overflowing;\n }\n\n private _findLabel(value: SelectOptionValue): string {\n const strVal = String(value);\n if (Array.isArray(this.options)) {\n for (const opt of this.options) {\n if (this._isSelectOption(opt)) {\n if (String(opt.value) === strVal) return t(opt.label, opt.label);\n } else {\n if (String(opt) === strVal) return strVal;\n }\n }\n }\n\n for (const opt of this._slotOptionData) {\n if (opt.value === strVal) return opt.label;\n }\n\n return strVal;\n }\n\n private _onSlotChange(): void {\n if (!this._slotEl) return;\n const data: Array<{ value: string; label: string }> = [];\n for (const el of this._slotEl.assignedElements({ flatten: true })) {\n if (el.tagName.toLowerCase() !== 'ae-select-option') continue;\n const optEl = el as SelectOptionElement;\n data.push({\n value: optEl.value ?? el.getAttribute('value') ?? '',\n label: optEl.label || el.textContent?.trim() || '',\n });\n }\n this._slotOptionData = data;\n this.update();\n }\n\n private _toggleDropdown(): void {\n if (this._isOpen) {\n this._closeDropdown();\n } else {\n this._openDropdown();\n }\n }\n\n private _openDropdown(): void {\n this._isOpen = true;\n this._syncOpenState();\n }\n\n private _closeDropdown(): void {\n this._isOpen = false;\n this._syncOpenState();\n }\n\n private _syncOpenState(): void {\n this._triggerEl?.classList.toggle('open', this._isOpen);\n this._dropdownEl?.classList.toggle('open', this._isOpen);\n }\n\n private readonly _handleOutsideClick = (e: Event): void => {\n if (!e.composedPath().includes(this)) {\n this._closeDropdown();\n }\n };\n\n private readonly _handleOptionSelect = (e: Event): void => {\n const { value, label } = (e as CustomEvent<{ value: string; label: string }>).detail;\n if (!this._slotOptionData.find((o) => o.value === value)) {\n this._slotOptionData = [\n ...this._slotOptionData.filter((o) => o.value !== value),\n { value, label },\n ];\n }\n if (this.multiple) {\n const current = this._getMultiValues();\n const idx = current.findIndex((v) => String(v) === value);\n const next: SelectMultiValue =\n idx >= 0 ? current.filter((_, i) => i !== idx) : [...current, value];\n\n this.setValue(next, { silent: false, action: 'change' });\n } else {\n this.setValue(value, { silent: false, action: 'change' });\n this._closeDropdown();\n }\n };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n this.addEventListener('selectoption', this._handleOptionSelect);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n this.removeEventListener('selectoption', this._handleOptionSelect);\n }\n\n private _syncSlotOptionsSelected(): void {\n if (!this._slotEl) return;\n const multiValues = this._getMultiValues();\n for (const el of this._slotEl.assignedElements({ flatten: true })) {\n if (el.tagName.toLowerCase() !== 'ae-select-option') continue;\n const optEl = el as SelectOptionElement;\n const optVal = optEl.value ?? el.getAttribute('value') ?? '';\n const isSelected = this.multiple\n ? multiValues.some((v) => String(v) === optVal)\n : this.value != null && this.value !== '' && String(this.value) === optVal;\n // undefined triggers removeAttribute via reactive setter\n // (null would work too but undefined is type-safe for boolean | undefined)\n optEl.selected = isSelected ? true : undefined;\n }\n }\n\n render() {\n const position = this.position || 'bottom';\n const multiValues = this.multiple ? this._getMultiValues() : [];\n const hasMultiSelection = this.multiple && multiValues.length > 0;\n const selectedLabel =\n !this.multiple && this.value != null && this.value !== ''\n ? this._findLabel(this.value as SelectOptionValue)\n : '';\n const isDisabled = Boolean(this.disabled);\n this._selectedListEl = null;\n\n this._syncSlotOptionsSelected();\n\n return html(({ div, span, slot }) => {\n div({ className: 'container' }, () => {\n this._triggerEl = div(\n {\n className: `trigger${this._isOpen ? ' open' : ''}${isDisabled ? ' disabled' : ''}`,\n '@click': () => {\n if (isDisabled) return;\n\n this._toggleDropdown();\n },\n },\n () => {\n if (this.multiple) {\n if (hasMultiSelection) {\n this._selectedListEl = div(\n {\n className: `selected-list${!this.expandable ? ' selected-list--clipped' : ''}`,\n },\n () => {\n for (const v of multiValues) {\n const lbl = this._findLabel(v);\n tags.aeTag({\n key: `sel-${v}`,\n color: 'default',\n variant: 'faint',\n dismissible: true,\n disabled: isDisabled,\n textContent: lbl,\n '@dismiss': (e: Event) => {\n e.stopPropagation();\n if (isDisabled) return;\n\n const next = multiValues.filter((item) => String(item) !== String(v));\n this.setValue(next, { silent: false, action: 'change' });\n },\n });\n }\n },\n );\n if (!this.expandable && this._expanded) {\n span({ className: 'overflow-indicator', textContent: '…' });\n }\n } else {\n span({ className: 'value placeholder', textContent: this.placeholder || '' });\n }\n } else {\n if (selectedLabel) {\n span({ className: 'value', textContent: selectedLabel });\n } else {\n span({ className: 'value placeholder', textContent: this.placeholder || '' });\n }\n }\n span({ className: 'arrow', textContent: '▾' });\n },\n );\n\n this._dropdownEl = div(\n {\n className: `dropdown position-${position}${this._isOpen ? ' open' : ''}`,\n },\n () => {\n this._renderProgrammaticOptions();\n this._slotEl = slot({\n '@slotchange': () => this._onSlotChange(),\n });\n },\n );\n\n this.renderActionButtons();\n });\n });\n }\n\n private _renderProgrammaticOptions(): void {\n if (!Array.isArray(this.options)) return;\n\n const { aeSelectOption } = tags;\n const multiValues = this.multiple ? this._getMultiValues() : [];\n for (const opt of this.options) {\n if (this._isSelectOption(opt)) {\n const isSelected = this.multiple\n ? multiValues.some((v) => String(v) === String(opt.value))\n : this.value != null && String(opt.value) === String(this.value);\n aeSelectOption({\n key: `opt-${opt.value}`,\n value: String(opt.value),\n label: opt.label,\n textContent: t(opt.label, opt.label),\n selected: isSelected ? true : undefined,\n });\n } else {\n const isSelected = this.multiple\n ? multiValues.some((v) => String(v) === String(opt))\n : this.value != null && String(opt) === String(this.value);\n aeSelectOption({\n key: `opt-${opt}`,\n value: String(opt),\n textContent: String(opt),\n selected: isSelected ? true : undefined,\n });\n }\n }\n }\n\n private _isSelectOption(option: unknown): option is SelectOption {\n return (\n option !== null &&\n typeof option === 'object' &&\n typeof (option as SelectOption).label === 'string' &&\n (typeof (option as SelectOption).value === 'string' ||\n typeof (option as SelectOption).value === 'number')\n );\n }\n}\n\nSelect.register();\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ae-select': Select;\n }\n}\n\nexport default Select;\nexport type SelectProps = InferProps<typeof Select>;\n"],"names":["prop","t","_a","html","tags","variables","sizeCSS"],"mappings":"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"}