@testgorilla/tgo-ui 11.14.0 → 11.16.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 (61) hide show
  1. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs +1 -1
  2. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs.map +1 -1
  3. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs +1 -1
  4. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs.map +1 -1
  5. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +1 -1
  6. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +1 -1
  7. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs +1 -1
  8. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs.map +1 -1
  9. package/fesm2022/testgorilla-tgo-ui-components-button.mjs +32 -3
  10. package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +1 -1
  11. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs +1 -1
  12. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs.map +1 -1
  13. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs +2 -2
  14. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs.map +1 -1
  15. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +1 -1
  16. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +1 -1
  17. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +1 -1
  18. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +1 -1
  19. package/fesm2022/testgorilla-tgo-ui-components-field.mjs +1 -1
  20. package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -1
  21. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +1 -1
  22. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -1
  23. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +1 -1
  24. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -1
  25. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs +1 -1
  26. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs.map +1 -1
  27. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs +1 -1
  28. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs.map +1 -1
  29. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs +2 -2
  30. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs.map +1 -1
  31. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs +1 -1
  32. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs.map +1 -1
  33. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs +1 -1
  34. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs.map +1 -1
  35. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs +94 -26
  36. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs.map +1 -1
  37. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs +1 -1
  38. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs.map +1 -1
  39. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +1 -1
  40. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -1
  41. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs +1 -1
  42. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs.map +1 -1
  43. package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs +1 -1
  44. package/fesm2022/testgorilla-tgo-ui-components-side-navigation.mjs.map +1 -1
  45. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs +1 -1
  46. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs.map +1 -1
  47. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs +1 -1
  48. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs.map +1 -1
  49. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +19 -4
  50. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +1 -1
  51. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs +1 -1
  52. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs.map +1 -1
  53. package/fesm2022/testgorilla-tgo-ui-components-table.mjs +1 -1
  54. package/fesm2022/testgorilla-tgo-ui-components-table.mjs.map +1 -1
  55. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs +1 -1
  56. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs.map +1 -1
  57. package/mcp/catalog.json +1 -1
  58. package/package.json +1 -1
  59. package/types/testgorilla-tgo-ui-components-button.d.ts +21 -1
  60. package/types/testgorilla-tgo-ui-components-popover.d.ts +20 -3
  61. package/types/testgorilla-tgo-ui-components-slider.d.ts +9 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testgorilla/tgo-ui",
3
- "version": "11.14.0",
3
+ "version": "11.16.0",
4
4
  "license": "proprietary-license",
5
5
  "lint-staged": {
6
6
  "{projects,components}/**/*.ts": [
@@ -74,6 +74,20 @@ declare class ButtonComponent implements OnInit, AfterViewInit {
74
74
  * @memberof ButtonComponent
75
75
  */
76
76
  iconName: IconName | undefined;
77
+ /**
78
+ * Name of a second ui-icon rendered after the label, in addition to `iconName`.
79
+ * Pair it with `iconPosition="left"` to show a leading and a trailing icon at once.
80
+ *
81
+ * @type {IconName}
82
+ * @memberof ButtonComponent
83
+ */
84
+ trailingIconName: IconName | undefined;
85
+ /**
86
+ * Renders the trailing icon filled, independently of `iconFilled`.
87
+ *
88
+ * @memberof ButtonComponent
89
+ */
90
+ trailingIconFilled: boolean;
77
91
  /**
78
92
  * Indicator if the button should be disabled
79
93
  *
@@ -260,6 +274,7 @@ declare class ButtonComponent implements OnInit, AfterViewInit {
260
274
  coloredIcons: string[];
261
275
  labelEllipsis: boolean;
262
276
  icon: IconName;
277
+ trailingIcon: IconName;
263
278
  private static nextAriaLabelledId;
264
279
  ariaLabelledbyId: string;
265
280
  get typeIncluded(): boolean;
@@ -289,6 +304,11 @@ declare class ButtonComponent implements OnInit, AfterViewInit {
289
304
  focus(origin?: FocusOrigin): void;
290
305
  get getCompanyColor(): string;
291
306
  get shouldChangeFilledStatus(): boolean;
307
+ /**
308
+ * Whether this specific icon may be swapped to its filled variant on hover. Takes the icon as an
309
+ * argument because a button can render two, and a brand icon in one slot must not freeze the other.
310
+ */
311
+ canToggleFilled(icon: IconName): boolean;
292
312
  onKeydown(event: KeyboardEvent): void;
293
313
  onKeyup(event: KeyboardEvent): void;
294
314
  onLabelEllipsisChange(state: boolean): void;
@@ -296,7 +316,7 @@ declare class ButtonComponent implements OnInit, AfterViewInit {
296
316
  private isKnownIconName;
297
317
  private createAriaLabelledById;
298
318
  static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, [{ optional: true; }]>;
299
- static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "ui-button", never, { "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "label": { "alias": "label"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "justIcon": { "alias": "justIcon"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "loadingWithLabel": { "alias": "loadingWithLabel"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "url": { "alias": "url"; "required": false; }; "urlTarget": { "alias": "urlTarget"; "required": false; }; "value": { "alias": "value"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "isPremium": { "alias": "isPremium"; "required": false; }; "type": { "alias": "type"; "required": false; }; "companyColor": { "alias": "companyColor"; "required": false; }; "buttonBadgeConfig": { "alias": "buttonBadgeConfig"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "disabledScaleOnClick": { "alias": "disabledScaleOnClick"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; }; "ariaControls": { "alias": "ariaControls"; "required": false; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; }; "ariaRequired": { "alias": "ariaRequired"; "required": false; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; }; "preventDefault": { "alias": "preventDefault"; "required": false; }; "hasBackground": { "alias": "hasBackground"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; "role": { "alias": "role"; "required": false; }; "iconFilled": { "alias": "iconFilled"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; }, { "buttonClickEvent": "buttonClickEvent"; "buttonHoverEvent": "buttonHoverEvent"; }, never, never, true, never>;
319
+ static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "ui-button", never, { "size": { "alias": "size"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "label": { "alias": "label"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "justIcon": { "alias": "justIcon"; "required": false; }; "iconName": { "alias": "iconName"; "required": false; }; "trailingIconName": { "alias": "trailingIconName"; "required": false; }; "trailingIconFilled": { "alias": "trailingIconFilled"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "loadingWithLabel": { "alias": "loadingWithLabel"; "required": false; }; "fullWidth": { "alias": "fullWidth"; "required": false; }; "url": { "alias": "url"; "required": false; }; "urlTarget": { "alias": "urlTarget"; "required": false; }; "value": { "alias": "value"; "required": false; }; "tooltip": { "alias": "tooltip"; "required": false; }; "isPremium": { "alias": "isPremium"; "required": false; }; "type": { "alias": "type"; "required": false; }; "companyColor": { "alias": "companyColor"; "required": false; }; "buttonBadgeConfig": { "alias": "buttonBadgeConfig"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "disabledScaleOnClick": { "alias": "disabledScaleOnClick"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; }; "ariaControls": { "alias": "ariaControls"; "required": false; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; }; "ariaRequired": { "alias": "ariaRequired"; "required": false; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; }; "ariaDescribedby": { "alias": "ariaDescribedby"; "required": false; }; "preventDefault": { "alias": "preventDefault"; "required": false; }; "hasBackground": { "alias": "hasBackground"; "required": false; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; }; "role": { "alias": "role"; "required": false; }; "iconFilled": { "alias": "iconFilled"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; }, { "buttonClickEvent": "buttonClickEvent"; "buttonHoverEvent": "buttonHoverEvent"; }, never, never, true, never>;
300
320
  static ngAcceptInputType_preventDefault: unknown;
301
321
  static ngAcceptInputType_hasBackground: unknown;
302
322
  }
@@ -3,6 +3,9 @@ import { OnInit, OnDestroy, TemplateRef } from '@angular/core';
3
3
  import { HorizontalConnectionPos } from '@angular/cdk/overlay';
4
4
  import { CardSize } from '@testgorilla/tgo-ui/components/card';
5
5
 
6
+ /** How the popover is opened: on hover of the anchor, or on click. */
7
+ type PopoverTrigger = 'hover' | 'click';
8
+
6
9
  declare class PopoverDirective implements OnInit, OnDestroy {
7
10
  uiPopover: _angular_core.InputSignal<TemplateRef<unknown>>;
8
11
  popoverOffset: _angular_core.InputSignal<number>;
@@ -10,7 +13,12 @@ declare class PopoverDirective implements OnInit, OnDestroy {
10
13
  popoverOpen: _angular_core.InputSignal<boolean>;
11
14
  popoverCard: _angular_core.InputSignal<boolean>;
12
15
  popoverCardSize: _angular_core.InputSignal<CardSize>;
16
+ popoverTrigger: _angular_core.InputSignal<PopoverTrigger>;
17
+ popoverAriaLabel: _angular_core.InputSignal<string>;
13
18
  uiPopoverDisabled: _angular_core.InputSignal<boolean>;
19
+ private readonly openState;
20
+ /** Whether the popover is currently showing. Read it via `#ref="uiPopover"` or `viewChild(PopoverDirective)`. */
21
+ readonly isOpen: _angular_core.Signal<boolean>;
14
22
  private readonly overlay;
15
23
  private readonly elementRef;
16
24
  private readonly injector;
@@ -19,19 +27,28 @@ declare class PopoverDirective implements OnInit, OnDestroy {
19
27
  private openTimeout;
20
28
  private closeTimeout;
21
29
  private overlayListeners;
30
+ private dismissSubscriptions;
22
31
  onMouseEnter(): void;
23
32
  onMouseLeave(): void;
24
- private open;
33
+ onClick(): void;
34
+ /** Opens the popover. No-op while `uiPopoverDisabled` is `true` or it is already open. */
35
+ open(): void;
36
+ /** Closes the popover. Safe to call when it is already closed. */
37
+ close(): void;
38
+ /** Opens the popover when closed, closes it when open. */
39
+ toggle(): void;
25
40
  private createOverlay;
41
+ /** Click-triggered popovers dismiss on an outside pointer event or on Escape. */
42
+ private listenForDismiss;
26
43
  private scheduleOpen;
27
44
  private cancelOpen;
28
45
  private scheduleClose;
29
46
  private cancelClose;
30
- private close;
31
47
  ngOnInit(): void;
32
48
  ngOnDestroy(): void;
33
49
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PopoverDirective, never>;
34
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverDirective, "[uiPopover]", never, { "uiPopover": { "alias": "uiPopover"; "required": true; "isSignal": true; }; "popoverOffset": { "alias": "popoverOffset"; "required": false; "isSignal": true; }; "popoverAlign": { "alias": "popoverAlign"; "required": false; "isSignal": true; }; "popoverOpen": { "alias": "popoverOpen"; "required": false; "isSignal": true; }; "popoverCard": { "alias": "popoverCard"; "required": false; "isSignal": true; }; "popoverCardSize": { "alias": "popoverCardSize"; "required": false; "isSignal": true; }; "uiPopoverDisabled": { "alias": "uiPopoverDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
50
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<PopoverDirective, "[uiPopover]", ["uiPopover"], { "uiPopover": { "alias": "uiPopover"; "required": true; "isSignal": true; }; "popoverOffset": { "alias": "popoverOffset"; "required": false; "isSignal": true; }; "popoverAlign": { "alias": "popoverAlign"; "required": false; "isSignal": true; }; "popoverOpen": { "alias": "popoverOpen"; "required": false; "isSignal": true; }; "popoverCard": { "alias": "popoverCard"; "required": false; "isSignal": true; }; "popoverCardSize": { "alias": "popoverCardSize"; "required": false; "isSignal": true; }; "popoverTrigger": { "alias": "popoverTrigger"; "required": false; "isSignal": true; }; "popoverAriaLabel": { "alias": "popoverAriaLabel"; "required": false; "isSignal": true; }; "uiPopoverDisabled": { "alias": "uiPopoverDisabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
35
51
  }
36
52
 
37
53
  export { PopoverDirective };
54
+ export type { PopoverTrigger };
@@ -132,6 +132,13 @@ declare class SliderComponent implements Validator {
132
132
  * Basic variant only. See {@link dragStart}.
133
133
  */
134
134
  dragEnd: _angular_core.OutputEmitterRef<number>;
135
+ /**
136
+ * Emitted with the thumb's current value on every move while the user is dragging it.
137
+ * Basic variant only, and pointer drag only: keyboard seeks and programmatic writes never
138
+ * emit it and keep arriving through `sliderValueChange`. See {@link dragStart}.
139
+ */
140
+ dragMove: _angular_core.OutputEmitterRef<number>;
141
+ private isDragging;
135
142
  /**
136
143
  * Tracks hover, so the value bubble markup is only mounted while the pointer is over the slider.
137
144
  * Starts true to keep the at-rest markup identical to what the component shipped before
@@ -157,6 +164,7 @@ declare class SliderComponent implements Validator {
157
164
  protected onValueChange(ev?: number): void;
158
165
  protected onSliderHover(isHovered: boolean): void;
159
166
  protected onDragStart(event: MatSliderDragEvent): void;
167
+ protected onDragMove(value: number): void;
160
168
  protected onDragEnd(event: MatSliderDragEvent): void;
161
169
  protected onInputBlur(inputName: string): void;
162
170
  protected onInputFocus(): void;
@@ -166,7 +174,7 @@ declare class SliderComponent implements Validator {
166
174
  formatLabel(value: number): string;
167
175
  validate(control: AbstractControl): ValidationErrors | null;
168
176
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SliderComponent, [{ optional: true; }]>;
169
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "ui-slider", never, { "max": { "alias": "max"; "required": false; }; "min": { "alias": "min"; "required": false; }; "percentage": { "alias": "percentage"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "sliderStart": { "alias": "sliderStart"; "required": false; }; "sliderEnd": { "alias": "sliderEnd"; "required": false; }; "label": { "alias": "label"; "required": false; }; "showInputs": { "alias": "showInputs"; "required": false; }; "step": { "alias": "step"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; "useDecimal": { "alias": "useDecimal"; "required": false; "isSignal": true; }; "useThousandsSeparator": { "alias": "useThousandsSeparator"; "required": false; "isSignal": true; }; "minLabel": { "alias": "minLabel"; "required": false; "isSignal": true; }; "maxLabel": { "alias": "maxLabel"; "required": false; "isSignal": true; }; "inputWidth": { "alias": "inputWidth"; "required": false; "isSignal": true; }; "showValueBubble": { "alias": "showValueBubble"; "required": false; "isSignal": true; }; }, { "sliderValueChange": "sliderValueChange"; "dragStart": "dragStart"; "dragEnd": "dragEnd"; }, never, never, true, never>;
177
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SliderComponent, "ui-slider", never, { "max": { "alias": "max"; "required": false; }; "min": { "alias": "min"; "required": false; }; "percentage": { "alias": "percentage"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "sliderStart": { "alias": "sliderStart"; "required": false; }; "sliderEnd": { "alias": "sliderEnd"; "required": false; }; "label": { "alias": "label"; "required": false; }; "showInputs": { "alias": "showInputs"; "required": false; }; "step": { "alias": "step"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "testId": { "alias": "testId"; "required": false; }; "useDecimal": { "alias": "useDecimal"; "required": false; "isSignal": true; }; "useThousandsSeparator": { "alias": "useThousandsSeparator"; "required": false; "isSignal": true; }; "minLabel": { "alias": "minLabel"; "required": false; "isSignal": true; }; "maxLabel": { "alias": "maxLabel"; "required": false; "isSignal": true; }; "inputWidth": { "alias": "inputWidth"; "required": false; "isSignal": true; }; "showValueBubble": { "alias": "showValueBubble"; "required": false; "isSignal": true; }; }, { "sliderValueChange": "sliderValueChange"; "dragStart": "dragStart"; "dragEnd": "dragEnd"; "dragMove": "dragMove"; }, never, never, true, never>;
170
178
  }
171
179
 
172
180
  declare class SliderComponentModule {