@ojiepermana/angular-component 22.0.44 → 22.0.46

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.
Files changed (65) hide show
  1. package/fesm2022/ojiepermana-angular-component-accordion.mjs +9 -11
  2. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +100 -32
  3. package/fesm2022/ojiepermana-angular-component-alert.mjs +5 -9
  4. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +2 -3
  5. package/fesm2022/ojiepermana-angular-component-avatar.mjs +7 -13
  6. package/fesm2022/ojiepermana-angular-component-badge.mjs +2 -3
  7. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +16 -19
  8. package/fesm2022/ojiepermana-angular-component-button-group.mjs +4 -7
  9. package/fesm2022/ojiepermana-angular-component-button.mjs +2 -3
  10. package/fesm2022/ojiepermana-angular-component-calendar.mjs +7 -5
  11. package/fesm2022/ojiepermana-angular-component-card.mjs +8 -15
  12. package/fesm2022/ojiepermana-angular-component-carousel.mjs +15 -18
  13. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +40 -11
  14. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +8 -6
  15. package/fesm2022/ojiepermana-angular-component-combobox.mjs +36 -16
  16. package/fesm2022/ojiepermana-angular-component-command.mjs +25 -21
  17. package/fesm2022/ojiepermana-angular-component-composer.mjs +15 -18
  18. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +36 -11
  19. package/fesm2022/ojiepermana-angular-component-dialog.mjs +85 -30
  20. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +31 -26
  21. package/fesm2022/ojiepermana-angular-component-editor.mjs +37 -28
  22. package/fesm2022/ojiepermana-angular-component-empty.mjs +7 -13
  23. package/fesm2022/ojiepermana-angular-component-form.mjs +32 -24
  24. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +2 -3
  25. package/fesm2022/ojiepermana-angular-component-icon.mjs +51 -6
  26. package/fesm2022/ojiepermana-angular-component-input-group.mjs +17 -15
  27. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +15 -14
  28. package/fesm2022/ojiepermana-angular-component-input.mjs +2 -3
  29. package/fesm2022/ojiepermana-angular-component-item.mjs +11 -21
  30. package/fesm2022/ojiepermana-angular-component-kanban.mjs +27 -26
  31. package/fesm2022/ojiepermana-angular-component-kbd.mjs +3 -5
  32. package/fesm2022/ojiepermana-angular-component-label.mjs +2 -3
  33. package/fesm2022/ojiepermana-angular-component-menubar.mjs +6 -6
  34. package/fesm2022/ojiepermana-angular-component-native-select.mjs +3 -3
  35. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +25 -12
  36. package/fesm2022/ojiepermana-angular-component-pagination.mjs +22 -13
  37. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +70 -36
  38. package/fesm2022/ojiepermana-angular-component-progress.mjs +7 -5
  39. package/fesm2022/ojiepermana-angular-component-radio.mjs +21 -10
  40. package/fesm2022/ojiepermana-angular-component-resizable.mjs +22 -11
  41. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +8 -6
  42. package/fesm2022/ojiepermana-angular-component-select.mjs +29 -17
  43. package/fesm2022/ojiepermana-angular-component-separator.mjs +2 -3
  44. package/fesm2022/ojiepermana-angular-component-sheet.mjs +89 -30
  45. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +2 -3
  46. package/fesm2022/ojiepermana-angular-component-slider.mjs +25 -13
  47. package/fesm2022/ojiepermana-angular-component-spinner.mjs +6 -5
  48. package/fesm2022/ojiepermana-angular-component-switch.mjs +17 -8
  49. package/fesm2022/ojiepermana-angular-component-table.mjs +9 -17
  50. package/fesm2022/ojiepermana-angular-component-tabs.mjs +5 -9
  51. package/fesm2022/ojiepermana-angular-component-textarea.mjs +2 -3
  52. package/fesm2022/ojiepermana-angular-component-timeline.mjs +22 -17
  53. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +12 -6
  54. package/fesm2022/ojiepermana-angular-component-toggle.mjs +2 -3
  55. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +7 -6
  56. package/package.json +10 -1
  57. package/types/ojiepermana-angular-component-alert-dialog.d.ts +42 -3
  58. package/types/ojiepermana-angular-component-combobox.d.ts +4 -1
  59. package/types/ojiepermana-angular-component-command.d.ts +7 -2
  60. package/types/ojiepermana-angular-component-dialog.d.ts +33 -3
  61. package/types/ojiepermana-angular-component-form.d.ts +9 -0
  62. package/types/ojiepermana-angular-component-icon.d.ts +48 -1
  63. package/types/ojiepermana-angular-component-radio.d.ts +4 -1
  64. package/types/ojiepermana-angular-component-sheet.d.ts +33 -3
  65. package/types/ojiepermana-angular-component-timeline.d.ts +2 -1
@@ -1,6 +1,6 @@
1
1
  import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, TemplateRef, Directive, ElementRef, contentChild, input, booleanAttribute, output, computed, ChangeDetectionStrategy, Component, numberAttribute, DestroyRef, signal, viewChild, contentChildren, forwardRef } from '@angular/core';
3
+ import { inject, TemplateRef, Directive, ElementRef, contentChild, input, booleanAttribute, output, computed, Component, numberAttribute, DestroyRef, signal, viewChild, contentChildren, forwardRef } from '@angular/core';
4
4
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
5
  import { cn, uniqueId } from '@ojiepermana/angular-component/utils';
6
6
 
@@ -76,17 +76,17 @@ class PillboxOptionComponent {
76
76
  stroke="currentColor"
77
77
  stroke-width="1.75"
78
78
  stroke-linecap="round"
79
- stroke-linejoin="round">
79
+ stroke-linejoin="round"
80
+ >
80
81
  <path d="M20 6 9 17l-5-5" />
81
82
  </svg>
82
83
  }
83
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
84
+ `, isInline: true });
84
85
  }
85
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: PillboxOptionComponent, decorators: [{
86
87
  type: Component,
87
88
  args: [{
88
89
  selector: 'PillboxOption, button[PillboxOption]',
89
- changeDetection: ChangeDetectionStrategy.OnPush,
90
90
  host: {
91
91
  type: 'button',
92
92
  '[class]': 'classes()',
@@ -113,7 +113,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
113
113
  stroke="currentColor"
114
114
  stroke-width="1.75"
115
115
  stroke-linecap="round"
116
- stroke-linejoin="round">
116
+ stroke-linejoin="round"
117
+ >
117
118
  <path d="M20 6 9 17l-5-5" />
118
119
  </svg>
119
120
  }
@@ -139,13 +140,12 @@ class PillboxOptionCreateComponent {
139
140
  this.context.chooseCreate(this, event);
140
141
  }
141
142
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: PillboxOptionCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
142
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: PillboxOptionCreateComponent, isStandalone: true, selector: "PillboxOptionCreate, button[PillboxOptionCreate]", inputs: { minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeydown($any($event))", "keydown.space": "handleKeydown($any($event))" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option-create\"", "attr.role": "\"option\"", "attr.tabindex": "disabled() ? -1 : 0", "attr.aria-disabled": "disabled() ? \"true\" : null", "hidden": "!visible()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: PillboxOptionCreateComponent, isStandalone: true, selector: "PillboxOptionCreate, button[PillboxOptionCreate]", inputs: { minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeydown($any($event))", "keydown.space": "handleKeydown($any($event))" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option-create\"", "attr.role": "\"option\"", "attr.tabindex": "disabled() ? -1 : 0", "attr.aria-disabled": "disabled() ? \"true\" : null", "hidden": "!visible()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
143
144
  }
144
145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: PillboxOptionCreateComponent, decorators: [{
145
146
  type: Component,
146
147
  args: [{
147
148
  selector: 'PillboxOptionCreate, button[PillboxOptionCreate]',
148
- changeDetection: ChangeDetectionStrategy.OnPush,
149
149
  host: {
150
150
  type: 'button',
151
151
  '[class]': 'classes()',
@@ -176,13 +176,12 @@ class PillboxOptionEmptyComponent {
176
176
  } @else {
177
177
  <ng-content />
178
178
  }
179
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
179
+ `, isInline: true });
180
180
  }
181
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: PillboxOptionEmptyComponent, decorators: [{
182
182
  type: Component,
183
183
  args: [{
184
184
  selector: 'PillboxOptionEmpty',
185
- changeDetection: ChangeDetectionStrategy.OnPush,
186
185
  host: {
187
186
  '[class]': 'classes()',
188
187
  '[attr.data-slot]': '"pillbox-option-empty"',
@@ -424,7 +423,9 @@ class PillboxComponent extends PillboxContext {
424
423
  this.disabledFromControl.set(disabled);
425
424
  }
426
425
  emitValue() {
427
- const nextValue = this.multiple() ? [...this.selectedValues()] : (this.selectedValues()[0] ?? null);
426
+ const nextValue = this.multiple()
427
+ ? [...this.selectedValues()]
428
+ : (this.selectedValues()[0] ?? null);
428
429
  this.onChange(nextValue);
429
430
  this.valueChange.emit(nextValue);
430
431
  }
@@ -444,7 +445,9 @@ class PillboxComponent extends PillboxContext {
444
445
  return Object.is(left, right);
445
446
  }
446
447
  focusSearchInput() {
447
- const searchInput = this.variant() === 'combobox' ? this.inlineSearch()?.nativeElement : this.panelSearch()?.nativeElement;
448
+ const searchInput = this.variant() === 'combobox'
449
+ ? this.inlineSearch()?.nativeElement
450
+ : this.panelSearch()?.nativeElement;
448
451
  searchInput?.focus();
449
452
  }
450
453
  bindOutsideListener() {
@@ -484,7 +487,8 @@ class PillboxComponent extends PillboxContext {
484
487
  (keydown.enter)="handleTriggerKeydown($any($event))"
485
488
  (keydown.space)="handleTriggerKeydown($any($event))"
486
489
  (keydown.arrowDown)="handleTriggerKeydown($any($event))"
487
- (keydown.escape)="close()">
490
+ (keydown.escape)="close()"
491
+ >
488
492
  <div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5">
489
493
  @if (selectedItems().length > 0) {
490
494
  @for (item of selectedItems(); track item.track) {
@@ -501,7 +505,8 @@ class PillboxComponent extends PillboxContext {
501
505
  class="-mr-1 inline-flex size-4 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
502
506
  [attr.aria-label]="'Remove ' + item.label"
503
507
  [disabled]="disabledState() || null"
504
- (click)="removeSelected(item.value, $event)">
508
+ (click)="removeSelected(item.value, $event)"
509
+ >
505
510
  <svg
506
511
  aria-hidden="true"
507
512
  class="size-3"
@@ -510,7 +515,8 @@ class PillboxComponent extends PillboxContext {
510
515
  stroke="currentColor"
511
516
  stroke-width="2"
512
517
  stroke-linecap="round"
513
- stroke-linejoin="round">
518
+ stroke-linejoin="round"
519
+ >
514
520
  <path d="M18 6 6 18" />
515
521
  <path d="m6 6 12 12" />
516
522
  </svg>
@@ -523,6 +529,8 @@ class PillboxComponent extends PillboxContext {
523
529
  <input
524
530
  #inlineSearch
525
531
  class="min-w-28 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed"
532
+ [attr.aria-label]="ariaLabel() ?? placeholder()"
533
+ [attr.aria-labelledby]="ariaLabelledby()"
526
534
  [placeholder]="selectedItems().length === 0 ? placeholder() : ''"
527
535
  [value]="query()"
528
536
  [disabled]="disabledState() || null"
@@ -530,7 +538,8 @@ class PillboxComponent extends PillboxContext {
530
538
  (focus)="open()"
531
539
  (input)="handleSearchInput($event)"
532
540
  (keydown.backspace)="handleInlineBackspace($any($event))"
533
- (keydown.escape)="close()" />
541
+ (keydown.escape)="close()"
542
+ />
534
543
  } @else if (selectedItems().length === 0) {
535
544
  <span class="truncate text-muted-foreground">{{ placeholder() }}</span>
536
545
  }
@@ -541,7 +550,8 @@ class PillboxComponent extends PillboxContext {
541
550
  type="button"
542
551
  class="inline-flex size-5 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
543
552
  aria-label="Clear selected options"
544
- (click)="clear($event)">
553
+ (click)="clear($event)"
554
+ >
545
555
  <svg
546
556
  aria-hidden="true"
547
557
  class="size-3.5"
@@ -550,7 +560,8 @@ class PillboxComponent extends PillboxContext {
550
560
  stroke="currentColor"
551
561
  stroke-width="2"
552
562
  stroke-linecap="round"
553
- stroke-linejoin="round">
563
+ stroke-linejoin="round"
564
+ >
554
565
  <path d="M18 6 6 18" />
555
566
  <path d="m6 6 12 12" />
556
567
  </svg>
@@ -566,7 +577,8 @@ class PillboxComponent extends PillboxContext {
566
577
  stroke="currentColor"
567
578
  stroke-width="1.75"
568
579
  stroke-linecap="round"
569
- stroke-linejoin="round">
580
+ stroke-linejoin="round"
581
+ >
570
582
  <path d="m6 9 6 6 6-6" />
571
583
  </svg>
572
584
  </div>
@@ -583,23 +595,27 @@ class PillboxComponent extends PillboxContext {
583
595
  stroke="currentColor"
584
596
  stroke-width="1.75"
585
597
  stroke-linecap="round"
586
- stroke-linejoin="round">
598
+ stroke-linejoin="round"
599
+ >
587
600
  <circle cx="11" cy="11" r="8" />
588
601
  <path d="m21 21-4.35-4.35" />
589
602
  </svg>
590
603
  <input
591
604
  #panelSearch
592
605
  class="h-9 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"
606
+ [attr.aria-label]="searchPlaceholder()"
593
607
  [placeholder]="searchPlaceholder()"
594
608
  [value]="query()"
595
609
  (input)="handleSearchInput($event)"
596
- (keydown.escape)="close()" />
610
+ (keydown.escape)="close()"
611
+ />
597
612
  @if (query().length > 0) {
598
613
  <button
599
614
  type="button"
600
615
  class="inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground"
601
616
  aria-label="Clear search"
602
- (click)="clearSearch($event)">
617
+ (click)="clearSearch($event)"
618
+ >
603
619
  <svg
604
620
  aria-hidden="true"
605
621
  class="size-3.5"
@@ -608,7 +624,8 @@ class PillboxComponent extends PillboxContext {
608
624
  stroke="currentColor"
609
625
  stroke-width="2"
610
626
  stroke-linecap="round"
611
- stroke-linejoin="round">
627
+ stroke-linejoin="round"
628
+ >
612
629
  <path d="M18 6 6 18" />
613
630
  <path d="m6 6 12 12" />
614
631
  </svg>
@@ -622,13 +639,12 @@ class PillboxComponent extends PillboxContext {
622
639
  <ng-content />
623
640
  </div>
624
641
  </div>
625
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
642
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
626
643
  }
627
644
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: PillboxComponent, decorators: [{
628
645
  type: Component,
629
646
  args: [{
630
647
  selector: 'Pillbox',
631
- changeDetection: ChangeDetectionStrategy.OnPush,
632
648
  imports: [NgTemplateOutlet],
633
649
  providers: [
634
650
  { provide: PillboxContext, useExisting: forwardRef(() => PillboxComponent) },
@@ -660,7 +676,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
660
676
  (keydown.enter)="handleTriggerKeydown($any($event))"
661
677
  (keydown.space)="handleTriggerKeydown($any($event))"
662
678
  (keydown.arrowDown)="handleTriggerKeydown($any($event))"
663
- (keydown.escape)="close()">
679
+ (keydown.escape)="close()"
680
+ >
664
681
  <div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5">
665
682
  @if (selectedItems().length > 0) {
666
683
  @for (item of selectedItems(); track item.track) {
@@ -677,7 +694,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
677
694
  class="-mr-1 inline-flex size-4 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
678
695
  [attr.aria-label]="'Remove ' + item.label"
679
696
  [disabled]="disabledState() || null"
680
- (click)="removeSelected(item.value, $event)">
697
+ (click)="removeSelected(item.value, $event)"
698
+ >
681
699
  <svg
682
700
  aria-hidden="true"
683
701
  class="size-3"
@@ -686,7 +704,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
686
704
  stroke="currentColor"
687
705
  stroke-width="2"
688
706
  stroke-linecap="round"
689
- stroke-linejoin="round">
707
+ stroke-linejoin="round"
708
+ >
690
709
  <path d="M18 6 6 18" />
691
710
  <path d="m6 6 12 12" />
692
711
  </svg>
@@ -699,6 +718,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
699
718
  <input
700
719
  #inlineSearch
701
720
  class="min-w-28 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed"
721
+ [attr.aria-label]="ariaLabel() ?? placeholder()"
722
+ [attr.aria-labelledby]="ariaLabelledby()"
702
723
  [placeholder]="selectedItems().length === 0 ? placeholder() : ''"
703
724
  [value]="query()"
704
725
  [disabled]="disabledState() || null"
@@ -706,7 +727,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
706
727
  (focus)="open()"
707
728
  (input)="handleSearchInput($event)"
708
729
  (keydown.backspace)="handleInlineBackspace($any($event))"
709
- (keydown.escape)="close()" />
730
+ (keydown.escape)="close()"
731
+ />
710
732
  } @else if (selectedItems().length === 0) {
711
733
  <span class="truncate text-muted-foreground">{{ placeholder() }}</span>
712
734
  }
@@ -717,7 +739,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
717
739
  type="button"
718
740
  class="inline-flex size-5 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
719
741
  aria-label="Clear selected options"
720
- (click)="clear($event)">
742
+ (click)="clear($event)"
743
+ >
721
744
  <svg
722
745
  aria-hidden="true"
723
746
  class="size-3.5"
@@ -726,7 +749,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
726
749
  stroke="currentColor"
727
750
  stroke-width="2"
728
751
  stroke-linecap="round"
729
- stroke-linejoin="round">
752
+ stroke-linejoin="round"
753
+ >
730
754
  <path d="M18 6 6 18" />
731
755
  <path d="m6 6 12 12" />
732
756
  </svg>
@@ -742,7 +766,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
742
766
  stroke="currentColor"
743
767
  stroke-width="1.75"
744
768
  stroke-linecap="round"
745
- stroke-linejoin="round">
769
+ stroke-linejoin="round"
770
+ >
746
771
  <path d="m6 9 6 6 6-6" />
747
772
  </svg>
748
773
  </div>
@@ -759,23 +784,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
759
784
  stroke="currentColor"
760
785
  stroke-width="1.75"
761
786
  stroke-linecap="round"
762
- stroke-linejoin="round">
787
+ stroke-linejoin="round"
788
+ >
763
789
  <circle cx="11" cy="11" r="8" />
764
790
  <path d="m21 21-4.35-4.35" />
765
791
  </svg>
766
792
  <input
767
793
  #panelSearch
768
794
  class="h-9 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"
795
+ [attr.aria-label]="searchPlaceholder()"
769
796
  [placeholder]="searchPlaceholder()"
770
797
  [value]="query()"
771
798
  (input)="handleSearchInput($event)"
772
- (keydown.escape)="close()" />
799
+ (keydown.escape)="close()"
800
+ />
773
801
  @if (query().length > 0) {
774
802
  <button
775
803
  type="button"
776
804
  class="inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground"
777
805
  aria-label="Clear search"
778
- (click)="clearSearch($event)">
806
+ (click)="clearSearch($event)"
807
+ >
779
808
  <svg
780
809
  aria-hidden="true"
781
810
  class="size-3.5"
@@ -784,7 +813,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
784
813
  stroke="currentColor"
785
814
  stroke-width="2"
786
815
  stroke-linecap="round"
787
- stroke-linejoin="round">
816
+ stroke-linejoin="round"
817
+ >
788
818
  <path d="M18 6 6 18" />
789
819
  <path d="m6 6 12 12" />
790
820
  </svg>
@@ -800,7 +830,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
800
830
  </div>
801
831
  `,
802
832
  }]
803
- }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], loadingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingText", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], searchChange: [{ type: i0.Output, args: ["searchChange"] }], create: [{ type: i0.Output, args: ["create"] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], trigger: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], inlineSearch: [{ type: i0.ViewChild, args: ['inlineSearch', { isSignal: true }] }], panelSearch: [{ type: i0.ViewChild, args: ['panelSearch', { isSignal: true }] }], options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionComponent), { ...{ descendants: true }, isSignal: true }] }], createOptions: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionCreateComponent), { ...{ descendants: true }, isSignal: true }] }], emptyOptions: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionEmptyComponent), { ...{ descendants: true }, isSignal: true }] }] } });
833
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], loadingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingText", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], searchChange: [{ type: i0.Output, args: ["searchChange"] }], create: [{ type: i0.Output, args: ["create"] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], trigger: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], inlineSearch: [{ type: i0.ViewChild, args: ['inlineSearch', { isSignal: true }] }], panelSearch: [{ type: i0.ViewChild, args: ['panelSearch', { isSignal: true }] }], options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionComponent), { ...{ descendants: true }, isSignal: true }] }], createOptions: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionCreateComponent), { ...{
834
+ descendants: true,
835
+ }, isSignal: true }] }], emptyOptions: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionEmptyComponent), { ...{
836
+ descendants: true,
837
+ }, isSignal: true }] }] } });
804
838
 
805
839
  /**
806
840
  * Generated bundle index. Do not edit.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { input, computed, Component } from '@angular/core';
3
3
  import { cn } from '@ojiepermana/angular-component/utils';
4
4
 
5
5
  class ProgressComponent {
@@ -31,12 +31,13 @@ class ProgressComponent {
31
31
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ProgressComponent, isStandalone: true, selector: "ProgressBar", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.role": "\"progressbar\"", "attr.aria-valuemin": "0", "attr.aria-valuemax": "max()", "attr.aria-valuenow": "indeterminate() ? null : clamped()", "attr.aria-label": "ariaLabel()", "attr.aria-labelledby": "ariaLabelledby()", "attr.data-state": "indeterminate() ? \"indeterminate\" : \"determinate\"" } }, ngImport: i0, template: `
32
32
  <div
33
33
  class="progress-indicator h-full w-full flex-1 bg-primary transition-transform"
34
- [style.transform]="indicatorTransform()"></div>
35
- `, isInline: true, styles: [":host{display:block}:host[data-state=indeterminate] .progress-indicator{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){:host[data-state=indeterminate] .progress-indicator{animation:none}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
34
+ [style.transform]="indicatorTransform()"
35
+ ></div>
36
+ `, isInline: true, styles: [":host{display:block}:host[data-state=indeterminate] .progress-indicator{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){:host[data-state=indeterminate] .progress-indicator{animation:none}}\n"] });
36
37
  }
37
38
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ProgressComponent, decorators: [{
38
39
  type: Component,
39
- args: [{ selector: 'ProgressBar', changeDetection: ChangeDetectionStrategy.OnPush, host: {
40
+ args: [{ selector: 'ProgressBar', host: {
40
41
  '[class]': 'classes()',
41
42
  '[attr.role]': '"progressbar"',
42
43
  '[attr.aria-valuemin]': '0',
@@ -48,7 +49,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
48
49
  }, template: `
49
50
  <div
50
51
  class="progress-indicator h-full w-full flex-1 bg-primary transition-transform"
51
- [style.transform]="indicatorTransform()"></div>
52
+ [style.transform]="indicatorTransform()"
53
+ ></div>
52
54
  `, styles: [":host{display:block}:host[data-state=indeterminate] .progress-indicator{animation:progress-indeterminate 1.5s cubic-bezier(.65,.815,.735,.395) infinite}@keyframes progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){:host[data-state=indeterminate] .progress-indicator{animation:none}}\n"] }]
53
55
  }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
54
56
 
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, output, contentChildren, forwardRef, signal, computed, ChangeDetectionStrategy, Component, inject, viewChild } from '@angular/core';
2
+ import { input, output, contentChildren, forwardRef, signal, computed, Component, inject, viewChild } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { uniqueId, cn } from '@ojiepermana/angular-component/utils';
5
5
 
@@ -67,14 +67,17 @@ class RadioGroupComponent {
67
67
  this.disabled.set(d);
68
68
  }
69
69
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: RadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
70
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: RadioGroupComponent, isStandalone: true, selector: "RadioGroup", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, ariaInvalid: { classPropertyName: "ariaInvalid", publicName: "aria-invalid", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "role": "radiogroup" }, properties: { "class": "classes()", "attr.aria-label": "ariaLabel()", "attr.aria-labelledby": "ariaLabelledby()", "attr.aria-describedby": "ariaDescribedby()", "attr.aria-invalid": "ariaInvalidAttr()" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true }], queries: [{ propertyName: "radios", predicate: i0.forwardRef(() => RadioComponent), descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
70
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: RadioGroupComponent, isStandalone: true, selector: "RadioGroup", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, ariaInvalid: { classPropertyName: "ariaInvalid", publicName: "aria-invalid", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, host: { attributes: { "role": "radiogroup" }, properties: { "class": "classes()", "attr.aria-label": "ariaLabel()", "attr.aria-labelledby": "ariaLabelledby()", "attr.aria-describedby": "ariaDescribedby()", "attr.aria-invalid": "ariaInvalidAttr()" } }, providers: [
71
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true },
72
+ ], queries: [{ propertyName: "radios", predicate: i0.forwardRef(() => RadioComponent), descendants: true, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true });
71
73
  }
72
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: RadioGroupComponent, decorators: [{
73
75
  type: Component,
74
76
  args: [{
75
77
  selector: 'RadioGroup',
76
- changeDetection: ChangeDetectionStrategy.OnPush,
77
- providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true }],
78
+ providers: [
79
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroupComponent), multi: true },
80
+ ],
78
81
  host: {
79
82
  role: 'radiogroup',
80
83
  '[class]': 'classes()',
@@ -94,6 +97,9 @@ class RadioComponent {
94
97
  ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
95
98
  class = input('', /* @ts-ignore */
96
99
  ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
100
+ /** Accessible name for the radio input when no text is projected into `<Radio>`. */
101
+ ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
102
+ ariaLabelledby = input(null, { ...(ngDevMode ? { debugName: "ariaLabelledby" } : /* istanbul ignore next */ {}), alias: 'aria-labelledby' });
97
103
  selected = computed(() => this.group.value() === this.value(), /* @ts-ignore */
98
104
  ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
99
105
  isDisabled = computed(() => this.disabled() || this.group.disabled(), /* @ts-ignore */
@@ -115,18 +121,21 @@ class RadioComponent {
115
121
  this.ref().nativeElement.focus();
116
122
  }
117
123
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
118
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: RadioComponent, isStandalone: true, selector: "Radio", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true, isSignal: true }], ngImport: i0, template: `
124
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: RadioComponent, isStandalone: true, selector: "Radio", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()" } }, viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true, isSignal: true }], ngImport: i0, template: `
119
125
  <label [class]="labelClasses()">
120
126
  <input
121
127
  #ref
122
128
  type="radio"
123
129
  class="peer sr-only"
124
130
  [attr.name]="group.resolvedName()"
131
+ [attr.aria-label]="ariaLabel()"
132
+ [attr.aria-labelledby]="ariaLabelledby()"
125
133
  [value]="value()"
126
134
  [checked]="selected()"
127
135
  [disabled]="isDisabled()"
128
136
  (change)="handleChange()"
129
- (blur)="handleBlur()" />
137
+ (blur)="handleBlur()"
138
+ />
130
139
  <span aria-hidden="true" [class]="circleClasses()">
131
140
  @if (selected()) {
132
141
  <span class="size-2 rounded-full bg-primary"></span>
@@ -134,13 +143,12 @@ class RadioComponent {
134
143
  </span>
135
144
  <ng-content />
136
145
  </label>
137
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
146
+ `, isInline: true });
138
147
  }
139
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: RadioComponent, decorators: [{
140
149
  type: Component,
141
150
  args: [{
142
151
  selector: 'Radio',
143
- changeDetection: ChangeDetectionStrategy.OnPush,
144
152
  host: { '[class]': 'hostClasses()' },
145
153
  template: `
146
154
  <label [class]="labelClasses()">
@@ -149,11 +157,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
149
157
  type="radio"
150
158
  class="peer sr-only"
151
159
  [attr.name]="group.resolvedName()"
160
+ [attr.aria-label]="ariaLabel()"
161
+ [attr.aria-labelledby]="ariaLabelledby()"
152
162
  [value]="value()"
153
163
  [checked]="selected()"
154
164
  [disabled]="isDisabled()"
155
165
  (change)="handleChange()"
156
- (blur)="handleBlur()" />
166
+ (blur)="handleBlur()"
167
+ />
157
168
  <span aria-hidden="true" [class]="circleClasses()">
158
169
  @if (selected()) {
159
170
  <span class="size-2 rounded-full bg-primary"></span>
@@ -163,7 +174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
163
174
  </label>
164
175
  `,
165
176
  }]
166
- }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], ref: [{ type: i0.ViewChild, args: ['ref', { isSignal: true }] }] } });
177
+ }], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], ref: [{ type: i0.ViewChild, args: ['ref', { isSignal: true }] }] } });
167
178
 
168
179
  /**
169
180
  * Generated bundle index. Do not edit.
@@ -1,6 +1,6 @@
1
1
  import { DOCUMENT } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Directive, inject, ElementRef, input, signal, computed, ChangeDetectionStrategy, Component, booleanAttribute, contentChildren, effect, untracked, forwardRef } from '@angular/core';
3
+ import { Directive, inject, ElementRef, input, signal, computed, Component, booleanAttribute, contentChildren, effect, untracked, forwardRef } from '@angular/core';
4
4
  import { uniqueId, cn } from '@ojiepermana/angular-component/utils';
5
5
 
6
6
  class ResizableGroupContextBase {
@@ -57,13 +57,12 @@ class ResizablePanelComponent {
57
57
  return this.host.nativeElement;
58
58
  }
59
59
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ResizablePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
60
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ResizablePanelComponent, isStandalone: true, selector: "ResizablePanel", inputs: { defaultSize: { classPropertyName: "defaultSize", publicName: "defaultSize", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.id": "resolvedId()", "style.flex": "flexStyle()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
60
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: ResizablePanelComponent, isStandalone: true, selector: "ResizablePanel", inputs: { defaultSize: { classPropertyName: "defaultSize", publicName: "defaultSize", isSignal: true, isRequired: false, transformFunction: null }, minSize: { classPropertyName: "minSize", publicName: "minSize", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.id": "resolvedId()", "style.flex": "flexStyle()" } }, ngImport: i0, template: `<ng-content />`, isInline: true });
61
61
  }
62
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ResizablePanelComponent, decorators: [{
63
63
  type: Component,
64
64
  args: [{
65
65
  selector: 'ResizablePanel',
66
- changeDetection: ChangeDetectionStrategy.OnPush,
67
66
  host: {
68
67
  '[class]': 'classes()',
69
68
  '[attr.id]': 'resolvedId()',
@@ -134,7 +133,8 @@ class ResizableHandleComponent {
134
133
  @if (withHandle()) {
135
134
  <span
136
135
  aria-hidden="true"
137
- class="pointer-events-none inline-flex items-center justify-center rounded-sm border border-border bg-background px-1 py-0.5 shadow-sm">
136
+ class="pointer-events-none inline-flex items-center justify-center rounded-sm border border-border bg-background px-1 py-0.5 shadow-sm"
137
+ >
138
138
  <svg class="h-3 w-3 text-muted-foreground" viewBox="0 0 24 24" fill="currentColor">
139
139
  <circle cx="9" cy="8" r="1.25" />
140
140
  <circle cx="15" cy="8" r="1.25" />
@@ -145,13 +145,12 @@ class ResizableHandleComponent {
145
145
  </svg>
146
146
  </span>
147
147
  }
148
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
148
+ `, isInline: true });
149
149
  }
150
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ResizableHandleComponent, decorators: [{
151
151
  type: Component,
152
152
  args: [{
153
153
  selector: 'ResizableHandle',
154
- changeDetection: ChangeDetectionStrategy.OnPush,
155
154
  host: {
156
155
  '[class]': 'classes()',
157
156
  role: 'separator',
@@ -171,7 +170,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImpor
171
170
  @if (withHandle()) {
172
171
  <span
173
172
  aria-hidden="true"
174
- class="pointer-events-none inline-flex items-center justify-center rounded-sm border border-border bg-background px-1 py-0.5 shadow-sm">
173
+ class="pointer-events-none inline-flex items-center justify-center rounded-sm border border-border bg-background px-1 py-0.5 shadow-sm"
174
+ >
175
175
  <svg class="h-3 w-3 text-muted-foreground" viewBox="0 0 24 24" fill="currentColor">
176
176
  <circle cx="9" cy="8" r="1.25" />
177
177
  <circle cx="15" cy="8" r="1.25" />
@@ -394,14 +394,23 @@ class ResizablePanelGroupComponent extends ResizableGroupContextBase {
394
394
  return this.orientation() === 'horizontal' ? event.clientX : event.clientY;
395
395
  }
396
396
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ResizablePanelGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
397
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: ResizablePanelGroupComponent, isStandalone: true, selector: "ResizablePanelGroup", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-orientation": "orientation()" } }, providers: [{ provide: ResizableGroupContextBase, useExisting: forwardRef(() => ResizablePanelGroupComponent) }], queries: [{ propertyName: "panels", predicate: ResizablePanelComponent, isSignal: true }, { propertyName: "handles", predicate: ResizableHandleComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
397
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: ResizablePanelGroupComponent, isStandalone: true, selector: "ResizablePanelGroup", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.data-orientation": "orientation()" } }, providers: [
398
+ {
399
+ provide: ResizableGroupContextBase,
400
+ useExisting: forwardRef(() => ResizablePanelGroupComponent),
401
+ },
402
+ ], queries: [{ propertyName: "panels", predicate: ResizablePanelComponent, isSignal: true }, { propertyName: "handles", predicate: ResizableHandleComponent, isSignal: true }], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true });
398
403
  }
399
404
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: ResizablePanelGroupComponent, decorators: [{
400
405
  type: Component,
401
406
  args: [{
402
407
  selector: 'ResizablePanelGroup',
403
- changeDetection: ChangeDetectionStrategy.OnPush,
404
- providers: [{ provide: ResizableGroupContextBase, useExisting: forwardRef(() => ResizablePanelGroupComponent) }],
408
+ providers: [
409
+ {
410
+ provide: ResizableGroupContextBase,
411
+ useExisting: forwardRef(() => ResizablePanelGroupComponent),
412
+ },
413
+ ],
405
414
  host: {
406
415
  '[class]': 'classes()',
407
416
  '[attr.data-orientation]': 'orientation()',
@@ -438,7 +447,9 @@ function resolveInitialSizes(preferred, minimums, maximums) {
438
447
  sizes = preferred.map(() => equalSize);
439
448
  }
440
449
  else {
441
- const share = unresolvedIndexes.length ? Math.max(100 - specifiedTotal, 0) / unresolvedIndexes.length : 0;
450
+ const share = unresolvedIndexes.length
451
+ ? Math.max(100 - specifiedTotal, 0) / unresolvedIndexes.length
452
+ : 0;
442
453
  sizes = preferred.map((value) => value ?? share);
443
454
  }
444
455
  sizes = sizes.map((size, index) => clamp(size, minimums[index], maximums[index]));