@latitude-ui/widgets 0.0.30 → 0.0.32

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.
@@ -0,0 +1,75 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, ChangeDetectionStrategy, ViewEncapsulation, Component, signal, linkedSignal, computed, untracked } from '@angular/core';
3
+ import { rxResource } from '@angular/core/rxjs-interop';
4
+
5
+ class TreeComponent {
6
+ store = input(...(ngDevMode ? [undefined, { debugName: "store" }] : []));
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.3", type: TreeComponent, isStandalone: true, selector: "lat-tree", inputs: { store: { classPropertyName: "store", publicName: "store", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["latTree"], ngImport: i0, template: "", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: TreeComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ exportAs: 'latTree', selector: 'lat-tree', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "" }]
13
+ }], propDecorators: { store: [{ type: i0.Input, args: [{ isSignal: true, alias: "store", required: false }] }] } });
14
+
15
+ class TreeNode {
16
+ id;
17
+ pid;
18
+ value;
19
+ children;
20
+ downlevel;
21
+ constructor(value, options) {
22
+ const { id, pid, children, downlevel } = options;
23
+ this.value = signal(value, ...(ngDevMode ? [{ debugName: "value" }] : []));
24
+ this.id = linkedSignal({ ...(ngDevMode ? { debugName: "id" } : {}), source: () => this.value(),
25
+ computation: (value) => id(value) });
26
+ this.pid = linkedSignal({ ...(ngDevMode ? { debugName: "pid" } : {}), source: () => this.value(),
27
+ computation: (value) => pid(value) });
28
+ this.children = linkedSignal({ ...(ngDevMode ? { debugName: "children" } : {}), source: () => this.value(),
29
+ computation: (value) => children(value) });
30
+ this.downlevel = linkedSignal({ ...(ngDevMode ? { debugName: "downlevel" } : {}), source: () => this.value(),
31
+ computation: (value) => downlevel(value) });
32
+ }
33
+ }
34
+ function tree({ queryFn, queryChildrenFn, params, ...options }) {
35
+ const stream = rxResource({
36
+ params,
37
+ ...options,
38
+ stream: (params) => queryFn(params)
39
+ });
40
+ const values = computed(() => stream.hasValue() ? stream.value() : [], ...(ngDevMode ? [{ debugName: "values" }] : []));
41
+ const status = computed(() => {
42
+ switch (stream.status()) {
43
+ case 'idle':
44
+ return 'idle';
45
+ case 'error':
46
+ return 'rejected';
47
+ case 'local':
48
+ case 'resolved':
49
+ return 'fulfilled';
50
+ case 'loading':
51
+ case 'reloading':
52
+ return 'pending';
53
+ }
54
+ }, ...(ngDevMode ? [{ debugName: "status" }] : []));
55
+ return {
56
+ values,
57
+ status,
58
+ set(nodes) {
59
+ return stream.set(nodes);
60
+ },
61
+ update(updateFn) {
62
+ return stream.update((nodes) => updateFn(nodes ?? []));
63
+ },
64
+ children(node) {
65
+ return untracked(() => queryChildrenFn ? queryChildrenFn(node, {}) : node.children());
66
+ }
67
+ };
68
+ }
69
+
70
+ /**
71
+ * Generated bundle index. Do not edit.
72
+ */
73
+
74
+ export { TreeComponent, TreeNode, tree };
75
+ //# sourceMappingURL=latitude-ui-widgets-tree.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latitude-ui-widgets-tree.mjs","sources":["../../../../packages/widgets/tree/lib/tree.component.ts","../../../../packages/widgets/tree/lib/tree.component.html","../../../../packages/widgets/tree/lib/tree.api.ts","../../../../packages/widgets/tree/latitude-ui-widgets-tree.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\r\nimport { TreeStore } from './tree.api';\r\n\r\n\r\n@Component({\r\n exportAs: 'latTree',\r\n selector: 'lat-tree',\r\n templateUrl: './tree.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TreeComponent<T = unknown> {\r\n readonly store = input<TreeStore<T>>();\r\n}\r\n","","import { Observable } from 'rxjs';\r\nimport {\r\n computed,\r\n Injector,\r\n linkedSignal,\r\n ResourceLoaderParams,\r\n Signal,\r\n signal,\r\n untracked,\r\n WritableSignal\r\n} from '@angular/core';\r\nimport { rxResource } from '@angular/core/rxjs-interop';\r\n\r\n\r\nexport class TreeNode<T = unknown> {\r\n readonly id: WritableSignal<string>;\r\n\r\n readonly pid: WritableSignal<string | undefined>;\r\n\r\n readonly value: WritableSignal<T>;\r\n\r\n readonly children: WritableSignal<TreeNode<T>[]>;\r\n\r\n readonly downlevel: WritableSignal<boolean>;\r\n\r\n constructor(\r\n value: T,\r\n options: {\r\n id: (value: T) => string;\r\n pid: (value: T) => string | undefined;\r\n children: (value: T) => TreeNode<T>[];\r\n downlevel: (value: T) => boolean;\r\n }\r\n ) {\r\n const { id, pid, children, downlevel } = options;\r\n\r\n this.value = signal(value);\r\n\r\n this.id = linkedSignal({\r\n source: () => this.value(),\r\n computation: (value) => id(value)\r\n });\r\n\r\n this.pid = linkedSignal({\r\n source: () => this.value(),\r\n computation: (value) => pid(value)\r\n });\r\n\r\n this.children = linkedSignal({\r\n source: () => this.value(),\r\n computation: (value) => children(value)\r\n });\r\n\r\n this.downlevel = linkedSignal({\r\n source: () => this.value(),\r\n computation: (value) => downlevel(value)\r\n });\r\n }\r\n}\r\n\r\nexport interface TreeStore<T = unknown> {\r\n\r\n readonly values: Signal<TreeNode<T>[]>;\r\n\r\n readonly status: Signal<'idle' | 'pending' | 'fulfilled' | 'rejected'>;\r\n\r\n set(nodes: TreeNode<T>[]): void;\r\n\r\n update(updateFn: (nodes: TreeNode<T>[]) => TreeNode<T>[]): void;\r\n\r\n children(node: TreeNode<T>): TreeNode<T>[] | Observable<TreeNode<T>[]>;\r\n}\r\n\r\n\r\nexport type TreeResourceQueryFn<T, R> = (params: ResourceLoaderParams<R>) => Observable<TreeNode<T>[]>;\r\nexport type TreeResourceQueryChildrenFn<T, R> = (node: TreeNode<T>, params: ResourceLoaderParams<R>) => Observable<TreeNode<T>[]>;\r\n\r\nexport type TreeResourceOptions<T, R> = {\r\n params?: () => R;\r\n queryFn: TreeResourceQueryFn<T, R>;\r\n queryChildrenFn?: TreeResourceQueryChildrenFn<T, R>;\r\n injector?: Injector;\r\n}\r\n\r\n\r\nexport function tree<T, R>({ queryFn, queryChildrenFn, params, ...options }: TreeResourceOptions<T, R>): TreeStore<T> {\r\n const stream = rxResource({\r\n params,\r\n ...options,\r\n stream: (params) => queryFn(params)\r\n });\r\n\r\n const values = computed(() => stream.hasValue() ? stream.value() : []);\r\n\r\n const status = computed(() => {\r\n switch (stream.status()) {\r\n case 'idle':\r\n return 'idle';\r\n case 'error':\r\n return 'rejected';\r\n case 'local':\r\n case 'resolved':\r\n return 'fulfilled';\r\n case 'loading':\r\n case 'reloading':\r\n return 'pending';\r\n }\r\n });\r\n\r\n return {\r\n values,\r\n status,\r\n\r\n set(nodes: TreeNode<T>[]) {\r\n return stream.set(nodes);\r\n },\r\n update(updateFn: (nodes: TreeNode<T>[]) => TreeNode<T>[]) {\r\n return stream.update((nodes) => updateFn(nodes ?? []));\r\n },\r\n children(node: TreeNode<T>) {\r\n return untracked(() => queryChildrenFn ? queryChildrenFn(node, {} as never) : node.children());\r\n }\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/menu/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @latitude-ui/widgets/menu
2
+
3
+ Secondary entry point of `@latitude-ui/widgets`. It can be used by importing from `@latitude-ui/widgets/menu`.
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@latitude-ui/widgets",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.1.0",
6
6
  "@angular/core": "^21.1.0",
7
+ "@angular/aria": "^21.1.0",
7
8
  "@angular/cdk": "^21.1.0",
8
9
  "@maskito/core": "5.1.0",
9
10
  "@maskito/kit": "5.1.0"
@@ -47,6 +48,10 @@
47
48
  "types": "./types/latitude-ui-widgets-lookup.d.ts",
48
49
  "default": "./fesm2022/latitude-ui-widgets-lookup.mjs"
49
50
  },
51
+ "./menu": {
52
+ "types": "./types/latitude-ui-widgets-menu.d.ts",
53
+ "default": "./fesm2022/latitude-ui-widgets-menu.mjs"
54
+ },
50
55
  "./scrollable": {
51
56
  "types": "./types/latitude-ui-widgets-scrollable.d.ts",
52
57
  "default": "./fesm2022/latitude-ui-widgets-scrollable.mjs"
@@ -70,6 +75,10 @@
70
75
  "./toolbar": {
71
76
  "types": "./types/latitude-ui-widgets-toolbar.d.ts",
72
77
  "default": "./fesm2022/latitude-ui-widgets-toolbar.mjs"
78
+ },
79
+ "./tree": {
80
+ "types": "./types/latitude-ui-widgets-tree.d.ts",
81
+ "default": "./fesm2022/latitude-ui-widgets-tree.mjs"
73
82
  }
74
83
  },
75
84
  "dependencies": {
package/tree/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # @latitude-ui/widgets/tree
2
+
3
+ Secondary entry point of `@latitude-ui/widgets`. It can be used by importing from `@latitude-ui/widgets/tree`.
@@ -1,7 +1,7 @@
1
1
  import * as _latitude_ui_widgets_core from '@latitude-ui/widgets/core';
2
2
  import { BoxSize } from '@latitude-ui/widgets/core';
3
3
  import * as _angular_core from '@angular/core';
4
- import { ElementRef, InjectionToken, Signal } from '@angular/core';
4
+ import { ElementRef } from '@angular/core';
5
5
 
6
6
  type ButtonSize = BoxSize;
7
7
  type ButtonVariant = 'default' | 'action' | 'secondary' | 'text' | 'link' | 'inherit' | ({} & string);
@@ -9,8 +9,8 @@ type ButtonVariant = 'default' | 'action' | 'secondary' | 'text' | 'link' | 'inh
9
9
  declare class ButtonComponent {
10
10
  readonly button: ElementRef<any>;
11
11
  readonly role: _angular_core.InputSignal<string>;
12
- readonly size: _angular_core.InputSignal<_latitude_ui_widgets_core.BoxSize | undefined>;
13
- readonly variant: _angular_core.InputSignal<ButtonVariant | undefined>;
12
+ readonly size: _angular_core.InputSignal<_latitude_ui_widgets_core.BoxSize>;
13
+ readonly variant: _angular_core.InputSignal<ButtonVariant>;
14
14
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
15
15
  readonly tabindex: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
16
16
  readonly icononly: _angular_core.WritableSignal<boolean>;
@@ -21,11 +21,5 @@ declare class ButtonComponent {
21
21
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "lat-button", ["latButton"], { "role": { "alias": "role"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
22
22
  }
23
23
 
24
- interface ButtonPattern {
25
- readonly size: Signal<ButtonSize>;
26
- readonly variant: Signal<ButtonVariant>;
27
- }
28
- declare const BUTTON_PATTERN: InjectionToken<ButtonPattern>;
29
-
30
- export { BUTTON_PATTERN, ButtonComponent };
31
- export type { ButtonPattern, ButtonSize, ButtonVariant };
24
+ export { ButtonComponent };
25
+ export type { ButtonSize, ButtonVariant };
@@ -2,6 +2,7 @@ import * as _angular_core from '@angular/core';
2
2
  import { InjectionToken, Signal } from '@angular/core';
3
3
  import * as _angular_forms from '@angular/forms';
4
4
  import { NgControl, FormControlStatus, AbstractControl } from '@angular/forms';
5
+ import { Observable } from 'rxjs';
5
6
 
6
7
  type BoxSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'inherit';
7
8
 
@@ -95,7 +96,12 @@ declare class HTMLFormControlContainer<T> {
95
96
 
96
97
  declare function noop(): void;
97
98
 
99
+ type Task<T = unknown> = T | Promise<T> | Observable<T>;
100
+ declare function isPromise<T = unknown>(input: unknown): input is Promise<T>;
101
+ declare function isObservable<T = unknown>(input: any): input is Observable<T>;
102
+ declare function taskToObservable<T>(task: Task<T>): Observable<T>;
103
+
98
104
  declare function uid(): string;
99
105
 
100
- export { ARIA_ERRORMESSAGE, ARIA_LABELLEDBY, HTMLFormControl, HTMLFormControlContainer, LAT_ASSETS_PATH, noop, uid };
101
- export type { BoxSize, HTMLFormControlSize, HTMLFormControlVariant };
106
+ export { ARIA_ERRORMESSAGE, ARIA_LABELLEDBY, HTMLFormControl, HTMLFormControlContainer, LAT_ASSETS_PATH, isObservable, isPromise, noop, taskToObservable, uid };
107
+ export type { BoxSize, HTMLFormControlSize, HTMLFormControlVariant, Task };
@@ -0,0 +1,30 @@
1
+ import * as i0 from '@angular/core';
2
+ import * as i1 from '@angular/aria/menu';
3
+
4
+ declare class MenuComponent {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuComponent, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuComponent, "lat-menu", ["latMenu"], {}, {}, never, ["lat-menuitem,lat-menugroup,lat-menulabel"], true, [{ directive: typeof i1.Menu; inputs: { "id": "id"; "disabled": "disabled"; "typeaheadDelay": "typeaheadDelay"; }; outputs: {}; }]>;
7
+ }
8
+
9
+ declare class MenuGroupComponent {
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuGroupComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuGroupComponent, "lat-menugroup", ["latMenuGroup"], {}, {}, never, ["lat-menuitem,lat-menugroup"], true, never>;
12
+ }
13
+
14
+ declare class MenuItemComponent {
15
+ readonly role: i0.InputSignal<string>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuItemComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuItemComponent, "lat-menuitem", ["latMenuItem"], { "role": { "alias": "role"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.MenuItem; inputs: { "id": "id"; "disabled": "disabled"; "value": "value"; }; outputs: {}; }]>;
18
+ }
19
+
20
+ declare class MenuLabelComponent {
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuLabelComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<MenuLabelComponent, "lat-menulabel", ["latMenuLabel"], {}, {}, never, ["*"], true, never>;
23
+ }
24
+
25
+ declare class MenuTriggerDirective {
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<MenuTriggerDirective, never>;
27
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MenuTriggerDirective, "[latMenuTrigger]", ["latMenuTrigger"], {}, {}, never, never, true, [{ directive: typeof i1.MenuTrigger; inputs: { "disabled": "disabled"; }; outputs: {}; }]>;
28
+ }
29
+
30
+ export { MenuComponent, MenuGroupComponent, MenuItemComponent, MenuLabelComponent, MenuTriggerDirective };
@@ -0,0 +1,42 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Signal, WritableSignal, ResourceLoaderParams, Injector } from '@angular/core';
3
+ import { Observable } from 'rxjs';
4
+
5
+ declare class TreeNode<T = unknown> {
6
+ readonly id: WritableSignal<string>;
7
+ readonly pid: WritableSignal<string | undefined>;
8
+ readonly value: WritableSignal<T>;
9
+ readonly children: WritableSignal<TreeNode<T>[]>;
10
+ readonly downlevel: WritableSignal<boolean>;
11
+ constructor(value: T, options: {
12
+ id: (value: T) => string;
13
+ pid: (value: T) => string | undefined;
14
+ children: (value: T) => TreeNode<T>[];
15
+ downlevel: (value: T) => boolean;
16
+ });
17
+ }
18
+ interface TreeStore<T = unknown> {
19
+ readonly values: Signal<TreeNode<T>[]>;
20
+ readonly status: Signal<'idle' | 'pending' | 'fulfilled' | 'rejected'>;
21
+ set(nodes: TreeNode<T>[]): void;
22
+ update(updateFn: (nodes: TreeNode<T>[]) => TreeNode<T>[]): void;
23
+ children(node: TreeNode<T>): TreeNode<T>[] | Observable<TreeNode<T>[]>;
24
+ }
25
+ type TreeResourceQueryFn<T, R> = (params: ResourceLoaderParams<R>) => Observable<TreeNode<T>[]>;
26
+ type TreeResourceQueryChildrenFn<T, R> = (node: TreeNode<T>, params: ResourceLoaderParams<R>) => Observable<TreeNode<T>[]>;
27
+ type TreeResourceOptions<T, R> = {
28
+ params?: () => R;
29
+ queryFn: TreeResourceQueryFn<T, R>;
30
+ queryChildrenFn?: TreeResourceQueryChildrenFn<T, R>;
31
+ injector?: Injector;
32
+ };
33
+ declare function tree<T, R>({ queryFn, queryChildrenFn, params, ...options }: TreeResourceOptions<T, R>): TreeStore<T>;
34
+
35
+ declare class TreeComponent<T = unknown> {
36
+ readonly store: i0.InputSignal<TreeStore<T> | undefined>;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<TreeComponent<any>, never>;
38
+ static ɵcmp: i0.ɵɵComponentDeclaration<TreeComponent<any>, "lat-tree", ["latTree"], { "store": { "alias": "store"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
39
+ }
40
+
41
+ export { TreeComponent, TreeNode, tree };
42
+ export type { TreeResourceOptions, TreeResourceQueryChildrenFn, TreeResourceQueryFn, TreeStore };