@iyulab/flex-table 0.34.1 → 0.34.3
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.
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.34.3] - 2026-09-13
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **The "host has no height constraint" dev-mode warning was a complete no-op in every published
|
|
8
|
+
release** — the guard used `import.meta.env.DEV`, which Vite resolves statically at this
|
|
9
|
+
package's own build time, so the published dist always shipped with the check baked to `false`
|
|
10
|
+
and the warning body removed entirely by dead-code elimination. Replaced with
|
|
11
|
+
`process.env.NODE_ENV !== 'production'`, which survives this package's own build and is resolved
|
|
12
|
+
by each consumer's own bundler against its own dev/production build (see `@iyulab/components`
|
|
13
|
+
1.40.3, which had the identical defect in its shared dev-warning helper).
|
|
14
|
+
|
|
15
|
+
## [0.34.2] - 2026-09-13
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **Development-mode warning when virtual scrolling is silently off.** With 200 or more rows and no
|
|
20
|
+
height constraint the host grows to fit every row, nothing scrolls, and every row is rendered —
|
|
21
|
+
the state the README's "100,000+ rows" premise does not cover. The grid now says so once
|
|
22
|
+
(`[@iyulab/flex-table]`, development builds only) and tells you to size the host so it becomes
|
|
23
|
+
the scroll container.
|
|
24
|
+
|
|
3
25
|
## [0.34.1] - 2026-09-10
|
|
4
26
|
|
|
5
27
|
### Changed
|
|
@@ -6,7 +6,7 @@ var l = r`
|
|
|
6
6
|
/* --- Theme Variables (Light defaults) --- */
|
|
7
7
|
:host {
|
|
8
8
|
--ft-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
9
|
-
/* 밀도 스위치 진입점 — components 의 --u-density 를 그대로
|
|
9
|
+
/* 밀도 스위치 진입점 — components 의 --u-density 를 그대로 읽는다. */
|
|
10
10
|
--ft-font-size: var(--u-density, 14px);
|
|
11
11
|
|
|
12
12
|
/* --- 치수·위계 축 (기본값 = 종전 렌더값) ---
|
|
@@ -33,7 +33,7 @@ var l = r`
|
|
|
33
33
|
--ft-row-hover-bg: var(--u-bg-color-hover, #F5F5F5);
|
|
34
34
|
/* ★홀수 행은 --ft-row-odd-bg(=raised) 위에 앉는다 — 짝수 행과 같은
|
|
35
35
|
--ft-row-hover-bg(=전역 hover) 를 쓰면 다크에서 raised==hover 라 «올려도 아무
|
|
36
|
-
일도 안 일어난다»(
|
|
36
|
+
일도 안 일어난다»(소비자 실측). --u-bg-color-raised-hover 는 다크에서
|
|
37
37
|
color-mix 로 새로 계산되고, 라이트에서는 기존 hover 에 별칭된다(components
|
|
38
38
|
light.css) — 두 테마 다 늘 선언돼 있으므로 폴백 리터럴은 시트 미로드 시에만
|
|
39
39
|
쓰인다(다른 토큰들과 같은 관례). */
|
|
@@ -1513,9 +1513,9 @@ var J = {
|
|
|
1513
1513
|
lt: "<",
|
|
1514
1514
|
gte: "≥",
|
|
1515
1515
|
lte: "≤"
|
|
1516
|
-
}, Y = 120, X = 40, Z = 32, Q = 5, $ = class extends n {
|
|
1516
|
+
}, Y = 120, X = 40, Z = 32, Q = 5, xe = 200, $ = class extends n {
|
|
1517
1517
|
constructor(...e) {
|
|
1518
|
-
super(...e), this.columns = [], this._data = [], this._inUndoRedo = !1, this.clearUndoOnDataChange = !1, this.clearSelectionOnDataChange = !1, this._rowHeightFromCss = Z, this.showRowNumbers = !1, this.theme = void 0, this.maxRows = 0, this.editable = !0, this.showFilters = !1, this.showContextMenu = !1, this.frozenRows = 0, this.emptyMessage = "No data", this.noMatchingMessage = "No matching data", this.loading = !1, this.importEnabled = !1, this.selectable = !1, this.dataMode = "client", this.footerData = null, this.stylesheets = [], this._scrollTop = 0, this._scrollLeft = 0, this._viewportHeight = 0, this._viewportWidth = 0, this._colLeftOffsets = [], this._totalRowWidth = 0, this._baseStyleSheets = [], this._activeCell = null, this._editingCell = null, this._sortCriteria = [], this._selection = new x(), this._editing = new S(), this._rowSelection = new C(), this._undo = new E(), this._filters = [], this._filteredIndices = [], this._sortedIndices = [], this._openFilterKey = null, this._rowSelectionVersion = 0, this._lastCheckboxRowIndex = null, this._checkboxShiftPending = !1, this._autocompleteState = null, this._headerMenu = null, this._bodyContextMenu = null, this._commentPopup = null, this._viewDirty = !0, this._isDragging = !1, this._wasDrag = !1, this._resizing = null, this._resizeCleanup = null, this._wasHeaderDrag = !1, this._wasRowDrag = !1, this._colDrag = null, this._colDragIndicatorLeft = null, this._fillDrag = null, this._rowDrag = null, this._rowDragIndicatorY = null, this._findState = null, this._columnWidths = /* @__PURE__ */ new Map(), this._hostResizeObserver = null, this._comments = /* @__PURE__ */ new Map(), this._isDragOver = !1, this._onCommentPopupOutsideClick = () => {
|
|
1518
|
+
super(...e), this.columns = [], this._data = [], this._inUndoRedo = !1, this.clearUndoOnDataChange = !1, this.clearSelectionOnDataChange = !1, this._rowHeightFromCss = Z, this.showRowNumbers = !1, this.theme = void 0, this.maxRows = 0, this.editable = !0, this.showFilters = !1, this.showContextMenu = !1, this.frozenRows = 0, this.emptyMessage = "No data", this.noMatchingMessage = "No matching data", this.loading = !1, this.importEnabled = !1, this.selectable = !1, this.dataMode = "client", this.footerData = null, this.stylesheets = [], this._scrollTop = 0, this._scrollLeft = 0, this._viewportHeight = 0, this._viewportWidth = 0, this._colLeftOffsets = [], this._totalRowWidth = 0, this._baseStyleSheets = [], this._activeCell = null, this._editingCell = null, this._sortCriteria = [], this._selection = new x(), this._editing = new S(), this._rowSelection = new C(), this._undo = new E(), this._filters = [], this._filteredIndices = [], this._sortedIndices = [], this._openFilterKey = null, this._rowSelectionVersion = 0, this._lastCheckboxRowIndex = null, this._checkboxShiftPending = !1, this._autocompleteState = null, this._headerMenu = null, this._bodyContextMenu = null, this._commentPopup = null, this._viewDirty = !0, this._isDragging = !1, this._wasDrag = !1, this._resizing = null, this._resizeCleanup = null, this._wasHeaderDrag = !1, this._wasRowDrag = !1, this._colDrag = null, this._colDragIndicatorLeft = null, this._fillDrag = null, this._rowDrag = null, this._rowDragIndicatorY = null, this._findState = null, this._columnWidths = /* @__PURE__ */ new Map(), this._hostResizeObserver = null, this._comments = /* @__PURE__ */ new Map(), this._isDragOver = !1, this._warnedUnconstrained = !1, this._onCommentPopupOutsideClick = () => {
|
|
1519
1519
|
this._commitCommentPopup();
|
|
1520
1520
|
}, this._invalidCells = /* @__PURE__ */ new Map(), this._textFilterState = /* @__PURE__ */ new Map(), this._numberFilterState = /* @__PURE__ */ new Map(), this._dateFilterState = /* @__PURE__ */ new Map(), this._emptyFilterState = /* @__PURE__ */ new Map();
|
|
1521
1521
|
}
|
|
@@ -2154,7 +2154,10 @@ var J = {
|
|
|
2154
2154
|
}
|
|
2155
2155
|
_measureViewport() {
|
|
2156
2156
|
let e = this.clientHeight, t = this.clientWidth;
|
|
2157
|
-
e !== this._viewportHeight && (this._viewportHeight = e), t !== this._viewportWidth && (this._viewportWidth = t);
|
|
2157
|
+
e !== this._viewportHeight && (this._viewportHeight = e), t !== this._viewportWidth && (this._viewportWidth = t), this._warnIfUnconstrained();
|
|
2158
|
+
}
|
|
2159
|
+
_warnIfUnconstrained() {
|
|
2160
|
+
this._warnedUnconstrained || process.env.NODE_ENV === "production" || this._visibleRowCount < xe || this.scrollHeight > this.clientHeight + 1 || (this._warnedUnconstrained = !0, console.warn(`[@iyulab/flex-table] ${this._visibleRowCount} rows but the host has no height constraint — it grew to fit every row, so virtual scrolling is off and all rows are rendered. Give the host a height (e.g. height: 400px, or flex: 1 1 auto with min-height: 0 inside a sized parent) so it becomes the scroll container.`));
|
|
2158
2161
|
}
|
|
2159
2162
|
_onScroll() {
|
|
2160
2163
|
this._scrollTop = this.scrollTop, this._scrollLeft = this.scrollLeft;
|
package/dist/flex-table.d.ts
CHANGED
|
@@ -330,6 +330,13 @@ export declare class FlexTable extends LitElement {
|
|
|
330
330
|
private _toDataIndex;
|
|
331
331
|
private _focusEditor;
|
|
332
332
|
private _measureViewport;
|
|
333
|
+
private _warnedUnconstrained;
|
|
334
|
+
/**
|
|
335
|
+
* 개발 모드 사용 안내: 행이 많은데 호스트가 스크롤 컨테이너가 아니면 — 호스트가 내용
|
|
336
|
+
* 높이만큼 자라 스크롤할 것이 없으면 — 가상화가 꺼진 것이다. 오류가 없어 아무도 모른다.
|
|
337
|
+
* 한 번만, 개발 모드에서만. ResizeObserver 경로에서 불리지만 판정은 프로퍼티 둘을 읽는 것뿐이다.
|
|
338
|
+
*/
|
|
339
|
+
private _warnIfUnconstrained;
|
|
333
340
|
private _onScroll;
|
|
334
341
|
private _onDocumentClick;
|
|
335
342
|
private _onContextMenu;
|
package/dist/flex-table.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, i as t, n, r, t as i } from "./flex-table-
|
|
1
|
+
import { a as e, i as t, n, r, t as i } from "./flex-table-BbeD49ly.js";
|
|
2
2
|
export { i as FlexTable, t as RowSelectionState, r as UndoStack, n as exportData, e as renderCell };
|
package/dist/react.js
CHANGED