@ship-ui/core 0.22.10 → 0.22.12
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 +5030 -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-table.mjs +321 -30
- package/fesm2022/ship-ui-core-ship-table.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-table.d.ts +40 -4
- package/types/ship-ui-core-ship-tree.d.ts +67 -0
|
@@ -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 };
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { ElementRef } from '@angular/core';
|
|
2
|
+
import { TemplateRef, ElementRef } from '@angular/core';
|
|
3
3
|
|
|
4
|
+
interface ShipTableColumn<T = any> {
|
|
5
|
+
id: string;
|
|
6
|
+
header: string;
|
|
7
|
+
accessorKey?: keyof T | string;
|
|
8
|
+
type?: 'string' | 'number' | 'date' | 'boolean' | 'badge' | (string & {});
|
|
9
|
+
sortable?: boolean;
|
|
10
|
+
resizable?: boolean;
|
|
11
|
+
minWidth?: number;
|
|
12
|
+
maxWidth?: number;
|
|
13
|
+
size?: string;
|
|
14
|
+
sticky?: 'start' | 'end' | null;
|
|
15
|
+
cell?: (row: T) => any;
|
|
16
|
+
cellTemplate?: TemplateRef<any> | null;
|
|
17
|
+
format?: (value: any, row: T) => any;
|
|
18
|
+
sortPredicate?: (a: T, b: T) => number;
|
|
19
|
+
rowHeader?: boolean;
|
|
20
|
+
}
|
|
4
21
|
declare class ShipResize {
|
|
5
22
|
#private;
|
|
6
23
|
resizable: _angular_core.InputSignal<boolean>;
|
|
@@ -19,7 +36,8 @@ declare class ShipSort {
|
|
|
19
36
|
shSort: _angular_core.InputSignal<string | undefined>;
|
|
20
37
|
sortAsc: _angular_core.Signal<boolean>;
|
|
21
38
|
sortDesc: _angular_core.Signal<boolean>;
|
|
22
|
-
|
|
39
|
+
ariaSort: _angular_core.Signal<"ascending" | "descending" | "none">;
|
|
40
|
+
toggleSort(event?: Event): void;
|
|
23
41
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipSort, never>;
|
|
24
42
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShipSort, "[shSort]", never, { "shSort": { "alias": "shSort"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
25
43
|
}
|
|
@@ -39,7 +57,12 @@ declare class ShipTable {
|
|
|
39
57
|
sortByColumn: _angular_core.ModelSignal<string | null>;
|
|
40
58
|
color: _angular_core.InputSignal<"" | "primary" | "accent" | "warn" | "error" | "success" | null>;
|
|
41
59
|
variant: _angular_core.InputSignal<"" | "type-a" | "type-b" | null>;
|
|
60
|
+
ariaLabel: _angular_core.InputSignal<string | null>;
|
|
61
|
+
ariaLabelledby: _angular_core.InputSignal<string | null>;
|
|
42
62
|
hostClasses: _angular_core.Signal<string>;
|
|
63
|
+
content: _angular_core.Signal<ShipTableContent | undefined>;
|
|
64
|
+
theadLocal: _angular_core.Signal<ElementRef<HTMLTableSectionElement> | undefined>;
|
|
65
|
+
tbodyLocal: _angular_core.Signal<ElementRef<HTMLTableSectionElement> | undefined>;
|
|
43
66
|
thead: _angular_core.Signal<ElementRef<HTMLTableSectionElement> | undefined>;
|
|
44
67
|
tbody: _angular_core.Signal<ElementRef<HTMLTableSectionElement> | undefined>;
|
|
45
68
|
columns: {
|
|
@@ -63,7 +86,20 @@ declare class ShipTable {
|
|
|
63
86
|
e: _angular_core.EffectRef;
|
|
64
87
|
toggleSort(column: string): void;
|
|
65
88
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipTable, never>;
|
|
66
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipTable, "sh-table", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "sortByColumn": { "alias": "sortByColumn"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "dataChange": "dataChange"; "sortByColumn": "sortByColumnChange"; },
|
|
89
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipTable, "sh-table", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "sortByColumn": { "alias": "sortByColumn"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; }, { "dataChange": "dataChange"; "sortByColumn": "sortByColumnChange"; }, ["content"], ["[actionbar]:not([align-right])", "[actionbar][align-right]", "sh-table-content", "th", "[thead]", "*", "[table-no-rows]"], true, never>;
|
|
90
|
+
}
|
|
91
|
+
declare class ShipTableContent {
|
|
92
|
+
#private;
|
|
93
|
+
columns: _angular_core.InputSignal<ShipTableColumn<any>[]>;
|
|
94
|
+
data: _angular_core.InputSignal<any[]>;
|
|
95
|
+
sortByColumn: _angular_core.ModelSignal<string | null>;
|
|
96
|
+
thead: _angular_core.Signal<ElementRef<HTMLTableSectionElement> | undefined>;
|
|
97
|
+
tbody: _angular_core.Signal<ElementRef<HTMLTableSectionElement> | undefined>;
|
|
98
|
+
getValue(row: any, col: ShipTableColumn): any;
|
|
99
|
+
formatDate(value: any): string;
|
|
100
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipTableContent, never>;
|
|
101
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipTableContent, "sh-table-content", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
67
102
|
}
|
|
68
103
|
|
|
69
|
-
export { ShipResize, ShipSort, ShipStickyColumns, ShipTable };
|
|
104
|
+
export { ShipResize, ShipSort, ShipStickyColumns, ShipTable, ShipTableContent };
|
|
105
|
+
export type { ShipTableColumn };
|
|
@@ -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 };
|