spiderly 19.0.3 → 19.0.4

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.
Files changed (29) hide show
  1. package/fesm2022/spiderly.mjs +456 -210
  2. package/fesm2022/spiderly.mjs.map +1 -1
  3. package/lib/components/layout/{layout-base.component.d.ts → layout.component.d.ts} +14 -6
  4. package/lib/components/layout/profile-avatar/profile-avatar.component.d.ts +42 -0
  5. package/lib/components/layout/sidemenu-topbar/sidemenu-topbar.component.d.ts +18 -0
  6. package/lib/components/layout/topbar/topbar.component.d.ts +9 -40
  7. package/lib/components/not-found/not-found.component.d.ts +1 -0
  8. package/lib/components/spiderly-data-table/spiderly-data-table.component.d.ts +2 -2
  9. package/lib/components/spiderly-data-view/spiderly-data-view.component.d.ts +59 -0
  10. package/lib/components/spiderly-form-control/spiderly-form-control.d.ts +7 -6
  11. package/lib/controls/spiderly-autocomplete/spiderly-autocomplete.component.d.ts +10 -3
  12. package/lib/directives/template-type.directive.d.ts +7 -0
  13. package/lib/entities/base-entity.d.ts +0 -10
  14. package/lib/entities/table-filter-context.d.ts +7 -4
  15. package/lib/entities/table-filter-sort-meta.d.ts +2 -2
  16. package/lib/entities/table-filter.d.ts +14 -4
  17. package/lib/enums/match-mode-enum-codes.d.ts +8 -0
  18. package/lib/services/config-base.service.d.ts +1 -0
  19. package/package.json +1 -1
  20. package/public-api.d.ts +5 -1
  21. package/styles/components/layout/topbar/topbar.component.scss +33 -0
  22. package/styles/components/spiderly-data-view/spiderly-data-view.component.scss +50 -0
  23. package/styles/components/spiderly-panels/panel-footer/panel-footer.component.scss +1 -1
  24. package/styles/styles/layout/_main.scss +4 -0
  25. package/styles/styles/layout/_menu.scss +1 -1
  26. package/styles/styles/layout/_topbar.scss +2 -2
  27. package/styles/styles/layout/layout.scss +0 -1
  28. package/styles/styles/shared.scss +10 -4
  29. package/styles/styles/layout/_config.scss +0 -42
@@ -1,20 +1,28 @@
1
- import { OnDestroy, Renderer2 } from '@angular/core';
1
+ import { ElementRef, OnDestroy, Renderer2 } from '@angular/core';
2
2
  import { Router } from '@angular/router';
3
3
  import { Subscription } from 'rxjs';
4
4
  import { AppSidebarComponent } from './sidebar/sidebar.component';
5
- import { AppTopBarComponent } from './topbar/topbar.component';
5
+ import { SideMenuTopBarComponent } from './sidemenu-topbar/sidemenu-topbar.component';
6
6
  import { LayoutBaseService } from '../../services/app-layout-base.service';
7
+ import { SpiderlyMenuItem } from './sidebar/sidebar-menu.component';
8
+ import { MenuItem } from 'primeng/api';
7
9
  import * as i0 from "@angular/core";
8
- export declare class LayoutBaseComponent implements OnDestroy {
10
+ export declare class SpiderlyLayoutComponent implements OnDestroy {
9
11
  protected layoutService: LayoutBaseService;
10
12
  protected renderer: Renderer2;
11
13
  protected router: Router;
14
+ menu: SpiderlyMenuItem[];
15
+ sideMenu: MenuItem[];
16
+ topMenu: MenuItem[];
17
+ isSideMenuLayout: boolean;
12
18
  overlayMenuOpenSubscription: Subscription;
13
19
  menuOutsideClickListener: any;
14
20
  profileMenuOutsideClickListener: any;
15
21
  appSidebar: AppSidebarComponent;
16
- appTopbar: AppTopBarComponent;
22
+ sidemenuTopbar: SideMenuTopBarComponent;
23
+ topbarmenu: ElementRef;
17
24
  constructor(layoutService: LayoutBaseService, renderer: Renderer2, router: Router);
25
+ ngOnInit(): void;
18
26
  hideMenu(): void;
19
27
  hideProfileMenu(): void;
20
28
  blockBodyScroll(): void;
@@ -32,6 +40,6 @@ export declare class LayoutBaseComponent implements OnDestroy {
32
40
  };
33
41
  ngOnDestroy(): void;
34
42
  onAfterNgDestroy: () => void;
35
- static ɵfac: i0.ɵɵFactoryDeclaration<LayoutBaseComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<LayoutBaseComponent, "layout-base", never, {}, {}, never, never, true, never>;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpiderlyLayoutComponent, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpiderlyLayoutComponent, "spiderly-layout", never, { "menu": { "alias": "menu"; "required": false; }; "isSideMenuLayout": { "alias": "isSideMenuLayout"; "required": false; }; }, {}, never, ["[ACTIONS]"], true, never>;
37
45
  }
@@ -0,0 +1,42 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import { Router } from '@angular/router';
3
+ import { LayoutBaseService } from '../../../services/app-layout-base.service';
4
+ import { User } from '../../../entities/security-entities';
5
+ import { AuthBaseService } from '../../../services/auth-base.service';
6
+ import { TranslocoService } from '@jsverse/transloco';
7
+ import { ConfigBaseService } from '../../../services/config-base.service';
8
+ import * as i0 from "@angular/core";
9
+ interface ProfileAvatarModalMenuItem {
10
+ label?: string;
11
+ icon?: string;
12
+ showSeparator?: boolean;
13
+ onClick?: () => void;
14
+ showNotificationBadge?: boolean;
15
+ }
16
+ export declare class ProfileAvatarComponent {
17
+ layoutService: LayoutBaseService;
18
+ private authService;
19
+ protected router: Router;
20
+ private translocoService;
21
+ config: ConfigBaseService;
22
+ isSideMenuLayout: boolean;
23
+ private initTopBarSubscription;
24
+ currentUser: User;
25
+ userProfilePath: string;
26
+ unreadNotificationsCount: number;
27
+ menuItems: ProfileAvatarModalMenuItem[];
28
+ avatarLabel: string;
29
+ showProfileIcon: boolean;
30
+ notificationMenuItem: ProfileAvatarModalMenuItem;
31
+ menu: ElementRef;
32
+ topbarProfileDropdownMenuButton: ElementRef;
33
+ constructor(layoutService: LayoutBaseService, authService: AuthBaseService, router: Router, translocoService: TranslocoService, config: ConfigBaseService);
34
+ ngOnInit(): Promise<void>;
35
+ onAfterNgOnInit: () => void;
36
+ onDocumentClick(event: any): void;
37
+ routeToUserPage(): void;
38
+ ngOnDestroy(): void;
39
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProfileAvatarComponent, never>;
40
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProfileAvatarComponent, "spiderly-profile-avatar", never, { "isSideMenuLayout": { "alias": "isSideMenuLayout"; "required": false; }; }, {}, never, never, true, never>;
41
+ }
42
+ export {};
@@ -0,0 +1,18 @@
1
+ import { ConfigBaseService } from '../../../services/config-base.service';
2
+ import { TranslocoService } from '@jsverse/transloco';
3
+ import { Router } from '@angular/router';
4
+ import { ElementRef } from '@angular/core';
5
+ import { LayoutBaseService } from '../../../services/app-layout-base.service';
6
+ import * as i0 from "@angular/core";
7
+ export declare class SideMenuTopBarComponent {
8
+ layoutService: LayoutBaseService;
9
+ protected router: Router;
10
+ private config;
11
+ private translocoService;
12
+ companyName: string;
13
+ menuButton: ElementRef;
14
+ constructor(layoutService: LayoutBaseService, router: Router, config: ConfigBaseService, translocoService: TranslocoService);
15
+ ngOnInit(): Promise<void>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<SideMenuTopBarComponent, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<SideMenuTopBarComponent, "spiderly-sidemenu-topbar", never, {}, {}, never, never, true, never>;
18
+ }
@@ -1,45 +1,14 @@
1
- import { TranslocoService } from '@jsverse/transloco';
2
- import { Router } from '@angular/router';
3
- import { ElementRef, OnDestroy } from '@angular/core';
4
- import { AuthBaseService } from '../../../services/auth-base.service';
5
- import { LayoutBaseService } from '../../../services/app-layout-base.service';
6
- import { ApiSecurityService } from '../../../services/api.service.security';
7
1
  import { ConfigBaseService } from '../../../services/config-base.service';
8
- import { User } from '../../../entities/security-entities';
2
+ import { MenuItem } from 'primeng/api';
9
3
  import * as i0 from "@angular/core";
10
- interface SpiderlyMenuItem {
11
- label?: string;
12
- icon?: string;
13
- showSeparator?: boolean;
14
- onClick?: () => void;
15
- showNotificationBadge?: boolean;
16
- }
17
- export declare class AppTopBarComponent implements OnDestroy {
18
- layoutService: LayoutBaseService;
19
- private authService;
20
- private apiService;
21
- protected router: Router;
22
- private translocoService;
4
+ export declare class TopBarComponent {
23
5
  private config;
24
- private initTopBarSubscription;
25
- currentUser: User;
26
- userProfilePath: string;
27
- unreadNotificationsCount: number;
28
- menuItems: SpiderlyMenuItem[];
29
- avatarLabel: string;
6
+ menu: MenuItem[];
30
7
  companyName: string;
31
- showProfileIcon: boolean;
32
- notificationMenuItem: SpiderlyMenuItem;
33
- menuButton: ElementRef;
34
- menu: ElementRef;
35
- topbarProfileDropdownMenuButton: ElementRef;
36
- constructor(layoutService: LayoutBaseService, authService: AuthBaseService, apiService: ApiSecurityService, router: Router, translocoService: TranslocoService, config: ConfigBaseService);
37
- ngOnInit(): Promise<void>;
38
- onAfterNgOnInit: () => void;
39
- onDocumentClick(event: any): void;
40
- routeToUserPage(): void;
41
- ngOnDestroy(): void;
42
- static ɵfac: i0.ɵɵFactoryDeclaration<AppTopBarComponent, never>;
43
- static ɵcmp: i0.ɵɵComponentDeclaration<AppTopBarComponent, "topbar", never, {}, {}, never, never, true, never>;
8
+ logoPath: string;
9
+ isSideMenuActive: boolean;
10
+ constructor(config: ConfigBaseService);
11
+ ngOnInit(): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<TopBarComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<TopBarComponent, "spiderly-topbar", never, { "menu": { "alias": "menu"; "required": false; }; }, {}, never, ["[ACTIONS]"], true, never>;
44
14
  }
45
- export {};
@@ -3,6 +3,7 @@ import * as i0 from "@angular/core";
3
3
  export declare class NotFoundComponent {
4
4
  private config;
5
5
  companyName: string;
6
+ logoPath: string;
6
7
  constructor(config: ConfigBaseService);
7
8
  static ɵfac: i0.ɵɵFactoryDeclaration<NotFoundComponent, never>;
8
9
  static ɵcmp: i0.ɵɵComponentDeclaration<NotFoundComponent, "not-found", never, {}, {}, never, never, true, never>;
@@ -73,7 +73,7 @@ export declare class SpiderlyDataTableComponent implements OnInit {
73
73
  private loadFormArrayItems;
74
74
  getColHeaderWidth(filterType: string): "min-width: 12rem;" | "min-width: 10rem;" | "min-width: 8rem;" | "width: 0rem;";
75
75
  getColMatchModeOptions(filterType: string): SelectItem<any>[];
76
- getColMatchMode(filterType: string): "equals" | "contains" | "in";
76
+ getColMatchMode(filterType: string): any;
77
77
  isDropOrMulti(filterType: string): boolean;
78
78
  navigateToDetails(rowId: number): void;
79
79
  deleteObject(rowId: number): void;
@@ -112,7 +112,7 @@ export declare class Action {
112
112
  });
113
113
  }
114
114
  export declare class Column<T = any> {
115
- name: string;
115
+ name?: string;
116
116
  field?: string & keyof T;
117
117
  filterField?: string & keyof T;
118
118
  filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric';
@@ -0,0 +1,59 @@
1
+ import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
2
+ import { ActivatedRoute, Router } from '@angular/router';
3
+ import { Table, TableFilterEvent, TableLazyLoadEvent } from 'primeng/table';
4
+ import { Observable } from 'rxjs';
5
+ import { TranslocoService } from '@jsverse/transloco';
6
+ import { TableResponse } from '../../entities/table-response';
7
+ import { TableFilter } from '../../entities/table-filter';
8
+ import { Action } from '../spiderly-data-table/spiderly-data-table.component';
9
+ import { SelectItem } from 'primeng/api';
10
+ import { BaseEntity } from '../../entities/base-entity';
11
+ import { PrimengOption } from '../../entities/primeng-option';
12
+ import * as i0 from "@angular/core";
13
+ export declare class SpiderlyDataViewComponent<T> implements OnInit {
14
+ private router;
15
+ private route;
16
+ private translocoService;
17
+ private locale;
18
+ table: Table;
19
+ items: T[];
20
+ rows: number;
21
+ filters: Filter<T>[];
22
+ totalRecords: number;
23
+ showCardWrapper: boolean;
24
+ onLazyLoad: EventEmitter<TableFilter>;
25
+ getTableDataObservableMethod: (tableFilter: TableFilter) => Observable<TableResponse>;
26
+ lastLazyLoadEvent: TableLazyLoadEvent;
27
+ loading: boolean;
28
+ matchModeDateOptions: SelectItem[];
29
+ matchModeNumberOptions: SelectItem[];
30
+ cardBody: TemplateRef<any>;
31
+ constructor(router: Router, route: ActivatedRoute, translocoService: TranslocoService, locale: string);
32
+ ngOnInit(): void;
33
+ lazyLoad(event: TableLazyLoadEvent): void;
34
+ filter(event: TableFilterEvent): void;
35
+ getDefaultMatchMode(filterType: string): any;
36
+ getMatchModeOptions(filterType: string): SelectItem<any>[];
37
+ navigateToDetails(rowId: number): void;
38
+ reload(): void;
39
+ colTrackByFn(index: any, item: any): any;
40
+ actionTrackByFn(index: any, item: Action): string;
41
+ applyFilters: () => void;
42
+ clearFilters(): void;
43
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpiderlyDataViewComponent<any>, never>;
44
+ static ɵcmp: i0.ɵɵComponentDeclaration<SpiderlyDataViewComponent<any>, "spiderly-data-view", never, { "items": { "alias": "items"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "filters": { "alias": "filters"; "required": false; }; "showCardWrapper": { "alias": "showCardWrapper"; "required": false; }; "getTableDataObservableMethod": { "alias": "getTableDataObservableMethod"; "required": false; }; }, { "onLazyLoad": "onLazyLoad"; }, ["cardBody"], never, true, never>;
45
+ }
46
+ export interface DataViewCardBody<T> {
47
+ $implicit: T;
48
+ item: T;
49
+ index: number;
50
+ }
51
+ export interface Filter<T extends BaseEntity> {
52
+ name?: string;
53
+ field?: string & keyof T;
54
+ filterField?: string & keyof T;
55
+ filterType?: 'text' | 'date' | 'multiselect' | 'boolean' | 'numeric';
56
+ filterPlaceholder?: string;
57
+ showMatchModes?: boolean;
58
+ dropdownOrMultiselectValues?: PrimengOption[];
59
+ }
@@ -8,19 +8,19 @@ export declare class SpiderlyFormControl<T = any> extends FormControl<T> {
8
8
  label: string;
9
9
  labelForDisplay: string;
10
10
  required: boolean;
11
+ parentClassName: string;
11
12
  private _spiderlyValidator;
12
13
  constructor(value: any, opts?: FormControlOptions, required?: boolean);
13
14
  getRawValue(): T;
14
15
  get validator(): SpiderlyValidatorFn | null;
15
16
  set validator(validator: SpiderlyValidatorFn | null);
16
17
  }
18
+ type SpiderlyControlsOfType<TValue> = {
19
+ [P in keyof TValue]: SpiderlyFormControl<TValue[P]>;
20
+ };
17
21
  export declare class SpiderlyFormGroup<TValue = any> extends FormGroup {
18
- controls: {
19
- [P in keyof TValue]: SpiderlyFormControl<TValue[P]>;
20
- };
21
- constructor(controls: {
22
- [P in keyof TValue]: SpiderlyFormControl<TValue[P]>;
23
- });
22
+ controls: SpiderlyControlsOfType<TValue>;
23
+ constructor(controls: SpiderlyControlsOfType<TValue>);
24
24
  getRawValue(): TValue;
25
25
  name?: string;
26
26
  mainDTOName?: string;
@@ -35,3 +35,4 @@ export declare class SpiderlyFormArray<TValue = any> extends FormArray {
35
35
  translationKey: string;
36
36
  controlNamesFromHtml?: string[];
37
37
  }
38
+ export {};
@@ -1,18 +1,25 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { AutoCompleteCompleteEvent } from 'primeng/autocomplete';
2
+ import { AutoCompleteCompleteEvent, AutoCompleteSelectEvent } from 'primeng/autocomplete';
3
3
  import { BaseAutocompleteControl } from '../base-autocomplete-control';
4
4
  import { TranslocoService } from '@jsverse/transloco';
5
+ import { ValidatorAbstractService } from '../../services/validator-abstract.service';
6
+ import { SpiderlyFormControl } from '../../components/spiderly-form-control/spiderly-form-control';
7
+ import { PrimengOption } from '../../entities/primeng-option';
5
8
  import * as i0 from "@angular/core";
6
9
  export declare class SpiderlyAutocompleteComponent extends BaseAutocompleteControl implements OnInit {
7
10
  protected translocoService: TranslocoService;
11
+ private validatorService;
8
12
  appendTo: any;
9
13
  showClear: boolean;
10
14
  emptyMessage: string;
11
15
  displayName: string;
12
- constructor(translocoService: TranslocoService);
16
+ helperFormControl: SpiderlyFormControl<PrimengOption>;
17
+ constructor(translocoService: TranslocoService, validatorService: ValidatorAbstractService);
13
18
  ngOnInit(): void;
14
19
  search(event: AutoCompleteCompleteEvent): void;
15
- select(event: any): void;
20
+ select(event: AutoCompleteSelectEvent): void;
21
+ clear(): void;
22
+ autocompleteMarkAsDirty(): void;
16
23
  static ɵfac: i0.ɵɵFactoryDeclaration<SpiderlyAutocompleteComponent, never>;
17
24
  static ɵcmp: i0.ɵɵComponentDeclaration<SpiderlyAutocompleteComponent, "spiderly-autocomplete", never, { "appendTo": { "alias": "appendTo"; "required": false; }; "showClear": { "alias": "showClear"; "required": false; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; }; "displayName": { "alias": "displayName"; "required": false; }; }, {}, never, never, true, never>;
18
25
  }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class SpiderlyTemplateTypeDirective<T> {
3
+ templateType?: T;
4
+ static ngTemplateContextGuard<T>(dir: SpiderlyTemplateTypeDirective<T>, ctx: unknown): ctx is T;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<SpiderlyTemplateTypeDirective<any>, never>;
6
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SpiderlyTemplateTypeDirective<any>, "[templateType]", never, { "templateType": { "alias": "templateType"; "required": false; }; }, {}, never, never, true, never>;
7
+ }
@@ -1,14 +1,4 @@
1
1
  export declare class BaseEntity {
2
- pipedProperties?: PipedProperty[];
3
2
  typeName?: string;
4
3
  constructor(typeName: string);
5
4
  }
6
- export declare class PipedProperty {
7
- pipe: PropertyPipes;
8
- control: string;
9
- constructor(p: PropertyPipes, c: string);
10
- }
11
- export declare enum PropertyPipes {
12
- IntegerPipe = 0,
13
- DecimalPipe = 1
14
- }
@@ -1,5 +1,8 @@
1
- export declare class TableFilterContext {
2
- Value: any;
3
- MatchMode: string;
4
- Operator: string;
1
+ import { MatchModeCodes } from "../enums/match-mode-enum-codes";
2
+ export declare class TableFilterContext<T = any> {
3
+ matchMode: AllowedMatchModes<T>;
4
+ value: T;
5
+ operator?: string;
5
6
  }
7
+ type AllowedMatchModes<T> = T extends string ? MatchModeCodes.Contains | MatchModeCodes.StartsWith | MatchModeCodes.Equals : T extends boolean ? MatchModeCodes.Equals : T extends Date ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan : T extends number ? MatchModeCodes.Equals | MatchModeCodes.GreaterThan | MatchModeCodes.LessThan | MatchModeCodes.In : MatchModeCodes;
8
+ export {};
@@ -1,4 +1,4 @@
1
1
  export declare class TableFilterSortMeta {
2
- Field: string;
3
- Order: number;
2
+ field: string;
3
+ order: number;
4
4
  }
@@ -1,8 +1,13 @@
1
1
  import { BaseEntity } from "../entities/base-entity";
2
- import { TableFilterContext } from "../entities/table-filter-context";
3
2
  import { TableFilterSortMeta } from "../entities/table-filter-sort-meta";
4
- export declare class TableFilter extends BaseEntity {
5
- filters?: Map<string, TableFilterContext[]>;
3
+ import { MatchModeCodes } from "../enums/match-mode-enum-codes";
4
+ export declare class TableFilter<T extends BaseEntity = any> extends BaseEntity {
5
+ filters?: {
6
+ [K in keyof T]?: {
7
+ value: any;
8
+ matchMode: MatchModeCodes;
9
+ }[];
10
+ };
6
11
  first?: number;
7
12
  rows?: number;
8
13
  sortField?: string;
@@ -11,7 +16,12 @@ export declare class TableFilter extends BaseEntity {
11
16
  additionalFilterIdInt?: number;
12
17
  additionalFilterIdLong?: number;
13
18
  constructor({ filters, first, rows, sortField, sortOrder, multiSortMeta, additionalFilterIdInt, additionalFilterIdLong, }?: {
14
- filters?: Map<string, TableFilterContext[]>;
19
+ filters?: {
20
+ [K in keyof T]?: {
21
+ value: any;
22
+ matchMode: MatchModeCodes;
23
+ }[];
24
+ };
15
25
  first?: number;
16
26
  rows?: number;
17
27
  sortField?: string;
@@ -0,0 +1,8 @@
1
+ export declare enum MatchModeCodes {
2
+ StartsWith = 0,
3
+ Contains = 1,
4
+ Equals = 2,
5
+ LessThan = 3,
6
+ GreaterThan = 4,
7
+ In = 5
8
+ }
@@ -18,6 +18,7 @@ export declare class ConfigBaseService {
18
18
  headers: HttpHeaders;
19
19
  params: HttpParams;
20
20
  };
21
+ logoPath: string;
21
22
  constructor();
22
23
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfigBaseService, never>;
23
24
  static ɵprov: i0.ɵɵInjectableDeclaration<ConfigBaseService>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spiderly",
3
- "version": "19.0.3",
3
+ "version": "19.0.4",
4
4
  "author": "Filip Trivan",
5
5
  "license": "MIT",
6
6
  "description": "Spiderly Angular Library to use in combination with Spiderly.",
package/public-api.d.ts CHANGED
@@ -36,6 +36,7 @@ export * from './lib/components/spiderly-buttons/spiderly-button/spiderly-button
36
36
  export * from './lib/components/spiderly-buttons/spiderly-split-button/spiderly-split-button.component';
37
37
  export * from './lib/components/spiderly-buttons/spiderly-button-base/spiderly-button-base';
38
38
  export * from './lib/components/spiderly-data-table/spiderly-data-table.component';
39
+ export * from './lib/components/spiderly-data-view/spiderly-data-view.component';
39
40
  export * from './lib/components/spiderly-delete-dialog/spiderly-delete-confirmation.component';
40
41
  export * from './lib/components/spiderly-form-control/spiderly-form-control';
41
42
  export * from './lib/components/spiderly-panels/panel-body/panel-body.component';
@@ -47,8 +48,9 @@ export * from './lib/components/spiderly-panels/spiderly-panels.module';
47
48
  export * from './lib/components/layout/sidebar/sidebar-menu.component';
48
49
  export * from './lib/components/layout/sidebar/menuitem.component';
49
50
  export * from './lib/components/layout/sidebar/sidebar.component';
51
+ export * from './lib/components/layout/sidemenu-topbar/sidemenu-topbar.component';
52
+ export * from './lib/components/layout/layout.component';
50
53
  export * from './lib/components/layout/topbar/topbar.component';
51
- export * from './lib/components/layout/layout-base.component';
52
54
  export * from './lib/entities/base-entity';
53
55
  export * from './lib/entities/codebook';
54
56
  export * from './lib/entities/last-menu-icon-index-clicked';
@@ -69,6 +71,7 @@ export * from './lib/entities/init-top-bar-data';
69
71
  export * from './lib/entities/is-authorized-for-save-event';
70
72
  export * from './lib/enums/security-enums';
71
73
  export * from './lib/enums/verification-type-codes';
74
+ export * from './lib/enums/match-mode-enum-codes';
72
75
  export * from './lib/guards/auth.guard';
73
76
  export * from './lib/guards/not-auth.guard';
74
77
  export * from './lib/handlers/spiderly-error-handler';
@@ -88,3 +91,4 @@ export * from './lib/services/spiderly-transloco-loader';
88
91
  export * from './lib/services/translate-labels-abstract.service';
89
92
  export * from './lib/services/validator-abstract.service';
90
93
  export * from './lib/services/app-layout-base.service';
94
+ export * from './lib/directives/template-type.directive';
@@ -0,0 +1,33 @@
1
+ .topbar-wrapper {
2
+ background-color: var(--p-content-background);
3
+ width: 100%;
4
+ border-bottom: 1px solid var(--p-content-border-color);
5
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
6
+ position: sticky;
7
+ top: 0;
8
+ left: 0;
9
+ z-index: 1000;
10
+ }
11
+
12
+ .topbar {
13
+ max-width: 1100px;
14
+ margin: auto;
15
+ }
16
+
17
+ ::ng-deep{
18
+ .p-menubar-item-link {
19
+ padding: 10px !important;
20
+ font-size: 15px !important;
21
+ .pi {
22
+ font-size: 15px;
23
+ }
24
+ }
25
+ .p-menubar-button {
26
+ width: 35px !important;
27
+ height: 35px !important;
28
+ .p-icon {
29
+ width: 16px;
30
+ height: 16px;
31
+ }
32
+ }
33
+ }
@@ -0,0 +1,50 @@
1
+ ::ng-deep{
2
+ .p-datatable-tbody {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: 18px;
6
+ }
7
+
8
+ .p-datatable-header {
9
+ margin-bottom: 36px;
10
+ border: 0 !important;
11
+ padding: 0 !important;
12
+ background-color: transparent !important;
13
+ }
14
+
15
+ .p-fluid {
16
+ width: 100% !important;
17
+ }
18
+
19
+ .p-inputtext {
20
+ width: 100% !important;
21
+ }
22
+
23
+ .p-inputnumber {
24
+ width: 100% !important;
25
+ }
26
+
27
+ .p-datepicker {
28
+ width: 100% !important;
29
+ }
30
+ }
31
+
32
+ .data-view-grid {
33
+ display: grid;
34
+ gap: 18px;
35
+ grid-template-columns: 1fr 1fr 1fr;
36
+ margin-bottom: 18px;
37
+ }
38
+
39
+ @media (max-width: 1080px) {
40
+ .data-view-grid {
41
+ gap: 12px;
42
+ grid-template-columns: 1fr 1fr;
43
+ }
44
+ }
45
+
46
+ @media (max-width: 500px) {
47
+ .data-view-grid {
48
+ grid-template-columns: 1fr;
49
+ }
50
+ }
@@ -3,7 +3,7 @@
3
3
  align-items: center;
4
4
  justify-content: space-between;
5
5
  gap: 10px;
6
- border-top: 1px solid #dee2e6;
6
+ border-top: 1px solid var(--p-content-border-color);
7
7
  border-bottom-right-radius: var(--p-content-border-radius);
8
8
  border-bottom-left-radius: var(--p-content-border-radius);
9
9
  padding: 18px;
@@ -21,6 +21,10 @@ body {
21
21
  -moz-osx-font-smoothing: grayscale;
22
22
  }
23
23
 
24
+ .dark body {
25
+ background-color: var(--p-surface-950);
26
+ }
27
+
24
28
  a {
25
29
  text-decoration: none;
26
30
  color: var(--p-primary-color);
@@ -86,7 +86,7 @@
86
86
  }
87
87
 
88
88
  &:hover {
89
- background-color: var(--p-surface-100);
89
+ background-color: var(--p-content-hover-background);
90
90
  }
91
91
 
92
92
  &:focus {
@@ -51,7 +51,7 @@
51
51
 
52
52
  &:hover {
53
53
  color: var(--p-text-color);
54
- background-color: var(--p-surface-100);
54
+ background-color: var(--p-content-hover-background);
55
55
  }
56
56
 
57
57
  &:focus {
@@ -210,7 +210,7 @@
210
210
 
211
211
  &:hover {
212
212
  color: var(--p-text-color);
213
- background-color: var(--p-surface-100);
213
+ background-color: var(--p-content-hover-background);
214
214
  }
215
215
 
216
216
  &:focus {
@@ -4,7 +4,6 @@
4
4
  @use "./_main";
5
5
  @use "./_topbar";
6
6
  @use "./_menu";
7
- @use "./_config";
8
7
  @use "./_content";
9
8
  @use "./_footer";
10
9
  @use "./_responsive";
@@ -276,13 +276,13 @@
276
276
  }
277
277
 
278
278
  .gray-separator{
279
- border-top: 1px solid $shade400;
279
+ border-top: 1px solid var(--p-content-border-color);
280
280
  width: 100%;
281
281
  }
282
282
 
283
283
  // FT: You need to manually adjust the height
284
284
  .vertical-gray-separator{
285
- border-left: 1px solid $shade400;
285
+ border-left: 1px solid var(--p-content-border-color);
286
286
  }
287
287
 
288
288
  .hover-card {
@@ -292,7 +292,7 @@
292
292
  }
293
293
 
294
294
  .hover-card:hover {
295
- background-color: var(--p-surface-100);
295
+ background-color: var(--p-content-hover-background);
296
296
  }
297
297
 
298
298
  .dialog{
@@ -428,7 +428,7 @@
428
428
  }
429
429
 
430
430
  .icon-hover:hover {
431
- background-color: $shade200;
431
+ background-color: var(--p-content-hover-background);
432
432
  }
433
433
 
434
434
  .gray-color {
@@ -541,4 +541,10 @@
541
541
  @media (min-width: 600px) {
542
542
  font-size: 4.5rem;
543
543
  }
544
+ }
545
+
546
+ ul, ol {
547
+ padding-left: 25px;
548
+ margin-top: 10px;
549
+ margin-bottom: 10px;
544
550
  }