ng-primitives 0.33.2 → 0.35.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 (226) hide show
  1. package/a11y/index.d.ts +1 -1
  2. package/a11y/visually-hidden/visually-hidden-state.d.ts +52 -0
  3. package/a11y/visually-hidden/visually-hidden.d.ts +1 -0
  4. package/accordion/accordion/accordion-state.d.ts +1 -1
  5. package/accordion/accordion-item/accordion-item-state.d.ts +1 -1
  6. package/avatar/avatar/avatar-state.d.ts +1 -1
  7. package/avatar/avatar-image/avatar-image.d.ts +36 -1
  8. package/button/button/button-state.d.ts +11 -1
  9. package/button/button/button.d.ts +1 -2
  10. package/button/index.d.ts +1 -1
  11. package/checkbox/checkbox/checkbox-state.d.ts +1 -1
  12. package/checkbox/checkbox/checkbox.d.ts +3 -4
  13. package/date-picker/date-picker-date-button/date-picker-date-button.d.ts +1 -2
  14. package/date-picker/date-picker-next-month/date-picker-next-month.d.ts +2 -2
  15. package/date-picker/date-picker-previous-month/date-picker-previous-month.d.ts +2 -2
  16. package/date-picker/index.d.ts +5 -9
  17. package/dialog/dialog/dialog-state.d.ts +1 -1
  18. package/dialog/index.d.ts +0 -4
  19. package/example-theme/index.css +4 -3
  20. package/fesm2022/ng-primitives-a11y.mjs +20 -9
  21. package/fesm2022/ng-primitives-a11y.mjs.map +1 -1
  22. package/fesm2022/ng-primitives-avatar.mjs +3 -3
  23. package/fesm2022/ng-primitives-avatar.mjs.map +1 -1
  24. package/fesm2022/ng-primitives-button.mjs +18 -5
  25. package/fesm2022/ng-primitives-button.mjs.map +1 -1
  26. package/fesm2022/ng-primitives-checkbox.mjs +13 -8
  27. package/fesm2022/ng-primitives-checkbox.mjs.map +1 -1
  28. package/fesm2022/ng-primitives-date-picker.mjs +13 -65
  29. package/fesm2022/ng-primitives-date-picker.mjs.map +1 -1
  30. package/fesm2022/ng-primitives-dialog.mjs +5 -41
  31. package/fesm2022/ng-primitives-dialog.mjs.map +1 -1
  32. package/fesm2022/ng-primitives-file-upload.mjs +75 -26
  33. package/fesm2022/ng-primitives-file-upload.mjs.map +1 -1
  34. package/fesm2022/ng-primitives-focus-trap.mjs +3 -12
  35. package/fesm2022/ng-primitives-focus-trap.mjs.map +1 -1
  36. package/fesm2022/ng-primitives-form-field.mjs +103 -93
  37. package/fesm2022/ng-primitives-form-field.mjs.map +1 -1
  38. package/fesm2022/ng-primitives-input.mjs +45 -22
  39. package/fesm2022/ng-primitives-input.mjs.map +1 -1
  40. package/fesm2022/ng-primitives-interactions.mjs +14 -80
  41. package/fesm2022/ng-primitives-interactions.mjs.map +1 -1
  42. package/fesm2022/ng-primitives-internal.mjs +22 -17
  43. package/fesm2022/ng-primitives-internal.mjs.map +1 -1
  44. package/fesm2022/ng-primitives-listbox.mjs +19 -48
  45. package/fesm2022/ng-primitives-listbox.mjs.map +1 -1
  46. package/fesm2022/ng-primitives-menu.mjs +1 -5
  47. package/fesm2022/ng-primitives-menu.mjs.map +1 -1
  48. package/fesm2022/ng-primitives-pagination.mjs +53 -147
  49. package/fesm2022/ng-primitives-pagination.mjs.map +1 -1
  50. package/fesm2022/ng-primitives-popover.mjs +18 -45
  51. package/fesm2022/ng-primitives-popover.mjs.map +1 -1
  52. package/fesm2022/ng-primitives-progress.mjs +4 -18
  53. package/fesm2022/ng-primitives-progress.mjs.map +1 -1
  54. package/fesm2022/ng-primitives-radio.mjs +19 -52
  55. package/fesm2022/ng-primitives-radio.mjs.map +1 -1
  56. package/fesm2022/ng-primitives-roving-focus.mjs +2 -12
  57. package/fesm2022/ng-primitives-roving-focus.mjs.map +1 -1
  58. package/fesm2022/ng-primitives-search.mjs +56 -29
  59. package/fesm2022/ng-primitives-search.mjs.map +1 -1
  60. package/fesm2022/ng-primitives-select.mjs +35 -21
  61. package/fesm2022/ng-primitives-select.mjs.map +1 -1
  62. package/fesm2022/ng-primitives-separator.mjs +2 -11
  63. package/fesm2022/ng-primitives-separator.mjs.map +1 -1
  64. package/fesm2022/ng-primitives-slider.mjs +62 -120
  65. package/fesm2022/ng-primitives-slider.mjs.map +1 -1
  66. package/fesm2022/ng-primitives-state.mjs +4 -4
  67. package/fesm2022/ng-primitives-state.mjs.map +1 -1
  68. package/fesm2022/ng-primitives-switch.mjs +22 -35
  69. package/fesm2022/ng-primitives-switch.mjs.map +1 -1
  70. package/fesm2022/ng-primitives-textarea.mjs +34 -21
  71. package/fesm2022/ng-primitives-textarea.mjs.map +1 -1
  72. package/fesm2022/ng-primitives-toast.mjs +27 -16
  73. package/fesm2022/ng-primitives-toast.mjs.map +1 -1
  74. package/fesm2022/ng-primitives-toggle-group.mjs +26 -49
  75. package/fesm2022/ng-primitives-toggle-group.mjs.map +1 -1
  76. package/fesm2022/ng-primitives-toggle.mjs +4 -18
  77. package/fesm2022/ng-primitives-toggle.mjs.map +1 -1
  78. package/fesm2022/ng-primitives-toolbar.mjs +3 -18
  79. package/fesm2022/ng-primitives-toolbar.mjs.map +1 -1
  80. package/fesm2022/ng-primitives-tooltip.mjs +14 -44
  81. package/fesm2022/ng-primitives-tooltip.mjs.map +1 -1
  82. package/file-upload/file-dropzone/file-dropzone-state.d.ts +1 -1
  83. package/file-upload/file-upload/file-upload-state.d.ts +8 -16
  84. package/file-upload/file-upload/file-upload.d.ts +16 -6
  85. package/focus-trap/index.d.ts +0 -1
  86. package/form-field/description/description.d.ts +25 -1
  87. package/form-field/error/error.d.ts +25 -1
  88. package/form-field/form-control/form-control-state.d.ts +58 -0
  89. package/form-field/form-control/form-control.d.ts +36 -7
  90. package/form-field/form-field/form-field-state.d.ts +41 -0
  91. package/form-field/form-field/form-field.d.ts +4 -0
  92. package/form-field/index.d.ts +2 -5
  93. package/form-field/label/label.d.ts +26 -2
  94. package/input/index.d.ts +1 -1
  95. package/input/input/input-state.d.ts +30 -0
  96. package/input/input/input.d.ts +16 -5
  97. package/interactions/focus/focus.d.ts +0 -4
  98. package/interactions/focus-visible/focus-visible.d.ts +0 -4
  99. package/interactions/hover/hover.d.ts +0 -4
  100. package/interactions/index.d.ts +0 -5
  101. package/interactions/move/move.d.ts +0 -4
  102. package/interactions/press/press.d.ts +0 -4
  103. package/internal/index.d.ts +1 -1
  104. package/internal/interactions/interactions.d.ts +5 -1
  105. package/internal/signals/sync-state.d.ts +2 -0
  106. package/listbox/index.d.ts +0 -4
  107. package/listbox/listbox/listbox-state.d.ts +2 -2
  108. package/package.json +24 -24
  109. package/pagination/index.d.ts +0 -6
  110. package/pagination/pagination/pagination-state.d.ts +2 -2
  111. package/pagination/pagination/pagination.d.ts +5 -5
  112. package/pagination/pagination-button/pagination-button.d.ts +4 -8
  113. package/pagination/pagination-first/pagination-first.d.ts +4 -8
  114. package/pagination/pagination-last/pagination-last.d.ts +3 -7
  115. package/pagination/pagination-next/pagination-next.d.ts +4 -8
  116. package/pagination/pagination-previous/pagination-previous.d.ts +4 -8
  117. package/popover/index.d.ts +0 -2
  118. package/popover/popover/popover.d.ts +1 -1
  119. package/popover/popover-trigger/popover-trigger-state.d.ts +1 -1
  120. package/popover/popover-trigger/popover-trigger.d.ts +5 -5
  121. package/progress/index.d.ts +0 -1
  122. package/progress/progress/progress-state.d.ts +1 -1
  123. package/radio/index.d.ts +0 -2
  124. package/radio/radio-group/radio-group-state.d.ts +3 -29
  125. package/radio/radio-group/radio-group.d.ts +13 -8
  126. package/radio/radio-indicator/radio-indicator.d.ts +5 -50
  127. package/radio/radio-item/radio-item-state.d.ts +3 -20
  128. package/radio/radio-item/radio-item.d.ts +5 -9
  129. package/roving-focus/index.d.ts +2 -3
  130. package/roving-focus/roving-focus-group/roving-focus-group-state.d.ts +1 -1
  131. package/schematics/ng-generate/schema.d.ts +4 -1
  132. package/schematics/ng-generate/schema.json +3 -0
  133. package/schematics/ng-generate/templates/file-upload/file-upload.__fileSuffix@dasherize__.ts.template +44 -0
  134. package/schematics/ng-generate/templates/radio/radio-group.__fileSuffix@dasherize__.ts.template +1 -1
  135. package/schematics/ng-generate/templates/search/search.__fileSuffix@dasherize__.ts.template +126 -0
  136. package/schematics/ng-generate/templates/switch/switch.__fileSuffix@dasherize__.ts.template +2 -2
  137. package/schematics/ng-generate/templates/toast/toast.__fileSuffix@dasherize__.ts.template +111 -0
  138. package/search/index.d.ts +1 -2
  139. package/search/search/search-state.d.ts +25 -0
  140. package/search/search/search.d.ts +21 -4
  141. package/search/search-clear/search-clear.d.ts +9 -1
  142. package/select/index.d.ts +1 -1
  143. package/select/select/select-state.d.ts +20 -0
  144. package/select/select/select.d.ts +7 -4
  145. package/separator/index.d.ts +1 -2
  146. package/slider/index.d.ts +0 -4
  147. package/slider/slider/slider-state.d.ts +1 -1
  148. package/slider/slider/slider.d.ts +2 -2
  149. package/slider/slider-range/slider-range.d.ts +1 -1
  150. package/slider/slider-thumb/slider-thumb.d.ts +3 -7
  151. package/slider/slider-track/slider-track.d.ts +1 -5
  152. package/state/index.d.ts +3 -3
  153. package/switch/index.d.ts +0 -1
  154. package/switch/switch/switch-state.d.ts +1 -1
  155. package/switch/switch/switch.d.ts +3 -4
  156. package/switch/switch-thumb/switch-thumb.d.ts +2 -2
  157. package/tabs/tabset/tabset-state.d.ts +1 -1
  158. package/textarea/index.d.ts +1 -1
  159. package/textarea/textarea/textarea-state.d.ts +20 -0
  160. package/textarea/textarea/textarea.d.ts +7 -4
  161. package/toast/index.d.ts +0 -1
  162. package/toast/toast/toast.d.ts +21 -1
  163. package/toggle/index.d.ts +0 -1
  164. package/toggle/toggle/toggle-state.d.ts +1 -1
  165. package/toggle-group/index.d.ts +0 -2
  166. package/toggle-group/toggle-group/toggle-group-state.d.ts +1 -1
  167. package/toggle-group/toggle-group-item/toggle-group-item-state.d.ts +15 -2
  168. package/toggle-group/toggle-group-item/toggle-group-item.d.ts +1 -1
  169. package/toolbar/index.d.ts +0 -1
  170. package/tooltip/index.d.ts +0 -2
  171. package/tooltip/tooltip-trigger/tooltip-trigger.d.ts +5 -5
  172. package/a11y/visually-hidden/visually-hidden-token.d.ts +0 -7
  173. package/date-picker/date-picker-cell/date-picker-cell-token.d.ts +0 -7
  174. package/date-picker/date-picker-grid/date-picker-grid-token.d.ts +0 -7
  175. package/date-picker/date-picker-next-month/date-picker-next-month-token.d.ts +0 -7
  176. package/date-picker/date-picker-previous-month/date-picker-previous-month-token.d.ts +0 -7
  177. package/dialog/dialog-description/dialog-description-token.d.ts +0 -7
  178. package/dialog/dialog-overlay/dialog-overlay-token.d.ts +0 -7
  179. package/dialog/dialog-title/dialog-title-token.d.ts +0 -7
  180. package/dialog/dialog-trigger/dialog-trigger-token.d.ts +0 -7
  181. package/focus-trap/focus-trap/focus-trap-token.d.ts +0 -7
  182. package/form-field/description/description-token.d.ts +0 -7
  183. package/form-field/error/error-token.d.ts +0 -7
  184. package/form-field/form-control/form-control-token.d.ts +0 -7
  185. package/form-field/form-field/form-field-token.d.ts +0 -8
  186. package/form-field/label/label-token.d.ts +0 -7
  187. package/input/input/input-token.d.ts +0 -7
  188. package/interactions/focus/focus-token.d.ts +0 -7
  189. package/interactions/focus-visible/focus-visible-token.d.ts +0 -7
  190. package/interactions/hover/hover-token.d.ts +0 -8
  191. package/interactions/move/move-token.d.ts +0 -7
  192. package/interactions/press/press-token.d.ts +0 -7
  193. package/internal/disabled/disabled.d.ts +0 -14
  194. package/listbox/listbox/listbox-token.d.ts +0 -7
  195. package/listbox/listbox-option/listbox-option-token.d.ts +0 -7
  196. package/listbox/listbox-section/listbox-section-token.d.ts +0 -7
  197. package/listbox/listbox-trigger/listbox-trigger-token.d.ts +0 -7
  198. package/pagination/pagination/pagination-token.d.ts +0 -8
  199. package/pagination/pagination-button/pagination-button-token.d.ts +0 -7
  200. package/pagination/pagination-first/pagination-first-token.d.ts +0 -7
  201. package/pagination/pagination-last/pagination-last-token.d.ts +0 -7
  202. package/pagination/pagination-next/pagination-next-token.d.ts +0 -7
  203. package/pagination/pagination-previous/pagination-previous-token.d.ts +0 -7
  204. package/popover/popover/popover-token.d.ts +0 -7
  205. package/popover/popover-trigger/popover-trigger-token.d.ts +0 -12
  206. package/progress/progress/progress-token.d.ts +0 -11
  207. package/radio/radio-group/radio-group-token.d.ts +0 -11
  208. package/radio/radio-item/radio-item-token.d.ts +0 -11
  209. package/roving-focus/roving-focus-item/roving-focus-item-token.d.ts +0 -8
  210. package/search/search/search-token.d.ts +0 -7
  211. package/search/search-clear/search-clear-token.d.ts +0 -7
  212. package/select/select/select-token.d.ts +0 -7
  213. package/separator/separator/separator-token.d.ts +0 -7
  214. package/slider/slider/slider-token.d.ts +0 -8
  215. package/slider/slider-range/slider-range-token.d.ts +0 -8
  216. package/slider/slider-thumb/slider-thumb-token.d.ts +0 -8
  217. package/slider/slider-track/slider-track-token.d.ts +0 -8
  218. package/switch/switch/switch-token.d.ts +0 -11
  219. package/textarea/textarea/textarea-token.d.ts +0 -7
  220. package/toast/toast/toast-token.d.ts +0 -7
  221. package/toggle/toggle/toggle-token.d.ts +0 -11
  222. package/toggle-group/toggle-group/toggle-group-token.d.ts +0 -11
  223. package/toggle-group/toggle-group-item/toggle-group-item-token.d.ts +0 -11
  224. package/toolbar/toolbar/toolbar-token.d.ts +0 -11
  225. package/tooltip/tooltip/tooltip-token.d.ts +0 -7
  226. package/tooltip/tooltip-trigger/tooltip-trigger-token.d.ts +0 -15
package/a11y/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export * from './visually-hidden/visually-hidden';
2
- export { NgpVisuallyHiddenToken, injectVisuallyHidden, } from './visually-hidden/visually-hidden-token';
2
+ export { provideVisuallyHiddenState, injectVisuallyHiddenState, } from './visually-hidden/visually-hidden-state';
@@ -0,0 +1,52 @@
1
+ import type { NgpVisuallyHidden } from './visually-hidden';
2
+ /**
3
+ * The state token for the VisuallyHidden primitive.
4
+ */
5
+ export declare const NgpVisuallyHiddenStateToken: import("@angular/core").InjectionToken<NgpVisuallyHidden>;
6
+ /**
7
+ * Provides the VisuallyHidden state.
8
+ */
9
+ export declare const provideVisuallyHiddenState: () => import("@angular/core").FactoryProvider;
10
+ /**
11
+ * Injects the VisuallyHidden state.
12
+ */
13
+ export declare const injectVisuallyHiddenState: <U = {
14
+ readonly hidden: import("@angular/core").WritableSignal<boolean>;
15
+ readonly style: import("@angular/core").Signal<{
16
+ position?: undefined;
17
+ width?: undefined;
18
+ height?: undefined;
19
+ margin?: undefined;
20
+ padding?: undefined;
21
+ overflow?: undefined;
22
+ clip?: undefined;
23
+ whiteSpace?: undefined;
24
+ border?: undefined;
25
+ wordWrap?: undefined;
26
+ outline?: undefined;
27
+ '-webkit-appearance'?: undefined;
28
+ '-moz-appearance'?: undefined;
29
+ 'inset-inline-start'?: undefined;
30
+ } | {
31
+ position: string;
32
+ width: string;
33
+ height: string;
34
+ margin: string;
35
+ padding: string;
36
+ overflow: string;
37
+ clip: string;
38
+ whiteSpace: string;
39
+ border: string;
40
+ wordWrap: string;
41
+ outline: string;
42
+ '-webkit-appearance': string;
43
+ '-moz-appearance': string;
44
+ 'inset-inline-start': string;
45
+ }>;
46
+ readonly state: import("ng-primitives/state").CreatedState<NgpVisuallyHidden>;
47
+ setVisibility: (visible: boolean) => void;
48
+ }>(injectOptions?: import("@angular/core").InjectOptions) => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
49
+ /**
50
+ * The VisuallyHidden state registration function.
51
+ */
52
+ export declare const visuallyHiddenState: <U>(state: U) => import("ng-primitives/state").CreatedState<U>;
@@ -38,6 +38,7 @@ export declare class NgpVisuallyHidden {
38
38
  '-moz-appearance': string;
39
39
  'inset-inline-start': string;
40
40
  }>;
41
+ protected readonly state: import("ng-primitives/state").CreatedState<NgpVisuallyHidden>;
41
42
  /**
42
43
  * Set the element visibility.
43
44
  * @param visible
@@ -21,7 +21,7 @@ export declare const injectAccordionState: <U = {
21
21
  readonly state: import("ng-primitives/state").CreatedState<NgpAccordion<unknown>>;
22
22
  isOpen: (value: unknown) => boolean;
23
23
  toggle: (value: unknown) => void;
24
- }>() => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
24
+ }>(injectOptions?: import("@angular/core").InjectOptions) => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
25
25
  /**
26
26
  * The Accordion state registration function.
27
27
  */
@@ -21,7 +21,7 @@ export declare const injectAccordionItemState: <U = {
21
21
  readonly contentId: import("@angular/core").Signal<string | undefined>;
22
22
  readonly state: import("ng-primitives/state").CreatedState<NgpAccordionItem<unknown>>;
23
23
  ngOnInit: () => void;
24
- }>() => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
24
+ }>(injectOptions?: import("@angular/core").InjectOptions) => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
25
25
  /**
26
26
  * The AccordionItem state registration function.
27
27
  */
@@ -14,7 +14,7 @@ export declare const injectAvatarState: <U = {
14
14
  readonly status: import("@angular/core").WritableSignal<import("./avatar").NgpAvatarStatus>;
15
15
  readonly state: import("ng-primitives/state").CreatedState<NgpAvatar>;
16
16
  setStatus: (status: import("./avatar").NgpAvatarStatus) => void;
17
- }>() => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
17
+ }>(injectOptions?: import("@angular/core").InjectOptions) => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
18
18
  /**
19
19
  * The Avatar state registration function.
20
20
  */
@@ -9,7 +9,42 @@ export declare class NgpAvatarImage implements OnInit {
9
9
  /**
10
10
  * Control the visibility of the image.
11
11
  */
12
- protected readonly visuallyHidden: NgpVisuallyHidden;
12
+ protected readonly visuallyHidden: import("@angular/core").Signal<import("ng-primitives/state").State<{
13
+ readonly hidden: import("@angular/core").WritableSignal<boolean>;
14
+ readonly style: import("@angular/core").Signal<{
15
+ position?: undefined;
16
+ width?: undefined;
17
+ height?: undefined;
18
+ margin?: undefined;
19
+ padding?: undefined;
20
+ overflow?: undefined;
21
+ clip?: undefined;
22
+ whiteSpace?: undefined;
23
+ border?: undefined;
24
+ wordWrap?: undefined;
25
+ outline?: undefined;
26
+ "-webkit-appearance"?: undefined;
27
+ "-moz-appearance"?: undefined;
28
+ "inset-inline-start"?: undefined;
29
+ } | {
30
+ position: string;
31
+ width: string;
32
+ height: string;
33
+ margin: string;
34
+ padding: string;
35
+ overflow: string;
36
+ clip: string;
37
+ whiteSpace: string;
38
+ border: string;
39
+ wordWrap: string;
40
+ outline: string;
41
+ "-webkit-appearance": string;
42
+ "-moz-appearance": string;
43
+ "inset-inline-start": string;
44
+ }>;
45
+ readonly state: import("ng-primitives/state").CreatedState<NgpVisuallyHidden>;
46
+ setVisibility: (visible: boolean) => void;
47
+ }>>;
13
48
  /**
14
49
  * Access the avatar
15
50
  */
@@ -1,3 +1,4 @@
1
+ import { Signal } from '@angular/core';
1
2
  import type { NgpButton } from './button';
2
3
  /**
3
4
  * The state token for the Button primitive.
@@ -15,8 +16,17 @@ export declare const injectButtonState: <U = {
15
16
  readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, import("@angular/cdk/coercion").BooleanInput>;
16
17
  readonly isButton: boolean;
17
18
  readonly state: import("ng-primitives/state").CreatedState<NgpButton>;
18
- }>() => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
19
+ }>(injectOptions?: import("@angular/core").InjectOptions) => Signal<import("ng-primitives/state").State<U>>;
19
20
  /**
20
21
  * The Button state registration function.
21
22
  */
22
23
  export declare const buttonState: <U>(state: U) => import("ng-primitives/state").CreatedState<U>;
24
+ interface SyncButton {
25
+ disabled: Signal<boolean>;
26
+ }
27
+ /**
28
+ * Sync the button state with control state.
29
+ * @param disabled The disabled state of the control.
30
+ */
31
+ export declare function syncButton({ disabled }: SyncButton): void;
32
+ export {};
@@ -1,7 +1,6 @@
1
1
  import { BooleanInput } from '@angular/cdk/coercion';
2
- import { NgpCanDisable } from 'ng-primitives/internal';
3
2
  import * as i0 from "@angular/core";
4
- export declare class NgpButton implements NgpCanDisable {
3
+ export declare class NgpButton {
5
4
  /**
6
5
  * Get the native element of the button.
7
6
  */
package/button/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export { NgpButton } from './button/button';
2
- export { injectButtonState, provideButtonState } from './button/button-state';
2
+ export { injectButtonState, provideButtonState, syncButton } from './button/button-state';
@@ -21,7 +21,7 @@ export declare const injectCheckboxState: <U = {
21
21
  readonly state: import("ng-primitives/state").CreatedState<NgpCheckbox>;
22
22
  onEnter: (event: KeyboardEvent) => void;
23
23
  toggle: (event?: Event) => void;
24
- }>() => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
24
+ }>(injectOptions?: import("@angular/core").InjectOptions) => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
25
25
  /**
26
26
  * The Checkbox state registration function.
27
27
  */
@@ -1,12 +1,10 @@
1
1
  import { BooleanInput } from '@angular/cdk/coercion';
2
- import { NgpCanDisable } from 'ng-primitives/internal';
3
2
  import * as i0 from "@angular/core";
4
3
  import * as i1 from "ng-primitives/form-field";
5
- import * as i2 from "ng-primitives/interactions";
6
4
  /**
7
5
  * Apply the `ngpCheckbox` directive to an element to that represents the checkbox, such as a `button`.
8
6
  */
9
- export declare class NgpCheckbox implements NgpCanDisable {
7
+ export declare class NgpCheckbox {
10
8
  /**
11
9
  * The id of the checkbox.
12
10
  * @internal
@@ -40,8 +38,9 @@ export declare class NgpCheckbox implements NgpCanDisable {
40
38
  * The state of the checkbox.
41
39
  */
42
40
  protected readonly state: import("ng-primitives/state").CreatedState<NgpCheckbox>;
41
+ constructor();
43
42
  protected onEnter(event: KeyboardEvent): void;
44
43
  toggle(event?: Event): void;
45
44
  static ɵfac: i0.ɵɵFactoryDeclaration<NgpCheckbox, never>;
46
- static ɵdir: i0.ɵɵDirectiveDeclaration<NgpCheckbox, "[ngpCheckbox]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "ngpCheckboxChecked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "ngpCheckboxIndeterminate"; "required": false; "isSignal": true; }; "required": { "alias": "ngpCheckboxRequired"; "required": false; "isSignal": true; }; "disabled": { "alias": "ngpCheckboxDisabled"; "required": false; "isSignal": true; }; }, { "checkedChange": "ngpCheckboxCheckedChange"; "indeterminateChange": "ngpCheckboxIndeterminateChange"; }, never, never, true, [{ directive: typeof i1.NgpFormControl; inputs: {}; outputs: {}; }, { directive: typeof i2.NgpHover; inputs: {}; outputs: {}; }, { directive: typeof i2.NgpFocusVisible; inputs: {}; outputs: {}; }, { directive: typeof i2.NgpPress; inputs: {}; outputs: {}; }]>;
45
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NgpCheckbox, "[ngpCheckbox]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "checked": { "alias": "ngpCheckboxChecked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "ngpCheckboxIndeterminate"; "required": false; "isSignal": true; }; "required": { "alias": "ngpCheckboxRequired"; "required": false; "isSignal": true; }; "disabled": { "alias": "ngpCheckboxDisabled"; "required": false; "isSignal": true; }; }, { "checkedChange": "ngpCheckboxCheckedChange"; "indeterminateChange": "ngpCheckboxIndeterminateChange"; }, never, never, true, [{ directive: typeof i1.NgpFormControl; inputs: {}; outputs: {}; }]>;
47
46
  }
@@ -1,11 +1,10 @@
1
1
  import { OnDestroy } from '@angular/core';
2
- import { NgpCanDisable } from 'ng-primitives/internal';
3
2
  import * as i0 from "@angular/core";
4
3
  import * as i1 from "ng-primitives/button";
5
4
  /**
6
5
  * A button that represents a date in the date picker grid.
7
6
  */
8
- export declare class NgpDatePickerDateButton<T> implements NgpCanDisable, OnDestroy {
7
+ export declare class NgpDatePickerDateButton<T> implements OnDestroy {
9
8
  /**
10
9
  * Access the element ref.
11
10
  */
@@ -1,10 +1,9 @@
1
- import { NgpCanDisable } from 'ng-primitives/internal';
2
1
  import * as i0 from "@angular/core";
3
2
  import * as i1 from "ng-primitives/button";
4
3
  /**
5
4
  * A button that navigates to the next month.
6
5
  */
7
- export declare class NgpDatePickerNextMonth<T> implements NgpCanDisable {
6
+ export declare class NgpDatePickerNextMonth<T> {
8
7
  /**
9
8
  * Access the element ref.
10
9
  */
@@ -30,6 +29,7 @@ export declare class NgpDatePickerNextMonth<T> implements NgpCanDisable {
30
29
  * @internal
31
30
  */
32
31
  readonly disabled: import("@angular/core").Signal<boolean>;
32
+ constructor();
33
33
  /**
34
34
  * Navigate to the next month.
35
35
  */
@@ -1,10 +1,9 @@
1
- import { NgpCanDisable } from 'ng-primitives/internal';
2
1
  import * as i0 from "@angular/core";
3
2
  import * as i1 from "ng-primitives/button";
4
3
  /**
5
4
  * A button that navigates to the previous month.
6
5
  */
7
- export declare class NgpDatePickerPreviousMonth<T> implements NgpCanDisable {
6
+ export declare class NgpDatePickerPreviousMonth<T> {
8
7
  /**
9
8
  * Access the element ref.
10
9
  */
@@ -30,6 +29,7 @@ export declare class NgpDatePickerPreviousMonth<T> implements NgpCanDisable {
30
29
  * @internal
31
30
  */
32
31
  readonly disabled: import("@angular/core").Signal<boolean>;
32
+ constructor();
33
33
  /**
34
34
  * Navigate to the previous month.
35
35
  */
@@ -1,19 +1,15 @@
1
1
  export { NgpDatePickerCellRender } from './date-picker-cell-render/date-picker-cell-render';
2
- export { NgpDatePickerCellRenderToken, injectDatePickerCellDate, injectDatePickerCellRender, } from './date-picker-cell-render/date-picker-cell-render-token';
2
+ export { injectDatePickerCellDate, injectDatePickerCellRender, NgpDatePickerCellRenderToken, } from './date-picker-cell-render/date-picker-cell-render-token';
3
3
  export { NgpDatePickerCell } from './date-picker-cell/date-picker-cell';
4
- export { NgpDatePickerCellToken, injectDatePickerCell, } from './date-picker-cell/date-picker-cell-token';
5
4
  export { NgpDatePickerDateButton } from './date-picker-date-button/date-picker-date-button';
6
- export { NgpDatePickerDateButtonToken, injectDatePickerDateButton, } from './date-picker-date-button/date-picker-date-button-token';
5
+ export { injectDatePickerDateButton, NgpDatePickerDateButtonToken, } from './date-picker-date-button/date-picker-date-button-token';
7
6
  export { NgpDatePickerGrid } from './date-picker-grid/date-picker-grid';
8
- export { NgpDatePickerGridToken, injectDatePickerGrid, } from './date-picker-grid/date-picker-grid-token';
9
7
  export { NgpDatePickerLabel } from './date-picker-label/date-picker-label';
10
- export { NgpDatePickerLabelToken, injectDatePickerLabel, } from './date-picker-label/date-picker-label-token';
8
+ export { injectDatePickerLabel, NgpDatePickerLabelToken, } from './date-picker-label/date-picker-label-token';
11
9
  export { NgpDatePickerNextMonth } from './date-picker-next-month/date-picker-next-month';
12
- export { NgpDatePickerNextMonthToken, injectDatePickerNextMonth, } from './date-picker-next-month/date-picker-next-month-token';
13
10
  export { NgpDatePickerPreviousMonth } from './date-picker-previous-month/date-picker-previous-month';
14
- export { NgpDatePickerPreviousMonthToken, injectDatePickerPreviousMonth, } from './date-picker-previous-month/date-picker-previous-month-token';
15
11
  export { NgpDatePickerRowRender } from './date-picker-row-render/date-picker-row-render';
16
- export { NgpDatePickerRowRenderToken, injectDatePickerRowRender, injectDatePickerWeek, } from './date-picker-row-render/date-picker-row-render-token';
12
+ export { injectDatePickerRowRender, injectDatePickerWeek, NgpDatePickerRowRenderToken, } from './date-picker-row-render/date-picker-row-render-token';
17
13
  export { NgpDatePicker } from './date-picker/date-picker';
18
14
  export { injectDatePickerState, provideDatePickerState } from './date-picker/date-picker-state';
19
- export { NgpDatePickerToken, injectDatePicker } from './date-picker/date-picker-token';
15
+ export { injectDatePicker, NgpDatePickerToken } from './date-picker/date-picker-token';
@@ -26,7 +26,7 @@ export declare const injectDialogState: <U = {
26
26
  setDescribedBy: (id: string) => void;
27
27
  removeLabelledBy: (id: string) => void;
28
28
  removeDescribedBy: (id: string) => void;
29
- }>() => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
29
+ }>(injectOptions?: import("@angular/core").InjectOptions) => import("@angular/core").Signal<import("ng-primitives/state").State<U>>;
30
30
  /**
31
31
  * The Dialog state registration function.
32
32
  */
package/dialog/index.d.ts CHANGED
@@ -1,12 +1,8 @@
1
1
  export { NgpDialogConfig, provideDialogConfig } from './config/dialog-config';
2
2
  export { NgpDialogDescription } from './dialog-description/dialog-description';
3
- export { injectDialogDescription, NgpDialogDescriptionToken, } from './dialog-description/dialog-description-token';
4
3
  export { NgpDialogOverlay } from './dialog-overlay/dialog-overlay';
5
- export { injectDialogOverlay, NgpDialogOverlayToken } from './dialog-overlay/dialog-overlay-token';
6
4
  export { NgpDialogTitle } from './dialog-title/dialog-title';
7
- export { injectDialogTitle, NgpDialogTitleToken } from './dialog-title/dialog-title-token';
8
5
  export { NgpDialogTrigger } from './dialog-trigger/dialog-trigger';
9
- export { injectDialogTrigger, NgpDialogTriggerToken } from './dialog-trigger/dialog-trigger-token';
10
6
  export { NgpDialog } from './dialog/dialog';
11
7
  export { injectDialogRef, NgpDialogRef } from './dialog/dialog-ref';
12
8
  export { injectDialogState, provideDialogState } from './dialog/dialog-state';
@@ -47,8 +47,8 @@
47
47
  --ngp-avatar-background: #bae6fd;
48
48
  --ngp-avatar-border: #fff;
49
49
 
50
- --ngp-button-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1),
51
- 0 0 0 1px rgb(0 0 0 / 0.05);
50
+ --ngp-button-shadow:
51
+ 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1), 0 0 0 1px rgb(0 0 0 / 0.05);
52
52
 
53
53
  --ngp-input-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(0, 0, 0, 0.1);
54
54
  }
@@ -81,6 +81,7 @@
81
81
 
82
82
  --ngp-input-shadow: 0 1px 2px rgba(255, 255, 255, 0.007), 0 0 0 1px rgba(255, 255, 255, 0.1);
83
83
 
84
- --ngp-button-shadow: 0 1px 3px 0 rgb(255, 255, 255, 0.1), 0 1px 2px -1px rgb(255, 255, 255, 0.1),
84
+ --ngp-button-shadow:
85
+ 0 1px 3px 0 rgb(255, 255, 255, 0.1), 0 1px 2px -1px rgb(255, 255, 255, 0.1),
85
86
  0 0 0 1px rgb(255, 255, 255, 0.05);
86
87
  }
@@ -1,13 +1,23 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, signal, computed, Directive } from '@angular/core';
2
+ import { signal, computed, Directive } from '@angular/core';
3
+ import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
3
4
 
4
- const NgpVisuallyHiddenToken = new InjectionToken('NgpVisuallyHiddenToken');
5
5
  /**
6
- * Inject the VisuallyHidden directive instance
6
+ * The state token for the VisuallyHidden primitive.
7
7
  */
8
- function injectVisuallyHidden() {
9
- return inject(NgpVisuallyHiddenToken);
10
- }
8
+ const NgpVisuallyHiddenStateToken = createStateToken('VisuallyHidden');
9
+ /**
10
+ * Provides the VisuallyHidden state.
11
+ */
12
+ const provideVisuallyHiddenState = createStateProvider(NgpVisuallyHiddenStateToken);
13
+ /**
14
+ * Injects the VisuallyHidden state.
15
+ */
16
+ const injectVisuallyHiddenState = createStateInjector(NgpVisuallyHiddenStateToken);
17
+ /**
18
+ * The VisuallyHidden state registration function.
19
+ */
20
+ const visuallyHiddenState = createState(NgpVisuallyHiddenStateToken);
11
21
 
12
22
  /**
13
23
  * Hide an element visually while keeping it present in the DOM.
@@ -39,6 +49,7 @@ class NgpVisuallyHidden {
39
49
  'inset-inline-start': '0',
40
50
  };
41
51
  });
52
+ this.state = visuallyHiddenState(this);
42
53
  }
43
54
  /**
44
55
  * Set the element visibility.
@@ -48,14 +59,14 @@ class NgpVisuallyHidden {
48
59
  this.hidden.set(!visible);
49
60
  }
50
61
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: NgpVisuallyHidden, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.7", type: NgpVisuallyHidden, isStandalone: true, selector: "[ngpVisuallyHidden]", host: { properties: { "style": "style()" } }, providers: [{ provide: NgpVisuallyHiddenToken, useExisting: NgpVisuallyHidden }], exportAs: ["ngpVisuallyHidden"], ngImport: i0 }); }
62
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.7", type: NgpVisuallyHidden, isStandalone: true, selector: "[ngpVisuallyHidden]", host: { properties: { "style": "style()" } }, providers: [provideVisuallyHiddenState()], exportAs: ["ngpVisuallyHidden"], ngImport: i0 }); }
52
63
  }
53
64
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: NgpVisuallyHidden, decorators: [{
54
65
  type: Directive,
55
66
  args: [{
56
67
  selector: '[ngpVisuallyHidden]',
57
68
  exportAs: 'ngpVisuallyHidden',
58
- providers: [{ provide: NgpVisuallyHiddenToken, useExisting: NgpVisuallyHidden }],
69
+ providers: [provideVisuallyHiddenState()],
59
70
  host: {
60
71
  '[style]': 'style()',
61
72
  },
@@ -66,5 +77,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
66
77
  * Generated bundle index. Do not edit.
67
78
  */
68
79
 
69
- export { NgpVisuallyHidden, NgpVisuallyHiddenToken, injectVisuallyHidden };
80
+ export { NgpVisuallyHidden, injectVisuallyHiddenState, provideVisuallyHiddenState };
70
81
  //# sourceMappingURL=ng-primitives-a11y.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-a11y.mjs","sources":["../../../../packages/ng-primitives/a11y/src/visually-hidden/visually-hidden-token.ts","../../../../packages/ng-primitives/a11y/src/visually-hidden/visually-hidden.ts","../../../../packages/ng-primitives/a11y/src/ng-primitives-a11y.ts"],"sourcesContent":["import { InjectionToken, inject } from '@angular/core';\nimport type { NgpVisuallyHidden } from './visually-hidden';\n\nexport const NgpVisuallyHiddenToken = new InjectionToken<NgpVisuallyHidden>(\n 'NgpVisuallyHiddenToken',\n);\n\n/**\n * Inject the VisuallyHidden directive instance\n */\nexport function injectVisuallyHidden(): NgpVisuallyHidden {\n return inject(NgpVisuallyHiddenToken);\n}\n","import { Directive, computed, signal } from '@angular/core';\nimport { NgpVisuallyHiddenToken } from './visually-hidden-token';\n\n/**\n * Hide an element visually while keeping it present in the DOM.\n */\n@Directive({\n selector: '[ngpVisuallyHidden]',\n exportAs: 'ngpVisuallyHidden',\n providers: [{ provide: NgpVisuallyHiddenToken, useExisting: NgpVisuallyHidden }],\n host: {\n '[style]': 'style()',\n },\n})\nexport class NgpVisuallyHidden {\n /**\n * Whether the element is hidden.\n */\n protected readonly hidden = signal<boolean>(true);\n\n protected readonly style = computed(() => {\n if (!this.hidden()) {\n return {};\n }\n\n return {\n position: 'absolute',\n width: '1px',\n height: '1px',\n margin: '-1px',\n padding: '0',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: '0',\n wordWrap: 'normal',\n outline: '0',\n '-webkit-appearance': 'none',\n '-moz-appearance': 'none',\n 'inset-inline-start': '0',\n };\n });\n\n /**\n * Set the element visibility.\n * @param visible\n */\n setVisibility(visible: boolean): void {\n this.hidden.set(!visible);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAGa,sBAAsB,GAAG,IAAI,cAAc,CACtD,wBAAwB;AAG1B;;AAEG;SACa,oBAAoB,GAAA;AAClC,IAAA,OAAO,MAAM,CAAC,sBAAsB,CAAC;AACvC;;ACTA;;AAEG;MASU,iBAAiB,CAAA;AAR9B,IAAA,WAAA,GAAA;AASE;;AAEG;AACgB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAU,IAAI,CAAC;AAE9B,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,gBAAA,OAAO,EAAE;;YAGX,OAAO;AACL,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,oBAAoB,EAAE,MAAM;AAC5B,gBAAA,iBAAiB,EAAE,MAAM;AACzB,gBAAA,oBAAoB,EAAE,GAAG;aAC1B;AACH,SAAC,CAAC;AASH;AAPC;;;AAGG;AACH,IAAA,aAAa,CAAC,OAAgB,EAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;;8GAlChB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EALjB,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAKrE,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;oBAC7B,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAmB,iBAAA,EAAE,CAAC;AAChF,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,SAAS;AACrB,qBAAA;AACF,iBAAA;;;ACbD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-primitives-a11y.mjs","sources":["../../../../packages/ng-primitives/a11y/src/visually-hidden/visually-hidden-state.ts","../../../../packages/ng-primitives/a11y/src/visually-hidden/visually-hidden.ts","../../../../packages/ng-primitives/a11y/src/ng-primitives-a11y.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpVisuallyHidden } from './visually-hidden';\n\n/**\n * The state token for the VisuallyHidden primitive.\n */\nexport const NgpVisuallyHiddenStateToken = createStateToken<NgpVisuallyHidden>('VisuallyHidden');\n\n/**\n * Provides the VisuallyHidden state.\n */\nexport const provideVisuallyHiddenState = createStateProvider(NgpVisuallyHiddenStateToken);\n\n/**\n * Injects the VisuallyHidden state.\n */\nexport const injectVisuallyHiddenState = createStateInjector(NgpVisuallyHiddenStateToken);\n\n/**\n * The VisuallyHidden state registration function.\n */\nexport const visuallyHiddenState = createState(NgpVisuallyHiddenStateToken);\n","import { Directive, computed, signal } from '@angular/core';\nimport { provideVisuallyHiddenState, visuallyHiddenState } from './visually-hidden-state';\n\n/**\n * Hide an element visually while keeping it present in the DOM.\n */\n@Directive({\n selector: '[ngpVisuallyHidden]',\n exportAs: 'ngpVisuallyHidden',\n providers: [provideVisuallyHiddenState()],\n host: {\n '[style]': 'style()',\n },\n})\nexport class NgpVisuallyHidden {\n /**\n * Whether the element is hidden.\n */\n protected readonly hidden = signal<boolean>(true);\n\n protected readonly style = computed(() => {\n if (!this.hidden()) {\n return {};\n }\n\n return {\n position: 'absolute',\n width: '1px',\n height: '1px',\n margin: '-1px',\n padding: '0',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: '0',\n wordWrap: 'normal',\n outline: '0',\n '-webkit-appearance': 'none',\n '-moz-appearance': 'none',\n 'inset-inline-start': '0',\n };\n });\n\n protected readonly state = visuallyHiddenState<NgpVisuallyHidden>(this);\n\n /**\n * Set the element visibility.\n * @param visible\n */\n setVisibility(visible: boolean): void {\n this.hidden.set(!visible);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAQA;;AAEG;AACI,MAAM,2BAA2B,GAAG,gBAAgB,CAAoB,gBAAgB,CAAC;AAEhG;;AAEG;MACU,0BAA0B,GAAG,mBAAmB,CAAC,2BAA2B;AAEzF;;AAEG;MACU,yBAAyB,GAAG,mBAAmB,CAAC,2BAA2B;AAExF;;AAEG;AACI,MAAM,mBAAmB,GAAG,WAAW,CAAC,2BAA2B,CAAC;;ACvB3E;;AAEG;MASU,iBAAiB,CAAA;AAR9B,IAAA,WAAA,GAAA;AASE;;AAEG;AACgB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAU,IAAI,CAAC;AAE9B,QAAA,IAAA,CAAA,KAAK,GAAG,QAAQ,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAClB,gBAAA,OAAO,EAAE;;YAGX,OAAO;AACL,gBAAA,QAAQ,EAAE,UAAU;AACpB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,IAAI,EAAE,kBAAkB;AACxB,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,MAAM,EAAE,GAAG;AACX,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,OAAO,EAAE,GAAG;AACZ,gBAAA,oBAAoB,EAAE,MAAM;AAC5B,gBAAA,iBAAiB,EAAE,MAAM;AACzB,gBAAA,oBAAoB,EAAE,GAAG;aAC1B;AACH,SAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,KAAK,GAAG,mBAAmB,CAAoB,IAAI,CAAC;AASxE;AAPC;;;AAGG;AACH,IAAA,aAAa,CAAC,OAAgB,EAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;;8GApChB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EALjB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,0BAA0B,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAK9B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,SAAS,EAAE,CAAC,0BAA0B,EAAE,CAAC;AACzC,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,SAAS;AACrB,qBAAA;AACF,iBAAA;;;ACbD;;AAEG;;;;"}
@@ -5,7 +5,7 @@ import * as i1 from 'ng-primitives/interactions';
5
5
  import { NgpHover, NgpFocusVisible, NgpPress } from 'ng-primitives/interactions';
6
6
  import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
7
7
  import * as i1$1 from 'ng-primitives/a11y';
8
- import { injectVisuallyHidden, NgpVisuallyHidden } from 'ng-primitives/a11y';
8
+ import { injectVisuallyHiddenState, NgpVisuallyHidden } from 'ng-primitives/a11y';
9
9
 
10
10
  /**
11
11
  * The state token for the Avatar primitive.
@@ -157,7 +157,7 @@ class NgpAvatarImage {
157
157
  /**
158
158
  * Control the visibility of the image.
159
159
  */
160
- this.visuallyHidden = injectVisuallyHidden();
160
+ this.visuallyHidden = injectVisuallyHiddenState();
161
161
  /**
162
162
  * Access the avatar
163
163
  */
@@ -188,7 +188,7 @@ class NgpAvatarImage {
188
188
  setState(state) {
189
189
  this.avatar().setStatus(state);
190
190
  // if the state is loaded then we should make the image visible
191
- this.visuallyHidden.setVisibility(state === NgpAvatarStatus.Loaded);
191
+ this.visuallyHidden().setVisibility(state === NgpAvatarStatus.Loaded);
192
192
  }
193
193
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: NgpAvatarImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
194
194
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.7", type: NgpAvatarImage, isStandalone: true, selector: "img[ngpAvatarImage]", host: { listeners: { "load": "onLoad()", "error": "onError()" } }, exportAs: ["ngpAvatarImage"], hostDirectives: [{ directive: i1$1.NgpVisuallyHidden }], ngImport: i0 }); }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-avatar.mjs","sources":["../../../../packages/ng-primitives/avatar/src/avatar/avatar-state.ts","../../../../packages/ng-primitives/avatar/src/avatar/avatar.ts","../../../../packages/ng-primitives/avatar/src/config/avatar-config.ts","../../../../packages/ng-primitives/avatar/src/avatar-fallback/avatar-fallback.ts","../../../../packages/ng-primitives/avatar/src/avatar-image/avatar-image.ts","../../../../packages/ng-primitives/avatar/src/ng-primitives-avatar.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpAvatar } from './avatar';\n\n/**\n * The state token for the Avatar primitive.\n */\nexport const NgpAvatarStateToken = createStateToken<NgpAvatar>('Avatar');\n\n/**\n * Provides the Avatar state.\n */\nexport const provideAvatarState = createStateProvider(NgpAvatarStateToken);\n\n/**\n * Injects the Avatar state.\n */\nexport const injectAvatarState = createStateInjector(NgpAvatarStateToken);\n\n/**\n * The Avatar state registration function.\n */\nexport const avatarState = createState(NgpAvatarStateToken);\n","import { Directive, signal } from '@angular/core';\nimport { NgpFocusVisible, NgpHover, NgpPress } from 'ng-primitives/interactions';\nimport { avatarState, provideAvatarState } from './avatar-state';\n\n/**\n * Apply the `ngpAvatar` directive to an element that represents the avatar. This directive is a container for the image and/or fallback.\n */\n@Directive({\n selector: '[ngpAvatar]',\n exportAs: 'ngpAvatar',\n providers: [provideAvatarState()],\n host: {\n '[attr.data-status]': 'status()',\n },\n hostDirectives: [NgpHover, NgpFocusVisible, NgpPress],\n})\nexport class NgpAvatar {\n /**\n * Store the current status of the avatar.\n * @internal\n */\n readonly status = signal(NgpAvatarStatus.Idle);\n\n /**\n * The avatar state.\n */\n protected readonly state = avatarState<NgpAvatar>(this);\n\n /**\n * Set the avatar status.\n * @param status The status to set.\n * @internal\n */\n setStatus(status: NgpAvatarStatus): void {\n this.status.set(status);\n }\n}\n\nexport enum NgpAvatarStatus {\n Idle = 'idle',\n Loading = 'loading',\n Loaded = 'loaded',\n Error = 'error',\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\n\nexport interface NgpAvatarConfig {\n /**\n * Define a delay before the fallback is shown. This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delay: number;\n}\n\nexport const defaultAvatarConfig: NgpAvatarConfig = {\n delay: 0,\n};\n\nexport const NgpAvatarConfigToken = new InjectionToken<NgpAvatarConfig>('NgpAvatarConfigToken');\n\n/**\n * Provide the avatar config\n * @param config The avatar config\n * @returns The provider\n */\nexport function provideAvatarConfig(config: Partial<NgpAvatarConfig>): Provider[] {\n return [\n {\n provide: NgpAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the avatar config\n * @returns The global avatar config\n */\nexport function injectAvatarConfig(): NgpAvatarConfig {\n return inject(NgpAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\n}\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { computed, Directive, input, numberAttribute, OnInit, signal } from '@angular/core';\nimport { injectDisposables } from 'ng-primitives/utils';\nimport { NgpAvatarStatus } from '../avatar/avatar';\nimport { injectAvatarState } from '../avatar/avatar-state';\nimport { injectAvatarConfig } from '../config/avatar-config';\n\n/**\n * Apply the `ngpAvatarFallback` directive to an element that represents the user in the absence of an image. This is typically the user's initials.\n */\n@Directive({\n selector: '[ngpAvatarFallback]',\n exportAs: 'ngpAvatarFallback',\n host: {\n '[style.display]': 'visible() ? null : \"none\"',\n },\n})\nexport class NgpAvatarFallback implements OnInit {\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatarState();\n\n /**\n * Access the global configuration.\n */\n private readonly config = injectAvatarConfig();\n\n /**\n * Access the disposable utilities.\n */\n private readonly disposables = injectDisposables();\n\n /**\n * Define a delay before the fallback is shown. This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n readonly delay = input<number, NumberInput>(this.config.delay, {\n alias: 'ngpAvatarFallbackDelay',\n transform: numberAttribute,\n });\n\n /**\n * Determine if this element should be hidden.\n * @returns True if the element should be visible\n */\n protected readonly visible = computed(\n () =>\n // we need to check if the element can render and if the avatar is not in a loaded state\n this.delayElapsed() && this.avatar().status() !== NgpAvatarStatus.Loaded,\n );\n\n /**\n * Determine the delay has elapsed, and we can show the fallback.\n */\n private delayElapsed = signal(false);\n\n ngOnInit(): void {\n this.disposables.setTimeout(() => this.delayElapsed.set(true), this.delay());\n }\n}\n","import { Directive, ElementRef, HostListener, inject, OnInit } from '@angular/core';\nimport { injectVisuallyHidden, NgpVisuallyHidden } from 'ng-primitives/a11y';\nimport { NgpAvatarStatus } from '../avatar/avatar';\nimport { injectAvatarState } from '../avatar/avatar-state';\n\n/**\n * Apply the `ngpAvatarImage` directive to an element that represents the avatar image. This would typically be an `img` element or a `div` with a background image.\n */\n@Directive({\n selector: 'img[ngpAvatarImage]',\n exportAs: 'ngpAvatarImage',\n hostDirectives: [NgpVisuallyHidden],\n})\nexport class NgpAvatarImage implements OnInit {\n /**\n * Control the visibility of the image.\n */\n protected readonly visuallyHidden = injectVisuallyHidden();\n\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatarState();\n\n /**\n * Access the image element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLImageElement>>(ElementRef);\n\n ngOnInit(): void {\n // mark the avatar as loading\n this.setState(NgpAvatarStatus.Loading);\n\n // if there is no src, we can report this as an error\n if (!this.elementRef.nativeElement.src) {\n this.setState(NgpAvatarStatus.Error);\n }\n\n // if the image has already loaded, we can report this to the avatar\n if (this.elementRef.nativeElement.complete) {\n this.setState(NgpAvatarStatus.Loaded);\n }\n }\n\n @HostListener('load')\n protected onLoad(): void {\n this.setState(NgpAvatarStatus.Loaded);\n }\n\n @HostListener('error')\n protected onError(): void {\n this.setState(NgpAvatarStatus.Error);\n }\n\n private setState(state: NgpAvatarStatus) {\n this.avatar().setStatus(state);\n\n // if the state is loaded then we should make the image visible\n this.visuallyHidden.setVisibility(state === NgpAvatarStatus.Loaded);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"ng-primitives-avatar.mjs","sources":["../../../../packages/ng-primitives/avatar/src/avatar/avatar-state.ts","../../../../packages/ng-primitives/avatar/src/avatar/avatar.ts","../../../../packages/ng-primitives/avatar/src/config/avatar-config.ts","../../../../packages/ng-primitives/avatar/src/avatar-fallback/avatar-fallback.ts","../../../../packages/ng-primitives/avatar/src/avatar-image/avatar-image.ts","../../../../packages/ng-primitives/avatar/src/ng-primitives-avatar.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpAvatar } from './avatar';\n\n/**\n * The state token for the Avatar primitive.\n */\nexport const NgpAvatarStateToken = createStateToken<NgpAvatar>('Avatar');\n\n/**\n * Provides the Avatar state.\n */\nexport const provideAvatarState = createStateProvider(NgpAvatarStateToken);\n\n/**\n * Injects the Avatar state.\n */\nexport const injectAvatarState = createStateInjector(NgpAvatarStateToken);\n\n/**\n * The Avatar state registration function.\n */\nexport const avatarState = createState(NgpAvatarStateToken);\n","import { Directive, signal } from '@angular/core';\nimport { NgpFocusVisible, NgpHover, NgpPress } from 'ng-primitives/interactions';\nimport { avatarState, provideAvatarState } from './avatar-state';\n\n/**\n * Apply the `ngpAvatar` directive to an element that represents the avatar. This directive is a container for the image and/or fallback.\n */\n@Directive({\n selector: '[ngpAvatar]',\n exportAs: 'ngpAvatar',\n providers: [provideAvatarState()],\n host: {\n '[attr.data-status]': 'status()',\n },\n hostDirectives: [NgpHover, NgpFocusVisible, NgpPress],\n})\nexport class NgpAvatar {\n /**\n * Store the current status of the avatar.\n * @internal\n */\n readonly status = signal(NgpAvatarStatus.Idle);\n\n /**\n * The avatar state.\n */\n protected readonly state = avatarState<NgpAvatar>(this);\n\n /**\n * Set the avatar status.\n * @param status The status to set.\n * @internal\n */\n setStatus(status: NgpAvatarStatus): void {\n this.status.set(status);\n }\n}\n\nexport enum NgpAvatarStatus {\n Idle = 'idle',\n Loading = 'loading',\n Loaded = 'loaded',\n Error = 'error',\n}\n","import { InjectionToken, Provider, inject } from '@angular/core';\n\nexport interface NgpAvatarConfig {\n /**\n * Define a delay before the fallback is shown. This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n delay: number;\n}\n\nexport const defaultAvatarConfig: NgpAvatarConfig = {\n delay: 0,\n};\n\nexport const NgpAvatarConfigToken = new InjectionToken<NgpAvatarConfig>('NgpAvatarConfigToken');\n\n/**\n * Provide the avatar config\n * @param config The avatar config\n * @returns The provider\n */\nexport function provideAvatarConfig(config: Partial<NgpAvatarConfig>): Provider[] {\n return [\n {\n provide: NgpAvatarConfigToken,\n useValue: { ...defaultAvatarConfig, ...config },\n },\n ];\n}\n\n/**\n * Inject the avatar config\n * @returns The global avatar config\n */\nexport function injectAvatarConfig(): NgpAvatarConfig {\n return inject(NgpAvatarConfigToken, { optional: true }) ?? defaultAvatarConfig;\n}\n","import { NumberInput } from '@angular/cdk/coercion';\nimport { computed, Directive, input, numberAttribute, OnInit, signal } from '@angular/core';\nimport { injectDisposables } from 'ng-primitives/utils';\nimport { NgpAvatarStatus } from '../avatar/avatar';\nimport { injectAvatarState } from '../avatar/avatar-state';\nimport { injectAvatarConfig } from '../config/avatar-config';\n\n/**\n * Apply the `ngpAvatarFallback` directive to an element that represents the user in the absence of an image. This is typically the user's initials.\n */\n@Directive({\n selector: '[ngpAvatarFallback]',\n exportAs: 'ngpAvatarFallback',\n host: {\n '[style.display]': 'visible() ? null : \"none\"',\n },\n})\nexport class NgpAvatarFallback implements OnInit {\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatarState();\n\n /**\n * Access the global configuration.\n */\n private readonly config = injectAvatarConfig();\n\n /**\n * Access the disposable utilities.\n */\n private readonly disposables = injectDisposables();\n\n /**\n * Define a delay before the fallback is shown. This is useful to only show the fallback for those with slower connections.\n * @default 0\n */\n readonly delay = input<number, NumberInput>(this.config.delay, {\n alias: 'ngpAvatarFallbackDelay',\n transform: numberAttribute,\n });\n\n /**\n * Determine if this element should be hidden.\n * @returns True if the element should be visible\n */\n protected readonly visible = computed(\n () =>\n // we need to check if the element can render and if the avatar is not in a loaded state\n this.delayElapsed() && this.avatar().status() !== NgpAvatarStatus.Loaded,\n );\n\n /**\n * Determine the delay has elapsed, and we can show the fallback.\n */\n private delayElapsed = signal(false);\n\n ngOnInit(): void {\n this.disposables.setTimeout(() => this.delayElapsed.set(true), this.delay());\n }\n}\n","import { Directive, ElementRef, HostListener, inject, OnInit } from '@angular/core';\nimport { injectVisuallyHiddenState, NgpVisuallyHidden } from 'ng-primitives/a11y';\nimport { NgpAvatarStatus } from '../avatar/avatar';\nimport { injectAvatarState } from '../avatar/avatar-state';\n\n/**\n * Apply the `ngpAvatarImage` directive to an element that represents the avatar image. This would typically be an `img` element or a `div` with a background image.\n */\n@Directive({\n selector: 'img[ngpAvatarImage]',\n exportAs: 'ngpAvatarImage',\n hostDirectives: [NgpVisuallyHidden],\n})\nexport class NgpAvatarImage implements OnInit {\n /**\n * Control the visibility of the image.\n */\n protected readonly visuallyHidden = injectVisuallyHiddenState();\n\n /**\n * Access the avatar\n */\n private readonly avatar = injectAvatarState();\n\n /**\n * Access the image element ref.\n */\n private readonly elementRef = inject<ElementRef<HTMLImageElement>>(ElementRef);\n\n ngOnInit(): void {\n // mark the avatar as loading\n this.setState(NgpAvatarStatus.Loading);\n\n // if there is no src, we can report this as an error\n if (!this.elementRef.nativeElement.src) {\n this.setState(NgpAvatarStatus.Error);\n }\n\n // if the image has already loaded, we can report this to the avatar\n if (this.elementRef.nativeElement.complete) {\n this.setState(NgpAvatarStatus.Loaded);\n }\n }\n\n @HostListener('load')\n protected onLoad(): void {\n this.setState(NgpAvatarStatus.Loaded);\n }\n\n @HostListener('error')\n protected onError(): void {\n this.setState(NgpAvatarStatus.Error);\n }\n\n private setState(state: NgpAvatarStatus) {\n this.avatar().setStatus(state);\n\n // if the state is loaded then we should make the image visible\n this.visuallyHidden().setVisibility(state === NgpAvatarStatus.Loaded);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, ElementRef, input, booleanAttribute, Directive } from '@angular/core';
3
- import { setupInteractions, NgpDisabledToken } from 'ng-primitives/internal';
3
+ import { syncState, setupInteractions } from 'ng-primitives/internal';
4
4
  import { createStateToken, createStateProvider, createStateInjector, createState } from 'ng-primitives/state';
5
5
 
6
6
  /**
@@ -19,6 +19,14 @@ const injectButtonState = createStateInjector(NgpButtonStateToken);
19
19
  * The Button state registration function.
20
20
  */
21
21
  const buttonState = createState(NgpButtonStateToken);
22
+ /**
23
+ * Sync the button state with control state.
24
+ * @param disabled The disabled state of the control.
25
+ */
26
+ function syncButton({ disabled }) {
27
+ const button = injectButtonState();
28
+ syncState(disabled, button().disabled);
29
+ }
22
30
 
23
31
  class NgpButton {
24
32
  constructor() {
@@ -41,17 +49,22 @@ class NgpButton {
41
49
  */
42
50
  this.state = buttonState(this);
43
51
  // setup the hover, press, and focus-visible listeners
44
- setupInteractions({ disabled: this.state.disabled });
52
+ setupInteractions({
53
+ disabled: this.state.disabled,
54
+ hover: true,
55
+ press: true,
56
+ focusVisible: true,
57
+ });
45
58
  }
46
59
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: NgpButton, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.7", type: NgpButton, isStandalone: true, selector: "[ngpButton]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-disabled": "state.disabled() ? \"\" : null", "attr.disabled": "isButton && state.disabled() ? true : null" } }, providers: [{ provide: NgpDisabledToken, useExisting: NgpButton }, provideButtonState()], exportAs: ["ngpButton"], ngImport: i0 }); }
60
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.7", type: NgpButton, isStandalone: true, selector: "[ngpButton]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-disabled": "state.disabled() ? \"\" : null", "attr.disabled": "isButton && state.disabled() ? true : null" } }, providers: [provideButtonState()], exportAs: ["ngpButton"], ngImport: i0 }); }
48
61
  }
49
62
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImport: i0, type: NgpButton, decorators: [{
50
63
  type: Directive,
51
64
  args: [{
52
65
  selector: '[ngpButton]',
53
66
  exportAs: 'ngpButton',
54
- providers: [{ provide: NgpDisabledToken, useExisting: NgpButton }, provideButtonState()],
67
+ providers: [provideButtonState()],
55
68
  host: {
56
69
  '[attr.data-disabled]': 'state.disabled() ? "" : null',
57
70
  '[attr.disabled]': 'isButton && state.disabled() ? true : null',
@@ -63,5 +76,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.7", ngImpor
63
76
  * Generated bundle index. Do not edit.
64
77
  */
65
78
 
66
- export { NgpButton, injectButtonState, provideButtonState };
79
+ export { NgpButton, injectButtonState, provideButtonState, syncButton };
67
80
  //# sourceMappingURL=ng-primitives-button.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-primitives-button.mjs","sources":["../../../../packages/ng-primitives/button/src/button/button-state.ts","../../../../packages/ng-primitives/button/src/button/button.ts","../../../../packages/ng-primitives/button/src/ng-primitives-button.ts"],"sourcesContent":["import {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpButton } from './button';\n\n/**\n * The state token for the Button primitive.\n */\nexport const NgpButtonStateToken = createStateToken<NgpButton>('Button');\n\n/**\n * Provides the Button state.\n */\nexport const provideButtonState = createStateProvider(NgpButtonStateToken);\n\n/**\n * Injects the Button state.\n */\nexport const injectButtonState = createStateInjector(NgpButtonStateToken);\n\n/**\n * The Button state registration function.\n */\nexport const buttonState = createState(NgpButtonStateToken);\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\nimport { NgpCanDisable, NgpDisabledToken, setupInteractions } from 'ng-primitives/internal';\nimport { buttonState, provideButtonState } from './button-state';\n\n@Directive({\n selector: '[ngpButton]',\n exportAs: 'ngpButton',\n providers: [{ provide: NgpDisabledToken, useExisting: NgpButton }, provideButtonState()],\n host: {\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n '[attr.disabled]': 'isButton && state.disabled() ? true : null',\n },\n})\nexport class NgpButton implements NgpCanDisable {\n /**\n * Get the native element of the button.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /**\n * Detect if this is an HTML button element.\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * The button state.\n */\n protected readonly state = buttonState<NgpButton>(this);\n\n constructor() {\n // setup the hover, press, and focus-visible listeners\n setupInteractions({ disabled: this.state.disabled });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAQA;;AAEG;AACI,MAAM,mBAAmB,GAAG,gBAAgB,CAAY,QAAQ,CAAC;AAExE;;AAEG;MACU,kBAAkB,GAAG,mBAAmB,CAAC,mBAAmB;AAEzE;;AAEG;MACU,iBAAiB,GAAG,mBAAmB,CAAC,mBAAmB;AAExE;;AAEG;AACI,MAAM,WAAW,GAAG,WAAW,CAAC,mBAAmB,CAAC;;MCZ9C,SAAS,CAAA;AAuBpB,IAAA,WAAA,GAAA;AAtBA;;AAEG;AACc,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEzE;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE;AACtD,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEF;;AAEG;AACgB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;AAE9F;;AAEG;AACgB,QAAA,IAAA,CAAA,KAAK,GAAG,WAAW,CAAY,IAAI,CAAC;;QAIrD,iBAAiB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;;8GAzB3C,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EANT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,eAAA,EAAA,4CAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAM7E,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAW,SAAA,EAAE,EAAE,kBAAkB,EAAE,CAAC;AACxF,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,iBAAiB,EAAE,4CAA4C;AAChE,qBAAA;AACF,iBAAA;;;ACbD;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-primitives-button.mjs","sources":["../../../../packages/ng-primitives/button/src/button/button-state.ts","../../../../packages/ng-primitives/button/src/button/button.ts","../../../../packages/ng-primitives/button/src/ng-primitives-button.ts"],"sourcesContent":["import { Signal } from '@angular/core';\nimport { syncState } from 'ng-primitives/internal';\nimport {\n createState,\n createStateInjector,\n createStateProvider,\n createStateToken,\n} from 'ng-primitives/state';\nimport type { NgpButton } from './button';\n\n/**\n * The state token for the Button primitive.\n */\nexport const NgpButtonStateToken = createStateToken<NgpButton>('Button');\n\n/**\n * Provides the Button state.\n */\nexport const provideButtonState = createStateProvider(NgpButtonStateToken);\n\n/**\n * Injects the Button state.\n */\nexport const injectButtonState = createStateInjector(NgpButtonStateToken);\n\n/**\n * The Button state registration function.\n */\nexport const buttonState = createState(NgpButtonStateToken);\n\ninterface SyncButton {\n disabled: Signal<boolean>;\n}\n\n/**\n * Sync the button state with control state.\n * @param disabled The disabled state of the control.\n */\nexport function syncButton({ disabled }: SyncButton) {\n const button = injectButtonState();\n syncState(disabled, button().disabled);\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, Directive, ElementRef, inject, input } from '@angular/core';\nimport { setupInteractions } from 'ng-primitives/internal';\nimport { buttonState, provideButtonState } from './button-state';\n\n@Directive({\n selector: '[ngpButton]',\n exportAs: 'ngpButton',\n providers: [provideButtonState()],\n host: {\n '[attr.data-disabled]': 'state.disabled() ? \"\" : null',\n '[attr.disabled]': 'isButton && state.disabled() ? true : null',\n },\n})\nexport class NgpButton {\n /**\n * Get the native element of the button.\n */\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * Whether the button is disabled.\n */\n readonly disabled = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /**\n * Detect if this is an HTML button element.\n */\n protected readonly isButton = this.elementRef.nativeElement.tagName.toLowerCase() === 'button';\n\n /**\n * The button state.\n */\n protected readonly state = buttonState<NgpButton>(this);\n\n constructor() {\n // setup the hover, press, and focus-visible listeners\n setupInteractions({\n disabled: this.state.disabled,\n hover: true,\n press: true,\n focusVisible: true,\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAUA;;AAEG;AACI,MAAM,mBAAmB,GAAG,gBAAgB,CAAY,QAAQ,CAAC;AAExE;;AAEG;MACU,kBAAkB,GAAG,mBAAmB,CAAC,mBAAmB;AAEzE;;AAEG;MACU,iBAAiB,GAAG,mBAAmB,CAAC,mBAAmB;AAExE;;AAEG;AACI,MAAM,WAAW,GAAG,WAAW,CAAC,mBAAmB,CAAC;AAM3D;;;AAGG;AACa,SAAA,UAAU,CAAC,EAAE,QAAQ,EAAc,EAAA;AACjD,IAAA,MAAM,MAAM,GAAG,iBAAiB,EAAE;IAClC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC;AACxC;;MC3Ba,SAAS,CAAA;AAuBpB,IAAA,WAAA,GAAA;AAtBA;;AAEG;AACc,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AAEzE;;AAEG;AACM,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAwB,KAAK,EAAE;AACtD,YAAA,SAAS,EAAE,gBAAgB;AAC5B,SAAA,CAAC;AAEF;;AAEG;AACgB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ;AAE9F;;AAEG;AACgB,QAAA,IAAA,CAAA,KAAK,GAAG,WAAW,CAAY,IAAI,CAAC;;AAIrD,QAAA,iBAAiB,CAAC;AAChB,YAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;AAC7B,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,YAAY,EAAE,IAAI;AACnB,SAAA,CAAC;;8GA9BO,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EANT,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,gCAAA,EAAA,eAAA,EAAA,4CAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,kBAAkB,EAAE,CAAC,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAMtB,SAAS,EAAA,UAAA,EAAA,CAAA;kBATrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE,CAAC,kBAAkB,EAAE,CAAC;AACjC,oBAAA,IAAI,EAAE;AACJ,wBAAA,sBAAsB,EAAE,8BAA8B;AACtD,wBAAA,iBAAiB,EAAE,4CAA4C;AAChE,qBAAA;AACF,iBAAA;;;ACbD;;AAEG;;;;"}