ng-primitives 0.57.0 → 0.59.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 (85) hide show
  1. package/button/button/button-state.d.ts +1 -11
  2. package/button/button/button.d.ts +0 -8
  3. package/button/index.d.ts +1 -1
  4. package/combobox/combobox-dropdown/combobox-dropdown.d.ts +3 -3
  5. package/date-picker/date-picker-date-button/date-picker-date-button.d.ts +1 -2
  6. package/date-picker/date-picker-next-month/date-picker-next-month.d.ts +1 -2
  7. package/date-picker/date-picker-previous-month/date-picker-previous-month.d.ts +1 -2
  8. package/fesm2022/ng-primitives-a11y.mjs.map +1 -1
  9. package/fesm2022/ng-primitives-accordion.mjs.map +1 -1
  10. package/fesm2022/ng-primitives-autofill.mjs.map +1 -1
  11. package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
  12. package/fesm2022/ng-primitives-button.mjs +5 -31
  13. package/fesm2022/ng-primitives-button.mjs.map +1 -1
  14. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
  15. package/fesm2022/ng-primitives-combobox.mjs +1 -2
  16. package/fesm2022/ng-primitives-combobox.mjs.map +1 -1
  17. package/fesm2022/ng-primitives-common.mjs.map +1 -1
  18. package/fesm2022/ng-primitives-date-picker.mjs +7 -16
  19. package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
  20. package/fesm2022/ng-primitives-date-time-luxon.mjs.map +1 -1
  21. package/fesm2022/ng-primitives-date-time.mjs.map +1 -1
  22. package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
  23. package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
  24. package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -1
  25. package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
  26. package/fesm2022/ng-primitives-input.mjs.map +1 -1
  27. package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
  28. package/fesm2022/ng-primitives-internal.mjs +165 -42
  29. package/fesm2022/ng-primitives-internal.mjs.map +1 -1
  30. package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
  31. package/fesm2022/ng-primitives-menu.mjs.map +1 -1
  32. package/fesm2022/ng-primitives-meter.mjs.map +1 -1
  33. package/fesm2022/ng-primitives-pagination.mjs +11 -22
  34. package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
  35. package/fesm2022/ng-primitives-popover.mjs +4 -2
  36. package/fesm2022/ng-primitives-popover.mjs.map +1 -1
  37. package/fesm2022/ng-primitives-portal.mjs +8 -2
  38. package/fesm2022/ng-primitives-portal.mjs.map +1 -1
  39. package/fesm2022/ng-primitives-progress.mjs.map +1 -1
  40. package/fesm2022/ng-primitives-radio.mjs.map +1 -1
  41. package/fesm2022/ng-primitives-resize.mjs +5 -66
  42. package/fesm2022/ng-primitives-resize.mjs.map +1 -1
  43. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
  44. package/fesm2022/ng-primitives-search.mjs.map +1 -1
  45. package/fesm2022/ng-primitives-select.mjs.map +1 -1
  46. package/fesm2022/ng-primitives-separator.mjs.map +1 -1
  47. package/fesm2022/ng-primitives-slider.mjs.map +1 -1
  48. package/fesm2022/ng-primitives-state.mjs.map +1 -1
  49. package/fesm2022/ng-primitives-switch.mjs.map +1 -1
  50. package/fesm2022/ng-primitives-tabs.mjs +2 -2
  51. package/fesm2022/ng-primitives-tabs.mjs.map +1 -1
  52. package/fesm2022/ng-primitives-textarea.mjs.map +1 -1
  53. package/fesm2022/ng-primitives-toast.mjs.map +1 -1
  54. package/fesm2022/ng-primitives-toggle-group.mjs +2 -2
  55. package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
  56. package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
  57. package/fesm2022/ng-primitives-toolbar.mjs +2 -2
  58. package/fesm2022/ng-primitives-toolbar.mjs.map +1 -1
  59. package/fesm2022/ng-primitives-tooltip.mjs +22 -3
  60. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
  61. package/fesm2022/ng-primitives-utils.mjs +10 -1
  62. package/fesm2022/ng-primitives-utils.mjs.map +1 -1
  63. package/internal/index.d.ts +4 -1
  64. package/internal/interactions/button.d.ts +14 -0
  65. package/internal/utilities/interaction.d.ts +6 -0
  66. package/internal/utilities/mutation-observer.d.ts +39 -0
  67. package/internal/utilities/overflow.d.ts +13 -0
  68. package/{resize/utils → internal/utilities}/resize.d.ts +13 -2
  69. package/package.json +21 -21
  70. package/pagination/pagination-button/pagination-button.d.ts +1 -2
  71. package/pagination/pagination-first/pagination-first.d.ts +1 -2
  72. package/pagination/pagination-last/pagination-last.d.ts +1 -2
  73. package/pagination/pagination-next/pagination-next.d.ts +1 -2
  74. package/pagination/pagination-previous/pagination-previous.d.ts +1 -2
  75. package/portal/overlay.d.ts +2 -0
  76. package/resize/index.d.ts +1 -1
  77. package/resize/resize/resize.d.ts +3 -4
  78. package/schematics/ng-generate/__snapshots__/index.spec.ts.snap +148 -5
  79. package/schematics/ng-generate/templates/button/button.__fileSuffix@dasherize__.ts.template +148 -5
  80. package/schematics/ng-generate/templates/tooltip/tooltip-trigger.__fileSuffix@dasherize__.ts.template +1 -0
  81. package/tooltip/config/tooltip-config.d.ts +5 -0
  82. package/tooltip/tooltip-trigger/tooltip-trigger.d.ts +13 -3
  83. package/utils/helpers/attributes.d.ts +2 -0
  84. package/utils/index.d.ts +2 -1
  85. package/internal/signals/sync-state.d.ts +0 -2
@@ -1,13 +1,27 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`Component Schematic should create a button primitive 1`] = `
4
- "import { Component } from '@angular/core';
4
+ "import { Component, input } from '@angular/core';
5
5
  import { NgpButton } from 'ng-primitives/button';
6
6
 
7
+ /**
8
+ * The size of the button.
9
+ */
10
+ export type ButtonSize = 'sm' | 'md' | 'lg' | 'xl';
11
+
12
+ /**
13
+ * The variant of the button.
14
+ */
15
+ export type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link';
16
+
7
17
  @Component({
8
18
  selector: 'button[app-button]',
9
19
  hostDirectives: [{ directive: NgpButton, inputs: ['disabled'] }],
10
20
  template: '<ng-content />',
21
+ host: {
22
+ '[attr.data-size]': 'size()',
23
+ '[attr.data-variant]': 'variant()',
24
+ },
11
25
  styles: \`
12
26
  /* These styles rely on CSS variables that can be imported from ng-primitives/example-theme/index.css in your global styles */
13
27
 
@@ -23,22 +37,151 @@ import { NgpButton } from 'ng-primitives/button';
23
37
  transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1);
24
38
  box-shadow: var(--ngp-button-shadow);
25
39
  box-sizing: border-box;
40
+ display: inline-flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ cursor: pointer;
44
+ }
45
+
46
+ :host[data-variant='primary'],
47
+ :host:not([data-variant]) {
48
+ background-color: var(--ngp-background);
49
+ color: var(--ngp-text-primary);
50
+ border: none;
51
+ }
52
+
53
+ :host[data-variant='primary'][data-hover],
54
+ :host:not([data-variant])[data-hover] {
55
+ background-color: var(--ngp-background-hover);
56
+ }
57
+
58
+ :host[data-variant='primary'][data-press],
59
+ :host:not([data-variant])[data-press] {
60
+ background-color: var(--ngp-background-active);
61
+ }
62
+
63
+ :host[data-variant='secondary'] {
64
+ background-color: var(--ngp-secondary-background, #f1f5f9);
65
+ color: var(--ngp-secondary-text, #0f172a);
66
+ border: none;
67
+ }
68
+
69
+ :host[data-variant='secondary'][data-hover] {
70
+ background-color: var(--ngp-secondary-background-hover, #e2e8f0);
71
+ }
72
+
73
+ :host[data-variant='secondary'][data-press] {
74
+ background-color: var(--ngp-secondary-background-active, #cbd5e1);
75
+ }
76
+
77
+ :host[data-variant='destructive'] {
78
+ background-color: var(--ngp-destructive-background, #ef4444);
79
+ color: var(--ngp-destructive-text, #ffffff);
80
+ border: none;
81
+ }
82
+
83
+ :host[data-variant='destructive'][data-hover] {
84
+ background-color: var(--ngp-destructive-background-hover, #dc2626);
85
+ }
86
+
87
+ :host[data-variant='destructive'][data-press] {
88
+ background-color: var(--ngp-destructive-background-active, #b91c1c);
89
+ }
90
+
91
+ :host[data-variant='outline'] {
92
+ background-color: transparent;
93
+ color: var(--ngp-text-primary);
94
+ border: 1px solid var(--ngp-outline-border, #e2e8f0);
95
+ box-shadow: none;
26
96
  }
27
97
 
28
- :host[data-hover] {
98
+ :host[data-variant='outline'][data-hover] {
29
99
  background-color: var(--ngp-background-hover);
100
+ border-color: var(--ngp-outline-border-hover, #cbd5e1);
101
+ }
102
+
103
+ :host[data-variant='outline'][data-press] {
104
+ background-color: var(--ngp-outline-background-active, rgba(15, 23, 42, 0.1));
105
+ }
106
+
107
+ :host[data-variant='ghost'] {
108
+ background-color: transparent;
109
+ color: var(--ngp-text-primary);
110
+ border: none;
111
+ box-shadow: none;
112
+ }
113
+
114
+ :host[data-variant='ghost'][data-hover] {
115
+ background-color: var(--ngp-background-hover);
116
+ }
117
+
118
+ :host[data-variant='ghost'][data-press] {
119
+ background-color: var(--ngp-ghost-background-active, rgba(15, 23, 42, 0.1));
120
+ }
121
+
122
+ :host[data-variant='link'] {
123
+ background-color: transparent;
124
+ color: var(--ngp-text-primary);
125
+ border: none;
126
+ box-shadow: none;
127
+ text-decoration-line: none;
128
+ height: auto;
129
+ padding: 0;
130
+ }
131
+
132
+ :host[data-variant='link'][data-hover] {
133
+ text-decoration-line: underline;
134
+ }
135
+
136
+ :host[data-variant='link'][data-press] {
137
+ text-decoration-line: underline;
30
138
  }
31
139
 
32
140
  :host[data-focus-visible] {
33
141
  outline: 2px solid var(--ngp-focus-ring);
34
142
  }
35
143
 
36
- :host[data-press] {
37
- background-color: var(--ngp-background-active);
144
+ :host[data-size='sm'] {
145
+ height: 2rem;
146
+ padding-left: 0.75rem;
147
+ padding-right: 0.75rem;
148
+ font-size: 0.875rem;
149
+ }
150
+
151
+ :host[data-size='md'],
152
+ :host:not([data-size]) {
153
+ height: 2.5rem;
154
+ padding-left: 1rem;
155
+ padding-right: 1rem;
156
+ font-size: 0.875rem;
157
+ }
158
+
159
+ :host[data-size='lg'] {
160
+ height: 3rem;
161
+ padding-left: 1.25rem;
162
+ padding-right: 1.25rem;
163
+ font-size: 1rem;
164
+ }
165
+
166
+ :host[data-size='xl'] {
167
+ height: 3.5rem;
168
+ padding-left: 1.5rem;
169
+ padding-right: 1.5rem;
170
+ font-size: 1.125rem;
38
171
  }
39
172
  \`,
40
173
  })
41
- export class ButtonComponent {}
174
+ export class ButtonComponent {
175
+ /**
176
+ * The size of the button.
177
+ */
178
+ readonly size = input<ButtonSize>('md');
179
+
180
+ /**
181
+ * The variant of the button.
182
+ */
183
+ readonly variant = input<ButtonVariant>('primary');
184
+ }
42
185
  "
43
186
  `;
44
187
 
@@ -1,10 +1,24 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, input } from '@angular/core';
2
2
  import { NgpButton } from 'ng-primitives/button';
3
3
 
4
+ /**
5
+ * The size of the button.
6
+ */
7
+ export type ButtonSize = 'sm' | 'md' | 'lg' | 'xl';
8
+
9
+ /**
10
+ * The variant of the button.
11
+ */
12
+ export type ButtonVariant = 'primary' | 'secondary' | 'destructive' | 'outline' | 'ghost' | 'link';
13
+
4
14
  @Component({
5
15
  selector: 'button[<%= prefix %>-button]',
6
16
  hostDirectives: [{ directive: NgpButton, inputs: ['disabled'] }],
7
17
  template: '<ng-content />',
18
+ host: {
19
+ '[attr.data-size]': 'size()',
20
+ '[attr.data-variant]': 'variant()',
21
+ },
8
22
  styles: `
9
23
  /* These styles rely on CSS variables that can be imported from ng-primitives/example-theme/index.css in your global styles */
10
24
 
@@ -20,19 +34,148 @@ import { NgpButton } from 'ng-primitives/button';
20
34
  transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1);
21
35
  box-shadow: var(--ngp-button-shadow);
22
36
  box-sizing: border-box;
37
+ display: inline-flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+ cursor: pointer;
41
+ }
42
+
43
+ :host[data-variant='primary'],
44
+ :host:not([data-variant]) {
45
+ background-color: var(--ngp-background);
46
+ color: var(--ngp-text-primary);
47
+ border: none;
48
+ }
49
+
50
+ :host[data-variant='primary'][data-hover],
51
+ :host:not([data-variant])[data-hover] {
52
+ background-color: var(--ngp-background-hover);
53
+ }
54
+
55
+ :host[data-variant='primary'][data-press],
56
+ :host:not([data-variant])[data-press] {
57
+ background-color: var(--ngp-background-active);
58
+ }
59
+
60
+ :host[data-variant='secondary'] {
61
+ background-color: var(--ngp-secondary-background, #f1f5f9);
62
+ color: var(--ngp-secondary-text, #0f172a);
63
+ border: none;
64
+ }
65
+
66
+ :host[data-variant='secondary'][data-hover] {
67
+ background-color: var(--ngp-secondary-background-hover, #e2e8f0);
68
+ }
69
+
70
+ :host[data-variant='secondary'][data-press] {
71
+ background-color: var(--ngp-secondary-background-active, #cbd5e1);
72
+ }
73
+
74
+ :host[data-variant='destructive'] {
75
+ background-color: var(--ngp-destructive-background, #ef4444);
76
+ color: var(--ngp-destructive-text, #ffffff);
77
+ border: none;
78
+ }
79
+
80
+ :host[data-variant='destructive'][data-hover] {
81
+ background-color: var(--ngp-destructive-background-hover, #dc2626);
82
+ }
83
+
84
+ :host[data-variant='destructive'][data-press] {
85
+ background-color: var(--ngp-destructive-background-active, #b91c1c);
86
+ }
87
+
88
+ :host[data-variant='outline'] {
89
+ background-color: transparent;
90
+ color: var(--ngp-text-primary);
91
+ border: 1px solid var(--ngp-outline-border, #e2e8f0);
92
+ box-shadow: none;
23
93
  }
24
94
 
25
- :host[data-hover] {
95
+ :host[data-variant='outline'][data-hover] {
26
96
  background-color: var(--ngp-background-hover);
97
+ border-color: var(--ngp-outline-border-hover, #cbd5e1);
98
+ }
99
+
100
+ :host[data-variant='outline'][data-press] {
101
+ background-color: var(--ngp-outline-background-active, rgba(15, 23, 42, 0.1));
102
+ }
103
+
104
+ :host[data-variant='ghost'] {
105
+ background-color: transparent;
106
+ color: var(--ngp-text-primary);
107
+ border: none;
108
+ box-shadow: none;
109
+ }
110
+
111
+ :host[data-variant='ghost'][data-hover] {
112
+ background-color: var(--ngp-background-hover);
113
+ }
114
+
115
+ :host[data-variant='ghost'][data-press] {
116
+ background-color: var(--ngp-ghost-background-active, rgba(15, 23, 42, 0.1));
117
+ }
118
+
119
+ :host[data-variant='link'] {
120
+ background-color: transparent;
121
+ color: var(--ngp-text-primary);
122
+ border: none;
123
+ box-shadow: none;
124
+ text-decoration-line: none;
125
+ height: auto;
126
+ padding: 0;
127
+ }
128
+
129
+ :host[data-variant='link'][data-hover] {
130
+ text-decoration-line: underline;
131
+ }
132
+
133
+ :host[data-variant='link'][data-press] {
134
+ text-decoration-line: underline;
27
135
  }
28
136
 
29
137
  :host[data-focus-visible] {
30
138
  outline: 2px solid var(--ngp-focus-ring);
31
139
  }
32
140
 
33
- :host[data-press] {
34
- background-color: var(--ngp-background-active);
141
+ :host[data-size='sm'] {
142
+ height: 2rem;
143
+ padding-left: 0.75rem;
144
+ padding-right: 0.75rem;
145
+ font-size: 0.875rem;
146
+ }
147
+
148
+ :host[data-size='md'],
149
+ :host:not([data-size]) {
150
+ height: 2.5rem;
151
+ padding-left: 1rem;
152
+ padding-right: 1rem;
153
+ font-size: 0.875rem;
154
+ }
155
+
156
+ :host[data-size='lg'] {
157
+ height: 3rem;
158
+ padding-left: 1.25rem;
159
+ padding-right: 1.25rem;
160
+ font-size: 1rem;
161
+ }
162
+
163
+ :host[data-size='xl'] {
164
+ height: 3.5rem;
165
+ padding-left: 1.5rem;
166
+ padding-right: 1.5rem;
167
+ font-size: 1.125rem;
35
168
  }
36
169
  `,
37
170
  })
38
- export class Button<%= componentSuffix %> {}
171
+ export class Button<%= componentSuffix %> {
172
+ /**
173
+ * The size of the button.
174
+ */
175
+ readonly size = input<ButtonSize>('md');
176
+
177
+ /**
178
+ * The variant of the button.
179
+ */
180
+ readonly variant = input<ButtonVariant>('primary');
181
+ }
@@ -15,6 +15,7 @@ import { Tooltip } from './tooltip';
15
15
  'ngpTooltipTriggerHideDelay:appTooltipTriggerHideDelay',
16
16
  'ngpTooltipTriggerFlip:appTooltipTriggerFlip',
17
17
  'ngpTooltipTriggerContainer:appTooltipTriggerContainer',
18
+ 'ngpTooltipTriggerShowOnOverflow:appTooltipTriggerShowOnOverflow',
18
19
  'ngpTooltipTriggerContext:appTooltipTrigger',
19
20
  ],
20
21
  },
@@ -31,6 +31,11 @@ export interface NgpTooltipConfig {
31
31
  * @default document.body
32
32
  */
33
33
  container: HTMLElement | null;
34
+ /**
35
+ * Whether the tooltip should only show when the trigger element overflows.
36
+ * @default false
37
+ */
38
+ showOnOverflow: boolean;
34
39
  }
35
40
  export declare const defaultTooltipConfig: NgpTooltipConfig;
36
41
  export declare const NgpTooltipConfigToken: InjectionToken<NgpTooltipConfig>;
@@ -1,5 +1,5 @@
1
1
  import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
2
- import { OnDestroy } from '@angular/core';
2
+ import { OnDestroy, Signal } from '@angular/core';
3
3
  import { Placement } from '@floating-ui/dom';
4
4
  import { NgpOverlay, NgpOverlayContent } from 'ng-primitives/portal';
5
5
  import * as i0 from "@angular/core";
@@ -62,6 +62,11 @@ export declare class NgpTooltipTrigger<T = null> implements OnDestroy {
62
62
  * @default document.body
63
63
  */
64
64
  readonly container: import("@angular/core").InputSignal<HTMLElement | null>;
65
+ /**
66
+ * Define whether the tooltip should only show when the trigger element overflows.
67
+ * @default false
68
+ */
69
+ readonly showOnOverflow: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
65
70
  /**
66
71
  * Provide context to the tooltip. This can be used to pass data to the tooltip content.
67
72
  */
@@ -75,12 +80,17 @@ export declare class NgpTooltipTrigger<T = null> implements OnDestroy {
75
80
  * The open state of the tooltip.
76
81
  * @internal
77
82
  */
78
- readonly open: import("@angular/core").Signal<boolean>;
83
+ readonly open: Signal<boolean>;
84
+ /**
85
+ * Determine if the trigger element has overflow.
86
+ */
87
+ private readonly hasOverflow;
79
88
  /**
80
89
  * Store the state of the tooltip.
81
90
  * @internal
82
91
  */
83
92
  readonly state: import("ng-primitives/state").CreatedState<NgpTooltipTrigger<T>>;
93
+ constructor();
84
94
  ngOnDestroy(): void;
85
95
  /**
86
96
  * Show the tooltip.
@@ -95,5 +105,5 @@ export declare class NgpTooltipTrigger<T = null> implements OnDestroy {
95
105
  */
96
106
  private createOverlay;
97
107
  static ɵfac: i0.ɵɵFactoryDeclaration<NgpTooltipTrigger<any>, never>;
98
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgpTooltipTrigger<any>, "[ngpTooltipTrigger]", ["ngpTooltipTrigger"], { "tooltip": { "alias": "ngpTooltipTrigger"; "required": false; "isSignal": true; }; "disabled": { "alias": "ngpTooltipTriggerDisabled"; "required": false; "isSignal": true; }; "placement": { "alias": "ngpTooltipTriggerPlacement"; "required": false; "isSignal": true; }; "offset": { "alias": "ngpTooltipTriggerOffset"; "required": false; "isSignal": true; }; "showDelay": { "alias": "ngpTooltipTriggerShowDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "ngpTooltipTriggerHideDelay"; "required": false; "isSignal": true; }; "flip": { "alias": "ngpTooltipTriggerFlip"; "required": false; "isSignal": true; }; "container": { "alias": "ngpTooltipTriggerContainer"; "required": false; "isSignal": true; }; "context": { "alias": "ngpTooltipTriggerContext"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
108
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgpTooltipTrigger<any>, "[ngpTooltipTrigger]", ["ngpTooltipTrigger"], { "tooltip": { "alias": "ngpTooltipTrigger"; "required": false; "isSignal": true; }; "disabled": { "alias": "ngpTooltipTriggerDisabled"; "required": false; "isSignal": true; }; "placement": { "alias": "ngpTooltipTriggerPlacement"; "required": false; "isSignal": true; }; "offset": { "alias": "ngpTooltipTriggerOffset"; "required": false; "isSignal": true; }; "showDelay": { "alias": "ngpTooltipTriggerShowDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "ngpTooltipTriggerHideDelay"; "required": false; "isSignal": true; }; "flip": { "alias": "ngpTooltipTriggerFlip"; "required": false; "isSignal": true; }; "container": { "alias": "ngpTooltipTriggerContainer"; "required": false; "isSignal": true; }; "showOnOverflow": { "alias": "ngpTooltipTriggerShowOnOverflow"; "required": false; "isSignal": true; }; "context": { "alias": "ngpTooltipTriggerContext"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
99
109
  }
@@ -0,0 +1,2 @@
1
+ import { Signal } from '@angular/core';
2
+ export declare function booleanAttributeBinding(element: HTMLElement, attribute: string, value: Signal<boolean> | undefined): void;
package/utils/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  export { provideValueAccessor } from './forms/providers';
2
2
  export { controlStatus, NgpControlStatus } from './forms/status';
3
3
  export { ChangeFn, TouchedFn } from './forms/types';
4
+ export { booleanAttributeBinding } from './helpers/attributes';
4
5
  export { injectDisposables } from './helpers/disposables';
5
6
  export { uniqueId } from './helpers/unique-id';
7
+ export { safeTakeUntilDestroyed } from './observables/take-until-destroyed';
6
8
  export { onBooleanChange, onChange } from './signals';
7
9
  export { injectDimensions } from './ui/dimensions';
8
- export { safeTakeUntilDestroyed } from './observables/take-until-destroyed';
@@ -1,2 +0,0 @@
1
- import { Signal, WritableSignal } from '@angular/core';
2
- export declare function syncState<T>(source: Signal<T>, target: WritableSignal<T>): void;