tin-spa 20.9.0 → 20.11.3

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
@@ -8,7 +8,7 @@ import * as rxjs from 'rxjs';
8
8
  import { Observable, BehaviorSubject, Subject } from 'rxjs';
9
9
  import * as i1 from '@angular/router';
10
10
  import { Router, ActivatedRoute, CanActivateFn } from '@angular/router';
11
- import * as i65 from '@angular/common/http';
11
+ import * as i66 from '@angular/common/http';
12
12
  import { HttpClient, HttpErrorResponse } from '@angular/common/http';
13
13
  import * as i7$1 from '@abacritt/angularx-social-login';
14
14
  import { SocialUser, SocialAuthService } from '@abacritt/angularx-social-login';
@@ -32,9 +32,9 @@ import * as i22 from '@angular/material/autocomplete';
32
32
  import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
33
33
  import * as i17 from '@angular/material/chips';
34
34
  import { MatChipInputEvent } from '@angular/material/chips';
35
- import * as i67 from '@kolkov/angular-editor';
35
+ import * as i68 from '@kolkov/angular-editor';
36
36
  import { AngularEditorConfig } from '@kolkov/angular-editor';
37
- import * as i69 from '@angular/cdk/drag-drop';
37
+ import * as i70 from '@angular/cdk/drag-drop';
38
38
  import { CdkDragEnter, CdkDragExit, CdkDragDrop } from '@angular/cdk/drag-drop';
39
39
  import * as i3$1 from '@angular/material/menu';
40
40
  import * as i4$1 from '@angular/material/slider';
@@ -58,7 +58,7 @@ import * as i28 from '@angular/material/progress-bar';
58
58
  import * as i29 from '@angular/material/sidenav';
59
59
  import * as i30 from '@angular/material/toolbar';
60
60
  import * as i32 from '@angular/material/expansion';
61
- import * as i68 from 'ng2-charts';
61
+ import * as i69 from 'ng2-charts';
62
62
  import { MsalService } from '@azure/msal-angular';
63
63
 
64
64
  declare class TinSpaService {
@@ -110,7 +110,8 @@ declare enum InvoiceStatus {
110
110
  Submitted = 1,
111
111
  Paid = 2,
112
112
  Discarded = 3,
113
- Paying = 4
113
+ Paying = 4,
114
+ WrittenOff = 5
114
115
  }
115
116
  declare enum CreditNoteStatus {
116
117
  Draft = 0,
@@ -695,6 +696,7 @@ declare class DetailsDialogConfig {
695
696
  allowUserKeepOpen?: boolean;
696
697
  keepOpenBehavior?: 'reset' | 'edit';
697
698
  nestingLevel?: number;
699
+ localMode?: boolean;
698
700
  }
699
701
  declare class Action {
700
702
  method?: 'get' | 'post';
@@ -1048,6 +1050,12 @@ interface Column {
1048
1050
  detailsConfig?: DetailsDialogConfig;
1049
1051
  hiddenCondition?: (parentData: any) => boolean;
1050
1052
  }
1053
+ interface InlineEditConfig {
1054
+ fields?: string[];
1055
+ }
1056
+ interface CreateTabConfig {
1057
+ navigationProperty: string;
1058
+ }
1051
1059
  declare class PaginationConfig {
1052
1060
  pageSize?: number;
1053
1061
  }
@@ -1105,6 +1113,8 @@ declare class TableConfig {
1105
1113
  pagination?: PaginationConfig;
1106
1114
  allowUserKeepOpen?: boolean;
1107
1115
  keepOpenBehavior?: 'reset' | 'edit';
1116
+ inlineEdit?: boolean | InlineEditConfig;
1117
+ createConfig?: CreateTabConfig;
1108
1118
  }
1109
1119
  declare class PageConfig {
1110
1120
  title?: string;
@@ -1124,6 +1134,8 @@ declare class ApiResponse {
1124
1134
  message: string;
1125
1135
  data: any;
1126
1136
  total?: number;
1137
+ reason?: string;
1138
+ rowVersion?: string;
1127
1139
  }
1128
1140
  declare class Constants {
1129
1141
  static readonly AUTH_USER = "a";
@@ -1135,6 +1147,7 @@ declare class Constants {
1135
1147
  static readonly AUTH_REFRESH_TOKEN = "g";
1136
1148
  static readonly AUTH_REFRESH_TOKEN_EXPIRE = "h";
1137
1149
  static readonly AUTH_REMEMBER_ME = "r";
1150
+ static readonly LAST_ROUTE = "lr";
1138
1151
  }
1139
1152
  declare class ListDialogConfig {
1140
1153
  name: string;
@@ -1183,6 +1196,7 @@ declare class AppConfig {
1183
1196
  navColor: string;
1184
1197
  navImage: string;
1185
1198
  keepSignedIn: boolean;
1199
+ resumeLastRoute: boolean;
1186
1200
  setupConfig: SetupConfig;
1187
1201
  }
1188
1202
  interface SetupStepAction {
@@ -1298,6 +1312,8 @@ declare class OfflineService {
1298
1312
  matchMutation(url: string): OfflineEntry | null;
1299
1313
  suppressesUrl(absoluteUrl: string): boolean;
1300
1314
  private resolveConfig;
1315
+ pendingCount(): Promise<number>;
1316
+ clearCacheKeepOutbox(): Promise<void>;
1301
1317
  deleteLocalData(): Promise<void>;
1302
1318
  private ensureOpen;
1303
1319
  putRead(url: string, entity: string, data: any, maxRows: number): Promise<any>;
@@ -1318,6 +1334,7 @@ declare class OfflineService {
1318
1334
  private startRecoveryPolling;
1319
1335
  private stopRecoveryPolling;
1320
1336
  private startSync;
1337
+ resumeQueue(): Promise<void>;
1321
1338
  drain(): Promise<void>;
1322
1339
  private drainLoop;
1323
1340
  private sendOp;
@@ -1398,6 +1415,7 @@ declare class DataServiceLib {
1398
1415
  capAggregates: CapItem;
1399
1416
  capReports: CapItem;
1400
1417
  capBudgets: CapItem;
1418
+ capBudgetVsActual: CapItem;
1401
1419
  capAging: CapItem;
1402
1420
  capTaxRates: CapItem;
1403
1421
  capStandingOrders: CapItem;
@@ -1470,11 +1488,13 @@ declare class DataServiceLib {
1470
1488
  customerCreateButton: Button;
1471
1489
  customerEditButton: Button;
1472
1490
  customerDetailsConfig: DetailsDialogConfig;
1491
+ customerCreateWithContactsButton: Button;
1473
1492
  customersTableConfig: TableConfig;
1474
1493
  supplierFormConfig: FormConfig;
1475
1494
  supplierCreateButton: Button;
1476
1495
  supplierEditButton: Button;
1477
1496
  supplierDetailsConfig: DetailsDialogConfig;
1497
+ supplierCreateWithContactsButton: Button;
1478
1498
  suppliersTableConfig: TableConfig;
1479
1499
  gptCachesFormConfig: FormConfig;
1480
1500
  gptCachesTableConfig: TableConfig;
@@ -1613,6 +1633,7 @@ declare class AccountingService {
1613
1633
  invoiceRecordPaymentButton: Button;
1614
1634
  invoiceDiscardButton: Button;
1615
1635
  invoiceReturnButton: Button;
1636
+ invoiceWriteOffButton: Button;
1616
1637
  invoiceSubmitButton: Button;
1617
1638
  invoiceEditButton: Button;
1618
1639
  invoiceDownloadButton: Button;
@@ -2096,6 +2117,25 @@ declare class SetupService {
2096
2117
  static ɵprov: i0.ɵɵInjectableDeclaration<SetupService>;
2097
2118
  }
2098
2119
 
2120
+ declare class LastRouteService {
2121
+ private router;
2122
+ private storage;
2123
+ private dataService;
2124
+ private started;
2125
+ private excluded;
2126
+ constructor(router: Router, storage: StorageService, dataService: DataServiceLib);
2127
+ get enabled(): boolean;
2128
+ private user;
2129
+ start(): void;
2130
+ resolve(): Promise<string | null>;
2131
+ clear(): Promise<void>;
2132
+ private save;
2133
+ private normalize;
2134
+ private isResumable;
2135
+ static ɵfac: i0.ɵɵFactoryDeclaration<LastRouteService, never>;
2136
+ static ɵprov: i0.ɵɵInjectableDeclaration<LastRouteService>;
2137
+ }
2138
+
2099
2139
  declare class SetupGuideComponent implements OnInit {
2100
2140
  dataService: DataServiceLib;
2101
2141
  setupService: SetupService;
@@ -2822,7 +2862,9 @@ declare class NavMenuComponent {
2822
2862
  private dialog;
2823
2863
  subscriptionService: SubscriptionService;
2824
2864
  setupService: SetupService;
2825
- constructor(router: Router, authService: AuthService, storageService: StorageService, notificationsService: NotificationsService, breakpointObserver: BreakpointObserver, dataService: DataServiceLib, dialog: MatDialog, subscriptionService: SubscriptionService, setupService: SetupService);
2865
+ private lastRouteService;
2866
+ private offlineService;
2867
+ constructor(router: Router, authService: AuthService, storageService: StorageService, notificationsService: NotificationsService, breakpointObserver: BreakpointObserver, dataService: DataServiceLib, dialog: MatDialog, subscriptionService: SubscriptionService, setupService: SetupService, lastRouteService: LastRouteService, offlineService: OfflineService);
2826
2868
  ngOnInit(): void;
2827
2869
  notificationCount$: any;
2828
2870
  setupCount$: Observable<number>;
@@ -2908,6 +2950,8 @@ declare class TableComponent implements OnInit, AfterViewInit, OnDestroy {
2908
2950
  data: any;
2909
2951
  tileData: any;
2910
2952
  config: TableConfig;
2953
+ localMode: boolean;
2954
+ parentDetails: any;
2911
2955
  reload: Subject<boolean>;
2912
2956
  activeTab: boolean;
2913
2957
  inTab: boolean;
@@ -2939,6 +2983,16 @@ declare class TableComponent implements OnInit, AfterViewInit, OnDestroy {
2939
2983
  private pagedUrlBase;
2940
2984
  private pageFetchInFlight;
2941
2985
  private initializeComponent;
2986
+ get isLocal(): boolean;
2987
+ private get localRows();
2988
+ private refreshLocalData;
2989
+ editingRow: any;
2990
+ editingModel: any;
2991
+ isRowEditing(row: any): boolean;
2992
+ getInlineField(column: Column): Field | null;
2993
+ startInlineEdit(row: any): void;
2994
+ cancelInlineEdit(): void;
2995
+ submitInlineEdit(): void;
2942
2996
  private updateTableConfiguration;
2943
2997
  private setupDataLoading;
2944
2998
  loadData(action: Action, data: any): void;
@@ -2999,7 +3053,7 @@ declare class TableComponent implements OnInit, AfterViewInit, OnDestroy {
2999
3053
  private rowIdKey;
3000
3054
  trackByRow: (index: number, row: any) => any;
3001
3055
  static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent, never>;
3002
- static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "spa-table", never, { "data": { "alias": "data"; "required": false; }; "tileData": { "alias": "tileData"; "required": false; }; "config": { "alias": "config"; "required": false; }; "reload": { "alias": "reload"; "required": false; }; "activeTab": { "alias": "activeTab"; "required": false; }; "inTab": { "alias": "inTab"; "required": false; }; "nestingLevel": { "alias": "nestingLevel"; "required": false; }; }, { "dataLoad": "dataLoad"; "actionSuccess": "actionSuccess"; "refreshClick": "refreshClick"; "searchClick": "searchClick"; "createClick": "createClick"; "actionClick": "actionClick"; "inputChange": "inputChange"; "actionResponse": "actionResponse"; }, never, never, false, never>;
3056
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent, "spa-table", never, { "data": { "alias": "data"; "required": false; }; "tileData": { "alias": "tileData"; "required": false; }; "config": { "alias": "config"; "required": false; }; "localMode": { "alias": "localMode"; "required": false; }; "parentDetails": { "alias": "parentDetails"; "required": false; }; "reload": { "alias": "reload"; "required": false; }; "activeTab": { "alias": "activeTab"; "required": false; }; "inTab": { "alias": "inTab"; "required": false; }; "nestingLevel": { "alias": "nestingLevel"; "required": false; }; }, { "dataLoad": "dataLoad"; "actionSuccess": "actionSuccess"; "refreshClick": "refreshClick"; "searchClick": "searchClick"; "createClick": "createClick"; "actionClick": "actionClick"; "inputChange": "inputChange"; "actionResponse": "actionResponse"; }, never, never, false, never>;
3003
3057
  }
3004
3058
 
3005
3059
  interface ExtraButtonVM {
@@ -3392,6 +3446,16 @@ declare class TableActionComponent implements OnChanges {
3392
3446
  static ɵcmp: i0.ɵɵComponentDeclaration<TableActionComponent, "app-table-action", never, { "displayedButtons": { "alias": "displayedButtons"; "required": false; }; "config": { "alias": "config"; "required": false; }; "row": { "alias": "row"; "required": false; }; "smallScreen": { "alias": "smallScreen"; "required": false; }; }, { "actionClick": "actionClick"; }, never, never, false, never>;
3393
3447
  }
3394
3448
 
3449
+ declare class InlineCellComponent {
3450
+ field: Field;
3451
+ data: any;
3452
+ valueChange: EventEmitter<any>;
3453
+ get display(): string;
3454
+ cellChanged(): void;
3455
+ static ɵfac: i0.ɵɵFactoryDeclaration<InlineCellComponent, never>;
3456
+ static ɵcmp: i0.ɵɵComponentDeclaration<InlineCellComponent, "app-inline-cell", never, { "field": { "alias": "field"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
3457
+ }
3458
+
3395
3459
  declare class AlertComponent implements OnInit {
3396
3460
  constructor();
3397
3461
  ngOnInit(): void;
@@ -3757,6 +3821,7 @@ declare class TabsComponent implements OnInit, OnChanges {
3757
3821
  tableConfigs: TableConfig[];
3758
3822
  reload: Subject<boolean>;
3759
3823
  parentDetails: any;
3824
+ localMode: boolean;
3760
3825
  nestingLevel: number;
3761
3826
  formRefresh: EventEmitter<void>;
3762
3827
  actionSuccess: EventEmitter<void>;
@@ -3782,7 +3847,7 @@ declare class TabsComponent implements OnInit, OnChanges {
3782
3847
  updateVisibleTabs(): void;
3783
3848
  getReloadSubject(index: number): Subject<boolean>;
3784
3849
  static ɵfac: i0.ɵɵFactoryDeclaration<TabsComponent, never>;
3785
- static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "spa-tabs", never, { "tableConfigs": { "alias": "tableConfigs"; "required": false; }; "reload": { "alias": "reload"; "required": false; }; "parentDetails": { "alias": "parentDetails"; "required": false; }; "nestingLevel": { "alias": "nestingLevel"; "required": false; }; }, { "formRefresh": "formRefresh"; "actionSuccess": "actionSuccess"; }, never, never, false, never>;
3850
+ static ɵcmp: i0.ɵɵComponentDeclaration<TabsComponent, "spa-tabs", never, { "tableConfigs": { "alias": "tableConfigs"; "required": false; }; "reload": { "alias": "reload"; "required": false; }; "parentDetails": { "alias": "parentDetails"; "required": false; }; "localMode": { "alias": "localMode"; "required": false; }; "nestingLevel": { "alias": "nestingLevel"; "required": false; }; }, { "formRefresh": "formRefresh"; "actionSuccess": "actionSuccess"; }, never, never, false, never>;
3786
3851
  }
3787
3852
 
3788
3853
  declare class StatusesComponent {
@@ -4088,6 +4153,7 @@ declare const ALSQUARE_SVG_WHITE = "<svg viewBox=\"0 0 80 80\" fill=\"none\" xml
4088
4153
  declare class SpaLandingComponent implements OnInit, AfterViewInit, OnDestroy {
4089
4154
  private router;
4090
4155
  private authService;
4156
+ private lastRouteService;
4091
4157
  private el;
4092
4158
  private sanitizer;
4093
4159
  config: LandingConfig;
@@ -4095,7 +4161,8 @@ declare class SpaLandingComponent implements OnInit, AfterViewInit, OnDestroy {
4095
4161
  navScrolled: boolean;
4096
4162
  currentYear: number;
4097
4163
  private observer;
4098
- constructor(router: Router, authService: AuthService, el: ElementRef, sanitizer: DomSanitizer);
4164
+ constructor(router: Router, authService: AuthService, lastRouteService: LastRouteService, // Added: resumeLastRoute
4165
+ el: ElementRef, sanitizer: DomSanitizer);
4099
4166
  get safeNavBrandSvg(): SafeHtml | null;
4100
4167
  get safeHeroWatermarkSvg(): SafeHtml | null;
4101
4168
  get safeFooterBrandSvg(): SafeHtml | null;
@@ -4287,7 +4354,7 @@ declare class CurrencyInputModule {
4287
4354
 
4288
4355
  declare class TinSpaModule {
4289
4356
  static ɵfac: i0.ɵɵFactoryDeclaration<TinSpaModule, never>;
4290
- static ɵmod: i0.ɵɵNgModuleDeclaration<TinSpaModule, [typeof TinSpaComponent, typeof TextComponent, typeof TextMaskComponent, typeof TextAreaComponent, typeof TextSingleComponent, typeof CheckComponent, typeof DateComponent, typeof DatetimeComponent, typeof LabelComponent, typeof SelectComponent, typeof ActivityComponent, typeof FilterComponent, typeof messageDialog, typeof MoneyComponent, typeof OptionComponent, typeof TilesComponent, typeof StepsComponent, typeof AttachComponent, typeof ChipsComponent, typeof LoaderComponent, typeof NavMenuComponent, typeof TableComponent, typeof DetailsDialog, typeof FormComponent, typeof CamelToWordsPipe, typeof NumberComponent, typeof SearchComponent, typeof ViewerComponent, typeof viewerDialog, typeof ListDialogComponent, typeof InvitationsTableComponent, typeof TableHeaderComponent, typeof TableRowComponent, typeof TableActionComponent, typeof AlertComponent, typeof EmailComponent, typeof PageComponent, typeof SelectCommonComponent, typeof SuffixComponent, typeof SelectContextDirective, typeof SelectLiteComponent, typeof TextMultiComponent, typeof SelectMultiComponent, typeof SelectBitwiseComponent, typeof HtmlComponent, typeof EditorComponent, typeof NotesComponent, typeof CapsulesComponent, typeof CardsComponent, typeof TabsComponent, typeof StatusesComponent, typeof GroupsComponent, typeof TitleActionsComponent, typeof WelcomeComponent, typeof TermsDialogComponent, typeof PrivacyDialogComponent, typeof ChartsComponent, typeof FeatureDirective, typeof SpaLandingComponent, typeof ToastComponent, typeof AgentComponent, typeof OfflineIndicatorComponent, typeof ImportDialogComponent], [typeof SpaMatModule, typeof i65.HttpClientModule, typeof CurrencyInputModule, typeof i67.AngularEditorModule, typeof i68.BaseChartDirective, typeof i69.DragDropModule], [typeof TinSpaComponent, typeof SpaMatModule, typeof AlertComponent, typeof TextComponent, typeof TextMaskComponent, typeof TextAreaComponent, typeof TextSingleComponent, typeof TextMultiComponent, typeof messageDialog, typeof NavMenuComponent, typeof LoaderComponent, typeof TilesComponent, typeof DateComponent, typeof SelectComponent, typeof SelectBitwiseComponent, typeof SelectMultiComponent, typeof DatetimeComponent, typeof CheckComponent, typeof AttachComponent, typeof MoneyComponent, typeof ChipsComponent, typeof ActivityComponent, typeof OptionComponent, typeof LabelComponent, typeof StepsComponent, typeof FilterComponent, typeof TableComponent, typeof DetailsDialog, typeof FormComponent, typeof NumberComponent, typeof SearchComponent, typeof ViewerComponent, typeof viewerDialog, typeof ImportDialogComponent, typeof ListDialogComponent, typeof ListDialogComponent, typeof EmailComponent, typeof PageComponent, typeof HtmlComponent, typeof EditorComponent, typeof NotesComponent, typeof CapsulesComponent, typeof TabsComponent, typeof StatusesComponent, typeof GroupsComponent, typeof TitleActionsComponent, typeof WelcomeComponent, typeof InvitationsTableComponent, typeof TermsDialogComponent, typeof PrivacyDialogComponent, typeof SelectLiteComponent, typeof ChartsComponent, typeof FeatureDirective, typeof SpaLandingComponent, typeof AgentComponent, typeof OfflineIndicatorComponent]>;
4357
+ static ɵmod: i0.ɵɵNgModuleDeclaration<TinSpaModule, [typeof TinSpaComponent, typeof TextComponent, typeof TextMaskComponent, typeof TextAreaComponent, typeof TextSingleComponent, typeof CheckComponent, typeof DateComponent, typeof DatetimeComponent, typeof LabelComponent, typeof SelectComponent, typeof ActivityComponent, typeof FilterComponent, typeof messageDialog, typeof MoneyComponent, typeof OptionComponent, typeof TilesComponent, typeof StepsComponent, typeof AttachComponent, typeof ChipsComponent, typeof LoaderComponent, typeof NavMenuComponent, typeof TableComponent, typeof DetailsDialog, typeof FormComponent, typeof CamelToWordsPipe, typeof NumberComponent, typeof SearchComponent, typeof ViewerComponent, typeof viewerDialog, typeof ListDialogComponent, typeof InvitationsTableComponent, typeof TableHeaderComponent, typeof TableRowComponent, typeof TableActionComponent, typeof InlineCellComponent, typeof AlertComponent, typeof EmailComponent, typeof PageComponent, typeof SelectCommonComponent, typeof SuffixComponent, typeof SelectContextDirective, typeof SelectLiteComponent, typeof TextMultiComponent, typeof SelectMultiComponent, typeof SelectBitwiseComponent, typeof HtmlComponent, typeof EditorComponent, typeof NotesComponent, typeof CapsulesComponent, typeof CardsComponent, typeof TabsComponent, typeof StatusesComponent, typeof GroupsComponent, typeof TitleActionsComponent, typeof WelcomeComponent, typeof TermsDialogComponent, typeof PrivacyDialogComponent, typeof ChartsComponent, typeof FeatureDirective, typeof SpaLandingComponent, typeof ToastComponent, typeof AgentComponent, typeof OfflineIndicatorComponent, typeof ImportDialogComponent], [typeof SpaMatModule, typeof i66.HttpClientModule, typeof CurrencyInputModule, typeof i68.AngularEditorModule, typeof i69.BaseChartDirective, typeof i70.DragDropModule], [typeof TinSpaComponent, typeof SpaMatModule, typeof AlertComponent, typeof TextComponent, typeof TextMaskComponent, typeof TextAreaComponent, typeof TextSingleComponent, typeof TextMultiComponent, typeof messageDialog, typeof NavMenuComponent, typeof LoaderComponent, typeof TilesComponent, typeof DateComponent, typeof SelectComponent, typeof SelectBitwiseComponent, typeof SelectMultiComponent, typeof DatetimeComponent, typeof CheckComponent, typeof AttachComponent, typeof MoneyComponent, typeof ChipsComponent, typeof ActivityComponent, typeof OptionComponent, typeof LabelComponent, typeof StepsComponent, typeof FilterComponent, typeof TableComponent, typeof DetailsDialog, typeof FormComponent, typeof NumberComponent, typeof SearchComponent, typeof ViewerComponent, typeof viewerDialog, typeof ImportDialogComponent, typeof ListDialogComponent, typeof ListDialogComponent, typeof EmailComponent, typeof PageComponent, typeof HtmlComponent, typeof EditorComponent, typeof NotesComponent, typeof CapsulesComponent, typeof TabsComponent, typeof StatusesComponent, typeof GroupsComponent, typeof TitleActionsComponent, typeof WelcomeComponent, typeof InvitationsTableComponent, typeof TermsDialogComponent, typeof PrivacyDialogComponent, typeof SelectLiteComponent, typeof ChartsComponent, typeof FeatureDirective, typeof SpaLandingComponent, typeof AgentComponent, typeof OfflineIndicatorComponent]>;
4291
4358
  static ɵinj: i0.ɵɵInjectorDeclaration<TinSpaModule>;
4292
4359
  }
4293
4360
 
@@ -4305,7 +4372,9 @@ declare class LoginComponent implements OnInit {
4305
4372
  private msalService;
4306
4373
  private dialog;
4307
4374
  private setupService;
4308
- constructor(httpService: HttpService, storageService: StorageService, router: Router, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, logService: LogService, route: ActivatedRoute, notificationsService: NotificationsService, signalRService: SignalRService, msalService: MsalService, dialog: MatDialog, setupService: SetupService);
4375
+ private lastRouteService;
4376
+ constructor(httpService: HttpService, storageService: StorageService, router: Router, messageService: MessageService, dataService: DataServiceLib, authService: AuthService, logService: LogService, route: ActivatedRoute, notificationsService: NotificationsService, signalRService: SignalRService, msalService: MsalService, dialog: MatDialog, setupService: SetupService, lastRouteService: LastRouteService);
4377
+ private resumeTarget;
4309
4378
  ngOnInit(): void;
4310
4379
  loginWithMS(): void;
4311
4380
  autoLogin: boolean;
@@ -4646,6 +4715,8 @@ declare class AgingComponent implements OnInit {
4646
4715
  ngOnInit(): void;
4647
4716
  summaryData: any;
4648
4717
  loadSummaryData(): void;
4718
+ postProvision(): void;
4719
+ private messageService;
4649
4720
  agingTableConfigs: TableConfig[];
4650
4721
  tileConfig: TileConfig;
4651
4722
  constructor(dataServiceLib: DataServiceLib);
@@ -4768,9 +4839,13 @@ declare class ReportsComponent implements OnInit {
4768
4839
  accountingService: AccountingService;
4769
4840
  private httpService;
4770
4841
  private http;
4842
+ from: string;
4843
+ to: string;
4771
4844
  constructor(dataServiceLib: DataServiceLib, accountingService: AccountingService);
4772
4845
  ngOnInit(): void;
4773
4846
  reportTabConfigs: TableConfig[];
4847
+ private withRange;
4848
+ buildTabs(): void;
4774
4849
  export(report: string): void;
4775
4850
  static ɵfac: i0.ɵɵFactoryDeclaration<ReportsComponent, never>;
4776
4851
  static ɵcmp: i0.ɵɵComponentDeclaration<ReportsComponent, "spa-reports", never, {}, {}, never, never, false, never>;
@@ -4828,6 +4903,7 @@ declare class VatReturnComponent implements OnInit {
4828
4903
  from: string;
4829
4904
  to: string;
4830
4905
  data: any;
4906
+ whtData: any[];
4831
4907
  ngOnInit(): void;
4832
4908
  load(): void;
4833
4909
  export(): void;
@@ -5672,5 +5748,5 @@ declare class SpaHomeModule {
5672
5748
  static ɵinj: i0.ɵɵInjectorDeclaration<SpaHomeModule>;
5673
5749
  }
5674
5750
 
5675
- export { ALSQUARE_SVG_DARK, ALSQUARE_SVG_WHITE, Account, AccountsComponent as AccountingAccountsComponent, AggregatesComponent as AccountingAggregatesComponent, AgingComponent as AccountingAgingComponent, CreditNotesComponent as AccountingCreditNotesComponent, CurrenciesComponent as AccountingCurrenciesComponent, AccountingDashboardComponent, InvoicesComponent as AccountingInvoicesComponent, AccountingModule, ReportsComponent as AccountingReportsComponent, AccountingService, StatementComponent as AccountingStatementComponent, TransactionTypesComponent as AccountingTransactionTypesComponent, TransactionsComponent as AccountingTransactionsComponent, VatReturnComponent as AccountingVatReturnComponent, Action, ActivityComponent, AdminModule, AgentComponent, AgentService, AlertComponent, AlertConfig, AlertMessage, AnalyticsService, ApiResponse, AppConfig, AppModelsComponent, AssetStatus, AssetsService, AttachComponent, AuthService, BankReconciliationComponent, BillingPageComponent, BrandsComponent, CacheConfig, CapItem, CapsulesComponent, CategoriesComponent, ChangePasswordComponent, ChangeUserPassword, ChartConfig, ChartsComponent, CheckComponent, ChipsComponent, Constants, Core, CreateAccountComponent, CreditNoteStatus, CustomersComponent, DataServiceLib, DateComponent, DatetimeComponent, DepartmentsComponent, DetailsDialog, DetailsDialogConfig, DetailsDialogProcessor, DetailsSource, DialogService, EditorComponent, EmailComponent, EmployeesComponent, ExportService, FeatureDirective, FilterComponent, FiscalPeriodStatus, FiscalPeriodsComponent, FormComponent, FormConfig, GeneralModule, GeneralService, GradesComponent, GroupsComponent, HRModule, HtmlComponent, HttpService, ImportDialogComponent, IndexModule, InventoryDashboardComponent, InventoryModule, InventoryService, InvitationsTableComponent, InvoiceDashboardComponent, InvoiceItemType, InvoiceStatus, JournalEntryDialogComponent, LabelComponent, ListDialogComponent, ListDialogConfig, LoaderComponent, LoaderService, LoanPaymentsComponent, LoanProductsComponent, LoansComponent, LoansModule, LoansService, LogLevel, LogService, LoginComponent, LogsComponent, ManufacturingModule, MembershipComponent, MessageService, MoneyComponent, MovementType, NavMenuComponent, NotesComponent, NotesConfig, NotificationsService, NumberComponent, OfflineIndicatorComponent, OfflineService, OnboardingComponent, OptionComponent, OverviewDashboardComponent, OverviewModule, PageComponent, PageConfig, PaginationConfig, PayrollDashboardComponent, PayrollModule, PlansComponent, PositionsComponent, PreferencesComponent, PrivacyDialogComponent, Profile, ProfileComponent, PurchaseStatus, PurchasingDashboardComponent, PurchasingModule, PushNotificationService, QuoteStatus, QuotesComponent, ReceiptDialogComponent, ReceiptStatus, ReceiptsComponent, ReconcileDialogComponent, RecoverAccountComponent, Register, RevenueScheduleDialogComponent, RevenueSchedulesComponent, Role, RoleAccess, RolesComponent, SalesDashboardComponent, SalesModule, SearchComponent, SearchConfig, SecurityConfig, SelectBitwiseComponent, SelectComponent, SelectLiteComponent, SelectMultiComponent, SettingsComponent, SetupGuideComponent, SetupService, SignupComponent, SignupData, SpaAdminModule, SpaHomeModule, SpaIndexModule, SpaLandingComponent, SpaMatModule, SpaUserModule, StatementImportDialogComponent, StatusesComponent, Step, StepConfig, StepsComponent, StorageService, SubCategoriesComponent, SubscriptionPageComponent, SubscriptionService, SuppliersComponent, SyncComponent, TIN_SPA_RUNTIME_CONFIG, TabService, TableComponent, TableConfig, TabsComponent, TasksComponent, TenancyModule, TenantsComponent, TermsDialogComponent, TextAreaComponent, TextComponent, TextMaskComponent, TextMultiComponent, TextSingleComponent, TileConfig, TilesComponent, TinSpaComponent, TinSpaModule, TinSpaService, TitleActionsComponent, TransactionTiming, UnitOfMeasure, UpdateService, User, UserModule, UsersComponent, ViewerComponent, WelcomeComponent, WorkflowModule, authGuard, dialogOptions, featureGuard, loginConfig, messageDialog, provideTinSpaRuntime, tinSpaLocationStrategyFactory, tinSpaMsalInstanceFactory, viewerDialog };
5676
- export type { AgentMessage, AutoRefreshConfig, BitwiseOption, Button, CacheRule, CapsuleConfig, CardConfig, ChartItem, ChildField, CloseOptions, Color, Column, Confirm, ConversationSummary, Field, GroupConfig, GroupData, Icon, ImportConfig, LandingBrandOverride, LandingColors, LandingConfig, LandingFeature, LandingFooterColumn, LandingFooterLink, LandingMetric, LandingModuleGroup, LandingModuleTile, LandingNavLink, LandingPricingPlan, LandingSecurityItem, LandingStep, LandingTestimonial, OfflineConfig, OfflineEntry, OfflineOpStatus, OutboxOp, RefreshResult, SearchField, SetupConfig, SetupStatus, SetupStep, SetupStepAction, SpaChartType, StatusConfig, StatusItem, StatusState, TableViewType, Tile, TileChartConfig, TileChartType, TileStyle, TinSpaMsalConfig, TinSpaRuntimeConfig, VisibleTab };
5751
+ export { ALSQUARE_SVG_DARK, ALSQUARE_SVG_WHITE, Account, AccountsComponent as AccountingAccountsComponent, AggregatesComponent as AccountingAggregatesComponent, AgingComponent as AccountingAgingComponent, CreditNotesComponent as AccountingCreditNotesComponent, CurrenciesComponent as AccountingCurrenciesComponent, AccountingDashboardComponent, InvoicesComponent as AccountingInvoicesComponent, AccountingModule, ReportsComponent as AccountingReportsComponent, AccountingService, StatementComponent as AccountingStatementComponent, TransactionTypesComponent as AccountingTransactionTypesComponent, TransactionsComponent as AccountingTransactionsComponent, VatReturnComponent as AccountingVatReturnComponent, Action, ActivityComponent, AdminModule, AgentComponent, AgentService, AlertComponent, AlertConfig, AlertMessage, AnalyticsService, ApiResponse, AppConfig, AppModelsComponent, AssetStatus, AssetsService, AttachComponent, AuthService, BankReconciliationComponent, BillingPageComponent, BrandsComponent, CacheConfig, CapItem, CapsulesComponent, CategoriesComponent, ChangePasswordComponent, ChangeUserPassword, ChartConfig, ChartsComponent, CheckComponent, ChipsComponent, Constants, Core, CreateAccountComponent, CreditNoteStatus, CustomersComponent, DataServiceLib, DateComponent, DatetimeComponent, DepartmentsComponent, DetailsDialog, DetailsDialogConfig, DetailsDialogProcessor, DetailsSource, DialogService, EditorComponent, EmailComponent, EmployeesComponent, ExportService, FeatureDirective, FilterComponent, FiscalPeriodStatus, FiscalPeriodsComponent, FormComponent, FormConfig, GeneralModule, GeneralService, GradesComponent, GroupsComponent, HRModule, HtmlComponent, HttpService, ImportDialogComponent, IndexModule, InventoryDashboardComponent, InventoryModule, InventoryService, InvitationsTableComponent, InvoiceDashboardComponent, InvoiceItemType, InvoiceStatus, JournalEntryDialogComponent, LabelComponent, LastRouteService, ListDialogComponent, ListDialogConfig, LoaderComponent, LoaderService, LoanPaymentsComponent, LoanProductsComponent, LoansComponent, LoansModule, LoansService, LogLevel, LogService, LoginComponent, LogsComponent, ManufacturingModule, MembershipComponent, MessageService, MoneyComponent, MovementType, NavMenuComponent, NotesComponent, NotesConfig, NotificationsService, NumberComponent, OfflineIndicatorComponent, OfflineService, OnboardingComponent, OptionComponent, OverviewDashboardComponent, OverviewModule, PageComponent, PageConfig, PaginationConfig, PayrollDashboardComponent, PayrollModule, PlansComponent, PositionsComponent, PreferencesComponent, PrivacyDialogComponent, Profile, ProfileComponent, PurchaseStatus, PurchasingDashboardComponent, PurchasingModule, PushNotificationService, QuoteStatus, QuotesComponent, ReceiptDialogComponent, ReceiptStatus, ReceiptsComponent, ReconcileDialogComponent, RecoverAccountComponent, Register, RevenueScheduleDialogComponent, RevenueSchedulesComponent, Role, RoleAccess, RolesComponent, SalesDashboardComponent, SalesModule, SearchComponent, SearchConfig, SecurityConfig, SelectBitwiseComponent, SelectComponent, SelectLiteComponent, SelectMultiComponent, SettingsComponent, SetupGuideComponent, SetupService, SignupComponent, SignupData, SpaAdminModule, SpaHomeModule, SpaIndexModule, SpaLandingComponent, SpaMatModule, SpaUserModule, StatementImportDialogComponent, StatusesComponent, Step, StepConfig, StepsComponent, StorageService, SubCategoriesComponent, SubscriptionPageComponent, SubscriptionService, SuppliersComponent, SyncComponent, TIN_SPA_RUNTIME_CONFIG, TabService, TableComponent, TableConfig, TabsComponent, TasksComponent, TenancyModule, TenantsComponent, TermsDialogComponent, TextAreaComponent, TextComponent, TextMaskComponent, TextMultiComponent, TextSingleComponent, TileConfig, TilesComponent, TinSpaComponent, TinSpaModule, TinSpaService, TitleActionsComponent, TransactionTiming, UnitOfMeasure, UpdateService, User, UserModule, UsersComponent, ViewerComponent, WelcomeComponent, WorkflowModule, authGuard, dialogOptions, featureGuard, loginConfig, messageDialog, provideTinSpaRuntime, tinSpaLocationStrategyFactory, tinSpaMsalInstanceFactory, viewerDialog };
5752
+ export type { AgentMessage, AutoRefreshConfig, BitwiseOption, Button, CacheRule, CapsuleConfig, CardConfig, ChartItem, ChildField, CloseOptions, Color, Column, Confirm, ConversationSummary, CreateTabConfig, Field, GroupConfig, GroupData, Icon, ImportConfig, InlineEditConfig, LandingBrandOverride, LandingColors, LandingConfig, LandingFeature, LandingFooterColumn, LandingFooterLink, LandingMetric, LandingModuleGroup, LandingModuleTile, LandingNavLink, LandingPricingPlan, LandingSecurityItem, LandingStep, LandingTestimonial, OfflineConfig, OfflineEntry, OfflineOpStatus, OutboxOp, RefreshResult, SearchField, SetupConfig, SetupStatus, SetupStep, SetupStepAction, SpaChartType, StatusConfig, StatusItem, StatusState, TableViewType, Tile, TileChartConfig, TileChartType, TileStyle, TinSpaMsalConfig, TinSpaRuntimeConfig, VisibleTab };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tin-spa",
3
- "version": "20.9.0",
3
+ "version": "20.11.3",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0",
@@ -647,6 +647,24 @@ th.mat-mdc-header-cell {
647
647
  align-items: center;
648
648
  }
649
649
 
650
+ /* Changed: Material gives every dialog-action button after the first a margin-left of 8px. On a wrapped row that
651
+ margin lands on the button that starts the new line, indenting it 8px past Submit. The gap above already spaces
652
+ them, so zero the margin and every row starts flush on the left. */
653
+ .mat-mdc-dialog-actions .mat-button-base + .mat-button-base,
654
+ .mat-mdc-dialog-actions .mat-mdc-button-base + .mat-mdc-button-base,
655
+ .mat-dialog-actions .mat-button-base + .mat-button-base {
656
+ margin-left: 0 !important;
657
+ margin-right: 0 !important;
658
+ }
659
+
660
+ /* Changed: Material's invisible 48px tap area (.mat-mdc-button-touch-target) is wider than the 40px/32px icon
661
+ buttons this app renders, so a button sitting flush against the right edge of a scroll container (e.g. a table's
662
+ refresh icon inside a tab) pushed 4px of nothing past the edge and summoned a phantom horizontal scrollbar.
663
+ Capping it at the button's own width keeps the tap area but lets scrollbars appear only for real content. */
664
+ .mat-mdc-button-touch-target {
665
+ max-width: 100%;
666
+ }
667
+
650
668
  /* Override for spa-groups chip icons - maintain larger size */
651
669
  spa-groups .chip-icon,
652
670
  spa-groups .chip-additional-icon {
@@ -663,3 +681,55 @@ spa-groups mat-chip .mat-icon {
663
681
  height: inherit !important;
664
682
 
665
683
  }
684
+
685
+ /* Read-only field styling: make readonly inputs look like Material disabled controls.
686
+ Applied via [class.spa-readonly] on mat-form-field in text/number/money/text-mask/
687
+ text-area/text-single/text-multi/email/date/datetime components, matching the
688
+ disabled look mat-select and mat-checkbox already get. Uses MDC disabled tokens. */
689
+ .mat-mdc-form-field.spa-readonly .mdc-text-field--filled {
690
+ background-color: rgba(0, 0, 0, 0.06); /* slightly darker than MDC's 0.04 so the disabled state is unmistakable */
691
+ }
692
+ .mat-mdc-form-field.spa-readonly .mdc-text-field--outlined .mdc-notched-outline__leading,
693
+ .mat-mdc-form-field.spa-readonly .mdc-text-field--outlined .mdc-notched-outline__notch,
694
+ .mat-mdc-form-field.spa-readonly .mdc-text-field--outlined .mdc-notched-outline__trailing {
695
+ border-color: rgba(0, 0, 0, 0.12) !important; /* faded outline like a disabled outlined field */
696
+ }
697
+ .mat-mdc-form-field.spa-readonly .mat-mdc-input-element,
698
+ .mat-mdc-form-field.spa-readonly textarea.mat-mdc-input-element {
699
+ color: rgba(0, 0, 0, 0.55) !important; /* dimmed value text — still legible but clearly not editable */
700
+ cursor: default;
701
+ }
702
+ .mat-mdc-form-field.spa-readonly .mat-mdc-floating-label,
703
+ .mat-mdc-form-field.spa-readonly .mdc-floating-label {
704
+ color: rgba(0, 0, 0, 0.38) !important; /* MDC disabled label color */
705
+ }
706
+ .mat-mdc-form-field.spa-readonly .mat-mdc-form-field-focus-overlay {
707
+ display: none; /* no hover/focus highlight — the field should not invite interaction */
708
+ }
709
+ .mat-mdc-form-field.spa-readonly .mdc-line-ripple::before,
710
+ .mat-mdc-form-field.spa-readonly .mdc-line-ripple::after {
711
+ border-bottom-style: dotted; /* dotted underline mirrors MDC's disabled filled-field underline */
712
+ border-bottom-color: rgba(0, 0, 0, 0.38) !important;
713
+ }
714
+ /* Dim prefix/suffix content (currency symbols, etc.) but keep info/copy icons usable */
715
+ .mat-mdc-form-field.spa-readonly .mat-mdc-form-field-text-prefix,
716
+ .mat-mdc-form-field.spa-readonly [matPrefix] {
717
+ color: rgba(0, 0, 0, 0.38);
718
+ }
719
+ /* Chip inputs (text-multi/email): gray out chips in readonly mode */
720
+ .mat-mdc-form-field.spa-readonly .mat-mdc-chip {
721
+ opacity: 0.65;
722
+ }
723
+ /* Rich-text editor: gray out the editing surface when readonly */
724
+ .spa-editor-wrap.spa-readonly .angular-editor-textarea {
725
+ background-color: rgba(0, 0, 0, 0.06) !important;
726
+ color: rgba(0, 0, 0, 0.55) !important;
727
+ cursor: default;
728
+ }
729
+ .spa-editor-wrap.spa-readonly .angular-editor-toolbar {
730
+ opacity: 0.5;
731
+ pointer-events: none; /* toolbar buttons are meaningless when the surface is not editable */
732
+ }
733
+ .spa-editor-wrap.spa-readonly .spa-editor-label label {
734
+ color: rgba(0, 0, 0, 0.38);
735
+ }