@ngx-smz/ui-kit 21.9.0-next.5 → 21.9.0-next.7

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.
@@ -295,6 +295,9 @@ const buttonClasses = smzVariants({
295
295
  },
296
296
  defaults: { size: 'md', variant: 'solid', severity: 'primary', rounded: 'false', loading: 'false', iconOnly: 'false' },
297
297
  compound: [
298
+ { when: { iconOnly: 'true', size: 'sm' }, class: 'w-[var(--smz-control-h-sm)]' },
299
+ { when: { iconOnly: 'true', size: 'md' }, class: 'w-[var(--smz-control-h)]' },
300
+ { when: { iconOnly: 'true', size: 'lg' }, class: 'w-[var(--smz-control-h-lg)]' },
298
301
  { when: { variant: 'solid', severity: 'primary' }, class: 'bg-ui-primary text-ui-on-primary hover:bg-ui-primary-hover active:bg-ui-primary-active' },
299
302
  { when: { variant: 'solid', severity: 'secondary' }, class: 'bg-ui-surface-3 text-ui-fg hover:bg-ui-line active:bg-ui-line-strong' },
300
303
  { when: { variant: 'solid', severity: 'danger' }, class: 'bg-ui-danger text-ui-on-danger hover:bg-ui-danger-hover active:bg-ui-danger-active' },
@@ -606,22 +609,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
606
609
  }] });
607
610
 
608
611
  const base = 'w-full border bg-ui-surface-1 font-ui text-ui-fg placeholder:text-ui-fg-subtle transition-colors duration-ui ' +
609
- 'focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger';
612
+ 'focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger';
610
613
  const invalidVariant = { true: 'border-ui-danger', false: 'border-ui-line-strong' };
611
614
  const inputClasses = smzVariants({
612
615
  base: `${base} rounded-control`,
613
616
  variants: {
614
617
  size: {
615
- sm: 'h-control-sm px-control-x-sm text-ui-sm',
616
- md: 'h-control px-control-x text-ui-md',
617
- lg: 'h-control-lg px-control-x-lg text-ui-lg',
618
+ sm: 'h-control-sm px-input-x-sm text-ui-sm',
619
+ md: 'h-control px-input-x text-ui-md',
620
+ lg: 'h-control-lg px-input-x-lg text-ui-lg',
618
621
  },
619
622
  invalid: invalidVariant,
620
623
  },
621
624
  defaults: { size: 'md', invalid: 'false' },
622
625
  });
623
626
  const textareaClasses = smzVariants({
624
- base: `${base} min-h-control rounded-control px-control-x py-2 text-ui-md`,
627
+ base: `${base} min-h-control rounded-control px-input-x py-2 text-ui-md`,
625
628
  variants: { invalid: invalidVariant },
626
629
  defaults: { invalid: 'false' },
627
630
  });
@@ -3066,12 +3069,28 @@ class SmzAnchoredPanel {
3066
3069
  }
3067
3070
 
3068
3071
  /* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, @typescript-eslint/explicit-module-boundary-types */
3072
+ /**
3073
+ * Texto da opcao. Sem `optionLabel`, opcoes-objeto com `label` usam esse campo (como o `p-select` do PrimeNG);
3074
+ * primitivos sao usados como estao.
3075
+ */
3069
3076
  function optionLabel(option, config) {
3070
- const value = config.optionLabel ? SmzObjectUtils.resolveFieldData(option, config.optionLabel) : option;
3077
+ let value = option;
3078
+ if (config.optionLabel)
3079
+ value = SmzObjectUtils.resolveFieldData(option, config.optionLabel);
3080
+ else if (option !== null && typeof option === 'object' && option.label !== undefined)
3081
+ value = option.label;
3071
3082
  return value === null || value === undefined ? '' : String(value);
3072
3083
  }
3084
+ /**
3085
+ * Valor da opcao. Sem `optionValue` (e sem `optionLabel`), opcoes-objeto com `value` usam esse campo
3086
+ * (como o `p-select` do PrimeNG); caso contrario o proprio objeto e o valor.
3087
+ */
3073
3088
  function optionValue(option, config) {
3074
- return config.optionValue ? SmzObjectUtils.resolveFieldData(option, config.optionValue) : option;
3089
+ if (config.optionValue)
3090
+ return SmzObjectUtils.resolveFieldData(option, config.optionValue);
3091
+ if (!config.optionLabel && option !== null && typeof option === 'object' && option.value !== undefined)
3092
+ return option.value;
3093
+ return option;
3075
3094
  }
3076
3095
  function optionDisabled(option, config) {
3077
3096
  return config.optionDisabled ? !!SmzObjectUtils.resolveFieldData(option, config.optionDisabled) : false;
@@ -3333,7 +3352,7 @@ class SmzSelectComponent extends SmzValueAccessor {
3333
3352
  type="button"
3334
3353
  role="combobox"
3335
3354
  aria-haspopup="listbox"
3336
- class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3355
+ class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3337
3356
  [ngClass]="styleClass()"
3338
3357
  [id]="inputId() || null"
3339
3358
  [attr.aria-expanded]="open()"
@@ -3419,7 +3438,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
3419
3438
  type="button"
3420
3439
  role="combobox"
3421
3440
  aria-haspopup="listbox"
3422
- class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3441
+ class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3423
3442
  [ngClass]="styleClass()"
3424
3443
  [id]="inputId() || null"
3425
3444
  [attr.aria-expanded]="open()"
@@ -3574,7 +3593,9 @@ class SmzMultiSelectComponent extends SmzValueAccessor {
3574
3593
  optionRowClass(option, index) {
3575
3594
  if (optionDisabled(option, this.config()))
3576
3595
  return 'opacity-50 cursor-not-allowed';
3577
- return this.activeIndex() === index ? 'bg-ui-surface-3' : '';
3596
+ if (this.activeIndex() === index)
3597
+ return 'bg-ui-surface-3';
3598
+ return this.selectedValues().length > 0 && this.isSelected(option) ? 'bg-ui-primary/10' : '';
3578
3599
  }
3579
3600
  toggle() {
3580
3601
  if (this.open())
@@ -3686,7 +3707,7 @@ class SmzMultiSelectComponent extends SmzValueAccessor {
3686
3707
  type="button"
3687
3708
  role="combobox"
3688
3709
  aria-haspopup="listbox"
3689
- class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3710
+ class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3690
3711
  [ngClass]="styleClass()"
3691
3712
  [id]="inputId() || null"
3692
3713
  [attr.aria-expanded]="open()"
@@ -3791,7 +3812,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
3791
3812
  type="button"
3792
3813
  role="combobox"
3793
3814
  aria-haspopup="listbox"
3794
- class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3815
+ class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3795
3816
  [ngClass]="styleClass()"
3796
3817
  [id]="inputId() || null"
3797
3818
  [attr.aria-expanded]="open()"
@@ -3929,8 +3950,8 @@ class SmzSelectButtonComponent extends SmzValueAccessor {
3929
3950
  : sameValue(value, current, this.dataKey());
3930
3951
  }
3931
3952
  buttonClasses(option) {
3932
- const size = this.size() === 'small' ? 'h-control-sm text-ui-sm' : this.size() === 'large' ? 'h-control-lg text-ui-lg' : 'h-control';
3933
- const tone = this.isSelected(option) ? 'bg-ui-primary text-ui-on-primary' : 'bg-ui-surface-1 text-ui-fg hover:bg-ui-surface-3';
3953
+ const size = this.size() === 'small' ? 'h-[calc(var(--smz-control-h-sm)-0.5rem)] text-ui-sm' : this.size() === 'large' ? 'h-[calc(var(--smz-control-h-lg)-0.5rem)] text-ui-lg' : 'h-[calc(var(--smz-control-h)-0.5rem)]';
3954
+ const tone = this.isSelected(option) ? 'bg-ui-surface-1 text-ui-fg shadow-card' : 'text-ui-fg-muted hover:text-ui-fg';
3934
3955
  return `${size} ${tone}`;
3935
3956
  }
3936
3957
  toggle(option, event) {
@@ -3953,11 +3974,11 @@ class SmzSelectButtonComponent extends SmzValueAccessor {
3953
3974
  }
3954
3975
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzSelectButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
3955
3976
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzSelectButtonComponent, isStandalone: true, selector: "ui-select-button", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, optionLabel: { classPropertyName: "optionLabel", publicName: "optionLabel", isSignal: true, isRequired: false, transformFunction: null }, optionValue: { classPropertyName: "optionValue", publicName: "optionValue", isSignal: true, isRequired: false, transformFunction: null }, optionDisabled: { classPropertyName: "optionDisabled", publicName: "optionDisabled", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, allowEmpty: { classPropertyName: "allowEmpty", publicName: "allowEmpty", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, appendTo: { classPropertyName: "appendTo", publicName: "appendTo", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changed: "changed" }, host: { classAttribute: "inline-flex" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzSelectButtonComponent), multi: true }], usesInheritance: true, ngImport: i0, template: `
3956
- <div role="group" class="inline-flex overflow-hidden rounded-control border border-ui-line-strong" [ngClass]="styleClass()">
3977
+ <div role="group" class="inline-flex gap-1 rounded-control bg-ui-surface-3 p-1" [ngClass]="styleClass()">
3957
3978
  @for (option of options(); track $index) {
3958
3979
  <button
3959
3980
  type="button"
3960
- class="inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap border-l border-ui-line-strong px-control-x font-ui text-ui-md transition-colors duration-ui first:border-l-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3981
+ class="inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-control px-control-x font-ui text-ui-md font-medium transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3961
3982
  [class]="buttonClasses(option)"
3962
3983
  [attr.aria-pressed]="isSelected(option)"
3963
3984
  [disabled]="isDisabled() || isOptionDisabled(option)"
@@ -3982,11 +4003,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
3982
4003
  providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SmzSelectButtonComponent), multi: true }],
3983
4004
  host: { class: 'inline-flex' },
3984
4005
  template: `
3985
- <div role="group" class="inline-flex overflow-hidden rounded-control border border-ui-line-strong" [ngClass]="styleClass()">
4006
+ <div role="group" class="inline-flex gap-1 rounded-control bg-ui-surface-3 p-1" [ngClass]="styleClass()">
3986
4007
  @for (option of options(); track $index) {
3987
4008
  <button
3988
4009
  type="button"
3989
- class="inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap border-l border-ui-line-strong px-control-x font-ui text-ui-md transition-colors duration-ui first:border-l-0 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
4010
+ class="inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-control px-control-x font-ui text-ui-md font-medium transition-colors duration-ui focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
3990
4011
  [class]="buttonClasses(option)"
3991
4012
  [attr.aria-pressed]="isSelected(option)"
3992
4013
  [disabled]="isDisabled() || isOptionDisabled(option)"
@@ -4262,14 +4283,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
4262
4283
  /** Complemento de um `ui-input-group`. Substitui o `p-inputgroupaddon` do PrimeNG. */
4263
4284
  class SmzInputGroupAddonComponent {
4264
4285
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzInputGroupAddonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4265
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: SmzInputGroupAddonComponent, isStandalone: true, selector: "ui-input-group-addon", host: { classAttribute: "inline-flex items-center rounded-control border border-ui-line-strong bg-ui-surface-3 px-control-x-sm font-ui text-ui-md text-ui-fg-muted" }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4286
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.1", type: SmzInputGroupAddonComponent, isStandalone: true, selector: "ui-input-group-addon", host: { classAttribute: "inline-flex items-center rounded-control border border-ui-line-strong bg-ui-surface-3 px-input-x-sm font-ui text-ui-md text-ui-fg-muted" }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4266
4287
  }
4267
4288
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzInputGroupAddonComponent, decorators: [{
4268
4289
  type: Component,
4269
4290
  args: [{
4270
4291
  selector: 'ui-input-group-addon',
4271
4292
  changeDetection: ChangeDetectionStrategy.OnPush,
4272
- host: { class: 'inline-flex items-center rounded-control border border-ui-line-strong bg-ui-surface-3 px-control-x-sm font-ui text-ui-md text-ui-fg-muted' },
4293
+ host: { class: 'inline-flex items-center rounded-control border border-ui-line-strong bg-ui-surface-3 px-input-x-sm font-ui text-ui-md text-ui-fg-muted' },
4273
4294
  template: '<ng-content />',
4274
4295
  }]
4275
4296
  }] });
@@ -4570,7 +4591,7 @@ class SmzInputNumberComponent extends SmzValueAccessor {
4570
4591
  type="text"
4571
4592
  inputmode="decimal"
4572
4593
  autocomplete="off"
4573
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
4594
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
4574
4595
  [class.pr-14]="showButtons()"
4575
4596
  [attr.id]="inputId() || null"
4576
4597
  [attr.placeholder]="placeholder() || null"
@@ -4627,7 +4648,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
4627
4648
  type="text"
4628
4649
  inputmode="decimal"
4629
4650
  autocomplete="off"
4630
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
4651
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
4631
4652
  [class.pr-14]="showButtons()"
4632
4653
  [attr.id]="inputId() || null"
4633
4654
  [attr.placeholder]="placeholder() || null"
@@ -4905,10 +4926,15 @@ class SmzDatePickerComponent extends SmzValueAccessor {
4905
4926
  fieldRef = viewChild.required('field');
4906
4927
  panel = viewChild.required('panel');
4907
4928
  anchored = new SmzAnchoredPanel(this.overlay, this.viewContainer);
4929
+ /**
4930
+ * Aceita `Date`, string (ISO ou parseavel) e numero (timestamp), como o `p-datepicker`.
4931
+ * Valores invalidos viram `null` em vez de lancar. O modelo do formulario so muda quando o usuario escolhe uma data.
4932
+ */
4908
4933
  writeValue(value) {
4909
- super.writeValue(value);
4934
+ const coerced = coerceDateValue(value);
4935
+ super.writeValue(coerced);
4910
4936
  this.typed.set(null);
4911
- this.syncViewTo(value);
4937
+ this.syncViewTo(coerced);
4912
4938
  }
4913
4939
  ngOnDestroy() {
4914
4940
  this.anchored.close();
@@ -5183,7 +5209,7 @@ class SmzDatePickerComponent extends SmzValueAccessor {
5183
5209
  #field
5184
5210
  type="text"
5185
5211
  autocomplete="off"
5186
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5212
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5187
5213
  [class.pr-10]="showIcon()"
5188
5214
  [attr.id]="inputId() || null"
5189
5215
  [attr.placeholder]="placeholder() || null"
@@ -5323,7 +5349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
5323
5349
  #field
5324
5350
  type="text"
5325
5351
  autocomplete="off"
5326
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5352
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5327
5353
  [class.pr-10]="showIcon()"
5328
5354
  [attr.id]="inputId() || null"
5329
5355
  [attr.placeholder]="placeholder() || null"
@@ -5450,6 +5476,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
5450
5476
  `,
5451
5477
  }]
5452
5478
  }], propDecorators: { selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], dateFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateFormat", required: false }] }], showTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTime", required: false }] }], timeOnly: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeOnly", required: false }] }], showSeconds: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSeconds", required: false }] }], hourFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourFormat", required: false }] }], minDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "minDate", required: false }] }], maxDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxDate", required: false }] }], showButtonBar: [{ type: i0.Input, args: [{ isSignal: true, alias: "showButtonBar", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], showOnFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "showOnFocus", required: false }] }], keepInvalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepInvalid", required: false }] }], readonlyInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonlyInput", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], appendTo: [{ type: i0.Input, args: [{ isSignal: true, alias: "appendTo", required: false }] }], touchUI: [{ type: i0.Input, args: [{ isSignal: true, alias: "touchUI", required: false }] }], focusTrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusTrap", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }], cleared: [{ type: i0.Output, args: ["cleared"] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }], blurred: [{ type: i0.Output, args: ["blurred"] }], anchorRef: [{ type: i0.ViewChild, args: ['anchor', { isSignal: true }] }], fieldRef: [{ type: i0.ViewChild, args: ['field', { isSignal: true }] }], panel: [{ type: i0.ViewChild, args: ['panel', { isSignal: true }] }] } });
5479
+ function toDate(value) {
5480
+ if (value instanceof Date)
5481
+ return Number.isNaN(value.getTime()) ? null : value;
5482
+ if (typeof value === 'string' || typeof value === 'number') {
5483
+ if (value === '')
5484
+ return null;
5485
+ const date = new Date(value);
5486
+ return Number.isNaN(date.getTime()) ? null : date;
5487
+ }
5488
+ return null;
5489
+ }
5490
+ function coerceDateValue(value) {
5491
+ if (Array.isArray(value)) {
5492
+ const dates = value.map(toDate).filter((date) => date !== null);
5493
+ return dates.length > 0 ? dates : null;
5494
+ }
5495
+ return toDate(value);
5496
+ }
5453
5497
 
5454
5498
  /* eslint-disable @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-unsafe-return, max-len */
5455
5499
  /* eslint-disable max-len -- classes Tailwind nos templates */
@@ -5627,7 +5671,7 @@ class SmzAutoCompleteComponent extends SmzValueAccessor {
5627
5671
  role="combobox"
5628
5672
  autocomplete="off"
5629
5673
  aria-autocomplete="list"
5630
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5674
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5631
5675
  [class]="dropdown() ? 'pr-10' : ''"
5632
5676
  [attr.id]="inputId() || null"
5633
5677
  [attr.placeholder]="placeholder() || null"
@@ -5698,7 +5742,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
5698
5742
  role="combobox"
5699
5743
  autocomplete="off"
5700
5744
  aria-autocomplete="list"
5701
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5745
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5702
5746
  [class]="dropdown() ? 'pr-10' : ''"
5703
5747
  [attr.id]="inputId() || null"
5704
5748
  [attr.placeholder]="placeholder() || null"
@@ -5926,7 +5970,7 @@ class SmzInputMaskComponent extends SmzValueAccessor {
5926
5970
  <input
5927
5971
  #field
5928
5972
  [attr.type]="type()"
5929
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5973
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5930
5974
  [attr.id]="inputId() || null"
5931
5975
  [attr.placeholder]="placeholder() || null"
5932
5976
  [attr.maxlength]="parsed().literals.length"
@@ -5951,7 +5995,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
5951
5995
  <input
5952
5996
  #field
5953
5997
  [attr.type]="type()"
5954
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5998
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
5955
5999
  [attr.id]="inputId() || null"
5956
6000
  [attr.placeholder]="placeholder() || null"
5957
6001
  [attr.maxlength]="parsed().literals.length"
@@ -6019,7 +6063,7 @@ class SmzPasswordComponent extends SmzValueAccessor {
6019
6063
  <input
6020
6064
  [type]="visible() ? 'text' : 'password'"
6021
6065
  autocomplete="off"
6022
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
6066
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
6023
6067
  [class.pr-10]="toggleMask()"
6024
6068
  [attr.id]="inputId() || null"
6025
6069
  [attr.placeholder]="placeholder() || null"
@@ -6072,7 +6116,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
6072
6116
  <input
6073
6117
  [type]="visible() ? 'text' : 'password'"
6074
6118
  autocomplete="off"
6075
- class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
6119
+ class="h-control w-full min-w-0 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x font-ui text-ui-md text-ui-fg transition-colors duration-ui placeholder:text-ui-fg-subtle focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50 [&.ng-invalid.ng-dirty]:border-ui-danger"
6076
6120
  [class.pr-10]="toggleMask()"
6077
6121
  [attr.id]="inputId() || null"
6078
6122
  [attr.placeholder]="placeholder() || null"
@@ -6661,6 +6705,8 @@ class SmzPaginatorComponent {
6661
6705
  isLast = computed(() => this.page() >= this.pageCount() - 1, ...(ngDevMode ? [{ debugName: "isLast" }] : []));
6662
6706
  visible = computed(() => this.alwaysShow() || this.pageCount() > 1, ...(ngDevMode ? [{ debugName: "visible" }] : []));
6663
6707
  links = computed(() => {
6708
+ if (this.totalRecords() <= 0)
6709
+ return [];
6664
6710
  const size = Math.min(this.pageLinkSize(), this.pageCount());
6665
6711
  const start = Math.max(0, Math.min(this.page() - Math.floor(size / 2), this.pageCount() - size));
6666
6712
  return Array.from({ length: size }, (_, index) => start + index + 1);
@@ -6699,17 +6745,17 @@ class SmzPaginatorComponent {
6699
6745
  @if (showCurrentPageReport()) {
6700
6746
  <span class="mr-2 text-ui-fg-muted">{{ report() }}</span>
6701
6747
  }
6702
- <button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Primeira pagina" [disabled]="isFirst()" (click)="goTo(0)">
6748
+ <button type="button" class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Primeira pagina" [disabled]="isFirst()" (click)="goTo(0)">
6703
6749
  <svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M8 4L4 8l4 4M12 4L8 8l4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /></svg>
6704
6750
  </button>
6705
- <button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Pagina anterior" [disabled]="isFirst()" (click)="goTo(page() - 1)">
6751
+ <button type="button" class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Pagina anterior" [disabled]="isFirst()" (click)="goTo(page() - 1)">
6706
6752
  <svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M10 4L6 8l4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
6707
6753
  </button>
6708
6754
  @if (showPageLinks() && totalRecords() > 0) {
6709
6755
  @for (link of links(); track link) {
6710
6756
  <button
6711
6757
  type="button"
6712
- class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent"
6758
+ class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent"
6713
6759
  [class]="link === page() + 1 ? 'smz-paginator-page-selected bg-ui-primary/10 font-medium text-ui-primary' : ''"
6714
6760
  [attr.aria-current]="link === page() + 1 ? 'page' : null"
6715
6761
  (click)="goTo(link - 1)"
@@ -6718,10 +6764,10 @@ class SmzPaginatorComponent {
6718
6764
  </button>
6719
6765
  }
6720
6766
  }
6721
- <button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Proxima pagina" [disabled]="isLast()" (click)="goTo(page() + 1)">
6767
+ <button type="button" class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Proxima pagina" [disabled]="isLast()" (click)="goTo(page() + 1)">
6722
6768
  <svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M6 4l4 4-4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
6723
6769
  </button>
6724
- <button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Ultima pagina" [disabled]="isLast()" (click)="goTo(pageCount() - 1)">
6770
+ <button type="button" class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Ultima pagina" [disabled]="isLast()" (click)="goTo(pageCount() - 1)">
6725
6771
  <svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M4 4l4 4-4 4M8 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /></svg>
6726
6772
  </button>
6727
6773
  @if (rowsPerPageOptions() && rowsPerPageOptions()!.length > 0) {
@@ -6744,17 +6790,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
6744
6790
  @if (showCurrentPageReport()) {
6745
6791
  <span class="mr-2 text-ui-fg-muted">{{ report() }}</span>
6746
6792
  }
6747
- <button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Primeira pagina" [disabled]="isFirst()" (click)="goTo(0)">
6793
+ <button type="button" class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Primeira pagina" [disabled]="isFirst()" (click)="goTo(0)">
6748
6794
  <svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M8 4L4 8l4 4M12 4L8 8l4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /></svg>
6749
6795
  </button>
6750
- <button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Pagina anterior" [disabled]="isFirst()" (click)="goTo(page() - 1)">
6796
+ <button type="button" class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Pagina anterior" [disabled]="isFirst()" (click)="goTo(page() - 1)">
6751
6797
  <svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M10 4L6 8l4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
6752
6798
  </button>
6753
6799
  @if (showPageLinks() && totalRecords() > 0) {
6754
6800
  @for (link of links(); track link) {
6755
6801
  <button
6756
6802
  type="button"
6757
- class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent"
6803
+ class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent"
6758
6804
  [class]="link === page() + 1 ? 'smz-paginator-page-selected bg-ui-primary/10 font-medium text-ui-primary' : ''"
6759
6805
  [attr.aria-current]="link === page() + 1 ? 'page' : null"
6760
6806
  (click)="goTo(link - 1)"
@@ -6763,10 +6809,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
6763
6809
  </button>
6764
6810
  }
6765
6811
  }
6766
- <button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Proxima pagina" [disabled]="isLast()" (click)="goTo(page() + 1)">
6812
+ <button type="button" class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Proxima pagina" [disabled]="isLast()" (click)="goTo(page() + 1)">
6767
6813
  <svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M6 4l4 4-4 4" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" /></svg>
6768
6814
  </button>
6769
- <button type="button" class="inline-flex h-8 min-w-8 cursor-pointer items-center justify-center rounded-control px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Ultima pagina" [disabled]="isLast()" (click)="goTo(pageCount() - 1)">
6815
+ <button type="button" class="inline-flex h-control-lg min-w-control-lg cursor-pointer items-center justify-center rounded-full px-2 font-ui text-ui-sm text-ui-fg transition-colors duration-ui hover:bg-ui-surface-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-40 disabled:hover:bg-transparent" aria-label="Ultima pagina" [disabled]="isLast()" (click)="goTo(pageCount() - 1)">
6770
6816
  <svg viewBox="0 0 16 16" class="h-4 w-4" fill="none" aria-hidden="true"><path d="M4 4l4 4-4 4M8 4l4 4-4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /></svg>
6771
6817
  </button>
6772
6818
  @if (rowsPerPageOptions() && rowsPerPageOptions()!.length > 0) {
@@ -7956,7 +8002,7 @@ class SmzTreeSelectComponent extends SmzValueAccessor {
7956
8002
  type="button"
7957
8003
  role="combobox"
7958
8004
  aria-haspopup="tree"
7959
- class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
8005
+ class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
7960
8006
  [ngClass]="[containerStyleClass() ?? '', styleClass() ?? '']"
7961
8007
  [attr.aria-expanded]="open()"
7962
8008
  [disabled]="isDisabled()"
@@ -7977,7 +8023,7 @@ class SmzTreeSelectComponent extends SmzValueAccessor {
7977
8023
  <div class="max-h-80 overflow-auto rounded-overlay border border-ui-line bg-ui-surface-2 p-1 font-ui text-ui-md text-ui-fg shadow-overlay">
7978
8024
  @if (filter()) {
7979
8025
  <div class="p-1">
7980
- <input type="text" class="h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x-sm text-ui-sm focus:outline-none focus:ring-2 focus:ring-ui-focus" [placeholder]="filterPlaceholder() ?? ''" (input)="tree._filter($any($event.target).value)" />
8026
+ <input type="text" class="h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x-sm text-ui-sm focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus" [placeholder]="filterPlaceholder() ?? ''" (input)="tree._filter($any($event.target).value)" />
7981
8027
  </div>
7982
8028
  }
7983
8029
  <ui-tree
@@ -8009,7 +8055,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
8009
8055
  type="button"
8010
8056
  role="combobox"
8011
8057
  aria-haspopup="tree"
8012
- class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:ring-2 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
8058
+ class="flex h-control w-full cursor-pointer items-center gap-2 rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x text-left font-ui text-ui-md text-ui-fg transition-colors duration-ui focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus disabled:cursor-not-allowed disabled:opacity-50"
8013
8059
  [ngClass]="[containerStyleClass() ?? '', styleClass() ?? '']"
8014
8060
  [attr.aria-expanded]="open()"
8015
8061
  [disabled]="isDisabled()"
@@ -8030,7 +8076,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
8030
8076
  <div class="max-h-80 overflow-auto rounded-overlay border border-ui-line bg-ui-surface-2 p-1 font-ui text-ui-md text-ui-fg shadow-overlay">
8031
8077
  @if (filter()) {
8032
8078
  <div class="p-1">
8033
- <input type="text" class="h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-control-x-sm text-ui-sm focus:outline-none focus:ring-2 focus:ring-ui-focus" [placeholder]="filterPlaceholder() ?? ''" (input)="tree._filter($any($event.target).value)" />
8079
+ <input type="text" class="h-control-sm w-full rounded-control border border-ui-line-strong bg-ui-surface-1 px-input-x-sm text-ui-sm focus:outline-none focus:border-ui-focus focus:ring-1 focus:ring-ui-focus" [placeholder]="filterPlaceholder() ?? ''" (input)="tree._filter($any($event.target).value)" />
8034
8080
  </div>
8035
8081
  }
8036
8082
  <ui-tree
@@ -8117,7 +8163,7 @@ class SmzCardComponent {
8117
8163
  subtitleTemplate = computed(() => smzFindTemplate(this.templates(), 'subtitle'), ...(ngDevMode ? [{ debugName: "subtitleTemplate" }] : []));
8118
8164
  footerTemplate = computed(() => smzFindTemplate(this.templates(), 'footer'), ...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
8119
8165
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: SmzCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8120
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzCardComponent, isStandalone: true, selector: "ui-card", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, subheader: { classPropertyName: "subheader", publicName: "subheader", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "p-card flex flex-col overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], ngImport: i0, template: `
8166
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: SmzCardComponent, isStandalone: true, selector: "ui-card", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, subheader: { classPropertyName: "subheader", publicName: "subheader", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "p-card flex flex-col overflow-hidden rounded-card bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card" }, queries: [{ propertyName: "templates", predicate: SmzTemplateDirective, isSignal: true }], ngImport: i0, template: `
8121
8167
  @if (headerTemplate(); as tpl) {
8122
8168
  <div class="p-card-header"><ng-container [ngTemplateOutlet]="tpl" /></div>
8123
8169
  }
@@ -8145,7 +8191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
8145
8191
  selector: 'ui-card',
8146
8192
  changeDetection: ChangeDetectionStrategy.OnPush,
8147
8193
  imports: [NgTemplateOutlet],
8148
- host: { class: 'p-card flex flex-col overflow-hidden rounded-card border border-ui-line bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card' },
8194
+ host: { class: 'p-card flex flex-col overflow-hidden rounded-card bg-ui-surface-1 font-ui text-ui-md text-ui-fg shadow-card' },
8149
8195
  template: `
8150
8196
  @if (headerTemplate(); as tpl) {
8151
8197
  <div class="p-card-header"><ng-container [ngTemplateOutlet]="tpl" /></div>