@ship-ui/core 0.22.10 → 0.22.11
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/assets/mcp/components.json +5001 -4
- package/bin/ship-fg-scanner +0 -0
- package/fesm2022/ship-ui-core-ship-list.mjs +2 -2
- package/fesm2022/ship-ui-core-ship-list.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-sortable.mjs +238 -5
- package/fesm2022/ship-ui-core-ship-sortable.mjs.map +1 -1
- package/fesm2022/ship-ui-core-ship-tree.mjs +238 -0
- package/fesm2022/ship-ui-core-ship-tree.mjs.map +1 -0
- package/package.json +5 -1
- package/styles/index.scss +1 -1
- package/types/ship-ui-core-ship-sortable.d.ts +27 -3
- package/types/ship-ui-core-ship-tree.d.ts +67 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ship-ui/core",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "0.22.
|
|
4
|
+
"version": "0.22.11",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": ">=20",
|
|
7
7
|
"@angular/core": ">=20",
|
|
@@ -219,6 +219,10 @@
|
|
|
219
219
|
"types": "./types/ship-ui-core-ship-toggle-card.d.ts",
|
|
220
220
|
"default": "./fesm2022/ship-ui-core-ship-toggle-card.mjs"
|
|
221
221
|
},
|
|
222
|
+
"./ship-tree": {
|
|
223
|
+
"types": "./types/ship-ui-core-ship-tree.d.ts",
|
|
224
|
+
"default": "./fesm2022/ship-ui-core-ship-tree.mjs"
|
|
225
|
+
},
|
|
222
226
|
"./ship-virtual-scroll": {
|
|
223
227
|
"types": "./types/ship-ui-core-ship-virtual-scroll.d.ts",
|
|
224
228
|
"default": "./fesm2022/ship-ui-core-ship-virtual-scroll.mjs"
|
package/styles/index.scss
CHANGED
|
@@ -18,6 +18,11 @@ type ShipDropEvent = {
|
|
|
18
18
|
previousIndex: number;
|
|
19
19
|
currentIndex: number;
|
|
20
20
|
};
|
|
21
|
+
type ShipTreeDropEvent = {
|
|
22
|
+
previousIndex: number;
|
|
23
|
+
currentIndex: number;
|
|
24
|
+
position: 'before' | 'after' | 'inside';
|
|
25
|
+
};
|
|
21
26
|
interface SortableManagerConfig {
|
|
22
27
|
/**
|
|
23
28
|
* If provided, this hook is evaluated before the Signals are modified.
|
|
@@ -32,11 +37,16 @@ declare class ShipSortable implements OnInit, OnDestroy {
|
|
|
32
37
|
#private;
|
|
33
38
|
shSortable: _angular_core.InputSignal<any>;
|
|
34
39
|
sortableGroup: _angular_core.InputSignal<string | undefined>;
|
|
40
|
+
sortingMode: _angular_core.InputSignal<"list" | "grid" | "tree">;
|
|
41
|
+
treeItems: _angular_core.ModelSignal<any[]>;
|
|
35
42
|
sortDrop: _angular_core.OutputEmitterRef<ShipDropEvent>;
|
|
36
43
|
afterDrop: _angular_core.OutputEmitterRef<AfterDropResponse>;
|
|
37
44
|
crossDrop: _angular_core.OutputEmitterRef<CrossDropResponse>;
|
|
45
|
+
treeDrop: _angular_core.OutputEmitterRef<ShipTreeDropEvent>;
|
|
38
46
|
dragStartIndex: WritableSignal<number>;
|
|
39
47
|
dragToIndex: WritableSignal<number>;
|
|
48
|
+
treeHoverIndex: WritableSignal<number>;
|
|
49
|
+
treeHoverPosition: WritableSignal<"before" | "after" | "inside" | null>;
|
|
40
50
|
initialPositions: WritableSignal<{
|
|
41
51
|
x: number;
|
|
42
52
|
y: number;
|
|
@@ -63,10 +73,24 @@ declare class ShipSortable implements OnInit, OnDestroy {
|
|
|
63
73
|
dragEnd(): void;
|
|
64
74
|
ngOnDestroy(): void;
|
|
65
75
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipSortable, never>;
|
|
66
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShipSortable, "[shSortable]", never, { "shSortable": { "alias": "shSortable"; "required": false; "isSignal": true; }; "sortableGroup": { "alias": "sortableGroup"; "required": false; "isSignal": true; }; }, { "sortDrop": "sortDrop"; "afterDrop": "afterDrop"; "crossDrop": "crossDrop"; }, never, never, true, never>;
|
|
76
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShipSortable, "[shSortable]", never, { "shSortable": { "alias": "shSortable"; "required": false; "isSignal": true; }; "sortableGroup": { "alias": "sortableGroup"; "required": false; "isSignal": true; }; "sortingMode": { "alias": "sortingMode"; "required": false; "isSignal": true; }; "treeItems": { "alias": "treeItems"; "required": false; "isSignal": true; }; }, { "treeItems": "treeItemsChange"; "sortDrop": "sortDrop"; "afterDrop": "afterDrop"; "crossDrop": "crossDrop"; "treeDrop": "treeDrop"; }, never, never, true, never>;
|
|
67
77
|
}
|
|
68
78
|
declare function moveIndex<T = any>(array: T[], event: Pick<ShipDropEvent, 'previousIndex' | 'currentIndex'> | Pick<AfterDropResponse, 'fromIndex' | 'toIndex'>): T[];
|
|
69
79
|
declare function transferArrayItem<T = any>(currentArray: T[], targetArray: T[], currentIndex: number, targetIndex: number): void;
|
|
80
|
+
interface TreeSortableManagerConfig<T> {
|
|
81
|
+
getId?: (item: T) => string;
|
|
82
|
+
getParentId?: (item: T) => string | null;
|
|
83
|
+
setParentId?: (item: T, parentId: string | null) => void;
|
|
84
|
+
getDepth?: (item: T) => number;
|
|
85
|
+
setDepth?: (item: T, depth: number) => void;
|
|
86
|
+
isFolder?: (item: T) => boolean;
|
|
87
|
+
isOpen?: (item: T) => boolean;
|
|
88
|
+
setIsOpen?: (item: T, isOpen: boolean) => void;
|
|
89
|
+
}
|
|
90
|
+
declare function createTreeSortableManager<T>(nodesSignal: WritableSignal<T[]>, config?: TreeSortableManagerConfig<T>): {
|
|
91
|
+
visibleNodes: _angular_core.Signal<T[]>;
|
|
92
|
+
drop(event: ShipTreeDropEvent, visibleNodesList: T[]): void;
|
|
93
|
+
};
|
|
70
94
|
|
|
71
|
-
export { ShipSortable, createSortableManager, moveIndex, transferArrayItem };
|
|
72
|
-
export type { AfterDropResponse, CrossDropResponse, ShipDropEvent, SortableManagerConfig };
|
|
95
|
+
export { ShipSortable, createSortableManager, createTreeSortableManager, moveIndex, transferArrayItem };
|
|
96
|
+
export type { AfterDropResponse, CrossDropResponse, ShipDropEvent, ShipTreeDropEvent, SortableManagerConfig, TreeSortableManagerConfig };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { ElementRef, TemplateRef } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
declare class ShipTreeOpenIcon {
|
|
5
|
+
readonly el: ElementRef<any>;
|
|
6
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipTreeOpenIcon, never>;
|
|
7
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShipTreeOpenIcon, "sh-icon[openIcon]", never, {}, {}, never, never, true, never>;
|
|
8
|
+
}
|
|
9
|
+
declare class ShipTreeClosedIcon {
|
|
10
|
+
readonly el: ElementRef<any>;
|
|
11
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipTreeClosedIcon, never>;
|
|
12
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShipTreeClosedIcon, "sh-icon[closedIcon]", never, {}, {}, never, never, true, never>;
|
|
13
|
+
}
|
|
14
|
+
declare class ShipTreeItemIcon {
|
|
15
|
+
readonly el: ElementRef<any>;
|
|
16
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipTreeItemIcon, never>;
|
|
17
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShipTreeItemIcon, "sh-icon[itemIcon]", never, {}, {}, never, never, true, never>;
|
|
18
|
+
}
|
|
19
|
+
declare class ShipTree {
|
|
20
|
+
/** The flat list of all tree nodes. */
|
|
21
|
+
readonly items: _angular_core.ModelSignal<any[]>;
|
|
22
|
+
/** Optional Writable/Readable WritableSignal manager created by createTreeSortableManager. */
|
|
23
|
+
readonly sortableManager: _angular_core.InputSignal<any>;
|
|
24
|
+
/** Currently selected node ID. */
|
|
25
|
+
readonly selectedId: _angular_core.ModelSignal<string | null>;
|
|
26
|
+
readonly getId: _angular_core.InputSignal<(item: any) => string>;
|
|
27
|
+
readonly getName: _angular_core.InputSignal<(item: any) => string>;
|
|
28
|
+
readonly getParentId: _angular_core.InputSignal<(item: any) => string | null>;
|
|
29
|
+
readonly isFolder: _angular_core.InputSignal<(item: any) => boolean>;
|
|
30
|
+
readonly getIsOpen: _angular_core.InputSignal<(item: any) => boolean>;
|
|
31
|
+
readonly setIsOpen: _angular_core.InputSignal<(item: any, isOpen: boolean) => void>;
|
|
32
|
+
/** Function returning a custom icon name for a node. */
|
|
33
|
+
readonly getIcon: _angular_core.InputSignal<(item: any) => string | null>;
|
|
34
|
+
readonly openIconDir: _angular_core.Signal<ShipTreeOpenIcon | undefined>;
|
|
35
|
+
readonly closedIconDir: _angular_core.Signal<ShipTreeClosedIcon | undefined>;
|
|
36
|
+
readonly itemIconDir: _angular_core.Signal<ShipTreeItemIcon | undefined>;
|
|
37
|
+
openIconName: _angular_core.Signal<any>;
|
|
38
|
+
closedIconName: _angular_core.Signal<any>;
|
|
39
|
+
itemIconName: _angular_core.Signal<any>;
|
|
40
|
+
readonly nodeClick: _angular_core.OutputEmitterRef<any>;
|
|
41
|
+
readonly nodeToggle: _angular_core.OutputEmitterRef<{
|
|
42
|
+
node: any;
|
|
43
|
+
isOpen: boolean;
|
|
44
|
+
}>;
|
|
45
|
+
readonly nodeTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
|
|
46
|
+
readonly dirTemplate: _angular_core.Signal<TemplateRef<any> | undefined>;
|
|
47
|
+
/** Filter the full flat array down to only visible nodes (whose parents are all expanded). */
|
|
48
|
+
visibleNodes: _angular_core.Signal<any>;
|
|
49
|
+
toggleNode(node: any, event: MouseEvent): void;
|
|
50
|
+
handleNodeClick(node: any, event: MouseEvent): void;
|
|
51
|
+
selectNode(node: any): void;
|
|
52
|
+
getDepthArray(depth: number): number[];
|
|
53
|
+
getNodeDepth(node: any): number;
|
|
54
|
+
getNodeIcon(node: any): string | null;
|
|
55
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipTree, never>;
|
|
56
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipTree, "sh-tree", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "sortableManager": { "alias": "sortableManager"; "required": false; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; "getId": { "alias": "getId"; "required": false; "isSignal": true; }; "getName": { "alias": "getName"; "required": false; "isSignal": true; }; "getParentId": { "alias": "getParentId"; "required": false; "isSignal": true; }; "isFolder": { "alias": "isFolder"; "required": false; "isSignal": true; }; "getIsOpen": { "alias": "getIsOpen"; "required": false; "isSignal": true; }; "setIsOpen": { "alias": "setIsOpen"; "required": false; "isSignal": true; }; "getIcon": { "alias": "getIcon"; "required": false; "isSignal": true; }; }, { "items": "itemsChange"; "selectedId": "selectedIdChange"; "nodeClick": "nodeClick"; "nodeToggle": "nodeToggle"; }, ["openIconDir", "closedIconDir", "itemIconDir", "nodeTemplate", "dirTemplate"], ["[emptyState]", "[emptyState]"], true, never>;
|
|
57
|
+
}
|
|
58
|
+
declare class ShipTreeNode {
|
|
59
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipTreeNode, never>;
|
|
60
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipTreeNode, "sh-tree-node", never, {}, {}, never, ["sh-icon", "*", "[actions], sh-tree-node-actions"], true, never>;
|
|
61
|
+
}
|
|
62
|
+
declare class ShipTreeNodeActions {
|
|
63
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipTreeNodeActions, never>;
|
|
64
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipTreeNodeActions, "sh-tree-node-actions", never, {}, {}, never, ["*"], true, never>;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { ShipTree, ShipTreeClosedIcon, ShipTreeItemIcon, ShipTreeNode, ShipTreeNodeActions, ShipTreeOpenIcon };
|