@revolist/ui 4.0.2-rc → 4.0.2

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 (343) hide show
  1. package/LICENSE +21 -0
  2. package/MIGRATION.md +36 -0
  3. package/OWNERSHIP.md +32 -32
  4. package/README.md +405 -265
  5. package/_button.scss +6 -2
  6. package/_chunks/arrow-up-Cw8hW9vp.js +4 -0
  7. package/_chunks/calculator-CDWOuAcp.js +4 -0
  8. package/_chunks/{calendar-CpaUK7w1.js → calendar-CgXQgkga.js} +28 -18
  9. package/_chunks/chart-frame-hcOlnQ1K.js +145 -0
  10. package/_chunks/{chevron-right-sxHQMSkq.js → check-BwI7iCAm.js} +2 -2
  11. package/_chunks/{chevron-left-D0nc4Z5S.js → chevron-right-CM3ljziP.js} +2 -2
  12. package/_chunks/choice-chips-SkllS5Kl.js +126 -0
  13. package/_chunks/clock-BOhPNlW3.js +4 -0
  14. package/_chunks/{color-palette-BBMFmUNA.js → color-palette-DMJUChWC.js} +20 -22
  15. package/_chunks/{color-picker-D90Jg-M8.js → color-picker-BpCTuIdm.js} +77 -72
  16. package/_chunks/{component-YDcfoOLz.js → component-CfeHXgIw.js} +301 -282
  17. package/_chunks/{component-metadata-BENbgTjU.js → component-metadata-BKd7U8OW.js} +0 -12
  18. package/_chunks/configurator-actions-DnStE6Yl.js +155 -0
  19. package/_chunks/configurator-field-icon-CmcM_sPs.js +53 -0
  20. package/_chunks/control-Dcrjsunl.js +118 -0
  21. package/_chunks/{controls-DIum-E66.js → controls-B_6NJarZ.js} +217 -182
  22. package/_chunks/{date-control-BJSzu79z.js → date-control-C4h4m75W.js} +1 -1
  23. package/_chunks/{date-time-BxPJusp9.js → date-time-CTOSbzb0.js} +344 -307
  24. package/_chunks/{delete-button-Bblyah10.js → delete-button-CW9vjLnk.js} +6 -6
  25. package/_chunks/dialog.parts-3w5FR06n.js +131 -0
  26. package/_chunks/{duration-87U2EoMS.js → duration-Bf2OS1V5.js} +19 -18
  27. package/_chunks/editor-popup-ByU7qiub.js +82 -0
  28. package/_chunks/field-configurator-D5dZRhDe.js +288 -0
  29. package/_chunks/field-context-D57PnBbH.js +5 -0
  30. package/_chunks/{framework-mount-C-Zwm44H.js → framework-mount-Bk4O_T7T.js} +1 -1
  31. package/_chunks/icon-toolbar-DSjOdwM7.js +134 -0
  32. package/_chunks/magnifying-glass-CvrTDSkB.js +4 -0
  33. package/_chunks/minus-BOAR3A1C.js +4 -0
  34. package/_chunks/mount-BRdcG60g.js +267 -0
  35. package/_chunks/{native.view-ByyZ1CT5.js → native-Blr3byjO.js} +1 -1
  36. package/_chunks/native-control-B_fVA5bL.js +649 -0
  37. package/_chunks/{number-input-BeIadZuL.js → number-input-CmM6_2vR.js} +7 -7
  38. package/_chunks/{picker-DpP7iQLA.js → picker-DTqET-2W.js} +2 -2
  39. package/_chunks/plus-CbGRkIGl.js +4 -0
  40. package/_chunks/popover-controller-D-AvKQ7B.js +102 -0
  41. package/_chunks/popup-C35Isk7p.js +378 -0
  42. package/_chunks/{rating-choice-Ca8ZBty3.js → rating-choice-C-6wcb9U.js} +1 -1
  43. package/_chunks/render-m5eMMwFR.js +83 -0
  44. package/_chunks/{reorder-list-Cc3KmfAN.js → reorder-list-DIl1gkV6.js} +1 -1
  45. package/_chunks/request-trail-DrhdpWiH.js +762 -0
  46. package/_chunks/rich-text-BnilBbhU.js +842 -0
  47. package/_chunks/rotate-left-BF6G883o.js +4 -0
  48. package/_chunks/rotate-right-Iha5ScJ1.js +4 -0
  49. package/_chunks/selection-list-tooltips-C5oMJe26.js +42 -0
  50. package/_chunks/title-tooltip-Cw6LOZhb.js +11 -0
  51. package/_chunks/tooltip-D4xkio5G.js +54 -0
  52. package/_chunks/tooltip-owner-DjdvqKzz.js +19 -0
  53. package/_chunks/tooltip-session-B6X6x8G_.js +110 -0
  54. package/_chunks/tooltip-text-BXsUEmBH.js +12 -0
  55. package/_chunks/top-layer-popup-CNSDdfJV.js +59 -0
  56. package/_dialog.scss +55 -21
  57. package/_form.scss +71 -21
  58. package/_legend.scss +25 -7
  59. package/_shared/data-query/index.d.ts +2 -2
  60. package/_shared/data-query/load-options.d.ts +2 -2
  61. package/_variables.scss +34 -32
  62. package/_view-switcher.scss +6 -0
  63. package/activity-message.d.ts +1 -1
  64. package/ai/_chat.scss +227 -0
  65. package/ai/_style.scss +170 -39
  66. package/ai/chat.d.ts +65 -0
  67. package/ai/components.d.ts +34 -5
  68. package/ai/index.d.ts +3 -0
  69. package/ai/index.js +3 -3
  70. package/ai/mount.d.ts +59 -6
  71. package/ai/prompt-history.d.ts +13 -0
  72. package/ai/request-trail.d.ts +9 -3
  73. package/ai/results/_style.scss +83 -0
  74. package/ai/results/index.d.ts +11 -0
  75. package/ai/results/metrics.d.ts +5 -0
  76. package/ai/results/table.d.ts +5 -0
  77. package/ai/results/text.d.ts +5 -0
  78. package/ai/results/types.d.ts +29 -0
  79. package/ai/transcript.d.ts +27 -0
  80. package/ai/translations.d.ts +1 -1
  81. package/angular/angular.d.ts +1 -1
  82. package/angular/angular.js +13 -10
  83. package/assignee/assignee.scss +28 -6
  84. package/assignee/index.js +34 -35
  85. package/avatar/avatar.style.scss +23 -6
  86. package/avatar/index.d.ts +25 -2
  87. package/avatar/index.js +33 -32
  88. package/badge.d.ts +1 -1
  89. package/badge.view.d.ts +8 -0
  90. package/brush-range/_brush-range.scss +55 -49
  91. package/brush-range/component.d.ts +1 -3
  92. package/brush-range/component.js +27 -27
  93. package/buttons/delete-button.d.ts +2 -1
  94. package/buttons/delete-button.js +1 -1
  95. package/buttons/delete-button.style.scss +6 -2
  96. package/buttons/remove-button.d.ts +1 -1
  97. package/buttons/remove-button.js +1 -1
  98. package/buttons/remove-button.style.scss +1 -1
  99. package/buttons/svg-button.d.ts +2 -1
  100. package/buttons/svg-button.js +19 -19
  101. package/calendar/_calendar.scss +27 -26
  102. package/calendar/calendar.js +1 -1
  103. package/calendar/header.js +1 -2
  104. package/calendar/index.js +2 -2
  105. package/cell-input.scss +3 -7
  106. package/cell-visuals/badge.style.scss +6 -3
  107. package/cell-visuals/bar-chart.style.scss +2 -1
  108. package/cell-visuals/column-type.style.css +12 -0
  109. package/cell-visuals/progress-line-value.renderer.style.scss +4 -2
  110. package/cell-visuals/progress-line.style.scss +1 -4
  111. package/cell-visuals/sparkline.style.scss +2 -1
  112. package/cell-visuals/timeline.style.css +4 -2
  113. package/checkbox/checkbox.scss +6 -24
  114. package/choice-chips/index.d.ts +3 -1
  115. package/choice-chips/index.js +1 -1
  116. package/color-palette/color-palette.js +1 -1
  117. package/color-palette/color-palette.style.scss +88 -25
  118. package/color-palette/color-picker.js +2 -2
  119. package/color-palette/color-picker.style.scss +23 -10
  120. package/color-palette/common-palettes.d.ts +1 -1
  121. package/color-palette/common-palettes.js +1 -1
  122. package/color-palette/native.d.ts +15 -2
  123. package/component-catalog.d.ts +24 -11
  124. package/configurator-actions.d.ts +67 -0
  125. package/configurator-actions.js +1 -0
  126. package/configurator-aggregation-list.d.ts +14 -0
  127. package/configurator-aggregation-list.js +63 -0
  128. package/configurator-drop-zone.d.ts +39 -0
  129. package/configurator-drop-zone.js +66 -0
  130. package/configurator-field-icon.d.ts +10 -0
  131. package/configurator-field-icon.js +1 -0
  132. package/configurator-focus.d.ts +4 -0
  133. package/configurator-focus.js +39 -0
  134. package/configurator-sections.d.ts +42 -0
  135. package/configurator-sections.js +71 -0
  136. package/control-attributes.js +7 -7
  137. package/control-presentation.d.ts +8 -2
  138. package/control-presentation.js +25 -20
  139. package/controls.d.ts +19 -7
  140. package/controls.js +4 -3
  141. package/core/editor-popup-position.d.ts +6 -2
  142. package/core/editor-popup.d.ts +4 -0
  143. package/core/editor-popup.js +1 -1
  144. package/core/popover-controller.d.ts +35 -0
  145. package/core/popup-ownership.d.ts +2 -0
  146. package/core/selection-list-tooltips.d.ts +2 -0
  147. package/core/title-tooltip.d.ts +2 -0
  148. package/core/tooltip-session.d.ts +29 -0
  149. package/core/tooltip-surface.d.ts +13 -0
  150. package/core/tooltip-text.d.ts +6 -0
  151. package/core/tooltip.d.ts +35 -0
  152. package/core/top-layer-popup.d.ts +4 -0
  153. package/core/top-layer-popup.js +1 -23
  154. package/date-time/attach.d.ts +1 -1
  155. package/date-time/date-control.d.ts +1 -1
  156. package/date-time/field.d.ts +3 -2
  157. package/date-time/index.js +1 -1
  158. package/date-time/style.scss +242 -39
  159. package/date-time/time-selection.d.ts +3 -1
  160. package/date-time/types.d.ts +5 -1
  161. package/dialog/dialog-action-footer.d.ts +17 -2
  162. package/dialog/dialog.dom.d.ts +15 -2
  163. package/dialog/dialog.dom.js +3 -3
  164. package/dialog/dialog.parts.d.ts +1 -1
  165. package/dialog/dialog.parts.js +1 -1
  166. package/distribution-chart/_distribution-chart.scss +113 -77
  167. package/distribution-chart/area-chart.js +1 -1
  168. package/distribution-chart/bar-chart.d.ts +5 -2
  169. package/distribution-chart/bar-chart.js +7 -3
  170. package/distribution-chart/chart-frame.d.ts +2 -1
  171. package/distribution-chart/index.d.ts +1 -1
  172. package/distribution-chart/line-chart.js +1 -1
  173. package/dropdown/content.d.ts +2 -1
  174. package/dropdown/content.js +1 -142
  175. package/dropdown/control.d.ts +14 -0
  176. package/dropdown/control.js +1 -0
  177. package/dropdown/control.view.d.ts +6 -0
  178. package/dropdown/dropdown.types.d.ts +5 -1
  179. package/dropdown/editor-dropdown.style.scss +54 -16
  180. package/dropdown/index.d.ts +1 -1
  181. package/dropdown/index.js +3 -4
  182. package/dropdown/lookup-field.d.ts +5 -0
  183. package/dropdown/lookup-field.js +2 -1
  184. package/dropdown/popup.d.ts +2 -2
  185. package/dropdown/popup.js +1 -141
  186. package/duration/index.js +1 -1
  187. package/duration/style.scss +1 -1
  188. package/editor-actions.js +1 -1
  189. package/editor-layout/index.d.ts +4 -4
  190. package/editor-layout/index.js +39 -34
  191. package/editor-layout/style.scss +82 -18
  192. package/field-configurator.d.ts +39 -1
  193. package/field-configurator.js +4 -170
  194. package/field-expansion.d.ts +9 -0
  195. package/fieldset.d.ts +3 -0
  196. package/filter/filters/slider/_single-slider.scss +57 -38
  197. package/filter/filters/slider/_slider.scss +41 -33
  198. package/filter/filters/slider/control.js +2 -0
  199. package/filter/filters/slider/runtime.js +49 -22
  200. package/filter/filters/slider/single.js +1 -1
  201. package/filter-badge.js +1 -1
  202. package/filter-controls.d.ts +0 -1
  203. package/filter-controls.js +9 -10
  204. package/form-controls/field-context.d.ts +5 -0
  205. package/form-controls/index.d.ts +10 -2
  206. package/form-controls/index.js +4 -9
  207. package/form-controls/presentation.d.ts +1 -1
  208. package/form-controls/presentation.js +53 -45
  209. package/formatting/index.d.ts +1 -1
  210. package/formatting/index.js +40 -35
  211. package/formatting/styles.scss +14 -57
  212. package/framework.js +237 -226
  213. package/history-controls.d.ts +14 -0
  214. package/history-controls.js +27 -0
  215. package/icon-toolbar.d.ts +62 -0
  216. package/icon-toolbar.js +1 -0
  217. package/icons/icon.d.ts +1 -1
  218. package/legend.d.ts +1 -1
  219. package/masked-input/index.js +1 -1
  220. package/native-control.d.ts +6 -5
  221. package/native-control.js +3 -26
  222. package/native-controls.d.ts +54 -2
  223. package/native-styles.css +1 -1
  224. package/native-styles.scss +6 -2
  225. package/native.d.ts +3 -3
  226. package/native.js +41 -37
  227. package/number-input/index.d.ts +1 -1
  228. package/number-input/index.js +1 -1
  229. package/package.json +88 -14
  230. package/pagination.d.ts +3 -0
  231. package/pagination.js +50 -40
  232. package/pdf-viewer/header.d.ts +1 -1
  233. package/pdf-viewer/index.d.ts +2 -2
  234. package/pdf-viewer/index.js +1 -1
  235. package/pdf-viewer/search-bar.d.ts +1 -1
  236. package/pdf-viewer/status.d.ts +1 -1
  237. package/pdf-viewer/style.scss +205 -45
  238. package/pickers.d.ts +5 -1
  239. package/preact-mount.js +1 -1
  240. package/preact.d.ts +15 -10
  241. package/preact.js +109 -64
  242. package/progress/_bar.scss +9 -3
  243. package/progress/_circular.scss +2 -1
  244. package/rating-choice.js +1 -1
  245. package/react-adapter.d.ts +4 -2
  246. package/react-control.d.ts +1 -0
  247. package/react.d.ts +20 -11
  248. package/react.js +72 -88
  249. package/reorder-list.d.ts +1 -1
  250. package/reorder-list.js +1 -1
  251. package/reorder-list.scss +59 -17
  252. package/resource-picker/resource-picker-popup.js +1 -1
  253. package/resource-picker/resource-picker.js +73 -71
  254. package/resource-picker/resource-picker.scss +66 -35
  255. package/rich-text/engine.d.ts +17 -19
  256. package/rich-text/format-html.d.ts +2 -0
  257. package/rich-text/index.d.ts +11 -7
  258. package/rich-text/index.js +1 -1
  259. package/rich-text/model.d.ts +6 -3
  260. package/rich-text/render-model.d.ts +4 -5
  261. package/rich-text/style.scss +295 -55
  262. package/rich-text/syntax.d.ts +5 -2
  263. package/rich-text/toolbar.d.ts +6 -6
  264. package/rich-text/translations.d.ts +5 -15
  265. package/search-input/index.js +1 -1
  266. package/search-input/native.d.ts +21 -2
  267. package/select.d.ts +22 -0
  268. package/select.js +1 -0
  269. package/selection-list.d.ts +1 -0
  270. package/selection-list.js +3 -1
  271. package/status-feedback/exit-snapshot.js +1 -1
  272. package/status-feedback/index.js +2 -2
  273. package/status-feedback/popover.js +9 -9
  274. package/status-feedback/render.js +3 -44
  275. package/status-feedback/status-feedback.scss +130 -34
  276. package/status-feedback/types.d.ts +4 -0
  277. package/status-feedback/use-auto-dismiss.d.ts +3 -0
  278. package/styles/_activity-message.scss +24 -7
  279. package/styles/_alert.scss +78 -17
  280. package/styles/_cell-editor-frame.scss +11 -0
  281. package/styles/_compositions.scss +404 -82
  282. package/styles/_control.scss +42 -12
  283. package/styles/_disclosure.scss +15 -5
  284. package/styles/_editor-counter.scss +16 -6
  285. package/styles/_editor-slider.scss +8 -4
  286. package/styles/_field-configurator.scss +321 -23
  287. package/styles/_fields-grid.scss +49 -0
  288. package/styles/_filter-controls.scss +10 -2
  289. package/styles/_icon-action.scss +48 -15
  290. package/styles/_loading.scss +12 -3
  291. package/styles/_motion.scss +32 -9
  292. package/styles/_palette.scss +0 -24
  293. package/styles/_primitives.scss +376 -116
  294. package/styles/_theme.scss +130 -86
  295. package/styles/_thresholds.scss +28 -25
  296. package/styles/_time-grid.scss +8 -3
  297. package/styles/_tokens.scss +6 -1
  298. package/styles/configurator-actions.scss +241 -0
  299. package/styles/pagination.css +213 -0
  300. package/styles/{legacy-rating.css → rating.css} +8 -3
  301. package/styles.css +1 -1
  302. package/styles.scss +3 -5
  303. package/surfaces.d.ts +38 -2
  304. package/surfaces.js +37 -134
  305. package/svelte/UiComponent.server.js +1 -48
  306. package/svelte/UiComponent.svelte +44 -32
  307. package/svelte.d.ts +1 -1
  308. package/svelte.js +33 -68
  309. package/switch/index.js +15 -14
  310. package/time-grid.d.ts +0 -1
  311. package/time-grid.js +38 -37
  312. package/timeline-track/_style.scss +96 -24
  313. package/timeline-track/component.d.ts +5 -1
  314. package/timeline-track/index.js +71 -54
  315. package/timeline-track/model.d.ts +9 -0
  316. package/timeline-track/model.js +10 -1
  317. package/ui.css +1 -1
  318. package/view-switcher.d.ts +23 -0
  319. package/vue.d.ts +51 -35
  320. package/vue.js +149 -178
  321. package/_chunks/chart-frame-BC99KjGa.js +0 -127
  322. package/_chunks/choice-chips-Cs4D-3nH.js +0 -110
  323. package/_chunks/compat.module-DDB2pm9O.js +0 -229
  324. package/_chunks/control-tooltip-ztgmsG7H.js +0 -100
  325. package/_chunks/dialog.parts-DBqo3Qwb.js +0 -134
  326. package/_chunks/dropdown-voWqmwAe.js +0 -357
  327. package/_chunks/editor-popup-D3JdS8l3.js +0 -81
  328. package/_chunks/mount-DZe_6VtR.js +0 -90
  329. package/_chunks/request-trail-IdNiFvKH.js +0 -347
  330. package/_chunks/rich-text-BzI1DyfF.js +0 -477
  331. package/avatar/index.view.d.ts +0 -25
  332. package/color-palette/native.view.d.ts +0 -15
  333. package/control-presentation.view.d.ts +0 -8
  334. package/dialog/dialog-action-footer.view.d.ts +0 -20
  335. package/dialog/dialog.dom.view.d.ts +0 -15
  336. package/form-controls/index.view.d.ts +0 -12
  337. package/formatting/control-tooltip.d.ts +0 -27
  338. package/native-controls.view.d.ts +0 -54
  339. package/react-native-select.d.ts +0 -6
  340. package/search-input/native.view.d.ts +0 -21
  341. package/styles/legacy-pagination.css +0 -112
  342. package/surfaces.view.d.ts +0 -63
  343. package/vue-native-select.d.ts +0 -9
@@ -1,6 +1,6 @@
1
1
  import { a as e } from "../_chunks/hooks.module-CG3gN83z.js";
2
2
  import { t } from "../_chunks/jsxRuntime.module-F6UFnpT-.js";
3
- import { i as n, n as r, r as i, t as a } from "../_chunks/chart-frame-BC99KjGa.js";
3
+ import { i as n, n as r, r as i, t as a } from "../_chunks/chart-frame-hcOlnQ1K.js";
4
4
  //#region src/distribution-chart/area-chart.tsx
5
5
  function o(o) {
6
6
  let s = `rv-area-${e().replace(/[^a-zA-Z0-9_-]/g, "")}`, { points: c } = i(o.data), l = o.data.some((e) => e.selected !== void 0), u = c.slice(1).map((e, t) => {
@@ -1,5 +1,8 @@
1
1
  import { h } from '../_vendor/preact/src/index';
2
- import { StandaloneChartProps } from './types';
3
- export type BarChartProps = StandaloneChartProps;
2
+ import { DistributionChartDatum, StandaloneChartProps } from './types';
3
+ export interface BarChartProps extends StandaloneChartProps {
4
+ /** CSS color or per-bar rule. Return undefined to retain the theme color. */
5
+ readonly barColor?: string | ((datum: DistributionChartDatum, index: number) => string | undefined);
6
+ }
4
7
  /** Compact bar chart, independent of sliders, filters and grid instances. */
5
8
  export declare function BarChart(props: BarChartProps): h.JSX.Element;
@@ -1,14 +1,18 @@
1
1
  import { t as e } from "../_chunks/jsxRuntime.module-F6UFnpT-.js";
2
- import { r as t, t as n } from "../_chunks/chart-frame-BC99KjGa.js";
2
+ import { r as t, t as n } from "../_chunks/chart-frame-hcOlnQ1K.js";
3
3
  //#region src/distribution-chart/bar-chart.tsx
4
4
  function r(r) {
5
- let { values: i, max: a } = t(r.data);
5
+ let { values: i, max: a } = t(r.data), o = r.data.map((e, t) => typeof r.barColor == "function" ? r.barColor(e, t) : r.barColor);
6
6
  return /* @__PURE__ */ e(n, {
7
7
  ...r,
8
+ datumColors: o,
8
9
  variant: "bar",
9
10
  renderDatum: (t, n) => /* @__PURE__ */ e("span", {
10
11
  class: "rv-distribution-chart__bar",
11
- style: { height: `${Math.max(3, i[n] / a * 100)}%` },
12
+ style: {
13
+ backgroundColor: o[n],
14
+ height: `${Math.max(3, i[n] / a * 100)}%`
15
+ },
12
16
  "aria-hidden": "true"
13
17
  })
14
18
  });
@@ -5,9 +5,10 @@ export interface ChartPoint {
5
5
  readonly y: number;
6
6
  }
7
7
  /** Shared accessibility, focus and tooltip lifecycle for the chart primitives. */
8
- export declare function ChartFrame({ data, ariaLabel, variant, height, className, showGrid, showLabels, showValues, legend, formatValue, tooltip, tooltipIndicator, renderTooltip, positions, renderDatum, children }: StandaloneChartProps & {
8
+ export declare function ChartFrame({ data, ariaLabel, variant, height, className, showGrid, showLabels, showValues, legend, formatValue, tooltip, tooltipIndicator, renderTooltip, positions, datumColors, renderDatum, children, }: StandaloneChartProps & {
9
9
  variant: DistributionChartType;
10
10
  positions?: readonly ChartPoint[];
11
+ datumColors?: readonly (string | undefined)[];
11
12
  renderDatum: (datum: DistributionChartDatum, index: number) => ComponentChildren;
12
13
  children?: ComponentChildren;
13
14
  }): h.JSX.Element;
@@ -4,5 +4,5 @@ export * from './types';
4
4
  export { BarChart, type BarChartProps } from './bar-chart';
5
5
  export { LineChart, type LineChartProps } from './line-chart';
6
6
  export { AreaChart, type AreaChartProps } from './area-chart';
7
- /** Compatibility composition; each presentation has its own standalone owner. */
7
+ /** Chart-type composition; each presentation has its own standalone owner. */
8
8
  export declare function DistributionChart({ type, ...props }: DistributionChartProps): h.JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "../_chunks/jsxRuntime.module-F6UFnpT-.js";
2
- import { i as t, n, r, t as i } from "../_chunks/chart-frame-BC99KjGa.js";
2
+ import { i as t, n, r, t as i } from "../_chunks/chart-frame-hcOlnQ1K.js";
3
3
  //#region src/distribution-chart/line-chart.tsx
4
4
  function a(a) {
5
5
  let { points: o } = r(a.data);
@@ -16,7 +16,7 @@ type DropdownContentProps<T = any> = {
16
16
  theme?: string | null;
17
17
  optionIdPrefix: string;
18
18
  };
19
- export declare function DropdownPopupContent<T = any>({ options, selectedValues, remote, value, onChange, config, multiSelect, search, searchPlaceholder, listboxId, searchId, renderOption, renderNoResults, onClose, theme, }: {
19
+ export declare function DropdownPopupContent<T = any>({ options, selectedValues, remote, value, onChange, config, multiSelect, search, searchPlaceholder, listboxId, searchId, renderOption, renderNoResults, onClose, onTabNavigation, theme, }: {
20
20
  options: DropdownOption<T>[];
21
21
  selectedValues?: DropdownOption<T>[];
22
22
  remote?: RemoteDropdownState<T> & {
@@ -36,6 +36,7 @@ export declare function DropdownPopupContent<T = any>({ options, selectedValues,
36
36
  renderOption?: (h: any, option: DropdownOption<T>, isSelected: boolean) => ComponentChildren;
37
37
  renderNoResults?: (h: any) => ComponentChildren;
38
38
  onClose: (focusNext?: boolean) => void;
39
+ onTabNavigation?: () => void;
39
40
  theme?: string | null;
40
41
  }): h.JSX.Element;
41
42
  export declare function DropdownContent<T = any>({ options, filteredOptions, multiSelect, focusedIndex, selectedOptions, onKeyDown, onSelect, onFocusChange, renderOption, renderNoResults, dropdownListRef, theme, optionIdPrefix, }: DropdownContentProps<T>): h.JSX.Element;
@@ -1,142 +1 @@
1
- import { c as e, i as t } from "../_chunks/preact.module-BBM36DnO.js";
2
- import { c as n, o as r, t as i } from "../_chunks/hooks.module-CG3gN83z.js";
3
- import { t as a } from "../_chunks/jsxRuntime.module-F6UFnpT-.js";
4
- import "../_chunks/compat.module-DDB2pm9O.js";
5
- import { ButtonControl as o } from "../native-control.js";
6
- import { useDropdownService as s } from "./dropdown.service.js";
7
- //#region src/dropdown/content.tsx
8
- function c({ options: e, selectedValues: t, remote: r, value: c, onChange: u, config: d, multiSelect: f, search: p, searchPlaceholder: m, listboxId: h, searchId: g, renderOption: _, renderNoResults: v, onClose: y, theme: b }) {
9
- let x = i(null), S = i(null), C = i(null), { searchValue: w, focusedIndex: T, selectedOptions: E, filteredOptions: D, handleSelect: O, handleKeyDown: k, handleSearchChange: A, setFocusedIndex: j } = s(e, c, u, d, y, r && {
10
- selected: t ?? [],
11
- search: r.search
12
- }), M = T >= 0 && T < D.length && !D[T].disabled ? `${h}-option-${T}` : void 0;
13
- return n(() => {
14
- if (!d.autoFocus) return;
15
- let e = () => {
16
- p && x.current ? x.current.focus({ preventScroll: !0 }) : S.current?.focus({ preventScroll: !0 });
17
- }, t = S.current?.ownerDocument.defaultView ?? (typeof window < "u" ? window : void 0);
18
- if (!t) return;
19
- e();
20
- let n = t.setTimeout(e, 0), r = t.requestAnimationFrame(e), i = t.setTimeout(e, 16);
21
- return () => {
22
- t.clearTimeout(n), t.cancelAnimationFrame(r), t.clearTimeout(i);
23
- };
24
- }, [d.autoFocus, p]), /* @__PURE__ */ a("div", {
25
- ref: S,
26
- className: "dropdown-listbox",
27
- "data-theme": b ?? "default",
28
- role: "listbox",
29
- id: h,
30
- "aria-multiselectable": f,
31
- "aria-activedescendant": M,
32
- tabIndex: -1,
33
- "aria-busy": r?.loading,
34
- onScrollCapture: (e) => {
35
- let t = e.target;
36
- r && t.scrollHeight - t.scrollTop - t.clientHeight < 48 && r.loadMore();
37
- },
38
- onKeyUp: (e) => e.stopPropagation(),
39
- onKeyDown: (e) => {
40
- e.stopPropagation(), e.key === "Escape" ? (e.preventDefault(), e.stopPropagation(), y(!1)) : e.key === "Tab" ? (e.preventDefault(), e.stopPropagation(), d.closeOnTab && y(!0)) : (e.key !== " " || e.target !== x.current) && k(e);
41
- },
42
- children: [
43
- p && /* @__PURE__ */ a("div", {
44
- className: "dropdown-search",
45
- children: /* @__PURE__ */ a("input", {
46
- ref: x,
47
- type: "text",
48
- id: g,
49
- className: `dropdown-search-input ${b ? `theme-${b}` : ""}`,
50
- placeholder: m,
51
- value: w,
52
- onChange: A,
53
- onInput: A,
54
- "aria-label": d.searchAriaLabel ?? "Search options"
55
- })
56
- }),
57
- r?.loading && /* @__PURE__ */ a("div", {
58
- role: "status",
59
- children: r.text.loading
60
- }),
61
- r?.error && /* @__PURE__ */ a("div", {
62
- role: "alert",
63
- children: [
64
- r.text.error,
65
- " ",
66
- /* @__PURE__ */ a(o, {
67
- onClick: r.retry,
68
- children: r.text.retry
69
- })
70
- ]
71
- }),
72
- /* @__PURE__ */ a(l, {
73
- options: e,
74
- filteredOptions: D,
75
- multiSelect: f,
76
- focusedIndex: T,
77
- selectedOptions: E,
78
- onKeyDown: k,
79
- onSelect: O,
80
- onFocusChange: j,
81
- renderOption: _,
82
- renderNoResults: r ? () => r.loading || r.error ? null : r.text.empty : v,
83
- dropdownListRef: C,
84
- theme: b,
85
- optionIdPrefix: h
86
- }),
87
- r?.hasMore && /* @__PURE__ */ a(o, {
88
- disabled: r.loading,
89
- onClick: r.loadMore,
90
- children: r.text.loadMore
91
- })
92
- ]
93
- });
94
- }
95
- function l({ options: n, filteredOptions: i, multiSelect: o, focusedIndex: s, selectedOptions: c, onKeyDown: l, onSelect: u, onFocusChange: d, renderOption: f, renderNoResults: p, dropdownListRef: m, theme: h, optionIdPrefix: g }) {
96
- let _ = r((e) => c.some((t) => JSON.stringify(t.value) === JSON.stringify(e.value)), [c]), v = r((t, n) => {
97
- let r = _(t), i = s === n;
98
- return /* @__PURE__ */ a("li", {
99
- id: `${g}-option-${n}`,
100
- role: "option",
101
- "aria-selected": r,
102
- "aria-disabled": t.disabled,
103
- tabIndex: -1,
104
- className: `dropdown-option ${r ? "selected" : ""} ${i ? "focused" : ""} ${t.disabled ? "disabled" : ""} ${h ? `theme-${h}` : ""}`,
105
- onClick: () => u(t),
106
- onMouseEnter: () => {
107
- t.disabled || d(n);
108
- },
109
- children: f ? f(e, t, r) : /* @__PURE__ */ a("div", {
110
- className: "option-content",
111
- children: [o && /* @__PURE__ */ a("input", {
112
- type: "checkbox",
113
- checked: r,
114
- readOnly: !0,
115
- disabled: t.disabled,
116
- tabIndex: -1,
117
- "aria-hidden": "true"
118
- }), /* @__PURE__ */ a("span", { children: t.label })]
119
- })
120
- }, `${t.label}-${n}`);
121
- }, [
122
- s,
123
- u,
124
- _,
125
- o,
126
- f,
127
- d,
128
- h
129
- ]);
130
- return /* @__PURE__ */ a(t, { children: /* @__PURE__ */ a("ul", {
131
- ref: m,
132
- className: "dropdown-options",
133
- role: "presentation",
134
- tabIndex: -1,
135
- children: i.length > 0 ? i.map(v) : /* @__PURE__ */ a("li", {
136
- className: "no-results",
137
- children: p ? p(e) : /* @__PURE__ */ a("span", { children: "No results found" })
138
- })
139
- }) });
140
- }
141
- //#endregion
142
- export { l as DropdownContent, c as DropdownPopupContent };
1
+ export { f as DropdownContent, p as DropdownPopupContent } from "../_chunks/native-control-B_fVA5bL.js";
@@ -0,0 +1,14 @@
1
+ import { DropdownOption, DropdownProps } from './dropdown.types';
2
+ /** Application-owned state for DOM consumers of the shared Dropdown. */
3
+ export interface DropdownControl<T = string> {
4
+ readonly element: HTMLDivElement;
5
+ value: T;
6
+ source: DropdownOption<T>[];
7
+ disabled: boolean;
8
+ onChange?: (value: T) => void;
9
+ update(props: Partial<DropdownProps<T>>): void;
10
+ destroy(): void;
11
+ }
12
+ export declare function createDropdownControl<T = string>(document: Document, initial: DropdownProps<T>): DropdownControl<T>;
13
+ /** Lifecycle boundary for Stencil/other VNode factories that cannot render Preact components. */
14
+ export declare function renderDropdownControl<T>(h: (tag: any, props: any, ...children: any[]) => T, props: DropdownProps): T;
@@ -0,0 +1 @@
1
+ export { t as createDropdownControl, n as renderDropdownControl } from "../_chunks/control-Dcrjsunl.js";
@@ -0,0 +1,6 @@
1
+ export declare function createDropdownHost(document: Document): {
2
+ element: HTMLDivElement;
3
+ mount: HTMLDivElement;
4
+ input: HTMLInputElement;
5
+ release: () => void;
6
+ };
@@ -1,5 +1,6 @@
1
+ import { JSX } from '../_vendor/preact/src/index';
1
2
  import { DropdownDataSource, DropdownRemoteText } from './remote';
2
- export type { DropdownDataSource, DropdownRemoteText, LookupId, LookupCursor } from './remote';
3
+ export type { DropdownDataSource, DropdownRemoteText, LookupId, LookupCursor, } from './remote';
3
4
  export type DropdownRenderable = any;
4
5
  export type DropdownVNode = any;
5
6
  export type DropdownStyle = string | Record<string, string | number | undefined>;
@@ -43,6 +44,8 @@ export type DropdownConfig<T = any> = {
43
44
  initialSearch?: string;
44
45
  /** Close the dropdown when Tab is pressed inside the open popup. */
45
46
  closeOnTab?: boolean;
47
+ /** Dismiss then let the browser Tab from the trigger (standalone fields). */
48
+ nativeTabNavigation?: boolean;
46
49
  portalTarget?: HTMLElement | null;
47
50
  topLayer?: boolean;
48
51
  ariaLabel?: string;
@@ -66,6 +69,7 @@ export interface DropdownEnvironment {
66
69
  }
67
70
  export type DropdownProps<T = any> = {
68
71
  environment?: DropdownEnvironment;
72
+ triggerAttributes?: JSX.HTMLAttributes<HTMLDivElement>;
69
73
  source: DropdownOption<T>[];
70
74
  /** Optional application-owned remote search and ID resolver. Values must be string/number IDs. */
71
75
  dataSource?: DropdownDataSource<T>;
@@ -1,6 +1,6 @@
1
1
  @use '../styles/motion';
2
2
  @use '../styles/palette';
3
-
3
+ @use '../styles/control';
4
4
 
5
5
  // Mixins
6
6
  @mixin focus-style {
@@ -15,11 +15,11 @@
15
15
 
16
16
  revo-grid,
17
17
  .rv-formula-bar,
18
+ .rv-native-controls,
18
19
  :root {
19
20
  --rv-dropdown-container-tag-background: #{palette.$gray-eeeeee};
20
21
  --rv-dropdown-placeholder-color: var(--rv-ui-text-muted);
21
22
 
22
-
23
23
  &[theme*='dark'] {
24
24
  --rv-dropdown-container-tag-background: #{palette.$gray-2b2b2b};
25
25
  --rv-dropdown-placeholder-color: var(--rv-ui-text-muted);
@@ -51,7 +51,8 @@ revo-grid,
51
51
  --rv-dropdown-arrow-right: 5px;
52
52
  --rv-dropdown-arrow-gap: 4px;
53
53
  --rv-dropdown-value-right-space: calc(
54
- var(--rv-dropdown-arrow-size) + var(--rv-dropdown-arrow-right) + var(--rv-dropdown-arrow-gap)
54
+ var(--rv-dropdown-arrow-size) + var(--rv-dropdown-arrow-right) +
55
+ var(--rv-dropdown-arrow-gap)
55
56
  );
56
57
 
57
58
  @include flex-center;
@@ -86,10 +87,11 @@ revo-grid,
86
87
  justify-content: center;
87
88
  margin: 0;
88
89
  position: absolute;
89
- right: var(--rv-dropdown-arrow-right);
90
+ inset-inline-end: var(--rv-dropdown-arrow-right);
90
91
  top: 50%;
91
92
  transform: translateY(-50%);
92
- transition: transform var(--rv-ui-motion-normal, 160ms) var(--rv-ui-motion-ease, ease-out);
93
+ transition: transform var(--rv-ui-motion-normal, 160ms)
94
+ var(--rv-ui-motion-ease, ease-out);
93
95
  z-index: 1;
94
96
 
95
97
  svg {
@@ -112,8 +114,8 @@ revo-grid,
112
114
  align-items: center;
113
115
  min-width: 0;
114
116
  overflow: hidden;
115
- padding-left: 5px;
116
- padding-right: var(--rv-dropdown-value-right-space);
117
+ padding-inline-start: 5px;
118
+ padding-inline-end: var(--rv-dropdown-value-right-space);
117
119
  }
118
120
 
119
121
  .selected-value {
@@ -125,8 +127,8 @@ revo-grid,
125
127
  max-width: 100%;
126
128
  min-width: 0;
127
129
  overflow: hidden;
128
- padding-left: 5px;
129
- padding-right: var(--rv-dropdown-value-right-space);
130
+ padding-inline-start: 5px;
131
+ padding-inline-end: var(--rv-dropdown-value-right-space);
130
132
  text-overflow: ellipsis;
131
133
  white-space: nowrap;
132
134
  width: 100%;
@@ -146,9 +148,13 @@ revo-grid,
146
148
  background-color: var(--rv-dropdown-container-tag-background);
147
149
  border-radius: 3px;
148
150
  padding: 2px 6px;
149
- padding-right: 0;
151
+ padding-inline-end: 0;
150
152
  font-size: 14px;
151
153
 
154
+ // Custom tag palettes also own the remove glyph's foreground.
155
+ > button.rv-remove-button {
156
+ color: inherit;
157
+ }
152
158
  }
153
159
 
154
160
  .placeholder {
@@ -158,7 +164,7 @@ revo-grid,
158
164
  max-width: 100%;
159
165
  min-width: 0;
160
166
  overflow: hidden;
161
- padding-right: var(--rv-dropdown-value-right-space);
167
+ padding-inline-end: var(--rv-dropdown-value-right-space);
162
168
  text-overflow: ellipsis;
163
169
  white-space: nowrap;
164
170
  width: 100%;
@@ -207,7 +213,8 @@ revo-grid,
207
213
  padding: 6px;
208
214
  flex-direction: column;
209
215
  transform-origin: top left;
210
- animation: revoDropdownMenuIn var(--rv-ui-motion-enter, 180ms) var(--rv-ui-motion-ease, ease-out);
216
+ animation: revoDropdownMenuIn var(--rv-ui-motion-enter, 180ms)
217
+ var(--rv-ui-motion-ease, ease-out);
211
218
 
212
219
  .dropdown-listbox {
213
220
  display: flex;
@@ -247,6 +254,7 @@ revo-grid,
247
254
  background-color: var(--rv-dropdown-menu-background);
248
255
 
249
256
  .dropdown-option {
257
+ box-sizing: border-box;
250
258
  display: flex;
251
259
  min-height: 38px;
252
260
  align-items: center;
@@ -255,12 +263,13 @@ revo-grid,
255
263
  font-size: 14px;
256
264
  font-weight: 400;
257
265
  list-style: none;
258
- padding: 0;
266
+ padding: 8px 10px;
259
267
  cursor: pointer;
260
268
  user-select: none;
261
269
  margin: 1px 0;
262
270
  transition:
263
- background-color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease-out),
271
+ background-color var(--rv-ui-motion-fast, 120ms)
272
+ var(--rv-ui-motion-ease, ease-out),
264
273
  color var(--rv-ui-motion-fast, 120ms) var(--rv-ui-motion-ease, ease-out);
265
274
 
266
275
  &[class*='theme-dark'] {
@@ -282,14 +291,13 @@ revo-grid,
282
291
  opacity: 0.5;
283
292
  cursor: not-allowed;
284
293
  }
285
-
286
294
  }
287
295
 
288
296
  .option-content {
289
297
  @include flex-center;
290
298
  gap: 8px;
291
299
  width: 100%;
292
- padding: 8px 10px;
300
+ min-width: 0;
293
301
  }
294
302
  .no-results {
295
303
  padding: 12px;
@@ -306,3 +314,33 @@ revo-grid,
306
314
  opacity: 1;
307
315
  }
308
316
  }
317
+
318
+ // Standalone controls share Dropdown behavior with grid editors and have form chrome.
319
+ .dropdown-container.rv-select {
320
+ height: auto;
321
+ min-width: 0;
322
+ .dropdown-trigger {
323
+ @include control.action-size;
324
+ padding-inline-end: 24px;
325
+ border: 1px solid var(--rv-ui-border);
326
+ border-radius: var(--rv-control-radius, 8px);
327
+ background: var(--rv-ui-surface-sunken);
328
+ color: var(--rv-ui-text);
329
+ &:focus-visible {
330
+ outline: 2px solid var(--rv-ui-accent);
331
+ outline-offset: 1px;
332
+ }
333
+ }
334
+ }
335
+
336
+ // Standalone controls own the padding once; grid editors retain their compact insets.
337
+ .dropdown-container:is(.rv-select, .rv-combobox, .rv-multi-select)
338
+ .dropdown-trigger {
339
+ --rv-dropdown-arrow-size: 9px;
340
+ --rv-dropdown-arrow-right: 12px;
341
+ padding-inline-end: 32px;
342
+ > .selected-value,
343
+ > .selected-values {
344
+ padding-inline: 0;
345
+ }
346
+ }
@@ -6,7 +6,7 @@ export type { DropdownPopupProps } from './popup';
6
6
  /**
7
7
  * Dropdown component
8
8
  */
9
- export declare function Dropdown<T = any>({ source: localSource, dataSource, dataContext, remoteText, value, onChange, placeholder, disabled, name, id, className, style, config, renderContent, renderOption, renderValue, renderPlaceholder, renderSelectedValue, renderNoResults, onClose, beforeOutsideClose, environment, }: DropdownProps<T>): any;
9
+ export declare function Dropdown<T = any>({ source: localSource, triggerAttributes, dataSource, dataContext, remoteText, value, onChange, placeholder, disabled, name, id, className, style, config, renderContent, renderOption, renderValue, renderPlaceholder, renderSelectedValue, renderNoResults, onClose, beforeOutsideClose, environment, }: DropdownProps<T>): any;
10
10
  /**
11
11
  * Define the dropdown component
12
12
  * @param el - The element to render the dropdown
package/dropdown/index.js CHANGED
@@ -1,4 +1,3 @@
1
- import { DropdownPopup as e } from "./popup.js";
2
- import { n as t, r as n, t as r } from "../_chunks/dropdown-voWqmwAe.js";
3
- import { DropdownPopupContent as i } from "./content.js";
4
- export { r as Dropdown, e as DropdownPopup, i as DropdownPopupContent, t as defineDropdown, n as destroyDropdown };
1
+ import { d as e, l as t, p as n, u as r } from "../_chunks/native-control-B_fVA5bL.js";
2
+ import { t as i } from "../_chunks/popup-C35Isk7p.js";
3
+ export { t as Dropdown, i as DropdownPopup, n as DropdownPopupContent, r as defineDropdown, e as destroyDropdown };
@@ -21,9 +21,14 @@ export interface LookupFieldOptions extends EditorCommitOptions {
21
21
  renderValue?: import('./dropdown.types').DropdownProps<LookupId>['renderValue'];
22
22
  }
23
23
  export declare function LookupField({ initial, options, context, apply, cancel, }: {
24
+ /** Initial selected record ID, multiple IDs, or null for an empty selection. */
24
25
  initial: LookupId | LookupId[] | null;
26
+ /** Remote data source, selection mode, validation, text and commit behavior. */
25
27
  options: LookupFieldOptions;
28
+ /** Application context forwarded to the remote data source as dataContext. */
26
29
  context: unknown;
30
+ /** Commits the selected record IDs. Update application state and close the editor. */
27
31
  apply: (value: LookupId | LookupId[] | null) => void;
32
+ /** Closes the editor without applying the current draft. */
28
33
  cancel: () => void;
29
34
  }): import("../_vendor/preact/src/index").JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import { i as e, t } from "../_chunks/hooks.module-CG3gN83z.js";
2
2
  import { t as n } from "../_chunks/jsxRuntime.module-F6UFnpT-.js";
3
- import { t as r } from "../_chunks/dropdown-voWqmwAe.js";
3
+ import { l as r } from "../_chunks/native-control-B_fVA5bL.js";
4
4
  import { n as i } from "../_chunks/editor-commit-Bq3wSgvr.js";
5
5
  import { EditorActions as a } from "../editor-actions.js";
6
6
  //#region src/dropdown/lookup-field.tsx
@@ -17,6 +17,7 @@ function o({ initial: o, options: s, context: c, apply: l, cancel: u }) {
17
17
  },
18
18
  children: [
19
19
  /* @__PURE__ */ n(r, {
20
+ className: "rv-select",
20
21
  source: s.source ?? [],
21
22
  dataSource: s.dataSource,
22
23
  dataContext: c,
@@ -1,4 +1,4 @@
1
- import { h, ComponentChildren, RefObject } from '../_vendor/preact/src/index';
1
+ import { ComponentChildren, RefObject } from '../_vendor/preact/src/index';
2
2
  export type DropdownPopupProps = {
3
3
  onPointerRelease?: (event: MouseEvent | TouchEvent) => void;
4
4
  triggerRef: RefObject<HTMLDivElement>;
@@ -24,4 +24,4 @@ export type DropdownPopupProps = {
24
24
  * @param theme - The theme of the dropdown
25
25
  * @param dropdownMenuId - The id of the dropdown menu
26
26
  */
27
- export declare function DropdownPopup({ onPointerRelease, triggerRef, children, portalTarget, theme, dropdownMenuId, popupClassName, closeOnClickOutside, onClose, align, matchTriggerWidth, maxHeight, observePopupResize, topLayer, }: DropdownPopupProps): h.JSX.Element;
27
+ export declare function DropdownPopup({ onPointerRelease, triggerRef, children, portalTarget, theme, dropdownMenuId, popupClassName, closeOnClickOutside, onClose, align, matchTriggerWidth, maxHeight, observePopupResize, topLayer, }: DropdownPopupProps): import('../_vendor/preact/src/index').VNode<any>;
package/dropdown/popup.js CHANGED
@@ -1,141 +1 @@
1
- import { c as e, i as t, r as n, t as r } from "../_chunks/hooks.module-CG3gN83z.js";
2
- import { t as i } from "../_chunks/jsxRuntime.module-F6UFnpT-.js";
3
- import { t as a } from "../_chunks/compat.module-DDB2pm9O.js";
4
- import { hideTopLayerPopup as o, showTopLayerPopup as s } from "../core/top-layer-popup.js";
5
- import { inheritUiMotion as c } from "../core/motion.js";
6
- //#region src/dropdown/popup.tsx
7
- var l = 5, u = 4;
8
- function d(e, t, n) {
9
- let r = e.ownerDocument.defaultView;
10
- if (!r || r.getComputedStyle(e).position === "fixed") return {
11
- top: t,
12
- left: n,
13
- scaleX: 1,
14
- scaleY: 1
15
- };
16
- let i = e.offsetParent, a = e.ownerDocument;
17
- if (!i || i === a.body || i === a.documentElement) return {
18
- top: t + r.scrollY,
19
- left: n + r.scrollX,
20
- scaleX: 1,
21
- scaleY: 1
22
- };
23
- let o = i.getBoundingClientRect(), s = i, c = s.offsetWidth > 0 ? o.width / s.offsetWidth : 1, l = s.offsetHeight > 0 ? o.height / s.offsetHeight : 1, u = Number.isFinite(c) && c > 0 ? c : 1, d = Number.isFinite(l) && l > 0 ? l : 1;
24
- return {
25
- top: (t - o.top) / d - s.clientTop + s.scrollTop,
26
- left: (n - o.left) / u - s.clientLeft + s.scrollLeft,
27
- scaleX: u,
28
- scaleY: d
29
- };
30
- }
31
- function f({ onPointerRelease: f, triggerRef: p, children: m, portalTarget: h, theme: g, dropdownMenuId: _, popupClassName: v, closeOnClickOutside: y = !1, onClose: b, align: x = "start", matchTriggerWidth: S = !1, maxHeight: C, observePopupResize: w = !0, topLayer: T = !1 }) {
32
- let E = r(null), [D, O] = t({
33
- top: 0,
34
- left: 0,
35
- display: "none"
36
- });
37
- n(() => {
38
- let e = p.current, t = E.current;
39
- if (e && t) return c(e, t);
40
- }, [h, p]), e(() => {
41
- let e = p.current;
42
- if (!e) return;
43
- let t = e.ownerDocument.defaultView ?? window, n = () => {
44
- let t = E.current;
45
- if (!t) return;
46
- let n = e.getBoundingClientRect(), r = d(t, n.bottom + u, n.left);
47
- O({
48
- top: r.top,
49
- left: r.left,
50
- display: "flex",
51
- ...S ? { width: n.width / r.scaleX } : {}
52
- });
53
- }, r = () => {
54
- let n = E.current;
55
- if (!n) return;
56
- let r = e.getBoundingClientRect(), i = n.style.maxHeight;
57
- n.style.maxHeight = "";
58
- let a = n.getBoundingClientRect(), o = d(n, 0, 0), s = Math.max(a.height, n.offsetHeight * o.scaleY, n.scrollHeight * o.scaleY);
59
- n.style.maxHeight = i;
60
- let c = Math.max(a.width, n.offsetWidth * o.scaleX), f = Math.min(s, typeof C == "number" ? Math.max(0, C * o.scaleY) : Infinity), p = t.innerHeight, m = t.innerWidth, h = Math.max(0, r.top - u - l), g = Math.max(0, p - r.bottom - u - l), _ = f > g && h > g, v = Math.min(f, _ ? h : g), y = _ ? r.top - u - v : r.bottom + u, b = x === "end" ? r.right - c : r.left;
61
- y = Math.max(l, Math.min(y, p - l - v)), b = Math.max(l, Math.min(b, m - c - l));
62
- let w = d(n, y, b);
63
- O({
64
- top: w.top,
65
- left: w.left,
66
- display: "flex",
67
- maxHeight: v / w.scaleY,
68
- ...S ? { width: r.width / w.scaleX } : {}
69
- });
70
- };
71
- n();
72
- let i = t.setTimeout(r, 0);
73
- t.addEventListener("resize", r), t.addEventListener("scroll", r, !0);
74
- let a = t.ResizeObserver, o = a ? new a(r) : void 0;
75
- o?.observe(e);
76
- let s = e.closest(".rv-dialog__surface, dialog");
77
- return s && o?.observe(s), w && E.current && o?.observe(E.current), () => {
78
- t.clearTimeout(i), t.removeEventListener("resize", r), t.removeEventListener("scroll", r, !0), o?.disconnect();
79
- };
80
- }, [
81
- x,
82
- S,
83
- C,
84
- w,
85
- h,
86
- p
87
- ]), n(() => {
88
- let e = E.current;
89
- if (!T || !e) return;
90
- let t = s(e);
91
- return () => {
92
- o(e, t);
93
- };
94
- }, [h, T]), n(() => {
95
- if (!y || !b) return;
96
- let e = h?.ownerDocument ?? E.current?.ownerDocument ?? p.current?.ownerDocument ?? (typeof document < "u" ? document : void 0);
97
- if (!e) return;
98
- let t = (e) => {
99
- let t = e.target;
100
- t && (E.current?.contains(t) || p.current?.contains(t) || b());
101
- };
102
- e.addEventListener("mousedown", t);
103
- let n = (t) => {
104
- if (t.key !== "Escape") return;
105
- let n = e.activeElement;
106
- n && (E.current?.contains(n) || p.current?.contains(n)) && (t.preventDefault(), t.stopPropagation(), b(), p.current?.querySelector("button, input, select")?.focus());
107
- };
108
- return e.addEventListener("keydown", n), () => {
109
- e.removeEventListener("mousedown", t), e.removeEventListener("keydown", n);
110
- };
111
- }, [
112
- y,
113
- b,
114
- h,
115
- p
116
- ]);
117
- let k = /* @__PURE__ */ i("div", {
118
- ref: E,
119
- id: _,
120
- className: `revo-dropdown-menu ${v || ""}`,
121
- "data-theme": g ?? "default",
122
- onMouseUp: f,
123
- onTouchEnd: f,
124
- style: {
125
- top: `${D.top}px`,
126
- left: `${D.left}px`,
127
- ...T ? {
128
- right: "auto",
129
- bottom: "auto",
130
- margin: "0"
131
- } : {},
132
- display: D.display,
133
- maxHeight: D.maxHeight === void 0 ? void 0 : `${D.maxHeight}px`,
134
- width: D.width === void 0 ? void 0 : `${D.width}px`
135
- },
136
- children: m
137
- });
138
- return h ? a(k, h) : k;
139
- }
140
- //#endregion
141
- export { f as DropdownPopup };
1
+ export { t as DropdownPopup } from "../_chunks/popup-C35Isk7p.js";
package/duration/index.js CHANGED
@@ -1 +1 @@
1
- export { t as DurationDraft, n as DurationField } from "../_chunks/duration-87U2EoMS.js";
1
+ export { t as DurationDraft, n as DurationField } from "../_chunks/duration-Bf2OS1V5.js";