@masterteam/license 0.0.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.
@@ -0,0 +1,13 @@
1
+ {
2
+ "license-display": {
3
+ "license": "الترخيص",
4
+ "license-details": "تفاصيل الترخيص",
5
+ "client-name": "اسم العميل",
6
+ "users-count": "عدد المستخدمين",
7
+ "start-date": "تاريخ البدء",
8
+ "expiry-date": "تاريخ الانتهاء",
9
+ "license-id": "معرف الترخيص",
10
+ "active-users": "المستخدمين النشطين",
11
+ "license-key": "مفتاح الترخيص"
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "license-display": {
3
+ "license": "License",
4
+ "license-details": "License Details",
5
+ "client-name": "Client Name",
6
+ "users-count": "Users Count",
7
+ "start-date": "Start Date",
8
+ "expiry-date": "Expiry Date",
9
+ "license-id": "License ID",
10
+ "active-users": "Active Users",
11
+ "license-key": "License Key"
12
+ }
13
+ }
@@ -0,0 +1,2 @@
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-slate-200:oklch(92.9% .013 255.508);--spacing:.25rem;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-bold:700;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.static{position:static}.col-span-1{grid-column:span 1/span 1}.mx-1{margin-inline:calc(var(--spacing)*1)}.mt-4{margin-top:calc(var(--spacing)*4)}.flex{display:flex}.w-7\/12{width:58.3333%}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-2{gap:calc(var(--spacing)*2)}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-slate-200{border-color:var(--color-slate-200)}.p-2{padding:calc(var(--spacing)*2)}.ps-2{padding-inline-start:calc(var(--spacing)*2)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.text-primary{color:var(--p-primary-color)}@supports (color:color-mix(in lab, red, red)){.text-primary{color:color-mix(in srgb,var(--p-primary-color)calc(100%*1),transparent)}}}@keyframes enter{0%{opacity:var(--p-enter-opacity,1);transform:translate3d(var(--p-enter-translate-x,0),var(--p-enter-translate-y,0),0)scale3d(var(--p-enter-scale,1),var(--p-enter-scale,1),var(--p-enter-scale,1))rotate(var(--p-enter-rotate,0))}}@keyframes leave{to{opacity:var(--p-leave-opacity,1);transform:translate3d(var(--p-leave-translate-x,0),var(--p-leave-translate-y,0),0)scale3d(var(--p-leave-scale,1),var(--p-leave-scale,1),var(--p-leave-scale,1))rotate(var(--p-leave-rotate,0))}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}
@@ -0,0 +1,341 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, Injectable, computed, signal, effect, Component } from '@angular/core';
4
+ import { Router } from '@angular/router';
5
+ import { TranslocoService, TranslocoDirective } from '@jsverse/transloco';
6
+ import { Breadcrumb } from '@masterteam/components/breadcrumb';
7
+ import { Button } from '@masterteam/components/button';
8
+ import * as i1 from 'primeng/skeleton';
9
+ import { SkeletonModule } from 'primeng/skeleton';
10
+ import { Page } from '@masterteam/components/page';
11
+ import { Card } from '@masterteam/components/card';
12
+ import { Icon } from '@masterteam/icons';
13
+ import { Tooltip } from '@masterteam/components/tooltip';
14
+ import * as i2 from '@angular/forms';
15
+ import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
16
+ import { Progress } from '@masterteam/components/progress';
17
+ import { DynamicForm } from '@masterteam/forms/dynamic-form';
18
+ import { Action, Selector, State, Store, select } from '@ngxs/store';
19
+ import { HttpClient } from '@angular/common/http';
20
+ import { CrudStateBase, handleApiRequest } from '@masterteam/components';
21
+
22
+ class GetLicense {
23
+ static type = '[License] Get License';
24
+ }
25
+
26
+ var LicenseActionKey;
27
+ (function (LicenseActionKey) {
28
+ LicenseActionKey["GetLicense"] = "getLicense";
29
+ })(LicenseActionKey || (LicenseActionKey = {}));
30
+
31
+ function getTotalDaysLeftFromStartEnd(start, expiry) {
32
+ const startDate = new Date(start);
33
+ const endDate = new Date(expiry);
34
+ // Validate dates
35
+ if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {
36
+ console.error('Invalid date format provided');
37
+ return 0;
38
+ }
39
+ // Convert both to UTC midnights.
40
+ // This strips the time and timezone offset, preventing DST errors.
41
+ const utcStart = Date.UTC(startDate.getFullYear(), startDate.getMonth(), startDate.getDate());
42
+ const utcEnd = Date.UTC(endDate.getFullYear(), endDate.getMonth(), endDate.getDate());
43
+ const msPerDay = 1000 * 60 * 60 * 24;
44
+ // Calculate difference
45
+ const daysLeft = Math.floor((utcEnd - utcStart) / msPerDay);
46
+ return daysLeft;
47
+ }
48
+
49
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
50
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
53
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
54
+ };
55
+ var LicenseState_1;
56
+ const defaultLicense = {
57
+ clientName: '',
58
+ usersCount: 0,
59
+ usersCountText: '',
60
+ startDate: {
61
+ displayValue: '',
62
+ actualValue: '',
63
+ },
64
+ expiryDate: {
65
+ displayValue: '',
66
+ actualValue: '',
67
+ },
68
+ licenseId: '',
69
+ activeUsers: 0,
70
+ daysLeft: 0,
71
+ status: '',
72
+ licenseKey: '',
73
+ };
74
+ let LicenseState = class LicenseState extends CrudStateBase {
75
+ static { LicenseState_1 = this; }
76
+ http = inject(HttpClient);
77
+ // ============================================================================
78
+ // Selectors - Individual data selectors for fine-grained reactivity
79
+ // ============================================================================
80
+ static getLicense(state) {
81
+ return this.prepareLicense(state.license);
82
+ }
83
+ static getLicenseTotalDays(state) {
84
+ return state.licenseTotalDays;
85
+ }
86
+ // ============================================================================
87
+ // Loading/Error Slice Selectors - REQUIRED for optimal performance
88
+ // ============================================================================
89
+ static getLoadingActive(state) {
90
+ return state.loadingActive;
91
+ }
92
+ static getErrors(state) {
93
+ return state.errors;
94
+ }
95
+ // ============================================================================
96
+ // CRUD Actions
97
+ // ============================================================================
98
+ // Loading Data - use handleApiRequest
99
+ getLicence(ctx) {
100
+ const url = `License`;
101
+ const req$ = this.http.get(url);
102
+ return handleApiRequest({
103
+ key: LicenseActionKey.GetLicense,
104
+ ctx,
105
+ request$: req$,
106
+ onSuccess: (response) => ({
107
+ license: LicenseState_1.prepareLicense(response.data),
108
+ licenseTotalDays: getTotalDaysLeftFromStartEnd(response.data?.startDate?.actualValue ?? '', response.data?.expiryDate?.actualValue ?? '') ?? 0,
109
+ }),
110
+ });
111
+ }
112
+ static prepareLicense(data) {
113
+ return {
114
+ ...data,
115
+ startDate: {
116
+ ...data?.startDate,
117
+ value: new Date(data?.startDate?.actualValue ?? ''),
118
+ },
119
+ expiryDate: {
120
+ ...data?.expiryDate,
121
+ value: new Date(data?.expiryDate?.actualValue ?? ''),
122
+ },
123
+ };
124
+ }
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: LicenseState, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
126
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: LicenseState });
127
+ };
128
+ __decorate([
129
+ Action(GetLicense)
130
+ ], LicenseState.prototype, "getLicence", null);
131
+ __decorate([
132
+ Selector()
133
+ ], LicenseState, "getLicense", null);
134
+ __decorate([
135
+ Selector()
136
+ ], LicenseState, "getLicenseTotalDays", null);
137
+ __decorate([
138
+ Selector()
139
+ ], LicenseState, "getLoadingActive", null);
140
+ __decorate([
141
+ Selector()
142
+ ], LicenseState, "getErrors", null);
143
+ LicenseState = LicenseState_1 = __decorate([
144
+ State({
145
+ name: 'license',
146
+ defaults: {
147
+ license: defaultLicense,
148
+ licenseTotalDays: 0,
149
+ loadingActive: [],
150
+ errors: {},
151
+ },
152
+ })
153
+ ], LicenseState);
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: LicenseState, decorators: [{
155
+ type: Injectable
156
+ }], propDecorators: { getLicence: [] } });
157
+
158
+ class LicenseFacade {
159
+ store = inject(Store);
160
+ // ============================================================================
161
+ // Data Selectors - Memoized by NGXS (fine-grained reactivity)
162
+ // ============================================================================
163
+ license = select(LicenseState.getLicense);
164
+ licenseTotalDays = select(LicenseState.getLicenseTotalDays);
165
+ // ============================================================================
166
+ // Loading/Error Slices - Memoized by NGXS
167
+ // ============================================================================
168
+ loadingActive = select(LicenseState.getLoadingActive);
169
+ errors = select(LicenseState.getErrors);
170
+ // ============================================================================
171
+ // Loading Signals - Computed from slice (minimal reactivity)
172
+ // ============================================================================
173
+ isLoadingLicense = computed(() => this.loadingActive().includes(LicenseActionKey.GetLicense), ...(ngDevMode ? [{ debugName: "isLoadingLicense" }] : []));
174
+ // ============================================================================
175
+ // Error Signals - Computed from slice (minimal reactivity)
176
+ // ============================================================================
177
+ licenseError = computed(() => this.errors()[LicenseActionKey.GetLicense] ?? null, ...(ngDevMode ? [{ debugName: "licenseError" }] : []));
178
+ // ============================================================================
179
+ // Action Dispatchers
180
+ // ============================================================================
181
+ getLicense() {
182
+ return this.store.dispatch(new GetLicense());
183
+ }
184
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: LicenseFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
185
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: LicenseFacade, providedIn: 'root' });
186
+ }
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: LicenseFacade, decorators: [{
188
+ type: Injectable,
189
+ args: [{ providedIn: 'root' }]
190
+ }] });
191
+
192
+ class License {
193
+ facade = inject(LicenseFacade);
194
+ router = inject(Router);
195
+ translocoService = inject(TranslocoService);
196
+ loading = this.facade.isLoadingLicense;
197
+ licenseDetails = this.facade.license;
198
+ licenseTotalDays = this.facade.licenseTotalDays;
199
+ licenseFormConfig = signal({
200
+ sections: [
201
+ {
202
+ key: 'licenseFormConfig',
203
+ type: 'header',
204
+ order: 1,
205
+ fields: [
206
+ {
207
+ key: 'clientName',
208
+ label: this.translocoService.translate('license-display.client-name'),
209
+ placeholder: this.translocoService.translate('license-display.client-name'),
210
+ order: 1,
211
+ colSpan: 6,
212
+ disabled: true,
213
+ },
214
+ {
215
+ key: 'usersCount',
216
+ label: this.translocoService.translate('license-display.users-count'),
217
+ placeholder: this.translocoService.translate('license-display.users-count'),
218
+ order: 2,
219
+ colSpan: 6,
220
+ disabled: true,
221
+ },
222
+ {
223
+ key: 'startDate.value',
224
+ label: this.translocoService.translate('license-display.start-date'),
225
+ placeholder: this.translocoService.translate('license-display.start-date'),
226
+ order: 3,
227
+ colSpan: 6,
228
+ type: 'date',
229
+ disabled: true,
230
+ },
231
+ {
232
+ key: 'expiryDate.value',
233
+ label: this.translocoService.translate('license-display.expiry-date'),
234
+ placeholder: this.translocoService.translate('license-display.expiry-date'),
235
+ order: 4,
236
+ colSpan: 6,
237
+ type: 'date',
238
+ disabled: true,
239
+ },
240
+ {
241
+ key: 'licenseId',
242
+ label: this.translocoService.translate('license-display.license-id'),
243
+ placeholder: this.translocoService.translate('license-display.license-id'),
244
+ order: 5,
245
+ colSpan: 6,
246
+ disabled: true,
247
+ },
248
+ {
249
+ key: 'activeUsers',
250
+ label: this.translocoService.translate('license-display.active-users'),
251
+ placeholder: this.translocoService.translate('license-display.active-users'),
252
+ order: 6,
253
+ colSpan: 6,
254
+ disabled: true,
255
+ },
256
+ {
257
+ key: 'licenseKey',
258
+ label: this.translocoService.translate('license-display.license-key'),
259
+ placeholder: this.translocoService.translate('license-display.license-key'),
260
+ order: 7,
261
+ colSpan: 12,
262
+ type: 'textarea',
263
+ rows: 7,
264
+ disabled: true,
265
+ },
266
+ ],
267
+ },
268
+ ],
269
+ }, ...(ngDevMode ? [{ debugName: "licenseFormConfig" }] : []));
270
+ licenseFormControl = new FormControl({
271
+ clientName: null,
272
+ usersCount: null,
273
+ startDate: null,
274
+ expiryDate: null,
275
+ licenseId: null,
276
+ activeUsers: null,
277
+ licenseKey: null,
278
+ });
279
+ breadcrumbItems = [
280
+ {
281
+ label: '',
282
+ icon: 'general.home-line',
283
+ routerLink: '/control-panel/workspaces',
284
+ },
285
+ {
286
+ label: this.translocoService.translate('brand-settings.brand-settings'),
287
+ routerLink: '/control-panel/brand-settings',
288
+ },
289
+ {
290
+ label: this.translocoService.translate('license-display.license'),
291
+ },
292
+ ];
293
+ constructor() {
294
+ effect(() => {
295
+ this.licenseFormControl.patchValue({
296
+ clientName: this.licenseDetails()?.clientName,
297
+ usersCount: this.licenseDetails()?.usersCount,
298
+ startDate: this.licenseDetails()?.startDate,
299
+ expiryDate: this.licenseDetails()?.expiryDate,
300
+ licenseId: this.licenseDetails()?.licenseId,
301
+ activeUsers: this.licenseDetails()?.activeUsers,
302
+ licenseKey: this.licenseDetails()?.licenseKey,
303
+ });
304
+ });
305
+ }
306
+ ngOnInit() {
307
+ this.facade.getLicense();
308
+ }
309
+ goBack() {
310
+ this.router.navigate(['control-panel/brand-settings']);
311
+ }
312
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: License, deps: [], target: i0.ɵɵFactoryTarget.Component });
313
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.3", type: License, isStandalone: true, selector: "mt-license", ngImport: i0, template: "<ng-container *transloco=\"let t; prefix: 'license-display'\">\r\n <mt-page\r\n [title]=\"t('license')\"\r\n [avatarIcon]=\"'education.certificate-01'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-yellow-50)',\r\n '--p-avatar-color': 'var(--p-yellow-700)',\r\n }\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <div class=\"flex justify-between items-end\">\r\n <div>\r\n <h3 class=\"font-bold text-lg\">{{ t(\"license\") }}</h3>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems\"\r\n [styleClass]=\"'flex justify-start mx-1'\"\r\n ></mt-breadcrumb>\r\n </div>\r\n </div>\r\n @if (!loading()) {\r\n <div class=\"mt-4 flex justify-center\">\r\n <div class=\"w-7/12\">\r\n <mt-card [title]=\"t('license-details')\">\r\n <ng-template #cardEnd>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-2xl text-primary\"\r\n icon=\"time.hourglass-03\"\r\n ></mt-icon>\r\n <span>Days Left</span>\r\n <mt-progress\r\n [value]=\"licenseDetails().daysLeft!\"\r\n mode=\"circle\"\r\n [circleSize]=\"50\"\r\n [strokeWidth]=\"8\"\r\n [unit]=\"''\"\r\n [maxValue]=\"licenseTotalDays()\"\r\n />\r\n <div\r\n class=\"flex items-center ps-2 border-s-2 gap-2 border-slate-200\"\r\n >\r\n <span>Status</span>\r\n <mt-button\r\n label=\"Active\"\r\n severity=\"success\"\r\n mtTooltip=\"Status Active\"\r\n />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <form class=\"col-span-1 p-2\">\r\n <mt-dynamic-form\r\n [formConfig]=\"licenseFormConfig()\"\r\n [formControl]=\"licenseFormControl\"\r\n />\r\n </form>\r\n </mt-card>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"mt-4 flex justify-center\">\r\n <div class=\"w-7/12\">\r\n <p-skeleton height=\"25rem\" />\r\n </div>\r\n </div>\r\n }\r\n </mt-page>\r\n</ng-container>\r\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: Page, selector: "mt-page", inputs: ["backButton", "backButtonIcon", "avatarIcon", "avatarStyle", "avatarShape", "title", "tabs", "activeTab", "contentClass", "contentId"], outputs: ["backButtonClick", "tabChange"] }, { kind: "component", type: Breadcrumb, selector: "mt-breadcrumb", inputs: ["items", "styleClass"], outputs: ["onItemClick"] }, { kind: "component", type: Button, selector: "mt-button", inputs: ["icon", "label", "tooltip", "class", "type", "styleClass", "severity", "badge", "variant", "badgeSeverity", "size", "iconPos", "autofocus", "fluid", "raised", "rounded", "text", "plain", "outlined", "link", "disabled", "loading", "pInputs"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i1.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "component", type: Card, selector: "mt-card", inputs: ["class", "title", "paddingless"] }, { kind: "component", type: Icon, selector: "mt-icon", inputs: ["icon"] }, { kind: "directive", type: Tooltip, selector: "[mtTooltip]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: Progress, selector: "mt-progress", inputs: ["value", "mode", "showLabel", "unit", "color", "minValue", "maxValue", "height", "circleSize", "strokeWidth", "customClass"] }, { kind: "component", type: DynamicForm, selector: "mt-dynamic-form", inputs: ["formConfig"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
314
+ }
315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.3", ngImport: i0, type: License, decorators: [{
316
+ type: Component,
317
+ args: [{ selector: 'mt-license', imports: [
318
+ CommonModule,
319
+ Page,
320
+ Breadcrumb,
321
+ Button,
322
+ TranslocoDirective,
323
+ SkeletonModule,
324
+ Card,
325
+ Icon,
326
+ Tooltip,
327
+ FormsModule,
328
+ Progress,
329
+ DynamicForm,
330
+ ReactiveFormsModule,
331
+ ], template: "<ng-container *transloco=\"let t; prefix: 'license-display'\">\r\n <mt-page\r\n [title]=\"t('license')\"\r\n [avatarIcon]=\"'education.certificate-01'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-yellow-50)',\r\n '--p-avatar-color': 'var(--p-yellow-700)',\r\n }\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <div class=\"flex justify-between items-end\">\r\n <div>\r\n <h3 class=\"font-bold text-lg\">{{ t(\"license\") }}</h3>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems\"\r\n [styleClass]=\"'flex justify-start mx-1'\"\r\n ></mt-breadcrumb>\r\n </div>\r\n </div>\r\n @if (!loading()) {\r\n <div class=\"mt-4 flex justify-center\">\r\n <div class=\"w-7/12\">\r\n <mt-card [title]=\"t('license-details')\">\r\n <ng-template #cardEnd>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-2xl text-primary\"\r\n icon=\"time.hourglass-03\"\r\n ></mt-icon>\r\n <span>Days Left</span>\r\n <mt-progress\r\n [value]=\"licenseDetails().daysLeft!\"\r\n mode=\"circle\"\r\n [circleSize]=\"50\"\r\n [strokeWidth]=\"8\"\r\n [unit]=\"''\"\r\n [maxValue]=\"licenseTotalDays()\"\r\n />\r\n <div\r\n class=\"flex items-center ps-2 border-s-2 gap-2 border-slate-200\"\r\n >\r\n <span>Status</span>\r\n <mt-button\r\n label=\"Active\"\r\n severity=\"success\"\r\n mtTooltip=\"Status Active\"\r\n />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <form class=\"col-span-1 p-2\">\r\n <mt-dynamic-form\r\n [formConfig]=\"licenseFormConfig()\"\r\n [formControl]=\"licenseFormControl\"\r\n />\r\n </form>\r\n </mt-card>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"mt-4 flex justify-center\">\r\n <div class=\"w-7/12\">\r\n <p-skeleton height=\"25rem\" />\r\n </div>\r\n </div>\r\n }\r\n </mt-page>\r\n</ng-container>\r\n" }]
332
+ }], ctorParameters: () => [] });
333
+
334
+ // store/index.ts
335
+
336
+ /**
337
+ * Generated bundle index. Do not edit.
338
+ */
339
+
340
+ export { GetLicense, License, LicenseActionKey, LicenseFacade, LicenseState };
341
+ //# sourceMappingURL=masterteam-license.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-license.mjs","sources":["../../../../packages/masterteam/license/src/store/license/license.actions.ts","../../../../packages/masterteam/license/src/store/license/license.model.ts","../../../../packages/masterteam/license/src/store/license/date.util.ts","../../../../packages/masterteam/license/src/store/license/license.state.ts","../../../../packages/masterteam/license/src/store/license/license.facade.ts","../../../../packages/masterteam/license/src/lib/license/license.ts","../../../../packages/masterteam/license/src/lib/license/license.html","../../../../packages/masterteam/license/src/store/index.ts","../../../../packages/masterteam/license/src/masterteam-license.ts"],"sourcesContent":["export class GetLicense {\r\n static readonly type = '[License] Get License';\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\nexport interface DateModel {\r\n displayValue?: string;\r\n actualValue?: string;\r\n value?: Date;\r\n}\r\nexport interface License {\r\n clientName?: string;\r\n usersCount?: number;\r\n usersCountText?: string;\r\n startDate?: DateModel;\r\n expiryDate?: DateModel;\r\n licenseId?: string;\r\n activeUsers?: number;\r\n daysLeft?: number;\r\n status?: string;\r\n licenseKey?: string;\r\n}\r\n\r\nexport enum LicenseActionKey {\r\n GetLicense = 'getLicense',\r\n}\r\n\r\nexport interface LicenseStateModel extends LoadingStateShape<LicenseActionKey> {\r\n license: License;\r\n licenseTotalDays: number;\r\n}\r\n","export function getTotalDaysLeftFromStartEnd(\r\n start: string,\r\n expiry: string,\r\n): number {\r\n const startDate = new Date(start);\r\n const endDate = new Date(expiry);\r\n\r\n // Validate dates\r\n if (isNaN(startDate.getTime()) || isNaN(endDate.getTime())) {\r\n console.error('Invalid date format provided');\r\n return 0;\r\n }\r\n\r\n // Convert both to UTC midnights.\r\n // This strips the time and timezone offset, preventing DST errors.\r\n const utcStart = Date.UTC(\r\n startDate.getFullYear(),\r\n startDate.getMonth(),\r\n startDate.getDate(),\r\n );\r\n const utcEnd = Date.UTC(\r\n endDate.getFullYear(),\r\n endDate.getMonth(),\r\n endDate.getDate(),\r\n );\r\n\r\n const msPerDay = 1000 * 60 * 60 * 24;\r\n\r\n // Calculate difference\r\n const daysLeft = Math.floor((utcEnd - utcStart) / msPerDay);\r\n return daysLeft;\r\n}\r\n","import { Action, Selector, State, StateContext } from '@ngxs/store';\r\nimport { GetLicense } from './license.actions';\r\nimport { License, LicenseActionKey, LicenseStateModel } from './license.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\nimport { getTotalDaysLeftFromStartEnd } from './date.util';\r\n\r\nconst defaultLicense: License = {\r\n clientName: '',\r\n usersCount: 0,\r\n usersCountText: '',\r\n startDate: {\r\n displayValue: '',\r\n actualValue: '',\r\n },\r\n expiryDate: {\r\n displayValue: '',\r\n actualValue: '',\r\n },\r\n licenseId: '',\r\n activeUsers: 0,\r\n daysLeft: 0,\r\n status: '',\r\n licenseKey: '',\r\n};\r\n@State<LicenseStateModel>({\r\n name: 'license',\r\n defaults: {\r\n license: defaultLicense,\r\n licenseTotalDays: 0,\r\n loadingActive: [],\r\n errors: {},\r\n },\r\n})\r\n@Injectable()\r\nexport class LicenseState extends CrudStateBase<\r\n License,\r\n LicenseStateModel,\r\n LicenseActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLicense(state: LicenseStateModel): License {\r\n return this.prepareLicense(state.license);\r\n }\r\n\r\n @Selector()\r\n static getLicenseTotalDays(state: LicenseStateModel): number {\r\n return state.licenseTotalDays;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: LicenseStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: LicenseStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n // Loading Data - use handleApiRequest\r\n @Action(GetLicense)\r\n getLicence(ctx: StateContext<LicenseStateModel>) {\r\n const url = `License`;\r\n const req$ = this.http.get<Response<License>>(url);\r\n\r\n return handleApiRequest({\r\n key: LicenseActionKey.GetLicense,\r\n ctx,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n license: LicenseState.prepareLicense(response.data),\r\n licenseTotalDays:\r\n getTotalDaysLeftFromStartEnd(\r\n response.data?.startDate?.actualValue ?? '',\r\n response.data?.expiryDate?.actualValue ?? '',\r\n ) ?? 0,\r\n }),\r\n });\r\n }\r\n\r\n private static prepareLicense(data: any) {\r\n return {\r\n ...data,\r\n startDate: {\r\n ...data?.startDate,\r\n value: new Date(data?.startDate?.actualValue ?? ''),\r\n },\r\n expiryDate: {\r\n ...data?.expiryDate,\r\n value: new Date(data?.expiryDate?.actualValue ?? ''),\r\n },\r\n };\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\nimport { Store, select } from '@ngxs/store';\nimport { GetLicense } from './license.actions';\nimport { LicenseActionKey } from './license.model';\nimport { LicenseState } from './license.state';\n\n@Injectable({ providedIn: 'root' })\nexport class LicenseFacade {\n private readonly store = inject(Store);\n\n // ============================================================================\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\n // ============================================================================\n readonly license = select(LicenseState.getLicense);\n readonly licenseTotalDays = select(LicenseState.getLicenseTotalDays);\n\n // ============================================================================\n // Loading/Error Slices - Memoized by NGXS\n // ============================================================================\n private readonly loadingActive = select(LicenseState.getLoadingActive);\n private readonly errors = select(LicenseState.getErrors);\n\n // ============================================================================\n // Loading Signals - Computed from slice (minimal reactivity)\n // ============================================================================\n readonly isLoadingLicense = computed(() =>\n this.loadingActive().includes(LicenseActionKey.GetLicense),\n );\n\n // ============================================================================\n // Error Signals - Computed from slice (minimal reactivity)\n // ============================================================================\n readonly licenseError = computed(\n () => this.errors()[LicenseActionKey.GetLicense] ?? null,\n );\n\n // ============================================================================\n // Action Dispatchers\n // ============================================================================\n\n getLicense() {\n return this.store.dispatch(new GetLicense());\n }\n}\n","import { CommonModule } from '@angular/common';\r\nimport { Component, effect, inject, OnInit, signal } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Breadcrumb } from '@masterteam/components/breadcrumb';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { Page } from '@masterteam/components/page';\r\nimport { Card } from '@masterteam/components/card';\r\nimport { Icon } from '@masterteam/icons';\r\nimport { Tooltip } from '@masterteam/components/tooltip';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Progress } from '@masterteam/components/progress';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { LicenseFacade } from '../../store/license';\r\n\r\n@Component({\r\n selector: 'mt-license',\r\n imports: [\r\n CommonModule,\r\n Page,\r\n Breadcrumb,\r\n Button,\r\n TranslocoDirective,\r\n SkeletonModule,\r\n Card,\r\n Icon,\r\n Tooltip,\r\n FormsModule,\r\n Progress,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n ],\r\n templateUrl: './license.html',\r\n styleUrls: ['./license.css'],\r\n})\r\nexport default class License implements OnInit {\r\n private readonly facade = inject(LicenseFacade);\r\n private readonly router = inject(Router);\r\n private readonly translocoService = inject(TranslocoService);\r\n loading = this.facade.isLoadingLicense;\r\n licenseDetails = this.facade.license;\r\n licenseTotalDays = this.facade.licenseTotalDays;\r\n licenseFormConfig = signal<DynamicFormConfig>({\r\n sections: [\r\n {\r\n key: 'licenseFormConfig',\r\n type: 'header',\r\n order: 1,\r\n fields: [\r\n {\r\n key: 'clientName',\r\n label: this.translocoService.translate(\r\n 'license-display.client-name',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'license-display.client-name',\r\n ),\r\n order: 1,\r\n colSpan: 6,\r\n disabled: true,\r\n },\r\n {\r\n key: 'usersCount',\r\n label: this.translocoService.translate(\r\n 'license-display.users-count',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'license-display.users-count',\r\n ),\r\n order: 2,\r\n colSpan: 6,\r\n disabled: true,\r\n },\r\n {\r\n key: 'startDate.value',\r\n label: this.translocoService.translate(\r\n 'license-display.start-date',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'license-display.start-date',\r\n ),\r\n order: 3,\r\n colSpan: 6,\r\n type: 'date',\r\n disabled: true,\r\n },\r\n {\r\n key: 'expiryDate.value',\r\n label: this.translocoService.translate(\r\n 'license-display.expiry-date',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'license-display.expiry-date',\r\n ),\r\n order: 4,\r\n colSpan: 6,\r\n type: 'date',\r\n disabled: true,\r\n },\r\n {\r\n key: 'licenseId',\r\n label: this.translocoService.translate(\r\n 'license-display.license-id',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'license-display.license-id',\r\n ),\r\n order: 5,\r\n colSpan: 6,\r\n disabled: true,\r\n },\r\n {\r\n key: 'activeUsers',\r\n label: this.translocoService.translate(\r\n 'license-display.active-users',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'license-display.active-users',\r\n ),\r\n order: 6,\r\n colSpan: 6,\r\n disabled: true,\r\n },\r\n {\r\n key: 'licenseKey',\r\n label: this.translocoService.translate(\r\n 'license-display.license-key',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'license-display.license-key',\r\n ),\r\n order: 7,\r\n colSpan: 12,\r\n type: 'textarea',\r\n rows: 7,\r\n disabled: true,\r\n },\r\n ],\r\n },\r\n ],\r\n });\r\n licenseFormControl: any = new FormControl({\r\n clientName: null,\r\n usersCount: null,\r\n startDate: null,\r\n expiryDate: null,\r\n licenseId: null,\r\n activeUsers: null,\r\n licenseKey: null,\r\n });\r\n\r\n breadcrumbItems: { label?: string; routerLink?: string; icon?: string }[] = [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate('brand-settings.brand-settings'),\r\n routerLink: '/control-panel/brand-settings',\r\n },\r\n {\r\n label: this.translocoService.translate('license-display.license'),\r\n },\r\n ];\r\n\r\n constructor() {\r\n effect(() => {\r\n this.licenseFormControl.patchValue({\r\n clientName: this.licenseDetails()?.clientName,\r\n usersCount: this.licenseDetails()?.usersCount,\r\n startDate: this.licenseDetails()?.startDate,\r\n expiryDate: this.licenseDetails()?.expiryDate,\r\n licenseId: this.licenseDetails()?.licenseId,\r\n activeUsers: this.licenseDetails()?.activeUsers,\r\n licenseKey: this.licenseDetails()?.licenseKey,\r\n });\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.facade.getLicense();\r\n }\r\n\r\n goBack() {\r\n this.router.navigate(['control-panel/brand-settings']);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'license-display'\">\r\n <mt-page\r\n [title]=\"t('license')\"\r\n [avatarIcon]=\"'education.certificate-01'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-yellow-50)',\r\n '--p-avatar-color': 'var(--p-yellow-700)',\r\n }\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <div class=\"flex justify-between items-end\">\r\n <div>\r\n <h3 class=\"font-bold text-lg\">{{ t(\"license\") }}</h3>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems\"\r\n [styleClass]=\"'flex justify-start mx-1'\"\r\n ></mt-breadcrumb>\r\n </div>\r\n </div>\r\n @if (!loading()) {\r\n <div class=\"mt-4 flex justify-center\">\r\n <div class=\"w-7/12\">\r\n <mt-card [title]=\"t('license-details')\">\r\n <ng-template #cardEnd>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-2xl text-primary\"\r\n icon=\"time.hourglass-03\"\r\n ></mt-icon>\r\n <span>Days Left</span>\r\n <mt-progress\r\n [value]=\"licenseDetails().daysLeft!\"\r\n mode=\"circle\"\r\n [circleSize]=\"50\"\r\n [strokeWidth]=\"8\"\r\n [unit]=\"''\"\r\n [maxValue]=\"licenseTotalDays()\"\r\n />\r\n <div\r\n class=\"flex items-center ps-2 border-s-2 gap-2 border-slate-200\"\r\n >\r\n <span>Status</span>\r\n <mt-button\r\n label=\"Active\"\r\n severity=\"success\"\r\n mtTooltip=\"Status Active\"\r\n />\r\n </div>\r\n </div>\r\n </ng-template>\r\n <form class=\"col-span-1 p-2\">\r\n <mt-dynamic-form\r\n [formConfig]=\"licenseFormConfig()\"\r\n [formControl]=\"licenseFormControl\"\r\n />\r\n </form>\r\n </mt-card>\r\n </div>\r\n </div>\r\n } @else {\r\n <div class=\"mt-4 flex justify-center\">\r\n <div class=\"w-7/12\">\r\n <p-skeleton height=\"25rem\" />\r\n </div>\r\n </div>\r\n }\r\n </mt-page>\r\n</ng-container>\r\n","// store/index.ts\r\nexport * from './license';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@masterteam/license",
3
+ "version": "0.0.1",
4
+ "publishConfig": {
5
+ "directory": "../../../dist/masterteam/license",
6
+ "linkDirectory": false,
7
+ "access": "public"
8
+ },
9
+ "peerDependencies": {
10
+ "@angular/common": "^21.0.3",
11
+ "@angular/core": "^21.0.3",
12
+ "@angular/forms": "^21.0.3",
13
+ "@angular/cdk": "^21.0.2",
14
+ "@primeuix/themes": "^2.0.2",
15
+ "@tailwindcss/postcss": "^4.1.17",
16
+ "@jsverse/transloco": "^8.0.2",
17
+ "postcss": "^8.5.6",
18
+ "primeng": "21.0.1",
19
+ "rxjs": "^7.8.2",
20
+ "tailwindcss": "^4.1.17",
21
+ "tailwindcss-primeui": "^0.6.1",
22
+ "@ngxs/store": "^20.1.0",
23
+ "@masterteam/components": "^0.0.84",
24
+ "@masterteam/icons": "^0.0.12",
25
+ "@masterteam/forms": "^0.0.35"
26
+ },
27
+ "sideEffects": false,
28
+ "exports": {
29
+ "./assets/license.css": {
30
+ "style": "./assets/license.css"
31
+ },
32
+ "./assets/i18n/*.json": {
33
+ "default": "./assets/i18n/*.json"
34
+ },
35
+ "./package.json": {
36
+ "default": "./package.json"
37
+ },
38
+ ".": {
39
+ "types": "./types/masterteam-license.d.ts",
40
+ "default": "./fesm2022/masterteam-license.mjs"
41
+ }
42
+ },
43
+ "module": "fesm2022/masterteam-license.mjs",
44
+ "typings": "types/masterteam-license.d.ts",
45
+ "dependencies": {
46
+ "tslib": "^2.8.1"
47
+ }
48
+ }
@@ -0,0 +1,99 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnInit } from '@angular/core';
3
+ import { CrudStateBase, DynamicFormConfig } from '@masterteam/components';
4
+ import * as rxjs from 'rxjs';
5
+ import { StateContext } from '@ngxs/store';
6
+
7
+ declare class GetLicense {
8
+ static readonly type = "[License] Get License";
9
+ }
10
+
11
+ interface LoadingStateShape<L extends string = string> {
12
+ loadingActive: L[];
13
+ errors: Partial<Record<L, string>>;
14
+ }
15
+
16
+ interface DateModel {
17
+ displayValue?: string;
18
+ actualValue?: string;
19
+ value?: Date;
20
+ }
21
+ interface License$1 {
22
+ clientName?: string;
23
+ usersCount?: number;
24
+ usersCountText?: string;
25
+ startDate?: DateModel;
26
+ expiryDate?: DateModel;
27
+ licenseId?: string;
28
+ activeUsers?: number;
29
+ daysLeft?: number;
30
+ status?: string;
31
+ licenseKey?: string;
32
+ }
33
+ declare enum LicenseActionKey {
34
+ GetLicense = "getLicense"
35
+ }
36
+ interface LicenseStateModel extends LoadingStateShape<LicenseActionKey> {
37
+ license: License$1;
38
+ licenseTotalDays: number;
39
+ }
40
+
41
+ declare class LicenseFacade {
42
+ private readonly store;
43
+ readonly license: _angular_core.Signal<License$1>;
44
+ readonly licenseTotalDays: _angular_core.Signal<number>;
45
+ private readonly loadingActive;
46
+ private readonly errors;
47
+ readonly isLoadingLicense: _angular_core.Signal<boolean>;
48
+ readonly licenseError: _angular_core.Signal<string | null>;
49
+ getLicense(): rxjs.Observable<void>;
50
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LicenseFacade, never>;
51
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<LicenseFacade>;
52
+ }
53
+
54
+ interface Response<T> {
55
+ endpoint: string;
56
+ status: number;
57
+ code: number;
58
+ locale: string;
59
+ message?: string | null;
60
+ errors?: any | null;
61
+ data: T;
62
+ cacheSession?: string;
63
+ }
64
+
65
+ declare class LicenseState extends CrudStateBase<License$1, LicenseStateModel, LicenseActionKey> {
66
+ private http;
67
+ static getLicense(state: LicenseStateModel): License$1;
68
+ static getLicenseTotalDays(state: LicenseStateModel): number;
69
+ static getLoadingActive(state: LicenseStateModel): string[];
70
+ static getErrors(state: LicenseStateModel): Record<string, string | null>;
71
+ getLicence(ctx: StateContext<LicenseStateModel>): rxjs.Observable<Response<License$1>>;
72
+ private static prepareLicense;
73
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<LicenseState, never>;
74
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<LicenseState>;
75
+ }
76
+
77
+ declare class License implements OnInit {
78
+ private readonly facade;
79
+ private readonly router;
80
+ private readonly translocoService;
81
+ loading: _angular_core.Signal<boolean>;
82
+ licenseDetails: _angular_core.Signal<License$1>;
83
+ licenseTotalDays: _angular_core.Signal<number>;
84
+ licenseFormConfig: _angular_core.WritableSignal<DynamicFormConfig>;
85
+ licenseFormControl: any;
86
+ breadcrumbItems: {
87
+ label?: string;
88
+ routerLink?: string;
89
+ icon?: string;
90
+ }[];
91
+ constructor();
92
+ ngOnInit(): void;
93
+ goBack(): void;
94
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<License, never>;
95
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<License, "mt-license", never, {}, {}, never, never, true, never>;
96
+ }
97
+
98
+ export { GetLicense, License, LicenseActionKey, LicenseFacade, LicenseState };
99
+ export type { DateModel, LicenseStateModel };