@libs-ui/services-grid-layout 0.2.357-20 → 0.2.357-22
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/canvas/grid-layout-canvas.component.d.ts +112 -4
- package/defines/collision.define.d.ts +56 -0
- package/drag-controller.d.ts +34 -0
- package/esm2022/canvas/grid-layout-canvas.component.mjs +387 -8
- package/esm2022/defines/collision.define.mjs +329 -0
- package/esm2022/defines/gridster-config.define.mjs +4 -5
- package/esm2022/drag-controller.mjs +89 -0
- package/esm2022/grid-layout.service.mjs +245 -3
- package/esm2022/index.mjs +3 -1
- package/esm2022/interfaces/grid-layout.interface.mjs +1 -1
- package/esm2022/tree.service.mjs +20 -1
- package/fesm2022/libs-ui-services-grid-layout.mjs +1066 -14
- package/fesm2022/libs-ui-services-grid-layout.mjs.map +1 -1
- package/grid-layout.service.d.ts +100 -0
- package/index.d.ts +2 -0
- package/interfaces/grid-layout.interface.d.ts +108 -0
- package/package.json +3 -3
- package/tree.service.d.ts +4 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { OnDestroy } from '@angular/core';
|
|
2
|
-
import { T_gridLayout_actionEvent, T_gridLayout_addEvent, T_gridLayout_changeEvent, T_gridLayout_node } from '../interfaces/grid-layout.interface';
|
|
1
|
+
import { AfterViewInit, OnDestroy, TemplateRef } from '@angular/core';
|
|
2
|
+
import { T_gridLayout_actionEvent, T_gridLayout_addEvent, T_gridLayout_changeEvent, T_gridLayout_dropEvent, T_gridLayout_dropGhost, T_gridLayout_node, T_gridLayout_toolbarContext, T_gridLayout_zoomPreset } from '../interfaces/grid-layout.interface';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Mặt phẳng kéo thả. Đệ quy: khối có `children` thì ruột nó lại là một mặt phẳng nữa.
|
|
@@ -7,7 +7,7 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
* Nơi dùng KHÔNG dựng component này trực tiếp cho từng khối — chỉ đặt MỘT thẻ ở gốc và truyền
|
|
8
8
|
* `nodeComponentType` qua `LibsUiGridLayoutService.init()`. Thư viện tự gắn component cho mọi khối.
|
|
9
9
|
*/
|
|
10
|
-
export declare class LibsUiGridLayoutCanvasComponent implements OnDestroy {
|
|
10
|
+
export declare class LibsUiGridLayoutCanvasComponent implements AfterViewInit, OnDestroy {
|
|
11
11
|
/**
|
|
12
12
|
* @internal Chỉ mặt phẳng LỒNG dùng — thư viện tự truyền khi vẽ ruột container.
|
|
13
13
|
*
|
|
@@ -17,6 +17,23 @@ export declare class LibsUiGridLayoutCanvasComponent implements OnDestroy {
|
|
|
17
17
|
readonly node: import("@angular/core").InputSignal<T_gridLayout_node | undefined>;
|
|
18
18
|
/** @internal Chỉ mặt phẳng LỒNG dùng — thư viện tự truyền. */
|
|
19
19
|
readonly depth: import("@angular/core").InputSignal<number>;
|
|
20
|
+
/**
|
|
21
|
+
* Ẩn hẳn thanh công cụ mặc định (thêm-vào-trong · gộp/tách · xoá) của MỌI khối.
|
|
22
|
+
*
|
|
23
|
+
* Dùng khi sản phẩm gom các hành động đó vào chỗ khác — vd một nút ⋮ nằm trong chính nội dung
|
|
24
|
+
* khối. Ẩn rồi thì `outRemoveNode` · `outAddBlockInside` · `outToggleType` không còn nguồn phát
|
|
25
|
+
* từ thư viện; nơi dùng tự gọi `removeBlock` · `addBlock` · `toggleType` của service.
|
|
26
|
+
*/
|
|
27
|
+
readonly hiddenToolbar: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
|
|
28
|
+
/**
|
|
29
|
+
* Template tự vẽ thanh công cụ, thay cho bộ nút mặc định.
|
|
30
|
+
*
|
|
31
|
+
* Nhận context `{ $implicit: node, isContainer, canAddInside, canToggleType }` để nơi dùng vẽ đúng
|
|
32
|
+
* nút cho từng khối, rồi gọi ngược qua `outRemoveNode` · `outAddBlockInside` · `outToggleType`
|
|
33
|
+
* bằng chính các hàm trong context. Truyền cả `hiddenToolbar` và `templateToolbar` thì
|
|
34
|
+
* `hiddenToolbar` thắng — không vẽ gì.
|
|
35
|
+
*/
|
|
36
|
+
readonly templateToolbar: import("@angular/core").InputSignal<TemplateRef<T_gridLayout_toolbarContext> | undefined>;
|
|
20
37
|
/**
|
|
21
38
|
* Bố cục vừa đổi do NGƯỜI DÙNG kéo hoặc đổi kích thước khối.
|
|
22
39
|
*
|
|
@@ -36,12 +53,60 @@ export declare class LibsUiGridLayoutCanvasComponent implements OnDestroy {
|
|
|
36
53
|
readonly outAddBlockInside: import("@angular/core").OutputEmitterRef<T_gridLayout_addEvent>;
|
|
37
54
|
/** Người dùng bấm nút GỘP/TÁCH. Thư viện chưa làm gì — gọi `event.confirm()` để thực hiện. */
|
|
38
55
|
readonly outToggleType: import("@angular/core").OutputEmitterRef<T_gridLayout_actionEvent>;
|
|
56
|
+
/** Bật tính năng thu phóng (zoom) canvas. Chỉ áp dụng cho canvas gốc (depth 0). */
|
|
57
|
+
readonly enableZoom: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
|
|
58
|
+
/** Tỷ lệ thu phóng hiện tại (hỗ trợ two-way binding [(zoom)]="myZoom"). */
|
|
59
|
+
readonly zoom: import("@angular/core").ModelSignal<number | undefined>;
|
|
60
|
+
/** Giới hạn thu phóng tối thiểu. Mặc định 0.4 (40%). */
|
|
61
|
+
readonly zoomMin: import("@angular/core").InputSignal<number>;
|
|
62
|
+
/** Giới hạn thu phóng tối đa. Mặc định 1.5 (150%). */
|
|
63
|
+
readonly zoomMax: import("@angular/core").InputSignal<number>;
|
|
64
|
+
/** Bước nhảy thu phóng mỗi lần bấm +/- hoặc lăn chuột. Mặc định 0.05 (5%). */
|
|
65
|
+
readonly zoomStep: import("@angular/core").InputSignal<number>;
|
|
66
|
+
/** Chiều rộng chuẩn của canvas stage tính bằng px. Mặc định 1668. */
|
|
67
|
+
readonly stageWidth: import("@angular/core").InputSignal<number>;
|
|
68
|
+
/** Chiều cao tối thiểu của canvas stage tính bằng px. Mặc định 937. */
|
|
69
|
+
readonly stageMinHeight: import("@angular/core").InputSignal<number>;
|
|
70
|
+
/** Khóa lưu tỷ lệ thu phóng vào localStorage. Mặc định 'ocb_bi_canvas_zoom'. */
|
|
71
|
+
readonly storageKey: import("@angular/core").InputSignal<string | undefined>;
|
|
72
|
+
/** Hiển thị thanh dock điều khiển thu phóng nổi ở góc dưới phải. Mặc định true. */
|
|
73
|
+
readonly showZoomDock: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
|
|
74
|
+
/** Tự động vừa màn hình khi tải trang lần đầu nếu khung nhìn nhỏ hơn stageWidth. Mặc định true. */
|
|
75
|
+
readonly autoFitOnLoad: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
|
|
76
|
+
/** Phát ra khi tỷ lệ thu phóng thay đổi. */
|
|
77
|
+
readonly outZoomChange: import("@angular/core").OutputEmitterRef<number>;
|
|
78
|
+
/** Bật tính năng kéo thả thẻ từ bên ngoài vào canvas (mặc định true) */
|
|
79
|
+
readonly enableExternalDrop: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
|
|
80
|
+
/** Luôn hiển thị đường kẻ lưới 24 cột */
|
|
81
|
+
readonly showGridLines: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
|
|
82
|
+
/** Mã id của khối đang được chọn */
|
|
83
|
+
readonly selectedNodeId: import("@angular/core").ModelSignal<string | null | undefined>;
|
|
84
|
+
/** Phát ra khi thả một thẻ mới từ bên ngoài vào canvas */
|
|
85
|
+
readonly outDropNode: import("@angular/core").OutputEmitterRef<T_gridLayout_dropEvent>;
|
|
86
|
+
/** Phát ra khi người dùng click chọn một khối */
|
|
87
|
+
readonly outSelectNode: import("@angular/core").OutputEmitterRef<T_gridLayout_node>;
|
|
88
|
+
/** Phát ra khi người dùng bấm nút cấu hình trên thanh công cụ của khối */
|
|
89
|
+
readonly outConfigNode: import("@angular/core").OutputEmitterRef<T_gridLayout_actionEvent>;
|
|
39
90
|
private readonly gridsterRef;
|
|
91
|
+
private readonly scrollAreaRef;
|
|
92
|
+
private readonly zoomDockRef;
|
|
40
93
|
/** mỗi ô một chỗ gắn riêng — cùng thứ tự với `children()` */
|
|
41
94
|
private readonly itemHosts;
|
|
95
|
+
/** Khung xem trước vị trí thả thẻ từ bên ngoài (snapped ghost preview) */
|
|
96
|
+
protected readonly dropGhost: import("@angular/core").WritableSignal<T_gridLayout_dropGhost | undefined>;
|
|
97
|
+
private activeHoveredEl?;
|
|
98
|
+
private rootGridsterEl?;
|
|
99
|
+
/** Menu chọn preset thu phóng đang mở hay đóng */
|
|
100
|
+
protected readonly isMenuOpen: import("@angular/core").WritableSignal<boolean>;
|
|
101
|
+
/** Các mốc thu phóng định sẵn */
|
|
102
|
+
protected readonly zoomPresets: Array<T_gridLayout_zoomPreset>;
|
|
42
103
|
/** Sáu chấm của tay cầm kéo — chỉ để `@for` dựng đủ 6 thẻ, giá trị không dùng tới. */
|
|
43
104
|
protected readonly dragBarDots: number[];
|
|
44
105
|
private readonly service;
|
|
106
|
+
/** Chế độ thu phóng có đang hoạt động trên canvas này không (chỉ root canvas depth 0) */
|
|
107
|
+
protected readonly isZoomActive: import("@angular/core").Signal<boolean>;
|
|
108
|
+
protected readonly currentZoom: import("@angular/core").Signal<number>;
|
|
109
|
+
protected readonly zoomPercent: import("@angular/core").Signal<number>;
|
|
45
110
|
/**
|
|
46
111
|
* Node THẬT của mặt phẳng này.
|
|
47
112
|
*
|
|
@@ -55,6 +120,13 @@ export declare class LibsUiGridLayoutCanvasComponent implements OnDestroy {
|
|
|
55
120
|
*/
|
|
56
121
|
protected readonly currentNode: import("@angular/core").Signal<T_gridLayout_node>;
|
|
57
122
|
protected readonly children: import("@angular/core").Signal<T_gridLayout_node[]>;
|
|
123
|
+
/**
|
|
124
|
+
* Bối cảnh cho `templateToolbar`, dựng sẵn theo từng khối.
|
|
125
|
+
*
|
|
126
|
+
* Dựng ở `computed` chứ không gọi hàm trên template: gọi hàm trong template chạy lại mỗi vòng
|
|
127
|
+
* dò thay đổi (rule `fe-coding-convention-templates` mục 6).
|
|
128
|
+
*/
|
|
129
|
+
protected readonly toolbarContexts: import("@angular/core").Signal<T_gridLayout_toolbarContext[]>;
|
|
58
130
|
protected readonly isNestedCanvas: import("@angular/core").Signal<boolean>;
|
|
59
131
|
/** trần lồng container — khối đã chạm trần thì không cho chuyển thành container */
|
|
60
132
|
protected readonly maxContainerDepth: import("@angular/core").Signal<number>;
|
|
@@ -70,11 +142,29 @@ export declare class LibsUiGridLayoutCanvasComponent implements OnDestroy {
|
|
|
70
142
|
protected readonly isEditMode: import("@angular/core").Signal<boolean>;
|
|
71
143
|
protected readonly gridOptions: import("@angular/core").Signal<import("angular-gridster2").GridsterConfig>;
|
|
72
144
|
constructor();
|
|
145
|
+
ngAfterViewInit(): void;
|
|
73
146
|
ngOnDestroy(): void;
|
|
74
147
|
/** Vẽ lại lưới — gọi khi khung ngoài đổi kích thước hoặc cây vừa đổi diện rộng. */
|
|
75
148
|
get FunctionControl(): {
|
|
76
149
|
veLaiLuoi: () => void | undefined;
|
|
150
|
+
zoomIn: () => void;
|
|
151
|
+
zoomOut: () => void;
|
|
152
|
+
resetZoom: () => void;
|
|
153
|
+
fitToScreen: () => void;
|
|
154
|
+
setZoom: (val: number) => void;
|
|
155
|
+
scrollArea: () => HTMLElement | undefined;
|
|
77
156
|
};
|
|
157
|
+
protected handlerZoomIn(): void;
|
|
158
|
+
protected handlerZoomOut(): void;
|
|
159
|
+
protected handlerResetZoom(): void;
|
|
160
|
+
protected handlerFitScreen(): void;
|
|
161
|
+
protected handlerToggleMenu(): void;
|
|
162
|
+
protected handlerSelectPreset(value: number): void;
|
|
163
|
+
protected isCurrentPreset(value: number): boolean;
|
|
164
|
+
private syncZoomOut;
|
|
165
|
+
protected handlerWheel(event: WheelEvent): void;
|
|
166
|
+
protected handlerDocumentKeyDown(event: KeyboardEvent): void;
|
|
167
|
+
protected handlerDocumentClick(event: MouseEvent): void;
|
|
78
168
|
protected handlerTrackNode(_index: number, item: T_gridLayout_node): string;
|
|
79
169
|
/**
|
|
80
170
|
* 🔴 Chặn `mousedown` nổi lên lưới CHA khi thao tác trong lưới con.
|
|
@@ -94,6 +184,17 @@ export declare class LibsUiGridLayoutCanvasComponent implements OnDestroy {
|
|
|
94
184
|
protected handlerRemove(event: Event, node: T_gridLayout_node): void;
|
|
95
185
|
protected handlerAddInside(event: Event, node: T_gridLayout_node): void;
|
|
96
186
|
protected handlerToggleType(event: Event, node: T_gridLayout_node): void;
|
|
187
|
+
/**
|
|
188
|
+
* Chặn cú bấm trong thanh công cụ nổi lên gridster.
|
|
189
|
+
*
|
|
190
|
+
* Chỉ `stopPropagation`, KHÔNG `preventDefault`: nút bên trong template của nơi dùng vẫn cần
|
|
191
|
+
* hành vi mặc định của mình (mở dropdown, focus…).
|
|
192
|
+
*/
|
|
193
|
+
protected handlerStopEvent(event: Event): void;
|
|
194
|
+
/** Phát `outAddBlockInside` — dùng chung cho nút mặc định và `templateToolbar`. */
|
|
195
|
+
private emitAddInside;
|
|
196
|
+
/** Phát `outToggleType` — dùng chung cho nút mặc định và `templateToolbar`. */
|
|
197
|
+
private emitToggleType;
|
|
97
198
|
/** khối này có phải container không (có khối con) */
|
|
98
199
|
protected isContainer(item: T_gridLayout_node): boolean;
|
|
99
200
|
/** container đã chạm trần lồng thì không cho thêm khối vào trong nữa */
|
|
@@ -102,6 +203,13 @@ export declare class LibsUiGridLayoutCanvasComponent implements OnDestroy {
|
|
|
102
203
|
protected canToggleType(item: T_gridLayout_node): boolean;
|
|
103
204
|
protected handlerBlockParentDrag(event: Event): void;
|
|
104
205
|
protected handlerMouseDownTrongLuoi(event: Event): void;
|
|
206
|
+
protected handlerSelectNode(node: T_gridLayout_node, event?: MouseEvent): void;
|
|
207
|
+
protected handlerConfig(event: Event, node: T_gridLayout_node): void;
|
|
208
|
+
protected handlerDragOver(event: DragEvent): void;
|
|
209
|
+
protected handlerDragLeave(event: DragEvent): void;
|
|
210
|
+
protected handlerDrop(event: DragEvent): void;
|
|
211
|
+
private cleanupHoveredGroup;
|
|
212
|
+
private cleanupDragGrid;
|
|
105
213
|
static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiGridLayoutCanvasComponent, never>;
|
|
106
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiGridLayoutCanvasComponent, "libs_ui-services-grid_layout-canvas", never, { "node": { "alias": "node"; "required": false; "isSignal": true; }; "depth": { "alias": "depth"; "required": false; "isSignal": true; }; }, { "outChange": "outChange"; "outRemoveNode": "outRemoveNode"; "outAddBlockInside": "outAddBlockInside"; "outToggleType": "outToggleType"; }, never, never, true, never>;
|
|
214
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiGridLayoutCanvasComponent, "libs_ui-services-grid_layout-canvas", never, { "node": { "alias": "node"; "required": false; "isSignal": true; }; "depth": { "alias": "depth"; "required": false; "isSignal": true; }; "hiddenToolbar": { "alias": "hiddenToolbar"; "required": false; "isSignal": true; }; "templateToolbar": { "alias": "templateToolbar"; "required": false; "isSignal": true; }; "enableZoom": { "alias": "enableZoom"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "zoomMin": { "alias": "zoomMin"; "required": false; "isSignal": true; }; "zoomMax": { "alias": "zoomMax"; "required": false; "isSignal": true; }; "zoomStep": { "alias": "zoomStep"; "required": false; "isSignal": true; }; "stageWidth": { "alias": "stageWidth"; "required": false; "isSignal": true; }; "stageMinHeight": { "alias": "stageMinHeight"; "required": false; "isSignal": true; }; "storageKey": { "alias": "storageKey"; "required": false; "isSignal": true; }; "showZoomDock": { "alias": "showZoomDock"; "required": false; "isSignal": true; }; "autoFitOnLoad": { "alias": "autoFitOnLoad"; "required": false; "isSignal": true; }; "enableExternalDrop": { "alias": "enableExternalDrop"; "required": false; "isSignal": true; }; "showGridLines": { "alias": "showGridLines"; "required": false; "isSignal": true; }; "selectedNodeId": { "alias": "selectedNodeId"; "required": false; "isSignal": true; }; }, { "outChange": "outChange"; "outRemoveNode": "outRemoveNode"; "outAddBlockInside": "outAddBlockInside"; "outToggleType": "outToggleType"; "zoom": "zoomChange"; "outZoomChange": "outZoomChange"; "selectedNodeId": "selectedNodeIdChange"; "outDropNode": "outDropNode"; "outSelectNode": "outSelectNode"; "outConfigNode": "outConfigNode"; }, never, never, true, never>;
|
|
107
215
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { T_gridLayout_dropGhost, T_gridLayout_externalDragPayload, T_gridLayout_newNode, T_gridLayout_node } from '../interfaces/grid-layout.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Checks whether the rectangular region [x, x + cols) x [y, y + rows)
|
|
4
|
+
* is completely vacant among existing items.
|
|
5
|
+
*/
|
|
6
|
+
export declare const isRegionFree: (children: Array<T_gridLayout_node>, x: number, y: number, cols: number, rows: number, ignoredId?: string) => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Computes optimal (col, row) inside a group container.
|
|
9
|
+
* Snaps flush to adjacent card right edge if slot is vacant.
|
|
10
|
+
*/
|
|
11
|
+
export declare const findSnapPositionInsideGroup: (children: Array<T_gridLayout_node>, rawCol: number, rawRow: number, innerCols: number, innerRows: number, totalCols?: number) => {
|
|
12
|
+
col: number;
|
|
13
|
+
row: number;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Resolves vertical collisions when inserting a new card at (newNode.x, newNode.y).
|
|
17
|
+
* Any existing card that horizontally overlaps and whose vertical span overlaps
|
|
18
|
+
* or is below the insertion point is pushed down so there is no overlap.
|
|
19
|
+
*/
|
|
20
|
+
export declare const resolveCollisionsAndInsert: (children: Array<T_gridLayout_node>, newNode: T_gridLayout_node) => void;
|
|
21
|
+
export declare function parseDropPayload<T>(activePayload: T | undefined, dataTransfer: DataTransfer | null): T | undefined;
|
|
22
|
+
interface I_hoveredGroup {
|
|
23
|
+
groupNode: T_gridLayout_node;
|
|
24
|
+
groupGridster: HTMLElement;
|
|
25
|
+
}
|
|
26
|
+
export declare const findHoveredGroup: (elements: Element[], canvasContainer: HTMLElement, root: T_gridLayout_node) => I_hoveredGroup | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Calculates snapped spatial coordinates and pixel dimensions for drop ghost preview box.
|
|
29
|
+
*/
|
|
30
|
+
export declare const calculateDropGhost: (event: DragEvent, canvasContainer: HTMLElement, root: T_gridLayout_node, payload: T_gridLayout_externalDragPayload, totalCols?: number) => T_gridLayout_dropGhost | undefined;
|
|
31
|
+
/** Tìm khối theo id trong cây, đi sâu vào mọi container. */
|
|
32
|
+
export declare const findNodeRecursive: (root: T_gridLayout_node, id: string) => T_gridLayout_node | undefined;
|
|
33
|
+
/** Tìm khối CHA trực tiếp của một khối, đi sâu vào mọi container. */
|
|
34
|
+
export declare const findParentRecursive: (root: T_gridLayout_node, id: string) => T_gridLayout_node | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Thả khối vào đúng ô mà ghost đang chỉ, đẩy các khối va chạm xuống dưới.
|
|
37
|
+
*
|
|
38
|
+
* Ghost đang nằm trong một container (`isInsideGroup`) thì thả vào ruột container đó; không tìm thấy
|
|
39
|
+
* container thì trả `false` chứ KHÔNG rơi về lưới gốc — thả nhầm cấp khó nhận ra hơn là không thả.
|
|
40
|
+
*/
|
|
41
|
+
export declare const dropNodeAtCoordinates: (root: T_gridLayout_node, ghost: T_gridLayout_dropGhost, newNode: T_gridLayout_newNode) => boolean;
|
|
42
|
+
/** Khối có phải CONTAINER không — tức có khối con bên trong. */
|
|
43
|
+
export declare const isContainerNode: (node: T_gridLayout_node) => boolean;
|
|
44
|
+
/** Khối có nằm LỒNG bên trong một container không (không phải con trực tiếp của gốc). */
|
|
45
|
+
export declare const isNodeNestedInside: (root: T_gridLayout_node | undefined, nodeId: string) => boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Có được đổi khối đơn ↔ container không.
|
|
48
|
+
*
|
|
49
|
+
* 🔴 Ba hàm cờ này PHẢI là nguồn duy nhất cho cả thanh công cụ của thư viện lẫn menu do nơi dùng tự
|
|
50
|
+
* dựng. Trước đây nơi dùng phải chép lại quy tắc để dựng menu trước lúc render, và hai bản lệch nhau
|
|
51
|
+
* mỗi khi thư viện đổi trần lồng cấp mà không có gì báo.
|
|
52
|
+
*/
|
|
53
|
+
export declare const canToggleTypeNode: (root: T_gridLayout_node | undefined, node: T_gridLayout_node) => boolean;
|
|
54
|
+
/** Có được thêm khối vào BÊN TRONG khối này không. */
|
|
55
|
+
export declare const canAddInsideNode: (root: T_gridLayout_node | undefined, node: T_gridLayout_node) => boolean;
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { T_gridLayout_dropGhost, T_gridLayout_externalDragPayload, T_gridLayout_node } from './interfaces/grid-layout.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Giữ trạng thái một lượt kéo khối từ palette bên ngoài vào mặt phẳng.
|
|
4
|
+
*
|
|
5
|
+
* Việc nó lo: bật ô li của lưới đang được kéo tới (lưới gốc, và lưới của container khi con trỏ đi
|
|
6
|
+
* vào trong), tắt đúng lúc, và trả về ghost để nơi dùng vẽ khung xem trước.
|
|
7
|
+
*
|
|
8
|
+
* 🔴 Tự bật/tắt ô li bằng tay ở nơi dùng là chỗ rất dễ sót: kéo ra khỏi container rồi mà quên tắt
|
|
9
|
+
* thì ô li của nó nằm lại trên màn, kéo sang lưới khác lại chồng thêm một lớp nữa.
|
|
10
|
+
*/
|
|
11
|
+
export declare class LibsUiGridLayoutDragController {
|
|
12
|
+
private payload?;
|
|
13
|
+
private hoveredElement?;
|
|
14
|
+
private rootGridsterElement?;
|
|
15
|
+
/** Payload của khối đang được kéo; `undefined` khi không có lượt kéo nào. */
|
|
16
|
+
get ActivePayload(): T_gridLayout_externalDragPayload | undefined;
|
|
17
|
+
/** Gọi ở `dragstart` của thẻ trong palette. */
|
|
18
|
+
onDragStart(payload: T_gridLayout_externalDragPayload): void;
|
|
19
|
+
/** Gọi ở `dragend` — dọn sạch mọi ô li đang bật. */
|
|
20
|
+
onDragEnd(container?: HTMLElement): void;
|
|
21
|
+
/** Tắt ô li của container đang hover. */
|
|
22
|
+
cleanupHoveredGroup(): void;
|
|
23
|
+
/** Tắt ô li của lưới gốc, và quét sạch lớp còn sót trong khung chứa. */
|
|
24
|
+
cleanupRootGrid(container?: HTMLElement): void;
|
|
25
|
+
/** Tắt toàn bộ ô li đang bật. */
|
|
26
|
+
cleanupAll(container?: HTMLElement): void;
|
|
27
|
+
/**
|
|
28
|
+
* Gọi ở `dragover` của khung chứa mặt phẳng. Trả ghost để nơi dùng vẽ khung xem trước, đồng thời
|
|
29
|
+
* tự bật ô li của lưới đang được kéo tới.
|
|
30
|
+
*/
|
|
31
|
+
onDragOver(event: DragEvent, container: HTMLElement | undefined, root: T_gridLayout_node | undefined, totalCols?: number): T_gridLayout_dropGhost | undefined;
|
|
32
|
+
/** Bật ô li của lưới CẤP TRANG trong suốt lượt kéo, tắt lưới cũ nếu khung chứa đã đổi. */
|
|
33
|
+
private showRootGrid;
|
|
34
|
+
}
|