@flusys/ng-ui 6.0.0-beta.1 → 6.0.0-beta.2

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.
@@ -538,10 +538,17 @@ class AvatarComponent {
538
538
  }, /* @ts-ignore */
539
539
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
540
540
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
541
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: AvatarComponent, isStandalone: true, selector: "f-avatar", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
542
- <div [class]="classes()" [style.background-color]="!image() && color() ? color() : null">
541
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: AvatarComponent, isStandalone: true, selector: "f-avatar", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, image: { classPropertyName: "image", publicName: "image", isSignal: true, isRequired: false, transformFunction: null }, shape: { classPropertyName: "shape", publicName: "shape", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, ngImport: i0, template: `
542
+ <div
543
+ [class]="classes()"
544
+ [style.background-color]="!image() && color() ? color() : null"
545
+ >
543
546
  @if (image()) {
544
- <img [src]="image()" [alt]="label()" class="w-full h-full object-cover" />
547
+ <img
548
+ [src]="image()"
549
+ [alt]="label()"
550
+ class="w-full h-full object-cover"
551
+ />
545
552
  } @else if (icon()) {
546
553
  <ui-icon [name]="icon()"></ui-icon>
547
554
  } @else {
@@ -554,11 +561,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
554
561
  type: Component,
555
562
  args: [{
556
563
  selector: 'f-avatar',
564
+ host: {
565
+ class: 'block',
566
+ },
557
567
  imports: [UiIconComponent],
558
568
  template: `
559
- <div [class]="classes()" [style.background-color]="!image() && color() ? color() : null">
569
+ <div
570
+ [class]="classes()"
571
+ [style.background-color]="!image() && color() ? color() : null"
572
+ >
560
573
  @if (image()) {
561
- <img [src]="image()" [alt]="label()" class="w-full h-full object-cover" />
574
+ <img
575
+ [src]="image()"
576
+ [alt]="label()"
577
+ class="w-full h-full object-cover"
578
+ />
562
579
  } @else if (icon()) {
563
580
  <ui-icon [name]="icon()"></ui-icon>
564
581
  } @else {
@@ -571,12 +588,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
571
588
 
572
589
  class AvatarGroupComponent {
573
590
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: AvatarGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
574
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: AvatarGroupComponent, isStandalone: true, selector: "f-avatar-group", ngImport: i0, template: `<div class="flex -space-x-2"><ng-content /></div>`, isInline: true });
591
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.6", type: AvatarGroupComponent, isStandalone: true, selector: "f-avatar-group", host: { classAttribute: "block" }, ngImport: i0, template: `<div class="flex -space-x-2"><ng-content /></div>`, isInline: true });
575
592
  }
576
593
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: AvatarGroupComponent, decorators: [{
577
594
  type: Component,
578
595
  args: [{
579
596
  selector: 'f-avatar-group',
597
+ host: {
598
+ class: 'block',
599
+ },
580
600
  template: `<div class="flex -space-x-2"><ng-content /></div>`,
581
601
  }]
582
602
  }] });
@@ -616,7 +636,7 @@ class ButtonComponent {
616
636
  }), /* @ts-ignore */
617
637
  ...(ngDevMode ? [{ debugName: "hostClass" }] : /* istanbul ignore next */ []));
618
638
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
619
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ButtonComponent, isStandalone: true, selector: "f-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconPos: { classPropertyName: "iconPos", publicName: "iconPos", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
639
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ButtonComponent, isStandalone: true, selector: "f-button", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconPos: { classPropertyName: "iconPos", publicName: "iconPos", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: false, transformFunction: null }, outlined: { classPropertyName: "outlined", publicName: "outlined", isSignal: true, isRequired: false, transformFunction: null }, raised: { classPropertyName: "raised", publicName: "raised", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, fluid: { classPropertyName: "fluid", publicName: "fluid", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick" }, host: { classAttribute: "block" }, ngImport: i0, template: `
620
640
  <button
621
641
  [type]="type()"
622
642
  [disabled]="disabled() || loading()"
@@ -666,10 +686,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
666
686
  }
667
687
  </button>
668
688
  `,
689
+ host: {
690
+ class: 'block',
691
+ },
669
692
  }]
670
693
  }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconPos: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconPos", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: false }] }], outlined: [{ type: i0.Input, args: [{ isSignal: true, alias: "outlined", required: false }] }], raised: [{ type: i0.Input, args: [{ isSignal: true, alias: "raised", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], fluid: [{ type: i0.Input, args: [{ isSignal: true, alias: "fluid", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], onClick: [{ type: i0.Output, args: ["onClick"] }] } });
671
694
  function computeButtonClasses(opts) {
672
- const { severity: sev, text: isText, link: isLink, outlined: isOutlined, rounded: isRounded, raised, fluid: isFluid, size: sz, iconOnly } = opts;
695
+ const { severity: sev, text: isText, link: isLink, outlined: isOutlined, rounded: isRounded, raised, fluid: isFluid, size: sz, iconOnly, } = opts;
673
696
  const parts = [
674
697
  'inline-flex items-center justify-center gap-2 cursor-pointer select-none transition-all duration-[var(--f-transition-duration)]',
675
698
  'focus:outline-none focus-visible:ring-focus',
@@ -680,10 +703,16 @@ function computeButtonClasses(opts) {
680
703
  raised ? 'shadow-md hover:shadow-lg active:shadow-sm' : '',
681
704
  ];
682
705
  const sizing = sz === 'small'
683
- ? (iconOnly ? 'p-1.5 text-xs' : 'px-3 py-1.5 text-xs')
706
+ ? iconOnly
707
+ ? 'p-1.5 text-xs'
708
+ : 'px-3 py-1.5 text-xs'
684
709
  : sz === 'large'
685
- ? (iconOnly ? 'p-3 text-base' : 'px-5 py-3 text-base')
686
- : (iconOnly ? 'p-2 text-sm' : 'px-4 py-2 text-sm');
710
+ ? iconOnly
711
+ ? 'p-3 text-base'
712
+ : 'px-5 py-3 text-base'
713
+ : iconOnly
714
+ ? 'p-2 text-sm'
715
+ : 'px-4 py-2 text-sm';
687
716
  let variant = '';
688
717
  if (isLink) {
689
718
  variant = 'text-primary hover:underline bg-transparent border-none p-0';
@@ -723,7 +752,9 @@ function solidVariant(sev) {
723
752
  contrast: 'active:bg-surface-700',
724
753
  help: 'active:bg-purple-700',
725
754
  };
726
- const border = sev === 'secondary' ? 'border border-(--f-content-border-color) shadow-sm' : 'border border-transparent';
755
+ const border = sev === 'secondary'
756
+ ? 'border border-(--f-content-border-color) shadow-sm'
757
+ : 'border border-transparent';
727
758
  return `${severitySolidBackground(sev)} ${activeMap[sev]} ${border}`;
728
759
  }
729
760
  function outlinedVariant(sev) {
@@ -1109,17 +1140,26 @@ class ProgressbarComponent {
1109
1140
  ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
1110
1141
  showValue = input(true, { ...(ngDevMode ? { debugName: "showValue" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1111
1142
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ProgressbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ProgressbarComponent, isStandalone: true, selector: "f-progressbar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, showValue: { classPropertyName: "showValue", publicName: "showValue", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1113
- <div class="relative w-full h-5 bg-(--f-content-border-color) rounded-lg overflow-hidden" role="progressbar" [attr.aria-valuenow]="value()">
1143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: ProgressbarComponent, isStandalone: true, selector: "f-progressbar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, showValue: { classPropertyName: "showValue", publicName: "showValue", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "relative z-999999" }, ngImport: i0, template: `
1144
+ <div
1145
+ class="relative w-full h-2 bg-(--f-content-border-color) rounded-lg overflow-hidden"
1146
+ role="progressbar"
1147
+ [attr.aria-valuenow]="value()"
1148
+ >
1114
1149
  @if (mode() === 'indeterminate') {
1115
- <div class="absolute inset-y-0 bg-primary rounded-lg w-1/3 indeterminate-bar"></div>
1150
+ <div
1151
+ class="absolute inset-y-0 bg-primary rounded-lg w-1/3 indeterminate-bar"
1152
+ ></div>
1116
1153
  } @else {
1117
1154
  <div
1118
1155
  class="h-full bg-primary rounded-lg transition-all duration-500 ease-out flex items-center justify-center overflow-hidden"
1119
1156
  [style.width]="value() + '%'"
1120
1157
  >
1121
1158
  @if (showValue()) {
1122
- <span class="text-xs font-semibold text-primary-contrast whitespace-nowrap px-1">{{ value() }}%</span>
1159
+ <span
1160
+ class="text-xs font-semibold text-primary-contrast whitespace-nowrap px-1"
1161
+ >{{ value() }}%</span
1162
+ >
1123
1163
  }
1124
1164
  </div>
1125
1165
  }
@@ -1128,17 +1168,26 @@ class ProgressbarComponent {
1128
1168
  }
1129
1169
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ProgressbarComponent, decorators: [{
1130
1170
  type: Component,
1131
- args: [{ selector: 'f-progressbar', template: `
1132
- <div class="relative w-full h-5 bg-(--f-content-border-color) rounded-lg overflow-hidden" role="progressbar" [attr.aria-valuenow]="value()">
1171
+ args: [{ selector: 'f-progressbar', host: { class: 'relative z-999999' }, template: `
1172
+ <div
1173
+ class="relative w-full h-2 bg-(--f-content-border-color) rounded-lg overflow-hidden"
1174
+ role="progressbar"
1175
+ [attr.aria-valuenow]="value()"
1176
+ >
1133
1177
  @if (mode() === 'indeterminate') {
1134
- <div class="absolute inset-y-0 bg-primary rounded-lg w-1/3 indeterminate-bar"></div>
1178
+ <div
1179
+ class="absolute inset-y-0 bg-primary rounded-lg w-1/3 indeterminate-bar"
1180
+ ></div>
1135
1181
  } @else {
1136
1182
  <div
1137
1183
  class="h-full bg-primary rounded-lg transition-all duration-500 ease-out flex items-center justify-center overflow-hidden"
1138
1184
  [style.width]="value() + '%'"
1139
1185
  >
1140
1186
  @if (showValue()) {
1141
- <span class="text-xs font-semibold text-primary-contrast whitespace-nowrap px-1">{{ value() }}%</span>
1187
+ <span
1188
+ class="text-xs font-semibold text-primary-contrast whitespace-nowrap px-1"
1189
+ >{{ value() }}%</span
1190
+ >
1142
1191
  }
1143
1192
  </div>
1144
1193
  }
@@ -1236,10 +1285,14 @@ class TagComponent {
1236
1285
  }, /* @ts-ignore */
1237
1286
  ...(ngDevMode ? [{ debugName: "inlineStyle" }] : /* istanbul ignore next */ []));
1238
1287
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1239
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TagComponent, isStandalone: true, selector: "f-tag", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
1288
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TagComponent, isStandalone: true, selector: "f-tag", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, rounded: { classPropertyName: "rounded", publicName: "rounded", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, ngImport: i0, template: `
1240
1289
  <span [class]="classes()" [style]="inlineStyle()" role="status">
1241
- @if (icon()) { <ui-icon [name]="icon()" class="text-xs"></ui-icon> }
1242
- @if (value()) { <span>{{ value() }}</span> }
1290
+ @if (icon()) {
1291
+ <ui-icon [name]="icon()" class="text-xs"></ui-icon>
1292
+ }
1293
+ @if (value()) {
1294
+ <span>{{ value() }}</span>
1295
+ }
1243
1296
  <ng-content></ng-content>
1244
1297
  </span>
1245
1298
  `, isInline: true, dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }] });
@@ -1251,11 +1304,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
1251
1304
  imports: [UiIconComponent],
1252
1305
  template: `
1253
1306
  <span [class]="classes()" [style]="inlineStyle()" role="status">
1254
- @if (icon()) { <ui-icon [name]="icon()" class="text-xs"></ui-icon> }
1255
- @if (value()) { <span>{{ value() }}</span> }
1307
+ @if (icon()) {
1308
+ <ui-icon [name]="icon()" class="text-xs"></ui-icon>
1309
+ }
1310
+ @if (value()) {
1311
+ <span>{{ value() }}</span>
1312
+ }
1256
1313
  <ng-content></ng-content>
1257
1314
  </span>
1258
1315
  `,
1316
+ host: {
1317
+ class: 'block',
1318
+ },
1259
1319
  }]
1260
1320
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], rounded: [{ type: i0.Input, args: [{ isSignal: true, alias: "rounded", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
1261
1321
 
@@ -3971,19 +4031,31 @@ class PanelComponent {
3971
4031
  toggleable = input(false, { ...(ngDevMode ? { debugName: "toggleable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
3972
4032
  collapsed = model(false, /* @ts-ignore */
3973
4033
  ...(ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []));
3974
- toggleCollapsed() { this.collapsed.update(v => !v); }
4034
+ toggleCollapsed() {
4035
+ this.collapsed.update((v) => !v);
4036
+ }
3975
4037
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3976
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: PanelComponent, isStandalone: true, selector: "f-panel", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, toggleable: { classPropertyName: "toggleable", publicName: "toggleable", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, ngImport: i0, template: `
3977
- <div class="border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm">
3978
- <div class="flex items-center justify-between px-5 py-3.5 bg-(--f-content-hover-background)/80 border-b border-(--f-content-border-color)">
3979
- <span class="font-semibold text-(--f-text-color) text-sm tracking-tight">{{ header() }}</span>
4038
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: PanelComponent, isStandalone: true, selector: "f-panel", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, toggleable: { classPropertyName: "toggleable", publicName: "toggleable", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { classAttribute: "block" }, ngImport: i0, template: `
4039
+ <div
4040
+ class="border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm"
4041
+ >
4042
+ <div
4043
+ class="flex items-center justify-between px-5 py-3.5 bg-(--f-content-hover-background)/80 border-b border-(--f-content-border-color)"
4044
+ >
4045
+ <span
4046
+ class="font-semibold text-(--f-text-color) text-sm tracking-tight"
4047
+ >{{ header() }}</span
4048
+ >
3980
4049
  @if (toggleable()) {
3981
4050
  <button
3982
4051
  type="button"
3983
4052
  class="w-6 h-6 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-border-color)/70 transition-all duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer"
3984
4053
  (click)="toggleCollapsed()"
3985
4054
  >
3986
- <ui-icon [name]="collapsed() ? 'chevron-down' : 'chevron-up'" class="text-xs transition-transform duration-[var(--f-transition-duration)]"></ui-icon>
4055
+ <ui-icon
4056
+ [name]="collapsed() ? 'chevron-down' : 'chevron-up'"
4057
+ class="text-xs transition-transform duration-[var(--f-transition-duration)]"
4058
+ ></ui-icon>
3987
4059
  </button>
3988
4060
  }
3989
4061
  </div>
@@ -4000,17 +4072,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
4000
4072
  args: [{
4001
4073
  selector: 'f-panel',
4002
4074
  imports: [UiIconComponent],
4075
+ host: {
4076
+ class: 'block',
4077
+ },
4003
4078
  template: `
4004
- <div class="border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm">
4005
- <div class="flex items-center justify-between px-5 py-3.5 bg-(--f-content-hover-background)/80 border-b border-(--f-content-border-color)">
4006
- <span class="font-semibold text-(--f-text-color) text-sm tracking-tight">{{ header() }}</span>
4079
+ <div
4080
+ class="border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm"
4081
+ >
4082
+ <div
4083
+ class="flex items-center justify-between px-5 py-3.5 bg-(--f-content-hover-background)/80 border-b border-(--f-content-border-color)"
4084
+ >
4085
+ <span
4086
+ class="font-semibold text-(--f-text-color) text-sm tracking-tight"
4087
+ >{{ header() }}</span
4088
+ >
4007
4089
  @if (toggleable()) {
4008
4090
  <button
4009
4091
  type="button"
4010
4092
  class="w-6 h-6 flex items-center justify-center rounded-md text-(--f-text-muted-color) hover:text-(--f-text-hover-color) hover:bg-(--f-content-border-color)/70 transition-all duration-[var(--f-transition-duration)] focus:outline-none focus-visible:ring-focus cursor-pointer"
4011
4093
  (click)="toggleCollapsed()"
4012
4094
  >
4013
- <ui-icon [name]="collapsed() ? 'chevron-down' : 'chevron-up'" class="text-xs transition-transform duration-[var(--f-transition-duration)]"></ui-icon>
4095
+ <ui-icon
4096
+ [name]="collapsed() ? 'chevron-down' : 'chevron-up'"
4097
+ class="text-xs transition-transform duration-[var(--f-transition-duration)]"
4098
+ ></ui-icon>
4014
4099
  </button>
4015
4100
  }
4016
4101
  </div>
@@ -4266,7 +4351,7 @@ class ToolbarComponent {
4266
4351
  styleClass = input('', /* @ts-ignore */
4267
4352
  ...(ngDevMode ? [{ debugName: "styleClass" }] : /* istanbul ignore next */ []));
4268
4353
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4269
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.6", type: ToolbarComponent, isStandalone: true, selector: "f-toolbar", inputs: { styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
4354
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.6", type: ToolbarComponent, isStandalone: true, selector: "f-toolbar", inputs: { styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, ngImport: i0, template: `
4270
4355
  <div
4271
4356
  class="flex items-center justify-between gap-3 py-2.5 px-4 bg-(--f-content-background) border border-(--f-content-border-color) rounded-lg shadow-sm"
4272
4357
  [class]="styleClass()"
@@ -4305,6 +4390,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
4305
4390
  <ng-content />
4306
4391
  </div>
4307
4392
  `,
4393
+ host: {
4394
+ class: 'block',
4395
+ },
4308
4396
  }]
4309
4397
  }], propDecorators: { styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }] } });
4310
4398
 
@@ -4595,7 +4683,7 @@ class AccordionComponent {
4595
4683
  });
4596
4684
  }
4597
4685
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4598
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.6", type: AccordionComponent, isStandalone: true, selector: "f-accordion", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", onOpen: "onOpen", onClose: "onClose" }, providers: [AccordionContext], ngImport: i0, template: `<div
4686
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.6", type: AccordionComponent, isStandalone: true, selector: "f-accordion", inputs: { multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", onOpen: "onOpen", onClose: "onClose" }, host: { classAttribute: "block" }, providers: [AccordionContext], ngImport: i0, template: `<div
4599
4687
  class="border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm bg-(--f-content-background)"
4600
4688
  >
4601
4689
  <ng-content />
@@ -4606,6 +4694,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
4606
4694
  args: [{
4607
4695
  selector: 'f-accordion',
4608
4696
  providers: [AccordionContext],
4697
+ host: {
4698
+ class: 'block',
4699
+ },
4609
4700
  template: `<div
4610
4701
  class="border border-(--f-content-border-color) rounded-lg overflow-hidden shadow-sm bg-(--f-content-background)"
4611
4702
  >
@@ -4801,12 +4892,15 @@ class ChartComponent {
4801
4892
  this.chart?.destroy();
4802
4893
  }
4803
4894
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4804
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.6", type: ChartComponent, isStandalone: true, selector: "f-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: `<canvas #canvas></canvas>`, isInline: true });
4895
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.6", type: ChartComponent, isStandalone: true, selector: "f-chart", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: `<canvas #canvas></canvas>`, isInline: true });
4805
4896
  }
4806
4897
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ChartComponent, decorators: [{
4807
4898
  type: Component,
4808
4899
  args: [{
4809
4900
  selector: 'f-chart',
4901
+ host: {
4902
+ class: 'block',
4903
+ },
4810
4904
  template: `<canvas #canvas></canvas>`,
4811
4905
  }]
4812
4906
  }], ctorParameters: () => [], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], canvasRef: [{ type: i0.ViewChild, args: ['canvas', { isSignal: true }] }] } });
@@ -5050,7 +5144,9 @@ class TableComponent {
5050
5144
  this.onLazyLoad.emit(this.buildLazyEvent(this.first(), this.rows()));
5051
5145
  }
5052
5146
  }
5053
- onFilterInput(v) { this._filterText.set(v); }
5147
+ onFilterInput(v) {
5148
+ this._filterText.set(v);
5149
+ }
5054
5150
  trackByRow(index, row) {
5055
5151
  const key = this.dataKey();
5056
5152
  const value = row?.[key];
@@ -5077,7 +5173,10 @@ class TableComponent {
5077
5173
  this.sortField.set(null);
5078
5174
  this.sortOrder.set(1);
5079
5175
  }
5080
- this.onSort.emit({ sortField: this.sortField(), sortOrder: this.sortOrder() });
5176
+ this.onSort.emit({
5177
+ sortField: this.sortField(),
5178
+ sortOrder: this.sortOrder(),
5179
+ });
5081
5180
  if (this.lazy()) {
5082
5181
  this.onLazyLoad.emit(this.buildLazyEvent(this.currentFirst(), this.currentRows()));
5083
5182
  }
@@ -5101,37 +5200,83 @@ class TableComponent {
5101
5200
  return a.getTime() - b.getTime();
5102
5201
  if (typeof a === 'number' && typeof b === 'number')
5103
5202
  return a - b;
5104
- return String(a).localeCompare(String(b), undefined, { numeric: true, sensitivity: 'base' });
5203
+ return String(a).localeCompare(String(b), undefined, {
5204
+ numeric: true,
5205
+ sensitivity: 'base',
5206
+ });
5105
5207
  }
5106
5208
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5107
5209
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: TableComponent, isStandalone: true, selector: "f-table", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, totalRecords: { classPropertyName: "totalRecords", publicName: "totalRecords", isSignal: true, isRequired: false, transformFunction: null }, rowHover: { classPropertyName: "rowHover", publicName: "rowHover", isSignal: true, isRequired: false, transformFunction: null }, dataKey: { classPropertyName: "dataKey", publicName: "dataKey", isSignal: true, isRequired: false, transformFunction: null }, scrollable: { classPropertyName: "scrollable", publicName: "scrollable", isSignal: true, isRequired: false, transformFunction: null }, paginator: { classPropertyName: "paginator", publicName: "paginator", isSignal: true, isRequired: false, transformFunction: null }, first: { classPropertyName: "first", publicName: "first", isSignal: true, isRequired: false, transformFunction: null }, rowsPerPageOptions: { classPropertyName: "rowsPerPageOptions", publicName: "rowsPerPageOptions", isSignal: true, isRequired: false, transformFunction: null }, showCurrentPageReport: { classPropertyName: "showCurrentPageReport", publicName: "showCurrentPageReport", isSignal: true, isRequired: false, transformFunction: null }, currentPageReportTemplate: { classPropertyName: "currentPageReportTemplate", publicName: "currentPageReportTemplate", isSignal: true, isRequired: false, transformFunction: null }, tableStyle: { classPropertyName: "tableStyle", publicName: "tableStyle", isSignal: true, isRequired: false, transformFunction: null }, styleClass: { classPropertyName: "styleClass", publicName: "styleClass", isSignal: true, isRequired: false, transformFunction: null }, globalFilterFields: { classPropertyName: "globalFilterFields", publicName: "globalFilterFields", isSignal: true, isRequired: false, transformFunction: null }, sortField: { classPropertyName: "sortField", publicName: "sortField", isSignal: true, isRequired: false, transformFunction: null }, sortOrder: { classPropertyName: "sortOrder", publicName: "sortOrder", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortField: "sortFieldChange", sortOrder: "sortOrderChange", onLazyLoad: "onLazyLoad", onSort: "onSort" }, host: { properties: { "class.row-hover": "rowHover()", "class": "styleClass()" } }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "bodyTemplate", first: true, predicate: ["body"], descendants: true, isSignal: true }, { propertyName: "emptyTemplate", first: true, predicate: ["emptymessage"], descendants: true, isSignal: true }], ngImport: i0, template: `
5108
- <div class="w-full rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm" [class]="scrollable() ? 'overflow-auto max-h-[28rem]' : 'overflow-x-auto'">
5210
+ <div
5211
+ class="w-full rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm"
5212
+ [class]="scrollable() ? 'overflow-auto max-h-[28rem]' : 'overflow-x-auto'"
5213
+ >
5109
5214
  @if (globalFilterFields().length > 0) {
5110
- <div [class]="'p-2 border-b border-(--f-content-border-color) ' + (scrollable() ? 'sticky top-0 z-10 bg-(--f-content-background)' : '')">
5111
- <div class="flex items-center gap-2 px-2 py-1.5 max-w-xs bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)">
5112
- <ui-icon name="search" class="text-xs text-(--f-text-muted-color) shrink-0"></ui-icon>
5113
- <input type="text" class="flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)"
5114
- placeholder="Search..." [value]="filterText()" (input)="onFilterInput($any($event.target).value)" />
5215
+ <div
5216
+ [class]="
5217
+ 'p-2 border-b border-(--f-content-border-color) ' +
5218
+ (scrollable()
5219
+ ? 'sticky top-0 z-10 bg-(--f-content-background)'
5220
+ : '')
5221
+ "
5222
+ >
5223
+ <div
5224
+ class="flex items-center gap-2 px-2 py-1.5 max-w-xs bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)"
5225
+ >
5226
+ <ui-icon
5227
+ name="search"
5228
+ class="text-xs text-(--f-text-muted-color) shrink-0"
5229
+ ></ui-icon>
5230
+ <input
5231
+ type="text"
5232
+ class="flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)"
5233
+ placeholder="Search..."
5234
+ [value]="filterText()"
5235
+ (input)="onFilterInput($any($event.target).value)"
5236
+ />
5115
5237
  </div>
5116
5238
  </div>
5117
5239
  }
5118
5240
  @if (loading()) {
5119
- <div class="flex flex-col items-center justify-center py-20 text-(--f-text-muted-color) gap-3">
5120
- <ui-icon name="loader-circle" [spin]="true" class="text-2xl text-primary/60"></ui-icon>
5121
- <span class="text-sm text-(--f-text-muted-color)">Loading data...</span>
5241
+ <div
5242
+ class="flex flex-col items-center justify-center py-20 text-(--f-text-muted-color) gap-3"
5243
+ >
5244
+ <ui-icon
5245
+ name="loader-circle"
5246
+ [spin]="true"
5247
+ class="text-2xl text-primary/60"
5248
+ ></ui-icon>
5249
+ <span class="text-sm text-(--f-text-muted-color)"
5250
+ >Loading data...</span
5251
+ >
5122
5252
  </div>
5123
5253
  } @else {
5124
- <table class="w-full text-sm text-left border-collapse" [style]="tableStyle()">
5125
- <thead class="bg-(--f-content-hover-background) border-b border-(--f-content-border-color)" [class.sticky]="scrollable()" [class.top-0]="scrollable()" [class.z-10]="scrollable()">
5254
+ <table
5255
+ class="w-full text-sm text-left border-collapse"
5256
+ [style]="tableStyle()"
5257
+ >
5258
+ <thead
5259
+ class="bg-(--f-content-hover-background) border-b border-(--f-content-border-color)"
5260
+ [class.sticky]="scrollable()"
5261
+ [class.top-0]="scrollable()"
5262
+ [class.z-10]="scrollable()"
5263
+ >
5126
5264
  @if (headerTemplate()) {
5127
5265
  <ng-container [ngTemplateOutlet]="headerTemplate()" />
5128
5266
  }
5129
5267
  </thead>
5130
5268
  <tbody class="divide-y divide-(--f-content-border-color)">
5131
5269
  @if (pageRows().length > 0) {
5132
- @for (row of pageRows(); track trackByRow($index, row); let i = $index) {
5270
+ @for (
5271
+ row of pageRows();
5272
+ track trackByRow($index, row);
5273
+ let i = $index
5274
+ ) {
5133
5275
  @if (bodyTemplate()) {
5134
- <ng-container [ngTemplateOutlet]="bodyTemplate()" [ngTemplateOutletContext]="{ $implicit: row, rowIndex: i }" />
5276
+ <ng-container
5277
+ [ngTemplateOutlet]="bodyTemplate()"
5278
+ [ngTemplateOutletContext]="{ $implicit: row, rowIndex: i }"
5279
+ />
5135
5280
  }
5136
5281
  }
5137
5282
  } @else {
@@ -5139,14 +5284,28 @@ class TableComponent {
5139
5284
  <ng-container [ngTemplateOutlet]="emptyTemplate()" />
5140
5285
  } @else {
5141
5286
  <tr>
5142
- <td [attr.colspan]="100" class="text-center py-16 text-(--f-text-muted-color)">
5287
+ <td
5288
+ [attr.colspan]="100"
5289
+ class="text-center py-16 text-(--f-text-muted-color)"
5290
+ >
5143
5291
  <div class="flex flex-col items-center gap-3">
5144
- <div class="w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center">
5145
- <ui-icon name="inbox" class="text-xl text-(--f-text-muted-color)"></ui-icon>
5292
+ <div
5293
+ class="w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center"
5294
+ >
5295
+ <ui-icon
5296
+ name="inbox"
5297
+ class="text-xl text-(--f-text-muted-color)"
5298
+ ></ui-icon>
5146
5299
  </div>
5147
5300
  <div>
5148
- <p class="text-sm font-medium text-(--f-text-muted-color)">No records found</p>
5149
- <p class="text-xs text-(--f-text-muted-color) mt-0.5">Try adjusting your filters</p>
5301
+ <p
5302
+ class="text-sm font-medium text-(--f-text-muted-color)"
5303
+ >
5304
+ No records found
5305
+ </p>
5306
+ <p class="text-xs text-(--f-text-muted-color) mt-0.5">
5307
+ Try adjusting your filters
5308
+ </p>
5150
5309
  </div>
5151
5310
  </div>
5152
5311
  </td>
@@ -5170,7 +5329,7 @@ class TableComponent {
5170
5329
  </div>
5171
5330
  }
5172
5331
  </div>
5173
- `, isInline: true, styles: [":host ::ng-deep thead tr th{padding:.625rem 1rem;font-size:.68rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--f-text-muted-color);white-space:nowrap;background:transparent}:host ::ng-deep tbody tr{transition:background-color var(--f-transition-duration) ease}:host.row-hover ::ng-deep tbody tr:hover{background-color:var(--f-content-hover-background)}:host ::ng-deep tbody tr td{padding:.8125rem 1rem;color:var(--f-text-color);font-size:.875rem;vertical-align:middle}\n"], dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PaginatorComponent, selector: "f-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate"], outputs: ["onPageChange"] }] });
5332
+ `, isInline: true, styles: [":host ::ng-deep thead tr th{padding:.8125rem 1rem;font-size:.875rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--f-text-muted-color);white-space:nowrap;background:transparent}:host ::ng-deep tbody tr{transition:background-color var(--f-transition-duration) ease}:host.row-hover ::ng-deep tbody tr:hover{background-color:var(--f-content-hover-background)}:host ::ng-deep tbody tr td{padding:.8125rem 1rem;color:var(--f-text-color);font-size:.875rem;vertical-align:middle}\n"], dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PaginatorComponent, selector: "f-paginator", inputs: ["first", "rows", "totalRecords", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate"], outputs: ["onPageChange"] }] });
5174
5333
  }
5175
5334
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TableComponent, decorators: [{
5176
5335
  type: Component,
@@ -5178,33 +5337,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
5178
5337
  '[class.row-hover]': 'rowHover()',
5179
5338
  '[class]': 'styleClass()',
5180
5339
  }, template: `
5181
- <div class="w-full rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm" [class]="scrollable() ? 'overflow-auto max-h-[28rem]' : 'overflow-x-auto'">
5340
+ <div
5341
+ class="w-full rounded-lg border border-(--f-content-border-color) bg-(--f-content-background) shadow-sm"
5342
+ [class]="scrollable() ? 'overflow-auto max-h-[28rem]' : 'overflow-x-auto'"
5343
+ >
5182
5344
  @if (globalFilterFields().length > 0) {
5183
- <div [class]="'p-2 border-b border-(--f-content-border-color) ' + (scrollable() ? 'sticky top-0 z-10 bg-(--f-content-background)' : '')">
5184
- <div class="flex items-center gap-2 px-2 py-1.5 max-w-xs bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)">
5185
- <ui-icon name="search" class="text-xs text-(--f-text-muted-color) shrink-0"></ui-icon>
5186
- <input type="text" class="flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)"
5187
- placeholder="Search..." [value]="filterText()" (input)="onFilterInput($any($event.target).value)" />
5345
+ <div
5346
+ [class]="
5347
+ 'p-2 border-b border-(--f-content-border-color) ' +
5348
+ (scrollable()
5349
+ ? 'sticky top-0 z-10 bg-(--f-content-background)'
5350
+ : '')
5351
+ "
5352
+ >
5353
+ <div
5354
+ class="flex items-center gap-2 px-2 py-1.5 max-w-xs bg-(--f-content-hover-background) rounded-lg border border-(--f-content-border-color)"
5355
+ >
5356
+ <ui-icon
5357
+ name="search"
5358
+ class="text-xs text-(--f-text-muted-color) shrink-0"
5359
+ ></ui-icon>
5360
+ <input
5361
+ type="text"
5362
+ class="flex-1 text-sm bg-transparent focus:outline-none text-(--f-text-color) placeholder:text-(--f-form-field-placeholder-color)"
5363
+ placeholder="Search..."
5364
+ [value]="filterText()"
5365
+ (input)="onFilterInput($any($event.target).value)"
5366
+ />
5188
5367
  </div>
5189
5368
  </div>
5190
5369
  }
5191
5370
  @if (loading()) {
5192
- <div class="flex flex-col items-center justify-center py-20 text-(--f-text-muted-color) gap-3">
5193
- <ui-icon name="loader-circle" [spin]="true" class="text-2xl text-primary/60"></ui-icon>
5194
- <span class="text-sm text-(--f-text-muted-color)">Loading data...</span>
5371
+ <div
5372
+ class="flex flex-col items-center justify-center py-20 text-(--f-text-muted-color) gap-3"
5373
+ >
5374
+ <ui-icon
5375
+ name="loader-circle"
5376
+ [spin]="true"
5377
+ class="text-2xl text-primary/60"
5378
+ ></ui-icon>
5379
+ <span class="text-sm text-(--f-text-muted-color)"
5380
+ >Loading data...</span
5381
+ >
5195
5382
  </div>
5196
5383
  } @else {
5197
- <table class="w-full text-sm text-left border-collapse" [style]="tableStyle()">
5198
- <thead class="bg-(--f-content-hover-background) border-b border-(--f-content-border-color)" [class.sticky]="scrollable()" [class.top-0]="scrollable()" [class.z-10]="scrollable()">
5384
+ <table
5385
+ class="w-full text-sm text-left border-collapse"
5386
+ [style]="tableStyle()"
5387
+ >
5388
+ <thead
5389
+ class="bg-(--f-content-hover-background) border-b border-(--f-content-border-color)"
5390
+ [class.sticky]="scrollable()"
5391
+ [class.top-0]="scrollable()"
5392
+ [class.z-10]="scrollable()"
5393
+ >
5199
5394
  @if (headerTemplate()) {
5200
5395
  <ng-container [ngTemplateOutlet]="headerTemplate()" />
5201
5396
  }
5202
5397
  </thead>
5203
5398
  <tbody class="divide-y divide-(--f-content-border-color)">
5204
5399
  @if (pageRows().length > 0) {
5205
- @for (row of pageRows(); track trackByRow($index, row); let i = $index) {
5400
+ @for (
5401
+ row of pageRows();
5402
+ track trackByRow($index, row);
5403
+ let i = $index
5404
+ ) {
5206
5405
  @if (bodyTemplate()) {
5207
- <ng-container [ngTemplateOutlet]="bodyTemplate()" [ngTemplateOutletContext]="{ $implicit: row, rowIndex: i }" />
5406
+ <ng-container
5407
+ [ngTemplateOutlet]="bodyTemplate()"
5408
+ [ngTemplateOutletContext]="{ $implicit: row, rowIndex: i }"
5409
+ />
5208
5410
  }
5209
5411
  }
5210
5412
  } @else {
@@ -5212,14 +5414,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
5212
5414
  <ng-container [ngTemplateOutlet]="emptyTemplate()" />
5213
5415
  } @else {
5214
5416
  <tr>
5215
- <td [attr.colspan]="100" class="text-center py-16 text-(--f-text-muted-color)">
5417
+ <td
5418
+ [attr.colspan]="100"
5419
+ class="text-center py-16 text-(--f-text-muted-color)"
5420
+ >
5216
5421
  <div class="flex flex-col items-center gap-3">
5217
- <div class="w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center">
5218
- <ui-icon name="inbox" class="text-xl text-(--f-text-muted-color)"></ui-icon>
5422
+ <div
5423
+ class="w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center"
5424
+ >
5425
+ <ui-icon
5426
+ name="inbox"
5427
+ class="text-xl text-(--f-text-muted-color)"
5428
+ ></ui-icon>
5219
5429
  </div>
5220
5430
  <div>
5221
- <p class="text-sm font-medium text-(--f-text-muted-color)">No records found</p>
5222
- <p class="text-xs text-(--f-text-muted-color) mt-0.5">Try adjusting your filters</p>
5431
+ <p
5432
+ class="text-sm font-medium text-(--f-text-muted-color)"
5433
+ >
5434
+ No records found
5435
+ </p>
5436
+ <p class="text-xs text-(--f-text-muted-color) mt-0.5">
5437
+ Try adjusting your filters
5438
+ </p>
5223
5439
  </div>
5224
5440
  </div>
5225
5441
  </td>
@@ -5243,7 +5459,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
5243
5459
  </div>
5244
5460
  }
5245
5461
  </div>
5246
- `, styles: [":host ::ng-deep thead tr th{padding:.625rem 1rem;font-size:.68rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--f-text-muted-color);white-space:nowrap;background:transparent}:host ::ng-deep tbody tr{transition:background-color var(--f-transition-duration) ease}:host.row-hover ::ng-deep tbody tr:hover{background-color:var(--f-content-hover-background)}:host ::ng-deep tbody tr td{padding:.8125rem 1rem;color:var(--f-text-color);font-size:.875rem;vertical-align:middle}\n"] }]
5462
+ `, styles: [":host ::ng-deep thead tr th{padding:.8125rem 1rem;font-size:.875rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--f-text-muted-color);white-space:nowrap;background:transparent}:host ::ng-deep tbody tr{transition:background-color var(--f-transition-duration) ease}:host.row-hover ::ng-deep tbody tr:hover{background-color:var(--f-content-hover-background)}:host ::ng-deep tbody tr td{padding:.8125rem 1rem;color:var(--f-text-color);font-size:.875rem;vertical-align:middle}\n"] }]
5247
5463
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], rows: [{ type: i0.Input, args: [{ isSignal: true, alias: "rows", required: false }] }], totalRecords: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalRecords", required: false }] }], rowHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowHover", required: false }] }], dataKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataKey", required: false }] }], scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], paginator: [{ type: i0.Input, args: [{ isSignal: true, alias: "paginator", required: false }] }], first: [{ type: i0.Input, args: [{ isSignal: true, alias: "first", required: false }] }], rowsPerPageOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowsPerPageOptions", required: false }] }], showCurrentPageReport: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCurrentPageReport", required: false }] }], currentPageReportTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "currentPageReportTemplate", required: false }] }], tableStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableStyle", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], globalFilterFields: [{ type: i0.Input, args: [{ isSignal: true, alias: "globalFilterFields", required: false }] }], sortField: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortField", required: false }] }, { type: i0.Output, args: ["sortFieldChange"] }], sortOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortOrder", required: false }] }, { type: i0.Output, args: ["sortOrderChange"] }], onLazyLoad: [{ type: i0.Output, args: ["onLazyLoad"] }], onSort: [{ type: i0.Output, args: ["onSort"] }], headerTemplate: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], bodyTemplate: [{ type: i0.ContentChild, args: ['body', { isSignal: true }] }], emptyTemplate: [{ type: i0.ContentChild, args: ['emptymessage', { isSignal: true }] }] } });
5248
5464
 
5249
5465
  class SortableColumnDirective {
@@ -6563,7 +6779,7 @@ class TreeTableService {
6563
6779
  ...(ngDevMode ? [{ debugName: "_expanded" }] : /* istanbul ignore next */ []));
6564
6780
  expanded = this._expanded.asReadonly();
6565
6781
  toggle(key, node) {
6566
- this._expanded.update(s => {
6782
+ this._expanded.update((s) => {
6567
6783
  const next = new Set(s);
6568
6784
  if (next.has(key)) {
6569
6785
  next.delete(key);
@@ -6604,7 +6820,10 @@ class TreeTableTogglerComponent {
6604
6820
  (click)="onToggle($event)"
6605
6821
  [attr.aria-expanded]="rowNode().expanded"
6606
6822
  >
6607
- <ui-icon [name]="rowNode().expanded ? 'chevron-down' : 'chevron-right'" class="text-xs"></ui-icon>
6823
+ <ui-icon
6824
+ [name]="rowNode().expanded ? 'chevron-down' : 'chevron-right'"
6825
+ class="text-xs"
6826
+ ></ui-icon>
6608
6827
  </button>
6609
6828
  } @else {
6610
6829
  <span class="inline-block w-6 h-6 shrink-0"></span>
@@ -6624,7 +6843,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
6624
6843
  (click)="onToggle($event)"
6625
6844
  [attr.aria-expanded]="rowNode().expanded"
6626
6845
  >
6627
- <ui-icon [name]="rowNode().expanded ? 'chevron-down' : 'chevron-right'" class="text-xs"></ui-icon>
6846
+ <ui-icon
6847
+ [name]="rowNode().expanded ? 'chevron-down' : 'chevron-right'"
6848
+ class="text-xs"
6849
+ ></ui-icon>
6628
6850
  </button>
6629
6851
  } @else {
6630
6852
  <span class="inline-block w-6 h-6 shrink-0"></span>
@@ -6689,12 +6911,18 @@ class TreeTableComponent {
6689
6911
  >
6690
6912
  @if (loading()) {
6691
6913
  <div class="flex flex-col items-center justify-center py-20 gap-3">
6692
- <ui-icon name="loader-circle" [spin]="true" class="text-2xl text-primary/60"></ui-icon>
6914
+ <ui-icon
6915
+ name="loader-circle"
6916
+ [spin]="true"
6917
+ class="text-2xl text-primary/60"
6918
+ ></ui-icon>
6693
6919
  <span class="text-sm text-(--f-text-muted-color)">Loading...</span>
6694
6920
  </div>
6695
6921
  } @else {
6696
6922
  <table class="w-full text-sm text-left border-collapse">
6697
- <thead class="bg-(--f-content-hover-background) border-b border-(--f-content-border-color)">
6923
+ <thead
6924
+ class="bg-(--f-content-hover-background) border-b border-(--f-content-border-color)"
6925
+ >
6698
6926
  @if (headerTemplate()) {
6699
6927
  <ng-container [ngTemplateOutlet]="headerTemplate()" />
6700
6928
  }
@@ -6706,7 +6934,11 @@ class TreeTableComponent {
6706
6934
  @if (bodyTemplate()) {
6707
6935
  <ng-container
6708
6936
  [ngTemplateOutlet]="bodyTemplate()"
6709
- [ngTemplateOutletContext]="{ $implicit: row, rowData: row.node.data, rowNode: row }"
6937
+ [ngTemplateOutletContext]="{
6938
+ $implicit: row,
6939
+ rowData: row.node.data,
6940
+ rowNode: row,
6941
+ }"
6710
6942
  />
6711
6943
  }
6712
6944
  }
@@ -6716,12 +6948,24 @@ class TreeTableComponent {
6716
6948
  <ng-container [ngTemplateOutlet]="emptyTemplate()" />
6717
6949
  } @else {
6718
6950
  <tr>
6719
- <td [attr.colspan]="100" class="text-center py-16 text-(--f-text-muted-color)">
6951
+ <td
6952
+ [attr.colspan]="100"
6953
+ class="text-center py-16 text-(--f-text-muted-color)"
6954
+ >
6720
6955
  <div class="flex flex-col items-center gap-3">
6721
- <div class="w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center">
6722
- <ui-icon name="inbox" class="text-xl text-(--f-text-muted-color)"></ui-icon>
6956
+ <div
6957
+ class="w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center"
6958
+ >
6959
+ <ui-icon
6960
+ name="inbox"
6961
+ class="text-xl text-(--f-text-muted-color)"
6962
+ ></ui-icon>
6723
6963
  </div>
6724
- <p class="text-sm font-medium text-(--f-text-muted-color)">No records found</p>
6964
+ <p
6965
+ class="text-sm font-medium text-(--f-text-muted-color)"
6966
+ >
6967
+ No records found
6968
+ </p>
6725
6969
  </div>
6726
6970
  </td>
6727
6971
  </tr>
@@ -6731,7 +6975,7 @@ class TreeTableComponent {
6731
6975
  </table>
6732
6976
  }
6733
6977
  </div>
6734
- `, isInline: true, styles: [":host ::ng-deep table thead tr th{padding:.625rem 1rem;font-size:.68rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--f-text-muted-color);white-space:nowrap;background:transparent}:host ::ng-deep table tbody tr td{padding:.8125rem 1rem;color:var(--f-text-color);font-size:.875rem;vertical-align:middle}:host ::ng-deep table tbody tr:hover td{background-color:var(--f-content-hover-background)}\n"], dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
6978
+ `, isInline: true, styles: [":host ::ng-deep table thead tr th{padding:.8125rem 1rem;font-size:.875rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--f-text-muted-color);white-space:nowrap;background:transparent}:host ::ng-deep table tbody tr td{padding:.8125rem 1rem;color:var(--f-text-color);font-size:.875rem;vertical-align:middle}:host ::ng-deep table tbody tr:hover td{background-color:var(--f-content-hover-background)}\n"], dependencies: [{ kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
6735
6979
  }
6736
6980
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: TreeTableComponent, decorators: [{
6737
6981
  type: Component,
@@ -6742,12 +6986,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
6742
6986
  >
6743
6987
  @if (loading()) {
6744
6988
  <div class="flex flex-col items-center justify-center py-20 gap-3">
6745
- <ui-icon name="loader-circle" [spin]="true" class="text-2xl text-primary/60"></ui-icon>
6989
+ <ui-icon
6990
+ name="loader-circle"
6991
+ [spin]="true"
6992
+ class="text-2xl text-primary/60"
6993
+ ></ui-icon>
6746
6994
  <span class="text-sm text-(--f-text-muted-color)">Loading...</span>
6747
6995
  </div>
6748
6996
  } @else {
6749
6997
  <table class="w-full text-sm text-left border-collapse">
6750
- <thead class="bg-(--f-content-hover-background) border-b border-(--f-content-border-color)">
6998
+ <thead
6999
+ class="bg-(--f-content-hover-background) border-b border-(--f-content-border-color)"
7000
+ >
6751
7001
  @if (headerTemplate()) {
6752
7002
  <ng-container [ngTemplateOutlet]="headerTemplate()" />
6753
7003
  }
@@ -6759,7 +7009,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
6759
7009
  @if (bodyTemplate()) {
6760
7010
  <ng-container
6761
7011
  [ngTemplateOutlet]="bodyTemplate()"
6762
- [ngTemplateOutletContext]="{ $implicit: row, rowData: row.node.data, rowNode: row }"
7012
+ [ngTemplateOutletContext]="{
7013
+ $implicit: row,
7014
+ rowData: row.node.data,
7015
+ rowNode: row,
7016
+ }"
6763
7017
  />
6764
7018
  }
6765
7019
  }
@@ -6769,12 +7023,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
6769
7023
  <ng-container [ngTemplateOutlet]="emptyTemplate()" />
6770
7024
  } @else {
6771
7025
  <tr>
6772
- <td [attr.colspan]="100" class="text-center py-16 text-(--f-text-muted-color)">
7026
+ <td
7027
+ [attr.colspan]="100"
7028
+ class="text-center py-16 text-(--f-text-muted-color)"
7029
+ >
6773
7030
  <div class="flex flex-col items-center gap-3">
6774
- <div class="w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center">
6775
- <ui-icon name="inbox" class="text-xl text-(--f-text-muted-color)"></ui-icon>
7031
+ <div
7032
+ class="w-12 h-12 rounded-full bg-(--f-content-hover-background) flex items-center justify-center"
7033
+ >
7034
+ <ui-icon
7035
+ name="inbox"
7036
+ class="text-xl text-(--f-text-muted-color)"
7037
+ ></ui-icon>
6776
7038
  </div>
6777
- <p class="text-sm font-medium text-(--f-text-muted-color)">No records found</p>
7039
+ <p
7040
+ class="text-sm font-medium text-(--f-text-muted-color)"
7041
+ >
7042
+ No records found
7043
+ </p>
6778
7044
  </div>
6779
7045
  </td>
6780
7046
  </tr>
@@ -6784,7 +7050,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
6784
7050
  </table>
6785
7051
  }
6786
7052
  </div>
6787
- `, host: { '[class]': 'styleClass()' }, styles: [":host ::ng-deep table thead tr th{padding:.625rem 1rem;font-size:.68rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--f-text-muted-color);white-space:nowrap;background:transparent}:host ::ng-deep table tbody tr td{padding:.8125rem 1rem;color:var(--f-text-color);font-size:.875rem;vertical-align:middle}:host ::ng-deep table tbody tr:hover td{background-color:var(--f-content-hover-background)}\n"] }]
7053
+ `, host: { '[class]': 'styleClass()' }, styles: [":host ::ng-deep table thead tr th{padding:.8125rem 1rem;font-size:.875rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--f-text-muted-color);white-space:nowrap;background:transparent}:host ::ng-deep table tbody tr td{padding:.8125rem 1rem;color:var(--f-text-color);font-size:.875rem;vertical-align:middle}:host ::ng-deep table tbody tr:hover td{background-color:var(--f-content-hover-background)}\n"] }]
6788
7054
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], dataKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataKey", required: false }] }], styleClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "styleClass", required: false }] }], tableStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "tableStyle", required: false }] }], scrollable: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollable", required: false }] }], headerTemplate: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], bodyTemplate: [{ type: i0.ContentChild, args: ['body', { isSignal: true }] }], emptyTemplate: [{ type: i0.ContentChild, args: ['emptymessage', { isSignal: true }] }] } });
6789
7055
 
6790
7056
  let _uidCounter$1 = 0;
@@ -7207,22 +7473,25 @@ class BadgeComponent {
7207
7473
  }, /* @ts-ignore */
7208
7474
  ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
7209
7475
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: BadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7210
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.6", type: BadgeComponent, isStandalone: true, selector: "f-badge", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
7211
- <span [class]="classes()">
7476
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.6", type: BadgeComponent, isStandalone: true, selector: "f-badge", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "block" }, ngImport: i0, template: `
7477
+ <p [class]="classes()">
7212
7478
  {{ value() }}
7213
7479
  <ng-content></ng-content>
7214
- </span>
7480
+ </p>
7215
7481
  `, isInline: true });
7216
7482
  }
7217
7483
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: BadgeComponent, decorators: [{
7218
7484
  type: Component,
7219
7485
  args: [{
7220
7486
  selector: 'f-badge',
7487
+ host: {
7488
+ class: 'block',
7489
+ },
7221
7490
  template: `
7222
- <span [class]="classes()">
7491
+ <p [class]="classes()">
7223
7492
  {{ value() }}
7224
7493
  <ng-content></ng-content>
7225
- </span>
7494
+ </p>
7226
7495
  `,
7227
7496
  }]
7228
7497
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }] } });
@@ -7236,9 +7505,14 @@ class OverlayBadgeComponent {
7236
7505
  ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
7237
7506
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: OverlayBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7238
7507
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.6", type: OverlayBadgeComponent, isStandalone: true, selector: "f-overlaybadge", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
7239
- <div class="relative inline-flex">
7508
+ <div class="relative flex items-center justify-center">
7240
7509
  <ng-content></ng-content>
7241
- <f-badge [value]="value()" [severity]="severity()" [size]="size()" class="absolute -top-1 -right-1"></f-badge>
7510
+ <f-badge
7511
+ [value]="value()"
7512
+ [severity]="severity()"
7513
+ [size]="size()"
7514
+ class="absolute -top-2 -right-2"
7515
+ ></f-badge>
7242
7516
  </div>
7243
7517
  `, isInline: true, dependencies: [{ kind: "component", type: BadgeComponent, selector: "f-badge", inputs: ["value", "severity", "size"] }] });
7244
7518
  }
@@ -7248,9 +7522,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
7248
7522
  selector: 'f-overlaybadge',
7249
7523
  imports: [BadgeComponent],
7250
7524
  template: `
7251
- <div class="relative inline-flex">
7525
+ <div class="relative flex items-center justify-center">
7252
7526
  <ng-content></ng-content>
7253
- <f-badge [value]="value()" [severity]="severity()" [size]="size()" class="absolute -top-1 -right-1"></f-badge>
7527
+ <f-badge
7528
+ [value]="value()"
7529
+ [severity]="severity()"
7530
+ [size]="size()"
7531
+ class="absolute -top-2 -right-2"
7532
+ ></f-badge>
7254
7533
  </div>
7255
7534
  `,
7256
7535
  }]
@@ -7262,7 +7541,9 @@ class FieldsetComponent {
7262
7541
  toggleable = input(false, { ...(ngDevMode ? { debugName: "toggleable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
7263
7542
  collapsed = model(false, /* @ts-ignore */
7264
7543
  ...(ngDevMode ? [{ debugName: "collapsed" }] : /* istanbul ignore next */ []));
7265
- toggleCollapsed() { this.collapsed.update(v => !v); }
7544
+ toggleCollapsed() {
7545
+ this.collapsed.update((v) => !v);
7546
+ }
7266
7547
  onSpace(event) {
7267
7548
  if (!this.toggleable())
7268
7549
  return;
@@ -7270,8 +7551,10 @@ class FieldsetComponent {
7270
7551
  this.toggleCollapsed();
7271
7552
  }
7272
7553
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: FieldsetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7273
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: FieldsetComponent, isStandalone: true, selector: "f-fieldset", inputs: { legend: { classPropertyName: "legend", publicName: "legend", isSignal: true, isRequired: false, transformFunction: null }, toggleable: { classPropertyName: "toggleable", publicName: "toggleable", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, ngImport: i0, template: `
7274
- <fieldset class="border border-(--f-content-border-color) rounded-lg p-4 pt-0">
7554
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: FieldsetComponent, isStandalone: true, selector: "f-fieldset", inputs: { legend: { classPropertyName: "legend", publicName: "legend", isSignal: true, isRequired: false, transformFunction: null }, toggleable: { classPropertyName: "toggleable", publicName: "toggleable", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { collapsed: "collapsedChange" }, host: { classAttribute: "block" }, ngImport: i0, template: `
7555
+ <fieldset
7556
+ class="border border-(--f-content-border-color) rounded-lg p-4 pt-0"
7557
+ >
7275
7558
  <legend
7276
7559
  class="px-2 text-sm font-semibold text-(--f-text-color) flex items-center gap-2 rounded focus-visible:outline-none focus-visible:ring-focus"
7277
7560
  [class.cursor-pointer]="toggleable()"
@@ -7283,7 +7566,10 @@ class FieldsetComponent {
7283
7566
  (keydown.space)="onSpace($event)"
7284
7567
  >
7285
7568
  @if (toggleable()) {
7286
- <ui-icon [name]="collapsed() ? 'chevron-right' : 'chevron-down'" class="text-xs"></ui-icon>
7569
+ <ui-icon
7570
+ [name]="collapsed() ? 'chevron-right' : 'chevron-down'"
7571
+ class="text-xs"
7572
+ ></ui-icon>
7287
7573
  }
7288
7574
  {{ legend() }}
7289
7575
  </legend>
@@ -7301,7 +7587,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
7301
7587
  selector: 'f-fieldset',
7302
7588
  imports: [UiIconComponent],
7303
7589
  template: `
7304
- <fieldset class="border border-(--f-content-border-color) rounded-lg p-4 pt-0">
7590
+ <fieldset
7591
+ class="border border-(--f-content-border-color) rounded-lg p-4 pt-0"
7592
+ >
7305
7593
  <legend
7306
7594
  class="px-2 text-sm font-semibold text-(--f-text-color) flex items-center gap-2 rounded focus-visible:outline-none focus-visible:ring-focus"
7307
7595
  [class.cursor-pointer]="toggleable()"
@@ -7313,7 +7601,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
7313
7601
  (keydown.space)="onSpace($event)"
7314
7602
  >
7315
7603
  @if (toggleable()) {
7316
- <ui-icon [name]="collapsed() ? 'chevron-right' : 'chevron-down'" class="text-xs"></ui-icon>
7604
+ <ui-icon
7605
+ [name]="collapsed() ? 'chevron-right' : 'chevron-down'"
7606
+ class="text-xs"
7607
+ ></ui-icon>
7317
7608
  }
7318
7609
  {{ legend() }}
7319
7610
  </legend>
@@ -7324,6 +7615,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
7324
7615
  }
7325
7616
  </fieldset>
7326
7617
  `,
7618
+ host: {
7619
+ class: 'block',
7620
+ },
7327
7621
  }]
7328
7622
  }], propDecorators: { legend: [{ type: i0.Input, args: [{ isSignal: true, alias: "legend", required: false }] }], toggleable: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleable", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }] } });
7329
7623
 
@@ -7612,12 +7906,10 @@ class MenuComponent {
7612
7906
  visible = this._visible.asReadonly();
7613
7907
  _openedAt = 0;
7614
7908
  toggle(event) {
7615
- event?.stopPropagation();
7616
7909
  this._openedAt = Date.now();
7617
7910
  this._visible.update(v => !v);
7618
7911
  }
7619
7912
  show(event) {
7620
- event?.stopPropagation();
7621
7913
  this._openedAt = Date.now();
7622
7914
  this._visible.set(true);
7623
7915
  }
@@ -9908,9 +10200,15 @@ class CascadeSelectComponent {
9908
10200
  const base = 'w-full min-h-[38px] flex items-center gap-2 px-3 py-1.5 text-sm rounded-lg border bg-(--f-form-field-background) focus:outline-none focus-visible:ring-focus transition-all duration-[var(--f-transition-duration)]';
9909
10201
  const showInvalid = this.invalid() && this.touched();
9910
10202
  const stateClass = this.open()
9911
- ? (showInvalid ? 'border-red-400' : 'border-primary')
9912
- : (showInvalid ? 'border-red-400' : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)');
9913
- const disabledClass = this.disabled() ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer';
10203
+ ? showInvalid
10204
+ ? 'border-red-400'
10205
+ : 'border-primary'
10206
+ : showInvalid
10207
+ ? 'border-red-400'
10208
+ : 'border-(--f-form-field-border-color) hover:border-(--f-form-field-hover-border-color)';
10209
+ const disabledClass = this.disabled()
10210
+ ? 'opacity-60 cursor-not-allowed'
10211
+ : 'cursor-pointer';
9914
10212
  return `${base} ${stateClass} ${disabledClass}`;
9915
10213
  }, /* @ts-ignore */
9916
10214
  ...(ngDevMode ? [{ debugName: "triggerClass" }] : /* istanbul ignore next */ []));
@@ -9924,16 +10222,22 @@ class CascadeSelectComponent {
9924
10222
  return cols;
9925
10223
  }, /* @ts-ignore */
9926
10224
  ...(ngDevMode ? [{ debugName: "levels" }] : /* istanbul ignore next */ []));
9927
- getLabel(opt) { return String(opt[this.optionLabel()] ?? ''); }
9928
- getValue(opt) { return opt[this.optionValue()]; }
9929
- getChildren(opt) { return opt[this.optionChildren()] ?? []; }
10225
+ getLabel(opt) {
10226
+ return String(opt[this.optionLabel()] ?? '');
10227
+ }
10228
+ getValue(opt) {
10229
+ return opt[this.optionValue()];
10230
+ }
10231
+ getChildren(opt) {
10232
+ return opt[this.optionChildren()] ?? [];
10233
+ }
9930
10234
  isActive(opt, level) {
9931
10235
  return this.activePath()[level] === opt;
9932
10236
  }
9933
10237
  toggleOpen() {
9934
10238
  if (this.disabled())
9935
10239
  return;
9936
- this._open.update(v => !v);
10240
+ this._open.update((v) => !v);
9937
10241
  if (!this.open())
9938
10242
  this._onTouched();
9939
10243
  }
@@ -9944,7 +10248,7 @@ class CascadeSelectComponent {
9944
10248
  const children = this.getChildren(opt);
9945
10249
  if (!children.length) {
9946
10250
  this._selectedValue = this.getValue(opt);
9947
- this._selectedPath.set(path.map(p => this.getLabel(p)));
10251
+ this._selectedPath.set(path.map((p) => this.getLabel(p)));
9948
10252
  this._onChange(this._selectedValue);
9949
10253
  this._open.set(false);
9950
10254
  this._onTouched();
@@ -9963,7 +10267,7 @@ class CascadeSelectComponent {
9963
10267
  return;
9964
10268
  }
9965
10269
  const path = this.findPath(this.options(), v);
9966
- this._selectedPath.set(path.map(p => this.getLabel(p)));
10270
+ this._selectedPath.set(path.map((p) => this.getLabel(p)));
9967
10271
  }
9968
10272
  findPath(options, value, trail = []) {
9969
10273
  for (const opt of options) {
@@ -9976,33 +10280,72 @@ class CascadeSelectComponent {
9976
10280
  }
9977
10281
  return [];
9978
10282
  }
9979
- registerOnChange(fn) { this._onChange = fn; }
9980
- registerOnTouched(fn) { this._onTouched = fn; }
10283
+ registerOnChange(fn) {
10284
+ this._onChange = fn;
10285
+ }
10286
+ registerOnTouched(fn) {
10287
+ this._onTouched = fn;
10288
+ }
9981
10289
  setDisabledState() { }
9982
10290
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CascadeSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9983
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: CascadeSelectComponent, isStandalone: true, selector: "f-cascadeselect", 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 }, optionChildren: { classPropertyName: "optionChildren", publicName: "optionChildren", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CascadeSelectComponent), multi: true }], ngImport: i0, template: `
10291
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: CascadeSelectComponent, isStandalone: true, selector: "f-cascadeselect", 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 }, optionChildren: { classPropertyName: "optionChildren", publicName: "optionChildren", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:click": "onDocumentClick($event)" }, classAttribute: "block" }, providers: [
10292
+ {
10293
+ provide: NG_VALUE_ACCESSOR,
10294
+ useExisting: forwardRef(() => CascadeSelectComponent),
10295
+ multi: true,
10296
+ },
10297
+ ], ngImport: i0, template: `
9984
10298
  <div class="relative w-full">
9985
- <button type="button" [class]="triggerClass()" [disabled]="disabled()" (click)="toggleOpen()">
9986
- <span class="truncate text-sm" [class.text-(--f-form-field-placeholder-color)]="!selectedPath().length">
9987
- {{ selectedPath().length ? selectedPath().join(' / ') : placeholder() }}
10299
+ <button
10300
+ type="button"
10301
+ [class]="triggerClass()"
10302
+ [disabled]="disabled()"
10303
+ (click)="toggleOpen()"
10304
+ >
10305
+ <span
10306
+ class="truncate text-sm"
10307
+ [class.text-(--f-form-field-placeholder-color)]="
10308
+ !selectedPath().length
10309
+ "
10310
+ >
10311
+ {{
10312
+ selectedPath().length ? selectedPath().join(' / ') : placeholder()
10313
+ }}
9988
10314
  </span>
9989
- <ui-icon name="chevron-down" class="ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]" [class.rotate-180]="open()"></ui-icon>
10315
+ <ui-icon
10316
+ name="chevron-down"
10317
+ class="ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]"
10318
+ [class.rotate-180]="open()"
10319
+ ></ui-icon>
9990
10320
  </button>
9991
10321
 
9992
10322
  @if (open()) {
9993
- <div class="absolute z-50 mt-1 flex bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden">
10323
+ <div
10324
+ class="absolute z-50 mt-1 flex bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden"
10325
+ >
9994
10326
  @for (level of levels(); track $index) {
9995
- <ul class="max-h-64 overflow-auto py-1 min-w-[10rem] border-r border-(--f-content-border-color) last:border-r-0">
10327
+ <ul
10328
+ class="max-h-64 overflow-auto py-1 min-w-[10rem] border-r border-(--f-content-border-color) last:border-r-0"
10329
+ >
9996
10330
  @for (opt of level; track getLabel(opt)) {
9997
10331
  <li>
9998
10332
  <button
9999
10333
  type="button"
10000
10334
  class="w-full flex items-center justify-between gap-2 px-3 py-2 text-sm text-left transition-colors cursor-pointer"
10001
- [class]="isActive(opt, $index) ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'"
10335
+ [class]="
10336
+ isActive(opt, $index)
10337
+ ? 'bg-(--f-highlight-background) text-(--f-highlight-color)'
10338
+ : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'
10339
+ "
10002
10340
  (click)="onOptionClick(opt, $index)"
10003
10341
  >
10004
10342
  <span class="truncate">{{ getLabel(opt) }}</span>
10005
- @if (getChildren(opt).length) { <ui-icon name="chevron-right" class="text-[10px] text-(--f-text-muted-color) shrink-0"></ui-icon> }
10343
+ @if (getChildren(opt).length) {
10344
+ <ui-icon
10345
+ name="chevron-right"
10346
+ class="text-[10px] text-(--f-text-muted-color) shrink-0"
10347
+ ></ui-icon>
10348
+ }
10006
10349
  </button>
10007
10350
  </li>
10008
10351
  }
@@ -10018,31 +10361,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
10018
10361
  args: [{
10019
10362
  selector: 'f-cascadeselect',
10020
10363
  imports: [UiIconComponent],
10021
- providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => CascadeSelectComponent), multi: true }],
10022
- host: { '(document:click)': 'onDocumentClick($event)' },
10364
+ providers: [
10365
+ {
10366
+ provide: NG_VALUE_ACCESSOR,
10367
+ useExisting: forwardRef(() => CascadeSelectComponent),
10368
+ multi: true,
10369
+ },
10370
+ ],
10371
+ host: { class: 'block', '(document:click)': 'onDocumentClick($event)' },
10023
10372
  template: `
10024
10373
  <div class="relative w-full">
10025
- <button type="button" [class]="triggerClass()" [disabled]="disabled()" (click)="toggleOpen()">
10026
- <span class="truncate text-sm" [class.text-(--f-form-field-placeholder-color)]="!selectedPath().length">
10027
- {{ selectedPath().length ? selectedPath().join(' / ') : placeholder() }}
10374
+ <button
10375
+ type="button"
10376
+ [class]="triggerClass()"
10377
+ [disabled]="disabled()"
10378
+ (click)="toggleOpen()"
10379
+ >
10380
+ <span
10381
+ class="truncate text-sm"
10382
+ [class.text-(--f-form-field-placeholder-color)]="
10383
+ !selectedPath().length
10384
+ "
10385
+ >
10386
+ {{
10387
+ selectedPath().length ? selectedPath().join(' / ') : placeholder()
10388
+ }}
10028
10389
  </span>
10029
- <ui-icon name="chevron-down" class="ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]" [class.rotate-180]="open()"></ui-icon>
10390
+ <ui-icon
10391
+ name="chevron-down"
10392
+ class="ml-auto text-xs text-(--f-form-field-placeholder-color) shrink-0 transition-transform duration-[var(--f-transition-duration)]"
10393
+ [class.rotate-180]="open()"
10394
+ ></ui-icon>
10030
10395
  </button>
10031
10396
 
10032
10397
  @if (open()) {
10033
- <div class="absolute z-50 mt-1 flex bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden">
10398
+ <div
10399
+ class="absolute z-50 mt-1 flex bg-(--f-overlay-popover-background) border border-(--f-content-border-color) rounded-lg shadow-lg overflow-hidden"
10400
+ >
10034
10401
  @for (level of levels(); track $index) {
10035
- <ul class="max-h-64 overflow-auto py-1 min-w-[10rem] border-r border-(--f-content-border-color) last:border-r-0">
10402
+ <ul
10403
+ class="max-h-64 overflow-auto py-1 min-w-[10rem] border-r border-(--f-content-border-color) last:border-r-0"
10404
+ >
10036
10405
  @for (opt of level; track getLabel(opt)) {
10037
10406
  <li>
10038
10407
  <button
10039
10408
  type="button"
10040
10409
  class="w-full flex items-center justify-between gap-2 px-3 py-2 text-sm text-left transition-colors cursor-pointer"
10041
- [class]="isActive(opt, $index) ? 'bg-(--f-highlight-background) text-(--f-highlight-color)' : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'"
10410
+ [class]="
10411
+ isActive(opt, $index)
10412
+ ? 'bg-(--f-highlight-background) text-(--f-highlight-color)'
10413
+ : 'text-(--f-text-color) hover:bg-(--f-content-hover-background)'
10414
+ "
10042
10415
  (click)="onOptionClick(opt, $index)"
10043
10416
  >
10044
10417
  <span class="truncate">{{ getLabel(opt) }}</span>
10045
- @if (getChildren(opt).length) { <ui-icon name="chevron-right" class="text-[10px] text-(--f-text-muted-color) shrink-0"></ui-icon> }
10418
+ @if (getChildren(opt).length) {
10419
+ <ui-icon
10420
+ name="chevron-right"
10421
+ class="text-[10px] text-(--f-text-muted-color) shrink-0"
10422
+ ></ui-icon>
10423
+ }
10046
10424
  </button>
10047
10425
  </li>
10048
10426
  }