@arsedizioni/ars-utils 21.2.305 → 21.2.306

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": "@arsedizioni/ars-utils",
3
- "version": "21.2.305",
3
+ "version": "21.2.306",
4
4
  "author": {
5
5
  "email": "software@arsedizioni.it",
6
6
  "name": "Fabio Buscaroli, Alberto Doria"
@@ -1025,7 +1025,7 @@ declare class ClipperDocumentMenuComponent {
1025
1025
  /** Internal counter incremented on each external selection-model change to drive signal re-evaluation. */
1026
1026
  private readonly selectionChangeTick;
1027
1027
  readonly useSelections: _angular_core.InputSignal<boolean>;
1028
- readonly selectionSource: _angular_core.InputSignal<"bag" | "selection" | "none">;
1028
+ readonly selectionSource: _angular_core.InputSignal<"selection" | "bag" | "none">;
1029
1029
  /**
1030
1030
  * Computed signal that returns the current effective document selection.
1031
1031
  * Re-evaluates when any input signal or the underlying selection model changes.
@@ -1,6 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { OnInit, OnDestroy, DoCheck, ElementRef } from '@angular/core';
3
- import { Searchable, SearchBag, NameValueItem, DateInterval, SearchFilterMetadata, FileInfo } from '@arsedizioni/ars-utils/core';
3
+ import { Searchable, SearchBag, NameValueItem, DateInterval, SearchFilterMetadata, FileInfo, INode } from '@arsedizioni/ars-utils/core';
4
4
  import { MatFormFieldAppearance, MatFormFieldControl } from '@angular/material/form-field';
5
5
  import { MatDialogRef } from '@angular/material/dialog';
6
6
  import { DialogService } from '@arsedizioni/ars-utils/ui';
@@ -1339,5 +1339,100 @@ declare class FilterBarComponent {
1339
1339
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterBarComponent, "filter-bar", never, { "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "canFilterByText": { "alias": "canFilterByText"; "required": false; "isSignal": true; }; "canFilterByText2": { "alias": "canFilterByText2"; "required": false; "isSignal": true; }; "canFilterByText3": { "alias": "canFilterByText3"; "required": false; "isSignal": true; }; "initialText": { "alias": "initialText"; "required": false; "isSignal": true; }; "initialText2": { "alias": "initialText2"; "required": false; "isSignal": true; }; "initialText3": { "alias": "initialText3"; "required": false; "isSignal": true; }; "textName": { "alias": "textName"; "required": false; "isSignal": true; }; "text2Name": { "alias": "text2Name"; "required": false; "isSignal": true; }; "text3Name": { "alias": "text3Name"; "required": false; "isSignal": true; }; "textLength": { "alias": "textLength"; "required": false; "isSignal": true; }; "text2Length": { "alias": "text2Length"; "required": false; "isSignal": true; }; "text3Length": { "alias": "text3Length"; "required": false; "isSignal": true; }; "showTextSearchButton": { "alias": "showTextSearchButton"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "text2": { "alias": "text2"; "required": false; "isSignal": true; }; "text3": { "alias": "text3"; "required": false; "isSignal": true; }; }, { "changed": "changed"; "text": "textChange"; "text2": "text2Change"; "text3": "text3Change"; }, never, never, true, never>;
1340
1340
  }
1341
1341
 
1342
- export { ApplicationDialogService, ArsUIApplicationModule, ButtonSelectorComponent, ButtonToggleComponent, CalendarEmptyHeader, ChipsSelectorComponent, CurrentFilter, CurrentFilterChanged, CurrentFilterItem, FileInputComponent, FilePreviewComponent, FilterBarComponent, Filters, ItemNode, PromptDateDialogComponent, PromptDialogComponent, PromptDialogType, PromptOtpDialogComponent, PromptTimeDialogComponent, ResizeTableColumnDirective, SelectDialogComponent, SelectFileDialogComponent, SelectPictureDialogComponent, SelectTreeDialogComponent, SelectableItem, SelectableNode, SendToDialogComponent, TreeDataSource };
1342
+ declare class TreePickerComponent {
1343
+ /** Nested tree data to display. */
1344
+ readonly tree: _angular_core.InputSignal<INode[]>;
1345
+ /** Currently selected node ids. Supports two-way binding via [(selection)]. */
1346
+ readonly selection: _angular_core.ModelSignal<string[]>;
1347
+ /** When true, checkboxes and chip remove buttons are disabled (mirrors Material convention). */
1348
+ readonly disabled: _angular_core.InputSignal<boolean>;
1349
+ /** Maximum number of tree levels to display (default: 3). */
1350
+ readonly maxDepth: _angular_core.InputSignal<number>;
1351
+ /**
1352
+ * Number of levels to auto-expand on load.
1353
+ * 0 or undefined = only top level visible (no expansion);
1354
+ * 1 = expand depth-0 nodes; 2 = expand depth-0 and depth-1 nodes; etc.
1355
+ * Must be less than maxDepth.
1356
+ */
1357
+ readonly minDepth: _angular_core.InputSignal<number>;
1358
+ /**
1359
+ * Emits the count of visible selected nodes whenever the selection changes.
1360
+ * Emits 0 when nothing is selected (meaning all items are implicitly included).
1361
+ */
1362
+ readonly selectionCount: _angular_core.OutputEmitterRef<number>;
1363
+ /** Emits void whenever the user changes the selection (toggle, remove, clear). */
1364
+ readonly changed: _angular_core.OutputEmitterRef<void>;
1365
+ private readonly _treeRef;
1366
+ /** All three maps rebuilt lazily as a single computed whenever taxonomy changes. */
1367
+ private readonly _maps;
1368
+ /** O(1) set of selected ids, rebuilt only when selection changes. */
1369
+ private readonly _selectedSet;
1370
+ /** True when at least one node is explicitly selected. */
1371
+ protected readonly hasSelection: _angular_core.Signal<boolean>;
1372
+ /** Count of selected nodes within the visible levels (depth 0 to maxDepth-1), shown in the tab label. */
1373
+ protected readonly selectedVisibleCount: _angular_core.Signal<number>;
1374
+ readonly treeChildrenAccessor: (node: INode) => INode[];
1375
+ readonly hasChild: (_: number, node: INode) => boolean;
1376
+ constructor();
1377
+ /** Expands all visible nodes in the tree. */
1378
+ protected expandAll(): void;
1379
+ /** Collapses all nodes in the tree. */
1380
+ protected collapseAll(): void;
1381
+ /** Clears the entire selection. */
1382
+ protected clearAll(): void;
1383
+ /**
1384
+ * Returns true when the node is in the active selection.
1385
+ * @param node - tree node to check
1386
+ * @returns true if selected
1387
+ */
1388
+ protected isSelected(node: INode): boolean;
1389
+ /**
1390
+ * Returns true when a subset (but not all) of the node's descendants are selected,
1391
+ * producing the indeterminate checkbox state.
1392
+ * @param node - tree node to evaluate
1393
+ * @returns true if the node is in a partial-selection (indeterminate) state
1394
+ */
1395
+ protected isIndeterminate(node: INode): boolean;
1396
+ /**
1397
+ * Toggles the node and all its descendants; then syncs the ancestor chain.
1398
+ * @param node - the node that was clicked
1399
+ */
1400
+ protected toggleNode(node: INode): void;
1401
+ /**
1402
+ * Deselects the node and all its descendants. Called by the chip remove button.
1403
+ * @param node - the node to remove from the selection
1404
+ */
1405
+ protected removeNode(node: INode): void;
1406
+ /**
1407
+ * Returns the INode for the given id, or undefined if not found.
1408
+ * @param id - node id to look up
1409
+ * @returns the matching INode
1410
+ */
1411
+ protected nodeById(id: string): INode | undefined;
1412
+ /**
1413
+ * Returns true when the node at the given id is within the visible depth range
1414
+ * and should appear in the chip list.
1415
+ * @param id - node id to check
1416
+ * @returns true if the node depth is less than maxDepth
1417
+ */
1418
+ protected isChipVisible(id: string): boolean;
1419
+ /**
1420
+ * Returns all descendants of node in depth-first order, including nodes
1421
+ * beyond the 3-level display limit.
1422
+ * @param node - root of the subtree to traverse
1423
+ * @returns flat array of all descendant INodes
1424
+ */
1425
+ private _getDescendants;
1426
+ /**
1427
+ * Walks up the ancestor chain from node, selecting a parent only when all
1428
+ * its descendants are in the set, deselecting it otherwise.
1429
+ * @param node - starting node for the upward traversal
1430
+ * @param set - mutable selection set updated in place
1431
+ */
1432
+ private _syncParentsInSet;
1433
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TreePickerComponent, never>;
1434
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TreePickerComponent, "tree-picker", never, { "tree": { "alias": "tree"; "required": false; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "maxDepth": { "alias": "maxDepth"; "required": false; "isSignal": true; }; "minDepth": { "alias": "minDepth"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "selectionCount": "selectionCount"; "changed": "changed"; }, never, never, true, never>;
1435
+ }
1436
+
1437
+ export { ApplicationDialogService, ArsUIApplicationModule, ButtonSelectorComponent, ButtonToggleComponent, CalendarEmptyHeader, ChipsSelectorComponent, CurrentFilter, CurrentFilterChanged, CurrentFilterItem, FileInputComponent, FilePreviewComponent, FilterBarComponent, Filters, ItemNode, PromptDateDialogComponent, PromptDialogComponent, PromptDialogType, PromptOtpDialogComponent, PromptTimeDialogComponent, ResizeTableColumnDirective, SelectDialogComponent, SelectFileDialogComponent, SelectPictureDialogComponent, SelectTreeDialogComponent, SelectableItem, SelectableNode, SendToDialogComponent, TreeDataSource, TreePickerComponent };
1343
1438
  export type { ButtonToggleInfo, FilePreviewDialogData, FilterGroup, FilterItem, ISelectableItem, PromptDateDialogResult, PromptDialogData, PromptDialogResult, PromptOtpDialogResult, PromptTimeDialogData, SelectDialogAppend, SelectDialogData, SelectDialogDelete, SelectDialogEdit, SelectDialogFilter, SelectDialogLookup, SelectDialogResult, SelectFile, SelectFileDialogData, SelectFileOption, SelectPictureFileDialogData, SelectTreeDialogAppend, SelectTreeDialogData, SelectTreeDialogResult, SelectableFilter, SendToDialogData, SendToDialogResult, SendToPopulateData };