@m1z23r/ngx-ui 1.1.49 → 1.1.51

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m1z23r/ngx-ui",
3
- "version": "1.1.49",
3
+ "version": "1.1.51",
4
4
  "description": "A modern Angular UI component library with themeable components and responsive layout system",
5
5
  "license": "MIT",
6
6
  "author": "m1z23r",
@@ -659,7 +659,7 @@ declare class ButtonComponent implements Loadable {
659
659
  readonly variant: _angular_core.InputSignal<ButtonVariant>;
660
660
  readonly color: _angular_core.InputSignal<ButtonColor>;
661
661
  readonly size: _angular_core.InputSignal<ButtonSize>;
662
- readonly type: _angular_core.InputSignal<"button" | "reset" | "submit">;
662
+ readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
663
663
  readonly disabled: _angular_core.InputSignal<boolean>;
664
664
  readonly loading: _angular_core.InputSignal<boolean>;
665
665
  readonly clicked: _angular_core.OutputEmitterRef<MouseEvent>;
@@ -717,7 +717,7 @@ declare class InputComponent {
717
717
  /** Single custom validator function */
718
718
  readonly validatorFn: _angular_core.InputSignal<ValidatorFn | null>;
719
719
  /** When to show validation errors: 'touched' (default), 'dirty', or 'always' */
720
- readonly showErrorsOn: _angular_core.InputSignal<"always" | "touched" | "dirty">;
720
+ readonly showErrorsOn: _angular_core.InputSignal<"touched" | "dirty" | "always">;
721
721
  readonly value: _angular_core.ModelSignal<string | number>;
722
722
  private static nextId;
723
723
  private readonly generatedId;
@@ -2021,16 +2021,29 @@ interface TreeNodeDropEvent {
2021
2021
  target: TreeNode;
2022
2022
  position: TreeDropPosition;
2023
2023
  }
2024
+ type TreeNodeActionType = 'copyValue' | 'copyPath' | 'copyObject' | 'expandAll' | 'collapseAll' | 'goToParent' | 'collapseParent';
2025
+ interface TreeNodeContextAction {
2026
+ node: TreeNode;
2027
+ path: TreeNode[];
2028
+ action: TreeNodeActionType;
2029
+ }
2030
+ type TreeFormatter = (node: TreeNode, path: TreeNode[]) => string | null | undefined;
2024
2031
  declare const TREE_HOST: InjectionToken<TreeComponent>;
2025
2032
  declare class TreeComponent {
2026
2033
  readonly nodes: _angular_core.InputSignal<TreeNode[]>;
2027
2034
  readonly indent: _angular_core.InputSignal<number>;
2028
2035
  readonly draggable: _angular_core.InputSignal<boolean>;
2029
2036
  readonly expandOnClick: _angular_core.InputSignal<boolean>;
2037
+ readonly contextMenu: _angular_core.InputSignal<boolean>;
2038
+ readonly pathSeparator: _angular_core.InputSignal<string>;
2039
+ readonly valueFormatter: _angular_core.InputSignal<TreeFormatter | null>;
2040
+ readonly pathFormatter: _angular_core.InputSignal<TreeFormatter | null>;
2041
+ readonly objectFormatter: _angular_core.InputSignal<TreeFormatter | null>;
2030
2042
  readonly nodeClick: _angular_core.OutputEmitterRef<TreeNode>;
2031
2043
  readonly nodeExpand: _angular_core.OutputEmitterRef<TreeNode>;
2032
2044
  readonly nodeCollapse: _angular_core.OutputEmitterRef<TreeNode>;
2033
2045
  readonly nodeDrop: _angular_core.OutputEmitterRef<TreeNodeDropEvent>;
2046
+ readonly nodeContextAction: _angular_core.OutputEmitterRef<TreeNodeContextAction>;
2034
2047
  /** @internal */
2035
2048
  readonly _dragNode: _angular_core.WritableSignal<TreeNode | null>;
2036
2049
  /** @internal */
@@ -2038,6 +2051,23 @@ declare class TreeComponent {
2038
2051
  /** @internal */
2039
2052
  readonly _dropPosition: _angular_core.WritableSignal<TreeDropPosition | null>;
2040
2053
  /** @internal */
2054
+ readonly _flashNode: _angular_core.WritableSignal<TreeNode | null>;
2055
+ /** @internal context-menu target — node and its path (root → node, inclusive) */
2056
+ readonly _menuNode: _angular_core.WritableSignal<TreeNode | null>;
2057
+ /** @internal */
2058
+ readonly _menuPath: _angular_core.WritableSignal<TreeNode[]>;
2059
+ /** @internal whether the targeted node has children (drives expand/collapse-all visibility) */
2060
+ readonly _menuHasChildren: _angular_core.Signal<boolean>;
2061
+ /** @internal whether the targeted node has a parent (drives go-to/collapse-parent visibility) */
2062
+ readonly _menuHasParent: _angular_core.Signal<boolean>;
2063
+ private readonly _expansion;
2064
+ private readonly _nodeElements;
2065
+ private flashTimer;
2066
+ private readonly menu;
2067
+ isExpanded(node: TreeNode): boolean;
2068
+ setExpanded(node: TreeNode, value: boolean): void;
2069
+ expandSubtree(node: TreeNode, value: boolean): void;
2070
+ /** @internal */
2041
2071
  _onNodeClick(node: TreeNode): void;
2042
2072
  /** @internal */
2043
2073
  _onNodeExpand(node: TreeNode): void;
@@ -2045,28 +2075,47 @@ declare class TreeComponent {
2045
2075
  _onNodeCollapse(node: TreeNode): void;
2046
2076
  /** @internal */
2047
2077
  _emitDrop(event: TreeNodeDropEvent): void;
2078
+ /** @internal */
2079
+ _registerNode(node: TreeNode, el: HTMLElement): void;
2080
+ /** @internal */
2081
+ _unregisterNode(node: TreeNode): void;
2082
+ /** @internal */
2083
+ _openContextMenu(node: TreeNode, path: TreeNode[], x: number, y: number): void;
2084
+ /** @internal */
2085
+ _runAction(action: TreeNodeActionType): void;
2086
+ private serializeNode;
2087
+ private sanitize;
2088
+ private scrollAndFlash;
2089
+ private copyToClipboard;
2090
+ private execCommandCopy;
2048
2091
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeComponent, never>;
2049
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeComponent, "ui-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "expandOnClick": { "alias": "expandOnClick"; "required": false; "isSignal": true; }; }, { "nodeClick": "nodeClick"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "nodeDrop": "nodeDrop"; }, never, never, true, never>;
2092
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeComponent, "ui-tree", never, { "nodes": { "alias": "nodes"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "expandOnClick": { "alias": "expandOnClick"; "required": false; "isSignal": true; }; "contextMenu": { "alias": "contextMenu"; "required": false; "isSignal": true; }; "pathSeparator": { "alias": "pathSeparator"; "required": false; "isSignal": true; }; "valueFormatter": { "alias": "valueFormatter"; "required": false; "isSignal": true; }; "pathFormatter": { "alias": "pathFormatter"; "required": false; "isSignal": true; }; "objectFormatter": { "alias": "objectFormatter"; "required": false; "isSignal": true; }; }, { "nodeClick": "nodeClick"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; "nodeDrop": "nodeDrop"; "nodeContextAction": "nodeContextAction"; }, never, never, true, never>;
2050
2093
  }
2051
2094
 
2052
- declare class TreeNodeComponent {
2095
+ declare class TreeNodeComponent implements AfterViewInit, OnDestroy {
2053
2096
  readonly node: _angular_core.InputSignal<TreeNode>;
2054
2097
  readonly level: _angular_core.InputSignal<number>;
2055
2098
  readonly indent: _angular_core.InputSignal<number>;
2099
+ readonly parentPath: _angular_core.InputSignal<TreeNode[]>;
2056
2100
  readonly nodeClick: _angular_core.OutputEmitterRef<TreeNode>;
2057
2101
  readonly nodeExpand: _angular_core.OutputEmitterRef<TreeNode>;
2058
2102
  readonly nodeCollapse: _angular_core.OutputEmitterRef<TreeNode>;
2059
2103
  private readonly treeHost;
2060
- private readonly _expanded;
2104
+ private readonly contentRef;
2105
+ readonly path: _angular_core.Signal<TreeNode[]>;
2061
2106
  readonly isExpanded: _angular_core.Signal<boolean>;
2062
- readonly hasChildren: _angular_core.Signal<boolean | undefined>;
2107
+ readonly hasChildren: _angular_core.Signal<boolean>;
2063
2108
  readonly indentGuides: _angular_core.Signal<number[]>;
2064
2109
  readonly isDraggable: _angular_core.Signal<boolean>;
2065
2110
  readonly isDragging: _angular_core.Signal<boolean>;
2111
+ readonly isFlashing: _angular_core.Signal<boolean>;
2066
2112
  readonly dropPosition: _angular_core.Signal<TreeDropPosition | null>;
2113
+ ngAfterViewInit(): void;
2114
+ ngOnDestroy(): void;
2067
2115
  toggle(event: MouseEvent): void;
2068
2116
  onClick(event: MouseEvent): void;
2069
2117
  onDoubleClick(event: MouseEvent): void;
2118
+ onContextMenu(event: MouseEvent): void;
2070
2119
  onDragStart(event: DragEvent): void;
2071
2120
  onDragEnd(): void;
2072
2121
  onDragOver(event: DragEvent): void;
@@ -2079,8 +2128,52 @@ declare class TreeNodeComponent {
2079
2128
  /** @internal */
2080
2129
  _onChildNodeCollapse(node: TreeNode): void;
2081
2130
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreeNodeComponent, never>;
2082
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeNodeComponent, "ui-tree-node", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; }, { "nodeClick": "nodeClick"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; }, never, never, true, never>;
2131
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreeNodeComponent, "ui-tree-node", never, { "node": { "alias": "node"; "required": true; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; "parentPath": { "alias": "parentPath"; "required": false; "isSignal": true; }; }, { "nodeClick": "nodeClick"; "nodeExpand": "nodeExpand"; "nodeCollapse": "nodeCollapse"; }, never, never, true, never>;
2132
+ }
2133
+
2134
+ declare class JsonTreeComponent {
2135
+ readonly json: _angular_core.InputSignal<unknown>;
2136
+ readonly rootLabel: _angular_core.InputSignal<string>;
2137
+ readonly pathRoot: _angular_core.InputSignal<string>;
2138
+ readonly expandDepth: _angular_core.InputSignal<number>;
2139
+ readonly indent: _angular_core.InputSignal<number>;
2140
+ readonly draggable: _angular_core.InputSignal<boolean>;
2141
+ readonly expandOnClick: _angular_core.InputSignal<boolean>;
2142
+ readonly contextMenu: _angular_core.InputSignal<boolean>;
2143
+ readonly nodeClick: _angular_core.OutputEmitterRef<TreeNode>;
2144
+ readonly nodeContextAction: _angular_core.OutputEmitterRef<TreeNodeContextAction>;
2145
+ readonly nodes: _angular_core.Signal<TreeNode[]>;
2146
+ protected readonly valueFmt: TreeFormatter;
2147
+ protected readonly pathFmt: TreeFormatter;
2148
+ protected readonly objectFmt: TreeFormatter;
2149
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<JsonTreeComponent, never>;
2150
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<JsonTreeComponent, "ui-json-tree", never, { "json": { "alias": "json"; "required": false; "isSignal": true; }; "rootLabel": { "alias": "rootLabel"; "required": false; "isSignal": true; }; "pathRoot": { "alias": "pathRoot"; "required": false; "isSignal": true; }; "expandDepth": { "alias": "expandDepth"; "required": false; "isSignal": true; }; "indent": { "alias": "indent"; "required": false; "isSignal": true; }; "draggable": { "alias": "draggable"; "required": false; "isSignal": true; }; "expandOnClick": { "alias": "expandOnClick"; "required": false; "isSignal": true; }; "contextMenu": { "alias": "contextMenu"; "required": false; "isSignal": true; }; }, { "nodeClick": "nodeClick"; "nodeContextAction": "nodeContextAction"; }, never, never, true, never>;
2151
+ }
2152
+
2153
+ type JsonKind = 'object' | 'array' | 'primitive';
2154
+ interface JsonNodeMeta {
2155
+ /** null for the root; string for object keys; number for array indices */
2156
+ key: string | number | null;
2157
+ value: unknown;
2158
+ kind: JsonKind;
2159
+ /** Full path from root, e.g. `response.positions[0].companyName` */
2160
+ jsonPath: string;
2161
+ }
2162
+ interface JsonToTreeOptions {
2163
+ /** Display text prepended before the root's `{N}` / `[N]` / primitive value. */
2164
+ rootLabel?: string;
2165
+ /** Optional prefix for paths (e.g. `'$'` produces `$.response.x`). */
2166
+ pathRoot?: string;
2167
+ /** How many descendant levels below the root to auto-expand. Root is always expanded. */
2168
+ expandDepth?: number;
2083
2169
  }
2170
+ /**
2171
+ * Convert an arbitrary JSON-shaped value into a TreeNode array suitable for
2172
+ * `<ui-tree [nodes]>`. Each generated node carries a `data: JsonNodeMeta`.
2173
+ *
2174
+ * Returns a single-element array containing the root node.
2175
+ */
2176
+ declare function jsonToTreeNodes(value: unknown, options?: JsonToTreeOptions): TreeNode[];
2084
2177
 
2085
2178
  interface TemplateVariable {
2086
2179
  key: string;
@@ -2193,5 +2286,5 @@ declare class TemplateInputComponent implements OnDestroy, AfterViewInit {
2193
2286
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<TemplateInputComponent, "ui-template-input", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "variables": { "alias": "variables"; "required": true; "isSignal": true; }; }, { "value": "valueChange"; "variables": "variablesChange"; "variableHover": "variableHover"; }, ["popoverTemplate", "hasSuffix"], ["[uiTemplateInputSuffix]"], true, never>;
2194
2287
  }
2195
2288
 
2196
- export { AccordionComponent, AccordionHeaderDirective, AccordionItemComponent, AlertComponent, BadgeComponent, ButtonComponent, CardComponent, CellTemplateDirective, CellValuePipe, CheckboxComponent, ChipInputComponent, ChipTemplateDirective, CircularProgressComponent, ContentComponent, ContextMenuDirective, DIALOG_DATA, DIALOG_REF, DatepickerComponent, DatetimepickerComponent, DialogRef, DialogService, DropdownComponent, DropdownDividerComponent, DropdownItemComponent, DropdownTriggerDirective, DynamicTabsComponent, FileChooserComponent, FilePreviewPipe, FileSizePipe, FooterComponent, InputComponent, LOADABLE, LoadingDirective, LoadingService, ModalComponent, NavbarComponent, OptionComponent, OptionTemplateDirective, PaginationComponent, ProgressComponent, RadioComponent, RadioGroupComponent, RangeSliderComponent, SelectComponent, ShellComponent, SidebarComponent, SidebarService, SidebarToggleComponent, SliderComponent, SpinnerComponent, SplitComponent, SplitPaneComponent, SwitchComponent, TAB_DATA, TAB_REF, TREE_HOST, TabActivePipe, TabComponent, TabIconDirective, TabRef, TableComponent, TabsComponent, TabsService, TemplateInputComponent, TemplateInputSuffixDirective, TextareaComponent, TimepickerComponent, ToastRef, ToastService, TooltipDirective, TreeComponent, TreeNodeComponent, Validators, VariablePopoverDirective };
2197
- export type { AccordionVariant, AlertVariant, AsyncSearchFn, AsyncSelectOption, BadgeSize, BadgeVariant, ButtonColor, ButtonSize, ButtonVariant, CardPadding, CardVariant, CheckboxSize, ChipInputSize, ChipInputVariant, ChipTemplateContext, CircularProgressSize, CircularProgressVariant, DateRange, DateRangeValue, DatepickerSize, DatepickerVariant, DatepickerView, DatetimepickerSize, DatetimepickerVariant, DatetimepickerView, DialogConfig, DropdownAlign, DropdownPosition, DynamicTabConfig, DynamicTabsSize, DynamicTabsVariant, FileChooserSize, FileChooserVariant, InputType, Loadable, ModalSize, OptionTemplateContext, PaginationSize, ProgressSize, ProgressVariant, RadioGroupOrientation, RadioGroupSize, RadioGroupVariant, RangeSliderBubbles, RangeSliderMode, RangeSliderSize, SelectSize, SelectVariant, ShellVariant, SliderSize, SortDirection, SortState, SpinnerSize, SpinnerVariant, SplitGutterSize, SplitOrientation, SplitSizeChange, SwitchSize, TabRenderMode, TableColumn, TabsSize, TabsVariant, TemplateVariable, TextareaResize, TimeFormat, TimeValue, TimepickerSize, TimepickerVariant, ToastConfig, ToastPosition, ToastVariant, TooltipPosition, TreeDropPosition, TreeNode, TreeNodeDropEvent, ValidationError, ValidationState, ValidatorFn, VariablePopoverContext, VariableState };
2289
+ export { AccordionComponent, AccordionHeaderDirective, AccordionItemComponent, AlertComponent, BadgeComponent, ButtonComponent, CardComponent, CellTemplateDirective, CellValuePipe, CheckboxComponent, ChipInputComponent, ChipTemplateDirective, CircularProgressComponent, ContentComponent, ContextMenuDirective, DIALOG_DATA, DIALOG_REF, DatepickerComponent, DatetimepickerComponent, DialogRef, DialogService, DropdownComponent, DropdownDividerComponent, DropdownItemComponent, DropdownTriggerDirective, DynamicTabsComponent, FileChooserComponent, FilePreviewPipe, FileSizePipe, FooterComponent, InputComponent, JsonTreeComponent, LOADABLE, LoadingDirective, LoadingService, ModalComponent, NavbarComponent, OptionComponent, OptionTemplateDirective, PaginationComponent, ProgressComponent, RadioComponent, RadioGroupComponent, RangeSliderComponent, SelectComponent, ShellComponent, SidebarComponent, SidebarService, SidebarToggleComponent, SliderComponent, SpinnerComponent, SplitComponent, SplitPaneComponent, SwitchComponent, TAB_DATA, TAB_REF, TREE_HOST, TabActivePipe, TabComponent, TabIconDirective, TabRef, TableComponent, TabsComponent, TabsService, TemplateInputComponent, TemplateInputSuffixDirective, TextareaComponent, TimepickerComponent, ToastRef, ToastService, TooltipDirective, TreeComponent, TreeNodeComponent, Validators, VariablePopoverDirective, jsonToTreeNodes };
2290
+ export type { AccordionVariant, AlertVariant, AsyncSearchFn, AsyncSelectOption, BadgeSize, BadgeVariant, ButtonColor, ButtonSize, ButtonVariant, CardPadding, CardVariant, CheckboxSize, ChipInputSize, ChipInputVariant, ChipTemplateContext, CircularProgressSize, CircularProgressVariant, DateRange, DateRangeValue, DatepickerSize, DatepickerVariant, DatepickerView, DatetimepickerSize, DatetimepickerVariant, DatetimepickerView, DialogConfig, DropdownAlign, DropdownPosition, DynamicTabConfig, DynamicTabsSize, DynamicTabsVariant, FileChooserSize, FileChooserVariant, InputType, JsonKind, JsonNodeMeta, JsonToTreeOptions, Loadable, ModalSize, OptionTemplateContext, PaginationSize, ProgressSize, ProgressVariant, RadioGroupOrientation, RadioGroupSize, RadioGroupVariant, RangeSliderBubbles, RangeSliderMode, RangeSliderSize, SelectSize, SelectVariant, ShellVariant, SliderSize, SortDirection, SortState, SpinnerSize, SpinnerVariant, SplitGutterSize, SplitOrientation, SplitSizeChange, SwitchSize, TabRenderMode, TableColumn, TabsSize, TabsVariant, TemplateVariable, TextareaResize, TimeFormat, TimeValue, TimepickerSize, TimepickerVariant, ToastConfig, ToastPosition, ToastVariant, TooltipPosition, TreeDropPosition, TreeFormatter, TreeNode, TreeNodeActionType, TreeNodeContextAction, TreeNodeDropEvent, ValidationError, ValidationState, ValidatorFn, VariablePopoverContext, VariableState };