@deepfuture/dui-components 0.0.20 → 1.0.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 (333) hide show
  1. package/README.md +56 -65
  2. package/_install.js +11 -0
  3. package/accordion/accordion-item.d.ts +3 -20
  4. package/accordion/accordion-item.js +93 -292
  5. package/accordion/accordion.d.ts +3 -18
  6. package/accordion/accordion.js +9 -247
  7. package/accordion/index.d.ts +6 -6
  8. package/accordion/index.js +5 -5
  9. package/alert-dialog/alert-dialog-close.d.ts +3 -14
  10. package/alert-dialog/alert-dialog-close.js +4 -34
  11. package/alert-dialog/alert-dialog-popup.d.ts +3 -32
  12. package/alert-dialog/alert-dialog-popup.js +68 -317
  13. package/alert-dialog/alert-dialog-trigger.d.ts +3 -14
  14. package/alert-dialog/alert-dialog-trigger.js +4 -51
  15. package/alert-dialog/alert-dialog.d.ts +3 -30
  16. package/alert-dialog/alert-dialog.js +8 -158
  17. package/alert-dialog/index.d.ts +11 -11
  18. package/alert-dialog/index.js +9 -9
  19. package/all.d.ts +159 -123
  20. package/all.js +134 -231
  21. package/avatar/avatar.d.ts +3 -39
  22. package/avatar/avatar.js +18 -238
  23. package/avatar/index.d.ts +4 -4
  24. package/avatar/index.js +3 -3
  25. package/badge/badge.d.ts +3 -10
  26. package/badge/badge.js +88 -22
  27. package/badge/index.d.ts +2 -3
  28. package/badge/index.js +2 -3
  29. package/breadcrumb/breadcrumb-ellipsis.d.ts +3 -12
  30. package/breadcrumb/breadcrumb-ellipsis.js +8 -34
  31. package/breadcrumb/breadcrumb-item.d.ts +3 -11
  32. package/breadcrumb/breadcrumb-item.js +7 -26
  33. package/breadcrumb/breadcrumb-link.d.ts +3 -12
  34. package/breadcrumb/breadcrumb-link.js +16 -26
  35. package/breadcrumb/breadcrumb-page.d.ts +3 -11
  36. package/breadcrumb/breadcrumb-page.js +8 -31
  37. package/breadcrumb/breadcrumb-separator.d.ts +3 -12
  38. package/breadcrumb/breadcrumb-separator.js +8 -31
  39. package/breadcrumb/breadcrumb.d.ts +3 -12
  40. package/breadcrumb/breadcrumb.js +10 -33
  41. package/breadcrumb/index.d.ts +12 -13
  42. package/breadcrumb/index.js +12 -13
  43. package/button/button.d.ts +3 -32
  44. package/button/button.js +221 -165
  45. package/button/index.d.ts +3 -3
  46. package/button/index.js +3 -3
  47. package/calendar/calendar.d.ts +3 -31
  48. package/calendar/calendar.js +71 -481
  49. package/calendar/index.d.ts +3 -3
  50. package/calendar/index.js +3 -3
  51. package/card/card.d.ts +3 -27
  52. package/card/card.js +80 -163
  53. package/card/index.d.ts +2 -3
  54. package/card/index.js +2 -3
  55. package/card-grid/card-grid.d.ts +3 -15
  56. package/card-grid/card-grid.js +8 -106
  57. package/card-grid/index.d.ts +2 -3
  58. package/card-grid/index.js +2 -3
  59. package/checkbox/checkbox-group.d.ts +3 -34
  60. package/checkbox/checkbox-group.js +11 -188
  61. package/checkbox/checkbox.d.ts +3 -47
  62. package/checkbox/checkbox.js +43 -341
  63. package/checkbox/index.d.ts +6 -6
  64. package/checkbox/index.js +5 -5
  65. package/collapsible/collapsible.d.ts +3 -20
  66. package/collapsible/collapsible.js +83 -277
  67. package/collapsible/index.d.ts +3 -3
  68. package/collapsible/index.js +3 -3
  69. package/combobox/combobox.d.ts +3 -47
  70. package/combobox/combobox.js +136 -538
  71. package/combobox/index.d.ts +4 -4
  72. package/combobox/index.js +3 -3
  73. package/command/command-empty.d.ts +3 -8
  74. package/command/command-empty.js +10 -88
  75. package/command/command-group.d.ts +3 -13
  76. package/command/command-group.js +15 -114
  77. package/command/command-input.d.ts +3 -11
  78. package/command/command-input.js +20 -136
  79. package/command/command-item.d.ts +3 -18
  80. package/command/command-item.js +24 -212
  81. package/command/command-list.d.ts +3 -7
  82. package/command/command-list.js +11 -79
  83. package/command/command-separator.d.ts +3 -5
  84. package/command/command-separator.js +10 -11
  85. package/command/command-shortcut.d.ts +3 -5
  86. package/command/command-shortcut.js +9 -12
  87. package/command/command.d.ts +3 -23
  88. package/command/command.js +10 -339
  89. package/command/index.d.ts +17 -19
  90. package/command/index.js +16 -18
  91. package/data-table/data-table.d.ts +3 -57
  92. package/data-table/data-table.js +86 -449
  93. package/data-table/index.d.ts +3 -4
  94. package/data-table/index.js +2 -3
  95. package/dialog/dialog-close.d.ts +3 -14
  96. package/dialog/dialog-close.js +4 -34
  97. package/dialog/dialog-popup.d.ts +3 -34
  98. package/dialog/dialog-popup.js +70 -336
  99. package/dialog/dialog-trigger.d.ts +3 -14
  100. package/dialog/dialog-trigger.js +4 -51
  101. package/dialog/dialog.d.ts +3 -30
  102. package/dialog/dialog.js +8 -158
  103. package/dialog/index.d.ts +11 -11
  104. package/dialog/index.js +9 -9
  105. package/dropzone/dropzone.d.ts +3 -72
  106. package/dropzone/dropzone.js +29 -407
  107. package/dropzone/index.d.ts +4 -4
  108. package/dropzone/index.js +3 -3
  109. package/field/field.d.ts +3 -30
  110. package/field/field.js +34 -353
  111. package/field/index.d.ts +1 -0
  112. package/field/index.js +1 -0
  113. package/fieldset/fieldset.d.ts +3 -18
  114. package/fieldset/fieldset.js +21 -110
  115. package/fieldset/index.d.ts +1 -0
  116. package/fieldset/index.js +1 -0
  117. package/icon/icon.d.ts +3 -15
  118. package/icon/icon.js +4 -33
  119. package/icon/index.d.ts +2 -3
  120. package/icon/index.js +2 -3
  121. package/input/index.d.ts +3 -3
  122. package/input/index.js +3 -3
  123. package/input/input.d.ts +3 -49
  124. package/input/input.js +57 -238
  125. package/menu/index.d.ts +4 -5
  126. package/menu/index.js +4 -5
  127. package/menu/menu-item.d.ts +3 -13
  128. package/menu/menu-item.js +41 -91
  129. package/menu/menu.d.ts +3 -15
  130. package/menu/menu.js +27 -277
  131. package/menubar/index.d.ts +3 -4
  132. package/menubar/index.js +2 -3
  133. package/menubar/menubar.d.ts +3 -19
  134. package/menubar/menubar.js +12 -183
  135. package/number-field/index.d.ts +3 -3
  136. package/number-field/index.js +3 -3
  137. package/number-field/number-field.d.ts +3 -55
  138. package/number-field/number-field.js +205 -698
  139. package/package.json +126 -113
  140. package/popover/index.d.ts +11 -11
  141. package/popover/index.js +9 -9
  142. package/popover/popover-close.d.ts +3 -12
  143. package/popover/popover-close.js +4 -32
  144. package/popover/popover-popup.d.ts +3 -18
  145. package/popover/popover-popup.js +28 -205
  146. package/popover/popover-trigger.d.ts +3 -13
  147. package/popover/popover-trigger.js +4 -73
  148. package/popover/popover.d.ts +3 -29
  149. package/popover/popover.js +8 -207
  150. package/portal/index.d.ts +3 -4
  151. package/portal/index.js +2 -3
  152. package/portal/portal.d.ts +3 -27
  153. package/portal/portal.js +8 -157
  154. package/preview-card/index.d.ts +9 -9
  155. package/preview-card/index.js +7 -7
  156. package/preview-card/preview-card-popup.d.ts +3 -14
  157. package/preview-card/preview-card-popup.js +29 -193
  158. package/preview-card/preview-card-trigger.d.ts +3 -12
  159. package/preview-card/preview-card-trigger.js +4 -74
  160. package/preview-card/preview-card.d.ts +3 -33
  161. package/preview-card/preview-card.js +8 -239
  162. package/progress/index.d.ts +2 -3
  163. package/progress/index.js +2 -3
  164. package/progress/progress.d.ts +3 -17
  165. package/progress/progress.js +28 -130
  166. package/radio/index.d.ts +6 -6
  167. package/radio/index.js +5 -5
  168. package/radio/radio-group.d.ts +3 -37
  169. package/radio/radio-group.js +8 -200
  170. package/radio/radio.d.ts +3 -28
  171. package/radio/radio.js +38 -213
  172. package/scroll-area/index.d.ts +2 -3
  173. package/scroll-area/index.js +2 -3
  174. package/scroll-area/scroll-area.d.ts +3 -36
  175. package/scroll-area/scroll-area.js +25 -546
  176. package/select/index.d.ts +3 -4
  177. package/select/index.js +2 -3
  178. package/select/select.d.ts +3 -37
  179. package/select/select.js +115 -403
  180. package/separator/index.d.ts +2 -3
  181. package/separator/index.js +2 -3
  182. package/separator/separator.d.ts +3 -10
  183. package/separator/separator.js +23 -84
  184. package/sidebar/index.d.ts +29 -29
  185. package/sidebar/index.js +27 -32
  186. package/sidebar/sidebar-content.d.ts +3 -12
  187. package/sidebar/sidebar-content.js +7 -29
  188. package/sidebar/sidebar-footer.d.ts +3 -10
  189. package/sidebar/sidebar-footer.js +7 -20
  190. package/sidebar/sidebar-group-label.d.ts +3 -15
  191. package/sidebar/sidebar-group-label.js +17 -41
  192. package/sidebar/sidebar-group.d.ts +3 -13
  193. package/sidebar/sidebar-group.js +7 -24
  194. package/sidebar/sidebar-header.d.ts +3 -10
  195. package/sidebar/sidebar-header.js +7 -16
  196. package/sidebar/sidebar-inset.d.ts +3 -13
  197. package/sidebar/sidebar-inset.js +7 -28
  198. package/sidebar/sidebar-menu-button.d.ts +3 -26
  199. package/sidebar/sidebar-menu-button.js +60 -217
  200. package/sidebar/sidebar-menu-item.d.ts +3 -10
  201. package/sidebar/sidebar-menu-item.js +7 -19
  202. package/sidebar/sidebar-menu.d.ts +3 -12
  203. package/sidebar/sidebar-menu.js +7 -25
  204. package/sidebar/sidebar-provider.d.ts +3 -34
  205. package/sidebar/sidebar-provider.js +22 -232
  206. package/sidebar/sidebar-separator.d.ts +3 -10
  207. package/sidebar/sidebar-separator.js +9 -19
  208. package/sidebar/sidebar-trigger.d.ts +3 -14
  209. package/sidebar/sidebar-trigger.js +10 -46
  210. package/sidebar/sidebar.d.ts +3 -19
  211. package/sidebar/sidebar.js +65 -262
  212. package/slider/index.d.ts +3 -3
  213. package/slider/index.js +3 -3
  214. package/slider/slider.d.ts +3 -45
  215. package/slider/slider.js +97 -382
  216. package/spinner/index.d.ts +2 -3
  217. package/spinner/index.js +2 -3
  218. package/spinner/spinner.d.ts +3 -11
  219. package/spinner/spinner.js +20 -163
  220. package/split-button/index.d.ts +3 -1
  221. package/split-button/index.js +3 -1
  222. package/split-button/split-button.d.ts +3 -31
  223. package/split-button/split-button.js +307 -384
  224. package/stepper/index.d.ts +3 -3
  225. package/stepper/index.js +3 -3
  226. package/stepper/stepper.d.ts +3 -41
  227. package/stepper/stepper.js +57 -381
  228. package/switch/index.d.ts +3 -3
  229. package/switch/index.js +3 -3
  230. package/switch/switch.d.ts +3 -30
  231. package/switch/switch.js +63 -228
  232. package/tabs/index.d.ts +12 -12
  233. package/tabs/index.js +11 -11
  234. package/tabs/tab.d.ts +3 -14
  235. package/tabs/tab.js +33 -131
  236. package/tabs/tabs-indicator.d.ts +3 -9
  237. package/tabs/tabs-indicator.js +17 -22
  238. package/tabs/tabs-list.d.ts +3 -15
  239. package/tabs/tabs-list.js +14 -113
  240. package/tabs/tabs-panel.d.ts +3 -16
  241. package/tabs/tabs-panel.js +32 -114
  242. package/tabs/tabs.d.ts +3 -22
  243. package/tabs/tabs.js +8 -170
  244. package/textarea/index.d.ts +4 -4
  245. package/textarea/index.js +3 -3
  246. package/textarea/textarea.d.ts +3 -36
  247. package/textarea/textarea.js +63 -220
  248. package/toggle/index.d.ts +6 -6
  249. package/toggle/index.js +5 -5
  250. package/toggle/toggle-group.d.ts +3 -27
  251. package/toggle/toggle-group.js +9 -224
  252. package/toggle/toggle.d.ts +3 -26
  253. package/toggle/toggle.js +94 -178
  254. package/tokens/properties.css +361 -0
  255. package/tokens/prose.css +250 -0
  256. package/tokens/prose.d.ts +2 -0
  257. package/tokens/prose.js +4 -0
  258. package/tokens/tokens-raw.d.ts +2 -0
  259. package/tokens/tokens-raw.js +2 -0
  260. package/tokens/tokens.css +409 -0
  261. package/tokens/tokens.d.ts +2 -0
  262. package/tokens/tokens.js +5 -0
  263. package/toolbar/index.d.ts +2 -3
  264. package/toolbar/index.js +2 -3
  265. package/toolbar/toolbar.d.ts +3 -11
  266. package/toolbar/toolbar.js +25 -116
  267. package/tooltip/index.d.ts +9 -9
  268. package/tooltip/index.js +7 -7
  269. package/tooltip/tooltip-popup.d.ts +3 -14
  270. package/tooltip/tooltip-popup.js +32 -185
  271. package/tooltip/tooltip-trigger.d.ts +3 -14
  272. package/tooltip/tooltip-trigger.js +5 -148
  273. package/tooltip/tooltip.d.ts +3 -35
  274. package/tooltip/tooltip.js +8 -253
  275. package/trunc/index.d.ts +2 -3
  276. package/trunc/index.js +2 -3
  277. package/trunc/trunc.d.ts +3 -17
  278. package/trunc/trunc.js +10 -108
  279. package/_deprecated/center/center.d.ts +0 -14
  280. package/_deprecated/center/center.js +0 -37
  281. package/_deprecated/center/index.d.ts +0 -3
  282. package/_deprecated/center/index.js +0 -3
  283. package/_deprecated/center/register.js +0 -4
  284. package/_deprecated/hstack/hstack.d.ts +0 -25
  285. package/_deprecated/hstack/hstack.js +0 -187
  286. package/_deprecated/hstack/index.d.ts +0 -4
  287. package/_deprecated/hstack/index.js +0 -3
  288. package/_deprecated/hstack/register.d.ts +0 -1
  289. package/_deprecated/hstack/register.js +0 -4
  290. package/_deprecated/page-inset/index.d.ts +0 -3
  291. package/_deprecated/page-inset/index.js +0 -3
  292. package/_deprecated/page-inset/page-inset.d.ts +0 -28
  293. package/_deprecated/page-inset/page-inset.js +0 -151
  294. package/_deprecated/page-inset/register.d.ts +0 -1
  295. package/_deprecated/page-inset/register.js +0 -4
  296. package/_deprecated/vstack/index.d.ts +0 -3
  297. package/_deprecated/vstack/index.js +0 -3
  298. package/_deprecated/vstack/register.d.ts +0 -1
  299. package/_deprecated/vstack/register.js +0 -4
  300. package/_deprecated/vstack/vstack.d.ts +0 -17
  301. package/_deprecated/vstack/vstack.js +0 -125
  302. package/accordion/accordion-context.d.ts +0 -15
  303. package/accordion/accordion-context.js +0 -3
  304. package/alert-dialog/alert-dialog-context.d.ts +0 -13
  305. package/alert-dialog/alert-dialog-context.js +0 -3
  306. package/checkbox/checkbox-group-context.d.ts +0 -11
  307. package/checkbox/checkbox-group-context.js +0 -3
  308. package/command/command-context.d.ts +0 -30
  309. package/command/command-context.js +0 -3
  310. package/command/command-score.d.ts +0 -6
  311. package/command/command-score.js +0 -31
  312. package/dialog/dialog-context.d.ts +0 -13
  313. package/dialog/dialog-context.js +0 -3
  314. package/global.d.ts +0 -179
  315. package/menubar/menubar-context.d.ts +0 -9
  316. package/menubar/menubar-context.js +0 -2
  317. package/popover/popover-context.d.ts +0 -17
  318. package/popover/popover-context.js +0 -3
  319. package/preview-card/preview-card-context.d.ts +0 -16
  320. package/preview-card/preview-card-context.js +0 -3
  321. package/radio/radio-group-context.d.ts +0 -11
  322. package/radio/radio-group-context.js +0 -2
  323. package/sidebar/sidebar-context.d.ts +0 -15
  324. package/sidebar/sidebar-context.js +0 -3
  325. package/split-button/register.d.ts +0 -1
  326. package/split-button/register.js +0 -4
  327. package/tabs/tabs-context.d.ts +0 -8
  328. package/tabs/tabs-context.js +0 -2
  329. package/toggle/toggle-group-context.d.ts +0 -9
  330. package/toggle/toggle-group-context.js +0 -2
  331. package/tooltip/tooltip-context.d.ts +0 -17
  332. package/tooltip/tooltip-context.js +0 -3
  333. /package/{_deprecated/center/register.d.ts → _install.d.ts} +0 -0
@@ -1,559 +1,38 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/scroll-area */
2
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
- var _, done = false;
8
- for (var i = decorators.length - 1; i >= 0; i--) {
9
- var context = {};
10
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
- if (kind === "accessor") {
15
- if (result === void 0) continue;
16
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
- if (_ = accept(result.get)) descriptor.get = _;
18
- if (_ = accept(result.set)) descriptor.set = _;
19
- if (_ = accept(result.init)) initializers.unshift(_);
20
- }
21
- else if (_ = accept(result)) {
22
- if (kind === "field") initializers.unshift(_);
23
- else descriptor[key] = _;
24
- }
25
- }
26
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
- done = true;
28
- };
29
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
- var useValue = arguments.length > 2;
31
- for (var i = 0; i < initializers.length; i++) {
32
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
- }
34
- return useValue ? value : void 0;
35
- };
36
- var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
37
- if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
38
- return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
39
- };
40
- import { css, html, LitElement, nothing, } from "lit";
41
- import { property, state } from "lit/decorators.js";
42
- import { base } from "@deepfuture/dui-core/base";
1
+ import { css } from "lit";
2
+ import { DuiScrollAreaPrimitive } from "@deepfuture/dui-primitives/scroll-area";
3
+ import "../_install.js";
43
4
  const styles = css `
44
- :host {
45
- display: block;
46
- position: relative;
47
- overflow: hidden;
48
- height: 100%;
49
- max-height: var(--scroll-area-max-height, none);
50
- }
51
-
52
- .ScrollArea {
53
- position: relative;
54
- width: 100%;
55
- height: 100%;
56
- max-height: inherit;
57
- }
58
-
59
- .Viewport {
60
- width: 100%;
61
- height: 100%;
62
- max-height: inherit;
63
- overflow: auto;
64
- overscroll-behavior: auto;
65
- scrollbar-width: none;
66
-
67
- &::-webkit-scrollbar {
68
- display: none;
69
- }
70
- }
71
-
72
- .ScrollFade {
73
- position: absolute;
74
- top: 0;
75
- left: 0;
76
- right: 0;
77
- height: 0;
78
- pointer-events: none;
79
- z-index: 1;
80
- }
81
-
82
5
  .Scrollbar {
83
- position: absolute;
84
- display: flex;
85
- justify-content: center;
86
- opacity: 0;
87
- pointer-events: none;
88
-
89
- &[data-hovering],
90
- &[data-scrolling] {
91
- opacity: 1;
92
- pointer-events: auto;
93
- }
94
-
95
- &[data-scrolling] {
96
- transition-duration: 0ms;
97
- }
98
- }
99
-
100
- .Scrollbar::before {
101
- content: "";
102
- position: absolute;
6
+ border-radius: var(--radius-sm);
7
+ transition: opacity var(--duration-fast);
103
8
  }
104
9
 
105
10
  .Scrollbar[data-orientation="vertical"] {
106
- top: 0;
107
- right: 0;
108
- bottom: 0;
109
-
110
- &::before {
111
- width: 1.25rem;
112
- height: 100%;
113
- left: 50%;
114
- transform: translateX(-50%);
115
- }
11
+ width: var(--space-1);
12
+ margin: var(--space-px);
116
13
  }
117
14
 
118
15
  .Scrollbar[data-orientation="horizontal"] {
119
- left: 0;
120
- right: 0;
121
- bottom: 0;
122
-
123
- &::before {
124
- width: 100%;
125
- height: 1.25rem;
126
- bottom: -0.25rem;
127
- }
16
+ height: var(--space-1);
17
+ margin: var(--space-px);
128
18
  }
129
19
 
130
- .Thumb[data-orientation="vertical"] {
131
- width: 100%;
132
- min-height: 1.25rem;
133
- }
20
+ .Thumb {
21
+ border-radius: inherit;
22
+ background: var(--scroll-area-thumb-color, var(--text-2));
23
+ opacity: 0.4;
24
+ transition: opacity var(--duration-fast);
134
25
 
135
- .Thumb[data-orientation="horizontal"] {
136
- height: 100%;
137
- min-width: 1.25rem;
26
+ &:hover {
27
+ opacity: 0.7;
28
+ }
29
+
30
+ &:active {
31
+ opacity: 0.8;
32
+ }
138
33
  }
139
34
  `;
140
- /**
141
- * `<dui-scroll-area>` A scroll container with custom styled scrollbar.
142
- *
143
- * Hides the native scrollbar and renders a custom track + thumb with
144
- * auto-hide behavior. Supports vertical, horizontal, or both orientations.
145
- *
146
- * @slot - Default slot for scrollable content.
147
- *
148
- * @cssprop [--scroll-area-max-height] - Max-height constraint.
149
- * @cssprop [--scroll-area-thumb-color] - Scrollbar thumb color.
150
- * @cssprop [--scroll-fade-color] - Fade overlay color.
151
- */
152
- let DuiScrollArea = (() => {
153
- var _a;
154
- let _classSuper = LitElement;
155
- let _orientation_decorators;
156
- let _orientation_initializers = [];
157
- let _orientation_extraInitializers = [];
158
- let _fade_decorators;
159
- let _fade_initializers = [];
160
- let _fade_extraInitializers = [];
161
- let _maxHeight_decorators;
162
- let _maxHeight_initializers = [];
163
- let _maxHeight_extraInitializers = [];
164
- let _private_hasOverflowX_decorators;
165
- let _private_hasOverflowX_initializers = [];
166
- let _private_hasOverflowX_extraInitializers = [];
167
- let _private_hasOverflowX_descriptor;
168
- let _private_hasOverflowY_decorators;
169
- let _private_hasOverflowY_initializers = [];
170
- let _private_hasOverflowY_extraInitializers = [];
171
- let _private_hasOverflowY_descriptor;
172
- let _private_hovering_decorators;
173
- let _private_hovering_initializers = [];
174
- let _private_hovering_extraInitializers = [];
175
- let _private_hovering_descriptor;
176
- let _private_scrolling_decorators;
177
- let _private_scrolling_initializers = [];
178
- let _private_scrolling_extraInitializers = [];
179
- let _private_scrolling_descriptor;
180
- let _private_thumbHeightPercent_decorators;
181
- let _private_thumbHeightPercent_initializers = [];
182
- let _private_thumbHeightPercent_extraInitializers = [];
183
- let _private_thumbHeightPercent_descriptor;
184
- let _private_thumbWidthPercent_decorators;
185
- let _private_thumbWidthPercent_initializers = [];
186
- let _private_thumbWidthPercent_extraInitializers = [];
187
- let _private_thumbWidthPercent_descriptor;
188
- let _private_thumbTopPercent_decorators;
189
- let _private_thumbTopPercent_initializers = [];
190
- let _private_thumbTopPercent_extraInitializers = [];
191
- let _private_thumbTopPercent_descriptor;
192
- let _private_thumbLeftPercent_decorators;
193
- let _private_thumbLeftPercent_initializers = [];
194
- let _private_thumbLeftPercent_extraInitializers = [];
195
- let _private_thumbLeftPercent_descriptor;
196
- let _private_isAtTop_decorators;
197
- let _private_isAtTop_initializers = [];
198
- let _private_isAtTop_extraInitializers = [];
199
- let _private_isAtTop_descriptor;
200
- return class DuiScrollArea extends _classSuper {
201
- static {
202
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
203
- _orientation_decorators = [property({ reflect: true })];
204
- _fade_decorators = [property({ type: Boolean, reflect: true })];
205
- _maxHeight_decorators = [property({ attribute: "max-height" })];
206
- _private_hasOverflowX_decorators = [state()];
207
- _private_hasOverflowY_decorators = [state()];
208
- _private_hovering_decorators = [state()];
209
- _private_scrolling_decorators = [state()];
210
- _private_thumbHeightPercent_decorators = [state()];
211
- _private_thumbWidthPercent_decorators = [state()];
212
- _private_thumbTopPercent_decorators = [state()];
213
- _private_thumbLeftPercent_decorators = [state()];
214
- _private_isAtTop_decorators = [state()];
215
- __esDecorate(this, null, _orientation_decorators, { kind: "accessor", name: "orientation", static: false, private: false, access: { has: obj => "orientation" in obj, get: obj => obj.orientation, set: (obj, value) => { obj.orientation = value; } }, metadata: _metadata }, _orientation_initializers, _orientation_extraInitializers);
216
- __esDecorate(this, null, _fade_decorators, { kind: "accessor", name: "fade", static: false, private: false, access: { has: obj => "fade" in obj, get: obj => obj.fade, set: (obj, value) => { obj.fade = value; } }, metadata: _metadata }, _fade_initializers, _fade_extraInitializers);
217
- __esDecorate(this, null, _maxHeight_decorators, { kind: "accessor", name: "maxHeight", static: false, private: false, access: { has: obj => "maxHeight" in obj, get: obj => obj.maxHeight, set: (obj, value) => { obj.maxHeight = value; } }, metadata: _metadata }, _maxHeight_initializers, _maxHeight_extraInitializers);
218
- __esDecorate(this, _private_hasOverflowX_descriptor = { get: __setFunctionName(function () { return this.#hasOverflowX_accessor_storage; }, "#hasOverflowX", "get"), set: __setFunctionName(function (value) { this.#hasOverflowX_accessor_storage = value; }, "#hasOverflowX", "set") }, _private_hasOverflowX_decorators, { kind: "accessor", name: "#hasOverflowX", static: false, private: true, access: { has: obj => #hasOverflowX in obj, get: obj => obj.#hasOverflowX, set: (obj, value) => { obj.#hasOverflowX = value; } }, metadata: _metadata }, _private_hasOverflowX_initializers, _private_hasOverflowX_extraInitializers);
219
- __esDecorate(this, _private_hasOverflowY_descriptor = { get: __setFunctionName(function () { return this.#hasOverflowY_accessor_storage; }, "#hasOverflowY", "get"), set: __setFunctionName(function (value) { this.#hasOverflowY_accessor_storage = value; }, "#hasOverflowY", "set") }, _private_hasOverflowY_decorators, { kind: "accessor", name: "#hasOverflowY", static: false, private: true, access: { has: obj => #hasOverflowY in obj, get: obj => obj.#hasOverflowY, set: (obj, value) => { obj.#hasOverflowY = value; } }, metadata: _metadata }, _private_hasOverflowY_initializers, _private_hasOverflowY_extraInitializers);
220
- __esDecorate(this, _private_hovering_descriptor = { get: __setFunctionName(function () { return this.#hovering_accessor_storage; }, "#hovering", "get"), set: __setFunctionName(function (value) { this.#hovering_accessor_storage = value; }, "#hovering", "set") }, _private_hovering_decorators, { kind: "accessor", name: "#hovering", static: false, private: true, access: { has: obj => #hovering in obj, get: obj => obj.#hovering, set: (obj, value) => { obj.#hovering = value; } }, metadata: _metadata }, _private_hovering_initializers, _private_hovering_extraInitializers);
221
- __esDecorate(this, _private_scrolling_descriptor = { get: __setFunctionName(function () { return this.#scrolling_accessor_storage; }, "#scrolling", "get"), set: __setFunctionName(function (value) { this.#scrolling_accessor_storage = value; }, "#scrolling", "set") }, _private_scrolling_decorators, { kind: "accessor", name: "#scrolling", static: false, private: true, access: { has: obj => #scrolling in obj, get: obj => obj.#scrolling, set: (obj, value) => { obj.#scrolling = value; } }, metadata: _metadata }, _private_scrolling_initializers, _private_scrolling_extraInitializers);
222
- __esDecorate(this, _private_thumbHeightPercent_descriptor = { get: __setFunctionName(function () { return this.#thumbHeightPercent_accessor_storage; }, "#thumbHeightPercent", "get"), set: __setFunctionName(function (value) { this.#thumbHeightPercent_accessor_storage = value; }, "#thumbHeightPercent", "set") }, _private_thumbHeightPercent_decorators, { kind: "accessor", name: "#thumbHeightPercent", static: false, private: true, access: { has: obj => #thumbHeightPercent in obj, get: obj => obj.#thumbHeightPercent, set: (obj, value) => { obj.#thumbHeightPercent = value; } }, metadata: _metadata }, _private_thumbHeightPercent_initializers, _private_thumbHeightPercent_extraInitializers);
223
- __esDecorate(this, _private_thumbWidthPercent_descriptor = { get: __setFunctionName(function () { return this.#thumbWidthPercent_accessor_storage; }, "#thumbWidthPercent", "get"), set: __setFunctionName(function (value) { this.#thumbWidthPercent_accessor_storage = value; }, "#thumbWidthPercent", "set") }, _private_thumbWidthPercent_decorators, { kind: "accessor", name: "#thumbWidthPercent", static: false, private: true, access: { has: obj => #thumbWidthPercent in obj, get: obj => obj.#thumbWidthPercent, set: (obj, value) => { obj.#thumbWidthPercent = value; } }, metadata: _metadata }, _private_thumbWidthPercent_initializers, _private_thumbWidthPercent_extraInitializers);
224
- __esDecorate(this, _private_thumbTopPercent_descriptor = { get: __setFunctionName(function () { return this.#thumbTopPercent_accessor_storage; }, "#thumbTopPercent", "get"), set: __setFunctionName(function (value) { this.#thumbTopPercent_accessor_storage = value; }, "#thumbTopPercent", "set") }, _private_thumbTopPercent_decorators, { kind: "accessor", name: "#thumbTopPercent", static: false, private: true, access: { has: obj => #thumbTopPercent in obj, get: obj => obj.#thumbTopPercent, set: (obj, value) => { obj.#thumbTopPercent = value; } }, metadata: _metadata }, _private_thumbTopPercent_initializers, _private_thumbTopPercent_extraInitializers);
225
- __esDecorate(this, _private_thumbLeftPercent_descriptor = { get: __setFunctionName(function () { return this.#thumbLeftPercent_accessor_storage; }, "#thumbLeftPercent", "get"), set: __setFunctionName(function (value) { this.#thumbLeftPercent_accessor_storage = value; }, "#thumbLeftPercent", "set") }, _private_thumbLeftPercent_decorators, { kind: "accessor", name: "#thumbLeftPercent", static: false, private: true, access: { has: obj => #thumbLeftPercent in obj, get: obj => obj.#thumbLeftPercent, set: (obj, value) => { obj.#thumbLeftPercent = value; } }, metadata: _metadata }, _private_thumbLeftPercent_initializers, _private_thumbLeftPercent_extraInitializers);
226
- __esDecorate(this, _private_isAtTop_descriptor = { get: __setFunctionName(function () { return this.#isAtTop_accessor_storage; }, "#isAtTop", "get"), set: __setFunctionName(function (value) { this.#isAtTop_accessor_storage = value; }, "#isAtTop", "set") }, _private_isAtTop_decorators, { kind: "accessor", name: "#isAtTop", static: false, private: true, access: { has: obj => #isAtTop in obj, get: obj => obj.#isAtTop, set: (obj, value) => { obj.#isAtTop = value; } }, metadata: _metadata }, _private_isAtTop_initializers, _private_isAtTop_extraInitializers);
227
- if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
228
- }
229
- static tagName = "dui-scroll-area";
230
- static styles = [base, styles];
231
- #orientation_accessor_storage = __runInitializers(this, _orientation_initializers, "vertical");
232
- /** Scroll direction(s). */
233
- get orientation() { return this.#orientation_accessor_storage; }
234
- set orientation(value) { this.#orientation_accessor_storage = value; }
235
- #fade_accessor_storage = (__runInitializers(this, _orientation_extraInitializers), __runInitializers(this, _fade_initializers, false));
236
- /** Show a fade overlay at the top when scrolled. */
237
- get fade() { return this.#fade_accessor_storage; }
238
- set fade(value) { this.#fade_accessor_storage = value; }
239
- #maxHeight_accessor_storage = (__runInitializers(this, _fade_extraInitializers), __runInitializers(this, _maxHeight_initializers, undefined));
240
- /** Optional max-height constraint (CSS value). */
241
- get maxHeight() { return this.#maxHeight_accessor_storage; }
242
- set maxHeight(value) { this.#maxHeight_accessor_storage = value; }
243
- willUpdate(changed) {
244
- if (changed.has("maxHeight")) {
245
- if (this.maxHeight)
246
- this.style.setProperty("--scroll-area-max-height", this.maxHeight);
247
- else
248
- this.style.removeProperty("--scroll-area-max-height");
249
- }
250
- }
251
- #hasOverflowX_accessor_storage = (__runInitializers(this, _maxHeight_extraInitializers), __runInitializers(this, _private_hasOverflowX_initializers, false));
252
- // --- Internal state ---
253
- get #hasOverflowX() { return _private_hasOverflowX_descriptor.get.call(this); }
254
- set #hasOverflowX(value) { return _private_hasOverflowX_descriptor.set.call(this, value); }
255
- #hasOverflowY_accessor_storage = (__runInitializers(this, _private_hasOverflowX_extraInitializers), __runInitializers(this, _private_hasOverflowY_initializers, false));
256
- get #hasOverflowY() { return _private_hasOverflowY_descriptor.get.call(this); }
257
- set #hasOverflowY(value) { return _private_hasOverflowY_descriptor.set.call(this, value); }
258
- #hovering_accessor_storage = (__runInitializers(this, _private_hasOverflowY_extraInitializers), __runInitializers(this, _private_hovering_initializers, false));
259
- get #hovering() { return _private_hovering_descriptor.get.call(this); }
260
- set #hovering(value) { return _private_hovering_descriptor.set.call(this, value); }
261
- #scrolling_accessor_storage = (__runInitializers(this, _private_hovering_extraInitializers), __runInitializers(this, _private_scrolling_initializers, false));
262
- get #scrolling() { return _private_scrolling_descriptor.get.call(this); }
263
- set #scrolling(value) { return _private_scrolling_descriptor.set.call(this, value); }
264
- #thumbHeightPercent_accessor_storage = (__runInitializers(this, _private_scrolling_extraInitializers), __runInitializers(this, _private_thumbHeightPercent_initializers, 0));
265
- get #thumbHeightPercent() { return _private_thumbHeightPercent_descriptor.get.call(this); }
266
- set #thumbHeightPercent(value) { return _private_thumbHeightPercent_descriptor.set.call(this, value); }
267
- #thumbWidthPercent_accessor_storage = (__runInitializers(this, _private_thumbHeightPercent_extraInitializers), __runInitializers(this, _private_thumbWidthPercent_initializers, 0));
268
- get #thumbWidthPercent() { return _private_thumbWidthPercent_descriptor.get.call(this); }
269
- set #thumbWidthPercent(value) { return _private_thumbWidthPercent_descriptor.set.call(this, value); }
270
- #thumbTopPercent_accessor_storage = (__runInitializers(this, _private_thumbWidthPercent_extraInitializers), __runInitializers(this, _private_thumbTopPercent_initializers, 0));
271
- get #thumbTopPercent() { return _private_thumbTopPercent_descriptor.get.call(this); }
272
- set #thumbTopPercent(value) { return _private_thumbTopPercent_descriptor.set.call(this, value); }
273
- #thumbLeftPercent_accessor_storage = (__runInitializers(this, _private_thumbTopPercent_extraInitializers), __runInitializers(this, _private_thumbLeftPercent_initializers, 0));
274
- get #thumbLeftPercent() { return _private_thumbLeftPercent_descriptor.get.call(this); }
275
- set #thumbLeftPercent(value) { return _private_thumbLeftPercent_descriptor.set.call(this, value); }
276
- #isAtTop_accessor_storage = (__runInitializers(this, _private_thumbLeftPercent_extraInitializers), __runInitializers(this, _private_isAtTop_initializers, true));
277
- get #isAtTop() { return _private_isAtTop_descriptor.get.call(this); }
278
- set #isAtTop(value) { return _private_isAtTop_descriptor.set.call(this, value); }
279
- static #SCROLL_BOTTOM_TOLERANCE = 1;
280
- #isAtBottom = (__runInitializers(this, _private_isAtTop_extraInitializers), true);
281
- #prevScrollTop = 0;
282
- #scrollEndTimer;
283
- #resizeObserver;
284
- #dragging;
285
- #dragStartPointer = 0;
286
- #dragStartScroll = 0;
287
- // --- Lifecycle ---
288
- connectedCallback() {
289
- super.connectedCallback();
290
- this.addEventListener("pointerenter", this.#onPointerEnter);
291
- this.addEventListener("pointerleave", this.#onPointerLeave);
292
- }
293
- disconnectedCallback() {
294
- super.disconnectedCallback();
295
- this.removeEventListener("pointerenter", this.#onPointerEnter);
296
- this.removeEventListener("pointerleave", this.#onPointerLeave);
297
- this.#resizeObserver?.disconnect();
298
- clearTimeout(this.#scrollEndTimer);
299
- }
300
- firstUpdated() {
301
- const viewport = this.#viewport;
302
- if (!viewport)
303
- return;
304
- this.#resizeObserver = new ResizeObserver(() => this.#measure());
305
- this.#resizeObserver.observe(viewport);
306
- const slot = viewport.querySelector("slot");
307
- if (slot) {
308
- const observe = () => {
309
- for (const node of slot.assignedElements()) {
310
- this.#resizeObserver.observe(node);
311
- }
312
- };
313
- slot.addEventListener("slotchange", () => {
314
- observe();
315
- requestAnimationFrame(() => this.#measure());
316
- });
317
- observe();
318
- }
319
- this.#measure();
320
- }
321
- // --- Public methods ---
322
- /** Scroll the viewport to the bottom. */
323
- async scrollToBottom() {
324
- await this.updateComplete;
325
- const viewport = this.#viewport;
326
- if (viewport) {
327
- viewport.scrollTop = viewport.scrollHeight;
328
- this.#isAtBottom = true;
329
- this.#prevScrollTop = viewport.scrollTop;
330
- }
331
- }
332
- /** Whether the viewport is scrolled to the top. */
333
- get isAtTop() {
334
- return this.#isAtTop;
335
- }
336
- /** Whether the viewport is scrolled to the bottom. */
337
- get isAtBottom() {
338
- return this.#isAtBottom;
339
- }
340
- // --- Getters ---
341
- get #viewport() {
342
- return this.shadowRoot?.querySelector(".Viewport") ?? null;
343
- }
344
- get #showVertical() {
345
- return this.orientation === "vertical" || this.orientation === "both";
346
- }
347
- get #showHorizontal() {
348
- return this.orientation === "horizontal" || this.orientation === "both";
349
- }
350
- // --- Measurement ---
351
- #measure = () => {
352
- const vp = this.#viewport;
353
- if (!vp)
354
- return;
355
- const hasOverflowY = vp.scrollHeight > vp.clientHeight;
356
- const hasOverflowX = vp.scrollWidth > vp.clientWidth;
357
- this.#hasOverflowY = hasOverflowY;
358
- this.#hasOverflowX = hasOverflowX;
359
- if (hasOverflowY) {
360
- this.#thumbHeightPercent = (vp.clientHeight / vp.scrollHeight) * 100;
361
- }
362
- if (hasOverflowX) {
363
- this.#thumbWidthPercent = (vp.clientWidth / vp.scrollWidth) * 100;
364
- }
365
- this.#updateThumbPosition(vp);
366
- };
367
- #updateThumbPosition = (vp) => {
368
- if (this.#hasOverflowY) {
369
- const maxScrollTop = vp.scrollHeight - vp.clientHeight;
370
- this.#thumbTopPercent =
371
- maxScrollTop > 0
372
- ? (vp.scrollTop / maxScrollTop) * (100 - this.#thumbHeightPercent)
373
- : 0;
374
- }
375
- if (this.#hasOverflowX) {
376
- const maxScrollLeft = vp.scrollWidth - vp.clientWidth;
377
- this.#thumbLeftPercent =
378
- maxScrollLeft > 0
379
- ? (vp.scrollLeft / maxScrollLeft) * (100 - this.#thumbWidthPercent)
380
- : 0;
381
- }
382
- };
383
- // --- Event handlers ---
384
- #onScroll = () => {
385
- const vp = this.#viewport;
386
- if (!vp)
387
- return;
388
- this.#scrolling = true;
389
- this.#updateThumbPosition(vp);
390
- const wasAtBottom = this.#isAtBottom;
391
- const scrolledUp = vp.scrollTop < this.#prevScrollTop;
392
- this.#isAtTop = vp.scrollTop <= 0;
393
- this.#isAtBottom =
394
- vp.scrollTop + vp.clientHeight >=
395
- vp.scrollHeight - DuiScrollArea.#SCROLL_BOTTOM_TOLERANCE;
396
- if (scrolledUp && wasAtBottom && !this.#isAtBottom) {
397
- this.dispatchEvent(new Event("scrolled-from-bottom", { bubbles: true, composed: true }));
398
- }
399
- else if (!wasAtBottom && this.#isAtBottom) {
400
- this.dispatchEvent(new Event("scrolled-to-bottom", { bubbles: true, composed: true }));
401
- }
402
- this.#prevScrollTop = vp.scrollTop;
403
- clearTimeout(this.#scrollEndTimer);
404
- this.#scrollEndTimer = setTimeout(() => {
405
- this.#scrolling = false;
406
- }, 1000);
407
- };
408
- #onPointerEnter = () => {
409
- this.#hovering = true;
410
- this.#measure();
411
- };
412
- #onPointerLeave = () => {
413
- this.#hovering = false;
414
- };
415
- // --- Track click (jump to position) ---
416
- #onTrackPointerDown = (orientation, event) => {
417
- event.preventDefault();
418
- event.stopPropagation();
419
- const vp = this.#viewport;
420
- if (!vp)
421
- return;
422
- if (orientation === "vertical") {
423
- const track = this.shadowRoot?.querySelector('.Scrollbar[data-orientation="vertical"]');
424
- if (!track)
425
- return;
426
- const rect = track.getBoundingClientRect();
427
- const fraction = (event.clientY - rect.top) / rect.height;
428
- vp.scrollTop = fraction * (vp.scrollHeight - vp.clientHeight);
429
- }
430
- else {
431
- const track = this.shadowRoot?.querySelector('.Scrollbar[data-orientation="horizontal"]');
432
- if (!track)
433
- return;
434
- const rect = track.getBoundingClientRect();
435
- const fraction = (event.clientX - rect.left) / rect.width;
436
- vp.scrollLeft = fraction * (vp.scrollWidth - vp.clientWidth);
437
- }
438
- };
439
- // --- Thumb drag ---
440
- #onThumbPointerDown = (orientation, event) => {
441
- event.preventDefault();
442
- event.stopPropagation();
443
- const vp = this.#viewport;
444
- if (!vp)
445
- return;
446
- this.#dragging = orientation;
447
- if (orientation === "vertical") {
448
- this.#dragStartPointer = event.clientY;
449
- this.#dragStartScroll = vp.scrollTop;
450
- }
451
- else {
452
- this.#dragStartPointer = event.clientX;
453
- this.#dragStartScroll = vp.scrollLeft;
454
- }
455
- document.addEventListener("pointermove", this.#onDragMove);
456
- document.addEventListener("pointerup", this.#onDragEnd);
457
- };
458
- #onDragMove = (event) => {
459
- const vp = this.#viewport;
460
- if (!vp || !this.#dragging)
461
- return;
462
- if (this.#dragging === "vertical") {
463
- const track = this.shadowRoot?.querySelector('.Scrollbar[data-orientation="vertical"]');
464
- if (!track)
465
- return;
466
- const delta = event.clientY - this.#dragStartPointer;
467
- const trackHeight = track.clientHeight;
468
- const scrollRange = vp.scrollHeight - vp.clientHeight;
469
- vp.scrollTop =
470
- this.#dragStartScroll + (delta / trackHeight) * scrollRange;
471
- }
472
- else {
473
- const track = this.shadowRoot?.querySelector('.Scrollbar[data-orientation="horizontal"]');
474
- if (!track)
475
- return;
476
- const delta = event.clientX - this.#dragStartPointer;
477
- const trackWidth = track.clientWidth;
478
- const scrollRange = vp.scrollWidth - vp.clientWidth;
479
- vp.scrollLeft =
480
- this.#dragStartScroll + (delta / trackWidth) * scrollRange;
481
- }
482
- };
483
- #onDragEnd = () => {
484
- this.#dragging = undefined;
485
- document.removeEventListener("pointermove", this.#onDragMove);
486
- document.removeEventListener("pointerup", this.#onDragEnd);
487
- };
488
- // --- Render ---
489
- #renderVerticalScrollbar() {
490
- if (!this.#showVertical || !this.#hasOverflowY)
491
- return nothing;
492
- return html `
493
- <div
494
- class="Scrollbar"
495
- part="scrollbar-vertical"
496
- data-orientation="vertical"
497
- ?data-hovering="${this.#hovering}"
498
- ?data-scrolling="${this.#scrolling}"
499
- @pointerdown="${(e) => this.#onTrackPointerDown("vertical", e)}"
500
- >
501
- <div
502
- class="Thumb"
503
- part="thumb-vertical"
504
- data-orientation="vertical"
505
- style="height: ${this.#thumbHeightPercent}%; top: ${this
506
- .#thumbTopPercent}%; position: absolute;"
507
- @pointerdown="${(e) => this.#onThumbPointerDown("vertical", e)}"
508
- ></div>
509
- </div>
510
- `;
511
- }
512
- #renderHorizontalScrollbar() {
513
- if (!this.#showHorizontal || !this.#hasOverflowX)
514
- return nothing;
515
- return html `
516
- <div
517
- class="Scrollbar"
518
- part="scrollbar-horizontal"
519
- data-orientation="horizontal"
520
- ?data-hovering="${this.#hovering}"
521
- ?data-scrolling="${this.#scrolling}"
522
- @pointerdown="${(e) => this.#onTrackPointerDown("horizontal", e)}"
523
- >
524
- <div
525
- class="Thumb"
526
- part="thumb-horizontal"
527
- data-orientation="horizontal"
528
- style="width: ${this.#thumbWidthPercent}%; left: ${this
529
- .#thumbLeftPercent}%; position: absolute;"
530
- @pointerdown="${(e) => this.#onThumbPointerDown("horizontal", e)}"
531
- ></div>
532
- </div>
533
- `;
534
- }
535
- render() {
536
- return html `
537
- <div
538
- class="ScrollArea"
539
- part="root"
540
- ?data-has-overflow-x="${this.#hasOverflowX}"
541
- ?data-has-overflow-y="${this.#hasOverflowY}"
542
- ?data-scrolling="${this.#scrolling}"
543
- >
544
- ${this.fade
545
- ? html `<div
546
- class="ScrollFade"
547
- ?data-scrolled="${!this.#isAtTop}"
548
- ></div>`
549
- : nothing}
550
- <div class="Viewport" part="viewport" @scroll="${this.#onScroll}">
551
- <slot></slot>
552
- </div>
553
- ${this.#renderVerticalScrollbar()} ${this.#renderHorizontalScrollbar()}
554
- </div>
555
- `;
556
- }
557
- };
558
- })();
559
- export { DuiScrollArea };
35
+ export class DuiScrollArea extends DuiScrollAreaPrimitive {
36
+ static styles = [...DuiScrollAreaPrimitive.styles, styles];
37
+ }
38
+ customElements.define(DuiScrollArea.tagName, DuiScrollArea);
package/select/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { DuiSelect } from "./select.js";
2
- export { DuiSelect };
3
- export type { SelectOption } from "./select.js";
4
- export declare const selectFamily: (typeof DuiSelect)[];
1
+ import "./select.js";
2
+ export { DuiSelect } from "./select.js";
3
+ export type { SelectOption } from "@deepfuture/dui-primitives/select";
package/select/index.js CHANGED
@@ -1,3 +1,2 @@
1
- import { DuiSelect } from "./select.js";
2
- export { DuiSelect };
3
- export const selectFamily = [DuiSelect];
1
+ import "./select.js";
2
+ export { DuiSelect } from "./select.js";
@@ -1,39 +1,5 @@
1
- /** Ported from original DUI: deep-future-app/app/client/components/dui/select */
2
- import { LitElement, type TemplateResult } from "lit";
3
- export type SelectOption = {
4
- label: string;
5
- value: string;
6
- disabled?: boolean;
7
- };
8
- export type SelectValueChangeDetail = {
9
- value: string;
10
- option: SelectOption;
11
- };
12
- export declare const valueChangeEvent: (detail: SelectValueChangeDetail) => CustomEvent<SelectValueChangeDetail>;
13
- /**
14
- * `<dui-select>` — A dropdown select for choosing from a list of options.
15
- *
16
- * @csspart trigger - The trigger button.
17
- * @csspart value - The displayed value text.
18
- * @fires value-change - Fired when the selected value changes.
19
- * Detail: { value: string, option: SelectOption }
20
- */
21
- export declare class DuiSelect extends LitElement {
22
- #private;
23
- static tagName: "dui-select";
24
- static formAssociated: boolean;
1
+ import { DuiSelectPrimitive } from "@deepfuture/dui-primitives/select";
2
+ import "../_install.js";
3
+ export declare class DuiSelect extends DuiSelectPrimitive {
25
4
  static styles: import("lit").CSSResult[];
26
- constructor();
27
- /** The available options. */
28
- accessor options: SelectOption[];
29
- /** Currently selected value. */
30
- accessor value: string;
31
- /** Placeholder text shown when no value is selected. */
32
- accessor placeholder: string;
33
- /** Whether the select is disabled. */
34
- accessor disabled: boolean;
35
- /** Name for form submission. */
36
- accessor name: string;
37
- willUpdate(): void;
38
- render(): TemplateResult;
39
5
  }