@ecopages/radiant-ui 0.1.0-rc.8 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/README.md +9 -1
  2. package/dist/components/ui/autocomplete/autocomplete.css +1 -2
  3. package/dist/components/ui/avatar/avatar.css +10 -8
  4. package/dist/components/ui/avatar/avatar.d.ts +3 -1
  5. package/dist/components/ui/calendar/calendar.css +10 -5
  6. package/dist/components/ui/calendar/calendar.script.d.ts +1 -0
  7. package/dist/components/ui/calendar/index.js +1 -1
  8. package/dist/components/ui/calendar/index.js.map +3 -3
  9. package/dist/components/ui/carousel/carousel-autoplay.d.ts +22 -0
  10. package/dist/components/ui/carousel/carousel-swipe.d.ts +17 -0
  11. package/dist/components/ui/carousel/carousel-window.d.ts +63 -0
  12. package/dist/components/ui/carousel/carousel.css +71 -18
  13. package/dist/components/ui/carousel/carousel.d.ts +1 -1
  14. package/dist/components/ui/carousel/carousel.script.d.ts +49 -21
  15. package/dist/components/ui/carousel/index.js +1 -1
  16. package/dist/components/ui/carousel/index.js.map +4 -4
  17. package/dist/components/ui/checkbox/checkbox.script.d.ts +0 -3
  18. package/dist/components/ui/checkbox/index.js +1 -1
  19. package/dist/components/ui/checkbox/index.js.map +4 -4
  20. package/dist/components/ui/checkbox-group/checkbox-group.d.ts +0 -1
  21. package/dist/components/ui/checkbox-group/checkbox-group.script.d.ts +8 -7
  22. package/dist/components/ui/checkbox-group/index.js +1 -1
  23. package/dist/components/ui/checkbox-group/index.js.map +4 -4
  24. package/dist/components/ui/combobox/combobox.css +2 -2
  25. package/dist/components/ui/combobox/combobox.d.ts +1 -2
  26. package/dist/components/ui/combobox/combobox.script.d.ts +13 -6
  27. package/dist/components/ui/combobox/index.js +1 -1
  28. package/dist/components/ui/combobox/index.js.map +4 -4
  29. package/dist/components/ui/cycle-toggle/index.js +1 -1
  30. package/dist/components/ui/cycle-toggle/index.js.map +3 -3
  31. package/dist/components/ui/date-field/date-field.css +13 -17
  32. package/dist/components/ui/date-field/date-field.d.ts +7 -5
  33. package/dist/components/ui/date-field/date-field.script.d.ts +16 -48
  34. package/dist/components/ui/date-field/index.js +1 -1
  35. package/dist/components/ui/date-field/index.js.map +4 -4
  36. package/dist/components/ui/date-input/date-input-segment-dom.d.ts +24 -0
  37. package/dist/components/ui/date-input/date-input.css +50 -0
  38. package/dist/components/ui/date-input/date-input.d.ts +8 -0
  39. package/dist/components/ui/date-input/date-input.script.d.ts +137 -0
  40. package/dist/components/ui/date-input/index.d.ts +2 -0
  41. package/dist/components/ui/date-input/index.js +2 -0
  42. package/dist/components/ui/date-input/index.js.map +7 -0
  43. package/dist/components/ui/date-range-picker/date-range-picker.css +18 -19
  44. package/dist/components/ui/date-range-picker/date-range-picker.d.ts +8 -6
  45. package/dist/components/ui/date-range-picker/date-range-picker.script.d.ts +24 -47
  46. package/dist/components/ui/date-range-picker/index.js +1 -1
  47. package/dist/components/ui/date-range-picker/index.js.map +4 -4
  48. package/dist/components/ui/dialog/dialog.css +18 -14
  49. package/dist/components/ui/dialog/dialog.script.d.ts +10 -3
  50. package/dist/components/ui/dialog/index.js +1 -1
  51. package/dist/components/ui/dialog/index.js.map +4 -4
  52. package/dist/components/ui/disclosure/disclosure.css +3 -6
  53. package/dist/components/ui/disclosure/disclosure.d.ts +15 -5
  54. package/dist/components/ui/disclosure/disclosure.script.d.ts +2 -2
  55. package/dist/components/ui/disclosure/index.d.ts +1 -1
  56. package/dist/components/ui/disclosure/index.js +1 -1
  57. package/dist/components/ui/disclosure/index.js.map +4 -4
  58. package/dist/components/ui/field/field.d.ts +1 -1
  59. package/dist/components/ui/field/field.script.d.ts +27 -4
  60. package/dist/components/ui/field/index.js +1 -1
  61. package/dist/components/ui/field/index.js.map +4 -4
  62. package/dist/components/ui/form/control-protocol.d.ts +38 -1
  63. package/dist/components/ui/form/form-context.d.ts +3 -0
  64. package/dist/components/ui/form/form.script.d.ts +7 -0
  65. package/dist/components/ui/form/index.d.ts +2 -1
  66. package/dist/components/ui/form/index.js +1 -1
  67. package/dist/components/ui/form/index.js.map +4 -4
  68. package/dist/components/ui/hover-card/hover-card.css +12 -101
  69. package/dist/components/ui/hover-card/hover-card.script.d.ts +7 -0
  70. package/dist/components/ui/hover-card/index.js +1 -1
  71. package/dist/components/ui/hover-card/index.js.map +4 -4
  72. package/dist/components/ui/input/index.js +1 -1
  73. package/dist/components/ui/input/index.js.map +4 -4
  74. package/dist/components/ui/input/input.css +1 -1
  75. package/dist/components/ui/knob/index.js +1 -1
  76. package/dist/components/ui/knob/index.js.map +3 -3
  77. package/dist/components/ui/knob/knob.css +6 -1
  78. package/dist/components/ui/knob/knob.d.ts +1 -1
  79. package/dist/components/ui/knob/knob.script.d.ts +25 -10
  80. package/dist/components/ui/label/index.js +1 -1
  81. package/dist/components/ui/label/index.js.map +4 -4
  82. package/dist/components/ui/listbox/index.js +1 -1
  83. package/dist/components/ui/listbox/index.js.map +4 -4
  84. package/dist/components/ui/listbox/listbox.d.ts +1 -2
  85. package/dist/components/ui/listbox/listbox.script.d.ts +7 -5
  86. package/dist/components/ui/menu-button/index.js +1 -1
  87. package/dist/components/ui/menu-button/index.js.map +4 -4
  88. package/dist/components/ui/menu-button/menu-button.script.d.ts +1 -1
  89. package/dist/components/ui/menubar/index.js +1 -1
  90. package/dist/components/ui/menubar/index.js.map +4 -4
  91. package/dist/components/ui/meter/index.js +1 -1
  92. package/dist/components/ui/meter/index.js.map +3 -3
  93. package/dist/components/ui/meter/meter.css +27 -2
  94. package/dist/components/ui/meter/meter.script.d.ts +14 -4
  95. package/dist/components/ui/navigation-menu/index.d.ts +1 -1
  96. package/dist/components/ui/navigation-menu/index.js +1 -1
  97. package/dist/components/ui/navigation-menu/index.js.map +4 -4
  98. package/dist/components/ui/navigation-menu/navigation-menu.css +32 -34
  99. package/dist/components/ui/navigation-menu/navigation-menu.d.ts +33 -4
  100. package/dist/components/ui/navigation-menu/navigation-menu.script.d.ts +71 -9
  101. package/dist/components/ui/number-field/index.js +1 -1
  102. package/dist/components/ui/number-field/index.js.map +4 -4
  103. package/dist/components/ui/number-field/number-field.css +1 -1
  104. package/dist/components/ui/number-field/number-field.d.ts +1 -1
  105. package/dist/components/ui/number-field/number-field.script.d.ts +7 -9
  106. package/dist/components/ui/pagination/index.d.ts +1 -1
  107. package/dist/components/ui/pagination/index.js +1 -1
  108. package/dist/components/ui/pagination/index.js.map +3 -3
  109. package/dist/components/ui/pagination/pagination.css +50 -13
  110. package/dist/components/ui/pagination/pagination.d.ts +25 -6
  111. package/dist/components/ui/popover/index.js +1 -1
  112. package/dist/components/ui/popover/index.js.map +4 -4
  113. package/dist/components/ui/popover/popover.script.d.ts +5 -0
  114. package/dist/components/ui/radio-group/index.js +1 -1
  115. package/dist/components/ui/radio-group/index.js.map +4 -4
  116. package/dist/components/ui/radio-group/radio-group.script.d.ts +2 -1
  117. package/dist/components/ui/select/index.d.ts +1 -1
  118. package/dist/components/ui/select/index.js +1 -1
  119. package/dist/components/ui/select/index.js.map +4 -4
  120. package/dist/components/ui/select/select.css +4 -3
  121. package/dist/components/ui/select/select.d.ts +7 -5
  122. package/dist/components/ui/select/select.script.d.ts +32 -12
  123. package/dist/components/ui/shared/calendar-popover-behavior.d.ts +27 -0
  124. package/dist/components/ui/shared/listbox-host-controller.d.ts +5 -4
  125. package/dist/components/ui/shared/multi-value.d.ts +18 -8
  126. package/dist/components/ui/shared/numeric-range.d.ts +8 -0
  127. package/dist/components/ui/shared/popover.css +10 -99
  128. package/dist/components/ui/sidebar/index.d.ts +2 -1
  129. package/dist/components/ui/sidebar/index.js +1 -1
  130. package/dist/components/ui/sidebar/index.js.map +4 -4
  131. package/dist/components/ui/sidebar/sidebar-trigger.d.ts +12 -0
  132. package/dist/components/ui/sidebar/sidebar-trigger.script.d.ts +42 -29
  133. package/dist/components/ui/sidebar/sidebar.css +67 -61
  134. package/dist/components/ui/sidebar/sidebar.d.ts +1 -7
  135. package/dist/components/ui/sidebar/sidebar.script.d.ts +12 -7
  136. package/dist/components/ui/slider/index.js +1 -1
  137. package/dist/components/ui/slider/index.js.map +4 -4
  138. package/dist/components/ui/slider/slider.css +5 -5
  139. package/dist/components/ui/slider/slider.d.ts +5 -6
  140. package/dist/components/ui/slider/slider.script.d.ts +72 -29
  141. package/dist/components/ui/switch/index.js +1 -1
  142. package/dist/components/ui/switch/index.js.map +4 -4
  143. package/dist/components/ui/switch/switch.css +28 -22
  144. package/dist/components/ui/switch/switch.script.d.ts +10 -3
  145. package/dist/components/ui/table/index.js +1 -1
  146. package/dist/components/ui/table/index.js.map +4 -4
  147. package/dist/components/ui/table/table.d.ts +5 -3
  148. package/dist/components/ui/table/table.script.d.ts +25 -10
  149. package/dist/components/ui/tabs/tabs.css +18 -12
  150. package/dist/components/ui/tabs/tabs.script.d.ts +7 -0
  151. package/dist/components/ui/tag-group/index.js +1 -1
  152. package/dist/components/ui/tag-group/index.js.map +4 -4
  153. package/dist/components/ui/tag-group/tag-group.d.ts +7 -4
  154. package/dist/components/ui/tag-group/tag-group.script.d.ts +7 -5
  155. package/dist/components/ui/textarea/index.js +1 -1
  156. package/dist/components/ui/textarea/index.js.map +4 -4
  157. package/dist/components/ui/textarea/textarea.css +1 -1
  158. package/dist/components/ui/toast/index.js +1 -1
  159. package/dist/components/ui/toast/index.js.map +3 -3
  160. package/dist/components/ui/toast/toast.css +35 -32
  161. package/dist/components/ui/toast/toast.script.d.ts +2 -1
  162. package/dist/components/ui/toast/toaster.script.d.ts +6 -0
  163. package/dist/components/ui/tooltip/index.js +1 -1
  164. package/dist/components/ui/tooltip/index.js.map +4 -4
  165. package/dist/components/ui/tooltip/tooltip.css +14 -94
  166. package/dist/components/ui/tooltip/tooltip.script.d.ts +9 -1
  167. package/dist/components/ui/window-splitter/index.d.ts +1 -1
  168. package/dist/components/ui/window-splitter/index.js +1 -1
  169. package/dist/components/ui/window-splitter/index.js.map +3 -3
  170. package/dist/components/ui/window-splitter/window-splitter.d.ts +1 -1
  171. package/dist/components/ui/window-splitter/window-splitter.script.d.ts +5 -1
  172. package/dist/index.d.ts +1 -0
  173. package/dist/index.js +1 -1
  174. package/dist/index.js.map +4 -4
  175. package/dist/lib/icons/chevron-down.d.ts +0 -1
  176. package/dist/lib/intl-date/index.d.ts +4 -2
  177. package/dist/lib/intl-date/segment-editing.d.ts +34 -0
  178. package/dist/lib/intl-date/segments.d.ts +26 -4
  179. package/dist/lib/non-empty.d.ts +6 -0
  180. package/dist/lib/unique-id.d.ts +11 -0
  181. package/dist/lib/viewport/breakpoints.d.ts +6 -0
  182. package/dist/lib/viewport/mobile-layout.d.ts +15 -0
  183. package/dist/styles/primitives.css +10 -7
  184. package/dist/styles/radiant-ui-core.css +10 -0
  185. package/dist/styles/radiant-ui.css +40 -3
  186. package/dist/styles/style-dependencies.json +18 -6
  187. package/dist/styles/styles.css +456 -246
  188. package/dist/styles/tailwind.css +40 -93
  189. package/dist/styles/tokens/presets/colors/aurora.css +2 -0
  190. package/dist/styles/tokens/presets/colors/basalt.css +2 -0
  191. package/dist/styles/tokens/presets/colors/ember.css +2 -0
  192. package/dist/styles/tokens/presets/colors/glacier.css +2 -0
  193. package/dist/styles/tokens/semantic.css +1 -0
  194. package/dist/styles/tokens/system.css +11 -3
  195. package/dist/styles/tokens/typography/default.css +8 -0
  196. package/package.json +20 -10
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/components/ui/listbox/listbox.script.tsx", "../../../../src/lib/roving-tabindex.ts", "../../../../src/components/ui/shared/field-label.ts", "../../../../src/components/ui/shared/listbox-option.ts", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/listbox/listbox.tsx", "../../../../src/lib/cx.ts", "../../../../src/lib/icons/check.tsx"],
4
- "sourcesContent": ["let _initProto, _initClass, _init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_bordered, _init_extra_bordered, _init_changeEvent, _init_extra_changeEvent;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, customElement, event, onEvent, onUpdated, prop } from \"@ecopages/radiant\";\nimport { navigateRovingTabindex } from \"@/lib/roving-tabindex\";\nimport { syncFieldLabel } from \"../shared/field-label\";\nimport { getListboxOptionValue } from \"../shared/listbox-option\";\nimport { parseMultiValue, serializeMultiValue } from \"../shared/multi-value\";\nlet _RuiListbox;\nclass RuiListbox extends RadiantElement {\n static {\n ({\n e: [_init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_bordered, _init_extra_bordered, _init_changeEvent, _init_extra_changeEvent, _initProto],\n c: [_RuiListbox, _initClass]\n } = _applyDecs(this, [customElement(\"rui-listbox\")], [[prop({\n type: String,\n reflect: true,\n defaultValue: \"\"\n }), 0, \"value\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [prop({\n type: String,\n attribute: \"selection-mode\",\n defaultValue: \"single\"\n }), 0, \"selectionMode\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"embedded\"], [prop({\n type: Boolean,\n reflect: true\n }), 0, \"bordered\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [onUpdated([\"value\", \"label\", \"disabled\", \"embedded\", \"selectionMode\"]), 2, \"onPropsUpdated\"], [onEvent({\n selector: '[role=\"option\"]',\n type: \"click\"\n }), 2, \"onOptionClick\"], [onEvent({\n selector: '[role=\"option\"]',\n type: \"keydown\"\n }), 2, \"onOptionKeydown\"]], 0, void 0, RadiantElement));\n }\n value = (_initProto(this), _init_value(this));\n label = (_init_extra_value(this), _init_label(this));\n disabled = (_init_extra_label(this), _init_disabled(this));\n selectionMode = (_init_extra_disabled(this), _init_selectionMode(this));\n embedded = (_init_extra_selectionMode(this), _init_embedded(this));\n bordered = (_init_extra_embedded(this), _init_bordered(this));\n changeEvent = (_init_extra_bordered(this), _init_changeEvent(this));\n uid = (_init_extra_changeEvent(this), Math.random().toString(36).slice(2, 9));\n onConnected() {\n this.syncLabel();\n this.sync();\n }\n onPropsUpdated() {\n this.syncLabel();\n this.sync();\n }\n getOptions() {\n return Array.from(this.querySelectorAll('[role=\"option\"]'));\n }\n syncLabel() {\n if (this.embedded) return;\n const list = this.querySelector('[role=\"listbox\"]');\n if (!list) return;\n if (!list.id) list.id = `rui-listbox-${this.uid}`;\n syncFieldLabel(this, list, {\n controlId: list.id,\n label: this.label,\n labelId: `rui-listbox-label-${this.uid}`\n });\n }\n getSelectedValues() {\n return parseMultiValue(this.value);\n }\n setSelectedValues(values) {\n this.value = serializeMultiValue(values);\n }\n tabIndexFor(option, tabStop) {\n if (this.embedded) {\n return -1;\n }\n return option === tabStop ? 0 : -1;\n }\n sync() {\n const options = this.getOptions();\n const selected = new Set(this.getSelectedValues());\n const tabStop = options.find(option => selected.has(getListboxOptionValue(option))) ?? options[0];\n const list = this.querySelector('[role=\"listbox\"]');\n if (list) {\n if (this.selectionMode === \"multiple\") list.setAttribute(\"aria-multiselectable\", \"true\");else list.removeAttribute(\"aria-multiselectable\");\n }\n for (const option of options) {\n const isSelected = selected.has(getListboxOptionValue(option));\n option.setAttribute(\"aria-selected\", String(isSelected));\n option.tabIndex = this.tabIndexFor(option, tabStop);\n }\n }\n select(option) {\n if (this.disabled || option.getAttribute(\"aria-disabled\") === \"true\") return;\n const value = getListboxOptionValue(option);\n if (this.selectionMode === \"multiple\") {\n const selected = new Set(this.getSelectedValues());\n if (selected.has(value)) selected.delete(value);else selected.add(value);\n this.setSelectedValues([...selected]);\n } else {\n this.setSelectedValues([value]);\n }\n this.sync();\n this.changeEvent.emit({\n value: this.value\n });\n option.focus();\n }\n onOptionClick(event2) {\n if (this.embedded) {\n return;\n }\n const option = event2.target.closest('[role=\"option\"]');\n if (option && this.contains(option)) this.select(option);\n }\n onOptionKeydown(event2) {\n if (this.embedded) {\n return;\n }\n const options = this.getOptions();\n const current = event2.target.closest('[role=\"option\"]');\n if (!current) return;\n if (event2.key === \"Enter\" || event2.key === \" \") {\n event2.preventDefault();\n this.select(current);\n return;\n }\n const result = navigateRovingTabindex({\n items: options,\n current,\n key: event2.key,\n orientation: \"vertical\"\n });\n if (!result.handled) return;\n event2.preventDefault();\n if (this.selectionMode === \"multiple\") {\n result.item.focus();\n return;\n }\n this.select(result.item);\n }\n static {\n _initClass();\n }\n}\nexport { _RuiListbox as RuiListbox };", "export function applyRovingTabindex(items, activeIndex) {\n items.forEach((item, index) => {\n const next = index === activeIndex ? 0 : -1;\n if (item.tabIndex !== next) {\n item.tabIndex = next;\n }\n });\n}\nexport function focusRovingItem(items, index) {\n if (!items.length) return null;\n const next = Math.max(0, Math.min(items.length - 1, index));\n applyRovingTabindex(items, next);\n items[next]?.focus();\n return items[next] ?? null;\n}\nfunction deltaForKey(key, orientation) {\n if (key === \"Home\") return \"first\";\n if (key === \"End\") return \"last\";\n if (orientation === \"horizontal\") {\n if (key === \"ArrowRight\") return \"next\";\n if (key === \"ArrowLeft\") return \"prev\";\n return null;\n }\n if (key === \"ArrowDown\") return \"next\";\n if (key === \"ArrowUp\") return \"prev\";\n return null;\n}\nexport function navigateRovingTabindex(options) {\n const {\n items,\n current,\n key,\n orientation = \"horizontal\",\n wrap = true\n } = options;\n if (!items.length || !current) return {\n handled: false\n };\n const index = items.indexOf(current);\n if (index < 0) return {\n handled: false\n };\n const delta = deltaForKey(key, orientation);\n if (!delta) return {\n handled: false\n };\n let next = index;\n if (delta === \"first\") next = 0;else if (delta === \"last\") next = items.length - 1;else if (delta === \"next\") next = wrap ? (index + 1) % items.length : Math.min(items.length - 1, index + 1);else next = wrap ? (index - 1 + items.length) % items.length : Math.max(0, index - 1);\n const item = focusRovingItem(items, next);\n if (!item) return {\n handled: false\n };\n return {\n handled: true,\n index: next,\n item\n };\n}", "export function findAssociatedLabel(owner) {\n const previous = owner.previousElementSibling;\n if (previous?.tagName.toLowerCase() === \"label\") {\n return previous;\n }\n return owner.parentElement?.querySelector(\"[data-rui-field-label]\") ?? null;\n}\nexport function bindVisibleLabel(label, control, options) {\n if (!label.id) {\n label.id = options.labelId;\n }\n if (!label.htmlFor) {\n label.htmlFor = options.controlId;\n }\n control.setAttribute(\"aria-labelledby\", label.id);\n control.removeAttribute(\"aria-label\");\n}\nexport function syncFieldLabel(owner, control, options) {\n if (!control || control.hasAttribute(\"data-rui-field-managed\")) {\n return;\n }\n const labelElement = findAssociatedLabel(owner);\n if (labelElement) {\n bindVisibleLabel(labelElement, control, options);\n return;\n }\n if (options.label) {\n control.setAttribute(\"aria-label\", options.label);\n control.removeAttribute(\"aria-labelledby\");\n return;\n }\n control.removeAttribute(\"aria-label\");\n control.removeAttribute(\"aria-labelledby\");\n}", "const OPTION_INDICATOR_ATTR = \"data-listbox-option-indicator\";\nexport function getListboxOptionLabel(option) {\n const label = option.getAttribute(\"data-label\");\n if (label) {\n return label;\n }\n return collectLabelText(option).trim();\n}\nexport function getListboxOptionValue(option) {\n return option.getAttribute(\"data-value\") || getListboxOptionLabel(option);\n}\nfunction collectLabelText(node) {\n if (isOptionIndicator(node)) {\n return \"\";\n }\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent ?? \"\";\n }\n let text = \"\";\n for (const child of node.childNodes) {\n text += collectLabelText(child);\n }\n return text;\n}\nfunction isOptionIndicator(node) {\n return node instanceof HTMLElement && node.hasAttribute(OPTION_INDICATOR_ATTR);\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return uniqueTrimmed(value.split(\",\"));\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}\nexport function serializeViewValue(value) {\n if (value == null) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n return serializeMultiValue(uniqueTrimmed(value));\n }\n return value;\n}\nexport function parseViewValue(value) {\n if (value == null) {\n return [];\n }\n if (typeof value !== \"string\") {\n return uniqueTrimmed(value);\n }\n return parseMultiValue(value);\n}\nfunction uniqueTrimmed(values) {\n return [...new Set(values.map(item => item.trim()).filter(Boolean))];\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { RuiIconCheck } from \"@/lib/icons\";\nimport { parseViewValue, serializeViewValue } from \"../shared/multi-value\";\nimport \"./listbox.script\";\nexport function RuiListboxOption({\n value,\n label,\n children,\n class: className,\n disabled,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n class: cx(\"rui-listbox__option\", className),\n role: \"option\",\n \"data-value\": value,\n \"data-label\": label,\n \"aria-disabled\": disabled ? \"true\" : void 0,\n tabindex: -1,\n children\n });\n}\nexport function RuiListboxOptionIndicator({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"span\", {\n ...props,\n \"data-listbox-option-indicator\": true,\n \"aria-hidden\": \"true\",\n class: cx(\"rui-listbox__option-indicator\", className),\n children: children ?? /* @__PURE__ */jsx(RuiIconCheck, {})\n });\n}\nfunction listboxIsBordered(embedded, bordered) {\n if (bordered != null) {\n return bordered;\n }\n return !embedded;\n}\nfunction ListboxShell({\n bordered,\n children,\n disabled,\n label,\n selectionMode = \"single\"\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n class: cx(\"rui-listbox\", bordered && \"rui-listbox--bordered\"),\n role: \"listbox\",\n \"data-rui-control\": true,\n \"data-rui-control-type\": \"text\",\n \"aria-label\": label || void 0,\n \"aria-disabled\": disabled ? \"true\" : void 0,\n \"aria-multiselectable\": selectionMode === \"multiple\" ? \"true\" : void 0,\n children\n });\n}\nexport function RuiListbox({\n options,\n children,\n value,\n embedded,\n bordered,\n label,\n disabled,\n selectionMode = \"single\",\n ...props\n}) {\n const isBordered = listboxIsBordered(embedded, bordered);\n const serializedValue = serializeViewValue(value);\n const selected = new Set(parseViewValue(value));\n return /* @__PURE__ */jsx(\"rui-listbox\", {\n ...props,\n value: serializedValue,\n embedded,\n bordered,\n label,\n disabled,\n selectionMode,\n children: /* @__PURE__ */jsx(ListboxShell, {\n bordered: isBordered,\n disabled,\n label,\n selectionMode,\n children: options != null ? options.map(option => /* @__PURE__ */jsxs(RuiListboxOption, {\n value: option.value,\n label: typeof option.label === \"string\" ? option.label : void 0,\n disabled: option.disabled,\n \"aria-selected\": selected.has(option.value) ? \"true\" : void 0,\n children: [option.label, selectionMode === \"multiple\" ? /* @__PURE__ */jsx(RuiListboxOptionIndicator, {}) : null]\n })) : children\n })\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nexport function RuiIconCheck({\n class: className,\n size = \"sm\",\n ...props\n}) {\n return /* @__PURE__ */jsx(\"svg\", {\n ...props,\n class: cx(\"rui-icon\", size === \"md\" && \"rui-icon--md\", className),\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"m5 12 4 4L19 6\"\n })\n });\n}"],
5
- "mappings": "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",
6
- "names": ["RadiantElement", "customElement", "event", "onEvent", "onUpdated", "prop", "applyRovingTabindex", "items", "activeIndex", "item", "index", "next", "focusRovingItem", "deltaForKey", "key", "orientation", "navigateRovingTabindex", "options", "current", "wrap", "delta", "findAssociatedLabel", "owner", "previous", "bindVisibleLabel", "label", "control", "options", "syncFieldLabel", "labelElement", "OPTION_INDICATOR_ATTR", "getListboxOptionLabel", "option", "label", "collectLabelText", "getListboxOptionValue", "node", "isOptionIndicator", "text", "child", "parseMultiValue", "value", "uniqueTrimmed", "serializeMultiValue", "values", "serializeViewValue", "parseViewValue", "item", "_initProto", "_initClass", "_init_value", "_init_extra_value", "_init_label", "_init_extra_label", "_init_disabled", "_init_extra_disabled", "_init_selectionMode", "_init_extra_selectionMode", "_init_embedded", "_init_extra_embedded", "_init_bordered", "_init_extra_bordered", "_init_changeEvent", "_init_extra_changeEvent", "_applyDecs", "n", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "r", "b", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiListbox", "RuiListbox", "RadiantElement", "customElement", "prop", "event", "onUpdated", "onEvent", "list", "syncFieldLabel", "parseMultiValue", "values", "serializeMultiValue", "option", "tabStop", "options", "selected", "getListboxOptionValue", "isSelected", "value", "event2", "current", "result", "navigateRovingTabindex", "jsx", "jsxs", "cx", "parts", "jsx", "RuiIconCheck", "className", "size", "props", "jsx", "cx", "RuiListboxOption", "value", "label", "children", "className", "disabled", "props", "jsx", "cx", "RuiListboxOptionIndicator", "RuiIconCheck", "listboxIsBordered", "embedded", "bordered", "ListboxShell", "selectionMode", "RuiListbox", "options", "isBordered", "serializedValue", "serializeViewValue", "selected", "parseViewValue", "option", "jsxs"]
3
+ "sources": ["../../../../src/components/ui/listbox/listbox.script.tsx", "../../../../src/lib/roving-tabindex.ts", "../../../../src/lib/unique-id.ts", "../../../../src/components/ui/shared/field-label.ts", "../../../../src/components/ui/shared/listbox-option.ts", "../../../../src/components/ui/shared/multi-value.ts", "../../../../src/components/ui/listbox/listbox.tsx", "../../../../src/lib/cx.ts", "../../../../src/lib/icons/check.tsx"],
4
+ "sourcesContent": ["let _initProto, _initClass, _init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_bordered, _init_extra_bordered, _init_changeEvent, _init_extra_changeEvent;\nfunction _applyDecs(e, t, n, r, o, i) { var a, c, u, s, f, l, p, d = Symbol.metadata || Symbol.for(\"Symbol.metadata\"), m = Object.defineProperty, h = Object.create, y = [h(null), h(null)], v = t.length; function g(t, n, r) { return function (o, i) { n && (i = o, o = e); for (var a = 0; a < t.length; a++) i = t[a].apply(o, r ? [i] : []); return r ? i : o; }; } function b(e, t, n, r) { if (\"function\" != typeof e && (r || void 0 !== e)) throw new TypeError(t + \" must \" + (n || \"be\") + \" a function\" + (r ? \"\" : \" or undefined\")); return e; } function applyDec(e, t, n, r, o, i, u, s, f, l, p) { function d(e) { if (!p(e)) throw new TypeError(\"Attempted to access private element on non-instance\"); } var h = [].concat(t[0]), v = t[3], w = !u, D = 1 === o, S = 3 === o, j = 4 === o, E = 2 === o; function I(t, n, r) { return function (o, i) { return n && (i = o, o = e), r && r(o), P[t].call(o, i); }; } if (!w) { var P = {}, k = [], F = S ? \"get\" : j || D ? \"set\" : \"value\"; if (f ? (l || D ? P = { get: _setFunctionName(function () { return v(this); }, r, \"get\"), set: function (e) { t[4](this, e); } } : P[F] = v, l || _setFunctionName(P[F], r, E ? \"\" : F)) : l || (P = Object.getOwnPropertyDescriptor(e, r)), !l && !f) { if ((c = y[+s][r]) && 7 !== (c ^ o)) throw Error(\"Decorating two elements with the same name (\" + P[F].name + \") is not supported yet\"); y[+s][r] = o < 3 ? 1 : o; } } for (var N = e, O = h.length - 1; O >= 0; O -= n ? 2 : 1) { var T = b(h[O], \"A decorator\", \"be\", !0), z = n ? h[O - 1] : void 0, A = {}, H = { kind: [\"field\", \"accessor\", \"method\", \"getter\", \"setter\", \"class\"][o], name: r, metadata: a, addInitializer: function (e, t) { if (e.v) throw new TypeError(\"attempted to call addInitializer after decoration was finished\"); b(t, \"An initializer\", \"be\", !0), i.push(t); }.bind(null, A) }; if (w) c = T.call(z, N, H), A.v = 1, b(c, \"class decorators\", \"return\") && (N = c);else if (H.static = s, H.private = f, c = H.access = { has: f ? p.bind() : function (e) { return r in e; } }, j || (c.get = f ? E ? function (e) { return d(e), P.value; } : I(\"get\", 0, d) : function (e) { return e[r]; }), E || S || (c.set = f ? I(\"set\", 0, d) : function (e, t) { e[r] = t; }), N = T.call(z, D ? { get: P.get, set: P.set } : P[F], H), A.v = 1, D) { if (\"object\" == typeof N && N) (c = b(N.get, \"accessor.get\")) && (P.get = c), (c = b(N.set, \"accessor.set\")) && (P.set = c), (c = b(N.init, \"accessor.init\")) && k.unshift(c);else if (void 0 !== N) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\"); } else b(N, (l ? \"field\" : \"method\") + \" decorators\", \"return\") && (l ? k.unshift(N) : P[F] = N); } return o < 2 && u.push(g(k, s, 1), g(i, s, 0)), l || w || (f ? D ? u.splice(-1, 0, I(\"get\", s), I(\"set\", s)) : u.push(E ? P[F] : b.call.bind(P[F])) : m(e, r, P)), N; } function w(e) { return m(e, d, { configurable: !0, enumerable: !0, value: a }); } return void 0 !== i && (a = i[d]), a = h(null == a ? null : a), f = [], l = function (e) { e && f.push(g(e)); }, p = function (t, r) { for (var i = 0; i < n.length; i++) { var a = n[i], c = a[1], l = 7 & c; if ((8 & c) == t && !l == r) { var p = a[2], d = !!a[3], m = 16 & c; applyDec(t ? e : e.prototype, a, m, d ? \"#\" + p : _toPropertyKey(p), l, l < 2 ? [] : t ? s = s || [] : u = u || [], f, !!t, d, r, t && d ? function (t) { return _checkInRHS(t) === e; } : o); } } }, p(8, 0), p(0, 0), p(8, 1), p(0, 1), l(u), l(s), c = f, v || w(e), { e: c, get c() { var n = []; return v && [w(e = applyDec(e, [t], r, e.name, 5, n)), g(n, 1)]; } }; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _setFunctionName(e, t, n) { \"symbol\" == typeof t && (t = (t = t.description) ? \"[\" + t + \"]\" : \"\"); try { Object.defineProperty(e, \"name\", { configurable: !0, value: n ? n + \" \" + t : t }); } catch (e) {} return e; }\nfunction _checkInRHS(e) { if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? typeof e : \"null\")); return e; }\nimport { RadiantElement, bindTo, customElement, event, onEvent, onUpdated, prop } from \"@ecopages/radiant\";\nimport { navigateRovingTabindex } from \"@/lib/roving-tabindex\";\nimport { uniqueId } from \"@/lib/unique-id\";\nimport { syncFieldLabel } from \"../shared/field-label\";\nimport { getListboxOptionValue } from \"../shared/listbox-option\";\nimport { multiValuePropOptions } from \"../shared/multi-value\";\nlet _RuiListbox;\nclass RuiListbox extends RadiantElement {\n static {\n ({\n e: [_init_value, _init_extra_value, _init_label, _init_extra_label, _init_disabled, _init_extra_disabled, _init_selectionMode, _init_extra_selectionMode, _init_embedded, _init_extra_embedded, _init_bordered, _init_extra_bordered, _init_changeEvent, _init_extra_changeEvent, _initProto],\n c: [_RuiListbox, _initClass]\n } = _applyDecs(this, [customElement(\"rui-listbox\")], [[prop({\n ...multiValuePropOptions,\n defaultValue: []\n }), 0, \"value\"], [prop({\n type: String,\n defaultValue: \"\"\n }), 0, \"label\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"disabled\"], [[prop({\n type: String,\n attribute: \"selection-mode\",\n defaultValue: \"single\"\n }), bindTo({\n selector: '[role=\"listbox\"]',\n attr: \"aria-multiselectable\",\n map: mode => mode === \"multiple\" ? \"true\" : void 0\n })], 0, \"selectionMode\"], [prop({\n type: Boolean,\n reflect: true,\n defaultValue: false\n }), 0, \"embedded\"], [prop({\n type: Boolean,\n reflect: true\n }), 0, \"bordered\"], [event({\n name: \"rui-change\",\n bubbles: true,\n composed: true\n }), 0, \"changeEvent\"], [onUpdated([\"value\", \"label\", \"disabled\", \"embedded\", \"selectionMode\"]), 2, \"onPropsUpdated\"], [onEvent({\n selector: '[role=\"option\"]',\n type: \"click\"\n }), 2, \"onOptionClick\"], [onEvent({\n selector: '[role=\"option\"]',\n type: \"keydown\"\n }), 2, \"onOptionKeydown\"]], 0, void 0, RadiantElement));\n }\n value = (_initProto(this), _init_value(this));\n label = (_init_extra_value(this), _init_label(this));\n disabled = (_init_extra_label(this), _init_disabled(this));\n selectionMode = (_init_extra_disabled(this), _init_selectionMode(this));\n embedded = (_init_extra_selectionMode(this), _init_embedded(this));\n bordered = (_init_extra_embedded(this), _init_bordered(this));\n changeEvent = (_init_extra_bordered(this), _init_changeEvent(this));\n uid = (_init_extra_changeEvent(this), uniqueId(\"rui-listbox\"));\n onConnected() {\n this.syncLabel();\n this.sync();\n }\n onPropsUpdated() {\n this.syncLabel();\n this.sync();\n }\n getOptions() {\n return Array.from(this.querySelectorAll('[role=\"option\"]'));\n }\n syncLabel() {\n if (this.embedded) return;\n const list = this.querySelector('[role=\"listbox\"]');\n if (!list) return;\n if (!list.id) list.id = `${this.uid}-list`;\n syncFieldLabel(this, list, {\n controlId: list.id,\n label: this.label,\n labelId: `${this.uid}-label`\n });\n }\n getSelectedValues() {\n return this.value;\n }\n setSelectedValues(values) {\n this.value = values;\n }\n tabIndexFor(option, tabStop) {\n if (this.embedded) {\n return -1;\n }\n return option === tabStop ? 0 : -1;\n }\n sync() {\n const options = this.getOptions();\n const selected = new Set(this.getSelectedValues());\n const tabStop = options.find(option => selected.has(getListboxOptionValue(option))) ?? options[0];\n for (const option of options) {\n const isSelected = selected.has(getListboxOptionValue(option));\n option.setAttribute(\"aria-selected\", String(isSelected));\n option.tabIndex = this.tabIndexFor(option, tabStop);\n }\n }\n select(option) {\n if (this.disabled || option.getAttribute(\"aria-disabled\") === \"true\") return;\n const value = getListboxOptionValue(option);\n if (this.selectionMode === \"multiple\") {\n const selected = new Set(this.getSelectedValues());\n if (selected.has(value)) selected.delete(value);else selected.add(value);\n this.setSelectedValues([...selected]);\n } else {\n this.setSelectedValues([value]);\n }\n this.sync();\n this.changeEvent.emit({\n value: this.value\n });\n option.focus();\n }\n onOptionClick(event2) {\n if (this.embedded) {\n return;\n }\n const option = event2.target.closest('[role=\"option\"]');\n if (option && this.contains(option)) this.select(option);\n }\n onOptionKeydown(event2) {\n if (this.embedded) {\n return;\n }\n const options = this.getOptions();\n const current = event2.target.closest('[role=\"option\"]');\n if (!current) return;\n if (event2.key === \"Enter\" || event2.key === \" \") {\n event2.preventDefault();\n this.select(current);\n return;\n }\n const result = navigateRovingTabindex({\n items: options,\n current,\n key: event2.key,\n orientation: \"vertical\"\n });\n if (!result.handled) return;\n event2.preventDefault();\n if (this.selectionMode === \"multiple\") {\n result.item.focus();\n return;\n }\n this.select(result.item);\n }\n static {\n _initClass();\n }\n}\nexport { _RuiListbox as RuiListbox };", "export function applyRovingTabindex(items, activeIndex) {\n items.forEach((item, index) => {\n const next = index === activeIndex ? 0 : -1;\n if (item.tabIndex !== next) {\n item.tabIndex = next;\n }\n });\n}\nexport function focusRovingItem(items, index) {\n if (!items.length) return null;\n const next = Math.max(0, Math.min(items.length - 1, index));\n applyRovingTabindex(items, next);\n items[next]?.focus();\n return items[next] ?? null;\n}\nfunction deltaForKey(key, orientation) {\n if (key === \"Home\") return \"first\";\n if (key === \"End\") return \"last\";\n if (orientation === \"horizontal\") {\n if (key === \"ArrowRight\") return \"next\";\n if (key === \"ArrowLeft\") return \"prev\";\n return null;\n }\n if (key === \"ArrowDown\") return \"next\";\n if (key === \"ArrowUp\") return \"prev\";\n return null;\n}\nexport function navigateRovingTabindex(options) {\n const {\n items,\n current,\n key,\n orientation = \"horizontal\",\n wrap = true\n } = options;\n if (!items.length || !current) return {\n handled: false\n };\n const index = items.indexOf(current);\n if (index < 0) return {\n handled: false\n };\n const delta = deltaForKey(key, orientation);\n if (!delta) return {\n handled: false\n };\n let next = index;\n if (delta === \"first\") next = 0;else if (delta === \"last\") next = items.length - 1;else if (delta === \"next\") next = wrap ? (index + 1) % items.length : Math.min(items.length - 1, index + 1);else next = wrap ? (index - 1 + items.length) % items.length : Math.max(0, index - 1);\n const item = focusRovingItem(items, next);\n if (!item) return {\n handled: false\n };\n return {\n handled: true,\n index: next,\n item\n };\n}", "const CSS_SAFE_ID = /^[A-Za-z][A-Za-z0-9_-]*$/;\nexport function isCssSafeId(value) {\n return CSS_SAFE_ID.test(value);\n}\nfunction cssSafePrefix(prefix) {\n const trimmed = prefix.trim();\n if (isCssSafeId(trimmed)) {\n return trimmed;\n }\n const prefixed = `rui-${trimmed}`;\n if (trimmed && isCssSafeId(prefixed)) {\n return prefixed;\n }\n return \"rui\";\n}\nexport function uniqueId(prefix) {\n const token = typeof crypto.randomUUID === \"function\" ? crypto.randomUUID().replace(/-/g, \"\") : Array.from(crypto.getRandomValues(new Uint8Array(16)), byte => byte.toString(16).padStart(2, \"0\")).join(\"\");\n return `${cssSafePrefix(prefix)}-${token}`;\n}", "export function findAssociatedLabel(owner) {\n const previous = owner.previousElementSibling;\n if (previous?.tagName.toLowerCase() === \"label\") {\n return previous;\n }\n return owner.parentElement?.querySelector(\"[data-rui-field-label]\") ?? null;\n}\nexport function bindVisibleLabel(label, control, options) {\n if (!label.id) {\n label.id = options.labelId;\n }\n if (!label.htmlFor) {\n label.htmlFor = options.controlId;\n }\n control.setAttribute(\"aria-labelledby\", label.id);\n control.removeAttribute(\"aria-label\");\n}\nexport function syncFieldLabel(owner, control, options) {\n if (!control || control.hasAttribute(\"data-rui-field-managed\")) {\n return;\n }\n const labelElement = findAssociatedLabel(owner);\n if (labelElement) {\n bindVisibleLabel(labelElement, control, options);\n return;\n }\n if (options.label) {\n control.setAttribute(\"aria-label\", options.label);\n control.removeAttribute(\"aria-labelledby\");\n return;\n }\n control.removeAttribute(\"aria-label\");\n control.removeAttribute(\"aria-labelledby\");\n}", "const OPTION_INDICATOR_ATTR = \"data-listbox-option-indicator\";\nexport function getListboxOptionLabel(option) {\n const label = option.getAttribute(\"data-label\");\n if (label) {\n return label;\n }\n return collectLabelText(option).trim();\n}\nexport function getListboxOptionValue(option) {\n return option.getAttribute(\"data-value\") || getListboxOptionLabel(option);\n}\nfunction collectLabelText(node) {\n if (isOptionIndicator(node)) {\n return \"\";\n }\n if (node.nodeType === Node.TEXT_NODE) {\n return node.textContent ?? \"\";\n }\n let text = \"\";\n for (const child of node.childNodes) {\n text += collectLabelText(child);\n }\n return text;\n}\nfunction isOptionIndicator(node) {\n return node instanceof HTMLElement && node.hasAttribute(OPTION_INDICATOR_ATTR);\n}", "export function parseMultiValue(value) {\n if (!value) {\n return [];\n }\n return uniqueTrimmed(value.split(\",\"));\n}\nexport function serializeMultiValue(values) {\n return values.join(\",\");\n}\nexport const multiValueTransform = {\n fromAttribute: value => parseMultiValue(value),\n toAttribute: values => values.length > 0 ? serializeMultiValue(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return uniqueTrimmed(value.map(String));\n }\n if (typeof value === \"string\") {\n return parseMultiValue(value);\n }\n return [];\n }\n};\nexport const multiValuePropOptions = {\n type: Array,\n reflect: true,\n transform: multiValueTransform\n};\nexport function parseViewValue(value) {\n return multiValueTransform.fromProperty?.(value) ?? [];\n}\nfunction parseNumberArray(value) {\n if (!value) {\n return [];\n }\n return value.split(\",\").map(item => Number(item.trim())).filter(item => Number.isFinite(item));\n}\nfunction serializeNumberArray(values) {\n return values.join(\",\");\n}\nexport const numberArrayTransform = {\n fromAttribute: value => parseNumberArray(value),\n toAttribute: values => values.length > 0 ? serializeNumberArray(values) : null,\n fromProperty: value => {\n if (Array.isArray(value)) {\n return value.map(Number).filter(item => Number.isFinite(item));\n }\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return [value];\n }\n if (typeof value === \"string\") {\n return parseNumberArray(value);\n }\n return [];\n }\n};\nfunction uniqueTrimmed(values) {\n return [...new Set(values.map(item => item.trim()).filter(Boolean))];\n}", "import { jsx, jsxs } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nimport { RuiIconCheck } from \"@/lib/icons\";\nimport { parseViewValue } from \"../shared/multi-value\";\nimport \"./listbox.script\";\nexport function RuiListboxOption({\n value,\n label,\n children,\n class: className,\n disabled,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n ...props,\n class: cx(\"rui-listbox__option\", className),\n role: \"option\",\n \"data-value\": value,\n \"data-label\": label,\n \"aria-disabled\": disabled ? \"true\" : void 0,\n tabindex: -1,\n children\n });\n}\nexport function RuiListboxOptionIndicator({\n children,\n class: className,\n ...props\n}) {\n return /* @__PURE__ */jsx(\"span\", {\n ...props,\n \"data-listbox-option-indicator\": true,\n \"aria-hidden\": \"true\",\n class: cx(\"rui-listbox__option-indicator\", className),\n children: children ?? /* @__PURE__ */jsx(RuiIconCheck, {})\n });\n}\nfunction listboxIsBordered(embedded, bordered) {\n if (bordered != null) {\n return bordered;\n }\n return !embedded;\n}\nfunction ListboxShell({\n bordered,\n children,\n disabled,\n embedded,\n label,\n selectionMode = \"single\"\n}) {\n return /* @__PURE__ */jsx(\"div\", {\n class: cx(\"rui-listbox\", bordered && \"rui-listbox--bordered\"),\n role: \"listbox\",\n \"data-rui-control\": embedded ? void 0 : true,\n \"data-rui-control-type\": embedded ? void 0 : \"text\",\n \"aria-label\": label || void 0,\n \"aria-disabled\": disabled ? \"true\" : void 0,\n \"aria-multiselectable\": selectionMode === \"multiple\" ? \"true\" : void 0,\n children\n });\n}\nexport function RuiListbox({\n options,\n children,\n value,\n embedded,\n bordered,\n label,\n disabled,\n selectionMode = \"single\",\n ...props\n}) {\n const isBordered = listboxIsBordered(embedded, bordered);\n const selectedValues = parseViewValue(value);\n const selected = new Set(selectedValues);\n return /* @__PURE__ */jsx(\"rui-listbox\", {\n ...props,\n value: selectedValues,\n embedded,\n bordered,\n label,\n disabled,\n selectionMode,\n children: /* @__PURE__ */jsx(ListboxShell, {\n bordered: isBordered,\n disabled,\n embedded,\n label,\n selectionMode,\n children: options != null ? options.map(option => /* @__PURE__ */jsxs(RuiListboxOption, {\n value: option.value,\n label: typeof option.label === \"string\" ? option.label : void 0,\n disabled: option.disabled,\n \"aria-selected\": selected.has(option.value) ? \"true\" : void 0,\n children: [option.label, selectionMode === \"multiple\" ? /* @__PURE__ */jsx(RuiListboxOptionIndicator, {}) : null]\n })) : children\n })\n });\n}", "export function cx(...parts) {\n return parts.filter(Boolean).join(\" \");\n}", "import { jsx } from \"@ecopages/jsx/jsx-runtime\";\nimport { cx } from \"@/lib/cx\";\nexport function RuiIconCheck({\n class: className,\n size = \"sm\",\n ...props\n}) {\n return /* @__PURE__ */jsx(\"svg\", {\n ...props,\n class: cx(\"rui-icon\", size === \"md\" && \"rui-icon--md\", className),\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"aria-hidden\": \"true\",\n children: /* @__PURE__ */jsx(\"path\", {\n d: \"m5 12 4 4L19 6\"\n })\n });\n}"],
5
+ "mappings": "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",
6
+ "names": ["RadiantElement", "bindTo", "customElement", "event", "onEvent", "onUpdated", "prop", "applyRovingTabindex", "items", "activeIndex", "item", "index", "next", "focusRovingItem", "deltaForKey", "key", "orientation", "navigateRovingTabindex", "options", "current", "wrap", "delta", "CSS_SAFE_ID", "isCssSafeId", "value", "cssSafePrefix", "prefix", "trimmed", "prefixed", "uniqueId", "token", "byte", "findAssociatedLabel", "owner", "previous", "bindVisibleLabel", "label", "control", "options", "syncFieldLabel", "labelElement", "OPTION_INDICATOR_ATTR", "getListboxOptionLabel", "option", "label", "collectLabelText", "getListboxOptionValue", "node", "isOptionIndicator", "text", "child", "parseMultiValue", "value", "uniqueTrimmed", "serializeMultiValue", "values", "multiValueTransform", "multiValuePropOptions", "parseViewValue", "uniqueTrimmed", "values", "item", "_initProto", "_initClass", "_init_value", "_init_extra_value", "_init_label", "_init_extra_label", "_init_disabled", "_init_extra_disabled", "_init_selectionMode", "_init_extra_selectionMode", "_init_embedded", "_init_extra_embedded", "_init_bordered", "_init_extra_bordered", "_init_changeEvent", "_init_extra_changeEvent", "_applyDecs", "n", "r", "o", "i", "a", "c", "u", "s", "f", "l", "p", "d", "m", "h", "y", "v", "g", "t", "b", "e", "applyDec", "w", "D", "S", "j", "E", "I", "P", "k", "F", "_setFunctionName", "N", "O", "T", "z", "A", "H", "_toPropertyKey", "_checkInRHS", "_toPrimitive", "_RuiListbox", "RuiListbox", "RadiantElement", "customElement", "prop", "multiValuePropOptions", "bindTo", "mode", "event", "onUpdated", "onEvent", "uniqueId", "list", "syncFieldLabel", "values", "option", "tabStop", "options", "selected", "getListboxOptionValue", "isSelected", "value", "event2", "current", "result", "navigateRovingTabindex", "jsx", "jsxs", "cx", "parts", "jsx", "RuiIconCheck", "className", "size", "props", "jsx", "cx", "RuiListboxOption", "value", "label", "children", "className", "disabled", "props", "jsx", "cx", "RuiListboxOptionIndicator", "RuiIconCheck", "listboxIsBordered", "embedded", "bordered", "ListboxShell", "selectionMode", "RuiListbox", "options", "isBordered", "selectedValues", "parseViewValue", "selected", "option", "jsxs"]
7
7
  }
@@ -31,7 +31,6 @@ export type RuiListboxOptionData = {
31
31
  * Listbox with an `options` convenience API or composed children. Stamps
32
32
  * `<rui-listbox>` and a `[role="listbox"]` shell via `ListboxShell`.
33
33
  */
34
- export declare function RuiListbox({ options, children, value, embedded, bordered, label, disabled, selectionMode, ...props }: JsxCustomElementAttributes<RuiListboxElement, Omit<RuiListboxProps, 'value'> & {
34
+ export declare function RuiListbox({ options, children, value, embedded, bordered, label, disabled, selectionMode, ...props }: JsxCustomElementAttributes<RuiListboxElement, RuiListboxProps & {
35
35
  options?: RuiListboxOptionData[];
36
- value?: string | string[];
37
36
  }>): JsxRenderable;
@@ -1,8 +1,9 @@
1
1
  import { RadiantElement } from '@ecopages/radiant';
2
2
  import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter';
3
+ import { type ViewMultiValue } from '../shared/multi-value';
3
4
  export type RuiListboxSelectionMode = 'single' | 'multiple';
4
5
  export type RuiListboxProps = {
5
- value?: string;
6
+ value?: ViewMultiValue;
6
7
  label?: string;
7
8
  disabled?: boolean;
8
9
  selectionMode?: RuiListboxSelectionMode;
@@ -16,7 +17,7 @@ export type RuiListboxProps = {
16
17
  bordered?: boolean;
17
18
  };
18
19
  export type RuiListboxChangeDetail = {
19
- value: string;
20
+ value: string[];
20
21
  };
21
22
  /**
22
23
  * `<rui-listbox>` — listbox selection behavior host.
@@ -50,14 +51,14 @@ export type RuiListboxChangeDetail = {
50
51
  *
51
52
  * @element rui-listbox
52
53
  *
53
- * @attr {string} value - Selected option value (comma-separated in multiple mode). Default: `''`.
54
+ * @attr {string} value - Comma-separated selected values in markup; the property is `string[]`. Default: `[]`.
54
55
  * @attr {string} label - Accessible name for the list. Default: `''`.
55
56
  * @attr {boolean} disabled - Disable all selection. Default: `false`.
56
57
  * @attr {('single'|'multiple')} selection-mode - Single or multiple selection. Default: `single`.
57
58
  * @attr {boolean} embedded - Parent-owned listbox: selection handled by the parent. Default: `false`.
58
59
  * @attr {boolean} bordered - Override the border (`true` standalone, `false` embedded). Default: follows `embedded`.
59
60
  *
60
- * @fires rui-change - Emitted when an option is selected; detail carries `value`.
61
+ * @fires rui-change - Emitted when an option is selected; `detail.value` is `string[]`.
61
62
  *
62
63
  * @remarks
63
64
  * Minimum headless tree:
@@ -72,9 +73,10 @@ export type RuiListboxChangeDetail = {
72
73
  * ```
73
74
  *
74
75
  * BEM classes are presentation-only; see view `@cssclass`.
76
+ * Not form-associated. An `embedded` listbox is the parent's option surface, not a field control.
75
77
  */
76
78
  export declare class RuiListbox extends RadiantElement {
77
- value: string;
79
+ value: string[];
78
80
  label: string;
79
81
  disabled: boolean;
80
82
  selectionMode: RuiListboxSelectionMode;
@@ -1,2 +1,2 @@
1
- import{RadiantElement as De,bound as ut,customElement as at,event as Pe,onEvent as F,onUpdated as lt,prop as ke,query as Be}from"@ecopages/radiant";var Ge={top:"bottom",bottom:"top",left:"right",right:"left"},Ve=8;function Ye(n){let e=n.indexOf("-");if(e===-1)return{side:n,align:"center"};let t=n.slice(0,e),r=n.slice(e+1);return{side:t,align:r==="start"||r==="end"?r:"center"}}function me(n){return n==="top"||n==="bottom"?"y":"x"}function he(n,e,t,r,i){let{width:o,height:u}=e,s=0,c=0;switch(t){case"top":c=n.top-u-i;break;case"bottom":c=n.bottom+i;break;case"left":s=n.left-o-i;break;case"right":s=n.right+i;break}return me(t)==="y"?r==="start"?s=n.left:r==="end"?s=n.right-o:s=n.left+(n.width-o)/2:r==="start"?c=n.top:r==="end"?c=n.bottom-u:c=n.top+(n.height-u)/2,{x:s,y:c}}function Xe(n,e,t,r){let{padding:i,width:o,height:u}=r;return t==="top"?Math.max(0,i-n.y):t==="bottom"?Math.max(0,n.y+e.height-(u-i)):t==="left"?Math.max(0,i-n.x):Math.max(0,n.x+e.width-(o-i))}function fe(n,e,t,r){let{padding:i,width:o,height:u}=r;return t==="top"?n.top-i-e.height:t==="bottom"?u-i-e.height-n.bottom:t==="left"?n.left-i-e.width:o-i-e.width-n.right}function Je(n,e){return e==="center"?n:`${n}-${e}`}function Qe(n,e,t,r){let{padding:i,width:o,height:u}=r;if(me(t)==="y"){let c=Math.max(i,o-i-e.width);return{x:Math.min(Math.max(n.x,i),c),y:n.y}}let s=Math.max(i,u-i-e.height);return{x:n.x,y:Math.min(Math.max(n.y,i),s)}}function Ze(n,e,t,r,i={width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight,padding:Ve}){let{side:o,align:u}=Ye(t),s=he(n,e,o,u,r),c=Xe(s,e,o,i),S=o,g=s;if(c>0){let w=Ge[o],A=he(n,e,w,u,r),D=fe(n,e,o,i);fe(n,e,w,i)>D&&(S=w,g=A)}return{coords:Qe(g,e,S,i),placement:Je(S,u)}}function ze(n,e,t,r,i={}){let{coords:o,placement:u}=Ze(n.getBoundingClientRect(),{width:e.offsetWidth,height:e.offsetHeight},t,r);return Object.assign(e.style,{position:"fixed",left:`${o.x}px`,top:`${o.y}px`,right:"auto",bottom:"auto",visibility:"visible"}),i.matchAnchorWidth&&(e.style.width=`${n.offsetWidth}px`),e.setAttribute("data-placement",u),u}function pe({anchor:n,floating:e,getPlacement:t,gap:r,matchAnchorWidth:i}){let o=()=>{e.hidden||ze(n,e,t(),r,{matchAnchorWidth:i})};o(),window.addEventListener("resize",o),window.addEventListener("scroll",o,!0);let u=new ResizeObserver(o);return u.observe(n),u.observe(e),()=>{window.removeEventListener("resize",o),window.removeEventListener("scroll",o,!0),u.disconnect()}}function de(n,e=document.body){let t=n.parentNode;if(!t)return{unmount:()=>{}};let r=document.createComment("rui-portal");return t.insertBefore(r,n),e.appendChild(n),{unmount:()=>{let i=r.parentNode;i&&(i.insertBefore(n,r),r.remove())}}}function ge(n,e,t){return t?!!(n?.contains(t)||e?.contains(t)):!1}function be(n,e,t){return!ge(n,e,t)}var j=class{config;cleanupFloating=null;portalHandle=null;floatingElement=null;constructor(e){this.config=e}updateConfig(e){this.config={...this.config,...e}}sync(){let e=this.resolveFloating();if(!e)return;if(!this.config.getOpen()){this.teardown(),e.toggleAttribute("hidden",!0);return}let r=this.config.getAnchor();if(!r)return;e.toggleAttribute("hidden",!1),this.config.portal!==!1?this.portalHandle||(this.portalHandle=de(e,this.config.portalContainer??document.body)):this.portalHandle&&(this.portalHandle.unmount(),this.portalHandle=null),this.teardownFloating(),this.cleanupFloating=pe({anchor:r,floating:e,getPlacement:this.config.getPlacement,gap:this.config.gap??8,matchAnchorWidth:this.config.matchAnchorWidth})}contains(e){return ge(this.config.getAnchor(),this.resolveFloating(),e)}getFloatingElement(){return this.resolveFloating()}teardown(){this.teardownFloating(),this.portalHandle&&(this.portalHandle.unmount(),this.portalHandle=null)}destroy(){this.teardown(),this.floatingElement=null}resolveFloating(){let e=this.config.getFloating();return e&&(this.floatingElement=e),e??this.floatingElement}teardownFloating(){this.cleanupFloating?.(),this.cleanupFloating=null}};var et=200,tt=250,nt=6,V=class{config;popovers=new Map;openMenus=new Set;openTimers=new Map;closeTimers=new Map;constructor(e){this.config=e}sync(){for(let e of this.getMenus())for(let t of this.getDirectItems(e)){let r=this.getSubmenu(t);r&&(t.setAttribute("aria-haspopup","menu"),t.hasAttribute("aria-expanded")||t.setAttribute("aria-expanded","false"),r.id||(r.id=`rui-submenu-${Math.random().toString(36).slice(2,9)}`),t.setAttribute("aria-controls",r.id),r.hidden=t.getAttribute("aria-expanded")!=="true")}}handlePointerOver(e){let t=this.getDirectItem(e.target);if(!t||this.isDisabled(t)||(this.cancelCloseFor(t),this.cancelAncestorCloseTimers(t),!this.getSubmenu(t)||t.getAttribute("aria-expanded")==="true"))return;this.closeSiblingBranches(t),this.cancelOpenFor(t);let i=setTimeout(()=>{this.openTimers.delete(t),this.openSubmenu(t,!1)},et);this.openTimers.set(t,i)}handlePointerOut(e){let t=this.getDirectItem(e.target);if(!t)return;let r=e.relatedTarget,i=this.getSubmenu(t);i&&r&&i.contains(r)||r&&t.contains(r)||(this.cancelOpenFor(t),t.getAttribute("aria-expanded")==="true"&&this.scheduleClose(t))}handleFocusOut(e){let t=this.getDirectItem(e.target);if(!t||t.getAttribute("aria-expanded")!=="true")return;let r=this.getSubmenu(t),i=e.relatedTarget;r&&i&&r.contains(i)||this.closeSubmenu(t,!1)}handleKeydown(e){let t=this.getDirectItem(e.target),r=t?.parentElement;if(!t||!r||r.getAttribute("role")!=="menu")return!1;let i=this.keyHandlers[e.key];if(!i)return!1;let o=i.call(this,{item:t,items:this.getFocusableItems(r),menu:r,submenu:this.getSubmenu(t)});return o&&e.key!=="Tab"&&e.preventDefault(),o}keyHandlers={ArrowDown:this.focusNextItem,ArrowUp:this.focusPreviousItem,Home:this.focusFirstItem,End:this.focusLastItem,ArrowRight:this.openNestedMenu,ArrowLeft:this.closeNestedMenu,Enter:this.activateOrOpenItem," ":this.activateOrOpenItem,Escape:this.closeRootMenu,Tab:this.closeMenuForTab};focusNextItem(e){return this.focusRelativeItem(e,1)}focusPreviousItem(e){return this.focusRelativeItem(e,-1)}focusRelativeItem(e,t){let r=e.items.indexOf(e.item);return r<0||!e.items.length?!1:(e.items[(r+t+e.items.length)%e.items.length]?.focus(),!0)}focusFirstItem(e){return e.items[0]?.focus(),!0}focusLastItem(e){return e.items.at(-1)?.focus(),!0}openNestedMenu(e){return e.submenu?(this.openSubmenu(e.item,!0),!0):!1}closeNestedMenu(e){if(this.getRootMenu()===e.menu)return!1;let t=this.getTriggerForMenu(e.menu);return t&&this.closeSubmenu(t,!0),!0}activateOrOpenItem(e){return e.submenu?this.openSubmenu(e.item,!0):this.config.onActivate(e.item),!0}closeRootMenu(){return this.config.onCloseRoot(!0),!0}closeMenuForTab(){return this.config.onCloseRoot(!1),!0}handleClick(e){let t=this.getDirectItem(e.target);return!t||this.isDisabled(t)?!1:this.getSubmenu(t)?(e.preventDefault(),this.closeSiblingBranches(t),this.openSubmenu(t,!1),!0):(this.config.onActivate(t),!0)}closeAll(){for(let e of Array.from(this.openMenus)){let t=this.getTriggerForMenu(e);t&&this.closeSubmenu(t,!1)}this.clearTimers()}getFocusableItems(e){return this.getDirectItems(e).filter(t=>!this.isDisabled(t))}destroy(){this.closeAll();for(let e of this.popovers.values())e.destroy();this.popovers.clear()}openSubmenu(e,t){let r=this.getSubmenu(e);if(!r||this.isDisabled(e))return;this.cancelOpenFor(e),this.cancelCloseFor(e),this.closeSiblingBranches(e),e.setAttribute("aria-expanded","true"),r.hidden=!1,this.openMenus.add(r);let i=this.popovers.get(r);i||(i=new j({getAnchor:()=>e,getFloating:()=>r,getOpen:()=>e.getAttribute("aria-expanded")==="true",getPlacement:()=>"right-start",gap:nt,portal:!1}),this.popovers.set(r,i)),i.updateConfig({getAnchor:()=>e,getOpen:()=>e.getAttribute("aria-expanded")==="true"}),i.sync(),t&&this.getFocusableItems(r)[0]?.focus()}closeSubmenu(e,t){let r=this.getSubmenu(e);if(r){for(let i of this.getDirectItems(r))this.closeSubmenu(i,!1);this.cancelOpenFor(e),this.cancelCloseFor(e),e.setAttribute("aria-expanded","false"),r.hidden=!0,this.openMenus.delete(r),this.popovers.get(r)?.teardown(),t&&e.focus()}}closeSiblingBranches(e){let t=e.parentElement;if(t)for(let r of this.getDirectItems(t))r!==e&&r.getAttribute("aria-expanded")==="true"&&this.closeSubmenu(r,!1)}scheduleClose(e){this.cancelCloseFor(e);let t=setTimeout(()=>{this.closeTimers.delete(e),this.closeSubmenu(e,!1)},tt);this.closeTimers.set(e,t)}getMenus(){return Array.from(this.config.root.querySelectorAll('[role="menu"]'))}getRootMenu(){return this.config.getRootMenu()}getDirectItems(e){return Array.from(e.querySelectorAll('[role="menuitem"]')).filter(t=>t.closest('[role="menu"]')===e)}getDirectItem(e){if(!(e instanceof HTMLElement))return null;let t=e.closest('[role="menuitem"]');return t&&t.closest('[role="menu"]')&&this.config.root.contains(t)?t:null}getSubmenu(e){let t=e.nextElementSibling;return t instanceof HTMLElement&&t.getAttribute("role")==="menu"?t:null}getTriggerForMenu(e){let t=e.previousElementSibling;return t instanceof HTMLElement&&t.getAttribute("role")==="menuitem"?t:null}isDisabled(e){return e.getAttribute("aria-disabled")==="true"||e instanceof HTMLButtonElement&&e.disabled}cancelOpenFor(e){let t=this.openTimers.get(e);t&&clearTimeout(t),this.openTimers.delete(e)}cancelCloseFor(e){let t=this.closeTimers.get(e);t&&clearTimeout(t),this.closeTimers.delete(e)}cancelAncestorCloseTimers(e){let t=e.closest('[role="menu"]');for(;t;){let r=this.getTriggerForMenu(t);if(!r)return;this.cancelCloseFor(r),t=r.closest('[role="menu"]')}}clearTimers(){for(let e of this.openTimers.values())clearTimeout(e);for(let e of this.closeTimers.values())clearTimeout(e);this.openTimers.clear(),this.closeTimers.clear()}};var ve,ye,we,Te,xe,Me,Se,Ae,Ce,Ie,Ee,_e,Oe,Fe;function rt(n,e,t,r,i,o){var u,s,c,S,g,w,A,D=Symbol.metadata||Symbol.for("Symbol.metadata"),E=Object.defineProperty,_=Object.create,P=[_(null),_(null)],U=e.length;function k(a,b,v){return function(l,h){b&&(h=l,l=n);for(var x=0;x<a.length;x++)h=a[x].apply(l,v?[h]:[]);return v?h:l}}function T(a,b,v,l){if(typeof a!="function"&&(l||a!==void 0))throw new TypeError(b+" must "+(v||"be")+" a function"+(l?"":" or undefined"));return a}function $(a,b,v,l,h,x,R,y,C,I,re){function Y(m){if(!re(m))throw new TypeError("Attempted to access private element on non-instance")}var X=[].concat(b[0]),ie=b[3],J=!R,L=h===1,oe=h===3,se=h===4,W=h===2;function K(m,B,le){return function(G,ce){return B&&(ce=G,G=a),le&&le(G),f[m].call(G,ce)}}if(!J){var f={},Q=[],O=oe?"get":se||L?"set":"value";if(C?(I||L?f={get:Re(function(){return ie(this)},l,"get"),set:function(m){b[4](this,m)}}:f[O]=ie,I||Re(f[O],l,W?"":O)):I||(f=Object.getOwnPropertyDescriptor(a,l)),!I&&!C){if((s=P[+y][l])&&(s^h)!==7)throw Error("Decorating two elements with the same name ("+f[O].name+") is not supported yet");P[+y][l]=h<3?1:h}}for(var d=a,N=X.length-1;N>=0;N-=v?2:1){var ue=T(X[N],"A decorator","be",!0),ae=v?X[N-1]:void 0,Z={},H={kind:["field","accessor","method","getter","setter","class"][h],name:l,metadata:u,addInitializer:function(m,B){if(m.v)throw new TypeError("attempted to call addInitializer after decoration was finished");T(B,"An initializer","be",!0),x.push(B)}.bind(null,Z)};if(J)s=ue.call(ae,d,H),Z.v=1,T(s,"class decorators","return")&&(d=s);else if(H.static=y,H.private=C,s=H.access={has:C?re.bind():function(m){return l in m}},se||(s.get=C?W?function(m){return Y(m),f.value}:K("get",0,Y):function(m){return m[l]}),W||oe||(s.set=C?K("set",0,Y):function(m,B){m[l]=B}),d=ue.call(ae,L?{get:f.get,set:f.set}:f[O],H),Z.v=1,L){if(typeof d=="object"&&d)(s=T(d.get,"accessor.get"))&&(f.get=s),(s=T(d.set,"accessor.set"))&&(f.set=s),(s=T(d.init,"accessor.init"))&&Q.unshift(s);else if(d!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else T(d,(I?"field":"method")+" decorators","return")&&(I?Q.unshift(d):f[O]=d)}return h<2&&R.push(k(Q,y,1),k(x,y,0)),I||J||(C?L?R.splice(-1,0,K("get",y),K("set",y)):R.push(W?f[O]:T.call.bind(f[O])):E(a,l,f)),d}function q(a){return E(a,D,{configurable:!0,enumerable:!0,value:u})}return o!==void 0&&(u=o[D]),u=_(u??null),g=[],w=function(a){a&&g.push(k(a))},A=function(a,b){for(var v=0;v<t.length;v++){var l=t[v],h=l[1],x=7&h;if((8&h)==a&&!x==b){var R=l[2],y=!!l[3],C=16&h;$(a?n:n.prototype,l,C,y?"#"+R:it(R),x,x<2?[]:a?S=S||[]:c=c||[],g,!!a,y,b,a&&y?function(I){return st(I)===n}:i)}}},A(8,0),A(0,0),A(8,1),A(0,1),w(c),w(S),s=g,U||q(n),{e:s,get c(){var a=[];return U&&[q(n=$(n,[e],r,n.name,5,a)),k(a,1)]}}}function it(n){var e=ot(n,"string");return typeof e=="symbol"?e:e+""}function ot(n,e){if(typeof n!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function Re(n,e,t){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(n,"name",{configurable:!0,value:t?t+" "+e:e})}catch{}return n}function st(n){if(Object(n)!==n)throw TypeError("right-hand side of 'in' should be an object, got "+(n!==null?typeof n:"null"));return n}var ct=6,Le,je=class extends De{static{({e:[we,Te,xe,Me,Se,Ae,Ce,Ie,Ee,_e,Oe,Fe,ve],c:[Le,ye]}=rt(this,[at("rui-menu-button")],[[ke({type:Boolean,reflect:!0,defaultValue:!1}),0,"open"],[ke({type:String,defaultValue:"bottom-start"}),0,"placement"],[Be({ref:"trigger"}),0,"triggerTarget"],[Be({ref:"menu"}),0,"menuTarget"],[Pe({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[Pe({name:"rui-close",bubbles:!0,composed:!0}),0,"closeEvent"],[[ut,lt(["open","placement"])],2,"syncOpenState"],[F({document:!0,type:"pointerdown"}),2,"onDocumentPointerDown"],[F({ref:"trigger",type:"click"}),2,"onTriggerClick"],[F({ref:"trigger",type:"keydown"}),2,"onTriggerKeydown"],[F({ref:"menu",type:"keydown"}),2,"onMenuKeydown"],[F({ref:"menu",type:"pointerover"}),2,"onMenuPointerOver"],[F({ref:"menu",type:"pointerout"}),2,"onMenuPointerOut"],[F({ref:"menu",type:"focusout"}),2,"onMenuFocusOut"],[F({selector:'[role="menuitem"]',type:"click"}),2,"onItemClick"]],0,void 0,De))}open=(ve(this),we(this));placement=(Te(this),xe(this));triggerTarget=(Me(this),Se(this));menuTarget=(Ae(this),Ce(this));changeEvent=(Ie(this),Ee(this));closeEvent=(_e(this),Oe(this));menuId=(Fe(this),`rui-menu-${Math.random().toString(36).slice(2,9)}`);popoverController=null;menuTree=null;pendingFocus=null;onConnected(){this.syncOpenState()}disconnectedCallback(){this.menuTree?.destroy(),this.menuTree=null,this.popoverController?.destroy(),this.popoverController=null,super.disconnectedCallback()}getItems(){return this.menuTarget?this.ensureMenuTree().getFocusableItems(this.menuTarget):[]}ensureMenuTree(){return this.menuTree||(this.menuTree=new V({root:this,getRootMenu:()=>this.menuTarget,onActivate:e=>this.activateItem(e),onCloseRoot:e=>this.setOpen(!1,e?"trigger":null)})),this.menuTree}getSearchInput(){return this.menuTarget?.querySelector("[data-autocomplete-input]")??null}ensurePopoverController(){return this.popoverController||(this.popoverController=new j({getAnchor:()=>this.triggerTarget,getFloating:()=>this.menuTarget,getOpen:()=>this.open,getPlacement:()=>this.placement,gap:ct,portal:!1})),this.popoverController}syncOpenState(){if(!this.triggerTarget||!this.menuTarget)return;this.menuTarget.id=this.menuId,this.triggerTarget.setAttribute("aria-controls",this.menuId),this.triggerTarget.setAttribute("aria-haspopup","menu"),this.triggerTarget.setAttribute("aria-expanded",String(this.open)),this.menuTarget.toggleAttribute("hidden",!this.open);let e=this.ensureMenuTree();e.sync(),this.open||e.closeAll();let t=this.ensurePopoverController();t.updateConfig({getPlacement:()=>this.placement,getOpen:()=>this.open}),t.sync();let r=this.pendingFocus;if(this.pendingFocus=null,!r)return;if(r==="trigger"){this.triggerTarget?.focus();return}let i=this.getSearchInput();if(i){i.focus();return}if(r==="first"&&this.getItems()[0]?.focus(),r==="last"){let o=this.getItems();o[o.length-1]?.focus()}}setOpen(e,t=null){let r=this.open;this.pendingFocus=t,this.open=e,r&&!e&&this.closeEvent.emit(),r===e&&this.syncOpenState()}onDocumentPointerDown(e){if(!this.open)return;let t=e.target;be(this.triggerTarget,this.menuTarget,t)&&this.setOpen(!1)}onTriggerClick(){this.setOpen(!this.open,this.open?null:"first")}onTriggerKeydown(e){switch(e.key){case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.setOpen(!0,"first");break;case"ArrowUp":e.preventDefault(),this.setOpen(!0,"last");break;default:break}}onMenuKeydown(e){this.ensureMenuTree().handleKeydown(e)}onMenuPointerOver(e){this.ensureMenuTree().handlePointerOver(e)}onMenuPointerOut(e){this.ensureMenuTree().handlePointerOut(e)}onMenuFocusOut(e){this.ensureMenuTree().handleFocusOut(e)}onItemClick(e){this.ensureMenuTree().handleClick(e)}activateItem(e){let t=e.getAttribute("data-value")||e.textContent?.trim()||"";this.changeEvent.emit({value:t}),this.setOpen(!1,"trigger")}static{ye()}};import{jsx as M,jsxs as $e}from"@ecopages/jsx/jsx-runtime";function p(...n){return n.filter(Boolean).join(" ")}import{jsx as He}from"@ecopages/jsx/jsx-runtime";function z({class:n,size:e="sm",...t}){return He("svg",{...t,class:p("rui-icon",e==="md"&&"rui-icon--md",n),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:He("path",{d:"m6 9 6 6 6-6"})})}import{jsx as Ue}from"@ecopages/jsx/jsx-runtime";function ht(n,e,t){if(n!==void 0)return n;if(e)return t}function ft(n,e){if(typeof n=="function"){n(e);return}n!=null&&typeof n=="object"&&"handleEvent"in n&&n.handleEvent(e)}function ee(n){if(n.href!==void 0){let{href:E,target:_,rel:P,download:U,children:k,class:T,variant:$,size:q,square:a,...b}=n;return Ue("a",{...b,href:E,target:_,rel:P,download:U,class:p("rui-button",`rui-button--${$??"filled"}`,`rui-button--${q??"md"}`,a&&"rui-button--square",T),children:k})}let{variant:e,size:t,square:r,class:i,children:o,type:u="button",disabled:s,pressed:c,defaultPressed:S=!1,toggle:g=!1,"on:click":w,...A}=n,D=E=>{if(g&&c===void 0){let _=E.currentTarget,P=_.getAttribute("aria-pressed")!=="true";_.setAttribute("aria-pressed",String(P))}ft(w,E)};return Ue("button",{...A,type:u,class:p("rui-button",`rui-button--${e??"filled"}`,`rui-button--${t??"md"}`,r&&"rui-button--square",i),disabled:s,"aria-pressed":ht(c,g,S),"data-toggle":g&&c===void 0?"":void 0,"on:click":g||w?D:void 0,children:o})}import{jsx as mt}from"@ecopages/jsx/jsx-runtime";function te({orientation:n="horizontal",class:e,...t}){return mt("hr",{...t,class:p("rui-separator",e),role:"separator","aria-orientation":n,"data-orientation":n})}import{Fragment as pt,jsxs as dt}from"@ecopages/jsx/jsx-runtime";function ne(n,e){return n.map(t=>{if(t.type==="separator")return e.Separator({id:t.id});let r=!!t.items?.length;return dt(pt,{children:[e.Item({value:t.value,disabled:t.disabled,hasSubmenu:r,children:t.label}),r?e.Submenu({children:ne(t.items??[],e)}):null]})})}function qe({children:n,class:e,variant:t="filled",size:r="md",...i}){return $e(ee,{...i,variant:t,size:r,"data-ref":"trigger",class:p("rui-menu-button__trigger",e),"aria-haspopup":"menu",children:[n,M(z,{class:"rui-menu-button__chevron"})]})}function We({children:n,class:e,...t}){return M("div",{...t,"data-ref":"menu",class:p("rui-menu-button__menu","rui-popover","rui-floating",e),role:"menu",children:n})}function Ke({children:n,class:e,...t}){return M("div",{...t,"data-ref":"submenu-menu",class:p("rui-menu-button__menu","rui-menu-button__submenu","rui-popover","rui-floating",e),role:"menu",hidden:!0,children:n})}function Ne({children:n,value:e,disabled:t,hasSubmenu:r,class:i,...o}){return M("button",{...o,type:"button",class:p("rui-menu-button__item",i),role:"menuitem","data-value":e,"aria-haspopup":r?"menu":void 0,"aria-disabled":t?"true":void 0,disabled:t,tabIndex:-1,children:n})}function gt({trigger:n,items:e,children:t,class:r,...i}){return n==null&&e==null?M("rui-menu-button",{...i,class:p("rui-menu-button",r),children:t}):$e("rui-menu-button",{...i,class:p("rui-menu-button",r),children:[M(qe,{children:n}),M(We,{children:e?ne(e,{Item:o=>M(Ne,{...o}),Submenu:o=>M(Ke,{...o}),Separator:o=>M(te,{},o.id)}):t})]})}export{gt as RuiMenuButton,We as RuiMenuButtonContent,Le as RuiMenuButtonElement,Ne as RuiMenuButtonItem,Ke as RuiMenuButtonSubmenuContent,qe as RuiMenuButtonTrigger};
1
+ import{RadiantElement as Be,bindTo as mt,bound as dt,customElement as pt,event as je,onEvent as O,onUpdated as gt,prop as He,query as Le}from"@ecopages/radiant";var Ye={top:"bottom",bottom:"top",left:"right",right:"left"},Xe=8,ee=new WeakMap;function Ze(n){ee.has(n)&&(n.style.width="",n.style.minWidth="",n.style.maxWidth="",n.style.boxSizing="",ee.delete(n))}function Je(n){let e=n.indexOf("-");if(e===-1)return{side:n,align:"center"};let t=n.slice(0,e),r=n.slice(e+1);return{side:t,align:r==="start"||r==="end"?r:"center"}}function pe(n){return n==="top"||n==="bottom"?"y":"x"}function me(n,e,t,r,i){let{width:o,height:u}=e,s=0,c=0;switch(t){case"top":c=n.top-u-i;break;case"bottom":c=n.bottom+i;break;case"left":s=n.left-o-i;break;case"right":s=n.right+i;break}return pe(t)==="y"?r==="start"?s=n.left:r==="end"?s=n.right-o:s=n.left+(n.width-o)/2:r==="start"?c=n.top:r==="end"?c=n.bottom-u:c=n.top+(n.height-u)/2,{x:s,y:c}}function Qe(n,e,t,r){let{padding:i,width:o,height:u}=r;return t==="top"?Math.max(0,i-n.y):t==="bottom"?Math.max(0,n.y+e.height-(u-i)):t==="left"?Math.max(0,i-n.x):Math.max(0,n.x+e.width-(o-i))}function de(n,e,t,r){let{padding:i,width:o,height:u}=r;return t==="top"?n.top-i-e.height:t==="bottom"?u-i-e.height-n.bottom:t==="left"?n.left-i-e.width:o-i-e.width-n.right}function et(n,e){return e==="center"?n:`${n}-${e}`}function tt(n,e,t,r){let{padding:i,width:o,height:u}=r;if(pe(t)==="y"){let c=Math.max(i,o-i-e.width);return{x:Math.min(Math.max(n.x,i),c),y:Math.max(i,n.y)}}let s=Math.max(i,u-i-e.height);return{x:Math.max(i,n.x),y:Math.min(Math.max(n.y,i),s)}}function nt(n,e,t,r,i={width:typeof window>"u"?0:window.innerWidth,height:typeof window>"u"?0:window.innerHeight,padding:Xe}){let{side:o,align:u}=Je(t),s=me(n,e,o,u,r),c=Qe(s,e,o,i),g=o,b=s;if(c>0){let x=Ye[o],A=me(n,e,x,u,r),D=de(n,e,o,i);de(n,e,x,i)>D&&(g=x,b=A)}return{coords:tt(b,e,g,i),placement:et(g,u)}}function rt(n,e,t,r,i={}){let o=i.matchAnchorWidth===!0,u=n.offsetWidth,s=o?{width:u,height:e.offsetHeight}:{width:e.offsetWidth,height:e.offsetHeight};o?(e.style.width=`${u}px`,e.style.minWidth=`${u}px`,e.style.maxWidth=`${u}px`,e.style.boxSizing="border-box",ee.set(e,!0)):Ze(e);let{coords:c,placement:g}=nt(n.getBoundingClientRect(),s,t,r);return Object.assign(e.style,{position:"fixed",left:`${c.x}px`,top:`${c.y}px`,right:"auto",bottom:"auto",visibility:"visible"}),e.setAttribute("data-placement",g),g}function ge({anchor:n,floating:e,getPlacement:t,gap:r,matchAnchorWidth:i}){let o=()=>{e.hidden||rt(n,e,t(),r,{matchAnchorWidth:i})};o(),window.addEventListener("resize",o),window.addEventListener("scroll",o,!0);let u=new ResizeObserver(o);return u.observe(n),u.observe(e),()=>{window.removeEventListener("resize",o),window.removeEventListener("scroll",o,!0),u.disconnect()}}function be(n,e=document.body){let t=n.parentNode;if(!t)return{unmount:()=>{}};let r=document.createComment("rui-portal");return t.insertBefore(r,n),e.appendChild(n),{unmount:()=>{let i=r.parentNode;i&&(i.insertBefore(n,r),r.remove())}}}function ve(n,e,t){return t?!!(n?.contains(t)||e?.contains(t)):!1}function ye(n,e,t){return!ve(n,e,t)}var j=class{config;cleanupFloating=null;portalHandle=null;floatingElement=null;constructor(e){this.config=e}updateConfig(e){this.config={...this.config,...e}}sync(){let e=this.resolveFloating();if(!e)return;if(!this.config.getOpen()){this.teardown(),e.toggleAttribute("hidden",!0);return}let r=this.config.getAnchor();if(!r)return;e.toggleAttribute("hidden",!1),this.config.portal!==!1?this.portalHandle||(this.portalHandle=be(e,this.config.portalContainer??document.body)):this.portalHandle&&(this.portalHandle.unmount(),this.portalHandle=null),this.teardownFloating(),this.cleanupFloating=ge({anchor:r,floating:e,getPlacement:this.config.getPlacement,gap:this.config.gap??8,matchAnchorWidth:this.config.matchAnchorWidth})}contains(e){return ve(this.config.getAnchor(),this.resolveFloating(),e)}getFloatingElement(){return this.resolveFloating()}teardown(){this.teardownFloating(),this.portalHandle&&(this.portalHandle.unmount(),this.portalHandle=null)}destroy(){this.teardown(),this.floatingElement=null}resolveFloating(){let e=this.config.getFloating();return e&&(this.floatingElement=e),e??this.floatingElement}teardownFloating(){this.cleanupFloating?.(),this.cleanupFloating=null}};var it=/^[A-Za-z][A-Za-z0-9_-]*$/;function we(n){return it.test(n)}function ot(n){let e=n.trim();if(we(e))return e;let t=`rui-${e}`;return e&&we(t)?t:"rui"}function V(n){let e=typeof crypto.randomUUID=="function"?crypto.randomUUID().replace(/-/g,""):Array.from(crypto.getRandomValues(new Uint8Array(16)),t=>t.toString(16).padStart(2,"0")).join("");return`${ot(n)}-${e}`}var st=200,ut=250,at=6,G=class{config;popovers=new Map;openMenus=new Set;openTimers=new Map;closeTimers=new Map;constructor(e){this.config=e}sync(){for(let e of this.getMenus())for(let t of this.getDirectItems(e)){let r=this.getSubmenu(t);r&&(t.setAttribute("aria-haspopup","menu"),t.hasAttribute("aria-expanded")||t.setAttribute("aria-expanded","false"),r.id||(r.id=V("rui-submenu")),t.setAttribute("aria-controls",r.id),r.hidden=t.getAttribute("aria-expanded")!=="true")}}handlePointerOver(e){let t=this.getDirectItem(e.target);if(!t||this.isDisabled(t)||(this.cancelCloseFor(t),this.cancelAncestorCloseTimers(t),!this.getSubmenu(t)||t.getAttribute("aria-expanded")==="true"))return;this.closeSiblingBranches(t),this.cancelOpenFor(t);let i=setTimeout(()=>{this.openTimers.delete(t),this.openSubmenu(t,!1)},st);this.openTimers.set(t,i)}handlePointerOut(e){let t=this.getDirectItem(e.target);if(!t)return;let r=e.relatedTarget,i=this.getSubmenu(t);i&&r&&i.contains(r)||r&&t.contains(r)||(this.cancelOpenFor(t),t.getAttribute("aria-expanded")==="true"&&this.scheduleClose(t))}handleFocusOut(e){let t=this.getDirectItem(e.target);if(!t||t.getAttribute("aria-expanded")!=="true")return;let r=this.getSubmenu(t),i=e.relatedTarget;r&&i&&r.contains(i)||this.closeSubmenu(t,!1)}handleKeydown(e){let t=this.getDirectItem(e.target),r=t?.parentElement;if(!t||!r||r.getAttribute("role")!=="menu")return!1;let i=this.keyHandlers[e.key];if(!i)return!1;let o=i.call(this,{item:t,items:this.getFocusableItems(r),menu:r,submenu:this.getSubmenu(t)});return o&&e.key!=="Tab"&&e.preventDefault(),o}keyHandlers={ArrowDown:this.focusNextItem,ArrowUp:this.focusPreviousItem,Home:this.focusFirstItem,End:this.focusLastItem,ArrowRight:this.openNestedMenu,ArrowLeft:this.closeNestedMenu,Enter:this.activateOrOpenItem," ":this.activateOrOpenItem,Escape:this.closeRootMenu,Tab:this.closeMenuForTab};focusNextItem(e){return this.focusRelativeItem(e,1)}focusPreviousItem(e){return this.focusRelativeItem(e,-1)}focusRelativeItem(e,t){let r=e.items.indexOf(e.item);return r<0||!e.items.length?!1:(e.items[(r+t+e.items.length)%e.items.length]?.focus(),!0)}focusFirstItem(e){return e.items[0]?.focus(),!0}focusLastItem(e){return e.items.at(-1)?.focus(),!0}openNestedMenu(e){return e.submenu?(this.openSubmenu(e.item,!0),!0):!1}closeNestedMenu(e){if(this.getRootMenu()===e.menu)return!1;let t=this.getTriggerForMenu(e.menu);return t&&this.closeSubmenu(t,!0),!0}activateOrOpenItem(e){return e.submenu?this.openSubmenu(e.item,!0):this.config.onActivate(e.item),!0}closeRootMenu(){return this.config.onCloseRoot(!0),!0}closeMenuForTab(){return this.config.onCloseRoot(!1),!0}handleClick(e){let t=this.getDirectItem(e.target);return!t||this.isDisabled(t)?!1:this.getSubmenu(t)?(e.preventDefault(),this.closeSiblingBranches(t),this.openSubmenu(t,!1),!0):(this.config.onActivate(t),!0)}closeAll(){for(let e of Array.from(this.openMenus)){let t=this.getTriggerForMenu(e);t&&this.closeSubmenu(t,!1)}this.clearTimers()}getFocusableItems(e){return this.getDirectItems(e).filter(t=>!this.isDisabled(t))}destroy(){this.closeAll();for(let e of this.popovers.values())e.destroy();this.popovers.clear()}openSubmenu(e,t){let r=this.getSubmenu(e);if(!r||this.isDisabled(e))return;this.cancelOpenFor(e),this.cancelCloseFor(e),this.closeSiblingBranches(e),e.setAttribute("aria-expanded","true"),r.hidden=!1,this.openMenus.add(r);let i=this.popovers.get(r);i||(i=new j({getAnchor:()=>e,getFloating:()=>r,getOpen:()=>e.getAttribute("aria-expanded")==="true",getPlacement:()=>"right-start",gap:at,portal:!1}),this.popovers.set(r,i)),i.updateConfig({getAnchor:()=>e,getOpen:()=>e.getAttribute("aria-expanded")==="true"}),i.sync(),t&&this.getFocusableItems(r)[0]?.focus()}closeSubmenu(e,t){let r=this.getSubmenu(e);if(r){for(let i of this.getDirectItems(r))this.closeSubmenu(i,!1);this.cancelOpenFor(e),this.cancelCloseFor(e),e.setAttribute("aria-expanded","false"),r.hidden=!0,this.openMenus.delete(r),this.popovers.get(r)?.teardown(),t&&e.focus()}}closeSiblingBranches(e){let t=e.parentElement;if(t)for(let r of this.getDirectItems(t))r!==e&&r.getAttribute("aria-expanded")==="true"&&this.closeSubmenu(r,!1)}scheduleClose(e){this.cancelCloseFor(e);let t=setTimeout(()=>{this.closeTimers.delete(e),this.closeSubmenu(e,!1)},ut);this.closeTimers.set(e,t)}getMenus(){return Array.from(this.config.root.querySelectorAll('[role="menu"]'))}getRootMenu(){return this.config.getRootMenu()}getDirectItems(e){return Array.from(e.querySelectorAll('[role="menuitem"]')).filter(t=>t.closest('[role="menu"]')===e)}getDirectItem(e){if(!(e instanceof HTMLElement))return null;let t=e.closest('[role="menuitem"]');return t&&t.closest('[role="menu"]')&&this.config.root.contains(t)?t:null}getSubmenu(e){let t=e.nextElementSibling;return t instanceof HTMLElement&&t.getAttribute("role")==="menu"?t:null}getTriggerForMenu(e){let t=e.previousElementSibling;return t instanceof HTMLElement&&t.getAttribute("role")==="menuitem"?t:null}isDisabled(e){return e.getAttribute("aria-disabled")==="true"||e instanceof HTMLButtonElement&&e.disabled}cancelOpenFor(e){let t=this.openTimers.get(e);t&&clearTimeout(t),this.openTimers.delete(e)}cancelCloseFor(e){let t=this.closeTimers.get(e);t&&clearTimeout(t),this.closeTimers.delete(e)}cancelAncestorCloseTimers(e){let t=e.closest('[role="menu"]');for(;t;){let r=this.getTriggerForMenu(t);if(!r)return;this.cancelCloseFor(r),t=r.closest('[role="menu"]')}}clearTimers(){for(let e of this.openTimers.values())clearTimeout(e);for(let e of this.closeTimers.values())clearTimeout(e);this.openTimers.clear(),this.closeTimers.clear()}};var xe,Te,Me,Se,Ae,Ie,Ce,_e,Ee,Fe,Oe,Re,De,ke;function lt(n,e,t,r,i,o){var u,s,c,g,b,x,A,D=Symbol.metadata||Symbol.for("Symbol.metadata"),_=Object.defineProperty,E=Object.create,k=[E(null),E(null)],W=e.length;function P(a,v,y){return function(l,h){v&&(h=l,l=n);for(var M=0;M<a.length;M++)h=a[M].apply(l,y?[h]:[]);return y?h:l}}function T(a,v,y,l){if(typeof a!="function"&&(l||a!==void 0))throw new TypeError(v+" must "+(y||"be")+" a function"+(l?"":" or undefined"));return a}function U(a,v,y,l,h,M,R,w,I,C,oe){function Y(m){if(!oe(m))throw new TypeError("Attempted to access private element on non-instance")}var X=[].concat(v[0]),se=v[3],Z=!R,H=h===1,ue=h===3,ae=h===4,q=h===2;function K(m,B,he){return function(z,fe){return B&&(fe=z,z=a),he&&he(z),f[m].call(z,fe)}}if(!Z){var f={},J=[],F=ue?"get":ae||H?"set":"value";if(I?(C||H?f={get:Pe(function(){return se(this)},l,"get"),set:function(m){v[4](this,m)}}:f[F]=se,C||Pe(f[F],l,q?"":F)):C||(f=Object.getOwnPropertyDescriptor(a,l)),!C&&!I){if((s=k[+w][l])&&(s^h)!==7)throw Error("Decorating two elements with the same name ("+f[F].name+") is not supported yet");k[+w][l]=h<3?1:h}}for(var p=a,N=X.length-1;N>=0;N-=y?2:1){var le=T(X[N],"A decorator","be",!0),ce=y?X[N-1]:void 0,Q={},L={kind:["field","accessor","method","getter","setter","class"][h],name:l,metadata:u,addInitializer:function(m,B){if(m.v)throw new TypeError("attempted to call addInitializer after decoration was finished");T(B,"An initializer","be",!0),M.push(B)}.bind(null,Q)};if(Z)s=le.call(ce,p,L),Q.v=1,T(s,"class decorators","return")&&(p=s);else if(L.static=w,L.private=I,s=L.access={has:I?oe.bind():function(m){return l in m}},ae||(s.get=I?q?function(m){return Y(m),f.value}:K("get",0,Y):function(m){return m[l]}),q||ue||(s.set=I?K("set",0,Y):function(m,B){m[l]=B}),p=le.call(ce,H?{get:f.get,set:f.set}:f[F],L),Q.v=1,H){if(typeof p=="object"&&p)(s=T(p.get,"accessor.get"))&&(f.get=s),(s=T(p.set,"accessor.set"))&&(f.set=s),(s=T(p.init,"accessor.init"))&&J.unshift(s);else if(p!==void 0)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else T(p,(C?"field":"method")+" decorators","return")&&(C?J.unshift(p):f[F]=p)}return h<2&&R.push(P(J,w,1),P(M,w,0)),C||Z||(I?H?R.splice(-1,0,K("get",w),K("set",w)):R.push(q?f[F]:T.call.bind(f[F])):_(a,l,f)),p}function $(a){return _(a,D,{configurable:!0,enumerable:!0,value:u})}return o!==void 0&&(u=o[D]),u=E(u??null),b=[],x=function(a){a&&b.push(P(a))},A=function(a,v){for(var y=0;y<t.length;y++){var l=t[y],h=l[1],M=7&h;if((8&h)==a&&!M==v){var R=l[2],w=!!l[3],I=16&h;U(a?n:n.prototype,l,I,w?"#"+R:ct(R),M,M<2?[]:a?g=g||[]:c=c||[],b,!!a,w,v,a&&w?function(C){return ft(C)===n}:i)}}},A(8,0),A(0,0),A(8,1),A(0,1),x(c),x(g),s=b,W||$(n),{e:s,get c(){var a=[];return W&&[$(n=U(n,[e],r,n.name,5,a)),P(a,1)]}}}function ct(n){var e=ht(n,"string");return typeof e=="symbol"?e:e+""}function ht(n,e){if(typeof n!="object"||!n)return n;var t=n[Symbol.toPrimitive];if(t!==void 0){var r=t.call(n,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(n)}function Pe(n,e,t){typeof e=="symbol"&&(e=(e=e.description)?"["+e+"]":"");try{Object.defineProperty(n,"name",{configurable:!0,value:t?t+" "+e:e})}catch{}return n}function ft(n){if(Object(n)!==n)throw TypeError("right-hand side of 'in' should be an object, got "+(n!==null?typeof n:"null"));return n}var bt=6,Ue,We=class extends Be{static{({e:[Me,Se,Ae,Ie,Ce,_e,Ee,Fe,Oe,Re,De,ke,xe],c:[Ue,Te]}=lt(this,[pt("rui-menu-button")],[[[He({type:Boolean,reflect:!0,defaultValue:!1}),mt([{ref:"trigger",attr:"aria-expanded"},{ref:"menu",bool:"hidden",invert:!0}])],0,"open"],[He({type:String,defaultValue:"bottom-start"}),0,"placement"],[Le({ref:"trigger"}),0,"triggerTarget"],[Le({ref:"menu"}),0,"menuTarget"],[je({name:"rui-change",bubbles:!0,composed:!0}),0,"changeEvent"],[je({name:"rui-close",bubbles:!0,composed:!0}),0,"closeEvent"],[[dt,gt(["open","placement"])],2,"syncOpenState"],[O({document:!0,type:"pointerdown"}),2,"onDocumentPointerDown"],[O({ref:"trigger",type:"click"}),2,"onTriggerClick"],[O({ref:"trigger",type:"keydown"}),2,"onTriggerKeydown"],[O({ref:"menu",type:"keydown"}),2,"onMenuKeydown"],[O({ref:"menu",type:"pointerover"}),2,"onMenuPointerOver"],[O({ref:"menu",type:"pointerout"}),2,"onMenuPointerOut"],[O({ref:"menu",type:"focusout"}),2,"onMenuFocusOut"],[O({selector:'[role="menuitem"]',type:"click"}),2,"onItemClick"]],0,void 0,Be))}open=(xe(this),Me(this));placement=(Se(this),Ae(this));triggerTarget=(Ie(this),Ce(this));menuTarget=(_e(this),Ee(this));changeEvent=(Fe(this),Oe(this));closeEvent=(Re(this),De(this));menuId=(ke(this),V("rui-menu"));popoverController=null;menuTree=null;pendingFocus=null;onConnected(){this.syncOpenState()}disconnectedCallback(){this.menuTree?.destroy(),this.menuTree=null,this.popoverController?.destroy(),this.popoverController=null,super.disconnectedCallback()}getItems(){return this.menuTarget?this.ensureMenuTree().getFocusableItems(this.menuTarget):[]}ensureMenuTree(){return this.menuTree||(this.menuTree=new G({root:this,getRootMenu:()=>this.menuTarget,onActivate:e=>this.activateItem(e),onCloseRoot:e=>this.setOpen(!1,e?"trigger":null)})),this.menuTree}getSearchInput(){return this.menuTarget?.querySelector("[data-autocomplete-input]")??null}ensurePopoverController(){return this.popoverController||(this.popoverController=new j({getAnchor:()=>this.triggerTarget,getFloating:()=>this.menuTarget,getOpen:()=>this.open,getPlacement:()=>this.placement,gap:bt,portal:!1})),this.popoverController}syncOpenState(){if(!this.triggerTarget||!this.menuTarget)return;this.menuTarget.id=this.menuId,this.triggerTarget.setAttribute("aria-controls",this.menuId),this.triggerTarget.setAttribute("aria-haspopup","menu");let e=this.ensureMenuTree();e.sync(),this.open||e.closeAll();let t=this.ensurePopoverController();t.updateConfig({getPlacement:()=>this.placement,getOpen:()=>this.open}),t.sync();let r=this.pendingFocus;if(this.pendingFocus=null,!r)return;if(r==="trigger"){this.triggerTarget?.focus();return}let i=this.getSearchInput();if(i){i.focus();return}if(r==="first"&&this.getItems()[0]?.focus(),r==="last"){let o=this.getItems();o[o.length-1]?.focus()}}setOpen(e,t=null){let r=this.open;this.pendingFocus=t,this.open=e,r&&!e&&this.closeEvent.emit(),r===e&&this.syncOpenState()}onDocumentPointerDown(e){if(!this.open)return;let t=e.target;ye(this.triggerTarget,this.menuTarget,t)&&this.setOpen(!1)}onTriggerClick(){this.setOpen(!this.open,this.open?null:"first")}onTriggerKeydown(e){switch(e.key){case"ArrowDown":case"Enter":case" ":e.preventDefault(),this.setOpen(!0,"first");break;case"ArrowUp":e.preventDefault(),this.setOpen(!0,"last");break;default:break}}onMenuKeydown(e){this.ensureMenuTree().handleKeydown(e)}onMenuPointerOver(e){this.ensureMenuTree().handlePointerOver(e)}onMenuPointerOut(e){this.ensureMenuTree().handlePointerOut(e)}onMenuFocusOut(e){this.ensureMenuTree().handleFocusOut(e)}onItemClick(e){this.ensureMenuTree().handleClick(e)}activateItem(e){let t=e.getAttribute("data-value")||e.textContent?.trim()||"";this.changeEvent.emit({value:t}),this.setOpen(!1,"trigger")}static{Te()}};import{jsx as S,jsxs as Ke}from"@ecopages/jsx/jsx-runtime";function d(...n){return n.filter(Boolean).join(" ")}import{jsx as $e}from"@ecopages/jsx/jsx-runtime";function te({class:n,size:e="sm",...t}){return $e("svg",{...t,class:d("rui-icon",e==="md"&&"rui-icon--md",n),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",children:$e("path",{d:"m6 9 6 6 6-6"})})}import{jsx as qe}from"@ecopages/jsx/jsx-runtime";function vt(n,e,t){if(n!==void 0)return n;if(e)return t}function yt(n,e){if(typeof n=="function"){n(e);return}n!=null&&typeof n=="object"&&"handleEvent"in n&&n.handleEvent(e)}function ne(n){if(n.href!==void 0){let{href:_,target:E,rel:k,download:W,children:P,class:T,variant:U,size:$,square:a,...v}=n;return qe("a",{...v,href:_,target:E,rel:k,download:W,class:d("rui-button",`rui-button--${U??"filled"}`,`rui-button--${$??"md"}`,a&&"rui-button--square",T),children:P})}let{variant:e,size:t,square:r,class:i,children:o,type:u="button",disabled:s,pressed:c,defaultPressed:g=!1,toggle:b=!1,"on:click":x,...A}=n,D=_=>{if(b&&c===void 0){let E=_.currentTarget,k=E.getAttribute("aria-pressed")!=="true";E.setAttribute("aria-pressed",String(k))}yt(x,_)};return qe("button",{...A,type:u,class:d("rui-button",`rui-button--${e??"filled"}`,`rui-button--${t??"md"}`,r&&"rui-button--square",i),disabled:s,"aria-pressed":vt(c,b,g),"data-toggle":b&&c===void 0?"":void 0,"on:click":b||x?D:void 0,children:o})}import{jsx as wt}from"@ecopages/jsx/jsx-runtime";function re({orientation:n="horizontal",class:e,...t}){return wt("hr",{...t,class:d("rui-separator",e),role:"separator","aria-orientation":n,"data-orientation":n})}import{Fragment as xt,jsxs as Tt}from"@ecopages/jsx/jsx-runtime";function ie(n,e){return n.map(t=>{if(t.type==="separator")return e.Separator({id:t.id});let r=!!t.items?.length;return Tt(xt,{children:[e.Item({value:t.value,disabled:t.disabled,hasSubmenu:r,children:t.label}),r?e.Submenu({children:ie(t.items??[],e)}):null]})})}function Ne({children:n,class:e,variant:t="filled",size:r="md",...i}){return Ke(ne,{...i,variant:t,size:r,"data-ref":"trigger",class:d("rui-menu-button__trigger",e),"aria-haspopup":"menu",children:[n,S(te,{class:"rui-menu-button__chevron"})]})}function ze({children:n,class:e,...t}){return S("div",{...t,"data-ref":"menu",class:d("rui-menu-button__menu","rui-popover","rui-floating",e),role:"menu",children:n})}function Ve({children:n,class:e,...t}){return S("div",{...t,"data-ref":"submenu-menu",class:d("rui-menu-button__menu","rui-menu-button__submenu","rui-popover","rui-floating",e),role:"menu",hidden:!0,children:n})}function Ge({children:n,value:e,disabled:t,hasSubmenu:r,class:i,...o}){return S("button",{...o,type:"button",class:d("rui-menu-button__item",i),role:"menuitem","data-value":e,"aria-haspopup":r?"menu":void 0,"aria-disabled":t?"true":void 0,disabled:t,tabIndex:-1,children:n})}function Mt({trigger:n,items:e,children:t,class:r,...i}){return n==null&&e==null?S("rui-menu-button",{...i,class:d("rui-menu-button",r),children:t}):Ke("rui-menu-button",{...i,class:d("rui-menu-button",r),children:[S(Ne,{children:n}),S(ze,{children:e?ie(e,{Item:o=>S(Ge,{...o}),Submenu:o=>S(Ve,{...o}),Separator:o=>S(re,{},o.id)}):t})]})}export{Mt as RuiMenuButton,ze as RuiMenuButtonContent,Ue as RuiMenuButtonElement,Ge as RuiMenuButtonItem,Ve as RuiMenuButtonSubmenuContent,Ne as RuiMenuButtonTrigger};
2
2
  //# sourceMappingURL=index.js.map