ichec-angular-core 0.0.13 → 0.1.1

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/index.d.ts CHANGED
@@ -1,18 +1,47 @@
1
1
  import * as rxjs from 'rxjs';
2
2
  import { Observable, BehaviorSubject } from 'rxjs';
3
3
  import { HttpClient, HttpErrorResponse } from '@angular/common/http';
4
- import * as i0 from '@angular/core';
5
- import { InjectionToken, OnInit, WritableSignal } from '@angular/core';
4
+ import * as _angular_core from '@angular/core';
5
+ import { InjectionToken, OnInit, WritableSignal, AfterViewInit, TemplateRef } from '@angular/core';
6
6
  import * as ichec_angular_core from 'ichec-angular-core';
7
+ import { MatSidenavContent } from '@angular/material/sidenav';
7
8
  import { ActivatedRoute } from '@angular/router';
8
9
  import { Location } from '@angular/common';
9
10
  import * as _angular_forms from '@angular/forms';
11
+ import { FormControl, FormGroup } from '@angular/forms';
10
12
  import { MatTable } from '@angular/material/table';
13
+ import { MatSort } from '@angular/material/sort';
14
+ import { MatPaginator } from '@angular/material/paginator';
15
+ import { DataSource, CollectionViewer, ListRange } from '@angular/cdk/collections';
16
+ import { MatButtonToggleChange } from '@angular/material/button-toggle';
11
17
 
12
18
  interface Identifiable {
13
19
  id: number;
14
20
  url: string;
15
21
  }
22
+ interface IPaginated<T extends Identifiable> {
23
+ count: number;
24
+ next: string | null;
25
+ previous: string | null;
26
+ results: T[];
27
+ }
28
+ declare class Paginated<T extends Identifiable> implements IPaginated<T> {
29
+ count: number;
30
+ next: null;
31
+ previous: null;
32
+ results: T[];
33
+ }
34
+ interface IPermission extends Identifiable {
35
+ codename: string;
36
+ }
37
+ declare class Permission implements IPermission {
38
+ id: number;
39
+ url: string;
40
+ codename: string;
41
+ static typename: string;
42
+ static plural: string;
43
+ constructor(params?: Partial<IPermission>);
44
+ }
16
45
  interface IPortalMember extends Identifiable {
17
46
  username: string;
18
47
  email: string;
@@ -21,8 +50,11 @@ interface IPortalMember extends Identifiable {
21
50
  phone: string;
22
51
  organization: string;
23
52
  profile_url: string;
53
+ all_permissions: string[];
24
54
  }
25
55
  declare class PortalMember implements IPortalMember {
56
+ static typename: string;
57
+ static plural: string;
26
58
  id: number;
27
59
  url: string;
28
60
  username: string;
@@ -32,15 +64,53 @@ declare class PortalMember implements IPortalMember {
32
64
  phone: string;
33
65
  organization: string;
34
66
  profile_url: string;
67
+ all_permissions: never[];
35
68
  constructor(params?: Partial<IPortalMember>);
36
69
  }
37
70
  interface IGroup extends Identifiable {
38
71
  name: string;
39
72
  }
40
73
  declare class Group implements IGroup {
74
+ static typename: string;
75
+ static plural: string;
41
76
  name: string;
42
77
  url: string;
43
78
  id: number;
79
+ constructor(params?: Partial<IGroup>);
80
+ }
81
+
82
+ interface ICountry {
83
+ name: string;
84
+ code: string;
85
+ flag: string;
86
+ }
87
+ interface IAddress extends Identifiable {
88
+ line1: string;
89
+ line2: string;
90
+ line3: string;
91
+ city: string;
92
+ region: string;
93
+ postcode: string;
94
+ country: string;
95
+ country_name: string;
96
+ country_flag: string;
97
+ }
98
+ declare class Address implements IAddress {
99
+ static typename: string;
100
+ static plural: string;
101
+ id: number;
102
+ url: string;
103
+ line1: string;
104
+ line2: string;
105
+ line3: string;
106
+ city: string;
107
+ region: string;
108
+ postcode: string;
109
+ country: string;
110
+ country_name: string;
111
+ country_flag: string;
112
+ members: string[];
113
+ constructor(params?: Partial<IAddress>);
44
114
  }
45
115
  interface IOrganization extends Identifiable {
46
116
  name: string;
@@ -48,10 +118,11 @@ interface IOrganization extends Identifiable {
48
118
  description: string;
49
119
  address: string;
50
120
  website: string;
51
- country: string;
52
121
  members: string[];
53
122
  }
54
123
  declare class Organization implements IOrganization {
124
+ static typename: string;
125
+ static plural: string;
55
126
  id: number;
56
127
  url: string;
57
128
  name: string;
@@ -59,11 +130,29 @@ declare class Organization implements IOrganization {
59
130
  description: string;
60
131
  address: string;
61
132
  website: string;
62
- country: string;
63
133
  members: string[];
64
134
  constructor(params?: Partial<IOrganization>);
65
135
  }
66
136
 
137
+ interface IItemQuery {
138
+ queries: Map<string, string>;
139
+ page: number;
140
+ page_size: number;
141
+ sort_field: string;
142
+ sort_order: string;
143
+ filter_field: string;
144
+ filter: string;
145
+ }
146
+ declare class ItemQuery {
147
+ queries: Map<string, string>;
148
+ page: number;
149
+ page_size: number;
150
+ sort_field: string;
151
+ sort_order: string;
152
+ filter_field: string;
153
+ filter: string;
154
+ constructor(params?: Partial<IItemQuery>);
155
+ }
67
156
  declare enum ErrorCode {
68
157
  UnknownError = 1
69
158
  }
@@ -102,15 +191,15 @@ interface LeftNavCategory {
102
191
 
103
192
  declare const ENDPOINT_URL: InjectionToken<string>;
104
193
  declare class RestService<T extends Identifiable> {
105
- private _url;
194
+ readonly _url: string;
106
195
  protected _endpoint_url: string;
107
196
  protected _http: HttpClient;
108
- constructor(_url: string, _endpoint_url: string, _http: HttpClient);
109
197
  deleteItem(id: number): Observable<void>;
110
- getForUser(user: IPortalMember): Observable<T[]>;
111
- get(query?: string): Observable<T[]>;
198
+ getForUser(user: IPortalMember, query?: IItemQuery): Observable<IPaginated<T>>;
199
+ get(query?: IItemQuery): Observable<IPaginated<T>>;
112
200
  getItem(id: number): Observable<T>;
113
201
  getUrl(url: string): Observable<T>;
202
+ getPaginatedUrl(url: string): Observable<IPaginated<T>>;
114
203
  getOptions(): Observable<IRestOptions>;
115
204
  putItem(item: T, content_type?: string): Observable<T>;
116
205
  patchItemMedia(id: number, form: FormData): Observable<T>;
@@ -123,32 +212,76 @@ declare class RestService<T extends Identifiable> {
123
212
  handleError(error: HttpErrorResponse): Observable<never>;
124
213
  }
125
214
 
126
- declare class UserService extends RestService<IPortalMember> {
127
- /** Service to handle IPortalMember via REST and also handle logins.
215
+ declare class ItemService<T extends Identifiable> extends RestService<T> {
216
+ itemType: string;
217
+ canEdit(): boolean;
218
+ canCreate(): boolean;
219
+ canDelete(): boolean;
220
+ canView(): boolean;
221
+ instantiateType(_: T): T;
222
+ getItem(id: number): Observable<T>;
223
+ }
224
+
225
+ declare class ResolvedPermission {
226
+ canEdit: boolean;
227
+ canAdd: boolean;
228
+ canView: boolean;
229
+ canDelete: boolean;
230
+ }
231
+ declare class UserService extends ItemService<IPortalMember> {
232
+ /**
233
+ Service to handle IPortalMember via REST and also handle logins.
128
234
  */
129
235
  loggedInUser: BehaviorSubject<IPortalMember | null>;
130
- constructor();
236
+ readonly _url: string;
237
+ itemType: string;
238
+ private permissions;
239
+ instantiateType(item: IPortalMember): IPortalMember;
131
240
  login(username: string, password: string): Observable<void>;
241
+ hasAddPermission(feature: string): boolean;
242
+ hasDeletePermission(feature: string): boolean;
243
+ hasEditPermission(feature: string): boolean;
244
+ hasViewPermission(feature: string): boolean;
132
245
  logout(): void;
133
246
  private onLoginToken;
134
247
  private onLoggedIn;
135
- static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
136
- static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
248
+ private parsePermission;
249
+ private processPermissions;
250
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserService, never>;
251
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<UserService>;
137
252
  }
138
253
 
139
- declare class GroupService extends RestService<IGroup> {
254
+ declare class AddressService extends ItemService<IAddress> {
255
+ readonly _url: string;
256
+ itemType: string;
257
+ instantiateType(item: IAddress): IAddress;
258
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AddressService, never>;
259
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AddressService>;
260
+ }
261
+
262
+ declare class GroupService extends ItemService<IGroup> {
140
263
  userService: UserService;
141
264
  userItems: BehaviorSubject<IGroup[]>;
265
+ readonly _url: string;
266
+ itemType: string;
142
267
  constructor();
143
268
  private refreshUserItems;
144
- static ɵfac: i0.ɵɵFactoryDeclaration<GroupService, never>;
145
- static ɵprov: i0.ɵɵInjectableDeclaration<GroupService>;
269
+ instantiateType(item: IGroup): IGroup;
270
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GroupService, never>;
271
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<GroupService>;
146
272
  }
147
273
 
148
- declare class OrganizationService extends RestService<IOrganization> {
149
- constructor();
150
- static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationService, never>;
151
- static ɵprov: i0.ɵɵInjectableDeclaration<OrganizationService>;
274
+ declare class OrganizationService extends ItemService<IOrganization> {
275
+ readonly _url: string;
276
+ itemType: string;
277
+ private userService;
278
+ instantiateType(item: IOrganization): IOrganization;
279
+ canCreate(): boolean;
280
+ canView(): boolean;
281
+ canEdit(): boolean;
282
+ canDelete(): boolean;
283
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OrganizationService, never>;
284
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<OrganizationService>;
152
285
  }
153
286
 
154
287
  interface NavOption {
@@ -169,26 +302,27 @@ declare class LeftNavService {
169
302
  addNavGroup(group: NavGroup): void;
170
303
  setDefaultOptions(options: NavOption[]): void;
171
304
  setGroups(groups: NavGroup[]): void;
172
- static ɵfac: i0.ɵɵFactoryDeclaration<LeftNavService, never>;
173
- static ɵprov: i0.ɵɵInjectableDeclaration<LeftNavService>;
305
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LeftNavService, never>;
306
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<LeftNavService>;
174
307
  }
175
308
 
176
309
  declare class TopBarComponent implements OnInit {
177
- readonly title: i0.InputSignal<string | undefined>;
310
+ readonly title: _angular_core.InputSignal<string | undefined>;
178
311
  protected user: WritableSignal<IPortalMember | null>;
179
312
  private userService;
180
313
  private leftNavService;
181
314
  ngOnInit(): void;
182
315
  onLogout(): void;
183
- static ɵfac: i0.ɵɵFactoryDeclaration<TopBarComponent, never>;
184
- static ɵcmp: i0.ɵɵComponentDeclaration<TopBarComponent, "lib-top-bar", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
316
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TopBarComponent, never>;
317
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TopBarComponent, "lib-top-bar", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
185
318
  }
186
319
 
187
320
  declare class LeftNavComponent {
188
321
  private _leftNavService;
322
+ sideNavContent: _angular_core.Signal<MatSidenavContent | undefined>;
189
323
  getOptions(): Set<ichec_angular_core.NavOption>;
190
- static ɵfac: i0.ɵɵFactoryDeclaration<LeftNavComponent, never>;
191
- static ɵcmp: i0.ɵɵComponentDeclaration<LeftNavComponent, "lib-left-nav", never, {}, {}, never, never, true, never>;
324
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LeftNavComponent, never>;
325
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LeftNavComponent, "lib-left-nav", never, {}, {}, never, never, true, never>;
192
326
  }
193
327
 
194
328
  interface LoginUser {
@@ -200,39 +334,42 @@ declare const LOGIN_USER: InjectionToken<LoginUser>;
200
334
  declare class LandingComponent implements OnInit {
201
335
  loginUser: LoginUser;
202
336
  loginError: WritableSignal<string>;
203
- message: i0.InputSignal<string | undefined>;
337
+ message: _angular_core.InputSignal<string | undefined>;
204
338
  private userService;
205
339
  private router;
206
340
  ngOnInit(): void;
207
341
  login(): rxjs.Subscription;
208
342
  onLoginError(error: HttpErrorResponse): void;
209
343
  onLoggedIn(): void;
210
- static ɵfac: i0.ɵɵFactoryDeclaration<LandingComponent, never>;
211
- static ɵcmp: i0.ɵɵComponentDeclaration<LandingComponent, "lib-landing", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
344
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LandingComponent, never>;
345
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<LandingComponent, "lib-landing", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
212
346
  }
213
347
 
214
348
  declare abstract class DetailView<T extends Identifiable> {
215
349
  protected item: WritableSignal<T | null>;
216
350
  protected route: ActivatedRoute;
217
351
  protected userService: UserService;
218
- protected restService: RestService<T>;
219
- constructor(restService: RestService<T>);
352
+ protected itemService: ItemService<T>;
353
+ constructor(itemService: ItemService<T>);
220
354
  onInit(): void;
221
- onItemAvailable(): void;
222
- onItemAndUserAvailable(_: IPortalMember): void;
355
+ onItemAvailable(item: T): void;
356
+ onItemAndUserAvailable(_item: T, _user: IPortalMember): void;
223
357
  private getItem;
358
+ onDelete(): void;
359
+ protected canEdit(): boolean;
360
+ protected canDelete(): boolean;
224
361
  }
225
362
 
226
363
  declare abstract class EditView<T extends Identifiable> {
227
364
  readonly typename: string;
228
365
  createMode: WritableSignal<boolean>;
229
- heading: i0.Signal<string>;
366
+ heading: _angular_core.Signal<string>;
230
367
  protected item: WritableSignal<T | null>;
231
368
  protected _route: ActivatedRoute;
232
369
  protected _location: Location;
233
370
  protected _userService: UserService;
234
371
  protected _restService: RestService<T>;
235
- constructor(_restServce: RestService<T>);
372
+ constructor(_restService: RestService<T>);
236
373
  onInit(): void;
237
374
  onItemAvailable(): void;
238
375
  onItemAndUserAvailable(_: IPortalMember): void;
@@ -254,36 +391,142 @@ declare abstract class EditView<T extends Identifiable> {
254
391
  protected onPostActions(_actions: Record<string, OptionAction>): void;
255
392
  }
256
393
 
257
- declare class ListView<T extends Identifiable> {
258
- user?: IPortalMember;
259
- protected items: WritableSignal<T[]>;
260
- displayedColumns: string[];
394
+ declare class ListView {
261
395
  protected _route: ActivatedRoute;
262
- protected _location: Location;
263
- protected _userService: UserService;
264
- protected _restService: RestService<T>;
265
- constructor(_restService: RestService<T>);
266
- onInit(): void;
267
- getItems(): void;
268
- private onUserChange;
396
+ protected userService: UserService;
397
+ protected user: _angular_core.WritableSignal<IPortalMember | null>;
398
+ getUser(): void;
269
399
  protected isSelfList(): boolean;
270
- goBack(): void;
400
+ }
401
+
402
+ declare class ListDataSource<T extends Identifiable> extends DataSource<T> {
403
+ length: _angular_core.WritableSignal<number>;
404
+ loading: _angular_core.WritableSignal<boolean>;
405
+ searchTerm: _angular_core.WritableSignal<string>;
406
+ pageSize: _angular_core.WritableSignal<number>;
407
+ private consumerType;
408
+ private items;
409
+ itemService: ItemService<T>;
410
+ private subscription;
411
+ private fetchedPages;
412
+ constructor(itemService: ItemService<T>, consumerType?: string);
413
+ connect(collectionViewer: CollectionViewer): Observable<T[]>;
414
+ hasTableConsumer(): boolean;
415
+ onRange(range: ListRange): void;
416
+ reset(searchTerm?: string, pageSize?: number): void;
417
+ fetchPage(idx: number): void;
418
+ fetch(query: IItemQuery): void;
419
+ onResponse(response: IPaginated<T>): void;
420
+ disconnect(): void;
421
+ }
422
+
423
+ interface TableColumn {
424
+ name: string;
425
+ title: string;
426
+ element_type: string;
427
+ }
428
+ declare class ListTableViewComponent implements OnInit, AfterViewInit {
429
+ itemType: _angular_core.InputSignal<string>;
430
+ columns: _angular_core.InputSignal<TableColumn[]>;
431
+ dataSource: _angular_core.InputSignal<ListDataSource<any> | undefined>;
432
+ searchFilter: _angular_core.InputSignal<string>;
433
+ pageSizeOptions: number[];
434
+ initialPageSize: number;
435
+ columnNames: _angular_core.Signal<string[]>;
436
+ sort: _angular_core.Signal<MatSort | undefined>;
437
+ paginator: _angular_core.Signal<MatPaginator | undefined>;
438
+ ngOnInit(): void;
439
+ ngAfterViewInit(): void;
440
+ reset(): void;
441
+ fetch(): void;
442
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListTableViewComponent, never>;
443
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListTableViewComponent, "lib-list-table-view", never, { "itemType": { "alias": "itemType"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "dataSource": { "alias": "dataSource"; "required": false; "isSignal": true; }; "searchFilter": { "alias": "searchFilter"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
444
+ }
445
+
446
+ interface Selectable<T extends Identifiable> {
447
+ title: string;
448
+ item: T;
449
+ }
450
+ declare class SelectTableComponent<T extends Identifiable> implements OnInit {
451
+ itemType: _angular_core.InputSignal<string>;
452
+ selected: _angular_core.InputSignal<T[]>;
453
+ options: _angular_core.InputSignal<Selectable<T>[]>;
454
+ columns: _angular_core.InputSignal<TableColumn[]>;
455
+ itemAdded: _angular_core.OutputEmitterRef<string>;
456
+ itemRemoved: _angular_core.OutputEmitterRef<number>;
457
+ searchChanged: _angular_core.OutputEmitterRef<string | null>;
458
+ columnNames: _angular_core.Signal<string[]>;
459
+ searchControl: FormControl<string | null>;
460
+ table: _angular_core.Signal<MatTable<any> | undefined>;
461
+ ngOnInit(): void;
462
+ remove(id: number): void;
463
+ add(): void;
464
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectTableComponent<any>, never>;
465
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SelectTableComponent<any>, "lib-select-table", never, { "itemType": { "alias": "itemType"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, { "itemAdded": "itemAdded"; "itemRemoved": "itemRemoved"; "searchChanged": "searchChanged"; }, never, never, true, never>;
466
+ }
467
+
468
+ declare class ListViewComponent<T extends Identifiable> implements OnInit, AfterViewInit {
469
+ viewType: _angular_core.InputSignal<string>;
470
+ itemService: _angular_core.InputSignal<ItemService<T> | undefined>;
471
+ itemDetailTemplate: _angular_core.InputSignal<TemplateRef<unknown> | null>;
472
+ columns: _angular_core.InputSignal<TableColumn[]>;
473
+ sortFields: _angular_core.InputSignal<string[]>;
474
+ noSelfItemsMessage: _angular_core.InputSignal<string | undefined>;
475
+ noItemsCanCreateMessage: _angular_core.InputSignal<string | undefined>;
476
+ noItemsMessage: _angular_core.InputSignal<string | undefined>;
477
+ selectedViewType: _angular_core.WritableSignal<string>;
478
+ pageSize: number;
479
+ pageSizeOptions: number[];
480
+ protected route: ActivatedRoute;
481
+ dataSource: ListDataSource<T> | undefined;
482
+ sort: _angular_core.Signal<MatSort | undefined>;
483
+ columnNames: _angular_core.Signal<string[]>;
484
+ searchTerm: string;
485
+ ngOnInit(): void;
486
+ ngAfterViewInit(): void;
487
+ onSearchChange(value: string): void;
488
+ canCreate(): boolean;
489
+ itemType(): string;
490
+ isTableView(): boolean;
491
+ resetDataSource(): void;
492
+ reset(): void;
493
+ viewChanged(event: MatButtonToggleChange): void;
494
+ protected isSelfList(): boolean;
495
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ListViewComponent<any>, never>;
496
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ListViewComponent<any>, "lib-list-view", never, { "viewType": { "alias": "viewType"; "required": false; "isSignal": true; }; "itemService": { "alias": "itemService"; "required": false; "isSignal": true; }; "itemDetailTemplate": { "alias": "itemDetailTemplate"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "sortFields": { "alias": "sortFields"; "required": false; "isSignal": true; }; "noSelfItemsMessage": { "alias": "noSelfItemsMessage"; "required": false; "isSignal": true; }; "noItemsCanCreateMessage": { "alias": "noItemsCanCreateMessage"; "required": false; "isSignal": true; }; "noItemsMessage": { "alias": "noItemsMessage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
271
497
  }
272
498
 
273
499
  declare class BackButtonComponent {
274
500
  protected location: Location;
275
501
  protected goBack(): void;
276
- static ɵfac: i0.ɵɵFactoryDeclaration<BackButtonComponent, never>;
277
- static ɵcmp: i0.ɵɵComponentDeclaration<BackButtonComponent, "lib-back-button", never, {}, {}, never, never, true, never>;
502
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BackButtonComponent, never>;
503
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BackButtonComponent, "lib-back-button", never, {}, {}, never, never, true, never>;
278
504
  }
279
505
 
280
506
  declare class DetailHeaderComponent {
281
- id: i0.InputSignal<number>;
282
- text: i0.InputSignal<string>;
283
- route: i0.InputSignal<string>;
284
- fullRoute: i0.Signal<string>;
285
- static ɵfac: i0.ɵɵFactoryDeclaration<DetailHeaderComponent, never>;
286
- static ɵcmp: i0.ɵɵComponentDeclaration<DetailHeaderComponent, "lib-detail-header", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "route": { "alias": "route"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
507
+ id: _angular_core.InputSignal<number>;
508
+ text: _angular_core.InputSignal<string>;
509
+ route: _angular_core.InputSignal<string>;
510
+ canEdit: _angular_core.InputSignal<boolean>;
511
+ canDelete: _angular_core.InputSignal<boolean>;
512
+ deleteClicked: _angular_core.OutputEmitterRef<void>;
513
+ fullRoute: _angular_core.Signal<string>;
514
+ deleteClick(): void;
515
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DetailHeaderComponent, never>;
516
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DetailHeaderComponent, "lib-detail-header", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "route": { "alias": "route"; "required": false; "isSignal": true; }; "canEdit": { "alias": "canEdit"; "required": false; "isSignal": true; }; "canDelete": { "alias": "canDelete"; "required": false; "isSignal": true; }; }, { "deleteClicked": "deleteClicked"; }, never, never, true, never>;
517
+ }
518
+
519
+ declare class SearchBarComponent implements AfterViewInit {
520
+ itemType: _angular_core.InputSignal<string>;
521
+ sortFields: _angular_core.InputSignal<string[]>;
522
+ sortAscending: _angular_core.WritableSignal<boolean>;
523
+ searchChanged: _angular_core.OutputEmitterRef<string>;
524
+ searchFilter: FormControl<any>;
525
+ ngAfterViewInit(): void;
526
+ clearSearch(): void;
527
+ searchEntered(): void;
528
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SearchBarComponent, never>;
529
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SearchBarComponent, "lib-search-bar", never, { "itemType": { "alias": "itemType"; "required": false; "isSignal": true; }; "sortFields": { "alias": "sortFields"; "required": false; "isSignal": true; }; }, { "searchChanged": "searchChanged"; }, never, never, true, never>;
287
530
  }
288
531
 
289
532
  interface IFileRecord {
@@ -313,22 +556,22 @@ interface IFileUpload {
313
556
  file: File;
314
557
  }
315
558
  declare class FileUploadComponent {
316
- files: i0.InputSignal<IFileRecord[]>;
317
- previewLoaded: i0.OutputEmitterRef<IPreview>;
318
- fileUploaded: i0.OutputEmitterRef<IFileUpload>;
559
+ files: _angular_core.InputSignal<IFileRecord[]>;
560
+ previewLoaded: _angular_core.OutputEmitterRef<IPreview>;
561
+ fileUploaded: _angular_core.OutputEmitterRef<IFileUpload>;
319
562
  protected onPreviewRead(name: string, content: string | ArrayBuffer): void;
320
563
  protected onFileUpload(name: string, event: Event): void;
321
564
  protected readFile(name: string, file: File): void;
322
- static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadComponent, never>;
323
- static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadComponent, "lib-file-upload", never, { "files": { "alias": "files"; "required": false; "isSignal": true; }; }, { "previewLoaded": "previewLoaded"; "fileUploaded": "fileUploaded"; }, never, never, true, never>;
565
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileUploadComponent, never>;
566
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileUploadComponent, "lib-file-upload", never, { "files": { "alias": "files"; "required": false; "isSignal": true; }; }, { "previewLoaded": "previewLoaded"; "fileUploaded": "fileUploaded"; }, never, never, true, never>;
324
567
  }
325
568
 
326
569
  declare class UserDetailComponent extends DetailView<IPortalMember> implements OnInit {
327
570
  protected typename: string;
328
571
  constructor();
329
572
  ngOnInit(): void;
330
- static ɵfac: i0.ɵɵFactoryDeclaration<UserDetailComponent, never>;
331
- static ɵcmp: i0.ɵɵComponentDeclaration<UserDetailComponent, "lib-user-detail", never, {}, {}, never, never, true, never>;
573
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserDetailComponent, never>;
574
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserDetailComponent, "lib-user-detail", never, {}, {}, never, never, true, never>;
332
575
  }
333
576
 
334
577
  declare class UserEditComponent extends EditView<IPortalMember> implements OnInit {
@@ -351,90 +594,117 @@ declare class UserEditComponent extends EditView<IPortalMember> implements OnIni
351
594
  onPreviewLoaded(preview: IPreview): void;
352
595
  onFileUploaded(upload: IFileUpload): void;
353
596
  protected saveFiles(item: IPortalMember): void;
354
- static ɵfac: i0.ɵɵFactoryDeclaration<UserEditComponent, never>;
355
- static ɵcmp: i0.ɵɵComponentDeclaration<UserEditComponent, "lib-user-edit", never, {}, {}, never, never, true, never>;
597
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserEditComponent, never>;
598
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserEditComponent, "lib-user-edit", never, {}, {}, never, never, true, never>;
356
599
  }
357
600
 
358
- declare class UserComponent extends ListView<IPortalMember> implements OnInit {
359
- constructor();
360
- ngOnInit(): void;
361
- static ɵfac: i0.ɵɵFactoryDeclaration<UserComponent, never>;
362
- static ɵcmp: i0.ɵɵComponentDeclaration<UserComponent, "lib-user", never, {}, {}, never, never, true, never>;
363
- }
364
-
365
- declare class UserSelectComponent {
366
- toAdd: WritableSignal<number>;
367
- selected: i0.InputSignal<IPortalMember[]>;
368
- options: i0.InputSignal<IPortalMember[]>;
369
- itemAdded: i0.OutputEmitterRef<number>;
370
- itemRemoved: i0.OutputEmitterRef<number>;
371
- table: i0.Signal<MatTable<any> | undefined>;
372
- tableColumns: string[];
373
- remove(id: number): void;
374
- add(): void;
375
- static ɵfac: i0.ɵɵFactoryDeclaration<UserSelectComponent, never>;
376
- static ɵcmp: i0.ɵɵComponentDeclaration<UserSelectComponent, "lib-user-select", never, { "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; }, { "itemAdded": "itemAdded"; "itemRemoved": "itemRemoved"; }, never, never, true, never>;
601
+ declare class UserComponent {
602
+ viewType: _angular_core.WritableSignal<string>;
603
+ itemService: UserService;
604
+ columns: TableColumn[];
605
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserComponent, never>;
606
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserComponent, "lib-user", never, {}, {}, never, never, true, never>;
377
607
  }
378
608
 
379
609
  declare class GroupDetailComponent extends DetailView<IGroup> implements OnInit {
380
610
  protected typename: string;
381
611
  constructor();
382
612
  ngOnInit(): void;
383
- static ɵfac: i0.ɵɵFactoryDeclaration<GroupDetailComponent, never>;
384
- static ɵcmp: i0.ɵɵComponentDeclaration<GroupDetailComponent, "lib-group-detail", never, {}, {}, never, never, true, never>;
613
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GroupDetailComponent, never>;
614
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GroupDetailComponent, "lib-group-detail", never, {}, {}, never, never, true, never>;
385
615
  }
386
616
 
387
- declare class GroupComponent extends ListView<IGroup> implements OnInit {
388
- displayedColumns: string[];
389
- constructor();
390
- ngOnInit(): void;
391
- static ɵfac: i0.ɵɵFactoryDeclaration<GroupComponent, never>;
392
- static ɵcmp: i0.ɵɵComponentDeclaration<GroupComponent, "lib-group", never, {}, {}, never, never, true, never>;
617
+ declare class GroupComponent {
618
+ itemService: GroupService;
619
+ columns: TableColumn[];
620
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GroupComponent, never>;
621
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GroupComponent, "lib-group", never, {}, {}, never, never, true, never>;
393
622
  }
394
623
 
395
- declare class OrganizationComponent extends ListView<Organization> implements OnInit {
396
- displayedColumns: string[];
397
- constructor();
398
- ngOnInit(): void;
399
- static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationComponent, never>;
400
- static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationComponent, "lib-organization", never, {}, {}, never, never, true, never>;
624
+ declare class AddressEditComponent {
625
+ countryOptions: _angular_core.InputSignal<ICountry[]>;
626
+ form: _angular_core.InputSignal<FormGroup<any> | undefined>;
627
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AddressEditComponent, never>;
628
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AddressEditComponent, "lib-address-edit", never, { "countryOptions": { "alias": "countryOptions"; "required": false; "isSignal": true; }; "form": { "alias": "form"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
629
+ }
630
+
631
+ declare class AddressDetailComponent {
632
+ address: _angular_core.InputSignal<IAddress | undefined>;
633
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AddressDetailComponent, never>;
634
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AddressDetailComponent, "lib-address-detail", never, { "address": { "alias": "address"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
635
+ }
636
+
637
+ declare class AddressForm {
638
+ private formBuilder;
639
+ form: _angular_forms.FormGroup<{
640
+ line1: _angular_forms.FormControl<string | null>;
641
+ line2: _angular_forms.FormControl<string | null>;
642
+ line3: _angular_forms.FormControl<string | null>;
643
+ city: _angular_forms.FormControl<string | null>;
644
+ region: _angular_forms.FormControl<string | null>;
645
+ postcode: _angular_forms.FormControl<string | null>;
646
+ country: _angular_forms.FormControl<string | null>;
647
+ }>;
648
+ setValue(item: IAddress): void;
649
+ updateItem(item: IAddress): IAddress;
650
+ }
651
+
652
+ declare class OrganizationComponent {
653
+ itemService: OrganizationService;
654
+ columns: TableColumn[];
655
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OrganizationComponent, never>;
656
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OrganizationComponent, "lib-organization", never, {}, {}, never, never, true, never>;
401
657
  }
402
658
 
403
659
  declare class OrganizationDetailComponent extends DetailView<IOrganization> implements OnInit {
404
660
  typename: string;
661
+ address: _angular_core.WritableSignal<IAddress | null>;
662
+ private addressService;
405
663
  constructor();
406
664
  ngOnInit(): void;
407
- static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationDetailComponent, never>;
408
- static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationDetailComponent, "lib-organization-detail", never, {}, {}, never, never, true, never>;
665
+ onItemAndUserAvailable(item: IOrganization, _user: IPortalMember): void;
666
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OrganizationDetailComponent, never>;
667
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OrganizationDetailComponent, "lib-organization-detail", never, {}, {}, never, never, true, never>;
668
+ }
669
+
670
+ declare class OrganizationForm {
671
+ private formBuilder;
672
+ form: FormGroup;
673
+ address: AddressForm;
674
+ constructor();
675
+ updateFromItem(item: IOrganization): void;
676
+ updateItem(item: IOrganization): IOrganization;
409
677
  }
410
678
 
411
679
  declare class OrganizationEditComponent extends EditView<IOrganization> implements OnInit {
412
- countryOptions: WritableSignal<string[]>;
413
- candidateMembers: WritableSignal<IPortalMember[]>;
414
- selectedMembers: WritableSignal<IPortalMember[]>;
415
680
  readonly typename: string;
416
- private formBuilder;
417
- form: _angular_forms.FormGroup<{
418
- name: _angular_forms.FormControl<string | null>;
419
- acronym: _angular_forms.FormControl<string | null>;
420
- description: _angular_forms.FormControl<string | null>;
421
- address: _angular_forms.FormControl<string | null>;
422
- website: _angular_forms.FormControl<string | null>;
423
- country: _angular_forms.FormControl<string | null>;
424
- }>;
681
+ countryOptions: _angular_core.WritableSignal<ICountry[]>;
682
+ candidateMembers: _angular_core.WritableSignal<Selectable<IPortalMember>[]>;
683
+ selectedMembers: _angular_core.WritableSignal<IPortalMember[]>;
684
+ columns: TableColumn[];
685
+ form: OrganizationForm;
686
+ address: IAddress;
687
+ addressService: AddressService;
425
688
  constructor();
426
689
  ngOnInit(): void;
427
690
  onItemAndUserAvailable(_: IPortalMember): void;
691
+ protected updateCandidates(users: IPaginated<IPortalMember>): void;
428
692
  submit(): void;
429
- updateFromForm(item: IOrganization): IOrganization;
693
+ protected fetchAddress(url: string): void;
694
+ protected updateAddress(): void;
695
+ protected createAddress(): Observable<IAddress>;
696
+ protected onAddressUpdated(address: IAddress): void;
697
+ protected onAddressCreated(address: IAddress): void;
698
+ protected syncFromForm(): void;
430
699
  protected getTemplateItem(): IOrganization;
431
700
  protected onPostActions(actions: Record<string, OptionAction>): void;
432
701
  protected onCountryChoices(choices: OptionActionChoice[]): void;
433
702
  onMemberRemoved(id: number): void;
434
- onMemberAdded(id: number): void;
435
- static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationEditComponent, never>;
436
- static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationEditComponent, "lib-organization-edit", never, {}, {}, never, never, true, never>;
703
+ onMemberAdded(title: string): void;
704
+ onSearchChanged(searchTerm: string | null): void;
705
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<OrganizationEditComponent, never>;
706
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<OrganizationEditComponent, "lib-organization-edit", never, {}, {}, never, never, true, never>;
437
707
  }
438
708
 
439
- export { ApiError, BackButtonComponent, DetailHeaderComponent, DetailView, ENDPOINT_URL, EditView, ErrorCode, FileRecord, FileUploadComponent, Group, GroupComponent, GroupDetailComponent, GroupService, LOGIN_USER, LandingComponent, LeftNavComponent, LeftNavService, ListView, Organization, OrganizationComponent, OrganizationDetailComponent, OrganizationEditComponent, OrganizationService, PortalMember, RestService, TopBarComponent, UserComponent, UserDetailComponent, UserEditComponent, UserSelectComponent, UserService };
440
- export type { IFileRecord, IFileUpload, IGroup, IOrganization, IPortalMember, IPreview, IRestOptions, Identifiable, LeftNavCategory, LeftNavOption, NavGroup, NavOption, OptionAction, OptionActionChoice };
709
+ export { Address, AddressDetailComponent, AddressEditComponent, AddressForm, AddressService, ApiError, BackButtonComponent, DetailHeaderComponent, DetailView, ENDPOINT_URL, EditView, ErrorCode, FileRecord, FileUploadComponent, Group, GroupComponent, GroupDetailComponent, GroupService, ItemQuery, ItemService, LOGIN_USER, LandingComponent, LeftNavComponent, LeftNavService, ListTableViewComponent, ListView, ListViewComponent, Organization, OrganizationComponent, OrganizationDetailComponent, OrganizationEditComponent, OrganizationService, Paginated, Permission, PortalMember, ResolvedPermission, RestService, SearchBarComponent, SelectTableComponent, TopBarComponent, UserComponent, UserDetailComponent, UserEditComponent, UserService };
710
+ export type { IAddress, ICountry, IFileRecord, IFileUpload, IGroup, IItemQuery, IOrganization, IPaginated, IPermission, IPortalMember, IPreview, IRestOptions, Identifiable, LeftNavCategory, LeftNavOption, NavGroup, NavOption, OptionAction, OptionActionChoice, Selectable, TableColumn };