poe-svelte-ui-lib 1.33.0 → 1.33.1

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.
@@ -42,7 +42,14 @@
42
42
  let gridTemplate = $derived(
43
43
  [...(header || []).filter((c) => c.width !== "0%").map((c) => c.width || "minmax(0, 1fr)"), ...(dataBuffer.clearButton ? [ACTIONS_COLUMN] : [])].join(" "),
44
44
  )
45
- let isScrollable: boolean = $derived(container ? (container as HTMLElement).scrollHeight > (container as HTMLElement).clientHeight : false)
45
+ /* Фактическая ширина полосы прокрутки тела, на неё сдвигается шапка (0 для оверлейных полос) */
46
+ let scrollbarWidth = $state(0)
47
+ const measureScrollbar = () => (scrollbarWidth = container ? container.offsetWidth - container.clientWidth : 0)
48
+
49
+ $effect(() => {
50
+ void [body, buffer.length, tableHeight]
51
+ tick().then(measureScrollbar)
52
+ })
46
53
  let tableHeight = $state(0)
47
54
  let modalData: { isOpen: boolean; rawData?: string; formattedData?: string } = $state({ isOpen: false, rawData: "", formattedData: "" })
48
55
 
@@ -188,8 +195,14 @@
188
195
  }
189
196
 
190
197
  $effect(() => {
191
- isScrollable = container ? container.scrollHeight > container.clientHeight : false
192
- return () => (buffer = [])
198
+ if (!container) return () => (buffer = [])
199
+ const observer = new ResizeObserver(measureScrollbar)
200
+ observer.observe(container)
201
+ if (container.firstElementChild) observer.observe(container.firstElementChild)
202
+ return () => {
203
+ observer.disconnect()
204
+ buffer = []
205
+ }
193
206
  })
194
207
 
195
208
  $effect(() => {
@@ -213,7 +226,6 @@
213
226
  tableHeight = i == 0 ? 0 + rowHeight : tableHeight + rowHeight
214
227
  }
215
228
  }
216
- isScrollable = container ? container.scrollHeight > container.clientHeight : false
217
229
  }
218
230
  })()
219
231
  })
@@ -232,8 +244,6 @@
232
244
  window.addEventListener("scroll", handlePageScroll, true)
233
245
  window.addEventListener("resize", handlePageScroll, true)
234
246
 
235
- isScrollable = container ? container.scrollHeight > container.clientHeight : false
236
-
237
247
  return () => {
238
248
  window.removeEventListener("scroll", handlePageScroll, true)
239
249
  window.removeEventListener("resize", handlePageScroll, true)
@@ -249,10 +259,8 @@
249
259
  <div class="relative flex h-full w-full flex-col overflow-hidden rounded-[14px] border border-(--hairline-color) bg-(--back-color)">
250
260
  <!-- Table Header -->
251
261
  <div
252
- class="grid border-b border-(--hairline-color) bg-(--container-color) text-[11px] font-bold tracking-[0.06em] text-(--muted-color) uppercase {isScrollable
253
- ? 'border-r-8 border-r-(--container-color)'
254
- : ''}"
255
- style={`grid-template-columns: ${gridTemplate};`}
262
+ class="grid border-b border-(--hairline-color) bg-(--container-color) text-[11px] font-bold tracking-[0.06em] text-(--muted-color) uppercase"
263
+ style={`grid-template-columns: ${gridTemplate}; padding-right: ${scrollbarWidth}px;`}
256
264
  >
257
265
  {#each header as column, index (column)}
258
266
  {#if column.width !== "0%"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poe-svelte-ui-lib",
3
- "version": "1.33.0",
3
+ "version": "1.33.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {