@kuzntsv/uikit 1.0.88 → 1.0.92

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.
@@ -38,7 +38,7 @@ import { MatSort, MatSortModule } from "@angular/material/sort";
38
38
  import * as i1 from "@angular/material/table";
39
39
  import { MatTableDataSource, MatTableModule } from "@angular/material/table";
40
40
  const loginSchema = z$1.object({
41
- username: z$1.string().min(1, { message: "Пожалуйста, заполните это поле" }).regex(/^[A-Za-z]{1,}\.[A-Za-z]{1,}\.[A-Za-z]*$/, { message: "Пожалуйста, используйте требуемый формат (Пример: a.p.petrov)" }),
41
+ username: z$1.string().min(1, { message: "Пожалуйста, заполните это поле" }).regex(/^[A-Za-z]{1,}\.[A-Za-z]{1,}\.[A-Za-z]*$/, { message: "Пожалуйста, используйте формат \"a.p.petrov\"" }),
42
42
  password: z$1.string().min(1, { message: "Пожалуйста, заполните это поле" })
43
43
  });
44
44
  var LoginFormComponent = class LoginFormComponent {
@@ -85,7 +85,7 @@ var LoginFormComponent = class LoginFormComponent {
85
85
  } },
86
86
  outputs: { submitted: "submitted" },
87
87
  ngImport: i0,
88
- template: "<mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title> Авторизация </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <form [formRoot]=\"form\">\r\n <mat-form-field class=\"login-field\">\r\n <mat-label>Имя пользователя</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n autocomplete=\"on\"\r\n placeholder=\"Имя пользователя\"\r\n [formField]=\"form.username\"\r\n />\r\n @if (form.username().touched() && form.username().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n @for (error of form.username().errors(); track error) {\r\n <mat-error>{{ error.message }}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"login-field\">\r\n <mat-label>Пароль</mat-label>\r\n <input\r\n [type]=\"isHidePassword() ? 'password' : 'text'\"\r\n matInput\r\n placeholder=\"Пароль\"\r\n [formField]=\"form.password\"\r\n />\r\n <mat-icon\r\n class=\"watcher\"\r\n matSuffix\r\n (mousedown)=\"showPassword()\"\r\n (mouseup)=\"hidePassword()\"\r\n >{{ isHidePassword() ? \"visibility_off\" : \"visibility\" }}</mat-icon\r\n >\r\n @if (form.password().touched() && form.password().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n @for (error of form.password().errors(); track error) {\r\n <mat-error>{{ error.message }}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n </mat-form-field>\r\n\r\n <div class=\"loginButtons\">\r\n <button\r\n type=\"submit\"\r\n mat-button\r\n mat-stroked-button\r\n color=\"primary\"\r\n [disabled]=\"!form().valid() || pending()\"\r\n >\r\n Войти\r\n </button>\r\n </div>\r\n </form>\r\n </mat-card-content>\r\n</mat-card>\r\n",
88
+ template: "<mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title> Авторизация </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <form [formRoot]=\"form\">\r\n <mat-form-field class=\"login-field\">\r\n <mat-label>Имя пользователя</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n autocomplete=\"on\"\r\n placeholder=\"Имя пользователя\"\r\n [formField]=\"form.username\"\r\n />\r\n @if (form.username().touched() && form.username().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n <mat-error>{{ form.username().errors()[0]?.message }}</mat-error>\r\n </ng-container>\r\n }\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"login-field\">\r\n <mat-label>Пароль</mat-label>\r\n <input\r\n [type]=\"isHidePassword() ? 'password' : 'text'\"\r\n matInput\r\n placeholder=\"Пароль\"\r\n [formField]=\"form.password\"\r\n />\r\n <mat-icon\r\n class=\"watcher\"\r\n matSuffix\r\n (mousedown)=\"showPassword()\"\r\n (mouseup)=\"hidePassword()\"\r\n >{{ isHidePassword() ? \"visibility_off\" : \"visibility\" }}</mat-icon\r\n >\r\n @if (form.password().touched() && form.password().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n <mat-error>{{ form.password().errors()[0]?.message }}</mat-error>\r\n </ng-container>\r\n }\r\n </mat-form-field>\r\n\r\n <div class=\"loginButtons\">\r\n <button\r\n type=\"submit\"\r\n mat-button\r\n mat-stroked-button\r\n color=\"primary\"\r\n [disabled]=\"!form().valid() || pending()\"\r\n >\r\n Войти\r\n </button>\r\n </div>\r\n </form>\r\n </mat-card-content>\r\n</mat-card>\r\n",
89
89
  styles: [":host{display:flex;justify-content:center;margin:32px 0}form{display:flex;flex-direction:column;gap:16px}.login-field{width:100%;min-width:300px}mat-card-header{justify-content:center}mat-card-content{font-size:16px}.loginButtons{display:flex;flex-direction:row;justify-content:flex-end}.watcher{cursor:default}\n"],
90
90
  dependencies: [
91
91
  {
@@ -220,7 +220,7 @@ i0.ɵɵngDeclareClassMetadata({
220
220
  MatSuffix,
221
221
  MatButton
222
222
  ],
223
- template: "<mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title> Авторизация </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <form [formRoot]=\"form\">\r\n <mat-form-field class=\"login-field\">\r\n <mat-label>Имя пользователя</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n autocomplete=\"on\"\r\n placeholder=\"Имя пользователя\"\r\n [formField]=\"form.username\"\r\n />\r\n @if (form.username().touched() && form.username().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n @for (error of form.username().errors(); track error) {\r\n <mat-error>{{ error.message }}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"login-field\">\r\n <mat-label>Пароль</mat-label>\r\n <input\r\n [type]=\"isHidePassword() ? 'password' : 'text'\"\r\n matInput\r\n placeholder=\"Пароль\"\r\n [formField]=\"form.password\"\r\n />\r\n <mat-icon\r\n class=\"watcher\"\r\n matSuffix\r\n (mousedown)=\"showPassword()\"\r\n (mouseup)=\"hidePassword()\"\r\n >{{ isHidePassword() ? \"visibility_off\" : \"visibility\" }}</mat-icon\r\n >\r\n @if (form.password().touched() && form.password().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n @for (error of form.password().errors(); track error) {\r\n <mat-error>{{ error.message }}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n </mat-form-field>\r\n\r\n <div class=\"loginButtons\">\r\n <button\r\n type=\"submit\"\r\n mat-button\r\n mat-stroked-button\r\n color=\"primary\"\r\n [disabled]=\"!form().valid() || pending()\"\r\n >\r\n Войти\r\n </button>\r\n </div>\r\n </form>\r\n </mat-card-content>\r\n</mat-card>\r\n",
223
+ template: "<mat-card appearance=\"outlined\">\r\n <mat-card-header>\r\n <mat-card-title> Авторизация </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <form [formRoot]=\"form\">\r\n <mat-form-field class=\"login-field\">\r\n <mat-label>Имя пользователя</mat-label>\r\n <input\r\n type=\"text\"\r\n matInput\r\n autocomplete=\"on\"\r\n placeholder=\"Имя пользователя\"\r\n [formField]=\"form.username\"\r\n />\r\n @if (form.username().touched() && form.username().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n <mat-error>{{ form.username().errors()[0]?.message }}</mat-error>\r\n </ng-container>\r\n }\r\n </mat-form-field>\r\n\r\n <mat-form-field class=\"login-field\">\r\n <mat-label>Пароль</mat-label>\r\n <input\r\n [type]=\"isHidePassword() ? 'password' : 'text'\"\r\n matInput\r\n placeholder=\"Пароль\"\r\n [formField]=\"form.password\"\r\n />\r\n <mat-icon\r\n class=\"watcher\"\r\n matSuffix\r\n (mousedown)=\"showPassword()\"\r\n (mouseup)=\"hidePassword()\"\r\n >{{ isHidePassword() ? \"visibility_off\" : \"visibility\" }}</mat-icon\r\n >\r\n @if (form.password().touched() && form.password().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n <mat-error>{{ form.password().errors()[0]?.message }}</mat-error>\r\n </ng-container>\r\n }\r\n </mat-form-field>\r\n\r\n <div class=\"loginButtons\">\r\n <button\r\n type=\"submit\"\r\n mat-button\r\n mat-stroked-button\r\n color=\"primary\"\r\n [disabled]=\"!form().valid() || pending()\"\r\n >\r\n Войти\r\n </button>\r\n </div>\r\n </form>\r\n </mat-card-content>\r\n</mat-card>\r\n",
224
224
  styles: [":host{display:flex;justify-content:center;margin:32px 0}form{display:flex;flex-direction:column;gap:16px}.login-field{width:100%;min-width:300px}mat-card-header{justify-content:center}mat-card-content{font-size:16px}.loginButtons{display:flex;flex-direction:row;justify-content:flex-end}.watcher{cursor:default}\n"]
225
225
  }]
226
226
  }],
@@ -2265,10 +2265,9 @@ var BaseSignalPageClass = class BaseSignalPageClass {
2265
2265
  }
2266
2266
  initFilters() {
2267
2267
  if (!this.filterSchema || !this.defaultFilters) return;
2268
- const prefix = this.storagePrefix;
2269
2268
  const initial = { ...this.defaultFilters };
2270
2269
  Object.keys(this.defaultFilters).forEach((key) => {
2271
- const storageKey = `${prefix}${key}`;
2270
+ const storageKey = `${this.storagePrefix}${key}`;
2272
2271
  const rawValue = this.localStorageService.getData(storageKey);
2273
2272
  if (rawValue !== null && rawValue !== void 0) try {
2274
2273
  initial[key] = JSON.parse(rawValue);
@@ -2279,15 +2278,6 @@ var BaseSignalPageClass = class BaseSignalPageClass {
2279
2278
  const validation = this.filterSchema.safeParse(initial);
2280
2279
  this.filters.set(validation.success ? validation.data : this.defaultFilters);
2281
2280
  }
2282
- clearEvent() {
2283
- if (!this.defaultFilters) return;
2284
- const prefix = this.storagePrefix;
2285
- Object.keys(this.defaultFilters).forEach((key) => {
2286
- localStorage.removeItem(`${prefix}${key}`);
2287
- });
2288
- this.filters.set({ ...this.defaultFilters });
2289
- this.clearFilters.set({});
2290
- }
2291
2281
  getInitialFilters2() {
2292
2282
  const prefix = this.constructor.name + "_Filter_";
2293
2283
  const state = {};
@@ -2305,6 +2295,18 @@ var BaseSignalPageClass = class BaseSignalPageClass {
2305
2295
  }
2306
2296
  return state;
2307
2297
  }
2298
+ clearEvent() {
2299
+ if (!this.defaultFilters) return;
2300
+ Object.keys(this.defaultFilters).forEach((key) => {
2301
+ this.localStorageService.removeData(`${this.storagePrefix}${key}`);
2302
+ });
2303
+ this.tableState.update((prev) => ({
2304
+ ...prev,
2305
+ pageIndex: 0
2306
+ }));
2307
+ this.filters.set({ ...this.defaultFilters });
2308
+ this.clearFilters.set({});
2309
+ }
2308
2310
  filters = signal({}, ...ngDevMode ? [{ debugName: "filters" }] : /* istanbul ignore next */ []);
2309
2311
  clearFilters = signal(null, ...ngDevMode ? [{ debugName: "clearFilters" }] : /* istanbul ignore next */ []);
2310
2312
  tableState = signal({
@@ -2323,15 +2325,14 @@ var BaseSignalPageClass = class BaseSignalPageClass {
2323
2325
  let previousFilters = { ...this.filters() };
2324
2326
  effect(() => {
2325
2327
  const currentFilters = this.filters();
2326
- const prefix = this.storagePrefix;
2327
2328
  let filterChanged = false;
2328
2329
  Object.keys(currentFilters).forEach((key) => {
2329
2330
  const prevVal = previousFilters[key];
2330
2331
  const currVal = currentFilters[key];
2331
2332
  if (prevVal !== currVal) {
2332
2333
  filterChanged = true;
2333
- const storageKey = `${prefix}${String(key)}`;
2334
- if (currVal === null || currVal === void 0 || currVal === "" || currVal === 0 || currVal === -1 || Array.isArray(currVal) && currVal.length === 0) localStorage.removeItem(storageKey);
2334
+ const storageKey = `${this.storagePrefix}${String(key)}`;
2335
+ if (currVal === null || currVal === void 0 || currVal === "" || currVal === 0 || currVal === -1 || Array.isArray(currVal) && currVal.length === 0) this.localStorageService.removeData(storageKey);
2335
2336
  else this.localStorageService.saveData(storageKey, JSON.stringify(currVal));
2336
2337
  }
2337
2338
  });
@@ -2418,7 +2419,7 @@ var BaseSignalPageClass = class BaseSignalPageClass {
2418
2419
  }
2419
2420
  newEvent() {
2420
2421
  if (this.entityEditComponent) {
2421
- const defaultEntity = this.schema.parse({});
2422
+ const defaultEntity = this.schemaDTO.parse({});
2422
2423
  const data = {
2423
2424
  action: Action.Add,
2424
2425
  entity: defaultEntity
@@ -2461,7 +2462,7 @@ var BaseSignalPageClass = class BaseSignalPageClass {
2461
2462
  if (this.entityEditComponent) {
2462
2463
  const data = {
2463
2464
  action: Action.Edit,
2464
- entity: this.selected[0]
2465
+ entity: this.formModelToDomainModel(this.selected[0])
2465
2466
  };
2466
2467
  if (this.beforeOpenDialogOnEditEvent) this.beforeOpenDialogOnEditEvent(data.entity, data.extraData);
2467
2468
  const dialogRef = this.openDialog(this.entityEditComponent, data, this.dialog);
@@ -2576,6 +2577,12 @@ var BaseSignalPageClass = class BaseSignalPageClass {
2576
2577
  }
2577
2578
  };
2578
2579
  }
2580
+ formModelToDomainModel(formModel, originalDomain) {
2581
+ return {
2582
+ ...originalDomain,
2583
+ ...formModel
2584
+ };
2585
+ }
2579
2586
  static ɵfac = i0.ɵɵngDeclareFactory({
2580
2587
  minVersion: "12.0.0",
2581
2588
  version: "22.2.2",
@@ -3609,7 +3616,7 @@ var DateRangeInputComponent = class DateRangeInputComponent {
3609
3616
  useValue: MY_NATIVE_FORMATS
3610
3617
  }],
3611
3618
  ngImport: i0,
3612
- template: "<mat-form-field appearance=\"fill\">\r\n <mat-label>{{ label() }}</mat-label>\r\n <mat-date-range-input\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n >\r\n <input matStartDate [formField]=\"form.begin\" placeholder=\"Дата начала\" />\r\n <input matEndDate [formField]=\"form.end\" placeholder=\"Дата окончания\" />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n @if (form.begin().touched() && form.begin().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n @for (error of form.begin().errors(); track error) {\r\n <mat-error>{{ error.message }}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n @if (form.end().touched() && form.end().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n @for (error of form.end().errors(); track error) {\r\n <mat-error>{{ error.message }}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n</mat-form-field>\r\n",
3619
+ template: "<mat-form-field appearance=\"fill\">\r\n <mat-label>{{ label() }}</mat-label>\r\n <mat-date-range-input\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n >\r\n <input matStartDate [formField]=\"form.begin\" placeholder=\"Дата начала\" />\r\n <input matEndDate [formField]=\"form.end\" placeholder=\"Дата окончания\" />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n @if (form.begin().touched() && form.begin().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n <mat-error>{{ form.begin().errors()[0]?.message }}</mat-error>\r\n </ng-container>\r\n }\r\n @if (form.end().touched() && form.end().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n <mat-error>{{ form.end().errors()[0]?.message }}</mat-error>\r\n </ng-container>\r\n }\r\n</mat-form-field>\r\n",
3613
3620
  styles: ["mat-form-field{margin-right:16px}\n"],
3614
3621
  dependencies: [
3615
3622
  {
@@ -3729,7 +3736,7 @@ i0.ɵɵngDeclareClassMetadata({
3729
3736
  provide: MAT_DATE_FORMATS,
3730
3737
  useValue: MY_NATIVE_FORMATS
3731
3738
  }],
3732
- template: "<mat-form-field appearance=\"fill\">\r\n <mat-label>{{ label() }}</mat-label>\r\n <mat-date-range-input\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n >\r\n <input matStartDate [formField]=\"form.begin\" placeholder=\"Дата начала\" />\r\n <input matEndDate [formField]=\"form.end\" placeholder=\"Дата окончания\" />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n @if (form.begin().touched() && form.begin().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n @for (error of form.begin().errors(); track error) {\r\n <mat-error>{{ error.message }}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n @if (form.end().touched() && form.end().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n @for (error of form.end().errors(); track error) {\r\n <mat-error>{{ error.message }}</mat-error>\r\n }\r\n </ng-container>\r\n }\r\n</mat-form-field>\r\n",
3739
+ template: "<mat-form-field appearance=\"fill\">\r\n <mat-label>{{ label() }}</mat-label>\r\n <mat-date-range-input\r\n [rangePicker]=\"picker\"\r\n [min]=\"minDate()\"\r\n >\r\n <input matStartDate [formField]=\"form.begin\" placeholder=\"Дата начала\" />\r\n <input matEndDate [formField]=\"form.end\" placeholder=\"Дата окончания\" />\r\n </mat-date-range-input>\r\n <mat-datepicker-toggle matIconSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-date-range-picker #picker></mat-date-range-picker>\r\n @if (form.begin().touched() && form.begin().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n <mat-error>{{ form.begin().errors()[0]?.message }}</mat-error>\r\n </ng-container>\r\n }\r\n @if (form.end().touched() && form.end().invalid()) {\r\n <ng-container ngProjectAs=\"mat-error\">\r\n <mat-error>{{ form.end().errors()[0]?.message }}</mat-error>\r\n </ng-container>\r\n }\r\n</mat-form-field>\r\n",
3733
3740
  styles: ["mat-form-field{margin-right:16px}\n"]
3734
3741
  }]
3735
3742
  }],