@frame-ui-ng/components 0.2.0-beta.0 → 0.3.0-beta.0

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 (36) hide show
  1. package/button/src/styles/button.css +15 -3
  2. package/dropdown-menu/src/styles/_vars.css +1 -1
  3. package/dropdown-menu/src/styles/dropdown-menu-item.css +87 -87
  4. package/fesm2022/frame-ui-ng-components-calendar.mjs +369 -263
  5. package/fesm2022/frame-ui-ng-components-calendar.mjs.map +1 -1
  6. package/fesm2022/frame-ui-ng-components-command.mjs +1 -1
  7. package/fesm2022/frame-ui-ng-components-command.mjs.map +1 -1
  8. package/fesm2022/frame-ui-ng-components-date-picker.mjs +232 -226
  9. package/fesm2022/frame-ui-ng-components-date-picker.mjs.map +1 -1
  10. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs +45 -22
  11. package/fesm2022/frame-ui-ng-components-dropdown-menu.mjs.map +1 -1
  12. package/fesm2022/frame-ui-ng-components-input.mjs +6 -3
  13. package/fesm2022/frame-ui-ng-components-input.mjs.map +1 -1
  14. package/fesm2022/frame-ui-ng-components-select.mjs +6 -3
  15. package/fesm2022/frame-ui-ng-components-select.mjs.map +1 -1
  16. package/fesm2022/frame-ui-ng-components-sidebar.mjs +47 -4
  17. package/fesm2022/frame-ui-ng-components-sidebar.mjs.map +1 -1
  18. package/fesm2022/frame-ui-ng-components-tooltip.mjs +263 -254
  19. package/fesm2022/frame-ui-ng-components-tooltip.mjs.map +1 -1
  20. package/fesm2022/frame-ui-ng-components.mjs +703 -519
  21. package/fesm2022/frame-ui-ng-components.mjs.map +1 -1
  22. package/input/src/styles/input-group.css +50 -0
  23. package/package.json +2 -2
  24. package/select/src/styles/select-trigger.css +7 -36
  25. package/src/styles/blueprint.css +4 -11
  26. package/styles/blueprint.css +4 -11
  27. package/tooltip/src/styles/tooltip.css +3 -9
  28. package/types/frame-ui-ng-components-calendar.d.ts +14 -0
  29. package/types/frame-ui-ng-components-context-menu.d.ts +2 -2
  30. package/types/frame-ui-ng-components-date-picker.d.ts +3 -1
  31. package/types/frame-ui-ng-components-dropdown-menu.d.ts +3 -3
  32. package/types/frame-ui-ng-components-input.d.ts +6 -3
  33. package/types/frame-ui-ng-components-select.d.ts +6 -3
  34. package/types/frame-ui-ng-components-sidebar.d.ts +8 -1
  35. package/types/frame-ui-ng-components-tooltip.d.ts +43 -73
  36. package/types/frame-ui-ng-components.d.ts +84 -55
@@ -83,6 +83,36 @@ frame-input-group-addon {
83
83
  white-space: nowrap;
84
84
  }
85
85
 
86
+ .frame-input-group__addon:has(> .frame-button),
87
+ [frInputGroupAddon]:has(> .frame-button),
88
+ frame-input-group-addon:has(> .frame-button) {
89
+ align-items: stretch;
90
+ padding-inline: 0;
91
+ }
92
+
93
+ .frame-input-group__addon > .frame-button,
94
+ [frInputGroupAddon] > .frame-button,
95
+ frame-input-group-addon > .frame-button {
96
+ --frame-button-root-corner-size: 0;
97
+ block-size: 100%;
98
+ min-block-size: 100%;
99
+ border: 0;
100
+ border-radius: 0;
101
+ box-shadow: none;
102
+ }
103
+
104
+ .frame-input-group__addon > .frame-button::before,
105
+ [frInputGroupAddon] > .frame-button::before,
106
+ frame-input-group-addon > .frame-button::before {
107
+ display: none;
108
+ }
109
+
110
+ .frame-input-group__addon > .frame-button:focus-visible,
111
+ [frInputGroupAddon] > .frame-button:focus-visible,
112
+ frame-input-group-addon > .frame-button:focus-visible {
113
+ outline-offset: -2px;
114
+ }
115
+
86
116
  .frame-input-group:has([frInputGroupInput]:disabled) .frame-input-group__addon,
87
117
  .frame-input-group:has([frInputGroupInput]:disabled) [frInputGroupAddon],
88
118
  [frInputGroup]:has([frInputGroupInput]:disabled) .frame-input-group__addon,
@@ -104,6 +134,26 @@ frame-input-group-addon[data-align='inline-end'] {
104
134
  border-inline-start: 1px solid var(--frame-input-group-addon-border);
105
135
  }
106
136
 
137
+ .frame-input-group__addon[data-variant='ghost'],
138
+ [frInputGroupAddon][data-variant='ghost'],
139
+ frame-input-group-addon[data-variant='ghost'] {
140
+ min-inline-size: auto;
141
+ border-inline: 0;
142
+ background: transparent;
143
+ }
144
+
145
+ .frame-input-group__addon[data-align='inline-start'][data-variant='ghost'],
146
+ [frInputGroupAddon][data-align='inline-start'][data-variant='ghost'],
147
+ frame-input-group-addon[data-align='inline-start'][data-variant='ghost'] {
148
+ padding-inline-end: 0;
149
+ }
150
+
151
+ .frame-input-group__addon[data-align='inline-end'][data-variant='ghost'],
152
+ [frInputGroupAddon][data-align='inline-end'][data-variant='ghost'],
153
+ frame-input-group-addon[data-align='inline-end'][data-variant='ghost'] {
154
+ padding-inline-start: 0.25rem;
155
+ }
156
+
107
157
  .frame-input-group__text,
108
158
  [frInputGroupText],
109
159
  frame-input-group-text {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frame-ui-ng/components",
3
- "version": "0.2.0-beta.0",
3
+ "version": "0.3.0-beta.0",
4
4
  "description": "Angular components for FrameUI.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "@angular/common": ">=21.0.0 <22.0.0",
27
27
  "@angular/core": ">=21.0.0 <22.0.0",
28
28
  "@angular/forms": ">=21.0.0 <22.0.0",
29
- "@frame-ui-ng/foundation": "0.2.0-beta.0",
29
+ "@frame-ui-ng/foundation": "0.3.0-beta.0",
30
30
  "rxjs": "^7.8.0"
31
31
  },
32
32
  "dependencies": {
@@ -8,13 +8,6 @@
8
8
  --frame-select-trigger-active-bg: color-mix(in srgb, var(--frame-surface) 65%, var(--frame-muted));
9
9
  --frame-select-trigger-active-border: var(--frame-select-trigger-hover-border);
10
10
  --frame-select-trigger-active-color: var(--frame-select-trigger-hover-color);
11
- --frame-select-trigger-corner-color: var(--frame-frame-line-muted);
12
- --frame-select-trigger-corner-inset: var(--frame-frame-tick-inset, 0px);
13
- --frame-select-trigger-corner-size: clamp(
14
- 0px,
15
- calc((1px - var(--frame-select-trigger-radius, 0px)) * 9999),
16
- var(--frame-frame-tick-size, 0.5rem)
17
- );
18
11
  appearance: none;
19
12
  -webkit-appearance: none;
20
13
  display: inline-flex;
@@ -25,7 +18,7 @@
25
18
  min-height: var(--frame-select-trigger-height);
26
19
  min-width: var(--frame-select-trigger-min-width);
27
20
  align-items: center;
28
- justify-content: space-between;
21
+ justify-content: flex-start;
29
22
  gap: var(--frame-select-trigger-gap);
30
23
  border: 1px solid var(--frame-select-trigger-border);
31
24
  border-radius: var(--frame-select-trigger-radius);
@@ -42,7 +35,6 @@
42
35
  text-align: left;
43
36
  text-decoration: none;
44
37
  box-shadow: none;
45
- position: relative;
46
38
  transition:
47
39
  border-color var(--frame-select-trigger-transition-duration) ease,
48
40
  box-shadow var(--frame-select-trigger-transition-duration) ease,
@@ -52,27 +44,6 @@
52
44
  transform var(--frame-select-trigger-transition-duration) ease;
53
45
  }
54
46
 
55
- .frame-select__trigger::before {
56
- position: absolute;
57
- inset: 0;
58
- border-radius: inherit;
59
- background:
60
- linear-gradient(var(--frame-select-trigger-corner-color), var(--frame-select-trigger-corner-color))
61
- left var(--frame-select-trigger-corner-inset) top var(--frame-select-trigger-corner-inset) /
62
- var(--frame-select-trigger-corner-size) 1px no-repeat,
63
- linear-gradient(var(--frame-select-trigger-corner-color), var(--frame-select-trigger-corner-color))
64
- left var(--frame-select-trigger-corner-inset) top var(--frame-select-trigger-corner-inset) / 1px
65
- var(--frame-select-trigger-corner-size) no-repeat,
66
- linear-gradient(var(--frame-select-trigger-corner-color), var(--frame-select-trigger-corner-color))
67
- right var(--frame-select-trigger-corner-inset) bottom var(--frame-select-trigger-corner-inset) /
68
- var(--frame-select-trigger-corner-size) 1px no-repeat,
69
- linear-gradient(var(--frame-select-trigger-corner-color), var(--frame-select-trigger-corner-color))
70
- right var(--frame-select-trigger-corner-inset) bottom var(--frame-select-trigger-corner-inset) / 1px
71
- var(--frame-select-trigger-corner-size) no-repeat;
72
- pointer-events: none;
73
- content: '';
74
- }
75
-
76
47
  .frame-select__trigger:where(:not([data-disabled])):hover {
77
48
  background: var(--frame-select-trigger-hover-bg);
78
49
  border-color: var(--frame-select-trigger-hover-border);
@@ -93,11 +64,6 @@
93
64
  box-shadow: none;
94
65
  }
95
66
 
96
- .frame-select__trigger:focus-visible,
97
- .frame-select__trigger[data-state='open'] {
98
- --frame-select-trigger-corner-color: var(--frame-frame-accent);
99
- }
100
-
101
67
  .frame-select__trigger[data-state='open'] {
102
68
  background: var(--frame-select-trigger-active-bg);
103
69
  border-color: var(--frame-select-trigger-active-border);
@@ -117,6 +83,7 @@
117
83
  }
118
84
 
119
85
  .frame-select__value {
86
+ flex: 1 1 auto;
120
87
  min-width: 0;
121
88
  overflow: hidden;
122
89
  text-overflow: ellipsis;
@@ -133,6 +100,10 @@
133
100
  color: var(--frame-muted-foreground);
134
101
  }
135
102
 
136
- .frame-select__trigger[data-state='open'] .frame-select__icon {
103
+ .frame-select__icon[data-position='trailing'] {
104
+ margin-inline-start: auto;
105
+ }
106
+
107
+ .frame-select__trigger[data-state='open'] .frame-select__icon[data-position='trailing'] {
137
108
  transform: rotate(180deg);
138
109
  }
@@ -108,7 +108,6 @@
108
108
  .frame-modal__panel,
109
109
  .frame-navigation-menu__viewport,
110
110
  .frame-popover__content,
111
- .frame-select__content,
112
111
  .frame-sheet__panel,
113
112
  .frame-toast,
114
113
  .frame-tooltip__content,
@@ -348,14 +347,9 @@
348
347
  .frame-modal__panel,
349
348
  .frame-navigation-menu__viewport,
350
349
  .frame-popover__content,
351
- .frame-select__content,
352
350
  .frame-sheet__panel,
353
351
  .frame-toast,
354
- .frame-tooltip__content,
355
- [frSidebar],
356
- frame-sidebar,
357
- [frSidebarInset],
358
- frame-sidebar-inset
352
+ .frame-tooltip__content
359
353
  )::before {
360
354
  --frame-blueprint-corner-offset: var(--frame-blueprint-corner-inset, 0px);
361
355
  --frame-blueprint-corner-size: clamp(
@@ -390,6 +384,7 @@
390
384
  [frVirtualList],
391
385
  frame-virtual-list,
392
386
  .frame-combobox__panel,
387
+ .frame-dropdown-menu__content,
393
388
  .frame-navigation-menu__viewport,
394
389
  .frame-select__content
395
390
  )::before {
@@ -410,8 +405,7 @@
410
405
  [frVirtualList],
411
406
  frame-virtual-list,
412
407
  .frame-combobox__panel,
413
- .frame-navigation-menu__viewport,
414
- .frame-select__content
408
+ .frame-navigation-menu__viewport
415
409
  ) {
416
410
  background-image:
417
411
  linear-gradient(var(--frame-blueprint-corner-color, var(--frame-frame-accent)), var(--frame-blueprint-corner-color, var(--frame-frame-accent))),
@@ -446,7 +440,6 @@
446
440
  .frame-modal__panel,
447
441
  .frame-navigation-menu__viewport,
448
442
  .frame-popover__content,
449
- .frame-select__content,
450
443
  .frame-sheet__panel,
451
444
  .frame-toast,
452
445
  .frame-tooltip__content
@@ -652,7 +645,7 @@
652
645
  .frame-menubar__trigger,
653
646
  [frPopoverClose],
654
647
  .frame-select__trigger,
655
- [frTooltipTrigger],
648
+ [frTooltip],
656
649
  [frToggle]
657
650
  ):where([data-state='open'], [aria-expanded='true']) {
658
651
  border-color: var(--frame-frame-accent, var(--frame-primary));
@@ -108,7 +108,6 @@
108
108
  .frame-modal__panel,
109
109
  .frame-navigation-menu__viewport,
110
110
  .frame-popover__content,
111
- .frame-select__content,
112
111
  .frame-sheet__panel,
113
112
  .frame-toast,
114
113
  .frame-tooltip__content,
@@ -348,14 +347,9 @@
348
347
  .frame-modal__panel,
349
348
  .frame-navigation-menu__viewport,
350
349
  .frame-popover__content,
351
- .frame-select__content,
352
350
  .frame-sheet__panel,
353
351
  .frame-toast,
354
- .frame-tooltip__content,
355
- [frSidebar],
356
- frame-sidebar,
357
- [frSidebarInset],
358
- frame-sidebar-inset
352
+ .frame-tooltip__content
359
353
  )::before {
360
354
  --frame-blueprint-corner-offset: var(--frame-blueprint-corner-inset, 0px);
361
355
  --frame-blueprint-corner-size: clamp(
@@ -390,6 +384,7 @@
390
384
  [frVirtualList],
391
385
  frame-virtual-list,
392
386
  .frame-combobox__panel,
387
+ .frame-dropdown-menu__content,
393
388
  .frame-navigation-menu__viewport,
394
389
  .frame-select__content
395
390
  )::before {
@@ -410,8 +405,7 @@
410
405
  [frVirtualList],
411
406
  frame-virtual-list,
412
407
  .frame-combobox__panel,
413
- .frame-navigation-menu__viewport,
414
- .frame-select__content
408
+ .frame-navigation-menu__viewport
415
409
  ) {
416
410
  background-image:
417
411
  linear-gradient(var(--frame-blueprint-corner-color, var(--frame-frame-accent)), var(--frame-blueprint-corner-color, var(--frame-frame-accent))),
@@ -446,7 +440,6 @@
446
440
  .frame-modal__panel,
447
441
  .frame-navigation-menu__viewport,
448
442
  .frame-popover__content,
449
- .frame-select__content,
450
443
  .frame-sheet__panel,
451
444
  .frame-toast,
452
445
  .frame-tooltip__content
@@ -652,7 +645,7 @@
652
645
  .frame-menubar__trigger,
653
646
  [frPopoverClose],
654
647
  .frame-select__trigger,
655
- [frTooltipTrigger],
648
+ [frTooltip],
656
649
  [frToggle]
657
650
  ):where([data-state='open'], [aria-expanded='true']) {
658
651
  border-color: var(--frame-frame-accent, var(--frame-primary));
@@ -1,15 +1,9 @@
1
1
  @import './_vars.css';
2
2
 
3
- frame-tooltip {
4
- display: inline-block;
5
- }
6
-
7
- .frame-tooltip__anchor {
3
+ .frame-tooltip__disabled-trigger {
8
4
  display: inline-flex;
9
- }
10
-
11
- [frTooltipTrigger] {
12
- cursor: default;
5
+ max-width: 100%;
6
+ vertical-align: middle;
13
7
  }
14
8
 
15
9
  .frame-tooltip__content {
@@ -58,9 +58,11 @@ declare class FrCalendar implements ControlValueAccessor {
58
58
  readonly selected: _angular_core.InputSignal<Date | FrCalendarDateRange | null | undefined>;
59
59
  readonly selectedChange: _angular_core.OutputEmitterRef<Date | FrCalendarDateRange | null>;
60
60
  readonly monthChange: _angular_core.OutputEmitterRef<Date>;
61
+ readonly focusedDate: _angular_core.WritableSignal<Date | null>;
61
62
  private readonly navigatedMonth;
62
63
  private readonly internalValue;
63
64
  private readonly cvaDisabled;
65
+ private readonly host;
64
66
  readonly currentMonth: _angular_core.Signal<Date>;
65
67
  readonly isDisabled: _angular_core.Signal<boolean>;
66
68
  readonly value: _angular_core.Signal<Date | FrCalendarDateRange | null>;
@@ -71,6 +73,7 @@ declare class FrCalendar implements ControlValueAccessor {
71
73
  }[]>;
72
74
  readonly yearOptions: _angular_core.Signal<number[]>;
73
75
  readonly months: _angular_core.Signal<CalendarMonth[]>;
76
+ readonly activeDate: _angular_core.Signal<Date>;
74
77
  private onTouched;
75
78
  private onChange;
76
79
  writeValue(value: Date | FrCalendarDateRange | null): void;
@@ -82,9 +85,20 @@ declare class FrCalendar implements ControlValueAccessor {
82
85
  setMonth(value: string): void;
83
86
  setYear(value: string): void;
84
87
  selectDay(day: CalendarDay): void;
88
+ handleDayKeydown(event: KeyboardEvent, day: CalendarDay): void;
89
+ dayTabIndex(day: CalendarDay): number;
90
+ focusActiveDate(): void;
85
91
  monthLabel(date: Date): string;
86
92
  dayLabel(date: Date): string;
87
93
  weekNumber(date: Date): string;
94
+ private navigationOffset;
95
+ private resolveActiveDate;
96
+ private selectedDate;
97
+ private isDateVisible;
98
+ private findDay;
99
+ private isDayDisabled;
100
+ private focusDay;
101
+ private focusDayElement;
88
102
  private updateMonth;
89
103
  private buildMonth;
90
104
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrCalendar, never>;
@@ -11,7 +11,7 @@ declare class FrContextMenuContent implements Partial<FrDropdownMenuContent> {
11
11
  readonly align: i0.InputSignal<"center" | "end" | "start">;
12
12
  readonly alignOffset: i0.InputSignal<number>;
13
13
  readonly debugVisible: i0.InputSignalWithTransform<boolean, unknown>;
14
- readonly side: i0.InputSignal<"bottom" | "left" | "right" | "top">;
14
+ readonly side: i0.InputSignal<"auto" | "bottom" | "left" | "right" | "top">;
15
15
  readonly sideOffset: i0.InputSignal<number>;
16
16
  isDebugVisible(): boolean;
17
17
  getPositions(isSubmenu: boolean): ConnectedPosition[];
@@ -19,7 +19,7 @@ declare class FrContextMenuContent implements Partial<FrDropdownMenuContent> {
19
19
  static ɵdir: i0.ɵɵDirectiveDeclaration<FrContextMenuContent, "ng-template[frContextMenuContent], ng-template[frContextMenuSubContent]", ["frContextMenuContent"], { "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "debugVisible": { "alias": "debugVisible"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
20
  }
21
21
  declare class FrContextMenuPanel {
22
- protected readonly side: i0.InputSignal<"bottom" | "left" | "right" | "top">;
22
+ protected readonly side: i0.InputSignal<"auto" | "bottom" | "left" | "right" | "top">;
23
23
  private readonly tree;
24
24
  private readonly parent;
25
25
  protected handleMouseEnter(): void;
@@ -1,7 +1,7 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TemplateRef } from '@angular/core';
3
3
  import { ConnectedPosition, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
4
- import { FrCalendarDateRange, FrCalendarMode, FrCalendarCaptionLayout, FrCalendarDisabledMatcher, FrCalendarCellContext } from '@frame-ui-ng/components/calendar';
4
+ import { FrCalendarDateRange, FrCalendarMode, FrCalendarCaptionLayout, FrCalendarDisabledMatcher, FrCalendarCellContext, FrCalendar } from '@frame-ui-ng/components/calendar';
5
5
  import { FrControlValueAccessor } from '@frame-ui-ng/components/forms';
6
6
 
7
7
  type FrDatePickerValue = Date | FrCalendarDateRange | null;
@@ -53,6 +53,7 @@ declare class FrDatePicker extends FrControlValueAccessor<FrDatePickerValue> {
53
53
  readonly valueChange: _angular_core.OutputEmitterRef<FrDatePickerValue>;
54
54
  readonly openChange: _angular_core.OutputEmitterRef<boolean>;
55
55
  readonly monthChange: _angular_core.OutputEmitterRef<Date>;
56
+ readonly calendar: _angular_core.Signal<FrCalendar | undefined>;
56
57
  readonly positions: ConnectedPosition[];
57
58
  readonly isOpen: _angular_core.WritableSignal<boolean>;
58
59
  readonly overlaySide: _angular_core.WritableSignal<"bottom" | "top">;
@@ -78,6 +79,7 @@ declare class FrDatePicker extends FrControlValueAccessor<FrDatePickerValue> {
78
79
  commitInput(value: string): void;
79
80
  handleTriggerKeydown(event: KeyboardEvent): void;
80
81
  handlePositionChange(event: ConnectedOverlayPositionChange): void;
82
+ focusCalendar(): void;
81
83
  overlayPanelClasses(): string[];
82
84
  protected setViewValue(value: FrDatePickerValue): void;
83
85
  private commitValue;
@@ -10,7 +10,7 @@ declare class FrDropdownMenuContent {
10
10
  readonly align: i0.InputSignal<"center" | "end" | "start">;
11
11
  readonly alignOffset: i0.InputSignal<number>;
12
12
  readonly debugVisible: i0.InputSignalWithTransform<boolean, unknown>;
13
- readonly side: i0.InputSignal<"bottom" | "left" | "right" | "top">;
13
+ readonly side: i0.InputSignal<"auto" | "bottom" | "left" | "right" | "top">;
14
14
  readonly sideOffset: i0.InputSignal<number>;
15
15
  isDebugVisible(): boolean;
16
16
  getPositions(isSubmenu: boolean): ConnectedPosition[];
@@ -18,7 +18,7 @@ declare class FrDropdownMenuContent {
18
18
  static ɵdir: i0.ɵɵDirectiveDeclaration<FrDropdownMenuContent, "ng-template[frDropdownMenuContent], ng-template[frDropdownMenuSubContent]", ["frDropdownMenuContent"], { "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "debugVisible": { "alias": "debugVisible"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
19
19
  }
20
20
  declare class FrDropdownMenuPanel {
21
- protected readonly side: i0.InputSignal<"bottom" | "left" | "right" | "top">;
21
+ protected readonly side: i0.InputSignal<"auto" | "bottom" | "left" | "right" | "top">;
22
22
  private readonly tree;
23
23
  private readonly parent;
24
24
  protected handleMouseEnter(): void;
@@ -74,7 +74,7 @@ declare class FrDropdownMenuItemIndicator {
74
74
  }
75
75
 
76
76
  declare const FR_DROPDOWN_MENU_ALIGNMENTS: readonly ["center", "end", "start"];
77
- declare const FR_DROPDOWN_MENU_SIDES: readonly ["bottom", "left", "right", "top"];
77
+ declare const FR_DROPDOWN_MENU_SIDES: readonly ["auto", "bottom", "left", "right", "top"];
78
78
  declare const FR_DROPDOWN_MENU_TRIGGER_MODES: readonly ["both", "click", "hover"];
79
79
  declare const FR_DROPDOWN_MENU_ITEM_VARIANTS: readonly ["default", "destructive"];
80
80
  type FrDropdownMenuAlignment = (typeof FR_DROPDOWN_MENU_ALIGNMENTS)[number];
@@ -38,15 +38,18 @@ declare class FrInputBadge {
38
38
  }
39
39
 
40
40
  declare const FR_INPUT_GROUP_ADDON_ALIGNS: readonly ["inline-start", "inline-end"];
41
+ declare const FR_INPUT_GROUP_ADDON_VARIANTS: readonly ["default", "ghost"];
41
42
  type FrInputGroupAddonAlign = (typeof FR_INPUT_GROUP_ADDON_ALIGNS)[number];
43
+ type FrInputGroupAddonVariant = (typeof FR_INPUT_GROUP_ADDON_VARIANTS)[number];
42
44
  declare class FrInputGroup {
43
45
  static ɵfac: i0.ɵɵFactoryDeclaration<FrInputGroup, never>;
44
46
  static ɵdir: i0.ɵɵDirectiveDeclaration<FrInputGroup, "[frInputGroup], frame-input-group", never, {}, {}, never, never, true, never>;
45
47
  }
46
48
  declare class FrInputGroupAddon {
47
49
  readonly align: i0.InputSignal<"inline-start" | "inline-end">;
50
+ readonly variant: i0.InputSignal<"default" | "ghost">;
48
51
  static ɵfac: i0.ɵɵFactoryDeclaration<FrInputGroupAddon, never>;
49
- static ɵdir: i0.ɵɵDirectiveDeclaration<FrInputGroupAddon, "[frInputGroupAddon], frame-input-group-addon", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
52
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FrInputGroupAddon, "[frInputGroupAddon], frame-input-group-addon", never, { "align": { "alias": "align"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
50
53
  }
51
54
  declare class FrInputGroupText {
52
55
  static ɵfac: i0.ɵɵFactoryDeclaration<FrInputGroupText, never>;
@@ -63,5 +66,5 @@ declare class FrInputModule {
63
66
  static ɵinj: i0.ɵɵInjectorDeclaration<FrInputModule>;
64
67
  }
65
68
 
66
- export { FR_INPUT_GROUP_ADDON_ALIGNS, FrInput, FrInputBadge, FrInputControl, FrInputDescription, FrInputError, FrInputField, FrInputFieldGroup, FrInputGroup, FrInputGroupAddon, FrInputGroupInput, FrInputGroupText, FrInputHeader, FrInputLabel, FrInputModule };
67
- export type { FrInputGroupAddonAlign };
69
+ export { FR_INPUT_GROUP_ADDON_ALIGNS, FR_INPUT_GROUP_ADDON_VARIANTS, FrInput, FrInputBadge, FrInputControl, FrInputDescription, FrInputError, FrInputField, FrInputFieldGroup, FrInputGroup, FrInputGroupAddon, FrInputGroupInput, FrInputGroupText, FrInputHeader, FrInputLabel, FrInputModule };
70
+ export type { FrInputGroupAddonAlign, FrInputGroupAddonVariant };
@@ -56,6 +56,8 @@ declare class FrSelectPanel {
56
56
  static ɵdir: i0.ɵɵDirectiveDeclaration<FrSelectPanel, "[frSelectPanel], frame-select-panel", never, {}, {}, never, never, true, [{ directive: typeof i1.FrDropdownMenuPanel; inputs: {}; outputs: {}; }]>;
57
57
  }
58
58
 
59
+ declare const FR_SELECT_ICON_POSITIONS: readonly ["leading", "trailing"];
60
+ type FrSelectIconPosition = (typeof FR_SELECT_ICON_POSITIONS)[number];
59
61
  declare class FrSelectValue {
60
62
  private readonly select;
61
63
  readonly placeholder: i0.InputSignal<string>;
@@ -69,8 +71,9 @@ declare class FrSelectItemIndicator {
69
71
  static ɵdir: i0.ɵɵDirectiveDeclaration<FrSelectItemIndicator, "[frSelectItemIndicator], frame-select-item-indicator", never, {}, {}, never, never, true, never>;
70
72
  }
71
73
  declare class FrSelectIcon {
74
+ readonly position: i0.InputSignal<"leading" | "trailing">;
72
75
  static ɵfac: i0.ɵɵFactoryDeclaration<FrSelectIcon, never>;
73
- static ɵdir: i0.ɵɵDirectiveDeclaration<FrSelectIcon, "[frSelectIcon], frame-select-icon", never, {}, {}, never, never, true, never>;
76
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FrSelectIcon, "[frSelectIcon], frame-select-icon", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
74
77
  }
75
78
  declare class FrSelectError {
76
79
  static ɵfac: i0.ɵɵFactoryDeclaration<FrSelectError, never>;
@@ -110,5 +113,5 @@ declare class FrSelectModule {
110
113
  static ɵinj: i0.ɵɵInjectorDeclaration<FrSelectModule>;
111
114
  }
112
115
 
113
- export { FR_SELECT_INDICATOR_POSITIONS, FR_SELECT_POSITIONS, FrSelect, FrSelectContent, FrSelectError, FrSelectGroup, FrSelectIcon, FrSelectItem, FrSelectItemIndicator, FrSelectLabel, FrSelectModule, FrSelectPanel, FrSelectSeparator, FrSelectValue };
114
- export type { FrSelectIndicatorPosition, FrSelectPosition };
116
+ export { FR_SELECT_ICON_POSITIONS, FR_SELECT_INDICATOR_POSITIONS, FR_SELECT_POSITIONS, FrSelect, FrSelectContent, FrSelectError, FrSelectGroup, FrSelectIcon, FrSelectItem, FrSelectItemIndicator, FrSelectLabel, FrSelectModule, FrSelectPanel, FrSelectSeparator, FrSelectValue };
117
+ export type { FrSelectIconPosition, FrSelectIndicatorPosition, FrSelectPosition };
@@ -45,8 +45,10 @@ declare class FrSidebar {
45
45
  readonly side: i0.InputSignalWithTransform<"left" | "right", unknown>;
46
46
  readonly variant: i0.InputSignalWithTransform<"sidebar" | "floating" | "inset", unknown>;
47
47
  readonly collapsible: i0.InputSignalWithTransform<"offcanvas" | "icon" | "none", unknown>;
48
+ readonly minSize: i0.InputSignalWithTransform<number | null, unknown>;
49
+ readonly maxSize: i0.InputSignalWithTransform<number | null, unknown>;
48
50
  static ɵfac: i0.ɵɵFactoryDeclaration<FrSidebar, never>;
49
- static ɵdir: i0.ɵɵDirectiveDeclaration<FrSidebar, "[frSidebar], frame-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
51
+ static ɵdir: i0.ɵɵDirectiveDeclaration<FrSidebar, "[frSidebar], frame-sidebar", never, { "side": { "alias": "side"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "minSize": { "alias": "minSize"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
50
52
  }
51
53
  declare class FrSidebarTrigger {
52
54
  readonly provider: FrSidebarProvider | null;
@@ -64,11 +66,16 @@ declare class FrSidebarRail {
64
66
  private suppressClick;
65
67
  private frameId;
66
68
  private pendingWidth;
69
+ private resizeMinSize;
70
+ private resizeMaxSize;
67
71
  readonly provider: FrSidebarProvider | null;
68
72
  toggle(): void;
69
73
  startResize(event: PointerEvent): void;
70
74
  private resize;
71
75
  private flushResize;
76
+ private clampWidth;
77
+ private captureResizeBounds;
78
+ private measureContentMinSize;
72
79
  static ɵfac: i0.ɵɵFactoryDeclaration<FrSidebarRail, never>;
73
80
  static ɵdir: i0.ɵɵDirectiveDeclaration<FrSidebarRail, "[frSidebarRail], frame-sidebar-rail", never, {}, {}, never, never, true, never>;
74
81
  }
@@ -1,87 +1,57 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { TemplateRef } from '@angular/core';
3
- import { ConnectedPosition, ConnectedOverlayPositionChange } from '@angular/cdk/overlay';
2
+ import { AfterViewInit, TemplateRef } from '@angular/core';
4
3
 
5
- type FrTooltipController = {
6
- isOpen(): boolean;
7
- overlaySide(): string;
8
- registerTrigger(trigger: HTMLElement): void;
9
- setContent(content: unknown | null): void;
10
- openWithDelay(): void;
11
- closeWithDelay(): void;
12
- open(): void;
13
- close(): void;
14
- };
15
-
16
- declare class FrTooltipContent {
17
- readonly templateRef: TemplateRef<any>;
18
- readonly id: string;
4
+ declare class FrTooltipDirective implements AfterViewInit {
5
+ private readonly destroyRef;
6
+ private readonly document;
7
+ private readonly elementRef;
8
+ private readonly overlay;
9
+ private readonly platformId;
10
+ readonly content: _angular_core.InputSignal<string | TemplateRef<unknown> | null>;
19
11
  readonly align: _angular_core.InputSignal<"start" | "center" | "end">;
20
12
  readonly alignOffset: _angular_core.InputSignal<number>;
21
13
  readonly arrow: _angular_core.InputSignalWithTransform<boolean, unknown>;
22
- readonly debugVisible: _angular_core.InputSignalWithTransform<boolean, unknown>;
14
+ readonly closeDelay: _angular_core.InputSignal<number>;
15
+ readonly openDelay: _angular_core.InputSignalWithTransform<number, unknown>;
23
16
  readonly side: _angular_core.InputSignal<"top" | "right" | "bottom" | "left">;
24
17
  readonly sideOffset: _angular_core.InputSignal<number>;
25
- getPositions(): ConnectedPosition[];
26
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrTooltipContent, never>;
27
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FrTooltipContent, "ng-template[frTooltipContent]", ["frTooltipContent"], { "align": { "alias": "align"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "alignOffset"; "required": false; "isSignal": true; }; "arrow": { "alias": "arrow"; "required": false; "isSignal": true; }; "debugVisible": { "alias": "debugVisible"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "sideOffset"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
28
- }
29
- declare class FrTooltipPanel {
30
- protected readonly content: FrTooltipContent;
31
- protected readonly root: FrTooltipController;
32
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrTooltipPanel, never>;
33
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FrTooltipPanel, "[frTooltipPanel]", never, {}, {}, never, never, true, never>;
34
- }
35
- declare class FrTooltipShortcut {
36
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrTooltipShortcut, never>;
37
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FrTooltipShortcut, "[frTooltipShortcut]", never, {}, {}, never, never, true, never>;
38
- }
39
-
40
- declare class FrTooltipRoot {
41
- private readonly elementRef;
42
- readonly openDelay: _angular_core.InputSignal<number>;
43
- readonly closeDelay: _angular_core.InputSignal<number>;
44
- readonly defaultOpen: _angular_core.InputSignalWithTransform<boolean, unknown>;
45
- readonly debugVisible: _angular_core.InputSignalWithTransform<boolean, unknown>;
46
- readonly openChange: _angular_core.OutputEmitterRef<boolean>;
47
- readonly isOpen: _angular_core.WritableSignal<boolean>;
48
- readonly content: _angular_core.WritableSignal<FrTooltipContent | null>;
49
- readonly overlaySide: _angular_core.WritableSignal<string>;
50
- private openTimer;
18
+ protected readonly isOpen: _angular_core.WritableSignal<boolean>;
19
+ protected readonly tooltipId: string;
51
20
  private closeTimer;
21
+ private disabledObserver;
22
+ private openTimer;
23
+ private overlayRef;
24
+ private panelRef;
52
25
  private triggerElement;
53
- readonly positions: _angular_core.Signal<ConnectedPosition[]>;
26
+ private wrapped;
27
+ private wrapper;
28
+ private teardownListeners;
54
29
  constructor();
55
- registerTrigger(trigger: HTMLElement): void;
56
- setContent(content: unknown | null): void;
57
- openWithDelay(): void;
58
- closeWithDelay(): void;
59
- open(): void;
60
- close(): void;
61
- handleOverlayKeydown(event: KeyboardEvent): void;
62
- handlePositionChange(event: ConnectedOverlayPositionChange): void;
63
- overlayPanelClasses(): string[];
64
- private cancelOpen;
65
- private cancelClose;
30
+ ngAfterViewInit(): void;
31
+ private bindTriggerEvents;
32
+ private ensureDisabledHostWrapper;
33
+ private observeDisabledState;
34
+ private openWithDelay;
35
+ private closeWithDelay;
36
+ private open;
37
+ private close;
38
+ private createOverlay;
39
+ private positions;
40
+ private handlePositionChange;
41
+ private updatePanelInputs;
66
42
  private syncCustomPropertiesToOverlay;
67
- private scheduleCustomPropertySync;
68
43
  private copyCustomProperties;
69
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrTooltipRoot, never>;
70
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FrTooltipRoot, "frame-tooltip", ["frTooltip"], { "openDelay": { "alias": "openDelay"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "closeDelay"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "debugVisible": { "alias": "debugVisible"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; }, never, ["*"], true, never>;
44
+ private listen;
45
+ private cancelOpen;
46
+ private cancelClose;
47
+ private destroy;
48
+ private teardownTriggerListeners;
49
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrTooltipDirective, never>;
50
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FrTooltipDirective, "[frTooltip]", never, { "content": { "alias": "frTooltip"; "required": false; "isSignal": true; }; "align": { "alias": "frTooltipAlign"; "required": false; "isSignal": true; }; "alignOffset": { "alias": "frTooltipAlignOffset"; "required": false; "isSignal": true; }; "arrow": { "alias": "frTooltipArrow"; "required": false; "isSignal": true; }; "closeDelay": { "alias": "frTooltipCloseDelay"; "required": false; "isSignal": true; }; "openDelay": { "alias": "frTooltipOpenDelay"; "required": false; "isSignal": true; }; "side": { "alias": "frTooltipSide"; "required": false; "isSignal": true; }; "sideOffset": { "alias": "frTooltipSideOffset"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
71
51
  }
72
-
73
- declare class FrTooltipTrigger {
74
- readonly content: _angular_core.InputSignal<FrTooltipContent | null>;
75
- protected readonly root: FrTooltipController;
76
- private readonly elementRef;
77
- constructor();
78
- protected handleMouseEnter(): void;
79
- protected handleMouseLeave(): void;
80
- protected handleFocusIn(): void;
81
- protected handleFocusOut(): void;
82
- protected handleKeydown(event: KeyboardEvent): void;
83
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrTooltipTrigger, never>;
84
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FrTooltipTrigger, "[frTooltipTrigger]", never, { "content": { "alias": "frTooltipTrigger"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
52
+ declare class FrTooltipShortcut {
53
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrTooltipShortcut, never>;
54
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FrTooltipShortcut, "[frTooltipShortcut]", never, {}, {}, never, never, true, never>;
85
55
  }
86
56
 
87
57
  declare const FR_TOOLTIP_SIDES: readonly ["top", "right", "bottom", "left"];
@@ -91,9 +61,9 @@ type FrTooltipAlignment = (typeof FR_TOOLTIP_ALIGNMENTS)[number];
91
61
 
92
62
  declare class FrTooltipModule {
93
63
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FrTooltipModule, never>;
94
- static ɵmod: _angular_core.ɵɵNgModuleDeclaration<FrTooltipModule, never, [typeof FrTooltipRoot, typeof FrTooltipTrigger, typeof FrTooltipContent, typeof FrTooltipPanel, typeof FrTooltipShortcut], [typeof FrTooltipRoot, typeof FrTooltipTrigger, typeof FrTooltipContent, typeof FrTooltipPanel, typeof FrTooltipShortcut]>;
64
+ static ɵmod: _angular_core.ɵɵNgModuleDeclaration<FrTooltipModule, never, [typeof FrTooltipDirective, typeof FrTooltipShortcut], [typeof FrTooltipDirective, typeof FrTooltipShortcut]>;
95
65
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<FrTooltipModule>;
96
66
  }
97
67
 
98
- export { FR_TOOLTIP_ALIGNMENTS, FR_TOOLTIP_SIDES, FrTooltipRoot as FrTooltip, FrTooltipContent, FrTooltipModule, FrTooltipPanel, FrTooltipShortcut, FrTooltipTrigger };
68
+ export { FR_TOOLTIP_ALIGNMENTS, FR_TOOLTIP_SIDES, FrTooltipDirective, FrTooltipModule, FrTooltipShortcut };
99
69
  export type { FrTooltipAlignment, FrTooltipSide };