@libs-ui/services-grid-layout 0.2.357-21 → 0.2.357-23
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/README.md +116 -1
- package/canvas/grid-layout-canvas.component.d.ts +1 -0
- package/defines/collision.define.d.ts +26 -1
- package/drag-controller.d.ts +34 -0
- package/esm2022/canvas/grid-layout-canvas.component.mjs +6 -3
- package/esm2022/defines/collision.define.mjs +75 -1
- package/esm2022/drag-controller.mjs +89 -0
- package/esm2022/grid-layout.service.mjs +130 -2
- package/esm2022/index.mjs +2 -1
- package/esm2022/interfaces/grid-layout.interface.mjs +1 -1
- package/fesm2022/libs-ui-services-grid-layout.mjs +295 -4
- package/fesm2022/libs-ui-services-grid-layout.mjs.map +1 -1
- package/grid-layout.service.d.ts +54 -0
- package/index.d.ts +1 -0
- package/interfaces/grid-layout.interface.d.ts +16 -0
- package/package.json +3 -3
package/grid-layout.service.d.ts
CHANGED
|
@@ -17,6 +17,13 @@ export declare class LibsUiGridLayoutService {
|
|
|
17
17
|
private readonly treeService;
|
|
18
18
|
/** Lượt tải component đang chờ, theo id khối — để huỷ khi khối bị gỡ giữa chừng. */
|
|
19
19
|
private readonly pendingLoads;
|
|
20
|
+
/**
|
|
21
|
+
* Bộ theo dõi bề rộng của từng lưới LỒNG, để ngắt khi service bị huỷ.
|
|
22
|
+
*
|
|
23
|
+
* 🔴 Giữ tham chiếu là BẮT BUỘC: `ResizeObserver` không tự tắt theo vòng đời component. Không dọn
|
|
24
|
+
* thì mỗi lần nạp lại bố cục (đổi tab) lại chồng thêm một bộ, và chúng vẫn chạy trên DOM đã gỡ.
|
|
25
|
+
*/
|
|
26
|
+
private readonly nestedResizeObservers;
|
|
20
27
|
constructor();
|
|
21
28
|
private config?;
|
|
22
29
|
private readonly componentRefs;
|
|
@@ -60,6 +67,30 @@ export declare class LibsUiGridLayoutService {
|
|
|
60
67
|
* @param depth 0 = lưới cấp trang, ≥ 1 = lưới lồng trong container
|
|
61
68
|
*/
|
|
62
69
|
private buildGridsterOptions;
|
|
70
|
+
/**
|
|
71
|
+
* Bắt lưới LỒNG đo lại NGAY khi khung chứa nó đổi bề rộng — dùng lúc người dùng kéo mép khối cha.
|
|
72
|
+
*
|
|
73
|
+
* Gridster có sẵn đường tự đo (`resize$`), nhưng luồng đó là `switchMap(() => timer(100))`: mỗi
|
|
74
|
+
* lần phát lại huỷ timer trước, mà kéo chuột bắn dày hơn 100ms nên timer không bao giờ tới đích.
|
|
75
|
+
* Đo được (11/09/2026): kéo mép nhóm thì lưới con co theo cha từng khung hình (234 → 384 px) còn
|
|
76
|
+
* THẺ con đứng im ở 106 px suốt cú kéo, chỉ nhảy đúng sau khi thả tay.
|
|
77
|
+
*
|
|
78
|
+
* Giữ CẢ HAI đường: `itemResizeCallback` bắn đồng bộ ngay khi gridster ghi bề rộng mới lên khối
|
|
79
|
+
* (sớm hơn `ResizeObserver` một khung hình) lo độ tức thì; `ResizeObserver` lo những lần khung đổi
|
|
80
|
+
* vì lý do khác — đổi zoom, thu gọn cột bên trái.
|
|
81
|
+
*
|
|
82
|
+
* Tắt bằng `config.autoResizeNestedGrids: false`.
|
|
83
|
+
*/
|
|
84
|
+
private buildNestedResizeHooks;
|
|
85
|
+
/** Gọi `resize()` của một thẻ `<gridster>` qua chính instance mà nó tự gắn lên phần tử. */
|
|
86
|
+
private resizeGridsterElement;
|
|
87
|
+
/**
|
|
88
|
+
* Gắn instance lên chính phần tử `<gridster>` rồi theo dõi bề rộng của nó.
|
|
89
|
+
*
|
|
90
|
+
* Phải gắn ngược lên DOM vì `itemResizeCallback` của khối CHA chỉ cầm được `HTMLElement`, không có
|
|
91
|
+
* đường nào khác đi từ đó về instance của lưới lồng bên trong.
|
|
92
|
+
*/
|
|
93
|
+
private registerNestedGrid;
|
|
63
94
|
/**
|
|
64
95
|
*
|
|
65
96
|
* Gắn component của nơi dùng lên một khối.
|
|
@@ -131,7 +162,30 @@ export declare class LibsUiGridLayoutService {
|
|
|
131
162
|
clearDragPayload(): void;
|
|
132
163
|
/** Xoá một khối. Xoá container là xoá cả ruột. Trả `false` khi không xoá được (vd khối gốc). */
|
|
133
164
|
removeBlock(id: string): boolean;
|
|
165
|
+
/**
|
|
166
|
+
* Số cột thật của lưới cấp trang.
|
|
167
|
+
*
|
|
168
|
+
* 🔴 Mặc định phải TRÙNG `minCols/maxCols` của `gridLayoutRootConfig()`. Trước đây chỗ này trả 24
|
|
169
|
+
* trong khi lưới vẽ 12: nơi dùng không truyền `cols` thì va chạm, `toContainer` và `compact` tính
|
|
170
|
+
* theo 24 cột còn màn hình chỉ có 12 — khối rơi ra ngoài mép phải mà không ai hiểu vì sao.
|
|
171
|
+
*/
|
|
134
172
|
get totalColumns(): number;
|
|
173
|
+
/**
|
|
174
|
+
* Đổi số cột / số hàng của một khối rồi vẽ lại.
|
|
175
|
+
*
|
|
176
|
+
* Kéo `cols` rộng quá mép phải thì dịch khối sang trái cho vừa, thay vì để nó tràn ra ngoài lưới.
|
|
177
|
+
*/
|
|
178
|
+
resizeBlock(id: string, size: {
|
|
179
|
+
cols?: number;
|
|
180
|
+
rows?: number;
|
|
181
|
+
}): boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Nhân bản một khối — đặt kế bên phải nếu còn chỗ, không thì xuống dòng dưới.
|
|
184
|
+
*
|
|
185
|
+
* `transformData` để nơi dùng đổi phần dữ liệu riêng của mình (vd nối thêm "(Bản sao)" vào tiêu
|
|
186
|
+
* đề); thư viện không tự đoán trường nào là tiêu đề.
|
|
187
|
+
*/
|
|
188
|
+
duplicateBlock(id: string, transformData?: (data: unknown) => unknown): T_gridLayout_node | undefined;
|
|
135
189
|
/** Biến khối đơn thành CONTAINER — nội dung cũ thành khối con đầu tiên, không mất dữ liệu. */
|
|
136
190
|
toContainer(id: string): boolean;
|
|
137
191
|
/** Đưa CONTAINER về khối đơn — khối con được nâng lên cấp trên, không bị xoá. */
|
package/index.d.ts
CHANGED
|
@@ -130,6 +130,22 @@ export type T_gridLayout_config = {
|
|
|
130
130
|
cols?: number;
|
|
131
131
|
/** chiều cao một hàng, px (chế độ lưới). Mặc định 56 */
|
|
132
132
|
rowHeight?: number;
|
|
133
|
+
/**
|
|
134
|
+
* Số hàng TỐI THIỂU của lưới CẤP TRANG. Mặc định 2.
|
|
135
|
+
*
|
|
136
|
+
* Đặt lớn hơn khi muốn ô li phủ kín màn hình ngay cả lúc bố cục còn ít khối — lưới chỉ cao bằng
|
|
137
|
+
* khối cuối cùng thì phần dưới trống trơn, người dùng không biết còn thả được vào đâu.
|
|
138
|
+
*/
|
|
139
|
+
minRows?: number;
|
|
140
|
+
/** Số hàng TỐI THIỂU của lưới bên TRONG container. Mặc định 1 */
|
|
141
|
+
nestedMinRows?: number;
|
|
142
|
+
/**
|
|
143
|
+
* Cho lưới LỒNG tự đo lại khi khung chứa nó đổi bề rộng. Mặc định BẬT.
|
|
144
|
+
*
|
|
145
|
+
* Tắt đi thì lúc kéo mép khối cha, thẻ con đứng im tới khi thả tay — chỉ tắt nếu nơi dùng tự lo
|
|
146
|
+
* việc đo lại.
|
|
147
|
+
*/
|
|
148
|
+
autoResizeNestedGrids?: boolean;
|
|
133
149
|
/** khe giữa hai khối ở lưới CẤP TRANG, px. Mặc định 12 */
|
|
134
150
|
margin?: number;
|
|
135
151
|
/** khe giữa hai khối bên TRONG container, px. Mặc định 2 — khối con là dòng thông tin của cùng
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/services-grid-layout",
|
|
3
|
-
"version": "0.2.357-
|
|
3
|
+
"version": "0.2.357-23",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/core": "^18.2.0",
|
|
6
6
|
"@angular/common": "^18.2.0",
|
|
7
7
|
"gridster18": "npm:angular-gridster2@18.0.1",
|
|
8
8
|
"rxjs": "~7.8.0",
|
|
9
|
-
"@libs-ui/components-buttons-button": "0.2.357-
|
|
10
|
-
"@libs-ui/utils": "0.2.357-
|
|
9
|
+
"@libs-ui/components-buttons-button": "0.2.357-23",
|
|
10
|
+
"@libs-ui/utils": "0.2.357-23"
|
|
11
11
|
},
|
|
12
12
|
"sideEffects": false,
|
|
13
13
|
"module": "fesm2022/libs-ui-services-grid-layout.mjs",
|