@gipisistemas/ngx-core 1.0.19 → 1.0.21

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.
@@ -1,7 +1,7 @@
1
1
  import { trigger, state, transition, style, group, animate } from '@angular/animations';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, input, ChangeDetectionStrategy, Component, NgModule, Injectable, ViewEncapsulation, InjectionToken, DestroyRef, signal, Directive, Inject, computed, EnvironmentInjector, runInInjectionContext, numberAttribute, booleanAttribute, effect, afterNextRender, ElementRef, PLATFORM_ID, Renderer2, output, forwardRef, ChangeDetectorRef, viewChild, HostBinding, HostListener, TemplateRef, Input as Input$1, KeyValueDiffers, contentChild, model, NgZone, EventEmitter, Output, ContentChildren, Injector, viewChildren, ViewChild, Pipe, LOCALE_ID, untracked } from '@angular/core';
4
- import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
4
+ import { takeUntilDestroyed, toSignal, toObservable } from '@angular/core/rxjs-interop';
5
5
  import * as i1 from '@angular/material/dialog';
6
6
  import { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule, MatDialog, MatDialogConfig } from '@angular/material/dialog';
7
7
  import { finalize, take, filter, switchMap as switchMap$1, takeUntil as takeUntil$1, map as map$1, catchError as catchError$1, skip, distinctUntilChanged as distinctUntilChanged$1 } from 'rxjs/operators';
@@ -18,6 +18,7 @@ import * as libPhone from 'libphonenumber-js';
18
18
  import * as i2 from '@angular/material/icon';
19
19
  import { MatIconModule, MatIconRegistry } from '@angular/material/icon';
20
20
  import { HttpClient, HttpHeaders, HttpParams, HttpErrorResponse } from '@angular/common/http';
21
+ import { SelectionModel } from '@angular/cdk/collections';
21
22
  import { coerceBooleanProperty, coerceCssPixelValue } from '@angular/cdk/coercion';
22
23
  import * as i1$4 from '@angular/forms';
23
24
  import { NG_VALUE_ACCESSOR, FormsModule, NgControl } from '@angular/forms';
@@ -45,7 +46,6 @@ import { MatPaginatorIntl, MatPaginatorModule, MatPaginator } from '@angular/mat
45
46
  import { GlobalWorkerOptions, getDocument, OPS } from 'pdfjs-dist';
46
47
  import { EventBus, PDFLinkService, PDFViewer } from 'pdfjs-dist/web/pdf_viewer.mjs';
47
48
  import { __decorate } from 'tslib';
48
- import { SelectionModel } from '@angular/cdk/collections';
49
49
  import * as i2$4 from '@angular/cdk/table';
50
50
  import { CdkTableModule } from '@angular/cdk/table';
51
51
  import { MatCheckboxModule } from '@angular/material/checkbox';
@@ -4445,6 +4445,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
4445
4445
  type: Directive
4446
4446
  }], ctorParameters: () => [{ type: BaseCrudService }] });
4447
4447
 
4448
+ /**
4449
+ * Cria um signal que rastreia um parâmetro de rota específico.
4450
+ * Atualiza de forma reativa quando o parâmetro muda.
4451
+ *
4452
+ * @param paramName Nome do parâmetro de rota a ser rastreado
4453
+ * @returns Um signal contendo o valor do parâmetro ou null.
4454
+ *
4455
+ * @example
4456
+ * ```typescript
4457
+ * // Para a rota /users/:id
4458
+ * const userId = useRouteParam('id');
4459
+ * ```
4460
+ */
4461
+ function useRouteParams(paramName) {
4462
+ const route = inject(ActivatedRoute);
4463
+ return toSignal(route.paramMap.pipe(map((pm) => pm.get(paramName))), {
4464
+ initialValue: route.snapshot.paramMap.get(paramName),
4465
+ });
4466
+ }
4467
+ /**
4468
+ * Cria um signal que rastreia todo o mapa de parâmetros da rota.
4469
+ * Útil quando você precisa acessar vários parâmetros.
4470
+ *
4471
+ * @returns Um signal contendo o ParamMap completo
4472
+ *
4473
+ * @example
4474
+ * ```typescript
4475
+ * const params = useRouteParamsMap();
4476
+ * const id = params().get('id');
4477
+ * ```
4478
+ */
4479
+ function useRouteParamsMap() {
4480
+ const route = inject(ActivatedRoute);
4481
+ return toSignal(route.paramMap, { initialValue: route.snapshot.paramMap });
4482
+ }
4483
+
4448
4484
  class BaseFormComponent extends BaseComponent {
4449
4485
  get entity() {
4450
4486
  return this._entity;
@@ -4483,10 +4519,10 @@ class BaseFormComponent extends BaseComponent {
4483
4519
  */
4484
4520
  onInitForm(version) {
4485
4521
  this.loading.set(true);
4486
- const id = this.activatedRoute.snapshot.params['id'];
4487
- if (UUIDUtil.isValid(id)) {
4522
+ const id = useRouteParams('id');
4523
+ if (UUIDUtil.isValid(id())) {
4488
4524
  this.service
4489
- .getOne(id, version)
4525
+ .getOne(id(), version)
4490
4526
  .pipe(takeUntilDestroyed(this.destroyRef), finalize$1(() => this.loading.set(false)))
4491
4527
  .subscribe({
4492
4528
  next: (entity) => {
@@ -5174,6 +5210,9 @@ function useFilterPersistence(config) {
5174
5210
  }
5175
5211
 
5176
5212
  class BaseListComponent extends BaseComponent {
5213
+ get idsSelectedEntities() {
5214
+ return this.selectedEntities.selected.map((entity) => entity.id);
5215
+ }
5177
5216
  constructor(service) {
5178
5217
  super();
5179
5218
  this.service = service;
@@ -5181,6 +5220,7 @@ class BaseListComponent extends BaseComponent {
5181
5220
  this.pageAdjustService = inject(PageAdjustService);
5182
5221
  this._isHydrating = signal(true, ...(ngDevMode ? [{ debugName: "_isHydrating" }] : []));
5183
5222
  this._persistTimer = null;
5223
+ this.selectedEntities = new SelectionModel(true, []);
5184
5224
  this.filter = signal(this.newFilter(), ...(ngDevMode ? [{ debugName: "filter" }] : []));
5185
5225
  this.page = signal(this.newPage(), ...(ngDevMode ? [{ debugName: "page" }] : []));
5186
5226
  this.tableColumns = signal([], ...(ngDevMode ? [{ debugName: "tableColumns" }] : []));
@@ -5643,18 +5683,11 @@ class BaseListComponent extends BaseComponent {
5643
5683
  this.findAll();
5644
5684
  }
5645
5685
  handleEntityId(id) {
5646
- if (!UUIDUtil.isValid(id)) {
5686
+ if (!UUIDUtil.isEmpty(id) && !UUIDUtil.isValid(id) && this.selectedEntities.isEmpty()) {
5647
5687
  throw new Error('O identificador do registro não é válido');
5648
5688
  }
5649
- const page = this.page();
5650
- if (ObjectUtil.isEmpty(id) &&
5651
- !ObjectUtil.isEmpty(page) &&
5652
- !ArrayUtil.isEmpty(page.content)) {
5653
- const firstSeletected = page.content.filter((c) => c.selected)[0];
5654
- if (ObjectUtil.isEmpty(firstSeletected)) {
5655
- return null;
5656
- }
5657
- return firstSeletected.id;
5689
+ if (UUIDUtil.isEmpty(id) && !ArrayUtil.isEmpty(this.page()?.content)) {
5690
+ return this.idsSelectedEntities[0] ?? null;
5658
5691
  }
5659
5692
  return id;
5660
5693
  }
@@ -5666,14 +5699,8 @@ class BaseListComponent extends BaseComponent {
5666
5699
  }
5667
5700
  }
5668
5701
  }
5669
- const page = this.page();
5670
- if (ArrayUtil.isEmpty(idList) &&
5671
- !ObjectUtil.isEmpty(page) &&
5672
- !ArrayUtil.isEmpty(page.content)) {
5673
- const listSelected = page.content
5674
- .filter((p) => p.selected)
5675
- .map((p) => p.id);
5676
- return listSelected;
5702
+ if (ArrayUtil.isEmpty(idList) && !ArrayUtil.isEmpty(this.page()?.content)) {
5703
+ return this.idsSelectedEntities;
5677
5704
  }
5678
5705
  return !ArrayUtil.isEmpty(idList) ? idList : [];
5679
5706
  }
@@ -5927,7 +5954,6 @@ class BaseModel {
5927
5954
  this.enabled = data?.enabled ?? true;
5928
5955
  this.createdDate = data?.createdDate ?? null;
5929
5956
  this.modifiedDate = data?.modifiedDate ?? null;
5930
- this.selected = data?.selected ?? false;
5931
5957
  }
5932
5958
  }
5933
5959
 
@@ -23865,7 +23891,9 @@ class FilterService {
23865
23891
  request.onupgradeneeded = (event) => {
23866
23892
  const db = event.target.result;
23867
23893
  if (!db.objectStoreNames.contains(this._TABLE_NAME)) {
23868
- const store = db.createObjectStore(this._TABLE_NAME, { keyPath: this._KEY_PATH });
23894
+ const store = db.createObjectStore(this._TABLE_NAME, {
23895
+ keyPath: this._KEY_PATH,
23896
+ });
23869
23897
  store.createIndex(this._INDEX_USER_ID, 'userId', { unique: false });
23870
23898
  }
23871
23899
  };
@@ -23918,7 +23946,7 @@ class FilterService {
23918
23946
  this._validateFilterInput(view, userId, filter);
23919
23947
  const allFilters = await this.findAll(userId);
23920
23948
  if (!ArrayUtil.isEmpty(allFilters) && isDefault) {
23921
- const existingDefault = allFilters.find(e => e.isDefault);
23949
+ const existingDefault = allFilters.find((e) => e.isDefault);
23922
23950
  if (!ObjectUtil.isEmpty(existingDefault)) {
23923
23951
  existingDefault.isDefault = false;
23924
23952
  await this._executeTransaction('readwrite', (store) => store.put(existingDefault));
@@ -24005,7 +24033,7 @@ class FilterService {
24005
24033
  */
24006
24034
  async exportFilters(userId) {
24007
24035
  const filters = await this.findAll(userId);
24008
- const forExport = filters.map(e => ({
24036
+ const forExport = filters.map((e) => ({
24009
24037
  tag: e.tag,
24010
24038
  filter: e.filter,
24011
24039
  isDefault: e.isDefault,
@@ -24426,9 +24454,45 @@ function useLinkedFilter(initialValue, options) {
24426
24454
  return _inner;
24427
24455
  }
24428
24456
 
24457
+ /**
24458
+ * Cria um signal que rastreia um parâmetro de consulta específico.
24459
+ * Atualiza reativamente quando o parâmetro de consulta muda.
24460
+ *
24461
+ * @param paramName - Nome do parâmetro de consulta a ser rastreado
24462
+ * @returns Um signal contendo o valor do parâmetro ou null
24463
+ *
24464
+ * @example
24465
+ * ```typescript
24466
+ * // Para URL: /search?q=angular
24467
+ * const query = useRouteQueryParams('q');
24468
+ * ```
24469
+ */
24470
+ function useRouteQueryParams(paramName) {
24471
+ const route = inject(ActivatedRoute);
24472
+ return toSignal(route.queryParamMap.pipe(map((pm) => pm.get(paramName))), {
24473
+ initialValue: route.snapshot.queryParamMap.get(paramName),
24474
+ });
24475
+ }
24476
+ /**
24477
+ * Cria um signal que rastreia todo o mapa de parâmetros de consulta.
24478
+ * Útil quando você precisa acessar vários parâmetros de consulta.
24479
+ *
24480
+ * @returns Um signal contendo o mapa completo de parâmetros de consulta (ParamMap)
24481
+ *
24482
+ * @example
24483
+ * ```typescript
24484
+ * const params = useRouteQueryParamsMap();
24485
+ * const sort = params().get('sort');
24486
+ * ```
24487
+ */
24488
+ function useRouteQueryParamsMap() {
24489
+ const route = inject(ActivatedRoute);
24490
+ return toSignal(route.queryParamMap, { initialValue: route.snapshot.queryParamMap });
24491
+ }
24492
+
24429
24493
  /**
24430
24494
  * Generated bundle index. Do not edit.
24431
24495
  */
24432
24496
 
24433
- export { ActionRow, ActionRowModule, AllowedPublicRoutesToken, AppMessagesToken, ArrayUtil, AutoFocusDirective, AutoFocusModule, Avatar, AvatarModule, BaseAppliedFilter, BaseAuthService, BaseAuthServiceToken, BaseAuthorityModel, BaseComponent, BaseControlValueAccessor, BaseCrudService, BaseFilterModel, BaseFormComponent, BaseFormDialogComponent, BaseFormDialogDataModel, BaseInput, BaseListComponent, BaseListDialogComponent, BaseListDialogDataModel, BaseMenuModel, BaseModel, BasePageModel, BaseQueryParams, BaseReportComponent, BaseService, BaseSortModel, BaseTokenModel, BaseUserModel, Button, ButtonGroup, ButtonGroupModule, ButtonModule, CAPITALIZE_ACRONYMS, CAPITALIZE_PREPOSITIONS, CURRENCY_OPTIONS_DEFAULT, CacheableService, Checkbox, CheckboxGroup, CheckboxModule, Chips, ChipsModule, ConfirmDialog, ConfirmDialogIcon, ConfirmDialogModel, ConfirmDialogModule, ConfirmDialogService, CssUtil, CurrencyDirective, CurrencyModule, CurrencyUtil, DEFAULT_MESSAGES, DatePicker, DatePickerModule, DateUtil, Debounce, DialogConfig, DialogService, DisableAutoFillDirective, DocumentPipe, DocumentUtil, EchartsConfigToken, EchartsDirective, EchartsModule, EmailUtil, Empty, EmptyModule, ExpansionPanel, ExpansionPanelModule, Fieldset, FieldsetModule, FileDragAndDrop, FileDragAndDropModule, FileSaverService, FilterListbox, FilterListboxModule, FilterPersistenceService, FilterService, FilterURLService, FlexLayoutDirective, FlexLayoutModule, FormField, FormFieldErrors, FormFieldInputDirective, FormFieldModule, FormFieldPrefixDirective, FormFieldSuffixDirective, FormWrapper, FormWrapperDialog, FormWrapperModule, HelpfulTip, HelpfulTipModule, Icon, IconModule, Input, InputCurrency, InputCurrencyModule, InputFile, InputFileModule, InputGroup, InputGroupAddon, InputGroupModule, InputModule, InputPhone, InputPhoneModule, Label, LabelModule, Loading, LoadingModule, LocalStorageToken, Lozenge, LozengeModule, MoneyPipe, NomalizeTextPipe, NumberToWordsUtil, NumberUtil, ObjectUtil, PAGINATOR_INTL_PT_BR, PageAdjustService, Paginator, PaginatorIntlToken, PaginatorModule, PaginatorPipe, PasswordRequirements, PasswordRequirementsModule, PasswordValidationUtil, PdfViewer, PdfViewerDialog, PdfViewerDialogModel, PdfViewerDialogModule, PdfViewerService, PhoneUtil, Popover, PopoverModule, PopoverTargetDirective, PopoverTriggerDirective, RadioGroup, RadioGroupModule, STATES_DATA, ScrollFadeDirective, ScrollFadeModule, SelectClientSide, SelectEnum, SelectModule, SelectServerSide, SessionStorageToken, Sidenav, SidenavContainer, SidenavContent, SidenavMenuItem, SidenavModule, Skeleton, SkeletonModule, SplitButton, SplitButtonModule, StateUtil, Step, Stepper, StepperModule, StringUtil, SvgRegisterService, Tab, TabGroup, Table, TableColumn, TableColumnBuilder, TableMenuItemContext, TableMenuItemContextBuilder, TableModule, TabsModule, Tag, TagModule, TextCapitalizeDirective, TextCapitalizeModule, TextEllipsisDirective, TextEllipsisModule, Textarea, TextareaModule, Toast, ToastIcon, ToastModel, ToastModule, ToastService, ToggleSwitch, ToggleSwitchModule, Toolbar, ToolbarModule, TooltipDirective, TooltipModule, TopNav, TopNavModule, TreeTable, TreeTableColumn, TreeTableColumnBuilder, TreeTableMenuItemContext, TreeTableMenuItemContextBuilder, TreeTableModule, UUIDUtil, UserProfile, UserProfileModule, animationFlyInOut, authChildGuard, authGuard, authInterceptor, eConfirmDialogTypes, eCurrencyInputMode, eMenuType, eSortDirection, eToastTypes, eTypeOperationCloseDialogEnum, eTypeOperationDialog, entityFilterSignal, errorInterceptor, filterSignal, provideAllowedPublicRoutes, provideAppMessages, provideBaseAuthService, provideEchartsCore, providePaginatorIntl, provideValueAccessor, publicChildGuard, publicGuard, rotateAnimation, rotateArrowTreeTableExpand, stateNamesMap, transformFilterSignal, useFilterPersistence, useLinkedFilter };
24497
+ export { ActionRow, ActionRowModule, AllowedPublicRoutesToken, AppMessagesToken, ArrayUtil, AutoFocusDirective, AutoFocusModule, Avatar, AvatarModule, BaseAppliedFilter, BaseAuthService, BaseAuthServiceToken, BaseAuthorityModel, BaseComponent, BaseControlValueAccessor, BaseCrudService, BaseFilterModel, BaseFormComponent, BaseFormDialogComponent, BaseFormDialogDataModel, BaseInput, BaseListComponent, BaseListDialogComponent, BaseListDialogDataModel, BaseMenuModel, BaseModel, BasePageModel, BaseQueryParams, BaseReportComponent, BaseService, BaseSortModel, BaseTokenModel, BaseUserModel, Button, ButtonGroup, ButtonGroupModule, ButtonModule, CAPITALIZE_ACRONYMS, CAPITALIZE_PREPOSITIONS, CURRENCY_OPTIONS_DEFAULT, CacheableService, Checkbox, CheckboxGroup, CheckboxModule, Chips, ChipsModule, ConfirmDialog, ConfirmDialogIcon, ConfirmDialogModel, ConfirmDialogModule, ConfirmDialogService, CssUtil, CurrencyDirective, CurrencyModule, CurrencyUtil, DEFAULT_MESSAGES, DatePicker, DatePickerModule, DateUtil, Debounce, DialogConfig, DialogService, DisableAutoFillDirective, DocumentPipe, DocumentUtil, EchartsConfigToken, EchartsDirective, EchartsModule, EmailUtil, Empty, EmptyModule, ExpansionPanel, ExpansionPanelModule, Fieldset, FieldsetModule, FileDragAndDrop, FileDragAndDropModule, FileSaverService, FilterListbox, FilterListboxModule, FilterPersistenceService, FilterService, FilterURLService, FlexLayoutDirective, FlexLayoutModule, FormField, FormFieldErrors, FormFieldInputDirective, FormFieldModule, FormFieldPrefixDirective, FormFieldSuffixDirective, FormWrapper, FormWrapperDialog, FormWrapperModule, HelpfulTip, HelpfulTipModule, Icon, IconModule, Input, InputCurrency, InputCurrencyModule, InputFile, InputFileModule, InputGroup, InputGroupAddon, InputGroupModule, InputModule, InputPhone, InputPhoneModule, Label, LabelModule, Loading, LoadingModule, LocalStorageToken, Lozenge, LozengeModule, MoneyPipe, NomalizeTextPipe, NumberToWordsUtil, NumberUtil, ObjectUtil, PAGINATOR_INTL_PT_BR, PageAdjustService, Paginator, PaginatorIntlToken, PaginatorModule, PaginatorPipe, PasswordRequirements, PasswordRequirementsModule, PasswordValidationUtil, PdfViewer, PdfViewerDialog, PdfViewerDialogModel, PdfViewerDialogModule, PdfViewerService, PhoneUtil, Popover, PopoverModule, PopoverTargetDirective, PopoverTriggerDirective, RadioGroup, RadioGroupModule, STATES_DATA, ScrollFadeDirective, ScrollFadeModule, SelectClientSide, SelectEnum, SelectModule, SelectServerSide, SessionStorageToken, Sidenav, SidenavContainer, SidenavContent, SidenavMenuItem, SidenavModule, Skeleton, SkeletonModule, SplitButton, SplitButtonModule, StateUtil, Step, Stepper, StepperModule, StringUtil, SvgRegisterService, Tab, TabGroup, Table, TableColumn, TableColumnBuilder, TableMenuItemContext, TableMenuItemContextBuilder, TableModule, TabsModule, Tag, TagModule, TextCapitalizeDirective, TextCapitalizeModule, TextEllipsisDirective, TextEllipsisModule, Textarea, TextareaModule, Toast, ToastIcon, ToastModel, ToastModule, ToastService, ToggleSwitch, ToggleSwitchModule, Toolbar, ToolbarModule, TooltipDirective, TooltipModule, TopNav, TopNavModule, TreeTable, TreeTableColumn, TreeTableColumnBuilder, TreeTableMenuItemContext, TreeTableMenuItemContextBuilder, TreeTableModule, UUIDUtil, UserProfile, UserProfileModule, animationFlyInOut, authChildGuard, authGuard, authInterceptor, eConfirmDialogTypes, eCurrencyInputMode, eMenuType, eSortDirection, eToastTypes, eTypeOperationCloseDialogEnum, eTypeOperationDialog, entityFilterSignal, errorInterceptor, filterSignal, provideAllowedPublicRoutes, provideAppMessages, provideBaseAuthService, provideEchartsCore, providePaginatorIntl, provideValueAccessor, publicChildGuard, publicGuard, rotateAnimation, rotateArrowTreeTableExpand, stateNamesMap, transformFilterSignal, useFilterPersistence, useLinkedFilter, useRouteParams, useRouteParamsMap, useRouteQueryParams, useRouteQueryParamsMap, useSearch };
24434
24498
  //# sourceMappingURL=gipisistemas-ngx-core.mjs.map